nucleus-core-ts 0.8.71 → 0.8.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +9 -9
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // @bun
2
- var b2=Object.create;var{getPrototypeOf:g2,defineProperty:ta,getOwnPropertyNames:Hd,getOwnPropertyDescriptor:_2}=Object,zd=Object.prototype.hasOwnProperty;var Ar=(n,r,t)=>{t=n!=null?b2(g2(n)):{};let o=r||!n||!n.__esModule?ta(t,"default",{value:n,enumerable:!0}):t;for(let e of Hd(n))if(!zd.call(o,e))ta(o,e,{get:()=>n[e],enumerable:!0});return o},Dd=new WeakMap,cc=(n)=>{var r=Dd.get(n),t;if(r)return r;if(r=ta({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function")Hd(n).map((o)=>!zd.call(r,o)&&ta(r,o,{get:()=>n[o],enumerable:!(t=_2(n,o))||t.enumerable}));return Dd.set(n,r),r},m2=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var no=(n,r)=>{for(var t in r)ta(n,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})};var d=(n,r)=>()=>(n&&(r=n(n=0)),r);var Mn=import.meta.require;var Rs,Xd,ks="\x1B[0m",Es="\x1B[2m",Vd="\x1B[1m";var Ss=d(()=>{Rs={debug:0,info:1,warn:2,error:3,fatal:4},Xd={debug:"\x1B[36m",info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m",fatal:"\x1B[35m"}});function oa(n,r=D2,t=new WeakSet){if(n===null||n===void 0)return n;if(typeof n!=="object")return n;if(t.has(n))return"[Circular]";if(t.add(n),Array.isArray(n))return n.map((e)=>oa(e,r,t));let o={};for(let[e,a]of Object.entries(n))if(r.some((i)=>e.toLowerCase().includes(i.toLowerCase()))&&typeof a==="string")o[e]="[REDACTED]";else if(typeof a==="object"&&a!==null)o[e]=oa(a,r,t);else o[e]=a;return o}function Cd(n=4){let r=Error().stack;if(!r)return{file:"unknown",line:0,function:"unknown"};let o=r.split(`
2
+ var b2=Object.create;var{getPrototypeOf:g2,defineProperty:ta,getOwnPropertyNames:Hd,getOwnPropertyDescriptor:_2}=Object,zd=Object.prototype.hasOwnProperty;var Rr=(n,r,t)=>{t=n!=null?b2(g2(n)):{};let o=r||!n||!n.__esModule?ta(t,"default",{value:n,enumerable:!0}):t;for(let e of Hd(n))if(!zd.call(o,e))ta(o,e,{get:()=>n[e],enumerable:!0});return o},Dd=new WeakMap,cc=(n)=>{var r=Dd.get(n),t;if(r)return r;if(r=ta({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function")Hd(n).map((o)=>!zd.call(r,o)&&ta(r,o,{get:()=>n[o],enumerable:!(t=_2(n,o))||t.enumerable}));return Dd.set(n,r),r},m2=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var no=(n,r)=>{for(var t in r)ta(n,t,{get:r[t],enumerable:!0,configurable:!0,set:(o)=>r[t]=()=>o})};var d=(n,r)=>()=>(n&&(r=n(n=0)),r);var Mn=import.meta.require;var Rs,Xd,ks="\x1B[0m",Es="\x1B[2m",Vd="\x1B[1m";var Ss=d(()=>{Rs={debug:0,info:1,warn:2,error:3,fatal:4},Xd={debug:"\x1B[36m",info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m",fatal:"\x1B[35m"}});function oa(n,r=D2,t=new WeakSet){if(n===null||n===void 0)return n;if(typeof n!=="object")return n;if(t.has(n))return"[Circular]";if(t.add(n),Array.isArray(n))return n.map((e)=>oa(e,r,t));let o={};for(let[e,a]of Object.entries(n))if(r.some((i)=>e.toLowerCase().includes(i.toLowerCase()))&&typeof a==="string")o[e]="[REDACTED]";else if(typeof a==="object"&&a!==null)o[e]=oa(a,r,t);else o[e]=a;return o}function Cd(n=4){let r=Error().stack;if(!r)return{file:"unknown",line:0,function:"unknown"};let o=r.split(`
3
3
  `)[n];if(!o)return{file:"unknown",line:0,function:"unknown"};let e=o.match(/at\s+(?:(.+?)\s+)?\(?(.+?):(\d+):(\d+)\)?/);if(!e)return{file:"unknown",line:0,function:"unknown"};let[,a,c,i]=e;return{file:c?c.split("/").pop()||c:"unknown",line:parseInt(i||"0",10),function:a?.replace(/^Object\./,"")||"anonymous"}}function Ms(n){if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack,code:n.code};if(typeof n==="string")return{name:"Error",message:n};return{name:"UnknownError",message:String(n)}}function Ds(n,r){if(!n&&!r)return;if(!n)return r;if(!r)return n;return{...n,...r}}function Hs(n){if(n<1)return`${(n*1000).toFixed(2)}\xB5s`;if(n<1000)return`${n.toFixed(2)}ms`;return`${(n/1000).toFixed(2)}s`}function zs(n,r){let t=new WeakSet;return JSON.stringify(n,(o,e)=>{if(typeof e==="object"&&e!==null){if(t.has(e))return"[Circular]";t.add(e)}if(typeof e==="bigint")return e.toString();if(e instanceof Error)return{name:e.name,message:e.message,stack:e.stack};return e},r)}var D2;var ic=d(()=>{D2=["password","secret","token","apiKey","api_key","authorization","cookie","credit_card","creditCard","ssn","privateKey","private_key"]});class sc{name="console";colorize;prettyPrint;constructor(n={}){this.colorize=n.colorize??!0,this.prettyPrint=n.prettyPrint??!0}log(n){if(this.prettyPrint)this.logPretty(n);else this.logJson(n)}logJson(n){let r=zs(n);this.getConsoleMethod(n.level)(r)}logPretty(n){let r=this.getConsoleMethod(n.level),t=this.colorize?Xd[n.level]:"",o=this.colorize?ks:"",e=this.colorize?Es:"",a=this.colorize?Vd:"",c=new Date(n.timestamp).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),i=n.level.toUpperCase().padEnd(5),s=n.service?`[${n.service}]`:"",l=n.correlationId?`${e}(${n.correlationId.slice(0,8)})${o}`:"",f=n.duration!==void 0?`${e}${Hs(n.duration)}${o}`:"",u=`${e}${c}${o} ${t}${a}${i}${o} ${s}${l} ${n.message} ${f}`;if(r(u.trim()),n.caller)r(` ${e}at ${n.caller.function} (${n.caller.file}:${n.caller.line})${o}`);if(n.context&&Object.keys(n.context).length>0)r(` ${e}context:${o}`,n.context);if(n.error){if(r(` ${t}${n.error.name}: ${n.error.message}${o}`),n.error.stack){let b=n.error.stack.split(`
4
- `).slice(1,4);for(let $ of b)r(` ${e}${$.trim()}${o}`)}}}getConsoleMethod(n){switch(n){case"debug":return console.debug.bind(console);case"info":return console.info.bind(console);case"warn":return console.warn.bind(console);case"error":case"fatal":return console.error.bind(console);default:return console.log.bind(console)}}}class lc{name="database";db;table;enabled;constructor(n){this.db=n.db,this.table=n.table,this.enabled=n.enabled??!0}setDb(n){this.db=n}setTable(n){this.table=n}setEnabled(n){this.enabled=n}async write(n){if(!this.enabled||!this.db||!this.table)return;try{await this.db.insert(this.table).values({id:n.id,entityId:n.entityId,entityName:n.entityName,operationType:n.operation,userId:n.userId,ipAddress:n.ipAddress,userAgent:n.userAgent,summary:n.summary,oldValues:n.oldValues,newValues:n.newValues,path:n.path,query:n.query})}catch(r){console.error("Audit log write failed:",r)}}}class fc{name="console-audit";enabled;constructor(n={}){this.enabled=n.enabled??!0}write(n){if(!this.enabled)return;let r="\x1B[35m",t=ks,o=Es;console.log(`${o}${n.timestamp}${t} ${r}AUDIT${t} [${n.operation}] ${n.entityName}${n.entityId?`:${n.entityId}`:""} ${o}by ${n.userId||"anonymous"}${t}`)}}var Us=d(()=>{Ss();ic()});import{randomUUID as H2}from"crypto";class Jr{config;transports;auditTransports;context;correlationId;static instance=null;constructor(n={},r={},t){this.config={...z2,...n},this.context=r,this.correlationId=t,this.transports=[new sc({colorize:this.config.colorize,prettyPrint:this.config.prettyPrint})],this.auditTransports=[new fc({enabled:this.config.prettyPrint})]}static getInstance(n){if(!Jr.instance)Jr.instance=new Jr(n);return Jr.instance}static resetInstance(){Jr.instance=null}child(n,r){let t=new Jr(this.config,Ds(this.context,n)||{},r||this.correlationId);return t.transports=this.transports,t.auditTransports=this.auditTransports,t}withCorrelationId(n){return this.child({},n)}addTransport(n){this.transports.push(n)}addAuditTransport(n){this.auditTransports.push(n)}setLevel(n){this.config.level=n}setAuditEnabled(n){this.config.auditEnabled=n}isAuditEnabled(){return this.config.auditEnabled}shouldLog(n){return Rs[n]>=Rs[this.config.level]}createEntry(n,r,t,o,e){let a={timestamp:new Date().toISOString(),level:n,message:r,service:this.config.service,correlationId:this.correlationId},c=Ds(this.context,t);if(c&&Object.keys(c).length>0)a.context=oa(c,this.config.redactKeys);if(this.config.includeCallerInfo)a.caller=Cd();if(o)a.error=Ms(o);if(e!==void 0)a.duration=performance.now()-e;return a}log(n,r,t,o,e){if(!this.shouldLog(n))return;let a=this.createEntry(n,r,t,o,e);for(let c of this.transports)try{c.log(a)}catch(i){console.error(`Logger transport "${c.name}" failed:`,i)}}debug(n,r){this.log("debug",n,r)}info(n,r){this.log("info",n,r)}warn(n,r){this.log("warn",n,r)}error(n,r,t){this.log("error",n,t,r)}fatal(n,r,t){this.log("fatal",n,t,r)}time(n){let r=performance.now();return()=>{this.log("debug",`${n} completed`,void 0,void 0,r)}}async timeAsync(n,r,t){let o=performance.now();try{let e=await r();return this.log("debug",`${n} completed`,t,void 0,o),e}catch(e){throw this.log("error",`${n} failed`,t,e,o),e}}request(n){let r=n.statusCode>=500?"error":n.statusCode>=400?"warn":"info";this.log(r,`${n.method} ${n.path} ${n.statusCode}`,{method:n.method,path:n.path,statusCode:n.statusCode,durationMs:n.duration,correlationId:n.correlationId,userId:n.userId,ip:n.ip,userAgent:n.userAgent})}db(n){let r=n.error?"error":"debug";this.log(r,`DB ${n.operation} on ${n.table}`,{operation:n.operation,table:n.table,durationMs:n.duration,rowCount:n.rowCount},n.error)}async flush(){for(let n of this.transports)if(n.flush)await n.flush()}async audit(n){let r={id:H2(),timestamp:new Date().toISOString(),entityName:n.entityName,entityId:n.entityId??null,operation:n.operation,userId:n.userId??null,summary:n.summary||`${n.operation} on ${n.entityName}`,oldValues:n.oldValues||{},newValues:n.newValues||{},ipAddress:n.ipAddress||"unknown",userAgent:n.userAgent||"unknown",path:n.path||"",query:n.query||"",correlationId:this.correlationId};for(let t of this.auditTransports)try{await t.write(r)}catch(o){console.error(`Audit transport "${t.name}" failed:`,o)}}auditOnly(n){this.audit(n)}async trace(n){let r=n.log!==!1,t=n.writeAudit===!0||n.writeAudit!==!1&&this.config.auditEnabled&&n.audit;if(r)this.log(n.level||"info",n.message,n.context,n.error);if(t&&n.audit)await this.audit(n.audit)}traceSync(n){let r=n.log!==!1,t=n.writeAudit===!0||n.writeAudit!==!1&&this.config.auditEnabled&&n.audit;if(r)this.log(n.level||"info",n.message,n.context,n.error);if(t&&n.audit)this.audit(n.audit)}}var z2,U2;var Bs=d(()=>{Us();Ss();ic();z2={level:"info",service:"nucleus",environment:"development",redactKeys:[],colorize:!0,prettyPrint:!0,includeCallerInfo:!0,asyncBufferSize:100,flushIntervalMs:1000,auditEnabled:!1};U2=Jr.getInstance()});var Nd=m2((rS,Od)=>{var Pd=12,F2=0,Ys=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,7,7,7,7,7,7,7,7,7,7,7,7,8,7,7,10,9,9,9,11,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,24,36,48,60,72,84,96,0,12,12,12,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,24,24,24,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0,0,0,0,48,48,48,0,0,0,0,0,0,0,0,0,0,48,48,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,127,63,63,63,0,31,15,15,15,7,7,7];function j2(n){var r=n.indexOf("%");if(r===-1)return n;var t=n.length,o="",e=0,a=0,c=r,i=Pd;while(r>-1&&r<t){var s=Gd(n[r+1],4),l=Gd(n[r+2],0),f=s|l,u=Ys[f];if(i=Ys[256+i+u],a=a<<6|f&Ys[364+u],i===Pd)o+=n.slice(e,c),o+=a<=65535?String.fromCharCode(a):String.fromCharCode(55232+(a>>10),56320+(a&1023)),a=0,e=r+3,r=c=n.indexOf("%",e);else if(i===F2)return null;else{if(r+=3,r<t&&n.charCodeAt(r)===37)continue;return null}}return o+n.slice(e)}var p2={"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};function Gd(n,r){var t=p2[n];return t===void 0?255:t<<r}Od.exports=j2});var jd=(n)=>{return n?.trim().toLowerCase()||"unknown"},Qs=(n,r)=>{return n[r.toLowerCase()]??n[r]};import K2 from"crypto";var pd=(n)=>{let r=JSON.stringify({userAgent:jd(n.userAgent),ipAddress:n.ipAddress,extra:n.extra??{}});return{hash:K2.createHash("sha256").update(r).digest("base64url"),components:n}};var Ps=()=>{};var Kd=({savedFingerprint:n,requestIp:r,headers:t})=>{let o=Qs(t,"user-agent"),e=Qs(t,"x-forwarded-for")??r??void 0,a=pd({userAgent:o,ipAddress:e}),c=[{field:"userAgent",saved:n.components.userAgent,received:o},{field:"ipAddress",saved:n.components.ipAddress,received:e}].find(({saved:i,received:s})=>i??(s??"")!=="");if(c)return{isValid:!1,reason:`${c.field} mismatch`,currentFingerprint:a};return{isValid:!0,currentFingerprint:a}};var Gs=d(()=>{Ps()});var Td=d(()=>{Ps();Gs()});import vd from"crypto";var Os=(n)=>{return(Buffer.isBuffer(n)?n.toString("base64"):Buffer.from(n).toString("base64")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")},Id=(n)=>{let r="=".repeat((4-n.length%4)%4),t=n.replace(/-/g,"+").replace(/_/g,"/")+r;return Buffer.from(t,"base64").toString("utf-8")},Ns=(n,r,t)=>{let o=t.replace("HS","sha"),e=vd.createHmac(o,r);return e.update(n),Os(e.digest())},Zd=(n,r,t,o)=>{let e=Ns(n,t,o);return vd.timingSafeEqual(Buffer.from(r),Buffer.from(e))},yd=(n)=>{return Os(JSON.stringify(n))},nu=(n)=>{return Os(JSON.stringify(n))},bc=(n)=>{try{return JSON.parse(Id(n))}catch{return null}},gc=(n)=>{try{return JSON.parse(Id(n))}catch{return null}};var _c=()=>{};var T2=(n)=>{let r=n.split(".");if(r.length!==3)return null;let[t,o,e]=r;if(!t||!o||!e)return null;let a=bc(t),c=gc(o);if(!a||!c)return null;return{header:a,payload:c,signature:e}};var ru=d(()=>{_c()});var sa=(n,r,t="HS256")=>{let o={alg:t,typ:"JWT"},e=Math.floor(Date.now()/1000),a={sub:n.subject,iat:e,exp:e+n.expiresInSeconds,iss:n.issuer,aud:n.audience,jti:n.jwtId,sessionId:n.sessionId,...n.customClaims},c=yd(o),i=nu(a),s=`${c}.${i}`,l=Ns(s,r,t);return`${s}.${l}`};var tu=d(()=>{_c()});var Wo=(n,r)=>{let t=n.split(".");if(t.length!==3)return{valid:!1,error:"Invalid token format: expected 3 parts"};let[o,e,a]=t;if(!o||!e||!a)return{valid:!1,error:"Invalid token format: missing parts"};let c=bc(o);if(!c)return{valid:!1,error:"Invalid header: failed to decode"};if(c.typ!=="JWT")return{valid:!1,error:"Invalid header: typ must be JWT"};if(!["HS256","HS384","HS512"].includes(c.alg))return{valid:!1,error:`Unsupported algorithm: ${c.alg}`};let s=`${o}.${e}`;if(!Zd(s,a,r,c.alg))return{valid:!1,error:"Invalid signature"};let f=gc(e);if(!f)return{valid:!1,error:"Invalid payload: failed to decode"};let u=Math.floor(Date.now()/1000);if(f.exp&&f.exp<u)return{valid:!1,error:"Token expired"};if(f.iat&&f.iat>u+60)return{valid:!1,error:"Token issued in the future"};return{valid:!0,payload:f}};var ou=d(()=>{_c()});var eu={};no(eu,{verifyJWT:()=>Wo,signJWT:()=>sa,decodeJWT:()=>T2});var Yo=d(()=>{ru();tu();ou()});var au=()=>{};var cu=d(()=>{au()});var iu="127.0.0.1",su="3500",lu=4,Xt="statestore-redis",qs="pubsub-rabbitmq",Fs="secretstore",la="configstore-redis",fu="DAPR_HOST",du="DAPR_HTTP_PORT",uu="DAPR_HTTP_ENDPOINT",bu="DAPR_GRPC_ENDPOINT",gu="DAPR_API_TOKEN",_u=30000,mu=1e4,wu=5000,Vt,mc,pr;var Et=d(()=>{Vt={CONNECTED:"connected",DISCONNECTED:"disconnected",CONNECTING:"connecting",ERROR:"error"},mc={HEALTHY:"healthy",UNHEALTHY:"unhealthy"},pr={CONNECTION_ERROR:"DAPR_CONNECTION_ERROR",TIMEOUT_ERROR:"DAPR_TIMEOUT_ERROR",STATE_ERROR:"DAPR_STATE_ERROR",PUBSUB_ERROR:"DAPR_PUBSUB_ERROR",BINDING_ERROR:"DAPR_BINDING_ERROR",SECRET_ERROR:"DAPR_SECRET_ERROR",CONFIG_ERROR:"DAPR_CONFIG_ERROR",INVOKE_ERROR:"DAPR_INVOKE_ERROR",CRYPTO_ERROR:"DAPR_CRYPTO_ERROR",LOCK_ERROR:"DAPR_LOCK_ERROR",WORKFLOW_ERROR:"DAPR_WORKFLOW_ERROR",VALIDATION_ERROR:"DAPR_VALIDATION_ERROR"}});var Kr,ue=(n,r)=>new Kr(pr.CONNECTION_ERROR,n,r),hu=(n,r)=>new Kr(pr.TIMEOUT_ERROR,n,r),Jo=(n,r)=>new Kr(pr.STATE_ERROR,n,r),js=(n,r)=>new Kr(pr.PUBSUB_ERROR,n,r),$u=(n,r)=>new Kr(pr.BINDING_ERROR,n,r),ps=(n,r)=>new Kr(pr.SECRET_ERROR,n,r),wc=(n,r)=>new Kr(pr.CONFIG_ERROR,n,r),Au=(n,r)=>new Kr(pr.INVOKE_ERROR,n,r),Ks=(n,r)=>new Kr(pr.CRYPTO_ERROR,n,r),Ts=(n,r)=>new Kr(pr.LOCK_ERROR,n,r),oo=(n,r)=>new Kr(pr.WORKFLOW_ERROR,n,r),wn=async(n,r)=>{try{return await n()}catch(t){let o=t instanceof Error?t.message:String(t);throw r(o,t)}};var Lr=d(()=>{Et();Kr=class Kr extends Error{code;details;constructor(n,r,t){super(r);this.name="DaprManagerError",this.code=n,this.details=t}toJSON(){return{code:this.code,message:this.message,details:this.details}}}});var Ru,hc=(n="info")=>{let r=Ru[n],t=(o)=>(e,...a)=>{if(Ru[o]<r)return;let c=new Date().toISOString(),i=a.length>0?` ${JSON.stringify(a)}`:"";console[o](`[${c}] [Dapr] [${o.toUpperCase()}] ${e}${i}`)};return{debug:t("debug"),info:t("info"),warn:t("warn"),error:t("error")}},fa=async(n,r,t="Operation timed out")=>{return Promise.race([n(),new Promise((o,e)=>{setTimeout(()=>{e(hu(t))},r)})])},hn=(n,r,t)=>{let o=r.filter((e)=>n[e]===void 0);if(o.length>0)throw Error(`Missing required ${t} parameters: ${o.join(", ")}`)};var Tr=d(()=>{Et();Lr();Ru={debug:0,info:1,warn:2,error:3}});class $c{client;logger;constructor(n,r){this.client=n,this.logger=r}async invoke(n,r,t,o={}){return hn({name:n,operation:r},["name","operation"],"binding invoke"),wn(async()=>{this.logger.debug("Invoking binding",{name:n,operation:r});let a=await(await this.client()).binding.send(n,r,t,o.metadata);return this.logger.debug("Binding invoked successfully",{name:n,operation:r}),a},(e,a)=>$u(`Failed to invoke binding ${n}: ${e}`,a))}}var vs=d(()=>{Lr();Tr()});class Ac{client;logger;constructor(n,r){this.client=n,this.logger=r}async get(n,r=la){if(hn({keys:n,storeName:r},["keys","storeName"],"config get"),n.length===0)return{};return wn(async()=>{this.logger.debug("Getting configuration",{keys:n,storeName:r});let o=await(await this.client()).configuration.get(r,n);return this.logger.debug("Configuration retrieved",{keys:n,storeName:r,itemCount:Object.keys(o.items||{}).length}),o.items||{}},(t,o)=>wc(`Failed to get configuration: ${t}`,o))}async subscribeWithKeys(n,r,t=la){if(hn({keys:n,callback:r,storeName:t},["keys","callback","storeName"],"config subscribeWithKeys"),n.length===0)throw wc("At least one key must be provided for subscription");return wn(async()=>{this.logger.debug("Subscribing to configuration updates",{keys:n,storeName:t});let e=await(await this.client()).configuration.subscribeWithKeys(t,n,async(a)=>{try{this.logger.debug("Received configuration update",{storeName:t,updatedKeys:Object.keys(a.items||{})}),await r(a)}catch(c){this.logger.error("Error in configuration subscription callback",c)}});return this.logger.debug("Configuration subscription established",{keys:n,storeName:t}),{stop:()=>{this.logger.debug("Stopping configuration subscription",{keys:n,storeName:t}),e.stop()}}},(o,e)=>wc(`Failed to subscribe to configuration updates: ${o}`,e))}async getValue(n,r=la){return(await this.get([n],r))[n]?.value}async getValues(n,r=la){let t=await this.get(n,r),o={};for(let e in t)if(t[e]?.value!==void 0)o[e]=t[e].value;return o}}var Is=d(()=>{Et();Lr();Tr()});class Rc{client;logger;constructor(n,r){this.client=n,this.logger=r}async encrypt(n,r){return hn({data:n,componentName:r.componentName},["data","componentName"],"crypto encrypt"),wn(async()=>{this.logger.debug("Encrypting data",{componentName:r.componentName,keyName:r.keyName,keyWrapAlgorithm:r.keyWrapAlgorithm});let t=await this.client(),o=typeof n==="string"?Buffer.from(n):n,e={componentName:r.componentName};if(r.keyName)e.keyName=r.keyName;if(r.keyWrapAlgorithm)e.keyWrapAlgorithm=r.keyWrapAlgorithm;let a=await t.crypto.encrypt(o,e);return this.logger.debug("Data encrypted successfully",{componentName:r.componentName,inputSize:o.length,outputSize:a.length}),a},(t,o)=>Ks(`Failed to encrypt data: ${t}`,o))}async decrypt(n,r){return hn({data:n,componentName:r.componentName},["data","componentName"],"crypto decrypt"),wn(async()=>{this.logger.debug("Decrypting data",{componentName:r.componentName});let t=await this.client(),o=typeof n==="string"?Buffer.from(n):n,e={componentName:r.componentName};if(r.keyName)e.keyName=r.keyName;if(r.keyWrapAlgorithm)e.keyWrapAlgorithm=r.keyWrapAlgorithm;let a=await t.crypto.decrypt(o,e);return this.logger.debug("Data decrypted successfully",{componentName:r.componentName,inputSize:o.length,outputSize:a.length}),a},(t,o)=>Ks(`Failed to decrypt data: ${t}`,o))}async encryptString(n,r){return(await this.encrypt(n,r)).toString("base64")}async decryptString(n,r){let t=Buffer.from(n,"base64");return(await this.decrypt(t,r)).toString("utf-8")}}var Zs=d(()=>{Lr();Tr()});import{HttpMethod as da}from"@dapr/dapr";class kc{client;logger;constructor(n,r){this.client=n,this.logger=r}async invoke(n,r,t=da.POST,o,e={}){hn({appId:n,methodName:r,httpMethod:t},["appId","methodName","httpMethod"],"invoke service");let a=e.timeout||_u;return wn(async()=>{this.logger.debug("Invoking service",{appId:n,methodName:r,httpMethod:t,hasData:o!==void 0});let c=r;if(e.queryParams&&Object.keys(e.queryParams).length>0){let l=Object.entries(e.queryParams).map(([f,u])=>`${encodeURIComponent(f)}=${encodeURIComponent(u)}`).join("&");c=`${r}?${l}`}let i=await this.client(),s=await fa(()=>i.invoker.invoke(n,c,t,o,e.headers),a,`Service invocation timed out after ${a}ms`);if(this.logger.debug("Service invoked successfully",{appId:n,methodName:r,httpMethod:t,status:s?.status}),!s)return;if("data"in s)return s.data;return s},(c,i)=>Au(`Failed to invoke service ${n}.${r}: ${c}`,i))}async get(n,r,t={}){return this.invoke(n,r,da.GET,void 0,t)}async post(n,r,t,o={}){return this.invoke(n,r,da.POST,t,o)}async put(n,r,t,o={}){return this.invoke(n,r,da.PUT,t,o)}async delete(n,r,t={}){return this.invoke(n,r,da.DELETE,void 0,t)}}var ys=d(()=>{Et();Lr();Tr()});class Ec{client;logger;constructor(n,r){this.client=n,this.logger=r}async lock(n,r,t,o){return hn({storeName:n,resourceId:r,lockOwner:t,expiryInSeconds:o.expiryInSeconds},["storeName","resourceId","lockOwner","expiryInSeconds"],"lock"),wn(async()=>{this.logger.debug("Acquiring lock",{storeName:n,resourceId:r,lockOwner:t});let a=await(await this.client()).lock.lock(n,r,t,o.expiryInSeconds);return this.logger.debug("Lock acquisition result",{storeName:n,resourceId:r,lockOwner:t,success:a.success}),{success:a.success}},(e,a)=>Ts(`Failed to acquire lock for resource ${r}: ${e}`,a))}async unlock(n,r,t){return hn({storeName:n,resourceId:r,lockOwner:t},["storeName","resourceId","lockOwner"],"unlock"),wn(async()=>{this.logger.debug("Releasing lock",{storeName:n,resourceId:r,lockOwner:t});let e=await(await this.client()).lock.unlock(n,r,t);return this.logger.debug("Lock release result",{storeName:n,resourceId:r,lockOwner:t,status:this.getLockStatusName(e.status)}),{status:e.status}},(o,e)=>Ts(`Failed to release lock for resource ${r}: ${o}`,e))}getLockStatusName(n){switch(n){case 0:return"Success";case 1:return"LockDoesNotExist";case 2:return"LockBelongsToOthers";default:return"InternalError"}}}var nl=d(()=>{Lr();Tr()});class Sc{client;logger;constructor(n,r){this.client=n,this.logger=r}async publish(n,r,t={},o=qs){return hn({topic:n,data:r,pubsubName:o},["topic","data","pubsubName"],"pubsub publish"),wn(async()=>{this.logger.debug("Publishing message to topic",{topic:n,pubsubName:o}),await(await this.client()).pubsub.publish(o,n,r,{metadata:t.metadata,contentType:t.contentType}),this.logger.debug("Message published successfully",{topic:n,pubsubName:o})},(e,a)=>js(`Failed to publish message to topic ${n}: ${e}`,a))}async publishBulk(n,r,t=qs){if(hn({topic:n,messages:r,pubsubName:t},["topic","messages","pubsubName"],"pubsub publishBulk"),r.length===0)return{failedEntries:[]};return wn(async()=>{this.logger.debug("Publishing bulk messages to topic",{topic:n,pubsubName:t,messageCount:r.length});let o=await this.client(),e=r.map((i)=>{if(typeof i==="object"&&"event"in i)return{entryID:i.entryId,event:i.event,contentType:i.contentType,metadata:i.metadata};return{event:i}}),a=await o.pubsub.publishBulk(t,n,e),c=a.failedMessages?.length||0;if(c>0)this.logger.warn("Some messages failed to publish",{topic:n,pubsubName:t,failedCount:c,totalCount:r.length});else this.logger.debug("All bulk messages published successfully",{topic:n,pubsubName:t,messageCount:r.length});return{failedEntries:(a.failedMessages||[]).map((i)=>({entryId:i.message.entryID||"",error:i.error?.message||"Unknown error"}))}},(o,e)=>js(`Failed to publish bulk messages to topic ${n}: ${o}`,e))}createBulkPublishMessage(n,r,t,o){return{entryId:r,event:n,contentType:t,metadata:o}}}var rl=d(()=>{Et();Lr();Tr()});class Mc{client;logger;constructor(n,r){this.client=n,this.logger=r}async get(n,r={},t=Fs){return hn({key:n,storeName:t},["key","storeName"],"secret get"),wn(async()=>{this.logger.debug("Getting secret",{key:n,storeName:t});let o=await this.client(),e=r.metadata?JSON.stringify(r.metadata):void 0,a=await o.secret.get(t,n,e);return this.logger.debug("Secret retrieved",{key:n,storeName:t}),a},(o,e)=>ps(`Failed to get secret ${n}: ${o}`,e))}async getBulk(n={},r=Fs){return hn({storeName:r},["storeName"],"secret getBulk"),wn(async()=>{this.logger.debug("Getting all secrets",{storeName:r});let o=await(await this.client()).secret.getBulk(r);return this.logger.debug("All secrets retrieved",{storeName:r,secretCount:Object.keys(o).length}),o},(t,o)=>ps(`Failed to get all secrets: ${t}`,o))}}var tl=d(()=>{Et();Lr();Tr()});class Dc{client;logger;constructor(n,r){this.client=n,this.logger=r}async save(n,r={},t=Xt){if(hn({stateItems:n,storeName:t},["stateItems","storeName"],"state save"),n.length===0)return;return wn(async()=>{this.logger.debug("Saving state items",{count:n.length,storeName:t}),await(await this.client()).state.save(t,n,r),this.logger.debug("State items saved successfully",{count:n.length,storeName:t})},(o,e)=>Jo(`Failed to save state items: ${o}`,e))}async get(n,r=Xt){return hn({key:n,storeName:r},["key","storeName"],"state get"),wn(async()=>{this.logger.debug("Getting state item",{key:n,storeName:r});let o=await(await this.client()).state.get(r,n);if(this.logger.debug("State item retrieved",{key:n,storeName:r,found:o!==void 0}),o===void 0||o===null)return;if(typeof o==="string")try{return JSON.parse(o)}catch{return o}if(typeof o==="object")return o;return o},(t,o)=>Jo(`Failed to get state item ${n}: ${t}`,o))}async getBulk(n,r=Xt){if(hn({keys:n,storeName:r},["keys","storeName"],"state getBulk"),n.length===0)return{};return wn(async()=>{this.logger.debug("Getting bulk state items",{count:n.length,storeName:r});let o=await(await this.client()).state.getBulk(r,n),e={};return o.forEach((a)=>{if(a.data!==void 0)e[a.key]=a.data}),this.logger.debug("Bulk state items retrieved",{count:n.length,found:Object.keys(e).length,storeName:r}),e},(t,o)=>Jo(`Failed to get bulk state items: ${t}`,o))}async delete(n,r,t,o=Xt){return hn({key:n,storeName:o},["key","storeName"],"state delete"),wn(async()=>{this.logger.debug("Deleting state item",{key:n,storeName:o});let e=await this.client(),a={};if(r)a.etag=r;if(t)a.metadata=t;await e.state.delete(o,n,a),this.logger.debug("State item deleted",{key:n,storeName:o})},(e,a)=>Jo(`Failed to delete state item ${n}: ${e}`,a))}async transaction(n,r=Xt){if(hn({operations:n,storeName:r},["operations","storeName"],"state transaction"),n.length===0)return;return wn(async()=>{this.logger.debug("Executing state transaction",{operationCount:n.length,storeName:r});let t=await this.client(),o=n.map((e)=>({operation:e.operation,request:{key:e.request.key,value:e.request.value,etag:e.request.etag?{value:e.request.etag}:void 0,metadata:e.request.metadata}}));await t.state.transaction(r,o),this.logger.debug("State transaction executed successfully",{operationCount:n.length,storeName:r})},(t,o)=>Jo(`Failed to execute state transaction: ${t}`,o))}async query(n,r=Xt){return hn({query:n,storeName:r},["query","storeName"],"state query"),wn(async()=>{this.logger.debug("Querying state store",{storeName:r});let o=await(await this.client()).state.query(r,n);return this.logger.debug("State query executed",{storeName:r,resultCount:o.results?.length||0}),(o.results||[]).map((e)=>e.data)},(t,o)=>Jo(`Failed to query state store: ${t}`,o))}async saveItem(n,r,t={},o=Xt){let e={key:n,value:r};return this.save([e],t,o)}async upsert(n,r,t={},o=Xt){return this.saveItem(n,r,t,o)}}var ol=d(()=>{Et();Lr();Tr()});class Hc{client;logger;constructor(n,r){this.client=n,this.logger=r}async start(n,r,t={}){return hn({workflowName:n},["workflowName"],"workflow start"),wn(async()=>{this.logger.debug("Starting workflow",{workflowName:n,instanceId:t.instanceId||"auto-generated",workflowComponent:t.workflowComponent});let e=await(await this.client()).workflow.start(n,r,t.instanceId);return this.logger.debug("Workflow started",{workflowName:n,instanceId:e}),e},(o,e)=>oo(`Failed to start workflow ${n}: ${o}`,e))}async get(n){return hn({instanceId:n},["instanceId"],"workflow get"),wn(async()=>{this.logger.debug("Getting workflow instance",{instanceId:n});let t=await(await this.client()).workflow.get(n);return this.logger.debug("Workflow instance retrieved",{instanceId:n,workflowName:t.workflowName,runtimeStatus:t.runtimeStatus}),{instanceId:t.instanceID,workflowName:t.workflowName,createdAt:new Date(t.createdAt),lastUpdatedAt:new Date(t.lastUpdatedAt),runtimeStatus:t.runtimeStatus,properties:t.properties||{}}},(r,t)=>oo(`Failed to get workflow instance ${n}: ${r}`,t))}async terminate(n){return hn({instanceId:n},["instanceId"],"workflow terminate"),wn(async()=>{this.logger.debug("Terminating workflow instance",{instanceId:n}),await(await this.client()).workflow.terminate(n),this.logger.debug("Workflow instance terminated",{instanceId:n})},(r,t)=>oo(`Failed to terminate workflow instance ${n}: ${r}`,t))}async pause(n){return hn({instanceId:n},["instanceId"],"workflow pause"),wn(async()=>{this.logger.debug("Pausing workflow instance",{instanceId:n}),await(await this.client()).workflow.pause(n),this.logger.debug("Workflow instance paused",{instanceId:n})},(r,t)=>oo(`Failed to pause workflow instance ${n}: ${r}`,t))}async resume(n){return hn({instanceId:n},["instanceId"],"workflow resume"),wn(async()=>{this.logger.debug("Resuming workflow instance",{instanceId:n}),await(await this.client()).workflow.resume(n),this.logger.debug("Workflow instance resumed",{instanceId:n})},(r,t)=>oo(`Failed to resume workflow instance ${n}: ${r}`,t))}async purge(n){return hn({instanceId:n},["instanceId"],"workflow purge"),wn(async()=>{this.logger.debug("Purging workflow instance",{instanceId:n}),await(await this.client()).workflow.purge(n),this.logger.debug("Workflow instance purged",{instanceId:n})},(r,t)=>oo(`Failed to purge workflow instance ${n}: ${r}`,t))}async raiseEvent(n,r,t){return hn({instanceId:n,eventName:r},["instanceId","eventName"],"workflow raiseEvent"),wn(async()=>{this.logger.debug("Raising event for workflow instance",{instanceId:n,eventName:r}),await(await this.client()).workflow.raise(n,r,t),this.logger.debug("Event raised for workflow instance",{instanceId:n,eventName:r})},(o,e)=>oo(`Failed to raise event ${r} for workflow instance ${n}: ${o}`,e))}}var el=d(()=>{Lr();Tr()});import{CommunicationProtocolEnum as al,DaprClient as v2,HttpMethod as I2,LogLevel as Z2}from"@dapr/dapr";class cl{client=null;daprHost;daprPort;communicationProtocol;maxBodySizeMb;daprApiToken;logger;connectionStatus=Vt.DISCONNECTED;connectionPromise=null;constructor(n={}){this.daprHost=n.daprHost||process.env[fu]||iu,this.daprPort=n.daprPort||process.env[du]||su,this.communicationProtocol=n.communicationProtocol||al.HTTP,this.maxBodySizeMb=n.maxBodySizeMb||lu,this.daprApiToken=n.daprApiToken||process.env[gu],this.logger=n.logger||hc(),this.logger.info("DaprConnectionManager initialized",{daprHost:this.daprHost,daprPort:this.daprPort,communicationProtocol:this.communicationProtocol})}async getClient(){if(!this.client||this.connectionStatus!==Vt.CONNECTED)await this.connect();if(!this.client)throw ue("Not connected to Dapr sidecar");return this.client}async connect(){if(this.connectionPromise)return this.connectionPromise;if(this.client&&this.connectionStatus===Vt.CONNECTED)return Promise.resolve();this.connectionStatus=Vt.CONNECTING,this.connectionPromise=this.establishConnection();try{await this.connectionPromise,this.connectionStatus=Vt.CONNECTED}catch(n){throw this.connectionStatus=Vt.ERROR,n}finally{this.connectionPromise=null}}async establishConnection(){try{this.logger.info("Connecting to Dapr sidecar",{daprHost:this.daprHost,daprPort:this.daprPort,protocol:this.communicationProtocol});let n=process.env[uu]&&this.communicationProtocol===al.HTTP||process.env[bu]&&this.communicationProtocol===al.GRPC,r={communicationProtocol:this.communicationProtocol,maxBodySizeMb:this.maxBodySizeMb,logger:{level:Z2.Warn}};if(!n)r.daprHost=this.daprHost,r.daprPort=this.daprPort;if(this.daprApiToken)r.daprApiToken=this.daprApiToken;await fa(async()=>{this.client=new v2(r)},mu,"Connection to Dapr sidecar timed out"),await this.healthCheck(),this.logger.info("Successfully connected to Dapr sidecar")}catch(n){throw this.logger.error("Failed to connect to Dapr sidecar",n),this.client=null,ue(`Failed to connect to Dapr sidecar at ${this.daprHost}:${this.daprPort}`,n)}}async disconnect(){if(!this.client)return;try{this.logger.info("Disconnecting from Dapr sidecar"),this.client=null,this.connectionStatus=Vt.DISCONNECTED,this.logger.info("Disconnected from Dapr sidecar")}catch(n){throw this.logger.error("Error during disconnect",n),ue("Failed to disconnect from Dapr sidecar",n)}}isConnected(){return this.client!==null&&this.connectionStatus===Vt.CONNECTED}getConnectionStatus(){return this.connectionStatus}async healthCheck(){if(!this.client)throw ue("Not connected to Dapr sidecar");try{return await fa(async()=>{if(!this.client)throw ue("Not connected to Dapr sidecar");let n=await this.client.invoker.invoke("healthz","healthz",I2.GET);return{status:n.status===204?mc.HEALTHY:mc.UNHEALTHY,version:n.headers?.["dapr-version"]||"unknown"}},wu,"Health check timed out")}catch(n){return this.logger.error("Health check failed",n),{status:mc.UNHEALTHY,version:"unknown"}}}getClientConfig(){return{daprHost:this.daprHost,daprPort:this.daprPort,communicationProtocol:this.communicationProtocol,maxBodySizeMb:this.maxBodySizeMb,hasApiToken:!!this.daprApiToken,connectionStatus:this.connectionStatus}}}var ku=d(()=>{Et();Lr();Tr()});var Eu=()=>{};class zc{connectionManager;logger;_state;_pubsub;_binding;_secret;_config;_invoke;_lock;_crypto;_workflow;constructor(n={}){this.logger=n.logger||hc(),this.connectionManager=new cl(n);let r=async()=>{return this.connectionManager.getClient()};this._state=new Dc(r,this.logger),this._pubsub=new Sc(r,this.logger),this._binding=new $c(r,this.logger),this._secret=new Mc(r,this.logger),this._config=new Ac(r,this.logger),this._invoke=new kc(r,this.logger),this._lock=new Ec(r,this.logger),this._crypto=new Rc(r,this.logger),this._workflow=new Hc(r,this.logger)}async connect(){await this.connectionManager.connect()}async disconnect(){await this.connectionManager.disconnect()}isConnected(){return this.connectionManager.isConnected()}getConnectionStatus(){return this.connectionManager.getConnectionStatus()}async healthCheck(){return this.connectionManager.healthCheck()}getClientConfig(){return this.connectionManager.getClientConfig()}get state(){return this._state}get pubsub(){return this._pubsub}get binding(){return this._binding}get secret(){return this._secret}get config(){return this._config}get invoke(){return this._invoke}get lock(){return this._lock}get crypto(){return this._crypto}get workflow(){return this._workflow}}var Q6;var il=d(()=>{vs();Is();Zs();ys();nl();rl();tl();ol();el();ku();Tr();vs();Is();Zs();ys();nl();rl();tl();ol();el();Et();Lr();Eu();Q6=new zc});import Su from"ioredis";class Mu{client;constructor(n){this.client=n}async create(n,r,t){try{return{success:!0,data:t?await this.client.set(n,JSON.stringify(r),"EX",t):await this.client.set(n,JSON.stringify(r))}}catch(o){return{success:!1,error:o.message}}}async read(n){try{let r=await this.client.get(n);return{success:!0,data:r?JSON.parse(r):null}}catch(r){return{success:!1,error:r.message}}}async update(n,r,t=!0){try{return{success:!0,data:t?await this.client.set(n,JSON.stringify(r),"KEEPTTL"):await this.client.set(n,JSON.stringify(r))}}catch(o){return{success:!1,error:o.message}}}async remove(n){try{return{success:!0,data:await this.client.del(n)}}catch(r){return{success:!1,error:r.message}}}async exists(n){try{return{success:!0,data:await this.client.exists(n)===1}}catch(r){return{success:!1,error:r.message}}}getClient(){return this.client}}class Du{storeName;dapr;constructor(n){this.storeName=n;this.dapr=new zc}async create(n,r,t){try{let o=t?{ttlInSeconds:String(t)}:void 0;return await this.dapr.state.save([{key:n,value:r,metadata:o}],void 0,this.storeName),{success:!0,data:"OK"}}catch(o){return{success:!1,error:o.message}}}async read(n){try{return{success:!0,data:await this.dapr.state.get(n,this.storeName)??null}}catch(r){return{success:!1,error:r.message}}}async update(n,r,t=!0){try{return await this.dapr.state.save([{key:n,value:r}],void 0,this.storeName),{success:!0,data:"OK"}}catch(o){return{success:!1,error:o.message}}}async remove(n){try{return await this.dapr.state.delete(n,void 0,void 0,this.storeName),{success:!0,data:1}}catch(r){return{success:!1,error:r.message}}}async exists(n){try{let r=await this.dapr.state.get(n,this.storeName);return{success:!0,data:r!==void 0&&r!==null}}catch(r){return{success:!1,error:r.message}}}}class jn{static instance=null;store;directClient=null;useDapr;constructor(n){if(jn.instance){this.store=jn.instance.store,this.directClient=jn.instance.directClient,this.useDapr=jn.instance.useDapr;return}if(!n)throw Error("Redis config must be provided for first initialization.");if(y2(n),this.useDapr=n.withDapr??!1,n.withDapr)this.store=new Du(n.stateStoreName??"statestore");else{let r=n.url?new Su(n.url):new Su({host:n.host,port:n.port});this.directClient=r,this.store=new Mu(r)}jn.instance=this}async create(n,r,t){return this.store.create(n,r,t)}async read(n){return this.store.read(n)}async update(n,r,t=!0){return this.store.update(n,r,t)}async remove(n){return this.store.remove(n)}async exists(n){return this.store.exists(n)}async keys(n){if(this.useDapr||!this.directClient)return console.warn("[RedisManager] keys() not supported in Dapr mode"),[];try{return await this.directClient.keys(n)}catch(r){return console.error("[Redis] Keys error:",r.message),[]}}async acquireLock(n,r=10){if(this.useDapr||!this.directClient){let t=await this.exists(n);if(!t.success)return{success:!1,error:t.error};if(t.data)return{success:!0,data:!1};if((await this.create(n,"1",r)).success)return{success:!0,data:!0};return{success:!1,error:"Failed to acquire lock"}}try{return{success:!0,data:await this.directClient.set(n,"1","EX",r,"NX")==="OK"}}catch(t){return{success:!1,error:t.message}}}async releaseLock(n){return this.remove(n)}async waitForLock(n,r=5000,t=50){let o=Date.now();while(Date.now()-o<r){let e=await this.exists(n);if(!e.success)return{success:!1,error:e.error};if(!e.data)return{success:!0,data:!0};await new Promise((a)=>setTimeout(a,t))}return{success:!0,data:!1}}async getOrWait(n,r=5000,t=50){let o=Date.now();while(Date.now()-o<r){let e=await this.read(n);if(!e.success)return{success:!1,error:e.error};if(e.data!==null)return{success:!0,data:e.data};await new Promise((a)=>setTimeout(a,t))}return{success:!0,data:null}}}var y2=(n)=>{if(!n)throw Error("Redis config must be provided.");if(n.withDapr){if(!n.stateStoreName)throw Error("Dapr mode requires stateStoreName.");return}let r=Boolean(n.url),t=Boolean(n.host)&&typeof n.port==="number";if(!r&&!t)throw Error("Redis config requires either url or host and port.")};var Ct=d(()=>{il()});var sl=d(()=>{Ct()});var ll=d(()=>{Ct();Yo()});var fl=d(()=>{Ct();Yo();sl()});var zu=d(()=>{fl()});var Uu=d(()=>{sl();ll();fl();zu()});var Bu=86400,eo=(n)=>`session:${n}`,Uc=(n)=>JSON.stringify(n),Wu=(n)=>{if(!n)return null;if(typeof n==="object")return n;try{return JSON.parse(n)}catch{return null}};var Bc=async(n)=>{let r=new jn,t=eo(n.sessionId),o=await r.remove(t);return o.success&&o.data>0};var Wc=d(()=>{Ct()});import nh from"crypto";var Yu=async(n)=>{let r=new jn,t=n.sessionId??nh.randomUUID(),o=Date.now(),e=(n.expiresInSeconds??Bu)*1000,a=new Date(o).toISOString(),c={id:t,userId:n.userId,createdAt:a,expiresAt:new Date(o+e).toISOString(),lastActiveAt:a,clientMeta:n.clientMeta,fingerprintHash:n.fingerprintHash,deviceInfo:n.deviceInfo,refreshTokenHash:n.refreshTokenHash,loginMethod:n.loginMethod,rememberMe:n.rememberMe},i=await r.create(eo(t),Uc(c));if(!i.success)return{success:!1,error:i.error};return{success:!0,session:c}};var dl=d(()=>{Ct()});var Ju=d(()=>{Yo();ll();Wc();dl()});var Lu=d(()=>{Ju()});var Lo=async(n)=>{let r=new jn,t=eo(n.sessionId),o=await r.read(t);if(!o.success||!o.data)return null;let e=Wu(o.data);if(!e)return null;if(new Date(e.expiresAt).getTime()<=Date.now())return await Bc({sessionId:n.sessionId}),null;return e};var Yc=d(()=>{Ct();Wc()});var Xu=async(n)=>{let r=await Lo({sessionId:n.sessionId});if(!r)return{success:!1,error:"Session not found"};let t={...r,...n.updates,lastActiveAt:n.updates.lastActiveAt??new Date().toISOString()},e=await new jn().create(eo(n.sessionId),Uc(t));if(!e.success)return{success:!1,error:e.error};return{success:!0,session:t}},ul=async(n)=>{return Xu({sessionId:n,updates:{lastActiveAt:new Date().toISOString()}})};var Vu=d(()=>{Ct();Yc()});var rh=async(n)=>{let r=Wo(n.jwtToken,n.jwtSecret);if(!r.valid)return{isValid:!1,reason:r.error};let t=await Lo({sessionId:n.sessionId});if(!t)return{isValid:!1,reason:"Session not found"};let o;if(n.savedFingerprint&&n.headers&&n.requestIp){let e={};for(let[c,i]of Object.entries(n.headers))if(i!==void 0)e[c]=i;let a=Kd({savedFingerprint:n.savedFingerprint,headers:e,requestIp:n.requestIp});if(o=a.isValid,!a.isValid)return{isValid:!1,reason:a.reason??"Fingerprint mismatch"}}return{isValid:!0,context:{userId:t.userId,sessionId:t.id,fingerprintValid:o}}};var Cu=d(()=>{Gs();Yo();Yc()});var xu={};no(xu,{validateSession:()=>rh,updateSession:()=>Xu,updateLastActiveAt:()=>ul,readSession:()=>Lo,generateSession:()=>Yu,deleteSession:()=>Bc});var bl=d(()=>{Wc();dl();Yc();Vu();Cu()});var Qu=d(()=>{Td();Yo();cu();Uu();Lu();bl()});import{eq as th}from"drizzle-orm";function ua(n,r,t,o,e,a){let c=[n.toLowerCase()];if(a)c.push("bulk");if(c.push(r),o){if(c.push("with"),c.push(o),e)c.push(e)}else if(t)c.push(t);return c.join(".")}function ba(n,r,t){if(r)return`/${n}/bulk`;if(t)return`/${n}/:id`;return`/${n}`}function ah(n,r,t){let o=[],e=n.table_name,a=n.excluded_methods||[];for(let c of oh){if(a.includes(c))continue;let i=c==="PUT"||c==="PATCH"||c==="DELETE";if(o.push({action:ua(c,e),description:`${c} access to ${e}`,path:ba(e,!1,i&&c!=="DELETE"),method:c}),c==="GET"&&n.columns){for(let l of n.columns){if(r.skipColumns.includes(l.name))continue;o.push({action:ua(c,e,l.name),description:`${c} access to ${e}.${l.name}`,path:ba(e),method:c})}let s=`${e}Relations`;if(t[s]){let l=t[s];if(l?.config?.referencedTable?._?.name){let f=l.config.referencedTable._.name;o.push({action:ua(c,e,void 0,f),description:`${c} access to ${e} with ${f}`,path:ba(e),method:c})}}}if(c==="POST"||c==="PUT"||c==="PATCH"){if(n.columns)for(let s of n.columns){if(r.skipColumns.includes(s.name))continue;o.push({action:ua(c,e,s.name),description:`${c} access to ${e}.${s.name}`,path:ba(e,!1,c!=="POST"),method:c})}}}for(let c of eh){if(a.includes(c))continue;o.push({action:ua(c,e,void 0,void 0,void 0,!0),description:`Bulk ${c} access to ${e}`,path:ba(e,!0),method:c})}return o}async function Pu(n,r,t,o,e,a){let c=r.claims;if(!c)return a.warn("[Authorization] Claims table not found in schema"),{total:0,created:0,existing:0,claims:[]};let i=[];for(let b of o){if(e.skipTables.includes(b.table_name))continue;let $=ah(b,e,t);i.push(...$)}let s=i.filter((b,$,A)=>$===A.findIndex((_)=>_.action===b.action)),l=0,f=0,u=[];for(let b of s)try{if((await n.select().from(c).where(th(c.action,b.action)).limit(1)).length===0)await n.insert(c).values(b),l++,u.push(b.action),a.debug(`[Authorization] Created claim: ${b.action}`);else f++}catch($){a.error(`[Authorization] Failed to create claim: ${b.action}`,$)}return a.info(`[Authorization] Claims seeded: ${l} created, ${f} existing, ${s.length} total`),{total:s.length,created:l,existing:f,claims:u}}var oh,eh;var Gu=d(()=>{oh=["GET","POST","PUT","PATCH","DELETE"],eh=["POST","PUT","DELETE"]});var{password:ch}=globalThis.Bun;import{eq as gl}from"drizzle-orm";async function Ou(n,r,t,o){if(!t.godminEmail||!t.godminPassword)return o.warn("[Authorization] Godmin email or password not configured, skipping godmin setup"),{success:!1};let{roles:e,users:a,userRoles:c}=r;if(!e||!a||!c)return o.error("[Authorization] Required tables not found for godmin setup"),{success:!1};try{let i,s=await n.select().from(e).where(gl(e.name,_l)).limit(1);if(s.length===0){let[$]=await n.insert(e).values({name:_l,description:"God mode administrator - bypasses all authorization checks"}).returning();i=$.id,o.info(`[Authorization] Created godmin role: ${i}`)}else i=s[0].id,o.debug(`[Authorization] Godmin role already exists: ${i}`);let l,f=await n.select().from(a).where(gl(a.email,t.godminEmail)).limit(1);if(f.length===0){let $=await ch.hash(t.godminPassword,{algorithm:"bcrypt",cost:10}),[A]=await n.insert(a).values({email:t.godminEmail,password:$,verifiedAt:new Date,isActive:!0}).returning();l=A.id,o.info(`[Authorization] Created godmin user: ${l}`)}else l=f[0].id,o.debug(`[Authorization] Godmin user already exists: ${l}`);if(!(await n.select().from(c).where(gl(c.userId,l)).limit(1)).some(($)=>$.roleId===i))await n.insert(c).values({userId:l,roleId:i}),o.info(`[Authorization] Assigned godmin role to user: ${l}`);return{success:!0,userId:l,roleId:i}}catch(i){return o.error("[Authorization] Failed to setup godmin",i),{success:!1}}}function Nu(n){return n===_l}var _l="godmin";var ml=()=>{};import{eq as wl,inArray as ih}from"drizzle-orm";function sh(n){return n.startsWith(ju)}function lh(n){return{field:n.slice(ju.length)}}function qu(n){if(!n)return{};let r=new URLSearchParams(n),t={};for(let[o,e]of r.entries())if(sh(e))t[o]=lh(e);else t[o]=e;return t}function Fu(n,r,t){let o={};for(let[e,a]of Object.entries(n))if(typeof a==="object"&&"field"in a){if(!r){t.warn(`[Authorization] Cannot resolve self:${a.field} - userData not provided`);continue}let c=a.field,i=c.replace(/_([a-z])/g,(l,f)=>f.toUpperCase()),s;if(c in r)s=r[c];else if(i in r)s=r[i];else{t.warn(`[Authorization] Cannot resolve self:${c} - field not found in userData`);continue}o[e]=s,t.debug(`[Authorization] Resolved self:${c} -> ${s}`)}else o[e]=a;return o}function hl(n,r,t,o){let e=[n.toLowerCase(),r];if(o)e.push("with",o);else if(t)e.push(t);return e.join(".")}function $l(n,r){if(n===r)return!0;let t=n.split("."),o=r.split(".");if(t.length>o.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==o[e])return!1;return!0}async function Al(n){let{userId:r,method:t,entity:o,requestedFields:e,requestedRelations:a,db:c,schemaTables:i,logger:s,userData:l}=n,f=i.roles,u=i.userRoles,b=i.roleClaims,$=i.claims;if(!f||!u||!b||!$)return s.error("[Authorization] Required tables not found"),{authorized:!1,reason:"Authorization tables not configured"};try{let A=u,_=f,m=await c.select({roleId:A.roleId,roleName:_.name}).from(u).innerJoin(f,wl(A.roleId,_.id)).where(wl(A.userId,r));if(m.length===0)return{authorized:!1,reason:"User has no roles assigned"};if(m.some((C)=>Nu(C.roleName)))return s.debug(`[Authorization] User ${r} has godmin role, bypassing checks`),{authorized:!0};let R=m.map((C)=>C.roleId),M=b,S=$,x=await c.select({claimAction:S.action,scope:M.scope}).from(b).innerJoin($,wl(M.claimId,S.id)).where(ih(M.roleId,R));if(x.length===0)return{authorized:!1,reason:"User roles have no claims assigned"};let D=hl(t,o);if(!x.some((C)=>$l(C.claimAction,D)))return{authorized:!1,reason:`No access to ${t} ${o}`};let B=[],w=[],g={},Y=!1;for(let C of x)if(C.claimAction===D){Y=!0;let j=qu(C.scope),L=Fu(j,l,s);Object.assign(g,L)}if(Y)return{authorized:!0,scopeFilters:Object.keys(g).length>0?g:void 0};if(e)for(let C of e){let Q=hl(t,o,C);if(x.some((L)=>$l(L.claimAction,Q)))B.push(C)}if(a)for(let C of a){let Q=hl(t,o,void 0,C);if(x.some((L)=>$l(L.claimAction,Q)))w.push(C)}for(let C of x){let Q=qu(C.scope),j=Fu(Q,l,s);Object.assign(g,j)}if(!(B.length>0||w.length>0)&&(e?.length||a?.length))return{authorized:!1,reason:"No access to requested fields or relations"};return{authorized:!0,allowedFields:B.length>0?B:void 0,allowedRelations:w.length>0?w:void 0,scopeFilters:Object.keys(g).length>0?g:void 0}}catch(A){return s.error("[Authorization] Check failed",A),{authorized:!1,reason:"Authorization check failed"}}}function Jc(n,r){if(!r||r.length===0)return n;let o=[...new Set([...["id"],...r])],e=(a)=>{let c={};for(let i of o)if(i in a)c[i]=a[i];return c};if(Array.isArray(n))return n.map(e);return e(n)}function pu(n,r){if(!r)return n;let t=(o)=>{let e={...o};for(let a of Object.keys(e))if(typeof e[a]==="object"&&e[a]!==null&&!r.includes(a))delete e[a];return e};if(Array.isArray(n))return n.map(t);return t(n)}var ju="self:";var Ku=d(()=>{ml()});var Tu;var vu=d(()=>{Tu={enabled:!1,autoSeedClaims:!0,skipTables:["audit_logs"],skipColumns:["id","created_at","updated_at","is_active","password","version"],excludedPaths:["/health","/swagger"],publicPaths:["/auth/login","/auth/register"]}});var Rl=d(()=>{Gu();ml();Ku();vu()});function fh(n){let r=n.match(/^(\d+)(s|m|h|d)$/);if(!r||!r[1]||!r[2])return 300;let t=Number.parseInt(r[1],10);switch(r[2]){case"s":return t;case"m":return t*60;case"h":return t*3600;case"d":return t*86400;default:return 300}}function dh(){let n=new Uint8Array(24);return crypto.getRandomValues(n),Array.from(n).map((r)=>r.toString(16).padStart(2,"0")).join("")}function Iu(n){let r=new Bun.CryptoHasher("sha256");return r.update(n),r.digest("hex")}function uh(n,r){if(n.length!==r.length){let c=new Uint8Array(32);return crypto.getRandomValues(c),!1}let t=new TextEncoder,o=t.encode(n),e=t.encode(r),a=0;for(let c=0;c<o.length;c++)a|=(o[c]??0)^(e[c]??0);return a===0}function Xo(n,r){let t=r-n+1,o=Math.ceil(Math.log2(t)/8)||1,e=256**o,a=e-e%t,c,i=new Uint8Array(o);do crypto.getRandomValues(i),c=i.reduce((s,l,f)=>s+l*256**f,0);while(c>=a);return n+c%t}function Zu(n){let r=kl[n],{min:t,max:o}=r.mathRange,e=["+","-","\xD7"],a=e[Xo(0,e.length-1)],c=Xo(t,o),i=Xo(t,o),s;switch(a){case"+":s=c+i;break;case"-":if(c<i)[c,i]=[i,c];s=c-i;break;case"\xD7":c=Xo(1,12),i=Xo(1,12),s=c*i;break;default:s=c+i}return{question:`${c} ${a} ${i} = ?`,answer:s.toString()}}function yu(n){let r=kl[n],t="";for(let o=0;o<r.textLength;o++)t+="ABCDEFGHJKLMNPQRSTUVWXYZ23456789".charAt(Xo(0,31));return{question:t,answer:t}}function bh(n){let r=yu(n),t=200,o=60,e=gh(r.answer,200,60),a=`data:image/svg+xml;base64,${Buffer.from(e).toString("base64")}`;return{question:"Enter the text shown in the image",answer:r.answer,imageData:a}}function sn(){let n=new Uint32Array(1);return crypto.getRandomValues(n),(n[0]??0)/4294967295}function gh(n,r,t){let o=240+sn()*15,e=240+sn()*15,a=240+sn()*15,c=`rgb(${o}, ${e}, ${a})`,i="";for(let A=0;A<12;A++){let _=sn()*r,m=sn()*t,E=sn()*r,R=sn()*t,M=sn()*100+100,S=sn()*100+100,x=sn()*100+100,D=1+sn()*2;i+=`<line x1="${_}" y1="${m}" x2="${E}" y2="${R}" stroke="rgb(${M},${S},${x})" stroke-width="${D}"/>`}let s="";for(let A=0;A<4;A++){let _=sn()*r,m=sn()*t,E=sn()*r,R=sn()*t,M=sn()*r,S=sn()*t,x=sn()*r,D=sn()*t,k=sn()*80+80,B=sn()*80+80,w=sn()*80+80;s+=`<path d="M${_},${m} C${E},${R} ${M},${S} ${x},${D}" stroke="rgb(${k},${B},${w})" stroke-width="2" fill="none"/>`}let l="";for(let A=0;A<80;A++){let _=sn()*r,m=sn()*t,E=sn()*150+50,R=sn()*150+50,M=sn()*150+50,S=sn()*3+1;l+=`<circle cx="${_}" cy="${m}" r="${S}" fill="rgb(${E},${R},${M})"/>`}let f="",u=r/(n.length+2),b=u;for(let A=0;A<n.length;A++){let _=b+A*u+(sn()-0.5)*15,m=t/2+8+(sn()-0.5)*12,E=(sn()-0.5)*40,R=22+sn()*10,M=sn()*80,S=sn()*80,x=sn()*80,D=(sn()-0.5)*15,k=0.9+sn()*0.3;f+=`<text x="${_}" y="${m}" font-family="Arial, Helvetica, sans-serif" font-size="${R}" font-weight="bold" fill="rgb(${M},${S},${x})" transform="rotate(${E}, ${_}, ${m}) skewX(${D}) scale(1, ${k})" style="font-style: ${sn()>0.5?"italic":"normal"}">${n[A]}</text>`}let $="";for(let A=0;A<3;A++){let _=10+sn()*(t-20),m=sn()*60+60,E=sn()*60+60,R=sn()*60+60;$+=`<line x1="0" y1="${_}" x2="${r}" y2="${_+(sn()-0.5)*20}" stroke="rgb(${m},${E},${R})" stroke-width="1.5"/>`}return`<svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${t}" viewBox="0 0 ${r} ${t}">
4
+ `).slice(1,4);for(let $ of b)r(` ${e}${$.trim()}${o}`)}}}getConsoleMethod(n){switch(n){case"debug":return console.debug.bind(console);case"info":return console.info.bind(console);case"warn":return console.warn.bind(console);case"error":case"fatal":return console.error.bind(console);default:return console.log.bind(console)}}}class lc{name="database";db;table;enabled;constructor(n){this.db=n.db,this.table=n.table,this.enabled=n.enabled??!0}setDb(n){this.db=n}setTable(n){this.table=n}setEnabled(n){this.enabled=n}async write(n){if(!this.enabled||!this.db||!this.table)return;try{await this.db.insert(this.table).values({id:n.id,entityId:n.entityId,entityName:n.entityName,operationType:n.operation,userId:n.userId,ipAddress:n.ipAddress,userAgent:n.userAgent,summary:n.summary,oldValues:n.oldValues,newValues:n.newValues,path:n.path,query:n.query})}catch(r){console.error("Audit log write failed:",r)}}}class fc{name="console-audit";enabled;constructor(n={}){this.enabled=n.enabled??!0}write(n){if(!this.enabled)return;let r="\x1B[35m",t=ks,o=Es;console.log(`${o}${n.timestamp}${t} ${r}AUDIT${t} [${n.operation}] ${n.entityName}${n.entityId?`:${n.entityId}`:""} ${o}by ${n.userId||"anonymous"}${t}`)}}var Us=d(()=>{Ss();ic()});import{randomUUID as H2}from"crypto";class Jr{config;transports;auditTransports;context;correlationId;static instance=null;constructor(n={},r={},t){this.config={...z2,...n},this.context=r,this.correlationId=t,this.transports=[new sc({colorize:this.config.colorize,prettyPrint:this.config.prettyPrint})],this.auditTransports=[new fc({enabled:this.config.prettyPrint})]}static getInstance(n){if(!Jr.instance)Jr.instance=new Jr(n);return Jr.instance}static resetInstance(){Jr.instance=null}child(n,r){let t=new Jr(this.config,Ds(this.context,n)||{},r||this.correlationId);return t.transports=this.transports,t.auditTransports=this.auditTransports,t}withCorrelationId(n){return this.child({},n)}addTransport(n){this.transports.push(n)}addAuditTransport(n){this.auditTransports.push(n)}setLevel(n){this.config.level=n}setAuditEnabled(n){this.config.auditEnabled=n}isAuditEnabled(){return this.config.auditEnabled}shouldLog(n){return Rs[n]>=Rs[this.config.level]}createEntry(n,r,t,o,e){let a={timestamp:new Date().toISOString(),level:n,message:r,service:this.config.service,correlationId:this.correlationId},c=Ds(this.context,t);if(c&&Object.keys(c).length>0)a.context=oa(c,this.config.redactKeys);if(this.config.includeCallerInfo)a.caller=Cd();if(o)a.error=Ms(o);if(e!==void 0)a.duration=performance.now()-e;return a}log(n,r,t,o,e){if(!this.shouldLog(n))return;let a=this.createEntry(n,r,t,o,e);for(let c of this.transports)try{c.log(a)}catch(i){console.error(`Logger transport "${c.name}" failed:`,i)}}debug(n,r){this.log("debug",n,r)}info(n,r){this.log("info",n,r)}warn(n,r){this.log("warn",n,r)}error(n,r,t){this.log("error",n,t,r)}fatal(n,r,t){this.log("fatal",n,t,r)}time(n){let r=performance.now();return()=>{this.log("debug",`${n} completed`,void 0,void 0,r)}}async timeAsync(n,r,t){let o=performance.now();try{let e=await r();return this.log("debug",`${n} completed`,t,void 0,o),e}catch(e){throw this.log("error",`${n} failed`,t,e,o),e}}request(n){let r=n.statusCode>=500?"error":n.statusCode>=400?"warn":"info";this.log(r,`${n.method} ${n.path} ${n.statusCode}`,{method:n.method,path:n.path,statusCode:n.statusCode,durationMs:n.duration,correlationId:n.correlationId,userId:n.userId,ip:n.ip,userAgent:n.userAgent})}db(n){let r=n.error?"error":"debug";this.log(r,`DB ${n.operation} on ${n.table}`,{operation:n.operation,table:n.table,durationMs:n.duration,rowCount:n.rowCount},n.error)}async flush(){for(let n of this.transports)if(n.flush)await n.flush()}async audit(n){let r={id:H2(),timestamp:new Date().toISOString(),entityName:n.entityName,entityId:n.entityId??null,operation:n.operation,userId:n.userId??null,summary:n.summary||`${n.operation} on ${n.entityName}`,oldValues:n.oldValues||{},newValues:n.newValues||{},ipAddress:n.ipAddress||"unknown",userAgent:n.userAgent||"unknown",path:n.path||"",query:n.query||"",correlationId:this.correlationId};for(let t of this.auditTransports)try{await t.write(r)}catch(o){console.error(`Audit transport "${t.name}" failed:`,o)}}auditOnly(n){this.audit(n)}async trace(n){let r=n.log!==!1,t=n.writeAudit===!0||n.writeAudit!==!1&&this.config.auditEnabled&&n.audit;if(r)this.log(n.level||"info",n.message,n.context,n.error);if(t&&n.audit)await this.audit(n.audit)}traceSync(n){let r=n.log!==!1,t=n.writeAudit===!0||n.writeAudit!==!1&&this.config.auditEnabled&&n.audit;if(r)this.log(n.level||"info",n.message,n.context,n.error);if(t&&n.audit)this.audit(n.audit)}}var z2,U2;var Bs=d(()=>{Us();Ss();ic();z2={level:"info",service:"nucleus",environment:"development",redactKeys:[],colorize:!0,prettyPrint:!0,includeCallerInfo:!0,asyncBufferSize:100,flushIntervalMs:1000,auditEnabled:!1};U2=Jr.getInstance()});var Nd=m2((rS,Od)=>{var Pd=12,F2=0,Ys=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,7,7,7,7,7,7,7,7,7,7,7,7,8,7,7,10,9,9,9,11,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,24,36,48,60,72,84,96,0,12,12,12,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,24,24,24,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0,0,0,0,48,48,48,0,0,0,0,0,0,0,0,0,0,48,48,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,127,63,63,63,0,31,15,15,15,7,7,7];function j2(n){var r=n.indexOf("%");if(r===-1)return n;var t=n.length,o="",e=0,a=0,c=r,i=Pd;while(r>-1&&r<t){var s=Gd(n[r+1],4),l=Gd(n[r+2],0),f=s|l,u=Ys[f];if(i=Ys[256+i+u],a=a<<6|f&Ys[364+u],i===Pd)o+=n.slice(e,c),o+=a<=65535?String.fromCharCode(a):String.fromCharCode(55232+(a>>10),56320+(a&1023)),a=0,e=r+3,r=c=n.indexOf("%",e);else if(i===F2)return null;else{if(r+=3,r<t&&n.charCodeAt(r)===37)continue;return null}}return o+n.slice(e)}var p2={"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};function Gd(n,r){var t=p2[n];return t===void 0?255:t<<r}Od.exports=j2});var jd=(n)=>{return n?.trim().toLowerCase()||"unknown"},Qs=(n,r)=>{return n[r.toLowerCase()]??n[r]};import K2 from"crypto";var pd=(n)=>{let r=JSON.stringify({userAgent:jd(n.userAgent),ipAddress:n.ipAddress,extra:n.extra??{}});return{hash:K2.createHash("sha256").update(r).digest("base64url"),components:n}};var Ps=()=>{};var Kd=({savedFingerprint:n,requestIp:r,headers:t})=>{let o=Qs(t,"user-agent"),e=Qs(t,"x-forwarded-for")??r??void 0,a=pd({userAgent:o,ipAddress:e}),c=[{field:"userAgent",saved:n.components.userAgent,received:o},{field:"ipAddress",saved:n.components.ipAddress,received:e}].find(({saved:i,received:s})=>i??(s??"")!=="");if(c)return{isValid:!1,reason:`${c.field} mismatch`,currentFingerprint:a};return{isValid:!0,currentFingerprint:a}};var Gs=d(()=>{Ps()});var Td=d(()=>{Ps();Gs()});import vd from"crypto";var Os=(n)=>{return(Buffer.isBuffer(n)?n.toString("base64"):Buffer.from(n).toString("base64")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")},Id=(n)=>{let r="=".repeat((4-n.length%4)%4),t=n.replace(/-/g,"+").replace(/_/g,"/")+r;return Buffer.from(t,"base64").toString("utf-8")},Ns=(n,r,t)=>{let o=t.replace("HS","sha"),e=vd.createHmac(o,r);return e.update(n),Os(e.digest())},Zd=(n,r,t,o)=>{let e=Ns(n,t,o);return vd.timingSafeEqual(Buffer.from(r),Buffer.from(e))},yd=(n)=>{return Os(JSON.stringify(n))},nu=(n)=>{return Os(JSON.stringify(n))},bc=(n)=>{try{return JSON.parse(Id(n))}catch{return null}},gc=(n)=>{try{return JSON.parse(Id(n))}catch{return null}};var _c=()=>{};var T2=(n)=>{let r=n.split(".");if(r.length!==3)return null;let[t,o,e]=r;if(!t||!o||!e)return null;let a=bc(t),c=gc(o);if(!a||!c)return null;return{header:a,payload:c,signature:e}};var ru=d(()=>{_c()});var sa=(n,r,t="HS256")=>{let o={alg:t,typ:"JWT"},e=Math.floor(Date.now()/1000),a={sub:n.subject,iat:e,exp:e+n.expiresInSeconds,iss:n.issuer,aud:n.audience,jti:n.jwtId,sessionId:n.sessionId,...n.customClaims},c=yd(o),i=nu(a),s=`${c}.${i}`,l=Ns(s,r,t);return`${s}.${l}`};var tu=d(()=>{_c()});var Wo=(n,r)=>{let t=n.split(".");if(t.length!==3)return{valid:!1,error:"Invalid token format: expected 3 parts"};let[o,e,a]=t;if(!o||!e||!a)return{valid:!1,error:"Invalid token format: missing parts"};let c=bc(o);if(!c)return{valid:!1,error:"Invalid header: failed to decode"};if(c.typ!=="JWT")return{valid:!1,error:"Invalid header: typ must be JWT"};if(!["HS256","HS384","HS512"].includes(c.alg))return{valid:!1,error:`Unsupported algorithm: ${c.alg}`};let s=`${o}.${e}`;if(!Zd(s,a,r,c.alg))return{valid:!1,error:"Invalid signature"};let f=gc(e);if(!f)return{valid:!1,error:"Invalid payload: failed to decode"};let u=Math.floor(Date.now()/1000);if(f.exp&&f.exp<u)return{valid:!1,error:"Token expired"};if(f.iat&&f.iat>u+60)return{valid:!1,error:"Token issued in the future"};return{valid:!0,payload:f}};var ou=d(()=>{_c()});var eu={};no(eu,{verifyJWT:()=>Wo,signJWT:()=>sa,decodeJWT:()=>T2});var Yo=d(()=>{ru();tu();ou()});var au=()=>{};var cu=d(()=>{au()});var iu="127.0.0.1",su="3500",lu=4,Xt="statestore-redis",qs="pubsub-rabbitmq",Fs="secretstore",la="configstore-redis",fu="DAPR_HOST",du="DAPR_HTTP_PORT",uu="DAPR_HTTP_ENDPOINT",bu="DAPR_GRPC_ENDPOINT",gu="DAPR_API_TOKEN",_u=30000,mu=1e4,wu=5000,Vt,mc,pr;var Et=d(()=>{Vt={CONNECTED:"connected",DISCONNECTED:"disconnected",CONNECTING:"connecting",ERROR:"error"},mc={HEALTHY:"healthy",UNHEALTHY:"unhealthy"},pr={CONNECTION_ERROR:"DAPR_CONNECTION_ERROR",TIMEOUT_ERROR:"DAPR_TIMEOUT_ERROR",STATE_ERROR:"DAPR_STATE_ERROR",PUBSUB_ERROR:"DAPR_PUBSUB_ERROR",BINDING_ERROR:"DAPR_BINDING_ERROR",SECRET_ERROR:"DAPR_SECRET_ERROR",CONFIG_ERROR:"DAPR_CONFIG_ERROR",INVOKE_ERROR:"DAPR_INVOKE_ERROR",CRYPTO_ERROR:"DAPR_CRYPTO_ERROR",LOCK_ERROR:"DAPR_LOCK_ERROR",WORKFLOW_ERROR:"DAPR_WORKFLOW_ERROR",VALIDATION_ERROR:"DAPR_VALIDATION_ERROR"}});var Kr,ue=(n,r)=>new Kr(pr.CONNECTION_ERROR,n,r),hu=(n,r)=>new Kr(pr.TIMEOUT_ERROR,n,r),Jo=(n,r)=>new Kr(pr.STATE_ERROR,n,r),js=(n,r)=>new Kr(pr.PUBSUB_ERROR,n,r),$u=(n,r)=>new Kr(pr.BINDING_ERROR,n,r),ps=(n,r)=>new Kr(pr.SECRET_ERROR,n,r),wc=(n,r)=>new Kr(pr.CONFIG_ERROR,n,r),Au=(n,r)=>new Kr(pr.INVOKE_ERROR,n,r),Ks=(n,r)=>new Kr(pr.CRYPTO_ERROR,n,r),Ts=(n,r)=>new Kr(pr.LOCK_ERROR,n,r),oo=(n,r)=>new Kr(pr.WORKFLOW_ERROR,n,r),wn=async(n,r)=>{try{return await n()}catch(t){let o=t instanceof Error?t.message:String(t);throw r(o,t)}};var Lr=d(()=>{Et();Kr=class Kr extends Error{code;details;constructor(n,r,t){super(r);this.name="DaprManagerError",this.code=n,this.details=t}toJSON(){return{code:this.code,message:this.message,details:this.details}}}});var Ru,hc=(n="info")=>{let r=Ru[n],t=(o)=>(e,...a)=>{if(Ru[o]<r)return;let c=new Date().toISOString(),i=a.length>0?` ${JSON.stringify(a)}`:"";console[o](`[${c}] [Dapr] [${o.toUpperCase()}] ${e}${i}`)};return{debug:t("debug"),info:t("info"),warn:t("warn"),error:t("error")}},fa=async(n,r,t="Operation timed out")=>{return Promise.race([n(),new Promise((o,e)=>{setTimeout(()=>{e(hu(t))},r)})])},hn=(n,r,t)=>{let o=r.filter((e)=>n[e]===void 0);if(o.length>0)throw Error(`Missing required ${t} parameters: ${o.join(", ")}`)};var Tr=d(()=>{Et();Lr();Ru={debug:0,info:1,warn:2,error:3}});class $c{client;logger;constructor(n,r){this.client=n,this.logger=r}async invoke(n,r,t,o={}){return hn({name:n,operation:r},["name","operation"],"binding invoke"),wn(async()=>{this.logger.debug("Invoking binding",{name:n,operation:r});let a=await(await this.client()).binding.send(n,r,t,o.metadata);return this.logger.debug("Binding invoked successfully",{name:n,operation:r}),a},(e,a)=>$u(`Failed to invoke binding ${n}: ${e}`,a))}}var vs=d(()=>{Lr();Tr()});class Ac{client;logger;constructor(n,r){this.client=n,this.logger=r}async get(n,r=la){if(hn({keys:n,storeName:r},["keys","storeName"],"config get"),n.length===0)return{};return wn(async()=>{this.logger.debug("Getting configuration",{keys:n,storeName:r});let o=await(await this.client()).configuration.get(r,n);return this.logger.debug("Configuration retrieved",{keys:n,storeName:r,itemCount:Object.keys(o.items||{}).length}),o.items||{}},(t,o)=>wc(`Failed to get configuration: ${t}`,o))}async subscribeWithKeys(n,r,t=la){if(hn({keys:n,callback:r,storeName:t},["keys","callback","storeName"],"config subscribeWithKeys"),n.length===0)throw wc("At least one key must be provided for subscription");return wn(async()=>{this.logger.debug("Subscribing to configuration updates",{keys:n,storeName:t});let e=await(await this.client()).configuration.subscribeWithKeys(t,n,async(a)=>{try{this.logger.debug("Received configuration update",{storeName:t,updatedKeys:Object.keys(a.items||{})}),await r(a)}catch(c){this.logger.error("Error in configuration subscription callback",c)}});return this.logger.debug("Configuration subscription established",{keys:n,storeName:t}),{stop:()=>{this.logger.debug("Stopping configuration subscription",{keys:n,storeName:t}),e.stop()}}},(o,e)=>wc(`Failed to subscribe to configuration updates: ${o}`,e))}async getValue(n,r=la){return(await this.get([n],r))[n]?.value}async getValues(n,r=la){let t=await this.get(n,r),o={};for(let e in t)if(t[e]?.value!==void 0)o[e]=t[e].value;return o}}var Is=d(()=>{Et();Lr();Tr()});class Rc{client;logger;constructor(n,r){this.client=n,this.logger=r}async encrypt(n,r){return hn({data:n,componentName:r.componentName},["data","componentName"],"crypto encrypt"),wn(async()=>{this.logger.debug("Encrypting data",{componentName:r.componentName,keyName:r.keyName,keyWrapAlgorithm:r.keyWrapAlgorithm});let t=await this.client(),o=typeof n==="string"?Buffer.from(n):n,e={componentName:r.componentName};if(r.keyName)e.keyName=r.keyName;if(r.keyWrapAlgorithm)e.keyWrapAlgorithm=r.keyWrapAlgorithm;let a=await t.crypto.encrypt(o,e);return this.logger.debug("Data encrypted successfully",{componentName:r.componentName,inputSize:o.length,outputSize:a.length}),a},(t,o)=>Ks(`Failed to encrypt data: ${t}`,o))}async decrypt(n,r){return hn({data:n,componentName:r.componentName},["data","componentName"],"crypto decrypt"),wn(async()=>{this.logger.debug("Decrypting data",{componentName:r.componentName});let t=await this.client(),o=typeof n==="string"?Buffer.from(n):n,e={componentName:r.componentName};if(r.keyName)e.keyName=r.keyName;if(r.keyWrapAlgorithm)e.keyWrapAlgorithm=r.keyWrapAlgorithm;let a=await t.crypto.decrypt(o,e);return this.logger.debug("Data decrypted successfully",{componentName:r.componentName,inputSize:o.length,outputSize:a.length}),a},(t,o)=>Ks(`Failed to decrypt data: ${t}`,o))}async encryptString(n,r){return(await this.encrypt(n,r)).toString("base64")}async decryptString(n,r){let t=Buffer.from(n,"base64");return(await this.decrypt(t,r)).toString("utf-8")}}var Zs=d(()=>{Lr();Tr()});import{HttpMethod as da}from"@dapr/dapr";class kc{client;logger;constructor(n,r){this.client=n,this.logger=r}async invoke(n,r,t=da.POST,o,e={}){hn({appId:n,methodName:r,httpMethod:t},["appId","methodName","httpMethod"],"invoke service");let a=e.timeout||_u;return wn(async()=>{this.logger.debug("Invoking service",{appId:n,methodName:r,httpMethod:t,hasData:o!==void 0});let c=r;if(e.queryParams&&Object.keys(e.queryParams).length>0){let l=Object.entries(e.queryParams).map(([f,u])=>`${encodeURIComponent(f)}=${encodeURIComponent(u)}`).join("&");c=`${r}?${l}`}let i=await this.client(),s=await fa(()=>i.invoker.invoke(n,c,t,o,e.headers),a,`Service invocation timed out after ${a}ms`);if(this.logger.debug("Service invoked successfully",{appId:n,methodName:r,httpMethod:t,status:s?.status}),!s)return;if("data"in s)return s.data;return s},(c,i)=>Au(`Failed to invoke service ${n}.${r}: ${c}`,i))}async get(n,r,t={}){return this.invoke(n,r,da.GET,void 0,t)}async post(n,r,t,o={}){return this.invoke(n,r,da.POST,t,o)}async put(n,r,t,o={}){return this.invoke(n,r,da.PUT,t,o)}async delete(n,r,t={}){return this.invoke(n,r,da.DELETE,void 0,t)}}var ys=d(()=>{Et();Lr();Tr()});class Ec{client;logger;constructor(n,r){this.client=n,this.logger=r}async lock(n,r,t,o){return hn({storeName:n,resourceId:r,lockOwner:t,expiryInSeconds:o.expiryInSeconds},["storeName","resourceId","lockOwner","expiryInSeconds"],"lock"),wn(async()=>{this.logger.debug("Acquiring lock",{storeName:n,resourceId:r,lockOwner:t});let a=await(await this.client()).lock.lock(n,r,t,o.expiryInSeconds);return this.logger.debug("Lock acquisition result",{storeName:n,resourceId:r,lockOwner:t,success:a.success}),{success:a.success}},(e,a)=>Ts(`Failed to acquire lock for resource ${r}: ${e}`,a))}async unlock(n,r,t){return hn({storeName:n,resourceId:r,lockOwner:t},["storeName","resourceId","lockOwner"],"unlock"),wn(async()=>{this.logger.debug("Releasing lock",{storeName:n,resourceId:r,lockOwner:t});let e=await(await this.client()).lock.unlock(n,r,t);return this.logger.debug("Lock release result",{storeName:n,resourceId:r,lockOwner:t,status:this.getLockStatusName(e.status)}),{status:e.status}},(o,e)=>Ts(`Failed to release lock for resource ${r}: ${o}`,e))}getLockStatusName(n){switch(n){case 0:return"Success";case 1:return"LockDoesNotExist";case 2:return"LockBelongsToOthers";default:return"InternalError"}}}var nl=d(()=>{Lr();Tr()});class Sc{client;logger;constructor(n,r){this.client=n,this.logger=r}async publish(n,r,t={},o=qs){return hn({topic:n,data:r,pubsubName:o},["topic","data","pubsubName"],"pubsub publish"),wn(async()=>{this.logger.debug("Publishing message to topic",{topic:n,pubsubName:o}),await(await this.client()).pubsub.publish(o,n,r,{metadata:t.metadata,contentType:t.contentType}),this.logger.debug("Message published successfully",{topic:n,pubsubName:o})},(e,a)=>js(`Failed to publish message to topic ${n}: ${e}`,a))}async publishBulk(n,r,t=qs){if(hn({topic:n,messages:r,pubsubName:t},["topic","messages","pubsubName"],"pubsub publishBulk"),r.length===0)return{failedEntries:[]};return wn(async()=>{this.logger.debug("Publishing bulk messages to topic",{topic:n,pubsubName:t,messageCount:r.length});let o=await this.client(),e=r.map((i)=>{if(typeof i==="object"&&"event"in i)return{entryID:i.entryId,event:i.event,contentType:i.contentType,metadata:i.metadata};return{event:i}}),a=await o.pubsub.publishBulk(t,n,e),c=a.failedMessages?.length||0;if(c>0)this.logger.warn("Some messages failed to publish",{topic:n,pubsubName:t,failedCount:c,totalCount:r.length});else this.logger.debug("All bulk messages published successfully",{topic:n,pubsubName:t,messageCount:r.length});return{failedEntries:(a.failedMessages||[]).map((i)=>({entryId:i.message.entryID||"",error:i.error?.message||"Unknown error"}))}},(o,e)=>js(`Failed to publish bulk messages to topic ${n}: ${o}`,e))}createBulkPublishMessage(n,r,t,o){return{entryId:r,event:n,contentType:t,metadata:o}}}var rl=d(()=>{Et();Lr();Tr()});class Mc{client;logger;constructor(n,r){this.client=n,this.logger=r}async get(n,r={},t=Fs){return hn({key:n,storeName:t},["key","storeName"],"secret get"),wn(async()=>{this.logger.debug("Getting secret",{key:n,storeName:t});let o=await this.client(),e=r.metadata?JSON.stringify(r.metadata):void 0,a=await o.secret.get(t,n,e);return this.logger.debug("Secret retrieved",{key:n,storeName:t}),a},(o,e)=>ps(`Failed to get secret ${n}: ${o}`,e))}async getBulk(n={},r=Fs){return hn({storeName:r},["storeName"],"secret getBulk"),wn(async()=>{this.logger.debug("Getting all secrets",{storeName:r});let o=await(await this.client()).secret.getBulk(r);return this.logger.debug("All secrets retrieved",{storeName:r,secretCount:Object.keys(o).length}),o},(t,o)=>ps(`Failed to get all secrets: ${t}`,o))}}var tl=d(()=>{Et();Lr();Tr()});class Dc{client;logger;constructor(n,r){this.client=n,this.logger=r}async save(n,r={},t=Xt){if(hn({stateItems:n,storeName:t},["stateItems","storeName"],"state save"),n.length===0)return;return wn(async()=>{this.logger.debug("Saving state items",{count:n.length,storeName:t}),await(await this.client()).state.save(t,n,r),this.logger.debug("State items saved successfully",{count:n.length,storeName:t})},(o,e)=>Jo(`Failed to save state items: ${o}`,e))}async get(n,r=Xt){return hn({key:n,storeName:r},["key","storeName"],"state get"),wn(async()=>{this.logger.debug("Getting state item",{key:n,storeName:r});let o=await(await this.client()).state.get(r,n);if(this.logger.debug("State item retrieved",{key:n,storeName:r,found:o!==void 0}),o===void 0||o===null)return;if(typeof o==="string")try{return JSON.parse(o)}catch{return o}if(typeof o==="object")return o;return o},(t,o)=>Jo(`Failed to get state item ${n}: ${t}`,o))}async getBulk(n,r=Xt){if(hn({keys:n,storeName:r},["keys","storeName"],"state getBulk"),n.length===0)return{};return wn(async()=>{this.logger.debug("Getting bulk state items",{count:n.length,storeName:r});let o=await(await this.client()).state.getBulk(r,n),e={};return o.forEach((a)=>{if(a.data!==void 0)e[a.key]=a.data}),this.logger.debug("Bulk state items retrieved",{count:n.length,found:Object.keys(e).length,storeName:r}),e},(t,o)=>Jo(`Failed to get bulk state items: ${t}`,o))}async delete(n,r,t,o=Xt){return hn({key:n,storeName:o},["key","storeName"],"state delete"),wn(async()=>{this.logger.debug("Deleting state item",{key:n,storeName:o});let e=await this.client(),a={};if(r)a.etag=r;if(t)a.metadata=t;await e.state.delete(o,n,a),this.logger.debug("State item deleted",{key:n,storeName:o})},(e,a)=>Jo(`Failed to delete state item ${n}: ${e}`,a))}async transaction(n,r=Xt){if(hn({operations:n,storeName:r},["operations","storeName"],"state transaction"),n.length===0)return;return wn(async()=>{this.logger.debug("Executing state transaction",{operationCount:n.length,storeName:r});let t=await this.client(),o=n.map((e)=>({operation:e.operation,request:{key:e.request.key,value:e.request.value,etag:e.request.etag?{value:e.request.etag}:void 0,metadata:e.request.metadata}}));await t.state.transaction(r,o),this.logger.debug("State transaction executed successfully",{operationCount:n.length,storeName:r})},(t,o)=>Jo(`Failed to execute state transaction: ${t}`,o))}async query(n,r=Xt){return hn({query:n,storeName:r},["query","storeName"],"state query"),wn(async()=>{this.logger.debug("Querying state store",{storeName:r});let o=await(await this.client()).state.query(r,n);return this.logger.debug("State query executed",{storeName:r,resultCount:o.results?.length||0}),(o.results||[]).map((e)=>e.data)},(t,o)=>Jo(`Failed to query state store: ${t}`,o))}async saveItem(n,r,t={},o=Xt){let e={key:n,value:r};return this.save([e],t,o)}async upsert(n,r,t={},o=Xt){return this.saveItem(n,r,t,o)}}var ol=d(()=>{Et();Lr();Tr()});class Hc{client;logger;constructor(n,r){this.client=n,this.logger=r}async start(n,r,t={}){return hn({workflowName:n},["workflowName"],"workflow start"),wn(async()=>{this.logger.debug("Starting workflow",{workflowName:n,instanceId:t.instanceId||"auto-generated",workflowComponent:t.workflowComponent});let e=await(await this.client()).workflow.start(n,r,t.instanceId);return this.logger.debug("Workflow started",{workflowName:n,instanceId:e}),e},(o,e)=>oo(`Failed to start workflow ${n}: ${o}`,e))}async get(n){return hn({instanceId:n},["instanceId"],"workflow get"),wn(async()=>{this.logger.debug("Getting workflow instance",{instanceId:n});let t=await(await this.client()).workflow.get(n);return this.logger.debug("Workflow instance retrieved",{instanceId:n,workflowName:t.workflowName,runtimeStatus:t.runtimeStatus}),{instanceId:t.instanceID,workflowName:t.workflowName,createdAt:new Date(t.createdAt),lastUpdatedAt:new Date(t.lastUpdatedAt),runtimeStatus:t.runtimeStatus,properties:t.properties||{}}},(r,t)=>oo(`Failed to get workflow instance ${n}: ${r}`,t))}async terminate(n){return hn({instanceId:n},["instanceId"],"workflow terminate"),wn(async()=>{this.logger.debug("Terminating workflow instance",{instanceId:n}),await(await this.client()).workflow.terminate(n),this.logger.debug("Workflow instance terminated",{instanceId:n})},(r,t)=>oo(`Failed to terminate workflow instance ${n}: ${r}`,t))}async pause(n){return hn({instanceId:n},["instanceId"],"workflow pause"),wn(async()=>{this.logger.debug("Pausing workflow instance",{instanceId:n}),await(await this.client()).workflow.pause(n),this.logger.debug("Workflow instance paused",{instanceId:n})},(r,t)=>oo(`Failed to pause workflow instance ${n}: ${r}`,t))}async resume(n){return hn({instanceId:n},["instanceId"],"workflow resume"),wn(async()=>{this.logger.debug("Resuming workflow instance",{instanceId:n}),await(await this.client()).workflow.resume(n),this.logger.debug("Workflow instance resumed",{instanceId:n})},(r,t)=>oo(`Failed to resume workflow instance ${n}: ${r}`,t))}async purge(n){return hn({instanceId:n},["instanceId"],"workflow purge"),wn(async()=>{this.logger.debug("Purging workflow instance",{instanceId:n}),await(await this.client()).workflow.purge(n),this.logger.debug("Workflow instance purged",{instanceId:n})},(r,t)=>oo(`Failed to purge workflow instance ${n}: ${r}`,t))}async raiseEvent(n,r,t){return hn({instanceId:n,eventName:r},["instanceId","eventName"],"workflow raiseEvent"),wn(async()=>{this.logger.debug("Raising event for workflow instance",{instanceId:n,eventName:r}),await(await this.client()).workflow.raise(n,r,t),this.logger.debug("Event raised for workflow instance",{instanceId:n,eventName:r})},(o,e)=>oo(`Failed to raise event ${r} for workflow instance ${n}: ${o}`,e))}}var el=d(()=>{Lr();Tr()});import{CommunicationProtocolEnum as al,DaprClient as v2,HttpMethod as I2,LogLevel as Z2}from"@dapr/dapr";class cl{client=null;daprHost;daprPort;communicationProtocol;maxBodySizeMb;daprApiToken;logger;connectionStatus=Vt.DISCONNECTED;connectionPromise=null;constructor(n={}){this.daprHost=n.daprHost||process.env[fu]||iu,this.daprPort=n.daprPort||process.env[du]||su,this.communicationProtocol=n.communicationProtocol||al.HTTP,this.maxBodySizeMb=n.maxBodySizeMb||lu,this.daprApiToken=n.daprApiToken||process.env[gu],this.logger=n.logger||hc(),this.logger.info("DaprConnectionManager initialized",{daprHost:this.daprHost,daprPort:this.daprPort,communicationProtocol:this.communicationProtocol})}async getClient(){if(!this.client||this.connectionStatus!==Vt.CONNECTED)await this.connect();if(!this.client)throw ue("Not connected to Dapr sidecar");return this.client}async connect(){if(this.connectionPromise)return this.connectionPromise;if(this.client&&this.connectionStatus===Vt.CONNECTED)return Promise.resolve();this.connectionStatus=Vt.CONNECTING,this.connectionPromise=this.establishConnection();try{await this.connectionPromise,this.connectionStatus=Vt.CONNECTED}catch(n){throw this.connectionStatus=Vt.ERROR,n}finally{this.connectionPromise=null}}async establishConnection(){try{this.logger.info("Connecting to Dapr sidecar",{daprHost:this.daprHost,daprPort:this.daprPort,protocol:this.communicationProtocol});let n=process.env[uu]&&this.communicationProtocol===al.HTTP||process.env[bu]&&this.communicationProtocol===al.GRPC,r={communicationProtocol:this.communicationProtocol,maxBodySizeMb:this.maxBodySizeMb,logger:{level:Z2.Warn}};if(!n)r.daprHost=this.daprHost,r.daprPort=this.daprPort;if(this.daprApiToken)r.daprApiToken=this.daprApiToken;await fa(async()=>{this.client=new v2(r)},mu,"Connection to Dapr sidecar timed out"),await this.healthCheck(),this.logger.info("Successfully connected to Dapr sidecar")}catch(n){throw this.logger.error("Failed to connect to Dapr sidecar",n),this.client=null,ue(`Failed to connect to Dapr sidecar at ${this.daprHost}:${this.daprPort}`,n)}}async disconnect(){if(!this.client)return;try{this.logger.info("Disconnecting from Dapr sidecar"),this.client=null,this.connectionStatus=Vt.DISCONNECTED,this.logger.info("Disconnected from Dapr sidecar")}catch(n){throw this.logger.error("Error during disconnect",n),ue("Failed to disconnect from Dapr sidecar",n)}}isConnected(){return this.client!==null&&this.connectionStatus===Vt.CONNECTED}getConnectionStatus(){return this.connectionStatus}async healthCheck(){if(!this.client)throw ue("Not connected to Dapr sidecar");try{return await fa(async()=>{if(!this.client)throw ue("Not connected to Dapr sidecar");let n=await this.client.invoker.invoke("healthz","healthz",I2.GET);return{status:n.status===204?mc.HEALTHY:mc.UNHEALTHY,version:n.headers?.["dapr-version"]||"unknown"}},wu,"Health check timed out")}catch(n){return this.logger.error("Health check failed",n),{status:mc.UNHEALTHY,version:"unknown"}}}getClientConfig(){return{daprHost:this.daprHost,daprPort:this.daprPort,communicationProtocol:this.communicationProtocol,maxBodySizeMb:this.maxBodySizeMb,hasApiToken:!!this.daprApiToken,connectionStatus:this.connectionStatus}}}var ku=d(()=>{Et();Lr();Tr()});var Eu=()=>{};class zc{connectionManager;logger;_state;_pubsub;_binding;_secret;_config;_invoke;_lock;_crypto;_workflow;constructor(n={}){this.logger=n.logger||hc(),this.connectionManager=new cl(n);let r=async()=>{return this.connectionManager.getClient()};this._state=new Dc(r,this.logger),this._pubsub=new Sc(r,this.logger),this._binding=new $c(r,this.logger),this._secret=new Mc(r,this.logger),this._config=new Ac(r,this.logger),this._invoke=new kc(r,this.logger),this._lock=new Ec(r,this.logger),this._crypto=new Rc(r,this.logger),this._workflow=new Hc(r,this.logger)}async connect(){await this.connectionManager.connect()}async disconnect(){await this.connectionManager.disconnect()}isConnected(){return this.connectionManager.isConnected()}getConnectionStatus(){return this.connectionManager.getConnectionStatus()}async healthCheck(){return this.connectionManager.healthCheck()}getClientConfig(){return this.connectionManager.getClientConfig()}get state(){return this._state}get pubsub(){return this._pubsub}get binding(){return this._binding}get secret(){return this._secret}get config(){return this._config}get invoke(){return this._invoke}get lock(){return this._lock}get crypto(){return this._crypto}get workflow(){return this._workflow}}var Q6;var il=d(()=>{vs();Is();Zs();ys();nl();rl();tl();ol();el();ku();Tr();vs();Is();Zs();ys();nl();rl();tl();ol();el();Et();Lr();Eu();Q6=new zc});import Su from"ioredis";class Mu{client;constructor(n){this.client=n}async create(n,r,t){try{return{success:!0,data:t?await this.client.set(n,JSON.stringify(r),"EX",t):await this.client.set(n,JSON.stringify(r))}}catch(o){return{success:!1,error:o.message}}}async read(n){try{let r=await this.client.get(n);return{success:!0,data:r?JSON.parse(r):null}}catch(r){return{success:!1,error:r.message}}}async update(n,r,t=!0){try{return{success:!0,data:t?await this.client.set(n,JSON.stringify(r),"KEEPTTL"):await this.client.set(n,JSON.stringify(r))}}catch(o){return{success:!1,error:o.message}}}async remove(n){try{return{success:!0,data:await this.client.del(n)}}catch(r){return{success:!1,error:r.message}}}async exists(n){try{return{success:!0,data:await this.client.exists(n)===1}}catch(r){return{success:!1,error:r.message}}}getClient(){return this.client}}class Du{storeName;dapr;constructor(n){this.storeName=n;this.dapr=new zc}async create(n,r,t){try{let o=t?{ttlInSeconds:String(t)}:void 0;return await this.dapr.state.save([{key:n,value:r,metadata:o}],void 0,this.storeName),{success:!0,data:"OK"}}catch(o){return{success:!1,error:o.message}}}async read(n){try{return{success:!0,data:await this.dapr.state.get(n,this.storeName)??null}}catch(r){return{success:!1,error:r.message}}}async update(n,r,t=!0){try{return await this.dapr.state.save([{key:n,value:r}],void 0,this.storeName),{success:!0,data:"OK"}}catch(o){return{success:!1,error:o.message}}}async remove(n){try{return await this.dapr.state.delete(n,void 0,void 0,this.storeName),{success:!0,data:1}}catch(r){return{success:!1,error:r.message}}}async exists(n){try{let r=await this.dapr.state.get(n,this.storeName);return{success:!0,data:r!==void 0&&r!==null}}catch(r){return{success:!1,error:r.message}}}}class jn{static instance=null;store;directClient=null;useDapr;constructor(n){if(jn.instance){this.store=jn.instance.store,this.directClient=jn.instance.directClient,this.useDapr=jn.instance.useDapr;return}if(!n)throw Error("Redis config must be provided for first initialization.");if(y2(n),this.useDapr=n.withDapr??!1,n.withDapr)this.store=new Du(n.stateStoreName??"statestore");else{let r=n.url?new Su(n.url):new Su({host:n.host,port:n.port});this.directClient=r,this.store=new Mu(r)}jn.instance=this}async create(n,r,t){return this.store.create(n,r,t)}async read(n){return this.store.read(n)}async update(n,r,t=!0){return this.store.update(n,r,t)}async remove(n){return this.store.remove(n)}async exists(n){return this.store.exists(n)}async keys(n){if(this.useDapr||!this.directClient)return console.warn("[RedisManager] keys() not supported in Dapr mode"),[];try{return await this.directClient.keys(n)}catch(r){return console.error("[Redis] Keys error:",r.message),[]}}async acquireLock(n,r=10){if(this.useDapr||!this.directClient){let t=await this.exists(n);if(!t.success)return{success:!1,error:t.error};if(t.data)return{success:!0,data:!1};if((await this.create(n,"1",r)).success)return{success:!0,data:!0};return{success:!1,error:"Failed to acquire lock"}}try{return{success:!0,data:await this.directClient.set(n,"1","EX",r,"NX")==="OK"}}catch(t){return{success:!1,error:t.message}}}async releaseLock(n){return this.remove(n)}async waitForLock(n,r=5000,t=50){let o=Date.now();while(Date.now()-o<r){let e=await this.exists(n);if(!e.success)return{success:!1,error:e.error};if(!e.data)return{success:!0,data:!0};await new Promise((a)=>setTimeout(a,t))}return{success:!0,data:!1}}async getOrWait(n,r=5000,t=50){let o=Date.now();while(Date.now()-o<r){let e=await this.read(n);if(!e.success)return{success:!1,error:e.error};if(e.data!==null)return{success:!0,data:e.data};await new Promise((a)=>setTimeout(a,t))}return{success:!0,data:null}}}var y2=(n)=>{if(!n)throw Error("Redis config must be provided.");if(n.withDapr){if(!n.stateStoreName)throw Error("Dapr mode requires stateStoreName.");return}let r=Boolean(n.url),t=Boolean(n.host)&&typeof n.port==="number";if(!r&&!t)throw Error("Redis config requires either url or host and port.")};var Ct=d(()=>{il()});var sl=d(()=>{Ct()});var ll=d(()=>{Ct();Yo()});var fl=d(()=>{Ct();Yo();sl()});var zu=d(()=>{fl()});var Uu=d(()=>{sl();ll();fl();zu()});var Bu=86400,eo=(n)=>`session:${n}`,Uc=(n)=>JSON.stringify(n),Wu=(n)=>{if(!n)return null;if(typeof n==="object")return n;try{return JSON.parse(n)}catch{return null}};var Bc=async(n)=>{let r=new jn,t=eo(n.sessionId),o=await r.remove(t);return o.success&&o.data>0};var Wc=d(()=>{Ct()});import nh from"crypto";var Yu=async(n)=>{let r=new jn,t=n.sessionId??nh.randomUUID(),o=Date.now(),e=(n.expiresInSeconds??Bu)*1000,a=new Date(o).toISOString(),c={id:t,userId:n.userId,createdAt:a,expiresAt:new Date(o+e).toISOString(),lastActiveAt:a,clientMeta:n.clientMeta,fingerprintHash:n.fingerprintHash,deviceInfo:n.deviceInfo,refreshTokenHash:n.refreshTokenHash,loginMethod:n.loginMethod,rememberMe:n.rememberMe},i=await r.create(eo(t),Uc(c));if(!i.success)return{success:!1,error:i.error};return{success:!0,session:c}};var dl=d(()=>{Ct()});var Ju=d(()=>{Yo();ll();Wc();dl()});var Lu=d(()=>{Ju()});var Lo=async(n)=>{let r=new jn,t=eo(n.sessionId),o=await r.read(t);if(!o.success||!o.data)return null;let e=Wu(o.data);if(!e)return null;if(new Date(e.expiresAt).getTime()<=Date.now())return await Bc({sessionId:n.sessionId}),null;return e};var Yc=d(()=>{Ct();Wc()});var Xu=async(n)=>{let r=await Lo({sessionId:n.sessionId});if(!r)return{success:!1,error:"Session not found"};let t={...r,...n.updates,lastActiveAt:n.updates.lastActiveAt??new Date().toISOString()},e=await new jn().create(eo(n.sessionId),Uc(t));if(!e.success)return{success:!1,error:e.error};return{success:!0,session:t}},ul=async(n)=>{return Xu({sessionId:n,updates:{lastActiveAt:new Date().toISOString()}})};var Vu=d(()=>{Ct();Yc()});var rh=async(n)=>{let r=Wo(n.jwtToken,n.jwtSecret);if(!r.valid)return{isValid:!1,reason:r.error};let t=await Lo({sessionId:n.sessionId});if(!t)return{isValid:!1,reason:"Session not found"};let o;if(n.savedFingerprint&&n.headers&&n.requestIp){let e={};for(let[c,i]of Object.entries(n.headers))if(i!==void 0)e[c]=i;let a=Kd({savedFingerprint:n.savedFingerprint,headers:e,requestIp:n.requestIp});if(o=a.isValid,!a.isValid)return{isValid:!1,reason:a.reason??"Fingerprint mismatch"}}return{isValid:!0,context:{userId:t.userId,sessionId:t.id,fingerprintValid:o}}};var Cu=d(()=>{Gs();Yo();Yc()});var xu={};no(xu,{validateSession:()=>rh,updateSession:()=>Xu,updateLastActiveAt:()=>ul,readSession:()=>Lo,generateSession:()=>Yu,deleteSession:()=>Bc});var bl=d(()=>{Wc();dl();Yc();Vu();Cu()});var Qu=d(()=>{Td();Yo();cu();Uu();Lu();bl()});import{eq as th}from"drizzle-orm";function ua(n,r,t,o,e,a){let c=[n.toLowerCase()];if(a)c.push("bulk");if(c.push(r),o){if(c.push("with"),c.push(o),e)c.push(e)}else if(t)c.push(t);return c.join(".")}function ba(n,r,t){if(r)return`/${n}/bulk`;if(t)return`/${n}/:id`;return`/${n}`}function ah(n,r,t){let o=[],e=n.table_name,a=n.excluded_methods||[];for(let c of oh){if(a.includes(c))continue;let i=c==="PUT"||c==="PATCH"||c==="DELETE";if(o.push({action:ua(c,e),description:`${c} access to ${e}`,path:ba(e,!1,i&&c!=="DELETE"),method:c}),c==="GET"&&n.columns){for(let l of n.columns){if(r.skipColumns.includes(l.name))continue;o.push({action:ua(c,e,l.name),description:`${c} access to ${e}.${l.name}`,path:ba(e),method:c})}let s=`${e}Relations`;if(t[s]){let l=t[s];if(l?.config?.referencedTable?._?.name){let f=l.config.referencedTable._.name;o.push({action:ua(c,e,void 0,f),description:`${c} access to ${e} with ${f}`,path:ba(e),method:c})}}}if(c==="POST"||c==="PUT"||c==="PATCH"){if(n.columns)for(let s of n.columns){if(r.skipColumns.includes(s.name))continue;o.push({action:ua(c,e,s.name),description:`${c} access to ${e}.${s.name}`,path:ba(e,!1,c!=="POST"),method:c})}}}for(let c of eh){if(a.includes(c))continue;o.push({action:ua(c,e,void 0,void 0,void 0,!0),description:`Bulk ${c} access to ${e}`,path:ba(e,!0),method:c})}return o}async function Pu(n,r,t,o,e,a){let c=r.claims;if(!c)return a.warn("[Authorization] Claims table not found in schema"),{total:0,created:0,existing:0,claims:[]};let i=[];for(let b of o){if(e.skipTables.includes(b.table_name))continue;let $=ah(b,e,t);i.push(...$)}let s=i.filter((b,$,A)=>$===A.findIndex((_)=>_.action===b.action)),l=0,f=0,u=[];for(let b of s)try{if((await n.select().from(c).where(th(c.action,b.action)).limit(1)).length===0)await n.insert(c).values(b),l++,u.push(b.action),a.debug(`[Authorization] Created claim: ${b.action}`);else f++}catch($){a.error(`[Authorization] Failed to create claim: ${b.action}`,$)}return a.info(`[Authorization] Claims seeded: ${l} created, ${f} existing, ${s.length} total`),{total:s.length,created:l,existing:f,claims:u}}var oh,eh;var Gu=d(()=>{oh=["GET","POST","PUT","PATCH","DELETE"],eh=["POST","PUT","DELETE"]});var{password:ch}=globalThis.Bun;import{eq as gl}from"drizzle-orm";async function Ou(n,r,t,o){if(!t.godminEmail||!t.godminPassword)return o.warn("[Authorization] Godmin email or password not configured, skipping godmin setup"),{success:!1};let{roles:e,users:a,userRoles:c}=r;if(!e||!a||!c)return o.error("[Authorization] Required tables not found for godmin setup"),{success:!1};try{let i,s=await n.select().from(e).where(gl(e.name,_l)).limit(1);if(s.length===0){let[$]=await n.insert(e).values({name:_l,description:"God mode administrator - bypasses all authorization checks"}).returning();i=$.id,o.info(`[Authorization] Created godmin role: ${i}`)}else i=s[0].id,o.debug(`[Authorization] Godmin role already exists: ${i}`);let l,f=await n.select().from(a).where(gl(a.email,t.godminEmail)).limit(1);if(f.length===0){let $=await ch.hash(t.godminPassword,{algorithm:"bcrypt",cost:10}),[A]=await n.insert(a).values({email:t.godminEmail,password:$,verifiedAt:new Date,isActive:!0}).returning();l=A.id,o.info(`[Authorization] Created godmin user: ${l}`)}else l=f[0].id,o.debug(`[Authorization] Godmin user already exists: ${l}`);if(!(await n.select().from(c).where(gl(c.userId,l)).limit(1)).some(($)=>$.roleId===i))await n.insert(c).values({userId:l,roleId:i}),o.info(`[Authorization] Assigned godmin role to user: ${l}`);return{success:!0,userId:l,roleId:i}}catch(i){return o.error("[Authorization] Failed to setup godmin",i),{success:!1}}}function Nu(n){return n===_l}var _l="godmin";var ml=()=>{};import{eq as wl,inArray as ih}from"drizzle-orm";function sh(n){return n.startsWith(ju)}function lh(n){return{field:n.slice(ju.length)}}function qu(n){if(!n)return{};let r=new URLSearchParams(n),t={};for(let[o,e]of r.entries())if(sh(e))t[o]=lh(e);else t[o]=e;return t}function Fu(n,r,t){let o={};for(let[e,a]of Object.entries(n))if(typeof a==="object"&&"field"in a){if(!r){t.warn(`[Authorization] Cannot resolve self:${a.field} - userData not provided`);continue}let c=a.field,i=c.replace(/_([a-z])/g,(l,f)=>f.toUpperCase()),s;if(c in r)s=r[c];else if(i in r)s=r[i];else{t.warn(`[Authorization] Cannot resolve self:${c} - field not found in userData`);continue}o[e]=s,t.debug(`[Authorization] Resolved self:${c} -> ${s}`)}else o[e]=a;return o}function hl(n,r,t,o){let e=[n.toLowerCase(),r];if(o)e.push("with",o);else if(t)e.push(t);return e.join(".")}function $l(n,r){if(n===r)return!0;let t=n.split("."),o=r.split(".");if(t.length>o.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==o[e])return!1;return!0}async function Al(n){let{userId:r,method:t,entity:o,requestedFields:e,requestedRelations:a,db:c,schemaTables:i,logger:s,userData:l}=n,f=i.roles,u=i.userRoles,b=i.roleClaims,$=i.claims;if(!f||!u||!b||!$)return s.error("[Authorization] Required tables not found"),{authorized:!1,reason:"Authorization tables not configured"};try{let A=u,_=f,m=await c.select({roleId:A.roleId,roleName:_.name}).from(u).innerJoin(f,wl(A.roleId,_.id)).where(wl(A.userId,r));if(m.length===0)return{authorized:!1,reason:"User has no roles assigned"};if(m.some((C)=>Nu(C.roleName)))return s.debug(`[Authorization] User ${r} has godmin role, bypassing checks`),{authorized:!0};let R=m.map((C)=>C.roleId),M=b,S=$,x=await c.select({claimAction:S.action,scope:M.scope}).from(b).innerJoin($,wl(M.claimId,S.id)).where(ih(M.roleId,R));if(x.length===0)return{authorized:!1,reason:"User roles have no claims assigned"};let D=hl(t,o);if(!x.some((C)=>$l(C.claimAction,D)))return{authorized:!1,reason:`No access to ${t} ${o}`};let B=[],w=[],g={},Y=!1;for(let C of x)if(C.claimAction===D){Y=!0;let p=qu(C.scope),L=Fu(p,l,s);Object.assign(g,L)}if(Y)return{authorized:!0,scopeFilters:Object.keys(g).length>0?g:void 0};if(e)for(let C of e){let Q=hl(t,o,C);if(x.some((L)=>$l(L.claimAction,Q)))B.push(C)}if(a)for(let C of a){let Q=hl(t,o,void 0,C);if(x.some((L)=>$l(L.claimAction,Q)))w.push(C)}for(let C of x){let Q=qu(C.scope),p=Fu(Q,l,s);Object.assign(g,p)}if(!(B.length>0||w.length>0)&&(e?.length||a?.length))return{authorized:!1,reason:"No access to requested fields or relations"};return{authorized:!0,allowedFields:B.length>0?B:void 0,allowedRelations:w.length>0?w:void 0,scopeFilters:Object.keys(g).length>0?g:void 0}}catch(A){return s.error("[Authorization] Check failed",A),{authorized:!1,reason:"Authorization check failed"}}}function Jc(n,r){if(!r||r.length===0)return n;let o=[...new Set([...["id"],...r])],e=(a)=>{let c={};for(let i of o)if(i in a)c[i]=a[i];return c};if(Array.isArray(n))return n.map(e);return e(n)}function pu(n,r){if(!r)return n;let t=(o)=>{let e={...o};for(let a of Object.keys(e))if(typeof e[a]==="object"&&e[a]!==null&&!r.includes(a))delete e[a];return e};if(Array.isArray(n))return n.map(t);return t(n)}var ju="self:";var Ku=d(()=>{ml()});var Tu;var vu=d(()=>{Tu={enabled:!1,autoSeedClaims:!0,skipTables:["audit_logs"],skipColumns:["id","created_at","updated_at","is_active","password","version"],excludedPaths:["/health","/swagger"],publicPaths:["/auth/login","/auth/register"]}});var Rl=d(()=>{Gu();ml();Ku();vu()});function fh(n){let r=n.match(/^(\d+)(s|m|h|d)$/);if(!r||!r[1]||!r[2])return 300;let t=Number.parseInt(r[1],10);switch(r[2]){case"s":return t;case"m":return t*60;case"h":return t*3600;case"d":return t*86400;default:return 300}}function dh(){let n=new Uint8Array(24);return crypto.getRandomValues(n),Array.from(n).map((r)=>r.toString(16).padStart(2,"0")).join("")}function Iu(n){let r=new Bun.CryptoHasher("sha256");return r.update(n),r.digest("hex")}function uh(n,r){if(n.length!==r.length){let c=new Uint8Array(32);return crypto.getRandomValues(c),!1}let t=new TextEncoder,o=t.encode(n),e=t.encode(r),a=0;for(let c=0;c<o.length;c++)a|=(o[c]??0)^(e[c]??0);return a===0}function Xo(n,r){let t=r-n+1,o=Math.ceil(Math.log2(t)/8)||1,e=256**o,a=e-e%t,c,i=new Uint8Array(o);do crypto.getRandomValues(i),c=i.reduce((s,l,f)=>s+l*256**f,0);while(c>=a);return n+c%t}function Zu(n){let r=kl[n],{min:t,max:o}=r.mathRange,e=["+","-","\xD7"],a=e[Xo(0,e.length-1)],c=Xo(t,o),i=Xo(t,o),s;switch(a){case"+":s=c+i;break;case"-":if(c<i)[c,i]=[i,c];s=c-i;break;case"\xD7":c=Xo(1,12),i=Xo(1,12),s=c*i;break;default:s=c+i}return{question:`${c} ${a} ${i} = ?`,answer:s.toString()}}function yu(n){let r=kl[n],t="";for(let o=0;o<r.textLength;o++)t+="ABCDEFGHJKLMNPQRSTUVWXYZ23456789".charAt(Xo(0,31));return{question:t,answer:t}}function bh(n){let r=yu(n),t=200,o=60,e=gh(r.answer,200,60),a=`data:image/svg+xml;base64,${Buffer.from(e).toString("base64")}`;return{question:"Enter the text shown in the image",answer:r.answer,imageData:a}}function sn(){let n=new Uint32Array(1);return crypto.getRandomValues(n),(n[0]??0)/4294967295}function gh(n,r,t){let o=240+sn()*15,e=240+sn()*15,a=240+sn()*15,c=`rgb(${o}, ${e}, ${a})`,i="";for(let A=0;A<12;A++){let _=sn()*r,m=sn()*t,E=sn()*r,R=sn()*t,M=sn()*100+100,S=sn()*100+100,x=sn()*100+100,D=1+sn()*2;i+=`<line x1="${_}" y1="${m}" x2="${E}" y2="${R}" stroke="rgb(${M},${S},${x})" stroke-width="${D}"/>`}let s="";for(let A=0;A<4;A++){let _=sn()*r,m=sn()*t,E=sn()*r,R=sn()*t,M=sn()*r,S=sn()*t,x=sn()*r,D=sn()*t,k=sn()*80+80,B=sn()*80+80,w=sn()*80+80;s+=`<path d="M${_},${m} C${E},${R} ${M},${S} ${x},${D}" stroke="rgb(${k},${B},${w})" stroke-width="2" fill="none"/>`}let l="";for(let A=0;A<80;A++){let _=sn()*r,m=sn()*t,E=sn()*150+50,R=sn()*150+50,M=sn()*150+50,S=sn()*3+1;l+=`<circle cx="${_}" cy="${m}" r="${S}" fill="rgb(${E},${R},${M})"/>`}let f="",u=r/(n.length+2),b=u;for(let A=0;A<n.length;A++){let _=b+A*u+(sn()-0.5)*15,m=t/2+8+(sn()-0.5)*12,E=(sn()-0.5)*40,R=22+sn()*10,M=sn()*80,S=sn()*80,x=sn()*80,D=(sn()-0.5)*15,k=0.9+sn()*0.3;f+=`<text x="${_}" y="${m}" font-family="Arial, Helvetica, sans-serif" font-size="${R}" font-weight="bold" fill="rgb(${M},${S},${x})" transform="rotate(${E}, ${_}, ${m}) skewX(${D}) scale(1, ${k})" style="font-style: ${sn()>0.5?"italic":"normal"}">${n[A]}</text>`}let $="";for(let A=0;A<3;A++){let _=10+sn()*(t-20),m=sn()*60+60,E=sn()*60+60,R=sn()*60+60;$+=`<line x1="0" y1="${_}" x2="${r}" y2="${_+(sn()-0.5)*20}" stroke="rgb(${m},${E},${R})" stroke-width="1.5"/>`}return`<svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${t}" viewBox="0 0 ${r} ${t}">
5
5
  <defs>
6
6
  <filter id="noise" x="0%" y="0%" width="100%" height="100%">
7
7
  <feTurbulence type="fractalNoise" baseFrequency="0.04" numOctaves="2" result="noise"/>
@@ -57,15 +57,15 @@ var b2=Object.create;var{getPrototypeOf:g2,defineProperty:ta,getOwnPropertyNames
57
57
  </div>
58
58
  </body>
59
59
  </html>
60
- `}getActiveAlerts(){return Array.from(this.state.activeAlerts.values())}acknowledgeAlert(n){for(let[r,t]of this.state.activeAlerts)if(t.id===n)return t.acknowledged=!0,!0;return!1}clearAlert(n){this.state.activeAlerts.delete(n)}}class Dl{config;requestCount=0;responseTimes=[];errorCount=0;rateLimitBlocks=0;byEndpoint={};byMethod={};byStatus={};byErrorType={};lastCollectTime=Date.now();constructor(n){this.config=n}recordRequest(n){if(!this.config?.enabled)return;if(this.requestCount++,this.config.metrics?.responseTime!==!1){if(this.responseTimes.push(n.responseTimeMs),this.responseTimes.length>1e4)this.responseTimes=this.responseTimes.slice(-5000)}if(this.config.metrics?.requests!==!1)this.byEndpoint[n.endpoint]=(this.byEndpoint[n.endpoint]||0)+1,this.byMethod[n.method]=(this.byMethod[n.method]||0)+1,this.byStatus[String(n.status)]=(this.byStatus[String(n.status)]||0)+1;if(this.config.metrics?.errors!==!1&&n.isError){if(this.errorCount++,n.errorType)this.byErrorType[n.errorType]=(this.byErrorType[n.errorType]||0)+1}}recordRateLimitBlock(){if(!this.config?.enabled||this.config.metrics?.rateLimits===!1)return;this.rateLimitBlocks++}collect(){if(!this.config?.enabled)return null;let r=(Date.now()-this.lastCollectTime)/1000/60,t=r>0?Math.round(this.requestCount/r):0,o=r>0?Math.round(this.rateLimitBlocks/r):0,e=[...this.responseTimes].sort((i,s)=>i-s),a=e.length;return{requests:{total:this.requestCount,perMinute:t,byEndpoint:{...this.byEndpoint},byMethod:{...this.byMethod},byStatus:{...this.byStatus}},responseTime:{avg:a>0?Math.round(e.reduce((i,s)=>i+s,0)/a*100)/100:0,min:a>0?e[0]??0:0,max:a>0?e[a-1]??0:0,p50:a>0?e[Math.floor(a*0.5)]??0:0,p95:a>0?e[Math.floor(a*0.95)]??0:0,p99:a>0?e[Math.floor(a*0.99)]??0:0},errors:{total:this.errorCount,rate:this.requestCount>0?Math.round(this.errorCount/this.requestCount*100*100)/100:0,byType:{...this.byErrorType}},rateLimits:{blocked:this.rateLimitBlocks,blockedPerMinute:o}}}reset(){this.requestCount=0,this.responseTimes=[],this.errorCount=0,this.rateLimitBlocks=0,this.byEndpoint={},this.byMethod={},this.byStatus={},this.byErrorType={},this.lastCollectTime=Date.now()}getRequestsPerMinute(){let n=(Date.now()-this.lastCollectTime)/1000/60;return n>0?Math.round(this.requestCount/n):0}getErrorRate(){return this.requestCount>0?this.errorCount/this.requestCount*100:0}getRateLimitBlocksPerMinute(){let n=(Date.now()-this.lastCollectTime)/1000/60;return n>0?Math.round(this.rateLimitBlocks/n):0}getAvgResponseTime(){if(this.responseTimes.length===0)return 0;return this.responseTimes.reduce((n,r)=>n+r,0)/this.responseTimes.length}}import*as eb from"fs";import*as ao from"os";class Hl{config;lastCpuInfo=null;constructor(n){this.config=n}async collect(){if(!this.config?.enabled)return null;let n={cpu:{usage:0,cores:0},memory:{total:0,used:0,free:0,usagePercent:0,heapUsed:0,heapTotal:0},disk:{total:0,used:0,free:0,usagePercent:0},network:{bytesIn:0,bytesOut:0},process:{uptime:0,pid:0,eventLoopLag:0}};if(this.config.metrics?.cpu!==!1)n.cpu=this.collectCpu();if(this.config.metrics?.memory!==!1)n.memory=this.collectMemory();if(this.config.metrics?.disk!==!1)n.disk=await this.collectDisk();if(this.config.metrics?.network)n.network=this.collectNetwork();if(this.config.metrics?.process!==!1)n.process=await this.collectProcess();return n}collectCpu(){let n=ao.cpus(),r=n.length,t=0,o=0;for(let a of n)t+=a.times.idle,o+=a.times.user+a.times.nice+a.times.sys+a.times.idle+a.times.irq;let e=0;if(this.lastCpuInfo){let a=t-this.lastCpuInfo.idle,c=o-this.lastCpuInfo.total;e=c>0?Math.round((1-a/c)*100*100)/100:0}return this.lastCpuInfo={idle:t,total:o},{usage:e,cores:r}}collectMemory(){let n=ao.totalmem(),r=ao.freemem(),t=n-r,o=Math.round(t/n*100*100)/100,e=process.memoryUsage();return{total:n,used:t,free:r,usagePercent:o,heapUsed:e.heapUsed,heapTotal:e.heapTotal}}async collectDisk(){try{let n=eb.statfsSync("/"),r=n.blocks*n.bsize,t=n.bfree*n.bsize,o=r-t,e=Math.round(o/r*100*100)/100;return{total:r,used:o,free:t,usagePercent:e}}catch{return{total:0,used:0,free:0,usagePercent:0}}}collectNetwork(){let n=ao.networkInterfaces(),r=0,t=0;for(let o in n){let e=n[o];if(e){for(let a of e)if(!a.internal)r+=0,t+=0}}return{bytesIn:r,bytesOut:t}}async collectProcess(){let n=process.uptime(),r=process.pid,t=Date.now(),o=await new Promise((e)=>{setImmediate(()=>{e(Date.now()-t)})});return{uptime:n,pid:r,eventLoopLag:o}}}var ab=()=>{};import*as ib from"os";import{randomUUID as cb}from"crypto";class Xc{store;memoryInterval=null;cpuInterval=null;lastCpuInfo=null;isRunning=!1;constructor(n){let r={...mh,...n};this.store={requests:[],configs:{logMemory:r.logMemory,logCpu:r.logCpu,logDapr:r.logDapr,logWebSocket:r.logWebSocket,cpuLogInterval:r.cpuLogInterval,memoryLogInterval:r.memoryLogInterval},logs:{memory:[],cpu:[],dapr:[],ws:[]},logLimits:{memory:r.memoryLogLimit,cpu:r.cpuLogLimit,dapr:r.daprLogLimit,ws:r.wsLogLimit,request:r.requestLogLimit},worker:{pid:process.pid,workerId:null,memory:null,cpu:null,updatedAt:Date.now()},allWorkers:[],daprEvents:[],wsEvents:[]}}start(){if(this.isRunning)return;if(this.isRunning=!0,this.store.configs.logMemory)this.startMemoryCollector();if(this.store.configs.logCpu)this.startCpuCollector()}stop(){if(!this.isRunning)return;if(this.isRunning=!1,this.memoryInterval)clearInterval(this.memoryInterval),this.memoryInterval=null;if(this.cpuInterval)clearInterval(this.cpuInterval),this.cpuInterval=null}startMemoryCollector(){if(this.memoryInterval)clearInterval(this.memoryInterval);let n=()=>{if(!this.store.configs.logMemory)return;let r=process.memoryUsage(),t={timestamp:Date.now(),rss:r.rss,heapUsed:r.heapUsed,heapTotal:r.heapTotal};if(this.store.logs.memory.push(t),this.store.logs.memory.length>this.store.logLimits.memory*2)this.store.logs.memory=this.store.logs.memory.slice(-this.store.logLimits.memory);this.store.worker.memory=t,this.store.worker.updatedAt=Date.now()};n(),this.memoryInterval=setInterval(n,this.store.configs.memoryLogInterval)}startCpuCollector(){if(this.cpuInterval)clearInterval(this.cpuInterval);let n=()=>{if(!this.store.configs.logCpu)return;let r=ib.cpus(),t=0,o=0,e=0,a=0;for(let l of r)t+=l.times.user,o+=l.times.sys,e+=l.times.idle,a+=l.times.user+l.times.nice+l.times.sys+l.times.idle+l.times.irq;let c=0,i=0;if(this.lastCpuInfo){let l=a-this.lastCpuInfo.total,f=e-this.lastCpuInfo.idle;if(l>0){let u=l-f;c=Math.round((t-0)/(u||1)*100*100)/100,i=Math.round((o-0)/(u||1)*100*100)/100;let b=Math.round((1-f/l)*100*100)/100;c=Math.round(b*0.7*100)/100,i=Math.round(b*0.3*100)/100}}this.lastCpuInfo={idle:e,total:a};let s={timestamp:Date.now(),user:c,system:i};if(this.store.logs.cpu.push(s),this.store.logs.cpu.length>this.store.logLimits.cpu*2)this.store.logs.cpu=this.store.logs.cpu.slice(-this.store.logLimits.cpu);this.store.worker.cpu=s,this.store.worker.updatedAt=Date.now()};n(),this.cpuInterval=setInterval(n,this.store.configs.cpuLogInterval)}recordRequest(n){if(this.store.requests.push(n),this.store.requests.length>this.store.logLimits.request*2)this.store.requests=this.store.requests.slice(-this.store.logLimits.request)}recordDaprEvent(n,r){if(!this.store.configs.logDapr)return;let t={id:cb(),type:n,timestamp:Date.now(),...r};if(this.store.logs.dapr.push(t),this.store.daprEvents.push(t),this.store.logs.dapr.length>this.store.logLimits.dapr*2)this.store.logs.dapr=this.store.logs.dapr.slice(-this.store.logLimits.dapr);if(this.store.daprEvents.length>this.store.logLimits.dapr*2)this.store.daprEvents=this.store.daprEvents.slice(-this.store.logLimits.dapr)}recordWsEvent(n,r){if(!this.store.configs.logWebSocket)return;let t={id:cb(),type:n,timestamp:Date.now(),...r};if(this.store.logs.ws.push(t),this.store.wsEvents.push(t),this.store.logs.ws.length>this.store.logLimits.ws*2)this.store.logs.ws=this.store.logs.ws.slice(-this.store.logLimits.ws);if(this.store.wsEvents.length>this.store.logLimits.ws*2)this.store.wsEvents=this.store.wsEvents.slice(-this.store.logLimits.ws)}getSnapshot(){return{memory:this.store.logs.memory.slice(-this.store.logLimits.memory),cpu:this.store.logs.cpu.slice(-this.store.logLimits.cpu),requests:this.store.requests.slice(-this.store.logLimits.request),dapr:this.store.logs.dapr.slice(-this.store.logLimits.dapr),ws:this.store.logs.ws.slice(-this.store.logLimits.ws),workers:this.store.allWorkers.length?this.store.allWorkers:[this.store.worker],logLimits:{...this.store.logLimits},configs:{...this.store.configs}}}getUpdatesSince(n){let r=this.store.logs.memory.filter((i)=>i.timestamp>n.memory),t=this.store.logs.cpu.filter((i)=>i.timestamp>n.cpu),o=this.store.requests.filter((i)=>i.timestamp>n.request),e=this.store.logs.dapr.filter((i)=>i.timestamp>n.dapr),a=this.store.logs.ws.filter((i)=>i.timestamp>n.ws);if(!(r.length>0||t.length>0||o.length>0||e.length>0||a.length>0))return null;return{memory:r,cpu:t,requests:o,dapr:e,ws:a,timestamp:Date.now()}}getLogs(){return{memory:this.store.logs.memory,cpu:this.store.logs.cpu,requests:this.store.requests,dapr:this.store.logs.dapr,ws:this.store.logs.ws,daprEvents:this.store.daprEvents,wsEvents:this.store.wsEvents,configs:{logMemory:this.store.configs.logMemory,logCpu:this.store.configs.logCpu,logDapr:this.store.configs.logDapr,logWebSocket:this.store.configs.logWebSocket},limits:{...this.store.logLimits}}}getSettings(){return{configs:{...this.store.configs},logLimits:{...this.store.logLimits}}}changeSettings(n){if(n.logMemory!==void 0)this.store.configs.logMemory=n.logMemory;if(n.logCpu!==void 0)this.store.configs.logCpu=n.logCpu;if(n.logDapr!==void 0)this.store.configs.logDapr=n.logDapr;if(n.logWebSocket!==void 0)this.store.configs.logWebSocket=n.logWebSocket;if(n.cpuLogInterval!==void 0){if(this.store.configs.cpuLogInterval=n.cpuLogInterval,this.isRunning&&this.store.configs.logCpu)this.startCpuCollector()}if(n.memoryLogInterval!==void 0){if(this.store.configs.memoryLogInterval=n.memoryLogInterval,this.isRunning&&this.store.configs.logMemory)this.startMemoryCollector()}if(n.memoryLogLimit!==void 0)this.store.logLimits.memory=n.memoryLogLimit;if(n.cpuLogLimit!==void 0)this.store.logLimits.cpu=n.cpuLogLimit;if(n.daprLogLimit!==void 0)this.store.logLimits.dapr=n.daprLogLimit;if(n.wsLogLimit!==void 0)this.store.logLimits.ws=n.wsLogLimit;if(n.requestLogLimit!==void 0)this.store.logLimits.request=n.requestLogLimit;return{message:"Settings updated successfully",configs:{...this.store.configs},logLimits:{...this.store.logLimits}}}getStore(){return this.store}isEnabled(){return this.isRunning}}var mh;var sb=d(()=>{mh={enabled:!0,logMemory:!0,logCpu:!0,logDapr:!0,logWebSocket:!0,memoryLogInterval:1000,cpuLogInterval:1000,memoryLogLimit:100,cpuLogLimit:100,daprLogLimit:100,wsLogLimit:100,requestLogLimit:100,streamInterval:150}});class zl{redis;logger;config;appId;flushToDb;systemCollector;applicationCollector;alertService;collectInterval=null;flushInterval=null;pendingMetrics=[];isRunning=!1;constructor(n){this.redis=n.redis,this.logger=n.logger,this.config=this.mergeConfig(n.config),this.appId=n.appId,this.flushToDb=n.flushToDb,this.systemCollector=new Hl(this.config.system),this.applicationCollector=new Dl(this.config.application),this.alertService=new Lc({logger:n.logger,gmail:n.gmail,config:this.config,appId:n.appId})}mergeConfig(n){return{enabled:n.enabled??kn.enabled,system:{enabled:n.system?.enabled??kn.system.enabled,collectInterval:n.system?.collectInterval??kn.system.collectInterval,metrics:{cpu:n.system?.metrics?.cpu??kn.system.metrics.cpu,memory:n.system?.metrics?.memory??kn.system.metrics.memory,disk:n.system?.metrics?.disk??kn.system.metrics.disk,network:n.system?.metrics?.network??kn.system.metrics.network,process:n.system?.metrics?.process??kn.system.metrics.process}},application:{enabled:n.application?.enabled??kn.application.enabled,metrics:{requests:n.application?.metrics?.requests??kn.application.metrics.requests,responseTime:n.application?.metrics?.responseTime??kn.application.metrics.responseTime,errors:n.application?.metrics?.errors??kn.application.metrics.errors,rateLimits:n.application?.metrics?.rateLimits??kn.application.metrics.rateLimits}},database:{enabled:n.database?.enabled??kn.database.enabled,metrics:{connections:n.database?.metrics?.connections??kn.database.metrics.connections,queryTime:n.database?.metrics?.queryTime??kn.database.metrics.queryTime,slowQueryThreshold:n.database?.metrics?.slowQueryThreshold??kn.database.metrics.slowQueryThreshold}},redis:{enabled:n.redis?.enabled??kn.redis.enabled},persistence:{enabled:n.persistence?.enabled??kn.persistence.enabled,flushInterval:n.persistence?.flushInterval??kn.persistence.flushInterval,retentionDays:n.persistence?.retentionDays??kn.persistence.retentionDays},alerts:{enabled:n.alerts?.enabled??kn.alerts.enabled,email:{enabled:n.alerts?.email?.enabled??kn.alerts.email.enabled,recipients:n.alerts?.email?.recipients??kn.alerts.email.recipients},thresholds:{cpuPercent:n.alerts?.thresholds?.cpuPercent??kn.alerts.thresholds.cpuPercent,memoryPercent:n.alerts?.thresholds?.memoryPercent??kn.alerts.thresholds.memoryPercent,diskPercent:n.alerts?.thresholds?.diskPercent??kn.alerts.thresholds.diskPercent,errorRatePercent:n.alerts?.thresholds?.errorRatePercent??kn.alerts.thresholds.errorRatePercent,responseTimeMs:n.alerts?.thresholds?.responseTimeMs??kn.alerts.thresholds.responseTimeMs,rateLimitBlocksPerMinute:n.alerts?.thresholds?.rateLimitBlocksPerMinute??kn.alerts.thresholds.rateLimitBlocksPerMinute},cooldown:n.alerts?.cooldown??kn.alerts.cooldown}}}parseTimeToMs(n){let r=n.match(/^(\d+)(ms|s|m|h|d)$/);if(!r||!r[1]||!r[2])return 1e4;let t=parseInt(r[1],10);switch(r[2]){case"ms":return t;case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;case"d":return t*24*60*60*1000;default:return 1e4}}start(){if(!this.config.enabled||this.isRunning)return;this.isRunning=!0,this.logger.info("[Monitoring] Starting monitoring service");let n=this.parseTimeToMs(this.config.system.collectInterval);if(this.collectInterval=setInterval(()=>{this.collect()},n),this.config.persistence.enabled&&this.flushToDb){let r=this.parseTimeToMs(this.config.persistence.flushInterval);this.flushInterval=setInterval(()=>{this.flush()},r)}this.collect()}stop(){if(!this.isRunning)return;if(this.isRunning=!1,this.logger.info("[Monitoring] Stopping monitoring service"),this.collectInterval)clearInterval(this.collectInterval),this.collectInterval=null;if(this.flushInterval)clearInterval(this.flushInterval),this.flushInterval=null;this.flush()}async collect(){let n=Date.now(),r={timestamp:n};if(this.config.system.enabled){let t=await this.systemCollector.collect();if(t)r.system=t,this.addMetricPoints("system",t,n)}if(this.config.application.enabled){let t=this.applicationCollector.collect();if(t)r.application=t,this.addMetricPoints("application",t,n)}if(await this.storeSnapshot(r),this.config.alerts.enabled)await this.alertService.checkAndAlert(r)}addMetricPoints(n,r,t){let o=(e,a="")=>{for(let c in e){let i=e[c],s=a?`${a}.${c}`:c;if(typeof i==="number")this.pendingMetrics.push({timestamp:t,metricType:n,metricName:s,value:i});else if(typeof i==="object"&&i!==null&&!Array.isArray(i))o(i,s)}};o(r)}async storeSnapshot(n){let r=`monitoring:${this.appId}:latest`;await this.redis.create(r,n,3600);let t=`monitoring:${this.appId}:history`,o=await this.redis.read(t),e=o.success&&o.data?o.data:[];e.push(n);let a=Date.now()-3600000,c=e.filter((i)=>i.timestamp>a);await this.redis.create(t,c,3600)}async flush(){if(this.pendingMetrics.length===0)return;if(!this.flushToDb)return;let n=[...this.pendingMetrics];this.pendingMetrics=[];try{await this.flushToDb(n),this.logger.debug(`[Monitoring] Flushed ${n.length} metrics to database`)}catch(r){this.logger.error(`[Monitoring] Failed to flush metrics: ${r}`),this.pendingMetrics=[...n,...this.pendingMetrics]}}recordRequest(n){if(!this.config.enabled||!this.config.application.enabled)return;this.applicationCollector.recordRequest(n)}recordRateLimitBlock(){if(!this.config.enabled||!this.config.application.enabled)return;this.applicationCollector.recordRateLimitBlock()}async getLatestSnapshot(){let n=`monitoring:${this.appId}:latest`,r=await this.redis.read(n);return r.success?r.data:null}async getHistory(n=60){let r=`monitoring:${this.appId}:history`,t=await this.redis.read(r);if(!t.success||!t.data)return[];let o=Date.now()-n*60000;return t.data.filter((e)=>e.timestamp>o)}getActiveAlerts(){return this.alertService.getActiveAlerts()}acknowledgeAlert(n){return this.alertService.acknowledgeAlert(n)}isEnabled(){return this.config.enabled}getConfig(){return this.config}}var kn;var lb=d(()=>{ab();sb();kn={enabled:!1,system:{enabled:!0,collectInterval:"10s",metrics:{cpu:!0,memory:!0,disk:!0,network:!1,process:!0}},application:{enabled:!0,metrics:{requests:!0,responseTime:!0,errors:!0,rateLimits:!0}},database:{enabled:!1,metrics:{connections:!0,queryTime:!0,slowQueryThreshold:"100ms"}},redis:{enabled:!1},persistence:{enabled:!0,flushInterval:"1m",retentionDays:30},alerts:{enabled:!1,email:{enabled:!1,recipients:[]},thresholds:{cpuPercent:80,memoryPercent:85,diskPercent:90,errorRatePercent:5,responseTimeMs:1000,rateLimitBlocksPerMinute:100},cooldown:"5m"}}});var fb=()=>{};import{and as yM,eq as nD}from"drizzle-orm";var db=d(()=>{fb()});function ub(n,r){let t=n.scopes??["read:user","user:email"];return`https://github.com/login/oauth/authorize?${new URLSearchParams({client_id:n.clientId,redirect_uri:n.redirectUri,scope:t.join(" "),state:r,...n.extraAuthParams}).toString()}`}async function bb(n,r){let t=await fetch("https://github.com/login/oauth/access_token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({code:n,client_id:r.clientId,client_secret:r.clientSecret,redirect_uri:r.redirectUri}).toString()});if(!t.ok){let l=await t.text();throw Error(`GitHub token exchange failed: ${l}`)}let o=await t.json();if(o.error)throw Error(`GitHub OAuth error: ${o.error_description||o.error}`);let e={accessToken:o.access_token,refreshToken:o.refresh_token,expiresAt:o.expires_in?new Date(Date.now()+o.expires_in*1000):void 0,scope:o.scope},a=await fetch("https://api.github.com/user",{headers:{Authorization:`Bearer ${o.access_token}`,Accept:"application/vnd.github+json"}});if(!a.ok)throw Error("Failed to fetch GitHub user info");let c=await a.json(),i=c.email;if(!i)try{let l=await fetch("https://api.github.com/user/emails",{headers:{Authorization:`Bearer ${o.access_token}`,Accept:"application/vnd.github+json"}});if(l.ok){let f=await l.json();i=f.find((b)=>b.primary&&b.verified)?.email??f[0]?.email}}catch{}return{profile:{providerAccountId:String(c.id),email:i,name:c.name??c.login,avatarUrl:c.avatar_url,rawProfile:c},tokens:e}}function gb(n,r){let t=n.scopes??["openid","email","profile"];return`https://accounts.google.com/o/oauth2/v2/auth?${new URLSearchParams({client_id:n.clientId,redirect_uri:n.redirectUri,response_type:"code",scope:t.join(" "),state:r,access_type:"offline",prompt:"select_account",...n.extraAuthParams}).toString()}`}async function _b(n,r){let t=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({code:n,client_id:r.clientId,client_secret:r.clientSecret,redirect_uri:r.redirectUri,grant_type:"authorization_code"}).toString()});if(!t.ok){let s=await t.text();throw Error(`Google token exchange failed: ${s}`)}let o=await t.json(),e={accessToken:o.access_token,refreshToken:o.refresh_token,expiresAt:o.expires_in?new Date(Date.now()+o.expires_in*1000):void 0,scope:o.scope},a=await fetch("https://www.googleapis.com/oauth2/v3/userinfo",{headers:{Authorization:`Bearer ${o.access_token}`}});if(!a.ok)throw Error("Failed to fetch Google user info");let c=await a.json();return{profile:{providerAccountId:c.sub,email:c.email,name:c.name,avatarUrl:c.picture,rawProfile:c},tokens:e}}function mb(n){return`https://login.microsoftonline.com/${n.tenantId??"common"}/oauth2/v2.0`}function wb(n,r){let t=n.scopes??["openid","email","profile","User.Read"],o=new URLSearchParams({client_id:n.clientId,redirect_uri:n.redirectUri,response_type:"code",scope:t.join(" "),state:r,response_mode:"query",...n.extraAuthParams});return`${mb(n)}/authorize?${o.toString()}`}async function hb(n,r){let t=await fetch(`${mb(r)}/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({code:n,client_id:r.clientId,client_secret:r.clientSecret,redirect_uri:r.redirectUri,grant_type:"authorization_code"}).toString()});if(!t.ok){let s=await t.text();throw Error(`Microsoft token exchange failed: ${s}`)}let o=await t.json();if(o.error)throw Error(`Microsoft OAuth error: ${o.error_description||o.error}`);let e={accessToken:o.access_token,refreshToken:o.refresh_token,expiresAt:o.expires_in?new Date(Date.now()+o.expires_in*1000):void 0,scope:o.scope},a=await fetch("https://graph.microsoft.com/v1.0/me",{headers:{Authorization:`Bearer ${o.access_token}`}});if(!a.ok)throw Error("Failed to fetch Microsoft user info");let c=await a.json();return{profile:{providerAccountId:c.id,email:c.mail??c.userPrincipalName,name:c.displayName,avatarUrl:void 0,rawProfile:c},tokens:e}}function $b(n,r){if(!n.authorizationUrl)throw Error("Generic OAuth provider requires authorizationUrl");let t=n.scopes??[],o=new URLSearchParams({client_id:n.clientId,redirect_uri:n.redirectUri,response_type:"code",state:r,...t.length>0?{scope:t.join(" ")}:{},...n.extraAuthParams});return`${n.authorizationUrl}?${o.toString()}`}async function Ab(n,r){if(!r.tokenUrl)throw Error("Generic OAuth provider requires tokenUrl");let t=await fetch(r.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({code:n,client_id:r.clientId,client_secret:r.clientSecret,redirect_uri:r.redirectUri,grant_type:"authorization_code"}).toString()});if(!t.ok){let s=await t.text();throw Error(`Generic OAuth token exchange failed: ${s}`)}let o=await t.json();if(o.error)throw Error(`OAuth error: ${o.error_description||o.error}`);let e={accessToken:o.access_token,refreshToken:o.refresh_token,expiresAt:o.expires_in?new Date(Date.now()+o.expires_in*1000):void 0,scope:o.scope};if(!r.userInfoUrl)return{profile:{providerAccountId:o.access_token,rawProfile:o},tokens:e};let a=await fetch(r.userInfoUrl,{headers:{Authorization:`Bearer ${o.access_token}`}});if(!a.ok)throw Error("Failed to fetch user info from generic OAuth provider");let c=await a.json();return{profile:{providerAccountId:c.id??c.sub??c.user_id??o.access_token,email:c.email,name:c.name??c.display_name??c.username,avatarUrl:c.avatar_url??c.picture??c.photo,rawProfile:c},tokens:e}}import{randomBytes as wh}from"crypto";class Vc{config;stateStore=new Map;cleanupInterval=null;constructor(n){this.config=n;let r=(n.stateTtlSeconds??600)*1000;this.cleanupInterval=setInterval(()=>{let t=Date.now();for(let[o,e]of this.stateStore.entries())if(e.expiresAt<t)this.stateStore.delete(o)},r)}stop(){if(this.cleanupInterval)clearInterval(this.cleanupInterval),this.cleanupInterval=null}isProviderEnabled(n){return!!(this.config.enabled&&this.config.providers[n])}getEnabledProviders(){if(!this.config.enabled)return[];return Object.keys(this.config.providers)}buildAuthorizationUrl(n,r,t){let o=this.config.providers[n];if(!o)throw Error(`OAuth provider "${n}" is not configured`);let e={provider:n,linkUserId:r,redirectUrl:t,createdAt:Date.now()},a=wh(32).toString("hex"),c=(this.config.stateTtlSeconds??600)*1000;switch(this.stateStore.set(a,{payload:e,expiresAt:Date.now()+c}),n){case"google":return gb(o,a);case"github":return ub(o,a);case"microsoft":return wb(o,a);default:return $b(o,a)}}consumeState(n){let r=this.stateStore.get(n);if(!r)return null;if(r.expiresAt<Date.now())return this.stateStore.delete(n),null;return this.stateStore.delete(n),r.payload}async exchangeCode(n,r){let t=this.config.providers[n];if(!t)throw Error(`OAuth provider "${n}" is not configured`);switch(n){case"google":return _b(r,t);case"github":return bb(r,t);case"microsoft":return hb(r,t);default:return Ab(r,t)}}get allowAccountLinking(){return this.config.allowAccountLinking??!0}get autoCreateUser(){return this.config.autoCreateUser??!0}get successRedirectUrl(){return this.config.successRedirectUrl??"/"}get errorRedirectUrl(){return this.config.errorRedirectUrl??"/login"}get sendInviteOnCreate(){return this.config.sendInviteOnCreate??!1}get basePath(){return this.config.basePath??"/auth/oauth"}}var Rb=()=>{};var Ul=d(()=>{Rb()});class Bl{redis;logger;config;constructor(n){this.redis=n.redis,this.logger=n.logger,this.config=this.mergeConfig(n.config)}mergeConfig(n){return{enabled:n.enabled??cr.enabled,strategy:n.strategy??cr.strategy,keyPrefix:n.keyPrefix??cr.keyPrefix,authRoutes:{window:n.authRoutes?.window??cr.authRoutes.window,max:n.authRoutes?.max??cr.authRoutes.max,login:{window:n.authRoutes?.login?.window??Cc.window,max:n.authRoutes?.login?.max??Cc.max,blockDuration:n.authRoutes?.login?.blockDuration??Cc.blockDuration},register:{window:n.authRoutes?.register?.window??xc.window,max:n.authRoutes?.register?.max??xc.max,blockDuration:n.authRoutes?.register?.blockDuration??xc.blockDuration},passwordReset:{window:n.authRoutes?.passwordReset?.window??Qc.window,max:n.authRoutes?.passwordReset?.max??Qc.max,blockDuration:n.authRoutes?.passwordReset?.blockDuration??Qc.blockDuration},magicLink:{window:n.authRoutes?.magicLink?.window??Pc.window,max:n.authRoutes?.magicLink?.max??Pc.max,blockDuration:n.authRoutes?.magicLink?.blockDuration??Pc.blockDuration}},publicRoutes:{window:n.publicRoutes?.window??cr.publicRoutes.window,max:n.publicRoutes?.max??cr.publicRoutes.max},privateRoutes:{window:n.privateRoutes?.window??cr.privateRoutes.window,max:n.privateRoutes?.max??cr.privateRoutes.max},byIp:n.byIp??cr.byIp,byUserId:n.byUserId??cr.byUserId,byEndpoint:n.byEndpoint??cr.byEndpoint,skipSuccessfulRequests:n.skipSuccessfulRequests??cr.skipSuccessfulRequests,headers:{remaining:n.headers?.remaining??cr.headers.remaining,reset:n.headers?.reset??cr.headers.reset,limit:n.headers?.limit??cr.headers.limit},whitelist:n.whitelist??cr.whitelist,blacklist:n.blacklist??cr.blacklist}}parseTimeToMs(n){let r=n.match(/^(\d+)(ms|s|m|h|d)$/);if(!r||!r[1]||!r[2])return 60000;let t=parseInt(r[1],10);switch(r[2]){case"ms":return t;case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;case"d":return t*24*60*60*1000;default:return 60000}}buildKey(n){let r=[this.config.keyPrefix,n.category];if(n.authType&&n.authType!=="other")r.push(n.authType);if(this.config.byIp&&n.ip)r.push(`ip:${n.ip}`);if(this.config.byUserId&&n.userId)r.push(`user:${n.userId}`);if(this.config.byEndpoint&&n.endpoint)r.push(`ep:${n.endpoint.replace(/\//g,"_")}`);return r.join(":")}getLimits(n,r){if(n==="auth"){if(r&&r!=="other"){let t=this.config.authRoutes[r];if(t)return t}return{window:this.config.authRoutes.window,max:this.config.authRoutes.max}}if(n==="public")return this.config.publicRoutes;return this.config.privateRoutes}isWhitelisted(n){return this.config.whitelist.some((r)=>{if(r.includes("*"))return new RegExp(`^${r.replace(/\*/g,".*")}$`).test(n);return r===n})}isBlacklisted(n){return this.config.blacklist.some((r)=>{if(r.includes("*"))return new RegExp(`^${r.replace(/\*/g,".*")}$`).test(n);return r===n})}async readRedis(n){let r=await this.redis.read(n);if(r.success)return r.data;return null}async check(n){if(!this.config.enabled)return{allowed:!0,remaining:-1,resetAt:0,limit:-1};if(this.isWhitelisted(n.ip))return{allowed:!0,remaining:-1,resetAt:0,limit:-1};if(this.isBlacklisted(n.ip))return this.logger.warn(`[RateLimit] Blacklisted IP: ${n.ip}`),{allowed:!1,remaining:0,resetAt:Date.now()+86400000,limit:0,retryAfter:86400};let r=this.buildKey(n),t=this.getLimits(n.category,n.authType),o=this.parseTimeToMs(t.window),e=`${r}:blocked`,a=await this.readRedis(e);if(a&&a.until>Date.now()){let c=Math.ceil((a.until-Date.now())/1000);return this.logger.warn(`[RateLimit] Blocked: ${r}, retry after ${c}s`),{allowed:!1,remaining:0,resetAt:a.until,limit:t.max,retryAfter:c}}if(this.config.strategy==="sliding-window")return this.slidingWindowCheck(r,t.max,o,t.blockDuration);if(this.config.strategy==="fixed-window")return this.fixedWindowCheck(r,t.max,o,t.blockDuration);return this.tokenBucketCheck(r,t.max,o)}async slidingWindowCheck(n,r,t,o){let e=Date.now(),a=e-t,c=`${n}:sw`,s=(await this.readRedis(c))?.timestamps||[];s=s.filter((b)=>b>a);let l=s.length,f=s[0],u=f!==void 0?f+t:e+t;if(l>=r){if(o){let b=this.parseTimeToMs(o);await this.redis.create(`${n}:blocked`,{until:e+b},Math.ceil(b/1000))}return{allowed:!1,remaining:0,resetAt:u,limit:r,retryAfter:Math.ceil((u-e)/1000)}}return s.push(e),await this.redis.create(c,{timestamps:s},Math.ceil(t/1000)+1),{allowed:!0,remaining:r-s.length,resetAt:u,limit:r}}async fixedWindowCheck(n,r,t,o){let e=Date.now(),a=Math.floor(e/t),c=`${n}:fw:${a}`,i=(a+1)*t,l=(await this.readRedis(c))?.count||0;if(l>=r){if(o){let f=this.parseTimeToMs(o);await this.redis.create(`${n}:blocked`,{until:e+f},Math.ceil(f/1000))}return{allowed:!1,remaining:0,resetAt:i,limit:r,retryAfter:Math.ceil((i-e)/1000)}}return await this.redis.create(c,{count:l+1},Math.ceil(t/1000)+1),{allowed:!0,remaining:r-(l+1),resetAt:i,limit:r}}async tokenBucketCheck(n,r,t){let o=Date.now(),e=r/t,a=`${n}:tb`,c=await this.readRedis(a),i=c?.tokens??r,s=c?.lastRefill??o,f=(o-s)*e;if(i=Math.min(r,i+f),i<1){let u=Math.ceil((1-i)/e);return{allowed:!1,remaining:0,resetAt:o+u,limit:r,retryAfter:Math.ceil(u/1000)}}return i-=1,await this.redis.create(a,{tokens:i,lastRefill:o},Math.ceil(t/1000)*2),{allowed:!0,remaining:Math.floor(i),resetAt:o+t,limit:r}}async decrement(n){if(!this.config.skipSuccessfulRequests)return;let r=this.buildKey(n);if(this.config.strategy==="sliding-window"){let t=`${r}:sw`,o=await this.readRedis(t);if(o?.timestamps?.length){o.timestamps.pop();let e=this.parseTimeToMs(this.getLimits(n.category,n.authType).window);await this.redis.create(t,o,Math.ceil(e/1000)+1)}}else if(this.config.strategy==="fixed-window"){let t=this.parseTimeToMs(this.getLimits(n.category,n.authType).window),o=Math.floor(Date.now()/t),e=`${r}:fw:${o}`,a=await this.readRedis(e);if(a?.count)await this.redis.create(e,{count:a.count-1},Math.ceil(t/1000)+1)}}getHeaders(n){let r={};return r[this.config.headers.remaining]=String(n.remaining),r[this.config.headers.reset]=String(Math.ceil(n.resetAt/1000)),r[this.config.headers.limit]=String(n.limit),r}isEnabled(){return this.config.enabled}}var Cc,xc,Qc,Pc,cr;var kb=d(()=>{Cc={window:"15m",max:5,blockDuration:"30m"},xc={window:"1h",max:3,blockDuration:"1h"},Qc={window:"1h",max:3,blockDuration:"1h"},Pc={window:"1h",max:5,blockDuration:"1h"},cr={enabled:!0,strategy:"sliding-window",keyPrefix:"rl:",authRoutes:{window:"1m",max:10,login:Cc,register:xc,passwordReset:Qc,magicLink:Pc},publicRoutes:{window:"1m",max:100},privateRoutes:{window:"1m",max:60},byIp:!0,byUserId:!0,byEndpoint:!1,skipSuccessfulRequests:!1,headers:{remaining:"X-RateLimit-Remaining",reset:"X-RateLimit-Reset",limit:"X-RateLimit-Limit"},whitelist:[],blacklist:[]}});var Eb=()=>{};import{and as Gc,desc as hh,eq as Xr}from"drizzle-orm";class Wl{db;schemaTables;config;logger;constructor(n){this.db=n.db,this.schemaTables=n.schemaTables,this.config=n.config,this.logger=n.logger}getTable(n){return this.schemaTables[n]}getCol(n,r){return n[r]}async getStatus(n,r){let t=this.getTable("verificationFlows"),o=this.getTable("verificationSteps"),e=this.getTable("verifications"),a=this.getTable("verificationRequirements");if(!t||!o||!e||!a)return this.logger.error("[Verification] Required tables not found"),{entity_name:n,entity_id:r,flow:null,current_step:0,total_steps:0,is_completed:!1,is_rejected:!1,verifications:[],pending_verifiers:[]};let i=(await this.db.select().from(t).where(Gc(Xr(this.getCol(t,"entity_name"),n),Xr(this.getCol(t,"is_draft"),!1))).limit(1))[0];if(!i)return{entity_name:n,entity_id:r,flow:null,current_step:0,total_steps:0,is_completed:!0,is_rejected:!1,verifications:[],pending_verifiers:[]};let s=await this.db.select().from(a).where(Xr(this.getCol(a,"entity_name"),n)).orderBy(this.getCol(a,"step_order")),l=await this.db.select().from(e).where(Gc(Xr(this.getCol(e,"entity_name"),n),Xr(this.getCol(e,"entity_id"),r))).orderBy(hh(this.getCol(e,"created_at"))),f=s.length,u=l.filter((E)=>E.decision==="approved"),b=l.find((E)=>E.decision==="rejected"),$=b?1:u.length+1,A=u.length>=f&&!b,_=!!b,m=s.filter((E)=>E.step_order>=$);return{entity_name:n,entity_id:r,flow:i,current_step:$,total_steps:f,is_completed:A,is_rejected:_,verifications:l,pending_verifiers:m.map((E)=>({step_order:E.step_order,verifier_type:E.verifier_type,verifier_id:E.verifier_id,verifier_role:E.verifier_role,is_signature_mandatory:E.is_signature_mandatory}))}}async decide(n){let{entity_name:r,entity_id:t,user_id:o,decision:e,reason:a,signature_id:c,diff:i}=n,s=this.getTable("verifications"),l=this.getTable("verificationRequirements"),f=this.getTable("user_roles"),u=this.getTable("roles");if(!s||!l)return{success:!1,message:"Verification tables not configured"};let b=await this.getStatus(r,t);if(b.is_completed)return{success:!1,message:"Verification flow already completed"};if(b.total_steps===0)return{success:!1,message:"No verification flow configured for this entity"};let $=b.pending_verifiers.filter((D)=>D.step_order===b.current_step);if($.length===0)return{success:!1,message:"No pending requirements for current step"};let A=!1,_=null;for(let D of $){if(D.verifier_type==="user"&&D.verifier_id===o){A=!0,_=D;break}if(D.verifier_type==="role"&&D.verifier_role&&f&&u){let k=f,B=u;if((await this.db.select({role_name:B.name}).from(f).innerJoin(u,Xr(k.role_id,B.id)).where(Xr(k.user_id,o))).some((Y)=>Y.role_name===D.verifier_role)){A=!0,_=D;break}}if(D.verifier_type==="entity_creator"){A=!0,_=D;break}}if(!A||!_)return{success:!1,message:"User is not authorized to verify at this step"};if(_.is_signature_mandatory&&!c)return{success:!1,message:"Signature is required for this verification step"};let E=(await this.db.select().from(l).where(Gc(Xr(this.getCol(l,"entity_name"),r),Xr(this.getCol(l,"step_order"),b.current_step))))[0];if(!E)return{success:!1,message:"Requirement not found"};let R={requirement_id:E.id,verifier_id:o,signature_id:c||null,entity_name:r,entity_id:t,step_order:b.current_step,decision:e,reason:a||null,diff:i||null},[M]=await this.db.insert(s).values(R).returning();if(e==="rejected"&&this.config.autoResetOnRejection)this.logger.info(`[Verification] Flow reset due to rejection for ${r}:${t}`);let S=e==="approved"&&b.current_step>=b.total_steps,x=e==="approved"?b.current_step+1:1;return{success:!0,message:e==="approved"?S?"Verification flow completed":`Step ${b.current_step} approved`:"Verification rejected, flow reset",verification:M,flow_completed:S,next_step:S?void 0:x}}async getPending(n){let r=this.getTable("verificationRequirements"),t=this.getTable("verificationFlows"),o=this.getTable("user_roles"),e=this.getTable("roles");if(!r||!t)return[];let a=o,c=e,s=(o&&e?await this.db.select({role_name:c.name}).from(o).innerJoin(e,Xr(a.role_id,c.id)).where(Xr(a.user_id,n)):[]).map((u)=>u.role_name),l=await this.db.select().from(r),f=[];for(let u of l){if(!(u.verifier_type==="user"&&u.verifier_id===n||u.verifier_type==="role"&&s.includes(u.verifier_role)||u.verifier_type==="entity_creator"))continue;let A=(await this.db.select().from(t).where(Gc(Xr(this.getCol(t,"entity_name"),u.entity_name),Xr(this.getCol(t,"is_draft"),!1))).limit(1))[0];if(!A)continue;f.push({entity_name:u.entity_name,entity_id:u.entity_id,flow_name:A.name,step_order:u.step_order,step_name:void 0,is_signature_mandatory:u.is_signature_mandatory,created_at:u.created_at,diff:void 0})}return f}}var Yl=d(()=>{Eb()});var Jl=d(()=>{Qu();Rl();Sl();tb();ob();lb();db();Ul();kb();Yl()});import{access as LD,mkdir as Eh}from"fs/promises";import{dirname as Sh,resolve as Db}from"path";var ga,Vl,Dn=(n)=>{if(!n||typeof n!=="string")throw pn("INVALID_PATH","Path must be a non-empty string",n,"resolvePath");return Db(n)},xt=(n)=>{let r=Dn(n);return Sh(r)},et=async(n)=>{let r=Db(n);try{await Eh(r,{recursive:!0})}catch(t){if(t.code!=="EEXIST")throw pn("DIRECTORY_CREATE_FAILED",`Failed to create directory: ${r}`,r,"ensureDirectory")}},Cl=(n)=>{let r=n,t=0;while(r>=1024&&t<Vl.length-1)r/=1024,t++;return`${r.toFixed(2)} ${Vl[t]}`},Hb=(n,r)=>{return n.toLowerCase().endsWith(r.toLowerCase())},xl=(n,r)=>{let t=r.startsWith(".")?r:`.${r}`;if(Hb(n,t))return n;return`${n}${t}`},pn=(n,r,t,o)=>{return{code:n,message:r,path:t,operation:o||"unknown"}},Oc=(n)=>{try{return JSON.stringify(n,null,2)}catch{return"{}"}},Ql=async(n,r,t=ga.maxConcurrency)=>{let o=[];for(let e=0;e<n.length;e+=t){let a=n.slice(e,e+t),c=[];for(let s of a)c.push(r(s));let i=await Promise.allSettled(c);o.push(...i)}return o},Nc=(n,r={})=>{let t=[],o=[],e=r.strict??!0;if(n.defaultEncoding!==void 0){if(!["utf-8","utf8","ascii","base64","hex"].includes(n.defaultEncoding))t.push(`Invalid defaultEncoding: ${n.defaultEncoding}`)}if(n.maxConcurrency!==void 0){if(!Number.isInteger(n.maxConcurrency)||n.maxConcurrency<1)t.push("maxConcurrency must be a positive integer");if(n.maxConcurrency>50)o.push("maxConcurrency > 50 may cause performance issues")}if(n.defaultCreateDir!==void 0&&typeof n.defaultCreateDir!=="boolean")t.push("defaultCreateDir must be a boolean");if(n.defaultRecursive!==void 0&&typeof n.defaultRecursive!=="boolean")t.push("defaultRecursive must be a boolean");if(e&&!r.allowUnknownKeys){let a=["defaultEncoding","defaultCreateDir","defaultRecursive","maxConcurrency"],c=Object.keys(n);for(let i of c)if(!a.includes(i))t.push(`Unknown configuration key: ${i}`)}return{isValid:t.length===0,errors:t,warnings:o}},zb=(n,r=ga)=>{let t=Nc(n);if(!t.isValid)throw pn("CONFIG_VALIDATION_FAILED",`Configuration validation failed: ${t.errors.join(", ")}`,void 0,"mergeConfig");return{...r,...n}},Ub=(n)=>{let r=(a)=>({read:Boolean(a&4),write:Boolean(a&2),execute:Boolean(a&1)}),t=n>>6&7,o=n>>3&7,e=n&7;return{owner:r(t),group:r(o),others:r(e)}},Bb=(n)=>{return Number.isInteger(n)&&n>=0&&n<=511};var be=d(()=>{ga={defaultEncoding:"utf-8",defaultCreateDir:!0,defaultRecursive:!0,maxConcurrency:5},Vl=["B","KB","MB","GB","TB"]});import{copyFile as Pl,rename as Gl,unlink as Mh}from"fs/promises";import{basename as Wb,dirname as Yb,extname as Dh,join as Hh}from"path";var qc,zh=(n,r=".tmp")=>{let t=Dn(n),o=Date.now(),e=Math.random().toString(36).substring(2,8);return`${t}${r}.${o}.${e}`},Jb=(n,r,t=!0)=>{let o=Dn(n),e=r?Dn(r):Yb(o),a=Wb(o),c=Dh(a),i=Wb(a,c),s=t?`.${new Date().toISOString().replace(/[:.]/g,"-")}`:"",l=`${i}.backup${s}${c}`;return Hh(e,l)},_a=async({path:n,data:r,tempSuffix:t=qc.tempSuffix,backup:o=qc.backup,sync:e=qc.sync})=>{let a=Dn(n),c=zh(a,t),i;try{if(await et(xt(a)),o){if(await Bun.file(a).exists())i=Jb(a),await Pl(a,i)}let s=await Bun.write(c,r);return await Gl(c,a),{success:!0,bytesWritten:s,tempPath:c,backupPath:i}}catch(s){try{await Mh(c)}catch{}throw pn("ATOMIC_WRITE_FAILED",`Atomic write failed: ${s}`,a,"atomicWrite")}},Lb=async(n,r,t={})=>{let o=JSON.stringify(r,null,2);return _a({path:n,data:o,...t})},Ol=async({sourcePath:n,backupDir:r,keepOriginal:t=!0,timestamp:o=qc.timestamp})=>{let e=Dn(n);if(!await Bun.file(e).exists())throw pn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,e,"createBackup");let c=Jb(e,r,o);if(await et(Yb(c)),t)await Pl(e,c);else await Gl(e,c);return c},Nl=async(n,r,t=!1)=>{let o=Dn(n),e=Dn(r);if(!await Bun.file(o).exists())throw pn("BACKUP_NOT_FOUND",`Backup file not found: ${n}`,o,"restoreFromBackup");try{if(await et(xt(e)),t)await Gl(o,e);else await Pl(o,e);return!0}catch(c){return console.error(`Error restoring from backup ${n}:`,c),!1}},Xb=async(n,r,t={})=>{let o=Dn(n),e=Bun.file(o),a;try{if(await e.exists())a=await Ol({sourcePath:o,keepOriginal:!0,timestamp:!0});let c=await e.exists()?await e.text():"",i=await r(c),s=await _a({path:o,data:i,backup:!1,...t});return{success:s.success,bytesWritten:s.bytesWritten,tempPath:s.tempPath,backupPath:a}}catch(c){if(a)try{await Nl(a,o,!1)}catch(i){console.error("Rollback failed:",i)}throw c}},Vb=async(n)=>{let r=[],t=[];for(let o of n)try{let e=await _a(o);r.push(e)}catch(e){t.push({operation:o,error:e})}return{successful:r,failed:t}};var Cb=d(()=>{be();qc={tempSuffix:".tmp",backup:!1,sync:!0,timestamp:!0}});import{chmod as Uh,stat as Bh}from"fs/promises";var Wh,co=async(n,r)=>{let t=Dn(n);if(!Bb(r))throw pn("INVALID_PERMISSION_MODE",`Invalid permission mode: ${r.toString(8)}`,t,"setFilePermissions");try{return await Uh(t,r),!0}catch(o){return console.error(`Error setting permissions for ${n}:`,o),!1}},Vo=async(n)=>{let r=Dn(n);try{let o=(await Bh(r)).mode&511,e=Ub(o);return{path:r,mode:o,owner:e.owner,group:e.group,others:e.others}}catch(t){throw pn("PERMISSION_READ_FAILED",`Failed to read permissions: ${t}`,r,"getFilePermissions")}},xb=async(n,r)=>{try{return((await Vo(n)).mode&r)===r}catch{return!1}},Qb=async(n)=>{let t=(await Vo(n)).mode|256;return co(n,t)},Pb=async(n)=>{let t=(await Vo(n)).mode|128;return co(n,t)},Gb=async(n)=>{let t=(await Vo(n)).mode|64;return co(n,t)},Ob=async(n)=>{let t=(await Vo(n)).mode&-147;return co(n,t)},Nb=async(n,r)=>{let t=Wh[r];return co(n,t)};var qb=d(()=>{be();Wh={OWNER_READ_WRITE:384,OWNER_ALL:448,GROUP_READ:416,GROUP_READ_WRITE:432,ALL_READ:420,ALL_READ_WRITE:438,ALL_READ_EXECUTE:493,ALL_FULL:511,READ_ONLY:292,EXECUTABLE:493}});var Yh,Fc=async(n,r={})=>{let t=Dn(n),o={...Yh,...r};await et(xt(t));let a=Bun.file(t).writer({highWaterMark:o.highWaterMark}),c=!1;return{write:(s)=>{if(c)throw pn("WRITER_CLOSED","Cannot write to closed writer",t,"streamWrite");try{let l=a.write(s);if(o.autoFlush)a.flush();return l}catch(l){throw pn("WRITE_FAILED",`Failed to write chunk: ${l}`,t,"streamWrite")}},flush:()=>{if(c)return 0;try{return a.flush()}catch(s){throw pn("FLUSH_FAILED",`Failed to flush writer: ${s}`,t,"streamFlush")}},end:async(s)=>{if(c)return 0;try{let l=await a.end(s);return c=!0,l}catch(l){throw c=!0,pn("END_FAILED",`Failed to end writer: ${l}`,t,"streamEnd")}},ref:()=>{if(!c)a.ref()},unref:()=>{if(!c)a.unref()}}},ql=async(n,r,t={})=>{let o=await Fc(n,t),e=0;try{for(let a of r){let c=o.write(a);e+=c}return await o.flush(),await o.end(),e}catch(a){try{await o.end(a)}catch{}throw a}},Fb=async(n,r,t={})=>{let o=Dn(n),e=Bun.file(o),a=await e.exists()?await e.arrayBuffer():new ArrayBuffer(0),c=[];if(a.byteLength>0)c.push(a);return c.push(...r),ql(o,c,t)},jb=async(n,r,t={})=>{let o=Dn(n),e=Bun.file(o);if(!await e.exists())throw pn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,o,"copyFileStream");let a=e.stream(),c=await Fc(r,t),i=0;try{let s=a.getReader();while(!0){let{done:l,value:f}=await s.read();if(l)break;let u=c.write(f);i+=u}return await c.flush(),await c.end(),i}catch(s){try{await c.end(s)}catch{}throw s}},pb=async(n,r)=>{let t=Dn(n),o=Bun.file(t);if(!await o.exists())throw pn("FILE_NOT_FOUND",`File not found: ${n}`,t,"readFileStream");let a=o.stream().getReader();try{while(!0){let{done:c,value:i}=await a.read();if(c)break;await r(i)}}finally{a.releaseLock()}};var Kb=d(()=>{be();Yh={highWaterMark:1048576,autoFlush:!0,closeOnEnd:!0}});import{readdir as Jh,rm as Lh,rmdir as Xh,stat as Vh}from"fs/promises";import{extname as Ch,join as xh}from"path";class io{static instance;config;constructor(){this.config={...ga}}static getInstance(){if(!io.instance)io.instance=new io;return io.instance}async createFile({dir:n,name:r,data:t,options:o={}}){let e=Dn(xh(n,r));if(o.createDir!==!1)await et(xt(e));let a=o.type?new Blob([t],{type:o.type}):t;return await Bun.write(e,a)}async createJsonFile(n,r,t){let o=xl(r,".json"),e=Oc(t);return this.createFile({dir:n,name:o,data:e,options:{type:"application/json"}})}async createDirectory({path:n}){await et(n)}async readFile({path:n,format:r="text"}){let t=Dn(n),o=Bun.file(t);if(!await o.exists())throw pn("FILE_NOT_FOUND",`File not found: ${n}`,t,"readFile");switch(r){case"text":return await o.text();case"json":return await o.json();case"buffer":return await o.arrayBuffer();case"bytes":return await o.bytes();case"stream":return o.stream();default:return await o.text()}}async readJsonFile(n){return this.readFile({path:n,format:"json"})}async getFileInfo(n){let r=Dn(n),t=Bun.file(r),o=n.split("/").pop()||n,e=null;try{e=await Vh(r)}catch{}return{name:o,path:r,size:t.size,type:t.type,exists:await t.exists(),extension:Ch(o),createdAt:e?.birthtime,modifiedAt:e?.mtime}}async readDirectory({path:n,recursive:r=!1}){let t=Dn(n);return await Jh(t,{recursive:r,encoding:"utf8"})}async getFilesByExtension(n,r){let t=await this.readDirectory({path:n}),o=r.startsWith(".")?r:`.${r}`;return t.filter((e)=>e.endsWith(o))}async updateFile({path:n,data:r,mode:t="overwrite"}){let o=Dn(n);if(t==="append"){let a=await this.readFile({path:n,format:"text"})+r;return await Bun.write(o,a)}return await Bun.write(o,r)}async updateJsonFile(n,r,t=!1){let o=r;if(t)try{let e=await this.readJsonFile(n);if(typeof e==="object"&&e!==null&&!Array.isArray(e)&&typeof r==="object"&&r!==null&&!Array.isArray(r))o={...e,...r}}catch{}return this.updateFile({path:n,data:Oc(o),mode:"overwrite"})}async appendToFile(n,r){return this.updateFile({path:n,data:r,mode:"append"})}async deleteFile(n){try{let r=Dn(n);return await Bun.file(r).delete(),!0}catch(r){return console.error(`Error deleting file ${n}:`,r),!1}}async deleteDirectory({path:n,recursive:r=!1}){try{let t=Dn(n);if(r)await Lh(t,{recursive:!0,force:!0});else await Xh(t);return!0}catch(t){return console.error(`Error deleting directory ${n}:`,t),!1}}async deleteFiles(n){let r=await Ql(n,async(e)=>{if(!await this.deleteFile(e))throw Error(`Failed to delete: ${e}`);return e}),t=[],o=[];for(let e=0;e<r.length;e++){let a=r[e],c=n[e];if(a?.status==="fulfilled")t.push(c||"");else o.push(c||"")}return{success:t,failed:o}}async exists(n){let r=Dn(n);return await Bun.file(r).exists()}async copyFile(n,r){let t=Dn(n),o=Dn(r),e=Bun.file(t);if(!await e.exists())throw pn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,t,"copyFile");return await et(xt(o)),await Bun.write(o,e)}async moveFile(n,r){try{return await this.copyFile(n,r),await this.deleteFile(n),!0}catch(t){return console.error(`Error moving file from ${n} to ${r}:`,t),!1}}getFormattedFileSize(n){return Cl(n)}getConfig(){return{...this.config}}updateConfig(n){let r=Nc(n);if(r.isValid){let t=zb(n,this.config);Object.assign(this.config,t)}return r}validateConfiguration(n){return Nc(n)}async createStreamWriter(n,r={}){return Fc(n,r)}async writeStream(n,r,t={}){return ql(n,r,t)}async appendStream(n,r,t={}){return Fb(n,r,t)}async copyFileStream(n,r,t={}){return jb(n,r,t)}async readFileStream(n,r){return pb(n,r)}async setPermissions(n,r){return co(n,r)}async setPermissionsAdvanced(n){return co(n.path,n.mode)}async getPermissions(n){return Vo(n)}async checkPermissions(n,r){return xb(n,r)}async makeFileReadable(n){return Qb(n)}async makeFileWritable(n){return Pb(n)}async makeFileExecutable(n){return Gb(n)}async makeFileReadOnly(n){return Ob(n)}async setCommonPermission(n,r){return Nb(n,r)}async atomicWrite(n){return _a(n)}async atomicJsonWrite(n,r,t={}){return Lb(n,r,t)}async createFileBackup(n){return Ol(n)}async restoreFileFromBackup(n,r,t=!1){return Nl(n,r,t)}async safeFileUpdate(n,r,t={}){return Xb(n,r,t)}async batchAtomicOperations(n){return Vb(n)}}var Fl=d(()=>{Cb();qb();Kb();be()});var St;var jc=d(()=>{Fl();be();Fl();St=io.getInstance()});import{Pool as l9}from"pg";var Tb=()=>{};var vb=d(()=>{il();jc();Tb();Ct()});function Zb(n,r){let t=(n.get("cookie")?.split(";")||[]).reduce((o,e)=>{let[a,c]=e.trim().split("=");if(a&&c)o[a]=c;return o},{});return{access_token:t[r.access_token]||n.get("authorization")?.split(" ")[1],refresh_token:t[r.refresh_token],session_token:t[r.session_token]}}function pl(n){if(!n.redis){console.log("Redis not configured, skipping");return}if(n.redis.withDapr){jl=new jn({withDapr:!0,stateStoreName:n.redis.stateStoreName});return}let r=n.redis.url?process.env[n.redis.url]:void 0,t=n.redis.host?process.env[n.redis.host]:void 0,o=n.redis.port?parseInt(process.env[n.redis.port]||"",10):void 0;jl=new jn({url:r,host:t,port:Number.isNaN(o)?void 0:o})}function pc(){return jl}function at(n){if(typeof n==="number")return n;if(!n||n.trim()==="")throw Error("Time string cannot be empty");let r=n.trim().match(/^(\d+(?:\.\d+)?)\s*([smhdwMy])$/);if(!r||!r[1]||!r[2])throw Error(`Invalid time format: "${n}". Expected format: "75s", "10m", "2h", "1d", "1w", "2M", "1y"`);let t=parseFloat(r[1]),o=r[2],a={s:1,m:60,h:3600,d:86400,w:604800,M:2592000,y:31536000}[o];if(a===void 0)throw Error(`Unknown time unit: "${o}"`);let c=Math.floor(t*a);if(c<=0)throw Error(`Time value must be positive: "${n}"`);return c}function yb({sessionData:n,options:r,refreshTokenId:t}){let o=r.authentication?.accessToken?.secret;if(!o)throw Error("Access token secret env name is not configured");let e=process.env[o];if(!e)throw Error(`Access token secret env "${o}" is not set`);return sa({subject:n.userId,issuer:r.authentication?.accessToken?.issuer,audience:r.authentication?.accessToken?.audience,algorithm:r.authentication?.accessToken?.algorithm,expiresInSeconds:at(r.authentication?.accessToken?.expiresIn??"15m"),sessionId:n.id,customClaims:{refreshTokenId:t}},e)}function Co(n,r){return n?{entityName:n.entity_name,entityId:n.entity_id===" - "?null:n.entity_id,operation:n.operation_type,userId:n.user_id==="unknown"?null:n.user_id,summary:r,ipAddress:n.ip_address,userAgent:n.user_agent,path:n.path,query:n.query}:void 0}function Kl(n){let r=(a)=>{if(typeof a!=="string")return;try{return JSON.parse(a)}catch{return}},t=n.page?parseInt(n.page,10):1,o=n.limit?parseInt(n.limit,10):20,e=n.offset?parseInt(n.offset,10):(t-1)*o;return{page:t,limit:o,offset:e,search:n.search,searchFields:n.searchFields?n.searchFields.split(","):void 0,filters:r(n.filters),sort:r(n.sort),select:n.select?n.select.split(","):void 0,with:r(n.with),distinct:n.distinct==="true",distinctOn:n.distinctOn?n.distinctOn.split(","):void 0}}function ng(n,r,t,o){let e=Math.ceil(o/r),a=n<e,c=n>1;return{page:n,limit:r,offset:t,totalItems:o,totalPages:e,hasNextPage:a,hasPrevPage:c,nextPage:a?n+1:null,prevPage:c?n-1:null}}function Ph(n){let r=["varchar","char","text","uuid","citext","bit","varbit"],t=["integer","smallint","bigint","serial","smallserial","bigserial","real","doublePrecision","numeric","decimal"],o=["boolean"];if(r.includes(n))return(e)=>({valid:typeof e==="string",expectedType:"string"});if(t.includes(n))return(e)=>({valid:typeof e==="number",expectedType:"number"});if(o.includes(n))return(e)=>({valid:typeof e==="boolean",expectedType:"boolean"});if(n==="json"||n==="jsonb")return(e)=>({valid:typeof e==="object",expectedType:"object"});return()=>({valid:!0,expectedType:"any"})}function ge(n,r,t=!1){let o=[];for(let e of r){let a=n[e.name],c=e.notNull&&!e.nullable&&e.default===void 0&&!e.defaultRaw;if(a===void 0||a===null){if(c&&!t)o.push({field:e.name,message:e.validation?.customMessage||`${e.name} is required`});continue}let i=Ph(e.type)(a);if(!i.valid){o.push({field:e.name,message:e.validation?.customMessage||`${e.name} must be of type ${i.expectedType}`});continue}if(typeof a==="string"){let s=a.length;if(e.length&&s>e.length)o.push({field:e.name,message:e.validation?.customMessage||`${e.name} exceeds max length of ${e.length}`});if(e.validation?.minLength&&s<e.validation.minLength)o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be at least ${e.validation.minLength} characters`});if(e.validation?.maxLength&&s>e.validation.maxLength)o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be at most ${e.validation.maxLength} characters`});if(e.validation?.pattern){if(!new RegExp(e.validation.pattern).test(a))o.push({field:e.name,message:e.validation.customMessage||`${e.name} does not match required pattern`})}if(e.validation?.format){let l=Qh[e.validation.format];if(l&&!l.test(a))o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be a valid ${e.validation.format}`})}}if(typeof a==="number"){if(e.validation?.min!==void 0&&a<e.validation.min)o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be at least ${e.validation.min}`});if(e.validation?.max!==void 0&&a>e.validation.max)o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be at most ${e.validation.max}`})}if(e.enumValues&&e.enumValues.length>0){if(!e.enumValues.includes(a))o.push({field:e.name,message:e.validation?.customMessage||`${e.name} must be one of: ${e.enumValues.join(", ")}`})}}return{valid:o.length===0,errors:o}}function Oh(n){return n.replace(/[&<>"'`=/]/g,(r)=>Gh[r]||r)}function Nh(n){return n.replace(/<[^>]*>/g,"")}function qh(n){let r=n.split("@"),t=r[0],o=r[1];if(!t||!o)return n;let e=t.split("+")[0];if(!e)return n;return`${e.replace(/\./g,"")}@${o.toLowerCase()}`}function Fh(n){return n.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function jh(n,r){if(n===null||n===void 0)return n;switch(r){case"trim":return typeof n==="string"?n.trim():n;case"lowercase":return typeof n==="string"?n.toLowerCase():n;case"uppercase":return typeof n==="string"?n.toUpperCase():n;case"escapeHtml":return typeof n==="string"?Oh(n):n;case"stripTags":return typeof n==="string"?Nh(n):n;case"normalizeEmail":return typeof n==="string"?qh(n):n;case"toNumber":if(typeof n==="number")return n;if(typeof n==="string"){let t=Number(n);return Number.isNaN(t)?n:t}return n;case"toBoolean":if(typeof n==="boolean")return n;if(typeof n==="string"){let t=n.toLowerCase();if(t==="true"||t==="1"||t==="yes")return!0;if(t==="false"||t==="0"||t==="no")return!1}if(typeof n==="number")return n!==0;return n;case"slugify":return typeof n==="string"?Fh(n):n;default:return n}}function _e(n,r){let t={};for(let o of Object.keys(n)){let e=n[o],a=r.find((c)=>c.name===o);if(a?.sanitize&&a.sanitize.length>0)for(let c of a.sanitize)e=jh(e,c);t[o]=e}return t}async function rg(n,r,t){let o=new jn,e=`${Kh}${n}`,a=`${ph}${n}:${r}`,c=await o.read(a);if(c.success&&c.data)return{success:!0,accessToken:c.data,fromCache:!0};let i=await o.acquireLock(e,Th);if(!i.success)return{success:!1,error:i.error};if(i.data)try{let u=t();return await o.create(a,u,Ib),{success:!0,accessToken:u,fromCache:!1}}finally{await o.releaseLock(e)}let s=await o.waitForLock(e,vh,50);if(!s.success)return{success:!1,error:s.error};if(!s.data)return{success:!1,error:"Lock wait timeout"};let l=await o.read(a);if(l.success&&l.data)return{success:!0,accessToken:l.data,fromCache:!0};let f=t();return await o.create(a,f,Ib),{success:!0,accessToken:f,fromCache:!1}}function tg(n){let r=[],t={};if(n.database?.url){let o=process.env[n.database.url];if(!o)r.push({field:"database.url",envName:n.database.url,message:`Environment variable "${n.database.url}" is not set. Please set it in your .env file.`});else t.databaseUrl=o}if(n.redis&&!n.redis.withDapr)if(n.redis.url){let o=process.env[n.redis.url];if(!o)r.push({field:"redis.url",envName:n.redis.url,message:`Environment variable "${n.redis.url}" is not set. Please set it in your .env file.`});else t.redisUrl=o}else{if(n.redis.host){if(!process.env[n.redis.host])r.push({field:"redis.host",envName:n.redis.host,message:`Environment variable "${n.redis.host}" is not set. Please set it in your .env file.`})}if(n.redis.port){if(!process.env[n.redis.port])r.push({field:"redis.port",envName:n.redis.port,message:`Environment variable "${n.redis.port}" is not set. Please set it in your .env file.`})}}if(n.authentication?.enabled){if(n.authentication.accessToken?.secret){let o=process.env[n.authentication.accessToken.secret];if(!o)r.push({field:"authentication.accessToken.secret",envName:n.authentication.accessToken.secret,message:`Environment variable "${n.authentication.accessToken.secret}" is not set. Please set it in your .env file.`});else t.accessTokenSecret=o}else r.push({field:"authentication.accessToken.secret",envName:"",message:"authentication.accessToken.secret is required when authentication is enabled."});if(n.authentication.refreshToken?.secret){let o=process.env[n.authentication.refreshToken.secret];if(!o)r.push({field:"authentication.refreshToken.secret",envName:n.authentication.refreshToken.secret,message:`Environment variable "${n.authentication.refreshToken.secret}" is not set. Please set it in your .env file.`});else t.refreshTokenSecret=o}else r.push({field:"authentication.refreshToken.secret",envName:"",message:"authentication.refreshToken.secret is required when authentication is enabled."});if(n.authentication.sessionToken?.secret){let o=process.env[n.authentication.sessionToken.secret];if(!o)r.push({field:"authentication.sessionToken.secret",envName:n.authentication.sessionToken.secret,message:`Environment variable "${n.authentication.sessionToken.secret}" is not set. Please set it in your .env file.`});else t.sessionTokenSecret=o}else r.push({field:"authentication.sessionToken.secret",envName:"",message:"authentication.sessionToken.secret is required when authentication is enabled."})}if(n.authentication?.oauth?.enabled&&n.authentication.oauth.providers){let o={};for(let[e,a]of Object.entries(n.authentication.oauth.providers)){if(!a)continue;let{clientId:c,clientSecret:i,redirectUri:s}=a,l=process.env[c],f=process.env[i],u=process.env[s]??s;if(!l)r.push({field:`authentication.oauth.providers.${e}.clientId`,envName:c,message:`Environment variable "${c}" is not set (OAuth ${e} clientId).`});if(!f)r.push({field:`authentication.oauth.providers.${e}.clientSecret`,envName:i,message:`Environment variable "${i}" is not set (OAuth ${e} clientSecret).`});if(l&&f)o[e]={clientId:l,clientSecret:f,redirectUri:u,scopes:a.scopes,authorizationUrl:a.authorizationUrl,tokenUrl:a.tokenUrl,userInfoUrl:a.userInfoUrl,extraAuthParams:a.extraAuthParams}}if(Object.keys(o).length>0)t.oauthProviders=o}return{valid:r.length===0,errors:r,resolved:t}}async function og(n,r){let{Pool:t}=await import("pg"),e=new URL(n).pathname.replace("/","");if(!e)return;let a=new URL(n);a.pathname="/postgres";let c=new t({connectionString:a.toString()});try{if((await c.query("SELECT 1 FROM pg_database WHERE datname = $1",[e])).rowCount===0)r.info(`[Database] Creating database "${e}"...`),await c.query(`CREATE DATABASE "${e}" TEMPLATE template0`),r.info(`[Database] Database "${e}" created successfully`);else r.info(`[Database] Database "${e}" exists`)}catch(i){let s=i instanceof Error?i.message:String(i);r.warn(`[Database] Could not auto-create database: ${s}`)}finally{await c.end()}}var jl=null,Qh,Gh,ph="access_token:",Kh="refresh_lock:",Th=5,vh=3000,Ib=60;var Kc=d(()=>{vb();Jl();Qh={email:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,url:/^https?:\/\/.+/,uuid:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,date:/^\d{4}-\d{2}-\d{2}$/,datetime:/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/,time:/^\d{2}:\d{2}:\d{2}$/,uri:/^[a-z][a-z0-9+.-]*:/i,ipv4:/^(\d{1,3}\.){3}\d{1,3}$/,ipv6:/^([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$/i};Gh={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;","`":"&#96;","=":"&#x3D;"}});import Tc from"path";import Ih,{t as vc}from"elysia";function Tl(n){if(!n)return xo;return{enabled:n.enabled??xo.enabled,basePath:n.basePath??xo.basePath,cacheMaxAge:n.cacheMaxAge??xo.cacheMaxAge,enableRangeRequests:n.enableRangeRequests??xo.enableRangeRequests,enableEtag:n.enableEtag??xo.enableEtag,corsOrigins:n.corsOrigins??xo.corsOrigins}}function Zh(n){let r=["image/","video/","audio/","text/","application/pdf"];for(let t of r)if(n.startsWith(t)||n===t)return"inline";return"attachment"}function yh(n){return n.replace(/[^A-Za-z0-9._-]+/g,"_").replace(/_{2,}/g,"_").slice(0,200)}function vl(n){let{cdn:r,storagePath:t,logger:o,getFileRecord:e}=n,a=new Ih({prefix:r.basePath});if(!r.enabled)return a;return a.get("/:id",async({params:c,request:i,set:s})=>{let{id:l}=c,f=i.headers.get("x-schema-name")||void 0,u,b,$;if(e){let g=await e(l,f);if(!g)return s.status=404,{success:!1,message:"File not found"};u=Tc.join(g.path,g.name),b=g.name,$=g.mimeType||g.mime_type||"application/octet-stream"}else u=Tc.join(t,l),b=l,$="application/octet-stream";if(!await St.exists(u))return s.status=404,{success:!1,message:"Physical file not found"};let _=await St.getFileInfo(u),m=new Date(_.modifiedAt||Date.now()).toUTCString(),E=r.enableEtag?`"${_.size}-${_.modifiedAt?.getTime()||Date.now()}"`:void 0,R={"Cache-Control":`public, max-age=${r.cacheMaxAge}`,"Last-Modified":m};if(E)R.ETag=E;if(r.corsOrigins.length>0)R["Access-Control-Allow-Origin"]=r.corsOrigins[0]==="*"?"*":r.corsOrigins.join(", "),R["Access-Control-Allow-Methods"]="GET, HEAD, OPTIONS";let M=i.headers.get("if-none-match");if(E&&M===E)return new Response(null,{status:304,headers:R});let S=Bun.file(u),x=i.headers.get("range");if(r.enableRangeRequests&&x){let g=x.match(/bytes=(\d*)-(\d*)/);if(!g)return s.status=416,new Response("Range not satisfiable",{status:416,headers:{"Content-Range":`bytes */${_.size}`,"Content-Type":$,...R}});let Y=g[1]||"0",V=g[2]||"",C=parseInt(Y,10),Q=V?parseInt(V,10):_.size-1;if(C>=_.size||Q>=_.size||C>Q)return new Response("Range not satisfiable",{status:416,headers:{"Content-Range":`bytes */${_.size}`,"Content-Type":$,...R}});let j=Q-C+1,L=S.slice(C,Q+1);return new Response(L,{status:206,headers:{"Content-Range":`bytes ${C}-${Q}/${_.size}`,"Accept-Ranges":"bytes","Content-Length":j.toString(),"Content-Type":$,...R}})}let D=Zh($),k=yh(b),B=encodeURIComponent(b),w=`${D}; filename="${k}"; filename*=UTF-8''${B}`;return new Response(S,{status:200,headers:{"Content-Length":_.size.toString(),"Content-Type":$,"Accept-Ranges":r.enableRangeRequests?"bytes":"none","Content-Disposition":w,...R}})},{params:vc.Object({id:vc.String()}),detail:{tags:["CDN"],summary:"Get file by ID",description:"Serve file with streaming, range requests, and caching support"}}),a.head("/:id",async({params:c,request:i,set:s})=>{let{id:l}=c,f=i.headers.get("x-schema-name")||void 0,u,b;if(e){let R=await e(l,f);if(!R)return s.status=404,new Response(null,{status:404});u=Tc.join(R.path,R.name),b=R.mime_type||"application/octet-stream"}else u=Tc.join(t,l),b="application/octet-stream";if(!await St.exists(u))return s.status=404,new Response(null,{status:404});let A=await St.getFileInfo(u),_=new Date(A.modifiedAt||Date.now()).toUTCString(),m=r.enableEtag?`"${A.size}-${A.modifiedAt?.getTime()||Date.now()}"`:void 0,E={"Content-Length":A.size.toString(),"Content-Type":b,"Accept-Ranges":r.enableRangeRequests?"bytes":"none","Cache-Control":`public, max-age=${r.cacheMaxAge}`,"Last-Modified":_};if(m)E.ETag=m;if(r.corsOrigins.length>0)E["Access-Control-Allow-Origin"]=r.corsOrigins[0]==="*"?"*":r.corsOrigins.join(", "),E["Access-Control-Allow-Methods"]="GET, HEAD, OPTIONS";return new Response(null,{status:200,headers:E})},{params:vc.Object({id:vc.String()}),detail:{tags:["CDN"],summary:"Get file metadata",description:"Get file headers without body for preflight checks"}}),o.info(`[CDN] Routes enabled at ${r.basePath}`),a}var xo;var eg=d(()=>{jc();xo={enabled:!0,basePath:"/cdn",cacheMaxAge:86400,enableRangeRequests:!0,enableEtag:!0,corsOrigins:["*"]}});import{randomUUID as n5}from"crypto";import Il from"path";function ma(n){if(!n)return Qt;return{enabled:n.enabled??Qt.enabled,basePath:n.basePath??Qt.basePath,maxFileSizeBytes:n.maxFileSizeBytes??Qt.maxFileSizeBytes,allowedMimeTypes:n.allowedMimeTypes??Qt.allowedMimeTypes,blockedMimeTypes:n.blockedMimeTypes??Qt.blockedMimeTypes,formData:{filesField:n.formData?.filesField??Qt.formData.filesField,dataField:n.formData?.dataField??Qt.formData.dataField,maxFiles:n.formData?.maxFiles??Qt.formData.maxFiles}}}function wa(n,r){let t={data:{},files:[]};if(!n||typeof n!=="object")return t;let o=n,e=o[r.formData.dataField];if(e){if(typeof e==="string")try{t.data=JSON.parse(e)}catch{t.data={}}else if(typeof e==="object")t.data=e}let a=o[r.formData.filesField];if(a){if(a instanceof File)t.files=[a];else if(Array.isArray(a))t.files=a.filter((c)=>c instanceof File)}return t}function Zl(n,r){if(n.size>r.maxFileSizeBytes)return{valid:!1,error:`File ${n.name} exceeds maximum size of ${r.maxFileSizeBytes} bytes`};if(r.blockedMimeTypes.length>0&&r.blockedMimeTypes.includes(n.type))return{valid:!1,error:`File type ${n.type} is not allowed`};if(r.allowedMimeTypes.length>0&&!r.allowedMimeTypes.includes(n.type))return{valid:!1,error:`File type ${n.type} is not in allowed list`};return{valid:!0}}async function yl(n,r,t){let o=n5(),e=Il.extname(n.name),a=`${o}${e}`,c=t?Il.join(r.basePath,t):r.basePath,i=await n.arrayBuffer(),s=new Uint8Array(i);return await St.createFile({dir:c,name:a,data:s,options:{type:n.type,createDir:!0}}),{id:o,name:a,originalName:n.name,path:c,mimeType:n.type,size:n.size,createdAt:new Date}}async function ha(n,r,t){let o=[],e=[];for(let a of n.slice(0,r.formData.maxFiles)){let c=Zl(a,r);if(!c.valid){e.push({file:a.name,error:c.error||"Unknown error"});continue}try{let i=await yl(a,r,t);o.push(i)}catch(i){e.push({file:a.name,error:i instanceof Error?i.message:"Upload failed"})}}return{success:o,failed:e}}async function ag(n,r){try{let t=Il.join(n,r);return await St.deleteFile(t)}catch{return!1}}var Qt;var cg=d(()=>{jc();Qt={enabled:!1,basePath:"./uploads",maxFileSizeBytes:104857600,allowedMimeTypes:[],blockedMimeTypes:["application/x-executable","application/x-msdos-program"],formData:{filesField:"files",dataField:"data",maxFiles:10}}});var ig={};no(ig,{validateFile:()=>Zl,uploadFiles:()=>ha,uploadFile:()=>yl,parseFormDataBody:()=>wa,mergeStorageConfig:()=>ma,mergeCdnConfig:()=>Tl,deleteFile:()=>ag,createCdnRoutes:()=>vl});var Ic=d(()=>{eg();cg()});import{Elysia as K$,t as Rr}from"elysia";function vg(n){let{captchaService:r,logger:t,basePath:o="/auth/captcha"}=n,e=new K$;if(!r.isEnabled())return e;return e.get(`${o}/generate`,async(a)=>{let{type:c,difficulty:i}=a.query,s=a.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||a.request.headers.get("x-real-ip")?.trim()||a.request.headers.get("cf-connecting-ip")?.trim()||"unknown",l=await r.generate(c,i,s);if(l.rateLimited)return a.set.status=429,{success:!1,message:l.message??"Too many requests. Please try again later."};return t.info("[CAPTCHA] Challenge generated via endpoint",{challengeId:l.challengeId,type:l.type,ipAddress:s}),{success:!0,data:{challengeId:l.challengeId,type:l.type,question:l.question,expiresAt:l.expiresAt,...l.imageData?{imageData:l.imageData}:{},...l.puzzleData?{puzzleData:{pieces:l.puzzleData.pieces}}:{}}}},{query:T$,detail:{tags:["Captcha"],summary:"Generate Captcha",description:"Generate a new captcha challenge"}}),e.post(`${o}/validate`,async(a)=>{let{challengeId:c,answer:i}=a.body,s=await r.validate(c,i);if(!s.valid)a.set.status=400;return s},{body:v$,detail:{tags:["Captcha"],summary:"Validate Captcha",description:"Validate a captcha answer"}}),e}var T$,v$;var Ig=d(()=>{T$=Rr.Object({type:Rr.Optional(Rr.Union([Rr.Literal("math"),Rr.Literal("image"),Rr.Literal("puzzle"),Rr.Literal("text")])),difficulty:Rr.Optional(Rr.Union([Rr.Literal("easy"),Rr.Literal("medium"),Rr.Literal("hard")]))}),v$=Rr.Object({challengeId:Rr.String(),answer:Rr.String()})});import I$ from"crypto";var{password:Z$}=globalThis.Bun;async function go(n){return await Z$.hash(n,{algorithm:"bcrypt",cost:10})}function ei(){return I$.randomBytes(32).toString("hex")}function Ye(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 Zg(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 Je=()=>{};import{sql as ai}from"drizzle-orm";import{Elysia as y$,t as ci}from"elysia";function ii(n){let{authConfig:r,registerConfig:t,emailService:o,appName:e}=n,{db:a,logger:c,usersTable:i}=r,s=new y$;if(!t.enabled||!t.emailVerification?.enabled)return s;let l="/verify-email",f="/resend-verification";return s.get(l,async(u)=>{if(!a||!i)return{success:!1,message:"Database not configured"};let b=u.query.token;if(!b)return{success:!1,message:"Verification token is required"};let $=await a.select().from(i).where(ai`email_verification_token = ${b}`).limit(1);if($.length===0)return c.warn("[AUTH] Email verification failed - invalid token"),{success:!1,message:"Invalid or expired verification token"};let A=$[0],_=A.emailVerificationTokenExpiresAt;if(_&&new Date>new Date(_))return c.warn("[AUTH] Email verification failed - token expired",{userId:A.id,email:A.email}),{success:!1,message:"Verification token has expired. Please request a new one."};if(await a.update(i).set({verifiedAt:new Date,emailVerificationToken:null,emailVerificationTokenExpiresAt:null}).where(ai`id = ${A.id}`),c.info("[AUTH] Email verified successfully",{userId:A.id,email:A.email}),t.emailVerification?.templates?.welcome?.enabled&&o?.isAvailable())o.sendWelcomeEmail(A.email,A.email.split("@")[0]||"User",e||"Nucleus").catch((E)=>{c.error("[AUTH] Failed to send welcome email after verification",{email:A.email,error:E})});return{success:!0,message:"Email verified successfully. You can now log in.",data:{redirectUrl:t.emailVerification?.redirectUrl||"/login",verified:!0}}},{query:ci.Object({token:ci.String()}),detail:{tags:["Authentication"],summary:"Verify Email",description:"Verify user email address using the verification token"}}),s.post(f,async(u)=>{if(!a||!i)return{success:!1,message:"Database not configured"};if(!o?.isAvailable())return{success:!1,message:"Email service not available"};let{email:b}=u.body,$=await a.select().from(i).where(ai`email = ${b}`).limit(1);if($.length===0)return{success:!0,message:"If your email is registered, you will receive a verification email."};let A=$[0];if(A.verifiedAt)return{success:!1,message:"Email is already verified"};let _=t.emailVerification?.maxResendAttempts||3,m=A.emailVerificationAttempts||0;if(m>=_)return c.warn("[AUTH] Resend verification failed - max attempts reached",{email:b,attempts:m}),{success:!1,message:"Maximum resend attempts reached. Please contact support.",data:{maxAttemptsReached:!0,attemptsUsed:m,maxAttempts:_}};let E=t.emailVerification?.resendCooldown||"60s",R=Ye(E),M=A.emailVerificationSentAt;if(M){let g=Date.now()-new Date(M).getTime();if(g<R){let Y=Math.ceil((R-g)/1000);return{success:!1,message:`Please wait ${Y} seconds before requesting another verification email.`,data:{cooldownRemaining:Y,canResendAt:new Date(Date.now()+Y*1000).toISOString()}}}}let S=ei(),x=t.emailVerification?.tokenExpiresIn||"24h",D=new Date(Date.now()+Ye(x));await a.update(i).set({emailVerificationToken:S,emailVerificationTokenExpiresAt:D,emailVerificationSentAt:new Date,emailVerificationAttempts:m+1}).where(ai`id = ${A.id}`);let B=`${(t.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${S}`,w=await o.sendVerificationEmail(b,b.split("@")[0]||"User",B,e||"Nucleus");if(w.success)return c.info("[AUTH] Verification email resent",{email:b}),{success:!0,message:"Verification email sent. Please check your inbox.",data:{cooldownSeconds:Math.ceil(R/1000),canResendAt:new Date(Date.now()+R).toISOString(),attemptsRemaining:_-(m+1)}};return c.error("[AUTH] Failed to resend verification email",{email:b,error:w.error}),{success:!1,message:"Failed to send verification email. Please try again later."}},{body:ci.Object({email:ci.String({format:"email"})}),detail:{tags:["Authentication"],summary:"Resend Verification Email",description:"Resend the email verification link to the user"}}),s}var hf=d(()=>{Je()});import yg from"crypto";function Le(){return yg.randomBytes(32).toString("hex")}function dt(n){return yg.createHash("sha256").update(n).digest("hex")}function Xe(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 Ba=()=>{};import{eq as nA}from"drizzle-orm";import{Elysia as rA,t as si}from"elysia";function li(n,r,t,o,e,a){let{db:c,logger:i,usersTable:s}=n,l=r.route||"/auth/invite",f=r.tokenExpiresIn||"7d",u=r.redirectUrl||"",b=new rA;if(!r.enabled)return b;if(b.post(l,async($)=>{if(!c||!s)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return i.error("[AUTH] Invite requested but email service not available"),{success:!1,message:"Email service not available"};let{email:A}=$.body,_=await c.select().from(s).where(nA(s.email,A)).limit(1),m;if(_.length>0){let D=_[0];if(D.verifiedAt||D.password)return i.warn("[AUTH] Invite failed - user already verified",{email:A}),{success:!1,message:"User with this email is already verified"};m=D.id,i.info("[AUTH] Resending invitation to existing unverified user",{userId:m,email:A})}else{let D={email:A,password:null,emailVerified:!1,isLocked:!1,createdAt:new Date,updatedAt:new Date},B=(await c.insert(s).values(D).returning())[0];if(!B)return i.error("[AUTH] Failed to create invited user",{email:A}),{success:!1,message:"Failed to create user"};m=B.id,i.info("[AUTH] Invited user created",{userId:m,email:A})}let E=Le(),R=dt(E),M=new Date(Date.now()+Xe(f));await o({userId:m,email:A,tokenHash:R,expiresAt:M});let S=u?`${u}?token=${E}&invite=true`:`/auth/magic-link/verify?token=${E}`,x=await t.sendInvitationEmail(A,S,e||"Nucleus");if(!x.success)return i.error("[AUTH] Failed to send invitation email",{email:A,error:x.error}),{success:!0,message:"User created but failed to send invitation email",data:{id:m,email:A}};return i.info("[AUTH] Invitation email sent",{email:A,userId:m}),{success:!0,message:"Invitation sent successfully",data:{id:m,email:A}}},{body:tA,detail:{tags:["Authentication"],summary:"Invite User",description:"Invite a new user by sending them an email with a magic link to set their password"}}),a)b.post(`${l}/verify`,async($)=>{let{token:A}=$.body;if(!A)return{success:!1,message:"Token is required"};let _=dt(A),m=await a(_);if(!m)return i.warn("[AUTH] Invalid invite verify token"),{success:!1,message:"Invalid or expired token"};if(new Date>m.expiresAt)return i.warn("[AUTH] Expired invite verify token",{email:m.email}),{success:!1,message:"Invalid or expired token"};return i.info("[AUTH] Invite token verified (not consumed)",{email:m.email,userId:m.userId}),{success:!0,data:{userId:m.userId,email:m.email}}},{body:si.Object({token:si.String()}),detail:{tags:["Authentication"],summary:"Verify Invite Token",description:"Validate an invite token without consuming it. Returns user info if valid."}});return b}var tA;var $f=d(()=>{Ba();tA=si.Object({email:si.String({format:"email"})})});import{t as Zn}from"elysia";var Af,oA;var Rf=d(()=>{Af=Zn.Object({email:Zn.String({format:"email"}),password:Zn.String({minLength:1}),rememberMe:Zn.Optional(Zn.Boolean()),captchaId:Zn.Optional(Zn.String()),captchaAnswer:Zn.Optional(Zn.String())}),oA=Zn.Object({success:Zn.Boolean(),message:Zn.Optional(Zn.String()),data:Zn.Optional(Zn.Object({user:Zn.Object({id:Zn.String(),email:Zn.String()}),accessToken:Zn.String(),refreshToken:Zn.String()}))})});var{password:eA}=globalThis.Bun;async function fi(n,r){try{return await eA.verify(n,r)}catch{return!1}}function di(n,r){let t=n.toLowerCase(),o=["headlesschrome","headless","phantomjs","nightmare","selenium","webdriver","puppeteer","playwright"],e=["bot","crawler","spider","scraper","curl","wget","python-requests","python-urllib","java/","httpclient","go-http-client","node-fetch","axios","postman","insomnia","httpie"],a=o.some((_)=>t.includes(_)),c=e.some((_)=>t.includes(_)),i=a||c,s=[];if(a)s.push("headless_browser");if(c)s.push("bot_user_agent");if(!t||t.length<10)s.push("missing_or_short_ua");if(t==="mozilla/5.0")s.push("generic_ua");if(t.includes("nucleusserveraction")||t.includes("serveraction"))s.push("server_action");let l="unknown";if(t.includes("mobile")||t.includes("android")&&!t.includes("tablet"))l="mobile";else if(t.includes("tablet")||t.includes("ipad"))l="tablet";else if(t.includes("windows")||t.includes("macintosh")||t.includes("linux"))l="desktop";let f,u;if(a)f="Headless Browser";else if(c)f="Bot/Crawler";else if(t.includes("chrome")&&!t.includes("edg")){f="Chrome";let _=n.match(/Chrome\/(\d+\.\d+)/i);if(_?.[1])u=_[1]}else if(t.includes("firefox")){f="Firefox";let _=n.match(/Firefox\/(\d+\.\d+)/i);if(_?.[1])u=_[1]}else if(t.includes("safari")&&!t.includes("chrome")){f="Safari";let _=n.match(/Version\/(\d+\.\d+)/i);if(_?.[1])u=_[1]}else if(t.includes("edg")){f="Edge";let _=n.match(/Edg\/(\d+\.\d+)/i);if(_?.[1])u=_[1]}let b,$;if(t.includes("windows nt 10"))b="Windows",$="10/11";else if(t.includes("windows nt"))b="Windows";else if(t.includes("mac os x")){b="macOS";let _=n.match(/Mac OS X (\d+[._]\d+)/i);if(_?.[1])$=_[1].replace("_",".")}else if(t.includes("android")){b="Android";let _=n.match(/Android (\d+\.?\d*)/i);if(_?.[1])$=_[1]}else if(t.includes("iphone")||t.includes("ipad")){b="iOS";let _=n.match(/OS (\d+[._]\d+)/i);if(_?.[1])$=_[1].replace("_",".")}else if(t.includes("linux"))b="Linux";return{deviceName:f&&b?`${f} on ${b}`:"Unknown Device",deviceType:l,browserName:f,browserVersion:u,osName:b,osVersion:$,ipAddress:r,userAgent:n,locationCountry:void 0,locationCity:void 0,isHeadless:a,isBot:c,isSuspicious:i,suspiciousPatterns:s}}var ui=()=>{};import{eq as kf}from"drizzle-orm";import{Elysia as aA}from"elysia";function bi(n,r,t,o,e,a,c,i,s){let{db:l,logger:f,usersTable:u}=n,b=r.route||"/auth/login",$={accessTokenName:c?.accessTokenName||"access_token",refreshTokenName:c?.refreshTokenName||"refresh_token",sessionTokenName:c?.sessionTokenName||"session_token",accessTokenMaxAge:c?.accessTokenMaxAge||900,refreshTokenMaxAge:c?.refreshTokenMaxAge||604800,sessionTokenMaxAge:c?.sessionTokenMaxAge||900,secure:c?.secure??!0,httpOnly:c?.httpOnly??!0,sameSite:c?.sameSite||"strict",path:c?.path||"/"},A=new aA;if(!r.enabled)return A;return A.post(b,async(_)=>{if(!l||!u)return{success:!1,message:"Database not configured"};let{email:m,password:E,rememberMe:R,captchaId:M,captchaAnswer:S}=_.body;if(s?.isEnabled()){if(!M||!S)return _.set.status=400,{success:!1,message:"Captcha is required"};let T=await s.validate(M,S);if(!T.valid)return _.set.status=400,{success:!1,message:T.message||"Invalid captcha",attemptsRemaining:T.attemptsRemaining}}let D=(await l.select().from(u).where(kf(u.email,m)).limit(1))[0],k=new URL(_.request.url),B=_.request.headers.get("cf-connecting-ip")?.trim()||_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||_.request.headers.get("x-real-ip")?.trim()||"unknown",w=_.request.headers.get("user-agent")||"unknown";if(!D)return f.warn("[AUTH] Login failed - user not found",{email:m}),await f.audit({entityName:"users",operation:"LOGIN_FAILED",summary:`Login failed: user not found (${m})`,ipAddress:B,userAgent:w,path:k.pathname,query:k.search}),{success:!1,message:"Invalid email or password"};if(D.isLocked)return f.warn("[AUTH] Login failed - account locked",{email:m,userId:D.id}),await f.audit({entityName:"users",entityId:D.id,operation:"LOGIN_FAILED",userId:D.id,summary:`Login failed: account locked (${m})`,ipAddress:B,userAgent:w,path:k.pathname,query:k.search}),{success:!1,message:"Account is locked"};if(!await fi(E,D.password)){let T=(D.failedLoginAttempts||0)+1;return await l.update(u).set({failedLoginAttempts:T,isLocked:T>=5,lockedUntil:T>=5?new Date(Date.now()+1800000):null}).where(kf(u.id,D.id)),f.warn("[AUTH] Login failed - invalid password",{email:m,failedAttempts:T}),await f.audit({entityName:"users",entityId:D.id,operation:"LOGIN_FAILED",userId:D.id,summary:`Login failed: invalid password (${m}, attempt ${T})`,ipAddress:B,userAgent:w,path:k.pathname,query:k.search}),{success:!1,message:"Invalid email or password"}}await l.update(u).set({failedLoginAttempts:0,lastLoginAt:new Date,loginCount:(D.loginCount||0)+1}).where(kf(u.id,D.id));let Y={};_.request.headers.forEach((T,tn)=>{Y[tn]=T}),f.info("[AUTH] Login request headers",{headers:Y});let V=_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim(),C=(T)=>!T||T==="127.0.0.1"||T==="::1"||T==="localhost"||T.startsWith("10.")||T.startsWith("192.168.")||T.startsWith("172."),Q=_.request.headers.get("cf-connecting-ip")?.trim()||_.request.headers.get("true-client-ip")?.trim()||(!C(V)?V:void 0)||_.request.headers.get("x-real-ip")?.trim()||_.request.headers.get("x-client-ip")?.trim()||V||"127.0.0.1",j=_.request.headers.get("user-agent")||"Unknown Browser";f.info("[AUTH] Parsed device info",{ipAddress:Q,userAgent:j});let L=di(j,Q);try{if(!C(Q)){let T=await fetch(`http://ip-api.com/json/${Q}?fields=country,city`);if(T.ok){let tn=await T.json();if(tn.country)L.locationCountry=tn.country;if(tn.city)L.locationCity=tn.city}}}catch{}let J=t(D.id),W=o(D.id),X={userId:D.id,deviceInfo:L,loginMethod:"password",rememberMe:R},O=await e(X);if(a)await a(O,X);f.info("[AUTH] Login successful",{userId:D.id,email:m,rememberMe:R}),await f.audit({entityName:"users",entityId:D.id,operation:"LOGIN",userId:D.id,summary:`${m} logged in successfully`,ipAddress:Q,userAgent:j,path:k.pathname,query:k.search});let F={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},K=$.secure?"; Secure":"",q=`; Path=${$.path}; HttpOnly; SameSite=${$.sameSite}${K}`,rn=[];if(F.accessToken.setHeadersEnabled)rn.push(`${$.accessTokenName}=${J}${q}; Max-Age=${$.accessTokenMaxAge}`);if(F.refreshToken.setHeadersEnabled)rn.push(`${$.refreshTokenName}=${W}${q}; Max-Age=${$.refreshTokenMaxAge}`);if(F.sessionToken.setHeadersEnabled)rn.push(`${$.sessionTokenName}=${O}${q}; Max-Age=${$.sessionTokenMaxAge}`);_.set.headers["x-session-id"]=O;let en={user:{id:D.id,email:D.email}};if(F.accessToken.returnJson)en.accessToken=J;if(F.refreshToken.returnJson)en.refreshToken=W;if(F.sessionToken.returnJson)en.sessionId=O;let gn=JSON.stringify({success:!0,data:en}),Gn=new Headers;Gn.set("Content-Type","application/json"),Gn.set("x-session-id",O);for(let T of rn)Gn.append("Set-Cookie",T);return new Response(gn,{status:200,headers:Gn})},{body:Af,detail:{tags:["Authentication"],summary:"Login",description:"Authenticate user with email and password"}}),A}var Ef=d(()=>{Rf();ui();Rf()});function n_(){return{"Set-Cookie":["access_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0","refresh_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0","session_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0"].join(", ")}}import{t as gi}from"elysia";var cA;var r_=d(()=>{cA=gi.Object({success:gi.Boolean(),message:gi.Optional(gi.String())})});import{Elysia as iA}from"elysia";function _i(n,r,t,o){let{logger:e}=n,a=r.route||"/auth/logout",c=new iA;if(!r.enabled)return c;return c.post(a,async(i)=>{let s=i.request.headers.get("x-session-id"),l=i.request.headers.get("x-user-id");if(s){if(await t(s),o)await o(s,"user_logout")}let f=n_();for(let[b,$]of Object.entries(f))i.set.headers[b]=$;e.info("[AUTH] Logout successful",{userId:l,sessionId:s});let u=new URL(i.request.url);return e.audit({entityName:"users",entityId:l||void 0,operation:"LOGOUT",userId:l||void 0,summary:`User logged out${s?` (session: ${s.substring(0,8)}...)`:""}`,ipAddress:i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:i.request.headers.get("user-agent")||"unknown",path:u.pathname,query:u.search}),{success:!0,message:"Logged out successfully"}},{detail:{tags:["Authentication"],summary:"Logout",description:"Logout and invalidate session"}}),c}var Sf=d(()=>{r_()});var mr={};no(mr,{IsUndefined:()=>vn,IsUint8Array:()=>qt,IsSymbol:()=>Uf,IsString:()=>Wn,IsRegExp:()=>Ya,IsObject:()=>Hn,IsNumber:()=>Cr,IsNull:()=>zf,IsIterator:()=>Hf,IsFunction:()=>Df,IsDate:()=>Fo,IsBoolean:()=>Nt,IsBigInt:()=>Wa,IsAsyncIterator:()=>Mf,IsArray:()=>Tn,HasPropertyKey:()=>mi});function mi(n,r){return r in n}function Mf(n){return Hn(n)&&!Tn(n)&&!qt(n)&&Symbol.asyncIterator in n}function Tn(n){return Array.isArray(n)}function Wa(n){return typeof n==="bigint"}function Nt(n){return typeof n==="boolean"}function Fo(n){return n instanceof globalThis.Date}function Df(n){return typeof n==="function"}function Hf(n){return Hn(n)&&!Tn(n)&&!qt(n)&&Symbol.iterator in n}function zf(n){return n===null}function Cr(n){return typeof n==="number"}function Hn(n){return typeof n==="object"&&n!==null}function Ya(n){return n instanceof globalThis.RegExp}function Wn(n){return typeof n==="string"}function Uf(n){return typeof n==="symbol"}function qt(n){return n instanceof globalThis.Uint8Array}function vn(n){return n===void 0}function sA(n){return n.map((r)=>wi(r))}function lA(n){return new Date(n.getTime())}function fA(n){return new Uint8Array(n)}function dA(n){return new RegExp(n.source,n.flags)}function uA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=wi(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=wi(n[t]);return r}function wi(n){return Tn(n)?sA(n):Fo(n)?lA(n):qt(n)?fA(n):Ya(n)?dA(n):Hn(n)?uA(n):n}function Ln(n){return wi(n)}var Dr=()=>{};function Ve(n,r){return r===void 0?Ln(n):Ln({...r,...n})}var hi=d(()=>{Dr()});var Bf=d(()=>{hi();Dr()});function t_(n){return n!==null&&typeof n==="object"}function o_(n){return globalThis.Array.isArray(n)&&!globalThis.ArrayBuffer.isView(n)}function e_(n){return n===void 0}function a_(n){return typeof n==="number"}var c_=()=>{};var $i;var i_=d(()=>{c_();(function(n){n.InstanceMode="default",n.ExactOptionalPropertyTypes=!1,n.AllowArrayObject=!1,n.AllowNaN=!1,n.AllowNullVoid=!1;function r(c,i){return n.ExactOptionalPropertyTypes?i in c:c[i]!==void 0}n.IsExactOptionalProperty=r;function t(c){let i=t_(c);return n.AllowArrayObject?i:i&&!o_(c)}n.IsObjectLike=t;function o(c){return t(c)&&!(c instanceof Date)&&!(c instanceof Uint8Array)}n.IsRecordLike=o;function e(c){return n.AllowNaN?a_(c):Number.isFinite(c)}n.IsNumberLike=e;function a(c){let i=e_(c);return n.AllowNullVoid?i||c===null:i}n.IsVoidLike=a})($i||($i={}))});function bA(n){return globalThis.Object.freeze(n).map((r)=>Ja(r))}function gA(n){return n}function _A(n){return n}function mA(n){return n}function wA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=Ja(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=Ja(n[t]);return globalThis.Object.freeze(r)}function Ja(n){return Tn(n)?bA(n):Fo(n)?gA(n):qt(n)?_A(n):Ya(n)?mA(n):Hn(n)?wA(n):n}var s_=()=>{};function z(n,r){let t=r!==void 0?{...r,...n}:n;switch($i.InstanceMode){case"freeze":return Ja(t);case"clone":return Ln(t);default:return t}}var Z=d(()=>{i_();s_();Dr()});var Ft=d(()=>{Z()});var fr;var l_=d(()=>{fr=class fr extends Error{constructor(n){super(n)}}});var zt=d(()=>{l_()});var yn,ut,dr,vr,G;var La=d(()=>{yn=Symbol.for("TypeBox.Transform"),ut=Symbol.for("TypeBox.Readonly"),dr=Symbol.for("TypeBox.Optional"),vr=Symbol.for("TypeBox.Hint"),G=Symbol.for("TypeBox.Kind")});var nn=d(()=>{La()});function Ce(n){return Hn(n)&&n[ut]==="Readonly"}function Hr(n){return Hn(n)&&n[dr]==="Optional"}function Wf(n){return bn(n,"Any")}function Yf(n){return bn(n,"Argument")}function bt(n){return bn(n,"Array")}function jo(n){return bn(n,"AsyncIterator")}function po(n){return bn(n,"BigInt")}function jt(n){return bn(n,"Boolean")}function gt(n){return bn(n,"Computed")}function _t(n){return bn(n,"Constructor")}function hA(n){return bn(n,"Date")}function mt(n){return bn(n,"Function")}function wt(n){return bn(n,"Integer")}function Qn(n){return bn(n,"Intersect")}function Ko(n){return bn(n,"Iterator")}function bn(n,r){return Hn(n)&&G in n&&n[G]===r}function Ai(n){return Nt(n)||Cr(n)||Wn(n)}function xr(n){return bn(n,"Literal")}function Qr(n){return bn(n,"MappedKey")}function Xn(n){return bn(n,"MappedResult")}function _o(n){return bn(n,"Never")}function $A(n){return bn(n,"Not")}function Xa(n){return bn(n,"Null")}function ht(n){return bn(n,"Number")}function In(n){return bn(n,"Object")}function To(n){return bn(n,"Promise")}function vo(n){return bn(n,"Record")}function qn(n){return bn(n,"Ref")}function Jf(n){return bn(n,"RegExp")}function pt(n){return bn(n,"String")}function Va(n){return bn(n,"Symbol")}function Pr(n){return bn(n,"TemplateLiteral")}function AA(n){return bn(n,"This")}function mo(n){return Hn(n)&&yn in n}function Gr(n){return bn(n,"Tuple")}function Ca(n){return bn(n,"Undefined")}function _n(n){return bn(n,"Union")}function RA(n){return bn(n,"Uint8Array")}function kA(n){return bn(n,"Unknown")}function EA(n){return bn(n,"Unsafe")}function SA(n){return bn(n,"Void")}function MA(n){return Hn(n)&&G in n&&Wn(n[G])}function Or(n){return Wf(n)||Yf(n)||bt(n)||jt(n)||po(n)||jo(n)||gt(n)||_t(n)||hA(n)||mt(n)||wt(n)||Qn(n)||Ko(n)||xr(n)||Qr(n)||Xn(n)||_o(n)||$A(n)||Xa(n)||ht(n)||In(n)||To(n)||vo(n)||qn(n)||Jf(n)||pt(n)||Va(n)||Pr(n)||AA(n)||Gr(n)||Ca(n)||_n(n)||RA(n)||kA(n)||EA(n)||SA(n)||MA(n)}var $n=d(()=>{nn()});var h={};no(h,{TypeGuardUnknownTypeError:()=>f_,IsVoid:()=>I_,IsUnsafe:()=>v_,IsUnknown:()=>T_,IsUnionLiteral:()=>LA,IsUnion:()=>Vf,IsUndefined:()=>p_,IsUint8Array:()=>K_,IsTuple:()=>j_,IsTransform:()=>F_,IsThis:()=>q_,IsTemplateLiteral:()=>N_,IsSymbol:()=>O_,IsString:()=>G_,IsSchema:()=>ir,IsRegExp:()=>P_,IsRef:()=>Q_,IsRecursive:()=>JA,IsRecord:()=>x_,IsReadonly:()=>UA,IsProperties:()=>Ri,IsPromise:()=>C_,IsOptional:()=>BA,IsObject:()=>V_,IsNumber:()=>X_,IsNull:()=>L_,IsNot:()=>J_,IsNever:()=>Y_,IsMappedResult:()=>W_,IsMappedKey:()=>B_,IsLiteralValue:()=>U_,IsLiteralString:()=>H_,IsLiteralNumber:()=>z_,IsLiteralBoolean:()=>YA,IsLiteral:()=>Qa,IsKindOf:()=>dn,IsKind:()=>Z_,IsIterator:()=>D_,IsIntersect:()=>M_,IsInteger:()=>S_,IsImport:()=>WA,IsFunction:()=>E_,IsDate:()=>k_,IsConstructor:()=>R_,IsComputed:()=>A_,IsBoolean:()=>$_,IsBigInt:()=>h_,IsAsyncIterator:()=>w_,IsArray:()=>m_,IsArgument:()=>__,IsAny:()=>g_});function d_(n){try{return new RegExp(n),!0}catch{return!1}}function Lf(n){if(!Wn(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 u_(n){return Xf(n)||ir(n)}function xa(n){return vn(n)||Wa(n)}function Yn(n){return vn(n)||Cr(n)}function Xf(n){return vn(n)||Nt(n)}function zn(n){return vn(n)||Wn(n)}function HA(n){return vn(n)||Wn(n)&&Lf(n)&&d_(n)}function zA(n){return vn(n)||Wn(n)&&Lf(n)}function b_(n){return vn(n)||ir(n)}function UA(n){return Hn(n)&&n[ut]==="Readonly"}function BA(n){return Hn(n)&&n[dr]==="Optional"}function g_(n){return dn(n,"Any")&&zn(n.$id)}function __(n){return dn(n,"Argument")&&Cr(n.index)}function m_(n){return dn(n,"Array")&&n.type==="array"&&zn(n.$id)&&ir(n.items)&&Yn(n.minItems)&&Yn(n.maxItems)&&Xf(n.uniqueItems)&&b_(n.contains)&&Yn(n.minContains)&&Yn(n.maxContains)}function w_(n){return dn(n,"AsyncIterator")&&n.type==="AsyncIterator"&&zn(n.$id)&&ir(n.items)}function h_(n){return dn(n,"BigInt")&&n.type==="bigint"&&zn(n.$id)&&xa(n.exclusiveMaximum)&&xa(n.exclusiveMinimum)&&xa(n.maximum)&&xa(n.minimum)&&xa(n.multipleOf)}function $_(n){return dn(n,"Boolean")&&n.type==="boolean"&&zn(n.$id)}function A_(n){return dn(n,"Computed")&&Wn(n.target)&&Tn(n.parameters)&&n.parameters.every((r)=>ir(r))}function R_(n){return dn(n,"Constructor")&&n.type==="Constructor"&&zn(n.$id)&&Tn(n.parameters)&&n.parameters.every((r)=>ir(r))&&ir(n.returns)}function k_(n){return dn(n,"Date")&&n.type==="Date"&&zn(n.$id)&&Yn(n.exclusiveMaximumTimestamp)&&Yn(n.exclusiveMinimumTimestamp)&&Yn(n.maximumTimestamp)&&Yn(n.minimumTimestamp)&&Yn(n.multipleOfTimestamp)}function E_(n){return dn(n,"Function")&&n.type==="Function"&&zn(n.$id)&&Tn(n.parameters)&&n.parameters.every((r)=>ir(r))&&ir(n.returns)}function WA(n){return dn(n,"Import")&&mi(n,"$defs")&&Hn(n.$defs)&&Ri(n.$defs)&&mi(n,"$ref")&&Wn(n.$ref)&&n.$ref in n.$defs}function S_(n){return dn(n,"Integer")&&n.type==="integer"&&zn(n.$id)&&Yn(n.exclusiveMaximum)&&Yn(n.exclusiveMinimum)&&Yn(n.maximum)&&Yn(n.minimum)&&Yn(n.multipleOf)}function Ri(n){return Hn(n)&&Object.entries(n).every(([r,t])=>Lf(r)&&ir(t))}function M_(n){return dn(n,"Intersect")&&(Wn(n.type)&&n.type!=="object"?!1:!0)&&Tn(n.allOf)&&n.allOf.every((r)=>ir(r)&&!F_(r))&&zn(n.type)&&(Xf(n.unevaluatedProperties)||b_(n.unevaluatedProperties))&&zn(n.$id)}function D_(n){return dn(n,"Iterator")&&n.type==="Iterator"&&zn(n.$id)&&ir(n.items)}function dn(n,r){return Hn(n)&&G in n&&n[G]===r}function H_(n){return Qa(n)&&Wn(n.const)}function z_(n){return Qa(n)&&Cr(n.const)}function YA(n){return Qa(n)&&Nt(n.const)}function Qa(n){return dn(n,"Literal")&&zn(n.$id)&&U_(n.const)}function U_(n){return Nt(n)||Cr(n)||Wn(n)}function B_(n){return dn(n,"MappedKey")&&Tn(n.keys)&&n.keys.every((r)=>Cr(r)||Wn(r))}function W_(n){return dn(n,"MappedResult")&&Ri(n.properties)}function Y_(n){return dn(n,"Never")&&Hn(n.not)&&Object.getOwnPropertyNames(n.not).length===0}function J_(n){return dn(n,"Not")&&ir(n.not)}function L_(n){return dn(n,"Null")&&n.type==="null"&&zn(n.$id)}function X_(n){return dn(n,"Number")&&n.type==="number"&&zn(n.$id)&&Yn(n.exclusiveMaximum)&&Yn(n.exclusiveMinimum)&&Yn(n.maximum)&&Yn(n.minimum)&&Yn(n.multipleOf)}function V_(n){return dn(n,"Object")&&n.type==="object"&&zn(n.$id)&&Ri(n.properties)&&u_(n.additionalProperties)&&Yn(n.minProperties)&&Yn(n.maxProperties)}function C_(n){return dn(n,"Promise")&&n.type==="Promise"&&zn(n.$id)&&ir(n.item)}function x_(n){return dn(n,"Record")&&n.type==="object"&&zn(n.$id)&&u_(n.additionalProperties)&&Hn(n.patternProperties)&&((r)=>{let t=Object.getOwnPropertyNames(r.patternProperties);return t.length===1&&d_(t[0])&&Hn(r.patternProperties)&&ir(r.patternProperties[t[0]])})(n)}function JA(n){return Hn(n)&&vr in n&&n[vr]==="Recursive"}function Q_(n){return dn(n,"Ref")&&zn(n.$id)&&Wn(n.$ref)}function P_(n){return dn(n,"RegExp")&&zn(n.$id)&&Wn(n.source)&&Wn(n.flags)&&Yn(n.maxLength)&&Yn(n.minLength)}function G_(n){return dn(n,"String")&&n.type==="string"&&zn(n.$id)&&Yn(n.minLength)&&Yn(n.maxLength)&&HA(n.pattern)&&zA(n.format)}function O_(n){return dn(n,"Symbol")&&n.type==="symbol"&&zn(n.$id)}function N_(n){return dn(n,"TemplateLiteral")&&n.type==="string"&&Wn(n.pattern)&&n.pattern[0]==="^"&&n.pattern[n.pattern.length-1]==="$"}function q_(n){return dn(n,"This")&&zn(n.$id)&&Wn(n.$ref)}function F_(n){return Hn(n)&&yn in n}function j_(n){return dn(n,"Tuple")&&n.type==="array"&&zn(n.$id)&&Cr(n.minItems)&&Cr(n.maxItems)&&n.minItems===n.maxItems&&(vn(n.items)&&vn(n.additionalItems)&&n.minItems===0||Tn(n.items)&&n.items.every((r)=>ir(r)))}function p_(n){return dn(n,"Undefined")&&n.type==="undefined"&&zn(n.$id)}function LA(n){return Vf(n)&&n.anyOf.every((r)=>H_(r)||z_(r))}function Vf(n){return dn(n,"Union")&&zn(n.$id)&&Hn(n)&&Tn(n.anyOf)&&n.anyOf.every((r)=>ir(r))}function K_(n){return dn(n,"Uint8Array")&&n.type==="Uint8Array"&&zn(n.$id)&&Yn(n.minByteLength)&&Yn(n.maxByteLength)}function T_(n){return dn(n,"Unknown")&&zn(n.$id)}function v_(n){return dn(n,"Unsafe")}function I_(n){return dn(n,"Void")&&n.type==="void"&&zn(n.$id)}function Z_(n){return Hn(n)&&G in n&&Wn(n[G])&&!DA.includes(n[G])}function ir(n){return Hn(n)&&(g_(n)||__(n)||m_(n)||$_(n)||h_(n)||w_(n)||A_(n)||R_(n)||k_(n)||E_(n)||S_(n)||M_(n)||D_(n)||Qa(n)||B_(n)||W_(n)||Y_(n)||J_(n)||L_(n)||X_(n)||V_(n)||C_(n)||x_(n)||Q_(n)||P_(n)||G_(n)||O_(n)||N_(n)||q_(n)||j_(n)||p_(n)||Vf(n)||K_(n)||T_(n)||v_(n)||I_(n)||Z_(n))}var f_,DA;var y_=d(()=>{nn();zt();f_=class f_ extends fr{};DA=["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 Cf=d(()=>{$n();y_()});var nm=()=>{};var rm="(true|false)",ki="(0|[1-9][0-9]*)",tm="(.*)",wo="^(0|[1-9][0-9]*)$",ho="^(.*)$",om="^(?!.*)$";var Pa=()=>{};var em=()=>{};var am=()=>{};var cm=d(()=>{em();am()});function im(n,r){return n.includes(r)}function sm(n){return[...new Set(n)]}function CA(n,r){return n.filter((t)=>r.includes(t))}function xA(n,r){return n.reduce((t,o)=>{return CA(t,o)},r)}function lm(n){return n.length===1?n[0]:n.length>1?xA(n.slice(1),n[0]):[]}function fm(n){let r=[];for(let t of n)r.push(...t);return r}var Ga=()=>{};function $o(n){return z({[G]:"Any"},n)}var dm=d(()=>{Ft();nn()});var Oa=d(()=>{dm()});function xe(n,r){return z({[G]:"Array",type:"array",items:n},r)}var um=d(()=>{Z();nn()});var Na=d(()=>{um()});function bm(n){return z({[G]:"Argument",index:n})}var gm=d(()=>{Z();nn()});var xf=d(()=>{gm()});function Qe(n,r){return z({[G]:"AsyncIterator",type:"AsyncIterator",items:n},r)}var _m=d(()=>{nn();Z()});var qa=d(()=>{_m()});function Jn(n,r,t){return z({[G]:"Computed",target:n,parameters:r},t)}var mm=d(()=>{Ft();La()});var Ao=d(()=>{mm()});function QA(n,r){let{[r]:t,...o}=n;return o}function Pn(n,r){return r.reduce((t,o)=>QA(t,o),n)}var Tt=()=>{};function mn(n){return z({[G]:"Never",not:{}},n)}var wm=d(()=>{Z();nn()});var ur=d(()=>{wm()});var hm=()=>{};function An(n){return z({[G]:"MappedResult",properties:n})}var Qf=d(()=>{Z();nn()});function Pe(n,r,t){return z({[G]:"Constructor",type:"Constructor",parameters:n,returns:r},t)}var $m=d(()=>{Z();nn()});var Fa=d(()=>{$m()});function Ut(n,r,t){return z({[G]:"Function",type:"Function",parameters:n,returns:r},t)}var Am=d(()=>{Z();nn()});var Io=d(()=>{Am()});function ja(n,r){return z({[G]:"Union",anyOf:n},r)}var Pf=d(()=>{Z();nn()});function PA(n){return n.some((r)=>Hr(r))}function Rm(n){return n.map((r)=>Hr(r)?GA(r):r)}function GA(n){return Pn(n,[dr])}function OA(n,r){return PA(n)?wr(ja(Rm(n),r)):ja(Rm(n),r)}function Bt(n,r){return n.length===1?z(n[0],r):n.length===0?mn(r):OA(n,r)}var km=d(()=>{Z();nn();Tt();ur();vt();Pf();$n()});var Em=()=>{};function En(n,r){return n.length===0?mn(r):n.length===1?z(n[0],r):ja(n,r)}var Sm=d(()=>{ur();Z();Pf()});var nr=d(()=>{km();Em();Sm()});function NA(n){return n.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function Of(n,r,t){return n[r]===t&&n.charCodeAt(r-1)!==92}function It(n,r){return Of(n,r,"(")}function pa(n,r){return Of(n,r,")")}function Mm(n,r){return Of(n,r,"|")}function qA(n){if(!(It(n,0)&&pa(n,n.length-1)))return!1;let r=0;for(let t=0;t<n.length;t++){if(It(n,t))r+=1;if(pa(n,t))r-=1;if(r===0&&t!==n.length-1)return!1}return!0}function FA(n){return n.slice(1,n.length-1)}function jA(n){let r=0;for(let t=0;t<n.length;t++){if(It(n,t))r+=1;if(pa(n,t))r-=1;if(Mm(n,t)&&r===0)return!0}return!1}function pA(n){for(let r=0;r<n.length;r++)if(It(n,r))return!0;return!1}function KA(n){let[r,t]=[0,0],o=[];for(let a=0;a<n.length;a++){if(It(n,a))r+=1;if(pa(n,a))r-=1;if(Mm(n,a)&&r===0){let c=n.slice(t,a);if(c.length>0)o.push(Ge(c));t=a+1}}let e=n.slice(t);if(e.length>0)o.push(Ge(e));if(o.length===0)return{type:"const",const:""};if(o.length===1)return o[0];return{type:"or",expr:o}}function TA(n){function r(e,a){if(!It(e,a))throw new Gf("TemplateLiteralParser: Index must point to open parens");let c=0;for(let i=a;i<e.length;i++){if(It(e,i))c+=1;if(pa(e,i))c-=1;if(c===0)return[a,i]}throw new Gf("TemplateLiteralParser: Unclosed group parens in expression")}function t(e,a){for(let c=a;c<e.length;c++)if(It(e,c))return[a,c];return[a,e.length]}let o=[];for(let e=0;e<n.length;e++)if(It(n,e)){let[a,c]=r(n,e),i=n.slice(a,c+1);o.push(Ge(i)),e=c}else{let[a,c]=t(n,e),i=n.slice(a,c);if(i.length>0)o.push(Ge(i));e=c-1}return o.length===0?{type:"const",const:""}:o.length===1?o[0]:{type:"and",expr:o}}function Ge(n){return qA(n)?Ge(FA(n)):jA(n)?KA(n):pA(n)?TA(n):{type:"const",const:NA(n)}}function Oe(n){return Ge(n.slice(1,n.length-1))}var Gf;var Ei=d(()=>{zt();Gf=class Gf extends fr{}});function vA(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 IA(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 ZA(n){return n.type==="const"&&n.const===".*"}function Zo(n){return vA(n)||ZA(n)?!1:IA(n)?!0:n.type==="and"?n.expr.every((r)=>Zo(r)):n.type==="or"?n.expr.every((r)=>Zo(r)):n.type==="const"?!0:(()=>{throw new Dm("Unknown expression type")})()}function Hm(n){let r=Oe(n.pattern);return Zo(r)}var Dm;var Nf=d(()=>{Ei();zt();Dm=class Dm extends fr{}});function*Um(n){if(n.length===1)return yield*n[0];for(let r of n[0])for(let t of Um(n.slice(1)))yield`${r}${t}`}function*yA(n){return yield*Um(n.expr.map((r)=>[...Ka(r)]))}function*nR(n){for(let r of n.expr)yield*Ka(r)}function*rR(n){return yield n.const}function*Ka(n){return n.type==="and"?yield*yA(n):n.type==="or"?yield*nR(n):n.type==="const"?yield*rR(n):(()=>{throw new zm("Unknown expression")})()}function Si(n){let r=Oe(n.pattern);return Zo(r)?[...Ka(r)]:[]}var zm;var qf=d(()=>{Nf();Ei();zt();zm=class zm extends fr{}});function Rn(n,r){return z({[G]:"Literal",const:n,type:typeof n},r)}var Bm=d(()=>{Z();nn()});var zr=d(()=>{Bm()});function Mi(n){return z({[G]:"Boolean",type:"boolean"},n)}var Wm=d(()=>{nn();Ft()});var Di=d(()=>{Wm()});function Ne(n){return z({[G]:"BigInt",type:"bigint"},n)}var Ym=d(()=>{nn();Ft()});var Ta=d(()=>{Ym()});function Ir(n){return z({[G]:"Number",type:"number"},n)}var Jm=d(()=>{Z();nn()});var yo=d(()=>{Jm()});function $t(n){return z({[G]:"String",type:"string"},n)}var Lm=d(()=>{Z();nn()});var qe=d(()=>{Lm()});function*tR(n){let r=n.trim().replace(/"|'/g,"");return r==="boolean"?yield Mi():r==="number"?yield Ir():r==="bigint"?yield Ne():r==="string"?yield $t():yield(()=>{let t=r.split("|").map((o)=>Rn(o.trim()));return t.length===0?mn():t.length===1?t[0]:Bt(t)})()}function*oR(n){if(n[1]!=="{"){let r=Rn("$"),t=Ff(n.slice(1));return yield*[r,...t]}for(let r=2;r<n.length;r++)if(n[r]==="}"){let t=tR(n.slice(2,r)),o=Ff(n.slice(r+1));return yield*[...t,...o]}yield Rn(n)}function*Ff(n){for(let r=0;r<n.length;r++)if(n[r]==="$"){let t=Rn(n.slice(0,r)),o=oR(n.slice(r));return yield*[t,...o]}yield Rn(n)}function Xm(n){return[...Ff(n)]}var jf=d(()=>{zr();Di();Ta();yo();qe();nr();ur()});function eR(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Cm(n,r){return Pr(n)?n.pattern.slice(1,n.pattern.length-1):_n(n)?`(${n.anyOf.map((t)=>Cm(t,r)).join("|")})`:ht(n)?`${r}${ki}`:wt(n)?`${r}${ki}`:po(n)?`${r}${ki}`:pt(n)?`${r}${tm}`:xr(n)?`${r}${eR(n.const.toString())}`:jt(n)?`${r}${rm}`:(()=>{throw new Vm(`Unexpected Kind '${n[G]}'`)})()}function pf(n){return`^${n.map((r)=>Cm(r,"")).join("")}$`}var Vm;var Kf=d(()=>{Pa();nn();zt();$n();Vm=class Vm extends fr{}});function ne(n){let t=Si(n).map((o)=>Rn(o));return Bt(t)}var xm=d(()=>{nr();zr();qf()});function Hi(n,r){let t=Wn(n)?pf(Xm(n)):pf(n);return z({[G]:"TemplateLiteral",type:"string",pattern:t},r)}var Qm=d(()=>{Z();jf();Kf();nn()});var Zt=d(()=>{Nf();qf();jf();Ei();Kf();xm();Qm()});function aR(n){return Si(n).map((t)=>t.toString())}function cR(n){let r=[];for(let t of n)r.push(...Ur(t));return r}function iR(n){return[n.toString()]}function Ur(n){return[...new Set(Pr(n)?aR(n):_n(n)?cR(n.anyOf):xr(n)?iR(n.const):ht(n)?["[number]"]:wt(n)?["[number]"]:[])]}var zi=d(()=>{Zt();$n()});function sR(n,r,t){let o={};for(let e of Object.getOwnPropertyNames(r))o[e]=Ro(n,Ur(r[e]),t);return o}function lR(n,r,t){return sR(n,r.properties,t)}function Pm(n,r,t){let o=lR(n,r,t);return An(o)}var Tf=d(()=>{ar();zi();Wt()});function Om(n,r){return n.map((t)=>Nm(t,r))}function fR(n){return n.filter((r)=>!_o(r))}function dR(n,r){return Ui(fR(Om(n,r)))}function uR(n){return n.some((r)=>_o(r))?[]:n}function bR(n,r){return Bt(uR(Om(n,r)))}function gR(n,r){return r in n?n[r]:r==="[number]"?Bt(n):mn()}function _R(n,r){return r==="[number]"?n:mn()}function mR(n,r){return r in n?n[r]:mn()}function Nm(n,r){return Qn(n)?dR(n.allOf,r):_n(n)?bR(n.anyOf,r):Gr(n)?gR(n.items??[],r):bt(n)?_R(n.items,r):In(n)?mR(n.properties,r):mn()}function vf(n,r){return r.map((t)=>Nm(n,t))}function Gm(n,r){return Bt(vf(n,r))}function Ro(n,r,t){if(qn(n)||qn(r)){if(!Or(n)||!Or(r))throw new fr("Index types using Ref parameters require both Type and Key to be of TSchema");return Jn("Index",[n,r])}if(Xn(r))return Pm(n,r,t);if(Qr(r))return qm(n,r,t);return z(Or(r)?Gm(n,Ur(r)):Gm(n,r),t)}var If=d(()=>{Z();zt();Ao();ur();Zr();nr();zi();Zf();Tf();$n()});function wR(n,r,t){return{[r]:Ro(n,[r],Ln(t))}}function hR(n,r,t){return r.reduce((o,e)=>{return{...o,...wR(n,e,t)}},{})}function $R(n,r,t){return hR(n,r.keys,t)}function qm(n,r,t){let o=$R(n,r,t);return An(o)}var Zf=d(()=>{If();ar();Dr()});var Wt=d(()=>{Zf();Tf();zi();If()});function Fe(n,r){return z({[G]:"Iterator",type:"Iterator",items:n},r)}var Fm=d(()=>{Z();nn()});var va=d(()=>{Fm()});function AR(n){return globalThis.Object.keys(n).filter((r)=>!Hr(n[r]))}function RR(n,r){let t=AR(n),o=t.length>0?{[G]:"Object",type:"object",required:t,properties:n}:{[G]:"Object",type:"object",properties:n};return z(o,r)}var Un;var jm=d(()=>{Z();nn();$n();Un=RR});var Nr=d(()=>{jm()});function Bi(n,r){return z({[G]:"Promise",type:"Promise",item:n},r)}var pm=d(()=>{Z();nn()});var Wi=d(()=>{pm()});function kR(n){return z(Pn(n,[ut]))}function ER(n){return z({...n,[ut]:"Readonly"})}function SR(n,r){return r===!1?kR(n):ER(n)}function Br(n,r){let t=r??!0;return Xn(n)?Km(n,t):SR(n,t)}var yf=d(()=>{Z();nn();Tt();n0();$n()});function MR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Br(n[o],r);return t}function DR(n,r){return MR(n.properties,r)}function Km(n,r){let t=DR(n,r);return An(t)}var n0=d(()=>{ar();yf()});var re=d(()=>{n0();yf()});function yr(n,r){return z(n.length>0?{[G]:"Tuple",type:"array",items:n,additionalItems:!1,minItems:n.length,maxItems:n.length}:{[G]:"Tuple",type:"array",minItems:n.length,maxItems:n.length},r)}var Tm=d(()=>{Z();nn()});var ko=d(()=>{Tm()});function vm(n,r){return n in r?nt(n,r[n]):An(r)}function HR(n){return{[n]:Rn(n)}}function zR(n){let r={};for(let t of n)r[t]=Rn(t);return r}function UR(n,r){return im(r,n)?HR(n):zR(r)}function BR(n,r){let t=UR(n,r);return vm(n,t)}function Ia(n,r){return r.map((t)=>nt(n,t))}function WR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(r))t[o]=nt(n,r[o]);return t}function nt(n,r){let t={...r};return Hr(r)?wr(nt(n,Pn(r,[dr]))):Ce(r)?Br(nt(n,Pn(r,[ut]))):Xn(r)?vm(n,r.properties):Qr(r)?BR(n,r.keys):_t(r)?Pe(Ia(n,r.parameters),nt(n,r.returns),t):mt(r)?Ut(Ia(n,r.parameters),nt(n,r.returns),t):jo(r)?Qe(nt(n,r.items),t):Ko(r)?Fe(nt(n,r.items),t):Qn(r)?hr(Ia(n,r.allOf),t):_n(r)?En(Ia(n,r.anyOf),t):Gr(r)?yr(Ia(n,r.items??[]),t):In(r)?Un(WR(n,r.properties),t):bt(r)?xe(nt(n,r.items),t):To(r)?Bi(nt(n,r.item),t):r}function YR(n,r){let t={};for(let o of n)t[o]=nt(o,r);return t}function Im(n,r,t){let o=Or(n)?Ur(n):n,e=r({[G]:"MappedKey",keys:o}),a=YR(o,e);return Un(a,t)}var Zm=d(()=>{nn();Tt();Na();qa();Fa();Io();Wt();Zr();va();zr();Nr();vt();Wi();re();ko();nr();Ga();Qf();$n()});var ar=d(()=>{hm();Qf();Zm()});function JR(n){return z(Pn(n,[dr]))}function LR(n){return z({...n,[dr]:"Optional"})}function XR(n,r){return r===!1?JR(n):LR(n)}function wr(n,r){let t=r??!0;return Xn(n)?ym(n,t):XR(n,t)}var r0=d(()=>{Z();nn();Tt();t0();$n()});function VR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=wr(n[o],r);return t}function CR(n,r){return VR(n.properties,r)}function ym(n,r){let t=CR(n,r);return An(t)}var t0=d(()=>{ar();r0()});var vt=d(()=>{t0();r0()});function Za(n,r={}){let t=n.every((e)=>In(e)),o=Or(r.unevaluatedProperties)?{unevaluatedProperties:r.unevaluatedProperties}:{};return z(r.unevaluatedProperties===!1||Or(r.unevaluatedProperties)||t?{...o,[G]:"Intersect",type:"object",allOf:n}:{...o,[G]:"Intersect",allOf:n},r)}var o0=d(()=>{Z();nn();$n()});function xR(n){return n.every((r)=>Hr(r))}function QR(n){return Pn(n,[dr])}function nw(n){return n.map((r)=>Hr(r)?QR(r):r)}function PR(n,r){return xR(n)?wr(Za(nw(n),r)):Za(nw(n),r)}function Ui(n,r={}){if(n.length===1)return z(n[0],r);if(n.length===0)return mn(r);if(n.some((t)=>mo(t)))throw Error("Cannot intersect transform types");return PR(n,r)}var rw=d(()=>{nn();Z();Tt();ur();vt();o0();$n()});var tw=()=>{};function hr(n,r){if(n.length===1)return z(n[0],r);if(n.length===0)return mn(r);if(n.some((t)=>mo(t)))throw Error("Cannot intersect transform types");return Za(n,r)}var ow=d(()=>{Z();ur();o0();$n()});var Zr=d(()=>{rw();tw();ow()});function Yt(...n){let[r,t]=typeof n[0]==="string"?[n[0],n[1]]:[n[0].$id,n[1]];if(typeof r!=="string")throw new fr("Ref: $ref must be a string");return z({[G]:"Ref",$ref:r},t)}var ew=d(()=>{zt();Z();nn()});var te=d(()=>{ew()});function GR(n,r){return Jn("Awaited",[Jn(n,r)])}function OR(n){return Jn("Awaited",[Yt(n)])}function NR(n){return hr(aw(n))}function qR(n){return En(aw(n))}function FR(n){return je(n)}function aw(n){return n.map((r)=>je(r))}function je(n,r){return z(gt(n)?GR(n.target,n.parameters):Qn(n)?NR(n.allOf):_n(n)?qR(n.anyOf):To(n)?FR(n.item):qn(n)?OR(n.$ref):n,r)}var cw=d(()=>{Z();Ao();Zr();nr();te();$n()});var Yi=d(()=>{cw()});function iw(n){let r=[];for(let t of n)r.push(ya(t));return r}function jR(n){let r=iw(n);return fm(r)}function pR(n){let r=iw(n);return lm(r)}function KR(n){return n.map((r,t)=>t.toString())}function TR(n){return["[number]"]}function vR(n){return globalThis.Object.getOwnPropertyNames(n)}function IR(n){if(!ZR)return[];return globalThis.Object.getOwnPropertyNames(n).map((t)=>{return t[0]==="^"&&t[t.length-1]==="$"?t.slice(1,t.length-1):t})}function ya(n){return Qn(n)?jR(n.allOf):_n(n)?pR(n.anyOf):Gr(n)?KR(n.items??[]):bt(n)?TR(n.items):In(n)?vR(n.properties):vo(n)?IR(n.patternProperties):[]}var ZR=!1;var e0=d(()=>{Ga();$n()});function yR(n,r){return Jn("KeyOf",[Jn(n,r)])}function nk(n){return Jn("KeyOf",[Yt(n)])}function rk(n,r){let t=ya(n),o=tk(t),e=Bt(o);return z(e,r)}function tk(n){return n.map((r)=>r==="[number]"?Ir():Rn(r))}function pe(n,r){return gt(n)?yR(n.target,n.parameters):qn(n)?nk(n.$ref):Xn(n)?sw(n,r):rk(n,r)}var a0=d(()=>{Z();zr();yo();Ao();te();e0();nr();c0();$n()});function ok(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=pe(n[o],Ln(r));return t}function ek(n,r){return ok(n.properties,r)}function sw(n,r){let t=ek(n,r);return An(t)}var c0=d(()=>{ar();a0();Dr()});var lw=()=>{};var nc=d(()=>{c0();lw();e0();a0()});function ak(n){let r=[];for(let t of n)r.push(...ya(t));return sm(r)}function ck(n){return n.filter((r)=>!_o(r))}function ik(n,r){let t=[];for(let o of n)t.push(...vf(o,[r]));return ck(t)}function sk(n,r){let t={};for(let o of r)t[o]=Ui(ik(n,o));return t}function fw(n,r){let t=ak(n),o=sk(n,t);return Un(o,r)}var dw=d(()=>{Zr();Wt();nc();Nr();Ga();$n()});var i0=d(()=>{dw()});function Ji(n){return z({[G]:"Date",type:"Date"},n)}var uw=d(()=>{nn();Z()});var Li=d(()=>{uw()});function Xi(n){return z({[G]:"Null",type:"null"},n)}var bw=d(()=>{Z();nn()});var Vi=d(()=>{bw()});function Ci(n){return z({[G]:"Symbol",type:"symbol"},n)}var gw=d(()=>{Z();nn()});var xi=d(()=>{gw()});function Qi(n){return z({[G]:"Undefined",type:"undefined"},n)}var _w=d(()=>{Z();nn()});var Pi=d(()=>{_w()});function Gi(n){return z({[G]:"Uint8Array",type:"Uint8Array"},n)}var mw=d(()=>{Z();nn()});var Oi=d(()=>{mw()});function Eo(n){return z({[G]:"Unknown"},n)}var ww=d(()=>{Z();nn()});var Ke=d(()=>{ww()});function lk(n){return n.map((r)=>s0(r,!1))}function fk(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Br(s0(n[t],!1));return r}function Ni(n,r){return r===!0?n:Br(n)}function s0(n,r){return Mf(n)?Ni($o(),r):Hf(n)?Ni($o(),r):Tn(n)?Br(yr(lk(n))):qt(n)?Gi():Fo(n)?Ji():Hn(n)?Ni(Un(fk(n)),r):Df(n)?Ni(Ut([],Eo()),r):vn(n)?Qi():zf(n)?Xi():Uf(n)?Ci():Wa(n)?Ne():Cr(n)?Rn(n):Nt(n)?Rn(n):Wn(n)?Rn(n):Un({})}function hw(n,r){return z(s0(n,!0),r)}var $w=d(()=>{Oa();Ta();Li();Io();zr();Vi();Nr();xi();ko();re();Pi();Oi();Ke();Ft()});var l0=d(()=>{$w()});function Aw(n,r){return _t(n)?yr(n.parameters,r):mn(r)}var Rw=d(()=>{ko();ur();$n()});var f0=d(()=>{Rw()});function kw(n,r){if(vn(n))throw Error("Enum undefined or empty");let t=globalThis.Object.getOwnPropertyNames(n).filter((a)=>isNaN(a)).map((a)=>n[a]),e=[...new Set(t)].map((a)=>Rn(a));return En(e,{...r,[vr]:"Enum"})}var Ew=d(()=>{zr();nn();nr()});var d0=d(()=>{Ew()});function rt(n){return n===U.False?n:U.True}function Te(n){throw new zw(n)}function rr(n){return h.IsNever(n)||h.IsIntersect(n)||h.IsUnion(n)||h.IsUnknown(n)||h.IsAny(n)}function tr(n,r){return h.IsNever(r)?Ww(n,r):h.IsIntersect(r)?qi(n,r):h.IsUnion(r)?m0(n,r):h.IsUnknown(r)?Xw(n,r):h.IsAny(r)?_0(n,r):Te("StructuralRight")}function _0(n,r){return U.True}function dk(n,r){return h.IsIntersect(r)?qi(n,r):h.IsUnion(r)&&r.anyOf.some((t)=>h.IsAny(t)||h.IsUnknown(t))?U.True:h.IsUnion(r)?U.Union:h.IsUnknown(r)?U.True:h.IsAny(r)?U.True:U.Union}function uk(n,r){return h.IsUnknown(n)?U.False:h.IsAny(n)?U.Union:h.IsNever(n)?U.True:U.False}function bk(n,r){return h.IsObject(r)&&Fi(r)?U.True:rr(r)?tr(n,r):!h.IsArray(r)?U.False:rt(Bn(n.items,r.items))}function gk(n,r){return rr(r)?tr(n,r):!h.IsAsyncIterator(r)?U.False:rt(Bn(n.items,r.items))}function _k(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsBigInt(r)?U.True:U.False}function Uw(n,r){return h.IsLiteralBoolean(n)?U.True:h.IsBoolean(n)?U.True:U.False}function mk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsBoolean(r)?U.True:U.False}function wk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):!h.IsConstructor(r)?U.False:n.parameters.length>r.parameters.length?U.False:!n.parameters.every((t,o)=>rt(Bn(r.parameters[o],t))===U.True)?U.False:rt(Bn(n.returns,r.returns))}function hk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsDate(r)?U.True:U.False}function $k(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):!h.IsFunction(r)?U.False:n.parameters.length>r.parameters.length?U.False:!n.parameters.every((t,o)=>rt(Bn(r.parameters[o],t))===U.True)?U.False:rt(Bn(n.returns,r.returns))}function Bw(n,r){return h.IsLiteral(n)&&mr.IsNumber(n.const)?U.True:h.IsNumber(n)||h.IsInteger(n)?U.True:U.False}function Ak(n,r){return h.IsInteger(r)||h.IsNumber(r)?U.True:rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):U.False}function qi(n,r){return r.allOf.every((t)=>Bn(n,t)===U.True)?U.True:U.False}function Rk(n,r){return n.allOf.some((t)=>Bn(t,r)===U.True)?U.True:U.False}function kk(n,r){return rr(r)?tr(n,r):!h.IsIterator(r)?U.False:rt(Bn(n.items,r.items))}function Ek(n,r){return h.IsLiteral(r)&&r.const===n.const?U.True:rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsString(r)?Lw(n,r):h.IsNumber(r)?Yw(n,r):h.IsInteger(r)?Bw(n,r):h.IsBoolean(r)?Uw(n,r):U.False}function Ww(n,r){return U.False}function Sk(n,r){return U.True}function Sw(n){let[r,t]=[n,0];while(!0){if(!h.IsNot(r))break;r=r.not,t+=1}return t%2===0?r:Eo()}function Mk(n,r){return h.IsNot(n)?Bn(Sw(n),r):h.IsNot(r)?Bn(n,Sw(r)):Te("Invalid fallthrough for Not")}function Dk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsNull(r)?U.True:U.False}function Yw(n,r){return h.IsLiteralNumber(n)?U.True:h.IsNumber(n)||h.IsInteger(n)?U.True:U.False}function Hk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsInteger(r)||h.IsNumber(r)?U.True:U.False}function Wr(n,r){return Object.getOwnPropertyNames(n.properties).length===r}function Mw(n){return Fi(n)}function Dw(n){return Wr(n,0)||Wr(n,1)&&"description"in n.properties&&h.IsUnion(n.properties.description)&&n.properties.description.anyOf.length===2&&(h.IsString(n.properties.description.anyOf[0])&&h.IsUndefined(n.properties.description.anyOf[1])||h.IsString(n.properties.description.anyOf[1])&&h.IsUndefined(n.properties.description.anyOf[0]))}function u0(n){return Wr(n,0)}function Hw(n){return Wr(n,0)}function zk(n){return Wr(n,0)}function Uk(n){return Wr(n,0)}function Bk(n){return Fi(n)}function Wk(n){let r=Ir();return Wr(n,0)||Wr(n,1)&&"length"in n.properties&&rt(Bn(n.properties.length,r))===U.True}function Yk(n){return Wr(n,0)}function Fi(n){let r=Ir();return Wr(n,0)||Wr(n,1)&&"length"in n.properties&&rt(Bn(n.properties.length,r))===U.True}function Jk(n){let r=Ut([$o()],$o());return Wr(n,0)||Wr(n,1)&&"then"in n.properties&&rt(Bn(n.properties.then,r))===U.True}function Jw(n,r){return Bn(n,r)===U.False?U.False:h.IsOptional(n)&&!h.IsOptional(r)?U.False:U.True}function $r(n,r){return h.IsUnknown(n)?U.False:h.IsAny(n)?U.Union:h.IsNever(n)||h.IsLiteralString(n)&&Mw(r)||h.IsLiteralNumber(n)&&u0(r)||h.IsLiteralBoolean(n)&&Hw(r)||h.IsSymbol(n)&&Dw(r)||h.IsBigInt(n)&&zk(r)||h.IsString(n)&&Mw(r)||h.IsSymbol(n)&&Dw(r)||h.IsNumber(n)&&u0(r)||h.IsInteger(n)&&u0(r)||h.IsBoolean(n)&&Hw(r)||h.IsUint8Array(n)&&Bk(r)||h.IsDate(n)&&Uk(r)||h.IsConstructor(n)&&Yk(r)||h.IsFunction(n)&&Wk(r)?U.True:h.IsRecord(n)&&h.IsString(b0(n))?(()=>{return r[vr]==="Record"?U.True:U.False})():h.IsRecord(n)&&h.IsNumber(b0(n))?(()=>{return Wr(r,0)?U.True:U.False})():U.False}function Lk(n,r){return rr(r)?tr(n,r):h.IsRecord(r)?tt(n,r):!h.IsObject(r)?U.False:(()=>{for(let t of Object.getOwnPropertyNames(r.properties)){if(!(t in n.properties)&&!h.IsOptional(r.properties[t]))return U.False;if(h.IsOptional(r.properties[t]))return U.True;if(Jw(n.properties[t],r.properties[t])===U.False)return U.False}return U.True})()}function Xk(n,r){return rr(r)?tr(n,r):h.IsObject(r)&&Jk(r)?U.True:!h.IsPromise(r)?U.False:rt(Bn(n.item,r.item))}function b0(n){return wo in n.patternProperties?Ir():(ho in n.patternProperties)?$t():Te("Unknown record key pattern")}function g0(n){return wo in n.patternProperties?n.patternProperties[wo]:(ho in n.patternProperties)?n.patternProperties[ho]:Te("Unable to get record value schema")}function tt(n,r){let[t,o]=[b0(r),g0(r)];return h.IsLiteralString(n)&&h.IsNumber(t)&&rt(Bn(n,o))===U.True?U.True:h.IsUint8Array(n)&&h.IsNumber(t)?Bn(n,o):h.IsString(n)&&h.IsNumber(t)?Bn(n,o):h.IsArray(n)&&h.IsNumber(t)?Bn(n,o):h.IsObject(n)?(()=>{for(let e of Object.getOwnPropertyNames(n.properties))if(Jw(o,n.properties[e])===U.False)return U.False;return U.True})():U.False}function Vk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):!h.IsRecord(r)?U.False:Bn(g0(n),g0(r))}function Ck(n,r){let t=h.IsRegExp(n)?$t():n,o=h.IsRegExp(r)?$t():r;return Bn(t,o)}function Lw(n,r){return h.IsLiteral(n)&&mr.IsString(n.const)?U.True:h.IsString(n)?U.True:U.False}function xk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsString(r)?U.True:U.False}function Qk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsSymbol(r)?U.True:U.False}function Pk(n,r){return h.IsTemplateLiteral(n)?Bn(ne(n),r):h.IsTemplateLiteral(r)?Bn(n,ne(r)):Te("Invalid fallthrough for TemplateLiteral")}function Gk(n,r){return h.IsArray(r)&&n.items!==void 0&&n.items.every((t)=>Bn(t,r.items)===U.True)}function Ok(n,r){return h.IsNever(n)?U.True:h.IsUnknown(n)?U.False:h.IsAny(n)?U.Union:U.False}function Nk(n,r){return rr(r)?tr(n,r):h.IsObject(r)&&Fi(r)?U.True:h.IsArray(r)&&Gk(n,r)?U.True:!h.IsTuple(r)?U.False:mr.IsUndefined(n.items)&&!mr.IsUndefined(r.items)||!mr.IsUndefined(n.items)&&mr.IsUndefined(r.items)?U.False:mr.IsUndefined(n.items)&&!mr.IsUndefined(r.items)?U.True:n.items.every((t,o)=>Bn(t,r.items[o])===U.True)?U.True:U.False}function qk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsUint8Array(r)?U.True:U.False}function Fk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?$r(n,r):h.IsRecord(r)?tt(n,r):h.IsVoid(r)?Kk(n,r):h.IsUndefined(r)?U.True:U.False}function m0(n,r){return r.anyOf.some((t)=>Bn(n,t)===U.True)?U.True:U.False}function jk(n,r){return n.anyOf.every((t)=>Bn(t,r)===U.True)?U.True:U.False}function Xw(n,r){return U.True}function pk(n,r){return h.IsNever(r)?Ww(n,r):h.IsIntersect(r)?qi(n,r):h.IsUnion(r)?m0(n,r):h.IsAny(r)?_0(n,r):h.IsString(r)?Lw(n,r):h.IsNumber(r)?Yw(n,r):h.IsInteger(r)?Bw(n,r):h.IsBoolean(r)?Uw(n,r):h.IsArray(r)?uk(n,r):h.IsTuple(r)?Ok(n,r):h.IsObject(r)?$r(n,r):h.IsUnknown(r)?U.True:U.False}function Kk(n,r){return h.IsUndefined(n)?U.True:h.IsUndefined(n)?U.True:U.False}function Tk(n,r){return h.IsIntersect(r)?qi(n,r):h.IsUnion(r)?m0(n,r):h.IsUnknown(r)?Xw(n,r):h.IsAny(r)?_0(n,r):h.IsObject(r)?$r(n,r):h.IsVoid(r)?U.True:U.False}function Bn(n,r){return h.IsTemplateLiteral(n)||h.IsTemplateLiteral(r)?Pk(n,r):h.IsRegExp(n)||h.IsRegExp(r)?Ck(n,r):h.IsNot(n)||h.IsNot(r)?Mk(n,r):h.IsAny(n)?dk(n,r):h.IsArray(n)?bk(n,r):h.IsBigInt(n)?_k(n,r):h.IsBoolean(n)?mk(n,r):h.IsAsyncIterator(n)?gk(n,r):h.IsConstructor(n)?wk(n,r):h.IsDate(n)?hk(n,r):h.IsFunction(n)?$k(n,r):h.IsInteger(n)?Ak(n,r):h.IsIntersect(n)?Rk(n,r):h.IsIterator(n)?kk(n,r):h.IsLiteral(n)?Ek(n,r):h.IsNever(n)?Sk(n,r):h.IsNull(n)?Dk(n,r):h.IsNumber(n)?Hk(n,r):h.IsObject(n)?Lk(n,r):h.IsRecord(n)?Vk(n,r):h.IsString(n)?xk(n,r):h.IsSymbol(n)?Qk(n,r):h.IsTuple(n)?Nk(n,r):h.IsPromise(n)?Xk(n,r):h.IsUint8Array(n)?qk(n,r):h.IsUndefined(n)?Fk(n,r):h.IsUnion(n)?jk(n,r):h.IsUnknown(n)?pk(n,r):h.IsVoid(n)?Tk(n,r):Te(`Unknown left type operand '${n[G]}'`)}function So(n,r){return Bn(n,r)}var zw,U;var w0=d(()=>{Oa();Io();yo();qe();Ke();Zt();Pa();nn();zt();Cf();zw=class zw extends fr{};(function(n){n[n.Union=0]="Union",n[n.True=1]="True",n[n.False=2]="False"})(U||(U={}))});function vk(n,r,t,o,e){let a={};for(let c of globalThis.Object.getOwnPropertyNames(n))a[c]=ve(n[c],r,t,o,Ln(e));return a}function Ik(n,r,t,o,e){return vk(n.properties,r,t,o,e)}function Vw(n,r,t,o,e){let a=Ik(n,r,t,o,e);return An(a)}var h0=d(()=>{ar();ji();Dr()});function Zk(n,r,t,o){let e=So(n,r);return e===U.Union?En([t,o]):e===U.True?t:o}function ve(n,r,t,o,e){return Xn(n)?Vw(n,r,t,o,e):Qr(n)?z(Cw(n,r,t,o,e)):z(Zk(n,r,t,o),e)}var ji=d(()=>{Z();nr();w0();$0();h0();$n()});function yk(n,r,t,o,e){return{[n]:ve(Rn(n),r,t,o,Ln(e))}}function n3(n,r,t,o,e){return n.reduce((a,c)=>{return{...a,...yk(c,r,t,o,e)}},{})}function r3(n,r,t,o,e){return n3(n.keys,r,t,o,e)}function Cw(n,r,t,o,e){let a=r3(n,r,t,o,e);return An(a)}var $0=d(()=>{ar();zr();ji();Dr()});var xw=()=>{};var rc=d(()=>{w0();$0();h0();xw();ji()});function Qw(n,r){return Ie(ne(n),r)}var A0=d(()=>{pi();Zt()});function t3(n,r){let t=n.filter((o)=>So(o,r)===U.False);return t.length===1?t[0]:En(t)}function Ie(n,r,t={}){if(Pr(n))return z(Qw(n,r),t);if(Xn(n))return z(Pw(n,r),t);return z(_n(n)?t3(n.anyOf,r):So(n,r)!==U.False?mn():n,t)}var pi=d(()=>{Z();nr();ur();rc();R0();A0();$n()});function o3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Ie(n[o],r);return t}function e3(n,r){return o3(n.properties,r)}function Pw(n,r){let t=e3(n,r);return An(t)}var R0=d(()=>{ar();pi()});var k0=d(()=>{R0();A0();pi()});function Gw(n,r){return Ze(ne(n),r)}var E0=d(()=>{Ki();Zt()});function a3(n,r){let t=n.filter((o)=>So(o,r)!==U.False);return t.length===1?t[0]:En(t)}function Ze(n,r,t){if(Pr(n))return z(Gw(n,r),t);if(Xn(n))return z(Ow(n,r),t);return z(_n(n)?a3(n.anyOf,r):So(n,r)!==U.False?n:mn(),t)}var Ki=d(()=>{Z();nr();ur();rc();S0();E0();$n()});function c3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Ze(n[o],r);return t}function i3(n,r){return c3(n.properties,r)}function Ow(n,r){let t=i3(n,r);return An(t)}var S0=d(()=>{ar();Ki()});var M0=d(()=>{S0();E0();Ki()});function Nw(n,r){return _t(n)?z(n.returns,r):mn(r)}var qw=d(()=>{Z();ur();$n()});var D0=d(()=>{qw()});function Ti(n){return Br(wr(n))}var Fw=d(()=>{re();vt()});var vi=d(()=>{Fw()});function oe(n,r,t){return z({[G]:"Record",type:"object",patternProperties:{[n]:r}},t)}function H0(n,r,t){let o={};for(let e of n)o[e]=r;return Un(o,{...t,[vr]:"Record"})}function s3(n,r,t){return Hm(n)?H0(Ur(n),r,t):oe(n.pattern,r,t)}function l3(n,r,t){return H0(Ur(En(n)),r,t)}function f3(n,r,t){return H0([n.toString()],r,t)}function d3(n,r,t){return oe(n.source,r,t)}function u3(n,r,t){let o=vn(n.pattern)?ho:n.pattern;return oe(o,r,t)}function b3(n,r,t){return oe(ho,r,t)}function g3(n,r,t){return oe(om,r,t)}function _3(n,r,t){return Un({true:r,false:r},t)}function m3(n,r,t){return oe(wo,r,t)}function w3(n,r,t){return oe(wo,r,t)}function Ii(n,r,t={}){return _n(n)?l3(n.anyOf,r,t):Pr(n)?s3(n,r,t):xr(n)?f3(n.const,r,t):jt(n)?_3(n,r,t):wt(n)?m3(n,r,t):ht(n)?w3(n,r,t):Jf(n)?d3(n,r,t):pt(n)?u3(n,r,t):Wf(n)?b3(n,r,t):_o(n)?g3(n,r,t):mn(t)}function Zi(n){return globalThis.Object.getOwnPropertyNames(n.patternProperties)[0]}function jw(n){let r=Zi(n);return r===ho?$t():r===wo?Ir():$t({pattern:r})}function yi(n){return n.patternProperties[Zi(n)]}var pw=d(()=>{Z();nn();ur();yo();Nr();qe();nr();Zt();Pa();Wt();$n()});var tc=d(()=>{pw()});function h3(n,r){return r.parameters=oc(n,r.parameters),r.returns=At(n,r.returns),r}function $3(n,r){return r.parameters=oc(n,r.parameters),r.returns=At(n,r.returns),r}function A3(n,r){return r.allOf=oc(n,r.allOf),r}function R3(n,r){return r.anyOf=oc(n,r.anyOf),r}function k3(n,r){if(vn(r.items))return r;return r.items=oc(n,r.items),r}function E3(n,r){return r.items=At(n,r.items),r}function S3(n,r){return r.items=At(n,r.items),r}function M3(n,r){return r.items=At(n,r.items),r}function D3(n,r){return r.item=At(n,r.item),r}function H3(n,r){let t=W3(n,r.properties);return{...r,...Un(t)}}function z3(n,r){let t=At(n,jw(r)),o=At(n,yi(r)),e=Ii(t,o);return{...r,...e}}function U3(n,r){return r.index in n?n[r.index]:Eo()}function B3(n,r){let t=Ce(r),o=Hr(r),e=At(n,r);return t&&o?Ti(e):t&&!o?Br(e):!t&&o?wr(e):e}function W3(n,r){return globalThis.Object.getOwnPropertyNames(r).reduce((t,o)=>{return{...t,[o]:B3(n,r[o])}},{})}function oc(n,r){return r.map((t)=>At(n,t))}function At(n,r){return _t(r)?h3(n,r):mt(r)?$3(n,r):Qn(r)?A3(n,r):_n(r)?R3(n,r):Gr(r)?k3(n,r):bt(r)?E3(n,r):jo(r)?S3(n,r):Ko(r)?M3(n,r):To(r)?D3(n,r):In(r)?H3(n,r):vo(r)?z3(n,r):Yf(r)?U3(n,r):r}function Kw(n,r){return At(r,Ve(n))}var Tw=d(()=>{hi();Ke();vi();re();vt();Nr();tc();$n()});var z0=d(()=>{Tw()});function vw(n){return z({[G]:"Integer",type:"integer"},n)}var Iw=d(()=>{Z();nn()});var U0=d(()=>{Iw()});function Y3(n,r,t){return{[n]:Rt(Rn(n),r,Ln(t))}}function J3(n,r,t){return n.reduce((e,a)=>{return{...e,...Y3(a,r,t)}},{})}function L3(n,r,t){return J3(n.keys,r,t)}function Zw(n,r,t){let o=L3(n,r,t);return An(o)}var B0=d(()=>{ar();ee();zr();Dr()});function X3(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toLowerCase(),t].join("")}function V3(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toUpperCase(),t].join("")}function C3(n){return n.toUpperCase()}function x3(n){return n.toLowerCase()}function Q3(n,r,t){let o=Oe(n.pattern);if(!Zo(o))return{...n,pattern:yw(n.pattern,r)};let c=[...Ka(o)].map((l)=>Rn(l)),i=n1(c,r),s=En(i);return Hi([s],t)}function yw(n,r){return typeof n==="string"?r==="Uncapitalize"?X3(n):r==="Capitalize"?V3(n):r==="Uppercase"?C3(n):r==="Lowercase"?x3(n):n:n.toString()}function n1(n,r){return n.map((t)=>Rt(t,r))}function Rt(n,r,t={}){return Qr(n)?Zw(n,r,t):Pr(n)?Q3(n,r,t):_n(n)?En(n1(n.anyOf,r),t):xr(n)?Rn(yw(n.const,r),t):z(n,t)}var ee=d(()=>{Z();Zt();B0();zr();nr();$n()});function r1(n,r={}){return Rt(n,"Capitalize",r)}var t1=d(()=>{ee()});function o1(n,r={}){return Rt(n,"Lowercase",r)}var e1=d(()=>{ee()});function a1(n,r={}){return Rt(n,"Uncapitalize",r)}var c1=d(()=>{ee()});function i1(n,r={}){return Rt(n,"Uppercase",r)}var s1=d(()=>{ee()});var W0=d(()=>{t1();B0();ee();e1();c1();s1()});function P3(n,r,t){let o={};for(let e of globalThis.Object.getOwnPropertyNames(n))o[e]=Mo(n[e],r,Ln(t));return o}function G3(n,r,t){return P3(n.properties,r,t)}function l1(n,r,t){let o=G3(n,r,t);return An(o)}var Y0=d(()=>{ar();ns();Dr()});function O3(n,r){return n.map((t)=>J0(t,r))}function N3(n,r){return n.map((t)=>J0(t,r))}function q3(n,r){let{[r]:t,...o}=n;return o}function F3(n,r){return r.reduce((t,o)=>q3(t,o),n)}function j3(n,r,t){let o=Pn(n,[yn,"$id","required","properties"]),e=F3(t,r);return Un(e,o)}function p3(n){let r=n.reduce((t,o)=>Ai(o)?[...t,Rn(o)]:t,[]);return En(r)}function J0(n,r){return Qn(n)?hr(O3(n.allOf,r)):_n(n)?En(N3(n.anyOf,r)):In(n)?j3(n,r,n.properties):Un({})}function Mo(n,r,t){let o=Tn(r)?p3(r):r,e=Or(r)?Ur(r):r,a=qn(n),c=qn(r);return Xn(n)?l1(n,e,t):Qr(r)?f1(n,r,t):a&&c?Jn("Omit",[n,o],t):!a&&c?Jn("Omit",[n,o],t):a&&!c?Jn("Omit",[n,o],t):z({...J0(n,e),...t})}var ns=d(()=>{Z();La();Ao();zr();Wt();Zr();nr();Nr();L0();Y0();$n()});function K3(n,r,t){return{[r]:Mo(n,[r],Ln(t))}}function T3(n,r,t){return r.reduce((o,e)=>{return{...o,...K3(n,e,t)}},{})}function v3(n,r,t){return T3(n,r.keys,t)}function f1(n,r,t){let o=v3(n,r,t);return An(o)}var L0=d(()=>{ar();ns();Dr()});var rs=d(()=>{L0();Y0();ns()});function I3(n,r,t){let o={};for(let e of globalThis.Object.getOwnPropertyNames(n))o[e]=Do(n[e],r,Ln(t));return o}function Z3(n,r,t){return I3(n.properties,r,t)}function d1(n,r,t){let o=Z3(n,r,t);return An(o)}var X0=d(()=>{ar();ts();Dr()});function y3(n,r){return n.map((t)=>V0(t,r))}function n4(n,r){return n.map((t)=>V0(t,r))}function r4(n,r){let t={};for(let o of r)if(o in n)t[o]=n[o];return t}function t4(n,r,t){let o=Pn(n,[yn,"$id","required","properties"]),e=r4(t,r);return Un(e,o)}function o4(n){let r=n.reduce((t,o)=>Ai(o)?[...t,Rn(o)]:t,[]);return En(r)}function V0(n,r){return Qn(n)?hr(y3(n.allOf,r)):_n(n)?En(n4(n.anyOf,r)):In(n)?t4(n,r,n.properties):Un({})}function Do(n,r,t){let o=Tn(r)?o4(r):r,e=Or(r)?Ur(r):r,a=qn(n),c=qn(r);return Xn(n)?d1(n,e,t):Qr(r)?u1(n,r,t):a&&c?Jn("Pick",[n,o],t):!a&&c?Jn("Pick",[n,o],t):a&&!c?Jn("Pick",[n,o],t):z({...V0(n,e),...t})}var ts=d(()=>{Z();Ao();Zr();zr();Nr();nr();Wt();La();$n();C0();X0()});function e4(n,r,t){return{[r]:Do(n,[r],Ln(t))}}function a4(n,r,t){return r.reduce((o,e)=>{return{...o,...e4(n,e,t)}},{})}function c4(n,r,t){return a4(n,r.keys,t)}function u1(n,r,t){let o=c4(n,r,t);return An(o)}var C0=d(()=>{ar();ts();Dr()});var os=d(()=>{C0();X0();ts()});function i4(n,r){return Jn("Partial",[Jn(n,r)])}function s4(n){return Jn("Partial",[Yt(n)])}function l4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=wr(n[t]);return r}function f4(n,r){let t=Pn(n,[yn,"$id","required","properties"]),o=l4(r);return Un(o,t)}function b1(n){return n.map((r)=>g1(r))}function g1(n){return gt(n)?i4(n.target,n.parameters):qn(n)?s4(n.$ref):Qn(n)?hr(b1(n.allOf)):_n(n)?En(b1(n.anyOf)):In(n)?f4(n,n.properties):po(n)?n:jt(n)?n:wt(n)?n:xr(n)?n:Xa(n)?n:ht(n)?n:pt(n)?n:Va(n)?n:Ca(n)?n:Un({})}function ye(n,r){if(Xn(n))return _1(n,r);else return z({...g1(n),...r})}var x0=d(()=>{Z();Ao();vt();Nr();Zr();nr();te();Tt();nn();Q0();$n()});function d4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=ye(n[o],Ln(r));return t}function u4(n,r){return d4(n.properties,r)}function _1(n,r){let t=u4(n,r);return An(t)}var Q0=d(()=>{ar();x0();Dr()});var es=d(()=>{Q0();x0()});function b4(n,r){return Jn("Required",[Jn(n,r)])}function g4(n){return Jn("Required",[Yt(n)])}function _4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Pn(n[t],[dr]);return r}function m4(n,r){let t=Pn(n,[yn,"$id","required","properties"]),o=_4(r);return Un(o,t)}function m1(n){return n.map((r)=>w1(r))}function w1(n){return gt(n)?b4(n.target,n.parameters):qn(n)?g4(n.$ref):Qn(n)?hr(m1(n.allOf)):_n(n)?En(m1(n.anyOf)):In(n)?m4(n,n.properties):po(n)?n:jt(n)?n:wt(n)?n:xr(n)?n:Xa(n)?n:ht(n)?n:pt(n)?n:Va(n)?n:Ca(n)?n:Un({})}function na(n,r){if(Xn(n))return h1(n,r);else return z({...w1(n),...r})}var P0=d(()=>{Z();Ao();Nr();Zr();nr();te();nn();Tt();G0();$n()});function w4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=na(n[o],r);return t}function h4(n,r){return w4(n.properties,r)}function h1(n,r){let t=h4(n,r);return An(t)}var G0=d(()=>{ar();P0()});var as=d(()=>{G0();P0()});function $4(n,r){return r.map((t)=>{return qn(t)?O0(n,t.$ref):qr(n,t)})}function O0(n,r){return r in n?qn(n[r])?O0(n,n[r].$ref):qr(n,n[r]):mn()}function A4(n){return je(n[0])}function R4(n){return Ro(n[0],n[1])}function k4(n){return pe(n[0])}function E4(n){return ye(n[0])}function S4(n){return Mo(n[0],n[1])}function M4(n){return Do(n[0],n[1])}function D4(n){return na(n[0])}function H4(n,r,t){let o=$4(n,t);return r==="Awaited"?A4(o):r==="Index"?R4(o):r==="KeyOf"?k4(o):r==="Partial"?E4(o):r==="Omit"?S4(o):r==="Pick"?M4(o):r==="Required"?D4(o):mn()}function z4(n,r){return xe(qr(n,r))}function U4(n,r){return Qe(qr(n,r))}function B4(n,r,t){return Pe(ec(n,r),qr(n,t))}function W4(n,r,t){return Ut(ec(n,r),qr(n,t))}function Y4(n,r){return hr(ec(n,r))}function J4(n,r){return Fe(qr(n,r))}function L4(n,r){return Un(globalThis.Object.keys(r).reduce((t,o)=>{return{...t,[o]:qr(n,r[o])}},{}))}function X4(n,r){let[t,o]=[qr(n,yi(r)),Zi(r)],e=Ve(r);return e.patternProperties[o]=t,e}function V4(n,r){return qn(r)?{...O0(n,r.$ref),[yn]:r[yn]}:r}function C4(n,r){return yr(ec(n,r))}function x4(n,r){return En(ec(n,r))}function ec(n,r){return r.map((t)=>qr(n,t))}function qr(n,r){return Hr(r)?z(qr(n,Pn(r,[dr])),r):Ce(r)?z(qr(n,Pn(r,[ut])),r):mo(r)?z(V4(n,r),r):bt(r)?z(z4(n,r.items),r):jo(r)?z(U4(n,r.items),r):gt(r)?z(H4(n,r.target,r.parameters)):_t(r)?z(B4(n,r.parameters,r.returns),r):mt(r)?z(W4(n,r.parameters,r.returns),r):Qn(r)?z(Y4(n,r.allOf),r):Ko(r)?z(J4(n,r.items),r):In(r)?z(L4(n,r.properties),r):vo(r)?z(X4(n,r)):Gr(r)?z(C4(n,r.items||[]),r):_n(r)?z(x4(n,r.anyOf),r):r}function Q4(n,r){return r in n?qr(n,n[r]):mn()}function $1(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:Q4(n,t)}},{})}var A1=d(()=>{Ft();Bf();Tt();Na();Yi();qa();Fa();Wt();Io();Zr();va();nc();Nr();rs();os();ur();es();tc();as();ko();nr();nn();$n()});class R1{constructor(n){let r=$1(n),t=this.WithIdentifiers(r);this.$defs=t}Import(n,r){let t={...this.$defs,[n]:z(this.$defs[n],r)};return z({[G]:"Import",$defs:t,$ref:n})}WithIdentifiers(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:{...n[t],$id:t}}},{})}}function k1(n){return new R1(n)}var E1=d(()=>{Ft();nn();A1()});var N0=d(()=>{E1()});function S1(n,r){return z({[G]:"Not",not:n},r)}var M1=d(()=>{Z();nn()});var q0=d(()=>{M1()});function D1(n,r){return mt(n)?yr(n.parameters,r):mn()}var H1=d(()=>{ko();ur();$n()});var F0=d(()=>{H1()});function z1(n,r={}){if(vn(r.$id))r.$id=`T${P4++}`;let t=Ve(n({[G]:"This",$ref:`${r.$id}`}));return t.$id=r.$id,z({[vr]:"Recursive",...t},r)}var P4=0;var U1=d(()=>{hi();Z();nn()});var j0=d(()=>{U1()});function B1(n,r){let t=Wn(n)?new globalThis.RegExp(n):n;return z({[G]:"RegExp",type:"RegExp",source:t.source,flags:t.flags},r)}var W1=d(()=>{Z();nn()});var p0=d(()=>{W1()});function G4(n){return Qn(n)?n.allOf:_n(n)?n.anyOf:Gr(n)?n.items??[]:[]}function Y1(n){return G4(n)}var J1=d(()=>{$n()});var K0=d(()=>{J1()});function L1(n,r){return mt(n)?z(n.returns,r):mn(r)}var X1=d(()=>{Z();ur();$n()});var T0=d(()=>{X1()});var V1=()=>{};var C1=()=>{};var x1=d(()=>{V1();C1()});var Q1=()=>{};var P1=d(()=>{Q1()});class G1{constructor(n){this.schema=n}Decode(n){return new O1(this.schema,n)}}class O1{constructor(n,r){this.schema=n,this.decode=r}EncodeTransform(n,r){let e={Encode:(a)=>r[yn].Encode(n(a)),Decode:(a)=>this.decode(r[yn].Decode(a))};return{...r,[yn]:e}}EncodeSchema(n,r){let t={Decode:this.decode,Encode:n};return{...r,[yn]:t}}Encode(n){return mo(this.schema)?this.EncodeTransform(n,this.schema):this.EncodeSchema(n,this.schema)}}function N1(n){return new G1(n)}var q1=d(()=>{nn();$n()});var v0=d(()=>{q1()});function F1(n={}){return z({[G]:n[G]??"Unsafe"},n)}var j1=d(()=>{Z();nn()});var I0=d(()=>{j1()});function p1(n){return z({[G]:"Void",type:"void"},n)}var K1=d(()=>{Z();nn()});var Z0=d(()=>{K1()});var y0={};no(y0,{Void:()=>p1,Uppercase:()=>i1,Unsafe:()=>F1,Unknown:()=>Eo,Union:()=>En,Undefined:()=>Qi,Uncapitalize:()=>a1,Uint8Array:()=>Gi,Tuple:()=>yr,Transform:()=>N1,TemplateLiteral:()=>Hi,Symbol:()=>Ci,String:()=>$t,ReturnType:()=>L1,Rest:()=>Y1,Required:()=>na,RegExp:()=>B1,Ref:()=>Yt,Recursive:()=>z1,Record:()=>Ii,ReadonlyOptional:()=>Ti,Readonly:()=>Br,Promise:()=>Bi,Pick:()=>Do,Partial:()=>ye,Parameters:()=>D1,Optional:()=>wr,Omit:()=>Mo,Object:()=>Un,Number:()=>Ir,Null:()=>Xi,Not:()=>S1,Never:()=>mn,Module:()=>k1,Mapped:()=>Im,Lowercase:()=>o1,Literal:()=>Rn,KeyOf:()=>pe,Iterator:()=>Fe,Intersect:()=>hr,Integer:()=>vw,Instantiate:()=>Kw,InstanceType:()=>Nw,Index:()=>Ro,Function:()=>Ut,Extract:()=>Ze,Extends:()=>ve,Exclude:()=>Ie,Enum:()=>kw,Date:()=>Ji,ConstructorParameters:()=>Aw,Constructor:()=>Pe,Const:()=>hw,Composite:()=>fw,Capitalize:()=>r1,Boolean:()=>Mi,BigInt:()=>Ne,Awaited:()=>je,AsyncIterator:()=>Qe,Array:()=>xe,Argument:()=>bm,Any:()=>$o});var T1=d(()=>{Oa();xf();Na();qa();Yi();Ta();Di();i0();l0();Fa();f0();Li();d0();k0();rc();M0();Io();Wt();D0();z0();U0();Zr();W0();va();nc();zr();ar();N0();ur();q0();Vi();yo();Nr();rs();vt();F0();es();os();Wi();re();vi();tc();j0();te();p0();as();K0();T0();qe();xi();Zt();v0();ko();Oi();Pi();nr();Ke();I0();Z0()});var or;var v1=d(()=>{T1();or=y0});var I1=d(()=>{Bf();Ft();zt();Cf();nm();Pa();cm();Ga();nn();Oa();Na();xf();qa();Yi();Ta();Di();i0();l0();Fa();f0();Li();d0();k0();rc();M0();Io();Wt();D0();z0();U0();Zr();va();W0();nc();zr();N0();ar();ur();q0();Vi();yo();Nr();rs();vt();F0();es();os();Wi();re();vi();tc();j0();te();p0();as();K0();T0();x1();P1();qe();xi();Zt();v0();ko();Oi();Pi();nr();Ke();I0();Z0();v1()});var nd,rd,$N,AN;var td=d(()=>{I1();nd=or.Object({email:or.String({format:"email"})}),rd=or.Object({token:or.String()}),$N=or.Object({success:or.Boolean(),message:or.Optional(or.String())}),AN=or.Object({success:or.Boolean(),message:or.Optional(or.String()),data:or.Optional(or.Object({user:or.Object({id:or.String(),email:or.String()}),accessToken:or.String(),refreshToken:or.String()}))})});import{eq as od}from"drizzle-orm";import{Elysia as O4}from"elysia";function cs(n,r,t,o,e,a,c,i,s,l){let{db:f,logger:u,usersTable:b}=n,$=r.route||"/auth/magic-link",A=r.verifyRoute||"/auth/magic-link/verify",_=r.expiresIn||"15m",m=r.redirectUrl||"",E=new O4;if(!r.enabled)return E;return E.post($,async(R)=>{if(!f||!b)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return u.error("[AUTH] Magic link requested but email service not available"),{success:!1,message:"Email service not available"};let{email:M}=R.body,x=(await f.select().from(b).where(od(b.email,M)).limit(1))[0];if(!x)return u.info("[AUTH] Magic link requested for non-existent email",{email:M}),{success:!0,message:"If an account exists, a magic link has been sent"};if(x.isLocked)return u.warn("[AUTH] Magic link requested for locked account",{email:M}),{success:!0,message:"If an account exists, a magic link has been sent"};let D=Le(),k=dt(D),B=new Date(Date.now()+Xe(_));await c({userId:x.id,email:M,tokenHash:k,expiresAt:B});let w=m?`${m}?token=${D}`:`${A}?token=${D}`,g=await t.sendMagicLinkEmail(M,w,l);if(!g.success)return u.error("[AUTH] Failed to send magic link email",{email:M,error:g.error}),{success:!1,message:"Failed to send email"};return u.info("[AUTH] Magic link sent",{email:M,userId:x.id}),{success:!0,message:"If an account exists, a magic link has been sent"}},{body:nd,detail:{tags:["Authentication"],summary:"Request Magic Link",description:"Send a magic link to the user's email for passwordless login"}}),E.get(A,async(R)=>{if(!f||!b)return{success:!1,message:"Database not configured"};let M=R.query.token;if(!M)return{success:!1,message:"Token is required"};let S=dt(M),x=await i(S);if(!x)return u.warn("[AUTH] Invalid magic link token"),{success:!1,message:"Invalid or expired token"};if(new Date>x.expiresAt)return await s(S),u.warn("[AUTH] Expired magic link token",{email:x.email}),{success:!1,message:"Invalid or expired token"};let k=(await f.select().from(b).where(od(b.id,x.userId)).limit(1))[0];if(!k)return await s(S),{success:!1,message:"User not found"};await s(S),await f.update(b).set({lastLoginAt:new Date,loginCount:(k.loginCount||0)+1,emailVerified:!0}).where(od(b.id,k.id));let B=R.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||R.request.headers.get("x-real-ip")?.trim()||"unknown",w=R.request.headers.get("user-agent")||"",g=o(k.id),Y=e(k.id),V=await a({userId:k.id,deviceInfo:{ipAddress:B,userAgent:w,deviceType:"unknown"},loginMethod:"magic_link"});return u.info("[AUTH] Magic link login successful",{userId:k.id,email:k.email}),R.set.headers["x-session-id"]=V,{success:!0,data:{user:{id:k.id,email:k.email},accessToken:g,refreshToken:Y}}},{query:rd,detail:{tags:["Authentication"],summary:"Verify Magic Link",description:"Verify magic link token and login user"}}),E}var ed=d(()=>{td();Ba();td()});import{eq as ra}from"drizzle-orm";import{Elysia as N4}from"elysia";function is(n,r,t,o,e){let{db:a,logger:c,usersTable:i}=n,s=r.route||"/auth/me",l=new N4;if(!r.enabled)return l;return l.get(s,async(f)=>{if(!a||!i)return{success:!1,message:"Database not configured"};let u=f.request.headers.get("x-user-id");if(!u)return f.set.status=401,{success:!1,message:"Unauthorized"};let $=(await a.select().from(i).where(ra(i.id,u)).limit(1))[0];if(!$)return f.set.status=404,{success:!1,message:"User not found"};let{password:A,..._}=$,m=null,E=[],R=[],M=[],S=[];if(r.includeProfile&&t){let D=t.profiles;if(D&&a)m=(await a.select().from(D).where(ra(D.userId,u)).limit(1))[0]||null}if(r.includeAddresses&&t){let D=t.addresses;if(D&&a)E=await a.select().from(D).where(ra(D.ownerId,u))}if(r.includePhones&&t){let D=t.phones;if(D&&a)R=await a.select().from(D).where(ra(D.ownerId,u))}if(r.includeFiles&&t){let D=t.files;if(D&&a)M=await a.select().from(D).where(ra(D.uploadedBy,u))}if(r.includeRoles&&t){let{userRoles:D,roles:k}=t;if(D&&k&&a){let w=(await a.select().from(D).where(ra(D.userId,u))).map((g)=>g.roleId);if(w.length>0){let{inArray:g}=await import("drizzle-orm");S=await a.select().from(k).where(g(k.id,w))}}}return c.info("[AUTH] Me endpoint accessed",{userId:u}),JSON.parse(JSON.stringify({success:!0,data:{user:_,profile:m,addresses:E,phones:R,files:M,roles:S}},(D,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"}}),l}var ad=()=>{};import{eq as kr,and as ss}from"drizzle-orm";import{Elysia as q4}from"elysia";function Z1(n,r,t,o,e,a,c,i,s,l,f){let{db:u,logger:b,usersTable:$}=n,A=r.basePath,_={accessTokenName:c?.accessTokenName||"access_token",refreshTokenName:c?.refreshTokenName||"refresh_token",sessionTokenName:c?.sessionTokenName||"session_token",accessTokenMaxAge:c?.accessTokenMaxAge||900,refreshTokenMaxAge:c?.refreshTokenMaxAge||604800,sessionTokenMaxAge:c?.sessionTokenMaxAge||900,secure:c?.secure??!0,httpOnly:c?.httpOnly??!0,sameSite:c?.sameSite||"lax",path:c?.path||"/"},m={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},E=new q4;return E.get(`${A}/:provider`,async(R)=>{let M=R.params.provider;if(!r.isProviderEnabled(M))return R.set.status=404,{success:!1,message:`OAuth provider "${M}" is not enabled`};let S=R.query.link_user_id,x=R.query.redirect_url,D=r.buildAuthorizationUrl(M,S,x);return R.set.status=302,R.set.headers.Location=D,null},{detail:{tags:["Authentication"],summary:"OAuth Redirect",description:"Redirects to the OAuth provider authorization page"}}),E.get(`${A}/:provider/callback`,async(R)=>{let M=R.params.provider,S=R.query,{code:x,state:D,error:k,error_description:B}=S,w=r.errorRedirectUrl;if(k)return b.warn("[OAUTH] Provider returned error",{provider:M,error:k,error_description:B}),R.set.status=302,R.set.headers.Location=`${w}?error=${encodeURIComponent(B||k)}`,null;if(!x||!D)return R.set.status=302,R.set.headers.Location=`${w}?error=missing_code_or_state`,null;let g=r.consumeState(D);if(!g)return b.warn("[OAUTH] Invalid or expired state",{provider:M,state:D}),R.set.status=302,R.set.headers.Location=`${w}?error=invalid_state`,null;if(g.provider!==M)return b.warn("[OAUTH] State provider mismatch",{expected:g.provider,got:M}),R.set.status=302,R.set.headers.Location=`${w}?error=provider_mismatch`,null;if(!u||!$)return R.set.status=302,R.set.headers.Location=`${w}?error=server_error`,null;let Y;try{Y=await r.exchangeCode(M,x)}catch(T){return b.error("[OAUTH] Code exchange failed",{provider:M,error:T}),R.set.status=302,R.set.headers.Location=`${w}?error=token_exchange_failed`,null}let{profile:V,tokens:C}=Y,Q=n.oauthAccountsTable,j=null;if(g.linkUserId&&r.allowAccountLinking){if(j=g.linkUserId,Q){let tn=await u.select().from(Q).where(ss(kr(Q.provider,M),kr(Q.providerAccountId,V.providerAccountId))).limit(1);if(tn.length>0){let Vn=tn[0];if(Vn.userId!==j)return R.set.status=302,R.set.headers.Location=`${w}?error=account_already_linked_to_another_user`,null;await u.update(Q).set({accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,lastUsedAt:new Date}).where(kr(Q.id,Vn.id))}else await u.insert(Q).values({userId:j,provider:M,providerAccountId:V.providerAccountId,providerEmail:V.email??null,providerName:V.name??null,providerAvatarUrl:V.avatarUrl??null,accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,isPrimary:!1,lastUsedAt:new Date})}b.info("[OAUTH] Account linked successfully",{userId:j,provider:M});let T=g.redirectUrl||r.successRedirectUrl;return R.set.status=302,R.set.headers.Location=`${T}?linked=true&provider=${M}`,null}if(Q){let T=await u.select().from(Q).where(ss(kr(Q.provider,M),kr(Q.providerAccountId,V.providerAccountId))).limit(1);if(T.length>0){let tn=T[0];j=tn.userId,await u.update(Q).set({accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,lastUsedAt:new Date}).where(kr(Q.id,tn.id))}}if(!j&&V.email){let T=await u.select().from($).where(kr($.email,V.email)).limit(1);if(T.length>0){if(j=T[0].id,Q)await u.insert(Q).values({userId:j,provider:M,providerAccountId:V.providerAccountId,providerEmail:V.email??null,providerName:V.name??null,providerAvatarUrl:V.avatarUrl??null,accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,isPrimary:!1,lastUsedAt:new Date}).onConflictDoNothing();b.info("[OAUTH] Merged OAuth account with existing user by email",{userId:j,provider:M,email:V.email})}}if(!j){if(!r.autoCreateUser)return R.set.status=302,R.set.headers.Location=`${w}?error=user_not_found`,null;let T=V.email??`${M}_${V.providerAccountId}@oauth.local`;if(j=(await u.insert($).values({email:T,password:null,verifiedAt:V.email?new Date:null,isActive:!0}).returning())[0].id,Q)await u.insert(Q).values({userId:j,provider:M,providerAccountId:V.providerAccountId,providerEmail:V.email??null,providerName:V.name??null,providerAvatarUrl:V.avatarUrl??null,accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,isPrimary:!0,lastUsedAt:new Date});if(b.info("[OAUTH] Created new user via OAuth",{userId:j,provider:M,email:V.email}),r.sendInviteOnCreate&&V.email&&s?.isAvailable()&&l)try{let ot=Le(),ce=dt(ot),On=new Date(Date.now()+Xe("7d"));await l({userId:j,email:V.email,tokenHash:ce,expiresAt:On});let Sn=`${r.successRedirectUrl.replace(/\/$/,"").replace(/\/[^/]+$/,"/set-password")}?token=${ot}`;await s.sendEmail({to:V.email,subject:`Welcome to ${f??"the platform"} \u2014 Set your password`,html:`
60
+ `}getActiveAlerts(){return Array.from(this.state.activeAlerts.values())}acknowledgeAlert(n){for(let[r,t]of this.state.activeAlerts)if(t.id===n)return t.acknowledged=!0,!0;return!1}clearAlert(n){this.state.activeAlerts.delete(n)}}class Dl{config;requestCount=0;responseTimes=[];errorCount=0;rateLimitBlocks=0;byEndpoint={};byMethod={};byStatus={};byErrorType={};lastCollectTime=Date.now();constructor(n){this.config=n}recordRequest(n){if(!this.config?.enabled)return;if(this.requestCount++,this.config.metrics?.responseTime!==!1){if(this.responseTimes.push(n.responseTimeMs),this.responseTimes.length>1e4)this.responseTimes=this.responseTimes.slice(-5000)}if(this.config.metrics?.requests!==!1)this.byEndpoint[n.endpoint]=(this.byEndpoint[n.endpoint]||0)+1,this.byMethod[n.method]=(this.byMethod[n.method]||0)+1,this.byStatus[String(n.status)]=(this.byStatus[String(n.status)]||0)+1;if(this.config.metrics?.errors!==!1&&n.isError){if(this.errorCount++,n.errorType)this.byErrorType[n.errorType]=(this.byErrorType[n.errorType]||0)+1}}recordRateLimitBlock(){if(!this.config?.enabled||this.config.metrics?.rateLimits===!1)return;this.rateLimitBlocks++}collect(){if(!this.config?.enabled)return null;let r=(Date.now()-this.lastCollectTime)/1000/60,t=r>0?Math.round(this.requestCount/r):0,o=r>0?Math.round(this.rateLimitBlocks/r):0,e=[...this.responseTimes].sort((i,s)=>i-s),a=e.length;return{requests:{total:this.requestCount,perMinute:t,byEndpoint:{...this.byEndpoint},byMethod:{...this.byMethod},byStatus:{...this.byStatus}},responseTime:{avg:a>0?Math.round(e.reduce((i,s)=>i+s,0)/a*100)/100:0,min:a>0?e[0]??0:0,max:a>0?e[a-1]??0:0,p50:a>0?e[Math.floor(a*0.5)]??0:0,p95:a>0?e[Math.floor(a*0.95)]??0:0,p99:a>0?e[Math.floor(a*0.99)]??0:0},errors:{total:this.errorCount,rate:this.requestCount>0?Math.round(this.errorCount/this.requestCount*100*100)/100:0,byType:{...this.byErrorType}},rateLimits:{blocked:this.rateLimitBlocks,blockedPerMinute:o}}}reset(){this.requestCount=0,this.responseTimes=[],this.errorCount=0,this.rateLimitBlocks=0,this.byEndpoint={},this.byMethod={},this.byStatus={},this.byErrorType={},this.lastCollectTime=Date.now()}getRequestsPerMinute(){let n=(Date.now()-this.lastCollectTime)/1000/60;return n>0?Math.round(this.requestCount/n):0}getErrorRate(){return this.requestCount>0?this.errorCount/this.requestCount*100:0}getRateLimitBlocksPerMinute(){let n=(Date.now()-this.lastCollectTime)/1000/60;return n>0?Math.round(this.rateLimitBlocks/n):0}getAvgResponseTime(){if(this.responseTimes.length===0)return 0;return this.responseTimes.reduce((n,r)=>n+r,0)/this.responseTimes.length}}import*as eb from"fs";import*as ao from"os";class Hl{config;lastCpuInfo=null;constructor(n){this.config=n}async collect(){if(!this.config?.enabled)return null;let n={cpu:{usage:0,cores:0},memory:{total:0,used:0,free:0,usagePercent:0,heapUsed:0,heapTotal:0},disk:{total:0,used:0,free:0,usagePercent:0},network:{bytesIn:0,bytesOut:0},process:{uptime:0,pid:0,eventLoopLag:0}};if(this.config.metrics?.cpu!==!1)n.cpu=this.collectCpu();if(this.config.metrics?.memory!==!1)n.memory=this.collectMemory();if(this.config.metrics?.disk!==!1)n.disk=await this.collectDisk();if(this.config.metrics?.network)n.network=this.collectNetwork();if(this.config.metrics?.process!==!1)n.process=await this.collectProcess();return n}collectCpu(){let n=ao.cpus(),r=n.length,t=0,o=0;for(let a of n)t+=a.times.idle,o+=a.times.user+a.times.nice+a.times.sys+a.times.idle+a.times.irq;let e=0;if(this.lastCpuInfo){let a=t-this.lastCpuInfo.idle,c=o-this.lastCpuInfo.total;e=c>0?Math.round((1-a/c)*100*100)/100:0}return this.lastCpuInfo={idle:t,total:o},{usage:e,cores:r}}collectMemory(){let n=ao.totalmem(),r=ao.freemem(),t=n-r,o=Math.round(t/n*100*100)/100,e=process.memoryUsage();return{total:n,used:t,free:r,usagePercent:o,heapUsed:e.heapUsed,heapTotal:e.heapTotal}}async collectDisk(){try{let n=eb.statfsSync("/"),r=n.blocks*n.bsize,t=n.bfree*n.bsize,o=r-t,e=Math.round(o/r*100*100)/100;return{total:r,used:o,free:t,usagePercent:e}}catch{return{total:0,used:0,free:0,usagePercent:0}}}collectNetwork(){let n=ao.networkInterfaces(),r=0,t=0;for(let o in n){let e=n[o];if(e){for(let a of e)if(!a.internal)r+=0,t+=0}}return{bytesIn:r,bytesOut:t}}async collectProcess(){let n=process.uptime(),r=process.pid,t=Date.now(),o=await new Promise((e)=>{setImmediate(()=>{e(Date.now()-t)})});return{uptime:n,pid:r,eventLoopLag:o}}}var ab=()=>{};import*as ib from"os";import{randomUUID as cb}from"crypto";class Xc{store;memoryInterval=null;cpuInterval=null;lastCpuInfo=null;isRunning=!1;constructor(n){let r={...mh,...n};this.store={requests:[],configs:{logMemory:r.logMemory,logCpu:r.logCpu,logDapr:r.logDapr,logWebSocket:r.logWebSocket,cpuLogInterval:r.cpuLogInterval,memoryLogInterval:r.memoryLogInterval},logs:{memory:[],cpu:[],dapr:[],ws:[]},logLimits:{memory:r.memoryLogLimit,cpu:r.cpuLogLimit,dapr:r.daprLogLimit,ws:r.wsLogLimit,request:r.requestLogLimit},worker:{pid:process.pid,workerId:null,memory:null,cpu:null,updatedAt:Date.now()},allWorkers:[],daprEvents:[],wsEvents:[]}}start(){if(this.isRunning)return;if(this.isRunning=!0,this.store.configs.logMemory)this.startMemoryCollector();if(this.store.configs.logCpu)this.startCpuCollector()}stop(){if(!this.isRunning)return;if(this.isRunning=!1,this.memoryInterval)clearInterval(this.memoryInterval),this.memoryInterval=null;if(this.cpuInterval)clearInterval(this.cpuInterval),this.cpuInterval=null}startMemoryCollector(){if(this.memoryInterval)clearInterval(this.memoryInterval);let n=()=>{if(!this.store.configs.logMemory)return;let r=process.memoryUsage(),t={timestamp:Date.now(),rss:r.rss,heapUsed:r.heapUsed,heapTotal:r.heapTotal};if(this.store.logs.memory.push(t),this.store.logs.memory.length>this.store.logLimits.memory*2)this.store.logs.memory=this.store.logs.memory.slice(-this.store.logLimits.memory);this.store.worker.memory=t,this.store.worker.updatedAt=Date.now()};n(),this.memoryInterval=setInterval(n,this.store.configs.memoryLogInterval)}startCpuCollector(){if(this.cpuInterval)clearInterval(this.cpuInterval);let n=()=>{if(!this.store.configs.logCpu)return;let r=ib.cpus(),t=0,o=0,e=0,a=0;for(let l of r)t+=l.times.user,o+=l.times.sys,e+=l.times.idle,a+=l.times.user+l.times.nice+l.times.sys+l.times.idle+l.times.irq;let c=0,i=0;if(this.lastCpuInfo){let l=a-this.lastCpuInfo.total,f=e-this.lastCpuInfo.idle;if(l>0){let u=l-f;c=Math.round((t-0)/(u||1)*100*100)/100,i=Math.round((o-0)/(u||1)*100*100)/100;let b=Math.round((1-f/l)*100*100)/100;c=Math.round(b*0.7*100)/100,i=Math.round(b*0.3*100)/100}}this.lastCpuInfo={idle:e,total:a};let s={timestamp:Date.now(),user:c,system:i};if(this.store.logs.cpu.push(s),this.store.logs.cpu.length>this.store.logLimits.cpu*2)this.store.logs.cpu=this.store.logs.cpu.slice(-this.store.logLimits.cpu);this.store.worker.cpu=s,this.store.worker.updatedAt=Date.now()};n(),this.cpuInterval=setInterval(n,this.store.configs.cpuLogInterval)}recordRequest(n){if(this.store.requests.push(n),this.store.requests.length>this.store.logLimits.request*2)this.store.requests=this.store.requests.slice(-this.store.logLimits.request)}recordDaprEvent(n,r){if(!this.store.configs.logDapr)return;let t={id:cb(),type:n,timestamp:Date.now(),...r};if(this.store.logs.dapr.push(t),this.store.daprEvents.push(t),this.store.logs.dapr.length>this.store.logLimits.dapr*2)this.store.logs.dapr=this.store.logs.dapr.slice(-this.store.logLimits.dapr);if(this.store.daprEvents.length>this.store.logLimits.dapr*2)this.store.daprEvents=this.store.daprEvents.slice(-this.store.logLimits.dapr)}recordWsEvent(n,r){if(!this.store.configs.logWebSocket)return;let t={id:cb(),type:n,timestamp:Date.now(),...r};if(this.store.logs.ws.push(t),this.store.wsEvents.push(t),this.store.logs.ws.length>this.store.logLimits.ws*2)this.store.logs.ws=this.store.logs.ws.slice(-this.store.logLimits.ws);if(this.store.wsEvents.length>this.store.logLimits.ws*2)this.store.wsEvents=this.store.wsEvents.slice(-this.store.logLimits.ws)}getSnapshot(){return{memory:this.store.logs.memory.slice(-this.store.logLimits.memory),cpu:this.store.logs.cpu.slice(-this.store.logLimits.cpu),requests:this.store.requests.slice(-this.store.logLimits.request),dapr:this.store.logs.dapr.slice(-this.store.logLimits.dapr),ws:this.store.logs.ws.slice(-this.store.logLimits.ws),workers:this.store.allWorkers.length?this.store.allWorkers:[this.store.worker],logLimits:{...this.store.logLimits},configs:{...this.store.configs}}}getUpdatesSince(n){let r=this.store.logs.memory.filter((i)=>i.timestamp>n.memory),t=this.store.logs.cpu.filter((i)=>i.timestamp>n.cpu),o=this.store.requests.filter((i)=>i.timestamp>n.request),e=this.store.logs.dapr.filter((i)=>i.timestamp>n.dapr),a=this.store.logs.ws.filter((i)=>i.timestamp>n.ws);if(!(r.length>0||t.length>0||o.length>0||e.length>0||a.length>0))return null;return{memory:r,cpu:t,requests:o,dapr:e,ws:a,timestamp:Date.now()}}getLogs(){return{memory:this.store.logs.memory,cpu:this.store.logs.cpu,requests:this.store.requests,dapr:this.store.logs.dapr,ws:this.store.logs.ws,daprEvents:this.store.daprEvents,wsEvents:this.store.wsEvents,configs:{logMemory:this.store.configs.logMemory,logCpu:this.store.configs.logCpu,logDapr:this.store.configs.logDapr,logWebSocket:this.store.configs.logWebSocket},limits:{...this.store.logLimits}}}getSettings(){return{configs:{...this.store.configs},logLimits:{...this.store.logLimits}}}changeSettings(n){if(n.logMemory!==void 0)this.store.configs.logMemory=n.logMemory;if(n.logCpu!==void 0)this.store.configs.logCpu=n.logCpu;if(n.logDapr!==void 0)this.store.configs.logDapr=n.logDapr;if(n.logWebSocket!==void 0)this.store.configs.logWebSocket=n.logWebSocket;if(n.cpuLogInterval!==void 0){if(this.store.configs.cpuLogInterval=n.cpuLogInterval,this.isRunning&&this.store.configs.logCpu)this.startCpuCollector()}if(n.memoryLogInterval!==void 0){if(this.store.configs.memoryLogInterval=n.memoryLogInterval,this.isRunning&&this.store.configs.logMemory)this.startMemoryCollector()}if(n.memoryLogLimit!==void 0)this.store.logLimits.memory=n.memoryLogLimit;if(n.cpuLogLimit!==void 0)this.store.logLimits.cpu=n.cpuLogLimit;if(n.daprLogLimit!==void 0)this.store.logLimits.dapr=n.daprLogLimit;if(n.wsLogLimit!==void 0)this.store.logLimits.ws=n.wsLogLimit;if(n.requestLogLimit!==void 0)this.store.logLimits.request=n.requestLogLimit;return{message:"Settings updated successfully",configs:{...this.store.configs},logLimits:{...this.store.logLimits}}}getStore(){return this.store}isEnabled(){return this.isRunning}}var mh;var sb=d(()=>{mh={enabled:!0,logMemory:!0,logCpu:!0,logDapr:!0,logWebSocket:!0,memoryLogInterval:1000,cpuLogInterval:1000,memoryLogLimit:100,cpuLogLimit:100,daprLogLimit:100,wsLogLimit:100,requestLogLimit:100,streamInterval:150}});class zl{redis;logger;config;appId;flushToDb;systemCollector;applicationCollector;alertService;collectInterval=null;flushInterval=null;pendingMetrics=[];isRunning=!1;constructor(n){this.redis=n.redis,this.logger=n.logger,this.config=this.mergeConfig(n.config),this.appId=n.appId,this.flushToDb=n.flushToDb,this.systemCollector=new Hl(this.config.system),this.applicationCollector=new Dl(this.config.application),this.alertService=new Lc({logger:n.logger,gmail:n.gmail,config:this.config,appId:n.appId})}mergeConfig(n){return{enabled:n.enabled??kn.enabled,system:{enabled:n.system?.enabled??kn.system.enabled,collectInterval:n.system?.collectInterval??kn.system.collectInterval,metrics:{cpu:n.system?.metrics?.cpu??kn.system.metrics.cpu,memory:n.system?.metrics?.memory??kn.system.metrics.memory,disk:n.system?.metrics?.disk??kn.system.metrics.disk,network:n.system?.metrics?.network??kn.system.metrics.network,process:n.system?.metrics?.process??kn.system.metrics.process}},application:{enabled:n.application?.enabled??kn.application.enabled,metrics:{requests:n.application?.metrics?.requests??kn.application.metrics.requests,responseTime:n.application?.metrics?.responseTime??kn.application.metrics.responseTime,errors:n.application?.metrics?.errors??kn.application.metrics.errors,rateLimits:n.application?.metrics?.rateLimits??kn.application.metrics.rateLimits}},database:{enabled:n.database?.enabled??kn.database.enabled,metrics:{connections:n.database?.metrics?.connections??kn.database.metrics.connections,queryTime:n.database?.metrics?.queryTime??kn.database.metrics.queryTime,slowQueryThreshold:n.database?.metrics?.slowQueryThreshold??kn.database.metrics.slowQueryThreshold}},redis:{enabled:n.redis?.enabled??kn.redis.enabled},persistence:{enabled:n.persistence?.enabled??kn.persistence.enabled,flushInterval:n.persistence?.flushInterval??kn.persistence.flushInterval,retentionDays:n.persistence?.retentionDays??kn.persistence.retentionDays},alerts:{enabled:n.alerts?.enabled??kn.alerts.enabled,email:{enabled:n.alerts?.email?.enabled??kn.alerts.email.enabled,recipients:n.alerts?.email?.recipients??kn.alerts.email.recipients},thresholds:{cpuPercent:n.alerts?.thresholds?.cpuPercent??kn.alerts.thresholds.cpuPercent,memoryPercent:n.alerts?.thresholds?.memoryPercent??kn.alerts.thresholds.memoryPercent,diskPercent:n.alerts?.thresholds?.diskPercent??kn.alerts.thresholds.diskPercent,errorRatePercent:n.alerts?.thresholds?.errorRatePercent??kn.alerts.thresholds.errorRatePercent,responseTimeMs:n.alerts?.thresholds?.responseTimeMs??kn.alerts.thresholds.responseTimeMs,rateLimitBlocksPerMinute:n.alerts?.thresholds?.rateLimitBlocksPerMinute??kn.alerts.thresholds.rateLimitBlocksPerMinute},cooldown:n.alerts?.cooldown??kn.alerts.cooldown}}}parseTimeToMs(n){let r=n.match(/^(\d+)(ms|s|m|h|d)$/);if(!r||!r[1]||!r[2])return 1e4;let t=parseInt(r[1],10);switch(r[2]){case"ms":return t;case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;case"d":return t*24*60*60*1000;default:return 1e4}}start(){if(!this.config.enabled||this.isRunning)return;this.isRunning=!0,this.logger.info("[Monitoring] Starting monitoring service");let n=this.parseTimeToMs(this.config.system.collectInterval);if(this.collectInterval=setInterval(()=>{this.collect()},n),this.config.persistence.enabled&&this.flushToDb){let r=this.parseTimeToMs(this.config.persistence.flushInterval);this.flushInterval=setInterval(()=>{this.flush()},r)}this.collect()}stop(){if(!this.isRunning)return;if(this.isRunning=!1,this.logger.info("[Monitoring] Stopping monitoring service"),this.collectInterval)clearInterval(this.collectInterval),this.collectInterval=null;if(this.flushInterval)clearInterval(this.flushInterval),this.flushInterval=null;this.flush()}async collect(){let n=Date.now(),r={timestamp:n};if(this.config.system.enabled){let t=await this.systemCollector.collect();if(t)r.system=t,this.addMetricPoints("system",t,n)}if(this.config.application.enabled){let t=this.applicationCollector.collect();if(t)r.application=t,this.addMetricPoints("application",t,n)}if(await this.storeSnapshot(r),this.config.alerts.enabled)await this.alertService.checkAndAlert(r)}addMetricPoints(n,r,t){let o=(e,a="")=>{for(let c in e){let i=e[c],s=a?`${a}.${c}`:c;if(typeof i==="number")this.pendingMetrics.push({timestamp:t,metricType:n,metricName:s,value:i});else if(typeof i==="object"&&i!==null&&!Array.isArray(i))o(i,s)}};o(r)}async storeSnapshot(n){let r=`monitoring:${this.appId}:latest`;await this.redis.create(r,n,3600);let t=`monitoring:${this.appId}:history`,o=await this.redis.read(t),e=o.success&&o.data?o.data:[];e.push(n);let a=Date.now()-3600000,c=e.filter((i)=>i.timestamp>a);await this.redis.create(t,c,3600)}async flush(){if(this.pendingMetrics.length===0)return;if(!this.flushToDb)return;let n=[...this.pendingMetrics];this.pendingMetrics=[];try{await this.flushToDb(n),this.logger.debug(`[Monitoring] Flushed ${n.length} metrics to database`)}catch(r){this.logger.error(`[Monitoring] Failed to flush metrics: ${r}`),this.pendingMetrics=[...n,...this.pendingMetrics]}}recordRequest(n){if(!this.config.enabled||!this.config.application.enabled)return;this.applicationCollector.recordRequest(n)}recordRateLimitBlock(){if(!this.config.enabled||!this.config.application.enabled)return;this.applicationCollector.recordRateLimitBlock()}async getLatestSnapshot(){let n=`monitoring:${this.appId}:latest`,r=await this.redis.read(n);return r.success?r.data:null}async getHistory(n=60){let r=`monitoring:${this.appId}:history`,t=await this.redis.read(r);if(!t.success||!t.data)return[];let o=Date.now()-n*60000;return t.data.filter((e)=>e.timestamp>o)}getActiveAlerts(){return this.alertService.getActiveAlerts()}acknowledgeAlert(n){return this.alertService.acknowledgeAlert(n)}isEnabled(){return this.config.enabled}getConfig(){return this.config}}var kn;var lb=d(()=>{ab();sb();kn={enabled:!1,system:{enabled:!0,collectInterval:"10s",metrics:{cpu:!0,memory:!0,disk:!0,network:!1,process:!0}},application:{enabled:!0,metrics:{requests:!0,responseTime:!0,errors:!0,rateLimits:!0}},database:{enabled:!1,metrics:{connections:!0,queryTime:!0,slowQueryThreshold:"100ms"}},redis:{enabled:!1},persistence:{enabled:!0,flushInterval:"1m",retentionDays:30},alerts:{enabled:!1,email:{enabled:!1,recipients:[]},thresholds:{cpuPercent:80,memoryPercent:85,diskPercent:90,errorRatePercent:5,responseTimeMs:1000,rateLimitBlocksPerMinute:100},cooldown:"5m"}}});var fb=()=>{};import{and as yM,eq as nD}from"drizzle-orm";var db=d(()=>{fb()});function ub(n,r){let t=n.scopes??["read:user","user:email"];return`https://github.com/login/oauth/authorize?${new URLSearchParams({client_id:n.clientId,redirect_uri:n.redirectUri,scope:t.join(" "),state:r,...n.extraAuthParams}).toString()}`}async function bb(n,r){let t=await fetch("https://github.com/login/oauth/access_token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({code:n,client_id:r.clientId,client_secret:r.clientSecret,redirect_uri:r.redirectUri}).toString()});if(!t.ok){let l=await t.text();throw Error(`GitHub token exchange failed: ${l}`)}let o=await t.json();if(o.error)throw Error(`GitHub OAuth error: ${o.error_description||o.error}`);let e={accessToken:o.access_token,refreshToken:o.refresh_token,expiresAt:o.expires_in?new Date(Date.now()+o.expires_in*1000):void 0,scope:o.scope},a=await fetch("https://api.github.com/user",{headers:{Authorization:`Bearer ${o.access_token}`,Accept:"application/vnd.github+json"}});if(!a.ok)throw Error("Failed to fetch GitHub user info");let c=await a.json(),i=c.email;if(!i)try{let l=await fetch("https://api.github.com/user/emails",{headers:{Authorization:`Bearer ${o.access_token}`,Accept:"application/vnd.github+json"}});if(l.ok){let f=await l.json();i=f.find((b)=>b.primary&&b.verified)?.email??f[0]?.email}}catch{}return{profile:{providerAccountId:String(c.id),email:i,name:c.name??c.login,avatarUrl:c.avatar_url,rawProfile:c},tokens:e}}function gb(n,r){let t=n.scopes??["openid","email","profile"];return`https://accounts.google.com/o/oauth2/v2/auth?${new URLSearchParams({client_id:n.clientId,redirect_uri:n.redirectUri,response_type:"code",scope:t.join(" "),state:r,access_type:"offline",prompt:"select_account",...n.extraAuthParams}).toString()}`}async function _b(n,r){let t=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({code:n,client_id:r.clientId,client_secret:r.clientSecret,redirect_uri:r.redirectUri,grant_type:"authorization_code"}).toString()});if(!t.ok){let s=await t.text();throw Error(`Google token exchange failed: ${s}`)}let o=await t.json(),e={accessToken:o.access_token,refreshToken:o.refresh_token,expiresAt:o.expires_in?new Date(Date.now()+o.expires_in*1000):void 0,scope:o.scope},a=await fetch("https://www.googleapis.com/oauth2/v3/userinfo",{headers:{Authorization:`Bearer ${o.access_token}`}});if(!a.ok)throw Error("Failed to fetch Google user info");let c=await a.json();return{profile:{providerAccountId:c.sub,email:c.email,name:c.name,avatarUrl:c.picture,rawProfile:c},tokens:e}}function mb(n){return`https://login.microsoftonline.com/${n.tenantId??"common"}/oauth2/v2.0`}function wb(n,r){let t=n.scopes??["openid","email","profile","User.Read"],o=new URLSearchParams({client_id:n.clientId,redirect_uri:n.redirectUri,response_type:"code",scope:t.join(" "),state:r,response_mode:"query",...n.extraAuthParams});return`${mb(n)}/authorize?${o.toString()}`}async function hb(n,r){let t=await fetch(`${mb(r)}/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({code:n,client_id:r.clientId,client_secret:r.clientSecret,redirect_uri:r.redirectUri,grant_type:"authorization_code"}).toString()});if(!t.ok){let s=await t.text();throw Error(`Microsoft token exchange failed: ${s}`)}let o=await t.json();if(o.error)throw Error(`Microsoft OAuth error: ${o.error_description||o.error}`);let e={accessToken:o.access_token,refreshToken:o.refresh_token,expiresAt:o.expires_in?new Date(Date.now()+o.expires_in*1000):void 0,scope:o.scope},a=await fetch("https://graph.microsoft.com/v1.0/me",{headers:{Authorization:`Bearer ${o.access_token}`}});if(!a.ok)throw Error("Failed to fetch Microsoft user info");let c=await a.json();return{profile:{providerAccountId:c.id,email:c.mail??c.userPrincipalName,name:c.displayName,avatarUrl:void 0,rawProfile:c},tokens:e}}function $b(n,r){if(!n.authorizationUrl)throw Error("Generic OAuth provider requires authorizationUrl");let t=n.scopes??[],o=new URLSearchParams({client_id:n.clientId,redirect_uri:n.redirectUri,response_type:"code",state:r,...t.length>0?{scope:t.join(" ")}:{},...n.extraAuthParams});return`${n.authorizationUrl}?${o.toString()}`}async function Ab(n,r){if(!r.tokenUrl)throw Error("Generic OAuth provider requires tokenUrl");let t=await fetch(r.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({code:n,client_id:r.clientId,client_secret:r.clientSecret,redirect_uri:r.redirectUri,grant_type:"authorization_code"}).toString()});if(!t.ok){let s=await t.text();throw Error(`Generic OAuth token exchange failed: ${s}`)}let o=await t.json();if(o.error)throw Error(`OAuth error: ${o.error_description||o.error}`);let e={accessToken:o.access_token,refreshToken:o.refresh_token,expiresAt:o.expires_in?new Date(Date.now()+o.expires_in*1000):void 0,scope:o.scope};if(!r.userInfoUrl)return{profile:{providerAccountId:o.access_token,rawProfile:o},tokens:e};let a=await fetch(r.userInfoUrl,{headers:{Authorization:`Bearer ${o.access_token}`}});if(!a.ok)throw Error("Failed to fetch user info from generic OAuth provider");let c=await a.json();return{profile:{providerAccountId:c.id??c.sub??c.user_id??o.access_token,email:c.email,name:c.name??c.display_name??c.username,avatarUrl:c.avatar_url??c.picture??c.photo,rawProfile:c},tokens:e}}import{randomBytes as wh}from"crypto";class Vc{config;stateStore=new Map;cleanupInterval=null;constructor(n){this.config=n;let r=(n.stateTtlSeconds??600)*1000;this.cleanupInterval=setInterval(()=>{let t=Date.now();for(let[o,e]of this.stateStore.entries())if(e.expiresAt<t)this.stateStore.delete(o)},r)}stop(){if(this.cleanupInterval)clearInterval(this.cleanupInterval),this.cleanupInterval=null}isProviderEnabled(n){return!!(this.config.enabled&&this.config.providers[n])}getEnabledProviders(){if(!this.config.enabled)return[];return Object.keys(this.config.providers)}buildAuthorizationUrl(n,r,t){let o=this.config.providers[n];if(!o)throw Error(`OAuth provider "${n}" is not configured`);let e={provider:n,linkUserId:r,redirectUrl:t,createdAt:Date.now()},a=wh(32).toString("hex"),c=(this.config.stateTtlSeconds??600)*1000;switch(this.stateStore.set(a,{payload:e,expiresAt:Date.now()+c}),n){case"google":return gb(o,a);case"github":return ub(o,a);case"microsoft":return wb(o,a);default:return $b(o,a)}}consumeState(n){let r=this.stateStore.get(n);if(!r)return null;if(r.expiresAt<Date.now())return this.stateStore.delete(n),null;return this.stateStore.delete(n),r.payload}async exchangeCode(n,r){let t=this.config.providers[n];if(!t)throw Error(`OAuth provider "${n}" is not configured`);switch(n){case"google":return _b(r,t);case"github":return bb(r,t);case"microsoft":return hb(r,t);default:return Ab(r,t)}}get allowAccountLinking(){return this.config.allowAccountLinking??!0}get autoCreateUser(){return this.config.autoCreateUser??!0}get successRedirectUrl(){return this.config.successRedirectUrl??"/"}get errorRedirectUrl(){return this.config.errorRedirectUrl??"/login"}get sendInviteOnCreate(){return this.config.sendInviteOnCreate??!1}get basePath(){return this.config.basePath??"/auth/oauth"}}var Rb=()=>{};var Ul=d(()=>{Rb()});class Bl{redis;logger;config;constructor(n){this.redis=n.redis,this.logger=n.logger,this.config=this.mergeConfig(n.config)}mergeConfig(n){return{enabled:n.enabled??cr.enabled,strategy:n.strategy??cr.strategy,keyPrefix:n.keyPrefix??cr.keyPrefix,authRoutes:{window:n.authRoutes?.window??cr.authRoutes.window,max:n.authRoutes?.max??cr.authRoutes.max,login:{window:n.authRoutes?.login?.window??Cc.window,max:n.authRoutes?.login?.max??Cc.max,blockDuration:n.authRoutes?.login?.blockDuration??Cc.blockDuration},register:{window:n.authRoutes?.register?.window??xc.window,max:n.authRoutes?.register?.max??xc.max,blockDuration:n.authRoutes?.register?.blockDuration??xc.blockDuration},passwordReset:{window:n.authRoutes?.passwordReset?.window??Qc.window,max:n.authRoutes?.passwordReset?.max??Qc.max,blockDuration:n.authRoutes?.passwordReset?.blockDuration??Qc.blockDuration},magicLink:{window:n.authRoutes?.magicLink?.window??Pc.window,max:n.authRoutes?.magicLink?.max??Pc.max,blockDuration:n.authRoutes?.magicLink?.blockDuration??Pc.blockDuration}},publicRoutes:{window:n.publicRoutes?.window??cr.publicRoutes.window,max:n.publicRoutes?.max??cr.publicRoutes.max},privateRoutes:{window:n.privateRoutes?.window??cr.privateRoutes.window,max:n.privateRoutes?.max??cr.privateRoutes.max},byIp:n.byIp??cr.byIp,byUserId:n.byUserId??cr.byUserId,byEndpoint:n.byEndpoint??cr.byEndpoint,skipSuccessfulRequests:n.skipSuccessfulRequests??cr.skipSuccessfulRequests,headers:{remaining:n.headers?.remaining??cr.headers.remaining,reset:n.headers?.reset??cr.headers.reset,limit:n.headers?.limit??cr.headers.limit},whitelist:n.whitelist??cr.whitelist,blacklist:n.blacklist??cr.blacklist}}parseTimeToMs(n){let r=n.match(/^(\d+)(ms|s|m|h|d)$/);if(!r||!r[1]||!r[2])return 60000;let t=parseInt(r[1],10);switch(r[2]){case"ms":return t;case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;case"d":return t*24*60*60*1000;default:return 60000}}buildKey(n){let r=[this.config.keyPrefix,n.category];if(n.authType&&n.authType!=="other")r.push(n.authType);if(this.config.byIp&&n.ip)r.push(`ip:${n.ip}`);if(this.config.byUserId&&n.userId)r.push(`user:${n.userId}`);if(this.config.byEndpoint&&n.endpoint)r.push(`ep:${n.endpoint.replace(/\//g,"_")}`);return r.join(":")}getLimits(n,r){if(n==="auth"){if(r&&r!=="other"){let t=this.config.authRoutes[r];if(t)return t}return{window:this.config.authRoutes.window,max:this.config.authRoutes.max}}if(n==="public")return this.config.publicRoutes;return this.config.privateRoutes}isWhitelisted(n){return this.config.whitelist.some((r)=>{if(r.includes("*"))return new RegExp(`^${r.replace(/\*/g,".*")}$`).test(n);return r===n})}isBlacklisted(n){return this.config.blacklist.some((r)=>{if(r.includes("*"))return new RegExp(`^${r.replace(/\*/g,".*")}$`).test(n);return r===n})}async readRedis(n){let r=await this.redis.read(n);if(r.success)return r.data;return null}async check(n){if(!this.config.enabled)return{allowed:!0,remaining:-1,resetAt:0,limit:-1};if(this.isWhitelisted(n.ip))return{allowed:!0,remaining:-1,resetAt:0,limit:-1};if(this.isBlacklisted(n.ip))return this.logger.warn(`[RateLimit] Blacklisted IP: ${n.ip}`),{allowed:!1,remaining:0,resetAt:Date.now()+86400000,limit:0,retryAfter:86400};let r=this.buildKey(n),t=this.getLimits(n.category,n.authType),o=this.parseTimeToMs(t.window),e=`${r}:blocked`,a=await this.readRedis(e);if(a&&a.until>Date.now()){let c=Math.ceil((a.until-Date.now())/1000);return this.logger.warn(`[RateLimit] Blocked: ${r}, retry after ${c}s`),{allowed:!1,remaining:0,resetAt:a.until,limit:t.max,retryAfter:c}}if(this.config.strategy==="sliding-window")return this.slidingWindowCheck(r,t.max,o,t.blockDuration);if(this.config.strategy==="fixed-window")return this.fixedWindowCheck(r,t.max,o,t.blockDuration);return this.tokenBucketCheck(r,t.max,o)}async slidingWindowCheck(n,r,t,o){let e=Date.now(),a=e-t,c=`${n}:sw`,s=(await this.readRedis(c))?.timestamps||[];s=s.filter((b)=>b>a);let l=s.length,f=s[0],u=f!==void 0?f+t:e+t;if(l>=r){if(o){let b=this.parseTimeToMs(o);await this.redis.create(`${n}:blocked`,{until:e+b},Math.ceil(b/1000))}return{allowed:!1,remaining:0,resetAt:u,limit:r,retryAfter:Math.ceil((u-e)/1000)}}return s.push(e),await this.redis.create(c,{timestamps:s},Math.ceil(t/1000)+1),{allowed:!0,remaining:r-s.length,resetAt:u,limit:r}}async fixedWindowCheck(n,r,t,o){let e=Date.now(),a=Math.floor(e/t),c=`${n}:fw:${a}`,i=(a+1)*t,l=(await this.readRedis(c))?.count||0;if(l>=r){if(o){let f=this.parseTimeToMs(o);await this.redis.create(`${n}:blocked`,{until:e+f},Math.ceil(f/1000))}return{allowed:!1,remaining:0,resetAt:i,limit:r,retryAfter:Math.ceil((i-e)/1000)}}return await this.redis.create(c,{count:l+1},Math.ceil(t/1000)+1),{allowed:!0,remaining:r-(l+1),resetAt:i,limit:r}}async tokenBucketCheck(n,r,t){let o=Date.now(),e=r/t,a=`${n}:tb`,c=await this.readRedis(a),i=c?.tokens??r,s=c?.lastRefill??o,f=(o-s)*e;if(i=Math.min(r,i+f),i<1){let u=Math.ceil((1-i)/e);return{allowed:!1,remaining:0,resetAt:o+u,limit:r,retryAfter:Math.ceil(u/1000)}}return i-=1,await this.redis.create(a,{tokens:i,lastRefill:o},Math.ceil(t/1000)*2),{allowed:!0,remaining:Math.floor(i),resetAt:o+t,limit:r}}async decrement(n){if(!this.config.skipSuccessfulRequests)return;let r=this.buildKey(n);if(this.config.strategy==="sliding-window"){let t=`${r}:sw`,o=await this.readRedis(t);if(o?.timestamps?.length){o.timestamps.pop();let e=this.parseTimeToMs(this.getLimits(n.category,n.authType).window);await this.redis.create(t,o,Math.ceil(e/1000)+1)}}else if(this.config.strategy==="fixed-window"){let t=this.parseTimeToMs(this.getLimits(n.category,n.authType).window),o=Math.floor(Date.now()/t),e=`${r}:fw:${o}`,a=await this.readRedis(e);if(a?.count)await this.redis.create(e,{count:a.count-1},Math.ceil(t/1000)+1)}}getHeaders(n){let r={};return r[this.config.headers.remaining]=String(n.remaining),r[this.config.headers.reset]=String(Math.ceil(n.resetAt/1000)),r[this.config.headers.limit]=String(n.limit),r}isEnabled(){return this.config.enabled}}var Cc,xc,Qc,Pc,cr;var kb=d(()=>{Cc={window:"15m",max:5,blockDuration:"30m"},xc={window:"1h",max:3,blockDuration:"1h"},Qc={window:"1h",max:3,blockDuration:"1h"},Pc={window:"1h",max:5,blockDuration:"1h"},cr={enabled:!0,strategy:"sliding-window",keyPrefix:"rl:",authRoutes:{window:"1m",max:10,login:Cc,register:xc,passwordReset:Qc,magicLink:Pc},publicRoutes:{window:"1m",max:100},privateRoutes:{window:"1m",max:60},byIp:!0,byUserId:!0,byEndpoint:!1,skipSuccessfulRequests:!1,headers:{remaining:"X-RateLimit-Remaining",reset:"X-RateLimit-Reset",limit:"X-RateLimit-Limit"},whitelist:[],blacklist:[]}});var Eb=()=>{};import{and as Gc,desc as hh,eq as Xr}from"drizzle-orm";class Wl{db;schemaTables;config;logger;constructor(n){this.db=n.db,this.schemaTables=n.schemaTables,this.config=n.config,this.logger=n.logger}getTable(n){return this.schemaTables[n]}getCol(n,r){return n[r]}async getStatus(n,r){let t=this.getTable("verificationFlows"),o=this.getTable("verificationSteps"),e=this.getTable("verifications"),a=this.getTable("verificationRequirements");if(!t||!o||!e||!a)return this.logger.error("[Verification] Required tables not found"),{entity_name:n,entity_id:r,flow:null,current_step:0,total_steps:0,is_completed:!1,is_rejected:!1,verifications:[],pending_verifiers:[]};let i=(await this.db.select().from(t).where(Gc(Xr(this.getCol(t,"entity_name"),n),Xr(this.getCol(t,"is_draft"),!1))).limit(1))[0];if(!i)return{entity_name:n,entity_id:r,flow:null,current_step:0,total_steps:0,is_completed:!0,is_rejected:!1,verifications:[],pending_verifiers:[]};let s=await this.db.select().from(a).where(Xr(this.getCol(a,"entity_name"),n)).orderBy(this.getCol(a,"step_order")),l=await this.db.select().from(e).where(Gc(Xr(this.getCol(e,"entity_name"),n),Xr(this.getCol(e,"entity_id"),r))).orderBy(hh(this.getCol(e,"created_at"))),f=s.length,u=l.filter((E)=>E.decision==="approved"),b=l.find((E)=>E.decision==="rejected"),$=b?1:u.length+1,A=u.length>=f&&!b,_=!!b,m=s.filter((E)=>E.step_order>=$);return{entity_name:n,entity_id:r,flow:i,current_step:$,total_steps:f,is_completed:A,is_rejected:_,verifications:l,pending_verifiers:m.map((E)=>({step_order:E.step_order,verifier_type:E.verifier_type,verifier_id:E.verifier_id,verifier_role:E.verifier_role,is_signature_mandatory:E.is_signature_mandatory}))}}async decide(n){let{entity_name:r,entity_id:t,user_id:o,decision:e,reason:a,signature_id:c,diff:i}=n,s=this.getTable("verifications"),l=this.getTable("verificationRequirements"),f=this.getTable("user_roles"),u=this.getTable("roles");if(!s||!l)return{success:!1,message:"Verification tables not configured"};let b=await this.getStatus(r,t);if(b.is_completed)return{success:!1,message:"Verification flow already completed"};if(b.total_steps===0)return{success:!1,message:"No verification flow configured for this entity"};let $=b.pending_verifiers.filter((D)=>D.step_order===b.current_step);if($.length===0)return{success:!1,message:"No pending requirements for current step"};let A=!1,_=null;for(let D of $){if(D.verifier_type==="user"&&D.verifier_id===o){A=!0,_=D;break}if(D.verifier_type==="role"&&D.verifier_role&&f&&u){let k=f,B=u;if((await this.db.select({role_name:B.name}).from(f).innerJoin(u,Xr(k.role_id,B.id)).where(Xr(k.user_id,o))).some((Y)=>Y.role_name===D.verifier_role)){A=!0,_=D;break}}if(D.verifier_type==="entity_creator"){A=!0,_=D;break}}if(!A||!_)return{success:!1,message:"User is not authorized to verify at this step"};if(_.is_signature_mandatory&&!c)return{success:!1,message:"Signature is required for this verification step"};let E=(await this.db.select().from(l).where(Gc(Xr(this.getCol(l,"entity_name"),r),Xr(this.getCol(l,"step_order"),b.current_step))))[0];if(!E)return{success:!1,message:"Requirement not found"};let R={requirement_id:E.id,verifier_id:o,signature_id:c||null,entity_name:r,entity_id:t,step_order:b.current_step,decision:e,reason:a||null,diff:i||null},[M]=await this.db.insert(s).values(R).returning();if(e==="rejected"&&this.config.autoResetOnRejection)this.logger.info(`[Verification] Flow reset due to rejection for ${r}:${t}`);let S=e==="approved"&&b.current_step>=b.total_steps,x=e==="approved"?b.current_step+1:1;return{success:!0,message:e==="approved"?S?"Verification flow completed":`Step ${b.current_step} approved`:"Verification rejected, flow reset",verification:M,flow_completed:S,next_step:S?void 0:x}}async getPending(n){let r=this.getTable("verificationRequirements"),t=this.getTable("verificationFlows"),o=this.getTable("user_roles"),e=this.getTable("roles");if(!r||!t)return[];let a=o,c=e,s=(o&&e?await this.db.select({role_name:c.name}).from(o).innerJoin(e,Xr(a.role_id,c.id)).where(Xr(a.user_id,n)):[]).map((u)=>u.role_name),l=await this.db.select().from(r),f=[];for(let u of l){if(!(u.verifier_type==="user"&&u.verifier_id===n||u.verifier_type==="role"&&s.includes(u.verifier_role)||u.verifier_type==="entity_creator"))continue;let A=(await this.db.select().from(t).where(Gc(Xr(this.getCol(t,"entity_name"),u.entity_name),Xr(this.getCol(t,"is_draft"),!1))).limit(1))[0];if(!A)continue;f.push({entity_name:u.entity_name,entity_id:u.entity_id,flow_name:A.name,step_order:u.step_order,step_name:void 0,is_signature_mandatory:u.is_signature_mandatory,created_at:u.created_at,diff:void 0})}return f}}var Yl=d(()=>{Eb()});var Jl=d(()=>{Qu();Rl();Sl();tb();ob();lb();db();Ul();kb();Yl()});import{access as LD,mkdir as Eh}from"fs/promises";import{dirname as Sh,resolve as Db}from"path";var ga,Vl,Dn=(n)=>{if(!n||typeof n!=="string")throw pn("INVALID_PATH","Path must be a non-empty string",n,"resolvePath");return Db(n)},xt=(n)=>{let r=Dn(n);return Sh(r)},et=async(n)=>{let r=Db(n);try{await Eh(r,{recursive:!0})}catch(t){if(t.code!=="EEXIST")throw pn("DIRECTORY_CREATE_FAILED",`Failed to create directory: ${r}`,r,"ensureDirectory")}},Cl=(n)=>{let r=n,t=0;while(r>=1024&&t<Vl.length-1)r/=1024,t++;return`${r.toFixed(2)} ${Vl[t]}`},Hb=(n,r)=>{return n.toLowerCase().endsWith(r.toLowerCase())},xl=(n,r)=>{let t=r.startsWith(".")?r:`.${r}`;if(Hb(n,t))return n;return`${n}${t}`},pn=(n,r,t,o)=>{return{code:n,message:r,path:t,operation:o||"unknown"}},Oc=(n)=>{try{return JSON.stringify(n,null,2)}catch{return"{}"}},Ql=async(n,r,t=ga.maxConcurrency)=>{let o=[];for(let e=0;e<n.length;e+=t){let a=n.slice(e,e+t),c=[];for(let s of a)c.push(r(s));let i=await Promise.allSettled(c);o.push(...i)}return o},Nc=(n,r={})=>{let t=[],o=[],e=r.strict??!0;if(n.defaultEncoding!==void 0){if(!["utf-8","utf8","ascii","base64","hex"].includes(n.defaultEncoding))t.push(`Invalid defaultEncoding: ${n.defaultEncoding}`)}if(n.maxConcurrency!==void 0){if(!Number.isInteger(n.maxConcurrency)||n.maxConcurrency<1)t.push("maxConcurrency must be a positive integer");if(n.maxConcurrency>50)o.push("maxConcurrency > 50 may cause performance issues")}if(n.defaultCreateDir!==void 0&&typeof n.defaultCreateDir!=="boolean")t.push("defaultCreateDir must be a boolean");if(n.defaultRecursive!==void 0&&typeof n.defaultRecursive!=="boolean")t.push("defaultRecursive must be a boolean");if(e&&!r.allowUnknownKeys){let a=["defaultEncoding","defaultCreateDir","defaultRecursive","maxConcurrency"],c=Object.keys(n);for(let i of c)if(!a.includes(i))t.push(`Unknown configuration key: ${i}`)}return{isValid:t.length===0,errors:t,warnings:o}},zb=(n,r=ga)=>{let t=Nc(n);if(!t.isValid)throw pn("CONFIG_VALIDATION_FAILED",`Configuration validation failed: ${t.errors.join(", ")}`,void 0,"mergeConfig");return{...r,...n}},Ub=(n)=>{let r=(a)=>({read:Boolean(a&4),write:Boolean(a&2),execute:Boolean(a&1)}),t=n>>6&7,o=n>>3&7,e=n&7;return{owner:r(t),group:r(o),others:r(e)}},Bb=(n)=>{return Number.isInteger(n)&&n>=0&&n<=511};var be=d(()=>{ga={defaultEncoding:"utf-8",defaultCreateDir:!0,defaultRecursive:!0,maxConcurrency:5},Vl=["B","KB","MB","GB","TB"]});import{copyFile as Pl,rename as Gl,unlink as Mh}from"fs/promises";import{basename as Wb,dirname as Yb,extname as Dh,join as Hh}from"path";var qc,zh=(n,r=".tmp")=>{let t=Dn(n),o=Date.now(),e=Math.random().toString(36).substring(2,8);return`${t}${r}.${o}.${e}`},Jb=(n,r,t=!0)=>{let o=Dn(n),e=r?Dn(r):Yb(o),a=Wb(o),c=Dh(a),i=Wb(a,c),s=t?`.${new Date().toISOString().replace(/[:.]/g,"-")}`:"",l=`${i}.backup${s}${c}`;return Hh(e,l)},_a=async({path:n,data:r,tempSuffix:t=qc.tempSuffix,backup:o=qc.backup,sync:e=qc.sync})=>{let a=Dn(n),c=zh(a,t),i;try{if(await et(xt(a)),o){if(await Bun.file(a).exists())i=Jb(a),await Pl(a,i)}let s=await Bun.write(c,r);return await Gl(c,a),{success:!0,bytesWritten:s,tempPath:c,backupPath:i}}catch(s){try{await Mh(c)}catch{}throw pn("ATOMIC_WRITE_FAILED",`Atomic write failed: ${s}`,a,"atomicWrite")}},Lb=async(n,r,t={})=>{let o=JSON.stringify(r,null,2);return _a({path:n,data:o,...t})},Ol=async({sourcePath:n,backupDir:r,keepOriginal:t=!0,timestamp:o=qc.timestamp})=>{let e=Dn(n);if(!await Bun.file(e).exists())throw pn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,e,"createBackup");let c=Jb(e,r,o);if(await et(Yb(c)),t)await Pl(e,c);else await Gl(e,c);return c},Nl=async(n,r,t=!1)=>{let o=Dn(n),e=Dn(r);if(!await Bun.file(o).exists())throw pn("BACKUP_NOT_FOUND",`Backup file not found: ${n}`,o,"restoreFromBackup");try{if(await et(xt(e)),t)await Gl(o,e);else await Pl(o,e);return!0}catch(c){return console.error(`Error restoring from backup ${n}:`,c),!1}},Xb=async(n,r,t={})=>{let o=Dn(n),e=Bun.file(o),a;try{if(await e.exists())a=await Ol({sourcePath:o,keepOriginal:!0,timestamp:!0});let c=await e.exists()?await e.text():"",i=await r(c),s=await _a({path:o,data:i,backup:!1,...t});return{success:s.success,bytesWritten:s.bytesWritten,tempPath:s.tempPath,backupPath:a}}catch(c){if(a)try{await Nl(a,o,!1)}catch(i){console.error("Rollback failed:",i)}throw c}},Vb=async(n)=>{let r=[],t=[];for(let o of n)try{let e=await _a(o);r.push(e)}catch(e){t.push({operation:o,error:e})}return{successful:r,failed:t}};var Cb=d(()=>{be();qc={tempSuffix:".tmp",backup:!1,sync:!0,timestamp:!0}});import{chmod as Uh,stat as Bh}from"fs/promises";var Wh,co=async(n,r)=>{let t=Dn(n);if(!Bb(r))throw pn("INVALID_PERMISSION_MODE",`Invalid permission mode: ${r.toString(8)}`,t,"setFilePermissions");try{return await Uh(t,r),!0}catch(o){return console.error(`Error setting permissions for ${n}:`,o),!1}},Vo=async(n)=>{let r=Dn(n);try{let o=(await Bh(r)).mode&511,e=Ub(o);return{path:r,mode:o,owner:e.owner,group:e.group,others:e.others}}catch(t){throw pn("PERMISSION_READ_FAILED",`Failed to read permissions: ${t}`,r,"getFilePermissions")}},xb=async(n,r)=>{try{return((await Vo(n)).mode&r)===r}catch{return!1}},Qb=async(n)=>{let t=(await Vo(n)).mode|256;return co(n,t)},Pb=async(n)=>{let t=(await Vo(n)).mode|128;return co(n,t)},Gb=async(n)=>{let t=(await Vo(n)).mode|64;return co(n,t)},Ob=async(n)=>{let t=(await Vo(n)).mode&-147;return co(n,t)},Nb=async(n,r)=>{let t=Wh[r];return co(n,t)};var qb=d(()=>{be();Wh={OWNER_READ_WRITE:384,OWNER_ALL:448,GROUP_READ:416,GROUP_READ_WRITE:432,ALL_READ:420,ALL_READ_WRITE:438,ALL_READ_EXECUTE:493,ALL_FULL:511,READ_ONLY:292,EXECUTABLE:493}});var Yh,Fc=async(n,r={})=>{let t=Dn(n),o={...Yh,...r};await et(xt(t));let a=Bun.file(t).writer({highWaterMark:o.highWaterMark}),c=!1;return{write:(s)=>{if(c)throw pn("WRITER_CLOSED","Cannot write to closed writer",t,"streamWrite");try{let l=a.write(s);if(o.autoFlush)a.flush();return l}catch(l){throw pn("WRITE_FAILED",`Failed to write chunk: ${l}`,t,"streamWrite")}},flush:()=>{if(c)return 0;try{return a.flush()}catch(s){throw pn("FLUSH_FAILED",`Failed to flush writer: ${s}`,t,"streamFlush")}},end:async(s)=>{if(c)return 0;try{let l=await a.end(s);return c=!0,l}catch(l){throw c=!0,pn("END_FAILED",`Failed to end writer: ${l}`,t,"streamEnd")}},ref:()=>{if(!c)a.ref()},unref:()=>{if(!c)a.unref()}}},ql=async(n,r,t={})=>{let o=await Fc(n,t),e=0;try{for(let a of r){let c=o.write(a);e+=c}return await o.flush(),await o.end(),e}catch(a){try{await o.end(a)}catch{}throw a}},Fb=async(n,r,t={})=>{let o=Dn(n),e=Bun.file(o),a=await e.exists()?await e.arrayBuffer():new ArrayBuffer(0),c=[];if(a.byteLength>0)c.push(a);return c.push(...r),ql(o,c,t)},jb=async(n,r,t={})=>{let o=Dn(n),e=Bun.file(o);if(!await e.exists())throw pn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,o,"copyFileStream");let a=e.stream(),c=await Fc(r,t),i=0;try{let s=a.getReader();while(!0){let{done:l,value:f}=await s.read();if(l)break;let u=c.write(f);i+=u}return await c.flush(),await c.end(),i}catch(s){try{await c.end(s)}catch{}throw s}},pb=async(n,r)=>{let t=Dn(n),o=Bun.file(t);if(!await o.exists())throw pn("FILE_NOT_FOUND",`File not found: ${n}`,t,"readFileStream");let a=o.stream().getReader();try{while(!0){let{done:c,value:i}=await a.read();if(c)break;await r(i)}}finally{a.releaseLock()}};var Kb=d(()=>{be();Yh={highWaterMark:1048576,autoFlush:!0,closeOnEnd:!0}});import{readdir as Jh,rm as Lh,rmdir as Xh,stat as Vh}from"fs/promises";import{extname as Ch,join as xh}from"path";class io{static instance;config;constructor(){this.config={...ga}}static getInstance(){if(!io.instance)io.instance=new io;return io.instance}async createFile({dir:n,name:r,data:t,options:o={}}){let e=Dn(xh(n,r));if(o.createDir!==!1)await et(xt(e));let a=o.type?new Blob([t],{type:o.type}):t;return await Bun.write(e,a)}async createJsonFile(n,r,t){let o=xl(r,".json"),e=Oc(t);return this.createFile({dir:n,name:o,data:e,options:{type:"application/json"}})}async createDirectory({path:n}){await et(n)}async readFile({path:n,format:r="text"}){let t=Dn(n),o=Bun.file(t);if(!await o.exists())throw pn("FILE_NOT_FOUND",`File not found: ${n}`,t,"readFile");switch(r){case"text":return await o.text();case"json":return await o.json();case"buffer":return await o.arrayBuffer();case"bytes":return await o.bytes();case"stream":return o.stream();default:return await o.text()}}async readJsonFile(n){return this.readFile({path:n,format:"json"})}async getFileInfo(n){let r=Dn(n),t=Bun.file(r),o=n.split("/").pop()||n,e=null;try{e=await Vh(r)}catch{}return{name:o,path:r,size:t.size,type:t.type,exists:await t.exists(),extension:Ch(o),createdAt:e?.birthtime,modifiedAt:e?.mtime}}async readDirectory({path:n,recursive:r=!1}){let t=Dn(n);return await Jh(t,{recursive:r,encoding:"utf8"})}async getFilesByExtension(n,r){let t=await this.readDirectory({path:n}),o=r.startsWith(".")?r:`.${r}`;return t.filter((e)=>e.endsWith(o))}async updateFile({path:n,data:r,mode:t="overwrite"}){let o=Dn(n);if(t==="append"){let a=await this.readFile({path:n,format:"text"})+r;return await Bun.write(o,a)}return await Bun.write(o,r)}async updateJsonFile(n,r,t=!1){let o=r;if(t)try{let e=await this.readJsonFile(n);if(typeof e==="object"&&e!==null&&!Array.isArray(e)&&typeof r==="object"&&r!==null&&!Array.isArray(r))o={...e,...r}}catch{}return this.updateFile({path:n,data:Oc(o),mode:"overwrite"})}async appendToFile(n,r){return this.updateFile({path:n,data:r,mode:"append"})}async deleteFile(n){try{let r=Dn(n);return await Bun.file(r).delete(),!0}catch(r){return console.error(`Error deleting file ${n}:`,r),!1}}async deleteDirectory({path:n,recursive:r=!1}){try{let t=Dn(n);if(r)await Lh(t,{recursive:!0,force:!0});else await Xh(t);return!0}catch(t){return console.error(`Error deleting directory ${n}:`,t),!1}}async deleteFiles(n){let r=await Ql(n,async(e)=>{if(!await this.deleteFile(e))throw Error(`Failed to delete: ${e}`);return e}),t=[],o=[];for(let e=0;e<r.length;e++){let a=r[e],c=n[e];if(a?.status==="fulfilled")t.push(c||"");else o.push(c||"")}return{success:t,failed:o}}async exists(n){let r=Dn(n);return await Bun.file(r).exists()}async copyFile(n,r){let t=Dn(n),o=Dn(r),e=Bun.file(t);if(!await e.exists())throw pn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,t,"copyFile");return await et(xt(o)),await Bun.write(o,e)}async moveFile(n,r){try{return await this.copyFile(n,r),await this.deleteFile(n),!0}catch(t){return console.error(`Error moving file from ${n} to ${r}:`,t),!1}}getFormattedFileSize(n){return Cl(n)}getConfig(){return{...this.config}}updateConfig(n){let r=Nc(n);if(r.isValid){let t=zb(n,this.config);Object.assign(this.config,t)}return r}validateConfiguration(n){return Nc(n)}async createStreamWriter(n,r={}){return Fc(n,r)}async writeStream(n,r,t={}){return ql(n,r,t)}async appendStream(n,r,t={}){return Fb(n,r,t)}async copyFileStream(n,r,t={}){return jb(n,r,t)}async readFileStream(n,r){return pb(n,r)}async setPermissions(n,r){return co(n,r)}async setPermissionsAdvanced(n){return co(n.path,n.mode)}async getPermissions(n){return Vo(n)}async checkPermissions(n,r){return xb(n,r)}async makeFileReadable(n){return Qb(n)}async makeFileWritable(n){return Pb(n)}async makeFileExecutable(n){return Gb(n)}async makeFileReadOnly(n){return Ob(n)}async setCommonPermission(n,r){return Nb(n,r)}async atomicWrite(n){return _a(n)}async atomicJsonWrite(n,r,t={}){return Lb(n,r,t)}async createFileBackup(n){return Ol(n)}async restoreFileFromBackup(n,r,t=!1){return Nl(n,r,t)}async safeFileUpdate(n,r,t={}){return Xb(n,r,t)}async batchAtomicOperations(n){return Vb(n)}}var Fl=d(()=>{Cb();qb();Kb();be()});var St;var jc=d(()=>{Fl();be();Fl();St=io.getInstance()});import{Pool as l9}from"pg";var Tb=()=>{};var vb=d(()=>{il();jc();Tb();Ct()});function Zb(n,r){let t=(n.get("cookie")?.split(";")||[]).reduce((o,e)=>{let[a,c]=e.trim().split("=");if(a&&c)o[a]=c;return o},{});return{access_token:t[r.access_token]||n.get("authorization")?.split(" ")[1],refresh_token:t[r.refresh_token],session_token:t[r.session_token]}}function pl(n){if(!n.redis){console.log("Redis not configured, skipping");return}if(n.redis.withDapr){jl=new jn({withDapr:!0,stateStoreName:n.redis.stateStoreName});return}let r=n.redis.url?process.env[n.redis.url]:void 0,t=n.redis.host?process.env[n.redis.host]:void 0,o=n.redis.port?parseInt(process.env[n.redis.port]||"",10):void 0;jl=new jn({url:r,host:t,port:Number.isNaN(o)?void 0:o})}function pc(){return jl}function at(n){if(typeof n==="number")return n;if(!n||n.trim()==="")throw Error("Time string cannot be empty");let r=n.trim().match(/^(\d+(?:\.\d+)?)\s*([smhdwMy])$/);if(!r||!r[1]||!r[2])throw Error(`Invalid time format: "${n}". Expected format: "75s", "10m", "2h", "1d", "1w", "2M", "1y"`);let t=parseFloat(r[1]),o=r[2],a={s:1,m:60,h:3600,d:86400,w:604800,M:2592000,y:31536000}[o];if(a===void 0)throw Error(`Unknown time unit: "${o}"`);let c=Math.floor(t*a);if(c<=0)throw Error(`Time value must be positive: "${n}"`);return c}function yb({sessionData:n,options:r,refreshTokenId:t}){let o=r.authentication?.accessToken?.secret;if(!o)throw Error("Access token secret env name is not configured");let e=process.env[o];if(!e)throw Error(`Access token secret env "${o}" is not set`);return sa({subject:n.userId,issuer:r.authentication?.accessToken?.issuer,audience:r.authentication?.accessToken?.audience,algorithm:r.authentication?.accessToken?.algorithm,expiresInSeconds:at(r.authentication?.accessToken?.expiresIn??"15m"),sessionId:n.id,customClaims:{refreshTokenId:t}},e)}function Co(n,r){return n?{entityName:n.entity_name,entityId:n.entity_id===" - "?null:n.entity_id,operation:n.operation_type,userId:n.user_id==="unknown"?null:n.user_id,summary:r,ipAddress:n.ip_address,userAgent:n.user_agent,path:n.path,query:n.query}:void 0}function Kl(n){let r=(a)=>{if(typeof a!=="string")return;try{return JSON.parse(a)}catch{return}},t=n.page?parseInt(n.page,10):1,o=n.limit?parseInt(n.limit,10):20,e=n.offset?parseInt(n.offset,10):(t-1)*o;return{page:t,limit:o,offset:e,search:n.search,searchFields:n.searchFields?n.searchFields.split(","):void 0,filters:r(n.filters),sort:r(n.sort),select:n.select?n.select.split(","):void 0,with:r(n.with),distinct:n.distinct==="true",distinctOn:n.distinctOn?n.distinctOn.split(","):void 0}}function ng(n,r,t,o){let e=Math.ceil(o/r),a=n<e,c=n>1;return{page:n,limit:r,offset:t,totalItems:o,totalPages:e,hasNextPage:a,hasPrevPage:c,nextPage:a?n+1:null,prevPage:c?n-1:null}}function Ph(n){let r=["varchar","char","text","uuid","citext","bit","varbit"],t=["integer","smallint","bigint","serial","smallserial","bigserial","real","doublePrecision","numeric","decimal"],o=["boolean"];if(r.includes(n))return(e)=>({valid:typeof e==="string",expectedType:"string"});if(t.includes(n))return(e)=>({valid:typeof e==="number",expectedType:"number"});if(o.includes(n))return(e)=>({valid:typeof e==="boolean",expectedType:"boolean"});if(n==="json"||n==="jsonb")return(e)=>({valid:typeof e==="object",expectedType:"object"});return()=>({valid:!0,expectedType:"any"})}function ge(n,r,t=!1){let o=[];for(let e of r){let a=n[e.name],c=e.notNull&&!e.nullable&&e.default===void 0&&!e.defaultRaw;if(a===void 0||a===null){if(c&&!t)o.push({field:e.name,message:e.validation?.customMessage||`${e.name} is required`});continue}let i=Ph(e.type)(a);if(!i.valid){o.push({field:e.name,message:e.validation?.customMessage||`${e.name} must be of type ${i.expectedType}`});continue}if(typeof a==="string"){let s=a.length;if(e.length&&s>e.length)o.push({field:e.name,message:e.validation?.customMessage||`${e.name} exceeds max length of ${e.length}`});if(e.validation?.minLength&&s<e.validation.minLength)o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be at least ${e.validation.minLength} characters`});if(e.validation?.maxLength&&s>e.validation.maxLength)o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be at most ${e.validation.maxLength} characters`});if(e.validation?.pattern){if(!new RegExp(e.validation.pattern).test(a))o.push({field:e.name,message:e.validation.customMessage||`${e.name} does not match required pattern`})}if(e.validation?.format){let l=Qh[e.validation.format];if(l&&!l.test(a))o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be a valid ${e.validation.format}`})}}if(typeof a==="number"){if(e.validation?.min!==void 0&&a<e.validation.min)o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be at least ${e.validation.min}`});if(e.validation?.max!==void 0&&a>e.validation.max)o.push({field:e.name,message:e.validation.customMessage||`${e.name} must be at most ${e.validation.max}`})}if(e.enumValues&&e.enumValues.length>0){if(!e.enumValues.includes(a))o.push({field:e.name,message:e.validation?.customMessage||`${e.name} must be one of: ${e.enumValues.join(", ")}`})}}return{valid:o.length===0,errors:o}}function Oh(n){return n.replace(/[&<>"'`=/]/g,(r)=>Gh[r]||r)}function Nh(n){return n.replace(/<[^>]*>/g,"")}function qh(n){let r=n.split("@"),t=r[0],o=r[1];if(!t||!o)return n;let e=t.split("+")[0];if(!e)return n;return`${e.replace(/\./g,"")}@${o.toLowerCase()}`}function Fh(n){return n.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function jh(n,r){if(n===null||n===void 0)return n;switch(r){case"trim":return typeof n==="string"?n.trim():n;case"lowercase":return typeof n==="string"?n.toLowerCase():n;case"uppercase":return typeof n==="string"?n.toUpperCase():n;case"escapeHtml":return typeof n==="string"?Oh(n):n;case"stripTags":return typeof n==="string"?Nh(n):n;case"normalizeEmail":return typeof n==="string"?qh(n):n;case"toNumber":if(typeof n==="number")return n;if(typeof n==="string"){let t=Number(n);return Number.isNaN(t)?n:t}return n;case"toBoolean":if(typeof n==="boolean")return n;if(typeof n==="string"){let t=n.toLowerCase();if(t==="true"||t==="1"||t==="yes")return!0;if(t==="false"||t==="0"||t==="no")return!1}if(typeof n==="number")return n!==0;return n;case"slugify":return typeof n==="string"?Fh(n):n;default:return n}}function _e(n,r){let t={};for(let o of Object.keys(n)){let e=n[o],a=r.find((c)=>c.name===o);if(a?.sanitize&&a.sanitize.length>0)for(let c of a.sanitize)e=jh(e,c);t[o]=e}return t}async function rg(n,r,t){let o=new jn,e=`${Kh}${n}`,a=`${ph}${n}:${r}`,c=await o.read(a);if(c.success&&c.data)return{success:!0,accessToken:c.data,fromCache:!0};let i=await o.acquireLock(e,Th);if(!i.success)return{success:!1,error:i.error};if(i.data)try{let u=t();return await o.create(a,u,Ib),{success:!0,accessToken:u,fromCache:!1}}finally{await o.releaseLock(e)}let s=await o.waitForLock(e,vh,50);if(!s.success)return{success:!1,error:s.error};if(!s.data)return{success:!1,error:"Lock wait timeout"};let l=await o.read(a);if(l.success&&l.data)return{success:!0,accessToken:l.data,fromCache:!0};let f=t();return await o.create(a,f,Ib),{success:!0,accessToken:f,fromCache:!1}}function tg(n){let r=[],t={};if(n.database?.url){let o=process.env[n.database.url];if(!o)r.push({field:"database.url",envName:n.database.url,message:`Environment variable "${n.database.url}" is not set. Please set it in your .env file.`});else t.databaseUrl=o}if(n.redis&&!n.redis.withDapr)if(n.redis.url){let o=process.env[n.redis.url];if(!o)r.push({field:"redis.url",envName:n.redis.url,message:`Environment variable "${n.redis.url}" is not set. Please set it in your .env file.`});else t.redisUrl=o}else{if(n.redis.host){if(!process.env[n.redis.host])r.push({field:"redis.host",envName:n.redis.host,message:`Environment variable "${n.redis.host}" is not set. Please set it in your .env file.`})}if(n.redis.port){if(!process.env[n.redis.port])r.push({field:"redis.port",envName:n.redis.port,message:`Environment variable "${n.redis.port}" is not set. Please set it in your .env file.`})}}if(n.authentication?.enabled){if(n.authentication.accessToken?.secret){let o=process.env[n.authentication.accessToken.secret];if(!o)r.push({field:"authentication.accessToken.secret",envName:n.authentication.accessToken.secret,message:`Environment variable "${n.authentication.accessToken.secret}" is not set. Please set it in your .env file.`});else t.accessTokenSecret=o}else r.push({field:"authentication.accessToken.secret",envName:"",message:"authentication.accessToken.secret is required when authentication is enabled."});if(n.authentication.refreshToken?.secret){let o=process.env[n.authentication.refreshToken.secret];if(!o)r.push({field:"authentication.refreshToken.secret",envName:n.authentication.refreshToken.secret,message:`Environment variable "${n.authentication.refreshToken.secret}" is not set. Please set it in your .env file.`});else t.refreshTokenSecret=o}else r.push({field:"authentication.refreshToken.secret",envName:"",message:"authentication.refreshToken.secret is required when authentication is enabled."});if(n.authentication.sessionToken?.secret){let o=process.env[n.authentication.sessionToken.secret];if(!o)r.push({field:"authentication.sessionToken.secret",envName:n.authentication.sessionToken.secret,message:`Environment variable "${n.authentication.sessionToken.secret}" is not set. Please set it in your .env file.`});else t.sessionTokenSecret=o}else r.push({field:"authentication.sessionToken.secret",envName:"",message:"authentication.sessionToken.secret is required when authentication is enabled."})}if(n.authentication?.oauth?.enabled&&n.authentication.oauth.providers){let o={};for(let[e,a]of Object.entries(n.authentication.oauth.providers)){if(!a)continue;let{clientId:c,clientSecret:i,redirectUri:s}=a,l=process.env[c],f=process.env[i],u=process.env[s]??s;if(!l)r.push({field:`authentication.oauth.providers.${e}.clientId`,envName:c,message:`Environment variable "${c}" is not set (OAuth ${e} clientId).`});if(!f)r.push({field:`authentication.oauth.providers.${e}.clientSecret`,envName:i,message:`Environment variable "${i}" is not set (OAuth ${e} clientSecret).`});if(l&&f)o[e]={clientId:l,clientSecret:f,redirectUri:u,scopes:a.scopes,authorizationUrl:a.authorizationUrl,tokenUrl:a.tokenUrl,userInfoUrl:a.userInfoUrl,extraAuthParams:a.extraAuthParams}}if(Object.keys(o).length>0)t.oauthProviders=o}return{valid:r.length===0,errors:r,resolved:t}}async function og(n,r){let{Pool:t}=await import("pg"),e=new URL(n).pathname.replace("/","");if(!e)return;let a=new URL(n);a.pathname="/postgres";let c=new t({connectionString:a.toString()});try{if((await c.query("SELECT 1 FROM pg_database WHERE datname = $1",[e])).rowCount===0)r.info(`[Database] Creating database "${e}"...`),await c.query(`CREATE DATABASE "${e}" TEMPLATE template0`),r.info(`[Database] Database "${e}" created successfully`);else r.info(`[Database] Database "${e}" exists`)}catch(i){let s=i instanceof Error?i.message:String(i);r.warn(`[Database] Could not auto-create database: ${s}`)}finally{await c.end()}}var jl=null,Qh,Gh,ph="access_token:",Kh="refresh_lock:",Th=5,vh=3000,Ib=60;var Kc=d(()=>{vb();Jl();Qh={email:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,url:/^https?:\/\/.+/,uuid:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,date:/^\d{4}-\d{2}-\d{2}$/,datetime:/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/,time:/^\d{2}:\d{2}:\d{2}$/,uri:/^[a-z][a-z0-9+.-]*:/i,ipv4:/^(\d{1,3}\.){3}\d{1,3}$/,ipv6:/^([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$/i};Gh={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;","`":"&#96;","=":"&#x3D;"}});import Tc from"path";import Ih,{t as vc}from"elysia";function Tl(n){if(!n)return xo;return{enabled:n.enabled??xo.enabled,basePath:n.basePath??xo.basePath,cacheMaxAge:n.cacheMaxAge??xo.cacheMaxAge,enableRangeRequests:n.enableRangeRequests??xo.enableRangeRequests,enableEtag:n.enableEtag??xo.enableEtag,corsOrigins:n.corsOrigins??xo.corsOrigins}}function Zh(n){let r=["image/","video/","audio/","text/","application/pdf"];for(let t of r)if(n.startsWith(t)||n===t)return"inline";return"attachment"}function yh(n){return n.replace(/[^A-Za-z0-9._-]+/g,"_").replace(/_{2,}/g,"_").slice(0,200)}function vl(n){let{cdn:r,storagePath:t,logger:o,getFileRecord:e}=n,a=new Ih({prefix:r.basePath});if(!r.enabled)return a;return a.get("/:id",async({params:c,request:i,set:s})=>{let{id:l}=c,f=i.headers.get("x-schema-name")||void 0,u,b,$;if(e){let g=await e(l,f);if(!g)return s.status=404,{success:!1,message:"File not found"};u=Tc.join(g.path,g.name),b=g.name,$=g.mimeType||g.mime_type||"application/octet-stream"}else u=Tc.join(t,l),b=l,$="application/octet-stream";if(!await St.exists(u))return s.status=404,{success:!1,message:"Physical file not found"};let _=await St.getFileInfo(u),m=new Date(_.modifiedAt||Date.now()).toUTCString(),E=r.enableEtag?`"${_.size}-${_.modifiedAt?.getTime()||Date.now()}"`:void 0,R={"Cache-Control":`public, max-age=${r.cacheMaxAge}`,"Last-Modified":m};if(E)R.ETag=E;if(r.corsOrigins.length>0)R["Access-Control-Allow-Origin"]=r.corsOrigins[0]==="*"?"*":r.corsOrigins.join(", "),R["Access-Control-Allow-Methods"]="GET, HEAD, OPTIONS";let M=i.headers.get("if-none-match");if(E&&M===E)return new Response(null,{status:304,headers:R});let S=Bun.file(u),x=i.headers.get("range");if(r.enableRangeRequests&&x){let g=x.match(/bytes=(\d*)-(\d*)/);if(!g)return s.status=416,new Response("Range not satisfiable",{status:416,headers:{"Content-Range":`bytes */${_.size}`,"Content-Type":$,...R}});let Y=g[1]||"0",V=g[2]||"",C=parseInt(Y,10),Q=V?parseInt(V,10):_.size-1;if(C>=_.size||Q>=_.size||C>Q)return new Response("Range not satisfiable",{status:416,headers:{"Content-Range":`bytes */${_.size}`,"Content-Type":$,...R}});let p=Q-C+1,L=S.slice(C,Q+1);return new Response(L,{status:206,headers:{"Content-Range":`bytes ${C}-${Q}/${_.size}`,"Accept-Ranges":"bytes","Content-Length":p.toString(),"Content-Type":$,...R}})}let D=Zh($),k=yh(b),B=encodeURIComponent(b),w=`${D}; filename="${k}"; filename*=UTF-8''${B}`;return new Response(S,{status:200,headers:{"Content-Length":_.size.toString(),"Content-Type":$,"Accept-Ranges":r.enableRangeRequests?"bytes":"none","Content-Disposition":w,...R}})},{params:vc.Object({id:vc.String()}),detail:{tags:["CDN"],summary:"Get file by ID",description:"Serve file with streaming, range requests, and caching support"}}),a.head("/:id",async({params:c,request:i,set:s})=>{let{id:l}=c,f=i.headers.get("x-schema-name")||void 0,u,b;if(e){let R=await e(l,f);if(!R)return s.status=404,new Response(null,{status:404});u=Tc.join(R.path,R.name),b=R.mime_type||"application/octet-stream"}else u=Tc.join(t,l),b="application/octet-stream";if(!await St.exists(u))return s.status=404,new Response(null,{status:404});let A=await St.getFileInfo(u),_=new Date(A.modifiedAt||Date.now()).toUTCString(),m=r.enableEtag?`"${A.size}-${A.modifiedAt?.getTime()||Date.now()}"`:void 0,E={"Content-Length":A.size.toString(),"Content-Type":b,"Accept-Ranges":r.enableRangeRequests?"bytes":"none","Cache-Control":`public, max-age=${r.cacheMaxAge}`,"Last-Modified":_};if(m)E.ETag=m;if(r.corsOrigins.length>0)E["Access-Control-Allow-Origin"]=r.corsOrigins[0]==="*"?"*":r.corsOrigins.join(", "),E["Access-Control-Allow-Methods"]="GET, HEAD, OPTIONS";return new Response(null,{status:200,headers:E})},{params:vc.Object({id:vc.String()}),detail:{tags:["CDN"],summary:"Get file metadata",description:"Get file headers without body for preflight checks"}}),o.info(`[CDN] Routes enabled at ${r.basePath}`),a}var xo;var eg=d(()=>{jc();xo={enabled:!0,basePath:"/cdn",cacheMaxAge:86400,enableRangeRequests:!0,enableEtag:!0,corsOrigins:["*"]}});import{randomUUID as n5}from"crypto";import Il from"path";function ma(n){if(!n)return Qt;return{enabled:n.enabled??Qt.enabled,basePath:n.basePath??Qt.basePath,maxFileSizeBytes:n.maxFileSizeBytes??Qt.maxFileSizeBytes,allowedMimeTypes:n.allowedMimeTypes??Qt.allowedMimeTypes,blockedMimeTypes:n.blockedMimeTypes??Qt.blockedMimeTypes,formData:{filesField:n.formData?.filesField??Qt.formData.filesField,dataField:n.formData?.dataField??Qt.formData.dataField,maxFiles:n.formData?.maxFiles??Qt.formData.maxFiles}}}function wa(n,r){let t={data:{},files:[]};if(!n||typeof n!=="object")return t;let o=n,e=o[r.formData.dataField];if(e){if(typeof e==="string")try{t.data=JSON.parse(e)}catch{t.data={}}else if(typeof e==="object")t.data=e}let a=o[r.formData.filesField];if(a){if(a instanceof File)t.files=[a];else if(Array.isArray(a))t.files=a.filter((c)=>c instanceof File)}return t}function Zl(n,r){if(n.size>r.maxFileSizeBytes)return{valid:!1,error:`File ${n.name} exceeds maximum size of ${r.maxFileSizeBytes} bytes`};if(r.blockedMimeTypes.length>0&&r.blockedMimeTypes.includes(n.type))return{valid:!1,error:`File type ${n.type} is not allowed`};if(r.allowedMimeTypes.length>0&&!r.allowedMimeTypes.includes(n.type))return{valid:!1,error:`File type ${n.type} is not in allowed list`};return{valid:!0}}async function yl(n,r,t){let o=n5(),e=Il.extname(n.name),a=`${o}${e}`,c=t?Il.join(r.basePath,t):r.basePath,i=await n.arrayBuffer(),s=new Uint8Array(i);return await St.createFile({dir:c,name:a,data:s,options:{type:n.type,createDir:!0}}),{id:o,name:a,originalName:n.name,path:c,mimeType:n.type,size:n.size,createdAt:new Date}}async function ha(n,r,t){let o=[],e=[];for(let a of n.slice(0,r.formData.maxFiles)){let c=Zl(a,r);if(!c.valid){e.push({file:a.name,error:c.error||"Unknown error"});continue}try{let i=await yl(a,r,t);o.push(i)}catch(i){e.push({file:a.name,error:i instanceof Error?i.message:"Upload failed"})}}return{success:o,failed:e}}async function ag(n,r){try{let t=Il.join(n,r);return await St.deleteFile(t)}catch{return!1}}var Qt;var cg=d(()=>{jc();Qt={enabled:!1,basePath:"./uploads",maxFileSizeBytes:104857600,allowedMimeTypes:[],blockedMimeTypes:["application/x-executable","application/x-msdos-program"],formData:{filesField:"files",dataField:"data",maxFiles:10}}});var ig={};no(ig,{validateFile:()=>Zl,uploadFiles:()=>ha,uploadFile:()=>yl,parseFormDataBody:()=>wa,mergeStorageConfig:()=>ma,mergeCdnConfig:()=>Tl,deleteFile:()=>ag,createCdnRoutes:()=>vl});var Ic=d(()=>{eg();cg()});import{Elysia as K$,t as kr}from"elysia";function vg(n){let{captchaService:r,logger:t,basePath:o="/auth/captcha"}=n,e=new K$;if(!r.isEnabled())return e;return e.get(`${o}/generate`,async(a)=>{let{type:c,difficulty:i}=a.query,s=a.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||a.request.headers.get("x-real-ip")?.trim()||a.request.headers.get("cf-connecting-ip")?.trim()||"unknown",l=await r.generate(c,i,s);if(l.rateLimited)return a.set.status=429,{success:!1,message:l.message??"Too many requests. Please try again later."};return t.info("[CAPTCHA] Challenge generated via endpoint",{challengeId:l.challengeId,type:l.type,ipAddress:s}),{success:!0,data:{challengeId:l.challengeId,type:l.type,question:l.question,expiresAt:l.expiresAt,...l.imageData?{imageData:l.imageData}:{},...l.puzzleData?{puzzleData:{pieces:l.puzzleData.pieces}}:{}}}},{query:T$,detail:{tags:["Captcha"],summary:"Generate Captcha",description:"Generate a new captcha challenge"}}),e.post(`${o}/validate`,async(a)=>{let{challengeId:c,answer:i}=a.body,s=await r.validate(c,i);if(!s.valid)a.set.status=400;return s},{body:v$,detail:{tags:["Captcha"],summary:"Validate Captcha",description:"Validate a captcha answer"}}),e}var T$,v$;var Ig=d(()=>{T$=kr.Object({type:kr.Optional(kr.Union([kr.Literal("math"),kr.Literal("image"),kr.Literal("puzzle"),kr.Literal("text")])),difficulty:kr.Optional(kr.Union([kr.Literal("easy"),kr.Literal("medium"),kr.Literal("hard")]))}),v$=kr.Object({challengeId:kr.String(),answer:kr.String()})});import I$ from"crypto";var{password:Z$}=globalThis.Bun;async function go(n){return await Z$.hash(n,{algorithm:"bcrypt",cost:10})}function ei(){return I$.randomBytes(32).toString("hex")}function Ye(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 Zg(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 Je=()=>{};import{sql as ai}from"drizzle-orm";import{Elysia as y$,t as ci}from"elysia";function ii(n){let{authConfig:r,registerConfig:t,emailService:o,appName:e}=n,{db:a,logger:c,usersTable:i}=r,s=new y$;if(!t.enabled||!t.emailVerification?.enabled)return s;let l="/verify-email",f="/resend-verification";return s.get(l,async(u)=>{if(!a||!i)return{success:!1,message:"Database not configured"};let b=u.query.token;if(!b)return{success:!1,message:"Verification token is required"};let $=await a.select().from(i).where(ai`email_verification_token = ${b}`).limit(1);if($.length===0)return c.warn("[AUTH] Email verification failed - invalid token"),{success:!1,message:"Invalid or expired verification token"};let A=$[0],_=A.emailVerificationTokenExpiresAt;if(_&&new Date>new Date(_))return c.warn("[AUTH] Email verification failed - token expired",{userId:A.id,email:A.email}),{success:!1,message:"Verification token has expired. Please request a new one."};if(await a.update(i).set({verifiedAt:new Date,emailVerificationToken:null,emailVerificationTokenExpiresAt:null}).where(ai`id = ${A.id}`),c.info("[AUTH] Email verified successfully",{userId:A.id,email:A.email}),t.emailVerification?.templates?.welcome?.enabled&&o?.isAvailable())o.sendWelcomeEmail(A.email,A.email.split("@")[0]||"User",e||"Nucleus").catch((E)=>{c.error("[AUTH] Failed to send welcome email after verification",{email:A.email,error:E})});return{success:!0,message:"Email verified successfully. You can now log in.",data:{redirectUrl:t.emailVerification?.redirectUrl||"/login",verified:!0}}},{query:ci.Object({token:ci.String()}),detail:{tags:["Authentication"],summary:"Verify Email",description:"Verify user email address using the verification token"}}),s.post(f,async(u)=>{if(!a||!i)return{success:!1,message:"Database not configured"};if(!o?.isAvailable())return{success:!1,message:"Email service not available"};let{email:b}=u.body,$=await a.select().from(i).where(ai`email = ${b}`).limit(1);if($.length===0)return{success:!0,message:"If your email is registered, you will receive a verification email."};let A=$[0];if(A.verifiedAt)return{success:!1,message:"Email is already verified"};let _=t.emailVerification?.maxResendAttempts||3,m=A.emailVerificationAttempts||0;if(m>=_)return c.warn("[AUTH] Resend verification failed - max attempts reached",{email:b,attempts:m}),{success:!1,message:"Maximum resend attempts reached. Please contact support.",data:{maxAttemptsReached:!0,attemptsUsed:m,maxAttempts:_}};let E=t.emailVerification?.resendCooldown||"60s",R=Ye(E),M=A.emailVerificationSentAt;if(M){let g=Date.now()-new Date(M).getTime();if(g<R){let Y=Math.ceil((R-g)/1000);return{success:!1,message:`Please wait ${Y} seconds before requesting another verification email.`,data:{cooldownRemaining:Y,canResendAt:new Date(Date.now()+Y*1000).toISOString()}}}}let S=ei(),x=t.emailVerification?.tokenExpiresIn||"24h",D=new Date(Date.now()+Ye(x));await a.update(i).set({emailVerificationToken:S,emailVerificationTokenExpiresAt:D,emailVerificationSentAt:new Date,emailVerificationAttempts:m+1}).where(ai`id = ${A.id}`);let B=`${(t.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${S}`,w=await o.sendVerificationEmail(b,b.split("@")[0]||"User",B,e||"Nucleus");if(w.success)return c.info("[AUTH] Verification email resent",{email:b}),{success:!0,message:"Verification email sent. Please check your inbox.",data:{cooldownSeconds:Math.ceil(R/1000),canResendAt:new Date(Date.now()+R).toISOString(),attemptsRemaining:_-(m+1)}};return c.error("[AUTH] Failed to resend verification email",{email:b,error:w.error}),{success:!1,message:"Failed to send verification email. Please try again later."}},{body:ci.Object({email:ci.String({format:"email"})}),detail:{tags:["Authentication"],summary:"Resend Verification Email",description:"Resend the email verification link to the user"}}),s}var hf=d(()=>{Je()});import yg from"crypto";function Le(){return yg.randomBytes(32).toString("hex")}function dt(n){return yg.createHash("sha256").update(n).digest("hex")}function Xe(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 Ba=()=>{};import{eq as nA}from"drizzle-orm";import{Elysia as rA,t as si}from"elysia";function li(n,r,t,o,e,a){let{db:c,logger:i,usersTable:s}=n,l=r.route||"/auth/invite",f=r.tokenExpiresIn||"7d",u=r.redirectUrl||"",b=new rA;if(!r.enabled)return b;if(b.post(l,async($)=>{if(!c||!s)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return i.error("[AUTH] Invite requested but email service not available"),{success:!1,message:"Email service not available"};let{email:A}=$.body,_=await c.select().from(s).where(nA(s.email,A)).limit(1),m;if(_.length>0){let D=_[0];if(D.verifiedAt||D.password)return i.warn("[AUTH] Invite failed - user already verified",{email:A}),{success:!1,message:"User with this email is already verified"};m=D.id,i.info("[AUTH] Resending invitation to existing unverified user",{userId:m,email:A})}else{let D={email:A,password:null,emailVerified:!1,isLocked:!1,createdAt:new Date,updatedAt:new Date},B=(await c.insert(s).values(D).returning())[0];if(!B)return i.error("[AUTH] Failed to create invited user",{email:A}),{success:!1,message:"Failed to create user"};m=B.id,i.info("[AUTH] Invited user created",{userId:m,email:A})}let E=Le(),R=dt(E),M=new Date(Date.now()+Xe(f));await o({userId:m,email:A,tokenHash:R,expiresAt:M});let S=u?`${u}?token=${E}&invite=true`:`/auth/magic-link/verify?token=${E}`,x=await t.sendInvitationEmail(A,S,e||"Nucleus");if(!x.success)return i.error("[AUTH] Failed to send invitation email",{email:A,error:x.error}),{success:!0,message:"User created but failed to send invitation email",data:{id:m,email:A}};return i.info("[AUTH] Invitation email sent",{email:A,userId:m}),{success:!0,message:"Invitation sent successfully",data:{id:m,email:A}}},{body:tA,detail:{tags:["Authentication"],summary:"Invite User",description:"Invite a new user by sending them an email with a magic link to set their password"}}),a)b.post(`${l}/verify`,async($)=>{let{token:A}=$.body;if(!A)return{success:!1,message:"Token is required"};let _=dt(A),m=await a(_);if(!m)return i.warn("[AUTH] Invalid invite verify token"),{success:!1,message:"Invalid or expired token"};if(new Date>m.expiresAt)return i.warn("[AUTH] Expired invite verify token",{email:m.email}),{success:!1,message:"Invalid or expired token"};return i.info("[AUTH] Invite token verified (not consumed)",{email:m.email,userId:m.userId}),{success:!0,data:{userId:m.userId,email:m.email}}},{body:si.Object({token:si.String()}),detail:{tags:["Authentication"],summary:"Verify Invite Token",description:"Validate an invite token without consuming it. Returns user info if valid."}});return b}var tA;var $f=d(()=>{Ba();tA=si.Object({email:si.String({format:"email"})})});import{t as Zn}from"elysia";var Af,oA;var Rf=d(()=>{Af=Zn.Object({email:Zn.String({format:"email"}),password:Zn.String({minLength:1}),rememberMe:Zn.Optional(Zn.Boolean()),captchaId:Zn.Optional(Zn.String()),captchaAnswer:Zn.Optional(Zn.String())}),oA=Zn.Object({success:Zn.Boolean(),message:Zn.Optional(Zn.String()),data:Zn.Optional(Zn.Object({user:Zn.Object({id:Zn.String(),email:Zn.String()}),accessToken:Zn.String(),refreshToken:Zn.String()}))})});var{password:eA}=globalThis.Bun;async function fi(n,r){try{return await eA.verify(n,r)}catch{return!1}}function di(n,r){let t=n.toLowerCase(),o=["headlesschrome","headless","phantomjs","nightmare","selenium","webdriver","puppeteer","playwright"],e=["bot","crawler","spider","scraper","curl","wget","python-requests","python-urllib","java/","httpclient","go-http-client","node-fetch","axios","postman","insomnia","httpie"],a=o.some((_)=>t.includes(_)),c=e.some((_)=>t.includes(_)),i=a||c,s=[];if(a)s.push("headless_browser");if(c)s.push("bot_user_agent");if(!t||t.length<10)s.push("missing_or_short_ua");if(t==="mozilla/5.0")s.push("generic_ua");if(t.includes("nucleusserveraction")||t.includes("serveraction"))s.push("server_action");let l="unknown";if(t.includes("mobile")||t.includes("android")&&!t.includes("tablet"))l="mobile";else if(t.includes("tablet")||t.includes("ipad"))l="tablet";else if(t.includes("windows")||t.includes("macintosh")||t.includes("linux"))l="desktop";let f,u;if(a)f="Headless Browser";else if(c)f="Bot/Crawler";else if(t.includes("chrome")&&!t.includes("edg")){f="Chrome";let _=n.match(/Chrome\/(\d+\.\d+)/i);if(_?.[1])u=_[1]}else if(t.includes("firefox")){f="Firefox";let _=n.match(/Firefox\/(\d+\.\d+)/i);if(_?.[1])u=_[1]}else if(t.includes("safari")&&!t.includes("chrome")){f="Safari";let _=n.match(/Version\/(\d+\.\d+)/i);if(_?.[1])u=_[1]}else if(t.includes("edg")){f="Edge";let _=n.match(/Edg\/(\d+\.\d+)/i);if(_?.[1])u=_[1]}let b,$;if(t.includes("windows nt 10"))b="Windows",$="10/11";else if(t.includes("windows nt"))b="Windows";else if(t.includes("mac os x")){b="macOS";let _=n.match(/Mac OS X (\d+[._]\d+)/i);if(_?.[1])$=_[1].replace("_",".")}else if(t.includes("android")){b="Android";let _=n.match(/Android (\d+\.?\d*)/i);if(_?.[1])$=_[1]}else if(t.includes("iphone")||t.includes("ipad")){b="iOS";let _=n.match(/OS (\d+[._]\d+)/i);if(_?.[1])$=_[1].replace("_",".")}else if(t.includes("linux"))b="Linux";return{deviceName:f&&b?`${f} on ${b}`:"Unknown Device",deviceType:l,browserName:f,browserVersion:u,osName:b,osVersion:$,ipAddress:r,userAgent:n,locationCountry:void 0,locationCity:void 0,isHeadless:a,isBot:c,isSuspicious:i,suspiciousPatterns:s}}var ui=()=>{};import{eq as kf}from"drizzle-orm";import{Elysia as aA}from"elysia";function bi(n,r,t,o,e,a,c,i,s){let{db:l,logger:f,usersTable:u}=n,b=r.route||"/auth/login",$={accessTokenName:c?.accessTokenName||"access_token",refreshTokenName:c?.refreshTokenName||"refresh_token",sessionTokenName:c?.sessionTokenName||"session_token",accessTokenMaxAge:c?.accessTokenMaxAge||900,refreshTokenMaxAge:c?.refreshTokenMaxAge||604800,sessionTokenMaxAge:c?.sessionTokenMaxAge||900,secure:c?.secure??!0,httpOnly:c?.httpOnly??!0,sameSite:c?.sameSite||"strict",path:c?.path||"/"},A=new aA;if(!r.enabled)return A;return A.post(b,async(_)=>{if(!l||!u)return{success:!1,message:"Database not configured"};let{email:m,password:E,rememberMe:R,captchaId:M,captchaAnswer:S}=_.body;if(s?.isEnabled()){if(!M||!S)return _.set.status=400,{success:!1,message:"Captcha is required"};let T=await s.validate(M,S);if(!T.valid)return _.set.status=400,{success:!1,message:T.message||"Invalid captcha",attemptsRemaining:T.attemptsRemaining}}let D=(await l.select().from(u).where(kf(u.email,m)).limit(1))[0],k=new URL(_.request.url),B=_.request.headers.get("cf-connecting-ip")?.trim()||_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||_.request.headers.get("x-real-ip")?.trim()||"unknown",w=_.request.headers.get("user-agent")||"unknown";if(!D)return f.warn("[AUTH] Login failed - user not found",{email:m}),await f.audit({entityName:"users",operation:"LOGIN_FAILED",summary:`Login failed: user not found (${m})`,ipAddress:B,userAgent:w,path:k.pathname,query:k.search}),{success:!1,message:"Invalid email or password"};if(D.isLocked)return f.warn("[AUTH] Login failed - account locked",{email:m,userId:D.id}),await f.audit({entityName:"users",entityId:D.id,operation:"LOGIN_FAILED",userId:D.id,summary:`Login failed: account locked (${m})`,ipAddress:B,userAgent:w,path:k.pathname,query:k.search}),{success:!1,message:"Account is locked"};if(!await fi(E,D.password)){let T=(D.failedLoginAttempts||0)+1;return await l.update(u).set({failedLoginAttempts:T,isLocked:T>=5,lockedUntil:T>=5?new Date(Date.now()+1800000):null}).where(kf(u.id,D.id)),f.warn("[AUTH] Login failed - invalid password",{email:m,failedAttempts:T}),await f.audit({entityName:"users",entityId:D.id,operation:"LOGIN_FAILED",userId:D.id,summary:`Login failed: invalid password (${m}, attempt ${T})`,ipAddress:B,userAgent:w,path:k.pathname,query:k.search}),{success:!1,message:"Invalid email or password"}}await l.update(u).set({failedLoginAttempts:0,lastLoginAt:new Date,loginCount:(D.loginCount||0)+1}).where(kf(u.id,D.id));let Y={};_.request.headers.forEach((T,tn)=>{Y[tn]=T}),f.info("[AUTH] Login request headers",{headers:Y});let V=_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim(),C=(T)=>!T||T==="127.0.0.1"||T==="::1"||T==="localhost"||T.startsWith("10.")||T.startsWith("192.168.")||T.startsWith("172."),Q=_.request.headers.get("cf-connecting-ip")?.trim()||_.request.headers.get("true-client-ip")?.trim()||(!C(V)?V:void 0)||_.request.headers.get("x-real-ip")?.trim()||_.request.headers.get("x-client-ip")?.trim()||V||"127.0.0.1",p=_.request.headers.get("user-agent")||"Unknown Browser";f.info("[AUTH] Parsed device info",{ipAddress:Q,userAgent:p});let L=di(p,Q);try{if(!C(Q)){let T=await fetch(`http://ip-api.com/json/${Q}?fields=country,city`);if(T.ok){let tn=await T.json();if(tn.country)L.locationCountry=tn.country;if(tn.city)L.locationCity=tn.city}}}catch{}let J=t(D.id),W=o(D.id),X={userId:D.id,deviceInfo:L,loginMethod:"password",rememberMe:R},O=await e(X);if(a)await a(O,X);f.info("[AUTH] Login successful",{userId:D.id,email:m,rememberMe:R}),await f.audit({entityName:"users",entityId:D.id,operation:"LOGIN",userId:D.id,summary:`${m} logged in successfully`,ipAddress:Q,userAgent:p,path:k.pathname,query:k.search});let N={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},j=$.secure?"; Secure":"",q=`; Path=${$.path}; HttpOnly; SameSite=${$.sameSite}${j}`,y=[];if(N.accessToken.setHeadersEnabled)y.push(`${$.accessTokenName}=${J}${q}; Max-Age=${$.accessTokenMaxAge}`);if(N.refreshToken.setHeadersEnabled)y.push(`${$.refreshTokenName}=${W}${q}; Max-Age=${$.refreshTokenMaxAge}`);if(N.sessionToken.setHeadersEnabled)y.push(`${$.sessionTokenName}=${O}${q}; Max-Age=${$.sessionTokenMaxAge}`);_.set.headers["x-session-id"]=O;let en={user:{id:D.id,email:D.email}};if(N.accessToken.returnJson)en.accessToken=J;if(N.refreshToken.returnJson)en.refreshToken=W;if(N.sessionToken.returnJson)en.sessionId=O;let gn=JSON.stringify({success:!0,data:en}),Gn=new Headers;Gn.set("Content-Type","application/json"),Gn.set("x-session-id",O);for(let T of y)Gn.append("Set-Cookie",T);return new Response(gn,{status:200,headers:Gn})},{body:Af,detail:{tags:["Authentication"],summary:"Login",description:"Authenticate user with email and password"}}),A}var Ef=d(()=>{Rf();ui();Rf()});function n_(){return{"Set-Cookie":["access_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0","refresh_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0","session_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0"].join(", ")}}import{t as gi}from"elysia";var cA;var r_=d(()=>{cA=gi.Object({success:gi.Boolean(),message:gi.Optional(gi.String())})});import{Elysia as iA}from"elysia";function _i(n,r,t,o){let{logger:e}=n,a=r.route||"/auth/logout",c=new iA;if(!r.enabled)return c;return c.post(a,async(i)=>{let s=i.request.headers.get("x-session-id"),l=i.request.headers.get("x-user-id");if(s){if(await t(s),o)await o(s,"user_logout")}let f=n_();for(let[b,$]of Object.entries(f))i.set.headers[b]=$;e.info("[AUTH] Logout successful",{userId:l,sessionId:s});let u=new URL(i.request.url);return e.audit({entityName:"users",entityId:l||void 0,operation:"LOGOUT",userId:l||void 0,summary:`User logged out${s?` (session: ${s.substring(0,8)}...)`:""}`,ipAddress:i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:i.request.headers.get("user-agent")||"unknown",path:u.pathname,query:u.search}),{success:!0,message:"Logged out successfully"}},{detail:{tags:["Authentication"],summary:"Logout",description:"Logout and invalidate session"}}),c}var Sf=d(()=>{r_()});var wr={};no(wr,{IsUndefined:()=>vn,IsUint8Array:()=>qt,IsSymbol:()=>Uf,IsString:()=>Wn,IsRegExp:()=>Ya,IsObject:()=>Hn,IsNumber:()=>Cr,IsNull:()=>zf,IsIterator:()=>Hf,IsFunction:()=>Df,IsDate:()=>Fo,IsBoolean:()=>Nt,IsBigInt:()=>Wa,IsAsyncIterator:()=>Mf,IsArray:()=>Tn,HasPropertyKey:()=>mi});function mi(n,r){return r in n}function Mf(n){return Hn(n)&&!Tn(n)&&!qt(n)&&Symbol.asyncIterator in n}function Tn(n){return Array.isArray(n)}function Wa(n){return typeof n==="bigint"}function Nt(n){return typeof n==="boolean"}function Fo(n){return n instanceof globalThis.Date}function Df(n){return typeof n==="function"}function Hf(n){return Hn(n)&&!Tn(n)&&!qt(n)&&Symbol.iterator in n}function zf(n){return n===null}function Cr(n){return typeof n==="number"}function Hn(n){return typeof n==="object"&&n!==null}function Ya(n){return n instanceof globalThis.RegExp}function Wn(n){return typeof n==="string"}function Uf(n){return typeof n==="symbol"}function qt(n){return n instanceof globalThis.Uint8Array}function vn(n){return n===void 0}function sA(n){return n.map((r)=>wi(r))}function lA(n){return new Date(n.getTime())}function fA(n){return new Uint8Array(n)}function dA(n){return new RegExp(n.source,n.flags)}function uA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=wi(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=wi(n[t]);return r}function wi(n){return Tn(n)?sA(n):Fo(n)?lA(n):qt(n)?fA(n):Ya(n)?dA(n):Hn(n)?uA(n):n}function Ln(n){return wi(n)}var Dr=()=>{};function Ve(n,r){return r===void 0?Ln(n):Ln({...r,...n})}var hi=d(()=>{Dr()});var Bf=d(()=>{hi();Dr()});function t_(n){return n!==null&&typeof n==="object"}function o_(n){return globalThis.Array.isArray(n)&&!globalThis.ArrayBuffer.isView(n)}function e_(n){return n===void 0}function a_(n){return typeof n==="number"}var c_=()=>{};var $i;var i_=d(()=>{c_();(function(n){n.InstanceMode="default",n.ExactOptionalPropertyTypes=!1,n.AllowArrayObject=!1,n.AllowNaN=!1,n.AllowNullVoid=!1;function r(c,i){return n.ExactOptionalPropertyTypes?i in c:c[i]!==void 0}n.IsExactOptionalProperty=r;function t(c){let i=t_(c);return n.AllowArrayObject?i:i&&!o_(c)}n.IsObjectLike=t;function o(c){return t(c)&&!(c instanceof Date)&&!(c instanceof Uint8Array)}n.IsRecordLike=o;function e(c){return n.AllowNaN?a_(c):Number.isFinite(c)}n.IsNumberLike=e;function a(c){let i=e_(c);return n.AllowNullVoid?i||c===null:i}n.IsVoidLike=a})($i||($i={}))});function bA(n){return globalThis.Object.freeze(n).map((r)=>Ja(r))}function gA(n){return n}function _A(n){return n}function mA(n){return n}function wA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=Ja(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=Ja(n[t]);return globalThis.Object.freeze(r)}function Ja(n){return Tn(n)?bA(n):Fo(n)?gA(n):qt(n)?_A(n):Ya(n)?mA(n):Hn(n)?wA(n):n}var s_=()=>{};function z(n,r){let t=r!==void 0?{...r,...n}:n;switch($i.InstanceMode){case"freeze":return Ja(t);case"clone":return Ln(t);default:return t}}var Z=d(()=>{i_();s_();Dr()});var Ft=d(()=>{Z()});var dr;var l_=d(()=>{dr=class dr extends Error{constructor(n){super(n)}}});var zt=d(()=>{l_()});var yn,ut,ur,vr,G;var La=d(()=>{yn=Symbol.for("TypeBox.Transform"),ut=Symbol.for("TypeBox.Readonly"),ur=Symbol.for("TypeBox.Optional"),vr=Symbol.for("TypeBox.Hint"),G=Symbol.for("TypeBox.Kind")});var rn=d(()=>{La()});function Ce(n){return Hn(n)&&n[ut]==="Readonly"}function Hr(n){return Hn(n)&&n[ur]==="Optional"}function Wf(n){return bn(n,"Any")}function Yf(n){return bn(n,"Argument")}function bt(n){return bn(n,"Array")}function jo(n){return bn(n,"AsyncIterator")}function po(n){return bn(n,"BigInt")}function jt(n){return bn(n,"Boolean")}function gt(n){return bn(n,"Computed")}function _t(n){return bn(n,"Constructor")}function hA(n){return bn(n,"Date")}function mt(n){return bn(n,"Function")}function wt(n){return bn(n,"Integer")}function Qn(n){return bn(n,"Intersect")}function Ko(n){return bn(n,"Iterator")}function bn(n,r){return Hn(n)&&G in n&&n[G]===r}function Ai(n){return Nt(n)||Cr(n)||Wn(n)}function xr(n){return bn(n,"Literal")}function Qr(n){return bn(n,"MappedKey")}function Xn(n){return bn(n,"MappedResult")}function _o(n){return bn(n,"Never")}function $A(n){return bn(n,"Not")}function Xa(n){return bn(n,"Null")}function ht(n){return bn(n,"Number")}function In(n){return bn(n,"Object")}function To(n){return bn(n,"Promise")}function vo(n){return bn(n,"Record")}function qn(n){return bn(n,"Ref")}function Jf(n){return bn(n,"RegExp")}function pt(n){return bn(n,"String")}function Va(n){return bn(n,"Symbol")}function Pr(n){return bn(n,"TemplateLiteral")}function AA(n){return bn(n,"This")}function mo(n){return Hn(n)&&yn in n}function Gr(n){return bn(n,"Tuple")}function Ca(n){return bn(n,"Undefined")}function _n(n){return bn(n,"Union")}function RA(n){return bn(n,"Uint8Array")}function kA(n){return bn(n,"Unknown")}function EA(n){return bn(n,"Unsafe")}function SA(n){return bn(n,"Void")}function MA(n){return Hn(n)&&G in n&&Wn(n[G])}function Or(n){return Wf(n)||Yf(n)||bt(n)||jt(n)||po(n)||jo(n)||gt(n)||_t(n)||hA(n)||mt(n)||wt(n)||Qn(n)||Ko(n)||xr(n)||Qr(n)||Xn(n)||_o(n)||$A(n)||Xa(n)||ht(n)||In(n)||To(n)||vo(n)||qn(n)||Jf(n)||pt(n)||Va(n)||Pr(n)||AA(n)||Gr(n)||Ca(n)||_n(n)||RA(n)||kA(n)||EA(n)||SA(n)||MA(n)}var $n=d(()=>{rn()});var h={};no(h,{TypeGuardUnknownTypeError:()=>f_,IsVoid:()=>I_,IsUnsafe:()=>v_,IsUnknown:()=>T_,IsUnionLiteral:()=>LA,IsUnion:()=>Vf,IsUndefined:()=>p_,IsUint8Array:()=>K_,IsTuple:()=>j_,IsTransform:()=>F_,IsThis:()=>q_,IsTemplateLiteral:()=>N_,IsSymbol:()=>O_,IsString:()=>G_,IsSchema:()=>sr,IsRegExp:()=>P_,IsRef:()=>Q_,IsRecursive:()=>JA,IsRecord:()=>x_,IsReadonly:()=>UA,IsProperties:()=>Ri,IsPromise:()=>C_,IsOptional:()=>BA,IsObject:()=>V_,IsNumber:()=>X_,IsNull:()=>L_,IsNot:()=>J_,IsNever:()=>Y_,IsMappedResult:()=>W_,IsMappedKey:()=>B_,IsLiteralValue:()=>U_,IsLiteralString:()=>H_,IsLiteralNumber:()=>z_,IsLiteralBoolean:()=>YA,IsLiteral:()=>Qa,IsKindOf:()=>dn,IsKind:()=>Z_,IsIterator:()=>D_,IsIntersect:()=>M_,IsInteger:()=>S_,IsImport:()=>WA,IsFunction:()=>E_,IsDate:()=>k_,IsConstructor:()=>R_,IsComputed:()=>A_,IsBoolean:()=>$_,IsBigInt:()=>h_,IsAsyncIterator:()=>w_,IsArray:()=>m_,IsArgument:()=>__,IsAny:()=>g_});function d_(n){try{return new RegExp(n),!0}catch{return!1}}function Lf(n){if(!Wn(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 u_(n){return Xf(n)||sr(n)}function xa(n){return vn(n)||Wa(n)}function Yn(n){return vn(n)||Cr(n)}function Xf(n){return vn(n)||Nt(n)}function zn(n){return vn(n)||Wn(n)}function HA(n){return vn(n)||Wn(n)&&Lf(n)&&d_(n)}function zA(n){return vn(n)||Wn(n)&&Lf(n)}function b_(n){return vn(n)||sr(n)}function UA(n){return Hn(n)&&n[ut]==="Readonly"}function BA(n){return Hn(n)&&n[ur]==="Optional"}function g_(n){return dn(n,"Any")&&zn(n.$id)}function __(n){return dn(n,"Argument")&&Cr(n.index)}function m_(n){return dn(n,"Array")&&n.type==="array"&&zn(n.$id)&&sr(n.items)&&Yn(n.minItems)&&Yn(n.maxItems)&&Xf(n.uniqueItems)&&b_(n.contains)&&Yn(n.minContains)&&Yn(n.maxContains)}function w_(n){return dn(n,"AsyncIterator")&&n.type==="AsyncIterator"&&zn(n.$id)&&sr(n.items)}function h_(n){return dn(n,"BigInt")&&n.type==="bigint"&&zn(n.$id)&&xa(n.exclusiveMaximum)&&xa(n.exclusiveMinimum)&&xa(n.maximum)&&xa(n.minimum)&&xa(n.multipleOf)}function $_(n){return dn(n,"Boolean")&&n.type==="boolean"&&zn(n.$id)}function A_(n){return dn(n,"Computed")&&Wn(n.target)&&Tn(n.parameters)&&n.parameters.every((r)=>sr(r))}function R_(n){return dn(n,"Constructor")&&n.type==="Constructor"&&zn(n.$id)&&Tn(n.parameters)&&n.parameters.every((r)=>sr(r))&&sr(n.returns)}function k_(n){return dn(n,"Date")&&n.type==="Date"&&zn(n.$id)&&Yn(n.exclusiveMaximumTimestamp)&&Yn(n.exclusiveMinimumTimestamp)&&Yn(n.maximumTimestamp)&&Yn(n.minimumTimestamp)&&Yn(n.multipleOfTimestamp)}function E_(n){return dn(n,"Function")&&n.type==="Function"&&zn(n.$id)&&Tn(n.parameters)&&n.parameters.every((r)=>sr(r))&&sr(n.returns)}function WA(n){return dn(n,"Import")&&mi(n,"$defs")&&Hn(n.$defs)&&Ri(n.$defs)&&mi(n,"$ref")&&Wn(n.$ref)&&n.$ref in n.$defs}function S_(n){return dn(n,"Integer")&&n.type==="integer"&&zn(n.$id)&&Yn(n.exclusiveMaximum)&&Yn(n.exclusiveMinimum)&&Yn(n.maximum)&&Yn(n.minimum)&&Yn(n.multipleOf)}function Ri(n){return Hn(n)&&Object.entries(n).every(([r,t])=>Lf(r)&&sr(t))}function M_(n){return dn(n,"Intersect")&&(Wn(n.type)&&n.type!=="object"?!1:!0)&&Tn(n.allOf)&&n.allOf.every((r)=>sr(r)&&!F_(r))&&zn(n.type)&&(Xf(n.unevaluatedProperties)||b_(n.unevaluatedProperties))&&zn(n.$id)}function D_(n){return dn(n,"Iterator")&&n.type==="Iterator"&&zn(n.$id)&&sr(n.items)}function dn(n,r){return Hn(n)&&G in n&&n[G]===r}function H_(n){return Qa(n)&&Wn(n.const)}function z_(n){return Qa(n)&&Cr(n.const)}function YA(n){return Qa(n)&&Nt(n.const)}function Qa(n){return dn(n,"Literal")&&zn(n.$id)&&U_(n.const)}function U_(n){return Nt(n)||Cr(n)||Wn(n)}function B_(n){return dn(n,"MappedKey")&&Tn(n.keys)&&n.keys.every((r)=>Cr(r)||Wn(r))}function W_(n){return dn(n,"MappedResult")&&Ri(n.properties)}function Y_(n){return dn(n,"Never")&&Hn(n.not)&&Object.getOwnPropertyNames(n.not).length===0}function J_(n){return dn(n,"Not")&&sr(n.not)}function L_(n){return dn(n,"Null")&&n.type==="null"&&zn(n.$id)}function X_(n){return dn(n,"Number")&&n.type==="number"&&zn(n.$id)&&Yn(n.exclusiveMaximum)&&Yn(n.exclusiveMinimum)&&Yn(n.maximum)&&Yn(n.minimum)&&Yn(n.multipleOf)}function V_(n){return dn(n,"Object")&&n.type==="object"&&zn(n.$id)&&Ri(n.properties)&&u_(n.additionalProperties)&&Yn(n.minProperties)&&Yn(n.maxProperties)}function C_(n){return dn(n,"Promise")&&n.type==="Promise"&&zn(n.$id)&&sr(n.item)}function x_(n){return dn(n,"Record")&&n.type==="object"&&zn(n.$id)&&u_(n.additionalProperties)&&Hn(n.patternProperties)&&((r)=>{let t=Object.getOwnPropertyNames(r.patternProperties);return t.length===1&&d_(t[0])&&Hn(r.patternProperties)&&sr(r.patternProperties[t[0]])})(n)}function JA(n){return Hn(n)&&vr in n&&n[vr]==="Recursive"}function Q_(n){return dn(n,"Ref")&&zn(n.$id)&&Wn(n.$ref)}function P_(n){return dn(n,"RegExp")&&zn(n.$id)&&Wn(n.source)&&Wn(n.flags)&&Yn(n.maxLength)&&Yn(n.minLength)}function G_(n){return dn(n,"String")&&n.type==="string"&&zn(n.$id)&&Yn(n.minLength)&&Yn(n.maxLength)&&HA(n.pattern)&&zA(n.format)}function O_(n){return dn(n,"Symbol")&&n.type==="symbol"&&zn(n.$id)}function N_(n){return dn(n,"TemplateLiteral")&&n.type==="string"&&Wn(n.pattern)&&n.pattern[0]==="^"&&n.pattern[n.pattern.length-1]==="$"}function q_(n){return dn(n,"This")&&zn(n.$id)&&Wn(n.$ref)}function F_(n){return Hn(n)&&yn in n}function j_(n){return dn(n,"Tuple")&&n.type==="array"&&zn(n.$id)&&Cr(n.minItems)&&Cr(n.maxItems)&&n.minItems===n.maxItems&&(vn(n.items)&&vn(n.additionalItems)&&n.minItems===0||Tn(n.items)&&n.items.every((r)=>sr(r)))}function p_(n){return dn(n,"Undefined")&&n.type==="undefined"&&zn(n.$id)}function LA(n){return Vf(n)&&n.anyOf.every((r)=>H_(r)||z_(r))}function Vf(n){return dn(n,"Union")&&zn(n.$id)&&Hn(n)&&Tn(n.anyOf)&&n.anyOf.every((r)=>sr(r))}function K_(n){return dn(n,"Uint8Array")&&n.type==="Uint8Array"&&zn(n.$id)&&Yn(n.minByteLength)&&Yn(n.maxByteLength)}function T_(n){return dn(n,"Unknown")&&zn(n.$id)}function v_(n){return dn(n,"Unsafe")}function I_(n){return dn(n,"Void")&&n.type==="void"&&zn(n.$id)}function Z_(n){return Hn(n)&&G in n&&Wn(n[G])&&!DA.includes(n[G])}function sr(n){return Hn(n)&&(g_(n)||__(n)||m_(n)||$_(n)||h_(n)||w_(n)||A_(n)||R_(n)||k_(n)||E_(n)||S_(n)||M_(n)||D_(n)||Qa(n)||B_(n)||W_(n)||Y_(n)||J_(n)||L_(n)||X_(n)||V_(n)||C_(n)||x_(n)||Q_(n)||P_(n)||G_(n)||O_(n)||N_(n)||q_(n)||j_(n)||p_(n)||Vf(n)||K_(n)||T_(n)||v_(n)||I_(n)||Z_(n))}var f_,DA;var y_=d(()=>{rn();zt();f_=class f_ extends dr{};DA=["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 Cf=d(()=>{$n();y_()});var nm=()=>{};var rm="(true|false)",ki="(0|[1-9][0-9]*)",tm="(.*)",wo="^(0|[1-9][0-9]*)$",ho="^(.*)$",om="^(?!.*)$";var Pa=()=>{};var em=()=>{};var am=()=>{};var cm=d(()=>{em();am()});function im(n,r){return n.includes(r)}function sm(n){return[...new Set(n)]}function CA(n,r){return n.filter((t)=>r.includes(t))}function xA(n,r){return n.reduce((t,o)=>{return CA(t,o)},r)}function lm(n){return n.length===1?n[0]:n.length>1?xA(n.slice(1),n[0]):[]}function fm(n){let r=[];for(let t of n)r.push(...t);return r}var Ga=()=>{};function $o(n){return z({[G]:"Any"},n)}var dm=d(()=>{Ft();rn()});var Oa=d(()=>{dm()});function xe(n,r){return z({[G]:"Array",type:"array",items:n},r)}var um=d(()=>{Z();rn()});var Na=d(()=>{um()});function bm(n){return z({[G]:"Argument",index:n})}var gm=d(()=>{Z();rn()});var xf=d(()=>{gm()});function Qe(n,r){return z({[G]:"AsyncIterator",type:"AsyncIterator",items:n},r)}var _m=d(()=>{rn();Z()});var qa=d(()=>{_m()});function Jn(n,r,t){return z({[G]:"Computed",target:n,parameters:r},t)}var mm=d(()=>{Ft();La()});var Ao=d(()=>{mm()});function QA(n,r){let{[r]:t,...o}=n;return o}function Pn(n,r){return r.reduce((t,o)=>QA(t,o),n)}var Tt=()=>{};function mn(n){return z({[G]:"Never",not:{}},n)}var wm=d(()=>{Z();rn()});var br=d(()=>{wm()});var hm=()=>{};function An(n){return z({[G]:"MappedResult",properties:n})}var Qf=d(()=>{Z();rn()});function Pe(n,r,t){return z({[G]:"Constructor",type:"Constructor",parameters:n,returns:r},t)}var $m=d(()=>{Z();rn()});var Fa=d(()=>{$m()});function Ut(n,r,t){return z({[G]:"Function",type:"Function",parameters:n,returns:r},t)}var Am=d(()=>{Z();rn()});var Io=d(()=>{Am()});function ja(n,r){return z({[G]:"Union",anyOf:n},r)}var Pf=d(()=>{Z();rn()});function PA(n){return n.some((r)=>Hr(r))}function Rm(n){return n.map((r)=>Hr(r)?GA(r):r)}function GA(n){return Pn(n,[ur])}function OA(n,r){return PA(n)?hr(ja(Rm(n),r)):ja(Rm(n),r)}function Bt(n,r){return n.length===1?z(n[0],r):n.length===0?mn(r):OA(n,r)}var km=d(()=>{Z();rn();Tt();br();vt();Pf();$n()});var Em=()=>{};function En(n,r){return n.length===0?mn(r):n.length===1?z(n[0],r):ja(n,r)}var Sm=d(()=>{br();Z();Pf()});var nr=d(()=>{km();Em();Sm()});function NA(n){return n.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function Of(n,r,t){return n[r]===t&&n.charCodeAt(r-1)!==92}function It(n,r){return Of(n,r,"(")}function pa(n,r){return Of(n,r,")")}function Mm(n,r){return Of(n,r,"|")}function qA(n){if(!(It(n,0)&&pa(n,n.length-1)))return!1;let r=0;for(let t=0;t<n.length;t++){if(It(n,t))r+=1;if(pa(n,t))r-=1;if(r===0&&t!==n.length-1)return!1}return!0}function FA(n){return n.slice(1,n.length-1)}function jA(n){let r=0;for(let t=0;t<n.length;t++){if(It(n,t))r+=1;if(pa(n,t))r-=1;if(Mm(n,t)&&r===0)return!0}return!1}function pA(n){for(let r=0;r<n.length;r++)if(It(n,r))return!0;return!1}function KA(n){let[r,t]=[0,0],o=[];for(let a=0;a<n.length;a++){if(It(n,a))r+=1;if(pa(n,a))r-=1;if(Mm(n,a)&&r===0){let c=n.slice(t,a);if(c.length>0)o.push(Ge(c));t=a+1}}let e=n.slice(t);if(e.length>0)o.push(Ge(e));if(o.length===0)return{type:"const",const:""};if(o.length===1)return o[0];return{type:"or",expr:o}}function TA(n){function r(e,a){if(!It(e,a))throw new Gf("TemplateLiteralParser: Index must point to open parens");let c=0;for(let i=a;i<e.length;i++){if(It(e,i))c+=1;if(pa(e,i))c-=1;if(c===0)return[a,i]}throw new Gf("TemplateLiteralParser: Unclosed group parens in expression")}function t(e,a){for(let c=a;c<e.length;c++)if(It(e,c))return[a,c];return[a,e.length]}let o=[];for(let e=0;e<n.length;e++)if(It(n,e)){let[a,c]=r(n,e),i=n.slice(a,c+1);o.push(Ge(i)),e=c}else{let[a,c]=t(n,e),i=n.slice(a,c);if(i.length>0)o.push(Ge(i));e=c-1}return o.length===0?{type:"const",const:""}:o.length===1?o[0]:{type:"and",expr:o}}function Ge(n){return qA(n)?Ge(FA(n)):jA(n)?KA(n):pA(n)?TA(n):{type:"const",const:NA(n)}}function Oe(n){return Ge(n.slice(1,n.length-1))}var Gf;var Ei=d(()=>{zt();Gf=class Gf extends dr{}});function vA(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 IA(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 ZA(n){return n.type==="const"&&n.const===".*"}function Zo(n){return vA(n)||ZA(n)?!1:IA(n)?!0:n.type==="and"?n.expr.every((r)=>Zo(r)):n.type==="or"?n.expr.every((r)=>Zo(r)):n.type==="const"?!0:(()=>{throw new Dm("Unknown expression type")})()}function Hm(n){let r=Oe(n.pattern);return Zo(r)}var Dm;var Nf=d(()=>{Ei();zt();Dm=class Dm extends dr{}});function*Um(n){if(n.length===1)return yield*n[0];for(let r of n[0])for(let t of Um(n.slice(1)))yield`${r}${t}`}function*yA(n){return yield*Um(n.expr.map((r)=>[...Ka(r)]))}function*nR(n){for(let r of n.expr)yield*Ka(r)}function*rR(n){return yield n.const}function*Ka(n){return n.type==="and"?yield*yA(n):n.type==="or"?yield*nR(n):n.type==="const"?yield*rR(n):(()=>{throw new zm("Unknown expression")})()}function Si(n){let r=Oe(n.pattern);return Zo(r)?[...Ka(r)]:[]}var zm;var qf=d(()=>{Nf();Ei();zt();zm=class zm extends dr{}});function Rn(n,r){return z({[G]:"Literal",const:n,type:typeof n},r)}var Bm=d(()=>{Z();rn()});var zr=d(()=>{Bm()});function Mi(n){return z({[G]:"Boolean",type:"boolean"},n)}var Wm=d(()=>{rn();Ft()});var Di=d(()=>{Wm()});function Ne(n){return z({[G]:"BigInt",type:"bigint"},n)}var Ym=d(()=>{rn();Ft()});var Ta=d(()=>{Ym()});function Ir(n){return z({[G]:"Number",type:"number"},n)}var Jm=d(()=>{Z();rn()});var yo=d(()=>{Jm()});function $t(n){return z({[G]:"String",type:"string"},n)}var Lm=d(()=>{Z();rn()});var qe=d(()=>{Lm()});function*tR(n){let r=n.trim().replace(/"|'/g,"");return r==="boolean"?yield Mi():r==="number"?yield Ir():r==="bigint"?yield Ne():r==="string"?yield $t():yield(()=>{let t=r.split("|").map((o)=>Rn(o.trim()));return t.length===0?mn():t.length===1?t[0]:Bt(t)})()}function*oR(n){if(n[1]!=="{"){let r=Rn("$"),t=Ff(n.slice(1));return yield*[r,...t]}for(let r=2;r<n.length;r++)if(n[r]==="}"){let t=tR(n.slice(2,r)),o=Ff(n.slice(r+1));return yield*[...t,...o]}yield Rn(n)}function*Ff(n){for(let r=0;r<n.length;r++)if(n[r]==="$"){let t=Rn(n.slice(0,r)),o=oR(n.slice(r));return yield*[t,...o]}yield Rn(n)}function Xm(n){return[...Ff(n)]}var jf=d(()=>{zr();Di();Ta();yo();qe();nr();br()});function eR(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Cm(n,r){return Pr(n)?n.pattern.slice(1,n.pattern.length-1):_n(n)?`(${n.anyOf.map((t)=>Cm(t,r)).join("|")})`:ht(n)?`${r}${ki}`:wt(n)?`${r}${ki}`:po(n)?`${r}${ki}`:pt(n)?`${r}${tm}`:xr(n)?`${r}${eR(n.const.toString())}`:jt(n)?`${r}${rm}`:(()=>{throw new Vm(`Unexpected Kind '${n[G]}'`)})()}function pf(n){return`^${n.map((r)=>Cm(r,"")).join("")}$`}var Vm;var Kf=d(()=>{Pa();rn();zt();$n();Vm=class Vm extends dr{}});function ne(n){let t=Si(n).map((o)=>Rn(o));return Bt(t)}var xm=d(()=>{nr();zr();qf()});function Hi(n,r){let t=Wn(n)?pf(Xm(n)):pf(n);return z({[G]:"TemplateLiteral",type:"string",pattern:t},r)}var Qm=d(()=>{Z();jf();Kf();rn()});var Zt=d(()=>{Nf();qf();jf();Ei();Kf();xm();Qm()});function aR(n){return Si(n).map((t)=>t.toString())}function cR(n){let r=[];for(let t of n)r.push(...Ur(t));return r}function iR(n){return[n.toString()]}function Ur(n){return[...new Set(Pr(n)?aR(n):_n(n)?cR(n.anyOf):xr(n)?iR(n.const):ht(n)?["[number]"]:wt(n)?["[number]"]:[])]}var zi=d(()=>{Zt();$n()});function sR(n,r,t){let o={};for(let e of Object.getOwnPropertyNames(r))o[e]=Ro(n,Ur(r[e]),t);return o}function lR(n,r,t){return sR(n,r.properties,t)}function Pm(n,r,t){let o=lR(n,r,t);return An(o)}var Tf=d(()=>{ar();zi();Wt()});function Om(n,r){return n.map((t)=>Nm(t,r))}function fR(n){return n.filter((r)=>!_o(r))}function dR(n,r){return Ui(fR(Om(n,r)))}function uR(n){return n.some((r)=>_o(r))?[]:n}function bR(n,r){return Bt(uR(Om(n,r)))}function gR(n,r){return r in n?n[r]:r==="[number]"?Bt(n):mn()}function _R(n,r){return r==="[number]"?n:mn()}function mR(n,r){return r in n?n[r]:mn()}function Nm(n,r){return Qn(n)?dR(n.allOf,r):_n(n)?bR(n.anyOf,r):Gr(n)?gR(n.items??[],r):bt(n)?_R(n.items,r):In(n)?mR(n.properties,r):mn()}function vf(n,r){return r.map((t)=>Nm(n,t))}function Gm(n,r){return Bt(vf(n,r))}function Ro(n,r,t){if(qn(n)||qn(r)){if(!Or(n)||!Or(r))throw new dr("Index types using Ref parameters require both Type and Key to be of TSchema");return Jn("Index",[n,r])}if(Xn(r))return Pm(n,r,t);if(Qr(r))return qm(n,r,t);return z(Or(r)?Gm(n,Ur(r)):Gm(n,r),t)}var If=d(()=>{Z();zt();Ao();br();Zr();nr();zi();Zf();Tf();$n()});function wR(n,r,t){return{[r]:Ro(n,[r],Ln(t))}}function hR(n,r,t){return r.reduce((o,e)=>{return{...o,...wR(n,e,t)}},{})}function $R(n,r,t){return hR(n,r.keys,t)}function qm(n,r,t){let o=$R(n,r,t);return An(o)}var Zf=d(()=>{If();ar();Dr()});var Wt=d(()=>{Zf();Tf();zi();If()});function Fe(n,r){return z({[G]:"Iterator",type:"Iterator",items:n},r)}var Fm=d(()=>{Z();rn()});var va=d(()=>{Fm()});function AR(n){return globalThis.Object.keys(n).filter((r)=>!Hr(n[r]))}function RR(n,r){let t=AR(n),o=t.length>0?{[G]:"Object",type:"object",required:t,properties:n}:{[G]:"Object",type:"object",properties:n};return z(o,r)}var Un;var jm=d(()=>{Z();rn();$n();Un=RR});var Nr=d(()=>{jm()});function Bi(n,r){return z({[G]:"Promise",type:"Promise",item:n},r)}var pm=d(()=>{Z();rn()});var Wi=d(()=>{pm()});function kR(n){return z(Pn(n,[ut]))}function ER(n){return z({...n,[ut]:"Readonly"})}function SR(n,r){return r===!1?kR(n):ER(n)}function Br(n,r){let t=r??!0;return Xn(n)?Km(n,t):SR(n,t)}var yf=d(()=>{Z();rn();Tt();n0();$n()});function MR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Br(n[o],r);return t}function DR(n,r){return MR(n.properties,r)}function Km(n,r){let t=DR(n,r);return An(t)}var n0=d(()=>{ar();yf()});var re=d(()=>{n0();yf()});function yr(n,r){return z(n.length>0?{[G]:"Tuple",type:"array",items:n,additionalItems:!1,minItems:n.length,maxItems:n.length}:{[G]:"Tuple",type:"array",minItems:n.length,maxItems:n.length},r)}var Tm=d(()=>{Z();rn()});var ko=d(()=>{Tm()});function vm(n,r){return n in r?nt(n,r[n]):An(r)}function HR(n){return{[n]:Rn(n)}}function zR(n){let r={};for(let t of n)r[t]=Rn(t);return r}function UR(n,r){return im(r,n)?HR(n):zR(r)}function BR(n,r){let t=UR(n,r);return vm(n,t)}function Ia(n,r){return r.map((t)=>nt(n,t))}function WR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(r))t[o]=nt(n,r[o]);return t}function nt(n,r){let t={...r};return Hr(r)?hr(nt(n,Pn(r,[ur]))):Ce(r)?Br(nt(n,Pn(r,[ut]))):Xn(r)?vm(n,r.properties):Qr(r)?BR(n,r.keys):_t(r)?Pe(Ia(n,r.parameters),nt(n,r.returns),t):mt(r)?Ut(Ia(n,r.parameters),nt(n,r.returns),t):jo(r)?Qe(nt(n,r.items),t):Ko(r)?Fe(nt(n,r.items),t):Qn(r)?$r(Ia(n,r.allOf),t):_n(r)?En(Ia(n,r.anyOf),t):Gr(r)?yr(Ia(n,r.items??[]),t):In(r)?Un(WR(n,r.properties),t):bt(r)?xe(nt(n,r.items),t):To(r)?Bi(nt(n,r.item),t):r}function YR(n,r){let t={};for(let o of n)t[o]=nt(o,r);return t}function Im(n,r,t){let o=Or(n)?Ur(n):n,e=r({[G]:"MappedKey",keys:o}),a=YR(o,e);return Un(a,t)}var Zm=d(()=>{rn();Tt();Na();qa();Fa();Io();Wt();Zr();va();zr();Nr();vt();Wi();re();ko();nr();Ga();Qf();$n()});var ar=d(()=>{hm();Qf();Zm()});function JR(n){return z(Pn(n,[ur]))}function LR(n){return z({...n,[ur]:"Optional"})}function XR(n,r){return r===!1?JR(n):LR(n)}function hr(n,r){let t=r??!0;return Xn(n)?ym(n,t):XR(n,t)}var r0=d(()=>{Z();rn();Tt();t0();$n()});function VR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=hr(n[o],r);return t}function CR(n,r){return VR(n.properties,r)}function ym(n,r){let t=CR(n,r);return An(t)}var t0=d(()=>{ar();r0()});var vt=d(()=>{t0();r0()});function Za(n,r={}){let t=n.every((e)=>In(e)),o=Or(r.unevaluatedProperties)?{unevaluatedProperties:r.unevaluatedProperties}:{};return z(r.unevaluatedProperties===!1||Or(r.unevaluatedProperties)||t?{...o,[G]:"Intersect",type:"object",allOf:n}:{...o,[G]:"Intersect",allOf:n},r)}var o0=d(()=>{Z();rn();$n()});function xR(n){return n.every((r)=>Hr(r))}function QR(n){return Pn(n,[ur])}function nw(n){return n.map((r)=>Hr(r)?QR(r):r)}function PR(n,r){return xR(n)?hr(Za(nw(n),r)):Za(nw(n),r)}function Ui(n,r={}){if(n.length===1)return z(n[0],r);if(n.length===0)return mn(r);if(n.some((t)=>mo(t)))throw Error("Cannot intersect transform types");return PR(n,r)}var rw=d(()=>{rn();Z();Tt();br();vt();o0();$n()});var tw=()=>{};function $r(n,r){if(n.length===1)return z(n[0],r);if(n.length===0)return mn(r);if(n.some((t)=>mo(t)))throw Error("Cannot intersect transform types");return Za(n,r)}var ow=d(()=>{Z();br();o0();$n()});var Zr=d(()=>{rw();tw();ow()});function Yt(...n){let[r,t]=typeof n[0]==="string"?[n[0],n[1]]:[n[0].$id,n[1]];if(typeof r!=="string")throw new dr("Ref: $ref must be a string");return z({[G]:"Ref",$ref:r},t)}var ew=d(()=>{zt();Z();rn()});var te=d(()=>{ew()});function GR(n,r){return Jn("Awaited",[Jn(n,r)])}function OR(n){return Jn("Awaited",[Yt(n)])}function NR(n){return $r(aw(n))}function qR(n){return En(aw(n))}function FR(n){return je(n)}function aw(n){return n.map((r)=>je(r))}function je(n,r){return z(gt(n)?GR(n.target,n.parameters):Qn(n)?NR(n.allOf):_n(n)?qR(n.anyOf):To(n)?FR(n.item):qn(n)?OR(n.$ref):n,r)}var cw=d(()=>{Z();Ao();Zr();nr();te();$n()});var Yi=d(()=>{cw()});function iw(n){let r=[];for(let t of n)r.push(ya(t));return r}function jR(n){let r=iw(n);return fm(r)}function pR(n){let r=iw(n);return lm(r)}function KR(n){return n.map((r,t)=>t.toString())}function TR(n){return["[number]"]}function vR(n){return globalThis.Object.getOwnPropertyNames(n)}function IR(n){if(!ZR)return[];return globalThis.Object.getOwnPropertyNames(n).map((t)=>{return t[0]==="^"&&t[t.length-1]==="$"?t.slice(1,t.length-1):t})}function ya(n){return Qn(n)?jR(n.allOf):_n(n)?pR(n.anyOf):Gr(n)?KR(n.items??[]):bt(n)?TR(n.items):In(n)?vR(n.properties):vo(n)?IR(n.patternProperties):[]}var ZR=!1;var e0=d(()=>{Ga();$n()});function yR(n,r){return Jn("KeyOf",[Jn(n,r)])}function nk(n){return Jn("KeyOf",[Yt(n)])}function rk(n,r){let t=ya(n),o=tk(t),e=Bt(o);return z(e,r)}function tk(n){return n.map((r)=>r==="[number]"?Ir():Rn(r))}function pe(n,r){return gt(n)?yR(n.target,n.parameters):qn(n)?nk(n.$ref):Xn(n)?sw(n,r):rk(n,r)}var a0=d(()=>{Z();zr();yo();Ao();te();e0();nr();c0();$n()});function ok(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=pe(n[o],Ln(r));return t}function ek(n,r){return ok(n.properties,r)}function sw(n,r){let t=ek(n,r);return An(t)}var c0=d(()=>{ar();a0();Dr()});var lw=()=>{};var nc=d(()=>{c0();lw();e0();a0()});function ak(n){let r=[];for(let t of n)r.push(...ya(t));return sm(r)}function ck(n){return n.filter((r)=>!_o(r))}function ik(n,r){let t=[];for(let o of n)t.push(...vf(o,[r]));return ck(t)}function sk(n,r){let t={};for(let o of r)t[o]=Ui(ik(n,o));return t}function fw(n,r){let t=ak(n),o=sk(n,t);return Un(o,r)}var dw=d(()=>{Zr();Wt();nc();Nr();Ga();$n()});var i0=d(()=>{dw()});function Ji(n){return z({[G]:"Date",type:"Date"},n)}var uw=d(()=>{rn();Z()});var Li=d(()=>{uw()});function Xi(n){return z({[G]:"Null",type:"null"},n)}var bw=d(()=>{Z();rn()});var Vi=d(()=>{bw()});function Ci(n){return z({[G]:"Symbol",type:"symbol"},n)}var gw=d(()=>{Z();rn()});var xi=d(()=>{gw()});function Qi(n){return z({[G]:"Undefined",type:"undefined"},n)}var _w=d(()=>{Z();rn()});var Pi=d(()=>{_w()});function Gi(n){return z({[G]:"Uint8Array",type:"Uint8Array"},n)}var mw=d(()=>{Z();rn()});var Oi=d(()=>{mw()});function Eo(n){return z({[G]:"Unknown"},n)}var ww=d(()=>{Z();rn()});var Ke=d(()=>{ww()});function lk(n){return n.map((r)=>s0(r,!1))}function fk(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Br(s0(n[t],!1));return r}function Ni(n,r){return r===!0?n:Br(n)}function s0(n,r){return Mf(n)?Ni($o(),r):Hf(n)?Ni($o(),r):Tn(n)?Br(yr(lk(n))):qt(n)?Gi():Fo(n)?Ji():Hn(n)?Ni(Un(fk(n)),r):Df(n)?Ni(Ut([],Eo()),r):vn(n)?Qi():zf(n)?Xi():Uf(n)?Ci():Wa(n)?Ne():Cr(n)?Rn(n):Nt(n)?Rn(n):Wn(n)?Rn(n):Un({})}function hw(n,r){return z(s0(n,!0),r)}var $w=d(()=>{Oa();Ta();Li();Io();zr();Vi();Nr();xi();ko();re();Pi();Oi();Ke();Ft()});var l0=d(()=>{$w()});function Aw(n,r){return _t(n)?yr(n.parameters,r):mn(r)}var Rw=d(()=>{ko();br();$n()});var f0=d(()=>{Rw()});function kw(n,r){if(vn(n))throw Error("Enum undefined or empty");let t=globalThis.Object.getOwnPropertyNames(n).filter((a)=>isNaN(a)).map((a)=>n[a]),e=[...new Set(t)].map((a)=>Rn(a));return En(e,{...r,[vr]:"Enum"})}var Ew=d(()=>{zr();rn();nr()});var d0=d(()=>{Ew()});function rt(n){return n===U.False?n:U.True}function Te(n){throw new zw(n)}function rr(n){return h.IsNever(n)||h.IsIntersect(n)||h.IsUnion(n)||h.IsUnknown(n)||h.IsAny(n)}function tr(n,r){return h.IsNever(r)?Ww(n,r):h.IsIntersect(r)?qi(n,r):h.IsUnion(r)?m0(n,r):h.IsUnknown(r)?Xw(n,r):h.IsAny(r)?_0(n,r):Te("StructuralRight")}function _0(n,r){return U.True}function dk(n,r){return h.IsIntersect(r)?qi(n,r):h.IsUnion(r)&&r.anyOf.some((t)=>h.IsAny(t)||h.IsUnknown(t))?U.True:h.IsUnion(r)?U.Union:h.IsUnknown(r)?U.True:h.IsAny(r)?U.True:U.Union}function uk(n,r){return h.IsUnknown(n)?U.False:h.IsAny(n)?U.Union:h.IsNever(n)?U.True:U.False}function bk(n,r){return h.IsObject(r)&&Fi(r)?U.True:rr(r)?tr(n,r):!h.IsArray(r)?U.False:rt(Bn(n.items,r.items))}function gk(n,r){return rr(r)?tr(n,r):!h.IsAsyncIterator(r)?U.False:rt(Bn(n.items,r.items))}function _k(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsBigInt(r)?U.True:U.False}function Uw(n,r){return h.IsLiteralBoolean(n)?U.True:h.IsBoolean(n)?U.True:U.False}function mk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsBoolean(r)?U.True:U.False}function wk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):!h.IsConstructor(r)?U.False:n.parameters.length>r.parameters.length?U.False:!n.parameters.every((t,o)=>rt(Bn(r.parameters[o],t))===U.True)?U.False:rt(Bn(n.returns,r.returns))}function hk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsDate(r)?U.True:U.False}function $k(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):!h.IsFunction(r)?U.False:n.parameters.length>r.parameters.length?U.False:!n.parameters.every((t,o)=>rt(Bn(r.parameters[o],t))===U.True)?U.False:rt(Bn(n.returns,r.returns))}function Bw(n,r){return h.IsLiteral(n)&&wr.IsNumber(n.const)?U.True:h.IsNumber(n)||h.IsInteger(n)?U.True:U.False}function Ak(n,r){return h.IsInteger(r)||h.IsNumber(r)?U.True:rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):U.False}function qi(n,r){return r.allOf.every((t)=>Bn(n,t)===U.True)?U.True:U.False}function Rk(n,r){return n.allOf.some((t)=>Bn(t,r)===U.True)?U.True:U.False}function kk(n,r){return rr(r)?tr(n,r):!h.IsIterator(r)?U.False:rt(Bn(n.items,r.items))}function Ek(n,r){return h.IsLiteral(r)&&r.const===n.const?U.True:rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsString(r)?Lw(n,r):h.IsNumber(r)?Yw(n,r):h.IsInteger(r)?Bw(n,r):h.IsBoolean(r)?Uw(n,r):U.False}function Ww(n,r){return U.False}function Sk(n,r){return U.True}function Sw(n){let[r,t]=[n,0];while(!0){if(!h.IsNot(r))break;r=r.not,t+=1}return t%2===0?r:Eo()}function Mk(n,r){return h.IsNot(n)?Bn(Sw(n),r):h.IsNot(r)?Bn(n,Sw(r)):Te("Invalid fallthrough for Not")}function Dk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsNull(r)?U.True:U.False}function Yw(n,r){return h.IsLiteralNumber(n)?U.True:h.IsNumber(n)||h.IsInteger(n)?U.True:U.False}function Hk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsInteger(r)||h.IsNumber(r)?U.True:U.False}function Wr(n,r){return Object.getOwnPropertyNames(n.properties).length===r}function Mw(n){return Fi(n)}function Dw(n){return Wr(n,0)||Wr(n,1)&&"description"in n.properties&&h.IsUnion(n.properties.description)&&n.properties.description.anyOf.length===2&&(h.IsString(n.properties.description.anyOf[0])&&h.IsUndefined(n.properties.description.anyOf[1])||h.IsString(n.properties.description.anyOf[1])&&h.IsUndefined(n.properties.description.anyOf[0]))}function u0(n){return Wr(n,0)}function Hw(n){return Wr(n,0)}function zk(n){return Wr(n,0)}function Uk(n){return Wr(n,0)}function Bk(n){return Fi(n)}function Wk(n){let r=Ir();return Wr(n,0)||Wr(n,1)&&"length"in n.properties&&rt(Bn(n.properties.length,r))===U.True}function Yk(n){return Wr(n,0)}function Fi(n){let r=Ir();return Wr(n,0)||Wr(n,1)&&"length"in n.properties&&rt(Bn(n.properties.length,r))===U.True}function Jk(n){let r=Ut([$o()],$o());return Wr(n,0)||Wr(n,1)&&"then"in n.properties&&rt(Bn(n.properties.then,r))===U.True}function Jw(n,r){return Bn(n,r)===U.False?U.False:h.IsOptional(n)&&!h.IsOptional(r)?U.False:U.True}function Ar(n,r){return h.IsUnknown(n)?U.False:h.IsAny(n)?U.Union:h.IsNever(n)||h.IsLiteralString(n)&&Mw(r)||h.IsLiteralNumber(n)&&u0(r)||h.IsLiteralBoolean(n)&&Hw(r)||h.IsSymbol(n)&&Dw(r)||h.IsBigInt(n)&&zk(r)||h.IsString(n)&&Mw(r)||h.IsSymbol(n)&&Dw(r)||h.IsNumber(n)&&u0(r)||h.IsInteger(n)&&u0(r)||h.IsBoolean(n)&&Hw(r)||h.IsUint8Array(n)&&Bk(r)||h.IsDate(n)&&Uk(r)||h.IsConstructor(n)&&Yk(r)||h.IsFunction(n)&&Wk(r)?U.True:h.IsRecord(n)&&h.IsString(b0(n))?(()=>{return r[vr]==="Record"?U.True:U.False})():h.IsRecord(n)&&h.IsNumber(b0(n))?(()=>{return Wr(r,0)?U.True:U.False})():U.False}function Lk(n,r){return rr(r)?tr(n,r):h.IsRecord(r)?tt(n,r):!h.IsObject(r)?U.False:(()=>{for(let t of Object.getOwnPropertyNames(r.properties)){if(!(t in n.properties)&&!h.IsOptional(r.properties[t]))return U.False;if(h.IsOptional(r.properties[t]))return U.True;if(Jw(n.properties[t],r.properties[t])===U.False)return U.False}return U.True})()}function Xk(n,r){return rr(r)?tr(n,r):h.IsObject(r)&&Jk(r)?U.True:!h.IsPromise(r)?U.False:rt(Bn(n.item,r.item))}function b0(n){return wo in n.patternProperties?Ir():(ho in n.patternProperties)?$t():Te("Unknown record key pattern")}function g0(n){return wo in n.patternProperties?n.patternProperties[wo]:(ho in n.patternProperties)?n.patternProperties[ho]:Te("Unable to get record value schema")}function tt(n,r){let[t,o]=[b0(r),g0(r)];return h.IsLiteralString(n)&&h.IsNumber(t)&&rt(Bn(n,o))===U.True?U.True:h.IsUint8Array(n)&&h.IsNumber(t)?Bn(n,o):h.IsString(n)&&h.IsNumber(t)?Bn(n,o):h.IsArray(n)&&h.IsNumber(t)?Bn(n,o):h.IsObject(n)?(()=>{for(let e of Object.getOwnPropertyNames(n.properties))if(Jw(o,n.properties[e])===U.False)return U.False;return U.True})():U.False}function Vk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):!h.IsRecord(r)?U.False:Bn(g0(n),g0(r))}function Ck(n,r){let t=h.IsRegExp(n)?$t():n,o=h.IsRegExp(r)?$t():r;return Bn(t,o)}function Lw(n,r){return h.IsLiteral(n)&&wr.IsString(n.const)?U.True:h.IsString(n)?U.True:U.False}function xk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsString(r)?U.True:U.False}function Qk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsSymbol(r)?U.True:U.False}function Pk(n,r){return h.IsTemplateLiteral(n)?Bn(ne(n),r):h.IsTemplateLiteral(r)?Bn(n,ne(r)):Te("Invalid fallthrough for TemplateLiteral")}function Gk(n,r){return h.IsArray(r)&&n.items!==void 0&&n.items.every((t)=>Bn(t,r.items)===U.True)}function Ok(n,r){return h.IsNever(n)?U.True:h.IsUnknown(n)?U.False:h.IsAny(n)?U.Union:U.False}function Nk(n,r){return rr(r)?tr(n,r):h.IsObject(r)&&Fi(r)?U.True:h.IsArray(r)&&Gk(n,r)?U.True:!h.IsTuple(r)?U.False:wr.IsUndefined(n.items)&&!wr.IsUndefined(r.items)||!wr.IsUndefined(n.items)&&wr.IsUndefined(r.items)?U.False:wr.IsUndefined(n.items)&&!wr.IsUndefined(r.items)?U.True:n.items.every((t,o)=>Bn(t,r.items[o])===U.True)?U.True:U.False}function qk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsUint8Array(r)?U.True:U.False}function Fk(n,r){return rr(r)?tr(n,r):h.IsObject(r)?Ar(n,r):h.IsRecord(r)?tt(n,r):h.IsVoid(r)?Kk(n,r):h.IsUndefined(r)?U.True:U.False}function m0(n,r){return r.anyOf.some((t)=>Bn(n,t)===U.True)?U.True:U.False}function jk(n,r){return n.anyOf.every((t)=>Bn(t,r)===U.True)?U.True:U.False}function Xw(n,r){return U.True}function pk(n,r){return h.IsNever(r)?Ww(n,r):h.IsIntersect(r)?qi(n,r):h.IsUnion(r)?m0(n,r):h.IsAny(r)?_0(n,r):h.IsString(r)?Lw(n,r):h.IsNumber(r)?Yw(n,r):h.IsInteger(r)?Bw(n,r):h.IsBoolean(r)?Uw(n,r):h.IsArray(r)?uk(n,r):h.IsTuple(r)?Ok(n,r):h.IsObject(r)?Ar(n,r):h.IsUnknown(r)?U.True:U.False}function Kk(n,r){return h.IsUndefined(n)?U.True:h.IsUndefined(n)?U.True:U.False}function Tk(n,r){return h.IsIntersect(r)?qi(n,r):h.IsUnion(r)?m0(n,r):h.IsUnknown(r)?Xw(n,r):h.IsAny(r)?_0(n,r):h.IsObject(r)?Ar(n,r):h.IsVoid(r)?U.True:U.False}function Bn(n,r){return h.IsTemplateLiteral(n)||h.IsTemplateLiteral(r)?Pk(n,r):h.IsRegExp(n)||h.IsRegExp(r)?Ck(n,r):h.IsNot(n)||h.IsNot(r)?Mk(n,r):h.IsAny(n)?dk(n,r):h.IsArray(n)?bk(n,r):h.IsBigInt(n)?_k(n,r):h.IsBoolean(n)?mk(n,r):h.IsAsyncIterator(n)?gk(n,r):h.IsConstructor(n)?wk(n,r):h.IsDate(n)?hk(n,r):h.IsFunction(n)?$k(n,r):h.IsInteger(n)?Ak(n,r):h.IsIntersect(n)?Rk(n,r):h.IsIterator(n)?kk(n,r):h.IsLiteral(n)?Ek(n,r):h.IsNever(n)?Sk(n,r):h.IsNull(n)?Dk(n,r):h.IsNumber(n)?Hk(n,r):h.IsObject(n)?Lk(n,r):h.IsRecord(n)?Vk(n,r):h.IsString(n)?xk(n,r):h.IsSymbol(n)?Qk(n,r):h.IsTuple(n)?Nk(n,r):h.IsPromise(n)?Xk(n,r):h.IsUint8Array(n)?qk(n,r):h.IsUndefined(n)?Fk(n,r):h.IsUnion(n)?jk(n,r):h.IsUnknown(n)?pk(n,r):h.IsVoid(n)?Tk(n,r):Te(`Unknown left type operand '${n[G]}'`)}function So(n,r){return Bn(n,r)}var zw,U;var w0=d(()=>{Oa();Io();yo();qe();Ke();Zt();Pa();rn();zt();Cf();zw=class zw extends dr{};(function(n){n[n.Union=0]="Union",n[n.True=1]="True",n[n.False=2]="False"})(U||(U={}))});function vk(n,r,t,o,e){let a={};for(let c of globalThis.Object.getOwnPropertyNames(n))a[c]=ve(n[c],r,t,o,Ln(e));return a}function Ik(n,r,t,o,e){return vk(n.properties,r,t,o,e)}function Vw(n,r,t,o,e){let a=Ik(n,r,t,o,e);return An(a)}var h0=d(()=>{ar();ji();Dr()});function Zk(n,r,t,o){let e=So(n,r);return e===U.Union?En([t,o]):e===U.True?t:o}function ve(n,r,t,o,e){return Xn(n)?Vw(n,r,t,o,e):Qr(n)?z(Cw(n,r,t,o,e)):z(Zk(n,r,t,o),e)}var ji=d(()=>{Z();nr();w0();$0();h0();$n()});function yk(n,r,t,o,e){return{[n]:ve(Rn(n),r,t,o,Ln(e))}}function n3(n,r,t,o,e){return n.reduce((a,c)=>{return{...a,...yk(c,r,t,o,e)}},{})}function r3(n,r,t,o,e){return n3(n.keys,r,t,o,e)}function Cw(n,r,t,o,e){let a=r3(n,r,t,o,e);return An(a)}var $0=d(()=>{ar();zr();ji();Dr()});var xw=()=>{};var rc=d(()=>{w0();$0();h0();xw();ji()});function Qw(n,r){return Ie(ne(n),r)}var A0=d(()=>{pi();Zt()});function t3(n,r){let t=n.filter((o)=>So(o,r)===U.False);return t.length===1?t[0]:En(t)}function Ie(n,r,t={}){if(Pr(n))return z(Qw(n,r),t);if(Xn(n))return z(Pw(n,r),t);return z(_n(n)?t3(n.anyOf,r):So(n,r)!==U.False?mn():n,t)}var pi=d(()=>{Z();nr();br();rc();R0();A0();$n()});function o3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Ie(n[o],r);return t}function e3(n,r){return o3(n.properties,r)}function Pw(n,r){let t=e3(n,r);return An(t)}var R0=d(()=>{ar();pi()});var k0=d(()=>{R0();A0();pi()});function Gw(n,r){return Ze(ne(n),r)}var E0=d(()=>{Ki();Zt()});function a3(n,r){let t=n.filter((o)=>So(o,r)!==U.False);return t.length===1?t[0]:En(t)}function Ze(n,r,t){if(Pr(n))return z(Gw(n,r),t);if(Xn(n))return z(Ow(n,r),t);return z(_n(n)?a3(n.anyOf,r):So(n,r)!==U.False?n:mn(),t)}var Ki=d(()=>{Z();nr();br();rc();S0();E0();$n()});function c3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Ze(n[o],r);return t}function i3(n,r){return c3(n.properties,r)}function Ow(n,r){let t=i3(n,r);return An(t)}var S0=d(()=>{ar();Ki()});var M0=d(()=>{S0();E0();Ki()});function Nw(n,r){return _t(n)?z(n.returns,r):mn(r)}var qw=d(()=>{Z();br();$n()});var D0=d(()=>{qw()});function Ti(n){return Br(hr(n))}var Fw=d(()=>{re();vt()});var vi=d(()=>{Fw()});function oe(n,r,t){return z({[G]:"Record",type:"object",patternProperties:{[n]:r}},t)}function H0(n,r,t){let o={};for(let e of n)o[e]=r;return Un(o,{...t,[vr]:"Record"})}function s3(n,r,t){return Hm(n)?H0(Ur(n),r,t):oe(n.pattern,r,t)}function l3(n,r,t){return H0(Ur(En(n)),r,t)}function f3(n,r,t){return H0([n.toString()],r,t)}function d3(n,r,t){return oe(n.source,r,t)}function u3(n,r,t){let o=vn(n.pattern)?ho:n.pattern;return oe(o,r,t)}function b3(n,r,t){return oe(ho,r,t)}function g3(n,r,t){return oe(om,r,t)}function _3(n,r,t){return Un({true:r,false:r},t)}function m3(n,r,t){return oe(wo,r,t)}function w3(n,r,t){return oe(wo,r,t)}function Ii(n,r,t={}){return _n(n)?l3(n.anyOf,r,t):Pr(n)?s3(n,r,t):xr(n)?f3(n.const,r,t):jt(n)?_3(n,r,t):wt(n)?m3(n,r,t):ht(n)?w3(n,r,t):Jf(n)?d3(n,r,t):pt(n)?u3(n,r,t):Wf(n)?b3(n,r,t):_o(n)?g3(n,r,t):mn(t)}function Zi(n){return globalThis.Object.getOwnPropertyNames(n.patternProperties)[0]}function jw(n){let r=Zi(n);return r===ho?$t():r===wo?Ir():$t({pattern:r})}function yi(n){return n.patternProperties[Zi(n)]}var pw=d(()=>{Z();rn();br();yo();Nr();qe();nr();Zt();Pa();Wt();$n()});var tc=d(()=>{pw()});function h3(n,r){return r.parameters=oc(n,r.parameters),r.returns=At(n,r.returns),r}function $3(n,r){return r.parameters=oc(n,r.parameters),r.returns=At(n,r.returns),r}function A3(n,r){return r.allOf=oc(n,r.allOf),r}function R3(n,r){return r.anyOf=oc(n,r.anyOf),r}function k3(n,r){if(vn(r.items))return r;return r.items=oc(n,r.items),r}function E3(n,r){return r.items=At(n,r.items),r}function S3(n,r){return r.items=At(n,r.items),r}function M3(n,r){return r.items=At(n,r.items),r}function D3(n,r){return r.item=At(n,r.item),r}function H3(n,r){let t=W3(n,r.properties);return{...r,...Un(t)}}function z3(n,r){let t=At(n,jw(r)),o=At(n,yi(r)),e=Ii(t,o);return{...r,...e}}function U3(n,r){return r.index in n?n[r.index]:Eo()}function B3(n,r){let t=Ce(r),o=Hr(r),e=At(n,r);return t&&o?Ti(e):t&&!o?Br(e):!t&&o?hr(e):e}function W3(n,r){return globalThis.Object.getOwnPropertyNames(r).reduce((t,o)=>{return{...t,[o]:B3(n,r[o])}},{})}function oc(n,r){return r.map((t)=>At(n,t))}function At(n,r){return _t(r)?h3(n,r):mt(r)?$3(n,r):Qn(r)?A3(n,r):_n(r)?R3(n,r):Gr(r)?k3(n,r):bt(r)?E3(n,r):jo(r)?S3(n,r):Ko(r)?M3(n,r):To(r)?D3(n,r):In(r)?H3(n,r):vo(r)?z3(n,r):Yf(r)?U3(n,r):r}function Kw(n,r){return At(r,Ve(n))}var Tw=d(()=>{hi();Ke();vi();re();vt();Nr();tc();$n()});var z0=d(()=>{Tw()});function vw(n){return z({[G]:"Integer",type:"integer"},n)}var Iw=d(()=>{Z();rn()});var U0=d(()=>{Iw()});function Y3(n,r,t){return{[n]:Rt(Rn(n),r,Ln(t))}}function J3(n,r,t){return n.reduce((e,a)=>{return{...e,...Y3(a,r,t)}},{})}function L3(n,r,t){return J3(n.keys,r,t)}function Zw(n,r,t){let o=L3(n,r,t);return An(o)}var B0=d(()=>{ar();ee();zr();Dr()});function X3(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toLowerCase(),t].join("")}function V3(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toUpperCase(),t].join("")}function C3(n){return n.toUpperCase()}function x3(n){return n.toLowerCase()}function Q3(n,r,t){let o=Oe(n.pattern);if(!Zo(o))return{...n,pattern:yw(n.pattern,r)};let c=[...Ka(o)].map((l)=>Rn(l)),i=n1(c,r),s=En(i);return Hi([s],t)}function yw(n,r){return typeof n==="string"?r==="Uncapitalize"?X3(n):r==="Capitalize"?V3(n):r==="Uppercase"?C3(n):r==="Lowercase"?x3(n):n:n.toString()}function n1(n,r){return n.map((t)=>Rt(t,r))}function Rt(n,r,t={}){return Qr(n)?Zw(n,r,t):Pr(n)?Q3(n,r,t):_n(n)?En(n1(n.anyOf,r),t):xr(n)?Rn(yw(n.const,r),t):z(n,t)}var ee=d(()=>{Z();Zt();B0();zr();nr();$n()});function r1(n,r={}){return Rt(n,"Capitalize",r)}var t1=d(()=>{ee()});function o1(n,r={}){return Rt(n,"Lowercase",r)}var e1=d(()=>{ee()});function a1(n,r={}){return Rt(n,"Uncapitalize",r)}var c1=d(()=>{ee()});function i1(n,r={}){return Rt(n,"Uppercase",r)}var s1=d(()=>{ee()});var W0=d(()=>{t1();B0();ee();e1();c1();s1()});function P3(n,r,t){let o={};for(let e of globalThis.Object.getOwnPropertyNames(n))o[e]=Mo(n[e],r,Ln(t));return o}function G3(n,r,t){return P3(n.properties,r,t)}function l1(n,r,t){let o=G3(n,r,t);return An(o)}var Y0=d(()=>{ar();ns();Dr()});function O3(n,r){return n.map((t)=>J0(t,r))}function N3(n,r){return n.map((t)=>J0(t,r))}function q3(n,r){let{[r]:t,...o}=n;return o}function F3(n,r){return r.reduce((t,o)=>q3(t,o),n)}function j3(n,r,t){let o=Pn(n,[yn,"$id","required","properties"]),e=F3(t,r);return Un(e,o)}function p3(n){let r=n.reduce((t,o)=>Ai(o)?[...t,Rn(o)]:t,[]);return En(r)}function J0(n,r){return Qn(n)?$r(O3(n.allOf,r)):_n(n)?En(N3(n.anyOf,r)):In(n)?j3(n,r,n.properties):Un({})}function Mo(n,r,t){let o=Tn(r)?p3(r):r,e=Or(r)?Ur(r):r,a=qn(n),c=qn(r);return Xn(n)?l1(n,e,t):Qr(r)?f1(n,r,t):a&&c?Jn("Omit",[n,o],t):!a&&c?Jn("Omit",[n,o],t):a&&!c?Jn("Omit",[n,o],t):z({...J0(n,e),...t})}var ns=d(()=>{Z();La();Ao();zr();Wt();Zr();nr();Nr();L0();Y0();$n()});function K3(n,r,t){return{[r]:Mo(n,[r],Ln(t))}}function T3(n,r,t){return r.reduce((o,e)=>{return{...o,...K3(n,e,t)}},{})}function v3(n,r,t){return T3(n,r.keys,t)}function f1(n,r,t){let o=v3(n,r,t);return An(o)}var L0=d(()=>{ar();ns();Dr()});var rs=d(()=>{L0();Y0();ns()});function I3(n,r,t){let o={};for(let e of globalThis.Object.getOwnPropertyNames(n))o[e]=Do(n[e],r,Ln(t));return o}function Z3(n,r,t){return I3(n.properties,r,t)}function d1(n,r,t){let o=Z3(n,r,t);return An(o)}var X0=d(()=>{ar();ts();Dr()});function y3(n,r){return n.map((t)=>V0(t,r))}function n4(n,r){return n.map((t)=>V0(t,r))}function r4(n,r){let t={};for(let o of r)if(o in n)t[o]=n[o];return t}function t4(n,r,t){let o=Pn(n,[yn,"$id","required","properties"]),e=r4(t,r);return Un(e,o)}function o4(n){let r=n.reduce((t,o)=>Ai(o)?[...t,Rn(o)]:t,[]);return En(r)}function V0(n,r){return Qn(n)?$r(y3(n.allOf,r)):_n(n)?En(n4(n.anyOf,r)):In(n)?t4(n,r,n.properties):Un({})}function Do(n,r,t){let o=Tn(r)?o4(r):r,e=Or(r)?Ur(r):r,a=qn(n),c=qn(r);return Xn(n)?d1(n,e,t):Qr(r)?u1(n,r,t):a&&c?Jn("Pick",[n,o],t):!a&&c?Jn("Pick",[n,o],t):a&&!c?Jn("Pick",[n,o],t):z({...V0(n,e),...t})}var ts=d(()=>{Z();Ao();Zr();zr();Nr();nr();Wt();La();$n();C0();X0()});function e4(n,r,t){return{[r]:Do(n,[r],Ln(t))}}function a4(n,r,t){return r.reduce((o,e)=>{return{...o,...e4(n,e,t)}},{})}function c4(n,r,t){return a4(n,r.keys,t)}function u1(n,r,t){let o=c4(n,r,t);return An(o)}var C0=d(()=>{ar();ts();Dr()});var os=d(()=>{C0();X0();ts()});function i4(n,r){return Jn("Partial",[Jn(n,r)])}function s4(n){return Jn("Partial",[Yt(n)])}function l4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=hr(n[t]);return r}function f4(n,r){let t=Pn(n,[yn,"$id","required","properties"]),o=l4(r);return Un(o,t)}function b1(n){return n.map((r)=>g1(r))}function g1(n){return gt(n)?i4(n.target,n.parameters):qn(n)?s4(n.$ref):Qn(n)?$r(b1(n.allOf)):_n(n)?En(b1(n.anyOf)):In(n)?f4(n,n.properties):po(n)?n:jt(n)?n:wt(n)?n:xr(n)?n:Xa(n)?n:ht(n)?n:pt(n)?n:Va(n)?n:Ca(n)?n:Un({})}function ye(n,r){if(Xn(n))return _1(n,r);else return z({...g1(n),...r})}var x0=d(()=>{Z();Ao();vt();Nr();Zr();nr();te();Tt();rn();Q0();$n()});function d4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=ye(n[o],Ln(r));return t}function u4(n,r){return d4(n.properties,r)}function _1(n,r){let t=u4(n,r);return An(t)}var Q0=d(()=>{ar();x0();Dr()});var es=d(()=>{Q0();x0()});function b4(n,r){return Jn("Required",[Jn(n,r)])}function g4(n){return Jn("Required",[Yt(n)])}function _4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Pn(n[t],[ur]);return r}function m4(n,r){let t=Pn(n,[yn,"$id","required","properties"]),o=_4(r);return Un(o,t)}function m1(n){return n.map((r)=>w1(r))}function w1(n){return gt(n)?b4(n.target,n.parameters):qn(n)?g4(n.$ref):Qn(n)?$r(m1(n.allOf)):_n(n)?En(m1(n.anyOf)):In(n)?m4(n,n.properties):po(n)?n:jt(n)?n:wt(n)?n:xr(n)?n:Xa(n)?n:ht(n)?n:pt(n)?n:Va(n)?n:Ca(n)?n:Un({})}function na(n,r){if(Xn(n))return h1(n,r);else return z({...w1(n),...r})}var P0=d(()=>{Z();Ao();Nr();Zr();nr();te();rn();Tt();G0();$n()});function w4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=na(n[o],r);return t}function h4(n,r){return w4(n.properties,r)}function h1(n,r){let t=h4(n,r);return An(t)}var G0=d(()=>{ar();P0()});var as=d(()=>{G0();P0()});function $4(n,r){return r.map((t)=>{return qn(t)?O0(n,t.$ref):qr(n,t)})}function O0(n,r){return r in n?qn(n[r])?O0(n,n[r].$ref):qr(n,n[r]):mn()}function A4(n){return je(n[0])}function R4(n){return Ro(n[0],n[1])}function k4(n){return pe(n[0])}function E4(n){return ye(n[0])}function S4(n){return Mo(n[0],n[1])}function M4(n){return Do(n[0],n[1])}function D4(n){return na(n[0])}function H4(n,r,t){let o=$4(n,t);return r==="Awaited"?A4(o):r==="Index"?R4(o):r==="KeyOf"?k4(o):r==="Partial"?E4(o):r==="Omit"?S4(o):r==="Pick"?M4(o):r==="Required"?D4(o):mn()}function z4(n,r){return xe(qr(n,r))}function U4(n,r){return Qe(qr(n,r))}function B4(n,r,t){return Pe(ec(n,r),qr(n,t))}function W4(n,r,t){return Ut(ec(n,r),qr(n,t))}function Y4(n,r){return $r(ec(n,r))}function J4(n,r){return Fe(qr(n,r))}function L4(n,r){return Un(globalThis.Object.keys(r).reduce((t,o)=>{return{...t,[o]:qr(n,r[o])}},{}))}function X4(n,r){let[t,o]=[qr(n,yi(r)),Zi(r)],e=Ve(r);return e.patternProperties[o]=t,e}function V4(n,r){return qn(r)?{...O0(n,r.$ref),[yn]:r[yn]}:r}function C4(n,r){return yr(ec(n,r))}function x4(n,r){return En(ec(n,r))}function ec(n,r){return r.map((t)=>qr(n,t))}function qr(n,r){return Hr(r)?z(qr(n,Pn(r,[ur])),r):Ce(r)?z(qr(n,Pn(r,[ut])),r):mo(r)?z(V4(n,r),r):bt(r)?z(z4(n,r.items),r):jo(r)?z(U4(n,r.items),r):gt(r)?z(H4(n,r.target,r.parameters)):_t(r)?z(B4(n,r.parameters,r.returns),r):mt(r)?z(W4(n,r.parameters,r.returns),r):Qn(r)?z(Y4(n,r.allOf),r):Ko(r)?z(J4(n,r.items),r):In(r)?z(L4(n,r.properties),r):vo(r)?z(X4(n,r)):Gr(r)?z(C4(n,r.items||[]),r):_n(r)?z(x4(n,r.anyOf),r):r}function Q4(n,r){return r in n?qr(n,n[r]):mn()}function $1(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:Q4(n,t)}},{})}var A1=d(()=>{Ft();Bf();Tt();Na();Yi();qa();Fa();Wt();Io();Zr();va();nc();Nr();rs();os();br();es();tc();as();ko();nr();rn();$n()});class R1{constructor(n){let r=$1(n),t=this.WithIdentifiers(r);this.$defs=t}Import(n,r){let t={...this.$defs,[n]:z(this.$defs[n],r)};return z({[G]:"Import",$defs:t,$ref:n})}WithIdentifiers(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:{...n[t],$id:t}}},{})}}function k1(n){return new R1(n)}var E1=d(()=>{Ft();rn();A1()});var N0=d(()=>{E1()});function S1(n,r){return z({[G]:"Not",not:n},r)}var M1=d(()=>{Z();rn()});var q0=d(()=>{M1()});function D1(n,r){return mt(n)?yr(n.parameters,r):mn()}var H1=d(()=>{ko();br();$n()});var F0=d(()=>{H1()});function z1(n,r={}){if(vn(r.$id))r.$id=`T${P4++}`;let t=Ve(n({[G]:"This",$ref:`${r.$id}`}));return t.$id=r.$id,z({[vr]:"Recursive",...t},r)}var P4=0;var U1=d(()=>{hi();Z();rn()});var j0=d(()=>{U1()});function B1(n,r){let t=Wn(n)?new globalThis.RegExp(n):n;return z({[G]:"RegExp",type:"RegExp",source:t.source,flags:t.flags},r)}var W1=d(()=>{Z();rn()});var p0=d(()=>{W1()});function G4(n){return Qn(n)?n.allOf:_n(n)?n.anyOf:Gr(n)?n.items??[]:[]}function Y1(n){return G4(n)}var J1=d(()=>{$n()});var K0=d(()=>{J1()});function L1(n,r){return mt(n)?z(n.returns,r):mn(r)}var X1=d(()=>{Z();br();$n()});var T0=d(()=>{X1()});var V1=()=>{};var C1=()=>{};var x1=d(()=>{V1();C1()});var Q1=()=>{};var P1=d(()=>{Q1()});class G1{constructor(n){this.schema=n}Decode(n){return new O1(this.schema,n)}}class O1{constructor(n,r){this.schema=n,this.decode=r}EncodeTransform(n,r){let e={Encode:(a)=>r[yn].Encode(n(a)),Decode:(a)=>this.decode(r[yn].Decode(a))};return{...r,[yn]:e}}EncodeSchema(n,r){let t={Decode:this.decode,Encode:n};return{...r,[yn]:t}}Encode(n){return mo(this.schema)?this.EncodeTransform(n,this.schema):this.EncodeSchema(n,this.schema)}}function N1(n){return new G1(n)}var q1=d(()=>{rn();$n()});var v0=d(()=>{q1()});function F1(n={}){return z({[G]:n[G]??"Unsafe"},n)}var j1=d(()=>{Z();rn()});var I0=d(()=>{j1()});function p1(n){return z({[G]:"Void",type:"void"},n)}var K1=d(()=>{Z();rn()});var Z0=d(()=>{K1()});var y0={};no(y0,{Void:()=>p1,Uppercase:()=>i1,Unsafe:()=>F1,Unknown:()=>Eo,Union:()=>En,Undefined:()=>Qi,Uncapitalize:()=>a1,Uint8Array:()=>Gi,Tuple:()=>yr,Transform:()=>N1,TemplateLiteral:()=>Hi,Symbol:()=>Ci,String:()=>$t,ReturnType:()=>L1,Rest:()=>Y1,Required:()=>na,RegExp:()=>B1,Ref:()=>Yt,Recursive:()=>z1,Record:()=>Ii,ReadonlyOptional:()=>Ti,Readonly:()=>Br,Promise:()=>Bi,Pick:()=>Do,Partial:()=>ye,Parameters:()=>D1,Optional:()=>hr,Omit:()=>Mo,Object:()=>Un,Number:()=>Ir,Null:()=>Xi,Not:()=>S1,Never:()=>mn,Module:()=>k1,Mapped:()=>Im,Lowercase:()=>o1,Literal:()=>Rn,KeyOf:()=>pe,Iterator:()=>Fe,Intersect:()=>$r,Integer:()=>vw,Instantiate:()=>Kw,InstanceType:()=>Nw,Index:()=>Ro,Function:()=>Ut,Extract:()=>Ze,Extends:()=>ve,Exclude:()=>Ie,Enum:()=>kw,Date:()=>Ji,ConstructorParameters:()=>Aw,Constructor:()=>Pe,Const:()=>hw,Composite:()=>fw,Capitalize:()=>r1,Boolean:()=>Mi,BigInt:()=>Ne,Awaited:()=>je,AsyncIterator:()=>Qe,Array:()=>xe,Argument:()=>bm,Any:()=>$o});var T1=d(()=>{Oa();xf();Na();qa();Yi();Ta();Di();i0();l0();Fa();f0();Li();d0();k0();rc();M0();Io();Wt();D0();z0();U0();Zr();W0();va();nc();zr();ar();N0();br();q0();Vi();yo();Nr();rs();vt();F0();es();os();Wi();re();vi();tc();j0();te();p0();as();K0();T0();qe();xi();Zt();v0();ko();Oi();Pi();nr();Ke();I0();Z0()});var or;var v1=d(()=>{T1();or=y0});var I1=d(()=>{Bf();Ft();zt();Cf();nm();Pa();cm();Ga();rn();Oa();Na();xf();qa();Yi();Ta();Di();i0();l0();Fa();f0();Li();d0();k0();rc();M0();Io();Wt();D0();z0();U0();Zr();va();W0();nc();zr();N0();ar();br();q0();Vi();yo();Nr();rs();vt();F0();es();os();Wi();re();vi();tc();j0();te();p0();as();K0();T0();x1();P1();qe();xi();Zt();v0();ko();Oi();Pi();nr();Ke();I0();Z0();v1()});var nd,rd,$N,AN;var td=d(()=>{I1();nd=or.Object({email:or.String({format:"email"})}),rd=or.Object({token:or.String()}),$N=or.Object({success:or.Boolean(),message:or.Optional(or.String())}),AN=or.Object({success:or.Boolean(),message:or.Optional(or.String()),data:or.Optional(or.Object({user:or.Object({id:or.String(),email:or.String()}),accessToken:or.String(),refreshToken:or.String()}))})});import{eq as od}from"drizzle-orm";import{Elysia as O4}from"elysia";function cs(n,r,t,o,e,a,c,i,s,l){let{db:f,logger:u,usersTable:b}=n,$=r.route||"/auth/magic-link",A=r.verifyRoute||"/auth/magic-link/verify",_=r.expiresIn||"15m",m=r.redirectUrl||"",E=new O4;if(!r.enabled)return E;return E.post($,async(R)=>{if(!f||!b)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return u.error("[AUTH] Magic link requested but email service not available"),{success:!1,message:"Email service not available"};let{email:M}=R.body,x=(await f.select().from(b).where(od(b.email,M)).limit(1))[0];if(!x)return u.info("[AUTH] Magic link requested for non-existent email",{email:M}),{success:!0,message:"If an account exists, a magic link has been sent"};if(x.isLocked)return u.warn("[AUTH] Magic link requested for locked account",{email:M}),{success:!0,message:"If an account exists, a magic link has been sent"};let D=Le(),k=dt(D),B=new Date(Date.now()+Xe(_));await c({userId:x.id,email:M,tokenHash:k,expiresAt:B});let w=m?`${m}?token=${D}`:`${A}?token=${D}`,g=await t.sendMagicLinkEmail(M,w,l);if(!g.success)return u.error("[AUTH] Failed to send magic link email",{email:M,error:g.error}),{success:!1,message:"Failed to send email"};return u.info("[AUTH] Magic link sent",{email:M,userId:x.id}),{success:!0,message:"If an account exists, a magic link has been sent"}},{body:nd,detail:{tags:["Authentication"],summary:"Request Magic Link",description:"Send a magic link to the user's email for passwordless login"}}),E.get(A,async(R)=>{if(!f||!b)return{success:!1,message:"Database not configured"};let M=R.query.token;if(!M)return{success:!1,message:"Token is required"};let S=dt(M),x=await i(S);if(!x)return u.warn("[AUTH] Invalid magic link token"),{success:!1,message:"Invalid or expired token"};if(new Date>x.expiresAt)return await s(S),u.warn("[AUTH] Expired magic link token",{email:x.email}),{success:!1,message:"Invalid or expired token"};let k=(await f.select().from(b).where(od(b.id,x.userId)).limit(1))[0];if(!k)return await s(S),{success:!1,message:"User not found"};await s(S),await f.update(b).set({lastLoginAt:new Date,loginCount:(k.loginCount||0)+1,emailVerified:!0}).where(od(b.id,k.id));let B=R.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||R.request.headers.get("x-real-ip")?.trim()||"unknown",w=R.request.headers.get("user-agent")||"",g=o(k.id),Y=e(k.id),V=await a({userId:k.id,deviceInfo:{ipAddress:B,userAgent:w,deviceType:"unknown"},loginMethod:"magic_link"});return u.info("[AUTH] Magic link login successful",{userId:k.id,email:k.email}),R.set.headers["x-session-id"]=V,{success:!0,data:{user:{id:k.id,email:k.email},accessToken:g,refreshToken:Y}}},{query:rd,detail:{tags:["Authentication"],summary:"Verify Magic Link",description:"Verify magic link token and login user"}}),E}var ed=d(()=>{td();Ba();td()});import{eq as ra}from"drizzle-orm";import{Elysia as N4}from"elysia";function is(n,r,t,o,e){let{db:a,logger:c,usersTable:i}=n,s=r.route||"/auth/me",l=new N4;if(!r.enabled)return l;return l.get(s,async(f)=>{if(!a||!i)return{success:!1,message:"Database not configured"};let u=f.request.headers.get("x-user-id");if(!u)return f.set.status=401,{success:!1,message:"Unauthorized"};let $=(await a.select().from(i).where(ra(i.id,u)).limit(1))[0];if(!$)return f.set.status=404,{success:!1,message:"User not found"};let{password:A,..._}=$,m=null,E=[],R=[],M=[],S=[];if(r.includeProfile&&t){let D=t.profiles;if(D&&a)m=(await a.select().from(D).where(ra(D.userId,u)).limit(1))[0]||null}if(r.includeAddresses&&t){let D=t.addresses;if(D&&a)E=await a.select().from(D).where(ra(D.ownerId,u))}if(r.includePhones&&t){let D=t.phones;if(D&&a)R=await a.select().from(D).where(ra(D.ownerId,u))}if(r.includeFiles&&t){let D=t.files;if(D&&a)M=await a.select().from(D).where(ra(D.uploadedBy,u))}if(r.includeRoles&&t){let{userRoles:D,roles:k}=t;if(D&&k&&a){let w=(await a.select().from(D).where(ra(D.userId,u))).map((g)=>g.roleId);if(w.length>0){let{inArray:g}=await import("drizzle-orm");S=await a.select().from(k).where(g(k.id,w))}}}return c.info("[AUTH] Me endpoint accessed",{userId:u}),JSON.parse(JSON.stringify({success:!0,data:{user:_,profile:m,addresses:E,phones:R,files:M,roles:S}},(D,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"}}),l}var ad=()=>{};import{eq as Er,and as ss}from"drizzle-orm";import{Elysia as q4}from"elysia";function Z1(n,r,t,o,e,a,c,i,s,l,f){let{db:u,logger:b,usersTable:$}=n,A=r.basePath,_={accessTokenName:c?.accessTokenName||"access_token",refreshTokenName:c?.refreshTokenName||"refresh_token",sessionTokenName:c?.sessionTokenName||"session_token",accessTokenMaxAge:c?.accessTokenMaxAge||900,refreshTokenMaxAge:c?.refreshTokenMaxAge||604800,sessionTokenMaxAge:c?.sessionTokenMaxAge||900,secure:c?.secure??!0,httpOnly:c?.httpOnly??!0,sameSite:c?.sameSite||"lax",path:c?.path||"/"},m={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},E=new q4;return E.get(`${A}/:provider`,async(R)=>{let M=R.params.provider;if(!r.isProviderEnabled(M))return R.set.status=404,{success:!1,message:`OAuth provider "${M}" is not enabled`};let S=R.query.link_user_id,x=R.query.redirect_url,D=r.buildAuthorizationUrl(M,S,x);return R.set.status=302,R.set.headers.Location=D,null},{detail:{tags:["Authentication"],summary:"OAuth Redirect",description:"Redirects to the OAuth provider authorization page"}}),E.get(`${A}/:provider/callback`,async(R)=>{let M=R.params.provider,S=R.query,{code:x,state:D,error:k,error_description:B}=S,w=r.errorRedirectUrl;if(k)return b.warn("[OAUTH] Provider returned error",{provider:M,error:k,error_description:B}),R.set.status=302,R.set.headers.Location=`${w}?error=${encodeURIComponent(B||k)}`,null;if(!x||!D)return R.set.status=302,R.set.headers.Location=`${w}?error=missing_code_or_state`,null;let g=r.consumeState(D);if(!g)return b.warn("[OAUTH] Invalid or expired state",{provider:M,state:D}),R.set.status=302,R.set.headers.Location=`${w}?error=invalid_state`,null;if(g.provider!==M)return b.warn("[OAUTH] State provider mismatch",{expected:g.provider,got:M}),R.set.status=302,R.set.headers.Location=`${w}?error=provider_mismatch`,null;if(!u||!$)return R.set.status=302,R.set.headers.Location=`${w}?error=server_error`,null;let Y;try{Y=await r.exchangeCode(M,x)}catch(T){return b.error("[OAUTH] Code exchange failed",{provider:M,error:T}),R.set.status=302,R.set.headers.Location=`${w}?error=token_exchange_failed`,null}let{profile:V,tokens:C}=Y,Q=n.oauthAccountsTable,p=null;if(g.linkUserId&&r.allowAccountLinking){if(p=g.linkUserId,Q){let tn=await u.select().from(Q).where(ss(Er(Q.provider,M),Er(Q.providerAccountId,V.providerAccountId))).limit(1);if(tn.length>0){let Vn=tn[0];if(Vn.userId!==p)return R.set.status=302,R.set.headers.Location=`${w}?error=account_already_linked_to_another_user`,null;await u.update(Q).set({accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,lastUsedAt:new Date}).where(Er(Q.id,Vn.id))}else await u.insert(Q).values({userId:p,provider:M,providerAccountId:V.providerAccountId,providerEmail:V.email??null,providerName:V.name??null,providerAvatarUrl:V.avatarUrl??null,accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,isPrimary:!1,lastUsedAt:new Date})}b.info("[OAUTH] Account linked successfully",{userId:p,provider:M});let T=g.redirectUrl||r.successRedirectUrl;return R.set.status=302,R.set.headers.Location=`${T}?linked=true&provider=${M}`,null}if(Q){let T=await u.select().from(Q).where(ss(Er(Q.provider,M),Er(Q.providerAccountId,V.providerAccountId))).limit(1);if(T.length>0){let tn=T[0];p=tn.userId,await u.update(Q).set({accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,lastUsedAt:new Date}).where(Er(Q.id,tn.id))}}if(!p&&V.email){let T=await u.select().from($).where(Er($.email,V.email)).limit(1);if(T.length>0){if(p=T[0].id,Q)await u.insert(Q).values({userId:p,provider:M,providerAccountId:V.providerAccountId,providerEmail:V.email??null,providerName:V.name??null,providerAvatarUrl:V.avatarUrl??null,accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,isPrimary:!1,lastUsedAt:new Date}).onConflictDoNothing();b.info("[OAUTH] Merged OAuth account with existing user by email",{userId:p,provider:M,email:V.email})}}if(!p){if(!r.autoCreateUser)return R.set.status=302,R.set.headers.Location=`${w}?error=user_not_found`,null;let T=V.email??`${M}_${V.providerAccountId}@oauth.local`;if(p=(await u.insert($).values({email:T,password:null,verifiedAt:V.email?new Date:null,isActive:!0}).returning())[0].id,Q)await u.insert(Q).values({userId:p,provider:M,providerAccountId:V.providerAccountId,providerEmail:V.email??null,providerName:V.name??null,providerAvatarUrl:V.avatarUrl??null,accessToken:C.accessToken,refreshToken:C.refreshToken??null,tokenExpiresAt:C.expiresAt??null,scope:C.scope??null,rawProfile:V.rawProfile,isPrimary:!0,lastUsedAt:new Date});if(b.info("[OAUTH] Created new user via OAuth",{userId:p,provider:M,email:V.email}),r.sendInviteOnCreate&&V.email&&s?.isAvailable()&&l)try{let ot=Le(),ce=dt(ot),On=new Date(Date.now()+Xe("7d"));await l({userId:p,email:V.email,tokenHash:ce,expiresAt:On});let Sn=`${r.successRedirectUrl.replace(/\/$/,"").replace(/\/[^/]+$/,"/set-password")}?token=${ot}`;await s.sendEmail({to:V.email,subject:`Welcome to ${f??"the platform"} \u2014 Set your password`,html:`
61
61
  <p>Hi${V.name?` ${V.name}`:""},</p>
62
62
  <p>Your account has been created via ${M} login. You can optionally set a password to also sign in with your email and password.</p>
63
63
  <p><a href="${Sn}">Set your password</a></p>
64
64
  <p>This link expires in 7 days. If you don't want to set a password, you can always sign in with ${M}.</p>
65
- `}),b.info("[OAUTH] Invite email sent to new OAuth user",{userId:j,email:V.email,provider:M})}catch(ot){b.warn("[OAUTH] Failed to send invite email",{userId:j,error:ot})}}await u.update($).set({lastLoginAt:new Date}).where(kr($.id,j));let L=R.request.headers.get("cf-connecting-ip")?.trim()||R.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||R.request.headers.get("x-real-ip")?.trim()||"127.0.0.1",J=R.request.headers.get("user-agent")||"Unknown Browser",W=di(J,L),X=t(j),O=o(j),F={userId:j,deviceInfo:W,loginMethod:`oauth:${M}`,rememberMe:!0},K=await e(F);if(a)await a(K,F);await b.audit({entityName:"users",entityId:j,operation:"LOGIN",userId:j,summary:`${V.email??V.providerAccountId} logged in via OAuth (${M})`,ipAddress:L,userAgent:J,path:`${A}/${M}/callback`,query:""});let q=_.secure?"; Secure":"",rn=`; Path=${_.path}; HttpOnly; SameSite=${_.sameSite}${q}`,en=[];if(m.accessToken.setHeadersEnabled)en.push(`${_.accessTokenName}=${X}${rn}; Max-Age=${_.accessTokenMaxAge}`);if(m.refreshToken.setHeadersEnabled)en.push(`${_.refreshTokenName}=${O}${rn}; Max-Age=${_.refreshTokenMaxAge}`);if(m.sessionToken.setHeadersEnabled)en.push(`${_.sessionTokenName}=${K}${rn}; Max-Age=${_.sessionTokenMaxAge}`);let gn=g.redirectUrl||r.successRedirectUrl,Gn=new Headers;Gn.set("Location",gn);for(let T of en)Gn.append("Set-Cookie",T);return new Response(null,{status:302,headers:Gn})},{detail:{tags:["Authentication"],summary:"OAuth Callback",description:"Handles the OAuth provider callback, creates session and sets cookies"}}),E.get(`${A}/providers`,()=>{return{success:!0,data:{providers:r.getEnabledProviders()}}},{detail:{tags:["Authentication"],summary:"List OAuth Providers",description:"Returns the list of enabled OAuth providers"}}),E.get(`${A}/link/:provider`,async(R)=>{let M=R.params.provider;if(!r.isProviderEnabled(M))return R.set.status=404,{success:!1,message:`OAuth provider "${M}" is not enabled`};if(!r.allowAccountLinking)return R.set.status=403,{success:!1,message:"Account linking is disabled"};let S=R.request.headers.get("x-user-id");if(!S)return R.set.status=401,{success:!1,message:"Authentication required to link accounts"};let x=R.query.redirect_url,D=r.buildAuthorizationUrl(M,S,x);return R.set.status=302,R.set.headers.Location=D,null},{detail:{tags:["Authentication"],summary:"Link OAuth Account",description:"Redirects to provider to link an OAuth account to the current user"}}),E.delete(`${A}/unlink/:provider`,async(R)=>{let M=R.params.provider,S=R.request.headers.get("x-user-id");if(!S)return R.set.status=401,{success:!1,message:"Authentication required"};if(!u)return R.set.status=500,{success:!1,message:"Database not configured"};let x=n.oauthAccountsTable;if(!x)return R.set.status=500,{success:!1,message:"OAuth accounts table not configured"};if((await u.select().from(x).where(ss(kr(x.userId,S),kr(x.provider,M))).limit(1)).length===0)return{success:!1,message:`No linked ${M} account found`};let w=!!(await u.select().from($).where(kr($.id,S)).limit(1))[0]?.password,g=await u.select().from(x).where(kr(x.userId,S));if(!w&&g.length<=1)return R.set.status=400,{success:!1,message:"Cannot unlink the only login method. Set a password first."};return await u.delete(x).where(ss(kr(x.userId,S),kr(x.provider,M))),b.info("[OAUTH] Account unlinked",{userId:S,provider:M}),{success:!0,message:`${M} account unlinked successfully`}},{detail:{tags:["Authentication"],summary:"Unlink OAuth Account",description:"Removes a linked OAuth account from the current user"}}),E.get(`${A}/accounts`,async(R)=>{let M=R.request.headers.get("x-user-id");if(!M)return R.set.status=401,{success:!1,message:"Authentication required"};if(!u)return R.set.status=500,{success:!1,message:"Database not configured"};let S=n.oauthAccountsTable;if(!S)return{success:!0,data:{accounts:[]}};return{success:!0,data:{accounts:(await u.select().from(S).where(kr(S.userId,M))).map((k)=>({id:k.id,provider:k.provider,providerEmail:k.providerEmail,providerName:k.providerName,providerAvatarUrl:k.providerAvatarUrl,isPrimary:k.isPrimary,lastUsedAt:k.lastUsedAt,createdAt:k.createdAt}))}}},{detail:{tags:["Authentication"],summary:"List Linked OAuth Accounts",description:"Returns all OAuth accounts linked to the current user"}}),E}var y1=d(()=>{ui();Ba()});import{t as Ho}from"elysia";var cd,F4;var id=d(()=>{cd=Ho.Object({currentPassword:Ho.String({minLength:1}),newPassword:Ho.String({minLength:8}),confirmPassword:Ho.String({minLength:8})}),F4=Ho.Object({success:Ho.Boolean(),message:Ho.Optional(Ho.String())})});function n2(n,r){return n===r}import{eq as r2}from"drizzle-orm";import{Elysia as j4}from"elysia";function ls(n,r){let{db:t,logger:o,usersTable:e}=n,a=r.route||"/auth/password-change",c=new j4;if(!r.enabled)return c;return c.post(a,async(i)=>{if(!t||!e)return i.set.status=500,{success:!1,message:"Database not configured"};let s=i.request.headers.get("x-user-id");if(!s)return i.set.status=401,{success:!1,message:"Authentication required"};let{currentPassword:l,newPassword:f,confirmPassword:u}=i.body;if(!n2(f,u))return i.set.status=422,{success:!1,message:"New passwords do not match"};let $=(await t.select().from(e).where(r2(e.id,s)).limit(1))[0];if(!$)return i.set.status=404,{success:!1,message:"User not found"};let A=await fi(l,$.password),_=new URL(i.request.url),m=i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||"unknown",E=i.request.headers.get("user-agent")||"unknown";if(!A)return o.warn("[AUTH] Password change failed - invalid current password",{userId:s}),o.audit({entityName:"users",entityId:s,operation:"PASSWORD_CHANGE_FAILED",userId:s,summary:"Password change failed: invalid current password",ipAddress:m,userAgent:E,path:_.pathname,query:_.search}),i.set.status=400,{success:!1,message:"Current password is incorrect"};let R=await go(f);return await t.update(e).set({password:R,updatedAt:new Date}).where(r2(e.id,s)),o.info("[AUTH] Password change successful",{userId:s}),o.audit({entityName:"users",entityId:s,operation:"PASSWORD_CHANGE",userId:s,summary:"Password changed successfully",ipAddress:m,userAgent:E,path:_.pathname,query:_.search}),{success:!0,message:"Password changed successfully"}},{body:cd,detail:{tags:["Authentication"],summary:"Change Password",description:"Change password for authenticated user"}}),c}var sd=d(()=>{ui();Je();id();id()});import{t as Jt}from"elysia";var ld,fd,p4;var dd=d(()=>{ld=Jt.Object({email:Jt.String({format:"email"})}),fd=Jt.Object({token:Jt.String(),newPassword:Jt.String({minLength:8}),confirmPassword:Jt.String({minLength:8})}),p4=Jt.Object({success:Jt.Boolean(),message:Jt.Optional(Jt.String())})});import{randomBytes as K4}from"crypto";function t2(){return K4(32).toString("hex")}function o2(n){return new Date>n}var e2=()=>{};import{Elysia as T4}from"elysia";function fs(n,r,t,o,e,a){let{db:c,logger:i,usersTable:s}=n,l=r.route||"/auth/password-reset",f=new T4;if(!r.enabled)return f;return f.post(`${l}/request`,async(u)=>{if(!c||!s)return{success:!1,message:"Database not configured"};let{email:b}=u.body,{eq:$}=await import("drizzle-orm"),_=(await c.select().from(s).where($(s.email,b)).limit(1))[0];if(!_)return{success:!0,message:"If email exists, reset link will be sent"};let m=t2(),E=new Date(Date.now()+3600000);if(await t(_.id,m,E),a)try{await a(b,m),i.info("[AUTH] Password reset email sent",{email:b})}catch(M){i.error("[AUTH] Failed to send password reset email",{email:b,error:M})}else i.warn("[AUTH] sendResetEmail not configured - email not sent",{email:b});i.info("[AUTH] Password reset requested",{userId:_.id,email:b});let R=new URL(u.request.url);return i.audit({entityName:"users",entityId:_.id,operation:"PASSWORD_RESET_REQUEST",userId:_.id,summary:`Password reset requested for ${b}`,ipAddress:u.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||u.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:u.request.headers.get("user-agent")||"unknown",path:R.pathname,query:R.search}),{success:!0,message:"If email exists, reset link will be sent"}},{body:ld,detail:{tags:["Authentication"],summary:"Request Password Reset",description:"Request a password reset email"}}),f.post(`${l}/confirm`,async(u)=>{if(!c||!s)return{success:!1,message:"Database not configured"};let{token:b,newPassword:$,confirmPassword:A}=u.body;if($!==A)return{success:!1,message:"Passwords do not match"};let _=await o(b);if(!_)return{success:!1,message:"Invalid or expired reset token"};if(o2(_.expiresAt))return await e(b),{success:!1,message:"Reset token has expired"};let m=await go($),{eq:E}=await import("drizzle-orm");await c.update(s).set({password:m}).where(E(s.id,_.userId)),await e(b),i.info("[AUTH] Password reset successful",{userId:_.userId});let R=new URL(u.request.url);return i.audit({entityName:"users",entityId:_.userId,operation:"PASSWORD_RESET",userId:_.userId,summary:"Password reset completed successfully",ipAddress:u.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||u.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:u.request.headers.get("user-agent")||"unknown",path:R.pathname,query:R.search}),{success:!0,message:"Password has been reset"}},{body:fd,detail:{tags:["Authentication"],summary:"Confirm Password Reset",description:"Reset password with token"}}),f}var ud=d(()=>{Je();dd();e2();dd()});import{t as yt}from"elysia";var bd,v4;var gd=d(()=>{bd=yt.Object({newPassword:yt.String({minLength:8}),userId:yt.Optional(yt.String()),token:yt.Optional(yt.String())}),v4=yt.Object({success:yt.Boolean(),message:yt.String()})});import{eq as a2}from"drizzle-orm";import{Elysia as I4}from"elysia";function ds(n,r,t,o){let{db:e,logger:a,usersTable:c}=n,i=r.route||"/auth/password-set",s=new I4;if(!r.enabled)return s;return s.post(i,async(l)=>{if(a.info("[AUTH] Password set request received"),!e||!c)return a.error("[AUTH] Password set failed - database not configured"),{success:!1,message:"Database not configured"};let{newPassword:f,userId:u,token:b}=l.body,$=u;if(b&&t&&o){let R=dt(b),M=await t(R);if(!M)return a.warn("[AUTH] Password set failed - invalid token"),{success:!1,message:"Invalid or expired token"};if(new Date>M.expiresAt)return await o(R),a.warn("[AUTH] Password set failed - expired token",{email:M.email}),{success:!1,message:"Invalid or expired token"};$=M.userId,a.info("[AUTH] Password set - userId resolved from token",{userId:$,email:M.email})}if(!$)return a.warn("[AUTH] Password set failed - no userId in payload or token"),{success:!1,message:"User ID or token required"};let _=(await e.select().from(c).where(a2(c.id,$)).limit(1))[0];if(a.info("[AUTH] Password set - user found",{found:!!_,hasPassword:!!_?.password}),!_)return{success:!1,message:"User not found"};if(_.password)return a.warn("[AUTH] Password set failed - user already has password",{userId:$}),{success:!1,message:"Password already set. Use password change instead."};let m=await go(f);a.info("[AUTH] Password set - updating user with verifiedAt",{userId:$});let E=await e.update(c).set({password:m,verifiedAt:new Date,updatedAt:new Date}).where(a2(c.id,$));if(a.info("[AUTH] Password set successful for invited user",{userId:$,updateResult:E}),b&&o){let R=dt(b);await o(R),a.info("[AUTH] Invite token consumed after password set",{userId:$})}return{success:!0,message:"Password set successfully"}},{body:bd,detail:{tags:["Authentication"],summary:"Set Password",description:"Set password for the first time (for invited users who do not have a password yet)"}}),s}var _d=d(()=>{Ba();Je();gd();gd()});function md(n){let r=n.match(/^(\d+)([smhd])$/);if(!r)return 900;let t=r[1],o=r[2];if(!t||!o)return 900;let e=parseInt(t,10);switch(o){case"s":return e;case"m":return e*60;case"h":return e*3600;case"d":return e*86400;default:return 900}}import{t as ae}from"elysia";var Z4;var c2=d(()=>{Z4=ae.Object({success:ae.Boolean(),message:ae.Optional(ae.String()),data:ae.Optional(ae.Object({accessToken:ae.String()}))})});import{Elysia as y4}from"elysia";function us(n,r,t,o,e,a,c){let{logger:i,authentication:s}=n,l=r.route||"/auth/refresh",f=new y4;if(!r.enabled)return f;return f.post(l,async(u)=>{let b=s?.refreshToken?.name||"refresh_token",$=s?.accessToken?.name||"access_token",A=u.request.headers.get("x-refresh-token");if(!A){let Q=u.request.headers.get("cookie");if(Q)A=Q.split(";").reduce((L,J)=>{let[W,X]=J.trim().split("=");if(W&&X)L[W]=X;return L},{})[b]||null}if(!A)return u.set.status=401,{success:!1,message:"Refresh token required"};let _=t(A);if(!_.valid||!_.payload)return i.warn("[AUTH] Refresh failed - invalid token"),u.set.status=401,{success:!1,message:"Invalid refresh token"};let m=_.payload.sub,E=o(m),R=e?e(m):null,M=a?.accessToken?.setHeadersEnabled??!0,S=a?.accessToken?.returnJson??!0,x=a?.refreshToken?.setHeadersEnabled??!0,D=a?.refreshToken?.returnJson??!1,k=s?.accessToken?.expiresIn||"15m",B=Math.max(0,md(k)-(c??0)),w=s?.refreshToken?.expiresIn||"7d",g=md(w),Y=new Headers;if(Y.set("Content-Type","application/json"),M)Y.append("Set-Cookie",`${$}=${E}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${B}`);if(R&&x)Y.append("Set-Cookie",`${b}=${R}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${g}`);i.info("[AUTH] Token refresh successful",{userId:m,rotatedRefreshToken:!!R});let V={};if(S)V.accessToken=E;if(R&&D)V.refreshToken=R;let C=JSON.stringify({success:!0,data:V});return new Response(C,{status:200,headers:Y})},{detail:{tags:["Authentication"],summary:"Refresh Token",description:"Get new access token using refresh token"}}),f}var wd=d(()=>{c2()});import{t as Yr}from"elysia";var hd,nE;var $d=d(()=>{hd=Yr.Object({email:Yr.String({format:"email"}),password:Yr.String({minLength:8}),confirmPassword:Yr.Optional(Yr.String({minLength:8}))}),nE=Yr.Object({success:Yr.Boolean(),message:Yr.Optional(Yr.String()),data:Yr.Optional(Yr.Object({user:Yr.Object({id:Yr.String(),email:Yr.String()})}))})});import{eq as rE}from"drizzle-orm";import{Elysia as tE}from"elysia";function bs(n,r,t,o,e,a,c,i,s,l){let{db:f,logger:u,usersTable:b}=n,$=r.route||"/auth/register",A={accessTokenName:c?.accessTokenName||"access_token",refreshTokenName:c?.refreshTokenName||"refresh_token",sessionTokenName:c?.sessionTokenName||"session_token",accessTokenMaxAge:c?.accessTokenMaxAge||900,refreshTokenMaxAge:c?.refreshTokenMaxAge||604800,sessionTokenMaxAge:c?.sessionTokenMaxAge||900,secure:c?.secure??!0,httpOnly:c?.httpOnly??!0,sameSite:c?.sameSite||"strict",path:c?.path||"/"},_=new tE;if(!r.enabled)return _;return _.post($,async(m)=>{if(!f||!b)return m.set.status=500,{success:!1,message:"Database not configured"};let{email:E,password:R,confirmPassword:M}=m.body;if(M&&R!==M)return m.set.status=400,{success:!1,message:"Passwords do not match"};let S=Zg(R);if(!S.valid)return m.set.status=400,{success:!1,message:"Password too weak",errors:S.errors};let x=await f.select().from(b).where(rE(b.email,E)).limit(1),D=new URL(m.request.url),k=m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||m.request.headers.get("x-real-ip")?.trim()||"unknown",B=m.request.headers.get("user-agent")||"unknown";if(x.length>0)return u.warn("[AUTH] Registration failed - email exists",{email:E}),u.audit({entityName:"users",operation:"REGISTER_FAILED",summary:`Registration failed: email already exists (${E})`,ipAddress:k,userAgent:B,path:D.pathname,query:D.search}),m.set.status=409,{success:!1,message:"Email already registered"};let w=await go(R),g=r.emailVerification?.enabled&&s?.isAvailable(),Y=g?ei():null,V=r.emailVerification?.tokenExpiresIn||"24h",C=g?new Date(Date.now()+Ye(V)):null,Q={email:E,password:w};if(g&&Y)Q.emailVerificationToken=Y,Q.emailVerificationTokenExpiresAt=C,Q.emailVerificationSentAt=new Date,Q.emailVerificationAttempts=1;let L=(await f.insert(b).values(Q).returning())[0];if(u.info("[AUTH] Registration successful",{userId:L.id,email:E,emailVerificationEnabled:g}),u.audit({entityName:"users",entityId:L.id,operation:"REGISTER",userId:L.id,summary:`New user registered: ${E}`,ipAddress:k,userAgent:B,path:D.pathname,query:D.search}),g&&s&&Y){let W=`${(r.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${Y}`;s.sendVerificationEmail(E,E.split("@")[0]||"User",W,l||"Nucleus").then((K)=>{if(K.success)u.info("[AUTH] Verification email sent",{email:E});else u.error("[AUTH] Failed to send verification email",{email:E,error:K.error})}).catch((K)=>{u.error("[AUTH] Failed to send verification email",{email:E,error:K})});let X=r.emailVerification?.resendCooldown||"60s",O=Ye(X)/1000,F=r.emailVerification?.maxResendAttempts||3;return{success:!0,message:"Registration successful. Please check your email to verify your account.",data:{user:{id:L.id,email:L.email},emailVerificationRequired:!0,verification:{cooldownSeconds:O,canResendAt:new Date(Date.now()+O*1000).toISOString(),attemptsRemaining:F-1,maxAttempts:F}}}}if(t)t(E,E.split("@")[0]||"User").catch((J)=>{u.error("[AUTH] Failed to send welcome email",{email:E,error:J})});if(o&&e&&a){let J=m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||m.request.headers.get("x-real-ip")?.trim()||"unknown",W=m.request.headers.get("user-agent")||"",X=o(L.id),O=e(L.id),F=await a({userId:L.id,deviceInfo:{ipAddress:J,userAgent:W},loginMethod:"register"}),K={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},q=A.secure?"; Secure":"",rn=`; Path=${A.path}; HttpOnly; SameSite=${A.sameSite}${q}`,en=[];if(K.accessToken.setHeadersEnabled)en.push(`${A.accessTokenName}=${X}${rn}; Max-Age=${A.accessTokenMaxAge}`);if(K.refreshToken.setHeadersEnabled)en.push(`${A.refreshTokenName}=${O}${rn}; Max-Age=${A.refreshTokenMaxAge}`);if(K.sessionToken.setHeadersEnabled)en.push(`${A.sessionTokenName}=${F}${rn}; Max-Age=${A.sessionTokenMaxAge}`);let gn={user:{id:L.id,email:L.email}};if(K.accessToken.returnJson)gn.accessToken=X;if(K.refreshToken.returnJson)gn.refreshToken=O;if(K.sessionToken.returnJson)gn.sessionId=F;let Gn=JSON.stringify({success:!0,data:gn}),T=new Headers;T.set("Content-Type","application/json"),T.set("x-session-id",F);for(let tn of en)T.append("Set-Cookie",tn);return new Response(Gn,{status:200,headers:T})}return{success:!0,data:{user:{id:L.id,email:L.email}}}},{body:hd,detail:{tags:["Authentication"],summary:"Register",description:"Register a new user account"}}),_}var Ad=d(()=>{$d();Je();$d()});import{t as I}from"elysia";var i2,oE,Rd,kd,zq;var Ed=d(()=>{i2=I.Object({id:I.String(),deviceName:I.Optional(I.String()),deviceType:I.Optional(I.String()),browserName:I.Optional(I.String()),browserVersion:I.Optional(I.String()),osName:I.Optional(I.String()),osVersion:I.Optional(I.String()),ipAddress:I.String(),locationCountry:I.Optional(I.String()),locationCity:I.Optional(I.String()),lastActivityAt:I.String(),createdAt:I.String(),isCurrent:I.Boolean(),loginMethod:I.Optional(I.String()),trustScore:I.Optional(I.Number())}),oE=I.Object({success:I.Boolean(),data:I.Optional(I.Object({sessions:I.Array(i2),currentSessionId:I.Optional(I.String()),totalCount:I.Number()})),message:I.Optional(I.String())}),Rd=I.Object({reason:I.Optional(I.String())}),kd=I.Object({excludeCurrent:I.Optional(I.Boolean()),reason:I.Optional(I.String())}),zq=I.Object({success:I.Boolean(),data:I.Optional(I.Object({recentActivity:I.Array(I.Object({sessionId:I.String(),action:I.String(),ipAddress:I.String(),timestamp:I.String(),deviceInfo:I.Optional(I.String())}))})),message:I.Optional(I.String())})});function gs(n){let r=(o,e)=>n[o]??n[e],t=(o,e)=>{let a=n[o]??n[e];if(!a)return;return a instanceof Date?a.toISOString():String(a)};return{id:n.id,deviceName:r("device_name","deviceName"),deviceType:r("device_type","deviceType"),deviceFingerprint:r("device_fingerprint","deviceFingerprint"),browserName:r("browser_name","browserName"),browserVersion:r("browser_version","browserVersion"),osName:r("os_name","osName"),osVersion:r("os_version","osVersion"),ipAddress:r("ip_address","ipAddress"),locationCountry:r("location_country","locationCountry"),locationCity:r("location_city","locationCity"),lastActivityAt:t("last_activity_at","lastActivityAt"),createdAt:t("created_at","createdAt"),isCurrent:r("is_current","isCurrent"),loginMethod:r("login_method","loginMethod"),trustScore:r("trust_score","trustScore")}}var s2=()=>{};import{and as zo,desc as l2,eq as Fn,isNull as f2}from"drizzle-orm";import{Elysia as eE}from"elysia";function _s(n,r,t){let{db:o,logger:e}=n,a=r.route||"/auth/sessions",c=new eE;if(!r.enabled||!t)return c;let i=t,s=(l)=>{let f=l.replace(/([A-Z])/g,"_$1").toLowerCase();return i[l]||i[f]};return c.get(a,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let u=l.request.headers.get("x-session-id"),b=await o.select().from(t).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0),f2(s("revokedAt")))).orderBy(l2(s("lastActivityAt"))),$=b.filter((_)=>{let m=_,E=(m.deviceFingerprint||"").toLowerCase(),R=m.ipAddress||"";return!((!E||E==="--"||E==="--unknown"||E.includes("bot/crawler")||E.includes("headless")||E.includes("unknown-unknown"))&&(R==="127.0.0.1"||R==="::1"||R==="localhost"||!R))}),A=$.map((_)=>{let m=_,E=gs(m);return E.isCurrent=m.id===u,E});return e.info("[AUTH] Sessions list retrieved",{userId:f,totalInDb:b.length,filteredCount:$.length,hiddenBotSessions:b.length-$.length}),{success:!0,data:{sessions:A,currentSessionId:u,totalCount:$.length}}},{detail:{tags:["Authentication"],summary:"List active sessions",description:"Get all active sessions for the current user"}}),c.get(`${a}/current`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id"),u=l.request.headers.get("x-session-id");if(!f||!u)return{success:!1,message:"Authentication required"};let b=await o.select().from(t).where(Fn(s("id"),u)).limit(1);if(b.length===0)return{success:!1,message:"Session not found"};let $=b[0],A=gs($);return A.isCurrent=!0,{success:!0,data:A}},{detail:{tags:["Authentication"],summary:"Get current session",description:"Get details of the current session"}}),c.delete(`${a}/:sessionId`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let{sessionId:u}=l.params,b=l.body,$=l.request.headers.get("x-session-id");if((await o.select().from(t).where(zo(Fn(s("id"),u),Fn(s("userId"),f))).limit(1)).length===0)return{success:!1,message:"Session not found"};let _=u===$;await o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:_?"user_logout":b.reason||"user_revoked"}).where(Fn(s("id"),u)),e.info("[AUTH] Session revoked",{userId:f,sessionId:u,isCurrentSession:_,reason:b.reason||"user_revoked"});let m=new URL(l.request.url);return e.audit({entityName:"user_sessions",entityId:u,operation:_?"LOGOUT":"SESSION_REVOKE",userId:f||void 0,summary:_?"User logged out via session revoke":`Session revoked (${u.substring(0,8)}...)`,ipAddress:l.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||l.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:l.request.headers.get("user-agent")||"unknown",path:m.pathname,query:m.search}),{success:!0,message:_?"Logged out successfully":"Session revoked successfully"}},{body:Rd,detail:{tags:["Authentication"],summary:"Revoke session",description:"Revoke a specific session by ID"}}),c.delete(`${a}/all`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let u=l.body,b=l.request.headers.get("x-session-id"),$=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:u.reason||"user_revoked"}).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0)));if(u.excludeCurrent&&b){let{ne:_}=await import("drizzle-orm");$=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:u.reason||"user_revoked"}).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0),_(s("id"),b)))}await $,e.info("[AUTH] All sessions revoked",{userId:f,excludeCurrent:u.excludeCurrent,reason:u.reason||"user_revoked"});let A=new URL(l.request.url);return e.audit({entityName:"user_sessions",operation:"SESSION_REVOKE_ALL",userId:f||void 0,summary:u.excludeCurrent?"All other sessions revoked":"All sessions revoked",ipAddress:l.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||l.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:l.request.headers.get("user-agent")||"unknown",path:A.pathname,query:A.search}),{success:!0,message:u.excludeCurrent?"All other sessions revoked successfully":"All sessions revoked successfully"}},{body:kd,detail:{tags:["Authentication"],summary:"Revoke all sessions",description:"Revoke all sessions for the current user (optionally exclude current)"}}),c.get(`${a}/stats`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let{count:u,countDistinct:b}=await import("drizzle-orm"),$=await o.select({count:u()}).from(t).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0),f2(s("revokedAt")))),A=await o.select({count:b(s("deviceFingerprint"))}).from(t).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0))),_=await o.select({count:b(s("ipAddress"))}).from(t).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0)));return{success:!0,data:{activeSessions:$[0]?.count||0,uniqueDevices:A[0]?.count||0,uniqueIpAddresses:_[0]?.count||0}}},{detail:{tags:["Authentication"],summary:"Session statistics",description:"Get session statistics for the current user"}}),c.post(`${a}/approve`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let{token:f}=l.body;if(!f)return{success:!1,message:"Token is required"};let u=await o.select().from(t).where(Fn(s("approvalToken"),f)).limit(1);if(u.length===0)return{success:!1,message:"Invalid or expired approval token"};let b=u[0];if(b.approvalStatus!=="pending")return{success:!1,message:"Session already processed"};return await o.update(t).set({approvalStatus:"approved",isActive:!0,approvalRespondedAt:new Date,approvalToken:null}).where(Fn(s("id"),b.id)),e.info("[AUTH] Device approved",{sessionId:b.id,userId:b.userId}),{success:!0,message:"Device approved successfully"}},{detail:{tags:["Authentication"],summary:"Approve pending device",description:"Approve a pending device login request"}}),c.post(`${a}/reject`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let{token:f}=l.body;if(!f)return{success:!1,message:"Token is required"};let u=await o.select().from(t).where(Fn(s("approvalToken"),f)).limit(1);if(u.length===0)return{success:!1,message:"Invalid or expired approval token"};let b=u[0];if(b.approvalStatus!=="pending")return{success:!1,message:"Session already processed"};return await o.update(t).set({approvalStatus:"rejected",isActive:!1,revokedAt:new Date,revokedReason:"user_rejected",approvalRespondedAt:new Date,approvalToken:null}).where(Fn(s("id"),b.id)),e.info("[AUTH] Device rejected",{sessionId:b.id,userId:b.userId}),{success:!0,message:"Device rejected and blocked"}},{detail:{tags:["Authentication"],summary:"Reject pending device",description:"Reject a pending device login request"}}),c.get(`${a}/pending`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let u=await o.select().from(t).where(zo(Fn(s("userId"),f),Fn(s("approvalStatus"),"pending"))).orderBy(l2(s("createdAt")));return{success:!0,data:{sessions:u.map(($)=>{let A=$;return{...gs(A),approvalStatus:A.approval_status||A.approvalStatus,approvalToken:A.approval_token||A.approvalToken,approvalRequestedAt:A.approval_requested_at?.toISOString()||A.approvalRequestedAt?.toISOString()}}),totalCount:u.length}}},{detail:{tags:["Authentication"],summary:"List pending devices",description:"Get all pending device approval requests for the current user"}}),c}var Sd=d(()=>{Ed();s2();Ed()});var u2={};no(u2,{createSessionsRoute:()=>_s,createRegisterRoute:()=>bs,createRefreshRoute:()=>us,createPasswordSetRoute:()=>ds,createPasswordResetRoute:()=>fs,createPasswordChangeRoute:()=>ls,createMeRoute:()=>is,createMagicLinkRoute:()=>cs,createLogoutRoute:()=>_i,createLoginRoute:()=>bi,createInviteRoute:()=>li,createEmailVerificationRoutes:()=>ii,createAuthRoutes:()=>d2});function d2(n,r){let{authConfig:t,features:o,helpers:e}=r;if(r.oauthAccountsTable)t.oauthAccountsTable=r.oauthAccountsTable;let a=t.authentication?.cookieMaxAgeBufferSeconds??0,c={accessTokenName:t.authentication?.accessToken?.name||"access_token",refreshTokenName:t.authentication?.refreshToken?.name||"refresh_token",sessionTokenName:t.authentication?.sessionToken?.name||"session_token",accessTokenMaxAge:Math.max(0,at(t.authentication?.accessToken?.expiresIn||"15m")-a),refreshTokenMaxAge:at(t.authentication?.refreshToken?.expiresIn||"7d"),sessionTokenMaxAge:at(t.authentication?.sessionToken?.expiresIn||"30d")};if(t.logger.info("[AUTH] Cookie config created",{accessTokenMaxAge:c.accessTokenMaxAge,refreshTokenMaxAge:c.refreshTokenMaxAge,sessionTokenMaxAge:c.sessionTokenMaxAge,accessTokenExpiresIn:t.authentication?.accessToken?.expiresIn,sessionTokenExpiresIn:t.authentication?.sessionToken?.expiresIn}),o.login?.enabled){let i=bi(t,o.login,e.signAccessToken,e.signRefreshToken,e.createSession,e.saveSessionToDb,c,r.tokenResponseConfig);n.use(i)}if(o.register?.enabled){let i=bs(t,o.register,e.sendWelcomeEmail,e.signAccessToken,e.signRefreshToken,e.createSession,c,r.tokenResponseConfig,r.emailService,r.appName);if(n.use(i),o.register.emailVerification?.enabled){let s=ii({authConfig:t,registerConfig:o.register,emailService:r.emailService,appName:r.appName});n.use(s)}}if(o.logout?.enabled){let i=_i(t,o.logout,e.destroySession,e.revokeSessionInDb);n.use(i)}if(o.refresh?.enabled){let i=us(t,o.refresh,e.verifyRefreshToken,e.signAccessToken,e.signRefreshToken,r.tokenResponseConfig,a);n.use(i)}if(o.passwordReset?.enabled&&e.storeResetToken&&e.getResetToken&&e.deleteResetToken){let i=fs(t,o.passwordReset,e.storeResetToken,e.getResetToken,e.deleteResetToken,e.sendResetEmail);n.use(i)}if(o.passwordChange?.enabled){let i=ls(t,o.passwordChange);n.use(i)}if(o.passwordSet?.enabled){let i=ds(t,o.passwordSet,e.getMagicToken,e.deleteMagicToken);n.use(i)}if(o.sessions?.enabled&&r.sessionsTable){let i=_s(t,o.sessions,r.sessionsTable);n.use(i)}if(o.magicLink?.enabled&&r.emailService?.isAvailable()&&e.storeMagicToken&&e.getMagicToken&&e.deleteMagicToken){let i=cs(t,o.magicLink,r.emailService,e.signAccessToken,e.signRefreshToken,e.createSession,e.storeMagicToken,e.getMagicToken,e.deleteMagicToken,r.appName);n.use(i)}if(o.me?.enabled){let i=is(t,o.me,r.schemaTables||{},r.schemaRelations||{},r.databaseUrl);n.use(i)}if(o.invite?.enabled&&r.emailService?.isAvailable()&&e.storeMagicToken){let i=li(t,o.invite,r.emailService,e.storeMagicToken,r.appName,e.getMagicToken);n.use(i)}if(o.captcha?.enabled&&r.captchaService){let i=vg({captchaService:r.captchaService,logger:t.logger,basePath:o.captcha.route||"/auth/captcha"});n.use(i)}if(o.oauth?.enabled&&o.oauth.providers){let i=new Vc(o.oauth),s=Z1(t,i,e.signAccessToken,e.signRefreshToken,e.createSession,e.saveSessionToDb,c,r.tokenResponseConfig,r.emailService,e.storeMagicToken,r.appName);n.use(s)}return n}var Md=d(()=>{Ul();Kc();Ig();hf();$f();Ef();Sf();ed();ad();y1();sd();ud();_d();wd();Ad();Sd();hf();$f();Ef();Sf();ed();ad();sd();ud();_d();wd();Ad();Sd()});import{batch as hs,createStore as w2}from"h-state";import{useEffectEvent as h2}from"react";function $2(n){let r={};for(let t of Object.keys(n))r[t]={isPending:!1,data:null,error:null,code:null};return r}function A2(n,r){let{useStore:t}=w2($2(n),{_callEndpoint:(o)=>async(e,a)=>{if(!o[e])return;hs(()=>{o[e].isPending=!0,o[e].error=null});try{let i=await r(e,a.payload);if(hs(()=>{if(o[e].isPending=!1,o[e].code=i.code??null,i.isSuccess&&i.data!==void 0)o[e].data=i.data,o[e].error=null;else o[e].error=i.errors??null}),i.isSuccess)a.onAfterHandle?.(i.data??i);else a.onErrorHandle?.(i.errors??{message:"Request failed"},i.code)}catch(i){hs(()=>{o[e].isPending=!1,o[e].error={message:i instanceof Error?i.message:"Unknown error"}}),a.onErrorHandle?.({message:i instanceof Error?i.message:"Unknown error"},null)}}});return function(){let e=t(),a=h2((i,s)=>{e._callEndpoint(i,s)}),c={};for(let i of Object.keys(n)){let s=(l)=>{a(i,l)};c[i]={state:e[i],start:s}}return c}}var Ud={$schema:"../schemas/nucleus.tables.schema.json",tables:[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"email_verification_token",type:"varchar",length:255},{name:"email_verification_token_expires_at",type:"timestamp"},{name:"email_verification_sent_at",type:"timestamp"},{name:"email_verification_attempts",type:"integer",default:0},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"remember_me",type:"boolean",notNull:!0,default:!1},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]},{table_name:"oauth_accounts",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!1,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"provider",type:"varchar",length:50,notNull:!0,enumValues:["google","github","microsoft","discord","facebook","twitter","apple","custom"]},{name:"provider_account_id",type:"varchar",length:255,notNull:!0},{name:"provider_email",type:"varchar",length:255},{name:"provider_name",type:"varchar",length:255},{name:"provider_avatar_url",type:"text"},{name:"access_token",type:"text"},{name:"refresh_token",type:"text"},{name:"token_expires_at",type:"timestamp"},{name:"scope",type:"text"},{name:"raw_profile",type:"jsonb"},{name:"is_primary",type:"boolean",notNull:!0,default:!1},{name:"last_used_at",type:"timestamp"}],indexes:[{columns:["user_id"]},{columns:["provider","provider_account_id"],unique:!0},{columns:["provider_email"]},{columns:["user_id","provider"]}],constraints:{unique:[{name:"unique_provider_account",columns:["provider","provider_account_id"]}]}}]};var $s={login:{key:"LOGIN",method:"POST",defaultRoute:"/auth/login",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},register:{key:"REGISTER",method:"POST",defaultRoute:"/auth/register",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},logout:{key:"LOGOUT",method:"POST",defaultRoute:"/auth/logout",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},refresh:{key:"REFRESH",method:"POST",defaultRoute:"/auth/refresh",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},me:{key:"ME",method:"GET",defaultRoute:"/auth/me",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordChange:{key:"PASSWORD_CHANGE",method:"POST",defaultRoute:"/auth/password-change",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordSet:{key:"PASSWORD_SET",method:"POST",defaultRoute:"/auth/password-set",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordReset:{key:"PASSWORD_RESET_REQUEST",method:"POST",defaultRoute:"/auth/password-reset",defaultIsPublic:!0,subEndpoints:[{key:"PASSWORD_RESET_REQUEST",method:"POST",suffix:"/request",_payload:void 0,_success:void 0,_error:void 0},{key:"PASSWORD_RESET_CONFIRM",method:"POST",suffix:"/confirm",_payload:void 0,_success:void 0,_error:void 0}]},sessions:{key:"SESSIONS",method:"GET",defaultRoute:"/auth/sessions",defaultIsPublic:!1,subEndpoints:[{key:"SESSIONS",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_CURRENT",method:"GET",suffix:"/current",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_STATS",method:"GET",suffix:"/stats",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_PENDING",method:"GET",suffix:"/pending",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE",method:"DELETE",suffix:"/:sessionId",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE_ALL",method:"DELETE",suffix:"/all",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_APPROVE",method:"POST",suffix:"/approve",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REJECT",method:"POST",suffix:"/reject",_payload:void 0,_success:void 0,_error:void 0}]},magicLink:{key:"MAGIC_LINK",method:"POST",defaultRoute:"/auth/magic-link",defaultIsPublic:!0,subEndpoints:[{key:"MAGIC_LINK",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"MAGIC_LINK_VERIFY",method:"GET",suffix:"/verify",routeKey:"verifyRoute",_payload:void 0,_success:void 0,_error:void 0}]},invite:{key:"INVITE",method:"POST",defaultRoute:"/auth/invite",defaultIsPublic:!1,subEndpoints:[{key:"INVITE",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"INVITE_VERIFY",method:"POST",suffix:"/verify",_payload:void 0,_success:void 0,_error:void 0}]},emailVerification:{key:"VERIFY_EMAIL",method:"GET",defaultRoute:"/verify-email",defaultIsPublic:!0,subEndpoints:[{key:"VERIFY_EMAIL",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"RESEND_VERIFICATION",method:"POST",suffix:"",routeKey:"resendRoute",defaultRoute:"/resend-verification",_payload:void 0,_success:void 0,_error:void 0}]},captcha:{key:"CAPTCHA",method:"GET",defaultRoute:"/auth/captcha",defaultIsPublic:!0,subEndpoints:[{key:"CAPTCHA_GENERATE",method:"GET",suffix:"/generate",_payload:void 0,_success:void 0,_error:void 0},{key:"CAPTCHA_VALIDATE",method:"POST",suffix:"/validate",_payload:void 0,_success:void 0,_error:void 0}]},oauth:{key:"OAUTH_PROVIDERS",method:"GET",defaultRoute:"/auth/oauth/providers",defaultIsPublic:!0,subEndpoints:[{key:"OAUTH_PROVIDERS",method:"GET",suffix:"/providers",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_REDIRECT",method:"GET",suffix:"/:provider",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_ACCOUNTS",method:"GET",suffix:"/accounts",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_UNLINK",method:"DELETE",suffix:"/unlink/:provider",_payload:void 0,_success:void 0,_error:void 0}]}},Bd={healthCheck:{key:"MONITORING_HEALTH_CHECK",method:"GET",suffix:"/health",_payload:void 0,_success:void 0,_error:void 0},getSettings:{key:"MONITORING_GET_SETTINGS",method:"GET",suffix:"/settings",_payload:void 0,_success:void 0,_error:void 0},changeSettings:{key:"MONITORING_CHANGE_SETTINGS",method:"PATCH",suffix:"/settings",_payload:void 0,_success:void 0,_error:void 0},getLogs:{key:"MONITORING_GET_LOGS",method:"GET",suffix:"/logs",_payload:void 0,_success:void 0,_error:void 0}};var k2=["profiles","addresses","phones","files","users","roles","claims","user_roles","role_claims","audit_logs"],E2=Ud.tables.filter((n)=>k2.includes(n.table_name));function le(n){return n.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toUpperCase()}function S2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function As(n){if(n.endsWith("ies"))return`${n.slice(0,-3)}y`;if(n.endsWith("ses"))return`${n.slice(0,-2)}`;if(n.endsWith("s"))return n.slice(0,-1);return n}function kt(n,r){let t=le(n),o=le(As(n));switch(r){case"GET":return`GET_${t}`;case"POST":return`ADD_${o}`;case"PUT":return`UPDATE_${o}`;case"PATCH":return`PATCH_${o}`;case"DELETE":return`DELETE_${o}`}}function se(n,r){let t=le(n);switch(r){case"POST":return`BULK_ADD_${t}`;case"PUT":return`BULK_UPDATE_${t}`;case"DELETE":return`BULK_DELETE_${t}`}}function ro(n,r){if(!n.excluded_methods)return!1;let t={GET:"GET",POST:"POST",PUT:"PUT",PATCH:"PATCH",DELETE:"DELETE"};return n.excluded_methods.includes(t[r])}function Wd(n){let r={};for(let t of n.entities){let o=t.table_name,e=`/${o}`;if(!ro(t,"GET")){r[kt(o,"GET")]={method:"GET",path:e,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0};let a=le(As(o));r[`GET_${a}_BY_ID`]={method:"GET",path:`${e}/:id`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0},r[`GET_${le(o)}_DISTINCT`]={method:"GET",path:`${e}/distinct/:field`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0}}if(!ro(t,"POST"))r[kt(o,"POST")]={method:"POST",path:e,isPublic:t.is_public?.POST??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"PUT"))r[kt(o,"PUT")]={method:"PUT",path:`${e}/:id`,isPublic:t.is_public?.PUT??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"PATCH"))r[kt(o,"PATCH")]={method:"PATCH",path:`${e}/:id`,isPublic:t.is_public?.PATCH??!1,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"DELETE"))r[kt(o,"DELETE")]={method:"DELETE",path:`${e}/:id`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0};if(t.bulk_endpoints_enabled){if(!ro(t,"POST"))r[se(o,"POST")]={method:"POST",path:`${e}/bulk`,isPublic:t.is_public?.POST??!1,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"PUT"))r[se(o,"PUT")]={method:"PUT",path:`${e}/bulk`,isPublic:t.is_public?.PUT??!1,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"DELETE"))r[se(o,"DELETE")]={method:"DELETE",path:`${e}/bulk`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0}}}return r}function Yd(n){let r={},t=n.authentication;if(!t?.enabled)return r;for(let[o,e]of Object.entries($s)){let a=t[o];if(!a?.enabled)continue;let c=a.route||e.defaultRoute,i=a.isPublic??e.defaultIsPublic;if("subEndpoints"in e&&e.subEndpoints)for(let s of e.subEndpoints){let l="routeKey"in s&&s.routeKey&&a[s.routeKey]?String(a[s.routeKey]):("defaultRoute"in s)&&s.defaultRoute?String(s.defaultRoute):`${c}${s.suffix}`;r[s.key]={method:s.method,path:l,isPublic:s.key==="MAGIC_LINK_VERIFY"?!0:i,_payload:s._payload,_success:s._success,_error:s._error}}else if("_payload"in e)r[e.key]={method:e.method,path:c,isPublic:i,_payload:e._payload,_success:e._success,_error:e._error}}return r}function Jd(){let n={};for(let r of E2){let t=r.table_name,e=`/${S2(t)}`,a=t==="files";n[kt(t,"GET")]={method:"GET",path:e,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0};let c=le(As(t));if(n[`GET_${c}_BY_ID`]={method:"GET",path:`${e}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[kt(t,"POST")]={method:"POST",path:e,isPublic:!1,isFormData:a,_payload:void 0,_success:void 0,_error:void 0},n[kt(t,"PUT")]={method:"PUT",path:`${e}/:id`,isPublic:!1,isFormData:a,_payload:void 0,_success:void 0,_error:void 0},n[kt(t,"PATCH")]={method:"PATCH",path:`${e}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[kt(t,"DELETE")]={method:"DELETE",path:`${e}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.bulk_endpoints_enabled)n[se(t,"POST")]={method:"POST",path:`${e}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[se(t,"PUT")]={method:"PUT",path:`${e}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[se(t,"DELETE")]={method:"DELETE",path:`${e}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0}}return n}function Ld(n){let r={},t=n.liveMonitoring;if(!t?.enabled)return r;let o=t.basePath||"/monitoring";for(let e of Object.values(Bd))r[e.key]={method:e.method,path:`${o}${e.suffix}`,isPublic:!1,_payload:e._payload,_success:e._success,_error:e._error};return r}function M2(n,r){let t=Wd(n),o=Yd(n),e=Jd(),a=Ld(n);return{...t,...o,...e,...a,...r??{}}}Bs();import{randomUUID as B2}from"crypto";var W2={timeout:30000,retries:0,retryDelay:1000,debug:!1};class ea{config;logger;constructor(n={}){this.config={...W2,...n},this.logger=new Jr({service:"ServerFetch",prettyPrint:this.config.debug,colorize:this.config.debug,auditEnabled:!1})}buildUrl(n){if(n.startsWith("http://")||n.startsWith("https://"))return n;return this.config.baseUrl?`${this.config.baseUrl}${n}`:n}buildHeaders(n){let r=new Headers;if(this.config.defaultHeaders)for(let[t,o]of Object.entries(this.config.defaultHeaders))r.set(t,o);if(n)if(n instanceof Headers)n.forEach((t,o)=>{r.set(o,t)});else if(Array.isArray(n))for(let[t,o]of n)r.set(t,o);else for(let[t,o]of Object.entries(n))r.set(t,o);return r}parseResponseHeaders(n){let r={};if(n.forEach((t,o)=>{if(o.toLowerCase()==="set-cookie"){let e=r[o];r[o]=e?`${e}, ${t}`:t}else r[o]=t}),typeof n.getSetCookie==="function"){let t=n.getSetCookie();if(t.length>0)r["set-cookie"]=t.join(", ")}return r}async executeWithTimeout(n,r,t){let o=new AbortController,e=setTimeout(()=>o.abort(),r);try{return await Promise.race([n,new Promise((c,i)=>{o.signal.addEventListener("abort",()=>{i(Error(`Request timeout after ${r}ms`))})})])}finally{clearTimeout(e)}}async fetch(n){let r=B2(),t=performance.now(),o=this.buildUrl(n.url),e=this.buildHeaders(n.headers),a=n.timeout??this.config.timeout??30000,c=n.retries??this.config.retries??0,i=n.retryDelay??this.config.retryDelay??1000,s;if(n.body)if(typeof n.body==="object"&&!(n.body instanceof FormData)&&!(n.body instanceof URLSearchParams)&&!(n.body instanceof Blob)&&!(n.body instanceof ArrayBuffer)){if(s=JSON.stringify(n.body),!e.has("content-type"))e.set("content-type","application/json")}else s=n.body;this.logger.debug(`[${r}] ${n.method} ${o}`,{method:n.method,url:o,hasBody:!!s});let l=null,f=0;while(f<=c)try{let b=await this.executeWithTimeout(fetch(o,{method:n.method,headers:e,body:s}),a,r),$=performance.now()-t,A=this.parseResponseHeaders(b.headers),_,m,E=await b.text();if(E)try{let M=JSON.parse(E);if(b.ok)_=M;else m=M}catch{if(!b.ok)m={message:E||b.statusText}}else if(!b.ok)m={message:b.statusText};let R={isSuccess:b.ok,response:_,errors:m,code:b.status,headers:A,durationMs:$,requestId:r,createdAt:new Date};if(b.ok)this.logger.info(`[${r}] ${n.method} ${o} ${b.status}`,{method:n.method,url:o,statusCode:b.status,durationMs:Math.round($)});else this.logger.warn(`[${r}] ${n.method} ${o} ${b.status}`,{method:n.method,url:o,statusCode:b.status,durationMs:Math.round($),error:m});return R}catch(b){if(l=b instanceof Error?b:Error(String(b)),f++,f<=c)this.logger.warn(`[${r}] Retry ${f}/${c} after error`,{method:n.method,url:o,error:l.message,attempt:f,retries:c}),await new Promise(($)=>setTimeout($,i))}let u=performance.now()-t;return this.logger.error(`[${r}] ${n.method} ${o} failed`,l,{method:n.method,url:o,durationMs:Math.round(u),attempts:f}),{isSuccess:!1,response:void 0,errors:{message:l?.message||"Unknown error"},code:null,headers:{},durationMs:u,requestId:r,createdAt:new Date}}async get(n,r){return this.fetch({...r,url:n,method:"GET"})}async post(n,r,t){return this.fetch({...t,url:n,method:"POST",body:r})}async put(n,r,t){return this.fetch({...t,url:n,method:"PUT",body:r})}async patch(n,r,t){return this.fetch({...t,url:n,method:"PATCH",body:r})}async delete(n,r){return this.fetch({...r,url:n,method:"DELETE"})}}var Y2=new ea;var J2={accessToken:"access_token",refreshToken:"refresh_token",sessionToken:"session_token"};function L2(n){let r=[],t="";for(let o=0;o<n.length;o++){let e=n[o];if(e===","){let a=n.slice(o+1).trimStart();if(/^[a-zA-Z0-9_-]+=/.test(a)){r.push(t.trim()),t="";continue}}t+=e}if(t.trim())r.push(t.trim());return r}function X2(n,r){let t={},o=["x-forwarded-for","x-real-ip","user-agent","accept-language","x-request-id","x-client-ip","cf-connecting-ip","true-client-ip"];for(let s of o){let l=n.get(s);if(l)t[s]=l}if(!t["user-agent"])t["user-agent"]="Nucleus-ServerAction/1.0";let e=n.get(`x-${r.accessToken}`),a=n.get(`x-${r.refreshToken}`),c=n.get(`x-${r.sessionToken}`);if(e)t[`x-${r.accessToken}`]=e;if(a)t[`x-${r.refreshToken}`]=a;if(c)t[`x-${r.sessionToken}`]=c;let i=n.get("cookie");if(i)t.cookie=i;return t}function V2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function xd(n){let r={};for(let[t,o]of Object.entries(n)){let e=t.startsWith("_")?t:V2(t);if(o instanceof Date)r[e]=o.toISOString();else if(o&&typeof o==="object"&&!Array.isArray(o))r[e]=xd(o);else r[e]=o}return r}function C2(n,r){let t=new URLSearchParams,o=(a,c)=>{if(c===void 0||c===null)return;if(Array.isArray(c))for(let i of c)o(`${a}[]`,i);else if(c instanceof Date)t.append(a,c.toISOString());else if(typeof c==="object")for(let[i,s]of Object.entries(c))o(`${a}[${i}]`,s);else t.append(a,String(c))};for(let[a,c]of Object.entries(r))o(a,c);let e=t.toString();if(!e)return n;return n.includes("?")?`${n}&${e}`:`${n}?${e}`}function x2(n,r,t,o){let e={...J2,...r.tokenNames},a=new ea({baseUrl:r.baseUrl,debug:r.debug,timeout:30000,retries:0});return async function(i,s){let l=n[i];if(!l)return{isSuccess:!1,errors:{message:`Endpoint "${i}" not found`},code:404};let f=await t(),u=await o(),b={};u.forEach((R,M)=>{b[M]=R});let $=X2(u,e),A=l.path,_;if(s&&typeof s==="object"&&!(s instanceof FormData)){let R=s;for(let[M,S]of Object.entries(R))if(S!=null){if(M.startsWith("_"))A=A.replace(`:${M.substring(1)}`,String(S));else if(M==="id"&&A.includes(":id"))A=A.replace(":id",String(S))}}if(l.method==="GET"&&s&&typeof s==="object")A=C2(A,s);else if(s!==void 0){if(l.isFormData&&s instanceof FormData)_=s;else if(_=xd(s),!$["content-type"])$["content-type"]="application/json"}let m=await a.fetch({url:A,method:l.method,headers:$,body:_});if(m.headers["set-cookie"])try{let R=m.headers["set-cookie"],M=L2(R);for(let S of M){let[x,...D]=S.split(";");if(!x)continue;let[k,B]=x.split("=");if(k&&B){let w={};for(let g of D){let[Y,V]=g.trim().split("=");if(!Y)continue;let C=Y.toLowerCase();if(C==="path")w.path=V;else if(C==="max-age")w.maxAge=Number(V);else if(C==="expires"&&V)w.expires=new Date(V);else if(C==="httponly")w.httpOnly=!0;else if(C==="secure")w.secure=!0;else if(C==="samesite")w.sameSite=V}f.set(k.trim(),B.trim(),w)}}}catch(R){console.warn("[ServerFactory] Failed to process Set-Cookie headers:",R instanceof Error?R.message:String(R))}let E=m.response;if(m.isSuccess&&E&&typeof E==="object"&&!Array.isArray(E)){let R=E;if("success"in R&&!("data"in R)){let{success:M,message:S,error:x,...D}=R;E={success:M,...S!==void 0?{message:S}:{},...x!==void 0?{error:x}:{},...Object.keys(D).length>0?{data:D}:{}}}}return{isSuccess:m.isSuccess,data:E,errors:m.errors,code:m.code,message:m.isSuccess?void 0:m.errors?.message}}}import{useEffect as Qd,useEffectEvent as Bo,useRef as aa}from"react";import{batch as Q2,createStore as P2}from"h-state";var G2={connection:{status:"disconnected",clientId:null,subscribedTopics:[],error:null,reconnectAttempt:0},events:[],maxEvents:100},{useStore:Ws}=P2(G2,{setConnectionStatus:(n)=>(r)=>{n.connection.status=r},setClientId:(n)=>(r)=>{n.connection.clientId=r},setSubscribedTopics:(n)=>(r)=>{n.connection.subscribedTopics=r},setError:(n)=>(r)=>{n.connection.error=r},setReconnectAttempt:(n)=>(r)=>{n.connection.reconnectAttempt=r},addEvent:(n)=>(r)=>{let t=[r,...n.events];n.events=t.slice(0,n.maxEvents)},clearEvents:(n)=>()=>{n.events=[]},reset:(n)=>()=>{Q2(()=>{n.connection.status="disconnected",n.connection.clientId=null,n.connection.subscribedTopics=[],n.connection.error=null,n.connection.reconnectAttempt=0,n.events=[]})}});function O2(n){if(n.wsUrl){let a=n.wsUrl.replace(/\/$/,""),c=n.wsPath||"/api/events/subscribe",i=(n.topics||["*"]).join(",");return`${a}${c}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(i)}`}if(typeof window>"u")return"";let r=window.location.protocol==="https:"?"wss:":"ws:",t=window.location.host,o=n.wsPath||"/api/events/subscribe",e=(n.topics||["*"]).join(",");return`${r}//${t}${o}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(e)}`}var N2=0;function q2(n){let r=Ws(),t=aa(null),o=aa(null),e=aa(null),a=aa(!1),c=aa(n);c.current=n;let i=n.autoReconnect??!0,s=n.maxReconnectAttempts??10,l=n.reconnectBaseDelay??1000,f=n.reconnectMaxDelay??30000,u=n.heartbeatInterval??30000,b=n.debug??!1,$=(...B)=>{if(b)console.log("[usePubSub]",...B)},A=()=>{if(o.current)clearInterval(o.current),o.current=null},_=()=>{if(e.current)clearTimeout(e.current),e.current=null},m=(B)=>{A(),o.current=setInterval(()=>{if(B.readyState===WebSocket.OPEN)B.send(JSON.stringify({type:"ping"}))},u)},E=Bo((B)=>{try{let w=JSON.parse(B.data);switch(w.type){case"connected":r.setConnectionStatus("connected"),r.setClientId(w.clientId),r.setSubscribedTopics(w.subscribedTopics),r.setReconnectAttempt(0),r.setError(null),$("Connected, clientId:",w.clientId);break;case"subscribed":r.setSubscribedTopics(w.topics),$("Subscribed to:",w.topics);break;case"event":{let g={id:`evt_${Date.now()}_${N2++}`,topic:w.topic,data:w.data,timestamp:w.timestamp,receivedAt:Date.now(),messageId:w.messageId,isRedelivery:w.isRedelivery};if(r.addEvent(g),w.messageId&&t.current?.readyState===WebSocket.OPEN)t.current.send(JSON.stringify({type:"ack",messageId:w.messageId}));break}case"pong":break;case"error":r.setError(Error(w.error)),$("Server error:",w.error);break}}catch{$("Failed to parse message")}}),R=Bo((B)=>{if(a.current)return;if(!i)return;if(B>=s){r.setConnectionStatus("disconnected"),r.setError(Error("Max reconnection attempts reached")),$("Max reconnect attempts reached");return}let w=Math.min(l*2**B,f);$(`Reconnecting in ${w}ms (attempt ${B+1}/${s})`),r.setConnectionStatus("reconnecting"),r.setReconnectAttempt(B+1),_(),e.current=setTimeout(()=>{if(!a.current)M()},w)}),M=Bo(()=>{if(a.current)return;if(t.current?.readyState===WebSocket.OPEN)return;if(!c.current.userId)return;if(t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}let B=O2(c.current);if(!B)return;r.setConnectionStatus("connecting"),r.setError(null),$("Connecting to:",B);let w=new WebSocket(B);t.current=w,w.onopen=()=>{$("WebSocket opened"),m(w)},w.onmessage=E,w.onerror=()=>{$("WebSocket error"),r.setError(Error("WebSocket connection error"))},w.onclose=(g)=>{if($("WebSocket closed",g.code,g.reason),A(),r.setConnectionStatus("disconnected"),r.setClientId(null),!a.current&&g.code!==4001){let Y=r.connection.reconnectAttempt;R(Y)}}}),S=Bo(()=>{if(A(),_(),t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}r.setConnectionStatus("disconnected"),r.setClientId(null)}),x=Bo((B)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"subscribe",topics:B}))}),D=Bo((B)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"unsubscribe",topics:B}))}),k=Bo((B)=>{return r.events.filter((w)=>w.topic===B)});return Qd(()=>{if(a.current=!1,n.userId)M();return()=>{a.current=!0,S()}},[n.userId]),Qd(()=>{if(r.connection.status==="connected"&&n.topics)x(n.topics)},[n.topics?.join(",")]),{isConnected:r.connection.status==="connected",isConnecting:r.connection.status==="connecting"||r.connection.status==="reconnecting",clientId:r.connection.clientId,subscribedTopics:r.connection.subscribedTopics,events:r.events,error:r.connection.error,reconnectAttempt:r.connection.reconnectAttempt,connect:M,disconnect:S,subscribe:x,unsubscribe:D,clearEvents:r.clearEvents,getEventsByTopic:k}}import{randomUUID as aE}from"crypto";var xs=Ar(Nd(),1);import{Elysia as uc,NotFoundError as de}from"elysia";var jr,to,Lt=typeof Bun<"u"&&!!Bun.file;function fe(){if(jr||(jr=process.getBuiltinModule("fs/promises")),to||(to=process.getBuiltinModule("path")),!to){console.warn("@elysiajs/static require path to be available.");return}return[jr,to]}async function qd(n){if(jr||fe(),Lt){let r=new Bun.Glob("**/*.html"),t=[];for await(let o of r.scan(n))t.push(to.join(n,o));return t}return[]}async function Js(n){if(jr||fe(),Lt){let t=new Bun.Glob("**/*"),o=[];for await(let e of t.scan(n))o.push(to.join(n,e));return o}let r=await jr.readdir(n).catch(()=>[]);return(await Promise.all(r.map(async(t)=>{let o=n+to.sep+t,e=await jr.stat(o).catch(()=>null);return e?e.isDirectory()?await Js(o):[to.resolve(n,o)]:[]}))).flat()}function Ls(n){return jr||fe(),jr.stat(n).then(()=>!0,()=>!1)}class Xs{constructor(n=250,r=10800){this.max=n,this.ttl=r,this.map=new Map}get(n){let r=this.map.get(n);if(r)return r[1]<=Date.now()?void this.delete(n):(this.map.delete(n),this.map.set(n,r),r[0])}set(n,r){if(this.interval||(this.interval=setInterval(()=>{let t=Date.now();for(let[o,e]of this.map)e[1]<=t&&this.map.delete(o)},this.ttl)),this.map.has(n))this.map.delete(n);else if(this.map.size>=this.max){let t=this.map.keys().next().value;t!==void 0&&this.delete(t)}this.map.set(n,[r,Date.now()+this.ttl*1000])}delete(n){this.map.get(n)&&this.map.delete(n)}clear(){this.map.clear()}size(){return this.map.size}[Symbol.dispose](){this.interval&&clearInterval(this.interval)}}function Vs(n,r,t){if(n["cache-control"]&&/no-cache|no-store/.test(n["cache-control"]))return!1;if("if-none-match"in n){let o=n["if-none-match"];return o==="*"?!0:o===null||typeof r!="string"?!1:o===r}if(n["if-modified-since"]){let o=n["if-modified-since"];try{return jr.stat(t).then((e)=>{if(e.mtime!==void 0&&e.mtime.getTime()<=Date.parse(o))return!0})}catch{}}return!1}var dc;function ca(n){return Lt?Bun.file(n):(jr||fe(),jr.readFile(n))}async function Cs(n){return Lt?new Bun.CryptoHasher("md5").update(await n.arrayBuffer()).digest("base64"):(dc||(dc=process.getBuiltinModule("crypto")),dc?dc.createHash("md5").update(n).digest("base64"):void console.warn("[@elysiajs/static] crypto is required to generate etag."))}var ia=(n)=>{if(!n)return!1;for(let r in n)return!0;return!1};async function Fd({assets:n="public",prefix:r="/public",staticLimit:t=1024,alwaysStatic:o=!1,ignorePatterns:e=[".DS_Store",".git",".env"],headers:a,maxAge:c=86400,directive:i="public",etag:s=!0,extension:l=!0,indexHTML:f=!0,decodeURI:u,silent:b}={}){if(typeof process>"u"||typeof process.getBuiltinModule>"u")return b||console.warn("[@elysiajs/static] require process.getBuiltinModule. Static plugin is disabled"),new uc;let $=fe();if(!$)return new uc;let[A,_]=$,m=_.sep!=="/"?(D)=>D.replace(/\\/g,"/"):(D)=>D,E=new Xs;r===_.sep&&(r="");let R=_.resolve(n),M=e.length?(D)=>e.find((k)=>typeof k=="string"?k.includes(D):k.test(D)):()=>!1,S=new uc({name:"static",seed:r});if(o){let D=await Js(_.resolve(n));if(D.length<=t)for(let k of D){let B=function({headers:C}){if(V){let L=Vs(C,V,k);if(L===!0)return new Response(null,{status:304,headers:ia(a)?a:void 0});if(L!==!1){let J=E.get(g);return J?J.clone():L.then((W)=>{if(W)return new Response(null,{status:304,headers:a||void 0});let X=new Response(Y,{headers:Object.assign({"Cache-Control":c?`${i}, max-age=${c}`:i},a,V?{Etag:V}:{})});return E.set(r,X),X.clone()})}}let Q=E.get(g);if(Q)return Q.clone();let j=new Response(Y,{headers:Object.assign({"Cache-Control":c?`${i}, max-age=${c}`:i},a,V?{Etag:V}:{})});return E.set(g,j),j.clone()};var x=B;if(!k||M(k))continue;let w=k.replace(R,"");u&&(w=xs.default(w)??w);let g=m(_.join(r,w));if(Lt&&k.endsWith(".html")){let C=await import(k);S.get(g,C.default),f&&g.endsWith("/index.html")&&S.get(g.replace("/index.html",""),C.default);continue}l||(g=m(g.slice(0,g.lastIndexOf("."))));let Y=Lt?ca(k):await ca(k);if(!Y)return b||console.warn(`[@elysiajs/static] Failed to load file: ${k}`),new uc;let V=await Cs(Y);S.get(g,s?B:new Response(Y,ia(a)?{headers:a}:void 0)),f&&g.endsWith("/index.html")&&S.get(g.replace("/index.html",""),s?B:new Response(Y,ia(a)?{headers:a}:void 0))}return S}if(!(`GET_${r}/*`in S.routeTree)){if(Lt){let D=await qd(_.resolve(n));for(let k of D){if(!k||M(k))continue;let B=k.replace(R,""),w=m(_.join(r,B)),g=await import(k);S.get(w,g.default),f&&w.endsWith("/index.html")&&S.get(w.replace("/index.html",""),g.default)}}S.onError(()=>{}).get(`${r.endsWith("/")?r.slice(0,-1):r}/*`,async({params:D,headers:k})=>{let B=m(_.join(n,u?xs.default(D["*"])??D["*"]:D["*"]));if(M(B))throw new de;let w=E.get(B);if(w)return w.clone();try{let g=await A.stat(B).catch(()=>null);if(!g)throw new de;if(!f&&g.isDirectory())throw new de;let Y;if(!Lt&&f){let Q=_.join(B,"index.html"),j=E.get(Q);if(j)return j.clone();await Ls(Q)&&(Y=await ca(Q))}if(!Y&&!g.isDirectory()&&await Ls(B))Y=await ca(B);else throw new de;if(!s)return new Response(Y,ia(a)?{headers:a}:void 0);let V=await Cs(Y);if(V&&await Vs(k,V,B))return new Response(null,{status:304});let C=new Response(Y,{headers:Object.assign({"Cache-Control":c?`${i}, max-age=${c}`:i},a,V?{Etag:V}:{})});return E.set(B,C),C.clone()}catch(g){throw g instanceof de?g:(b||console.error("[@elysiajs/static]",g),new de)}})}return S}Jl();Sl();import{pushSchema as cE}from"drizzle-kit/api";import{and as ac,eq as br}from"drizzle-orm";import{drizzle as iE}from"drizzle-orm/node-postgres";import{pgSchema as sE}from"drizzle-orm/pg-core";import lE from"elysia";var Sb=[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],bulk_endpoints_enabled:!0,columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]}];var $h={GET:["GET"],POST:["POST"],PUT:["PUT"],DELETE:["DELETE"],PATCH:["PATCH"],TOGGLE:["PATCH"],VERIFICATION:["POST"]};function Ah(n,r){let t=[],o=n.authentication;if(!o)return t;if(o.login?.enabled&&o.login?.isPublic)t.push({path:o.login.route||`${r}/auth/login`,method:"POST",source:"auth"});if(o.register?.enabled&&o.register?.isPublic)t.push({path:o.register.route||`${r}/auth/register`,method:"POST",source:"auth"});if(o.logout?.enabled&&o.logout?.isPublic)t.push({path:o.logout.route||`${r}/auth/logout`,method:"POST",source:"auth"});if(o.refresh?.enabled&&o.refresh?.isPublic)t.push({path:o.refresh.route||`${r}/auth/refresh`,method:"POST",source:"auth"});if(o.passwordReset?.enabled&&o.passwordReset?.isPublic){let e=o.passwordReset.route||`${r}/auth/password-reset`;t.push({path:`${e}/request`,method:"POST",source:"auth"},{path:`${e}/confirm`,method:"POST",source:"auth"})}if(o.passwordChange?.enabled&&o.passwordChange?.isPublic)t.push({path:o.passwordChange.route||`${r}/auth/password-change`,method:"POST",source:"auth"});if(o.magicLink?.enabled&&o.magicLink?.isPublic)t.push({path:o.magicLink.route||`${r}/auth/magic-link`,method:"POST",source:"auth"},{path:o.magicLink.verifyRoute||`${r}/auth/magic-link/verify`,method:"GET",source:"auth"});if(o.register?.enabled&&o.register?.emailVerification?.enabled)t.push({path:`${r}/verify-email`,method:"GET",source:"auth"},{path:`${r}/resend-verification`,method:"POST",source:"auth"});if(o.invite?.enabled&&o.invite?.isPublic)t.push({path:o.invite.route||`${r}/auth/invite`,method:"POST",source:"auth"});if(o.invite?.enabled){let e=o.invite.route||`${r}/auth/invite`;t.push({path:`${e}/verify`,method:"POST",source:"auth"})}if(o.passwordSet?.enabled)t.push({path:o.passwordSet.route||`${r}/auth/password-set`,method:"POST",source:"auth"});if(o.captcha?.enabled&&o.captcha?.isPublic){let e=o.captcha.route||`${r}/auth/captcha`;t.push({path:`${e}/generate`,method:"GET",source:"auth"},{path:`${e}/validate`,method:"POST",source:"auth"})}if(o.oauth?.enabled){let e=o.oauth.basePath||`${r}/auth/oauth`,a=["google","github","microsoft","discord","facebook","twitter","apple","custom"];t.push({path:`${e}/providers`,method:"GET",source:"auth"});for(let c of a)t.push({path:`${e}/${c}`,method:"GET",source:"auth"},{path:`${e}/${c}/callback`,method:"GET",source:"auth"})}return t}function Mb(n,r,t){let o=[];for(let e of n){if(!e.is_public)continue;let a=`${r}/${t}/${e.table_name}`;for(let[c,i]of Object.entries(e.is_public)){if(!i)continue;let s=$h[c];if(!s)continue;for(let l of s)if(l==="GET")o.push({path:a,method:"GET",source:"entity"}),o.push({path:`${a}/:id`,method:"GET",source:"entity"});else if(l==="POST")o.push({path:a,method:"POST",source:"entity"});else if(l==="PUT"||l==="PATCH")o.push({path:`${a}/:id`,method:l,source:"entity"});else if(l==="DELETE")o.push({path:`${a}/:id`,method:"DELETE",source:"entity"})}}return o}function Rh(n,r,t){return Mb(n,r,t)}function Ll(n,r,t="",o="public"){let e=Ah(n,t),a=Mb(n.entities||[],t,o),c=Rh(r,t,o),i=[];if(n.pubsub?.enabled){let l=n.pubsub.basePath||"/subs",f=n.pubsub.wsPath||"/api/events/subscribe";i.push({path:`${l}/:topic`,method:"POST",source:"system"},{path:f,method:"GET",source:"system"})}let s=[{path:"/nucleus-core",method:"GET",source:"custom"},{path:"/public",method:"GET",source:"custom"},{path:"/docs",method:"GET",source:"custom"},{path:"/docs/json",method:"GET",source:"custom"},{path:"/swagger",method:"GET",source:"custom"},{path:"/swagger/json",method:"GET",source:"custom"}];return[...e,...a,...c,...i,...s]}function Xl(n,r,t){let o=r.replace(/\/$/,""),e=t.toUpperCase();for(let a of n){if(a.method!==e)continue;if(kh(a.path,o))return!0}return!1}function kh(n,r){if(n===r)return!0;let t=n.split("/").filter(Boolean),o=r.split("/").filter(Boolean);if(t.length!==o.length)return!1;for(let e=0;e<t.length;e++){let a=t[e],c=o[e];if(a?.startsWith(":"))continue;if(a!==c)return!1}return!0}Rl();Kc();Ic();import{asc as r5,desc as t5,eq as Sr,ilike as lg,inArray as o5,notInArray as e5,or as a5}from"drizzle-orm";import{drizzle as c5}from"drizzle-orm/node-postgres";import{Elysia as i5,t as Cn}from"elysia";import{t as Nn}from"elysia";function nf(n){let r={};if(!n||n.length===0)return Nn.Object({},{additionalProperties:!0});for(let t of n)switch(t.type?.toLowerCase()||"string"){case"integer":case"int":case"serial":case"bigserial":case"numeric":case"decimal":r[t.name]=t.notNull?Nn.Number():Nn.Optional(Nn.Number());break;case"boolean":r[t.name]=t.notNull?Nn.Boolean():Nn.Optional(Nn.Boolean());break;case"timestamp":case"timestamptz":case"date":r[t.name]=t.notNull?Nn.String({format:"date-time"}):Nn.Optional(Nn.String({format:"date-time"}));break;case"json":case"jsonb":r[t.name]=Nn.Optional(Nn.Unknown());break;case"uuid":r[t.name]=t.notNull?Nn.String({format:"uuid"}):Nn.Optional(Nn.String({format:"uuid"}));break;default:r[t.name]=t.notNull?Nn.String():Nn.Optional(Nn.String())}return Nn.Object(r,{additionalProperties:!0})}function sg(n){return Nn.Array(Nn.Object({id:Nn.String(),data:nf(n)}))}function rf(n,r){let{db:t,schemaTables:o,schemaRelations:e,entities:a,logger:c,databaseUrl:i,storage:s,authorization:l}=r,f=ma(s),u=l?.enabled??!1;if(!t)return n;let b=Object.keys(o),$=a.map((S)=>S.table_name),A=b.filter((S)=>!$.includes(S)),_=["userSessions","passwordResetTokens","magicLinkTokens"],m=["passwordResetTokens","magicLinkTokens"],E=["files"],R=A.filter((S)=>{if(m.includes(S)&&!r.emailServiceAvailable)return c.info(`Skipping ${S} routes - email service not available`),!1;return!0}).map((S)=>({table_name:S,group_name:_.includes(S)?"Authentication":S,is_form_data:E.includes(S)})),M=[...a,...R];c.info(`All entities: ${M.map((S)=>S.table_name).join(", ")}`);for(let S of M){let x=S.table_name,D=S.group_name||S.table_name,k=o[x];if(!k)continue;let B=e[`${x}Relations`];c.info(`Creating routes for table: ${x}`);let w=k,g=w.id,Y=t,V=nf(S.columns),C=Cn.Array(V),Q=sg(S.columns),j=Cn.Array(Cn.String()),L=new i5({prefix:`/${x}`});if(!S.excluded_methods?.includes("GET"))L.get("/",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.request.headers.get("x-user-id"),X=S.columns?.map((On)=>On.name),O=Object.keys(e).filter((On)=>On.startsWith(`${S.table_name}Relations`)).map((On)=>On.replace("Relations","")),F=null;if(u&&W){if(F=await Al({userId:W,method:"GET",entity:S.table_name,requestedFields:X,requestedRelations:O,db:Y,schemaTables:o,logger:c}),!F.authorized)return{success:!1,message:F.reason||"Unauthorized",status:403}}let K=Kl(J.query),q=[];if(u&&F?.scopeFilters)for(let[On,an]of Object.entries(F.scopeFilters)){let Sn=w[On];if(Sn)q.push(Sr(Sn,an))}if(K.search&&K.searchFields){let On=K.searchFields.map((an)=>{let Sn=w[an.trim()];return Sn?lg(Sn,`%${K.search}%`):null}).filter((an)=>an!==null);if(On.length>0){let an=a5(...On);if(an)q.push(an)}}if(K.filters){let{ne:On,gt:an,gte:Sn,lt:Er,lte:Fr,like:Uo,isNull:ie,isNotNull:ms}=await import("drizzle-orm");for(let gr of K.filters){let sr=w[gr.field];if(!sr)continue;switch(gr.operator){case"eq":q.push(Sr(sr,gr.value));break;case"neq":q.push(On(sr,gr.value));break;case"gt":q.push(an(sr,gr.value));break;case"gte":q.push(Sn(sr,gr.value));break;case"lt":q.push(Er(sr,gr.value));break;case"lte":q.push(Fr(sr,gr.value));break;case"like":q.push(Uo(sr,gr.value));break;case"ilike":q.push(lg(sr,gr.value));break;case"in":q.push(o5(sr,gr.value));break;case"notIn":q.push(e5(sr,gr.value));break;case"isNull":q.push(ie(sr));break;case"isNotNull":q.push(ms(sr));break}}}let rn=Y.select().from(k);if(q.length>0){let{and:On}=await import("drizzle-orm"),an=On(...q);if(an)rn=rn.where(an)}if(K.sort&&K.sort.length>0){let On=K.sort.map((an)=>{let Sn=w[an.field];if(!Sn)return null;return an.direction==="desc"?t5(Sn):r5(Sn)}).filter((an)=>an!==null);if(On.length>0)rn=rn.orderBy(...On)}let en=K.page??1,gn=K.limit??20,Gn=K.offset??(en-1)*gn,T=Y.select().from(k);if(q.length>0){let{and:On}=await import("drizzle-orm"),an=On(...q);if(an)T.where(an)}let Vn=(await T).length;rn=rn.limit(gn).offset(Gn);let ot=await rn,ce=ng(en,gn,Gn,Vn);if(u&&F?.allowedFields)ot=Jc(ot,F.allowedFields);return{success:!0,data:{items:ot,meta:ce}}},{detail:{tags:[D],summary:`List ${x}`,description:`Get paginated list of ${x} records with filtering, sorting, and search`}}),L.get("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.params,X=Kl(J.query),O=J.request.headers.get("x-user-id"),F=S.columns?.map((gn)=>gn.name),K=X.with?.map((gn)=>gn.name),q=null;if(u&&O){if(q=await Al({userId:O,method:"GET",entity:S.table_name,requestedFields:F,requestedRelations:K,db:Y,schemaTables:o,logger:c}),!q.authorized)return{success:!1,message:q.reason||"Unauthorized",status:403}}if(X.with&&X.with.length>0&&B&&i){let gn=u&&q?.allowedRelations?X.with.filter((tn)=>q.allowedRelations?.includes(tn.name)??!1):X.with,T=await c5(i,{schema:{...o,...e}}).query[S.table_name]?.findFirst({where:Sr(g,W.id),with:gn.reduce((tn,Vn)=>{return tn[Vn.name]=Vn.limit?{limit:Vn.limit}:!0,tn},{})});if(u&&q?.allowedFields&&T)T=Jc(T,q.allowedFields);if(u&&q?.allowedRelations&&T)T=pu(T,q.allowedRelations);return{success:!0,data:T||null}}let en=(await Y.select().from(k).where(Sr(g,W.id)))[0]||null;if(u&&q?.allowedFields&&en)en=Jc(en,q.allowedFields);return{success:!0,data:en}},{detail:{tags:[D],summary:`Get ${x} by ID`,description:`Get a single ${x} record by its ID with optional relations`}}),L.get("/distinct/:field",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.params,X=w[W.field];if(!X)return{success:!1,message:"Field not found"};return{success:!0,data:await Y.selectDistinct({value:X}).from(k)}},{detail:{tags:[D],summary:`Get distinct ${x} values`,description:`Get distinct values for a specific field in ${x}`}});if(!S.excluded_methods?.includes("POST"))if(S.is_form_data&&f.enabled)L.post("/",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.request.headers.get("x-user-id"),{data:X,files:O}=wa(J.body,f),F=X;if(S.columns){F=_e(F,S.columns);let rn=ge(F,S.columns,!1);if(!rn.valid)return{success:!1,message:"Validation failed",errors:rn.errors}}let K=null;if(O.length>0){if(K=await ha(O,f,S.table_name),K.failed.length>0&&K.success.length===0)return{success:!1,message:"File upload failed",errors:K.failed};if(K.success.length>0){let rn=K.success[0];if(rn){let en=rn.originalName.split(".").pop()||"";F={...F,id:rn.id,name:rn.name,originalName:rn.originalName,path:rn.path,mimeType:rn.mimeType,size:rn.size,extension:en,uploadedBy:W}}}}if(W)F.createdBy=W;let q=await Y.insert(k).values(F).returning();{let rn=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:String(q[0]?.id??""),operation:"CREATE",userId:W||void 0,summary:`Created ${S.table_name}`,newValues:q[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:rn.pathname,query:rn.search})}return{success:!0,data:q[0]}},{type:"formdata",body:Cn.Object({[f.formData.dataField]:Cn.Optional(Cn.Union([Cn.String(),Cn.Any()])),[f.formData.filesField]:Cn.Optional(Cn.Union([Cn.File(),Cn.Array(Cn.File())]))}),detail:{tags:[D],summary:`Create ${x} with files`,description:`Create a new ${x} record with file upload support`}});else L.post("/",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.body,X=J.request.headers.get("x-user-id");if(S.columns){W=_e(W,S.columns);let F=ge(W,S.columns,!1);if(!F.valid)return{success:!1,message:"Validation failed",errors:F.errors}}if(X)W.createdBy=X;let O=await Y.insert(k).values(W).returning();{let F=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:String(O[0]?.id??""),operation:"CREATE",userId:X||void 0,summary:`Created ${S.table_name}`,newValues:O[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:F.pathname,query:F.search})}return{success:!0,data:O[0]}},{body:V,detail:{tags:[D],summary:`Create ${x}`,description:`Create a new ${x} record`}});if(!S.excluded_methods?.includes("PUT"))if(S.is_form_data&&f.enabled)L.put("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.params,X=J.request.headers.get("x-user-id"),{data:O,files:F}=wa(J.body,f),K=O,q=await Y.select().from(k).where(Sr(g,W.id)).limit(1);if(S.columns){K=_e(K,S.columns);let gn=ge(K,S.columns,!1);if(!gn.valid)return{success:!1,message:"Validation failed",errors:gn.errors}}let rn=null;if(F.length>0)rn=await ha(F,f,S.table_name);let en=await Y.update(k).set(K).where(Sr(g,W.id)).returning();{let gn=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:W.id,operation:"UPDATE",userId:X||void 0,summary:`Updated ${S.table_name} (${W.id})`,oldValues:q[0],newValues:en[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:gn.pathname,query:gn.search})}return{success:!0,data:{record:en[0],files:rn?.success||[],fileErrors:rn?.failed||[]}}},{type:"formdata",body:Cn.Object({[f.formData.dataField]:Cn.Optional(Cn.Union([Cn.String(),Cn.Any()])),[f.formData.filesField]:Cn.Optional(Cn.Union([Cn.File(),Cn.Array(Cn.File())]))}),detail:{tags:[D],summary:`Update ${x} with files`,description:`Full update of ${x} record with file upload support`}});else L.put("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let{params:W,body:X}=J,O=J.request.headers.get("x-user-id"),F=await Y.select().from(k).where(Sr(g,W.id)).limit(1);if(S.columns){X=_e(X,S.columns);let q=ge(X,S.columns,!1);if(!q.valid)return{success:!1,message:"Validation failed",errors:q.errors}}if(X.updatedAt=new Date,O)X.updatedBy=O;let K=await Y.update(k).set(X).where(Sr(g,W.id)).returning();{let q=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:W.id,operation:"UPDATE",userId:O||void 0,summary:`Updated ${S.table_name} (${W.id})`,oldValues:F[0],newValues:K[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:q.pathname,query:q.search})}return{success:!0,data:K[0]}},{body:V,detail:{tags:[D],summary:`Update ${x}`,description:`Full update of ${x} record`}});if(!S.excluded_methods?.includes("PATCH"))L.patch("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let{params:W,body:X}=J,O=J.request.headers.get("x-user-id"),F=await Y.select().from(k).where(Sr(g,W.id)).limit(1);if(S.columns){X=_e(X,S.columns);let q=ge(X,S.columns,!0);if(!q.valid)return{success:!1,message:"Validation failed",errors:q.errors}}if(X.updatedAt=new Date,O)X.updatedBy=O;let K=await Y.update(k).set(X).where(Sr(g,W.id)).returning();{let q=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:W.id,operation:"PATCH",userId:O||void 0,summary:`Patched ${S.table_name} (${W.id})`,oldValues:F[0],newValues:K[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:q.pathname,query:q.search})}return{success:!0,data:K[0]}},{body:V,detail:{tags:[D],summary:`Patch ${x}`,description:`Partial update of ${x} record`}});if(!S.excluded_methods?.includes("DELETE"))L.delete("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.params,X=J.request.headers.get("x-user-id"),O=await Y.select().from(k).where(Sr(g,W.id)).limit(1);await Y.delete(k).where(Sr(g,W.id));{let F=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:W.id,operation:"DELETE",userId:X||void 0,summary:`Deleted ${S.table_name} (${W.id})`,oldValues:O[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:F.pathname,query:F.search})}return{success:!0,data:null}},{detail:{tags:[D],summary:`Delete ${x}`,description:`Delete a ${x} record`}});if(S.bulk_endpoints_enabled){if(!S.excluded_methods?.includes("POST"))L.post("/bulk",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.body;if(!Array.isArray(W))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await Y.transaction(async(O)=>{let F=[];for(let K of W){let q=await O.insert(k).values(K).returning();F.push(q[0])}return F})}}catch(X){return{success:!1,message:X instanceof Error?X.message:"Transaction failed"}}},{body:C,detail:{tags:[D],summary:`Bulk create ${x}`,description:`Create multiple ${x} records`}});if(!S.excluded_methods?.includes("PUT"))L.put("/bulk",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.body;if(!Array.isArray(W))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await Y.transaction(async(O)=>{let F=[];for(let K of W){let q=await O.update(k).set(K.data).where(Sr(g,K.id)).returning();F.push(q[0])}return F})}}catch(X){return{success:!1,message:X instanceof Error?X.message:"Transaction failed"}}},{body:Q,detail:{tags:[D],summary:`Bulk update ${x}`,description:`Update multiple ${x} records`}});if(!S.excluded_methods?.includes("DELETE"))L.delete("/bulk",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.body;if(!Array.isArray(W))return{success:!1,message:"Body must be an array of ids"};try{return await Y.transaction(async(X)=>{for(let O of W)await X.delete(k).where(Sr(g,O))}),{success:!0,data:{deleted:W.length}}}catch(X){return{success:!1,message:X instanceof Error?X.message:"Transaction failed"}}},{body:j,detail:{tags:[D],summary:`Bulk delete ${x}`,description:`Delete multiple ${x} records`}})}n.use(L)}return n}import s5,{t as $a}from"elysia";function l5(n){let r=n.match(/^(\d+)(ms|s|m|h)$/);if(!r||!r[1]||!r[2])return 5000;let t=parseInt(r[1],10);switch(r[2]){case"ms":return t;case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;default:return 5000}}function tf(n){let{monitoringService:r,logger:t,endpoints:o}=n,e=new s5({prefix:o.basePath});if(!o.enabled)return e;if(o.stream.enabled)e.get(o.stream.path,async function*({request:a}){t.info("[Monitoring] SSE stream connected");let c=l5(o.stream.interval),i=!0;a.signal.addEventListener("abort",()=>{i=!1,t.info("[Monitoring] SSE stream disconnected")});let s=await r.getLatestSnapshot();if(s)yield{event:"snapshot",data:JSON.stringify(s)};while(i){if(await new Promise((u)=>setTimeout(u,c)),!i)break;let l=await r.getLatestSnapshot();if(l)yield{event:"snapshot",data:JSON.stringify(l)};let f=r.getActiveAlerts();if(f.length>0)yield{event:"alerts",data:JSON.stringify(f)}}},{detail:{tags:["Monitoring"],summary:"Stream real-time monitoring data",description:"Server-Sent Events stream for real-time monitoring metrics"}});if(o.snapshot.enabled)e.get(o.snapshot.path,async()=>{let a=await r.getLatestSnapshot();if(!a)return{isSuccess:!1,message:"No monitoring data available",data:null};return{isSuccess:!0,message:"Current monitoring snapshot",data:a}},{detail:{tags:["Monitoring"],summary:"Get current monitoring snapshot",description:"Returns the latest monitoring metrics snapshot"}});if(o.history.enabled)e.get(o.history.path,async({query:a})=>{let c=Math.min(a.minutes?parseInt(String(a.minutes),10):60,o.history.maxMinutes),i=await r.getHistory(c);return{isSuccess:!0,message:`Monitoring history for last ${c} minutes`,data:{minutes:c,count:i.length,snapshots:i}}},{query:$a.Object({minutes:$a.Optional($a.Numeric())}),detail:{tags:["Monitoring"],summary:"Get monitoring history",description:"Returns historical monitoring data for the specified time range"}});if(o.alerts.enabled)e.get(o.alerts.path,()=>{let a=r.getActiveAlerts();return{isSuccess:!0,message:"Active alerts",data:{count:a.length,alerts:a}}},{detail:{tags:["Monitoring"],summary:"Get active alerts",description:"Returns all currently active monitoring alerts"}}),e.post(`${o.alerts.path}/:alertId/acknowledge`,({params:a})=>{if(!r.acknowledgeAlert(a.alertId))return{isSuccess:!1,message:"Alert not found",data:null};return{isSuccess:!0,message:"Alert acknowledged",data:{alertId:a.alertId}}},{params:$a.Object({alertId:$a.String()}),detail:{tags:["Monitoring"],summary:"Acknowledge an alert",description:"Mark an alert as acknowledged"}});return t.info(`[Monitoring] Routes enabled at ${o.basePath} (stream: ${o.stream.enabled}, snapshot: ${o.snapshot.enabled}, history: ${o.history.enabled}, alerts: ${o.alerts.enabled})`),e}import f5,{t as Vr}from"elysia";var d5={"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache, no-transform",Connection:"keep-alive"},u5=new TextEncoder,of=(n,r)=>{let t=typeof r==="string"?r:JSON.stringify(r);return u5.encode(`event: ${n}
65
+ `}),b.info("[OAUTH] Invite email sent to new OAuth user",{userId:p,email:V.email,provider:M})}catch(ot){b.warn("[OAUTH] Failed to send invite email",{userId:p,error:ot})}}await u.update($).set({lastLoginAt:new Date}).where(Er($.id,p));let L=R.request.headers.get("cf-connecting-ip")?.trim()||R.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||R.request.headers.get("x-real-ip")?.trim()||"127.0.0.1",J=R.request.headers.get("user-agent")||"Unknown Browser",W=di(J,L),X=t(p),O=o(p),N={userId:p,deviceInfo:W,loginMethod:`oauth:${M}`,rememberMe:!0},j=await e(N);if(a)await a(j,N);await b.audit({entityName:"users",entityId:p,operation:"LOGIN",userId:p,summary:`${V.email??V.providerAccountId} logged in via OAuth (${M})`,ipAddress:L,userAgent:J,path:`${A}/${M}/callback`,query:""});let q=_.secure?"; Secure":"",y=`; Path=${_.path}; HttpOnly; SameSite=${_.sameSite}${q}`,en=[];if(m.accessToken.setHeadersEnabled)en.push(`${_.accessTokenName}=${X}${y}; Max-Age=${_.accessTokenMaxAge}`);if(m.refreshToken.setHeadersEnabled)en.push(`${_.refreshTokenName}=${O}${y}; Max-Age=${_.refreshTokenMaxAge}`);if(m.sessionToken.setHeadersEnabled)en.push(`${_.sessionTokenName}=${j}${y}; Max-Age=${_.sessionTokenMaxAge}`);let gn=g.redirectUrl||r.successRedirectUrl,Gn=new Headers;Gn.set("Location",gn);for(let T of en)Gn.append("Set-Cookie",T);return new Response(null,{status:302,headers:Gn})},{detail:{tags:["Authentication"],summary:"OAuth Callback",description:"Handles the OAuth provider callback, creates session and sets cookies"}}),E.get(`${A}/providers`,()=>{return{success:!0,data:{providers:r.getEnabledProviders()}}},{detail:{tags:["Authentication"],summary:"List OAuth Providers",description:"Returns the list of enabled OAuth providers"}}),E.get(`${A}/link/:provider`,async(R)=>{let M=R.params.provider;if(!r.isProviderEnabled(M))return R.set.status=404,{success:!1,message:`OAuth provider "${M}" is not enabled`};if(!r.allowAccountLinking)return R.set.status=403,{success:!1,message:"Account linking is disabled"};let S=R.request.headers.get("x-user-id");if(!S)return R.set.status=401,{success:!1,message:"Authentication required to link accounts"};let x=R.query.redirect_url,D=r.buildAuthorizationUrl(M,S,x);return R.set.status=302,R.set.headers.Location=D,null},{detail:{tags:["Authentication"],summary:"Link OAuth Account",description:"Redirects to provider to link an OAuth account to the current user"}}),E.delete(`${A}/unlink/:provider`,async(R)=>{let M=R.params.provider,S=R.request.headers.get("x-user-id");if(!S)return R.set.status=401,{success:!1,message:"Authentication required"};if(!u)return R.set.status=500,{success:!1,message:"Database not configured"};let x=n.oauthAccountsTable;if(!x)return R.set.status=500,{success:!1,message:"OAuth accounts table not configured"};if((await u.select().from(x).where(ss(Er(x.userId,S),Er(x.provider,M))).limit(1)).length===0)return{success:!1,message:`No linked ${M} account found`};let w=!!(await u.select().from($).where(Er($.id,S)).limit(1))[0]?.password,g=await u.select().from(x).where(Er(x.userId,S));if(!w&&g.length<=1)return R.set.status=400,{success:!1,message:"Cannot unlink the only login method. Set a password first."};return await u.delete(x).where(ss(Er(x.userId,S),Er(x.provider,M))),b.info("[OAUTH] Account unlinked",{userId:S,provider:M}),{success:!0,message:`${M} account unlinked successfully`}},{detail:{tags:["Authentication"],summary:"Unlink OAuth Account",description:"Removes a linked OAuth account from the current user"}}),E.get(`${A}/accounts`,async(R)=>{let M=R.request.headers.get("x-user-id");if(!M)return R.set.status=401,{success:!1,message:"Authentication required"};if(!u)return R.set.status=500,{success:!1,message:"Database not configured"};let S=n.oauthAccountsTable;if(!S)return{success:!0,data:{accounts:[]}};return{success:!0,data:{accounts:(await u.select().from(S).where(Er(S.userId,M))).map((k)=>({id:k.id,provider:k.provider,providerEmail:k.providerEmail,providerName:k.providerName,providerAvatarUrl:k.providerAvatarUrl,isPrimary:k.isPrimary,lastUsedAt:k.lastUsedAt,createdAt:k.createdAt}))}}},{detail:{tags:["Authentication"],summary:"List Linked OAuth Accounts",description:"Returns all OAuth accounts linked to the current user"}}),E}var y1=d(()=>{ui();Ba()});import{t as Ho}from"elysia";var cd,F4;var id=d(()=>{cd=Ho.Object({currentPassword:Ho.String({minLength:1}),newPassword:Ho.String({minLength:8}),confirmPassword:Ho.String({minLength:8})}),F4=Ho.Object({success:Ho.Boolean(),message:Ho.Optional(Ho.String())})});function n2(n,r){return n===r}import{eq as r2}from"drizzle-orm";import{Elysia as j4}from"elysia";function ls(n,r){let{db:t,logger:o,usersTable:e}=n,a=r.route||"/auth/password-change",c=new j4;if(!r.enabled)return c;return c.post(a,async(i)=>{if(!t||!e)return i.set.status=500,{success:!1,message:"Database not configured"};let s=i.request.headers.get("x-user-id");if(!s)return i.set.status=401,{success:!1,message:"Authentication required"};let{currentPassword:l,newPassword:f,confirmPassword:u}=i.body;if(!n2(f,u))return i.set.status=422,{success:!1,message:"New passwords do not match"};let $=(await t.select().from(e).where(r2(e.id,s)).limit(1))[0];if(!$)return i.set.status=404,{success:!1,message:"User not found"};let A=await fi(l,$.password),_=new URL(i.request.url),m=i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||"unknown",E=i.request.headers.get("user-agent")||"unknown";if(!A)return o.warn("[AUTH] Password change failed - invalid current password",{userId:s}),o.audit({entityName:"users",entityId:s,operation:"PASSWORD_CHANGE_FAILED",userId:s,summary:"Password change failed: invalid current password",ipAddress:m,userAgent:E,path:_.pathname,query:_.search}),i.set.status=400,{success:!1,message:"Current password is incorrect"};let R=await go(f);return await t.update(e).set({password:R,updatedAt:new Date}).where(r2(e.id,s)),o.info("[AUTH] Password change successful",{userId:s}),o.audit({entityName:"users",entityId:s,operation:"PASSWORD_CHANGE",userId:s,summary:"Password changed successfully",ipAddress:m,userAgent:E,path:_.pathname,query:_.search}),{success:!0,message:"Password changed successfully"}},{body:cd,detail:{tags:["Authentication"],summary:"Change Password",description:"Change password for authenticated user"}}),c}var sd=d(()=>{ui();Je();id();id()});import{t as Jt}from"elysia";var ld,fd,p4;var dd=d(()=>{ld=Jt.Object({email:Jt.String({format:"email"})}),fd=Jt.Object({token:Jt.String(),newPassword:Jt.String({minLength:8}),confirmPassword:Jt.String({minLength:8})}),p4=Jt.Object({success:Jt.Boolean(),message:Jt.Optional(Jt.String())})});import{randomBytes as K4}from"crypto";function t2(){return K4(32).toString("hex")}function o2(n){return new Date>n}var e2=()=>{};import{Elysia as T4}from"elysia";function fs(n,r,t,o,e,a){let{db:c,logger:i,usersTable:s}=n,l=r.route||"/auth/password-reset",f=new T4;if(!r.enabled)return f;return f.post(`${l}/request`,async(u)=>{if(!c||!s)return{success:!1,message:"Database not configured"};let{email:b}=u.body,{eq:$}=await import("drizzle-orm"),_=(await c.select().from(s).where($(s.email,b)).limit(1))[0];if(!_)return{success:!0,message:"If email exists, reset link will be sent"};let m=t2(),E=new Date(Date.now()+3600000);if(await t(_.id,m,E),a)try{await a(b,m),i.info("[AUTH] Password reset email sent",{email:b})}catch(M){i.error("[AUTH] Failed to send password reset email",{email:b,error:M})}else i.warn("[AUTH] sendResetEmail not configured - email not sent",{email:b});i.info("[AUTH] Password reset requested",{userId:_.id,email:b});let R=new URL(u.request.url);return i.audit({entityName:"users",entityId:_.id,operation:"PASSWORD_RESET_REQUEST",userId:_.id,summary:`Password reset requested for ${b}`,ipAddress:u.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||u.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:u.request.headers.get("user-agent")||"unknown",path:R.pathname,query:R.search}),{success:!0,message:"If email exists, reset link will be sent"}},{body:ld,detail:{tags:["Authentication"],summary:"Request Password Reset",description:"Request a password reset email"}}),f.post(`${l}/confirm`,async(u)=>{if(!c||!s)return{success:!1,message:"Database not configured"};let{token:b,newPassword:$,confirmPassword:A}=u.body;if($!==A)return{success:!1,message:"Passwords do not match"};let _=await o(b);if(!_)return{success:!1,message:"Invalid or expired reset token"};if(o2(_.expiresAt))return await e(b),{success:!1,message:"Reset token has expired"};let m=await go($),{eq:E}=await import("drizzle-orm");await c.update(s).set({password:m}).where(E(s.id,_.userId)),await e(b),i.info("[AUTH] Password reset successful",{userId:_.userId});let R=new URL(u.request.url);return i.audit({entityName:"users",entityId:_.userId,operation:"PASSWORD_RESET",userId:_.userId,summary:"Password reset completed successfully",ipAddress:u.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||u.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:u.request.headers.get("user-agent")||"unknown",path:R.pathname,query:R.search}),{success:!0,message:"Password has been reset"}},{body:fd,detail:{tags:["Authentication"],summary:"Confirm Password Reset",description:"Reset password with token"}}),f}var ud=d(()=>{Je();dd();e2();dd()});import{t as yt}from"elysia";var bd,v4;var gd=d(()=>{bd=yt.Object({newPassword:yt.String({minLength:8}),userId:yt.Optional(yt.String()),token:yt.Optional(yt.String())}),v4=yt.Object({success:yt.Boolean(),message:yt.String()})});import{eq as a2}from"drizzle-orm";import{Elysia as I4}from"elysia";function ds(n,r,t,o){let{db:e,logger:a,usersTable:c}=n,i=r.route||"/auth/password-set",s=new I4;if(!r.enabled)return s;return s.post(i,async(l)=>{if(a.info("[AUTH] Password set request received"),!e||!c)return a.error("[AUTH] Password set failed - database not configured"),{success:!1,message:"Database not configured"};let{newPassword:f,userId:u,token:b}=l.body,$=u;if(b&&t&&o){let R=dt(b),M=await t(R);if(!M)return a.warn("[AUTH] Password set failed - invalid token"),{success:!1,message:"Invalid or expired token"};if(new Date>M.expiresAt)return await o(R),a.warn("[AUTH] Password set failed - expired token",{email:M.email}),{success:!1,message:"Invalid or expired token"};$=M.userId,a.info("[AUTH] Password set - userId resolved from token",{userId:$,email:M.email})}if(!$)return a.warn("[AUTH] Password set failed - no userId in payload or token"),{success:!1,message:"User ID or token required"};let _=(await e.select().from(c).where(a2(c.id,$)).limit(1))[0];if(a.info("[AUTH] Password set - user found",{found:!!_,hasPassword:!!_?.password}),!_)return{success:!1,message:"User not found"};if(_.password)return a.warn("[AUTH] Password set failed - user already has password",{userId:$}),{success:!1,message:"Password already set. Use password change instead."};let m=await go(f);a.info("[AUTH] Password set - updating user with verifiedAt",{userId:$});let E=await e.update(c).set({password:m,verifiedAt:new Date,updatedAt:new Date}).where(a2(c.id,$));if(a.info("[AUTH] Password set successful for invited user",{userId:$,updateResult:E}),b&&o){let R=dt(b);await o(R),a.info("[AUTH] Invite token consumed after password set",{userId:$})}return{success:!0,message:"Password set successfully"}},{body:bd,detail:{tags:["Authentication"],summary:"Set Password",description:"Set password for the first time (for invited users who do not have a password yet)"}}),s}var _d=d(()=>{Ba();Je();gd();gd()});function md(n){let r=n.match(/^(\d+)([smhd])$/);if(!r)return 900;let t=r[1],o=r[2];if(!t||!o)return 900;let e=parseInt(t,10);switch(o){case"s":return e;case"m":return e*60;case"h":return e*3600;case"d":return e*86400;default:return 900}}import{t as ae}from"elysia";var Z4;var c2=d(()=>{Z4=ae.Object({success:ae.Boolean(),message:ae.Optional(ae.String()),data:ae.Optional(ae.Object({accessToken:ae.String()}))})});import{Elysia as y4}from"elysia";function us(n,r,t,o,e,a,c){let{logger:i,authentication:s}=n,l=r.route||"/auth/refresh",f=new y4;if(!r.enabled)return f;return f.post(l,async(u)=>{let b=s?.refreshToken?.name||"refresh_token",$=s?.accessToken?.name||"access_token",A=u.request.headers.get("x-refresh-token");if(!A){let Q=u.request.headers.get("cookie");if(Q)A=Q.split(";").reduce((L,J)=>{let[W,X]=J.trim().split("=");if(W&&X)L[W]=X;return L},{})[b]||null}if(!A)return u.set.status=401,{success:!1,message:"Refresh token required"};let _=t(A);if(!_.valid||!_.payload)return i.warn("[AUTH] Refresh failed - invalid token"),u.set.status=401,{success:!1,message:"Invalid refresh token"};let m=_.payload.sub,E=o(m),R=e?e(m):null,M=a?.accessToken?.setHeadersEnabled??!0,S=a?.accessToken?.returnJson??!0,x=a?.refreshToken?.setHeadersEnabled??!0,D=a?.refreshToken?.returnJson??!1,k=s?.accessToken?.expiresIn||"15m",B=Math.max(0,md(k)-(c??0)),w=s?.refreshToken?.expiresIn||"7d",g=md(w),Y=new Headers;if(Y.set("Content-Type","application/json"),M)Y.append("Set-Cookie",`${$}=${E}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${B}`);if(R&&x)Y.append("Set-Cookie",`${b}=${R}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${g}`);i.info("[AUTH] Token refresh successful",{userId:m,rotatedRefreshToken:!!R});let V={};if(S)V.accessToken=E;if(R&&D)V.refreshToken=R;let C=JSON.stringify({success:!0,data:V});return new Response(C,{status:200,headers:Y})},{detail:{tags:["Authentication"],summary:"Refresh Token",description:"Get new access token using refresh token"}}),f}var wd=d(()=>{c2()});import{t as Yr}from"elysia";var hd,nE;var $d=d(()=>{hd=Yr.Object({email:Yr.String({format:"email"}),password:Yr.String({minLength:8}),confirmPassword:Yr.Optional(Yr.String({minLength:8}))}),nE=Yr.Object({success:Yr.Boolean(),message:Yr.Optional(Yr.String()),data:Yr.Optional(Yr.Object({user:Yr.Object({id:Yr.String(),email:Yr.String()})}))})});import{eq as rE}from"drizzle-orm";import{Elysia as tE}from"elysia";function bs(n,r,t,o,e,a,c,i,s,l){let{db:f,logger:u,usersTable:b}=n,$=r.route||"/auth/register",A={accessTokenName:c?.accessTokenName||"access_token",refreshTokenName:c?.refreshTokenName||"refresh_token",sessionTokenName:c?.sessionTokenName||"session_token",accessTokenMaxAge:c?.accessTokenMaxAge||900,refreshTokenMaxAge:c?.refreshTokenMaxAge||604800,sessionTokenMaxAge:c?.sessionTokenMaxAge||900,secure:c?.secure??!0,httpOnly:c?.httpOnly??!0,sameSite:c?.sameSite||"strict",path:c?.path||"/"},_=new tE;if(!r.enabled)return _;return _.post($,async(m)=>{if(!f||!b)return m.set.status=500,{success:!1,message:"Database not configured"};let{email:E,password:R,confirmPassword:M}=m.body;if(M&&R!==M)return m.set.status=400,{success:!1,message:"Passwords do not match"};let S=Zg(R);if(!S.valid)return m.set.status=400,{success:!1,message:"Password too weak",errors:S.errors};let x=await f.select().from(b).where(rE(b.email,E)).limit(1),D=new URL(m.request.url),k=m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||m.request.headers.get("x-real-ip")?.trim()||"unknown",B=m.request.headers.get("user-agent")||"unknown";if(x.length>0)return u.warn("[AUTH] Registration failed - email exists",{email:E}),u.audit({entityName:"users",operation:"REGISTER_FAILED",summary:`Registration failed: email already exists (${E})`,ipAddress:k,userAgent:B,path:D.pathname,query:D.search}),m.set.status=409,{success:!1,message:"Email already registered"};let w=await go(R),g=r.emailVerification?.enabled&&s?.isAvailable(),Y=g?ei():null,V=r.emailVerification?.tokenExpiresIn||"24h",C=g?new Date(Date.now()+Ye(V)):null,Q={email:E,password:w};if(g&&Y)Q.emailVerificationToken=Y,Q.emailVerificationTokenExpiresAt=C,Q.emailVerificationSentAt=new Date,Q.emailVerificationAttempts=1;let L=(await f.insert(b).values(Q).returning())[0];if(u.info("[AUTH] Registration successful",{userId:L.id,email:E,emailVerificationEnabled:g}),u.audit({entityName:"users",entityId:L.id,operation:"REGISTER",userId:L.id,summary:`New user registered: ${E}`,ipAddress:k,userAgent:B,path:D.pathname,query:D.search}),g&&s&&Y){let W=`${(r.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${Y}`;s.sendVerificationEmail(E,E.split("@")[0]||"User",W,l||"Nucleus").then((j)=>{if(j.success)u.info("[AUTH] Verification email sent",{email:E});else u.error("[AUTH] Failed to send verification email",{email:E,error:j.error})}).catch((j)=>{u.error("[AUTH] Failed to send verification email",{email:E,error:j})});let X=r.emailVerification?.resendCooldown||"60s",O=Ye(X)/1000,N=r.emailVerification?.maxResendAttempts||3;return{success:!0,message:"Registration successful. Please check your email to verify your account.",data:{user:{id:L.id,email:L.email},emailVerificationRequired:!0,verification:{cooldownSeconds:O,canResendAt:new Date(Date.now()+O*1000).toISOString(),attemptsRemaining:N-1,maxAttempts:N}}}}if(t)t(E,E.split("@")[0]||"User").catch((J)=>{u.error("[AUTH] Failed to send welcome email",{email:E,error:J})});if(o&&e&&a){let J=m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||m.request.headers.get("x-real-ip")?.trim()||"unknown",W=m.request.headers.get("user-agent")||"",X=o(L.id),O=e(L.id),N=await a({userId:L.id,deviceInfo:{ipAddress:J,userAgent:W},loginMethod:"register"}),j={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},q=A.secure?"; Secure":"",y=`; Path=${A.path}; HttpOnly; SameSite=${A.sameSite}${q}`,en=[];if(j.accessToken.setHeadersEnabled)en.push(`${A.accessTokenName}=${X}${y}; Max-Age=${A.accessTokenMaxAge}`);if(j.refreshToken.setHeadersEnabled)en.push(`${A.refreshTokenName}=${O}${y}; Max-Age=${A.refreshTokenMaxAge}`);if(j.sessionToken.setHeadersEnabled)en.push(`${A.sessionTokenName}=${N}${y}; Max-Age=${A.sessionTokenMaxAge}`);let gn={user:{id:L.id,email:L.email}};if(j.accessToken.returnJson)gn.accessToken=X;if(j.refreshToken.returnJson)gn.refreshToken=O;if(j.sessionToken.returnJson)gn.sessionId=N;let Gn=JSON.stringify({success:!0,data:gn}),T=new Headers;T.set("Content-Type","application/json"),T.set("x-session-id",N);for(let tn of en)T.append("Set-Cookie",tn);return new Response(Gn,{status:200,headers:T})}return{success:!0,data:{user:{id:L.id,email:L.email}}}},{body:hd,detail:{tags:["Authentication"],summary:"Register",description:"Register a new user account"}}),_}var Ad=d(()=>{$d();Je();$d()});import{t as I}from"elysia";var i2,oE,Rd,kd,zq;var Ed=d(()=>{i2=I.Object({id:I.String(),deviceName:I.Optional(I.String()),deviceType:I.Optional(I.String()),browserName:I.Optional(I.String()),browserVersion:I.Optional(I.String()),osName:I.Optional(I.String()),osVersion:I.Optional(I.String()),ipAddress:I.String(),locationCountry:I.Optional(I.String()),locationCity:I.Optional(I.String()),lastActivityAt:I.String(),createdAt:I.String(),isCurrent:I.Boolean(),loginMethod:I.Optional(I.String()),trustScore:I.Optional(I.Number())}),oE=I.Object({success:I.Boolean(),data:I.Optional(I.Object({sessions:I.Array(i2),currentSessionId:I.Optional(I.String()),totalCount:I.Number()})),message:I.Optional(I.String())}),Rd=I.Object({reason:I.Optional(I.String())}),kd=I.Object({excludeCurrent:I.Optional(I.Boolean()),reason:I.Optional(I.String())}),zq=I.Object({success:I.Boolean(),data:I.Optional(I.Object({recentActivity:I.Array(I.Object({sessionId:I.String(),action:I.String(),ipAddress:I.String(),timestamp:I.String(),deviceInfo:I.Optional(I.String())}))})),message:I.Optional(I.String())})});function gs(n){let r=(o,e)=>n[o]??n[e],t=(o,e)=>{let a=n[o]??n[e];if(!a)return;return a instanceof Date?a.toISOString():String(a)};return{id:n.id,deviceName:r("device_name","deviceName"),deviceType:r("device_type","deviceType"),deviceFingerprint:r("device_fingerprint","deviceFingerprint"),browserName:r("browser_name","browserName"),browserVersion:r("browser_version","browserVersion"),osName:r("os_name","osName"),osVersion:r("os_version","osVersion"),ipAddress:r("ip_address","ipAddress"),locationCountry:r("location_country","locationCountry"),locationCity:r("location_city","locationCity"),lastActivityAt:t("last_activity_at","lastActivityAt"),createdAt:t("created_at","createdAt"),isCurrent:r("is_current","isCurrent"),loginMethod:r("login_method","loginMethod"),trustScore:r("trust_score","trustScore")}}var s2=()=>{};import{and as zo,desc as l2,eq as Fn,isNull as f2}from"drizzle-orm";import{Elysia as eE}from"elysia";function _s(n,r,t){let{db:o,logger:e}=n,a=r.route||"/auth/sessions",c=new eE;if(!r.enabled||!t)return c;let i=t,s=(l)=>{let f=l.replace(/([A-Z])/g,"_$1").toLowerCase();return i[l]||i[f]};return c.get(a,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let u=l.request.headers.get("x-session-id"),b=await o.select().from(t).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0),f2(s("revokedAt")))).orderBy(l2(s("lastActivityAt"))),$=b.filter((_)=>{let m=_,E=(m.deviceFingerprint||"").toLowerCase(),R=m.ipAddress||"";return!((!E||E==="--"||E==="--unknown"||E.includes("bot/crawler")||E.includes("headless")||E.includes("unknown-unknown"))&&(R==="127.0.0.1"||R==="::1"||R==="localhost"||!R))}),A=$.map((_)=>{let m=_,E=gs(m);return E.isCurrent=m.id===u,E});return e.info("[AUTH] Sessions list retrieved",{userId:f,totalInDb:b.length,filteredCount:$.length,hiddenBotSessions:b.length-$.length}),{success:!0,data:{sessions:A,currentSessionId:u,totalCount:$.length}}},{detail:{tags:["Authentication"],summary:"List active sessions",description:"Get all active sessions for the current user"}}),c.get(`${a}/current`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id"),u=l.request.headers.get("x-session-id");if(!f||!u)return{success:!1,message:"Authentication required"};let b=await o.select().from(t).where(Fn(s("id"),u)).limit(1);if(b.length===0)return{success:!1,message:"Session not found"};let $=b[0],A=gs($);return A.isCurrent=!0,{success:!0,data:A}},{detail:{tags:["Authentication"],summary:"Get current session",description:"Get details of the current session"}}),c.delete(`${a}/:sessionId`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let{sessionId:u}=l.params,b=l.body,$=l.request.headers.get("x-session-id");if((await o.select().from(t).where(zo(Fn(s("id"),u),Fn(s("userId"),f))).limit(1)).length===0)return{success:!1,message:"Session not found"};let _=u===$;await o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:_?"user_logout":b.reason||"user_revoked"}).where(Fn(s("id"),u)),e.info("[AUTH] Session revoked",{userId:f,sessionId:u,isCurrentSession:_,reason:b.reason||"user_revoked"});let m=new URL(l.request.url);return e.audit({entityName:"user_sessions",entityId:u,operation:_?"LOGOUT":"SESSION_REVOKE",userId:f||void 0,summary:_?"User logged out via session revoke":`Session revoked (${u.substring(0,8)}...)`,ipAddress:l.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||l.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:l.request.headers.get("user-agent")||"unknown",path:m.pathname,query:m.search}),{success:!0,message:_?"Logged out successfully":"Session revoked successfully"}},{body:Rd,detail:{tags:["Authentication"],summary:"Revoke session",description:"Revoke a specific session by ID"}}),c.delete(`${a}/all`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let u=l.body,b=l.request.headers.get("x-session-id"),$=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:u.reason||"user_revoked"}).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0)));if(u.excludeCurrent&&b){let{ne:_}=await import("drizzle-orm");$=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:u.reason||"user_revoked"}).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0),_(s("id"),b)))}await $,e.info("[AUTH] All sessions revoked",{userId:f,excludeCurrent:u.excludeCurrent,reason:u.reason||"user_revoked"});let A=new URL(l.request.url);return e.audit({entityName:"user_sessions",operation:"SESSION_REVOKE_ALL",userId:f||void 0,summary:u.excludeCurrent?"All other sessions revoked":"All sessions revoked",ipAddress:l.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||l.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:l.request.headers.get("user-agent")||"unknown",path:A.pathname,query:A.search}),{success:!0,message:u.excludeCurrent?"All other sessions revoked successfully":"All sessions revoked successfully"}},{body:kd,detail:{tags:["Authentication"],summary:"Revoke all sessions",description:"Revoke all sessions for the current user (optionally exclude current)"}}),c.get(`${a}/stats`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let{count:u,countDistinct:b}=await import("drizzle-orm"),$=await o.select({count:u()}).from(t).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0),f2(s("revokedAt")))),A=await o.select({count:b(s("deviceFingerprint"))}).from(t).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0))),_=await o.select({count:b(s("ipAddress"))}).from(t).where(zo(Fn(s("userId"),f),Fn(s("isActive"),!0)));return{success:!0,data:{activeSessions:$[0]?.count||0,uniqueDevices:A[0]?.count||0,uniqueIpAddresses:_[0]?.count||0}}},{detail:{tags:["Authentication"],summary:"Session statistics",description:"Get session statistics for the current user"}}),c.post(`${a}/approve`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let{token:f}=l.body;if(!f)return{success:!1,message:"Token is required"};let u=await o.select().from(t).where(Fn(s("approvalToken"),f)).limit(1);if(u.length===0)return{success:!1,message:"Invalid or expired approval token"};let b=u[0];if(b.approvalStatus!=="pending")return{success:!1,message:"Session already processed"};return await o.update(t).set({approvalStatus:"approved",isActive:!0,approvalRespondedAt:new Date,approvalToken:null}).where(Fn(s("id"),b.id)),e.info("[AUTH] Device approved",{sessionId:b.id,userId:b.userId}),{success:!0,message:"Device approved successfully"}},{detail:{tags:["Authentication"],summary:"Approve pending device",description:"Approve a pending device login request"}}),c.post(`${a}/reject`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let{token:f}=l.body;if(!f)return{success:!1,message:"Token is required"};let u=await o.select().from(t).where(Fn(s("approvalToken"),f)).limit(1);if(u.length===0)return{success:!1,message:"Invalid or expired approval token"};let b=u[0];if(b.approvalStatus!=="pending")return{success:!1,message:"Session already processed"};return await o.update(t).set({approvalStatus:"rejected",isActive:!1,revokedAt:new Date,revokedReason:"user_rejected",approvalRespondedAt:new Date,approvalToken:null}).where(Fn(s("id"),b.id)),e.info("[AUTH] Device rejected",{sessionId:b.id,userId:b.userId}),{success:!0,message:"Device rejected and blocked"}},{detail:{tags:["Authentication"],summary:"Reject pending device",description:"Reject a pending device login request"}}),c.get(`${a}/pending`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id");if(!f)return{success:!1,message:"Authentication required"};let u=await o.select().from(t).where(zo(Fn(s("userId"),f),Fn(s("approvalStatus"),"pending"))).orderBy(l2(s("createdAt")));return{success:!0,data:{sessions:u.map(($)=>{let A=$;return{...gs(A),approvalStatus:A.approval_status||A.approvalStatus,approvalToken:A.approval_token||A.approvalToken,approvalRequestedAt:A.approval_requested_at?.toISOString()||A.approvalRequestedAt?.toISOString()}}),totalCount:u.length}}},{detail:{tags:["Authentication"],summary:"List pending devices",description:"Get all pending device approval requests for the current user"}}),c}var Sd=d(()=>{Ed();s2();Ed()});var u2={};no(u2,{createSessionsRoute:()=>_s,createRegisterRoute:()=>bs,createRefreshRoute:()=>us,createPasswordSetRoute:()=>ds,createPasswordResetRoute:()=>fs,createPasswordChangeRoute:()=>ls,createMeRoute:()=>is,createMagicLinkRoute:()=>cs,createLogoutRoute:()=>_i,createLoginRoute:()=>bi,createInviteRoute:()=>li,createEmailVerificationRoutes:()=>ii,createAuthRoutes:()=>d2});function d2(n,r){let{authConfig:t,features:o,helpers:e}=r;if(r.oauthAccountsTable)t.oauthAccountsTable=r.oauthAccountsTable;let a=t.authentication?.cookieMaxAgeBufferSeconds??0,c={accessTokenName:t.authentication?.accessToken?.name||"access_token",refreshTokenName:t.authentication?.refreshToken?.name||"refresh_token",sessionTokenName:t.authentication?.sessionToken?.name||"session_token",accessTokenMaxAge:Math.max(0,at(t.authentication?.accessToken?.expiresIn||"15m")-a),refreshTokenMaxAge:at(t.authentication?.refreshToken?.expiresIn||"7d"),sessionTokenMaxAge:at(t.authentication?.sessionToken?.expiresIn||"30d")};if(t.logger.info("[AUTH] Cookie config created",{accessTokenMaxAge:c.accessTokenMaxAge,refreshTokenMaxAge:c.refreshTokenMaxAge,sessionTokenMaxAge:c.sessionTokenMaxAge,accessTokenExpiresIn:t.authentication?.accessToken?.expiresIn,sessionTokenExpiresIn:t.authentication?.sessionToken?.expiresIn}),o.login?.enabled){let i=bi(t,o.login,e.signAccessToken,e.signRefreshToken,e.createSession,e.saveSessionToDb,c,r.tokenResponseConfig);n.use(i)}if(o.register?.enabled){let i=bs(t,o.register,e.sendWelcomeEmail,e.signAccessToken,e.signRefreshToken,e.createSession,c,r.tokenResponseConfig,r.emailService,r.appName);if(n.use(i),o.register.emailVerification?.enabled){let s=ii({authConfig:t,registerConfig:o.register,emailService:r.emailService,appName:r.appName});n.use(s)}}if(o.logout?.enabled){let i=_i(t,o.logout,e.destroySession,e.revokeSessionInDb);n.use(i)}if(o.refresh?.enabled){let i=us(t,o.refresh,e.verifyRefreshToken,e.signAccessToken,e.signRefreshToken,r.tokenResponseConfig,a);n.use(i)}if(o.passwordReset?.enabled&&e.storeResetToken&&e.getResetToken&&e.deleteResetToken){let i=fs(t,o.passwordReset,e.storeResetToken,e.getResetToken,e.deleteResetToken,e.sendResetEmail);n.use(i)}if(o.passwordChange?.enabled){let i=ls(t,o.passwordChange);n.use(i)}if(o.passwordSet?.enabled){let i=ds(t,o.passwordSet,e.getMagicToken,e.deleteMagicToken);n.use(i)}if(o.sessions?.enabled&&r.sessionsTable){let i=_s(t,o.sessions,r.sessionsTable);n.use(i)}if(o.magicLink?.enabled&&r.emailService?.isAvailable()&&e.storeMagicToken&&e.getMagicToken&&e.deleteMagicToken){let i=cs(t,o.magicLink,r.emailService,e.signAccessToken,e.signRefreshToken,e.createSession,e.storeMagicToken,e.getMagicToken,e.deleteMagicToken,r.appName);n.use(i)}if(o.me?.enabled){let i=is(t,o.me,r.schemaTables||{},r.schemaRelations||{},r.databaseUrl);n.use(i)}if(o.invite?.enabled&&r.emailService?.isAvailable()&&e.storeMagicToken){let i=li(t,o.invite,r.emailService,e.storeMagicToken,r.appName,e.getMagicToken);n.use(i)}if(o.captcha?.enabled&&r.captchaService){let i=vg({captchaService:r.captchaService,logger:t.logger,basePath:o.captcha.route||"/auth/captcha"});n.use(i)}if(o.oauth?.enabled&&o.oauth.providers){let i=new Vc(o.oauth),s=Z1(t,i,e.signAccessToken,e.signRefreshToken,e.createSession,e.saveSessionToDb,c,r.tokenResponseConfig,r.emailService,e.storeMagicToken,r.appName);n.use(s)}return n}var Md=d(()=>{Ul();Kc();Ig();hf();$f();Ef();Sf();ed();ad();y1();sd();ud();_d();wd();Ad();Sd();hf();$f();Ef();Sf();ed();ad();sd();ud();_d();wd();Ad();Sd()});import{batch as hs,createStore as w2}from"h-state";import{useEffectEvent as h2}from"react";function $2(n){let r={};for(let t of Object.keys(n))r[t]={isPending:!1,data:null,error:null,code:null};return r}function A2(n,r){let{useStore:t}=w2($2(n),{_callEndpoint:(o)=>async(e,a)=>{if(!o[e])return;hs(()=>{o[e].isPending=!0,o[e].error=null});try{let i=await r(e,a.payload);if(hs(()=>{if(o[e].isPending=!1,o[e].code=i.code??null,i.isSuccess&&i.data!==void 0)o[e].data=i.data,o[e].error=null;else o[e].error=i.errors??null}),i.isSuccess)a.onAfterHandle?.(i.data??i);else a.onErrorHandle?.(i.errors??{message:"Request failed"},i.code)}catch(i){hs(()=>{o[e].isPending=!1,o[e].error={message:i instanceof Error?i.message:"Unknown error"}}),a.onErrorHandle?.({message:i instanceof Error?i.message:"Unknown error"},null)}}});return function(){let e=t(),a=h2((i,s)=>{e._callEndpoint(i,s)}),c={};for(let i of Object.keys(n)){let s=(l)=>{a(i,l)};c[i]={state:e[i],start:s}}return c}}var Ud={$schema:"../schemas/nucleus.tables.schema.json",tables:[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"email_verification_token",type:"varchar",length:255},{name:"email_verification_token_expires_at",type:"timestamp"},{name:"email_verification_sent_at",type:"timestamp"},{name:"email_verification_attempts",type:"integer",default:0},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"remember_me",type:"boolean",notNull:!0,default:!1},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]},{table_name:"oauth_accounts",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!1,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"provider",type:"varchar",length:50,notNull:!0,enumValues:["google","github","microsoft","discord","facebook","twitter","apple","custom"]},{name:"provider_account_id",type:"varchar",length:255,notNull:!0},{name:"provider_email",type:"varchar",length:255},{name:"provider_name",type:"varchar",length:255},{name:"provider_avatar_url",type:"text"},{name:"access_token",type:"text"},{name:"refresh_token",type:"text"},{name:"token_expires_at",type:"timestamp"},{name:"scope",type:"text"},{name:"raw_profile",type:"jsonb"},{name:"is_primary",type:"boolean",notNull:!0,default:!1},{name:"last_used_at",type:"timestamp"}],indexes:[{columns:["user_id"]},{columns:["provider","provider_account_id"],unique:!0},{columns:["provider_email"]},{columns:["user_id","provider"]}],constraints:{unique:[{name:"unique_provider_account",columns:["provider","provider_account_id"]}]}}]};var $s={login:{key:"LOGIN",method:"POST",defaultRoute:"/auth/login",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},register:{key:"REGISTER",method:"POST",defaultRoute:"/auth/register",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},logout:{key:"LOGOUT",method:"POST",defaultRoute:"/auth/logout",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},refresh:{key:"REFRESH",method:"POST",defaultRoute:"/auth/refresh",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},me:{key:"ME",method:"GET",defaultRoute:"/auth/me",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordChange:{key:"PASSWORD_CHANGE",method:"POST",defaultRoute:"/auth/password-change",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordSet:{key:"PASSWORD_SET",method:"POST",defaultRoute:"/auth/password-set",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordReset:{key:"PASSWORD_RESET_REQUEST",method:"POST",defaultRoute:"/auth/password-reset",defaultIsPublic:!0,subEndpoints:[{key:"PASSWORD_RESET_REQUEST",method:"POST",suffix:"/request",_payload:void 0,_success:void 0,_error:void 0},{key:"PASSWORD_RESET_CONFIRM",method:"POST",suffix:"/confirm",_payload:void 0,_success:void 0,_error:void 0}]},sessions:{key:"SESSIONS",method:"GET",defaultRoute:"/auth/sessions",defaultIsPublic:!1,subEndpoints:[{key:"SESSIONS",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_CURRENT",method:"GET",suffix:"/current",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_STATS",method:"GET",suffix:"/stats",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_PENDING",method:"GET",suffix:"/pending",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE",method:"DELETE",suffix:"/:sessionId",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE_ALL",method:"DELETE",suffix:"/all",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_APPROVE",method:"POST",suffix:"/approve",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REJECT",method:"POST",suffix:"/reject",_payload:void 0,_success:void 0,_error:void 0}]},magicLink:{key:"MAGIC_LINK",method:"POST",defaultRoute:"/auth/magic-link",defaultIsPublic:!0,subEndpoints:[{key:"MAGIC_LINK",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"MAGIC_LINK_VERIFY",method:"GET",suffix:"/verify",routeKey:"verifyRoute",_payload:void 0,_success:void 0,_error:void 0}]},invite:{key:"INVITE",method:"POST",defaultRoute:"/auth/invite",defaultIsPublic:!1,subEndpoints:[{key:"INVITE",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"INVITE_VERIFY",method:"POST",suffix:"/verify",_payload:void 0,_success:void 0,_error:void 0}]},emailVerification:{key:"VERIFY_EMAIL",method:"GET",defaultRoute:"/verify-email",defaultIsPublic:!0,subEndpoints:[{key:"VERIFY_EMAIL",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"RESEND_VERIFICATION",method:"POST",suffix:"",routeKey:"resendRoute",defaultRoute:"/resend-verification",_payload:void 0,_success:void 0,_error:void 0}]},captcha:{key:"CAPTCHA",method:"GET",defaultRoute:"/auth/captcha",defaultIsPublic:!0,subEndpoints:[{key:"CAPTCHA_GENERATE",method:"GET",suffix:"/generate",_payload:void 0,_success:void 0,_error:void 0},{key:"CAPTCHA_VALIDATE",method:"POST",suffix:"/validate",_payload:void 0,_success:void 0,_error:void 0}]},oauth:{key:"OAUTH_PROVIDERS",method:"GET",defaultRoute:"/auth/oauth/providers",defaultIsPublic:!0,subEndpoints:[{key:"OAUTH_PROVIDERS",method:"GET",suffix:"/providers",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_REDIRECT",method:"GET",suffix:"/:provider",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_ACCOUNTS",method:"GET",suffix:"/accounts",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_UNLINK",method:"DELETE",suffix:"/unlink/:provider",_payload:void 0,_success:void 0,_error:void 0}]}},Bd={healthCheck:{key:"MONITORING_HEALTH_CHECK",method:"GET",suffix:"/health",_payload:void 0,_success:void 0,_error:void 0},getSettings:{key:"MONITORING_GET_SETTINGS",method:"GET",suffix:"/settings",_payload:void 0,_success:void 0,_error:void 0},changeSettings:{key:"MONITORING_CHANGE_SETTINGS",method:"PATCH",suffix:"/settings",_payload:void 0,_success:void 0,_error:void 0},getLogs:{key:"MONITORING_GET_LOGS",method:"GET",suffix:"/logs",_payload:void 0,_success:void 0,_error:void 0}};var k2=["profiles","addresses","phones","files","users","roles","claims","user_roles","role_claims","audit_logs"],E2=Ud.tables.filter((n)=>k2.includes(n.table_name));function le(n){return n.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toUpperCase()}function S2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function As(n){if(n.endsWith("ies"))return`${n.slice(0,-3)}y`;if(n.endsWith("ses"))return`${n.slice(0,-2)}`;if(n.endsWith("s"))return n.slice(0,-1);return n}function kt(n,r){let t=le(n),o=le(As(n));switch(r){case"GET":return`GET_${t}`;case"POST":return`ADD_${o}`;case"PUT":return`UPDATE_${o}`;case"PATCH":return`PATCH_${o}`;case"DELETE":return`DELETE_${o}`}}function se(n,r){let t=le(n);switch(r){case"POST":return`BULK_ADD_${t}`;case"PUT":return`BULK_UPDATE_${t}`;case"DELETE":return`BULK_DELETE_${t}`}}function ro(n,r){if(!n.excluded_methods)return!1;let t={GET:"GET",POST:"POST",PUT:"PUT",PATCH:"PATCH",DELETE:"DELETE"};return n.excluded_methods.includes(t[r])}function Wd(n){let r={};for(let t of n.entities){let o=t.table_name,e=`/${o}`;if(!ro(t,"GET")){r[kt(o,"GET")]={method:"GET",path:e,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0};let a=le(As(o));r[`GET_${a}_BY_ID`]={method:"GET",path:`${e}/:id`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0},r[`GET_${le(o)}_DISTINCT`]={method:"GET",path:`${e}/distinct/:field`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0}}if(!ro(t,"POST"))r[kt(o,"POST")]={method:"POST",path:e,isPublic:t.is_public?.POST??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"PUT"))r[kt(o,"PUT")]={method:"PUT",path:`${e}/:id`,isPublic:t.is_public?.PUT??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"PATCH"))r[kt(o,"PATCH")]={method:"PATCH",path:`${e}/:id`,isPublic:t.is_public?.PATCH??!1,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"DELETE"))r[kt(o,"DELETE")]={method:"DELETE",path:`${e}/:id`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0};if(t.bulk_endpoints_enabled){if(!ro(t,"POST"))r[se(o,"POST")]={method:"POST",path:`${e}/bulk`,isPublic:t.is_public?.POST??!1,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"PUT"))r[se(o,"PUT")]={method:"PUT",path:`${e}/bulk`,isPublic:t.is_public?.PUT??!1,_payload:void 0,_success:void 0,_error:void 0};if(!ro(t,"DELETE"))r[se(o,"DELETE")]={method:"DELETE",path:`${e}/bulk`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0}}}return r}function Yd(n){let r={},t=n.authentication;if(!t?.enabled)return r;for(let[o,e]of Object.entries($s)){let a=t[o];if(!a?.enabled)continue;let c=a.route||e.defaultRoute,i=a.isPublic??e.defaultIsPublic;if("subEndpoints"in e&&e.subEndpoints)for(let s of e.subEndpoints){let l="routeKey"in s&&s.routeKey&&a[s.routeKey]?String(a[s.routeKey]):("defaultRoute"in s)&&s.defaultRoute?String(s.defaultRoute):`${c}${s.suffix}`;r[s.key]={method:s.method,path:l,isPublic:s.key==="MAGIC_LINK_VERIFY"?!0:i,_payload:s._payload,_success:s._success,_error:s._error}}else if("_payload"in e)r[e.key]={method:e.method,path:c,isPublic:i,_payload:e._payload,_success:e._success,_error:e._error}}return r}function Jd(){let n={};for(let r of E2){let t=r.table_name,e=`/${S2(t)}`,a=t==="files";n[kt(t,"GET")]={method:"GET",path:e,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0};let c=le(As(t));if(n[`GET_${c}_BY_ID`]={method:"GET",path:`${e}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[kt(t,"POST")]={method:"POST",path:e,isPublic:!1,isFormData:a,_payload:void 0,_success:void 0,_error:void 0},n[kt(t,"PUT")]={method:"PUT",path:`${e}/:id`,isPublic:!1,isFormData:a,_payload:void 0,_success:void 0,_error:void 0},n[kt(t,"PATCH")]={method:"PATCH",path:`${e}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[kt(t,"DELETE")]={method:"DELETE",path:`${e}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.bulk_endpoints_enabled)n[se(t,"POST")]={method:"POST",path:`${e}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[se(t,"PUT")]={method:"PUT",path:`${e}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[se(t,"DELETE")]={method:"DELETE",path:`${e}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0}}return n}function Ld(n){let r={},t=n.liveMonitoring;if(!t?.enabled)return r;let o=t.basePath||"/monitoring";for(let e of Object.values(Bd))r[e.key]={method:e.method,path:`${o}${e.suffix}`,isPublic:!1,_payload:e._payload,_success:e._success,_error:e._error};return r}function M2(n,r){let t=Wd(n),o=Yd(n),e=Jd(),a=Ld(n);return{...t,...o,...e,...a,...r??{}}}Bs();import{randomUUID as B2}from"crypto";var W2={timeout:30000,retries:0,retryDelay:1000,debug:!1};class ea{config;logger;constructor(n={}){this.config={...W2,...n},this.logger=new Jr({service:"ServerFetch",prettyPrint:this.config.debug,colorize:this.config.debug,auditEnabled:!1})}buildUrl(n){if(n.startsWith("http://")||n.startsWith("https://"))return n;return this.config.baseUrl?`${this.config.baseUrl}${n}`:n}buildHeaders(n){let r=new Headers;if(this.config.defaultHeaders)for(let[t,o]of Object.entries(this.config.defaultHeaders))r.set(t,o);if(n)if(n instanceof Headers)n.forEach((t,o)=>{r.set(o,t)});else if(Array.isArray(n))for(let[t,o]of n)r.set(t,o);else for(let[t,o]of Object.entries(n))r.set(t,o);return r}parseResponseHeaders(n){let r={};if(n.forEach((t,o)=>{if(o.toLowerCase()==="set-cookie"){let e=r[o];r[o]=e?`${e}, ${t}`:t}else r[o]=t}),typeof n.getSetCookie==="function"){let t=n.getSetCookie();if(t.length>0)r["set-cookie"]=t.join(", ")}return r}async executeWithTimeout(n,r,t){let o=new AbortController,e=setTimeout(()=>o.abort(),r);try{return await Promise.race([n,new Promise((c,i)=>{o.signal.addEventListener("abort",()=>{i(Error(`Request timeout after ${r}ms`))})})])}finally{clearTimeout(e)}}async fetch(n){let r=B2(),t=performance.now(),o=this.buildUrl(n.url),e=this.buildHeaders(n.headers),a=n.timeout??this.config.timeout??30000,c=n.retries??this.config.retries??0,i=n.retryDelay??this.config.retryDelay??1000,s;if(n.body)if(typeof n.body==="object"&&!(n.body instanceof FormData)&&!(n.body instanceof URLSearchParams)&&!(n.body instanceof Blob)&&!(n.body instanceof ArrayBuffer)){if(s=JSON.stringify(n.body),!e.has("content-type"))e.set("content-type","application/json")}else s=n.body;this.logger.debug(`[${r}] ${n.method} ${o}`,{method:n.method,url:o,hasBody:!!s});let l=null,f=0;while(f<=c)try{let b=await this.executeWithTimeout(fetch(o,{method:n.method,headers:e,body:s}),a,r),$=performance.now()-t,A=this.parseResponseHeaders(b.headers),_,m,E=await b.text();if(E)try{let M=JSON.parse(E);if(b.ok)_=M;else m=M}catch{if(!b.ok)m={message:E||b.statusText}}else if(!b.ok)m={message:b.statusText};let R={isSuccess:b.ok,response:_,errors:m,code:b.status,headers:A,durationMs:$,requestId:r,createdAt:new Date};if(b.ok)this.logger.info(`[${r}] ${n.method} ${o} ${b.status}`,{method:n.method,url:o,statusCode:b.status,durationMs:Math.round($)});else this.logger.warn(`[${r}] ${n.method} ${o} ${b.status}`,{method:n.method,url:o,statusCode:b.status,durationMs:Math.round($),error:m});return R}catch(b){if(l=b instanceof Error?b:Error(String(b)),f++,f<=c)this.logger.warn(`[${r}] Retry ${f}/${c} after error`,{method:n.method,url:o,error:l.message,attempt:f,retries:c}),await new Promise(($)=>setTimeout($,i))}let u=performance.now()-t;return this.logger.error(`[${r}] ${n.method} ${o} failed`,l,{method:n.method,url:o,durationMs:Math.round(u),attempts:f}),{isSuccess:!1,response:void 0,errors:{message:l?.message||"Unknown error"},code:null,headers:{},durationMs:u,requestId:r,createdAt:new Date}}async get(n,r){return this.fetch({...r,url:n,method:"GET"})}async post(n,r,t){return this.fetch({...t,url:n,method:"POST",body:r})}async put(n,r,t){return this.fetch({...t,url:n,method:"PUT",body:r})}async patch(n,r,t){return this.fetch({...t,url:n,method:"PATCH",body:r})}async delete(n,r){return this.fetch({...r,url:n,method:"DELETE"})}}var Y2=new ea;var J2={accessToken:"access_token",refreshToken:"refresh_token",sessionToken:"session_token"};function L2(n){let r=[],t="";for(let o=0;o<n.length;o++){let e=n[o];if(e===","){let a=n.slice(o+1).trimStart();if(/^[a-zA-Z0-9_-]+=/.test(a)){r.push(t.trim()),t="";continue}}t+=e}if(t.trim())r.push(t.trim());return r}function X2(n,r){let t={},o=["x-forwarded-for","x-real-ip","user-agent","accept-language","x-request-id","x-client-ip","cf-connecting-ip","true-client-ip"];for(let s of o){let l=n.get(s);if(l)t[s]=l}if(!t["user-agent"])t["user-agent"]="Nucleus-ServerAction/1.0";let e=n.get(`x-${r.accessToken}`),a=n.get(`x-${r.refreshToken}`),c=n.get(`x-${r.sessionToken}`);if(e)t[`x-${r.accessToken}`]=e;if(a)t[`x-${r.refreshToken}`]=a;if(c)t[`x-${r.sessionToken}`]=c;let i=n.get("cookie");if(i)t.cookie=i;return t}function V2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function xd(n){let r={};for(let[t,o]of Object.entries(n)){let e=t.startsWith("_")?t:V2(t);if(o instanceof Date)r[e]=o.toISOString();else if(o&&typeof o==="object"&&!Array.isArray(o))r[e]=xd(o);else r[e]=o}return r}function C2(n,r){let t=new URLSearchParams,o=(a,c)=>{if(c===void 0||c===null)return;if(Array.isArray(c))for(let i of c)o(`${a}[]`,i);else if(c instanceof Date)t.append(a,c.toISOString());else if(typeof c==="object")for(let[i,s]of Object.entries(c))o(`${a}[${i}]`,s);else t.append(a,String(c))};for(let[a,c]of Object.entries(r))o(a,c);let e=t.toString();if(!e)return n;return n.includes("?")?`${n}&${e}`:`${n}?${e}`}function x2(n,r,t,o){let e={...J2,...r.tokenNames},a=new ea({baseUrl:r.baseUrl,debug:r.debug,timeout:30000,retries:0});return async function(i,s){let l=n[i];if(!l)return{isSuccess:!1,errors:{message:`Endpoint "${i}" not found`},code:404};let f=await t(),u=await o(),b={};u.forEach((R,M)=>{b[M]=R});let $=X2(u,e),A=l.path,_;if(s&&typeof s==="object"&&!(s instanceof FormData)){let R=s;for(let[M,S]of Object.entries(R))if(S!=null){if(M.startsWith("_"))A=A.replace(`:${M.substring(1)}`,String(S));else if(M==="id"&&A.includes(":id"))A=A.replace(":id",String(S))}}if(l.method==="GET"&&s&&typeof s==="object")A=C2(A,s);else if(s!==void 0){if(l.isFormData&&s instanceof FormData)_=s;else if(_=xd(s),!$["content-type"])$["content-type"]="application/json"}let m=await a.fetch({url:A,method:l.method,headers:$,body:_});if(m.headers["set-cookie"])try{let R=m.headers["set-cookie"],M=L2(R);for(let S of M){let[x,...D]=S.split(";");if(!x)continue;let[k,B]=x.split("=");if(k&&B){let w={};for(let g of D){let[Y,V]=g.trim().split("=");if(!Y)continue;let C=Y.toLowerCase();if(C==="path")w.path=V;else if(C==="max-age")w.maxAge=Number(V);else if(C==="expires"&&V)w.expires=new Date(V);else if(C==="httponly")w.httpOnly=!0;else if(C==="secure")w.secure=!0;else if(C==="samesite")w.sameSite=V}f.set(k.trim(),B.trim(),w)}}}catch(R){console.warn("[ServerFactory] Failed to process Set-Cookie headers:",R instanceof Error?R.message:String(R))}let E=m.response;if(m.isSuccess&&E&&typeof E==="object"&&!Array.isArray(E)){let R=E;if("success"in R&&!("data"in R)){let{success:M,message:S,error:x,...D}=R;E={success:M,...S!==void 0?{message:S}:{},...x!==void 0?{error:x}:{},...Object.keys(D).length>0?{data:D}:{}}}}return{isSuccess:m.isSuccess,data:E,errors:m.errors,code:m.code,message:m.isSuccess?void 0:m.errors?.message}}}import{useEffect as Qd,useEffectEvent as Bo,useRef as aa}from"react";import{batch as Q2,createStore as P2}from"h-state";var G2={connection:{status:"disconnected",clientId:null,subscribedTopics:[],error:null,reconnectAttempt:0},events:[],maxEvents:100},{useStore:Ws}=P2(G2,{setConnectionStatus:(n)=>(r)=>{n.connection.status=r},setClientId:(n)=>(r)=>{n.connection.clientId=r},setSubscribedTopics:(n)=>(r)=>{n.connection.subscribedTopics=r},setError:(n)=>(r)=>{n.connection.error=r},setReconnectAttempt:(n)=>(r)=>{n.connection.reconnectAttempt=r},addEvent:(n)=>(r)=>{let t=[r,...n.events];n.events=t.slice(0,n.maxEvents)},clearEvents:(n)=>()=>{n.events=[]},reset:(n)=>()=>{Q2(()=>{n.connection.status="disconnected",n.connection.clientId=null,n.connection.subscribedTopics=[],n.connection.error=null,n.connection.reconnectAttempt=0,n.events=[]})}});function O2(n){if(n.wsUrl){let a=n.wsUrl.replace(/\/$/,""),c=n.wsPath||"/api/events/subscribe",i=(n.topics||["*"]).join(",");return`${a}${c}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(i)}`}if(typeof window>"u")return"";let r=window.location.protocol==="https:"?"wss:":"ws:",t=window.location.host,o=n.wsPath||"/api/events/subscribe",e=(n.topics||["*"]).join(",");return`${r}//${t}${o}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(e)}`}var N2=0;function q2(n){let r=Ws(),t=aa(null),o=aa(null),e=aa(null),a=aa(!1),c=aa(n);c.current=n;let i=n.autoReconnect??!0,s=n.maxReconnectAttempts??10,l=n.reconnectBaseDelay??1000,f=n.reconnectMaxDelay??30000,u=n.heartbeatInterval??30000,b=n.debug??!1,$=(...B)=>{if(b)console.log("[usePubSub]",...B)},A=()=>{if(o.current)clearInterval(o.current),o.current=null},_=()=>{if(e.current)clearTimeout(e.current),e.current=null},m=(B)=>{A(),o.current=setInterval(()=>{if(B.readyState===WebSocket.OPEN)B.send(JSON.stringify({type:"ping"}))},u)},E=Bo((B)=>{try{let w=JSON.parse(B.data);switch(w.type){case"connected":r.setConnectionStatus("connected"),r.setClientId(w.clientId),r.setSubscribedTopics(w.subscribedTopics),r.setReconnectAttempt(0),r.setError(null),$("Connected, clientId:",w.clientId);break;case"subscribed":r.setSubscribedTopics(w.topics),$("Subscribed to:",w.topics);break;case"event":{let g={id:`evt_${Date.now()}_${N2++}`,topic:w.topic,data:w.data,timestamp:w.timestamp,receivedAt:Date.now(),messageId:w.messageId,isRedelivery:w.isRedelivery};if(r.addEvent(g),w.messageId&&t.current?.readyState===WebSocket.OPEN)t.current.send(JSON.stringify({type:"ack",messageId:w.messageId}));break}case"pong":break;case"error":r.setError(Error(w.error)),$("Server error:",w.error);break}}catch{$("Failed to parse message")}}),R=Bo((B)=>{if(a.current)return;if(!i)return;if(B>=s){r.setConnectionStatus("disconnected"),r.setError(Error("Max reconnection attempts reached")),$("Max reconnect attempts reached");return}let w=Math.min(l*2**B,f);$(`Reconnecting in ${w}ms (attempt ${B+1}/${s})`),r.setConnectionStatus("reconnecting"),r.setReconnectAttempt(B+1),_(),e.current=setTimeout(()=>{if(!a.current)M()},w)}),M=Bo(()=>{if(a.current)return;if(t.current?.readyState===WebSocket.OPEN)return;if(!c.current.userId)return;if(t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}let B=O2(c.current);if(!B)return;r.setConnectionStatus("connecting"),r.setError(null),$("Connecting to:",B);let w=new WebSocket(B);t.current=w,w.onopen=()=>{$("WebSocket opened"),m(w)},w.onmessage=E,w.onerror=()=>{$("WebSocket error"),r.setError(Error("WebSocket connection error"))},w.onclose=(g)=>{if($("WebSocket closed",g.code,g.reason),A(),r.setConnectionStatus("disconnected"),r.setClientId(null),!a.current&&g.code!==4001){let Y=r.connection.reconnectAttempt;R(Y)}}}),S=Bo(()=>{if(A(),_(),t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}r.setConnectionStatus("disconnected"),r.setClientId(null)}),x=Bo((B)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"subscribe",topics:B}))}),D=Bo((B)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"unsubscribe",topics:B}))}),k=Bo((B)=>{return r.events.filter((w)=>w.topic===B)});return Qd(()=>{if(a.current=!1,n.userId)M();return()=>{a.current=!0,S()}},[n.userId]),Qd(()=>{if(r.connection.status==="connected"&&n.topics)x(n.topics)},[n.topics?.join(",")]),{isConnected:r.connection.status==="connected",isConnecting:r.connection.status==="connecting"||r.connection.status==="reconnecting",clientId:r.connection.clientId,subscribedTopics:r.connection.subscribedTopics,events:r.events,error:r.connection.error,reconnectAttempt:r.connection.reconnectAttempt,connect:M,disconnect:S,subscribe:x,unsubscribe:D,clearEvents:r.clearEvents,getEventsByTopic:k}}import{randomUUID as aE}from"crypto";var xs=Rr(Nd(),1);import{Elysia as uc,NotFoundError as de}from"elysia";var jr,to,Lt=typeof Bun<"u"&&!!Bun.file;function fe(){if(jr||(jr=process.getBuiltinModule("fs/promises")),to||(to=process.getBuiltinModule("path")),!to){console.warn("@elysiajs/static require path to be available.");return}return[jr,to]}async function qd(n){if(jr||fe(),Lt){let r=new Bun.Glob("**/*.html"),t=[];for await(let o of r.scan(n))t.push(to.join(n,o));return t}return[]}async function Js(n){if(jr||fe(),Lt){let t=new Bun.Glob("**/*"),o=[];for await(let e of t.scan(n))o.push(to.join(n,e));return o}let r=await jr.readdir(n).catch(()=>[]);return(await Promise.all(r.map(async(t)=>{let o=n+to.sep+t,e=await jr.stat(o).catch(()=>null);return e?e.isDirectory()?await Js(o):[to.resolve(n,o)]:[]}))).flat()}function Ls(n){return jr||fe(),jr.stat(n).then(()=>!0,()=>!1)}class Xs{constructor(n=250,r=10800){this.max=n,this.ttl=r,this.map=new Map}get(n){let r=this.map.get(n);if(r)return r[1]<=Date.now()?void this.delete(n):(this.map.delete(n),this.map.set(n,r),r[0])}set(n,r){if(this.interval||(this.interval=setInterval(()=>{let t=Date.now();for(let[o,e]of this.map)e[1]<=t&&this.map.delete(o)},this.ttl)),this.map.has(n))this.map.delete(n);else if(this.map.size>=this.max){let t=this.map.keys().next().value;t!==void 0&&this.delete(t)}this.map.set(n,[r,Date.now()+this.ttl*1000])}delete(n){this.map.get(n)&&this.map.delete(n)}clear(){this.map.clear()}size(){return this.map.size}[Symbol.dispose](){this.interval&&clearInterval(this.interval)}}function Vs(n,r,t){if(n["cache-control"]&&/no-cache|no-store/.test(n["cache-control"]))return!1;if("if-none-match"in n){let o=n["if-none-match"];return o==="*"?!0:o===null||typeof r!="string"?!1:o===r}if(n["if-modified-since"]){let o=n["if-modified-since"];try{return jr.stat(t).then((e)=>{if(e.mtime!==void 0&&e.mtime.getTime()<=Date.parse(o))return!0})}catch{}}return!1}var dc;function ca(n){return Lt?Bun.file(n):(jr||fe(),jr.readFile(n))}async function Cs(n){return Lt?new Bun.CryptoHasher("md5").update(await n.arrayBuffer()).digest("base64"):(dc||(dc=process.getBuiltinModule("crypto")),dc?dc.createHash("md5").update(n).digest("base64"):void console.warn("[@elysiajs/static] crypto is required to generate etag."))}var ia=(n)=>{if(!n)return!1;for(let r in n)return!0;return!1};async function Fd({assets:n="public",prefix:r="/public",staticLimit:t=1024,alwaysStatic:o=!1,ignorePatterns:e=[".DS_Store",".git",".env"],headers:a,maxAge:c=86400,directive:i="public",etag:s=!0,extension:l=!0,indexHTML:f=!0,decodeURI:u,silent:b}={}){if(typeof process>"u"||typeof process.getBuiltinModule>"u")return b||console.warn("[@elysiajs/static] require process.getBuiltinModule. Static plugin is disabled"),new uc;let $=fe();if(!$)return new uc;let[A,_]=$,m=_.sep!=="/"?(D)=>D.replace(/\\/g,"/"):(D)=>D,E=new Xs;r===_.sep&&(r="");let R=_.resolve(n),M=e.length?(D)=>e.find((k)=>typeof k=="string"?k.includes(D):k.test(D)):()=>!1,S=new uc({name:"static",seed:r});if(o){let D=await Js(_.resolve(n));if(D.length<=t)for(let k of D){let B=function({headers:C}){if(V){let L=Vs(C,V,k);if(L===!0)return new Response(null,{status:304,headers:ia(a)?a:void 0});if(L!==!1){let J=E.get(g);return J?J.clone():L.then((W)=>{if(W)return new Response(null,{status:304,headers:a||void 0});let X=new Response(Y,{headers:Object.assign({"Cache-Control":c?`${i}, max-age=${c}`:i},a,V?{Etag:V}:{})});return E.set(r,X),X.clone()})}}let Q=E.get(g);if(Q)return Q.clone();let p=new Response(Y,{headers:Object.assign({"Cache-Control":c?`${i}, max-age=${c}`:i},a,V?{Etag:V}:{})});return E.set(g,p),p.clone()};var x=B;if(!k||M(k))continue;let w=k.replace(R,"");u&&(w=xs.default(w)??w);let g=m(_.join(r,w));if(Lt&&k.endsWith(".html")){let C=await import(k);S.get(g,C.default),f&&g.endsWith("/index.html")&&S.get(g.replace("/index.html",""),C.default);continue}l||(g=m(g.slice(0,g.lastIndexOf("."))));let Y=Lt?ca(k):await ca(k);if(!Y)return b||console.warn(`[@elysiajs/static] Failed to load file: ${k}`),new uc;let V=await Cs(Y);S.get(g,s?B:new Response(Y,ia(a)?{headers:a}:void 0)),f&&g.endsWith("/index.html")&&S.get(g.replace("/index.html",""),s?B:new Response(Y,ia(a)?{headers:a}:void 0))}return S}if(!(`GET_${r}/*`in S.routeTree)){if(Lt){let D=await qd(_.resolve(n));for(let k of D){if(!k||M(k))continue;let B=k.replace(R,""),w=m(_.join(r,B)),g=await import(k);S.get(w,g.default),f&&w.endsWith("/index.html")&&S.get(w.replace("/index.html",""),g.default)}}S.onError(()=>{}).get(`${r.endsWith("/")?r.slice(0,-1):r}/*`,async({params:D,headers:k})=>{let B=m(_.join(n,u?xs.default(D["*"])??D["*"]:D["*"]));if(M(B))throw new de;let w=E.get(B);if(w)return w.clone();try{let g=await A.stat(B).catch(()=>null);if(!g)throw new de;if(!f&&g.isDirectory())throw new de;let Y;if(!Lt&&f){let Q=_.join(B,"index.html"),p=E.get(Q);if(p)return p.clone();await Ls(Q)&&(Y=await ca(Q))}if(!Y&&!g.isDirectory()&&await Ls(B))Y=await ca(B);else throw new de;if(!s)return new Response(Y,ia(a)?{headers:a}:void 0);let V=await Cs(Y);if(V&&await Vs(k,V,B))return new Response(null,{status:304});let C=new Response(Y,{headers:Object.assign({"Cache-Control":c?`${i}, max-age=${c}`:i},a,V?{Etag:V}:{})});return E.set(B,C),C.clone()}catch(g){throw g instanceof de?g:(b||console.error("[@elysiajs/static]",g),new de)}})}return S}Jl();Sl();import{pushSchema as cE}from"drizzle-kit/api";import{and as ac,eq as gr}from"drizzle-orm";import{drizzle as iE}from"drizzle-orm/node-postgres";import{pgSchema as sE}from"drizzle-orm/pg-core";import lE from"elysia";var Sb=[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],bulk_endpoints_enabled:!0,columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]}];var $h={GET:["GET"],POST:["POST"],PUT:["PUT"],DELETE:["DELETE"],PATCH:["PATCH"],TOGGLE:["PATCH"],VERIFICATION:["POST"]};function Ah(n,r){let t=[],o=n.authentication;if(!o)return t;if(o.login?.enabled&&o.login?.isPublic)t.push({path:o.login.route||`${r}/auth/login`,method:"POST",source:"auth"});if(o.register?.enabled&&o.register?.isPublic)t.push({path:o.register.route||`${r}/auth/register`,method:"POST",source:"auth"});if(o.logout?.enabled&&o.logout?.isPublic)t.push({path:o.logout.route||`${r}/auth/logout`,method:"POST",source:"auth"});if(o.refresh?.enabled&&o.refresh?.isPublic)t.push({path:o.refresh.route||`${r}/auth/refresh`,method:"POST",source:"auth"});if(o.passwordReset?.enabled&&o.passwordReset?.isPublic){let e=o.passwordReset.route||`${r}/auth/password-reset`;t.push({path:`${e}/request`,method:"POST",source:"auth"},{path:`${e}/confirm`,method:"POST",source:"auth"})}if(o.passwordChange?.enabled&&o.passwordChange?.isPublic)t.push({path:o.passwordChange.route||`${r}/auth/password-change`,method:"POST",source:"auth"});if(o.magicLink?.enabled&&o.magicLink?.isPublic)t.push({path:o.magicLink.route||`${r}/auth/magic-link`,method:"POST",source:"auth"},{path:o.magicLink.verifyRoute||`${r}/auth/magic-link/verify`,method:"GET",source:"auth"});if(o.register?.enabled&&o.register?.emailVerification?.enabled)t.push({path:`${r}/verify-email`,method:"GET",source:"auth"},{path:`${r}/resend-verification`,method:"POST",source:"auth"});if(o.invite?.enabled&&o.invite?.isPublic)t.push({path:o.invite.route||`${r}/auth/invite`,method:"POST",source:"auth"});if(o.invite?.enabled){let e=o.invite.route||`${r}/auth/invite`;t.push({path:`${e}/verify`,method:"POST",source:"auth"})}if(o.passwordSet?.enabled)t.push({path:o.passwordSet.route||`${r}/auth/password-set`,method:"POST",source:"auth"});if(o.captcha?.enabled&&o.captcha?.isPublic){let e=o.captcha.route||`${r}/auth/captcha`;t.push({path:`${e}/generate`,method:"GET",source:"auth"},{path:`${e}/validate`,method:"POST",source:"auth"})}if(o.oauth?.enabled){let e=o.oauth.basePath||`${r}/auth/oauth`,a=["google","github","microsoft","discord","facebook","twitter","apple","custom"];t.push({path:`${e}/providers`,method:"GET",source:"auth"});for(let c of a)t.push({path:`${e}/${c}`,method:"GET",source:"auth"},{path:`${e}/${c}/callback`,method:"GET",source:"auth"})}return t}function Mb(n,r,t){let o=[];for(let e of n){if(!e.is_public)continue;let a=`${r}/${t}/${e.table_name}`;for(let[c,i]of Object.entries(e.is_public)){if(!i)continue;let s=$h[c];if(!s)continue;for(let l of s)if(l==="GET")o.push({path:a,method:"GET",source:"entity"}),o.push({path:`${a}/:id`,method:"GET",source:"entity"});else if(l==="POST")o.push({path:a,method:"POST",source:"entity"});else if(l==="PUT"||l==="PATCH")o.push({path:`${a}/:id`,method:l,source:"entity"});else if(l==="DELETE")o.push({path:`${a}/:id`,method:"DELETE",source:"entity"})}}return o}function Rh(n,r,t){return Mb(n,r,t)}function Ll(n,r,t="",o="public"){let e=Ah(n,t),a=Mb(n.entities||[],t,o),c=Rh(r,t,o),i=[];if(n.pubsub?.enabled){let l=n.pubsub.basePath||"/subs",f=n.pubsub.wsPath||"/api/events/subscribe";i.push({path:`${l}/:topic`,method:"POST",source:"system"},{path:f,method:"GET",source:"system"})}let s=[{path:"/nucleus-core",method:"GET",source:"custom"},{path:"/public",method:"GET",source:"custom"},{path:"/docs",method:"GET",source:"custom"},{path:"/docs/json",method:"GET",source:"custom"},{path:"/swagger",method:"GET",source:"custom"},{path:"/swagger/json",method:"GET",source:"custom"}];return[...e,...a,...c,...i,...s]}function Xl(n,r,t){let o=r.replace(/\/$/,""),e=t.toUpperCase();for(let a of n){if(a.method!==e)continue;if(kh(a.path,o))return!0}return!1}function kh(n,r){if(n===r)return!0;let t=n.split("/").filter(Boolean),o=r.split("/").filter(Boolean);if(t.length!==o.length)return!1;for(let e=0;e<t.length;e++){let a=t[e],c=o[e];if(a?.startsWith(":"))continue;if(a!==c)return!1}return!0}Rl();Kc();Ic();import{asc as r5,desc as t5,eq as ir,ilike as lg,inArray as o5,notInArray as e5,or as a5}from"drizzle-orm";import{drizzle as c5}from"drizzle-orm/node-postgres";import{Elysia as i5,t as Cn}from"elysia";import{t as Nn}from"elysia";function nf(n){let r={};if(!n||n.length===0)return Nn.Object({},{additionalProperties:!0});for(let t of n)switch(t.type?.toLowerCase()||"string"){case"integer":case"int":case"serial":case"bigserial":case"numeric":case"decimal":r[t.name]=t.notNull?Nn.Number():Nn.Optional(Nn.Number());break;case"boolean":r[t.name]=t.notNull?Nn.Boolean():Nn.Optional(Nn.Boolean());break;case"timestamp":case"timestamptz":case"date":r[t.name]=t.notNull?Nn.String({format:"date-time"}):Nn.Optional(Nn.String({format:"date-time"}));break;case"json":case"jsonb":r[t.name]=Nn.Optional(Nn.Unknown());break;case"uuid":r[t.name]=t.notNull?Nn.String({format:"uuid"}):Nn.Optional(Nn.String({format:"uuid"}));break;default:r[t.name]=t.notNull?Nn.String():Nn.Optional(Nn.String())}return Nn.Object(r,{additionalProperties:!0})}function sg(n){return Nn.Array(Nn.Object({id:Nn.String(),data:nf(n)}))}function rf(n,r){let{db:t,schemaTables:o,schemaRelations:e,entities:a,logger:c,databaseUrl:i,storage:s,authorization:l}=r,f=ma(s),u=l?.enabled??!1;if(!t)return n;let b=Object.keys(o),$=a.map((S)=>S.table_name),A=b.filter((S)=>!$.includes(S)),_=["userSessions","passwordResetTokens","magicLinkTokens"],m=["passwordResetTokens","magicLinkTokens"],E=["files"],R=A.filter((S)=>{if(m.includes(S)&&!r.emailServiceAvailable)return c.info(`Skipping ${S} routes - email service not available`),!1;return!0}).map((S)=>({table_name:S,group_name:_.includes(S)?"Authentication":S,is_form_data:E.includes(S)})),M=[...a,...R];c.info(`All entities: ${M.map((S)=>S.table_name).join(", ")}`);for(let S of M){let x=S.table_name,D=S.group_name||S.table_name,k=o[x];if(!k)continue;let B=e[`${x}Relations`];c.info(`Creating routes for table: ${x}`);let w=k,g=w.id,Y=t,V=nf(S.columns),C=Cn.Array(V),Q=sg(S.columns),p=Cn.Array(Cn.String()),L=new i5({prefix:`/${x}`});if(!S.excluded_methods?.includes("GET"))L.get("/",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.request.headers.get("x-user-id"),X=S.columns?.map((On)=>On.name),O=Object.keys(e).filter((On)=>On.startsWith(`${S.table_name}Relations`)).map((On)=>On.replace("Relations","")),N=null;if(u&&W){if(N=await Al({userId:W,method:"GET",entity:S.table_name,requestedFields:X,requestedRelations:O,db:Y,schemaTables:o,logger:c}),!N.authorized)return{success:!1,message:N.reason||"Unauthorized",status:403}}let j=Kl(J.query),q=[];if(u&&N?.scopeFilters)for(let[On,an]of Object.entries(N.scopeFilters)){let Sn=w[On];if(Sn)q.push(ir(Sn,an))}if(j.search&&j.searchFields){let On=j.searchFields.map((an)=>{let Sn=w[an.trim()];return Sn?lg(Sn,`%${j.search}%`):null}).filter((an)=>an!==null);if(On.length>0){let an=a5(...On);if(an)q.push(an)}}if(j.filters){let{ne:On,gt:an,gte:Sn,lt:Sr,lte:Fr,like:Uo,isNull:ie,isNotNull:ms}=await import("drizzle-orm");for(let _r of j.filters){let lr=w[_r.field];if(!lr)continue;switch(_r.operator){case"eq":q.push(ir(lr,_r.value));break;case"neq":q.push(On(lr,_r.value));break;case"gt":q.push(an(lr,_r.value));break;case"gte":q.push(Sn(lr,_r.value));break;case"lt":q.push(Sr(lr,_r.value));break;case"lte":q.push(Fr(lr,_r.value));break;case"like":q.push(Uo(lr,_r.value));break;case"ilike":q.push(lg(lr,_r.value));break;case"in":q.push(o5(lr,_r.value));break;case"notIn":q.push(e5(lr,_r.value));break;case"isNull":q.push(ie(lr));break;case"isNotNull":q.push(ms(lr));break}}}let y=Y.select().from(k);if(q.length>0){let{and:On}=await import("drizzle-orm"),an=On(...q);if(an)y=y.where(an)}if(j.sort&&j.sort.length>0){let On=j.sort.map((an)=>{let Sn=w[an.field];if(!Sn)return null;return an.direction==="desc"?t5(Sn):r5(Sn)}).filter((an)=>an!==null);if(On.length>0)y=y.orderBy(...On)}let en=j.page??1,gn=j.limit??20,Gn=j.offset??(en-1)*gn,T=Y.select().from(k);if(q.length>0){let{and:On}=await import("drizzle-orm"),an=On(...q);if(an)T.where(an)}let Vn=(await T).length;y=y.limit(gn).offset(Gn);let ot=await y,ce=ng(en,gn,Gn,Vn);if(u&&N?.allowedFields)ot=Jc(ot,N.allowedFields);return{success:!0,data:{items:ot,meta:ce}}},{detail:{tags:[D],summary:`List ${x}`,description:`Get paginated list of ${x} records with filtering, sorting, and search`}}),L.get("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.params,X=Kl(J.query),O=J.request.headers.get("x-user-id"),N=S.columns?.map((gn)=>gn.name),j=X.with?.map((gn)=>gn.name),q=null;if(u&&O){if(q=await Al({userId:O,method:"GET",entity:S.table_name,requestedFields:N,requestedRelations:j,db:Y,schemaTables:o,logger:c}),!q.authorized)return{success:!1,message:q.reason||"Unauthorized",status:403}}if(X.with&&X.with.length>0&&B&&i){let gn=u&&q?.allowedRelations?X.with.filter((tn)=>q.allowedRelations?.includes(tn.name)??!1):X.with,T=await c5(i,{schema:{...o,...e}}).query[S.table_name]?.findFirst({where:ir(g,W.id),with:gn.reduce((tn,Vn)=>{return tn[Vn.name]=Vn.limit?{limit:Vn.limit}:!0,tn},{})});if(u&&q?.allowedFields&&T)T=Jc(T,q.allowedFields);if(u&&q?.allowedRelations&&T)T=pu(T,q.allowedRelations);return{success:!0,data:T||null}}let en=(await Y.select().from(k).where(ir(g,W.id)))[0]||null;if(u&&q?.allowedFields&&en)en=Jc(en,q.allowedFields);return{success:!0,data:en}},{detail:{tags:[D],summary:`Get ${x} by ID`,description:`Get a single ${x} record by its ID with optional relations`}}),L.get("/distinct/:field",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.params,X=w[W.field];if(!X)return{success:!1,message:"Field not found"};return{success:!0,data:await Y.selectDistinct({value:X}).from(k)}},{detail:{tags:[D],summary:`Get distinct ${x} values`,description:`Get distinct values for a specific field in ${x}`}});if(!S.excluded_methods?.includes("POST"))if(S.is_form_data&&f.enabled)L.post("/",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.request.headers.get("x-user-id"),{data:X,files:O}=wa(J.body,f),N=X;if(S.columns){N=_e(N,S.columns);let y=ge(N,S.columns,!1);if(!y.valid)return{success:!1,message:"Validation failed",errors:y.errors}}let j=null;if(O.length>0){if(j=await ha(O,f,S.table_name),j.failed.length>0&&j.success.length===0)return{success:!1,message:"File upload failed",errors:j.failed};if(j.success.length>0){let y=j.success[0];if(y){let en=y.originalName.split(".").pop()||"";N={...N,id:y.id,name:y.name,originalName:y.originalName,path:y.path,mimeType:y.mimeType,size:y.size,extension:en,uploadedBy:W}}}}if(W)N.createdBy=W;let q=await Y.insert(k).values(N).returning();{let y=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:String(q[0]?.id??""),operation:"CREATE",userId:W||void 0,summary:`Created ${S.table_name}`,newValues:q[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:y.pathname,query:y.search})}return{success:!0,data:q[0]}},{type:"formdata",body:Cn.Object({[f.formData.dataField]:Cn.Optional(Cn.Union([Cn.String(),Cn.Any()])),[f.formData.filesField]:Cn.Optional(Cn.Union([Cn.File(),Cn.Array(Cn.File())]))}),detail:{tags:[D],summary:`Create ${x} with files`,description:`Create a new ${x} record with file upload support`}});else L.post("/",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.body,X=J.request.headers.get("x-user-id");if(S.columns){W=_e(W,S.columns);let N=ge(W,S.columns,!1);if(!N.valid)return{success:!1,message:"Validation failed",errors:N.errors}}if(X)W.createdBy=X;let O=await Y.insert(k).values(W).returning();if(x==="userRoles"&&W.roleId&&W.userId)try{let{roles:N,users:j}=o;if(N&&j){if((await Y.select().from(N).where(ir(N.id,W.roleId)).limit(1))[0]?.name==="godmin")await Y.update(j).set({isGod:!0}).where(ir(j.id,W.userId))}}catch(N){c.warn("[Entity] Failed to sync is_god flag on userRole create")}{let N=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:String(O[0]?.id??""),operation:"CREATE",userId:X||void 0,summary:`Created ${S.table_name}`,newValues:O[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:N.pathname,query:N.search})}return{success:!0,data:O[0]}},{body:V,detail:{tags:[D],summary:`Create ${x}`,description:`Create a new ${x} record`}});if(!S.excluded_methods?.includes("PUT"))if(S.is_form_data&&f.enabled)L.put("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.params,X=J.request.headers.get("x-user-id"),{data:O,files:N}=wa(J.body,f),j=O,q=await Y.select().from(k).where(ir(g,W.id)).limit(1);if(S.columns){j=_e(j,S.columns);let gn=ge(j,S.columns,!1);if(!gn.valid)return{success:!1,message:"Validation failed",errors:gn.errors}}let y=null;if(N.length>0)y=await ha(N,f,S.table_name);let en=await Y.update(k).set(j).where(ir(g,W.id)).returning();{let gn=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:W.id,operation:"UPDATE",userId:X||void 0,summary:`Updated ${S.table_name} (${W.id})`,oldValues:q[0],newValues:en[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:gn.pathname,query:gn.search})}return{success:!0,data:{record:en[0],files:y?.success||[],fileErrors:y?.failed||[]}}},{type:"formdata",body:Cn.Object({[f.formData.dataField]:Cn.Optional(Cn.Union([Cn.String(),Cn.Any()])),[f.formData.filesField]:Cn.Optional(Cn.Union([Cn.File(),Cn.Array(Cn.File())]))}),detail:{tags:[D],summary:`Update ${x} with files`,description:`Full update of ${x} record with file upload support`}});else L.put("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let{params:W,body:X}=J,O=J.request.headers.get("x-user-id"),N=await Y.select().from(k).where(ir(g,W.id)).limit(1);if(S.columns){X=_e(X,S.columns);let q=ge(X,S.columns,!1);if(!q.valid)return{success:!1,message:"Validation failed",errors:q.errors}}if(X.updatedAt=new Date,O)X.updatedBy=O;let j=await Y.update(k).set(X).where(ir(g,W.id)).returning();{let q=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:W.id,operation:"UPDATE",userId:O||void 0,summary:`Updated ${S.table_name} (${W.id})`,oldValues:N[0],newValues:j[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:q.pathname,query:q.search})}return{success:!0,data:j[0]}},{body:V,detail:{tags:[D],summary:`Update ${x}`,description:`Full update of ${x} record`}});if(!S.excluded_methods?.includes("PATCH"))L.patch("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let{params:W,body:X}=J,O=J.request.headers.get("x-user-id"),N=await Y.select().from(k).where(ir(g,W.id)).limit(1);if(S.columns){X=_e(X,S.columns);let q=ge(X,S.columns,!0);if(!q.valid)return{success:!1,message:"Validation failed",errors:q.errors}}if(X.updatedAt=new Date,O)X.updatedBy=O;let j=await Y.update(k).set(X).where(ir(g,W.id)).returning();{let q=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:W.id,operation:"PATCH",userId:O||void 0,summary:`Patched ${S.table_name} (${W.id})`,oldValues:N[0],newValues:j[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:q.pathname,query:q.search})}return{success:!0,data:j[0]}},{body:V,detail:{tags:[D],summary:`Patch ${x}`,description:`Partial update of ${x} record`}});if(!S.excluded_methods?.includes("DELETE"))L.delete("/:id",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.params,X=J.request.headers.get("x-user-id"),O=await Y.select().from(k).where(ir(g,W.id)).limit(1);if(await Y.delete(k).where(ir(g,W.id)),x==="userRoles"&&O[0])try{let N=O[0],j=o.roles,q=o.users;if(j&&q&&N.roleId&&N.userId){if((await Y.select().from(j).where(ir(j.id,N.roleId)).limit(1))[0]?.name==="godmin")await Y.update(q).set({isGod:!1}).where(ir(q.id,N.userId))}}catch(N){c.warn("[Entity] Failed to sync is_god flag on userRole delete")}{let N=new URL(J.request.url);c.audit({entityName:S.table_name,entityId:W.id,operation:"DELETE",userId:X||void 0,summary:`Deleted ${S.table_name} (${W.id})`,oldValues:O[0],ipAddress:J.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||J.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:J.request.headers.get("user-agent")||"unknown",path:N.pathname,query:N.search})}return{success:!0,data:null}},{detail:{tags:[D],summary:`Delete ${x}`,description:`Delete a ${x} record`}});if(S.bulk_endpoints_enabled){if(!S.excluded_methods?.includes("POST"))L.post("/bulk",async(J)=>{if(!Y)return{success:!1,message:"DB not initialized"};let W=J.body;if(!Array.isArray(W))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await Y.transaction(async(O)=>{let N=[];for(let j of W){let q=await O.insert(k).values(j).returning();N.push(q[0])}return N})}}catch(X){return{success:!1,message:X instanceof Error?X.message:"Transaction failed"}}},{body:C,detail:{tags:[D],summary:`Bulk create ${x}`,description:`Create multiple ${x} records`}});if(!S.excluded_methods?.includes("PUT"))L.put("/bulk",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.body;if(!Array.isArray(W))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await Y.transaction(async(O)=>{let N=[];for(let j of W){let q=await O.update(k).set(j.data).where(ir(g,j.id)).returning();N.push(q[0])}return N})}}catch(X){return{success:!1,message:X instanceof Error?X.message:"Transaction failed"}}},{body:Q,detail:{tags:[D],summary:`Bulk update ${x}`,description:`Update multiple ${x} records`}});if(!S.excluded_methods?.includes("DELETE"))L.delete("/bulk",async(J)=>{if(!Y||!g)return{success:!1,message:"No id column or DB"};let W=J.body;if(!Array.isArray(W))return{success:!1,message:"Body must be an array of ids"};try{return await Y.transaction(async(X)=>{for(let O of W)await X.delete(k).where(ir(g,O))}),{success:!0,data:{deleted:W.length}}}catch(X){return{success:!1,message:X instanceof Error?X.message:"Transaction failed"}}},{body:p,detail:{tags:[D],summary:`Bulk delete ${x}`,description:`Delete multiple ${x} records`}})}n.use(L)}return n}import s5,{t as $a}from"elysia";function l5(n){let r=n.match(/^(\d+)(ms|s|m|h)$/);if(!r||!r[1]||!r[2])return 5000;let t=parseInt(r[1],10);switch(r[2]){case"ms":return t;case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;default:return 5000}}function tf(n){let{monitoringService:r,logger:t,endpoints:o}=n,e=new s5({prefix:o.basePath});if(!o.enabled)return e;if(o.stream.enabled)e.get(o.stream.path,async function*({request:a}){t.info("[Monitoring] SSE stream connected");let c=l5(o.stream.interval),i=!0;a.signal.addEventListener("abort",()=>{i=!1,t.info("[Monitoring] SSE stream disconnected")});let s=await r.getLatestSnapshot();if(s)yield{event:"snapshot",data:JSON.stringify(s)};while(i){if(await new Promise((u)=>setTimeout(u,c)),!i)break;let l=await r.getLatestSnapshot();if(l)yield{event:"snapshot",data:JSON.stringify(l)};let f=r.getActiveAlerts();if(f.length>0)yield{event:"alerts",data:JSON.stringify(f)}}},{detail:{tags:["Monitoring"],summary:"Stream real-time monitoring data",description:"Server-Sent Events stream for real-time monitoring metrics"}});if(o.snapshot.enabled)e.get(o.snapshot.path,async()=>{let a=await r.getLatestSnapshot();if(!a)return{isSuccess:!1,message:"No monitoring data available",data:null};return{isSuccess:!0,message:"Current monitoring snapshot",data:a}},{detail:{tags:["Monitoring"],summary:"Get current monitoring snapshot",description:"Returns the latest monitoring metrics snapshot"}});if(o.history.enabled)e.get(o.history.path,async({query:a})=>{let c=Math.min(a.minutes?parseInt(String(a.minutes),10):60,o.history.maxMinutes),i=await r.getHistory(c);return{isSuccess:!0,message:`Monitoring history for last ${c} minutes`,data:{minutes:c,count:i.length,snapshots:i}}},{query:$a.Object({minutes:$a.Optional($a.Numeric())}),detail:{tags:["Monitoring"],summary:"Get monitoring history",description:"Returns historical monitoring data for the specified time range"}});if(o.alerts.enabled)e.get(o.alerts.path,()=>{let a=r.getActiveAlerts();return{isSuccess:!0,message:"Active alerts",data:{count:a.length,alerts:a}}},{detail:{tags:["Monitoring"],summary:"Get active alerts",description:"Returns all currently active monitoring alerts"}}),e.post(`${o.alerts.path}/:alertId/acknowledge`,({params:a})=>{if(!r.acknowledgeAlert(a.alertId))return{isSuccess:!1,message:"Alert not found",data:null};return{isSuccess:!0,message:"Alert acknowledged",data:{alertId:a.alertId}}},{params:$a.Object({alertId:$a.String()}),detail:{tags:["Monitoring"],summary:"Acknowledge an alert",description:"Mark an alert as acknowledged"}});return t.info(`[Monitoring] Routes enabled at ${o.basePath} (stream: ${o.stream.enabled}, snapshot: ${o.snapshot.enabled}, history: ${o.history.enabled}, alerts: ${o.alerts.enabled})`),e}import f5,{t as Vr}from"elysia";var d5={"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache, no-transform",Connection:"keep-alive"},u5=new TextEncoder,of=(n,r)=>{let t=typeof r==="string"?r:JSON.stringify(r);return u5.encode(`event: ${n}
66
66
  data: ${t}
67
67
 
68
- `)};function fg(n){let{getService:r,logger:t,basePath:o,streamInterval:e}=n,a=new f5({prefix:o}),c=()=>{let i=r();if(!i)throw Error("Live monitoring service not initialized");return i};return a.get("/health",()=>{let i=r();return{status:i?"ok":"initializing",timestamp:Date.now(),monitoring:i?.isEnabled()??!1}},{detail:{tags:["Live Monitoring"],summary:"Health check for live monitoring"}}),a.get("/settings",()=>{return c().getSettings()},{detail:{tags:["Live Monitoring"],summary:"Get live monitoring settings"}}),a.patch("/settings",({body:i})=>{return c().changeSettings(i)},{body:Vr.Partial(Vr.Object({logMemory:Vr.Boolean(),logCpu:Vr.Boolean(),logDapr:Vr.Boolean(),logWebSocket:Vr.Boolean(),memoryLogInterval:Vr.Number(),cpuLogInterval:Vr.Number(),memoryLogLimit:Vr.Number(),cpuLogLimit:Vr.Number(),daprLogLimit:Vr.Number(),wsLogLimit:Vr.Number(),requestLogLimit:Vr.Number()})),detail:{tags:["Live Monitoring"],summary:"Change live monitoring settings"}}),a.get("/logs",()=>{return c().getLogs()},{detail:{tags:["Live Monitoring"],summary:"Get all live monitoring logs"}}),a.get("/logs/stream",({request:i})=>{let s=i.signal,l,f=c(),u=f.getSnapshot(),b={memory:u.memory.length?u.memory[u.memory.length-1]?.timestamp??0:0,cpu:u.cpu.length?u.cpu[u.cpu.length-1]?.timestamp??0:0,request:u.requests.length?u.requests[u.requests.length-1]?.timestamp??0:0,dapr:u.dapr.length?u.dapr[u.dapr.length-1]?.timestamp??0:0,ws:u.ws.length?u.ws[u.ws.length-1]?.timestamp??0:0},$=new ReadableStream({start(A){let _=!1;A.enqueue(of("snapshot",u));let E=setInterval(()=>{if(_)return;let M=f.getUpdatesSince(b);if(!M){A.enqueue(of("heartbeat",{timestamp:Date.now()}));return}if(M.memory.length)b.memory=M.memory[M.memory.length-1]?.timestamp??b.memory;if(M.cpu.length)b.cpu=M.cpu[M.cpu.length-1]?.timestamp??b.cpu;if(M.requests.length)b.request=M.requests[M.requests.length-1]?.timestamp??b.request;if(M.dapr.length)b.dapr=M.dapr[M.dapr.length-1]?.timestamp??b.dapr;if(M.ws.length)b.ws=M.ws[M.ws.length-1]?.timestamp??b.ws;A.enqueue(of("update",M))},e),R=()=>{if(_)return;_=!0,clearInterval(E),s?.removeEventListener("abort",R);try{A.close()}catch{}};l=R,s?.addEventListener("abort",R)},cancel(){l?.()}});return new Response($,{headers:d5})},{detail:{tags:["Live Monitoring"],summary:"Stream real-time live monitoring data via SSE"}}),t.info(`[LiveMonitoring] Routes enabled at ${o} (stream interval: ${e}ms)`),a}import w5 from"elysia";var Aa=new Map;var dg=null;function b5(){let n=Date.now();for(let[r,t]of Aa)if(n-t>1e4)Aa.delete(r)}var Qo={totalSent:0,totalAcked:0,totalFailed:0,averageLatencyMs:0};function ug(){if(dg)return;dg=setInterval(b5,30000)}function ef(){return`msg_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}async function af(n,r,t){if(!r.userId)return;let o=`pubsub:pending:user:${r.userId}:${r.messageId}`,e=`pubsub:user:pending-set:${r.userId}`;await n.create(o,r,t);let a=await n.read(e),c=a.success&&a.data?a.data:[];if(!c.includes(r.messageId))c.push(r.messageId),await n.create(e,c,t)}async function bg(n,r,t,o){let e=`${r}:${t}`;if(Aa.has(e))return!1;let a=`pubsub:pending:user:${r}:${t}`,c=`pubsub:user:pending-set:${r}`,i=`pubsub:ack:${r}:${t}`,s=await n.read(a);if(!s.success||!s.data)return Aa.set(e,Date.now()),!1;Aa.set(e,Date.now());let l=s.data,f={messageId:t,clientId:l.clientId,ackedAt:Date.now()};await n.create(i,f,60),await n.remove(a);let u=await n.read(c),$=(u.success&&u.data?u.data:[]).filter((_)=>_!==t);if($.length>0)await n.create(c,$,o);else await n.remove(c);let A=Date.now()-l.sentAt;return _5(A),!0}async function gg(n,r){if(!r)return[];let t=`pubsub:user:pending-set:${r}`,o=await n.read(t),e=o.success&&o.data?o.data:[],a=[];for(let c of e){let i=`pubsub:pending:user:${r}:${c}`,s=await n.read(i);if(s.success&&s.data)a.push(s.data)}return a.sort((c,i)=>c.sentAt-i.sentAt),a}async function _g(n,r){if(!r)return 0;let t=`pubsub:user:pending-set:${r}`,o=await n.read(t);return(o.success&&o.data?o.data:[]).length}async function mg(n,r,t,o,e){let a=`pubsub:pending:user:${r}:${t}`,c=await n.read(a);if(!c.success||!c.data)return!1;let i={...c.data,retryCount:c.data.retryCount+1};if(i.retryCount>=e)return await g5(n,r,t),m5(),!1;return await n.create(a,i,o),!0}async function g5(n,r,t){let o=`pubsub:pending:user:${r}:${t}`,e=`pubsub:user:pending-set:${r}`;await n.remove(o);let a=await n.read(e),i=(a.success&&a.data?a.data:[]).filter((s)=>s!==t);if(i.length>0)await n.create(e,i,300);else await n.remove(e)}function cf(){Qo.totalSent++}function _5(n){Qo.totalAcked++,Qo.averageLatencyMs=(Qo.averageLatencyMs*(Qo.totalAcked-1)+n)/Qo.totalAcked}function m5(){Qo.totalFailed++}var er=new Map,Ra=new Map;function wg(n){let{redis:r,logger:t}=n,o=n.ack.ttlSeconds,e=n.ack.enabled,a=n.ack.maxRetries,c=n.presence.enabled,i=n.presence.debounceMs,s=n.maxClientsPerUser;function l(){return`client_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}function f(k,B,w,g){let Y=$(w);if(Y.length>=s){let V=Y[0];if(V)t.info("[PubSub] Max clients reached, closing oldest",{userId:w,oldestClientId:V}),u(V)}er.set(k,{ws:B,userId:w,subscribedTopics:new Set(g),connectedAt:Date.now(),pendingAcks:new Map}),t.info("[PubSub] Client registered",{clientId:k,userId:w,topics:g,totalClients:er.size})}function u(k){let B=er.get(k);if(!B)return;let w=B.userId;if(er.delete(k),t.info("[PubSub] Client unregistered",{clientId:k,userId:w,totalClients:er.size}),c&&w){if($(w).length===0)S(w,"offline")}}function b(k,B){let w=er.get(k);if(w)w.subscribedTopics=new Set(B)}function $(k){let B=[];for(let[w,g]of er)if(g.userId===k)B.push(w);return B}function A(){let k=new Set;for(let[,B]of er)if(B.userId)k.add(B.userId);return k}function _(){return er.size}function m(k,B){let w=er.get(k);if(!w)return!1;try{return w.ws.send(JSON.stringify(B)),!0}catch{return er.delete(k),!1}}function E(k,B){let w=ef(),g=Date.now(),Y=JSON.stringify({type:"event",messageId:e?w:void 0,topic:k,data:B,timestamp:g}),V=0;for(let[C,Q]of er)if(Q.subscribedTopics.has("*")||Q.subscribedTopics.has(k))try{if(Q.ws.send(Y),V++,e){if(Q.pendingAcks.set(w,{sentAt:g,retryCount:0}),cf(),Q.userId)af(r,{messageId:w,topic:k,clientId:C,userId:Q.userId,data:B,sentAt:g,retryCount:0,maxRetries:a},o).catch(()=>{})}}catch{er.delete(C)}t.info("[PubSub] Broadcasted event",{topic:k,messageId:w,sentCount:V})}function R(k,B,w){let g=ef(),Y=Date.now(),V=JSON.stringify({type:"event",messageId:e?g:void 0,topic:B,data:w,timestamp:Y}),C=0,Q=!1;for(let[j,L]of er){if(L.userId!==k)continue;if(!L.subscribedTopics.has("*")&&!L.subscribedTopics.has(B))continue;try{if(L.ws.send(V),C++,Q=!0,e)L.pendingAcks.set(g,{sentAt:Y,retryCount:0}),cf()}catch{er.delete(j)}}if(e)af(r,{messageId:g,topic:B,clientId:Q?"delivered":"pending",userId:k,data:w,sentAt:Y,retryCount:0,maxRetries:a},o).catch(()=>{});t.info("[PubSub] Broadcasted to user",{userId:k,topic:B,messageId:g,sentCount:C,storedForOffline:!Q})}function M(k,B,w){let g=Date.now(),Y=JSON.stringify({type:"event",topic:B,data:w,timestamp:g});for(let[V,C]of er){if(C.userId!==k)continue;if(!C.subscribedTopics.has("*")&&!C.subscribedTopics.has(B))continue;try{C.ws.send(Y)}catch{er.delete(V)}}}function S(k,B){let w=`${k}:${B}`,g=Date.now(),Y=Ra.get(w);if(Y&&g-Y<i)return;if(Ra.set(w,g),Ra.size>1000){let C=g-i*2;for(let[Q,j]of Ra)if(j<C)Ra.delete(Q)}let V=A();for(let C of V)if(C!==k)M(C,"user-presence",{type:"user-presence",data:{userId:k,status:B}})}async function x(k,B){if(!e)return!0;let w=er.get(k);if(!w)return!1;if(w.pendingAcks.get(B))w.pendingAcks.delete(B);if(w.userId)return bg(r,w.userId,B,o);return!0}async function D(k,B){if(!e)return 0;let w=er.get(B);if(!w||w.userId!==k)return 0;let g=await gg(r,k);if(g.length===0)return 0;t.info("[PubSub] Delivering pending messages",{userId:k,count:g.length});let Y=0;for(let V of g){if(!w.subscribedTopics.has("*")&&!w.subscribedTopics.has(V.topic))continue;let C=JSON.stringify({type:"event",messageId:V.messageId,topic:V.topic,data:V.data,timestamp:V.sentAt,isRedelivery:!0});try{w.ws.send(C),w.pendingAcks.set(V.messageId,{sentAt:Date.now(),retryCount:V.retryCount+1}),await mg(r,k,V.messageId,o,a),Y++}catch{break}}return Y}return{generateClientId:l,registerClient:f,unregisterClient:u,updateClientTopics:b,getClientsByUser:$,getConnectedUserIds:A,getClientCount:_,sendToClient:m,broadcastEvent:E,broadcastToUser:R,broadcastToUserNoAck:M,broadcastPresenceToOthers:S,handleClientAck:x,deliverPendingMessages:D,getPendingMessageCount:(k)=>_g(r,k)}}function sf(n){let{logger:r,getLiveMonitoringService:t}=n,o=wg(n);if(n.ack.enabled)ug();let e=null,a=new w5;return a.onStart(()=>{if(n.cleanupIntervalMs>0)e=setInterval(()=>{r.info("[PubSub] Periodic cleanup running",{totalClients:o.getClientCount()})},n.cleanupIntervalMs);r.info("[PubSub] Routes initialized",{basePath:n.basePath,wsPath:n.wsPath,ackEnabled:n.ack.enabled,presenceEnabled:n.presence.enabled})}),a.onStop(()=>{if(e)clearInterval(e),e=null}),a.post(`${n.basePath}/:topic`,async({params:c,body:i,request:s,set:l})=>{let f=c.topic,u;try{if(!i){let $=await s.text();u=JSON.parse($)}else u=i}catch{return l.status=200,{status:"DROP"}}r.info("[PubSub] Dapr event received",{topic:f,eventId:u.id,source:u.source});let b=u.data?.user_id;if(b)o.broadcastToUser(b,f,u);else o.broadcastEvent(f,u);return t?.()?.recordDaprEvent("pubsub_subscribe",{topic:f,success:!0,metadata:{eventId:u.id,source:u.source,userId:b||null}}),l.status=200,{status:"SUCCESS"}}),a.ws(n.wsPath,{idleTimeout:n.wsIdleTimeout,open(c){let i=c.data?.query||{};if(!i.userId){c.send(JSON.stringify({type:"error",error:"userId is required for WebSocket connection",timestamp:Date.now()})),c.close(4001,"userId is required"),t?.()?.recordWsEvent("error",{success:!1,error:"userId is required"});return}let s=o.generateClientId(),l=i.topics?.split(",").map((u)=>u.trim())||["*"];if(c.data.clientId=s,o.registerClient(s,c,i.userId,l),c.send(JSON.stringify({type:"connected",clientId:s,subscribedTopics:l,timestamp:Date.now()})),t?.()?.recordWsEvent("connection",{clientId:s,userId:i.userId,topic:l.join(","),success:!0}),n.presence.enabled)o.broadcastPresenceToOthers(i.userId,"online");let f=i.userId;if(n.ack.enabled&&f)o.getPendingMessageCount(f).then((u)=>{if(u>0)r.info("[PubSub] Delivering pending messages",{userId:f,count:u}),o.deliverPendingMessages(f,s).catch(()=>{})}).catch(()=>{})},message(c,i){let s=c.data.clientId;try{let l=null;if(typeof i==="string")l=JSON.parse(i);else if(i&&typeof i==="object"){if(l="type"in i?i:null,typeof l==="string")l=JSON.parse(l)}if(!l?.type)return;switch(t?.()?.recordWsEvent("message",{clientId:s,messageType:l.type,success:!0,dataSize:typeof i==="string"?i.length:0}),l.type){case"subscribe":if(Array.isArray(l.topics))o.updateClientTopics(s,l.topics),o.sendToClient(s,{type:"subscribed",topics:l.topics,timestamp:Date.now()});break;case"unsubscribe":r.info("[PubSub] Unsubscribe request",{clientId:s,topics:l.topics});break;case"ping":o.sendToClient(s,{type:"pong",timestamp:Date.now()});break;case"ack":if(l.messageId)o.handleClientAck(s,l.messageId).catch(()=>{});break}}catch{r.warn("[PubSub] Failed to parse client message",{clientId:s})}},close(c,i,s){let l=c.data.clientId;if(l)o.unregisterClient(l);t?.()?.recordWsEvent("close",{clientId:l,success:!0,metadata:{code:i,reason:s||""}}),r.info("[PubSub] Client disconnected",{clientId:l,code:i,reason:s})}}),{plugin:a,clientManager:o}}Yl();import{Elysia as h5,t as Kn}from"elysia";function hg(n){let{db:r,schemaTables:t,config:o,logger:e}=n,a=new Wl({db:r,schemaTables:t,config:o,logger:e}),c=o.endpoints?.basePath||"/verifications",i=new h5({prefix:c});return i.get("/status/:entity_name/:entity_id",async({params:s})=>{return{success:!0,data:await a.getStatus(s.entity_name,s.entity_id)}},{params:Kn.Object({entity_name:Kn.String(),entity_id:Kn.String()})}),i.post("/:entity_name/:entity_id/decide",async({params:s,body:l,request:f})=>{let u=f.headers.get("x-user-id");if(!u)return{success:!1,message:"User ID required",status:401};return await a.decide({entity_name:s.entity_name,entity_id:s.entity_id,user_id:u,decision:l.decision,reason:l.reason,signature_id:l.signature_id,diff:l.diff})},{params:Kn.Object({entity_name:Kn.String(),entity_id:Kn.String()}),body:Kn.Object({decision:Kn.Union([Kn.Literal("approved"),Kn.Literal("rejected")]),reason:Kn.Optional(Kn.String()),signature_id:Kn.Optional(Kn.String()),diff:Kn.Optional(Kn.Record(Kn.String(),Kn.Unknown()))})}),i.get("/pending",async({request:s})=>{let l=s.headers.get("x-user-id");if(!l)return{success:!1,message:"User ID required",status:401};return{success:!0,data:await a.getPending(l)}}),i.get("/history/:entity_name/:entity_id",async({params:s})=>{let l=await a.getStatus(s.entity_name,s.entity_id);return{success:!0,data:{verifications:l.verifications,current_step:l.current_step,total_steps:l.total_steps,is_completed:l.is_completed,is_rejected:l.is_rejected}}},{params:Kn.Object({entity_name:Kn.String(),entity_id:Kn.String()})}),e.info(`[Verification] Routes registered at ${c}`),i}import{Elysia as P$}from"elysia";var $g=`/* basic theme */
68
+ `)};function fg(n){let{getService:r,logger:t,basePath:o,streamInterval:e}=n,a=new f5({prefix:o}),c=()=>{let i=r();if(!i)throw Error("Live monitoring service not initialized");return i};return a.get("/health",()=>{let i=r();return{status:i?"ok":"initializing",timestamp:Date.now(),monitoring:i?.isEnabled()??!1}},{detail:{tags:["Live Monitoring"],summary:"Health check for live monitoring"}}),a.get("/settings",()=>{return c().getSettings()},{detail:{tags:["Live Monitoring"],summary:"Get live monitoring settings"}}),a.patch("/settings",({body:i})=>{return c().changeSettings(i)},{body:Vr.Partial(Vr.Object({logMemory:Vr.Boolean(),logCpu:Vr.Boolean(),logDapr:Vr.Boolean(),logWebSocket:Vr.Boolean(),memoryLogInterval:Vr.Number(),cpuLogInterval:Vr.Number(),memoryLogLimit:Vr.Number(),cpuLogLimit:Vr.Number(),daprLogLimit:Vr.Number(),wsLogLimit:Vr.Number(),requestLogLimit:Vr.Number()})),detail:{tags:["Live Monitoring"],summary:"Change live monitoring settings"}}),a.get("/logs",()=>{return c().getLogs()},{detail:{tags:["Live Monitoring"],summary:"Get all live monitoring logs"}}),a.get("/logs/stream",({request:i})=>{let s=i.signal,l,f=c(),u=f.getSnapshot(),b={memory:u.memory.length?u.memory[u.memory.length-1]?.timestamp??0:0,cpu:u.cpu.length?u.cpu[u.cpu.length-1]?.timestamp??0:0,request:u.requests.length?u.requests[u.requests.length-1]?.timestamp??0:0,dapr:u.dapr.length?u.dapr[u.dapr.length-1]?.timestamp??0:0,ws:u.ws.length?u.ws[u.ws.length-1]?.timestamp??0:0},$=new ReadableStream({start(A){let _=!1;A.enqueue(of("snapshot",u));let E=setInterval(()=>{if(_)return;let M=f.getUpdatesSince(b);if(!M){A.enqueue(of("heartbeat",{timestamp:Date.now()}));return}if(M.memory.length)b.memory=M.memory[M.memory.length-1]?.timestamp??b.memory;if(M.cpu.length)b.cpu=M.cpu[M.cpu.length-1]?.timestamp??b.cpu;if(M.requests.length)b.request=M.requests[M.requests.length-1]?.timestamp??b.request;if(M.dapr.length)b.dapr=M.dapr[M.dapr.length-1]?.timestamp??b.dapr;if(M.ws.length)b.ws=M.ws[M.ws.length-1]?.timestamp??b.ws;A.enqueue(of("update",M))},e),R=()=>{if(_)return;_=!0,clearInterval(E),s?.removeEventListener("abort",R);try{A.close()}catch{}};l=R,s?.addEventListener("abort",R)},cancel(){l?.()}});return new Response($,{headers:d5})},{detail:{tags:["Live Monitoring"],summary:"Stream real-time live monitoring data via SSE"}}),t.info(`[LiveMonitoring] Routes enabled at ${o} (stream interval: ${e}ms)`),a}import w5 from"elysia";var Aa=new Map;var dg=null;function b5(){let n=Date.now();for(let[r,t]of Aa)if(n-t>1e4)Aa.delete(r)}var Qo={totalSent:0,totalAcked:0,totalFailed:0,averageLatencyMs:0};function ug(){if(dg)return;dg=setInterval(b5,30000)}function ef(){return`msg_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}async function af(n,r,t){if(!r.userId)return;let o=`pubsub:pending:user:${r.userId}:${r.messageId}`,e=`pubsub:user:pending-set:${r.userId}`;await n.create(o,r,t);let a=await n.read(e),c=a.success&&a.data?a.data:[];if(!c.includes(r.messageId))c.push(r.messageId),await n.create(e,c,t)}async function bg(n,r,t,o){let e=`${r}:${t}`;if(Aa.has(e))return!1;let a=`pubsub:pending:user:${r}:${t}`,c=`pubsub:user:pending-set:${r}`,i=`pubsub:ack:${r}:${t}`,s=await n.read(a);if(!s.success||!s.data)return Aa.set(e,Date.now()),!1;Aa.set(e,Date.now());let l=s.data,f={messageId:t,clientId:l.clientId,ackedAt:Date.now()};await n.create(i,f,60),await n.remove(a);let u=await n.read(c),$=(u.success&&u.data?u.data:[]).filter((_)=>_!==t);if($.length>0)await n.create(c,$,o);else await n.remove(c);let A=Date.now()-l.sentAt;return _5(A),!0}async function gg(n,r){if(!r)return[];let t=`pubsub:user:pending-set:${r}`,o=await n.read(t),e=o.success&&o.data?o.data:[],a=[];for(let c of e){let i=`pubsub:pending:user:${r}:${c}`,s=await n.read(i);if(s.success&&s.data)a.push(s.data)}return a.sort((c,i)=>c.sentAt-i.sentAt),a}async function _g(n,r){if(!r)return 0;let t=`pubsub:user:pending-set:${r}`,o=await n.read(t);return(o.success&&o.data?o.data:[]).length}async function mg(n,r,t,o,e){let a=`pubsub:pending:user:${r}:${t}`,c=await n.read(a);if(!c.success||!c.data)return!1;let i={...c.data,retryCount:c.data.retryCount+1};if(i.retryCount>=e)return await g5(n,r,t),m5(),!1;return await n.create(a,i,o),!0}async function g5(n,r,t){let o=`pubsub:pending:user:${r}:${t}`,e=`pubsub:user:pending-set:${r}`;await n.remove(o);let a=await n.read(e),i=(a.success&&a.data?a.data:[]).filter((s)=>s!==t);if(i.length>0)await n.create(e,i,300);else await n.remove(e)}function cf(){Qo.totalSent++}function _5(n){Qo.totalAcked++,Qo.averageLatencyMs=(Qo.averageLatencyMs*(Qo.totalAcked-1)+n)/Qo.totalAcked}function m5(){Qo.totalFailed++}var er=new Map,Ra=new Map;function wg(n){let{redis:r,logger:t}=n,o=n.ack.ttlSeconds,e=n.ack.enabled,a=n.ack.maxRetries,c=n.presence.enabled,i=n.presence.debounceMs,s=n.maxClientsPerUser;function l(){return`client_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}function f(k,B,w,g){let Y=$(w);if(Y.length>=s){let V=Y[0];if(V)t.info("[PubSub] Max clients reached, closing oldest",{userId:w,oldestClientId:V}),u(V)}er.set(k,{ws:B,userId:w,subscribedTopics:new Set(g),connectedAt:Date.now(),pendingAcks:new Map}),t.info("[PubSub] Client registered",{clientId:k,userId:w,topics:g,totalClients:er.size})}function u(k){let B=er.get(k);if(!B)return;let w=B.userId;if(er.delete(k),t.info("[PubSub] Client unregistered",{clientId:k,userId:w,totalClients:er.size}),c&&w){if($(w).length===0)S(w,"offline")}}function b(k,B){let w=er.get(k);if(w)w.subscribedTopics=new Set(B)}function $(k){let B=[];for(let[w,g]of er)if(g.userId===k)B.push(w);return B}function A(){let k=new Set;for(let[,B]of er)if(B.userId)k.add(B.userId);return k}function _(){return er.size}function m(k,B){let w=er.get(k);if(!w)return!1;try{return w.ws.send(JSON.stringify(B)),!0}catch{return er.delete(k),!1}}function E(k,B){let w=ef(),g=Date.now(),Y=JSON.stringify({type:"event",messageId:e?w:void 0,topic:k,data:B,timestamp:g}),V=0;for(let[C,Q]of er)if(Q.subscribedTopics.has("*")||Q.subscribedTopics.has(k))try{if(Q.ws.send(Y),V++,e){if(Q.pendingAcks.set(w,{sentAt:g,retryCount:0}),cf(),Q.userId)af(r,{messageId:w,topic:k,clientId:C,userId:Q.userId,data:B,sentAt:g,retryCount:0,maxRetries:a},o).catch(()=>{})}}catch{er.delete(C)}t.info("[PubSub] Broadcasted event",{topic:k,messageId:w,sentCount:V})}function R(k,B,w){let g=ef(),Y=Date.now(),V=JSON.stringify({type:"event",messageId:e?g:void 0,topic:B,data:w,timestamp:Y}),C=0,Q=!1;for(let[p,L]of er){if(L.userId!==k)continue;if(!L.subscribedTopics.has("*")&&!L.subscribedTopics.has(B))continue;try{if(L.ws.send(V),C++,Q=!0,e)L.pendingAcks.set(g,{sentAt:Y,retryCount:0}),cf()}catch{er.delete(p)}}if(e)af(r,{messageId:g,topic:B,clientId:Q?"delivered":"pending",userId:k,data:w,sentAt:Y,retryCount:0,maxRetries:a},o).catch(()=>{});t.info("[PubSub] Broadcasted to user",{userId:k,topic:B,messageId:g,sentCount:C,storedForOffline:!Q})}function M(k,B,w){let g=Date.now(),Y=JSON.stringify({type:"event",topic:B,data:w,timestamp:g});for(let[V,C]of er){if(C.userId!==k)continue;if(!C.subscribedTopics.has("*")&&!C.subscribedTopics.has(B))continue;try{C.ws.send(Y)}catch{er.delete(V)}}}function S(k,B){let w=`${k}:${B}`,g=Date.now(),Y=Ra.get(w);if(Y&&g-Y<i)return;if(Ra.set(w,g),Ra.size>1000){let C=g-i*2;for(let[Q,p]of Ra)if(p<C)Ra.delete(Q)}let V=A();for(let C of V)if(C!==k)M(C,"user-presence",{type:"user-presence",data:{userId:k,status:B}})}async function x(k,B){if(!e)return!0;let w=er.get(k);if(!w)return!1;if(w.pendingAcks.get(B))w.pendingAcks.delete(B);if(w.userId)return bg(r,w.userId,B,o);return!0}async function D(k,B){if(!e)return 0;let w=er.get(B);if(!w||w.userId!==k)return 0;let g=await gg(r,k);if(g.length===0)return 0;t.info("[PubSub] Delivering pending messages",{userId:k,count:g.length});let Y=0;for(let V of g){if(!w.subscribedTopics.has("*")&&!w.subscribedTopics.has(V.topic))continue;let C=JSON.stringify({type:"event",messageId:V.messageId,topic:V.topic,data:V.data,timestamp:V.sentAt,isRedelivery:!0});try{w.ws.send(C),w.pendingAcks.set(V.messageId,{sentAt:Date.now(),retryCount:V.retryCount+1}),await mg(r,k,V.messageId,o,a),Y++}catch{break}}return Y}return{generateClientId:l,registerClient:f,unregisterClient:u,updateClientTopics:b,getClientsByUser:$,getConnectedUserIds:A,getClientCount:_,sendToClient:m,broadcastEvent:E,broadcastToUser:R,broadcastToUserNoAck:M,broadcastPresenceToOthers:S,handleClientAck:x,deliverPendingMessages:D,getPendingMessageCount:(k)=>_g(r,k)}}function sf(n){let{logger:r,getLiveMonitoringService:t}=n,o=wg(n);if(n.ack.enabled)ug();let e=null,a=new w5;return a.onStart(()=>{if(n.cleanupIntervalMs>0)e=setInterval(()=>{r.info("[PubSub] Periodic cleanup running",{totalClients:o.getClientCount()})},n.cleanupIntervalMs);r.info("[PubSub] Routes initialized",{basePath:n.basePath,wsPath:n.wsPath,ackEnabled:n.ack.enabled,presenceEnabled:n.presence.enabled})}),a.onStop(()=>{if(e)clearInterval(e),e=null}),a.post(`${n.basePath}/:topic`,async({params:c,body:i,request:s,set:l})=>{let f=c.topic,u;try{if(!i){let $=await s.text();u=JSON.parse($)}else u=i}catch{return l.status=200,{status:"DROP"}}r.info("[PubSub] Dapr event received",{topic:f,eventId:u.id,source:u.source});let b=u.data?.user_id;if(b)o.broadcastToUser(b,f,u);else o.broadcastEvent(f,u);return t?.()?.recordDaprEvent("pubsub_subscribe",{topic:f,success:!0,metadata:{eventId:u.id,source:u.source,userId:b||null}}),l.status=200,{status:"SUCCESS"}}),a.ws(n.wsPath,{idleTimeout:n.wsIdleTimeout,open(c){let i=c.data?.query||{};if(!i.userId){c.send(JSON.stringify({type:"error",error:"userId is required for WebSocket connection",timestamp:Date.now()})),c.close(4001,"userId is required"),t?.()?.recordWsEvent("error",{success:!1,error:"userId is required"});return}let s=o.generateClientId(),l=i.topics?.split(",").map((u)=>u.trim())||["*"];if(c.data.clientId=s,o.registerClient(s,c,i.userId,l),c.send(JSON.stringify({type:"connected",clientId:s,subscribedTopics:l,timestamp:Date.now()})),t?.()?.recordWsEvent("connection",{clientId:s,userId:i.userId,topic:l.join(","),success:!0}),n.presence.enabled)o.broadcastPresenceToOthers(i.userId,"online");let f=i.userId;if(n.ack.enabled&&f)o.getPendingMessageCount(f).then((u)=>{if(u>0)r.info("[PubSub] Delivering pending messages",{userId:f,count:u}),o.deliverPendingMessages(f,s).catch(()=>{})}).catch(()=>{})},message(c,i){let s=c.data.clientId;try{let l=null;if(typeof i==="string")l=JSON.parse(i);else if(i&&typeof i==="object"){if(l="type"in i?i:null,typeof l==="string")l=JSON.parse(l)}if(!l?.type)return;switch(t?.()?.recordWsEvent("message",{clientId:s,messageType:l.type,success:!0,dataSize:typeof i==="string"?i.length:0}),l.type){case"subscribe":if(Array.isArray(l.topics))o.updateClientTopics(s,l.topics),o.sendToClient(s,{type:"subscribed",topics:l.topics,timestamp:Date.now()});break;case"unsubscribe":r.info("[PubSub] Unsubscribe request",{clientId:s,topics:l.topics});break;case"ping":o.sendToClient(s,{type:"pong",timestamp:Date.now()});break;case"ack":if(l.messageId)o.handleClientAck(s,l.messageId).catch(()=>{});break}}catch{r.warn("[PubSub] Failed to parse client message",{clientId:s})}},close(c,i,s){let l=c.data.clientId;if(l)o.unregisterClient(l);t?.()?.recordWsEvent("close",{clientId:l,success:!0,metadata:{code:i,reason:s||""}}),r.info("[PubSub] Client disconnected",{clientId:l,code:i,reason:s})}}),{plugin:a,clientManager:o}}Yl();import{Elysia as h5,t as Kn}from"elysia";function hg(n){let{db:r,schemaTables:t,config:o,logger:e}=n,a=new Wl({db:r,schemaTables:t,config:o,logger:e}),c=o.endpoints?.basePath||"/verifications",i=new h5({prefix:c});return i.get("/status/:entity_name/:entity_id",async({params:s})=>{return{success:!0,data:await a.getStatus(s.entity_name,s.entity_id)}},{params:Kn.Object({entity_name:Kn.String(),entity_id:Kn.String()})}),i.post("/:entity_name/:entity_id/decide",async({params:s,body:l,request:f})=>{let u=f.headers.get("x-user-id");if(!u)return{success:!1,message:"User ID required",status:401};return await a.decide({entity_name:s.entity_name,entity_id:s.entity_id,user_id:u,decision:l.decision,reason:l.reason,signature_id:l.signature_id,diff:l.diff})},{params:Kn.Object({entity_name:Kn.String(),entity_id:Kn.String()}),body:Kn.Object({decision:Kn.Union([Kn.Literal("approved"),Kn.Literal("rejected")]),reason:Kn.Optional(Kn.String()),signature_id:Kn.Optional(Kn.String()),diff:Kn.Optional(Kn.Record(Kn.String(),Kn.Unknown()))})}),i.get("/pending",async({request:s})=>{let l=s.headers.get("x-user-id");if(!l)return{success:!1,message:"User ID required",status:401};return{success:!0,data:await a.getPending(l)}}),i.get("/history/:entity_name/:entity_id",async({params:s})=>{let l=await a.getStatus(s.entity_name,s.entity_id);return{success:!0,data:{verifications:l.verifications,current_step:l.current_step,total_steps:l.total_steps,is_completed:l.is_completed,is_rejected:l.is_rejected}}},{params:Kn.Object({entity_name:Kn.String(),entity_id:Kn.String()})}),e.info(`[Verification] Routes registered at ${c}`),i}import{Elysia as P$}from"elysia";var $g=`/* basic theme */
69
69
  :root {
70
70
  --scalar-text-decoration: underline;
71
71
  --scalar-text-decoration-hover: underline;
@@ -1430,7 +1430,7 @@ data: ${t}
1430
1430
  *::selection {
1431
1431
  background-color: color-mix(in srgb, var(--scalar-color-accent), transparent 70%);
1432
1432
  }
1433
- `;var H={};no(H,{void:()=>t$,util:()=>un,unknown:()=>n$,union:()=>c$,undefined:()=>I5,tuple:()=>l$,transformer:()=>$$,symbol:()=>v5,string:()=>xg,strictObject:()=>a$,setErrorMap:()=>R5,set:()=>u$,record:()=>f$,quotelessJson:()=>$5,promise:()=>h$,preprocess:()=>k$,pipeline:()=>E$,ostring:()=>S$,optional:()=>A$,onumber:()=>M$,oboolean:()=>D$,objectUtil:()=>lf,object:()=>e$,number:()=>Qg,nullable:()=>R$,null:()=>Z5,never:()=>r$,nativeEnum:()=>w$,nan:()=>p5,map:()=>d$,makeIssue:()=>ka,literal:()=>_$,lazy:()=>g$,late:()=>F5,isValid:()=>so,isDirty:()=>ni,isAsync:()=>we,isAborted:()=>yc,intersection:()=>s$,instanceof:()=>j5,getParsedType:()=>Mt,getErrorMap:()=>me,function:()=>b$,enum:()=>m$,effect:()=>$$,discriminatedUnion:()=>i$,defaultErrorMap:()=>Pt,datetimeRegex:()=>Xg,date:()=>T5,custom:()=>Cg,coerce:()=>H$,boolean:()=>Pg,bigint:()=>K5,array:()=>o$,any:()=>y5,addIssueToContext:()=>p,ZodVoid:()=>Sa,ZodUnknown:()=>lo,ZodUnion:()=>Ee,ZodUndefined:()=>Re,ZodType:()=>fn,ZodTuple:()=>Ht,ZodTransformer:()=>ft,ZodSymbol:()=>Ea,ZodString:()=>ct,ZodSet:()=>No,ZodSchema:()=>fn,ZodRecord:()=>Ma,ZodReadonly:()=>Be,ZodPromise:()=>qo,ZodPipeline:()=>za,ZodParsedType:()=>N,ZodOptional:()=>st,ZodObject:()=>xn,ZodNumber:()=>fo,ZodNullable:()=>Ot,ZodNull:()=>ke,ZodNever:()=>Dt,ZodNativeEnum:()=>He,ZodNaN:()=>Ha,ZodMap:()=>Da,ZodLiteral:()=>De,ZodLazy:()=>Me,ZodIssueCode:()=>P,ZodIntersection:()=>Se,ZodFunction:()=>$e,ZodFirstPartyTypeKind:()=>on,ZodError:()=>Mr,ZodEnum:()=>bo,ZodEffects:()=>ft,ZodDiscriminatedUnion:()=>ri,ZodDefault:()=>ze,ZodDate:()=>Go,ZodCatch:()=>Ue,ZodBranded:()=>ti,ZodBoolean:()=>Ae,ZodBigInt:()=>uo,ZodArray:()=>it,ZodAny:()=>Oo,Schema:()=>fn,ParseStatus:()=>lr,OK:()=>_r,NEVER:()=>z$,INVALID:()=>y,EMPTY_PATH:()=>k5,DIRTY:()=>Po,BRAND:()=>q5});var un;(function(n){n.assertEqual=(e)=>{};function r(e){}n.assertIs=r;function t(e){throw Error()}n.assertNever=t,n.arrayToEnum=(e)=>{let a={};for(let c of e)a[c]=c;return a},n.getValidEnumValues=(e)=>{let a=n.objectKeys(e).filter((i)=>typeof e[e[i]]!=="number"),c={};for(let i of a)c[i]=e[i];return n.objectValues(c)},n.objectValues=(e)=>{return n.objectKeys(e).map(function(a){return e[a]})},n.objectKeys=typeof Object.keys==="function"?(e)=>Object.keys(e):(e)=>{let a=[];for(let c in e)if(Object.prototype.hasOwnProperty.call(e,c))a.push(c);return a},n.find=(e,a)=>{for(let c of e)if(a(c))return c;return},n.isInteger=typeof Number.isInteger==="function"?(e)=>Number.isInteger(e):(e)=>typeof e==="number"&&Number.isFinite(e)&&Math.floor(e)===e;function o(e,a=" | "){return e.map((c)=>typeof c==="string"?`'${c}'`:c).join(a)}n.joinValues=o,n.jsonStringifyReplacer=(e,a)=>{if(typeof a==="bigint")return a.toString();return a}})(un||(un={}));var lf;(function(n){n.mergeShapes=(r,t)=>{return{...r,...t}}})(lf||(lf={}));var N=un.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Mt=(n)=>{switch(typeof n){case"undefined":return N.undefined;case"string":return N.string;case"number":return Number.isNaN(n)?N.nan:N.number;case"boolean":return N.boolean;case"function":return N.function;case"bigint":return N.bigint;case"symbol":return N.symbol;case"object":if(Array.isArray(n))return N.array;if(n===null)return N.null;if(n.then&&typeof n.then==="function"&&n.catch&&typeof n.catch==="function")return N.promise;if(typeof Map<"u"&&n instanceof Map)return N.map;if(typeof Set<"u"&&n instanceof Set)return N.set;if(typeof Date<"u"&&n instanceof Date)return N.date;return N.object;default:return N.unknown}};var P=un.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),$5=(n)=>{return JSON.stringify(n,null,2).replace(/"([^"]+)":/g,"$1:")};class Mr extends Error{get errors(){return this.issues}constructor(n){super();this.issues=[],this.addIssue=(t)=>{this.issues=[...this.issues,t]},this.addIssues=(t=[])=>{this.issues=[...this.issues,...t]};let r=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,r);else this.__proto__=r;this.name="ZodError",this.issues=n}format(n){let r=n||function(e){return e.message},t={_errors:[]},o=(e)=>{for(let a of e.issues)if(a.code==="invalid_union")a.unionErrors.map(o);else if(a.code==="invalid_return_type")o(a.returnTypeError);else if(a.code==="invalid_arguments")o(a.argumentsError);else if(a.path.length===0)t._errors.push(r(a));else{let c=t,i=0;while(i<a.path.length){let s=a.path[i];if(i!==a.path.length-1)c[s]=c[s]||{_errors:[]};else c[s]=c[s]||{_errors:[]},c[s]._errors.push(r(a));c=c[s],i++}}};return o(this),t}static assert(n){if(!(n instanceof Mr))throw Error(`Not a ZodError: ${n}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,un.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(n=(r)=>r.message){let r={},t=[];for(let o of this.issues)if(o.path.length>0){let e=o.path[0];r[e]=r[e]||[],r[e].push(n(o))}else t.push(n(o));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}}Mr.create=(n)=>{return new Mr(n)};var A5=(n,r)=>{let t;switch(n.code){case P.invalid_type:if(n.received===N.undefined)t="Required";else t=`Expected ${n.expected}, received ${n.received}`;break;case P.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,un.jsonStringifyReplacer)}`;break;case P.unrecognized_keys:t=`Unrecognized key(s) in object: ${un.joinValues(n.keys,", ")}`;break;case P.invalid_union:t="Invalid input";break;case P.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${un.joinValues(n.options)}`;break;case P.invalid_enum_value:t=`Invalid enum value. Expected ${un.joinValues(n.options)}, received '${n.received}'`;break;case P.invalid_arguments:t="Invalid function arguments";break;case P.invalid_return_type:t="Invalid function return type";break;case P.invalid_date:t="Invalid date";break;case P.invalid_string:if(typeof n.validation==="object")if("includes"in n.validation){if(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position==="number")t=`${t} at one or more positions greater than or equal to ${n.validation.position}`}else if("startsWith"in n.validation)t=`Invalid input: must start with "${n.validation.startsWith}"`;else if("endsWith"in n.validation)t=`Invalid input: must end with "${n.validation.endsWith}"`;else un.assertNever(n.validation);else if(n.validation!=="regex")t=`Invalid ${n.validation}`;else t="Invalid";break;case P.too_small:if(n.type==="array")t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`;else if(n.type==="string")t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`;else if(n.type==="number")t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`;else if(n.type==="bigint")t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`;else if(n.type==="date")t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`;else t="Invalid input";break;case P.too_big:if(n.type==="array")t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`;else if(n.type==="string")t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`;else if(n.type==="number")t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`;else if(n.type==="bigint")t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`;else if(n.type==="date")t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`;else t="Invalid input";break;case P.custom:t="Invalid input";break;case P.invalid_intersection_types:t="Intersection results could not be merged";break;case P.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case P.not_finite:t="Number must be finite";break;default:t=r.defaultError,un.assertNever(n)}return{message:t}},Pt=A5;var Bg=Pt;function R5(n){Bg=n}function me(){return Bg}var ka=(n)=>{let{data:r,path:t,errorMaps:o,issueData:e}=n,a=[...t,...e.path||[]],c={...e,path:a};if(e.message!==void 0)return{...e,path:a,message:e.message};let i="",s=o.filter((l)=>!!l).slice().reverse();for(let l of s)i=l(c,{data:r,defaultError:i}).message;return{...e,path:a,message:i}},k5=[];function p(n,r){let t=me(),o=ka({issueData:r,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Pt?void 0:Pt].filter((e)=>!!e)});n.common.issues.push(o)}class lr{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(n,r){let t=[];for(let o of r){if(o.status==="aborted")return y;if(o.status==="dirty")n.dirty();t.push(o.value)}return{status:n.value,value:t}}static async mergeObjectAsync(n,r){let t=[];for(let o of r){let e=await o.key,a=await o.value;t.push({key:e,value:a})}return lr.mergeObjectSync(n,t)}static mergeObjectSync(n,r){let t={};for(let o of r){let{key:e,value:a}=o;if(e.status==="aborted")return y;if(a.status==="aborted")return y;if(e.status==="dirty")n.dirty();if(a.status==="dirty")n.dirty();if(e.value!=="__proto__"&&(typeof a.value<"u"||o.alwaysSet))t[e.value]=a.value}return{status:n.value,value:t}}}var y=Object.freeze({status:"aborted"}),Po=(n)=>({status:"dirty",value:n}),_r=(n)=>({status:"valid",value:n}),yc=(n)=>n.status==="aborted",ni=(n)=>n.status==="dirty",so=(n)=>n.status==="valid",we=(n)=>typeof Promise<"u"&&n instanceof Promise;var v;(function(n){n.errToObj=(r)=>typeof r==="string"?{message:r}:r||{},n.toString=(r)=>typeof r==="string"?r:r?.message})(v||(v={}));class lt{constructor(n,r,t,o){this._cachedPath=[],this.parent=n,this.data=r,this._path=t,this._key=o}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var Wg=(n,r)=>{if(so(r))return{success:!0,data:r.value};else{if(!n.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new Mr(n.common.issues);return this._error=t,this._error}}}};function ln(n){if(!n)return{};let{errorMap:r,invalid_type_error:t,required_error:o,description:e}=n;if(r&&(t||o))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(r)return{errorMap:r,description:e};return{errorMap:(c,i)=>{let{message:s}=n;if(c.code==="invalid_enum_value")return{message:s??i.defaultError};if(typeof i.data>"u")return{message:s??o??i.defaultError};if(c.code!=="invalid_type")return{message:i.defaultError};return{message:s??t??i.defaultError}},description:e}}class fn{get description(){return this._def.description}_getType(n){return Mt(n.data)}_getOrReturnCtx(n,r){return r||{common:n.parent.common,data:n.data,parsedType:Mt(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}_processInputParams(n){return{status:new lr,ctx:{common:n.parent.common,data:n.data,parsedType:Mt(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}}_parseSync(n){let r=this._parse(n);if(we(r))throw Error("Synchronous parse encountered promise.");return r}_parseAsync(n){let r=this._parse(n);return Promise.resolve(r)}parse(n,r){let t=this.safeParse(n,r);if(t.success)return t.data;throw t.error}safeParse(n,r){let t={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Mt(n)},o=this._parseSync({data:n,path:t.path,parent:t});return Wg(t,o)}"~validate"(n){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Mt(n)};if(!this["~standard"].async)try{let t=this._parseSync({data:n,path:[],parent:r});return so(t)?{value:t.value}:{issues:r.common.issues}}catch(t){if(t?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;r.common={issues:[],async:!0}}return this._parseAsync({data:n,path:[],parent:r}).then((t)=>so(t)?{value:t.value}:{issues:r.common.issues})}async parseAsync(n,r){let t=await this.safeParseAsync(n,r);if(t.success)return t.data;throw t.error}async safeParseAsync(n,r){let t={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Mt(n)},o=this._parse({data:n,path:t.path,parent:t}),e=await(we(o)?o:Promise.resolve(o));return Wg(t,e)}refine(n,r){let t=(o)=>{if(typeof r==="string"||typeof r>"u")return{message:r};else if(typeof r==="function")return r(o);else return r};return this._refinement((o,e)=>{let a=n(o),c=()=>e.addIssue({code:P.custom,...t(o)});if(typeof Promise<"u"&&a instanceof Promise)return a.then((i)=>{if(!i)return c(),!1;else return!0});if(!a)return c(),!1;else return!0})}refinement(n,r){return this._refinement((t,o)=>{if(!n(t))return o.addIssue(typeof r==="function"?r(t,o):r),!1;else return!0})}_refinement(n){return new ft({schema:this,typeName:on.ZodEffects,effect:{type:"refinement",refinement:n}})}superRefine(n){return this._refinement(n)}constructor(n){this.spa=this.safeParseAsync,this._def=n,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(r)=>this["~validate"](r)}}optional(){return st.create(this,this._def)}nullable(){return Ot.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return it.create(this)}promise(){return qo.create(this,this._def)}or(n){return Ee.create([this,n],this._def)}and(n){return Se.create(this,n,this._def)}transform(n){return new ft({...ln(this._def),schema:this,typeName:on.ZodEffects,effect:{type:"transform",transform:n}})}default(n){let r=typeof n==="function"?n:()=>n;return new ze({...ln(this._def),innerType:this,defaultValue:r,typeName:on.ZodDefault})}brand(){return new ti({typeName:on.ZodBranded,type:this,...ln(this._def)})}catch(n){let r=typeof n==="function"?n:()=>n;return new Ue({...ln(this._def),innerType:this,catchValue:r,typeName:on.ZodCatch})}describe(n){return new this.constructor({...this._def,description:n})}pipe(n){return za.create(this,n)}readonly(){return Be.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var E5=/^c[^\s-]{8,}$/i,S5=/^[0-9a-z]+$/,M5=/^[0-9A-HJKMNP-TV-Z]{26}$/i,D5=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,H5=/^[a-z0-9_-]{21}$/i,z5=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,U5=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,B5=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,W5="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",ff,Y5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,J5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,L5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,X5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,V5=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,C5=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Jg="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",x5=new RegExp(`^${Jg}$`);function Lg(n){let r="[0-5]\\d";if(n.precision)r=`${r}\\.\\d{${n.precision}}`;else if(n.precision==null)r=`${r}(\\.\\d+)?`;let t=n.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${r})${t}`}function Q5(n){return new RegExp(`^${Lg(n)}$`)}function Xg(n){let r=`${Jg}T${Lg(n)}`,t=[];if(t.push(n.local?"Z?":"Z"),n.offset)t.push("([+-]\\d{2}:?\\d{2})");return r=`${r}(${t.join("|")})`,new RegExp(`^${r}$`)}function P5(n,r){if((r==="v4"||!r)&&Y5.test(n))return!0;if((r==="v6"||!r)&&L5.test(n))return!0;return!1}function G5(n,r){if(!z5.test(n))return!1;try{let[t]=n.split(".");if(!t)return!1;let o=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),e=JSON.parse(atob(o));if(typeof e!=="object"||e===null)return!1;if("typ"in e&&e?.typ!=="JWT")return!1;if(!e.alg)return!1;if(r&&e.alg!==r)return!1;return!0}catch{return!1}}function O5(n,r){if((r==="v4"||!r)&&J5.test(n))return!0;if((r==="v6"||!r)&&X5.test(n))return!0;return!1}class ct extends fn{_parse(n){if(this._def.coerce)n.data=String(n.data);if(this._getType(n)!==N.string){let e=this._getOrReturnCtx(n);return p(e,{code:P.invalid_type,expected:N.string,received:e.parsedType}),y}let t=new lr,o=void 0;for(let e of this._def.checks)if(e.kind==="min"){if(n.data.length<e.value)o=this._getOrReturnCtx(n,o),p(o,{code:P.too_small,minimum:e.value,type:"string",inclusive:!0,exact:!1,message:e.message}),t.dirty()}else if(e.kind==="max"){if(n.data.length>e.value)o=this._getOrReturnCtx(n,o),p(o,{code:P.too_big,maximum:e.value,type:"string",inclusive:!0,exact:!1,message:e.message}),t.dirty()}else if(e.kind==="length"){let a=n.data.length>e.value,c=n.data.length<e.value;if(a||c){if(o=this._getOrReturnCtx(n,o),a)p(o,{code:P.too_big,maximum:e.value,type:"string",inclusive:!0,exact:!0,message:e.message});else if(c)p(o,{code:P.too_small,minimum:e.value,type:"string",inclusive:!0,exact:!0,message:e.message});t.dirty()}}else if(e.kind==="email"){if(!B5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"email",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="emoji"){if(!ff)ff=new RegExp(W5,"u");if(!ff.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"emoji",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="uuid"){if(!D5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"uuid",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="nanoid"){if(!H5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"nanoid",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="cuid"){if(!E5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"cuid",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="cuid2"){if(!S5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"cuid2",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="ulid"){if(!M5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"ulid",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="url")try{new URL(n.data)}catch{o=this._getOrReturnCtx(n,o),p(o,{validation:"url",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="regex"){if(e.regex.lastIndex=0,!e.regex.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"regex",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="trim")n.data=n.data.trim();else if(e.kind==="includes"){if(!n.data.includes(e.value,e.position))o=this._getOrReturnCtx(n,o),p(o,{code:P.invalid_string,validation:{includes:e.value,position:e.position},message:e.message}),t.dirty()}else if(e.kind==="toLowerCase")n.data=n.data.toLowerCase();else if(e.kind==="toUpperCase")n.data=n.data.toUpperCase();else if(e.kind==="startsWith"){if(!n.data.startsWith(e.value))o=this._getOrReturnCtx(n,o),p(o,{code:P.invalid_string,validation:{startsWith:e.value},message:e.message}),t.dirty()}else if(e.kind==="endsWith"){if(!n.data.endsWith(e.value))o=this._getOrReturnCtx(n,o),p(o,{code:P.invalid_string,validation:{endsWith:e.value},message:e.message}),t.dirty()}else if(e.kind==="datetime"){if(!Xg(e).test(n.data))o=this._getOrReturnCtx(n,o),p(o,{code:P.invalid_string,validation:"datetime",message:e.message}),t.dirty()}else if(e.kind==="date"){if(!x5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{code:P.invalid_string,validation:"date",message:e.message}),t.dirty()}else if(e.kind==="time"){if(!Q5(e).test(n.data))o=this._getOrReturnCtx(n,o),p(o,{code:P.invalid_string,validation:"time",message:e.message}),t.dirty()}else if(e.kind==="duration"){if(!U5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"duration",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="ip"){if(!P5(n.data,e.version))o=this._getOrReturnCtx(n,o),p(o,{validation:"ip",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="jwt"){if(!G5(n.data,e.alg))o=this._getOrReturnCtx(n,o),p(o,{validation:"jwt",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="cidr"){if(!O5(n.data,e.version))o=this._getOrReturnCtx(n,o),p(o,{validation:"cidr",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="base64"){if(!V5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"base64",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="base64url"){if(!C5.test(n.data))o=this._getOrReturnCtx(n,o),p(o,{validation:"base64url",code:P.invalid_string,message:e.message}),t.dirty()}else un.assertNever(e);return{status:t.value,value:n.data}}_regex(n,r,t){return this.refinement((o)=>n.test(o),{validation:r,code:P.invalid_string,...v.errToObj(t)})}_addCheck(n){return new ct({...this._def,checks:[...this._def.checks,n]})}email(n){return this._addCheck({kind:"email",...v.errToObj(n)})}url(n){return this._addCheck({kind:"url",...v.errToObj(n)})}emoji(n){return this._addCheck({kind:"emoji",...v.errToObj(n)})}uuid(n){return this._addCheck({kind:"uuid",...v.errToObj(n)})}nanoid(n){return this._addCheck({kind:"nanoid",...v.errToObj(n)})}cuid(n){return this._addCheck({kind:"cuid",...v.errToObj(n)})}cuid2(n){return this._addCheck({kind:"cuid2",...v.errToObj(n)})}ulid(n){return this._addCheck({kind:"ulid",...v.errToObj(n)})}base64(n){return this._addCheck({kind:"base64",...v.errToObj(n)})}base64url(n){return this._addCheck({kind:"base64url",...v.errToObj(n)})}jwt(n){return this._addCheck({kind:"jwt",...v.errToObj(n)})}ip(n){return this._addCheck({kind:"ip",...v.errToObj(n)})}cidr(n){return this._addCheck({kind:"cidr",...v.errToObj(n)})}datetime(n){if(typeof n==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:n});return this._addCheck({kind:"datetime",precision:typeof n?.precision>"u"?null:n?.precision,offset:n?.offset??!1,local:n?.local??!1,...v.errToObj(n?.message)})}date(n){return this._addCheck({kind:"date",message:n})}time(n){if(typeof n==="string")return this._addCheck({kind:"time",precision:null,message:n});return this._addCheck({kind:"time",precision:typeof n?.precision>"u"?null:n?.precision,...v.errToObj(n?.message)})}duration(n){return this._addCheck({kind:"duration",...v.errToObj(n)})}regex(n,r){return this._addCheck({kind:"regex",regex:n,...v.errToObj(r)})}includes(n,r){return this._addCheck({kind:"includes",value:n,position:r?.position,...v.errToObj(r?.message)})}startsWith(n,r){return this._addCheck({kind:"startsWith",value:n,...v.errToObj(r)})}endsWith(n,r){return this._addCheck({kind:"endsWith",value:n,...v.errToObj(r)})}min(n,r){return this._addCheck({kind:"min",value:n,...v.errToObj(r)})}max(n,r){return this._addCheck({kind:"max",value:n,...v.errToObj(r)})}length(n,r){return this._addCheck({kind:"length",value:n,...v.errToObj(r)})}nonempty(n){return this.min(1,v.errToObj(n))}trim(){return new ct({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ct({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ct({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((n)=>n.kind==="datetime")}get isDate(){return!!this._def.checks.find((n)=>n.kind==="date")}get isTime(){return!!this._def.checks.find((n)=>n.kind==="time")}get isDuration(){return!!this._def.checks.find((n)=>n.kind==="duration")}get isEmail(){return!!this._def.checks.find((n)=>n.kind==="email")}get isURL(){return!!this._def.checks.find((n)=>n.kind==="url")}get isEmoji(){return!!this._def.checks.find((n)=>n.kind==="emoji")}get isUUID(){return!!this._def.checks.find((n)=>n.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((n)=>n.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((n)=>n.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((n)=>n.kind==="cuid2")}get isULID(){return!!this._def.checks.find((n)=>n.kind==="ulid")}get isIP(){return!!this._def.checks.find((n)=>n.kind==="ip")}get isCIDR(){return!!this._def.checks.find((n)=>n.kind==="cidr")}get isBase64(){return!!this._def.checks.find((n)=>n.kind==="base64")}get isBase64url(){return!!this._def.checks.find((n)=>n.kind==="base64url")}get minLength(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxLength(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}}ct.create=(n)=>{return new ct({checks:[],typeName:on.ZodString,coerce:n?.coerce??!1,...ln(n)})};function N5(n,r){let t=(n.toString().split(".")[1]||"").length,o=(r.toString().split(".")[1]||"").length,e=t>o?t:o,a=Number.parseInt(n.toFixed(e).replace(".","")),c=Number.parseInt(r.toFixed(e).replace(".",""));return a%c/10**e}class fo extends fn{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(n){if(this._def.coerce)n.data=Number(n.data);if(this._getType(n)!==N.number){let e=this._getOrReturnCtx(n);return p(e,{code:P.invalid_type,expected:N.number,received:e.parsedType}),y}let t=void 0,o=new lr;for(let e of this._def.checks)if(e.kind==="int"){if(!un.isInteger(n.data))t=this._getOrReturnCtx(n,t),p(t,{code:P.invalid_type,expected:"integer",received:"float",message:e.message}),o.dirty()}else if(e.kind==="min"){if(e.inclusive?n.data<e.value:n.data<=e.value)t=this._getOrReturnCtx(n,t),p(t,{code:P.too_small,minimum:e.value,type:"number",inclusive:e.inclusive,exact:!1,message:e.message}),o.dirty()}else if(e.kind==="max"){if(e.inclusive?n.data>e.value:n.data>=e.value)t=this._getOrReturnCtx(n,t),p(t,{code:P.too_big,maximum:e.value,type:"number",inclusive:e.inclusive,exact:!1,message:e.message}),o.dirty()}else if(e.kind==="multipleOf"){if(N5(n.data,e.value)!==0)t=this._getOrReturnCtx(n,t),p(t,{code:P.not_multiple_of,multipleOf:e.value,message:e.message}),o.dirty()}else if(e.kind==="finite"){if(!Number.isFinite(n.data))t=this._getOrReturnCtx(n,t),p(t,{code:P.not_finite,message:e.message}),o.dirty()}else un.assertNever(e);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,v.toString(r))}gt(n,r){return this.setLimit("min",n,!1,v.toString(r))}lte(n,r){return this.setLimit("max",n,!0,v.toString(r))}lt(n,r){return this.setLimit("max",n,!1,v.toString(r))}setLimit(n,r,t,o){return new fo({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:v.toString(o)}]})}_addCheck(n){return new fo({...this._def,checks:[...this._def.checks,n]})}int(n){return this._addCheck({kind:"int",message:v.toString(n)})}positive(n){return this._addCheck({kind:"min",value:0,inclusive:!1,message:v.toString(n)})}negative(n){return this._addCheck({kind:"max",value:0,inclusive:!1,message:v.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:0,inclusive:!0,message:v.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:0,inclusive:!0,message:v.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:v.toString(r)})}finite(n){return this._addCheck({kind:"finite",message:v.toString(n)})}safe(n){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:v.toString(n)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:v.toString(n)})}get minValue(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxValue(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}get isInt(){return!!this._def.checks.find((n)=>n.kind==="int"||n.kind==="multipleOf"&&un.isInteger(n.value))}get isFinite(){let n=null,r=null;for(let t of this._def.checks)if(t.kind==="finite"||t.kind==="int"||t.kind==="multipleOf")return!0;else if(t.kind==="min"){if(r===null||t.value>r)r=t.value}else if(t.kind==="max"){if(n===null||t.value<n)n=t.value}return Number.isFinite(r)&&Number.isFinite(n)}}fo.create=(n)=>{return new fo({checks:[],typeName:on.ZodNumber,coerce:n?.coerce||!1,...ln(n)})};class uo extends fn{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(n){if(this._def.coerce)try{n.data=BigInt(n.data)}catch{return this._getInvalidInput(n)}if(this._getType(n)!==N.bigint)return this._getInvalidInput(n);let t=void 0,o=new lr;for(let e of this._def.checks)if(e.kind==="min"){if(e.inclusive?n.data<e.value:n.data<=e.value)t=this._getOrReturnCtx(n,t),p(t,{code:P.too_small,type:"bigint",minimum:e.value,inclusive:e.inclusive,message:e.message}),o.dirty()}else if(e.kind==="max"){if(e.inclusive?n.data>e.value:n.data>=e.value)t=this._getOrReturnCtx(n,t),p(t,{code:P.too_big,type:"bigint",maximum:e.value,inclusive:e.inclusive,message:e.message}),o.dirty()}else if(e.kind==="multipleOf"){if(n.data%e.value!==BigInt(0))t=this._getOrReturnCtx(n,t),p(t,{code:P.not_multiple_of,multipleOf:e.value,message:e.message}),o.dirty()}else un.assertNever(e);return{status:o.value,value:n.data}}_getInvalidInput(n){let r=this._getOrReturnCtx(n);return p(r,{code:P.invalid_type,expected:N.bigint,received:r.parsedType}),y}gte(n,r){return this.setLimit("min",n,!0,v.toString(r))}gt(n,r){return this.setLimit("min",n,!1,v.toString(r))}lte(n,r){return this.setLimit("max",n,!0,v.toString(r))}lt(n,r){return this.setLimit("max",n,!1,v.toString(r))}setLimit(n,r,t,o){return new uo({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:v.toString(o)}]})}_addCheck(n){return new uo({...this._def,checks:[...this._def.checks,n]})}positive(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:v.toString(n)})}negative(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:v.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:v.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:v.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:v.toString(r)})}get minValue(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxValue(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}}uo.create=(n)=>{return new uo({checks:[],typeName:on.ZodBigInt,coerce:n?.coerce??!1,...ln(n)})};class Ae extends fn{_parse(n){if(this._def.coerce)n.data=Boolean(n.data);if(this._getType(n)!==N.boolean){let t=this._getOrReturnCtx(n);return p(t,{code:P.invalid_type,expected:N.boolean,received:t.parsedType}),y}return _r(n.data)}}Ae.create=(n)=>{return new Ae({typeName:on.ZodBoolean,coerce:n?.coerce||!1,...ln(n)})};class Go extends fn{_parse(n){if(this._def.coerce)n.data=new Date(n.data);if(this._getType(n)!==N.date){let e=this._getOrReturnCtx(n);return p(e,{code:P.invalid_type,expected:N.date,received:e.parsedType}),y}if(Number.isNaN(n.data.getTime())){let e=this._getOrReturnCtx(n);return p(e,{code:P.invalid_date}),y}let t=new lr,o=void 0;for(let e of this._def.checks)if(e.kind==="min"){if(n.data.getTime()<e.value)o=this._getOrReturnCtx(n,o),p(o,{code:P.too_small,message:e.message,inclusive:!0,exact:!1,minimum:e.value,type:"date"}),t.dirty()}else if(e.kind==="max"){if(n.data.getTime()>e.value)o=this._getOrReturnCtx(n,o),p(o,{code:P.too_big,message:e.message,inclusive:!0,exact:!1,maximum:e.value,type:"date"}),t.dirty()}else un.assertNever(e);return{status:t.value,value:new Date(n.data.getTime())}}_addCheck(n){return new Go({...this._def,checks:[...this._def.checks,n]})}min(n,r){return this._addCheck({kind:"min",value:n.getTime(),message:v.toString(r)})}max(n,r){return this._addCheck({kind:"max",value:n.getTime(),message:v.toString(r)})}get minDate(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n!=null?new Date(n):null}get maxDate(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n!=null?new Date(n):null}}Go.create=(n)=>{return new Go({checks:[],coerce:n?.coerce||!1,typeName:on.ZodDate,...ln(n)})};class Ea extends fn{_parse(n){if(this._getType(n)!==N.symbol){let t=this._getOrReturnCtx(n);return p(t,{code:P.invalid_type,expected:N.symbol,received:t.parsedType}),y}return _r(n.data)}}Ea.create=(n)=>{return new Ea({typeName:on.ZodSymbol,...ln(n)})};class Re extends fn{_parse(n){if(this._getType(n)!==N.undefined){let t=this._getOrReturnCtx(n);return p(t,{code:P.invalid_type,expected:N.undefined,received:t.parsedType}),y}return _r(n.data)}}Re.create=(n)=>{return new Re({typeName:on.ZodUndefined,...ln(n)})};class ke extends fn{_parse(n){if(this._getType(n)!==N.null){let t=this._getOrReturnCtx(n);return p(t,{code:P.invalid_type,expected:N.null,received:t.parsedType}),y}return _r(n.data)}}ke.create=(n)=>{return new ke({typeName:on.ZodNull,...ln(n)})};class Oo extends fn{constructor(){super(...arguments);this._any=!0}_parse(n){return _r(n.data)}}Oo.create=(n)=>{return new Oo({typeName:on.ZodAny,...ln(n)})};class lo extends fn{constructor(){super(...arguments);this._unknown=!0}_parse(n){return _r(n.data)}}lo.create=(n)=>{return new lo({typeName:on.ZodUnknown,...ln(n)})};class Dt extends fn{_parse(n){let r=this._getOrReturnCtx(n);return p(r,{code:P.invalid_type,expected:N.never,received:r.parsedType}),y}}Dt.create=(n)=>{return new Dt({typeName:on.ZodNever,...ln(n)})};class Sa extends fn{_parse(n){if(this._getType(n)!==N.undefined){let t=this._getOrReturnCtx(n);return p(t,{code:P.invalid_type,expected:N.void,received:t.parsedType}),y}return _r(n.data)}}Sa.create=(n)=>{return new Sa({typeName:on.ZodVoid,...ln(n)})};class it extends fn{_parse(n){let{ctx:r,status:t}=this._processInputParams(n),o=this._def;if(r.parsedType!==N.array)return p(r,{code:P.invalid_type,expected:N.array,received:r.parsedType}),y;if(o.exactLength!==null){let a=r.data.length>o.exactLength.value,c=r.data.length<o.exactLength.value;if(a||c)p(r,{code:a?P.too_big:P.too_small,minimum:c?o.exactLength.value:void 0,maximum:a?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),t.dirty()}if(o.minLength!==null){if(r.data.length<o.minLength.value)p(r,{code:P.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),t.dirty()}if(o.maxLength!==null){if(r.data.length>o.maxLength.value)p(r,{code:P.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),t.dirty()}if(r.common.async)return Promise.all([...r.data].map((a,c)=>{return o.type._parseAsync(new lt(r,a,r.path,c))})).then((a)=>{return lr.mergeArray(t,a)});let e=[...r.data].map((a,c)=>{return o.type._parseSync(new lt(r,a,r.path,c))});return lr.mergeArray(t,e)}get element(){return this._def.type}min(n,r){return new it({...this._def,minLength:{value:n,message:v.toString(r)}})}max(n,r){return new it({...this._def,maxLength:{value:n,message:v.toString(r)}})}length(n,r){return new it({...this._def,exactLength:{value:n,message:v.toString(r)}})}nonempty(n){return this.min(1,n)}}it.create=(n,r)=>{return new it({type:n,minLength:null,maxLength:null,exactLength:null,typeName:on.ZodArray,...ln(r)})};function he(n){if(n instanceof xn){let r={};for(let t in n.shape){let o=n.shape[t];r[t]=st.create(he(o))}return new xn({...n._def,shape:()=>r})}else if(n instanceof it)return new it({...n._def,type:he(n.element)});else if(n instanceof st)return st.create(he(n.unwrap()));else if(n instanceof Ot)return Ot.create(he(n.unwrap()));else if(n instanceof Ht)return Ht.create(n.items.map((r)=>he(r)));else return n}class xn extends fn{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let n=this._def.shape(),r=un.objectKeys(n);return this._cached={shape:n,keys:r},this._cached}_parse(n){if(this._getType(n)!==N.object){let s=this._getOrReturnCtx(n);return p(s,{code:P.invalid_type,expected:N.object,received:s.parsedType}),y}let{status:t,ctx:o}=this._processInputParams(n),{shape:e,keys:a}=this._getCached(),c=[];if(!(this._def.catchall instanceof Dt&&this._def.unknownKeys==="strip")){for(let s in o.data)if(!a.includes(s))c.push(s)}let i=[];for(let s of a){let l=e[s],f=o.data[s];i.push({key:{status:"valid",value:s},value:l._parse(new lt(o,f,o.path,s)),alwaysSet:s in o.data})}if(this._def.catchall instanceof Dt){let s=this._def.unknownKeys;if(s==="passthrough")for(let l of c)i.push({key:{status:"valid",value:l},value:{status:"valid",value:o.data[l]}});else if(s==="strict"){if(c.length>0)p(o,{code:P.unrecognized_keys,keys:c}),t.dirty()}else if(s==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let s=this._def.catchall;for(let l of c){let f=o.data[l];i.push({key:{status:"valid",value:l},value:s._parse(new lt(o,f,o.path,l)),alwaysSet:l in o.data})}}if(o.common.async)return Promise.resolve().then(async()=>{let s=[];for(let l of i){let f=await l.key,u=await l.value;s.push({key:f,value:u,alwaysSet:l.alwaysSet})}return s}).then((s)=>{return lr.mergeObjectSync(t,s)});else return lr.mergeObjectSync(t,i)}get shape(){return this._def.shape()}strict(n){return v.errToObj,new xn({...this._def,unknownKeys:"strict",...n!==void 0?{errorMap:(r,t)=>{let o=this._def.errorMap?.(r,t).message??t.defaultError;if(r.code==="unrecognized_keys")return{message:v.errToObj(n).message??o};return{message:o}}}:{}})}strip(){return new xn({...this._def,unknownKeys:"strip"})}passthrough(){return new xn({...this._def,unknownKeys:"passthrough"})}extend(n){return new xn({...this._def,shape:()=>({...this._def.shape(),...n})})}merge(n){return new xn({unknownKeys:n._def.unknownKeys,catchall:n._def.catchall,shape:()=>({...this._def.shape(),...n._def.shape()}),typeName:on.ZodObject})}setKey(n,r){return this.augment({[n]:r})}catchall(n){return new xn({...this._def,catchall:n})}pick(n){let r={};for(let t of un.objectKeys(n))if(n[t]&&this.shape[t])r[t]=this.shape[t];return new xn({...this._def,shape:()=>r})}omit(n){let r={};for(let t of un.objectKeys(this.shape))if(!n[t])r[t]=this.shape[t];return new xn({...this._def,shape:()=>r})}deepPartial(){return he(this)}partial(n){let r={};for(let t of un.objectKeys(this.shape)){let o=this.shape[t];if(n&&!n[t])r[t]=o;else r[t]=o.optional()}return new xn({...this._def,shape:()=>r})}required(n){let r={};for(let t of un.objectKeys(this.shape))if(n&&!n[t])r[t]=this.shape[t];else{let e=this.shape[t];while(e instanceof st)e=e._def.innerType;r[t]=e}return new xn({...this._def,shape:()=>r})}keyof(){return Vg(un.objectKeys(this.shape))}}xn.create=(n,r)=>{return new xn({shape:()=>n,unknownKeys:"strip",catchall:Dt.create(),typeName:on.ZodObject,...ln(r)})};xn.strictCreate=(n,r)=>{return new xn({shape:()=>n,unknownKeys:"strict",catchall:Dt.create(),typeName:on.ZodObject,...ln(r)})};xn.lazycreate=(n,r)=>{return new xn({shape:n,unknownKeys:"strip",catchall:Dt.create(),typeName:on.ZodObject,...ln(r)})};class Ee extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=this._def.options;function o(e){for(let c of e)if(c.result.status==="valid")return c.result;for(let c of e)if(c.result.status==="dirty")return r.common.issues.push(...c.ctx.common.issues),c.result;let a=e.map((c)=>new Mr(c.ctx.common.issues));return p(r,{code:P.invalid_union,unionErrors:a}),y}if(r.common.async)return Promise.all(t.map(async(e)=>{let a={...r,common:{...r.common,issues:[]},parent:null};return{result:await e._parseAsync({data:r.data,path:r.path,parent:a}),ctx:a}})).then(o);else{let e=void 0,a=[];for(let i of t){let s={...r,common:{...r.common,issues:[]},parent:null},l=i._parseSync({data:r.data,path:r.path,parent:s});if(l.status==="valid")return l;else if(l.status==="dirty"&&!e)e={result:l,ctx:s};if(s.common.issues.length)a.push(s.common.issues)}if(e)return r.common.issues.push(...e.ctx.common.issues),e.result;let c=a.map((i)=>new Mr(i));return p(r,{code:P.invalid_union,unionErrors:c}),y}}get options(){return this._def.options}}Ee.create=(n,r)=>{return new Ee({options:n,typeName:on.ZodUnion,...ln(r)})};var Gt=(n)=>{if(n instanceof Me)return Gt(n.schema);else if(n instanceof ft)return Gt(n.innerType());else if(n instanceof De)return[n.value];else if(n instanceof bo)return n.options;else if(n instanceof He)return un.objectValues(n.enum);else if(n instanceof ze)return Gt(n._def.innerType);else if(n instanceof Re)return[void 0];else if(n instanceof ke)return[null];else if(n instanceof st)return[void 0,...Gt(n.unwrap())];else if(n instanceof Ot)return[null,...Gt(n.unwrap())];else if(n instanceof ti)return Gt(n.unwrap());else if(n instanceof Be)return Gt(n.unwrap());else if(n instanceof Ue)return Gt(n._def.innerType);else return[]};class ri extends fn{_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==N.object)return p(r,{code:P.invalid_type,expected:N.object,received:r.parsedType}),y;let t=this.discriminator,o=r.data[t],e=this.optionsMap.get(o);if(!e)return p(r,{code:P.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),y;if(r.common.async)return e._parseAsync({data:r.data,path:r.path,parent:r});else return e._parseSync({data:r.data,path:r.path,parent:r})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(n,r,t){let o=new Map;for(let e of r){let a=Gt(e.shape[n]);if(!a.length)throw Error(`A discriminator value for key \`${n}\` could not be extracted from all schema options`);for(let c of a){if(o.has(c))throw Error(`Discriminator property ${String(n)} has duplicate value ${String(c)}`);o.set(c,e)}}return new ri({typeName:on.ZodDiscriminatedUnion,discriminator:n,options:r,optionsMap:o,...ln(t)})}}function df(n,r){let t=Mt(n),o=Mt(r);if(n===r)return{valid:!0,data:n};else if(t===N.object&&o===N.object){let e=un.objectKeys(r),a=un.objectKeys(n).filter((i)=>e.indexOf(i)!==-1),c={...n,...r};for(let i of a){let s=df(n[i],r[i]);if(!s.valid)return{valid:!1};c[i]=s.data}return{valid:!0,data:c}}else if(t===N.array&&o===N.array){if(n.length!==r.length)return{valid:!1};let e=[];for(let a=0;a<n.length;a++){let c=n[a],i=r[a],s=df(c,i);if(!s.valid)return{valid:!1};e.push(s.data)}return{valid:!0,data:e}}else if(t===N.date&&o===N.date&&+n===+r)return{valid:!0,data:n};else return{valid:!1}}class Se extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=(e,a)=>{if(yc(e)||yc(a))return y;let c=df(e.value,a.value);if(!c.valid)return p(t,{code:P.invalid_intersection_types}),y;if(ni(e)||ni(a))r.dirty();return{status:r.value,value:c.data}};if(t.common.async)return Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([e,a])=>o(e,a));else return o(this._def.left._parseSync({data:t.data,path:t.path,parent:t}),this._def.right._parseSync({data:t.data,path:t.path,parent:t}))}}Se.create=(n,r,t)=>{return new Se({left:n,right:r,typeName:on.ZodIntersection,...ln(t)})};class Ht extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==N.array)return p(t,{code:P.invalid_type,expected:N.array,received:t.parsedType}),y;if(t.data.length<this._def.items.length)return p(t,{code:P.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),y;if(!this._def.rest&&t.data.length>this._def.items.length)p(t,{code:P.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty();let e=[...t.data].map((a,c)=>{let i=this._def.items[c]||this._def.rest;if(!i)return null;return i._parse(new lt(t,a,t.path,c))}).filter((a)=>!!a);if(t.common.async)return Promise.all(e).then((a)=>{return lr.mergeArray(r,a)});else return lr.mergeArray(r,e)}get items(){return this._def.items}rest(n){return new Ht({...this._def,rest:n})}}Ht.create=(n,r)=>{if(!Array.isArray(n))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new Ht({items:n,typeName:on.ZodTuple,rest:null,...ln(r)})};class Ma extends fn{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==N.object)return p(t,{code:P.invalid_type,expected:N.object,received:t.parsedType}),y;let o=[],e=this._def.keyType,a=this._def.valueType;for(let c in t.data)o.push({key:e._parse(new lt(t,c,t.path,c)),value:a._parse(new lt(t,t.data[c],t.path,c)),alwaysSet:c in t.data});if(t.common.async)return lr.mergeObjectAsync(r,o);else return lr.mergeObjectSync(r,o)}get element(){return this._def.valueType}static create(n,r,t){if(r instanceof fn)return new Ma({keyType:n,valueType:r,typeName:on.ZodRecord,...ln(t)});return new Ma({keyType:ct.create(),valueType:n,typeName:on.ZodRecord,...ln(r)})}}class Da extends fn{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==N.map)return p(t,{code:P.invalid_type,expected:N.map,received:t.parsedType}),y;let o=this._def.keyType,e=this._def.valueType,a=[...t.data.entries()].map(([c,i],s)=>{return{key:o._parse(new lt(t,c,t.path,[s,"key"])),value:e._parse(new lt(t,i,t.path,[s,"value"]))}});if(t.common.async){let c=new Map;return Promise.resolve().then(async()=>{for(let i of a){let s=await i.key,l=await i.value;if(s.status==="aborted"||l.status==="aborted")return y;if(s.status==="dirty"||l.status==="dirty")r.dirty();c.set(s.value,l.value)}return{status:r.value,value:c}})}else{let c=new Map;for(let i of a){let{key:s,value:l}=i;if(s.status==="aborted"||l.status==="aborted")return y;if(s.status==="dirty"||l.status==="dirty")r.dirty();c.set(s.value,l.value)}return{status:r.value,value:c}}}}Da.create=(n,r,t)=>{return new Da({valueType:r,keyType:n,typeName:on.ZodMap,...ln(t)})};class No extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==N.set)return p(t,{code:P.invalid_type,expected:N.set,received:t.parsedType}),y;let o=this._def;if(o.minSize!==null){if(t.data.size<o.minSize.value)p(t,{code:P.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),r.dirty()}if(o.maxSize!==null){if(t.data.size>o.maxSize.value)p(t,{code:P.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty()}let e=this._def.valueType;function a(i){let s=new Set;for(let l of i){if(l.status==="aborted")return y;if(l.status==="dirty")r.dirty();s.add(l.value)}return{status:r.value,value:s}}let c=[...t.data.values()].map((i,s)=>e._parse(new lt(t,i,t.path,s)));if(t.common.async)return Promise.all(c).then((i)=>a(i));else return a(c)}min(n,r){return new No({...this._def,minSize:{value:n,message:v.toString(r)}})}max(n,r){return new No({...this._def,maxSize:{value:n,message:v.toString(r)}})}size(n,r){return this.min(n,r).max(n,r)}nonempty(n){return this.min(1,n)}}No.create=(n,r)=>{return new No({valueType:n,minSize:null,maxSize:null,typeName:on.ZodSet,...ln(r)})};class $e extends fn{constructor(){super(...arguments);this.validate=this.implement}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==N.function)return p(r,{code:P.invalid_type,expected:N.function,received:r.parsedType}),y;function t(c,i){return ka({data:c,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,me(),Pt].filter((s)=>!!s),issueData:{code:P.invalid_arguments,argumentsError:i}})}function o(c,i){return ka({data:c,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,me(),Pt].filter((s)=>!!s),issueData:{code:P.invalid_return_type,returnTypeError:i}})}let e={errorMap:r.common.contextualErrorMap},a=r.data;if(this._def.returns instanceof qo){let c=this;return _r(async function(...i){let s=new Mr([]),l=await c._def.args.parseAsync(i,e).catch((b)=>{throw s.addIssue(t(i,b)),s}),f=await Reflect.apply(a,this,l);return await c._def.returns._def.type.parseAsync(f,e).catch((b)=>{throw s.addIssue(o(f,b)),s})})}else{let c=this;return _r(function(...i){let s=c._def.args.safeParse(i,e);if(!s.success)throw new Mr([t(i,s.error)]);let l=Reflect.apply(a,this,s.data),f=c._def.returns.safeParse(l,e);if(!f.success)throw new Mr([o(l,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...n){return new $e({...this._def,args:Ht.create(n).rest(lo.create())})}returns(n){return new $e({...this._def,returns:n})}implement(n){return this.parse(n)}strictImplement(n){return this.parse(n)}static create(n,r,t){return new $e({args:n?n:Ht.create([]).rest(lo.create()),returns:r||lo.create(),typeName:on.ZodFunction,...ln(t)})}}class Me extends fn{get schema(){return this._def.getter()}_parse(n){let{ctx:r}=this._processInputParams(n);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}}Me.create=(n,r)=>{return new Me({getter:n,typeName:on.ZodLazy,...ln(r)})};class De extends fn{_parse(n){if(n.data!==this._def.value){let r=this._getOrReturnCtx(n);return p(r,{received:r.data,code:P.invalid_literal,expected:this._def.value}),y}return{status:"valid",value:n.data}}get value(){return this._def.value}}De.create=(n,r)=>{return new De({value:n,typeName:on.ZodLiteral,...ln(r)})};function Vg(n,r){return new bo({values:n,typeName:on.ZodEnum,...ln(r)})}class bo extends fn{_parse(n){if(typeof n.data!=="string"){let r=this._getOrReturnCtx(n),t=this._def.values;return p(r,{expected:un.joinValues(t),received:r.parsedType,code:P.invalid_type}),y}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(n.data)){let r=this._getOrReturnCtx(n),t=this._def.values;return p(r,{received:r.data,code:P.invalid_enum_value,options:t}),y}return _r(n.data)}get options(){return this._def.values}get enum(){let n={};for(let r of this._def.values)n[r]=r;return n}get Values(){let n={};for(let r of this._def.values)n[r]=r;return n}get Enum(){let n={};for(let r of this._def.values)n[r]=r;return n}extract(n,r=this._def){return bo.create(n,{...this._def,...r})}exclude(n,r=this._def){return bo.create(this.options.filter((t)=>!n.includes(t)),{...this._def,...r})}}bo.create=Vg;class He extends fn{_parse(n){let r=un.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(n);if(t.parsedType!==N.string&&t.parsedType!==N.number){let o=un.objectValues(r);return p(t,{expected:un.joinValues(o),received:t.parsedType,code:P.invalid_type}),y}if(!this._cache)this._cache=new Set(un.getValidEnumValues(this._def.values));if(!this._cache.has(n.data)){let o=un.objectValues(r);return p(t,{received:t.data,code:P.invalid_enum_value,options:o}),y}return _r(n.data)}get enum(){return this._def.values}}He.create=(n,r)=>{return new He({values:n,typeName:on.ZodNativeEnum,...ln(r)})};class qo extends fn{unwrap(){return this._def.type}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==N.promise&&r.common.async===!1)return p(r,{code:P.invalid_type,expected:N.promise,received:r.parsedType}),y;let t=r.parsedType===N.promise?r.data:Promise.resolve(r.data);return _r(t.then((o)=>{return this._def.type.parseAsync(o,{path:r.path,errorMap:r.common.contextualErrorMap})}))}}qo.create=(n,r)=>{return new qo({type:n,typeName:on.ZodPromise,...ln(r)})};class ft extends fn{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===on.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=this._def.effect||null,e={addIssue:(a)=>{if(p(t,a),a.fatal)r.abort();else r.dirty()},get path(){return t.path}};if(e.addIssue=e.addIssue.bind(e),o.type==="preprocess"){let a=o.transform(t.data,e);if(t.common.async)return Promise.resolve(a).then(async(c)=>{if(r.value==="aborted")return y;let i=await this._def.schema._parseAsync({data:c,path:t.path,parent:t});if(i.status==="aborted")return y;if(i.status==="dirty")return Po(i.value);if(r.value==="dirty")return Po(i.value);return i});else{if(r.value==="aborted")return y;let c=this._def.schema._parseSync({data:a,path:t.path,parent:t});if(c.status==="aborted")return y;if(c.status==="dirty")return Po(c.value);if(r.value==="dirty")return Po(c.value);return c}}if(o.type==="refinement"){let a=(c)=>{let i=o.refinement(c,e);if(t.common.async)return Promise.resolve(i);if(i instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return c};if(t.common.async===!1){let c=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(c.status==="aborted")return y;if(c.status==="dirty")r.dirty();return a(c.value),{status:r.value,value:c.value}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((c)=>{if(c.status==="aborted")return y;if(c.status==="dirty")r.dirty();return a(c.value).then(()=>{return{status:r.value,value:c.value}})})}if(o.type==="transform")if(t.common.async===!1){let a=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(!so(a))return y;let c=o.transform(a.value,e);if(c instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:c}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((a)=>{if(!so(a))return y;return Promise.resolve(o.transform(a.value,e)).then((c)=>({status:r.value,value:c}))});un.assertNever(o)}}ft.create=(n,r,t)=>{return new ft({schema:n,typeName:on.ZodEffects,effect:r,...ln(t)})};ft.createWithPreprocess=(n,r,t)=>{return new ft({schema:r,effect:{type:"preprocess",transform:n},typeName:on.ZodEffects,...ln(t)})};class st extends fn{_parse(n){if(this._getType(n)===N.undefined)return _r(void 0);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}st.create=(n,r)=>{return new st({innerType:n,typeName:on.ZodOptional,...ln(r)})};class Ot extends fn{_parse(n){if(this._getType(n)===N.null)return _r(null);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}Ot.create=(n,r)=>{return new Ot({innerType:n,typeName:on.ZodNullable,...ln(r)})};class ze extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;if(r.parsedType===N.undefined)t=this._def.defaultValue();return this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}ze.create=(n,r)=>{return new ze({innerType:n,typeName:on.ZodDefault,defaultValue:typeof r.default==="function"?r.default:()=>r.default,...ln(r)})};class Ue extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t={...r,common:{...r.common,issues:[]}},o=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});if(we(o))return o.then((e)=>{return{status:"valid",value:e.status==="valid"?e.value:this._def.catchValue({get error(){return new Mr(t.common.issues)},input:t.data})}});else return{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Mr(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}}Ue.create=(n,r)=>{return new Ue({innerType:n,typeName:on.ZodCatch,catchValue:typeof r.catch==="function"?r.catch:()=>r.catch,...ln(r)})};class Ha extends fn{_parse(n){if(this._getType(n)!==N.nan){let t=this._getOrReturnCtx(n);return p(t,{code:P.invalid_type,expected:N.nan,received:t.parsedType}),y}return{status:"valid",value:n.data}}}Ha.create=(n)=>{return new Ha({typeName:on.ZodNaN,...ln(n)})};var q5=Symbol("zod_brand");class ti extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}}class za extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});if(e.status==="aborted")return y;if(e.status==="dirty")return r.dirty(),Po(e.value);else return this._def.out._parseAsync({data:e.value,path:t.path,parent:t})})();else{let o=this._def.in._parseSync({data:t.data,path:t.path,parent:t});if(o.status==="aborted")return y;if(o.status==="dirty")return r.dirty(),{status:"dirty",value:o.value};else return this._def.out._parseSync({data:o.value,path:t.path,parent:t})}}static create(n,r){return new za({in:n,out:r,typeName:on.ZodPipeline})}}class Be extends fn{_parse(n){let r=this._def.innerType._parse(n),t=(o)=>{if(so(o))o.value=Object.freeze(o.value);return o};return we(r)?r.then((o)=>t(o)):t(r)}unwrap(){return this._def.innerType}}Be.create=(n,r)=>{return new Be({innerType:n,typeName:on.ZodReadonly,...ln(r)})};function Yg(n,r){let t=typeof n==="function"?n(r):typeof n==="string"?{message:n}:n;return typeof t==="string"?{message:t}:t}function Cg(n,r={},t){if(n)return Oo.create().superRefine((o,e)=>{let a=n(o);if(a instanceof Promise)return a.then((c)=>{if(!c){let i=Yg(r,o),s=i.fatal??t??!0;e.addIssue({code:"custom",...i,fatal:s})}});if(!a){let c=Yg(r,o),i=c.fatal??t??!0;e.addIssue({code:"custom",...c,fatal:i})}return});return Oo.create()}var F5={object:xn.lazycreate},on;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(on||(on={}));var j5=(n,r={message:`Input not instance of ${n.name}`})=>Cg((t)=>t instanceof n,r),xg=ct.create,Qg=fo.create,p5=Ha.create,K5=uo.create,Pg=Ae.create,T5=Go.create,v5=Ea.create,I5=Re.create,Z5=ke.create,y5=Oo.create,n$=lo.create,r$=Dt.create,t$=Sa.create,o$=it.create,e$=xn.create,a$=xn.strictCreate,c$=Ee.create,i$=ri.create,s$=Se.create,l$=Ht.create,f$=Ma.create,d$=Da.create,u$=No.create,b$=$e.create,g$=Me.create,_$=De.create,m$=bo.create,w$=He.create,h$=qo.create,$$=ft.create,A$=st.create,R$=Ot.create,k$=ft.createWithPreprocess,E$=za.create,S$=()=>xg().optional(),M$=()=>Qg().optional(),D$=()=>Pg().optional(),H$={string:(n)=>ct.create({...n,coerce:!0}),number:(n)=>fo.create({...n,coerce:!0}),boolean:(n)=>Ae.create({...n,coerce:!0}),bigint:(n)=>uo.create({...n,coerce:!0}),date:(n)=>Go.create({...n,coerce:!0})};var z$=y;var U$=H.object({name:H.string().regex(/^x-/),component:H.unknown()}),Gg=H.function().returns(H.object({name:H.string(),extensions:H.array(U$)}));var Og=[["--theme-","--scalar-"],["--sidebar-","--scalar-sidebar-"]],B$=Og.map(([n])=>n);function oi(n){if(!B$.some((t)=>n.includes(t)))return n;return console.warn("DEPRECATION WARNING: It looks like you're using legacy CSS variables in your custom CSS string. Please migrate them to use the updated prefixes. See https://github.com/scalar/scalar/blob/main/documentation/themes.md#theme-prefix-changes"),Og.reduce((t,[o,e])=>t.replaceAll(o,e),n)}var W$=H.enum(["alternate","default","moon","purple","solarized","bluePlanet","deepSpace","saturn","kepler","elysiajs","fastify","mars","none"]),Y$=H.enum(["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]),J$=H.enum(["adonisjs","docusaurus","dotnet","elysiajs","express","fastapi","fastify","go","hono","html","laravel","litestar","nestjs","nextjs","nitro","nuxt","platformatic","react","rust","vue"]).nullable(),qg=H.object({url:H.string().optional(),content:H.union([H.string(),H.record(H.any()),H.function().returns(H.record(H.any())),H.null()]).optional(),title:H.string().optional(),slug:H.string().optional()}),L$=H.object({basePath:H.string()}),Fg=H.object({url:H.string().optional(),content:H.union([H.string(),H.record(H.any()),H.function().returns(H.record(H.any())),H.null()]).optional(),title:H.string().optional(),slug:H.string().optional(),spec:qg.optional(),authentication:H.any().optional(),baseServerURL:H.string().optional(),hideClientButton:H.boolean().optional().default(!1).catch(!1),proxyUrl:H.string().optional(),searchHotKey:Y$.optional(),servers:H.array(H.any()).optional(),showSidebar:H.boolean().optional().default(!0).catch(!0),theme:W$.optional().default("default").catch("default"),_integration:J$.optional(),onRequestSent:H.function().args(H.string()).returns(H.void()).optional()}),Ng="https://api.scalar.com/request-proxy",uf="https://proxy.scalar.com",X$=Fg.merge(H.object({layout:H.enum(["modern","classic"]).optional().default("modern").catch("modern"),proxy:H.string().optional(),plugins:H.array(Gg).optional(),isEditable:H.boolean().optional().default(!1).catch(!1),isLoading:H.boolean().optional().default(!1).catch(!1),hideModels:H.boolean().optional().default(!1).catch(!1),hideDownloadButton:H.boolean().optional().default(!1).catch(!1),hideTestRequestButton:H.boolean().optional().default(!1).catch(!1),hideSearch:H.boolean().optional().default(!1).catch(!1),darkMode:H.boolean().optional(),forceDarkModeState:H.enum(["dark","light"]).optional(),hideDarkModeToggle:H.boolean().optional().default(!1).catch(!1),metaData:H.any().optional(),favicon:H.string().optional(),hiddenClients:H.union([H.record(H.union([H.boolean(),H.array(H.string())])),H.array(H.string()),H.literal(!0)]).optional(),defaultHttpClient:H.object({targetKey:H.custom(),clientKey:H.string()}).optional(),customCss:H.string().optional(),onSpecUpdate:H.function().args(H.string()).returns(H.void()).optional(),onServerChange:H.function().args(H.string()).returns(H.void()).optional(),onDocumentSelect:H.function().returns(H.void().or(H.void().promise())).optional(),onLoaded:H.function().returns(H.void().or(H.void().promise())).optional(),onShowMore:H.function().args(H.string()).returns(H.void().or(H.void().promise())).optional(),onSidebarClick:H.function().args(H.string()).returns(H.void().or(H.void().promise())).optional(),pathRouting:L$.optional(),generateHeadingSlug:H.function().args(H.object({slug:H.string().default("headingSlug")})).returns(H.string()).optional(),generateModelSlug:H.function().args(H.object({name:H.string().default("modelName")})).returns(H.string()).optional(),generateTagSlug:H.function().args(H.object({name:H.string().default("tagName")})).returns(H.string()).optional(),generateOperationSlug:H.function().args(H.object({path:H.string(),operationId:H.string().optional(),method:H.string(),summary:H.string().optional()})).returns(H.string()).optional(),generateWebhookSlug:H.function().args(H.object({name:H.string(),method:H.string().optional()})).returns(H.string()).optional(),redirect:H.function().args(H.string()).returns(H.string().nullable().optional()).optional(),withDefaultFonts:H.boolean().optional().default(!0).catch(!0),defaultOpenAllTags:H.boolean().optional(),tagsSorter:H.union([H.literal("alpha"),H.function().args(H.any(),H.any()).returns(H.number())]).optional(),operationsSorter:H.union([H.literal("alpha"),H.literal("method"),H.function().args(H.any(),H.any()).returns(H.number())]).optional()})),V$=(n)=>{let r={...n};if(r.spec?.url)console.warn("[DEPRECATED] You're using the deprecated 'spec.url' attribute. Remove the spec prefix and move the 'url' attribute to the top level."),r.url=r.spec.url,delete r.spec;if(r.spec?.content)console.warn("[DEPRECATED] You're using the deprecated 'spec.content' attribute. Remove the spec prefix and move the 'content' attribute to the top level."),r.content=r.spec.content,delete r.spec;if(r.customCss)r.customCss=oi(r.customCss);if(r.proxy){if(console.warn("[DEPRECATED] You're using the deprecated 'proxy' attribute, rename it to 'proxyUrl' or update the package."),!r.proxyUrl)r.proxyUrl=r.proxy;delete r.proxy}if(r.proxyUrl===Ng)console.warn(`[DEPRECATED] Warning: configuration.proxyUrl points to our old proxy (${Ng}).`),console.warn(`[DEPRECATED] We are overwriting the value and use the new proxy URL (${uf}) instead.`),console.warn(`[DEPRECATED] Action Required: You should manually update your configuration to use the new URL (${uf}). Read more: https://github.com/scalar/scalar`),r.proxyUrl=uf;return r},C$=X$.transform(V$);var x$=H.object({cdn:H.string().optional().default("https://cdn.jsdelivr.net/npm/@scalar/api-reference"),pageTitle:H.string().optional().default("Scalar API Reference")});var Q$={alternate:$g,default:kg,moon:Dg,elysiajs:Zc,fastify:Eg,purple:Hg,solarized:Ug,bluePlanet:Ag,deepSpace:Rg,saturn:zg,kepler:Sg,mars:Mg};var mH=Object.keys(Q$);import{replaceSchemaType as q$,t as gf}from"elysia";function bf(n){return"type"in n||"properties"in n||"items"in n}function G$(n,r){return(n==="createdAt"||n==="updatedAt")&&"anyOf"in r&&Array.isArray(r.anyOf)}function Kg(n){if(!bf(n)||typeof n!=="object"||n===null)return n;let r={...n};return Object.entries(r).forEach(([t,o])=>{if(bf(o))if(G$(t,o)){let e=o.anyOf?.find((a)=>bf(a)&&a.format==="date-time");if(e){let a={type:"string",format:"date-time",default:e.default};r[t]=a}}else r[t]=Kg(o)}),r}var O$=(n,r,t,o,e)=>{let a=JSON.parse(o);if(a.components&&a.components.schemas)a.components.schemas=Object.fromEntries(Object.entries(a.components.schemas).map(([i,s])=>[i,Kg(s)]));let c=JSON.stringify(a);return`<!DOCTYPE html>
1433
+ `;var H={};no(H,{void:()=>t$,util:()=>un,unknown:()=>n$,union:()=>c$,undefined:()=>I5,tuple:()=>l$,transformer:()=>$$,symbol:()=>v5,string:()=>xg,strictObject:()=>a$,setErrorMap:()=>R5,set:()=>u$,record:()=>f$,quotelessJson:()=>$5,promise:()=>h$,preprocess:()=>k$,pipeline:()=>E$,ostring:()=>S$,optional:()=>A$,onumber:()=>M$,oboolean:()=>D$,objectUtil:()=>lf,object:()=>e$,number:()=>Qg,nullable:()=>R$,null:()=>Z5,never:()=>r$,nativeEnum:()=>w$,nan:()=>p5,map:()=>d$,makeIssue:()=>ka,literal:()=>_$,lazy:()=>g$,late:()=>F5,isValid:()=>so,isDirty:()=>ni,isAsync:()=>we,isAborted:()=>yc,intersection:()=>s$,instanceof:()=>j5,getParsedType:()=>Mt,getErrorMap:()=>me,function:()=>b$,enum:()=>m$,effect:()=>$$,discriminatedUnion:()=>i$,defaultErrorMap:()=>Pt,datetimeRegex:()=>Xg,date:()=>T5,custom:()=>Cg,coerce:()=>H$,boolean:()=>Pg,bigint:()=>K5,array:()=>o$,any:()=>y5,addIssueToContext:()=>K,ZodVoid:()=>Sa,ZodUnknown:()=>lo,ZodUnion:()=>Ee,ZodUndefined:()=>Re,ZodType:()=>fn,ZodTuple:()=>Ht,ZodTransformer:()=>ft,ZodSymbol:()=>Ea,ZodString:()=>ct,ZodSet:()=>No,ZodSchema:()=>fn,ZodRecord:()=>Ma,ZodReadonly:()=>Be,ZodPromise:()=>qo,ZodPipeline:()=>za,ZodParsedType:()=>F,ZodOptional:()=>st,ZodObject:()=>xn,ZodNumber:()=>fo,ZodNullable:()=>Ot,ZodNull:()=>ke,ZodNever:()=>Dt,ZodNativeEnum:()=>He,ZodNaN:()=>Ha,ZodMap:()=>Da,ZodLiteral:()=>De,ZodLazy:()=>Me,ZodIssueCode:()=>P,ZodIntersection:()=>Se,ZodFunction:()=>$e,ZodFirstPartyTypeKind:()=>on,ZodError:()=>Mr,ZodEnum:()=>bo,ZodEffects:()=>ft,ZodDiscriminatedUnion:()=>ri,ZodDefault:()=>ze,ZodDate:()=>Go,ZodCatch:()=>Ue,ZodBranded:()=>ti,ZodBoolean:()=>Ae,ZodBigInt:()=>uo,ZodArray:()=>it,ZodAny:()=>Oo,Schema:()=>fn,ParseStatus:()=>fr,OK:()=>mr,NEVER:()=>z$,INVALID:()=>nn,EMPTY_PATH:()=>k5,DIRTY:()=>Po,BRAND:()=>q5});var un;(function(n){n.assertEqual=(e)=>{};function r(e){}n.assertIs=r;function t(e){throw Error()}n.assertNever=t,n.arrayToEnum=(e)=>{let a={};for(let c of e)a[c]=c;return a},n.getValidEnumValues=(e)=>{let a=n.objectKeys(e).filter((i)=>typeof e[e[i]]!=="number"),c={};for(let i of a)c[i]=e[i];return n.objectValues(c)},n.objectValues=(e)=>{return n.objectKeys(e).map(function(a){return e[a]})},n.objectKeys=typeof Object.keys==="function"?(e)=>Object.keys(e):(e)=>{let a=[];for(let c in e)if(Object.prototype.hasOwnProperty.call(e,c))a.push(c);return a},n.find=(e,a)=>{for(let c of e)if(a(c))return c;return},n.isInteger=typeof Number.isInteger==="function"?(e)=>Number.isInteger(e):(e)=>typeof e==="number"&&Number.isFinite(e)&&Math.floor(e)===e;function o(e,a=" | "){return e.map((c)=>typeof c==="string"?`'${c}'`:c).join(a)}n.joinValues=o,n.jsonStringifyReplacer=(e,a)=>{if(typeof a==="bigint")return a.toString();return a}})(un||(un={}));var lf;(function(n){n.mergeShapes=(r,t)=>{return{...r,...t}}})(lf||(lf={}));var F=un.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Mt=(n)=>{switch(typeof n){case"undefined":return F.undefined;case"string":return F.string;case"number":return Number.isNaN(n)?F.nan:F.number;case"boolean":return F.boolean;case"function":return F.function;case"bigint":return F.bigint;case"symbol":return F.symbol;case"object":if(Array.isArray(n))return F.array;if(n===null)return F.null;if(n.then&&typeof n.then==="function"&&n.catch&&typeof n.catch==="function")return F.promise;if(typeof Map<"u"&&n instanceof Map)return F.map;if(typeof Set<"u"&&n instanceof Set)return F.set;if(typeof Date<"u"&&n instanceof Date)return F.date;return F.object;default:return F.unknown}};var P=un.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),$5=(n)=>{return JSON.stringify(n,null,2).replace(/"([^"]+)":/g,"$1:")};class Mr extends Error{get errors(){return this.issues}constructor(n){super();this.issues=[],this.addIssue=(t)=>{this.issues=[...this.issues,t]},this.addIssues=(t=[])=>{this.issues=[...this.issues,...t]};let r=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,r);else this.__proto__=r;this.name="ZodError",this.issues=n}format(n){let r=n||function(e){return e.message},t={_errors:[]},o=(e)=>{for(let a of e.issues)if(a.code==="invalid_union")a.unionErrors.map(o);else if(a.code==="invalid_return_type")o(a.returnTypeError);else if(a.code==="invalid_arguments")o(a.argumentsError);else if(a.path.length===0)t._errors.push(r(a));else{let c=t,i=0;while(i<a.path.length){let s=a.path[i];if(i!==a.path.length-1)c[s]=c[s]||{_errors:[]};else c[s]=c[s]||{_errors:[]},c[s]._errors.push(r(a));c=c[s],i++}}};return o(this),t}static assert(n){if(!(n instanceof Mr))throw Error(`Not a ZodError: ${n}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,un.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(n=(r)=>r.message){let r={},t=[];for(let o of this.issues)if(o.path.length>0){let e=o.path[0];r[e]=r[e]||[],r[e].push(n(o))}else t.push(n(o));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}}Mr.create=(n)=>{return new Mr(n)};var A5=(n,r)=>{let t;switch(n.code){case P.invalid_type:if(n.received===F.undefined)t="Required";else t=`Expected ${n.expected}, received ${n.received}`;break;case P.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,un.jsonStringifyReplacer)}`;break;case P.unrecognized_keys:t=`Unrecognized key(s) in object: ${un.joinValues(n.keys,", ")}`;break;case P.invalid_union:t="Invalid input";break;case P.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${un.joinValues(n.options)}`;break;case P.invalid_enum_value:t=`Invalid enum value. Expected ${un.joinValues(n.options)}, received '${n.received}'`;break;case P.invalid_arguments:t="Invalid function arguments";break;case P.invalid_return_type:t="Invalid function return type";break;case P.invalid_date:t="Invalid date";break;case P.invalid_string:if(typeof n.validation==="object")if("includes"in n.validation){if(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position==="number")t=`${t} at one or more positions greater than or equal to ${n.validation.position}`}else if("startsWith"in n.validation)t=`Invalid input: must start with "${n.validation.startsWith}"`;else if("endsWith"in n.validation)t=`Invalid input: must end with "${n.validation.endsWith}"`;else un.assertNever(n.validation);else if(n.validation!=="regex")t=`Invalid ${n.validation}`;else t="Invalid";break;case P.too_small:if(n.type==="array")t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`;else if(n.type==="string")t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`;else if(n.type==="number")t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`;else if(n.type==="bigint")t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`;else if(n.type==="date")t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`;else t="Invalid input";break;case P.too_big:if(n.type==="array")t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`;else if(n.type==="string")t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`;else if(n.type==="number")t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`;else if(n.type==="bigint")t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`;else if(n.type==="date")t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`;else t="Invalid input";break;case P.custom:t="Invalid input";break;case P.invalid_intersection_types:t="Intersection results could not be merged";break;case P.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case P.not_finite:t="Number must be finite";break;default:t=r.defaultError,un.assertNever(n)}return{message:t}},Pt=A5;var Bg=Pt;function R5(n){Bg=n}function me(){return Bg}var ka=(n)=>{let{data:r,path:t,errorMaps:o,issueData:e}=n,a=[...t,...e.path||[]],c={...e,path:a};if(e.message!==void 0)return{...e,path:a,message:e.message};let i="",s=o.filter((l)=>!!l).slice().reverse();for(let l of s)i=l(c,{data:r,defaultError:i}).message;return{...e,path:a,message:i}},k5=[];function K(n,r){let t=me(),o=ka({issueData:r,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Pt?void 0:Pt].filter((e)=>!!e)});n.common.issues.push(o)}class fr{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(n,r){let t=[];for(let o of r){if(o.status==="aborted")return nn;if(o.status==="dirty")n.dirty();t.push(o.value)}return{status:n.value,value:t}}static async mergeObjectAsync(n,r){let t=[];for(let o of r){let e=await o.key,a=await o.value;t.push({key:e,value:a})}return fr.mergeObjectSync(n,t)}static mergeObjectSync(n,r){let t={};for(let o of r){let{key:e,value:a}=o;if(e.status==="aborted")return nn;if(a.status==="aborted")return nn;if(e.status==="dirty")n.dirty();if(a.status==="dirty")n.dirty();if(e.value!=="__proto__"&&(typeof a.value<"u"||o.alwaysSet))t[e.value]=a.value}return{status:n.value,value:t}}}var nn=Object.freeze({status:"aborted"}),Po=(n)=>({status:"dirty",value:n}),mr=(n)=>({status:"valid",value:n}),yc=(n)=>n.status==="aborted",ni=(n)=>n.status==="dirty",so=(n)=>n.status==="valid",we=(n)=>typeof Promise<"u"&&n instanceof Promise;var v;(function(n){n.errToObj=(r)=>typeof r==="string"?{message:r}:r||{},n.toString=(r)=>typeof r==="string"?r:r?.message})(v||(v={}));class lt{constructor(n,r,t,o){this._cachedPath=[],this.parent=n,this.data=r,this._path=t,this._key=o}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var Wg=(n,r)=>{if(so(r))return{success:!0,data:r.value};else{if(!n.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new Mr(n.common.issues);return this._error=t,this._error}}}};function ln(n){if(!n)return{};let{errorMap:r,invalid_type_error:t,required_error:o,description:e}=n;if(r&&(t||o))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(r)return{errorMap:r,description:e};return{errorMap:(c,i)=>{let{message:s}=n;if(c.code==="invalid_enum_value")return{message:s??i.defaultError};if(typeof i.data>"u")return{message:s??o??i.defaultError};if(c.code!=="invalid_type")return{message:i.defaultError};return{message:s??t??i.defaultError}},description:e}}class fn{get description(){return this._def.description}_getType(n){return Mt(n.data)}_getOrReturnCtx(n,r){return r||{common:n.parent.common,data:n.data,parsedType:Mt(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}_processInputParams(n){return{status:new fr,ctx:{common:n.parent.common,data:n.data,parsedType:Mt(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}}_parseSync(n){let r=this._parse(n);if(we(r))throw Error("Synchronous parse encountered promise.");return r}_parseAsync(n){let r=this._parse(n);return Promise.resolve(r)}parse(n,r){let t=this.safeParse(n,r);if(t.success)return t.data;throw t.error}safeParse(n,r){let t={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Mt(n)},o=this._parseSync({data:n,path:t.path,parent:t});return Wg(t,o)}"~validate"(n){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Mt(n)};if(!this["~standard"].async)try{let t=this._parseSync({data:n,path:[],parent:r});return so(t)?{value:t.value}:{issues:r.common.issues}}catch(t){if(t?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;r.common={issues:[],async:!0}}return this._parseAsync({data:n,path:[],parent:r}).then((t)=>so(t)?{value:t.value}:{issues:r.common.issues})}async parseAsync(n,r){let t=await this.safeParseAsync(n,r);if(t.success)return t.data;throw t.error}async safeParseAsync(n,r){let t={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Mt(n)},o=this._parse({data:n,path:t.path,parent:t}),e=await(we(o)?o:Promise.resolve(o));return Wg(t,e)}refine(n,r){let t=(o)=>{if(typeof r==="string"||typeof r>"u")return{message:r};else if(typeof r==="function")return r(o);else return r};return this._refinement((o,e)=>{let a=n(o),c=()=>e.addIssue({code:P.custom,...t(o)});if(typeof Promise<"u"&&a instanceof Promise)return a.then((i)=>{if(!i)return c(),!1;else return!0});if(!a)return c(),!1;else return!0})}refinement(n,r){return this._refinement((t,o)=>{if(!n(t))return o.addIssue(typeof r==="function"?r(t,o):r),!1;else return!0})}_refinement(n){return new ft({schema:this,typeName:on.ZodEffects,effect:{type:"refinement",refinement:n}})}superRefine(n){return this._refinement(n)}constructor(n){this.spa=this.safeParseAsync,this._def=n,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(r)=>this["~validate"](r)}}optional(){return st.create(this,this._def)}nullable(){return Ot.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return it.create(this)}promise(){return qo.create(this,this._def)}or(n){return Ee.create([this,n],this._def)}and(n){return Se.create(this,n,this._def)}transform(n){return new ft({...ln(this._def),schema:this,typeName:on.ZodEffects,effect:{type:"transform",transform:n}})}default(n){let r=typeof n==="function"?n:()=>n;return new ze({...ln(this._def),innerType:this,defaultValue:r,typeName:on.ZodDefault})}brand(){return new ti({typeName:on.ZodBranded,type:this,...ln(this._def)})}catch(n){let r=typeof n==="function"?n:()=>n;return new Ue({...ln(this._def),innerType:this,catchValue:r,typeName:on.ZodCatch})}describe(n){return new this.constructor({...this._def,description:n})}pipe(n){return za.create(this,n)}readonly(){return Be.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var E5=/^c[^\s-]{8,}$/i,S5=/^[0-9a-z]+$/,M5=/^[0-9A-HJKMNP-TV-Z]{26}$/i,D5=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,H5=/^[a-z0-9_-]{21}$/i,z5=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,U5=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,B5=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,W5="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",ff,Y5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,J5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,L5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,X5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,V5=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,C5=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Jg="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",x5=new RegExp(`^${Jg}$`);function Lg(n){let r="[0-5]\\d";if(n.precision)r=`${r}\\.\\d{${n.precision}}`;else if(n.precision==null)r=`${r}(\\.\\d+)?`;let t=n.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${r})${t}`}function Q5(n){return new RegExp(`^${Lg(n)}$`)}function Xg(n){let r=`${Jg}T${Lg(n)}`,t=[];if(t.push(n.local?"Z?":"Z"),n.offset)t.push("([+-]\\d{2}:?\\d{2})");return r=`${r}(${t.join("|")})`,new RegExp(`^${r}$`)}function P5(n,r){if((r==="v4"||!r)&&Y5.test(n))return!0;if((r==="v6"||!r)&&L5.test(n))return!0;return!1}function G5(n,r){if(!z5.test(n))return!1;try{let[t]=n.split(".");if(!t)return!1;let o=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),e=JSON.parse(atob(o));if(typeof e!=="object"||e===null)return!1;if("typ"in e&&e?.typ!=="JWT")return!1;if(!e.alg)return!1;if(r&&e.alg!==r)return!1;return!0}catch{return!1}}function O5(n,r){if((r==="v4"||!r)&&J5.test(n))return!0;if((r==="v6"||!r)&&X5.test(n))return!0;return!1}class ct extends fn{_parse(n){if(this._def.coerce)n.data=String(n.data);if(this._getType(n)!==F.string){let e=this._getOrReturnCtx(n);return K(e,{code:P.invalid_type,expected:F.string,received:e.parsedType}),nn}let t=new fr,o=void 0;for(let e of this._def.checks)if(e.kind==="min"){if(n.data.length<e.value)o=this._getOrReturnCtx(n,o),K(o,{code:P.too_small,minimum:e.value,type:"string",inclusive:!0,exact:!1,message:e.message}),t.dirty()}else if(e.kind==="max"){if(n.data.length>e.value)o=this._getOrReturnCtx(n,o),K(o,{code:P.too_big,maximum:e.value,type:"string",inclusive:!0,exact:!1,message:e.message}),t.dirty()}else if(e.kind==="length"){let a=n.data.length>e.value,c=n.data.length<e.value;if(a||c){if(o=this._getOrReturnCtx(n,o),a)K(o,{code:P.too_big,maximum:e.value,type:"string",inclusive:!0,exact:!0,message:e.message});else if(c)K(o,{code:P.too_small,minimum:e.value,type:"string",inclusive:!0,exact:!0,message:e.message});t.dirty()}}else if(e.kind==="email"){if(!B5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"email",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="emoji"){if(!ff)ff=new RegExp(W5,"u");if(!ff.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"emoji",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="uuid"){if(!D5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"uuid",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="nanoid"){if(!H5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"nanoid",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="cuid"){if(!E5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"cuid",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="cuid2"){if(!S5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"cuid2",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="ulid"){if(!M5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"ulid",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="url")try{new URL(n.data)}catch{o=this._getOrReturnCtx(n,o),K(o,{validation:"url",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="regex"){if(e.regex.lastIndex=0,!e.regex.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"regex",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="trim")n.data=n.data.trim();else if(e.kind==="includes"){if(!n.data.includes(e.value,e.position))o=this._getOrReturnCtx(n,o),K(o,{code:P.invalid_string,validation:{includes:e.value,position:e.position},message:e.message}),t.dirty()}else if(e.kind==="toLowerCase")n.data=n.data.toLowerCase();else if(e.kind==="toUpperCase")n.data=n.data.toUpperCase();else if(e.kind==="startsWith"){if(!n.data.startsWith(e.value))o=this._getOrReturnCtx(n,o),K(o,{code:P.invalid_string,validation:{startsWith:e.value},message:e.message}),t.dirty()}else if(e.kind==="endsWith"){if(!n.data.endsWith(e.value))o=this._getOrReturnCtx(n,o),K(o,{code:P.invalid_string,validation:{endsWith:e.value},message:e.message}),t.dirty()}else if(e.kind==="datetime"){if(!Xg(e).test(n.data))o=this._getOrReturnCtx(n,o),K(o,{code:P.invalid_string,validation:"datetime",message:e.message}),t.dirty()}else if(e.kind==="date"){if(!x5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{code:P.invalid_string,validation:"date",message:e.message}),t.dirty()}else if(e.kind==="time"){if(!Q5(e).test(n.data))o=this._getOrReturnCtx(n,o),K(o,{code:P.invalid_string,validation:"time",message:e.message}),t.dirty()}else if(e.kind==="duration"){if(!U5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"duration",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="ip"){if(!P5(n.data,e.version))o=this._getOrReturnCtx(n,o),K(o,{validation:"ip",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="jwt"){if(!G5(n.data,e.alg))o=this._getOrReturnCtx(n,o),K(o,{validation:"jwt",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="cidr"){if(!O5(n.data,e.version))o=this._getOrReturnCtx(n,o),K(o,{validation:"cidr",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="base64"){if(!V5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"base64",code:P.invalid_string,message:e.message}),t.dirty()}else if(e.kind==="base64url"){if(!C5.test(n.data))o=this._getOrReturnCtx(n,o),K(o,{validation:"base64url",code:P.invalid_string,message:e.message}),t.dirty()}else un.assertNever(e);return{status:t.value,value:n.data}}_regex(n,r,t){return this.refinement((o)=>n.test(o),{validation:r,code:P.invalid_string,...v.errToObj(t)})}_addCheck(n){return new ct({...this._def,checks:[...this._def.checks,n]})}email(n){return this._addCheck({kind:"email",...v.errToObj(n)})}url(n){return this._addCheck({kind:"url",...v.errToObj(n)})}emoji(n){return this._addCheck({kind:"emoji",...v.errToObj(n)})}uuid(n){return this._addCheck({kind:"uuid",...v.errToObj(n)})}nanoid(n){return this._addCheck({kind:"nanoid",...v.errToObj(n)})}cuid(n){return this._addCheck({kind:"cuid",...v.errToObj(n)})}cuid2(n){return this._addCheck({kind:"cuid2",...v.errToObj(n)})}ulid(n){return this._addCheck({kind:"ulid",...v.errToObj(n)})}base64(n){return this._addCheck({kind:"base64",...v.errToObj(n)})}base64url(n){return this._addCheck({kind:"base64url",...v.errToObj(n)})}jwt(n){return this._addCheck({kind:"jwt",...v.errToObj(n)})}ip(n){return this._addCheck({kind:"ip",...v.errToObj(n)})}cidr(n){return this._addCheck({kind:"cidr",...v.errToObj(n)})}datetime(n){if(typeof n==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:n});return this._addCheck({kind:"datetime",precision:typeof n?.precision>"u"?null:n?.precision,offset:n?.offset??!1,local:n?.local??!1,...v.errToObj(n?.message)})}date(n){return this._addCheck({kind:"date",message:n})}time(n){if(typeof n==="string")return this._addCheck({kind:"time",precision:null,message:n});return this._addCheck({kind:"time",precision:typeof n?.precision>"u"?null:n?.precision,...v.errToObj(n?.message)})}duration(n){return this._addCheck({kind:"duration",...v.errToObj(n)})}regex(n,r){return this._addCheck({kind:"regex",regex:n,...v.errToObj(r)})}includes(n,r){return this._addCheck({kind:"includes",value:n,position:r?.position,...v.errToObj(r?.message)})}startsWith(n,r){return this._addCheck({kind:"startsWith",value:n,...v.errToObj(r)})}endsWith(n,r){return this._addCheck({kind:"endsWith",value:n,...v.errToObj(r)})}min(n,r){return this._addCheck({kind:"min",value:n,...v.errToObj(r)})}max(n,r){return this._addCheck({kind:"max",value:n,...v.errToObj(r)})}length(n,r){return this._addCheck({kind:"length",value:n,...v.errToObj(r)})}nonempty(n){return this.min(1,v.errToObj(n))}trim(){return new ct({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ct({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ct({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((n)=>n.kind==="datetime")}get isDate(){return!!this._def.checks.find((n)=>n.kind==="date")}get isTime(){return!!this._def.checks.find((n)=>n.kind==="time")}get isDuration(){return!!this._def.checks.find((n)=>n.kind==="duration")}get isEmail(){return!!this._def.checks.find((n)=>n.kind==="email")}get isURL(){return!!this._def.checks.find((n)=>n.kind==="url")}get isEmoji(){return!!this._def.checks.find((n)=>n.kind==="emoji")}get isUUID(){return!!this._def.checks.find((n)=>n.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((n)=>n.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((n)=>n.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((n)=>n.kind==="cuid2")}get isULID(){return!!this._def.checks.find((n)=>n.kind==="ulid")}get isIP(){return!!this._def.checks.find((n)=>n.kind==="ip")}get isCIDR(){return!!this._def.checks.find((n)=>n.kind==="cidr")}get isBase64(){return!!this._def.checks.find((n)=>n.kind==="base64")}get isBase64url(){return!!this._def.checks.find((n)=>n.kind==="base64url")}get minLength(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxLength(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}}ct.create=(n)=>{return new ct({checks:[],typeName:on.ZodString,coerce:n?.coerce??!1,...ln(n)})};function N5(n,r){let t=(n.toString().split(".")[1]||"").length,o=(r.toString().split(".")[1]||"").length,e=t>o?t:o,a=Number.parseInt(n.toFixed(e).replace(".","")),c=Number.parseInt(r.toFixed(e).replace(".",""));return a%c/10**e}class fo extends fn{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(n){if(this._def.coerce)n.data=Number(n.data);if(this._getType(n)!==F.number){let e=this._getOrReturnCtx(n);return K(e,{code:P.invalid_type,expected:F.number,received:e.parsedType}),nn}let t=void 0,o=new fr;for(let e of this._def.checks)if(e.kind==="int"){if(!un.isInteger(n.data))t=this._getOrReturnCtx(n,t),K(t,{code:P.invalid_type,expected:"integer",received:"float",message:e.message}),o.dirty()}else if(e.kind==="min"){if(e.inclusive?n.data<e.value:n.data<=e.value)t=this._getOrReturnCtx(n,t),K(t,{code:P.too_small,minimum:e.value,type:"number",inclusive:e.inclusive,exact:!1,message:e.message}),o.dirty()}else if(e.kind==="max"){if(e.inclusive?n.data>e.value:n.data>=e.value)t=this._getOrReturnCtx(n,t),K(t,{code:P.too_big,maximum:e.value,type:"number",inclusive:e.inclusive,exact:!1,message:e.message}),o.dirty()}else if(e.kind==="multipleOf"){if(N5(n.data,e.value)!==0)t=this._getOrReturnCtx(n,t),K(t,{code:P.not_multiple_of,multipleOf:e.value,message:e.message}),o.dirty()}else if(e.kind==="finite"){if(!Number.isFinite(n.data))t=this._getOrReturnCtx(n,t),K(t,{code:P.not_finite,message:e.message}),o.dirty()}else un.assertNever(e);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,v.toString(r))}gt(n,r){return this.setLimit("min",n,!1,v.toString(r))}lte(n,r){return this.setLimit("max",n,!0,v.toString(r))}lt(n,r){return this.setLimit("max",n,!1,v.toString(r))}setLimit(n,r,t,o){return new fo({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:v.toString(o)}]})}_addCheck(n){return new fo({...this._def,checks:[...this._def.checks,n]})}int(n){return this._addCheck({kind:"int",message:v.toString(n)})}positive(n){return this._addCheck({kind:"min",value:0,inclusive:!1,message:v.toString(n)})}negative(n){return this._addCheck({kind:"max",value:0,inclusive:!1,message:v.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:0,inclusive:!0,message:v.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:0,inclusive:!0,message:v.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:v.toString(r)})}finite(n){return this._addCheck({kind:"finite",message:v.toString(n)})}safe(n){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:v.toString(n)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:v.toString(n)})}get minValue(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxValue(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}get isInt(){return!!this._def.checks.find((n)=>n.kind==="int"||n.kind==="multipleOf"&&un.isInteger(n.value))}get isFinite(){let n=null,r=null;for(let t of this._def.checks)if(t.kind==="finite"||t.kind==="int"||t.kind==="multipleOf")return!0;else if(t.kind==="min"){if(r===null||t.value>r)r=t.value}else if(t.kind==="max"){if(n===null||t.value<n)n=t.value}return Number.isFinite(r)&&Number.isFinite(n)}}fo.create=(n)=>{return new fo({checks:[],typeName:on.ZodNumber,coerce:n?.coerce||!1,...ln(n)})};class uo extends fn{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(n){if(this._def.coerce)try{n.data=BigInt(n.data)}catch{return this._getInvalidInput(n)}if(this._getType(n)!==F.bigint)return this._getInvalidInput(n);let t=void 0,o=new fr;for(let e of this._def.checks)if(e.kind==="min"){if(e.inclusive?n.data<e.value:n.data<=e.value)t=this._getOrReturnCtx(n,t),K(t,{code:P.too_small,type:"bigint",minimum:e.value,inclusive:e.inclusive,message:e.message}),o.dirty()}else if(e.kind==="max"){if(e.inclusive?n.data>e.value:n.data>=e.value)t=this._getOrReturnCtx(n,t),K(t,{code:P.too_big,type:"bigint",maximum:e.value,inclusive:e.inclusive,message:e.message}),o.dirty()}else if(e.kind==="multipleOf"){if(n.data%e.value!==BigInt(0))t=this._getOrReturnCtx(n,t),K(t,{code:P.not_multiple_of,multipleOf:e.value,message:e.message}),o.dirty()}else un.assertNever(e);return{status:o.value,value:n.data}}_getInvalidInput(n){let r=this._getOrReturnCtx(n);return K(r,{code:P.invalid_type,expected:F.bigint,received:r.parsedType}),nn}gte(n,r){return this.setLimit("min",n,!0,v.toString(r))}gt(n,r){return this.setLimit("min",n,!1,v.toString(r))}lte(n,r){return this.setLimit("max",n,!0,v.toString(r))}lt(n,r){return this.setLimit("max",n,!1,v.toString(r))}setLimit(n,r,t,o){return new uo({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:v.toString(o)}]})}_addCheck(n){return new uo({...this._def,checks:[...this._def.checks,n]})}positive(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:v.toString(n)})}negative(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:v.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:v.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:v.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:v.toString(r)})}get minValue(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxValue(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}}uo.create=(n)=>{return new uo({checks:[],typeName:on.ZodBigInt,coerce:n?.coerce??!1,...ln(n)})};class Ae extends fn{_parse(n){if(this._def.coerce)n.data=Boolean(n.data);if(this._getType(n)!==F.boolean){let t=this._getOrReturnCtx(n);return K(t,{code:P.invalid_type,expected:F.boolean,received:t.parsedType}),nn}return mr(n.data)}}Ae.create=(n)=>{return new Ae({typeName:on.ZodBoolean,coerce:n?.coerce||!1,...ln(n)})};class Go extends fn{_parse(n){if(this._def.coerce)n.data=new Date(n.data);if(this._getType(n)!==F.date){let e=this._getOrReturnCtx(n);return K(e,{code:P.invalid_type,expected:F.date,received:e.parsedType}),nn}if(Number.isNaN(n.data.getTime())){let e=this._getOrReturnCtx(n);return K(e,{code:P.invalid_date}),nn}let t=new fr,o=void 0;for(let e of this._def.checks)if(e.kind==="min"){if(n.data.getTime()<e.value)o=this._getOrReturnCtx(n,o),K(o,{code:P.too_small,message:e.message,inclusive:!0,exact:!1,minimum:e.value,type:"date"}),t.dirty()}else if(e.kind==="max"){if(n.data.getTime()>e.value)o=this._getOrReturnCtx(n,o),K(o,{code:P.too_big,message:e.message,inclusive:!0,exact:!1,maximum:e.value,type:"date"}),t.dirty()}else un.assertNever(e);return{status:t.value,value:new Date(n.data.getTime())}}_addCheck(n){return new Go({...this._def,checks:[...this._def.checks,n]})}min(n,r){return this._addCheck({kind:"min",value:n.getTime(),message:v.toString(r)})}max(n,r){return this._addCheck({kind:"max",value:n.getTime(),message:v.toString(r)})}get minDate(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n!=null?new Date(n):null}get maxDate(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n!=null?new Date(n):null}}Go.create=(n)=>{return new Go({checks:[],coerce:n?.coerce||!1,typeName:on.ZodDate,...ln(n)})};class Ea extends fn{_parse(n){if(this._getType(n)!==F.symbol){let t=this._getOrReturnCtx(n);return K(t,{code:P.invalid_type,expected:F.symbol,received:t.parsedType}),nn}return mr(n.data)}}Ea.create=(n)=>{return new Ea({typeName:on.ZodSymbol,...ln(n)})};class Re extends fn{_parse(n){if(this._getType(n)!==F.undefined){let t=this._getOrReturnCtx(n);return K(t,{code:P.invalid_type,expected:F.undefined,received:t.parsedType}),nn}return mr(n.data)}}Re.create=(n)=>{return new Re({typeName:on.ZodUndefined,...ln(n)})};class ke extends fn{_parse(n){if(this._getType(n)!==F.null){let t=this._getOrReturnCtx(n);return K(t,{code:P.invalid_type,expected:F.null,received:t.parsedType}),nn}return mr(n.data)}}ke.create=(n)=>{return new ke({typeName:on.ZodNull,...ln(n)})};class Oo extends fn{constructor(){super(...arguments);this._any=!0}_parse(n){return mr(n.data)}}Oo.create=(n)=>{return new Oo({typeName:on.ZodAny,...ln(n)})};class lo extends fn{constructor(){super(...arguments);this._unknown=!0}_parse(n){return mr(n.data)}}lo.create=(n)=>{return new lo({typeName:on.ZodUnknown,...ln(n)})};class Dt extends fn{_parse(n){let r=this._getOrReturnCtx(n);return K(r,{code:P.invalid_type,expected:F.never,received:r.parsedType}),nn}}Dt.create=(n)=>{return new Dt({typeName:on.ZodNever,...ln(n)})};class Sa extends fn{_parse(n){if(this._getType(n)!==F.undefined){let t=this._getOrReturnCtx(n);return K(t,{code:P.invalid_type,expected:F.void,received:t.parsedType}),nn}return mr(n.data)}}Sa.create=(n)=>{return new Sa({typeName:on.ZodVoid,...ln(n)})};class it extends fn{_parse(n){let{ctx:r,status:t}=this._processInputParams(n),o=this._def;if(r.parsedType!==F.array)return K(r,{code:P.invalid_type,expected:F.array,received:r.parsedType}),nn;if(o.exactLength!==null){let a=r.data.length>o.exactLength.value,c=r.data.length<o.exactLength.value;if(a||c)K(r,{code:a?P.too_big:P.too_small,minimum:c?o.exactLength.value:void 0,maximum:a?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),t.dirty()}if(o.minLength!==null){if(r.data.length<o.minLength.value)K(r,{code:P.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),t.dirty()}if(o.maxLength!==null){if(r.data.length>o.maxLength.value)K(r,{code:P.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),t.dirty()}if(r.common.async)return Promise.all([...r.data].map((a,c)=>{return o.type._parseAsync(new lt(r,a,r.path,c))})).then((a)=>{return fr.mergeArray(t,a)});let e=[...r.data].map((a,c)=>{return o.type._parseSync(new lt(r,a,r.path,c))});return fr.mergeArray(t,e)}get element(){return this._def.type}min(n,r){return new it({...this._def,minLength:{value:n,message:v.toString(r)}})}max(n,r){return new it({...this._def,maxLength:{value:n,message:v.toString(r)}})}length(n,r){return new it({...this._def,exactLength:{value:n,message:v.toString(r)}})}nonempty(n){return this.min(1,n)}}it.create=(n,r)=>{return new it({type:n,minLength:null,maxLength:null,exactLength:null,typeName:on.ZodArray,...ln(r)})};function he(n){if(n instanceof xn){let r={};for(let t in n.shape){let o=n.shape[t];r[t]=st.create(he(o))}return new xn({...n._def,shape:()=>r})}else if(n instanceof it)return new it({...n._def,type:he(n.element)});else if(n instanceof st)return st.create(he(n.unwrap()));else if(n instanceof Ot)return Ot.create(he(n.unwrap()));else if(n instanceof Ht)return Ht.create(n.items.map((r)=>he(r)));else return n}class xn extends fn{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let n=this._def.shape(),r=un.objectKeys(n);return this._cached={shape:n,keys:r},this._cached}_parse(n){if(this._getType(n)!==F.object){let s=this._getOrReturnCtx(n);return K(s,{code:P.invalid_type,expected:F.object,received:s.parsedType}),nn}let{status:t,ctx:o}=this._processInputParams(n),{shape:e,keys:a}=this._getCached(),c=[];if(!(this._def.catchall instanceof Dt&&this._def.unknownKeys==="strip")){for(let s in o.data)if(!a.includes(s))c.push(s)}let i=[];for(let s of a){let l=e[s],f=o.data[s];i.push({key:{status:"valid",value:s},value:l._parse(new lt(o,f,o.path,s)),alwaysSet:s in o.data})}if(this._def.catchall instanceof Dt){let s=this._def.unknownKeys;if(s==="passthrough")for(let l of c)i.push({key:{status:"valid",value:l},value:{status:"valid",value:o.data[l]}});else if(s==="strict"){if(c.length>0)K(o,{code:P.unrecognized_keys,keys:c}),t.dirty()}else if(s==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let s=this._def.catchall;for(let l of c){let f=o.data[l];i.push({key:{status:"valid",value:l},value:s._parse(new lt(o,f,o.path,l)),alwaysSet:l in o.data})}}if(o.common.async)return Promise.resolve().then(async()=>{let s=[];for(let l of i){let f=await l.key,u=await l.value;s.push({key:f,value:u,alwaysSet:l.alwaysSet})}return s}).then((s)=>{return fr.mergeObjectSync(t,s)});else return fr.mergeObjectSync(t,i)}get shape(){return this._def.shape()}strict(n){return v.errToObj,new xn({...this._def,unknownKeys:"strict",...n!==void 0?{errorMap:(r,t)=>{let o=this._def.errorMap?.(r,t).message??t.defaultError;if(r.code==="unrecognized_keys")return{message:v.errToObj(n).message??o};return{message:o}}}:{}})}strip(){return new xn({...this._def,unknownKeys:"strip"})}passthrough(){return new xn({...this._def,unknownKeys:"passthrough"})}extend(n){return new xn({...this._def,shape:()=>({...this._def.shape(),...n})})}merge(n){return new xn({unknownKeys:n._def.unknownKeys,catchall:n._def.catchall,shape:()=>({...this._def.shape(),...n._def.shape()}),typeName:on.ZodObject})}setKey(n,r){return this.augment({[n]:r})}catchall(n){return new xn({...this._def,catchall:n})}pick(n){let r={};for(let t of un.objectKeys(n))if(n[t]&&this.shape[t])r[t]=this.shape[t];return new xn({...this._def,shape:()=>r})}omit(n){let r={};for(let t of un.objectKeys(this.shape))if(!n[t])r[t]=this.shape[t];return new xn({...this._def,shape:()=>r})}deepPartial(){return he(this)}partial(n){let r={};for(let t of un.objectKeys(this.shape)){let o=this.shape[t];if(n&&!n[t])r[t]=o;else r[t]=o.optional()}return new xn({...this._def,shape:()=>r})}required(n){let r={};for(let t of un.objectKeys(this.shape))if(n&&!n[t])r[t]=this.shape[t];else{let e=this.shape[t];while(e instanceof st)e=e._def.innerType;r[t]=e}return new xn({...this._def,shape:()=>r})}keyof(){return Vg(un.objectKeys(this.shape))}}xn.create=(n,r)=>{return new xn({shape:()=>n,unknownKeys:"strip",catchall:Dt.create(),typeName:on.ZodObject,...ln(r)})};xn.strictCreate=(n,r)=>{return new xn({shape:()=>n,unknownKeys:"strict",catchall:Dt.create(),typeName:on.ZodObject,...ln(r)})};xn.lazycreate=(n,r)=>{return new xn({shape:n,unknownKeys:"strip",catchall:Dt.create(),typeName:on.ZodObject,...ln(r)})};class Ee extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=this._def.options;function o(e){for(let c of e)if(c.result.status==="valid")return c.result;for(let c of e)if(c.result.status==="dirty")return r.common.issues.push(...c.ctx.common.issues),c.result;let a=e.map((c)=>new Mr(c.ctx.common.issues));return K(r,{code:P.invalid_union,unionErrors:a}),nn}if(r.common.async)return Promise.all(t.map(async(e)=>{let a={...r,common:{...r.common,issues:[]},parent:null};return{result:await e._parseAsync({data:r.data,path:r.path,parent:a}),ctx:a}})).then(o);else{let e=void 0,a=[];for(let i of t){let s={...r,common:{...r.common,issues:[]},parent:null},l=i._parseSync({data:r.data,path:r.path,parent:s});if(l.status==="valid")return l;else if(l.status==="dirty"&&!e)e={result:l,ctx:s};if(s.common.issues.length)a.push(s.common.issues)}if(e)return r.common.issues.push(...e.ctx.common.issues),e.result;let c=a.map((i)=>new Mr(i));return K(r,{code:P.invalid_union,unionErrors:c}),nn}}get options(){return this._def.options}}Ee.create=(n,r)=>{return new Ee({options:n,typeName:on.ZodUnion,...ln(r)})};var Gt=(n)=>{if(n instanceof Me)return Gt(n.schema);else if(n instanceof ft)return Gt(n.innerType());else if(n instanceof De)return[n.value];else if(n instanceof bo)return n.options;else if(n instanceof He)return un.objectValues(n.enum);else if(n instanceof ze)return Gt(n._def.innerType);else if(n instanceof Re)return[void 0];else if(n instanceof ke)return[null];else if(n instanceof st)return[void 0,...Gt(n.unwrap())];else if(n instanceof Ot)return[null,...Gt(n.unwrap())];else if(n instanceof ti)return Gt(n.unwrap());else if(n instanceof Be)return Gt(n.unwrap());else if(n instanceof Ue)return Gt(n._def.innerType);else return[]};class ri extends fn{_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==F.object)return K(r,{code:P.invalid_type,expected:F.object,received:r.parsedType}),nn;let t=this.discriminator,o=r.data[t],e=this.optionsMap.get(o);if(!e)return K(r,{code:P.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),nn;if(r.common.async)return e._parseAsync({data:r.data,path:r.path,parent:r});else return e._parseSync({data:r.data,path:r.path,parent:r})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(n,r,t){let o=new Map;for(let e of r){let a=Gt(e.shape[n]);if(!a.length)throw Error(`A discriminator value for key \`${n}\` could not be extracted from all schema options`);for(let c of a){if(o.has(c))throw Error(`Discriminator property ${String(n)} has duplicate value ${String(c)}`);o.set(c,e)}}return new ri({typeName:on.ZodDiscriminatedUnion,discriminator:n,options:r,optionsMap:o,...ln(t)})}}function df(n,r){let t=Mt(n),o=Mt(r);if(n===r)return{valid:!0,data:n};else if(t===F.object&&o===F.object){let e=un.objectKeys(r),a=un.objectKeys(n).filter((i)=>e.indexOf(i)!==-1),c={...n,...r};for(let i of a){let s=df(n[i],r[i]);if(!s.valid)return{valid:!1};c[i]=s.data}return{valid:!0,data:c}}else if(t===F.array&&o===F.array){if(n.length!==r.length)return{valid:!1};let e=[];for(let a=0;a<n.length;a++){let c=n[a],i=r[a],s=df(c,i);if(!s.valid)return{valid:!1};e.push(s.data)}return{valid:!0,data:e}}else if(t===F.date&&o===F.date&&+n===+r)return{valid:!0,data:n};else return{valid:!1}}class Se extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=(e,a)=>{if(yc(e)||yc(a))return nn;let c=df(e.value,a.value);if(!c.valid)return K(t,{code:P.invalid_intersection_types}),nn;if(ni(e)||ni(a))r.dirty();return{status:r.value,value:c.data}};if(t.common.async)return Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([e,a])=>o(e,a));else return o(this._def.left._parseSync({data:t.data,path:t.path,parent:t}),this._def.right._parseSync({data:t.data,path:t.path,parent:t}))}}Se.create=(n,r,t)=>{return new Se({left:n,right:r,typeName:on.ZodIntersection,...ln(t)})};class Ht extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==F.array)return K(t,{code:P.invalid_type,expected:F.array,received:t.parsedType}),nn;if(t.data.length<this._def.items.length)return K(t,{code:P.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),nn;if(!this._def.rest&&t.data.length>this._def.items.length)K(t,{code:P.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty();let e=[...t.data].map((a,c)=>{let i=this._def.items[c]||this._def.rest;if(!i)return null;return i._parse(new lt(t,a,t.path,c))}).filter((a)=>!!a);if(t.common.async)return Promise.all(e).then((a)=>{return fr.mergeArray(r,a)});else return fr.mergeArray(r,e)}get items(){return this._def.items}rest(n){return new Ht({...this._def,rest:n})}}Ht.create=(n,r)=>{if(!Array.isArray(n))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new Ht({items:n,typeName:on.ZodTuple,rest:null,...ln(r)})};class Ma extends fn{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==F.object)return K(t,{code:P.invalid_type,expected:F.object,received:t.parsedType}),nn;let o=[],e=this._def.keyType,a=this._def.valueType;for(let c in t.data)o.push({key:e._parse(new lt(t,c,t.path,c)),value:a._parse(new lt(t,t.data[c],t.path,c)),alwaysSet:c in t.data});if(t.common.async)return fr.mergeObjectAsync(r,o);else return fr.mergeObjectSync(r,o)}get element(){return this._def.valueType}static create(n,r,t){if(r instanceof fn)return new Ma({keyType:n,valueType:r,typeName:on.ZodRecord,...ln(t)});return new Ma({keyType:ct.create(),valueType:n,typeName:on.ZodRecord,...ln(r)})}}class Da extends fn{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==F.map)return K(t,{code:P.invalid_type,expected:F.map,received:t.parsedType}),nn;let o=this._def.keyType,e=this._def.valueType,a=[...t.data.entries()].map(([c,i],s)=>{return{key:o._parse(new lt(t,c,t.path,[s,"key"])),value:e._parse(new lt(t,i,t.path,[s,"value"]))}});if(t.common.async){let c=new Map;return Promise.resolve().then(async()=>{for(let i of a){let s=await i.key,l=await i.value;if(s.status==="aborted"||l.status==="aborted")return nn;if(s.status==="dirty"||l.status==="dirty")r.dirty();c.set(s.value,l.value)}return{status:r.value,value:c}})}else{let c=new Map;for(let i of a){let{key:s,value:l}=i;if(s.status==="aborted"||l.status==="aborted")return nn;if(s.status==="dirty"||l.status==="dirty")r.dirty();c.set(s.value,l.value)}return{status:r.value,value:c}}}}Da.create=(n,r,t)=>{return new Da({valueType:r,keyType:n,typeName:on.ZodMap,...ln(t)})};class No extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==F.set)return K(t,{code:P.invalid_type,expected:F.set,received:t.parsedType}),nn;let o=this._def;if(o.minSize!==null){if(t.data.size<o.minSize.value)K(t,{code:P.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),r.dirty()}if(o.maxSize!==null){if(t.data.size>o.maxSize.value)K(t,{code:P.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty()}let e=this._def.valueType;function a(i){let s=new Set;for(let l of i){if(l.status==="aborted")return nn;if(l.status==="dirty")r.dirty();s.add(l.value)}return{status:r.value,value:s}}let c=[...t.data.values()].map((i,s)=>e._parse(new lt(t,i,t.path,s)));if(t.common.async)return Promise.all(c).then((i)=>a(i));else return a(c)}min(n,r){return new No({...this._def,minSize:{value:n,message:v.toString(r)}})}max(n,r){return new No({...this._def,maxSize:{value:n,message:v.toString(r)}})}size(n,r){return this.min(n,r).max(n,r)}nonempty(n){return this.min(1,n)}}No.create=(n,r)=>{return new No({valueType:n,minSize:null,maxSize:null,typeName:on.ZodSet,...ln(r)})};class $e extends fn{constructor(){super(...arguments);this.validate=this.implement}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==F.function)return K(r,{code:P.invalid_type,expected:F.function,received:r.parsedType}),nn;function t(c,i){return ka({data:c,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,me(),Pt].filter((s)=>!!s),issueData:{code:P.invalid_arguments,argumentsError:i}})}function o(c,i){return ka({data:c,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,me(),Pt].filter((s)=>!!s),issueData:{code:P.invalid_return_type,returnTypeError:i}})}let e={errorMap:r.common.contextualErrorMap},a=r.data;if(this._def.returns instanceof qo){let c=this;return mr(async function(...i){let s=new Mr([]),l=await c._def.args.parseAsync(i,e).catch((b)=>{throw s.addIssue(t(i,b)),s}),f=await Reflect.apply(a,this,l);return await c._def.returns._def.type.parseAsync(f,e).catch((b)=>{throw s.addIssue(o(f,b)),s})})}else{let c=this;return mr(function(...i){let s=c._def.args.safeParse(i,e);if(!s.success)throw new Mr([t(i,s.error)]);let l=Reflect.apply(a,this,s.data),f=c._def.returns.safeParse(l,e);if(!f.success)throw new Mr([o(l,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...n){return new $e({...this._def,args:Ht.create(n).rest(lo.create())})}returns(n){return new $e({...this._def,returns:n})}implement(n){return this.parse(n)}strictImplement(n){return this.parse(n)}static create(n,r,t){return new $e({args:n?n:Ht.create([]).rest(lo.create()),returns:r||lo.create(),typeName:on.ZodFunction,...ln(t)})}}class Me extends fn{get schema(){return this._def.getter()}_parse(n){let{ctx:r}=this._processInputParams(n);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}}Me.create=(n,r)=>{return new Me({getter:n,typeName:on.ZodLazy,...ln(r)})};class De extends fn{_parse(n){if(n.data!==this._def.value){let r=this._getOrReturnCtx(n);return K(r,{received:r.data,code:P.invalid_literal,expected:this._def.value}),nn}return{status:"valid",value:n.data}}get value(){return this._def.value}}De.create=(n,r)=>{return new De({value:n,typeName:on.ZodLiteral,...ln(r)})};function Vg(n,r){return new bo({values:n,typeName:on.ZodEnum,...ln(r)})}class bo extends fn{_parse(n){if(typeof n.data!=="string"){let r=this._getOrReturnCtx(n),t=this._def.values;return K(r,{expected:un.joinValues(t),received:r.parsedType,code:P.invalid_type}),nn}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(n.data)){let r=this._getOrReturnCtx(n),t=this._def.values;return K(r,{received:r.data,code:P.invalid_enum_value,options:t}),nn}return mr(n.data)}get options(){return this._def.values}get enum(){let n={};for(let r of this._def.values)n[r]=r;return n}get Values(){let n={};for(let r of this._def.values)n[r]=r;return n}get Enum(){let n={};for(let r of this._def.values)n[r]=r;return n}extract(n,r=this._def){return bo.create(n,{...this._def,...r})}exclude(n,r=this._def){return bo.create(this.options.filter((t)=>!n.includes(t)),{...this._def,...r})}}bo.create=Vg;class He extends fn{_parse(n){let r=un.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(n);if(t.parsedType!==F.string&&t.parsedType!==F.number){let o=un.objectValues(r);return K(t,{expected:un.joinValues(o),received:t.parsedType,code:P.invalid_type}),nn}if(!this._cache)this._cache=new Set(un.getValidEnumValues(this._def.values));if(!this._cache.has(n.data)){let o=un.objectValues(r);return K(t,{received:t.data,code:P.invalid_enum_value,options:o}),nn}return mr(n.data)}get enum(){return this._def.values}}He.create=(n,r)=>{return new He({values:n,typeName:on.ZodNativeEnum,...ln(r)})};class qo extends fn{unwrap(){return this._def.type}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==F.promise&&r.common.async===!1)return K(r,{code:P.invalid_type,expected:F.promise,received:r.parsedType}),nn;let t=r.parsedType===F.promise?r.data:Promise.resolve(r.data);return mr(t.then((o)=>{return this._def.type.parseAsync(o,{path:r.path,errorMap:r.common.contextualErrorMap})}))}}qo.create=(n,r)=>{return new qo({type:n,typeName:on.ZodPromise,...ln(r)})};class ft extends fn{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===on.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=this._def.effect||null,e={addIssue:(a)=>{if(K(t,a),a.fatal)r.abort();else r.dirty()},get path(){return t.path}};if(e.addIssue=e.addIssue.bind(e),o.type==="preprocess"){let a=o.transform(t.data,e);if(t.common.async)return Promise.resolve(a).then(async(c)=>{if(r.value==="aborted")return nn;let i=await this._def.schema._parseAsync({data:c,path:t.path,parent:t});if(i.status==="aborted")return nn;if(i.status==="dirty")return Po(i.value);if(r.value==="dirty")return Po(i.value);return i});else{if(r.value==="aborted")return nn;let c=this._def.schema._parseSync({data:a,path:t.path,parent:t});if(c.status==="aborted")return nn;if(c.status==="dirty")return Po(c.value);if(r.value==="dirty")return Po(c.value);return c}}if(o.type==="refinement"){let a=(c)=>{let i=o.refinement(c,e);if(t.common.async)return Promise.resolve(i);if(i instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return c};if(t.common.async===!1){let c=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(c.status==="aborted")return nn;if(c.status==="dirty")r.dirty();return a(c.value),{status:r.value,value:c.value}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((c)=>{if(c.status==="aborted")return nn;if(c.status==="dirty")r.dirty();return a(c.value).then(()=>{return{status:r.value,value:c.value}})})}if(o.type==="transform")if(t.common.async===!1){let a=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(!so(a))return nn;let c=o.transform(a.value,e);if(c instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:c}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((a)=>{if(!so(a))return nn;return Promise.resolve(o.transform(a.value,e)).then((c)=>({status:r.value,value:c}))});un.assertNever(o)}}ft.create=(n,r,t)=>{return new ft({schema:n,typeName:on.ZodEffects,effect:r,...ln(t)})};ft.createWithPreprocess=(n,r,t)=>{return new ft({schema:r,effect:{type:"preprocess",transform:n},typeName:on.ZodEffects,...ln(t)})};class st extends fn{_parse(n){if(this._getType(n)===F.undefined)return mr(void 0);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}st.create=(n,r)=>{return new st({innerType:n,typeName:on.ZodOptional,...ln(r)})};class Ot extends fn{_parse(n){if(this._getType(n)===F.null)return mr(null);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}Ot.create=(n,r)=>{return new Ot({innerType:n,typeName:on.ZodNullable,...ln(r)})};class ze extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;if(r.parsedType===F.undefined)t=this._def.defaultValue();return this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}ze.create=(n,r)=>{return new ze({innerType:n,typeName:on.ZodDefault,defaultValue:typeof r.default==="function"?r.default:()=>r.default,...ln(r)})};class Ue extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t={...r,common:{...r.common,issues:[]}},o=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});if(we(o))return o.then((e)=>{return{status:"valid",value:e.status==="valid"?e.value:this._def.catchValue({get error(){return new Mr(t.common.issues)},input:t.data})}});else return{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Mr(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}}Ue.create=(n,r)=>{return new Ue({innerType:n,typeName:on.ZodCatch,catchValue:typeof r.catch==="function"?r.catch:()=>r.catch,...ln(r)})};class Ha extends fn{_parse(n){if(this._getType(n)!==F.nan){let t=this._getOrReturnCtx(n);return K(t,{code:P.invalid_type,expected:F.nan,received:t.parsedType}),nn}return{status:"valid",value:n.data}}}Ha.create=(n)=>{return new Ha({typeName:on.ZodNaN,...ln(n)})};var q5=Symbol("zod_brand");class ti extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}}class za extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});if(e.status==="aborted")return nn;if(e.status==="dirty")return r.dirty(),Po(e.value);else return this._def.out._parseAsync({data:e.value,path:t.path,parent:t})})();else{let o=this._def.in._parseSync({data:t.data,path:t.path,parent:t});if(o.status==="aborted")return nn;if(o.status==="dirty")return r.dirty(),{status:"dirty",value:o.value};else return this._def.out._parseSync({data:o.value,path:t.path,parent:t})}}static create(n,r){return new za({in:n,out:r,typeName:on.ZodPipeline})}}class Be extends fn{_parse(n){let r=this._def.innerType._parse(n),t=(o)=>{if(so(o))o.value=Object.freeze(o.value);return o};return we(r)?r.then((o)=>t(o)):t(r)}unwrap(){return this._def.innerType}}Be.create=(n,r)=>{return new Be({innerType:n,typeName:on.ZodReadonly,...ln(r)})};function Yg(n,r){let t=typeof n==="function"?n(r):typeof n==="string"?{message:n}:n;return typeof t==="string"?{message:t}:t}function Cg(n,r={},t){if(n)return Oo.create().superRefine((o,e)=>{let a=n(o);if(a instanceof Promise)return a.then((c)=>{if(!c){let i=Yg(r,o),s=i.fatal??t??!0;e.addIssue({code:"custom",...i,fatal:s})}});if(!a){let c=Yg(r,o),i=c.fatal??t??!0;e.addIssue({code:"custom",...c,fatal:i})}return});return Oo.create()}var F5={object:xn.lazycreate},on;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(on||(on={}));var j5=(n,r={message:`Input not instance of ${n.name}`})=>Cg((t)=>t instanceof n,r),xg=ct.create,Qg=fo.create,p5=Ha.create,K5=uo.create,Pg=Ae.create,T5=Go.create,v5=Ea.create,I5=Re.create,Z5=ke.create,y5=Oo.create,n$=lo.create,r$=Dt.create,t$=Sa.create,o$=it.create,e$=xn.create,a$=xn.strictCreate,c$=Ee.create,i$=ri.create,s$=Se.create,l$=Ht.create,f$=Ma.create,d$=Da.create,u$=No.create,b$=$e.create,g$=Me.create,_$=De.create,m$=bo.create,w$=He.create,h$=qo.create,$$=ft.create,A$=st.create,R$=Ot.create,k$=ft.createWithPreprocess,E$=za.create,S$=()=>xg().optional(),M$=()=>Qg().optional(),D$=()=>Pg().optional(),H$={string:(n)=>ct.create({...n,coerce:!0}),number:(n)=>fo.create({...n,coerce:!0}),boolean:(n)=>Ae.create({...n,coerce:!0}),bigint:(n)=>uo.create({...n,coerce:!0}),date:(n)=>Go.create({...n,coerce:!0})};var z$=nn;var U$=H.object({name:H.string().regex(/^x-/),component:H.unknown()}),Gg=H.function().returns(H.object({name:H.string(),extensions:H.array(U$)}));var Og=[["--theme-","--scalar-"],["--sidebar-","--scalar-sidebar-"]],B$=Og.map(([n])=>n);function oi(n){if(!B$.some((t)=>n.includes(t)))return n;return console.warn("DEPRECATION WARNING: It looks like you're using legacy CSS variables in your custom CSS string. Please migrate them to use the updated prefixes. See https://github.com/scalar/scalar/blob/main/documentation/themes.md#theme-prefix-changes"),Og.reduce((t,[o,e])=>t.replaceAll(o,e),n)}var W$=H.enum(["alternate","default","moon","purple","solarized","bluePlanet","deepSpace","saturn","kepler","elysiajs","fastify","mars","none"]),Y$=H.enum(["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]),J$=H.enum(["adonisjs","docusaurus","dotnet","elysiajs","express","fastapi","fastify","go","hono","html","laravel","litestar","nestjs","nextjs","nitro","nuxt","platformatic","react","rust","vue"]).nullable(),qg=H.object({url:H.string().optional(),content:H.union([H.string(),H.record(H.any()),H.function().returns(H.record(H.any())),H.null()]).optional(),title:H.string().optional(),slug:H.string().optional()}),L$=H.object({basePath:H.string()}),Fg=H.object({url:H.string().optional(),content:H.union([H.string(),H.record(H.any()),H.function().returns(H.record(H.any())),H.null()]).optional(),title:H.string().optional(),slug:H.string().optional(),spec:qg.optional(),authentication:H.any().optional(),baseServerURL:H.string().optional(),hideClientButton:H.boolean().optional().default(!1).catch(!1),proxyUrl:H.string().optional(),searchHotKey:Y$.optional(),servers:H.array(H.any()).optional(),showSidebar:H.boolean().optional().default(!0).catch(!0),theme:W$.optional().default("default").catch("default"),_integration:J$.optional(),onRequestSent:H.function().args(H.string()).returns(H.void()).optional()}),Ng="https://api.scalar.com/request-proxy",uf="https://proxy.scalar.com",X$=Fg.merge(H.object({layout:H.enum(["modern","classic"]).optional().default("modern").catch("modern"),proxy:H.string().optional(),plugins:H.array(Gg).optional(),isEditable:H.boolean().optional().default(!1).catch(!1),isLoading:H.boolean().optional().default(!1).catch(!1),hideModels:H.boolean().optional().default(!1).catch(!1),hideDownloadButton:H.boolean().optional().default(!1).catch(!1),hideTestRequestButton:H.boolean().optional().default(!1).catch(!1),hideSearch:H.boolean().optional().default(!1).catch(!1),darkMode:H.boolean().optional(),forceDarkModeState:H.enum(["dark","light"]).optional(),hideDarkModeToggle:H.boolean().optional().default(!1).catch(!1),metaData:H.any().optional(),favicon:H.string().optional(),hiddenClients:H.union([H.record(H.union([H.boolean(),H.array(H.string())])),H.array(H.string()),H.literal(!0)]).optional(),defaultHttpClient:H.object({targetKey:H.custom(),clientKey:H.string()}).optional(),customCss:H.string().optional(),onSpecUpdate:H.function().args(H.string()).returns(H.void()).optional(),onServerChange:H.function().args(H.string()).returns(H.void()).optional(),onDocumentSelect:H.function().returns(H.void().or(H.void().promise())).optional(),onLoaded:H.function().returns(H.void().or(H.void().promise())).optional(),onShowMore:H.function().args(H.string()).returns(H.void().or(H.void().promise())).optional(),onSidebarClick:H.function().args(H.string()).returns(H.void().or(H.void().promise())).optional(),pathRouting:L$.optional(),generateHeadingSlug:H.function().args(H.object({slug:H.string().default("headingSlug")})).returns(H.string()).optional(),generateModelSlug:H.function().args(H.object({name:H.string().default("modelName")})).returns(H.string()).optional(),generateTagSlug:H.function().args(H.object({name:H.string().default("tagName")})).returns(H.string()).optional(),generateOperationSlug:H.function().args(H.object({path:H.string(),operationId:H.string().optional(),method:H.string(),summary:H.string().optional()})).returns(H.string()).optional(),generateWebhookSlug:H.function().args(H.object({name:H.string(),method:H.string().optional()})).returns(H.string()).optional(),redirect:H.function().args(H.string()).returns(H.string().nullable().optional()).optional(),withDefaultFonts:H.boolean().optional().default(!0).catch(!0),defaultOpenAllTags:H.boolean().optional(),tagsSorter:H.union([H.literal("alpha"),H.function().args(H.any(),H.any()).returns(H.number())]).optional(),operationsSorter:H.union([H.literal("alpha"),H.literal("method"),H.function().args(H.any(),H.any()).returns(H.number())]).optional()})),V$=(n)=>{let r={...n};if(r.spec?.url)console.warn("[DEPRECATED] You're using the deprecated 'spec.url' attribute. Remove the spec prefix and move the 'url' attribute to the top level."),r.url=r.spec.url,delete r.spec;if(r.spec?.content)console.warn("[DEPRECATED] You're using the deprecated 'spec.content' attribute. Remove the spec prefix and move the 'content' attribute to the top level."),r.content=r.spec.content,delete r.spec;if(r.customCss)r.customCss=oi(r.customCss);if(r.proxy){if(console.warn("[DEPRECATED] You're using the deprecated 'proxy' attribute, rename it to 'proxyUrl' or update the package."),!r.proxyUrl)r.proxyUrl=r.proxy;delete r.proxy}if(r.proxyUrl===Ng)console.warn(`[DEPRECATED] Warning: configuration.proxyUrl points to our old proxy (${Ng}).`),console.warn(`[DEPRECATED] We are overwriting the value and use the new proxy URL (${uf}) instead.`),console.warn(`[DEPRECATED] Action Required: You should manually update your configuration to use the new URL (${uf}). Read more: https://github.com/scalar/scalar`),r.proxyUrl=uf;return r},C$=X$.transform(V$);var x$=H.object({cdn:H.string().optional().default("https://cdn.jsdelivr.net/npm/@scalar/api-reference"),pageTitle:H.string().optional().default("Scalar API Reference")});var Q$={alternate:$g,default:kg,moon:Dg,elysiajs:Zc,fastify:Eg,purple:Hg,solarized:Ug,bluePlanet:Ag,deepSpace:Rg,saturn:zg,kepler:Sg,mars:Mg};var mH=Object.keys(Q$);import{replaceSchemaType as q$,t as gf}from"elysia";function bf(n){return"type"in n||"properties"in n||"items"in n}function G$(n,r){return(n==="createdAt"||n==="updatedAt")&&"anyOf"in r&&Array.isArray(r.anyOf)}function Kg(n){if(!bf(n)||typeof n!=="object"||n===null)return n;let r={...n};return Object.entries(r).forEach(([t,o])=>{if(bf(o))if(G$(t,o)){let e=o.anyOf?.find((a)=>bf(a)&&a.format==="date-time");if(e){let a={type:"string",format:"date-time",default:e.default};r[t]=a}}else r[t]=Kg(o)}),r}var O$=(n,r,t,o,e)=>{let a=JSON.parse(o);if(a.components&&a.components.schemas)a.components.schemas=Object.fromEntries(Object.entries(a.components.schemas).map(([i,s])=>[i,Kg(s)]));let c=JSON.stringify(a);return`<!DOCTYPE html>
1434
1434
  <html lang="en">
1435
1435
  <head>
1436
1436
  <meta charset="utf-8" />
@@ -1506,7 +1506,7 @@ data: ${t}
1506
1506
  </script>
1507
1507
  <script src="${o?o:`https://cdn.jsdelivr.net/npm/@scalar/api-reference@${r}/dist/browser/standalone.min.js`}" crossorigin></script>
1508
1508
  </body>
1509
- </html>`;var mf=Symbol.for("TypeBox.Kind"),F$=(n)=>n.split("/").map((r)=>{if(r.startsWith(":")){if(r=r.slice(1,r.length),r.endsWith("?"))r=r.slice(0,-1);r=`{${r}}`}return r}).join("/"),_f=(n,r,t)=>{if(r===void 0)return[];if(typeof r==="string")if(r in t)r=t[r];else throw Error(`Can't find model ${r}`);return Object.entries(r?.properties??[]).map(([o,e])=>{let{type:a=void 0,description:c,examples:i,...s}=e;return{description:c,examples:i,schema:{type:a,...s},in:n,name:o,required:r.required?.includes(o)??!1}})},Ua=(n,r)=>{if(typeof r==="object"&&["void","undefined","null"].includes(r.type))return;let t={};for(let o of n)t[o]={schema:typeof r==="string"?{$ref:`#/components/schemas/${r}`}:("$ref"in r)&&(mf in r)&&r[mf]==="Ref"?{...r,$ref:`#/components/schemas/${r.$ref}`}:q$({...r},{from:gf.Ref(""),to:({$ref:e,...a})=>{if(!e.startsWith("#/components/schemas/"))return gf.Ref(`#/components/schemas/${e}`,a);return gf.Ref(e,a)}})};return t},jg=(n)=>n.charAt(0).toUpperCase()+n.slice(1),j$=(n,r)=>{let t=n.toLowerCase();if(r==="/")return t+"Index";for(let o of r.split("/"))if(o.charCodeAt(0)===123)t+="By"+jg(o.slice(1,-1));else t+=jg(o);return t},We=(n)=>{if(!n)return;if(typeof n==="string")return n;if(Array.isArray(n))return[...n];return{...n}},pg=({schema:n,path:r,method:t,hook:o,models:e})=>{if(o=We(o),o.parse&&!Array.isArray(o.parse))o.parse=[o.parse];let a=o.parse?.map(($)=>{switch(typeof $){case"string":return $;case"object":if($&&typeof $?.fn!=="string")return;switch($?.fn){case"json":case"application/json":return"application/json";case"text":case"text/plain":return"text/plain";case"urlencoded":case"application/x-www-form-urlencoded":return"application/x-www-form-urlencoded";case"arrayBuffer":case"application/octet-stream":return"application/octet-stream";case"formdata":case"multipart/form-data":return"multipart/form-data"}}}).filter(($)=>$!==void 0);if(!a||a.length===0)a=["application/json","multipart/form-data","text/plain"];r=F$(r);let c=typeof a==="string"?[a]:a??["application/json"],i=We(o?.body),s=We(o?.params),l=We(o?.headers),f=We(o?.query),u=We(o?.response);if(typeof u==="object")if(mf in u){let{type:$,properties:A,required:_,additionalProperties:m,patternProperties:E,$ref:R,...M}=u;u={"200":{...M,description:M.description,content:Ua(c,$==="object"||$==="array"?{type:$,properties:A,patternProperties:E,items:u.items,required:_}:u)}}}else Object.entries(u).forEach(([$,A])=>{if(typeof A==="string"){if(!e[A])return;let{type:_,properties:m,required:E,additionalProperties:R,patternProperties:M,...S}=e[A];u[$]={...S,description:S.description,content:Ua(c,A)}}else{let{type:_,properties:m,required:E,additionalProperties:R,patternProperties:M,...S}=A;u[$]={...S,description:S.description,content:Ua(c,_==="object"||_==="array"?{type:_,properties:m,patternProperties:M,items:A.items,required:E}:A)}}});else if(typeof u==="string"){if(!(u in e))return;let{type:$,properties:A,required:_,$ref:m,additionalProperties:E,patternProperties:R,...M}=e[u];u={"200":{...M,content:Ua(c,u)}}}let b=[..._f("header",l,e),..._f("path",s,e),..._f("query",f,e)];n[r]={...n[r]?n[r]:{},[t.toLowerCase()]:{...l||s||f||i?{parameters:b}:{},...u?{responses:u}:{},operationId:o?.detail?.operationId??j$(t,r),...o?.detail,...i?{requestBody:{required:!0,content:Ua(c,typeof i==="string"?{$ref:`#/components/schemas/${i}`}:i)}}:null}}},p$=(n,{excludeStaticFile:r=!0,exclude:t=[]})=>{let o={};for(let[e,a]of Object.entries(n))if(!t.some((c)=>{if(typeof c==="string")return e===c;return c.test(e)})&&!e.includes("*")&&(r?!e.includes("."):!0))Object.keys(a).forEach((c)=>{let i=a[c];if(e.includes("{")){if(!i.parameters)i.parameters=[];i.parameters=[...e.split("/").filter((s)=>s.startsWith("{")&&!i.parameters.find((l)=>l.in==="path"&&l.name===s.slice(1,s.length-1))).map((s)=>({schema:{type:"string"},in:"path",name:s.slice(1,s.length-1),required:!0})),...i.parameters]}if(!i.responses)i.responses={200:{}}}),o[e]=a;return o},Tg=({provider:n="scalar",scalarVersion:r="latest",scalarCDN:t="",scalarConfig:o={},documentation:e={},version:a="5.9.0",excludeStaticFile:c=!0,path:i="/swagger",specPath:s=`${i}/json`,exclude:l=[],swaggerOptions:f={},theme:u=`https://unpkg.com/swagger-ui-dist@${a}/swagger-ui.css`,autoDarkMode:b=!0,excludeMethods:$=["OPTIONS"],excludeTags:A=[]}={})=>{let _={},m=0;if(!a)a=`https://unpkg.com/swagger-ui-dist@${a}/swagger-ui.css`;let E={title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...e.info},R=s.startsWith("/")?s.slice(1):s,M=new P$({name:"@elysiajs/swagger"}),S=new Response(n==="swagger-ui"?O$(E,a,u,JSON.stringify({url:R,dom_id:"#swagger-ui",...f},(x,D)=>typeof D==="function"?void 0:D),b):N$(E,r,{spec:{url:R,...o.spec},...o,_integration:"elysiajs"},t),{headers:{"content-type":"text/html; charset=utf8"}});return M.get(i,S,{detail:{hide:!0}}).get(s,function(){let D=M.getGlobalRoutes();if(D.length!==m){let k=["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"];m=D.length,D.forEach((B)=>{if(B.hooks?.detail?.hide===!0)return;if($.includes(B.method))return;if(k.includes(B.method)===!1&&B.method!=="ALL")return;if(B.method==="ALL")k.forEach((w)=>{pg({schema:_,hook:B.hooks,method:w,path:B.path,models:M.getGlobalDefinitions?.().type,contentType:B.hooks.type})});else pg({schema:_,hook:B.hooks,method:B.method,path:B.path,models:M.getGlobalDefinitions?.().type,contentType:B.hooks.type})})}return{openapi:"3.0.3",...{...e,tags:e.tags?.filter((k)=>!A?.includes(k?.name)),info:{title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...e.info}},paths:{...p$(_,{excludeStaticFile:c,exclude:Array.isArray(l)?l:[l]}),...e.paths},components:{...e.components,schemas:{...M.getGlobalDefinitions?.().type,...e.components?.schemas}}}},{detail:{hide:!0}}),M};function wf(n){if(n?.enabled===!1)return null;let r={path:n?.path??"/swagger",provider:n?.provider??"scalar",excludeStaticFile:n?.excludeStaticFile??!0,exclude:n?.exclude??[],documentation:{info:{title:n?.documentation?.info?.title??"Nucleus API",description:n?.documentation?.info?.description??"Auto-generated API documentation",version:n?.documentation?.info?.version??"1.0.0",contact:n?.documentation?.info?.contact,license:n?.documentation?.info?.license},tags:n?.documentation?.tags??[],servers:n?.documentation?.servers},scalarConfig:n?.scalarConfig};return Tg(r)}Kc();Md();Ic();var fE=(n)=>{let r=new Map;for(let t of n){let o=r.get(t.table_name),e=t.columns??o?.columns;r.set(t.table_name,{...o||{},...t,columns:e})}return Array.from(r.values())},dE=(n)=>({table_name:n.table_name,excluded_methods:n.excluded_methods?[...n.excluded_methods]:void 0,columns:n.columns?n.columns.map((r)=>({name:r.name,type:r.type})):void 0}),uE=(n)=>{let r=[];for(let[t,o]of Object.entries(n)){if(!o||typeof o!=="object")continue;let e=o,a=e._;if(a?.name){r.push({table_name:a.name});continue}let c=Object.getOwnPropertySymbols(e);for(let i of c){let s=e[i];if(s&&typeof s==="object"){let l=s;if(l.name&&typeof l.name==="string"){r.push({table_name:l.name});break}}}}return r};async function bE(n){let r=new lE;if(r.get("/health",()=>({status:"ok",timestamp:Date.now()})),n.staticAssets!==!1){let w=Mn("path"),g=Mn("fs"),Y;if(typeof n.staticAssets==="string")Y=n.staticAssets;else{let V=w.join(process.cwd(),"public"),C="";for(let Q of["nucleus-core-ts","nucleus-core"])try{let j=Mn.resolve(`${Q}/package.json`),L=w.join(w.dirname(j),"public");if(g.existsSync(L)){C=L;break}}catch{}if(C)Y=C;else if(g.existsSync(V))Y=V;else Y=V}try{r.use(await Fd({prefix:"/nucleus-core",assets:Y}))}catch{}}let t=[],o,e=process.cwd();if(typeof n.options==="string"){let w=Mn("fs"),g=Mn("path"),Y=g.isAbsolute(n.options)?n.options:g.resolve(process.cwd(),n.options);e=g.dirname(Y);let V=w.readFileSync(Y,"utf-8");o=JSON.parse(V)}else o=n.options;if(o.email?.gmail?.json_file_path){let w=Mn("path"),g=o.email.gmail.json_file_path;if(!w.isAbsolute(g))o.email.gmail.json_file_path=w.resolve(e,g)}let{authentication:a,audit:c,entities:i,database:s}=o,l=o.mode==="development",f=new Jr({service:o.appId||"nucleus",prettyPrint:l,colorize:l,auditEnabled:c?.enabled??!1}),u=tg(o);if(!u.valid){for(let w of u.errors)f.error(`[CONFIG] ${w.message}`,{field:w.field,envName:w.envName});throw Error("Nucleus configuration error: Missing required environment variables. Check logs for details.")}let{resolved:b}=u,$={access_token:a?.accessToken?.name||"access_token",refresh_token:a?.refreshToken?.name||"refresh_token",session_token:a?.sessionToken?.name||"session_token"},A=s?.schemas?.[0]||"main",_=sE(A);if(b.databaseUrl)await og(b.databaseUrl,f);let m=b.databaseUrl?iE(b.databaseUrl):null,E={},R={};if(n.schema){let g=Mn("path").resolve(process.cwd(),n.schema),Y=Mn(g);E=Y.createAllTablesForSchema?Y.createAllTablesForSchema(_):{}}if(n.relations){let g=Mn("path").resolve(process.cwd(),n.relations);R=Mn(g)}let M=wf(n.swagger);if(M)r.use(M);let S=n.systemTables||[];t=Ll(o,S,"",A),f.info(`[AUTH] Built ${t.length} public routes`);let x=null,D=null,k=null,B=null;if(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)f.info("[GmailService] Initializing...",{jsonFilePath:o.email.gmail.json_file_path,fromEmail:o.email.gmail.from_email}),B=new Ml({enabled:!0,jsonFilePath:o.email.gmail.json_file_path,fromEmail:o.email.gmail.from_email||"",fromName:o.email.gmail.from_name},f),f.info("[GmailService] isAvailable:",{available:B.isAvailable()});if(o.liveMonitoring?.enabled){let w=o.liveMonitoring.basePath||"/monitoring",g=o.liveMonitoring.streamInterval||150;r.use(fg({getService:()=>k,logger:f,basePath:w,streamInterval:g}))}if(r.onStart(async()=>{pl(o);let w=pc();if(w&&o.rateLimit?.enabled!==!1)x=new Bl({redis:w,logger:f,config:o.rateLimit||{}}),f.info(`[RateLimit] Enabled with strategy: ${o.rateLimit?.strategy||"sliding-window"}`);if(w&&o.monitoring?.enabled){if(D=new zl({redis:w,logger:f,gmail:B||void 0,config:o.monitoring,appId:o.appId}),D.start(),f.info("[Monitoring] Service started"),o.monitoring.endpoints?.enabled){let g={enabled:!0,basePath:o.monitoring.endpoints.basePath||"/monitoring",stream:{enabled:o.monitoring.endpoints.stream?.enabled!==!1,path:o.monitoring.endpoints.stream?.path||"/stream",interval:o.monitoring.endpoints.stream?.interval||"5s"},snapshot:{enabled:o.monitoring.endpoints.snapshot?.enabled!==!1,path:o.monitoring.endpoints.snapshot?.path||"/snapshot"},history:{enabled:o.monitoring.endpoints.history?.enabled!==!1,path:o.monitoring.endpoints.history?.path||"/history",maxMinutes:o.monitoring.endpoints.history?.maxMinutes||60},alerts:{enabled:o.monitoring.endpoints.alerts?.enabled!==!1,path:o.monitoring.endpoints.alerts?.path||"/alerts"}};r.use(tf({monitoringService:D,logger:f,endpoints:g}))}}if(o.liveMonitoring?.enabled)k=new Xc(o.liveMonitoring),k.start(),f.info("[LiveMonitoring] Service started");if(m&&n.schema){let V=await import(Mn("path").resolve(process.cwd(),n.schema)),C=E.auditLogs||V.auditLogs;if(c?.enabled&&C)f.addAuditTransport(new lc({db:m,table:C,enabled:!0}));try{f.info(`Syncing schema to database (target: ${A})...`);let{sql:j}=await import("drizzle-orm");await m.execute(j.raw(`CREATE SCHEMA IF NOT EXISTS "${A}"`));try{let L=Object.fromEntries(Object.entries(E).filter(([O,F])=>{if(F===void 0||F===null)return!1;if(typeof F==="object"&&F!==null)return Object.getOwnPropertySymbols(F).length>0||F._!==void 0;return!1})),J=Object.keys(L);f.info("[Schema] Tables to sync:",{tables:J,count:J.length});let W=L.users;if(W){let O=Object.getOwnPropertyNames(W).filter((F)=>!F.startsWith("_"));f.info("[Schema] Users table columns:",{columns:O})}await(await cE({schema:_,...L},m,[A])).apply(),f.info("[Schema] pushSchema completed successfully")}catch(L){let J=L instanceof Error?L.message:String(L);f.warn(`[Schema] pushSchema warning: ${J}`)}console.log("Schema sync completed")}catch(j){let L=j instanceof Error?j.message:String(j);console.error("Schema sync failed:",L)}if(console.log("Database connection established"),o.authorization?.enabled){let j={...Tu,...o.authorization};if(j.autoSeedClaims){let L=uE(E),J=Sb.map((O)=>dE(O)),W=o.entities||[],X=fE([...L,...W,...J,...n.systemTables||[]]);f.info("[Authorization] Seeding claims...",{schemaEntities:L.length,systemEntities:J.length,configEntities:W.length,totalEntities:X.length}),await Pu(m,E,R,X,j,f)}if(j.godminEmail&&j.godminPassword)f.info("[Authorization] Setting up godmin..."),await Ou(m,E,j,f);f.info("[Authorization] Enabled")}let Q=E.userSessions;if(Q&&o.authentication?.sessions?.enabled){let{lt:j}=await import("drizzle-orm"),L=await m.update(Q).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ac(br(Q.isActive,!0),j(Q.expiresAt,new Date)));f.info("[AUTH] Expired sessions cleanup completed",{expiredCount:L}),setInterval(async()=>{try{await m.update(Q).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ac(br(Q.isActive,!0),j(Q.expiresAt,new Date)))}catch(J){f.warn("[AUTH] Session cleanup failed",{error:J})}},3600000)}}}).onRequest(async({request:w,set:g})=>{let Y=Date.now();w.headers.set("x-request-start-time",String(Y));let V=new URL(w.url),C=V.pathname,Q=w.method,j=V.search,L=w.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||w.headers.get("x-real-ip")?.trim()||"unknown",J=w.headers.get("user-agent")||"unknown",W,X={};if(w.method!=="GET"&&w.method!=="HEAD")try{let q=await w.clone().text();X=q?JSON.parse(q):{}}catch{X={}}let O=c?.enabled?{id:aE(),user_id:"unknown",entity_name:C.split("/").filter(Boolean)[0]||"root",entity_id:null,operation_type:Q,summary:"",old_values:{},new_values:X,ip_address:L,user_agent:J,timestamp:new Date().toISOString(),path:C,query:j}:null,F=Xl(t,C,Q);if(x){let K=F?"public":"private",q;if(C.includes("/auth/login"))q="login";else if(C.includes("/auth/register"))q="register";else if(C.includes("/auth/password-reset"))q="passwordReset";else if(C.includes("/auth/magic-link"))q="magicLink";let rn=q?"auth":K,en=await x.check({ip:L,endpoint:C,category:rn,authType:q}),gn=x.getHeaders(en);for(let[Gn,T]of Object.entries(gn))g.headers[Gn]=T;if(!en.allowed){if(g.status=429,en.retryAfter)g.headers["Retry-After"]=String(en.retryAfter);if(f.warn(`[RateLimit] Blocked request from ${L} to ${C}`),D)D.recordRateLimitBlock();return new Response(JSON.stringify({error:"Too Many Requests",retryAfter:en.retryAfter}),{status:429,headers:{"Content-Type":"application/json"}})}}if(C==="/health")return;if(a?.enabled&&!F){if(!a.accessToken?.secret||!a.refreshToken?.secret||!a.sessionToken?.secret)return g.status=500,f.traceSync({message:"Authentication secrets not defined",level:"error",context:{path:C,method:Q},audit:Co(O,"Authentication secrets not defined")}),Error("One or more authentication secrets are not defined");if(W=Zb(w.headers,$),!W.session_token)return g.status=401,f.traceSync({message:"No session token",level:"warn",context:{path:C,method:Q},audit:Co(O,"No session token")}),Error("Unauthenticated");let K=await Lo({sessionId:W.session_token});if(!K)return g.status=401,f.traceSync({message:"Invalid session",level:"warn",context:{path:C,method:Q,sessionId:W.session_token},audit:Co(O,"Invalid session")}),Error("Unauthenticated");let q=E.userSessions;if(q&&m){let Vn=(await m.select().from(q).where(br(q.id,W.session_token)).limit(1))[0];if(!Vn||Vn.isActive===!1||Vn.revokedAt)return g.status=401,f.traceSync({message:"Session revoked or inactive",level:"warn",context:{path:C,method:Q,sessionId:W.session_token,isActive:Vn?.isActive,revokedAt:Vn?.revokedAt},audit:Co(O,"Session revoked")}),Error("Session has been revoked");if(Vn.expiresAt&&new Date(Vn.expiresAt)<new Date)return g.status=401,f.traceSync({message:"Session expired",level:"warn",context:{path:C,method:Q,sessionId:W.session_token,expiresAt:Vn.expiresAt},audit:Co(O,"Session expired")}),Error("Session has expired")}if(K.lastActiveAt&&a.sessions?.inactivityTimeout){let tn=new Date(K.lastActiveAt).getTime(),Vn=at(a.sessions.inactivityTimeout)*1000;if(Date.now()-tn>Vn)return g.status=401,f.traceSync({message:"Session inactive timeout",level:"warn",context:{path:C,method:Q,sessionId:W.session_token,lastActiveAt:K.lastActiveAt},audit:Co(O,"Session inactive timeout")}),Error("Session expired due to inactivity")}ul(W.session_token).catch(()=>{});let rn=E.userSessions;if(rn&&m)m.update(rn).set({lastActivityAt:new Date}).where(br(rn.id,W.session_token)).catch(()=>{});let en=Wo(W.access_token||"",b.accessTokenSecret||""),gn=W.access_token?en.valid:!1,Gn=W.refresh_token?Wo(W.refresh_token,b.refreshTokenSecret||"").valid:!1;if(!gn&&Gn&&W.refresh_token&&K.rememberMe===!0){let tn=await rg(K.userId,K.id,()=>yb({refreshTokenId:W.refresh_token,options:o,sessionData:K}));if(tn.success&&tn.accessToken){W.access_token=tn.accessToken;let Vn=`${$.access_token}=${tn.accessToken}; Path=/; HttpOnly; SameSite=Strict;Secure; Max-Age=${at(a.accessToken.expiresIn??"15m")}`;g.headers["Set-Cookie"]=Vn}}let T=en.valid?en.payload.sub:K.userId;w.headers.set("x-access-token",W.access_token||""),w.headers.set("x-refresh-token",W.refresh_token||""),w.headers.set("x-session-id",W.session_token||""),w.headers.set("x-user-id",T||"")}}).onAfterHandle(({request:w,set:g})=>{if(D){let Y=w.headers.get("x-request-start-time"),V=Y?parseInt(Y,10):Date.now(),C=Date.now()-V,Q=new URL(w.url),j=typeof g.status==="number"?g.status:200;D.recordRequest({endpoint:Q.pathname,method:w.method,status:j,responseTimeMs:C,isError:j>=400,errorType:j>=500?"server_error":j>=400?"client_error":void 0})}if(k){let Y=new URL(w.url),V={};w.headers.forEach((C,Q)=>{V[Q]=C}),k.recordRequest({path:Y.pathname,method:w.method,timestamp:Date.now(),headers:V})}}).onError((w)=>{let{set:g,code:Y,error:V}=w,C=typeof Y==="number"?Y:500,Q=V instanceof Error?V.message:"Internal Server Error";return g.status=C,Response.json({isSuccess:!1,message:Q,status:C,errors:[V],data:null})}),f.info("Creating routes for entities"),rf(r,{db:m,schemaTables:E,schemaRelations:R,entities:i,logger:f,databaseUrl:b.databaseUrl,storage:o.storage,authorization:o.authorization,emailServiceAvailable:!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)}),a?.enabled&&m){let w=E.users,g=E.userSessions||E.user_sessions||E.sessions;if(!g&&a.sessions?.enabled)f.warn("[AUTH] sessions is enabled but user_sessions table not found in schema. Disabling sessions.");if(w){pl(o);let{createAuthRoutes:Y}=(Md(),cc(u2)),{signJWT:V,verifyJWT:C}=(Yo(),cc(eu)),{generateSession:Q,deleteSession:j}=(bl(),cc(xu));Y(r,{authConfig:{db:m,logger:f,usersTable:w,sessionsTable:g,authentication:{enabled:a.enabled,accessToken:a.accessToken,refreshToken:a.refreshToken,sessionToken:a.sessionToken}},features:{login:a.login,register:a.register,logout:a.logout,refresh:a.refresh,passwordReset:(()=>{let L=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.passwordReset?.enabled&&!L)return f.warn("[AUTH] passwordReset is enabled but no email provider is configured. Disabling passwordReset."),{...a.passwordReset,enabled:!1};return a.passwordReset})(),passwordChange:a.passwordChange,passwordSet:a.passwordSet,sessions:a.sessions,magicLink:(()=>{let L=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.magicLink?.enabled&&!L)return f.warn("[AUTH] magicLink is enabled but no email provider is configured. Disabling magicLink."),{...a.magicLink,enabled:!1};return a.magicLink})(),me:a.me||{enabled:!0,route:"/auth/me"},invite:(()=>{let L=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.invite?.enabled&&!L)return f.warn("[AUTH] invite is enabled but no email provider is configured. Disabling invite."),{...a.invite,enabled:!1};return a.invite})(),captcha:a.captcha,oauth:a.oauth?.enabled&&b.oauthProviders?{...a.oauth,providers:b.oauthProviders}:void 0},sessionsTable:g,oauthAccountsTable:E.oauthAccounts,schemaTables:E,schemaRelations:R,databaseUrl:s?.url,emailService:B,appName:o.appId,captchaService:(()=>{let L=pc();if(!a.captcha?.enabled||!L)return null;return new El({redis:{get:async(W)=>{let X=await L.read(W);return X.success?X.data:null},set:async(W,X,O)=>{await L.create(W,X,O?.ex)},del:async(W)=>{await L.remove(W)}},logger:f,config:{enabled:!0,type:a.captcha.type||"math",difficulty:a.captcha.difficulty||"medium",expiresIn:a.captcha.expiresIn||"5m",maxAttempts:a.captcha.maxAttempts||3,caseSensitive:a.captcha.caseSensitive??!1}})})(),tokenResponseConfig:{accessToken:{setHeadersEnabled:a.accessToken?.setHeadersEnabled??!0,returnJson:a.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:a.refreshToken?.setHeadersEnabled??!0,returnJson:a.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:a.sessionToken?.setHeadersEnabled??!0,returnJson:a.sessionToken?.returnJson??!0}},helpers:{signAccessToken:(L)=>V({subject:L,expiresInSeconds:at(a.accessToken?.expiresIn||"15m"),issuer:a.accessToken?.issuer,audience:a.accessToken?.audience},b.accessTokenSecret||"",a.accessToken?.algorithm||"HS256"),signRefreshToken:(L)=>V({subject:L,expiresInSeconds:at(a.refreshToken?.expiresIn||"7d"),issuer:a.refreshToken?.issuer,audience:a.refreshToken?.audience},b.refreshTokenSecret||"",a.refreshToken?.algorithm||"HS256"),verifyRefreshToken:(L)=>C(L,b.refreshTokenSecret||""),createSession:async(L)=>{let J=await Q({userId:L.userId,deviceInfo:L.deviceInfo});return J.success?J.session.id:""},destroySession:async(L)=>j({sessionId:L}),saveSessionToDb:async(L,J)=>{if(!g||!m)return;let W=a.sessions,X=J.deviceInfo||{},O=`${X.browserName||""}-${X.osName||""}-${X.deviceType||""}`,F=await m.select().from(g).where(ac(br(g.userId,J.userId),br(g.isActive,!0))),K=O&&!O.includes("--unknown")&&!O.includes("Bot/Crawler")&&!O.includes("Headless")&&O!=="--"&&O!=="--unknown",q=K?!F.some((an)=>an.deviceFingerprint===O):!1,rn=F.some((an)=>an.approvalStatus==="approved"),en=W?.trustNewDevices===!1&&q&&K&&rn;f.info("[AUTH] Device fingerprint analysis",{userId:J.userId,deviceFingerprint:O,hasValidFingerprint:K,isNewDevice:q,existingSessionCount:F.length,hasAnyApprovedSession:rn,requiresApproval:en});let gn=null,Gn="approved";if(en){let{randomBytes:an}=await import("crypto");gn=an(32).toString("hex"),Gn="pending",f.info("[AUTH] New device requires approval",{userId:J.userId,deviceFingerprint:O,ipAddress:X.ipAddress})}let T=F.filter((an)=>{let Sn=an,Er=Sn.deviceFingerprint||"",Fr=Sn.ipAddress||"";return(!Er||Er==="--"||Er==="--unknown"||Er.includes("Bot/Crawler")||Er.includes("Headless")||Er.includes("unknown-unknown"))&&(Fr==="127.0.0.1"||Fr==="::1"||Fr==="localhost"||!Fr)});if(T.length>0){for(let an of T)await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:"bot_session_cleanup"}).where(br(g.id,an.id));f.info("[AUTH] Cleaned up stale bot/crawler sessions",{userId:J.userId,cleanedCount:T.length})}if(K&&!q){let an=F.filter((Sn)=>Sn.deviceFingerprint===O);for(let Sn of an)await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:"relogin_same_device"}).where(br(g.id,Sn.id));f.info("[AUTH] Revoked old sessions from same device",{userId:J.userId,deviceFingerprint:O,revokedCount:an.length})}if(!W?.allowMultipleDevices&&F.length>0){if(F.filter((Sn)=>Sn.deviceFingerprint===O).length===0&&q)for(let Sn of F)await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:"new_device_login"}).where(br(g.id,Sn.id))}if(W?.maxActiveSessions){let{count:an}=await import("drizzle-orm"),Er=(await m.select({count:an()}).from(g).where(ac(br(g.userId,J.userId),br(g.isActive,!0))))[0]?.count||0;if(Er>=W.maxActiveSessions){let{asc:Fr}=await import("drizzle-orm"),Uo=await m.select().from(g).where(ac(br(g.userId,J.userId),br(g.isActive,!0))).orderBy(Fr(g.createdAt)).limit(Er-W.maxActiveSessions+1);for(let ie of Uo)await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:"max_sessions_exceeded"}).where(br(g.id,ie.id))}}let tn=100;if(X.isHeadless)tn-=50;if(X.isBot)tn-=40;if(X.isSuspicious)f.warn("[AUTH] Suspicious login detected",{userId:J.userId,suspiciousPatterns:X.suspiciousPatterns,userAgent:X.userAgent,ipAddress:X.ipAddress});if(q)tn-=25;if(!X.ipAddress||X.ipAddress==="unknown")tn-=20;if(!X.browserName)tn-=15;if(!X.osName)tn-=15;if(!X.deviceType||X.deviceType==="unknown")tn-=10;if(!X.deviceName||X.deviceName==="Unknown Device")tn-=5;let Vn=O&&!O.includes("--unknown")&&O!=="--",ot=X.ipAddress&&X.ipAddress!=="unknown";if(Vn){if(F.filter((Sn)=>Sn.deviceFingerprint===O).length>0)tn+=20}if(ot){if(F.filter((Sn)=>Sn.ipAddress===X.ipAddress).length>0)tn+=15}tn=Math.max(0,Math.min(100,tn));let ce=50;if(await m.insert(g).values({id:L,userId:J.userId,tokenHash:L,deviceFingerprint:O,deviceName:X.deviceName,deviceType:X.deviceType,browserName:X.browserName,browserVersion:X.browserVersion,osName:X.osName,osVersion:X.osVersion,ipAddress:X.ipAddress,locationCountry:X.locationCountry,locationCity:X.locationCity,loginMethod:J.loginMethod||"password",rememberMe:J.rememberMe??!1,trustScore:tn,lastActivityAt:new Date,createdAt:new Date,expiresAt:new Date(Date.now()+at(a.sessionToken?.expiresIn||"30d")*1000),isActive:Gn==="approved",approvalStatus:Gn,approvalToken:gn,approvalRequestedAt:en?new Date:null}),B&&(W?.notifyOnNewDevice&&q||tn<ce||en)){let an=E.users;if(an){let Er=(await m.select().from(an).where(br(an.id,J.userId)).limit(1))[0];if(Er?.email){let Fr=tn<ce,Uo=a.sessions?.approvalRedirectUrl||"http://localhost:3000/devices",ie=gn?`${Uo}?action=approve&token=${gn}`:"",ms=gn?`${Uo}?action=reject&token=${gn}`:"",gr,sr;if(en)gr="\uD83D\uDD10 New Device Login Requires Approval",sr=`
1509
+ </html>`;var mf=Symbol.for("TypeBox.Kind"),F$=(n)=>n.split("/").map((r)=>{if(r.startsWith(":")){if(r=r.slice(1,r.length),r.endsWith("?"))r=r.slice(0,-1);r=`{${r}}`}return r}).join("/"),_f=(n,r,t)=>{if(r===void 0)return[];if(typeof r==="string")if(r in t)r=t[r];else throw Error(`Can't find model ${r}`);return Object.entries(r?.properties??[]).map(([o,e])=>{let{type:a=void 0,description:c,examples:i,...s}=e;return{description:c,examples:i,schema:{type:a,...s},in:n,name:o,required:r.required?.includes(o)??!1}})},Ua=(n,r)=>{if(typeof r==="object"&&["void","undefined","null"].includes(r.type))return;let t={};for(let o of n)t[o]={schema:typeof r==="string"?{$ref:`#/components/schemas/${r}`}:("$ref"in r)&&(mf in r)&&r[mf]==="Ref"?{...r,$ref:`#/components/schemas/${r.$ref}`}:q$({...r},{from:gf.Ref(""),to:({$ref:e,...a})=>{if(!e.startsWith("#/components/schemas/"))return gf.Ref(`#/components/schemas/${e}`,a);return gf.Ref(e,a)}})};return t},jg=(n)=>n.charAt(0).toUpperCase()+n.slice(1),j$=(n,r)=>{let t=n.toLowerCase();if(r==="/")return t+"Index";for(let o of r.split("/"))if(o.charCodeAt(0)===123)t+="By"+jg(o.slice(1,-1));else t+=jg(o);return t},We=(n)=>{if(!n)return;if(typeof n==="string")return n;if(Array.isArray(n))return[...n];return{...n}},pg=({schema:n,path:r,method:t,hook:o,models:e})=>{if(o=We(o),o.parse&&!Array.isArray(o.parse))o.parse=[o.parse];let a=o.parse?.map(($)=>{switch(typeof $){case"string":return $;case"object":if($&&typeof $?.fn!=="string")return;switch($?.fn){case"json":case"application/json":return"application/json";case"text":case"text/plain":return"text/plain";case"urlencoded":case"application/x-www-form-urlencoded":return"application/x-www-form-urlencoded";case"arrayBuffer":case"application/octet-stream":return"application/octet-stream";case"formdata":case"multipart/form-data":return"multipart/form-data"}}}).filter(($)=>$!==void 0);if(!a||a.length===0)a=["application/json","multipart/form-data","text/plain"];r=F$(r);let c=typeof a==="string"?[a]:a??["application/json"],i=We(o?.body),s=We(o?.params),l=We(o?.headers),f=We(o?.query),u=We(o?.response);if(typeof u==="object")if(mf in u){let{type:$,properties:A,required:_,additionalProperties:m,patternProperties:E,$ref:R,...M}=u;u={"200":{...M,description:M.description,content:Ua(c,$==="object"||$==="array"?{type:$,properties:A,patternProperties:E,items:u.items,required:_}:u)}}}else Object.entries(u).forEach(([$,A])=>{if(typeof A==="string"){if(!e[A])return;let{type:_,properties:m,required:E,additionalProperties:R,patternProperties:M,...S}=e[A];u[$]={...S,description:S.description,content:Ua(c,A)}}else{let{type:_,properties:m,required:E,additionalProperties:R,patternProperties:M,...S}=A;u[$]={...S,description:S.description,content:Ua(c,_==="object"||_==="array"?{type:_,properties:m,patternProperties:M,items:A.items,required:E}:A)}}});else if(typeof u==="string"){if(!(u in e))return;let{type:$,properties:A,required:_,$ref:m,additionalProperties:E,patternProperties:R,...M}=e[u];u={"200":{...M,content:Ua(c,u)}}}let b=[..._f("header",l,e),..._f("path",s,e),..._f("query",f,e)];n[r]={...n[r]?n[r]:{},[t.toLowerCase()]:{...l||s||f||i?{parameters:b}:{},...u?{responses:u}:{},operationId:o?.detail?.operationId??j$(t,r),...o?.detail,...i?{requestBody:{required:!0,content:Ua(c,typeof i==="string"?{$ref:`#/components/schemas/${i}`}:i)}}:null}}},p$=(n,{excludeStaticFile:r=!0,exclude:t=[]})=>{let o={};for(let[e,a]of Object.entries(n))if(!t.some((c)=>{if(typeof c==="string")return e===c;return c.test(e)})&&!e.includes("*")&&(r?!e.includes("."):!0))Object.keys(a).forEach((c)=>{let i=a[c];if(e.includes("{")){if(!i.parameters)i.parameters=[];i.parameters=[...e.split("/").filter((s)=>s.startsWith("{")&&!i.parameters.find((l)=>l.in==="path"&&l.name===s.slice(1,s.length-1))).map((s)=>({schema:{type:"string"},in:"path",name:s.slice(1,s.length-1),required:!0})),...i.parameters]}if(!i.responses)i.responses={200:{}}}),o[e]=a;return o},Tg=({provider:n="scalar",scalarVersion:r="latest",scalarCDN:t="",scalarConfig:o={},documentation:e={},version:a="5.9.0",excludeStaticFile:c=!0,path:i="/swagger",specPath:s=`${i}/json`,exclude:l=[],swaggerOptions:f={},theme:u=`https://unpkg.com/swagger-ui-dist@${a}/swagger-ui.css`,autoDarkMode:b=!0,excludeMethods:$=["OPTIONS"],excludeTags:A=[]}={})=>{let _={},m=0;if(!a)a=`https://unpkg.com/swagger-ui-dist@${a}/swagger-ui.css`;let E={title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...e.info},R=s.startsWith("/")?s.slice(1):s,M=new P$({name:"@elysiajs/swagger"}),S=new Response(n==="swagger-ui"?O$(E,a,u,JSON.stringify({url:R,dom_id:"#swagger-ui",...f},(x,D)=>typeof D==="function"?void 0:D),b):N$(E,r,{spec:{url:R,...o.spec},...o,_integration:"elysiajs"},t),{headers:{"content-type":"text/html; charset=utf8"}});return M.get(i,S,{detail:{hide:!0}}).get(s,function(){let D=M.getGlobalRoutes();if(D.length!==m){let k=["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"];m=D.length,D.forEach((B)=>{if(B.hooks?.detail?.hide===!0)return;if($.includes(B.method))return;if(k.includes(B.method)===!1&&B.method!=="ALL")return;if(B.method==="ALL")k.forEach((w)=>{pg({schema:_,hook:B.hooks,method:w,path:B.path,models:M.getGlobalDefinitions?.().type,contentType:B.hooks.type})});else pg({schema:_,hook:B.hooks,method:B.method,path:B.path,models:M.getGlobalDefinitions?.().type,contentType:B.hooks.type})})}return{openapi:"3.0.3",...{...e,tags:e.tags?.filter((k)=>!A?.includes(k?.name)),info:{title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...e.info}},paths:{...p$(_,{excludeStaticFile:c,exclude:Array.isArray(l)?l:[l]}),...e.paths},components:{...e.components,schemas:{...M.getGlobalDefinitions?.().type,...e.components?.schemas}}}},{detail:{hide:!0}}),M};function wf(n){if(n?.enabled===!1)return null;let r={path:n?.path??"/swagger",provider:n?.provider??"scalar",excludeStaticFile:n?.excludeStaticFile??!0,exclude:n?.exclude??[],documentation:{info:{title:n?.documentation?.info?.title??"Nucleus API",description:n?.documentation?.info?.description??"Auto-generated API documentation",version:n?.documentation?.info?.version??"1.0.0",contact:n?.documentation?.info?.contact,license:n?.documentation?.info?.license},tags:n?.documentation?.tags??[],servers:n?.documentation?.servers},scalarConfig:n?.scalarConfig};return Tg(r)}Kc();Md();Ic();var fE=(n)=>{let r=new Map;for(let t of n){let o=r.get(t.table_name),e=t.columns??o?.columns;r.set(t.table_name,{...o||{},...t,columns:e})}return Array.from(r.values())},dE=(n)=>({table_name:n.table_name,excluded_methods:n.excluded_methods?[...n.excluded_methods]:void 0,columns:n.columns?n.columns.map((r)=>({name:r.name,type:r.type})):void 0}),uE=(n)=>{let r=[];for(let[t,o]of Object.entries(n)){if(!o||typeof o!=="object")continue;let e=o,a=e._;if(a?.name){r.push({table_name:a.name});continue}let c=Object.getOwnPropertySymbols(e);for(let i of c){let s=e[i];if(s&&typeof s==="object"){let l=s;if(l.name&&typeof l.name==="string"){r.push({table_name:l.name});break}}}}return r};async function bE(n){let r=new lE;if(r.get("/health",()=>({status:"ok",timestamp:Date.now()})),n.staticAssets!==!1){let w=Mn("path"),g=Mn("fs"),Y;if(typeof n.staticAssets==="string")Y=n.staticAssets;else{let V=w.join(process.cwd(),"public"),C="";for(let Q of["nucleus-core-ts","nucleus-core"])try{let p=Mn.resolve(`${Q}/package.json`),L=w.join(w.dirname(p),"public");if(g.existsSync(L)){C=L;break}}catch{}if(C)Y=C;else if(g.existsSync(V))Y=V;else Y=V}try{r.use(await Fd({prefix:"/nucleus-core",assets:Y}))}catch{}}let t=[],o,e=process.cwd();if(typeof n.options==="string"){let w=Mn("fs"),g=Mn("path"),Y=g.isAbsolute(n.options)?n.options:g.resolve(process.cwd(),n.options);e=g.dirname(Y);let V=w.readFileSync(Y,"utf-8");o=JSON.parse(V)}else o=n.options;if(o.email?.gmail?.json_file_path){let w=Mn("path"),g=o.email.gmail.json_file_path;if(!w.isAbsolute(g))o.email.gmail.json_file_path=w.resolve(e,g)}let{authentication:a,audit:c,entities:i,database:s}=o,l=o.mode==="development",f=new Jr({service:o.appId||"nucleus",prettyPrint:l,colorize:l,auditEnabled:c?.enabled??!1}),u=tg(o);if(!u.valid){for(let w of u.errors)f.error(`[CONFIG] ${w.message}`,{field:w.field,envName:w.envName});throw Error("Nucleus configuration error: Missing required environment variables. Check logs for details.")}let{resolved:b}=u,$={access_token:a?.accessToken?.name||"access_token",refresh_token:a?.refreshToken?.name||"refresh_token",session_token:a?.sessionToken?.name||"session_token"},A=s?.schemas?.[0]||"main",_=sE(A);if(b.databaseUrl)await og(b.databaseUrl,f);let m=b.databaseUrl?iE(b.databaseUrl):null,E={},R={};if(n.schema){let g=Mn("path").resolve(process.cwd(),n.schema),Y=Mn(g);E=Y.createAllTablesForSchema?Y.createAllTablesForSchema(_):{}}if(n.relations){let g=Mn("path").resolve(process.cwd(),n.relations);R=Mn(g)}let M=wf(n.swagger);if(M)r.use(M);let S=n.systemTables||[];t=Ll(o,S,"",A),f.info(`[AUTH] Built ${t.length} public routes`);let x=null,D=null,k=null,B=null;if(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)f.info("[GmailService] Initializing...",{jsonFilePath:o.email.gmail.json_file_path,fromEmail:o.email.gmail.from_email}),B=new Ml({enabled:!0,jsonFilePath:o.email.gmail.json_file_path,fromEmail:o.email.gmail.from_email||"",fromName:o.email.gmail.from_name},f),f.info("[GmailService] isAvailable:",{available:B.isAvailable()});if(o.liveMonitoring?.enabled){let w=o.liveMonitoring.basePath||"/monitoring",g=o.liveMonitoring.streamInterval||150;r.use(fg({getService:()=>k,logger:f,basePath:w,streamInterval:g}))}if(r.onStart(async()=>{pl(o);let w=pc();if(w&&o.rateLimit?.enabled!==!1)x=new Bl({redis:w,logger:f,config:o.rateLimit||{}}),f.info(`[RateLimit] Enabled with strategy: ${o.rateLimit?.strategy||"sliding-window"}`);if(w&&o.monitoring?.enabled){if(D=new zl({redis:w,logger:f,gmail:B||void 0,config:o.monitoring,appId:o.appId}),D.start(),f.info("[Monitoring] Service started"),o.monitoring.endpoints?.enabled){let g={enabled:!0,basePath:o.monitoring.endpoints.basePath||"/monitoring",stream:{enabled:o.monitoring.endpoints.stream?.enabled!==!1,path:o.monitoring.endpoints.stream?.path||"/stream",interval:o.monitoring.endpoints.stream?.interval||"5s"},snapshot:{enabled:o.monitoring.endpoints.snapshot?.enabled!==!1,path:o.monitoring.endpoints.snapshot?.path||"/snapshot"},history:{enabled:o.monitoring.endpoints.history?.enabled!==!1,path:o.monitoring.endpoints.history?.path||"/history",maxMinutes:o.monitoring.endpoints.history?.maxMinutes||60},alerts:{enabled:o.monitoring.endpoints.alerts?.enabled!==!1,path:o.monitoring.endpoints.alerts?.path||"/alerts"}};r.use(tf({monitoringService:D,logger:f,endpoints:g}))}}if(o.liveMonitoring?.enabled)k=new Xc(o.liveMonitoring),k.start(),f.info("[LiveMonitoring] Service started");if(m&&n.schema){let V=await import(Mn("path").resolve(process.cwd(),n.schema)),C=E.auditLogs||V.auditLogs;if(c?.enabled&&C)f.addAuditTransport(new lc({db:m,table:C,enabled:!0}));try{f.info(`Syncing schema to database (target: ${A})...`);let{sql:p}=await import("drizzle-orm");await m.execute(p.raw(`CREATE SCHEMA IF NOT EXISTS "${A}"`));try{let L=Object.fromEntries(Object.entries(E).filter(([O,N])=>{if(N===void 0||N===null)return!1;if(typeof N==="object"&&N!==null)return Object.getOwnPropertySymbols(N).length>0||N._!==void 0;return!1})),J=Object.keys(L);f.info("[Schema] Tables to sync:",{tables:J,count:J.length});let W=L.users;if(W){let O=Object.getOwnPropertyNames(W).filter((N)=>!N.startsWith("_"));f.info("[Schema] Users table columns:",{columns:O})}await(await cE({schema:_,...L},m,[A])).apply(),f.info("[Schema] pushSchema completed successfully")}catch(L){let J=L instanceof Error?L.message:String(L);f.warn(`[Schema] pushSchema warning: ${J}`)}console.log("Schema sync completed")}catch(p){let L=p instanceof Error?p.message:String(p);console.error("Schema sync failed:",L)}if(console.log("Database connection established"),o.authorization?.enabled){let p={...Tu,...o.authorization};if(p.autoSeedClaims){let L=uE(E),J=Sb.map((O)=>dE(O)),W=o.entities||[],X=fE([...L,...W,...J,...n.systemTables||[]]);f.info("[Authorization] Seeding claims...",{schemaEntities:L.length,systemEntities:J.length,configEntities:W.length,totalEntities:X.length}),await Pu(m,E,R,X,p,f)}if(p.godminEmail&&p.godminPassword)f.info("[Authorization] Setting up godmin..."),await Ou(m,E,p,f);f.info("[Authorization] Enabled")}let Q=E.userSessions;if(Q&&o.authentication?.sessions?.enabled){let{lt:p}=await import("drizzle-orm"),L=await m.update(Q).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ac(gr(Q.isActive,!0),p(Q.expiresAt,new Date)));f.info("[AUTH] Expired sessions cleanup completed",{expiredCount:L}),setInterval(async()=>{try{await m.update(Q).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ac(gr(Q.isActive,!0),p(Q.expiresAt,new Date)))}catch(J){f.warn("[AUTH] Session cleanup failed",{error:J})}},3600000)}}}).onRequest(async({request:w,set:g})=>{let Y=Date.now();w.headers.set("x-request-start-time",String(Y));let V=new URL(w.url),C=V.pathname,Q=w.method,p=V.search,L=w.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||w.headers.get("x-real-ip")?.trim()||"unknown",J=w.headers.get("user-agent")||"unknown",W,X={};if(w.method!=="GET"&&w.method!=="HEAD")try{let q=await w.clone().text();X=q?JSON.parse(q):{}}catch{X={}}let O=c?.enabled?{id:aE(),user_id:"unknown",entity_name:C.split("/").filter(Boolean)[0]||"root",entity_id:null,operation_type:Q,summary:"",old_values:{},new_values:X,ip_address:L,user_agent:J,timestamp:new Date().toISOString(),path:C,query:p}:null,N=Xl(t,C,Q);if(x){let j=N?"public":"private",q;if(C.includes("/auth/login"))q="login";else if(C.includes("/auth/register"))q="register";else if(C.includes("/auth/password-reset"))q="passwordReset";else if(C.includes("/auth/magic-link"))q="magicLink";let y=q?"auth":j,en=await x.check({ip:L,endpoint:C,category:y,authType:q}),gn=x.getHeaders(en);for(let[Gn,T]of Object.entries(gn))g.headers[Gn]=T;if(!en.allowed){if(g.status=429,en.retryAfter)g.headers["Retry-After"]=String(en.retryAfter);if(f.warn(`[RateLimit] Blocked request from ${L} to ${C}`),D)D.recordRateLimitBlock();return new Response(JSON.stringify({error:"Too Many Requests",retryAfter:en.retryAfter}),{status:429,headers:{"Content-Type":"application/json"}})}}if(C==="/health")return;if(a?.enabled&&!N){if(!a.accessToken?.secret||!a.refreshToken?.secret||!a.sessionToken?.secret)return g.status=500,f.traceSync({message:"Authentication secrets not defined",level:"error",context:{path:C,method:Q},audit:Co(O,"Authentication secrets not defined")}),Error("One or more authentication secrets are not defined");if(W=Zb(w.headers,$),!W.session_token)return g.status=401,f.traceSync({message:"No session token",level:"warn",context:{path:C,method:Q},audit:Co(O,"No session token")}),Error("Unauthenticated");let j=await Lo({sessionId:W.session_token});if(!j)return g.status=401,f.traceSync({message:"Invalid session",level:"warn",context:{path:C,method:Q,sessionId:W.session_token},audit:Co(O,"Invalid session")}),Error("Unauthenticated");let q=E.userSessions;if(q&&m){let Vn=(await m.select().from(q).where(gr(q.id,W.session_token)).limit(1))[0];if(!Vn||Vn.isActive===!1||Vn.revokedAt)return g.status=401,f.traceSync({message:"Session revoked or inactive",level:"warn",context:{path:C,method:Q,sessionId:W.session_token,isActive:Vn?.isActive,revokedAt:Vn?.revokedAt},audit:Co(O,"Session revoked")}),Error("Session has been revoked");if(Vn.expiresAt&&new Date(Vn.expiresAt)<new Date)return g.status=401,f.traceSync({message:"Session expired",level:"warn",context:{path:C,method:Q,sessionId:W.session_token,expiresAt:Vn.expiresAt},audit:Co(O,"Session expired")}),Error("Session has expired")}if(j.lastActiveAt&&a.sessions?.inactivityTimeout){let tn=new Date(j.lastActiveAt).getTime(),Vn=at(a.sessions.inactivityTimeout)*1000;if(Date.now()-tn>Vn)return g.status=401,f.traceSync({message:"Session inactive timeout",level:"warn",context:{path:C,method:Q,sessionId:W.session_token,lastActiveAt:j.lastActiveAt},audit:Co(O,"Session inactive timeout")}),Error("Session expired due to inactivity")}ul(W.session_token).catch(()=>{});let y=E.userSessions;if(y&&m)m.update(y).set({lastActivityAt:new Date}).where(gr(y.id,W.session_token)).catch(()=>{});let en=Wo(W.access_token||"",b.accessTokenSecret||""),gn=W.access_token?en.valid:!1,Gn=W.refresh_token?Wo(W.refresh_token,b.refreshTokenSecret||"").valid:!1;if(!gn&&Gn&&W.refresh_token&&j.rememberMe===!0){let tn=await rg(j.userId,j.id,()=>yb({refreshTokenId:W.refresh_token,options:o,sessionData:j}));if(tn.success&&tn.accessToken){W.access_token=tn.accessToken;let Vn=`${$.access_token}=${tn.accessToken}; Path=/; HttpOnly; SameSite=Strict;Secure; Max-Age=${at(a.accessToken.expiresIn??"15m")}`;g.headers["Set-Cookie"]=Vn}}let T=en.valid?en.payload.sub:j.userId;w.headers.set("x-access-token",W.access_token||""),w.headers.set("x-refresh-token",W.refresh_token||""),w.headers.set("x-session-id",W.session_token||""),w.headers.set("x-user-id",T||"")}}).onAfterHandle(({request:w,set:g})=>{if(D){let Y=w.headers.get("x-request-start-time"),V=Y?parseInt(Y,10):Date.now(),C=Date.now()-V,Q=new URL(w.url),p=typeof g.status==="number"?g.status:200;D.recordRequest({endpoint:Q.pathname,method:w.method,status:p,responseTimeMs:C,isError:p>=400,errorType:p>=500?"server_error":p>=400?"client_error":void 0})}if(k){let Y=new URL(w.url),V={};w.headers.forEach((C,Q)=>{V[Q]=C}),k.recordRequest({path:Y.pathname,method:w.method,timestamp:Date.now(),headers:V})}}).onError((w)=>{let{set:g,code:Y,error:V}=w,C=typeof Y==="number"?Y:500,Q=V instanceof Error?V.message:"Internal Server Error";return g.status=C,Response.json({isSuccess:!1,message:Q,status:C,errors:[V],data:null})}),f.info("Creating routes for entities"),rf(r,{db:m,schemaTables:E,schemaRelations:R,entities:i,logger:f,databaseUrl:b.databaseUrl,storage:o.storage,authorization:o.authorization,emailServiceAvailable:!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)}),a?.enabled&&m){let w=E.users,g=E.userSessions||E.user_sessions||E.sessions;if(!g&&a.sessions?.enabled)f.warn("[AUTH] sessions is enabled but user_sessions table not found in schema. Disabling sessions.");if(w){pl(o);let{createAuthRoutes:Y}=(Md(),cc(u2)),{signJWT:V,verifyJWT:C}=(Yo(),cc(eu)),{generateSession:Q,deleteSession:p}=(bl(),cc(xu));Y(r,{authConfig:{db:m,logger:f,usersTable:w,sessionsTable:g,authentication:{enabled:a.enabled,accessToken:a.accessToken,refreshToken:a.refreshToken,sessionToken:a.sessionToken}},features:{login:a.login,register:a.register,logout:a.logout,refresh:a.refresh,passwordReset:(()=>{let L=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.passwordReset?.enabled&&!L)return f.warn("[AUTH] passwordReset is enabled but no email provider is configured. Disabling passwordReset."),{...a.passwordReset,enabled:!1};return a.passwordReset})(),passwordChange:a.passwordChange,passwordSet:a.passwordSet,sessions:a.sessions,magicLink:(()=>{let L=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.magicLink?.enabled&&!L)return f.warn("[AUTH] magicLink is enabled but no email provider is configured. Disabling magicLink."),{...a.magicLink,enabled:!1};return a.magicLink})(),me:a.me||{enabled:!0,route:"/auth/me"},invite:(()=>{let L=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.invite?.enabled&&!L)return f.warn("[AUTH] invite is enabled but no email provider is configured. Disabling invite."),{...a.invite,enabled:!1};return a.invite})(),captcha:a.captcha,oauth:a.oauth?.enabled&&b.oauthProviders?{...a.oauth,providers:b.oauthProviders}:void 0},sessionsTable:g,oauthAccountsTable:E.oauthAccounts,schemaTables:E,schemaRelations:R,databaseUrl:s?.url,emailService:B,appName:o.appId,captchaService:(()=>{let L=pc();if(!a.captcha?.enabled||!L)return null;return new El({redis:{get:async(W)=>{let X=await L.read(W);return X.success?X.data:null},set:async(W,X,O)=>{await L.create(W,X,O?.ex)},del:async(W)=>{await L.remove(W)}},logger:f,config:{enabled:!0,type:a.captcha.type||"math",difficulty:a.captcha.difficulty||"medium",expiresIn:a.captcha.expiresIn||"5m",maxAttempts:a.captcha.maxAttempts||3,caseSensitive:a.captcha.caseSensitive??!1}})})(),tokenResponseConfig:{accessToken:{setHeadersEnabled:a.accessToken?.setHeadersEnabled??!0,returnJson:a.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:a.refreshToken?.setHeadersEnabled??!0,returnJson:a.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:a.sessionToken?.setHeadersEnabled??!0,returnJson:a.sessionToken?.returnJson??!0}},helpers:{signAccessToken:(L)=>V({subject:L,expiresInSeconds:at(a.accessToken?.expiresIn||"15m"),issuer:a.accessToken?.issuer,audience:a.accessToken?.audience},b.accessTokenSecret||"",a.accessToken?.algorithm||"HS256"),signRefreshToken:(L)=>V({subject:L,expiresInSeconds:at(a.refreshToken?.expiresIn||"7d"),issuer:a.refreshToken?.issuer,audience:a.refreshToken?.audience},b.refreshTokenSecret||"",a.refreshToken?.algorithm||"HS256"),verifyRefreshToken:(L)=>C(L,b.refreshTokenSecret||""),createSession:async(L)=>{let J=await Q({userId:L.userId,deviceInfo:L.deviceInfo});return J.success?J.session.id:""},destroySession:async(L)=>p({sessionId:L}),saveSessionToDb:async(L,J)=>{if(!g||!m)return;let W=a.sessions,X=J.deviceInfo||{},O=`${X.browserName||""}-${X.osName||""}-${X.deviceType||""}`,N=await m.select().from(g).where(ac(gr(g.userId,J.userId),gr(g.isActive,!0))),j=O&&!O.includes("--unknown")&&!O.includes("Bot/Crawler")&&!O.includes("Headless")&&O!=="--"&&O!=="--unknown",q=j?!N.some((an)=>an.deviceFingerprint===O):!1,y=N.some((an)=>an.approvalStatus==="approved"),en=W?.trustNewDevices===!1&&q&&j&&y;f.info("[AUTH] Device fingerprint analysis",{userId:J.userId,deviceFingerprint:O,hasValidFingerprint:j,isNewDevice:q,existingSessionCount:N.length,hasAnyApprovedSession:y,requiresApproval:en});let gn=null,Gn="approved";if(en){let{randomBytes:an}=await import("crypto");gn=an(32).toString("hex"),Gn="pending",f.info("[AUTH] New device requires approval",{userId:J.userId,deviceFingerprint:O,ipAddress:X.ipAddress})}let T=N.filter((an)=>{let Sn=an,Sr=Sn.deviceFingerprint||"",Fr=Sn.ipAddress||"";return(!Sr||Sr==="--"||Sr==="--unknown"||Sr.includes("Bot/Crawler")||Sr.includes("Headless")||Sr.includes("unknown-unknown"))&&(Fr==="127.0.0.1"||Fr==="::1"||Fr==="localhost"||!Fr)});if(T.length>0){for(let an of T)await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:"bot_session_cleanup"}).where(gr(g.id,an.id));f.info("[AUTH] Cleaned up stale bot/crawler sessions",{userId:J.userId,cleanedCount:T.length})}if(j&&!q){let an=N.filter((Sn)=>Sn.deviceFingerprint===O);for(let Sn of an)await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:"relogin_same_device"}).where(gr(g.id,Sn.id));f.info("[AUTH] Revoked old sessions from same device",{userId:J.userId,deviceFingerprint:O,revokedCount:an.length})}if(!W?.allowMultipleDevices&&N.length>0){if(N.filter((Sn)=>Sn.deviceFingerprint===O).length===0&&q)for(let Sn of N)await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:"new_device_login"}).where(gr(g.id,Sn.id))}if(W?.maxActiveSessions){let{count:an}=await import("drizzle-orm"),Sr=(await m.select({count:an()}).from(g).where(ac(gr(g.userId,J.userId),gr(g.isActive,!0))))[0]?.count||0;if(Sr>=W.maxActiveSessions){let{asc:Fr}=await import("drizzle-orm"),Uo=await m.select().from(g).where(ac(gr(g.userId,J.userId),gr(g.isActive,!0))).orderBy(Fr(g.createdAt)).limit(Sr-W.maxActiveSessions+1);for(let ie of Uo)await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:"max_sessions_exceeded"}).where(gr(g.id,ie.id))}}let tn=100;if(X.isHeadless)tn-=50;if(X.isBot)tn-=40;if(X.isSuspicious)f.warn("[AUTH] Suspicious login detected",{userId:J.userId,suspiciousPatterns:X.suspiciousPatterns,userAgent:X.userAgent,ipAddress:X.ipAddress});if(q)tn-=25;if(!X.ipAddress||X.ipAddress==="unknown")tn-=20;if(!X.browserName)tn-=15;if(!X.osName)tn-=15;if(!X.deviceType||X.deviceType==="unknown")tn-=10;if(!X.deviceName||X.deviceName==="Unknown Device")tn-=5;let Vn=O&&!O.includes("--unknown")&&O!=="--",ot=X.ipAddress&&X.ipAddress!=="unknown";if(Vn){if(N.filter((Sn)=>Sn.deviceFingerprint===O).length>0)tn+=20}if(ot){if(N.filter((Sn)=>Sn.ipAddress===X.ipAddress).length>0)tn+=15}tn=Math.max(0,Math.min(100,tn));let ce=50;if(await m.insert(g).values({id:L,userId:J.userId,tokenHash:L,deviceFingerprint:O,deviceName:X.deviceName,deviceType:X.deviceType,browserName:X.browserName,browserVersion:X.browserVersion,osName:X.osName,osVersion:X.osVersion,ipAddress:X.ipAddress,locationCountry:X.locationCountry,locationCity:X.locationCity,loginMethod:J.loginMethod||"password",rememberMe:J.rememberMe??!1,trustScore:tn,lastActivityAt:new Date,createdAt:new Date,expiresAt:new Date(Date.now()+at(a.sessionToken?.expiresIn||"30d")*1000),isActive:Gn==="approved",approvalStatus:Gn,approvalToken:gn,approvalRequestedAt:en?new Date:null}),B&&(W?.notifyOnNewDevice&&q||tn<ce||en)){let an=E.users;if(an){let Sr=(await m.select().from(an).where(gr(an.id,J.userId)).limit(1))[0];if(Sr?.email){let Fr=tn<ce,Uo=a.sessions?.approvalRedirectUrl||"http://localhost:3000/devices",ie=gn?`${Uo}?action=approve&token=${gn}`:"",ms=gn?`${Uo}?action=reject&token=${gn}`:"",_r,lr;if(en)_r="\uD83D\uDD10 New Device Login Requires Approval",lr=`
1510
1510
  <h2>\uD83D\uDD10 New Device Login Requires Your Approval</h2>
1511
1511
  <p>Someone is trying to log into your account from a new device:</p>
1512
1512
  <ul>
@@ -1521,7 +1521,7 @@ data: ${t}
1521
1521
  <a href="${ms}" style="display: inline-block; padding: 12px 24px; background-color: #ef4444; color: white; text-decoration: none; border-radius: 6px;">\u2717 Reject & Block</a>
1522
1522
  </p>
1523
1523
  <p style="margin-top: 20px; color: #666; font-size: 14px;">If you didn't attempt this login, click "Reject & Block" and change your password immediately.</p>
1524
- `;else{gr=Fr?"\u26A0\uFE0F Suspicious Login Detected":"New Device Login Alert";let ws=Fr?`<p style="color: red; font-weight: bold;">\u26A0\uFE0F This login has a low trust score (${tn}/100). If this wasn't you, change your password immediately!</p>`:"";sr=`
1524
+ `;else{_r=Fr?"\u26A0\uFE0F Suspicious Login Detected":"New Device Login Alert";let ws=Fr?`<p style="color: red; font-weight: bold;">\u26A0\uFE0F This login has a low trust score (${tn}/100). If this wasn't you, change your password immediately!</p>`:"";lr=`
1525
1525
  <h2>${Fr?"\u26A0\uFE0F Suspicious Login Detected":"New Device Login Detected"}</h2>
1526
1526
  ${ws}
1527
1527
  <p>A ${q?"new device":"device"} has logged into your account:</p>
@@ -1534,4 +1534,4 @@ data: ${t}
1534
1534
  <li><strong>Time:</strong> ${new Date().toISOString()}</li>
1535
1535
  </ul>
1536
1536
  <p>If this wasn't you, please secure your account immediately.</p>
1537
- `}B?.sendEmail({to:Er.email,subject:gr,html:sr}).catch((ws)=>{f.warn("[AUTH] Failed to send login notification email",{error:ws,userId:J.userId,trustScore:tn,requiresApproval:en})})}}}f.info("[AUTH] Session saved to DB",{sessionId:L,userId:J.userId,isNewDevice:q,deviceFingerprint:O,ipAddress:X.ipAddress})},storeResetToken:async(L,J,W)=>{let X=E.passwordResetTokens;if(!X||!m)return;await m.insert(X).values({userId:L,tokenHash:J,expiresAt:W})},getResetToken:async(L)=>{let{eq:J}=Mn("drizzle-orm"),W=E.passwordResetTokens;if(!W||!m)return null;let O=(await m.select().from(W).where(J(W.tokenHash,L)).limit(1))[0];if(!O||O.usedAt)return null;return{userId:O.userId,expiresAt:O.expiresAt}},deleteResetToken:async(L)=>{let{eq:J}=Mn("drizzle-orm"),W=E.passwordResetTokens;if(!W||!m)return;await m.delete(W).where(J(W.tokenHash,L))},revokeSessionInDb:async(L,J)=>{if(!g||!m)return;await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:J}).where(br(g.id,L)),f.info("[AUTH] Session revoked in DB",{sessionId:L,reason:J})},sendResetEmail:async(L,J)=>{if(!B?.isAvailable()){f.warn("[AUTH] Cannot send reset email - gmail service not available");return}let W=`${a.passwordReset?.redirectUrl||"http://localhost:3000/reset-password"}?token=${J}`;await B.sendEmail({to:L,subject:"Password Reset Request",html:`<p>Click the link to reset your password:</p><a href="${W}">${W}</a>`})},storeMagicToken:async(L)=>{let J=E.magicLinkTokens;if(!J||!m)return;await m.insert(J).values({userId:L.userId,email:L.email,tokenHash:L.tokenHash,expiresAt:L.expiresAt})},getMagicToken:async(L)=>{let{eq:J}=Mn("drizzle-orm"),W=E.magicLinkTokens;if(!W||!m)return null;let O=(await m.select().from(W).where(J(W.tokenHash,L)).limit(1))[0];if(!O||O.usedAt)return null;return{userId:O.userId,email:O.email,tokenHash:O.tokenHash,expiresAt:O.expiresAt}},deleteMagicToken:async(L)=>{let{eq:J}=Mn("drizzle-orm"),W=E.magicLinkTokens;if(!W||!m)return;await m.delete(W).where(J(W.tokenHash,L))}}}),f.info("[AUTH] Routes registered")}}if(o.storage?.enabled&&o.storage?.cdn?.enabled){let{createCdnRoutes:w,mergeCdnConfig:g,mergeStorageConfig:Y}=(Ic(),cc(ig)),V=g(o.storage.cdn),C=Y(o.storage),Q=E.files;r.use(w({cdn:V,storagePath:C.basePath,logger:f,getFileRecord:Q&&m?async(j)=>{let L=Q,J=await m.select().from(L).where(br(L.id,j)).limit(1);if(J.length===0)return null;let W=J[0];return{id:W.id,name:W.name,path:W.path,mime_type:W.mimeType||W.mime_type}}:void 0})),f.info(`[Storage] CDN routes enabled at ${V.basePath}`)}if(o.verification?.enabled&&m)r.use(hg({db:m,schemaTables:E,config:o.verification,logger:f}));if(o.pubsub?.enabled){let w=pc();if(w){let g=o.pubsub,{plugin:Y}=sf({redis:w,logger:f,basePath:g.basePath||"/subs",wsPath:g.wsPath||"/api/events/subscribe",pubsubName:g.pubsubName||"pubsub-redis",maxClientsPerUser:g.maxClientsPerUser??10,wsIdleTimeout:g.wsIdleTimeout??120,ack:{enabled:g.ack?.enabled??!0,ttlSeconds:g.ack?.ttlSeconds??300,maxRetries:g.ack?.maxRetries??3,retryIntervalMs:g.ack?.retryIntervalMs??5000},presence:{enabled:g.presence?.enabled??!0,debounceMs:g.presence?.debounceMs??5000},cleanupIntervalMs:g.cleanupIntervalMs??60000,getLiveMonitoringService:()=>k});r.use(Y),f.info("[PubSub] Enabled",{basePath:g.basePath||"/subs",wsPath:g.wsPath||"/api/events/subscribe"})}else f.warn("[PubSub] pubsub is enabled but Redis is not configured. Disabling PubSub.")}return r.onStart(()=>{let w=Number(process.env.PORT)||3000,g=o.appId||"nucleus",Y=o.mode||"production";console.log(""),console.log(` \x1B[32m\uD83D\uDE80 ${g}\x1B[0m \x1B[90mv${Date.now()}\x1B[0m`),console.log(` \x1B[36m\u279C\x1B[0m Local: \x1B[36mhttp://localhost:${w}\x1B[0m`),console.log(` \x1B[36m\u279C\x1B[0m Mode: \x1B[33m${Y}\x1B[0m`),console.log("")}),r}export{Ws as usePubSubStore,q2 as usePubSub,Y2 as serverFetch,Jd as generateSystemTableEndpoints,Ld as generateMonitoringEndpoints,Wd as generateEndpointsFromConfig,Yd as generateAuthEndpoints,M2 as generateAllEndpoints,x2 as createServerFactory,A2 as createApiHook,ea as ServerFetch,bE as NucleusElysiaPlugin,$s as AUTH_ENDPOINT_CONFIGS};
1537
+ `}B?.sendEmail({to:Sr.email,subject:_r,html:lr}).catch((ws)=>{f.warn("[AUTH] Failed to send login notification email",{error:ws,userId:J.userId,trustScore:tn,requiresApproval:en})})}}}f.info("[AUTH] Session saved to DB",{sessionId:L,userId:J.userId,isNewDevice:q,deviceFingerprint:O,ipAddress:X.ipAddress})},storeResetToken:async(L,J,W)=>{let X=E.passwordResetTokens;if(!X||!m)return;await m.insert(X).values({userId:L,tokenHash:J,expiresAt:W})},getResetToken:async(L)=>{let{eq:J}=Mn("drizzle-orm"),W=E.passwordResetTokens;if(!W||!m)return null;let O=(await m.select().from(W).where(J(W.tokenHash,L)).limit(1))[0];if(!O||O.usedAt)return null;return{userId:O.userId,expiresAt:O.expiresAt}},deleteResetToken:async(L)=>{let{eq:J}=Mn("drizzle-orm"),W=E.passwordResetTokens;if(!W||!m)return;await m.delete(W).where(J(W.tokenHash,L))},revokeSessionInDb:async(L,J)=>{if(!g||!m)return;await m.update(g).set({isActive:!1,revokedAt:new Date,revokedReason:J}).where(gr(g.id,L)),f.info("[AUTH] Session revoked in DB",{sessionId:L,reason:J})},sendResetEmail:async(L,J)=>{if(!B?.isAvailable()){f.warn("[AUTH] Cannot send reset email - gmail service not available");return}let W=`${a.passwordReset?.redirectUrl||"http://localhost:3000/reset-password"}?token=${J}`;await B.sendEmail({to:L,subject:"Password Reset Request",html:`<p>Click the link to reset your password:</p><a href="${W}">${W}</a>`})},storeMagicToken:async(L)=>{let J=E.magicLinkTokens;if(!J||!m)return;await m.insert(J).values({userId:L.userId,email:L.email,tokenHash:L.tokenHash,expiresAt:L.expiresAt})},getMagicToken:async(L)=>{let{eq:J}=Mn("drizzle-orm"),W=E.magicLinkTokens;if(!W||!m)return null;let O=(await m.select().from(W).where(J(W.tokenHash,L)).limit(1))[0];if(!O||O.usedAt)return null;return{userId:O.userId,email:O.email,tokenHash:O.tokenHash,expiresAt:O.expiresAt}},deleteMagicToken:async(L)=>{let{eq:J}=Mn("drizzle-orm"),W=E.magicLinkTokens;if(!W||!m)return;await m.delete(W).where(J(W.tokenHash,L))}}}),f.info("[AUTH] Routes registered")}}if(o.storage?.enabled&&o.storage?.cdn?.enabled){let{createCdnRoutes:w,mergeCdnConfig:g,mergeStorageConfig:Y}=(Ic(),cc(ig)),V=g(o.storage.cdn),C=Y(o.storage),Q=E.files;r.use(w({cdn:V,storagePath:C.basePath,logger:f,getFileRecord:Q&&m?async(p)=>{let L=Q,J=await m.select().from(L).where(gr(L.id,p)).limit(1);if(J.length===0)return null;let W=J[0];return{id:W.id,name:W.name,path:W.path,mime_type:W.mimeType||W.mime_type}}:void 0})),f.info(`[Storage] CDN routes enabled at ${V.basePath}`)}if(o.verification?.enabled&&m)r.use(hg({db:m,schemaTables:E,config:o.verification,logger:f}));if(o.pubsub?.enabled){let w=pc();if(w){let g=o.pubsub,{plugin:Y}=sf({redis:w,logger:f,basePath:g.basePath||"/subs",wsPath:g.wsPath||"/api/events/subscribe",pubsubName:g.pubsubName||"pubsub-redis",maxClientsPerUser:g.maxClientsPerUser??10,wsIdleTimeout:g.wsIdleTimeout??120,ack:{enabled:g.ack?.enabled??!0,ttlSeconds:g.ack?.ttlSeconds??300,maxRetries:g.ack?.maxRetries??3,retryIntervalMs:g.ack?.retryIntervalMs??5000},presence:{enabled:g.presence?.enabled??!0,debounceMs:g.presence?.debounceMs??5000},cleanupIntervalMs:g.cleanupIntervalMs??60000,getLiveMonitoringService:()=>k});r.use(Y),f.info("[PubSub] Enabled",{basePath:g.basePath||"/subs",wsPath:g.wsPath||"/api/events/subscribe"})}else f.warn("[PubSub] pubsub is enabled but Redis is not configured. Disabling PubSub.")}return r.onStart(()=>{let w=Number(process.env.PORT)||3000,g=o.appId||"nucleus",Y=o.mode||"production";console.log(""),console.log(` \x1B[32m\uD83D\uDE80 ${g}\x1B[0m \x1B[90mv${Date.now()}\x1B[0m`),console.log(` \x1B[36m\u279C\x1B[0m Local: \x1B[36mhttp://localhost:${w}\x1B[0m`),console.log(` \x1B[36m\u279C\x1B[0m Mode: \x1B[33m${Y}\x1B[0m`),console.log("")}),r}export{Ws as usePubSubStore,q2 as usePubSub,Y2 as serverFetch,Jd as generateSystemTableEndpoints,Ld as generateMonitoringEndpoints,Wd as generateEndpointsFromConfig,Yd as generateAuthEndpoints,M2 as generateAllEndpoints,x2 as createServerFactory,A2 as createApiHook,ea as ServerFetch,bE as NucleusElysiaPlugin,$s as AUTH_ENDPOINT_CONFIGS};