nucleus-core-ts 0.8.51 → 0.8.52

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 +1 -1
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // @bun
2
- var v1=Object.create;var{getPrototypeOf:p1,defineProperty:Zc,getOwnPropertyNames:Ad,getOwnPropertyDescriptor:I1}=Object,Sd=Object.prototype.hasOwnProperty;var $r=(n,r,t)=>{t=n!=null?v1(p1(n)):{};let o=r||!n||!n.__esModule?Zc(t,"default",{value:n,enumerable:!0}):t;for(let c of Ad(n))if(!Sd.call(o,c))Zc(o,c,{get:()=>n[c],enumerable:!0});return o},Rd=new WeakMap,te=(n)=>{var r=Rd.get(n),t;if(r)return r;if(r=Zc({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function")Ad(n).map((o)=>!Sd.call(r,o)&&Zc(r,o,{get:()=>n[o],enumerable:!(t=I1(n,o))||t.enumerable}));return Rd.set(n,r),r},Z1=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var Zt=(n,r)=>{for(var t in r)Zc(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 Sn=import.meta.require;var ms,zd,ws="\x1B[0m",hs="\x1B[2m",Ud="\x1B[1m";var $s=d(()=>{ms={debug:0,info:1,warn:2,error:3,fatal:4},zd={debug:"\x1B[36m",info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m",fatal:"\x1B[35m"}});function yc(n,r=s2,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((c)=>yc(c,r,t));let o={};for(let[c,a]of Object.entries(n))if(r.some((i)=>c.toLowerCase().includes(i.toLowerCase()))&&typeof a==="string")o[c]="[REDACTED]";else if(typeof a==="object"&&a!==null)o[c]=yc(a,r,t);else o[c]=a;return o}function Bd(n=4){let r=Error().stack;if(!r)return{file:"unknown",line:0,function:"unknown"};let o=r.split(`
3
- `)[n];if(!o)return{file:"unknown",line:0,function:"unknown"};let c=o.match(/at\s+(?:(.+?)\s+)?\(?(.+?):(\d+):(\d+)\)?/);if(!c)return{file:"unknown",line:0,function:"unknown"};let[,a,e,i]=c;return{file:e?e.split("/").pop()||e:"unknown",line:parseInt(i||"0",10),function:a?.replace(/^Object\./,"")||"anonymous"}}function ks(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 Rs(n,r){if(!n&&!r)return;if(!n)return r;if(!r)return n;return{...n,...r}}function As(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 Ss(n,r){let t=new WeakSet;return JSON.stringify(n,(o,c)=>{if(typeof c==="object"&&c!==null){if(t.has(c))return"[Circular]";t.add(c)}if(typeof c==="bigint")return c.toString();if(c instanceof Error)return{name:c.name,message:c.message,stack:c.stack};return c},r)}var s2;var oe=d(()=>{s2=["password","secret","token","apiKey","api_key","authorization","cookie","credit_card","creditCard","ssn","privateKey","private_key"]});class ce{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=Ss(n);this.getConsoleMethod(n.level)(r)}logPretty(n){let r=this.getConsoleMethod(n.level),t=this.colorize?zd[n.level]:"",o=this.colorize?ws:"",c=this.colorize?hs:"",a=this.colorize?Ud:"",e=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?`${c}(${n.correlationId.slice(0,8)})${o}`:"",f=n.duration!==void 0?`${c}${As(n.duration)}${o}`:"",b=`${c}${e}${o} ${t}${a}${i}${o} ${s}${l} ${n.message} ${f}`;if(r(b.trim()),n.caller)r(` ${c}at ${n.caller.function} (${n.caller.file}:${n.caller.line})${o}`);if(n.context&&Object.keys(n.context).length>0)r(` ${c}context:${o}`,n.context);if(n.error){if(r(` ${t}${n.error.name}: ${n.error.message}${o}`),n.error.stack){let g=n.error.stack.split(`
4
- `).slice(1,4);for(let h of g)r(` ${c}${h.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 ae{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 ee{name="console-audit";enabled;constructor(n={}){this.enabled=n.enabled??!0}write(n){if(!this.enabled)return;let r="\x1B[35m",t=ws,o=hs;console.log(`${o}${n.timestamp}${t} ${r}AUDIT${t} [${n.operation}] ${n.entityName}${n.entityId?`:${n.entityId}`:""} ${o}by ${n.userId||"anonymous"}${t}`)}}var Es=d(()=>{$s();oe()});import{randomUUID as l2}from"crypto";class xr{config;transports;auditTransports;context;correlationId;static instance=null;constructor(n={},r={},t){this.config={...f2,...n},this.context=r,this.correlationId=t,this.transports=[new ce({colorize:this.config.colorize,prettyPrint:this.config.prettyPrint})],this.auditTransports=[new ee({enabled:this.config.prettyPrint})]}static getInstance(n){if(!xr.instance)xr.instance=new xr(n);return xr.instance}static resetInstance(){xr.instance=null}child(n,r){let t=new xr(this.config,Rs(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 ms[n]>=ms[this.config.level]}createEntry(n,r,t,o,c){let a={timestamp:new Date().toISOString(),level:n,message:r,service:this.config.service,correlationId:this.correlationId},e=Rs(this.context,t);if(e&&Object.keys(e).length>0)a.context=yc(e,this.config.redactKeys);if(this.config.includeCallerInfo)a.caller=Bd();if(o)a.error=ks(o);if(c!==void 0)a.duration=performance.now()-c;return a}log(n,r,t,o,c){if(!this.shouldLog(n))return;let a=this.createEntry(n,r,t,o,c);for(let e of this.transports)try{e.log(a)}catch(i){console.error(`Logger transport "${e.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 c=await r();return this.log("debug",`${n} completed`,t,void 0,o),c}catch(c){throw this.log("error",`${n} failed`,t,c,o),c}}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:l2(),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 f2,d2;var Ms=d(()=>{Es();$s();oe();f2={level:"info",service:"nucleus",environment:"development",redactKeys:[],colorize:!0,prettyPrint:!0,includeCallerInfo:!0,asyncBufferSize:100,flushIntervalMs:1000,auditEnabled:!1};d2=xr.getInstance()});var Vd=Z1((X6,Xd)=>{var Yd=12,H2=0,Hs=[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 z2(n){var r=n.indexOf("%");if(r===-1)return n;var t=n.length,o="",c=0,a=0,e=r,i=Yd;while(r>-1&&r<t){var s=Jd(n[r+1],4),l=Jd(n[r+2],0),f=s|l,b=Hs[f];if(i=Hs[256+i+b],a=a<<6|f&Hs[364+b],i===Yd)o+=n.slice(c,e),o+=a<=65535?String.fromCharCode(a):String.fromCharCode(55232+(a>>10),56320+(a&1023)),a=0,c=r+3,r=e=n.indexOf("%",c);else if(i===H2)return null;else{if(r+=3,r<t&&n.charCodeAt(r)===37)continue;return null}}return o+n.slice(c)}var U2={"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 Jd(n,r){var t=U2[n];return t===void 0?255:t<<r}Xd.exports=z2});var Qd=(n)=>{return n?.trim().toLowerCase()||"unknown"},Js=(n,r)=>{return n[r.toLowerCase()]??n[r]};import B2 from"crypto";var Pd=(n)=>{let r=JSON.stringify({userAgent:Qd(n.userAgent),ipAddress:n.ipAddress,extra:n.extra??{}});return{hash:B2.createHash("sha256").update(r).digest("base64url"),components:n}};var Xs=()=>{};var Gd=({savedFingerprint:n,requestIp:r,headers:t})=>{let o=Js(t,"user-agent"),c=Js(t,"x-forwarded-for")??r??void 0,a=Pd({userAgent:o,ipAddress:c}),e=[{field:"userAgent",saved:n.components.userAgent,received:o},{field:"ipAddress",saved:n.components.ipAddress,received:c}].find(({saved:i,received:s})=>i??(s??"")!=="");if(e)return{isValid:!1,reason:`${e.field} mismatch`,currentFingerprint:a};return{isValid:!0,currentFingerprint:a}};var Vs=d(()=>{Xs()});var qd=d(()=>{Xs();Vs()});import Nd from"crypto";var Cs=(n)=>{return(Buffer.isBuffer(n)?n.toString("base64"):Buffer.from(n).toString("base64")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")},Od=(n)=>{let r="=".repeat((4-n.length%4)%4),t=n.replace(/-/g,"+").replace(/_/g,"/")+r;return Buffer.from(t,"base64").toString("utf-8")},Ls=(n,r,t)=>{let o=t.replace("HS","sha"),c=Nd.createHmac(o,r);return c.update(n),Cs(c.digest())},Fd=(n,r,t,o)=>{let c=Ls(n,t,o);return Nd.timingSafeEqual(Buffer.from(r),Buffer.from(c))},jd=(n)=>{return Cs(JSON.stringify(n))},Kd=(n)=>{return Cs(JSON.stringify(n))},le=(n)=>{try{return JSON.parse(Od(n))}catch{return null}},fe=(n)=>{try{return JSON.parse(Od(n))}catch{return null}};var de=()=>{};var x2=(n)=>{let r=n.split(".");if(r.length!==3)return null;let[t,o,c]=r;if(!t||!o||!c)return null;let a=le(t),e=fe(o);if(!a||!e)return null;return{header:a,payload:e,signature:c}};var Td=d(()=>{de()});var ca=(n,r,t="HS256")=>{let o={alg:t,typ:"JWT"},c=Math.floor(Date.now()/1000),a={sub:n.subject,iat:c,exp:c+n.expiresInSeconds,iss:n.issuer,aud:n.audience,jti:n.jwtId,sessionId:n.sessionId,...n.customClaims},e=jd(o),i=Kd(a),s=`${e}.${i}`,l=Ls(s,r,t);return`${s}.${l}`};var vd=d(()=>{de()});var Uo=(n,r)=>{let t=n.split(".");if(t.length!==3)return{valid:!1,error:"Invalid token format: expected 3 parts"};let[o,c,a]=t;if(!o||!c||!a)return{valid:!1,error:"Invalid token format: missing parts"};let e=le(o);if(!e)return{valid:!1,error:"Invalid header: failed to decode"};if(e.typ!=="JWT")return{valid:!1,error:"Invalid header: typ must be JWT"};if(!["HS256","HS384","HS512"].includes(e.alg))return{valid:!1,error:`Unsupported algorithm: ${e.alg}`};let s=`${o}.${c}`;if(!Fd(s,a,r,e.alg))return{valid:!1,error:"Invalid signature"};let f=fe(c);if(!f)return{valid:!1,error:"Invalid payload: failed to decode"};let b=Math.floor(Date.now()/1000);if(f.exp&&f.exp<b)return{valid:!1,error:"Token expired"};if(f.iat&&f.iat>b+60)return{valid:!1,error:"Token issued in the future"};return{valid:!0,payload:f}};var pd=d(()=>{de()});var Id={};Zt(Id,{verifyJWT:()=>Uo,signJWT:()=>ca,decodeJWT:()=>x2});var Bo=d(()=>{Td();vd();pd()});var Zd=()=>{};var yd=d(()=>{Zd()});var nb="127.0.0.1",rb="3500",tb=4,Wt="statestore-redis",Qs="pubsub-rabbitmq",Ps="secretstore",aa="configstore-redis",ob="DAPR_HOST",cb="DAPR_HTTP_PORT",ab="DAPR_HTTP_ENDPOINT",eb="DAPR_GRPC_ENDPOINT",ib="DAPR_API_TOKEN",sb=30000,lb=1e4,fb=5000,Yt,be,Fr;var kt=d(()=>{Yt={CONNECTED:"connected",DISCONNECTED:"disconnected",CONNECTING:"connecting",ERROR:"error"},be={HEALTHY:"healthy",UNHEALTHY:"unhealthy"},Fr={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 jr,fc=(n,r)=>new jr(Fr.CONNECTION_ERROR,n,r),db=(n,r)=>new jr(Fr.TIMEOUT_ERROR,n,r),xo=(n,r)=>new jr(Fr.STATE_ERROR,n,r),Gs=(n,r)=>new jr(Fr.PUBSUB_ERROR,n,r),bb=(n,r)=>new jr(Fr.BINDING_ERROR,n,r),qs=(n,r)=>new jr(Fr.SECRET_ERROR,n,r),ge=(n,r)=>new jr(Fr.CONFIG_ERROR,n,r),gb=(n,r)=>new jr(Fr.INVOKE_ERROR,n,r),Ns=(n,r)=>new jr(Fr.CRYPTO_ERROR,n,r),Os=(n,r)=>new jr(Fr.LOCK_ERROR,n,r),ro=(n,r)=>new jr(Fr.WORKFLOW_ERROR,n,r),_n=async(n,r)=>{try{return await n()}catch(t){let o=t instanceof Error?t.message:String(t);throw r(o,t)}};var Wr=d(()=>{kt();jr=class jr 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 ub,ue=(n="info")=>{let r=ub[n],t=(o)=>(c,...a)=>{if(ub[o]<r)return;let e=new Date().toISOString(),i=a.length>0?` ${JSON.stringify(a)}`:"";console[o](`[${e}] [Dapr] [${o.toUpperCase()}] ${c}${i}`)};return{debug:t("debug"),info:t("info"),warn:t("warn"),error:t("error")}},ea=async(n,r,t="Operation timed out")=>{return Promise.race([n(),new Promise((o,c)=>{setTimeout(()=>{c(db(t))},r)})])},mn=(n,r,t)=>{let o=r.filter((c)=>n[c]===void 0);if(o.length>0)throw Error(`Missing required ${t} parameters: ${o.join(", ")}`)};var Kr=d(()=>{kt();Wr();ub={debug:0,info:1,warn:2,error:3}});class _e{client;logger;constructor(n,r){this.client=n,this.logger=r}async invoke(n,r,t,o={}){return mn({name:n,operation:r},["name","operation"],"binding invoke"),_n(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},(c,a)=>bb(`Failed to invoke binding ${n}: ${c}`,a))}}var Fs=d(()=>{Wr();Kr()});class me{client;logger;constructor(n,r){this.client=n,this.logger=r}async get(n,r=aa){if(mn({keys:n,storeName:r},["keys","storeName"],"config get"),n.length===0)return{};return _n(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)=>ge(`Failed to get configuration: ${t}`,o))}async subscribeWithKeys(n,r,t=aa){if(mn({keys:n,callback:r,storeName:t},["keys","callback","storeName"],"config subscribeWithKeys"),n.length===0)throw ge("At least one key must be provided for subscription");return _n(async()=>{this.logger.debug("Subscribing to configuration updates",{keys:n,storeName:t});let c=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(e){this.logger.error("Error in configuration subscription callback",e)}});return this.logger.debug("Configuration subscription established",{keys:n,storeName:t}),{stop:()=>{this.logger.debug("Stopping configuration subscription",{keys:n,storeName:t}),c.stop()}}},(o,c)=>ge(`Failed to subscribe to configuration updates: ${o}`,c))}async getValue(n,r=aa){return(await this.get([n],r))[n]?.value}async getValues(n,r=aa){let t=await this.get(n,r),o={};for(let c in t)if(t[c]?.value!==void 0)o[c]=t[c].value;return o}}var js=d(()=>{kt();Wr();Kr()});class we{client;logger;constructor(n,r){this.client=n,this.logger=r}async encrypt(n,r){return mn({data:n,componentName:r.componentName},["data","componentName"],"crypto encrypt"),_n(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,c={componentName:r.componentName};if(r.keyName)c.keyName=r.keyName;if(r.keyWrapAlgorithm)c.keyWrapAlgorithm=r.keyWrapAlgorithm;let a=await t.crypto.encrypt(o,c);return this.logger.debug("Data encrypted successfully",{componentName:r.componentName,inputSize:o.length,outputSize:a.length}),a},(t,o)=>Ns(`Failed to encrypt data: ${t}`,o))}async decrypt(n,r){return mn({data:n,componentName:r.componentName},["data","componentName"],"crypto decrypt"),_n(async()=>{this.logger.debug("Decrypting data",{componentName:r.componentName});let t=await this.client(),o=typeof n==="string"?Buffer.from(n):n,c={componentName:r.componentName};if(r.keyName)c.keyName=r.keyName;if(r.keyWrapAlgorithm)c.keyWrapAlgorithm=r.keyWrapAlgorithm;let a=await t.crypto.decrypt(o,c);return this.logger.debug("Data decrypted successfully",{componentName:r.componentName,inputSize:o.length,outputSize:a.length}),a},(t,o)=>Ns(`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 Ks=d(()=>{Wr();Kr()});import{HttpMethod as ia}from"@dapr/dapr";class he{client;logger;constructor(n,r){this.client=n,this.logger=r}async invoke(n,r,t=ia.POST,o,c={}){mn({appId:n,methodName:r,httpMethod:t},["appId","methodName","httpMethod"],"invoke service");let a=c.timeout||sb;return _n(async()=>{this.logger.debug("Invoking service",{appId:n,methodName:r,httpMethod:t,hasData:o!==void 0});let e=r;if(c.queryParams&&Object.keys(c.queryParams).length>0){let l=Object.entries(c.queryParams).map(([f,b])=>`${encodeURIComponent(f)}=${encodeURIComponent(b)}`).join("&");e=`${r}?${l}`}let i=await this.client(),s=await ea(()=>i.invoker.invoke(n,e,t,o,c.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},(e,i)=>gb(`Failed to invoke service ${n}.${r}: ${e}`,i))}async get(n,r,t={}){return this.invoke(n,r,ia.GET,void 0,t)}async post(n,r,t,o={}){return this.invoke(n,r,ia.POST,t,o)}async put(n,r,t,o={}){return this.invoke(n,r,ia.PUT,t,o)}async delete(n,r,t={}){return this.invoke(n,r,ia.DELETE,void 0,t)}}var Ts=d(()=>{kt();Wr();Kr()});class $e{client;logger;constructor(n,r){this.client=n,this.logger=r}async lock(n,r,t,o){return mn({storeName:n,resourceId:r,lockOwner:t,expiryInSeconds:o.expiryInSeconds},["storeName","resourceId","lockOwner","expiryInSeconds"],"lock"),_n(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}},(c,a)=>Os(`Failed to acquire lock for resource ${r}: ${c}`,a))}async unlock(n,r,t){return mn({storeName:n,resourceId:r,lockOwner:t},["storeName","resourceId","lockOwner"],"unlock"),_n(async()=>{this.logger.debug("Releasing lock",{storeName:n,resourceId:r,lockOwner:t});let c=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(c.status)}),{status:c.status}},(o,c)=>Os(`Failed to release lock for resource ${r}: ${o}`,c))}getLockStatusName(n){switch(n){case 0:return"Success";case 1:return"LockDoesNotExist";case 2:return"LockBelongsToOthers";default:return"InternalError"}}}var vs=d(()=>{Wr();Kr()});class ke{client;logger;constructor(n,r){this.client=n,this.logger=r}async publish(n,r,t={},o=Qs){return mn({topic:n,data:r,pubsubName:o},["topic","data","pubsubName"],"pubsub publish"),_n(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})},(c,a)=>Gs(`Failed to publish message to topic ${n}: ${c}`,a))}async publishBulk(n,r,t=Qs){if(mn({topic:n,messages:r,pubsubName:t},["topic","messages","pubsubName"],"pubsub publishBulk"),r.length===0)return{failedEntries:[]};return _n(async()=>{this.logger.debug("Publishing bulk messages to topic",{topic:n,pubsubName:t,messageCount:r.length});let o=await this.client(),c=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,c),e=a.failedMessages?.length||0;if(e>0)this.logger.warn("Some messages failed to publish",{topic:n,pubsubName:t,failedCount:e,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,c)=>Gs(`Failed to publish bulk messages to topic ${n}: ${o}`,c))}createBulkPublishMessage(n,r,t,o){return{entryId:r,event:n,contentType:t,metadata:o}}}var ps=d(()=>{kt();Wr();Kr()});class Re{client;logger;constructor(n,r){this.client=n,this.logger=r}async get(n,r={},t=Ps){return mn({key:n,storeName:t},["key","storeName"],"secret get"),_n(async()=>{this.logger.debug("Getting secret",{key:n,storeName:t});let o=await this.client(),c=r.metadata?JSON.stringify(r.metadata):void 0,a=await o.secret.get(t,n,c);return this.logger.debug("Secret retrieved",{key:n,storeName:t}),a},(o,c)=>qs(`Failed to get secret ${n}: ${o}`,c))}async getBulk(n={},r=Ps){return mn({storeName:r},["storeName"],"secret getBulk"),_n(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)=>qs(`Failed to get all secrets: ${t}`,o))}}var Is=d(()=>{kt();Wr();Kr()});class Ae{client;logger;constructor(n,r){this.client=n,this.logger=r}async save(n,r={},t=Wt){if(mn({stateItems:n,storeName:t},["stateItems","storeName"],"state save"),n.length===0)return;return _n(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,c)=>xo(`Failed to save state items: ${o}`,c))}async get(n,r=Wt){return mn({key:n,storeName:r},["key","storeName"],"state get"),_n(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)=>xo(`Failed to get state item ${n}: ${t}`,o))}async getBulk(n,r=Wt){if(mn({keys:n,storeName:r},["keys","storeName"],"state getBulk"),n.length===0)return{};return _n(async()=>{this.logger.debug("Getting bulk state items",{count:n.length,storeName:r});let o=await(await this.client()).state.getBulk(r,n),c={};return o.forEach((a)=>{if(a.data!==void 0)c[a.key]=a.data}),this.logger.debug("Bulk state items retrieved",{count:n.length,found:Object.keys(c).length,storeName:r}),c},(t,o)=>xo(`Failed to get bulk state items: ${t}`,o))}async delete(n,r,t,o=Wt){return mn({key:n,storeName:o},["key","storeName"],"state delete"),_n(async()=>{this.logger.debug("Deleting state item",{key:n,storeName:o});let c=await this.client(),a={};if(r)a.etag=r;if(t)a.metadata=t;await c.state.delete(o,n,a),this.logger.debug("State item deleted",{key:n,storeName:o})},(c,a)=>xo(`Failed to delete state item ${n}: ${c}`,a))}async transaction(n,r=Wt){if(mn({operations:n,storeName:r},["operations","storeName"],"state transaction"),n.length===0)return;return _n(async()=>{this.logger.debug("Executing state transaction",{operationCount:n.length,storeName:r});let t=await this.client(),o=n.map((c)=>({operation:c.operation,request:{key:c.request.key,value:c.request.value,etag:c.request.etag?{value:c.request.etag}:void 0,metadata:c.request.metadata}}));await t.state.transaction(r,o),this.logger.debug("State transaction executed successfully",{operationCount:n.length,storeName:r})},(t,o)=>xo(`Failed to execute state transaction: ${t}`,o))}async query(n,r=Wt){return mn({query:n,storeName:r},["query","storeName"],"state query"),_n(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((c)=>c.data)},(t,o)=>xo(`Failed to query state store: ${t}`,o))}async saveItem(n,r,t={},o=Wt){let c={key:n,value:r};return this.save([c],t,o)}async upsert(n,r,t={},o=Wt){return this.saveItem(n,r,t,o)}}var Zs=d(()=>{kt();Wr();Kr()});class Se{client;logger;constructor(n,r){this.client=n,this.logger=r}async start(n,r,t={}){return mn({workflowName:n},["workflowName"],"workflow start"),_n(async()=>{this.logger.debug("Starting workflow",{workflowName:n,instanceId:t.instanceId||"auto-generated",workflowComponent:t.workflowComponent});let c=await(await this.client()).workflow.start(n,r,t.instanceId);return this.logger.debug("Workflow started",{workflowName:n,instanceId:c}),c},(o,c)=>ro(`Failed to start workflow ${n}: ${o}`,c))}async get(n){return mn({instanceId:n},["instanceId"],"workflow get"),_n(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)=>ro(`Failed to get workflow instance ${n}: ${r}`,t))}async terminate(n){return mn({instanceId:n},["instanceId"],"workflow terminate"),_n(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)=>ro(`Failed to terminate workflow instance ${n}: ${r}`,t))}async pause(n){return mn({instanceId:n},["instanceId"],"workflow pause"),_n(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)=>ro(`Failed to pause workflow instance ${n}: ${r}`,t))}async resume(n){return mn({instanceId:n},["instanceId"],"workflow resume"),_n(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)=>ro(`Failed to resume workflow instance ${n}: ${r}`,t))}async purge(n){return mn({instanceId:n},["instanceId"],"workflow purge"),_n(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)=>ro(`Failed to purge workflow instance ${n}: ${r}`,t))}async raiseEvent(n,r,t){return mn({instanceId:n,eventName:r},["instanceId","eventName"],"workflow raiseEvent"),_n(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,c)=>ro(`Failed to raise event ${r} for workflow instance ${n}: ${o}`,c))}}var ys=d(()=>{Wr();Kr()});import{CommunicationProtocolEnum as nl,DaprClient as W2,HttpMethod as Y2,LogLevel as J2}from"@dapr/dapr";class rl{client=null;daprHost;daprPort;communicationProtocol;maxBodySizeMb;daprApiToken;logger;connectionStatus=Yt.DISCONNECTED;connectionPromise=null;constructor(n={}){this.daprHost=n.daprHost||process.env[ob]||nb,this.daprPort=n.daprPort||process.env[cb]||rb,this.communicationProtocol=n.communicationProtocol||nl.HTTP,this.maxBodySizeMb=n.maxBodySizeMb||tb,this.daprApiToken=n.daprApiToken||process.env[ib],this.logger=n.logger||ue(),this.logger.info("DaprConnectionManager initialized",{daprHost:this.daprHost,daprPort:this.daprPort,communicationProtocol:this.communicationProtocol})}async getClient(){if(!this.client||this.connectionStatus!==Yt.CONNECTED)await this.connect();if(!this.client)throw fc("Not connected to Dapr sidecar");return this.client}async connect(){if(this.connectionPromise)return this.connectionPromise;if(this.client&&this.connectionStatus===Yt.CONNECTED)return Promise.resolve();this.connectionStatus=Yt.CONNECTING,this.connectionPromise=this.establishConnection();try{await this.connectionPromise,this.connectionStatus=Yt.CONNECTED}catch(n){throw this.connectionStatus=Yt.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[ab]&&this.communicationProtocol===nl.HTTP||process.env[eb]&&this.communicationProtocol===nl.GRPC,r={communicationProtocol:this.communicationProtocol,maxBodySizeMb:this.maxBodySizeMb,logger:{level:J2.Warn}};if(!n)r.daprHost=this.daprHost,r.daprPort=this.daprPort;if(this.daprApiToken)r.daprApiToken=this.daprApiToken;await ea(async()=>{this.client=new W2(r)},lb,"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,fc(`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=Yt.DISCONNECTED,this.logger.info("Disconnected from Dapr sidecar")}catch(n){throw this.logger.error("Error during disconnect",n),fc("Failed to disconnect from Dapr sidecar",n)}}isConnected(){return this.client!==null&&this.connectionStatus===Yt.CONNECTED}getConnectionStatus(){return this.connectionStatus}async healthCheck(){if(!this.client)throw fc("Not connected to Dapr sidecar");try{return await ea(async()=>{if(!this.client)throw fc("Not connected to Dapr sidecar");let n=await this.client.invoker.invoke("healthz","healthz",Y2.GET);return{status:n.status===204?be.HEALTHY:be.UNHEALTHY,version:n.headers?.["dapr-version"]||"unknown"}},fb,"Health check timed out")}catch(n){return this.logger.error("Health check failed",n),{status:be.UNHEALTHY,version:"unknown"}}}getClientConfig(){return{daprHost:this.daprHost,daprPort:this.daprPort,communicationProtocol:this.communicationProtocol,maxBodySizeMb:this.maxBodySizeMb,hasApiToken:!!this.daprApiToken,connectionStatus:this.connectionStatus}}}var _b=d(()=>{kt();Wr();Kr()});var mb=()=>{};class Ee{connectionManager;logger;_state;_pubsub;_binding;_secret;_config;_invoke;_lock;_crypto;_workflow;constructor(n={}){this.logger=n.logger||ue(),this.connectionManager=new rl(n);let r=async()=>{return this.connectionManager.getClient()};this._state=new Ae(r,this.logger),this._pubsub=new ke(r,this.logger),this._binding=new _e(r,this.logger),this._secret=new Re(r,this.logger),this._config=new me(r,this.logger),this._invoke=new he(r,this.logger),this._lock=new $e(r,this.logger),this._crypto=new we(r,this.logger),this._workflow=new Se(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 $S;var tl=d(()=>{Fs();js();Ks();Ts();vs();ps();Is();Zs();ys();_b();Kr();Fs();js();Ks();Ts();vs();ps();Is();Zs();ys();kt();Wr();mb();$S=new Ee});import wb from"ioredis";class hb{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 $b{storeName;dapr;constructor(n){this.storeName=n;this.dapr=new Ee}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 qn{static instance=null;store;directClient=null;useDapr;constructor(n){if(qn.instance){this.store=qn.instance.store,this.directClient=qn.instance.directClient,this.useDapr=qn.instance.useDapr;return}if(!n)throw Error("Redis config must be provided for first initialization.");if(X2(n),this.useDapr=n.withDapr??!1,n.withDapr)this.store=new $b(n.stateStoreName??"statestore");else{let r=n.url?new wb(n.url):new wb({host:n.host,port:n.port});this.directClient=r,this.store=new hb(r)}qn.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 c=await this.exists(n);if(!c.success)return{success:!1,error:c.error};if(!c.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 c=await this.read(n);if(!c.success)return{success:!1,error:c.error};if(c.data!==null)return{success:!0,data:c.data};await new Promise((a)=>setTimeout(a,t))}return{success:!0,data:null}}}var X2=(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 Jt=d(()=>{tl()});var ol=d(()=>{Jt()});var cl=d(()=>{Jt();Bo()});var al=d(()=>{Jt();Bo();ol()});var Rb=d(()=>{al()});var Ab=d(()=>{ol();cl();al();Rb()});var Sb=86400,to=(n)=>`session:${n}`,Me=(n)=>JSON.stringify(n),Eb=(n)=>{if(!n)return null;if(typeof n==="object")return n;try{return JSON.parse(n)}catch{return null}};var De=async(n)=>{let r=new qn,t=to(n.sessionId),o=await r.remove(t);return o.success&&o.data>0};var He=d(()=>{Jt()});import V2 from"crypto";var Mb=async(n)=>{let r=new qn,t=n.sessionId??V2.randomUUID(),o=Date.now(),c=(n.expiresInSeconds??Sb)*1000,a=new Date(o).toISOString(),e={id:t,userId:n.userId,createdAt:a,expiresAt:new Date(o+c).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(to(t),Me(e));if(!i.success)return{success:!1,error:i.error};return{success:!0,session:e}};var el=d(()=>{Jt()});var Db=d(()=>{Bo();cl();He();el()});var Hb=d(()=>{Db()});var Wo=async(n)=>{let r=new qn,t=to(n.sessionId),o=await r.read(t);if(!o.success||!o.data)return null;let c=Eb(o.data);if(!c)return null;if(new Date(c.expiresAt).getTime()<=Date.now())return await De({sessionId:n.sessionId}),null;return c};var ze=d(()=>{Jt();He()});var zb=async(n)=>{let r=await Wo({sessionId:n.sessionId});if(!r)return{success:!1,error:"Session not found"};let t={...r,...n.updates,lastActiveAt:n.updates.lastActiveAt??new Date().toISOString()},c=await new qn().create(to(n.sessionId),Me(t));if(!c.success)return{success:!1,error:c.error};return{success:!0,session:t}},il=async(n)=>{return zb({sessionId:n,updates:{lastActiveAt:new Date().toISOString()}})};var Ub=d(()=>{Jt();ze()});var C2=async(n)=>{let r=Uo(n.jwtToken,n.jwtSecret);if(!r.valid)return{isValid:!1,reason:r.error};let t=await Wo({sessionId:n.sessionId});if(!t)return{isValid:!1,reason:"Session not found"};let o;if(n.savedFingerprint&&n.headers&&n.requestIp){let c={};for(let[e,i]of Object.entries(n.headers))if(i!==void 0)c[e]=i;let a=Gd({savedFingerprint:n.savedFingerprint,headers:c,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 Bb=d(()=>{Vs();Bo();ze()});var xb={};Zt(xb,{validateSession:()=>C2,updateSession:()=>zb,updateLastActiveAt:()=>il,readSession:()=>Wo,generateSession:()=>Mb,deleteSession:()=>De});var sl=d(()=>{He();el();ze();Ub();Bb()});var Wb=d(()=>{qd();Bo();yd();Ab();Hb();sl()});import{eq as L2}from"drizzle-orm";function sa(n,r,t,o,c,a){let e=[n.toLowerCase()];if(a)e.push("bulk");if(e.push(r),o){if(e.push("with"),e.push(o),c)e.push(c)}else if(t)e.push(t);return e.join(".")}function la(n,r,t){if(r)return`/${n}/bulk`;if(t)return`/${n}/:id`;return`/${n}`}function G2(n,r,t){let o=[],c=n.table_name,a=n.excluded_methods||[];for(let e of Q2){if(a.includes(e))continue;let i=e==="PUT"||e==="PATCH"||e==="DELETE";if(o.push({action:sa(e,c),description:`${e} access to ${c}`,path:la(c,!1,i&&e!=="DELETE"),method:e}),e==="GET"&&n.columns){for(let l of n.columns){if(r.skipColumns.includes(l.name))continue;o.push({action:sa(e,c,l.name),description:`${e} access to ${c}.${l.name}`,path:la(c),method:e})}let s=`${c}Relations`;if(t[s]){let l=t[s];if(l?.config?.referencedTable?._?.name){let f=l.config.referencedTable._.name;o.push({action:sa(e,c,void 0,f),description:`${e} access to ${c} with ${f}`,path:la(c),method:e})}}}if(e==="POST"||e==="PUT"||e==="PATCH"){if(n.columns)for(let s of n.columns){if(r.skipColumns.includes(s.name))continue;o.push({action:sa(e,c,s.name),description:`${e} access to ${c}.${s.name}`,path:la(c,!1,e!=="POST"),method:e})}}}for(let e of P2){if(a.includes(e))continue;o.push({action:sa(e,c,void 0,void 0,void 0,!0),description:`Bulk ${e} access to ${c}`,path:la(c,!0),method:e})}return o}async function Yb(n,r,t,o,c,a){let e=r.claims;if(!e)return a.warn("[Authorization] Claims table not found in schema"),{total:0,created:0,existing:0,claims:[]};let i=[];for(let g of o){if(c.skipTables.includes(g.table_name))continue;let h=G2(g,c,t);i.push(...h)}let s=i.filter((g,h,k)=>h===k.findIndex(($)=>$.action===g.action)),l=0,f=0,b=[];for(let g of s)try{if((await n.select().from(e).where(L2(e.action,g.action)).limit(1)).length===0)await n.insert(e).values(g),l++,b.push(g.action),a.debug(`[Authorization] Created claim: ${g.action}`);else f++}catch(h){a.error(`[Authorization] Failed to create claim: ${g.action}`,h)}return a.info(`[Authorization] Claims seeded: ${l} created, ${f} existing, ${s.length} total`),{total:s.length,created:l,existing:f,claims:b}}var Q2,P2;var Jb=d(()=>{Q2=["GET","POST","PUT","PATCH","DELETE"],P2=["POST","PUT","DELETE"]});var{password:q2}=globalThis.Bun;import{eq as ll}from"drizzle-orm";async function Xb(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:c,users:a,userRoles:e}=r;if(!c||!a||!e)return o.error("[Authorization] Required tables not found for godmin setup"),{success:!1};try{let i,s=await n.select().from(c).where(ll(c.name,fl)).limit(1);if(s.length===0){let[h]=await n.insert(c).values({name:fl,description:"God mode administrator - bypasses all authorization checks"}).returning();i=h.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(ll(a.email,t.godminEmail)).limit(1);if(f.length===0){let h=await q2.hash(t.godminPassword,{algorithm:"bcrypt",cost:10}),[k]=await n.insert(a).values({email:t.godminEmail,password:h,verifiedAt:new Date,isActive:!0}).returning();l=k.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(e).where(ll(e.userId,l)).limit(1)).some((h)=>h.roleId===i))await n.insert(e).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 Vb(n){return n===fl}var fl="godmin";var dl=()=>{};import{eq as bl,inArray as N2}from"drizzle-orm";function O2(n){return n.startsWith(Qb)}function F2(n){return{field:n.slice(Qb.length)}}function Cb(n){if(!n)return{};let r=new URLSearchParams(n),t={};for(let[o,c]of r.entries())if(O2(c))t[o]=F2(c);else t[o]=c;return t}function Lb(n,r,t){let o={};for(let[c,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 e=a.field,i=e.replace(/_([a-z])/g,(l,f)=>f.toUpperCase()),s;if(e in r)s=r[e];else if(i in r)s=r[i];else{t.warn(`[Authorization] Cannot resolve self:${e} - field not found in userData`);continue}o[c]=s,t.debug(`[Authorization] Resolved self:${e} -> ${s}`)}else o[c]=a;return o}function gl(n,r,t,o){let c=[n.toLowerCase(),r];if(o)c.push("with",o);else if(t)c.push(t);return c.join(".")}function ul(n,r){if(n===r)return!0;let t=n.split("."),o=r.split(".");if(t.length>o.length)return!1;for(let c=0;c<t.length;c++)if(t[c]!==o[c])return!1;return!0}async function _l(n){let{userId:r,method:t,entity:o,requestedFields:c,requestedRelations:a,db:e,schemaTables:i,logger:s,userData:l}=n,f=i.roles,b=i.userRoles,g=i.roleClaims,h=i.claims;if(!f||!b||!g||!h)return s.error("[Authorization] Required tables not found"),{authorized:!1,reason:"Authorization tables not configured"};try{let k=b,$=f,m=await e.select({roleId:k.roleId,roleName:$.name}).from(b).innerJoin(f,bl(k.roleId,$.id)).where(bl(k.userId,r));if(m.length===0)return{authorized:!1,reason:"User has no roles assigned"};if(m.some((J)=>Vb(J.roleName)))return s.debug(`[Authorization] User ${r} has godmin role, bypassing checks`),{authorized:!0};let X=m.map((J)=>J.roleId),C=g,E=h,Q=await e.select({claimAction:E.action,scope:C.scope}).from(g).innerJoin(h,bl(C.claimId,E.id)).where(N2(C.roleId,X));if(Q.length===0)return{authorized:!1,reason:"User roles have no claims assigned"};let W=gl(t,o);if(!Q.some((J)=>ul(J.claimAction,W)))return{authorized:!1,reason:`No access to ${t} ${o}`};let z=[],w=[],u={},U=!1;for(let J of Q)if(J.claimAction===W){U=!0;let I=Cb(J.scope),Y=Lb(I,l,s);Object.assign(u,Y)}if(U)return{authorized:!0,scopeFilters:Object.keys(u).length>0?u:void 0};if(c)for(let J of c){let F=gl(t,o,J);if(Q.some((Y)=>ul(Y.claimAction,F)))z.push(J)}if(a)for(let J of a){let F=gl(t,o,void 0,J);if(Q.some((Y)=>ul(Y.claimAction,F)))w.push(J)}for(let J of Q){let F=Cb(J.scope),I=Lb(F,l,s);Object.assign(u,I)}if(!(z.length>0||w.length>0)&&(c?.length||a?.length))return{authorized:!1,reason:"No access to requested fields or relations"};return{authorized:!0,allowedFields:z.length>0?z:void 0,allowedRelations:w.length>0?w:void 0,scopeFilters:Object.keys(u).length>0?u:void 0}}catch(k){return s.error("[Authorization] Check failed",k),{authorized:!1,reason:"Authorization check failed"}}}function Ue(n,r){if(!r||r.length===0)return n;let o=[...new Set([...["id"],...r])],c=(a)=>{let e={};for(let i of o)if(i in a)e[i]=a[i];return e};if(Array.isArray(n))return n.map(c);return c(n)}function Pb(n,r){if(!r)return n;let t=(o)=>{let c={...o};for(let a of Object.keys(c))if(typeof c[a]==="object"&&c[a]!==null&&!r.includes(a))delete c[a];return c};if(Array.isArray(n))return n.map(t);return t(n)}var Qb="self:";var Gb=d(()=>{dl()});var qb;var Nb=d(()=>{qb={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 ml=d(()=>{Jb();dl();Gb();Nb()});function j2(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 K2(){let n=new Uint8Array(24);return crypto.getRandomValues(n),Array.from(n).map((r)=>r.toString(16).padStart(2,"0")).join("")}function Ob(n){let r=new Bun.CryptoHasher("sha256");return r.update(n),r.digest("hex")}function T2(n,r){if(n.length!==r.length){let e=new Uint8Array(32);return crypto.getRandomValues(e),!1}let t=new TextEncoder,o=t.encode(n),c=t.encode(r),a=0;for(let e=0;e<o.length;e++)a|=(o[e]??0)^(c[e]??0);return a===0}function Yo(n,r){let t=r-n+1,o=Math.ceil(Math.log2(t)/8)||1,c=256**o,a=c-c%t,e,i=new Uint8Array(o);do crypto.getRandomValues(i),e=i.reduce((s,l,f)=>s+l*256**f,0);while(e>=a);return n+e%t}function Fb(n){let r=wl[n],{min:t,max:o}=r.mathRange,c=["+","-","\xD7"],a=c[Yo(0,c.length-1)],e=Yo(t,o),i=Yo(t,o),s;switch(a){case"+":s=e+i;break;case"-":if(e<i)[e,i]=[i,e];s=e-i;break;case"\xD7":e=Yo(1,12),i=Yo(1,12),s=e*i;break;default:s=e+i}return{question:`${e} ${a} ${i} = ?`,answer:s.toString()}}function jb(n){let r=wl[n],t="";for(let o=0;o<r.textLength;o++)t+="ABCDEFGHJKLMNPQRSTUVWXYZ23456789".charAt(Yo(0,31));return{question:t,answer:t}}function v2(n){let r=jb(n),t=200,o=60,c=p2(r.answer,200,60),a=`data:image/svg+xml;base64,${Buffer.from(c).toString("base64")}`;return{question:"Enter the text shown in the image",answer:r.answer,imageData:a}}function cn(){let n=new Uint32Array(1);return crypto.getRandomValues(n),(n[0]??0)/4294967295}function p2(n,r,t){let o=240+cn()*15,c=240+cn()*15,a=240+cn()*15,e=`rgb(${o}, ${c}, ${a})`,i="";for(let k=0;k<12;k++){let $=cn()*r,m=cn()*t,R=cn()*r,X=cn()*t,C=cn()*100+100,E=cn()*100+100,Q=cn()*100+100,W=1+cn()*2;i+=`<line x1="${$}" y1="${m}" x2="${R}" y2="${X}" stroke="rgb(${C},${E},${Q})" stroke-width="${W}"/>`}let s="";for(let k=0;k<4;k++){let $=cn()*r,m=cn()*t,R=cn()*r,X=cn()*t,C=cn()*r,E=cn()*t,Q=cn()*r,W=cn()*t,S=cn()*80+80,z=cn()*80+80,w=cn()*80+80;s+=`<path d="M${$},${m} C${R},${X} ${C},${E} ${Q},${W}" stroke="rgb(${S},${z},${w})" stroke-width="2" fill="none"/>`}let l="";for(let k=0;k<80;k++){let $=cn()*r,m=cn()*t,R=cn()*150+50,X=cn()*150+50,C=cn()*150+50,E=cn()*3+1;l+=`<circle cx="${$}" cy="${m}" r="${E}" fill="rgb(${R},${X},${C})"/>`}let f="",b=r/(n.length+2),g=b;for(let k=0;k<n.length;k++){let $=g+k*b+(cn()-0.5)*15,m=t/2+8+(cn()-0.5)*12,R=(cn()-0.5)*40,X=22+cn()*10,C=cn()*80,E=cn()*80,Q=cn()*80,W=(cn()-0.5)*15,S=0.9+cn()*0.3;f+=`<text x="${$}" y="${m}" font-family="Arial, Helvetica, sans-serif" font-size="${X}" font-weight="bold" fill="rgb(${C},${E},${Q})" transform="rotate(${R}, ${$}, ${m}) skewX(${W}) scale(1, ${S})" style="font-style: ${cn()>0.5?"italic":"normal"}">${n[k]}</text>`}let h="";for(let k=0;k<3;k++){let $=10+cn()*(t-20),m=cn()*60+60,R=cn()*60+60,X=cn()*60+60;h+=`<line x1="0" y1="${$}" x2="${r}" y2="${$+(cn()-0.5)*20}" stroke="rgb(${m},${R},${X})" stroke-width="1.5"/>`}return`<svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${t}" viewBox="0 0 ${r} ${t}">
2
+ var v1=Object.create;var{getPrototypeOf:p1,defineProperty:Zc,getOwnPropertyNames:Ad,getOwnPropertyDescriptor:I1}=Object,Sd=Object.prototype.hasOwnProperty;var $r=(n,r,t)=>{t=n!=null?v1(p1(n)):{};let o=r||!n||!n.__esModule?Zc(t,"default",{value:n,enumerable:!0}):t;for(let c of Ad(n))if(!Sd.call(o,c))Zc(o,c,{get:()=>n[c],enumerable:!0});return o},Rd=new WeakMap,te=(n)=>{var r=Rd.get(n),t;if(r)return r;if(r=Zc({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function")Ad(n).map((o)=>!Sd.call(r,o)&&Zc(r,o,{get:()=>n[o],enumerable:!(t=I1(n,o))||t.enumerable}));return Rd.set(n,r),r},Z1=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var Zt=(n,r)=>{for(var t in r)Zc(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 Sn=import.meta.require;var ms,zd,ws="\x1B[0m",hs="\x1B[2m",Bd="\x1B[1m";var $s=d(()=>{ms={debug:0,info:1,warn:2,error:3,fatal:4},zd={debug:"\x1B[36m",info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m",fatal:"\x1B[35m"}});function yc(n,r=s2,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((c)=>yc(c,r,t));let o={};for(let[c,a]of Object.entries(n))if(r.some((i)=>c.toLowerCase().includes(i.toLowerCase()))&&typeof a==="string")o[c]="[REDACTED]";else if(typeof a==="object"&&a!==null)o[c]=yc(a,r,t);else o[c]=a;return o}function Ud(n=4){let r=Error().stack;if(!r)return{file:"unknown",line:0,function:"unknown"};let o=r.split(`
3
+ `)[n];if(!o)return{file:"unknown",line:0,function:"unknown"};let c=o.match(/at\s+(?:(.+?)\s+)?\(?(.+?):(\d+):(\d+)\)?/);if(!c)return{file:"unknown",line:0,function:"unknown"};let[,a,e,i]=c;return{file:e?e.split("/").pop()||e:"unknown",line:parseInt(i||"0",10),function:a?.replace(/^Object\./,"")||"anonymous"}}function ks(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 Rs(n,r){if(!n&&!r)return;if(!n)return r;if(!r)return n;return{...n,...r}}function As(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 Ss(n,r){let t=new WeakSet;return JSON.stringify(n,(o,c)=>{if(typeof c==="object"&&c!==null){if(t.has(c))return"[Circular]";t.add(c)}if(typeof c==="bigint")return c.toString();if(c instanceof Error)return{name:c.name,message:c.message,stack:c.stack};return c},r)}var s2;var oe=d(()=>{s2=["password","secret","token","apiKey","api_key","authorization","cookie","credit_card","creditCard","ssn","privateKey","private_key"]});class ce{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=Ss(n);this.getConsoleMethod(n.level)(r)}logPretty(n){let r=this.getConsoleMethod(n.level),t=this.colorize?zd[n.level]:"",o=this.colorize?ws:"",c=this.colorize?hs:"",a=this.colorize?Bd:"",e=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?`${c}(${n.correlationId.slice(0,8)})${o}`:"",f=n.duration!==void 0?`${c}${As(n.duration)}${o}`:"",b=`${c}${e}${o} ${t}${a}${i}${o} ${s}${l} ${n.message} ${f}`;if(r(b.trim()),n.caller)r(` ${c}at ${n.caller.function} (${n.caller.file}:${n.caller.line})${o}`);if(n.context&&Object.keys(n.context).length>0)r(` ${c}context:${o}`,n.context);if(n.error){if(r(` ${t}${n.error.name}: ${n.error.message}${o}`),n.error.stack){let g=n.error.stack.split(`
4
+ `).slice(1,4);for(let h of g)r(` ${c}${h.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 ae{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 ee{name="console-audit";enabled;constructor(n={}){this.enabled=n.enabled??!0}write(n){if(!this.enabled)return;let r="\x1B[35m",t=ws,o=hs;console.log(`${o}${n.timestamp}${t} ${r}AUDIT${t} [${n.operation}] ${n.entityName}${n.entityId?`:${n.entityId}`:""} ${o}by ${n.userId||"anonymous"}${t}`)}}var Es=d(()=>{$s();oe()});import{randomUUID as l2}from"crypto";class xr{config;transports;auditTransports;context;correlationId;static instance=null;constructor(n={},r={},t){this.config={...f2,...n},this.context=r,this.correlationId=t,this.transports=[new ce({colorize:this.config.colorize,prettyPrint:this.config.prettyPrint})],this.auditTransports=[new ee({enabled:this.config.prettyPrint})]}static getInstance(n){if(!xr.instance)xr.instance=new xr(n);return xr.instance}static resetInstance(){xr.instance=null}child(n,r){let t=new xr(this.config,Rs(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 ms[n]>=ms[this.config.level]}createEntry(n,r,t,o,c){let a={timestamp:new Date().toISOString(),level:n,message:r,service:this.config.service,correlationId:this.correlationId},e=Rs(this.context,t);if(e&&Object.keys(e).length>0)a.context=yc(e,this.config.redactKeys);if(this.config.includeCallerInfo)a.caller=Ud();if(o)a.error=ks(o);if(c!==void 0)a.duration=performance.now()-c;return a}log(n,r,t,o,c){if(!this.shouldLog(n))return;let a=this.createEntry(n,r,t,o,c);for(let e of this.transports)try{e.log(a)}catch(i){console.error(`Logger transport "${e.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 c=await r();return this.log("debug",`${n} completed`,t,void 0,o),c}catch(c){throw this.log("error",`${n} failed`,t,c,o),c}}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:l2(),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 f2,d2;var Ms=d(()=>{Es();$s();oe();f2={level:"info",service:"nucleus",environment:"development",redactKeys:[],colorize:!0,prettyPrint:!0,includeCallerInfo:!0,asyncBufferSize:100,flushIntervalMs:1000,auditEnabled:!1};d2=xr.getInstance()});var Vd=Z1((X6,Xd)=>{var Yd=12,H2=0,Hs=[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 z2(n){var r=n.indexOf("%");if(r===-1)return n;var t=n.length,o="",c=0,a=0,e=r,i=Yd;while(r>-1&&r<t){var s=Jd(n[r+1],4),l=Jd(n[r+2],0),f=s|l,b=Hs[f];if(i=Hs[256+i+b],a=a<<6|f&Hs[364+b],i===Yd)o+=n.slice(c,e),o+=a<=65535?String.fromCharCode(a):String.fromCharCode(55232+(a>>10),56320+(a&1023)),a=0,c=r+3,r=e=n.indexOf("%",c);else if(i===H2)return null;else{if(r+=3,r<t&&n.charCodeAt(r)===37)continue;return null}}return o+n.slice(c)}var B2={"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 Jd(n,r){var t=B2[n];return t===void 0?255:t<<r}Xd.exports=z2});var Qd=(n)=>{return n?.trim().toLowerCase()||"unknown"},Js=(n,r)=>{return n[r.toLowerCase()]??n[r]};import U2 from"crypto";var Pd=(n)=>{let r=JSON.stringify({userAgent:Qd(n.userAgent),ipAddress:n.ipAddress,extra:n.extra??{}});return{hash:U2.createHash("sha256").update(r).digest("base64url"),components:n}};var Xs=()=>{};var Gd=({savedFingerprint:n,requestIp:r,headers:t})=>{let o=Js(t,"user-agent"),c=Js(t,"x-forwarded-for")??r??void 0,a=Pd({userAgent:o,ipAddress:c}),e=[{field:"userAgent",saved:n.components.userAgent,received:o},{field:"ipAddress",saved:n.components.ipAddress,received:c}].find(({saved:i,received:s})=>i??(s??"")!=="");if(e)return{isValid:!1,reason:`${e.field} mismatch`,currentFingerprint:a};return{isValid:!0,currentFingerprint:a}};var Vs=d(()=>{Xs()});var qd=d(()=>{Xs();Vs()});import Nd from"crypto";var Cs=(n)=>{return(Buffer.isBuffer(n)?n.toString("base64"):Buffer.from(n).toString("base64")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")},Od=(n)=>{let r="=".repeat((4-n.length%4)%4),t=n.replace(/-/g,"+").replace(/_/g,"/")+r;return Buffer.from(t,"base64").toString("utf-8")},Ls=(n,r,t)=>{let o=t.replace("HS","sha"),c=Nd.createHmac(o,r);return c.update(n),Cs(c.digest())},Fd=(n,r,t,o)=>{let c=Ls(n,t,o);return Nd.timingSafeEqual(Buffer.from(r),Buffer.from(c))},jd=(n)=>{return Cs(JSON.stringify(n))},Kd=(n)=>{return Cs(JSON.stringify(n))},le=(n)=>{try{return JSON.parse(Od(n))}catch{return null}},fe=(n)=>{try{return JSON.parse(Od(n))}catch{return null}};var de=()=>{};var x2=(n)=>{let r=n.split(".");if(r.length!==3)return null;let[t,o,c]=r;if(!t||!o||!c)return null;let a=le(t),e=fe(o);if(!a||!e)return null;return{header:a,payload:e,signature:c}};var Td=d(()=>{de()});var ca=(n,r,t="HS256")=>{let o={alg:t,typ:"JWT"},c=Math.floor(Date.now()/1000),a={sub:n.subject,iat:c,exp:c+n.expiresInSeconds,iss:n.issuer,aud:n.audience,jti:n.jwtId,sessionId:n.sessionId,...n.customClaims},e=jd(o),i=Kd(a),s=`${e}.${i}`,l=Ls(s,r,t);return`${s}.${l}`};var vd=d(()=>{de()});var Bo=(n,r)=>{let t=n.split(".");if(t.length!==3)return{valid:!1,error:"Invalid token format: expected 3 parts"};let[o,c,a]=t;if(!o||!c||!a)return{valid:!1,error:"Invalid token format: missing parts"};let e=le(o);if(!e)return{valid:!1,error:"Invalid header: failed to decode"};if(e.typ!=="JWT")return{valid:!1,error:"Invalid header: typ must be JWT"};if(!["HS256","HS384","HS512"].includes(e.alg))return{valid:!1,error:`Unsupported algorithm: ${e.alg}`};let s=`${o}.${c}`;if(!Fd(s,a,r,e.alg))return{valid:!1,error:"Invalid signature"};let f=fe(c);if(!f)return{valid:!1,error:"Invalid payload: failed to decode"};let b=Math.floor(Date.now()/1000);if(f.exp&&f.exp<b)return{valid:!1,error:"Token expired"};if(f.iat&&f.iat>b+60)return{valid:!1,error:"Token issued in the future"};return{valid:!0,payload:f}};var pd=d(()=>{de()});var Id={};Zt(Id,{verifyJWT:()=>Bo,signJWT:()=>ca,decodeJWT:()=>x2});var Uo=d(()=>{Td();vd();pd()});var Zd=()=>{};var yd=d(()=>{Zd()});var nb="127.0.0.1",rb="3500",tb=4,Wt="statestore-redis",Qs="pubsub-rabbitmq",Ps="secretstore",aa="configstore-redis",ob="DAPR_HOST",cb="DAPR_HTTP_PORT",ab="DAPR_HTTP_ENDPOINT",eb="DAPR_GRPC_ENDPOINT",ib="DAPR_API_TOKEN",sb=30000,lb=1e4,fb=5000,Yt,be,Fr;var kt=d(()=>{Yt={CONNECTED:"connected",DISCONNECTED:"disconnected",CONNECTING:"connecting",ERROR:"error"},be={HEALTHY:"healthy",UNHEALTHY:"unhealthy"},Fr={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 jr,fc=(n,r)=>new jr(Fr.CONNECTION_ERROR,n,r),db=(n,r)=>new jr(Fr.TIMEOUT_ERROR,n,r),xo=(n,r)=>new jr(Fr.STATE_ERROR,n,r),Gs=(n,r)=>new jr(Fr.PUBSUB_ERROR,n,r),bb=(n,r)=>new jr(Fr.BINDING_ERROR,n,r),qs=(n,r)=>new jr(Fr.SECRET_ERROR,n,r),ge=(n,r)=>new jr(Fr.CONFIG_ERROR,n,r),gb=(n,r)=>new jr(Fr.INVOKE_ERROR,n,r),Ns=(n,r)=>new jr(Fr.CRYPTO_ERROR,n,r),Os=(n,r)=>new jr(Fr.LOCK_ERROR,n,r),ro=(n,r)=>new jr(Fr.WORKFLOW_ERROR,n,r),_n=async(n,r)=>{try{return await n()}catch(t){let o=t instanceof Error?t.message:String(t);throw r(o,t)}};var Wr=d(()=>{kt();jr=class jr 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 ub,ue=(n="info")=>{let r=ub[n],t=(o)=>(c,...a)=>{if(ub[o]<r)return;let e=new Date().toISOString(),i=a.length>0?` ${JSON.stringify(a)}`:"";console[o](`[${e}] [Dapr] [${o.toUpperCase()}] ${c}${i}`)};return{debug:t("debug"),info:t("info"),warn:t("warn"),error:t("error")}},ea=async(n,r,t="Operation timed out")=>{return Promise.race([n(),new Promise((o,c)=>{setTimeout(()=>{c(db(t))},r)})])},mn=(n,r,t)=>{let o=r.filter((c)=>n[c]===void 0);if(o.length>0)throw Error(`Missing required ${t} parameters: ${o.join(", ")}`)};var Kr=d(()=>{kt();Wr();ub={debug:0,info:1,warn:2,error:3}});class _e{client;logger;constructor(n,r){this.client=n,this.logger=r}async invoke(n,r,t,o={}){return mn({name:n,operation:r},["name","operation"],"binding invoke"),_n(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},(c,a)=>bb(`Failed to invoke binding ${n}: ${c}`,a))}}var Fs=d(()=>{Wr();Kr()});class me{client;logger;constructor(n,r){this.client=n,this.logger=r}async get(n,r=aa){if(mn({keys:n,storeName:r},["keys","storeName"],"config get"),n.length===0)return{};return _n(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)=>ge(`Failed to get configuration: ${t}`,o))}async subscribeWithKeys(n,r,t=aa){if(mn({keys:n,callback:r,storeName:t},["keys","callback","storeName"],"config subscribeWithKeys"),n.length===0)throw ge("At least one key must be provided for subscription");return _n(async()=>{this.logger.debug("Subscribing to configuration updates",{keys:n,storeName:t});let c=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(e){this.logger.error("Error in configuration subscription callback",e)}});return this.logger.debug("Configuration subscription established",{keys:n,storeName:t}),{stop:()=>{this.logger.debug("Stopping configuration subscription",{keys:n,storeName:t}),c.stop()}}},(o,c)=>ge(`Failed to subscribe to configuration updates: ${o}`,c))}async getValue(n,r=aa){return(await this.get([n],r))[n]?.value}async getValues(n,r=aa){let t=await this.get(n,r),o={};for(let c in t)if(t[c]?.value!==void 0)o[c]=t[c].value;return o}}var js=d(()=>{kt();Wr();Kr()});class we{client;logger;constructor(n,r){this.client=n,this.logger=r}async encrypt(n,r){return mn({data:n,componentName:r.componentName},["data","componentName"],"crypto encrypt"),_n(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,c={componentName:r.componentName};if(r.keyName)c.keyName=r.keyName;if(r.keyWrapAlgorithm)c.keyWrapAlgorithm=r.keyWrapAlgorithm;let a=await t.crypto.encrypt(o,c);return this.logger.debug("Data encrypted successfully",{componentName:r.componentName,inputSize:o.length,outputSize:a.length}),a},(t,o)=>Ns(`Failed to encrypt data: ${t}`,o))}async decrypt(n,r){return mn({data:n,componentName:r.componentName},["data","componentName"],"crypto decrypt"),_n(async()=>{this.logger.debug("Decrypting data",{componentName:r.componentName});let t=await this.client(),o=typeof n==="string"?Buffer.from(n):n,c={componentName:r.componentName};if(r.keyName)c.keyName=r.keyName;if(r.keyWrapAlgorithm)c.keyWrapAlgorithm=r.keyWrapAlgorithm;let a=await t.crypto.decrypt(o,c);return this.logger.debug("Data decrypted successfully",{componentName:r.componentName,inputSize:o.length,outputSize:a.length}),a},(t,o)=>Ns(`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 Ks=d(()=>{Wr();Kr()});import{HttpMethod as ia}from"@dapr/dapr";class he{client;logger;constructor(n,r){this.client=n,this.logger=r}async invoke(n,r,t=ia.POST,o,c={}){mn({appId:n,methodName:r,httpMethod:t},["appId","methodName","httpMethod"],"invoke service");let a=c.timeout||sb;return _n(async()=>{this.logger.debug("Invoking service",{appId:n,methodName:r,httpMethod:t,hasData:o!==void 0});let e=r;if(c.queryParams&&Object.keys(c.queryParams).length>0){let l=Object.entries(c.queryParams).map(([f,b])=>`${encodeURIComponent(f)}=${encodeURIComponent(b)}`).join("&");e=`${r}?${l}`}let i=await this.client(),s=await ea(()=>i.invoker.invoke(n,e,t,o,c.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},(e,i)=>gb(`Failed to invoke service ${n}.${r}: ${e}`,i))}async get(n,r,t={}){return this.invoke(n,r,ia.GET,void 0,t)}async post(n,r,t,o={}){return this.invoke(n,r,ia.POST,t,o)}async put(n,r,t,o={}){return this.invoke(n,r,ia.PUT,t,o)}async delete(n,r,t={}){return this.invoke(n,r,ia.DELETE,void 0,t)}}var Ts=d(()=>{kt();Wr();Kr()});class $e{client;logger;constructor(n,r){this.client=n,this.logger=r}async lock(n,r,t,o){return mn({storeName:n,resourceId:r,lockOwner:t,expiryInSeconds:o.expiryInSeconds},["storeName","resourceId","lockOwner","expiryInSeconds"],"lock"),_n(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}},(c,a)=>Os(`Failed to acquire lock for resource ${r}: ${c}`,a))}async unlock(n,r,t){return mn({storeName:n,resourceId:r,lockOwner:t},["storeName","resourceId","lockOwner"],"unlock"),_n(async()=>{this.logger.debug("Releasing lock",{storeName:n,resourceId:r,lockOwner:t});let c=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(c.status)}),{status:c.status}},(o,c)=>Os(`Failed to release lock for resource ${r}: ${o}`,c))}getLockStatusName(n){switch(n){case 0:return"Success";case 1:return"LockDoesNotExist";case 2:return"LockBelongsToOthers";default:return"InternalError"}}}var vs=d(()=>{Wr();Kr()});class ke{client;logger;constructor(n,r){this.client=n,this.logger=r}async publish(n,r,t={},o=Qs){return mn({topic:n,data:r,pubsubName:o},["topic","data","pubsubName"],"pubsub publish"),_n(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})},(c,a)=>Gs(`Failed to publish message to topic ${n}: ${c}`,a))}async publishBulk(n,r,t=Qs){if(mn({topic:n,messages:r,pubsubName:t},["topic","messages","pubsubName"],"pubsub publishBulk"),r.length===0)return{failedEntries:[]};return _n(async()=>{this.logger.debug("Publishing bulk messages to topic",{topic:n,pubsubName:t,messageCount:r.length});let o=await this.client(),c=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,c),e=a.failedMessages?.length||0;if(e>0)this.logger.warn("Some messages failed to publish",{topic:n,pubsubName:t,failedCount:e,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,c)=>Gs(`Failed to publish bulk messages to topic ${n}: ${o}`,c))}createBulkPublishMessage(n,r,t,o){return{entryId:r,event:n,contentType:t,metadata:o}}}var ps=d(()=>{kt();Wr();Kr()});class Re{client;logger;constructor(n,r){this.client=n,this.logger=r}async get(n,r={},t=Ps){return mn({key:n,storeName:t},["key","storeName"],"secret get"),_n(async()=>{this.logger.debug("Getting secret",{key:n,storeName:t});let o=await this.client(),c=r.metadata?JSON.stringify(r.metadata):void 0,a=await o.secret.get(t,n,c);return this.logger.debug("Secret retrieved",{key:n,storeName:t}),a},(o,c)=>qs(`Failed to get secret ${n}: ${o}`,c))}async getBulk(n={},r=Ps){return mn({storeName:r},["storeName"],"secret getBulk"),_n(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)=>qs(`Failed to get all secrets: ${t}`,o))}}var Is=d(()=>{kt();Wr();Kr()});class Ae{client;logger;constructor(n,r){this.client=n,this.logger=r}async save(n,r={},t=Wt){if(mn({stateItems:n,storeName:t},["stateItems","storeName"],"state save"),n.length===0)return;return _n(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,c)=>xo(`Failed to save state items: ${o}`,c))}async get(n,r=Wt){return mn({key:n,storeName:r},["key","storeName"],"state get"),_n(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)=>xo(`Failed to get state item ${n}: ${t}`,o))}async getBulk(n,r=Wt){if(mn({keys:n,storeName:r},["keys","storeName"],"state getBulk"),n.length===0)return{};return _n(async()=>{this.logger.debug("Getting bulk state items",{count:n.length,storeName:r});let o=await(await this.client()).state.getBulk(r,n),c={};return o.forEach((a)=>{if(a.data!==void 0)c[a.key]=a.data}),this.logger.debug("Bulk state items retrieved",{count:n.length,found:Object.keys(c).length,storeName:r}),c},(t,o)=>xo(`Failed to get bulk state items: ${t}`,o))}async delete(n,r,t,o=Wt){return mn({key:n,storeName:o},["key","storeName"],"state delete"),_n(async()=>{this.logger.debug("Deleting state item",{key:n,storeName:o});let c=await this.client(),a={};if(r)a.etag=r;if(t)a.metadata=t;await c.state.delete(o,n,a),this.logger.debug("State item deleted",{key:n,storeName:o})},(c,a)=>xo(`Failed to delete state item ${n}: ${c}`,a))}async transaction(n,r=Wt){if(mn({operations:n,storeName:r},["operations","storeName"],"state transaction"),n.length===0)return;return _n(async()=>{this.logger.debug("Executing state transaction",{operationCount:n.length,storeName:r});let t=await this.client(),o=n.map((c)=>({operation:c.operation,request:{key:c.request.key,value:c.request.value,etag:c.request.etag?{value:c.request.etag}:void 0,metadata:c.request.metadata}}));await t.state.transaction(r,o),this.logger.debug("State transaction executed successfully",{operationCount:n.length,storeName:r})},(t,o)=>xo(`Failed to execute state transaction: ${t}`,o))}async query(n,r=Wt){return mn({query:n,storeName:r},["query","storeName"],"state query"),_n(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((c)=>c.data)},(t,o)=>xo(`Failed to query state store: ${t}`,o))}async saveItem(n,r,t={},o=Wt){let c={key:n,value:r};return this.save([c],t,o)}async upsert(n,r,t={},o=Wt){return this.saveItem(n,r,t,o)}}var Zs=d(()=>{kt();Wr();Kr()});class Se{client;logger;constructor(n,r){this.client=n,this.logger=r}async start(n,r,t={}){return mn({workflowName:n},["workflowName"],"workflow start"),_n(async()=>{this.logger.debug("Starting workflow",{workflowName:n,instanceId:t.instanceId||"auto-generated",workflowComponent:t.workflowComponent});let c=await(await this.client()).workflow.start(n,r,t.instanceId);return this.logger.debug("Workflow started",{workflowName:n,instanceId:c}),c},(o,c)=>ro(`Failed to start workflow ${n}: ${o}`,c))}async get(n){return mn({instanceId:n},["instanceId"],"workflow get"),_n(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)=>ro(`Failed to get workflow instance ${n}: ${r}`,t))}async terminate(n){return mn({instanceId:n},["instanceId"],"workflow terminate"),_n(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)=>ro(`Failed to terminate workflow instance ${n}: ${r}`,t))}async pause(n){return mn({instanceId:n},["instanceId"],"workflow pause"),_n(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)=>ro(`Failed to pause workflow instance ${n}: ${r}`,t))}async resume(n){return mn({instanceId:n},["instanceId"],"workflow resume"),_n(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)=>ro(`Failed to resume workflow instance ${n}: ${r}`,t))}async purge(n){return mn({instanceId:n},["instanceId"],"workflow purge"),_n(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)=>ro(`Failed to purge workflow instance ${n}: ${r}`,t))}async raiseEvent(n,r,t){return mn({instanceId:n,eventName:r},["instanceId","eventName"],"workflow raiseEvent"),_n(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,c)=>ro(`Failed to raise event ${r} for workflow instance ${n}: ${o}`,c))}}var ys=d(()=>{Wr();Kr()});import{CommunicationProtocolEnum as nl,DaprClient as W2,HttpMethod as Y2,LogLevel as J2}from"@dapr/dapr";class rl{client=null;daprHost;daprPort;communicationProtocol;maxBodySizeMb;daprApiToken;logger;connectionStatus=Yt.DISCONNECTED;connectionPromise=null;constructor(n={}){this.daprHost=n.daprHost||process.env[ob]||nb,this.daprPort=n.daprPort||process.env[cb]||rb,this.communicationProtocol=n.communicationProtocol||nl.HTTP,this.maxBodySizeMb=n.maxBodySizeMb||tb,this.daprApiToken=n.daprApiToken||process.env[ib],this.logger=n.logger||ue(),this.logger.info("DaprConnectionManager initialized",{daprHost:this.daprHost,daprPort:this.daprPort,communicationProtocol:this.communicationProtocol})}async getClient(){if(!this.client||this.connectionStatus!==Yt.CONNECTED)await this.connect();if(!this.client)throw fc("Not connected to Dapr sidecar");return this.client}async connect(){if(this.connectionPromise)return this.connectionPromise;if(this.client&&this.connectionStatus===Yt.CONNECTED)return Promise.resolve();this.connectionStatus=Yt.CONNECTING,this.connectionPromise=this.establishConnection();try{await this.connectionPromise,this.connectionStatus=Yt.CONNECTED}catch(n){throw this.connectionStatus=Yt.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[ab]&&this.communicationProtocol===nl.HTTP||process.env[eb]&&this.communicationProtocol===nl.GRPC,r={communicationProtocol:this.communicationProtocol,maxBodySizeMb:this.maxBodySizeMb,logger:{level:J2.Warn}};if(!n)r.daprHost=this.daprHost,r.daprPort=this.daprPort;if(this.daprApiToken)r.daprApiToken=this.daprApiToken;await ea(async()=>{this.client=new W2(r)},lb,"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,fc(`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=Yt.DISCONNECTED,this.logger.info("Disconnected from Dapr sidecar")}catch(n){throw this.logger.error("Error during disconnect",n),fc("Failed to disconnect from Dapr sidecar",n)}}isConnected(){return this.client!==null&&this.connectionStatus===Yt.CONNECTED}getConnectionStatus(){return this.connectionStatus}async healthCheck(){if(!this.client)throw fc("Not connected to Dapr sidecar");try{return await ea(async()=>{if(!this.client)throw fc("Not connected to Dapr sidecar");let n=await this.client.invoker.invoke("healthz","healthz",Y2.GET);return{status:n.status===204?be.HEALTHY:be.UNHEALTHY,version:n.headers?.["dapr-version"]||"unknown"}},fb,"Health check timed out")}catch(n){return this.logger.error("Health check failed",n),{status:be.UNHEALTHY,version:"unknown"}}}getClientConfig(){return{daprHost:this.daprHost,daprPort:this.daprPort,communicationProtocol:this.communicationProtocol,maxBodySizeMb:this.maxBodySizeMb,hasApiToken:!!this.daprApiToken,connectionStatus:this.connectionStatus}}}var _b=d(()=>{kt();Wr();Kr()});var mb=()=>{};class Ee{connectionManager;logger;_state;_pubsub;_binding;_secret;_config;_invoke;_lock;_crypto;_workflow;constructor(n={}){this.logger=n.logger||ue(),this.connectionManager=new rl(n);let r=async()=>{return this.connectionManager.getClient()};this._state=new Ae(r,this.logger),this._pubsub=new ke(r,this.logger),this._binding=new _e(r,this.logger),this._secret=new Re(r,this.logger),this._config=new me(r,this.logger),this._invoke=new he(r,this.logger),this._lock=new $e(r,this.logger),this._crypto=new we(r,this.logger),this._workflow=new Se(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 $S;var tl=d(()=>{Fs();js();Ks();Ts();vs();ps();Is();Zs();ys();_b();Kr();Fs();js();Ks();Ts();vs();ps();Is();Zs();ys();kt();Wr();mb();$S=new Ee});import wb from"ioredis";class hb{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 $b{storeName;dapr;constructor(n){this.storeName=n;this.dapr=new Ee}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 qn{static instance=null;store;directClient=null;useDapr;constructor(n){if(qn.instance){this.store=qn.instance.store,this.directClient=qn.instance.directClient,this.useDapr=qn.instance.useDapr;return}if(!n)throw Error("Redis config must be provided for first initialization.");if(X2(n),this.useDapr=n.withDapr??!1,n.withDapr)this.store=new $b(n.stateStoreName??"statestore");else{let r=n.url?new wb(n.url):new wb({host:n.host,port:n.port});this.directClient=r,this.store=new hb(r)}qn.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 c=await this.exists(n);if(!c.success)return{success:!1,error:c.error};if(!c.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 c=await this.read(n);if(!c.success)return{success:!1,error:c.error};if(c.data!==null)return{success:!0,data:c.data};await new Promise((a)=>setTimeout(a,t))}return{success:!0,data:null}}}var X2=(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 Jt=d(()=>{tl()});var ol=d(()=>{Jt()});var cl=d(()=>{Jt();Uo()});var al=d(()=>{Jt();Uo();ol()});var Rb=d(()=>{al()});var Ab=d(()=>{ol();cl();al();Rb()});var Sb=86400,to=(n)=>`session:${n}`,Me=(n)=>JSON.stringify(n),Eb=(n)=>{if(!n)return null;if(typeof n==="object")return n;try{return JSON.parse(n)}catch{return null}};var De=async(n)=>{let r=new qn,t=to(n.sessionId),o=await r.remove(t);return o.success&&o.data>0};var He=d(()=>{Jt()});import V2 from"crypto";var Mb=async(n)=>{let r=new qn,t=n.sessionId??V2.randomUUID(),o=Date.now(),c=(n.expiresInSeconds??Sb)*1000,a=new Date(o).toISOString(),e={id:t,userId:n.userId,createdAt:a,expiresAt:new Date(o+c).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(to(t),Me(e));if(!i.success)return{success:!1,error:i.error};return{success:!0,session:e}};var el=d(()=>{Jt()});var Db=d(()=>{Uo();cl();He();el()});var Hb=d(()=>{Db()});var Wo=async(n)=>{let r=new qn,t=to(n.sessionId),o=await r.read(t);if(!o.success||!o.data)return null;let c=Eb(o.data);if(!c)return null;if(new Date(c.expiresAt).getTime()<=Date.now())return await De({sessionId:n.sessionId}),null;return c};var ze=d(()=>{Jt();He()});var zb=async(n)=>{let r=await Wo({sessionId:n.sessionId});if(!r)return{success:!1,error:"Session not found"};let t={...r,...n.updates,lastActiveAt:n.updates.lastActiveAt??new Date().toISOString()},c=await new qn().create(to(n.sessionId),Me(t));if(!c.success)return{success:!1,error:c.error};return{success:!0,session:t}},il=async(n)=>{return zb({sessionId:n,updates:{lastActiveAt:new Date().toISOString()}})};var Bb=d(()=>{Jt();ze()});var C2=async(n)=>{let r=Bo(n.jwtToken,n.jwtSecret);if(!r.valid)return{isValid:!1,reason:r.error};let t=await Wo({sessionId:n.sessionId});if(!t)return{isValid:!1,reason:"Session not found"};let o;if(n.savedFingerprint&&n.headers&&n.requestIp){let c={};for(let[e,i]of Object.entries(n.headers))if(i!==void 0)c[e]=i;let a=Gd({savedFingerprint:n.savedFingerprint,headers:c,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 Ub=d(()=>{Vs();Uo();ze()});var xb={};Zt(xb,{validateSession:()=>C2,updateSession:()=>zb,updateLastActiveAt:()=>il,readSession:()=>Wo,generateSession:()=>Mb,deleteSession:()=>De});var sl=d(()=>{He();el();ze();Bb();Ub()});var Wb=d(()=>{qd();Uo();yd();Ab();Hb();sl()});import{eq as L2}from"drizzle-orm";function sa(n,r,t,o,c,a){let e=[n.toLowerCase()];if(a)e.push("bulk");if(e.push(r),o){if(e.push("with"),e.push(o),c)e.push(c)}else if(t)e.push(t);return e.join(".")}function la(n,r,t){if(r)return`/${n}/bulk`;if(t)return`/${n}/:id`;return`/${n}`}function G2(n,r,t){let o=[],c=n.table_name,a=n.excluded_methods||[];for(let e of Q2){if(a.includes(e))continue;let i=e==="PUT"||e==="PATCH"||e==="DELETE";if(o.push({action:sa(e,c),description:`${e} access to ${c}`,path:la(c,!1,i&&e!=="DELETE"),method:e}),e==="GET"&&n.columns){for(let l of n.columns){if(r.skipColumns.includes(l.name))continue;o.push({action:sa(e,c,l.name),description:`${e} access to ${c}.${l.name}`,path:la(c),method:e})}let s=`${c}Relations`;if(t[s]){let l=t[s];if(l?.config?.referencedTable?._?.name){let f=l.config.referencedTable._.name;o.push({action:sa(e,c,void 0,f),description:`${e} access to ${c} with ${f}`,path:la(c),method:e})}}}if(e==="POST"||e==="PUT"||e==="PATCH"){if(n.columns)for(let s of n.columns){if(r.skipColumns.includes(s.name))continue;o.push({action:sa(e,c,s.name),description:`${e} access to ${c}.${s.name}`,path:la(c,!1,e!=="POST"),method:e})}}}for(let e of P2){if(a.includes(e))continue;o.push({action:sa(e,c,void 0,void 0,void 0,!0),description:`Bulk ${e} access to ${c}`,path:la(c,!0),method:e})}return o}async function Yb(n,r,t,o,c,a){let e=r.claims;if(!e)return a.warn("[Authorization] Claims table not found in schema"),{total:0,created:0,existing:0,claims:[]};let i=[];for(let g of o){if(c.skipTables.includes(g.table_name))continue;let h=G2(g,c,t);i.push(...h)}let s=i.filter((g,h,k)=>h===k.findIndex(($)=>$.action===g.action)),l=0,f=0,b=[];for(let g of s)try{if((await n.select().from(e).where(L2(e.action,g.action)).limit(1)).length===0)await n.insert(e).values(g),l++,b.push(g.action),a.debug(`[Authorization] Created claim: ${g.action}`);else f++}catch(h){a.error(`[Authorization] Failed to create claim: ${g.action}`,h)}return a.info(`[Authorization] Claims seeded: ${l} created, ${f} existing, ${s.length} total`),{total:s.length,created:l,existing:f,claims:b}}var Q2,P2;var Jb=d(()=>{Q2=["GET","POST","PUT","PATCH","DELETE"],P2=["POST","PUT","DELETE"]});var{password:q2}=globalThis.Bun;import{eq as ll}from"drizzle-orm";async function Xb(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:c,users:a,userRoles:e}=r;if(!c||!a||!e)return o.error("[Authorization] Required tables not found for godmin setup"),{success:!1};try{let i,s=await n.select().from(c).where(ll(c.name,fl)).limit(1);if(s.length===0){let[h]=await n.insert(c).values({name:fl,description:"God mode administrator - bypasses all authorization checks"}).returning();i=h.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(ll(a.email,t.godminEmail)).limit(1);if(f.length===0){let h=await q2.hash(t.godminPassword,{algorithm:"bcrypt",cost:10}),[k]=await n.insert(a).values({email:t.godminEmail,password:h,verifiedAt:new Date,isActive:!0}).returning();l=k.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(e).where(ll(e.userId,l)).limit(1)).some((h)=>h.roleId===i))await n.insert(e).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 Vb(n){return n===fl}var fl="godmin";var dl=()=>{};import{eq as bl,inArray as N2}from"drizzle-orm";function O2(n){return n.startsWith(Qb)}function F2(n){return{field:n.slice(Qb.length)}}function Cb(n){if(!n)return{};let r=new URLSearchParams(n),t={};for(let[o,c]of r.entries())if(O2(c))t[o]=F2(c);else t[o]=c;return t}function Lb(n,r,t){let o={};for(let[c,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 e=a.field,i=e.replace(/_([a-z])/g,(l,f)=>f.toUpperCase()),s;if(e in r)s=r[e];else if(i in r)s=r[i];else{t.warn(`[Authorization] Cannot resolve self:${e} - field not found in userData`);continue}o[c]=s,t.debug(`[Authorization] Resolved self:${e} -> ${s}`)}else o[c]=a;return o}function gl(n,r,t,o){let c=[n.toLowerCase(),r];if(o)c.push("with",o);else if(t)c.push(t);return c.join(".")}function ul(n,r){if(n===r)return!0;let t=n.split("."),o=r.split(".");if(t.length>o.length)return!1;for(let c=0;c<t.length;c++)if(t[c]!==o[c])return!1;return!0}async function _l(n){let{userId:r,method:t,entity:o,requestedFields:c,requestedRelations:a,db:e,schemaTables:i,logger:s,userData:l}=n,f=i.roles,b=i.userRoles,g=i.roleClaims,h=i.claims;if(!f||!b||!g||!h)return s.error("[Authorization] Required tables not found"),{authorized:!1,reason:"Authorization tables not configured"};try{let k=b,$=f,m=await e.select({roleId:k.roleId,roleName:$.name}).from(b).innerJoin(f,bl(k.roleId,$.id)).where(bl(k.userId,r));if(m.length===0)return{authorized:!1,reason:"User has no roles assigned"};if(m.some((J)=>Vb(J.roleName)))return s.debug(`[Authorization] User ${r} has godmin role, bypassing checks`),{authorized:!0};let X=m.map((J)=>J.roleId),C=g,E=h,Q=await e.select({claimAction:E.action,scope:C.scope}).from(g).innerJoin(h,bl(C.claimId,E.id)).where(N2(C.roleId,X));if(Q.length===0)return{authorized:!1,reason:"User roles have no claims assigned"};let W=gl(t,o);if(!Q.some((J)=>ul(J.claimAction,W)))return{authorized:!1,reason:`No access to ${t} ${o}`};let z=[],w=[],u={},B=!1;for(let J of Q)if(J.claimAction===W){B=!0;let I=Cb(J.scope),Y=Lb(I,l,s);Object.assign(u,Y)}if(B)return{authorized:!0,scopeFilters:Object.keys(u).length>0?u:void 0};if(c)for(let J of c){let F=gl(t,o,J);if(Q.some((Y)=>ul(Y.claimAction,F)))z.push(J)}if(a)for(let J of a){let F=gl(t,o,void 0,J);if(Q.some((Y)=>ul(Y.claimAction,F)))w.push(J)}for(let J of Q){let F=Cb(J.scope),I=Lb(F,l,s);Object.assign(u,I)}if(!(z.length>0||w.length>0)&&(c?.length||a?.length))return{authorized:!1,reason:"No access to requested fields or relations"};return{authorized:!0,allowedFields:z.length>0?z:void 0,allowedRelations:w.length>0?w:void 0,scopeFilters:Object.keys(u).length>0?u:void 0}}catch(k){return s.error("[Authorization] Check failed",k),{authorized:!1,reason:"Authorization check failed"}}}function Be(n,r){if(!r||r.length===0)return n;let o=[...new Set([...["id"],...r])],c=(a)=>{let e={};for(let i of o)if(i in a)e[i]=a[i];return e};if(Array.isArray(n))return n.map(c);return c(n)}function Pb(n,r){if(!r)return n;let t=(o)=>{let c={...o};for(let a of Object.keys(c))if(typeof c[a]==="object"&&c[a]!==null&&!r.includes(a))delete c[a];return c};if(Array.isArray(n))return n.map(t);return t(n)}var Qb="self:";var Gb=d(()=>{dl()});var qb;var Nb=d(()=>{qb={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 ml=d(()=>{Jb();dl();Gb();Nb()});function j2(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 K2(){let n=new Uint8Array(24);return crypto.getRandomValues(n),Array.from(n).map((r)=>r.toString(16).padStart(2,"0")).join("")}function Ob(n){let r=new Bun.CryptoHasher("sha256");return r.update(n),r.digest("hex")}function T2(n,r){if(n.length!==r.length){let e=new Uint8Array(32);return crypto.getRandomValues(e),!1}let t=new TextEncoder,o=t.encode(n),c=t.encode(r),a=0;for(let e=0;e<o.length;e++)a|=(o[e]??0)^(c[e]??0);return a===0}function Yo(n,r){let t=r-n+1,o=Math.ceil(Math.log2(t)/8)||1,c=256**o,a=c-c%t,e,i=new Uint8Array(o);do crypto.getRandomValues(i),e=i.reduce((s,l,f)=>s+l*256**f,0);while(e>=a);return n+e%t}function Fb(n){let r=wl[n],{min:t,max:o}=r.mathRange,c=["+","-","\xD7"],a=c[Yo(0,c.length-1)],e=Yo(t,o),i=Yo(t,o),s;switch(a){case"+":s=e+i;break;case"-":if(e<i)[e,i]=[i,e];s=e-i;break;case"\xD7":e=Yo(1,12),i=Yo(1,12),s=e*i;break;default:s=e+i}return{question:`${e} ${a} ${i} = ?`,answer:s.toString()}}function jb(n){let r=wl[n],t="";for(let o=0;o<r.textLength;o++)t+="ABCDEFGHJKLMNPQRSTUVWXYZ23456789".charAt(Yo(0,31));return{question:t,answer:t}}function v2(n){let r=jb(n),t=200,o=60,c=p2(r.answer,200,60),a=`data:image/svg+xml;base64,${Buffer.from(c).toString("base64")}`;return{question:"Enter the text shown in the image",answer:r.answer,imageData:a}}function cn(){let n=new Uint32Array(1);return crypto.getRandomValues(n),(n[0]??0)/4294967295}function p2(n,r,t){let o=240+cn()*15,c=240+cn()*15,a=240+cn()*15,e=`rgb(${o}, ${c}, ${a})`,i="";for(let k=0;k<12;k++){let $=cn()*r,m=cn()*t,R=cn()*r,X=cn()*t,C=cn()*100+100,E=cn()*100+100,Q=cn()*100+100,W=1+cn()*2;i+=`<line x1="${$}" y1="${m}" x2="${R}" y2="${X}" stroke="rgb(${C},${E},${Q})" stroke-width="${W}"/>`}let s="";for(let k=0;k<4;k++){let $=cn()*r,m=cn()*t,R=cn()*r,X=cn()*t,C=cn()*r,E=cn()*t,Q=cn()*r,W=cn()*t,S=cn()*80+80,z=cn()*80+80,w=cn()*80+80;s+=`<path d="M${$},${m} C${R},${X} ${C},${E} ${Q},${W}" stroke="rgb(${S},${z},${w})" stroke-width="2" fill="none"/>`}let l="";for(let k=0;k<80;k++){let $=cn()*r,m=cn()*t,R=cn()*150+50,X=cn()*150+50,C=cn()*150+50,E=cn()*3+1;l+=`<circle cx="${$}" cy="${m}" r="${E}" fill="rgb(${R},${X},${C})"/>`}let f="",b=r/(n.length+2),g=b;for(let k=0;k<n.length;k++){let $=g+k*b+(cn()-0.5)*15,m=t/2+8+(cn()-0.5)*12,R=(cn()-0.5)*40,X=22+cn()*10,C=cn()*80,E=cn()*80,Q=cn()*80,W=(cn()-0.5)*15,S=0.9+cn()*0.3;f+=`<text x="${$}" y="${m}" font-family="Arial, Helvetica, sans-serif" font-size="${X}" font-weight="bold" fill="rgb(${C},${E},${Q})" transform="rotate(${R}, ${$}, ${m}) skewX(${W}) scale(1, ${S})" style="font-style: ${cn()>0.5?"italic":"normal"}">${n[k]}</text>`}let h="";for(let k=0;k<3;k++){let $=10+cn()*(t-20),m=cn()*60+60,R=cn()*60+60,X=cn()*60+60;h+=`<line x1="0" y1="${$}" x2="${r}" y2="${$+(cn()-0.5)*20}" stroke="rgb(${m},${R},${X})" 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"/>
@@ -20,7 +20,7 @@ var v1=Object.create;var{getPrototypeOf:p1,defineProperty:Zc,getOwnPropertyNames
20
20
  `)&&o.includes("\\n"))o=o.replace(/\\n/g,`
21
21
  `);let c=new Tb.auth.JWT({email:t.client_email,key:o,scopes:["https://www.googleapis.com/auth/gmail.send"],subject:this.fromEmail});this.gmail=Tb.gmail({version:"v1",auth:c}),this.initialized=!0,this.logger.info("[GmailService] Initialized",{serviceAccount:t.client_email,fromEmail:this.fromEmail})}catch(r){this.logger.error("[GmailService] Initialization failed",{error:r})}}createEmailMessage(n){let{to:r,subject:t,html:o,text:c,from:a,replyTo:e,attachments:i}=n,s=Array.isArray(r)?r.join(", "):r,l=a||`${this.fromName} <${this.fromEmail}>`,f=this.encodeHeaderValue(t);if(!i||i.length===0){let h=[`From: ${l}`,`To: ${s}`,`Subject: ${f}`,"MIME-Version: 1.0","Content-Type: text/html; charset=utf-8"];if(e)h.push(`Reply-To: ${e}`);return h.push("",o||c||""),Buffer.from(h.join(`
22
22
  `)).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}let b=`----Nucleus_${Date.now()}_${Math.random().toString(36).substring(7)}`,g=[`From: ${l}`,`To: ${s}`,`Subject: ${f}`,"MIME-Version: 1.0",`Content-Type: multipart/mixed; boundary="${b}"`];if(e)g.push(`Reply-To: ${e}`);g.push("",`--${b}`),g.push("Content-Type: text/html; charset=utf-8","Content-Transfer-Encoding: base64","",Buffer.from(o||c||"").toString("base64"),"");for(let h of i)g.push(`--${b}`,`Content-Type: ${h.contentType}`,`Content-Disposition: attachment; filename="${h.filename}"`,"Content-Transfer-Encoding: base64","",h.content.toString("base64"),"");return g.push(`--${b}--`),Buffer.from(g.join(`\r
23
- `)).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async sendEmail(n){if(!this.gmail)return this.logger.error("[GmailService] Not initialized"),{success:!1,error:"Gmail service not initialized"};try{let r=this.createEmailMessage(n);return await this.gmail.users.messages.send({userId:"me",requestBody:{raw:r}}),this.logger.info("[GmailService] Email sent",{to:n.to,subject:n.subject}),{success:!0}}catch(r){let t=r instanceof Error?r.message:"Unknown error";return this.logger.error("[GmailService] Send failed",{error:t,to:n.to}),{success:!1,error:t}}}emailWrapper(n,r){return`<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><meta name="color-scheme" content="light dark"><meta name="supported-color-schemes" content="light dark"><title>${r}</title><style type="text/css">:root{color-scheme:light dark;supported-color-schemes:light dark;}@media(prefers-color-scheme:dark){.em-bg{background-color:#18181b!important;}.em-card{background-color:#27272a!important;border-color:#3f3f46!important;}.em-h{color:#fafafa!important;}.em-t{color:#d4d4d8!important;}.em-m{color:#a1a1aa!important;}.em-hr{background-color:#3f3f46!important;}.em-btn{background-color:#fafafa!important;}.em-btn-text{color:#18181b!important;}.em-link{color:#60a5fa!important;}.em-lb{background-color:#3f3f46!important;border-color:#52525b!important;}.em-lb-t{color:#a1a1aa!important;}.em-sn{background-color:#3f3f46!important;border-color:#52525b!important;color:#a1a1aa!important;}}</style></head><body style="margin:0;padding:0;background-color:#f4f4f5;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;-webkit-font-smoothing:antialiased;"><table role="presentation" class="em-bg" width="100%" cellpadding="0" cellspacing="0" style="background-color:#f4f4f5;"><tr><td align="center" style="padding:40px 16px;"><table role="presentation" width="480" cellpadding="0" cellspacing="0" style="max-width:480px;width:100%;"><tr><td align="center" style="padding-bottom:24px;"><span class="em-m" style="font-size:14px;font-weight:600;color:#71717a;letter-spacing:-0.2px;">${r}</span></td></tr><tr><td class="em-card" style="background-color:#ffffff;border:1px solid #e4e4e7;border-radius:12px;overflow:hidden;">${n}</td></tr><tr><td align="center" style="padding-top:24px;"><p class="em-m" style="margin:0;font-size:12px;color:#a1a1aa;line-height:1.6;">This email was sent by <strong>${r}</strong>.<br>Please do not reply to this email.</p></td></tr></table></td></tr></table></body></html>`}emailButton(n,r){return`<table role="presentation" cellpadding="0" cellspacing="0" width="100%"><tr><td align="center" style="padding:28px 32px;"><table role="presentation" cellpadding="0" cellspacing="0"><tr><td class="em-btn" align="center" style="background-color:#18181b;border-radius:8px;"><a class="em-btn-text" href="${n}" target="_blank" style="display:inline-block;padding:12px 32px;font-size:14px;font-weight:600;color:#fafafa;text-decoration:none;letter-spacing:-0.1px;">${r}</a></td></tr></table></td></tr></table>`}emailDivider(){return'<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:0 32px;"><div class="em-hr" style="height:1px;background-color:#e4e4e7;"></div></td></tr></table>'}emailLinkFallback(n,r){let t=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:4px 32px 32px 32px;"><p class="em-m" style="margin:0 0 8px 0;font-size:11px;font-weight:600;color:#a1a1aa;text-transform:uppercase;letter-spacing:0.5px;">Or copy this link</p><table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td class="em-lb" style="background-color:#f4f4f5;border:1px solid #e4e4e7;border-radius:8px;padding:12px 14px;"><a class="em-link" href="${n}" style="font-size:12px;color:#2563eb;word-break:break-all;line-height:1.5;text-decoration:none;">${n}</a></td></tr></table>`;if(r)t+=`<p class="em-m" style="margin:16px 0 0 0;font-size:12px;color:#a1a1aa;">${r}</p>`;return t+="</td></tr></table>",t}async sendWelcomeEmail(n,r,t="Vorion"){let o=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">Welcome to ${t}</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">Your account has been created successfully</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:24px 32px 32px 32px;"><p class="em-t" style="margin:0 0 16px 0;font-size:15px;color:#3f3f46;line-height:1.7;">Hello <strong class="em-h" style="color:#18181b;">${r}</strong>,</p><p class="em-t" style="margin:0;font-size:15px;color:#3f3f46;line-height:1.7;">Welcome aboard! You now have full access to <strong>${t}</strong>. We're excited to have you.</p></td></tr></table>`;return this.sendEmail({to:n,subject:`Welcome to ${t}`,html:this.emailWrapper(o,t)})}async sendVerificationEmail(n,r,t,o="Vorion"){let c=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">Verify your email</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">Confirm your address to get started</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:24px 32px 0 32px;"><p class="em-t" style="margin:0 0 4px 0;font-size:15px;color:#3f3f46;line-height:1.7;">Hello <strong class="em-h" style="color:#18181b;">${r}</strong>,</p><p class="em-t" style="margin:0;font-size:15px;color:#3f3f46;line-height:1.7;">Please verify your email address by clicking the button below.</p></td></tr><tr><td>${this.emailButton(t,"Verify Email Address")}</td></tr></table>${this.emailDivider()}${this.emailLinkFallback(t)}`;return this.sendEmail({to:n,subject:`Verify your email \u2014 ${o}`,html:this.emailWrapper(c,o)})}async sendPasswordResetEmail(n,r,t,o="Vorion"){let c=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">Reset your password</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">We received a request to reset your password</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:24px 32px 0 32px;"><p class="em-t" style="margin:0 0 4px 0;font-size:15px;color:#3f3f46;line-height:1.7;">Hello <strong class="em-h" style="color:#18181b;">${r}</strong>,</p><p class="em-t" style="margin:0;font-size:15px;color:#3f3f46;line-height:1.7;">Click the button below to choose a new password. If you didn't make this request, you can safely ignore this email.</p></td></tr><tr><td>${this.emailButton(t,"Reset Password")}</td></tr></table>${this.emailDivider()}${this.emailLinkFallback(t,"This link expires in 1 hour and can only be used once.")}`;return this.sendEmail({to:n,subject:`Reset your password \u2014 ${o}`,html:this.emailWrapper(c,o)})}async sendMagicLinkEmail(n,r,t="Vorion"){let o=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">Sign in to ${t}</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">No password needed \u2014 just click to sign in</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:24px 32px 0 32px;"><p class="em-t" style="margin:0;font-size:15px;color:#3f3f46;line-height:1.7;">Click the button below to securely sign in to your <strong class="em-h" style="color:#18181b;">${t}</strong> account.</p></td></tr><tr><td>${this.emailButton(r,"Sign In")}</td></tr></table>${this.emailDivider()}${this.emailLinkFallback(r,"This link expires in 15 minutes and can only be used once.")}`;return this.sendEmail({to:n,subject:`Sign in to ${t}`,html:this.emailWrapper(o,t)})}async sendAlertEmail(n,r,t){return this.sendEmail({to:n,subject:r,html:t})}async sendInvitationEmail(n,r,t="Vorion"){let c=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">You're Invited</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">Join <strong class="em-h" style="color:#18181b;">${t}</strong> and start collaborating</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:0 32px 8px 32px;"><table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:8px 0;"><table role="presentation" cellpadding="0" cellspacing="0"><tr><td class="em-sn" style="width:28px;height:28px;background-color:#f4f4f5;border:1px solid #e4e4e7;border-radius:50%;text-align:center;line-height:28px;font-size:12px;font-weight:600;color:#71717a;">1</td><td class="em-t" style="padding-left:14px;font-size:14px;color:#52525b;">Click the button below</td></tr></table></td></tr><tr><td style="padding:8px 0;"><table role="presentation" cellpadding="0" cellspacing="0"><tr><td class="em-sn" style="width:28px;height:28px;background-color:#f4f4f5;border:1px solid #e4e4e7;border-radius:50%;text-align:center;line-height:28px;font-size:12px;font-weight:600;color:#71717a;">2</td><td class="em-t" style="padding-left:14px;font-size:14px;color:#52525b;">Choose a secure password</td></tr></table></td></tr><tr><td style="padding:8px 0;"><table role="presentation" cellpadding="0" cellspacing="0"><tr><td class="em-sn" style="width:28px;height:28px;background-color:#f4f4f5;border:1px solid #e4e4e7;border-radius:50%;text-align:center;line-height:28px;font-size:12px;font-weight:600;color:#71717a;">3</td><td class="em-t" style="padding-left:14px;font-size:14px;color:#52525b;">Start collaborating</td></tr></table></td></tr></table></td></tr></table>${this.emailButton(r,"Accept Invitation")}${this.emailDivider()}${this.emailLinkFallback(r,"This invitation expires in 7 days.")}`;return this.sendEmail({to:n,subject:`You're invited to join ${t}`,html:this.emailWrapper(c,t)})}}var vb=()=>{};var pb=d(()=>{Ms();Es();oe()});class Be{logger;gmail;config;appId;state={lastAlertTime:{},activeAlerts:new Map};cooldownMs;constructor(n){this.logger=n.logger,this.gmail=n.gmail,this.config=n.config,this.appId=n.appId,this.cooldownMs=this.parseTimeToMs(n.config.alerts?.cooldown||"5m")}parseTimeToMs(n){let r=n.match(/^(\d+)(ms|s|m|h|d)$/);if(!r||!r[1]||!r[2])return 300000;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 300000}}async checkAndAlert(n){if(!this.config.alerts?.enabled)return[];let r=[],t=this.config.alerts.thresholds||{};if(n.system){if(t.cpuPercent&&n.system.cpu.usage>t.cpuPercent){let o=this.createAlert("cpu_high",n.system.cpu.usage,t.cpuPercent,`CPU usage is ${n.system.cpu.usage}% (threshold: ${t.cpuPercent}%)`);if(o)r.push(o)}if(t.memoryPercent&&n.system.memory.usagePercent>t.memoryPercent){let o=this.createAlert("memory_high",n.system.memory.usagePercent,t.memoryPercent,`Memory usage is ${n.system.memory.usagePercent}% (threshold: ${t.memoryPercent}%)`);if(o)r.push(o)}if(t.diskPercent&&n.system.disk.usagePercent>t.diskPercent){let o=this.createAlert("disk_high",n.system.disk.usagePercent,t.diskPercent,`Disk usage is ${n.system.disk.usagePercent}% (threshold: ${t.diskPercent}%)`);if(o)r.push(o)}}if(n.application){if(t.errorRatePercent&&n.application.errors.rate>t.errorRatePercent){let o=this.createAlert("error_rate_high",n.application.errors.rate,t.errorRatePercent,`Error rate is ${n.application.errors.rate}% (threshold: ${t.errorRatePercent}%)`);if(o)r.push(o)}if(t.responseTimeMs&&n.application.responseTime.p95>t.responseTimeMs){let o=this.createAlert("response_time_high",n.application.responseTime.p95,t.responseTimeMs,`P95 response time is ${n.application.responseTime.p95}ms (threshold: ${t.responseTimeMs}ms)`);if(o)r.push(o)}if(t.rateLimitBlocksPerMinute&&n.application.rateLimits.blockedPerMinute>t.rateLimitBlocksPerMinute){let o=this.createAlert("rate_limit_blocks_high",n.application.rateLimits.blockedPerMinute,t.rateLimitBlocksPerMinute,`Rate limit blocks: ${n.application.rateLimits.blockedPerMinute}/min (threshold: ${t.rateLimitBlocksPerMinute}/min)`);if(o)r.push(o)}}if(r.length>0)await this.sendAlerts(r);return r}createAlert(n,r,t,o){let c=Date.now(),a=this.state.lastAlertTime[n]||0;if(c-a<this.cooldownMs)return null;let e=this.getSeverity(n,r,t),i={id:`${n}-${c}`,type:n,severity:e,message:o,value:r,threshold:t,timestamp:c,acknowledged:!1};return this.state.lastAlertTime[n]=c,this.state.activeAlerts.set(n,i),this.logger.warn(`[Alert] ${e.toUpperCase()}: ${o}`),i}getSeverity(n,r,t){return r/t>1.5?"critical":"warning"}async sendAlerts(n){if(!this.config.alerts?.email?.enabled)return;if(!this.gmail||!this.gmail.isAvailable())return;let r=this.config.alerts.email.recipients||[];if(r.length===0)return;let o=n.filter((a)=>a.severity==="critical").length>0?`\uD83D\uDEA8 CRITICAL Alert - ${this.appId}`:`\u26A0\uFE0F Warning Alert - ${this.appId}`,c=this.buildEmailHtml(n);for(let a of r)try{await this.gmail.sendAlertEmail(a,o,c),this.logger.info(`[Alert] Email sent to ${a}`)}catch(e){this.logger.error(`[Alert] Failed to send email to ${a}: ${e}`)}}buildEmailHtml(n){let r=n.map((t)=>`
23
+ `)).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async sendEmail(n){if(!this.gmail)return this.logger.error("[GmailService] Not initialized"),{success:!1,error:"Gmail service not initialized"};try{let r=this.createEmailMessage(n);return await this.gmail.users.messages.send({userId:"me",requestBody:{raw:r}}),this.logger.info("[GmailService] Email sent",{to:n.to,subject:n.subject}),{success:!0}}catch(r){let t=r instanceof Error?r.message:"Unknown error";return this.logger.error("[GmailService] Send failed",{error:t,to:n.to}),{success:!1,error:t}}}emailWrapper(n,r){return`<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><meta name="color-scheme" content="light dark"><meta name="supported-color-schemes" content="light dark"><title>${r}</title><style type="text/css">:root{color-scheme:light dark;supported-color-schemes:light dark;}@media(prefers-color-scheme:dark){.em-bg{background-color:#18181b!important;}.em-card{background-color:#27272a!important;border-color:#3f3f46!important;}.em-h{color:#fafafa!important;}.em-t{color:#d4d4d8!important;}.em-m{color:#a1a1aa!important;}.em-hr{background-color:#3f3f46!important;}.em-btn{background-color:#fafafa!important;}.em-btn-text{color:#18181b!important;}.em-link{color:#60a5fa!important;}.em-lb{background-color:#3f3f46!important;border-color:#52525b!important;}.em-lb-t{color:#a1a1aa!important;}.em-sn{background-color:#3f3f46!important;border-color:#52525b!important;color:#a1a1aa!important;}}</style></head><body style="margin:0;padding:0;background-color:#f4f4f5;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;-webkit-font-smoothing:antialiased;"><table role="presentation" class="em-bg" width="100%" cellpadding="0" cellspacing="0" style="background-color:#f4f4f5;"><tr><td align="center" style="padding:40px 16px;"><table role="presentation" width="480" cellpadding="0" cellspacing="0" style="max-width:480px;width:100%;"><tr><td align="center" style="padding-bottom:24px;"><span class="em-m" style="font-size:14px;font-weight:600;color:#71717a;letter-spacing:-0.2px;">${r}</span></td></tr><tr><td class="em-card" style="background-color:#ffffff;border:1px solid #e4e4e7;border-radius:12px;overflow:hidden;">${n}</td></tr><tr><td align="center" style="padding-top:24px;"><p class="em-m" style="margin:0;font-size:12px;color:#a1a1aa;line-height:1.6;">This email was sent by <strong>${r}</strong>.<br>Please do not reply to this email.</p></td></tr></table></td></tr></table></body></html>`}emailButton(n,r){return`<table role="presentation" cellpadding="0" cellspacing="0" width="100%"><tr><td align="center" style="padding:28px 32px;"><table role="presentation" cellpadding="0" cellspacing="0"><tr><td class="em-btn" align="center" style="background-color:#18181b;border-radius:8px;"><a class="em-btn-text" href="${n}" target="_blank" style="display:inline-block;padding:12px 32px;font-size:14px;font-weight:600;color:#fafafa;text-decoration:none;letter-spacing:-0.1px;">${r}</a></td></tr></table></td></tr></table>`}emailDivider(){return'<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:0 32px;"><div class="em-hr" style="height:1px;background-color:#e4e4e7;"></div></td></tr></table>'}emailLinkFallback(n,r){let t=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:4px 32px 32px 32px;"><p class="em-m" style="margin:0 0 8px 0;font-size:11px;font-weight:600;color:#a1a1aa;text-transform:uppercase;letter-spacing:0.5px;">Or copy this link</p><table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td class="em-lb" style="background-color:#f4f4f5;border:1px solid #e4e4e7;border-radius:8px;padding:12px 14px;"><a class="em-link" href="${n}" style="font-size:12px;color:#2563eb;word-break:break-all;line-height:1.5;text-decoration:none;">${n}</a></td></tr></table>`;if(r)t+=`<p class="em-m" style="margin:16px 0 0 0;font-size:12px;color:#a1a1aa;">${r}</p>`;return t+="</td></tr></table>",t}async sendWelcomeEmail(n,r,t="Vorion"){let o=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">Welcome to ${t}</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">Your account has been created successfully</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:24px 32px 32px 32px;"><p class="em-t" style="margin:0 0 16px 0;font-size:15px;color:#3f3f46;line-height:1.7;">Hello <strong class="em-h" style="color:#18181b;">${r}</strong>,</p><p class="em-t" style="margin:0;font-size:15px;color:#3f3f46;line-height:1.7;">Welcome aboard! You now have full access to <strong>${t}</strong>. We're excited to have you.</p></td></tr></table>`;return this.sendEmail({to:n,subject:`Welcome to ${t}`,html:this.emailWrapper(o,t)})}async sendVerificationEmail(n,r,t,o="Vorion"){let c=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">Verify your email</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">Confirm your address to get started</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:24px 32px 0 32px;"><p class="em-t" style="margin:0 0 4px 0;font-size:15px;color:#3f3f46;line-height:1.7;">Hello <strong class="em-h" style="color:#18181b;">${r}</strong>,</p><p class="em-t" style="margin:0;font-size:15px;color:#3f3f46;line-height:1.7;">Please verify your email address by clicking the button below.</p></td></tr><tr><td>${this.emailButton(t,"Verify Email Address")}</td></tr></table>${this.emailDivider()}${this.emailLinkFallback(t)}`;return this.sendEmail({to:n,subject:`Verify your email \u2014 ${o}`,html:this.emailWrapper(c,o)})}async sendPasswordResetEmail(n,r,t,o="Vorion"){let c=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">Reset your password</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">We received a request to reset your password</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:24px 32px 0 32px;"><p class="em-t" style="margin:0 0 4px 0;font-size:15px;color:#3f3f46;line-height:1.7;">Hello <strong class="em-h" style="color:#18181b;">${r}</strong>,</p><p class="em-t" style="margin:0;font-size:15px;color:#3f3f46;line-height:1.7;">Click the button below to choose a new password. If you didn't make this request, you can safely ignore this email.</p></td></tr><tr><td>${this.emailButton(t,"Reset Password")}</td></tr></table>${this.emailDivider()}${this.emailLinkFallback(t,"This link expires in 1 hour and can only be used once.")}`;return this.sendEmail({to:n,subject:`Reset your password \u2014 ${o}`,html:this.emailWrapper(c,o)})}async sendMagicLinkEmail(n,r,t="Vorion"){let o=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">Sign in to ${t}</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">No password needed \u2014 just click to sign in</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:24px 32px 0 32px;"><p class="em-t" style="margin:0;font-size:15px;color:#3f3f46;line-height:1.7;">Click the button below to securely sign in to your <strong class="em-h" style="color:#18181b;">${t}</strong> account.</p></td></tr><tr><td>${this.emailButton(r,"Sign In")}</td></tr></table>${this.emailDivider()}${this.emailLinkFallback(r,"This link expires in 15 minutes and can only be used once.")}`;return this.sendEmail({to:n,subject:`Sign in to ${t}`,html:this.emailWrapper(o,t)})}async sendAlertEmail(n,r,t){return this.sendEmail({to:n,subject:r,html:t})}async sendInvitationEmail(n,r,t="Vorion"){let c=`<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:40px 32px 24px 32px;text-align:center;"><h1 class="em-h" style="margin:0;font-size:24px;font-weight:700;color:#18181b;letter-spacing:-0.5px;">You're Invited</h1><p class="em-t" style="margin:8px 0 0 0;font-size:15px;color:#52525b;line-height:1.6;">Join <strong class="em-h" style="color:#18181b;">${t}</strong> and start collaborating</p></td></tr></table>${this.emailDivider()}<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:0 32px 8px 32px;"><table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr><td style="padding:8px 0;"><table role="presentation" cellpadding="0" cellspacing="0"><tr><td class="em-sn" style="width:28px;height:28px;background-color:#f4f4f5;border:1px solid #e4e4e7;border-radius:50%;text-align:center;line-height:28px;font-size:12px;font-weight:600;color:#71717a;">1</td><td class="em-t" style="padding-left:14px;font-size:14px;color:#52525b;">Click the button below</td></tr></table></td></tr><tr><td style="padding:8px 0;"><table role="presentation" cellpadding="0" cellspacing="0"><tr><td class="em-sn" style="width:28px;height:28px;background-color:#f4f4f5;border:1px solid #e4e4e7;border-radius:50%;text-align:center;line-height:28px;font-size:12px;font-weight:600;color:#71717a;">2</td><td class="em-t" style="padding-left:14px;font-size:14px;color:#52525b;">Choose a secure password</td></tr></table></td></tr><tr><td style="padding:8px 0;"><table role="presentation" cellpadding="0" cellspacing="0"><tr><td class="em-sn" style="width:28px;height:28px;background-color:#f4f4f5;border:1px solid #e4e4e7;border-radius:50%;text-align:center;line-height:28px;font-size:12px;font-weight:600;color:#71717a;">3</td><td class="em-t" style="padding-left:14px;font-size:14px;color:#52525b;">Start collaborating</td></tr></table></td></tr></table></td></tr></table>${this.emailButton(r,"Accept Invitation")}${this.emailDivider()}${this.emailLinkFallback(r,"This invitation expires in 7 days.")}`;return this.sendEmail({to:n,subject:`You're invited to join ${t}`,html:this.emailWrapper(c,t)})}}var vb=()=>{};var pb=d(()=>{Ms();Es();oe()});class Ue{logger;gmail;config;appId;state={lastAlertTime:{},activeAlerts:new Map};cooldownMs;constructor(n){this.logger=n.logger,this.gmail=n.gmail,this.config=n.config,this.appId=n.appId,this.cooldownMs=this.parseTimeToMs(n.config.alerts?.cooldown||"5m")}parseTimeToMs(n){let r=n.match(/^(\d+)(ms|s|m|h|d)$/);if(!r||!r[1]||!r[2])return 300000;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 300000}}async checkAndAlert(n){if(!this.config.alerts?.enabled)return[];let r=[],t=this.config.alerts.thresholds||{};if(n.system){if(t.cpuPercent&&n.system.cpu.usage>t.cpuPercent){let o=this.createAlert("cpu_high",n.system.cpu.usage,t.cpuPercent,`CPU usage is ${n.system.cpu.usage}% (threshold: ${t.cpuPercent}%)`);if(o)r.push(o)}if(t.memoryPercent&&n.system.memory.usagePercent>t.memoryPercent){let o=this.createAlert("memory_high",n.system.memory.usagePercent,t.memoryPercent,`Memory usage is ${n.system.memory.usagePercent}% (threshold: ${t.memoryPercent}%)`);if(o)r.push(o)}if(t.diskPercent&&n.system.disk.usagePercent>t.diskPercent){let o=this.createAlert("disk_high",n.system.disk.usagePercent,t.diskPercent,`Disk usage is ${n.system.disk.usagePercent}% (threshold: ${t.diskPercent}%)`);if(o)r.push(o)}}if(n.application){if(t.errorRatePercent&&n.application.errors.rate>t.errorRatePercent){let o=this.createAlert("error_rate_high",n.application.errors.rate,t.errorRatePercent,`Error rate is ${n.application.errors.rate}% (threshold: ${t.errorRatePercent}%)`);if(o)r.push(o)}if(t.responseTimeMs&&n.application.responseTime.p95>t.responseTimeMs){let o=this.createAlert("response_time_high",n.application.responseTime.p95,t.responseTimeMs,`P95 response time is ${n.application.responseTime.p95}ms (threshold: ${t.responseTimeMs}ms)`);if(o)r.push(o)}if(t.rateLimitBlocksPerMinute&&n.application.rateLimits.blockedPerMinute>t.rateLimitBlocksPerMinute){let o=this.createAlert("rate_limit_blocks_high",n.application.rateLimits.blockedPerMinute,t.rateLimitBlocksPerMinute,`Rate limit blocks: ${n.application.rateLimits.blockedPerMinute}/min (threshold: ${t.rateLimitBlocksPerMinute}/min)`);if(o)r.push(o)}}if(r.length>0)await this.sendAlerts(r);return r}createAlert(n,r,t,o){let c=Date.now(),a=this.state.lastAlertTime[n]||0;if(c-a<this.cooldownMs)return null;let e=this.getSeverity(n,r,t),i={id:`${n}-${c}`,type:n,severity:e,message:o,value:r,threshold:t,timestamp:c,acknowledged:!1};return this.state.lastAlertTime[n]=c,this.state.activeAlerts.set(n,i),this.logger.warn(`[Alert] ${e.toUpperCase()}: ${o}`),i}getSeverity(n,r,t){return r/t>1.5?"critical":"warning"}async sendAlerts(n){if(!this.config.alerts?.email?.enabled)return;if(!this.gmail||!this.gmail.isAvailable())return;let r=this.config.alerts.email.recipients||[];if(r.length===0)return;let o=n.filter((a)=>a.severity==="critical").length>0?`\uD83D\uDEA8 CRITICAL Alert - ${this.appId}`:`\u26A0\uFE0F Warning Alert - ${this.appId}`,c=this.buildEmailHtml(n);for(let a of r)try{await this.gmail.sendAlertEmail(a,o,c),this.logger.info(`[Alert] Email sent to ${a}`)}catch(e){this.logger.error(`[Alert] Failed to send email to ${a}: ${e}`)}}buildEmailHtml(n){let r=n.map((t)=>`
24
24
  <tr style="background-color: ${t.severity==="critical"?"#fee2e2":"#fef3c7"};">
25
25
  <td style="padding: 12px; border: 1px solid #e5e7eb;">${t.severity.toUpperCase()}</td>
26
26
  <td style="padding: 12px; border: 1px solid #e5e7eb;">${t.type}</td>
@@ -57,10 +57,10 @@ var v1=Object.create;var{getPrototypeOf:p1,defineProperty:Zc,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 Rl{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,c=[...this.responseTimes].sort((i,s)=>i-s),a=c.length;return{requests:{total:this.requestCount,perMinute:t,byEndpoint:{...this.byEndpoint},byMethod:{...this.byMethod},byStatus:{...this.byStatus}},responseTime:{avg:a>0?Math.round(c.reduce((i,s)=>i+s,0)/a*100)/100:0,min:a>0?c[0]??0:0,max:a>0?c[a-1]??0:0,p50:a>0?c[Math.floor(a*0.5)]??0:0,p95:a>0?c[Math.floor(a*0.95)]??0:0,p99:a>0?c[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 Ib from"fs";import*as oo from"os";class Al{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=oo.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 c=0;if(this.lastCpuInfo){let a=t-this.lastCpuInfo.idle,e=o-this.lastCpuInfo.total;c=e>0?Math.round((1-a/e)*100*100)/100:0}return this.lastCpuInfo={idle:t,total:o},{usage:c,cores:r}}collectMemory(){let n=oo.totalmem(),r=oo.freemem(),t=n-r,o=Math.round(t/n*100*100)/100,c=process.memoryUsage();return{total:n,used:t,free:r,usagePercent:o,heapUsed:c.heapUsed,heapTotal:c.heapTotal}}async collectDisk(){try{let n=Ib.statfsSync("/"),r=n.blocks*n.bsize,t=n.bfree*n.bsize,o=r-t,c=Math.round(o/r*100*100)/100;return{total:r,used:o,free:t,usagePercent:c}}catch{return{total:0,used:0,free:0,usagePercent:0}}}collectNetwork(){let n=oo.networkInterfaces(),r=0,t=0;for(let o in n){let c=n[o];if(c){for(let a of c)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((c)=>{setImmediate(()=>{c(Date.now()-t)})});return{uptime:n,pid:r,eventLoopLag:o}}}var Zb=()=>{};import*as ng from"os";import{randomUUID as yb}from"crypto";class xe{store;memoryInterval=null;cpuInterval=null;lastCpuInfo=null;isRunning=!1;constructor(n){let r={...Z2,...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=ng.cpus(),t=0,o=0,c=0,a=0;for(let l of r)t+=l.times.user,o+=l.times.sys,c+=l.times.idle,a+=l.times.user+l.times.nice+l.times.sys+l.times.idle+l.times.irq;let e=0,i=0;if(this.lastCpuInfo){let l=a-this.lastCpuInfo.total,f=c-this.lastCpuInfo.idle;if(l>0){let b=l-f;e=Math.round((t-0)/(b||1)*100*100)/100,i=Math.round((o-0)/(b||1)*100*100)/100;let g=Math.round((1-f/l)*100*100)/100;e=Math.round(g*0.7*100)/100,i=Math.round(g*0.3*100)/100}}this.lastCpuInfo={idle:c,total:a};let s={timestamp:Date.now(),user:e,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:yb(),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:yb(),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),c=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||c.length>0||a.length>0))return null;return{memory:r,cpu:t,requests:o,dapr:c,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 Z2;var rg=d(()=>{Z2={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 Sl{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 Al(this.config.system),this.applicationCollector=new Rl(this.config.application),this.alertService=new Be({logger:n.logger,gmail:n.gmail,config:this.config,appId:n.appId})}mergeConfig(n){return{enabled:n.enabled??Rn.enabled,system:{enabled:n.system?.enabled??Rn.system.enabled,collectInterval:n.system?.collectInterval??Rn.system.collectInterval,metrics:{cpu:n.system?.metrics?.cpu??Rn.system.metrics.cpu,memory:n.system?.metrics?.memory??Rn.system.metrics.memory,disk:n.system?.metrics?.disk??Rn.system.metrics.disk,network:n.system?.metrics?.network??Rn.system.metrics.network,process:n.system?.metrics?.process??Rn.system.metrics.process}},application:{enabled:n.application?.enabled??Rn.application.enabled,metrics:{requests:n.application?.metrics?.requests??Rn.application.metrics.requests,responseTime:n.application?.metrics?.responseTime??Rn.application.metrics.responseTime,errors:n.application?.metrics?.errors??Rn.application.metrics.errors,rateLimits:n.application?.metrics?.rateLimits??Rn.application.metrics.rateLimits}},database:{enabled:n.database?.enabled??Rn.database.enabled,metrics:{connections:n.database?.metrics?.connections??Rn.database.metrics.connections,queryTime:n.database?.metrics?.queryTime??Rn.database.metrics.queryTime,slowQueryThreshold:n.database?.metrics?.slowQueryThreshold??Rn.database.metrics.slowQueryThreshold}},redis:{enabled:n.redis?.enabled??Rn.redis.enabled},persistence:{enabled:n.persistence?.enabled??Rn.persistence.enabled,flushInterval:n.persistence?.flushInterval??Rn.persistence.flushInterval,retentionDays:n.persistence?.retentionDays??Rn.persistence.retentionDays},alerts:{enabled:n.alerts?.enabled??Rn.alerts.enabled,email:{enabled:n.alerts?.email?.enabled??Rn.alerts.email.enabled,recipients:n.alerts?.email?.recipients??Rn.alerts.email.recipients},thresholds:{cpuPercent:n.alerts?.thresholds?.cpuPercent??Rn.alerts.thresholds.cpuPercent,memoryPercent:n.alerts?.thresholds?.memoryPercent??Rn.alerts.thresholds.memoryPercent,diskPercent:n.alerts?.thresholds?.diskPercent??Rn.alerts.thresholds.diskPercent,errorRatePercent:n.alerts?.thresholds?.errorRatePercent??Rn.alerts.thresholds.errorRatePercent,responseTimeMs:n.alerts?.thresholds?.responseTimeMs??Rn.alerts.thresholds.responseTimeMs,rateLimitBlocksPerMinute:n.alerts?.thresholds?.rateLimitBlocksPerMinute??Rn.alerts.thresholds.rateLimitBlocksPerMinute},cooldown:n.alerts?.cooldown??Rn.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=(c,a="")=>{for(let e in c){let i=c[e],s=a?`${a}.${e}`:e;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),c=o.success&&o.data?o.data:[];c.push(n);let a=Date.now()-3600000,e=c.filter((i)=>i.timestamp>a);await this.redis.create(t,e,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((c)=>c.timestamp>o)}getActiveAlerts(){return this.alertService.getActiveAlerts()}acknowledgeAlert(n){return this.alertService.acknowledgeAlert(n)}isEnabled(){return this.config.enabled}getConfig(){return this.config}}var Rn;var tg=d(()=>{Zb();rg();Rn={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 og=()=>{};import{and as YM,eq as JM}from"drizzle-orm";var cg=d(()=>{og()});class El{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??ar.enabled,strategy:n.strategy??ar.strategy,keyPrefix:n.keyPrefix??ar.keyPrefix,authRoutes:{window:n.authRoutes?.window??ar.authRoutes.window,max:n.authRoutes?.max??ar.authRoutes.max,login:{window:n.authRoutes?.login?.window??We.window,max:n.authRoutes?.login?.max??We.max,blockDuration:n.authRoutes?.login?.blockDuration??We.blockDuration},register:{window:n.authRoutes?.register?.window??Ye.window,max:n.authRoutes?.register?.max??Ye.max,blockDuration:n.authRoutes?.register?.blockDuration??Ye.blockDuration},passwordReset:{window:n.authRoutes?.passwordReset?.window??Je.window,max:n.authRoutes?.passwordReset?.max??Je.max,blockDuration:n.authRoutes?.passwordReset?.blockDuration??Je.blockDuration},magicLink:{window:n.authRoutes?.magicLink?.window??Xe.window,max:n.authRoutes?.magicLink?.max??Xe.max,blockDuration:n.authRoutes?.magicLink?.blockDuration??Xe.blockDuration}},publicRoutes:{window:n.publicRoutes?.window??ar.publicRoutes.window,max:n.publicRoutes?.max??ar.publicRoutes.max},privateRoutes:{window:n.privateRoutes?.window??ar.privateRoutes.window,max:n.privateRoutes?.max??ar.privateRoutes.max},byIp:n.byIp??ar.byIp,byUserId:n.byUserId??ar.byUserId,byEndpoint:n.byEndpoint??ar.byEndpoint,skipSuccessfulRequests:n.skipSuccessfulRequests??ar.skipSuccessfulRequests,headers:{remaining:n.headers?.remaining??ar.headers.remaining,reset:n.headers?.reset??ar.headers.reset,limit:n.headers?.limit??ar.headers.limit},whitelist:n.whitelist??ar.whitelist,blacklist:n.blacklist??ar.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),c=`${r}:blocked`,a=await this.readRedis(c);if(a&&a.until>Date.now()){let e=Math.ceil((a.until-Date.now())/1000);return this.logger.warn(`[RateLimit] Blocked: ${r}, retry after ${e}s`),{allowed:!1,remaining:0,resetAt:a.until,limit:t.max,retryAfter:e}}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 c=Date.now(),a=c-t,e=`${n}:sw`,s=(await this.readRedis(e))?.timestamps||[];s=s.filter((g)=>g>a);let l=s.length,f=s[0],b=f!==void 0?f+t:c+t;if(l>=r){if(o){let g=this.parseTimeToMs(o);await this.redis.create(`${n}:blocked`,{until:c+g},Math.ceil(g/1000))}return{allowed:!1,remaining:0,resetAt:b,limit:r,retryAfter:Math.ceil((b-c)/1000)}}return s.push(c),await this.redis.create(e,{timestamps:s},Math.ceil(t/1000)+1),{allowed:!0,remaining:r-s.length,resetAt:b,limit:r}}async fixedWindowCheck(n,r,t,o){let c=Date.now(),a=Math.floor(c/t),e=`${n}:fw:${a}`,i=(a+1)*t,l=(await this.readRedis(e))?.count||0;if(l>=r){if(o){let f=this.parseTimeToMs(o);await this.redis.create(`${n}:blocked`,{until:c+f},Math.ceil(f/1000))}return{allowed:!1,remaining:0,resetAt:i,limit:r,retryAfter:Math.ceil((i-c)/1000)}}return await this.redis.create(e,{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(),c=r/t,a=`${n}:tb`,e=await this.readRedis(a),i=e?.tokens??r,s=e?.lastRefill??o,f=(o-s)*c;if(i=Math.min(r,i+f),i<1){let b=Math.ceil((1-i)/c);return{allowed:!1,remaining:0,resetAt:o+b,limit:r,retryAfter:Math.ceil(b/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 c=this.parseTimeToMs(this.getLimits(n.category,n.authType).window);await this.redis.create(t,o,Math.ceil(c/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),c=`${r}:fw:${o}`,a=await this.readRedis(c);if(a?.count)await this.redis.create(c,{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 We,Ye,Je,Xe,ar;var ag=d(()=>{We={window:"15m",max:5,blockDuration:"30m"},Ye={window:"1h",max:3,blockDuration:"1h"},Je={window:"1h",max:3,blockDuration:"1h"},Xe={window:"1h",max:5,blockDuration:"1h"},ar={enabled:!0,strategy:"sliding-window",keyPrefix:"rl:",authRoutes:{window:"1m",max:10,login:We,register:Ye,passwordReset:Je,magicLink:Xe},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 eg=()=>{};import{and as Ve,desc as y2,eq as Yr}from"drizzle-orm";class Ml{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"),c=this.getTable("verifications"),a=this.getTable("verificationRequirements");if(!t||!o||!c||!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(Ve(Yr(this.getCol(t,"entity_name"),n),Yr(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(Yr(this.getCol(a,"entity_name"),n)).orderBy(this.getCol(a,"step_order")),l=await this.db.select().from(c).where(Ve(Yr(this.getCol(c,"entity_name"),n),Yr(this.getCol(c,"entity_id"),r))).orderBy(y2(this.getCol(c,"created_at"))),f=s.length,b=l.filter((R)=>R.decision==="approved"),g=l.find((R)=>R.decision==="rejected"),h=g?1:b.length+1,k=b.length>=f&&!g,$=!!g,m=s.filter((R)=>R.step_order>=h);return{entity_name:n,entity_id:r,flow:i,current_step:h,total_steps:f,is_completed:k,is_rejected:$,verifications:l,pending_verifiers:m.map((R)=>({step_order:R.step_order,verifier_type:R.verifier_type,verifier_id:R.verifier_id,verifier_role:R.verifier_role,is_signature_mandatory:R.is_signature_mandatory}))}}async decide(n){let{entity_name:r,entity_id:t,user_id:o,decision:c,reason:a,signature_id:e,diff:i}=n,s=this.getTable("verifications"),l=this.getTable("verificationRequirements"),f=this.getTable("user_roles"),b=this.getTable("roles");if(!s||!l)return{success:!1,message:"Verification tables not configured"};let g=await this.getStatus(r,t);if(g.is_completed)return{success:!1,message:"Verification flow already completed"};if(g.total_steps===0)return{success:!1,message:"No verification flow configured for this entity"};let h=g.pending_verifiers.filter((W)=>W.step_order===g.current_step);if(h.length===0)return{success:!1,message:"No pending requirements for current step"};let k=!1,$=null;for(let W of h){if(W.verifier_type==="user"&&W.verifier_id===o){k=!0,$=W;break}if(W.verifier_type==="role"&&W.verifier_role&&f&&b){let S=f,z=b;if((await this.db.select({role_name:z.name}).from(f).innerJoin(b,Yr(S.role_id,z.id)).where(Yr(S.user_id,o))).some((U)=>U.role_name===W.verifier_role)){k=!0,$=W;break}}if(W.verifier_type==="entity_creator"){k=!0,$=W;break}}if(!k||!$)return{success:!1,message:"User is not authorized to verify at this step"};if($.is_signature_mandatory&&!e)return{success:!1,message:"Signature is required for this verification step"};let R=(await this.db.select().from(l).where(Ve(Yr(this.getCol(l,"entity_name"),r),Yr(this.getCol(l,"step_order"),g.current_step))))[0];if(!R)return{success:!1,message:"Requirement not found"};let X={requirement_id:R.id,verifier_id:o,signature_id:e||null,entity_name:r,entity_id:t,step_order:g.current_step,decision:c,reason:a||null,diff:i||null},[C]=await this.db.insert(s).values(X).returning();if(c==="rejected"&&this.config.autoResetOnRejection)this.logger.info(`[Verification] Flow reset due to rejection for ${r}:${t}`);let E=c==="approved"&&g.current_step>=g.total_steps,Q=c==="approved"?g.current_step+1:1;return{success:!0,message:c==="approved"?E?"Verification flow completed":`Step ${g.current_step} approved`:"Verification rejected, flow reset",verification:C,flow_completed:E,next_step:E?void 0:Q}}async getPending(n){let r=this.getTable("verificationRequirements"),t=this.getTable("verificationFlows"),o=this.getTable("user_roles"),c=this.getTable("roles");if(!r||!t)return[];let a=o,e=c,s=(o&&c?await this.db.select({role_name:e.name}).from(o).innerJoin(c,Yr(a.role_id,e.id)).where(Yr(a.user_id,n)):[]).map((b)=>b.role_name),l=await this.db.select().from(r),f=[];for(let b of l){if(!(b.verifier_type==="user"&&b.verifier_id===n||b.verifier_type==="role"&&s.includes(b.verifier_role)||b.verifier_type==="entity_creator"))continue;let k=(await this.db.select().from(t).where(Ve(Yr(this.getCol(t,"entity_name"),b.entity_name),Yr(this.getCol(t,"is_draft"),!1))).limit(1))[0];if(!k)continue;f.push({entity_name:b.entity_name,entity_id:b.entity_id,flow_name:k.name,step_order:b.step_order,step_name:void 0,is_signature_mandatory:b.is_signature_mandatory,created_at:b.created_at,diff:void 0})}return f}}var Dl=d(()=>{eg()});var Hl=d(()=>{Wb();ml();$l();vb();pb();tg();cg();ag();Dl()});import{access as r9,mkdir as c5}from"fs/promises";import{dirname as a5,resolve as lg}from"path";var fa,Bl,En=(n)=>{if(!n||typeof n!=="string")throw Nn("INVALID_PATH","Path must be a non-empty string",n,"resolvePath");return lg(n)},Xt=(n)=>{let r=En(n);return a5(r)},tt=async(n)=>{let r=lg(n);try{await c5(r,{recursive:!0})}catch(t){if(t.code!=="EEXIST")throw Nn("DIRECTORY_CREATE_FAILED",`Failed to create directory: ${r}`,r,"ensureDirectory")}},xl=(n)=>{let r=n,t=0;while(r>=1024&&t<Bl.length-1)r/=1024,t++;return`${r.toFixed(2)} ${Bl[t]}`},fg=(n,r)=>{return n.toLowerCase().endsWith(r.toLowerCase())},Wl=(n,r)=>{let t=r.startsWith(".")?r:`.${r}`;if(fg(n,t))return n;return`${n}${t}`},Nn=(n,r,t,o)=>{return{code:n,message:r,path:t,operation:o||"unknown"}},Ce=(n)=>{try{return JSON.stringify(n,null,2)}catch{return"{}"}},Yl=async(n,r,t=fa.maxConcurrency)=>{let o=[];for(let c=0;c<n.length;c+=t){let a=n.slice(c,c+t),e=[];for(let s of a)e.push(r(s));let i=await Promise.allSettled(e);o.push(...i)}return o},Le=(n,r={})=>{let t=[],o=[],c=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(c&&!r.allowUnknownKeys){let a=["defaultEncoding","defaultCreateDir","defaultRecursive","maxConcurrency"],e=Object.keys(n);for(let i of e)if(!a.includes(i))t.push(`Unknown configuration key: ${i}`)}return{isValid:t.length===0,errors:t,warnings:o}},dg=(n,r=fa)=>{let t=Le(n);if(!t.isValid)throw Nn("CONFIG_VALIDATION_FAILED",`Configuration validation failed: ${t.errors.join(", ")}`,void 0,"mergeConfig");return{...r,...n}},bg=(n)=>{let r=(a)=>({read:Boolean(a&4),write:Boolean(a&2),execute:Boolean(a&1)}),t=n>>6&7,o=n>>3&7,c=n&7;return{owner:r(t),group:r(o),others:r(c)}},gg=(n)=>{return Number.isInteger(n)&&n>=0&&n<=511};var dc=d(()=>{fa={defaultEncoding:"utf-8",defaultCreateDir:!0,defaultRecursive:!0,maxConcurrency:5},Bl=["B","KB","MB","GB","TB"]});import{copyFile as Jl,rename as Xl,unlink as e5}from"fs/promises";import{basename as ug,dirname as _g,extname as i5,join as s5}from"path";var Qe,l5=(n,r=".tmp")=>{let t=En(n),o=Date.now(),c=Math.random().toString(36).substring(2,8);return`${t}${r}.${o}.${c}`},mg=(n,r,t=!0)=>{let o=En(n),c=r?En(r):_g(o),a=ug(o),e=i5(a),i=ug(a,e),s=t?`.${new Date().toISOString().replace(/[:.]/g,"-")}`:"",l=`${i}.backup${s}${e}`;return s5(c,l)},da=async({path:n,data:r,tempSuffix:t=Qe.tempSuffix,backup:o=Qe.backup,sync:c=Qe.sync})=>{let a=En(n),e=l5(a,t),i;try{if(await tt(Xt(a)),o){if(await Bun.file(a).exists())i=mg(a),await Jl(a,i)}let s=await Bun.write(e,r);return await Xl(e,a),{success:!0,bytesWritten:s,tempPath:e,backupPath:i}}catch(s){try{await e5(e)}catch{}throw Nn("ATOMIC_WRITE_FAILED",`Atomic write failed: ${s}`,a,"atomicWrite")}},wg=async(n,r,t={})=>{let o=JSON.stringify(r,null,2);return da({path:n,data:o,...t})},Vl=async({sourcePath:n,backupDir:r,keepOriginal:t=!0,timestamp:o=Qe.timestamp})=>{let c=En(n);if(!await Bun.file(c).exists())throw Nn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,c,"createBackup");let e=mg(c,r,o);if(await tt(_g(e)),t)await Jl(c,e);else await Xl(c,e);return e},Cl=async(n,r,t=!1)=>{let o=En(n),c=En(r);if(!await Bun.file(o).exists())throw Nn("BACKUP_NOT_FOUND",`Backup file not found: ${n}`,o,"restoreFromBackup");try{if(await tt(Xt(c)),t)await Xl(o,c);else await Jl(o,c);return!0}catch(e){return console.error(`Error restoring from backup ${n}:`,e),!1}},hg=async(n,r,t={})=>{let o=En(n),c=Bun.file(o),a;try{if(await c.exists())a=await Vl({sourcePath:o,keepOriginal:!0,timestamp:!0});let e=await c.exists()?await c.text():"",i=await r(e),s=await da({path:o,data:i,backup:!1,...t});return{success:s.success,bytesWritten:s.bytesWritten,tempPath:s.tempPath,backupPath:a}}catch(e){if(a)try{await Cl(a,o,!1)}catch(i){console.error("Rollback failed:",i)}throw e}},$g=async(n)=>{let r=[],t=[];for(let o of n)try{let c=await da(o);r.push(c)}catch(c){t.push({operation:o,error:c})}return{successful:r,failed:t}};var kg=d(()=>{dc();Qe={tempSuffix:".tmp",backup:!1,sync:!0,timestamp:!0}});import{chmod as f5,stat as d5}from"fs/promises";var b5,co=async(n,r)=>{let t=En(n);if(!gg(r))throw Nn("INVALID_PERMISSION_MODE",`Invalid permission mode: ${r.toString(8)}`,t,"setFilePermissions");try{return await f5(t,r),!0}catch(o){return console.error(`Error setting permissions for ${n}:`,o),!1}},Jo=async(n)=>{let r=En(n);try{let o=(await d5(r)).mode&511,c=bg(o);return{path:r,mode:o,owner:c.owner,group:c.group,others:c.others}}catch(t){throw Nn("PERMISSION_READ_FAILED",`Failed to read permissions: ${t}`,r,"getFilePermissions")}},Rg=async(n,r)=>{try{return((await Jo(n)).mode&r)===r}catch{return!1}},Ag=async(n)=>{let t=(await Jo(n)).mode|256;return co(n,t)},Sg=async(n)=>{let t=(await Jo(n)).mode|128;return co(n,t)},Eg=async(n)=>{let t=(await Jo(n)).mode|64;return co(n,t)},Mg=async(n)=>{let t=(await Jo(n)).mode&-147;return co(n,t)},Dg=async(n,r)=>{let t=b5[r];return co(n,t)};var Hg=d(()=>{dc();b5={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 g5,Pe=async(n,r={})=>{let t=En(n),o={...g5,...r};await tt(Xt(t));let a=Bun.file(t).writer({highWaterMark:o.highWaterMark}),e=!1;return{write:(s)=>{if(e)throw Nn("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 Nn("WRITE_FAILED",`Failed to write chunk: ${l}`,t,"streamWrite")}},flush:()=>{if(e)return 0;try{return a.flush()}catch(s){throw Nn("FLUSH_FAILED",`Failed to flush writer: ${s}`,t,"streamFlush")}},end:async(s)=>{if(e)return 0;try{let l=await a.end(s);return e=!0,l}catch(l){throw e=!0,Nn("END_FAILED",`Failed to end writer: ${l}`,t,"streamEnd")}},ref:()=>{if(!e)a.ref()},unref:()=>{if(!e)a.unref()}}},Ll=async(n,r,t={})=>{let o=await Pe(n,t),c=0;try{for(let a of r){let e=o.write(a);c+=e}return await o.flush(),await o.end(),c}catch(a){try{await o.end(a)}catch{}throw a}},zg=async(n,r,t={})=>{let o=En(n),c=Bun.file(o),a=await c.exists()?await c.arrayBuffer():new ArrayBuffer(0),e=[];if(a.byteLength>0)e.push(a);return e.push(...r),Ll(o,e,t)},Ug=async(n,r,t={})=>{let o=En(n),c=Bun.file(o);if(!await c.exists())throw Nn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,o,"copyFileStream");let a=c.stream(),e=await Pe(r,t),i=0;try{let s=a.getReader();while(!0){let{done:l,value:f}=await s.read();if(l)break;let b=e.write(f);i+=b}return await e.flush(),await e.end(),i}catch(s){try{await e.end(s)}catch{}throw s}},Bg=async(n,r)=>{let t=En(n),o=Bun.file(t);if(!await o.exists())throw Nn("FILE_NOT_FOUND",`File not found: ${n}`,t,"readFileStream");let a=o.stream().getReader();try{while(!0){let{done:e,value:i}=await a.read();if(e)break;await r(i)}}finally{a.releaseLock()}};var xg=d(()=>{dc();g5={highWaterMark:1048576,autoFlush:!0,closeOnEnd:!0}});import{readdir as u5,rm as _5,rmdir as m5,stat as w5}from"fs/promises";import{extname as h5,join as $5}from"path";class ao{static instance;config;constructor(){this.config={...fa}}static getInstance(){if(!ao.instance)ao.instance=new ao;return ao.instance}async createFile({dir:n,name:r,data:t,options:o={}}){let c=En($5(n,r));if(o.createDir!==!1)await tt(Xt(c));let a=o.type?new Blob([t],{type:o.type}):t;return await Bun.write(c,a)}async createJsonFile(n,r,t){let o=Wl(r,".json"),c=Ce(t);return this.createFile({dir:n,name:o,data:c,options:{type:"application/json"}})}async createDirectory({path:n}){await tt(n)}async readFile({path:n,format:r="text"}){let t=En(n),o=Bun.file(t);if(!await o.exists())throw Nn("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=En(n),t=Bun.file(r),o=n.split("/").pop()||n,c=null;try{c=await w5(r)}catch{}return{name:o,path:r,size:t.size,type:t.type,exists:await t.exists(),extension:h5(o),createdAt:c?.birthtime,modifiedAt:c?.mtime}}async readDirectory({path:n,recursive:r=!1}){let t=En(n);return await u5(t,{recursive:r,encoding:"utf8"})}async getFilesByExtension(n,r){let t=await this.readDirectory({path:n}),o=r.startsWith(".")?r:`.${r}`;return t.filter((c)=>c.endsWith(o))}async updateFile({path:n,data:r,mode:t="overwrite"}){let o=En(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 c=await this.readJsonFile(n);if(typeof c==="object"&&c!==null&&!Array.isArray(c)&&typeof r==="object"&&r!==null&&!Array.isArray(r))o={...c,...r}}catch{}return this.updateFile({path:n,data:Ce(o),mode:"overwrite"})}async appendToFile(n,r){return this.updateFile({path:n,data:r,mode:"append"})}async deleteFile(n){try{let r=En(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=En(n);if(r)await _5(t,{recursive:!0,force:!0});else await m5(t);return!0}catch(t){return console.error(`Error deleting directory ${n}:`,t),!1}}async deleteFiles(n){let r=await Yl(n,async(c)=>{if(!await this.deleteFile(c))throw Error(`Failed to delete: ${c}`);return c}),t=[],o=[];for(let c=0;c<r.length;c++){let a=r[c],e=n[c];if(a?.status==="fulfilled")t.push(e||"");else o.push(e||"")}return{success:t,failed:o}}async exists(n){let r=En(n);return await Bun.file(r).exists()}async copyFile(n,r){let t=En(n),o=En(r),c=Bun.file(t);if(!await c.exists())throw Nn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,t,"copyFile");return await tt(Xt(o)),await Bun.write(o,c)}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 xl(n)}getConfig(){return{...this.config}}updateConfig(n){let r=Le(n);if(r.isValid){let t=dg(n,this.config);Object.assign(this.config,t)}return r}validateConfiguration(n){return Le(n)}async createStreamWriter(n,r={}){return Pe(n,r)}async writeStream(n,r,t={}){return Ll(n,r,t)}async appendStream(n,r,t={}){return zg(n,r,t)}async copyFileStream(n,r,t={}){return Ug(n,r,t)}async readFileStream(n,r){return Bg(n,r)}async setPermissions(n,r){return co(n,r)}async setPermissionsAdvanced(n){return co(n.path,n.mode)}async getPermissions(n){return Jo(n)}async checkPermissions(n,r){return Rg(n,r)}async makeFileReadable(n){return Ag(n)}async makeFileWritable(n){return Sg(n)}async makeFileExecutable(n){return Eg(n)}async makeFileReadOnly(n){return Mg(n)}async setCommonPermission(n,r){return Dg(n,r)}async atomicWrite(n){return da(n)}async atomicJsonWrite(n,r,t={}){return wg(n,r,t)}async createFileBackup(n){return Vl(n)}async restoreFileFromBackup(n,r,t=!1){return Cl(n,r,t)}async safeFileUpdate(n,r,t={}){return hg(n,r,t)}async batchAtomicOperations(n){return $g(n)}}var Ql=d(()=>{kg();Hg();xg();dc()});var Rt;var Ge=d(()=>{Ql();dc();Ql();Rt=ao.getInstance()});import{Pool as B9}from"pg";var Wg=()=>{};var Yg=d(()=>{tl();Ge();Wg();Jt()});function Xg(n,r){let t=(n.get("cookie")?.split(";")||[]).reduce((o,c)=>{let[a,e]=c.trim().split("=");if(a&&e)o[a]=e;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 Gl(n){if(!n.redis){console.log("Redis not configured, skipping");return}if(n.redis.withDapr){Pl=new qn({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;Pl=new qn({url:r,host:t,port:Number.isNaN(o)?void 0:o})}function qe(){return Pl}function ot(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 e=Math.floor(t*a);if(e<=0)throw Error(`Time value must be positive: "${n}"`);return e}function Vg({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 c=process.env[o];if(!c)throw Error(`Access token secret env "${o}" is not set`);return ca({subject:n.userId,issuer:r.authentication?.accessToken?.issuer,audience:r.authentication?.accessToken?.audience,algorithm:r.authentication?.accessToken?.algorithm,expiresInSeconds:ot(r.authentication?.accessToken?.expiresIn??"15m"),sessionId:n.id,customClaims:{refreshTokenId:t}},c)}function Xo(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 ql(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,c=n.offset?parseInt(n.offset,10):(t-1)*o;return{page:t,limit:o,offset:c,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 Cg(n,r,t,o){let c=Math.ceil(o/r),a=n<c,e=n>1;return{page:n,limit:r,offset:t,totalItems:o,totalPages:c,hasNextPage:a,hasPrevPage:e,nextPage:a?n+1:null,prevPage:e?n-1:null}}function R5(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(c)=>({valid:typeof c==="string",expectedType:"string"});if(t.includes(n))return(c)=>({valid:typeof c==="number",expectedType:"number"});if(o.includes(n))return(c)=>({valid:typeof c==="boolean",expectedType:"boolean"});if(n==="json"||n==="jsonb")return(c)=>({valid:typeof c==="object",expectedType:"object"});return()=>({valid:!0,expectedType:"any"})}function bc(n,r,t=!1){let o=[];for(let c of r){let a=n[c.name],e=c.notNull&&!c.nullable&&c.default===void 0&&!c.defaultRaw;if(a===void 0||a===null){if(e&&!t)o.push({field:c.name,message:c.validation?.customMessage||`${c.name} is required`});continue}let i=R5(c.type)(a);if(!i.valid){o.push({field:c.name,message:c.validation?.customMessage||`${c.name} must be of type ${i.expectedType}`});continue}if(typeof a==="string"){let s=a.length;if(c.length&&s>c.length)o.push({field:c.name,message:c.validation?.customMessage||`${c.name} exceeds max length of ${c.length}`});if(c.validation?.minLength&&s<c.validation.minLength)o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be at least ${c.validation.minLength} characters`});if(c.validation?.maxLength&&s>c.validation.maxLength)o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be at most ${c.validation.maxLength} characters`});if(c.validation?.pattern){if(!new RegExp(c.validation.pattern).test(a))o.push({field:c.name,message:c.validation.customMessage||`${c.name} does not match required pattern`})}if(c.validation?.format){let l=k5[c.validation.format];if(l&&!l.test(a))o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be a valid ${c.validation.format}`})}}if(typeof a==="number"){if(c.validation?.min!==void 0&&a<c.validation.min)o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be at least ${c.validation.min}`});if(c.validation?.max!==void 0&&a>c.validation.max)o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be at most ${c.validation.max}`})}if(c.enumValues&&c.enumValues.length>0){if(!c.enumValues.includes(a))o.push({field:c.name,message:c.validation?.customMessage||`${c.name} must be one of: ${c.enumValues.join(", ")}`})}}return{valid:o.length===0,errors:o}}function S5(n){return n.replace(/[&<>"'`=/]/g,(r)=>A5[r]||r)}function E5(n){return n.replace(/<[^>]*>/g,"")}function M5(n){let r=n.split("@"),t=r[0],o=r[1];if(!t||!o)return n;let c=t.split("+")[0];if(!c)return n;return`${c.replace(/\./g,"")}@${o.toLowerCase()}`}function D5(n){return n.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function H5(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"?S5(n):n;case"stripTags":return typeof n==="string"?E5(n):n;case"normalizeEmail":return typeof n==="string"?M5(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"?D5(n):n;default:return n}}function gc(n,r){let t={};for(let o of Object.keys(n)){let c=n[o],a=r.find((e)=>e.name===o);if(a?.sanitize&&a.sanitize.length>0)for(let e of a.sanitize)c=H5(c,e);t[o]=c}return t}async function Lg(n,r,t){let o=new qn,c=`${U5}${n}`,a=`${z5}${n}:${r}`,e=await o.read(a);if(e.success&&e.data)return{success:!0,accessToken:e.data,fromCache:!0};let i=await o.acquireLock(c,B5);if(!i.success)return{success:!1,error:i.error};if(i.data)try{let b=t();return await o.create(a,b,Jg),{success:!0,accessToken:b,fromCache:!1}}finally{await o.releaseLock(c)}let s=await o.waitForLock(c,x5,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,Jg),{success:!0,accessToken:f,fromCache:!1}}function Qg(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."})}return{valid:r.length===0,errors:r,resolved:t}}async function Pg(n,r){let{Pool:t}=await import("pg"),c=new URL(n).pathname.replace("/","");if(!c)return;let a=new URL(n);a.pathname="/postgres";let e=new t({connectionString:a.toString()});try{if((await e.query("SELECT 1 FROM pg_database WHERE datname = $1",[c])).rowCount===0)r.info(`[Database] Creating database "${c}"...`),await e.query(`CREATE DATABASE "${c}" TEMPLATE template0`),r.info(`[Database] Database "${c}" created successfully`);else r.info(`[Database] Database "${c}" exists`)}catch(i){let s=i instanceof Error?i.message:String(i);r.warn(`[Database] Could not auto-create database: ${s}`)}finally{await e.end()}}var Pl=null,k5,A5,z5="access_token:",U5="refresh_lock:",B5=5,x5=3000,Jg=60;var Ne=d(()=>{Yg();Hl();k5={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};A5={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;","`":"&#96;","=":"&#x3D;"}});import Oe from"path";import W5,{t as Fe}from"elysia";function Nl(n){if(!n)return Vo;return{enabled:n.enabled??Vo.enabled,basePath:n.basePath??Vo.basePath,cacheMaxAge:n.cacheMaxAge??Vo.cacheMaxAge,enableRangeRequests:n.enableRangeRequests??Vo.enableRangeRequests,enableEtag:n.enableEtag??Vo.enableEtag,corsOrigins:n.corsOrigins??Vo.corsOrigins}}function Y5(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 J5(n){return n.replace(/[^A-Za-z0-9._-]+/g,"_").replace(/_{2,}/g,"_").slice(0,200)}function Ol(n){let{cdn:r,storagePath:t,logger:o,getFileRecord:c}=n,a=new W5({prefix:r.basePath});if(!r.enabled)return a;return a.get("/:id",async({params:e,request:i,set:s})=>{let{id:l}=e,f=i.headers.get("x-schema-name")||void 0,b,g,h;if(c){let u=await c(l,f);if(!u)return s.status=404,{success:!1,message:"File not found"};b=Oe.join(u.path,u.name),g=u.name,h=u.mimeType||u.mime_type||"application/octet-stream"}else b=Oe.join(t,l),g=l,h="application/octet-stream";if(!await Rt.exists(b))return s.status=404,{success:!1,message:"Physical file not found"};let $=await Rt.getFileInfo(b),m=new Date($.modifiedAt||Date.now()).toUTCString(),R=r.enableEtag?`"${$.size}-${$.modifiedAt?.getTime()||Date.now()}"`:void 0,X={"Cache-Control":`public, max-age=${r.cacheMaxAge}`,"Last-Modified":m};if(R)X.ETag=R;if(r.corsOrigins.length>0)X["Access-Control-Allow-Origin"]=r.corsOrigins[0]==="*"?"*":r.corsOrigins.join(", "),X["Access-Control-Allow-Methods"]="GET, HEAD, OPTIONS";let C=i.headers.get("if-none-match");if(R&&C===R)return new Response(null,{status:304,headers:X});let E=Bun.file(b),Q=i.headers.get("range");if(r.enableRangeRequests&&Q){let u=Q.match(/bytes=(\d*)-(\d*)/);if(!u)return s.status=416,new Response("Range not satisfiable",{status:416,headers:{"Content-Range":`bytes */${$.size}`,"Content-Type":h,...X}});let U=u[1]||"0",P=u[2]||"",J=parseInt(U,10),F=P?parseInt(P,10):$.size-1;if(J>=$.size||F>=$.size||J>F)return new Response("Range not satisfiable",{status:416,headers:{"Content-Range":`bytes */${$.size}`,"Content-Type":h,...X}});let I=F-J+1,Y=E.slice(J,F+1);return new Response(Y,{status:206,headers:{"Content-Range":`bytes ${J}-${F}/${$.size}`,"Accept-Ranges":"bytes","Content-Length":I.toString(),"Content-Type":h,...X}})}let W=Y5(h),S=J5(g),z=encodeURIComponent(g),w=`${W}; filename="${S}"; filename*=UTF-8''${z}`;return new Response(E,{status:200,headers:{"Content-Length":$.size.toString(),"Content-Type":h,"Accept-Ranges":r.enableRangeRequests?"bytes":"none","Content-Disposition":w,...X}})},{params:Fe.Object({id:Fe.String()}),detail:{tags:["CDN"],summary:"Get file by ID",description:"Serve file with streaming, range requests, and caching support"}}),a.head("/:id",async({params:e,request:i,set:s})=>{let{id:l}=e,f=i.headers.get("x-schema-name")||void 0,b,g;if(c){let X=await c(l,f);if(!X)return s.status=404,new Response(null,{status:404});b=Oe.join(X.path,X.name),g=X.mime_type||"application/octet-stream"}else b=Oe.join(t,l),g="application/octet-stream";if(!await Rt.exists(b))return s.status=404,new Response(null,{status:404});let k=await Rt.getFileInfo(b),$=new Date(k.modifiedAt||Date.now()).toUTCString(),m=r.enableEtag?`"${k.size}-${k.modifiedAt?.getTime()||Date.now()}"`:void 0,R={"Content-Length":k.size.toString(),"Content-Type":g,"Accept-Ranges":r.enableRangeRequests?"bytes":"none","Cache-Control":`public, max-age=${r.cacheMaxAge}`,"Last-Modified":$};if(m)R.ETag=m;if(r.corsOrigins.length>0)R["Access-Control-Allow-Origin"]=r.corsOrigins[0]==="*"?"*":r.corsOrigins.join(", "),R["Access-Control-Allow-Methods"]="GET, HEAD, OPTIONS";return new Response(null,{status:200,headers:R})},{params:Fe.Object({id:Fe.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 Vo;var Gg=d(()=>{Ge();Vo={enabled:!0,basePath:"/cdn",cacheMaxAge:86400,enableRangeRequests:!0,enableEtag:!0,corsOrigins:["*"]}});import{randomUUID as X5}from"crypto";import Fl from"path";function ba(n){if(!n)return Vt;return{enabled:n.enabled??Vt.enabled,basePath:n.basePath??Vt.basePath,maxFileSizeBytes:n.maxFileSizeBytes??Vt.maxFileSizeBytes,allowedMimeTypes:n.allowedMimeTypes??Vt.allowedMimeTypes,blockedMimeTypes:n.blockedMimeTypes??Vt.blockedMimeTypes,formData:{filesField:n.formData?.filesField??Vt.formData.filesField,dataField:n.formData?.dataField??Vt.formData.dataField,maxFiles:n.formData?.maxFiles??Vt.formData.maxFiles}}}function ga(n,r){let t={data:{},files:[]};if(!n||typeof n!=="object")return t;let o=n,c=o[r.formData.dataField];if(c){if(typeof c==="string")try{t.data=JSON.parse(c)}catch{t.data={}}else if(typeof c==="object")t.data=c}let a=o[r.formData.filesField];if(a){if(a instanceof File)t.files=[a];else if(Array.isArray(a))t.files=a.filter((e)=>e instanceof File)}return t}function jl(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 Kl(n,r,t){let o=X5(),c=Fl.extname(n.name),a=`${o}${c}`,e=t?Fl.join(r.basePath,t):r.basePath,i=await n.arrayBuffer(),s=new Uint8Array(i);return await Rt.createFile({dir:e,name:a,data:s,options:{type:n.type,createDir:!0}}),{id:o,name:a,originalName:n.name,path:e,mimeType:n.type,size:n.size,createdAt:new Date}}async function ua(n,r,t){let o=[],c=[];for(let a of n.slice(0,r.formData.maxFiles)){let e=jl(a,r);if(!e.valid){c.push({file:a.name,error:e.error||"Unknown error"});continue}try{let i=await Kl(a,r,t);o.push(i)}catch(i){c.push({file:a.name,error:i instanceof Error?i.message:"Upload failed"})}}return{success:o,failed:c}}async function qg(n,r){try{let t=Fl.join(n,r);return await Rt.deleteFile(t)}catch{return!1}}var Vt;var Ng=d(()=>{Ge();Vt={enabled:!1,basePath:"./uploads",maxFileSizeBytes:104857600,allowedMimeTypes:[],blockedMimeTypes:["application/x-executable","application/x-msdos-program"],formData:{filesField:"files",dataField:"data",maxFiles:10}}});var Og={};Zt(Og,{validateFile:()=>jl,uploadFiles:()=>ua,uploadFile:()=>Kl,parseFormDataBody:()=>ga,mergeStorageConfig:()=>ba,mergeCdnConfig:()=>Nl,deleteFile:()=>qg,createCdnRoutes:()=>Ol});var je=d(()=>{Gg();Ng()});import{Elysia as U$,t as kr}from"elysia";function Yu(n){let{captchaService:r,logger:t,basePath:o="/auth/captcha"}=n,c=new U$;if(!r.isEnabled())return c;return c.get(`${o}/generate`,async(a)=>{let{type:e,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(e,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:B$,detail:{tags:["Captcha"],summary:"Generate Captcha",description:"Generate a new captcha challenge"}}),c.post(`${o}/validate`,async(a)=>{let{challengeId:e,answer:i}=a.body,s=await r.validate(e,i);if(!s.valid)a.set.status=400;return s},{body:x$,detail:{tags:["Captcha"],summary:"Validate Captcha",description:"Validate a captcha answer"}}),c}var B$,x$;var Ju=d(()=>{B$=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")]))}),x$=kr.Object({challengeId:kr.String(),answer:kr.String()})});import W$ from"crypto";var{password:Y$}=globalThis.Bun;async function bo(n){return await Y$.hash(n,{algorithm:"bcrypt",cost:10})}function ye(){return W$.randomBytes(32).toString("hex")}function Bc(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 Xu(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 xc=()=>{};import{sql as ni}from"drizzle-orm";import{Elysia as J$,t as ri}from"elysia";function ti(n){let{authConfig:r,registerConfig:t,emailService:o,appName:c}=n,{db:a,logger:e,usersTable:i}=r,s=new J$;if(!t.enabled||!t.emailVerification?.enabled)return s;let l="/verify-email",f="/resend-verification";return s.get(l,async(b)=>{if(!a||!i)return{success:!1,message:"Database not configured"};let g=b.query.token;if(!g)return{success:!1,message:"Verification token is required"};let h=await a.select().from(i).where(ni`email_verification_token = ${g}`).limit(1);if(h.length===0)return e.warn("[AUTH] Email verification failed - invalid token"),{success:!1,message:"Invalid or expired verification token"};let k=h[0],$=k.emailVerificationTokenExpiresAt;if($&&new Date>new Date($))return e.warn("[AUTH] Email verification failed - token expired",{userId:k.id,email:k.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(ni`id = ${k.id}`),e.info("[AUTH] Email verified successfully",{userId:k.id,email:k.email}),t.emailVerification?.templates?.welcome?.enabled&&o?.isAvailable())o.sendWelcomeEmail(k.email,k.email.split("@")[0]||"User",c||"Nucleus").catch((R)=>{e.error("[AUTH] Failed to send welcome email after verification",{email:k.email,error:R})});return{success:!0,message:"Email verified successfully. You can now log in.",data:{redirectUrl:t.emailVerification?.redirectUrl||"/login",verified:!0}}},{query:ri.Object({token:ri.String()}),detail:{tags:["Authentication"],summary:"Verify Email",description:"Verify user email address using the verification token"}}),s.post(f,async(b)=>{if(!a||!i)return{success:!1,message:"Database not configured"};if(!o?.isAvailable())return{success:!1,message:"Email service not available"};let{email:g}=b.body,h=await a.select().from(i).where(ni`email = ${g}`).limit(1);if(h.length===0)return{success:!0,message:"If your email is registered, you will receive a verification email."};let k=h[0];if(k.verifiedAt)return{success:!1,message:"Email is already verified"};let $=t.emailVerification?.maxResendAttempts||3,m=k.emailVerificationAttempts||0;if(m>=$)return e.warn("[AUTH] Resend verification failed - max attempts reached",{email:g,attempts:m}),{success:!1,message:"Maximum resend attempts reached. Please contact support.",data:{maxAttemptsReached:!0,attemptsUsed:m,maxAttempts:$}};let R=t.emailVerification?.resendCooldown||"60s",X=Bc(R),C=k.emailVerificationSentAt;if(C){let u=Date.now()-new Date(C).getTime();if(u<X){let U=Math.ceil((X-u)/1000);return{success:!1,message:`Please wait ${U} seconds before requesting another verification email.`,data:{cooldownRemaining:U,canResendAt:new Date(Date.now()+U*1000).toISOString()}}}}let E=ye(),Q=t.emailVerification?.tokenExpiresIn||"24h",W=new Date(Date.now()+Bc(Q));await a.update(i).set({emailVerificationToken:E,emailVerificationTokenExpiresAt:W,emailVerificationSentAt:new Date,emailVerificationAttempts:m+1}).where(ni`id = ${k.id}`);let z=`${(t.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${E}`,w=await o.sendVerificationEmail(g,g.split("@")[0]||"User",z,c||"Nucleus");if(w.success)return e.info("[AUTH] Verification email resent",{email:g}),{success:!0,message:"Verification email sent. Please check your inbox.",data:{cooldownSeconds:Math.ceil(X/1000),canResendAt:new Date(Date.now()+X).toISOString(),attemptsRemaining:$-(m+1)}};return e.error("[AUTH] Failed to resend verification email",{email:g,error:w.error}),{success:!1,message:"Failed to send verification email. Please try again later."}},{body:ri.Object({email:ri.String({format:"email"})}),detail:{tags:["Authentication"],summary:"Resend Verification Email",description:"Resend the email verification link to the user"}}),s}var bf=d(()=>{xc()});import Vu from"crypto";function oi(){return Vu.randomBytes(32).toString("hex")}function Pt(n){return Vu.createHash("sha256").update(n).digest("hex")}function ci(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 ai=()=>{};import{eq as X$}from"drizzle-orm";import{Elysia as V$,t as ei}from"elysia";function ii(n,r,t,o,c,a){let{db:e,logger:i,usersTable:s}=n,l=r.route||"/auth/invite",f=r.tokenExpiresIn||"7d",b=r.redirectUrl||"",g=new V$;if(!r.enabled)return g;if(g.post(l,async(h)=>{if(!e||!s)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return i.error("[AUTH] Invite requested but email service not available"),{success:!1,message:"Email service not available"};let{email:k}=h.body,$=await e.select().from(s).where(X$(s.email,k)).limit(1),m;if($.length>0){let W=$[0];if(W.verifiedAt||W.password)return i.warn("[AUTH] Invite failed - user already verified",{email:k}),{success:!1,message:"User with this email is already verified"};m=W.id,i.info("[AUTH] Resending invitation to existing unverified user",{userId:m,email:k})}else{let W={email:k,password:null,emailVerified:!1,isLocked:!1,createdAt:new Date,updatedAt:new Date},z=(await e.insert(s).values(W).returning())[0];if(!z)return i.error("[AUTH] Failed to create invited user",{email:k}),{success:!1,message:"Failed to create user"};m=z.id,i.info("[AUTH] Invited user created",{userId:m,email:k})}let R=oi(),X=Pt(R),C=new Date(Date.now()+ci(f));await o({userId:m,email:k,tokenHash:X,expiresAt:C});let E=b?`${b}?token=${R}&invite=true`:`/auth/magic-link/verify?token=${R}`,Q=await t.sendInvitationEmail(k,E,c||"Nucleus");if(!Q.success)return i.error("[AUTH] Failed to send invitation email",{email:k,error:Q.error}),{success:!0,message:"User created but failed to send invitation email",data:{id:m,email:k}};return i.info("[AUTH] Invitation email sent",{email:k,userId:m}),{success:!0,message:"Invitation sent successfully",data:{id:m,email:k}}},{body:C$,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)g.post(`${l}/verify`,async(h)=>{let{token:k}=h.body;if(!k)return{success:!1,message:"Token is required"};let $=Pt(k),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:ei.Object({token:ei.String()}),detail:{tags:["Authentication"],summary:"Verify Invite Token",description:"Validate an invite token without consuming it. Returns user info if valid."}});return g}var C$;var gf=d(()=>{ai();C$=ei.Object({email:ei.String({format:"email"})})});import{t as pn}from"elysia";var uf,L$;var _f=d(()=>{uf=pn.Object({email:pn.String({format:"email"}),password:pn.String({minLength:1}),rememberMe:pn.Optional(pn.Boolean()),captchaId:pn.Optional(pn.String()),captchaAnswer:pn.Optional(pn.String())}),L$=pn.Object({success:pn.Boolean(),message:pn.Optional(pn.String()),data:pn.Optional(pn.Object({user:pn.Object({id:pn.String(),email:pn.String()}),accessToken:pn.String(),refreshToken:pn.String()}))})});var{password:Q$}=globalThis.Bun;async function si(n,r){try{return await Q$.verify(n,r)}catch{return!1}}function Cu(n,r){let t=n.toLowerCase(),o=["headlesschrome","headless","phantomjs","nightmare","selenium","webdriver","puppeteer","playwright"],c=["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($)),e=c.some(($)=>t.includes($)),i=a||e,s=[];if(a)s.push("headless_browser");if(e)s.push("bot_user_agent");if(!t||t.length<10)s.push("missing_or_short_ua");if(t==="mozilla/5.0")s.push("generic_ua");if(t.includes("nucleusserveraction")||t.includes("serveraction"))s.push("server_action");let 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,b;if(a)f="Headless Browser";else if(e)f="Bot/Crawler";else if(t.includes("chrome")&&!t.includes("edg")){f="Chrome";let $=n.match(/Chrome\/(\d+\.\d+)/i);if($?.[1])b=$[1]}else if(t.includes("firefox")){f="Firefox";let $=n.match(/Firefox\/(\d+\.\d+)/i);if($?.[1])b=$[1]}else if(t.includes("safari")&&!t.includes("chrome")){f="Safari";let $=n.match(/Version\/(\d+\.\d+)/i);if($?.[1])b=$[1]}else if(t.includes("edg")){f="Edge";let $=n.match(/Edg\/(\d+\.\d+)/i);if($?.[1])b=$[1]}let g,h;if(t.includes("windows nt 10"))g="Windows",h="10/11";else if(t.includes("windows nt"))g="Windows";else if(t.includes("mac os x")){g="macOS";let $=n.match(/Mac OS X (\d+[._]\d+)/i);if($?.[1])h=$[1].replace("_",".")}else if(t.includes("android")){g="Android";let $=n.match(/Android (\d+\.?\d*)/i);if($?.[1])h=$[1]}else if(t.includes("iphone")||t.includes("ipad")){g="iOS";let $=n.match(/OS (\d+[._]\d+)/i);if($?.[1])h=$[1].replace("_",".")}else if(t.includes("linux"))g="Linux";return{deviceName:f&&g?`${f} on ${g}`:"Unknown Device",deviceType:l,browserName:f,browserVersion:b,osName:g,osVersion:h,ipAddress:r,userAgent:n,locationCountry:void 0,locationCity:void 0,isHeadless:a,isBot:e,isSuspicious:i,suspiciousPatterns:s}}var mf=()=>{};import{eq as wf}from"drizzle-orm";import{Elysia as P$}from"elysia";function li(n,r,t,o,c,a,e,i,s){let{db:l,logger:f,usersTable:b}=n,g=r.route||"/auth/login",h={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"strict",path:e?.path||"/"},k=new P$;if(!r.enabled)return k;return k.post(g,async($)=>{if(!l||!b)return{success:!1,message:"Database not configured"};let{email:m,password:R,rememberMe:X,captchaId:C,captchaAnswer:E}=$.body;if(s?.isEnabled()){if(!C||!E)return $.set.status=400,{success:!1,message:"Captcha is required"};let v=await s.validate(C,E);if(!v.valid)return $.set.status=400,{success:!1,message:v.message||"Invalid captcha",attemptsRemaining:v.attemptsRemaining}}let W=(await l.select().from(b).where(wf(b.email,m)).limit(1))[0];if(!W)return f.warn("[AUTH] Login failed - user not found",{email:m}),{success:!1,message:"Invalid email or password"};if(W.isLocked)return f.warn("[AUTH] Login failed - account locked",{email:m,userId:W.id}),{success:!1,message:"Account is locked"};if(!await si(R,W.password)){let v=(W.failedLoginAttempts||0)+1;return await l.update(b).set({failedLoginAttempts:v,isLocked:v>=5,lockedUntil:v>=5?new Date(Date.now()+1800000):null}).where(wf(b.id,W.id)),f.warn("[AUTH] Login failed - invalid password",{email:m,failedAttempts:v}),{success:!1,message:"Invalid email or password"}}await l.update(b).set({failedLoginAttempts:0,lastLoginAt:new Date,loginCount:(W.loginCount||0)+1}).where(wf(b.id,W.id));let z={};$.request.headers.forEach((v,dn)=>{z[dn]=v}),f.info("[AUTH] Login request headers",{headers:z});let w=$.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim(),u=(v)=>!v||v==="127.0.0.1"||v==="::1"||v==="localhost"||v.startsWith("10.")||v.startsWith("192.168.")||v.startsWith("172."),U=$.request.headers.get("cf-connecting-ip")?.trim()||$.request.headers.get("true-client-ip")?.trim()||(!u(w)?w:void 0)||$.request.headers.get("x-real-ip")?.trim()||$.request.headers.get("x-client-ip")?.trim()||w||"127.0.0.1",P=$.request.headers.get("user-agent")||"Unknown Browser";f.info("[AUTH] Parsed device info",{ipAddress:U,userAgent:P});let J=Cu(P,U);try{if(!u(U)){let v=await fetch(`http://ip-api.com/json/${U}?fields=country,city`);if(v.ok){let dn=await v.json();if(dn.country)J.locationCountry=dn.country;if(dn.city)J.locationCity=dn.city}}}catch{}let F=t(W.id),I=o(W.id),Y={userId:W.id,deviceInfo:J,loginMethod:"password",rememberMe:X},B=await c(Y);if(a)await a(B,Y);f.info("[AUTH] Login successful",{userId:W.id,email:m,rememberMe:X});let D={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}},x=h.secure?"; Secure":"",N=`; Path=${h.path}; HttpOnly; SameSite=${h.sameSite}${x}`,j=[];if(D.accessToken.setHeadersEnabled)j.push(`${h.accessTokenName}=${F}${N}; Max-Age=${h.accessTokenMaxAge}`);if(D.refreshToken.setHeadersEnabled)j.push(`${h.refreshTokenName}=${I}${N}; Max-Age=${h.refreshTokenMaxAge}`);if(D.sessionToken.setHeadersEnabled)j.push(`${h.sessionTokenName}=${B}${N}; Max-Age=${h.sessionTokenMaxAge}`);$.set.headers["x-session-id"]=B;let K={user:{id:W.id,email:W.email}};if(D.accessToken.returnJson)K.accessToken=F;if(D.refreshToken.returnJson)K.refreshToken=I;if(D.sessionToken.returnJson)K.sessionId=B;let q=JSON.stringify({success:!0,data:K}),tn=new Headers;tn.set("Content-Type","application/json"),tn.set("x-session-id",B);for(let v of j)tn.append("Set-Cookie",v);return new Response(q,{status:200,headers:tn})},{body:uf,detail:{tags:["Authentication"],summary:"Login",description:"Authenticate user with email and password"}}),k}var hf=d(()=>{_f();mf();_f()});function Lu(){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 fi}from"elysia";var G$;var Qu=d(()=>{G$=fi.Object({success:fi.Boolean(),message:fi.Optional(fi.String())})});import{Elysia as q$}from"elysia";function di(n,r,t,o){let{logger:c}=n,a=r.route||"/auth/logout",e=new q$;if(!r.enabled)return e;return e.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=Lu();for(let[b,g]of Object.entries(f))i.set.headers[b]=g;return c.info("[AUTH] Logout successful",{userId:l,sessionId:s}),{success:!0,message:"Logged out successfully"}},{detail:{tags:["Authentication"],summary:"Logout",description:"Logout and invalidate session"}}),e}var $f=d(()=>{Qu()});var _r={};Zt(_r,{IsUndefined:()=>jn,IsUint8Array:()=>qt,IsSymbol:()=>Ef,IsString:()=>Bn,IsRegExp:()=>Ha,IsObject:()=>Mn,IsNumber:()=>Xr,IsNull:()=>Sf,IsIterator:()=>Af,IsFunction:()=>Rf,IsDate:()=>No,IsBoolean:()=>Gt,IsBigInt:()=>Da,IsAsyncIterator:()=>kf,IsArray:()=>Fn,HasPropertyKey:()=>bi});function bi(n,r){return r in n}function kf(n){return Mn(n)&&!Fn(n)&&!qt(n)&&Symbol.asyncIterator in n}function Fn(n){return Array.isArray(n)}function Da(n){return typeof n==="bigint"}function Gt(n){return typeof n==="boolean"}function No(n){return n instanceof globalThis.Date}function Rf(n){return typeof n==="function"}function Af(n){return Mn(n)&&!Fn(n)&&!qt(n)&&Symbol.iterator in n}function Sf(n){return n===null}function Xr(n){return typeof n==="number"}function Mn(n){return typeof n==="object"&&n!==null}function Ha(n){return n instanceof globalThis.RegExp}function Bn(n){return typeof n==="string"}function Ef(n){return typeof n==="symbol"}function qt(n){return n instanceof globalThis.Uint8Array}function jn(n){return n===void 0}function N$(n){return n.map((r)=>gi(r))}function O$(n){return new Date(n.getTime())}function F$(n){return new Uint8Array(n)}function j$(n){return new RegExp(n.source,n.flags)}function K$(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=gi(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=gi(n[t]);return r}function gi(n){return Fn(n)?N$(n):No(n)?O$(n):qt(n)?F$(n):Ha(n)?j$(n):Mn(n)?K$(n):n}function Yn(n){return gi(n)}var Er=()=>{};function Wc(n,r){return r===void 0?Yn(n):Yn({...r,...n})}var ui=d(()=>{Er()});var Mf=d(()=>{ui();Er()});function Pu(n){return n!==null&&typeof n==="object"}function Gu(n){return globalThis.Array.isArray(n)&&!globalThis.ArrayBuffer.isView(n)}function qu(n){return n===void 0}function Nu(n){return typeof n==="number"}var Ou=()=>{};var _i;var Fu=d(()=>{Ou();(function(n){n.InstanceMode="default",n.ExactOptionalPropertyTypes=!1,n.AllowArrayObject=!1,n.AllowNaN=!1,n.AllowNullVoid=!1;function r(e,i){return n.ExactOptionalPropertyTypes?i in e:e[i]!==void 0}n.IsExactOptionalProperty=r;function t(e){let i=Pu(e);return n.AllowArrayObject?i:i&&!Gu(e)}n.IsObjectLike=t;function o(e){return t(e)&&!(e instanceof Date)&&!(e instanceof Uint8Array)}n.IsRecordLike=o;function c(e){return n.AllowNaN?Nu(e):Number.isFinite(e)}n.IsNumberLike=c;function a(e){let i=qu(e);return n.AllowNullVoid?i||e===null:i}n.IsVoidLike=a})(_i||(_i={}))});function T$(n){return globalThis.Object.freeze(n).map((r)=>za(r))}function v$(n){return n}function p$(n){return n}function I$(n){return n}function Z$(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=za(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=za(n[t]);return globalThis.Object.freeze(r)}function za(n){return Fn(n)?T$(n):No(n)?v$(n):qt(n)?p$(n):Ha(n)?I$(n):Mn(n)?Z$(n):n}var ju=()=>{};function M(n,r){let t=r!==void 0?{...r,...n}:n;switch(_i.InstanceMode){case"freeze":return za(t);case"clone":return Yn(t);default:return t}}var Z=d(()=>{Fu();ju();Er()});var Nt=d(()=>{Z()});var lr;var Ku=d(()=>{lr=class lr extends Error{constructor(n){super(n)}}});var Mt=d(()=>{Ku()});var In,lt,fr,Tr,L;var Ua=d(()=>{In=Symbol.for("TypeBox.Transform"),lt=Symbol.for("TypeBox.Readonly"),fr=Symbol.for("TypeBox.Optional"),Tr=Symbol.for("TypeBox.Hint"),L=Symbol.for("TypeBox.Kind")});var nn=d(()=>{Ua()});function Yc(n){return Mn(n)&&n[lt]==="Readonly"}function Mr(n){return Mn(n)&&n[fr]==="Optional"}function Df(n){return fn(n,"Any")}function Hf(n){return fn(n,"Argument")}function ft(n){return fn(n,"Array")}function Oo(n){return fn(n,"AsyncIterator")}function Fo(n){return fn(n,"BigInt")}function Ot(n){return fn(n,"Boolean")}function dt(n){return fn(n,"Computed")}function bt(n){return fn(n,"Constructor")}function y$(n){return fn(n,"Date")}function gt(n){return fn(n,"Function")}function ut(n){return fn(n,"Integer")}function Cn(n){return fn(n,"Intersect")}function jo(n){return fn(n,"Iterator")}function fn(n,r){return Mn(n)&&L in n&&n[L]===r}function mi(n){return Gt(n)||Xr(n)||Bn(n)}function Vr(n){return fn(n,"Literal")}function Cr(n){return fn(n,"MappedKey")}function Jn(n){return fn(n,"MappedResult")}function go(n){return fn(n,"Never")}function nk(n){return fn(n,"Not")}function Ba(n){return fn(n,"Null")}function _t(n){return fn(n,"Number")}function Kn(n){return fn(n,"Object")}function Ko(n){return fn(n,"Promise")}function To(n){return fn(n,"Record")}function Pn(n){return fn(n,"Ref")}function zf(n){return fn(n,"RegExp")}function Ft(n){return fn(n,"String")}function xa(n){return fn(n,"Symbol")}function Lr(n){return fn(n,"TemplateLiteral")}function rk(n){return fn(n,"This")}function uo(n){return Mn(n)&&In in n}function Qr(n){return fn(n,"Tuple")}function Wa(n){return fn(n,"Undefined")}function gn(n){return fn(n,"Union")}function tk(n){return fn(n,"Uint8Array")}function ok(n){return fn(n,"Unknown")}function ck(n){return fn(n,"Unsafe")}function ak(n){return fn(n,"Void")}function ek(n){return Mn(n)&&L in n&&Bn(n[L])}function Pr(n){return Df(n)||Hf(n)||ft(n)||Ot(n)||Fo(n)||Oo(n)||dt(n)||bt(n)||y$(n)||gt(n)||ut(n)||Cn(n)||jo(n)||Vr(n)||Cr(n)||Jn(n)||go(n)||nk(n)||Ba(n)||_t(n)||Kn(n)||Ko(n)||To(n)||Pn(n)||zf(n)||Ft(n)||xa(n)||Lr(n)||rk(n)||Qr(n)||Wa(n)||gn(n)||tk(n)||ok(n)||ck(n)||ak(n)||ek(n)}var wn=d(()=>{nn()});var _={};Zt(_,{TypeGuardUnknownTypeError:()=>Tu,IsVoid:()=>X_,IsUnsafe:()=>J_,IsUnknown:()=>Y_,IsUnionLiteral:()=>_k,IsUnion:()=>xf,IsUndefined:()=>x_,IsUint8Array:()=>W_,IsTuple:()=>B_,IsTransform:()=>U_,IsThis:()=>z_,IsTemplateLiteral:()=>H_,IsSymbol:()=>D_,IsString:()=>M_,IsSchema:()=>er,IsRegExp:()=>E_,IsRef:()=>S_,IsRecursive:()=>uk,IsRecord:()=>A_,IsReadonly:()=>fk,IsProperties:()=>wi,IsPromise:()=>R_,IsOptional:()=>dk,IsObject:()=>k_,IsNumber:()=>$_,IsNull:()=>h_,IsNot:()=>w_,IsNever:()=>m_,IsMappedResult:()=>__,IsMappedKey:()=>u_,IsLiteralValue:()=>g_,IsLiteralString:()=>d_,IsLiteralNumber:()=>b_,IsLiteralBoolean:()=>gk,IsLiteral:()=>Ja,IsKindOf:()=>sn,IsKind:()=>V_,IsIterator:()=>f_,IsIntersect:()=>l_,IsInteger:()=>s_,IsImport:()=>bk,IsFunction:()=>i_,IsDate:()=>e_,IsConstructor:()=>a_,IsComputed:()=>c_,IsBoolean:()=>o_,IsBigInt:()=>t_,IsAsyncIterator:()=>r_,IsArray:()=>n_,IsArgument:()=>yu,IsAny:()=>Zu});function vu(n){try{return new RegExp(n),!0}catch{return!1}}function Uf(n){if(!Bn(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 pu(n){return Bf(n)||er(n)}function Ya(n){return jn(n)||Da(n)}function xn(n){return jn(n)||Xr(n)}function Bf(n){return jn(n)||Gt(n)}function Dn(n){return jn(n)||Bn(n)}function sk(n){return jn(n)||Bn(n)&&Uf(n)&&vu(n)}function lk(n){return jn(n)||Bn(n)&&Uf(n)}function Iu(n){return jn(n)||er(n)}function fk(n){return Mn(n)&&n[lt]==="Readonly"}function dk(n){return Mn(n)&&n[fr]==="Optional"}function Zu(n){return sn(n,"Any")&&Dn(n.$id)}function yu(n){return sn(n,"Argument")&&Xr(n.index)}function n_(n){return sn(n,"Array")&&n.type==="array"&&Dn(n.$id)&&er(n.items)&&xn(n.minItems)&&xn(n.maxItems)&&Bf(n.uniqueItems)&&Iu(n.contains)&&xn(n.minContains)&&xn(n.maxContains)}function r_(n){return sn(n,"AsyncIterator")&&n.type==="AsyncIterator"&&Dn(n.$id)&&er(n.items)}function t_(n){return sn(n,"BigInt")&&n.type==="bigint"&&Dn(n.$id)&&Ya(n.exclusiveMaximum)&&Ya(n.exclusiveMinimum)&&Ya(n.maximum)&&Ya(n.minimum)&&Ya(n.multipleOf)}function o_(n){return sn(n,"Boolean")&&n.type==="boolean"&&Dn(n.$id)}function c_(n){return sn(n,"Computed")&&Bn(n.target)&&Fn(n.parameters)&&n.parameters.every((r)=>er(r))}function a_(n){return sn(n,"Constructor")&&n.type==="Constructor"&&Dn(n.$id)&&Fn(n.parameters)&&n.parameters.every((r)=>er(r))&&er(n.returns)}function e_(n){return sn(n,"Date")&&n.type==="Date"&&Dn(n.$id)&&xn(n.exclusiveMaximumTimestamp)&&xn(n.exclusiveMinimumTimestamp)&&xn(n.maximumTimestamp)&&xn(n.minimumTimestamp)&&xn(n.multipleOfTimestamp)}function i_(n){return sn(n,"Function")&&n.type==="Function"&&Dn(n.$id)&&Fn(n.parameters)&&n.parameters.every((r)=>er(r))&&er(n.returns)}function bk(n){return sn(n,"Import")&&bi(n,"$defs")&&Mn(n.$defs)&&wi(n.$defs)&&bi(n,"$ref")&&Bn(n.$ref)&&n.$ref in n.$defs}function s_(n){return sn(n,"Integer")&&n.type==="integer"&&Dn(n.$id)&&xn(n.exclusiveMaximum)&&xn(n.exclusiveMinimum)&&xn(n.maximum)&&xn(n.minimum)&&xn(n.multipleOf)}function wi(n){return Mn(n)&&Object.entries(n).every(([r,t])=>Uf(r)&&er(t))}function l_(n){return sn(n,"Intersect")&&(Bn(n.type)&&n.type!=="object"?!1:!0)&&Fn(n.allOf)&&n.allOf.every((r)=>er(r)&&!U_(r))&&Dn(n.type)&&(Bf(n.unevaluatedProperties)||Iu(n.unevaluatedProperties))&&Dn(n.$id)}function f_(n){return sn(n,"Iterator")&&n.type==="Iterator"&&Dn(n.$id)&&er(n.items)}function sn(n,r){return Mn(n)&&L in n&&n[L]===r}function d_(n){return Ja(n)&&Bn(n.const)}function b_(n){return Ja(n)&&Xr(n.const)}function gk(n){return Ja(n)&&Gt(n.const)}function Ja(n){return sn(n,"Literal")&&Dn(n.$id)&&g_(n.const)}function g_(n){return Gt(n)||Xr(n)||Bn(n)}function u_(n){return sn(n,"MappedKey")&&Fn(n.keys)&&n.keys.every((r)=>Xr(r)||Bn(r))}function __(n){return sn(n,"MappedResult")&&wi(n.properties)}function m_(n){return sn(n,"Never")&&Mn(n.not)&&Object.getOwnPropertyNames(n.not).length===0}function w_(n){return sn(n,"Not")&&er(n.not)}function h_(n){return sn(n,"Null")&&n.type==="null"&&Dn(n.$id)}function $_(n){return sn(n,"Number")&&n.type==="number"&&Dn(n.$id)&&xn(n.exclusiveMaximum)&&xn(n.exclusiveMinimum)&&xn(n.maximum)&&xn(n.minimum)&&xn(n.multipleOf)}function k_(n){return sn(n,"Object")&&n.type==="object"&&Dn(n.$id)&&wi(n.properties)&&pu(n.additionalProperties)&&xn(n.minProperties)&&xn(n.maxProperties)}function R_(n){return sn(n,"Promise")&&n.type==="Promise"&&Dn(n.$id)&&er(n.item)}function A_(n){return sn(n,"Record")&&n.type==="object"&&Dn(n.$id)&&pu(n.additionalProperties)&&Mn(n.patternProperties)&&((r)=>{let t=Object.getOwnPropertyNames(r.patternProperties);return t.length===1&&vu(t[0])&&Mn(r.patternProperties)&&er(r.patternProperties[t[0]])})(n)}function uk(n){return Mn(n)&&Tr in n&&n[Tr]==="Recursive"}function S_(n){return sn(n,"Ref")&&Dn(n.$id)&&Bn(n.$ref)}function E_(n){return sn(n,"RegExp")&&Dn(n.$id)&&Bn(n.source)&&Bn(n.flags)&&xn(n.maxLength)&&xn(n.minLength)}function M_(n){return sn(n,"String")&&n.type==="string"&&Dn(n.$id)&&xn(n.minLength)&&xn(n.maxLength)&&sk(n.pattern)&&lk(n.format)}function D_(n){return sn(n,"Symbol")&&n.type==="symbol"&&Dn(n.$id)}function H_(n){return sn(n,"TemplateLiteral")&&n.type==="string"&&Bn(n.pattern)&&n.pattern[0]==="^"&&n.pattern[n.pattern.length-1]==="$"}function z_(n){return sn(n,"This")&&Dn(n.$id)&&Bn(n.$ref)}function U_(n){return Mn(n)&&In in n}function B_(n){return sn(n,"Tuple")&&n.type==="array"&&Dn(n.$id)&&Xr(n.minItems)&&Xr(n.maxItems)&&n.minItems===n.maxItems&&(jn(n.items)&&jn(n.additionalItems)&&n.minItems===0||Fn(n.items)&&n.items.every((r)=>er(r)))}function x_(n){return sn(n,"Undefined")&&n.type==="undefined"&&Dn(n.$id)}function _k(n){return xf(n)&&n.anyOf.every((r)=>d_(r)||b_(r))}function xf(n){return sn(n,"Union")&&Dn(n.$id)&&Mn(n)&&Fn(n.anyOf)&&n.anyOf.every((r)=>er(r))}function W_(n){return sn(n,"Uint8Array")&&n.type==="Uint8Array"&&Dn(n.$id)&&xn(n.minByteLength)&&xn(n.maxByteLength)}function Y_(n){return sn(n,"Unknown")&&Dn(n.$id)}function J_(n){return sn(n,"Unsafe")}function X_(n){return sn(n,"Void")&&n.type==="void"&&Dn(n.$id)}function V_(n){return Mn(n)&&L in n&&Bn(n[L])&&!ik.includes(n[L])}function er(n){return Mn(n)&&(Zu(n)||yu(n)||n_(n)||o_(n)||t_(n)||r_(n)||c_(n)||a_(n)||e_(n)||i_(n)||s_(n)||l_(n)||f_(n)||Ja(n)||u_(n)||__(n)||m_(n)||w_(n)||h_(n)||$_(n)||k_(n)||R_(n)||A_(n)||S_(n)||E_(n)||M_(n)||D_(n)||H_(n)||z_(n)||B_(n)||x_(n)||xf(n)||W_(n)||Y_(n)||J_(n)||X_(n)||V_(n))}var Tu,ik;var C_=d(()=>{nn();Mt();Tu=class Tu extends lr{};ik=["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 Wf=d(()=>{wn();C_()});var L_=()=>{};var Q_="(true|false)",hi="(0|[1-9][0-9]*)",P_="(.*)",_o="^(0|[1-9][0-9]*)$",mo="^(.*)$",G_="^(?!.*)$";var Xa=()=>{};var q_=()=>{};var N_=()=>{};var O_=d(()=>{q_();N_()});function F_(n,r){return n.includes(r)}function j_(n){return[...new Set(n)]}function hk(n,r){return n.filter((t)=>r.includes(t))}function $k(n,r){return n.reduce((t,o)=>{return hk(t,o)},r)}function K_(n){return n.length===1?n[0]:n.length>1?$k(n.slice(1),n[0]):[]}function T_(n){let r=[];for(let t of n)r.push(...t);return r}var Va=()=>{};function wo(n){return M({[L]:"Any"},n)}var v_=d(()=>{Nt();nn()});var Ca=d(()=>{v_()});function Jc(n,r){return M({[L]:"Array",type:"array",items:n},r)}var p_=d(()=>{Z();nn()});var La=d(()=>{p_()});function I_(n){return M({[L]:"Argument",index:n})}var Z_=d(()=>{Z();nn()});var Yf=d(()=>{Z_()});function Xc(n,r){return M({[L]:"AsyncIterator",type:"AsyncIterator",items:n},r)}var y_=d(()=>{nn();Z()});var Qa=d(()=>{y_()});function Wn(n,r,t){return M({[L]:"Computed",target:n,parameters:r},t)}var nm=d(()=>{Nt();Ua()});var ho=d(()=>{nm()});function kk(n,r){let{[r]:t,...o}=n;return o}function Ln(n,r){return r.reduce((t,o)=>kk(t,o),n)}var Kt=()=>{};function un(n){return M({[L]:"Never",not:{}},n)}var rm=d(()=>{Z();nn()});var dr=d(()=>{rm()});var tm=()=>{};function hn(n){return M({[L]:"MappedResult",properties:n})}var Jf=d(()=>{Z();nn()});function Vc(n,r,t){return M({[L]:"Constructor",type:"Constructor",parameters:n,returns:r},t)}var om=d(()=>{Z();nn()});var Pa=d(()=>{om()});function Dt(n,r,t){return M({[L]:"Function",type:"Function",parameters:n,returns:r},t)}var cm=d(()=>{Z();nn()});var vo=d(()=>{cm()});function Ga(n,r){return M({[L]:"Union",anyOf:n},r)}var Xf=d(()=>{Z();nn()});function Rk(n){return n.some((r)=>Mr(r))}function am(n){return n.map((r)=>Mr(r)?Ak(r):r)}function Ak(n){return Ln(n,[fr])}function Sk(n,r){return Rk(n)?mr(Ga(am(n),r)):Ga(am(n),r)}function Ht(n,r){return n.length===1?M(n[0],r):n.length===0?un(r):Sk(n,r)}var em=d(()=>{Z();nn();Kt();dr();Tt();Xf();wn()});var im=()=>{};function An(n,r){return n.length===0?un(r):n.length===1?M(n[0],r):Ga(n,r)}var sm=d(()=>{dr();Z();Xf()});var Zn=d(()=>{em();im();sm()});function Ek(n){return n.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function Cf(n,r,t){return n[r]===t&&n.charCodeAt(r-1)!==92}function vt(n,r){return Cf(n,r,"(")}function qa(n,r){return Cf(n,r,")")}function lm(n,r){return Cf(n,r,"|")}function Mk(n){if(!(vt(n,0)&&qa(n,n.length-1)))return!1;let r=0;for(let t=0;t<n.length;t++){if(vt(n,t))r+=1;if(qa(n,t))r-=1;if(r===0&&t!==n.length-1)return!1}return!0}function Dk(n){return n.slice(1,n.length-1)}function Hk(n){let r=0;for(let t=0;t<n.length;t++){if(vt(n,t))r+=1;if(qa(n,t))r-=1;if(lm(n,t)&&r===0)return!0}return!1}function zk(n){for(let r=0;r<n.length;r++)if(vt(n,r))return!0;return!1}function Uk(n){let[r,t]=[0,0],o=[];for(let a=0;a<n.length;a++){if(vt(n,a))r+=1;if(qa(n,a))r-=1;if(lm(n,a)&&r===0){let e=n.slice(t,a);if(e.length>0)o.push(Cc(e));t=a+1}}let c=n.slice(t);if(c.length>0)o.push(Cc(c));if(o.length===0)return{type:"const",const:""};if(o.length===1)return o[0];return{type:"or",expr:o}}function Bk(n){function r(c,a){if(!vt(c,a))throw new Vf("TemplateLiteralParser: Index must point to open parens");let e=0;for(let i=a;i<c.length;i++){if(vt(c,i))e+=1;if(qa(c,i))e-=1;if(e===0)return[a,i]}throw new Vf("TemplateLiteralParser: Unclosed group parens in expression")}function t(c,a){for(let e=a;e<c.length;e++)if(vt(c,e))return[a,e];return[a,c.length]}let o=[];for(let c=0;c<n.length;c++)if(vt(n,c)){let[a,e]=r(n,c),i=n.slice(a,e+1);o.push(Cc(i)),c=e}else{let[a,e]=t(n,c),i=n.slice(a,e);if(i.length>0)o.push(Cc(i));c=e-1}return o.length===0?{type:"const",const:""}:o.length===1?o[0]:{type:"and",expr:o}}function Cc(n){return Mk(n)?Cc(Dk(n)):Hk(n)?Uk(n):zk(n)?Bk(n):{type:"const",const:Ek(n)}}function Lc(n){return Cc(n.slice(1,n.length-1))}var Vf;var $i=d(()=>{Mt();Vf=class Vf extends lr{}});function xk(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 Wk(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 Yk(n){return n.type==="const"&&n.const===".*"}function po(n){return xk(n)||Yk(n)?!1:Wk(n)?!0:n.type==="and"?n.expr.every((r)=>po(r)):n.type==="or"?n.expr.every((r)=>po(r)):n.type==="const"?!0:(()=>{throw new fm("Unknown expression type")})()}function dm(n){let r=Lc(n.pattern);return po(r)}var fm;var Lf=d(()=>{$i();Mt();fm=class fm extends lr{}});function*gm(n){if(n.length===1)return yield*n[0];for(let r of n[0])for(let t of gm(n.slice(1)))yield`${r}${t}`}function*Jk(n){return yield*gm(n.expr.map((r)=>[...Na(r)]))}function*Xk(n){for(let r of n.expr)yield*Na(r)}function*Vk(n){return yield n.const}function*Na(n){return n.type==="and"?yield*Jk(n):n.type==="or"?yield*Xk(n):n.type==="const"?yield*Vk(n):(()=>{throw new bm("Unknown expression")})()}function ki(n){let r=Lc(n.pattern);return po(r)?[...Na(r)]:[]}var bm;var Qf=d(()=>{Lf();$i();Mt();bm=class bm extends lr{}});function kn(n,r){return M({[L]:"Literal",const:n,type:typeof n},r)}var um=d(()=>{Z();nn()});var Dr=d(()=>{um()});function Ri(n){return M({[L]:"Boolean",type:"boolean"},n)}var _m=d(()=>{nn();Nt()});var Ai=d(()=>{_m()});function Qc(n){return M({[L]:"BigInt",type:"bigint"},n)}var mm=d(()=>{nn();Nt()});var Oa=d(()=>{mm()});function vr(n){return M({[L]:"Number",type:"number"},n)}var wm=d(()=>{Z();nn()});var Io=d(()=>{wm()});function mt(n){return M({[L]:"String",type:"string"},n)}var hm=d(()=>{Z();nn()});var Pc=d(()=>{hm()});function*Ck(n){let r=n.trim().replace(/"|'/g,"");return r==="boolean"?yield Ri():r==="number"?yield vr():r==="bigint"?yield Qc():r==="string"?yield mt():yield(()=>{let t=r.split("|").map((o)=>kn(o.trim()));return t.length===0?un():t.length===1?t[0]:Ht(t)})()}function*Lk(n){if(n[1]!=="{"){let r=kn("$"),t=Pf(n.slice(1));return yield*[r,...t]}for(let r=2;r<n.length;r++)if(n[r]==="}"){let t=Ck(n.slice(2,r)),o=Pf(n.slice(r+1));return yield*[...t,...o]}yield kn(n)}function*Pf(n){for(let r=0;r<n.length;r++)if(n[r]==="$"){let t=kn(n.slice(0,r)),o=Lk(n.slice(r));return yield*[t,...o]}yield kn(n)}function $m(n){return[...Pf(n)]}var Gf=d(()=>{Dr();Ai();Oa();Io();Pc();Zn();dr()});function Qk(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Rm(n,r){return Lr(n)?n.pattern.slice(1,n.pattern.length-1):gn(n)?`(${n.anyOf.map((t)=>Rm(t,r)).join("|")})`:_t(n)?`${r}${hi}`:ut(n)?`${r}${hi}`:Fo(n)?`${r}${hi}`:Ft(n)?`${r}${P_}`:Vr(n)?`${r}${Qk(n.const.toString())}`:Ot(n)?`${r}${Q_}`:(()=>{throw new km(`Unexpected Kind '${n[L]}'`)})()}function qf(n){return`^${n.map((r)=>Rm(r,"")).join("")}$`}var km;var Nf=d(()=>{Xa();nn();Mt();wn();km=class km extends lr{}});function Zo(n){let t=ki(n).map((o)=>kn(o));return Ht(t)}var Am=d(()=>{Zn();Dr();Qf()});function Si(n,r){let t=Bn(n)?qf($m(n)):qf(n);return M({[L]:"TemplateLiteral",type:"string",pattern:t},r)}var Sm=d(()=>{Z();Gf();Nf();nn()});var pt=d(()=>{Lf();Qf();Gf();$i();Nf();Am();Sm()});function Pk(n){return ki(n).map((t)=>t.toString())}function Gk(n){let r=[];for(let t of n)r.push(...Hr(t));return r}function qk(n){return[n.toString()]}function Hr(n){return[...new Set(Lr(n)?Pk(n):gn(n)?Gk(n.anyOf):Vr(n)?qk(n.const):_t(n)?["[number]"]:ut(n)?["[number]"]:[])]}var Ei=d(()=>{pt();wn()});function Nk(n,r,t){let o={};for(let c of Object.getOwnPropertyNames(r))o[c]=$o(n,Hr(r[c]),t);return o}function Ok(n,r,t){return Nk(n,r.properties,t)}function Em(n,r,t){let o=Ok(n,r,t);return hn(o)}var Of=d(()=>{or();Ei();zt()});function Dm(n,r){return n.map((t)=>Hm(t,r))}function Fk(n){return n.filter((r)=>!go(r))}function jk(n,r){return Mi(Fk(Dm(n,r)))}function Kk(n){return n.some((r)=>go(r))?[]:n}function Tk(n,r){return Ht(Kk(Dm(n,r)))}function vk(n,r){return r in n?n[r]:r==="[number]"?Ht(n):un()}function pk(n,r){return r==="[number]"?n:un()}function Ik(n,r){return r in n?n[r]:un()}function Hm(n,r){return Cn(n)?jk(n.allOf,r):gn(n)?Tk(n.anyOf,r):Qr(n)?vk(n.items??[],r):ft(n)?pk(n.items,r):Kn(n)?Ik(n.properties,r):un()}function Ff(n,r){return r.map((t)=>Hm(n,t))}function Mm(n,r){return Ht(Ff(n,r))}function $o(n,r,t){if(Pn(n)||Pn(r)){if(!Pr(n)||!Pr(r))throw new lr("Index types using Ref parameters require both Type and Key to be of TSchema");return Wn("Index",[n,r])}if(Jn(r))return Em(n,r,t);if(Cr(r))return zm(n,r,t);return M(Pr(r)?Mm(n,Hr(r)):Mm(n,r),t)}var jf=d(()=>{Z();Mt();ho();dr();pr();Zn();Ei();Kf();Of();wn()});function Zk(n,r,t){return{[r]:$o(n,[r],Yn(t))}}function yk(n,r,t){return r.reduce((o,c)=>{return{...o,...Zk(n,c,t)}},{})}function nR(n,r,t){return yk(n,r.keys,t)}function zm(n,r,t){let o=nR(n,r,t);return hn(o)}var Kf=d(()=>{jf();or();Er()});var zt=d(()=>{Kf();Of();Ei();jf()});function Gc(n,r){return M({[L]:"Iterator",type:"Iterator",items:n},r)}var Um=d(()=>{Z();nn()});var Fa=d(()=>{Um()});function rR(n){return globalThis.Object.keys(n).filter((r)=>!Mr(n[r]))}function tR(n,r){let t=rR(n),o=t.length>0?{[L]:"Object",type:"object",required:t,properties:n}:{[L]:"Object",type:"object",properties:n};return M(o,r)}var Hn;var Bm=d(()=>{Z();nn();wn();Hn=tR});var Gr=d(()=>{Bm()});function Di(n,r){return M({[L]:"Promise",type:"Promise",item:n},r)}var xm=d(()=>{Z();nn()});var Hi=d(()=>{xm()});function oR(n){return M(Ln(n,[lt]))}function cR(n){return M({...n,[lt]:"Readonly"})}function aR(n,r){return r===!1?oR(n):cR(n)}function zr(n,r){let t=r??!0;return Jn(n)?Wm(n,t):aR(n,t)}var Tf=d(()=>{Z();nn();Kt();vf();wn()});function eR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=zr(n[o],r);return t}function iR(n,r){return eR(n.properties,r)}function Wm(n,r){let t=iR(n,r);return hn(t)}var vf=d(()=>{or();Tf()});var yo=d(()=>{vf();Tf()});function Ir(n,r){return M(n.length>0?{[L]:"Tuple",type:"array",items:n,additionalItems:!1,minItems:n.length,maxItems:n.length}:{[L]:"Tuple",type:"array",minItems:n.length,maxItems:n.length},r)}var Ym=d(()=>{Z();nn()});var ko=d(()=>{Ym()});function Jm(n,r){return n in r?Zr(n,r[n]):hn(r)}function sR(n){return{[n]:kn(n)}}function lR(n){let r={};for(let t of n)r[t]=kn(t);return r}function fR(n,r){return F_(r,n)?sR(n):lR(r)}function dR(n,r){let t=fR(n,r);return Jm(n,t)}function ja(n,r){return r.map((t)=>Zr(n,t))}function bR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(r))t[o]=Zr(n,r[o]);return t}function Zr(n,r){let t={...r};return Mr(r)?mr(Zr(n,Ln(r,[fr]))):Yc(r)?zr(Zr(n,Ln(r,[lt]))):Jn(r)?Jm(n,r.properties):Cr(r)?dR(n,r.keys):bt(r)?Vc(ja(n,r.parameters),Zr(n,r.returns),t):gt(r)?Dt(ja(n,r.parameters),Zr(n,r.returns),t):Oo(r)?Xc(Zr(n,r.items),t):jo(r)?Gc(Zr(n,r.items),t):Cn(r)?wr(ja(n,r.allOf),t):gn(r)?An(ja(n,r.anyOf),t):Qr(r)?Ir(ja(n,r.items??[]),t):Kn(r)?Hn(bR(n,r.properties),t):ft(r)?Jc(Zr(n,r.items),t):Ko(r)?Di(Zr(n,r.item),t):r}function gR(n,r){let t={};for(let o of n)t[o]=Zr(o,r);return t}function Xm(n,r,t){let o=Pr(n)?Hr(n):n,c=r({[L]:"MappedKey",keys:o}),a=gR(o,c);return Hn(a,t)}var Vm=d(()=>{nn();Kt();La();Qa();Pa();vo();zt();pr();Fa();Dr();Gr();Tt();Hi();yo();ko();Zn();Va();Jf();wn()});var or=d(()=>{tm();Jf();Vm()});function uR(n){return M(Ln(n,[fr]))}function _R(n){return M({...n,[fr]:"Optional"})}function mR(n,r){return r===!1?uR(n):_R(n)}function mr(n,r){let t=r??!0;return Jn(n)?Cm(n,t):mR(n,t)}var pf=d(()=>{Z();nn();Kt();If();wn()});function wR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=mr(n[o],r);return t}function hR(n,r){return wR(n.properties,r)}function Cm(n,r){let t=hR(n,r);return hn(t)}var If=d(()=>{or();pf()});var Tt=d(()=>{If();pf()});function Ka(n,r={}){let t=n.every((c)=>Kn(c)),o=Pr(r.unevaluatedProperties)?{unevaluatedProperties:r.unevaluatedProperties}:{};return M(r.unevaluatedProperties===!1||Pr(r.unevaluatedProperties)||t?{...o,[L]:"Intersect",type:"object",allOf:n}:{...o,[L]:"Intersect",allOf:n},r)}var Zf=d(()=>{Z();nn();wn()});function $R(n){return n.every((r)=>Mr(r))}function kR(n){return Ln(n,[fr])}function Lm(n){return n.map((r)=>Mr(r)?kR(r):r)}function RR(n,r){return $R(n)?mr(Ka(Lm(n),r)):Ka(Lm(n),r)}function Mi(n,r={}){if(n.length===1)return M(n[0],r);if(n.length===0)return un(r);if(n.some((t)=>uo(t)))throw Error("Cannot intersect transform types");return RR(n,r)}var Qm=d(()=>{nn();Z();Kt();dr();Tt();Zf();wn()});var Pm=()=>{};function wr(n,r){if(n.length===1)return M(n[0],r);if(n.length===0)return un(r);if(n.some((t)=>uo(t)))throw Error("Cannot intersect transform types");return Ka(n,r)}var Gm=d(()=>{Z();dr();Zf();wn()});var pr=d(()=>{Qm();Pm();Gm()});function Ut(...n){let[r,t]=typeof n[0]==="string"?[n[0],n[1]]:[n[0].$id,n[1]];if(typeof r!=="string")throw new lr("Ref: $ref must be a string");return M({[L]:"Ref",$ref:r},t)}var qm=d(()=>{Mt();Z();nn()});var nc=d(()=>{qm()});function AR(n,r){return Wn("Awaited",[Wn(n,r)])}function SR(n){return Wn("Awaited",[Ut(n)])}function ER(n){return wr(Nm(n))}function MR(n){return An(Nm(n))}function DR(n){return qc(n)}function Nm(n){return n.map((r)=>qc(r))}function qc(n,r){return M(dt(n)?AR(n.target,n.parameters):Cn(n)?ER(n.allOf):gn(n)?MR(n.anyOf):Ko(n)?DR(n.item):Pn(n)?SR(n.$ref):n,r)}var Om=d(()=>{Z();ho();pr();Zn();nc();wn()});var zi=d(()=>{Om()});function Fm(n){let r=[];for(let t of n)r.push(Ta(t));return r}function HR(n){let r=Fm(n);return T_(r)}function zR(n){let r=Fm(n);return K_(r)}function UR(n){return n.map((r,t)=>t.toString())}function BR(n){return["[number]"]}function xR(n){return globalThis.Object.getOwnPropertyNames(n)}function WR(n){if(!YR)return[];return globalThis.Object.getOwnPropertyNames(n).map((t)=>{return t[0]==="^"&&t[t.length-1]==="$"?t.slice(1,t.length-1):t})}function Ta(n){return Cn(n)?HR(n.allOf):gn(n)?zR(n.anyOf):Qr(n)?UR(n.items??[]):ft(n)?BR(n.items):Kn(n)?xR(n.properties):To(n)?WR(n.patternProperties):[]}var YR=!1;var yf=d(()=>{Va();wn()});function JR(n,r){return Wn("KeyOf",[Wn(n,r)])}function XR(n){return Wn("KeyOf",[Ut(n)])}function VR(n,r){let t=Ta(n),o=CR(t),c=Ht(o);return M(c,r)}function CR(n){return n.map((r)=>r==="[number]"?vr():kn(r))}function Nc(n,r){return dt(n)?JR(n.target,n.parameters):Pn(n)?XR(n.$ref):Jn(n)?jm(n,r):VR(n,r)}var n0=d(()=>{Z();Dr();Io();ho();nc();yf();Zn();r0();wn()});function LR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Nc(n[o],Yn(r));return t}function QR(n,r){return LR(n.properties,r)}function jm(n,r){let t=QR(n,r);return hn(t)}var r0=d(()=>{or();n0();Er()});var Km=()=>{};var va=d(()=>{r0();Km();yf();n0()});function PR(n){let r=[];for(let t of n)r.push(...Ta(t));return j_(r)}function GR(n){return n.filter((r)=>!go(r))}function qR(n,r){let t=[];for(let o of n)t.push(...Ff(o,[r]));return GR(t)}function NR(n,r){let t={};for(let o of r)t[o]=Mi(qR(n,o));return t}function Tm(n,r){let t=PR(n),o=NR(n,t);return Hn(o,r)}var vm=d(()=>{pr();zt();va();Gr();Va();wn()});var t0=d(()=>{vm()});function Ui(n){return M({[L]:"Date",type:"Date"},n)}var pm=d(()=>{nn();Z()});var Bi=d(()=>{pm()});function xi(n){return M({[L]:"Null",type:"null"},n)}var Im=d(()=>{Z();nn()});var Wi=d(()=>{Im()});function Yi(n){return M({[L]:"Symbol",type:"symbol"},n)}var Zm=d(()=>{Z();nn()});var Ji=d(()=>{Zm()});function Xi(n){return M({[L]:"Undefined",type:"undefined"},n)}var ym=d(()=>{Z();nn()});var Vi=d(()=>{ym()});function Ci(n){return M({[L]:"Uint8Array",type:"Uint8Array"},n)}var nw=d(()=>{Z();nn()});var Li=d(()=>{nw()});function Ro(n){return M({[L]:"Unknown"},n)}var rw=d(()=>{Z();nn()});var Oc=d(()=>{rw()});function OR(n){return n.map((r)=>o0(r,!1))}function FR(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=zr(o0(n[t],!1));return r}function Qi(n,r){return r===!0?n:zr(n)}function o0(n,r){return kf(n)?Qi(wo(),r):Af(n)?Qi(wo(),r):Fn(n)?zr(Ir(OR(n))):qt(n)?Ci():No(n)?Ui():Mn(n)?Qi(Hn(FR(n)),r):Rf(n)?Qi(Dt([],Ro()),r):jn(n)?Xi():Sf(n)?xi():Ef(n)?Yi():Da(n)?Qc():Xr(n)?kn(n):Gt(n)?kn(n):Bn(n)?kn(n):Hn({})}function tw(n,r){return M(o0(n,!0),r)}var ow=d(()=>{Ca();Oa();Bi();vo();Dr();Wi();Gr();Ji();ko();yo();Vi();Li();Oc();Nt()});var c0=d(()=>{ow()});function cw(n,r){return bt(n)?Ir(n.parameters,r):un(r)}var aw=d(()=>{ko();dr();wn()});var a0=d(()=>{aw()});function ew(n,r){if(jn(n))throw Error("Enum undefined or empty");let t=globalThis.Object.getOwnPropertyNames(n).filter((a)=>isNaN(a)).map((a)=>n[a]),c=[...new Set(t)].map((a)=>kn(a));return An(c,{...r,[Tr]:"Enum"})}var iw=d(()=>{Dr();nn();Zn()});var e0=d(()=>{iw()});function yr(n){return n===H.False?n:H.True}function Fc(n){throw new bw(n)}function yn(n){return _.IsNever(n)||_.IsIntersect(n)||_.IsUnion(n)||_.IsUnknown(n)||_.IsAny(n)}function nr(n,r){return _.IsNever(r)?_w(n,r):_.IsIntersect(r)?Pi(n,r):_.IsUnion(r)?d0(n,r):_.IsUnknown(r)?$w(n,r):_.IsAny(r)?f0(n,r):Fc("StructuralRight")}function f0(n,r){return H.True}function jR(n,r){return _.IsIntersect(r)?Pi(n,r):_.IsUnion(r)&&r.anyOf.some((t)=>_.IsAny(t)||_.IsUnknown(t))?H.True:_.IsUnion(r)?H.Union:_.IsUnknown(r)?H.True:_.IsAny(r)?H.True:H.Union}function KR(n,r){return _.IsUnknown(n)?H.False:_.IsAny(n)?H.Union:_.IsNever(n)?H.True:H.False}function TR(n,r){return _.IsObject(r)&&Gi(r)?H.True:yn(r)?nr(n,r):!_.IsArray(r)?H.False:yr(zn(n.items,r.items))}function vR(n,r){return yn(r)?nr(n,r):!_.IsAsyncIterator(r)?H.False:yr(zn(n.items,r.items))}function pR(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsBigInt(r)?H.True:H.False}function gw(n,r){return _.IsLiteralBoolean(n)?H.True:_.IsBoolean(n)?H.True:H.False}function IR(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsBoolean(r)?H.True:H.False}function ZR(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):!_.IsConstructor(r)?H.False:n.parameters.length>r.parameters.length?H.False:!n.parameters.every((t,o)=>yr(zn(r.parameters[o],t))===H.True)?H.False:yr(zn(n.returns,r.returns))}function yR(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsDate(r)?H.True:H.False}function n3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):!_.IsFunction(r)?H.False:n.parameters.length>r.parameters.length?H.False:!n.parameters.every((t,o)=>yr(zn(r.parameters[o],t))===H.True)?H.False:yr(zn(n.returns,r.returns))}function uw(n,r){return _.IsLiteral(n)&&_r.IsNumber(n.const)?H.True:_.IsNumber(n)||_.IsInteger(n)?H.True:H.False}function r3(n,r){return _.IsInteger(r)||_.IsNumber(r)?H.True:yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):H.False}function Pi(n,r){return r.allOf.every((t)=>zn(n,t)===H.True)?H.True:H.False}function t3(n,r){return n.allOf.some((t)=>zn(t,r)===H.True)?H.True:H.False}function o3(n,r){return yn(r)?nr(n,r):!_.IsIterator(r)?H.False:yr(zn(n.items,r.items))}function c3(n,r){return _.IsLiteral(r)&&r.const===n.const?H.True:yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsString(r)?hw(n,r):_.IsNumber(r)?mw(n,r):_.IsInteger(r)?uw(n,r):_.IsBoolean(r)?gw(n,r):H.False}function _w(n,r){return H.False}function a3(n,r){return H.True}function sw(n){let[r,t]=[n,0];while(!0){if(!_.IsNot(r))break;r=r.not,t+=1}return t%2===0?r:Ro()}function e3(n,r){return _.IsNot(n)?zn(sw(n),r):_.IsNot(r)?zn(n,sw(r)):Fc("Invalid fallthrough for Not")}function i3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsNull(r)?H.True:H.False}function mw(n,r){return _.IsLiteralNumber(n)?H.True:_.IsNumber(n)||_.IsInteger(n)?H.True:H.False}function s3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsInteger(r)||_.IsNumber(r)?H.True:H.False}function Ur(n,r){return Object.getOwnPropertyNames(n.properties).length===r}function lw(n){return Gi(n)}function fw(n){return Ur(n,0)||Ur(n,1)&&"description"in n.properties&&_.IsUnion(n.properties.description)&&n.properties.description.anyOf.length===2&&(_.IsString(n.properties.description.anyOf[0])&&_.IsUndefined(n.properties.description.anyOf[1])||_.IsString(n.properties.description.anyOf[1])&&_.IsUndefined(n.properties.description.anyOf[0]))}function i0(n){return Ur(n,0)}function dw(n){return Ur(n,0)}function l3(n){return Ur(n,0)}function f3(n){return Ur(n,0)}function d3(n){return Gi(n)}function b3(n){let r=vr();return Ur(n,0)||Ur(n,1)&&"length"in n.properties&&yr(zn(n.properties.length,r))===H.True}function g3(n){return Ur(n,0)}function Gi(n){let r=vr();return Ur(n,0)||Ur(n,1)&&"length"in n.properties&&yr(zn(n.properties.length,r))===H.True}function u3(n){let r=Dt([wo()],wo());return Ur(n,0)||Ur(n,1)&&"then"in n.properties&&yr(zn(n.properties.then,r))===H.True}function ww(n,r){return zn(n,r)===H.False?H.False:_.IsOptional(n)&&!_.IsOptional(r)?H.False:H.True}function hr(n,r){return _.IsUnknown(n)?H.False:_.IsAny(n)?H.Union:_.IsNever(n)||_.IsLiteralString(n)&&lw(r)||_.IsLiteralNumber(n)&&i0(r)||_.IsLiteralBoolean(n)&&dw(r)||_.IsSymbol(n)&&fw(r)||_.IsBigInt(n)&&l3(r)||_.IsString(n)&&lw(r)||_.IsSymbol(n)&&fw(r)||_.IsNumber(n)&&i0(r)||_.IsInteger(n)&&i0(r)||_.IsBoolean(n)&&dw(r)||_.IsUint8Array(n)&&d3(r)||_.IsDate(n)&&f3(r)||_.IsConstructor(n)&&g3(r)||_.IsFunction(n)&&b3(r)?H.True:_.IsRecord(n)&&_.IsString(s0(n))?(()=>{return r[Tr]==="Record"?H.True:H.False})():_.IsRecord(n)&&_.IsNumber(s0(n))?(()=>{return Ur(r,0)?H.True:H.False})():H.False}function _3(n,r){return yn(r)?nr(n,r):_.IsRecord(r)?nt(n,r):!_.IsObject(r)?H.False:(()=>{for(let t of Object.getOwnPropertyNames(r.properties)){if(!(t in n.properties)&&!_.IsOptional(r.properties[t]))return H.False;if(_.IsOptional(r.properties[t]))return H.True;if(ww(n.properties[t],r.properties[t])===H.False)return H.False}return H.True})()}function m3(n,r){return yn(r)?nr(n,r):_.IsObject(r)&&u3(r)?H.True:!_.IsPromise(r)?H.False:yr(zn(n.item,r.item))}function s0(n){return _o in n.patternProperties?vr():(mo in n.patternProperties)?mt():Fc("Unknown record key pattern")}function l0(n){return _o in n.patternProperties?n.patternProperties[_o]:(mo in n.patternProperties)?n.patternProperties[mo]:Fc("Unable to get record value schema")}function nt(n,r){let[t,o]=[s0(r),l0(r)];return _.IsLiteralString(n)&&_.IsNumber(t)&&yr(zn(n,o))===H.True?H.True:_.IsUint8Array(n)&&_.IsNumber(t)?zn(n,o):_.IsString(n)&&_.IsNumber(t)?zn(n,o):_.IsArray(n)&&_.IsNumber(t)?zn(n,o):_.IsObject(n)?(()=>{for(let c of Object.getOwnPropertyNames(n.properties))if(ww(o,n.properties[c])===H.False)return H.False;return H.True})():H.False}function w3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):!_.IsRecord(r)?H.False:zn(l0(n),l0(r))}function h3(n,r){let t=_.IsRegExp(n)?mt():n,o=_.IsRegExp(r)?mt():r;return zn(t,o)}function hw(n,r){return _.IsLiteral(n)&&_r.IsString(n.const)?H.True:_.IsString(n)?H.True:H.False}function $3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsString(r)?H.True:H.False}function k3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsSymbol(r)?H.True:H.False}function R3(n,r){return _.IsTemplateLiteral(n)?zn(Zo(n),r):_.IsTemplateLiteral(r)?zn(n,Zo(r)):Fc("Invalid fallthrough for TemplateLiteral")}function A3(n,r){return _.IsArray(r)&&n.items!==void 0&&n.items.every((t)=>zn(t,r.items)===H.True)}function S3(n,r){return _.IsNever(n)?H.True:_.IsUnknown(n)?H.False:_.IsAny(n)?H.Union:H.False}function E3(n,r){return yn(r)?nr(n,r):_.IsObject(r)&&Gi(r)?H.True:_.IsArray(r)&&A3(n,r)?H.True:!_.IsTuple(r)?H.False:_r.IsUndefined(n.items)&&!_r.IsUndefined(r.items)||!_r.IsUndefined(n.items)&&_r.IsUndefined(r.items)?H.False:_r.IsUndefined(n.items)&&!_r.IsUndefined(r.items)?H.True:n.items.every((t,o)=>zn(t,r.items[o])===H.True)?H.True:H.False}function M3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsUint8Array(r)?H.True:H.False}function D3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsVoid(r)?U3(n,r):_.IsUndefined(r)?H.True:H.False}function d0(n,r){return r.anyOf.some((t)=>zn(n,t)===H.True)?H.True:H.False}function H3(n,r){return n.anyOf.every((t)=>zn(t,r)===H.True)?H.True:H.False}function $w(n,r){return H.True}function z3(n,r){return _.IsNever(r)?_w(n,r):_.IsIntersect(r)?Pi(n,r):_.IsUnion(r)?d0(n,r):_.IsAny(r)?f0(n,r):_.IsString(r)?hw(n,r):_.IsNumber(r)?mw(n,r):_.IsInteger(r)?uw(n,r):_.IsBoolean(r)?gw(n,r):_.IsArray(r)?KR(n,r):_.IsTuple(r)?S3(n,r):_.IsObject(r)?hr(n,r):_.IsUnknown(r)?H.True:H.False}function U3(n,r){return _.IsUndefined(n)?H.True:_.IsUndefined(n)?H.True:H.False}function B3(n,r){return _.IsIntersect(r)?Pi(n,r):_.IsUnion(r)?d0(n,r):_.IsUnknown(r)?$w(n,r):_.IsAny(r)?f0(n,r):_.IsObject(r)?hr(n,r):_.IsVoid(r)?H.True:H.False}function zn(n,r){return _.IsTemplateLiteral(n)||_.IsTemplateLiteral(r)?R3(n,r):_.IsRegExp(n)||_.IsRegExp(r)?h3(n,r):_.IsNot(n)||_.IsNot(r)?e3(n,r):_.IsAny(n)?jR(n,r):_.IsArray(n)?TR(n,r):_.IsBigInt(n)?pR(n,r):_.IsBoolean(n)?IR(n,r):_.IsAsyncIterator(n)?vR(n,r):_.IsConstructor(n)?ZR(n,r):_.IsDate(n)?yR(n,r):_.IsFunction(n)?n3(n,r):_.IsInteger(n)?r3(n,r):_.IsIntersect(n)?t3(n,r):_.IsIterator(n)?o3(n,r):_.IsLiteral(n)?c3(n,r):_.IsNever(n)?a3(n,r):_.IsNull(n)?i3(n,r):_.IsNumber(n)?s3(n,r):_.IsObject(n)?_3(n,r):_.IsRecord(n)?w3(n,r):_.IsString(n)?$3(n,r):_.IsSymbol(n)?k3(n,r):_.IsTuple(n)?E3(n,r):_.IsPromise(n)?m3(n,r):_.IsUint8Array(n)?M3(n,r):_.IsUndefined(n)?D3(n,r):_.IsUnion(n)?H3(n,r):_.IsUnknown(n)?z3(n,r):_.IsVoid(n)?B3(n,r):Fc(`Unknown left type operand '${n[L]}'`)}function Ao(n,r){return zn(n,r)}var bw,H;var b0=d(()=>{Ca();vo();Io();Pc();Oc();pt();Xa();nn();Mt();Wf();bw=class bw extends lr{};(function(n){n[n.Union=0]="Union",n[n.True=1]="True",n[n.False=2]="False"})(H||(H={}))});function x3(n,r,t,o,c){let a={};for(let e of globalThis.Object.getOwnPropertyNames(n))a[e]=jc(n[e],r,t,o,Yn(c));return a}function W3(n,r,t,o,c){return x3(n.properties,r,t,o,c)}function kw(n,r,t,o,c){let a=W3(n,r,t,o,c);return hn(a)}var g0=d(()=>{or();qi();Er()});function Y3(n,r,t,o){let c=Ao(n,r);return c===H.Union?An([t,o]):c===H.True?t:o}function jc(n,r,t,o,c){return Jn(n)?kw(n,r,t,o,c):Cr(n)?M(Rw(n,r,t,o,c)):M(Y3(n,r,t,o),c)}var qi=d(()=>{Z();Zn();b0();u0();g0();wn()});function J3(n,r,t,o,c){return{[n]:jc(kn(n),r,t,o,Yn(c))}}function X3(n,r,t,o,c){return n.reduce((a,e)=>{return{...a,...J3(e,r,t,o,c)}},{})}function V3(n,r,t,o,c){return X3(n.keys,r,t,o,c)}function Rw(n,r,t,o,c){let a=V3(n,r,t,o,c);return hn(a)}var u0=d(()=>{or();Dr();qi();Er()});var Aw=()=>{};var pa=d(()=>{b0();u0();g0();Aw();qi()});function Sw(n,r){return Kc(Zo(n),r)}var _0=d(()=>{Ni();pt()});function C3(n,r){let t=n.filter((o)=>Ao(o,r)===H.False);return t.length===1?t[0]:An(t)}function Kc(n,r,t={}){if(Lr(n))return M(Sw(n,r),t);if(Jn(n))return M(Ew(n,r),t);return M(gn(n)?C3(n.anyOf,r):Ao(n,r)!==H.False?un():n,t)}var Ni=d(()=>{Z();Zn();dr();pa();m0();_0();wn()});function L3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Kc(n[o],r);return t}function Q3(n,r){return L3(n.properties,r)}function Ew(n,r){let t=Q3(n,r);return hn(t)}var m0=d(()=>{or();Ni()});var w0=d(()=>{m0();_0();Ni()});function Mw(n,r){return Tc(Zo(n),r)}var h0=d(()=>{Oi();pt()});function P3(n,r){let t=n.filter((o)=>Ao(o,r)!==H.False);return t.length===1?t[0]:An(t)}function Tc(n,r,t){if(Lr(n))return M(Mw(n,r),t);if(Jn(n))return M(Dw(n,r),t);return M(gn(n)?P3(n.anyOf,r):Ao(n,r)!==H.False?n:un(),t)}var Oi=d(()=>{Z();Zn();dr();pa();$0();h0();wn()});function G3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Tc(n[o],r);return t}function q3(n,r){return G3(n.properties,r)}function Dw(n,r){let t=q3(n,r);return hn(t)}var $0=d(()=>{or();Oi()});var k0=d(()=>{$0();h0();Oi()});function Hw(n,r){return bt(n)?M(n.returns,r):un(r)}var zw=d(()=>{Z();dr();wn()});var R0=d(()=>{zw()});function Fi(n){return zr(mr(n))}var Uw=d(()=>{yo();Tt()});var ji=d(()=>{Uw()});function rc(n,r,t){return M({[L]:"Record",type:"object",patternProperties:{[n]:r}},t)}function A0(n,r,t){let o={};for(let c of n)o[c]=r;return Hn(o,{...t,[Tr]:"Record"})}function N3(n,r,t){return dm(n)?A0(Hr(n),r,t):rc(n.pattern,r,t)}function O3(n,r,t){return A0(Hr(An(n)),r,t)}function F3(n,r,t){return A0([n.toString()],r,t)}function j3(n,r,t){return rc(n.source,r,t)}function K3(n,r,t){let o=jn(n.pattern)?mo:n.pattern;return rc(o,r,t)}function T3(n,r,t){return rc(mo,r,t)}function v3(n,r,t){return rc(G_,r,t)}function p3(n,r,t){return Hn({true:r,false:r},t)}function I3(n,r,t){return rc(_o,r,t)}function Z3(n,r,t){return rc(_o,r,t)}function Ki(n,r,t={}){return gn(n)?O3(n.anyOf,r,t):Lr(n)?N3(n,r,t):Vr(n)?F3(n.const,r,t):Ot(n)?p3(n,r,t):ut(n)?I3(n,r,t):_t(n)?Z3(n,r,t):zf(n)?j3(n,r,t):Ft(n)?K3(n,r,t):Df(n)?T3(n,r,t):go(n)?v3(n,r,t):un(t)}function Ti(n){return globalThis.Object.getOwnPropertyNames(n.patternProperties)[0]}function Bw(n){let r=Ti(n);return r===mo?mt():r===_o?vr():mt({pattern:r})}function vi(n){return n.patternProperties[Ti(n)]}var xw=d(()=>{Z();nn();dr();Io();Gr();Pc();Zn();pt();Xa();zt();wn()});var Ia=d(()=>{xw()});function y3(n,r){return r.parameters=Za(n,r.parameters),r.returns=wt(n,r.returns),r}function nA(n,r){return r.parameters=Za(n,r.parameters),r.returns=wt(n,r.returns),r}function rA(n,r){return r.allOf=Za(n,r.allOf),r}function tA(n,r){return r.anyOf=Za(n,r.anyOf),r}function oA(n,r){if(jn(r.items))return r;return r.items=Za(n,r.items),r}function cA(n,r){return r.items=wt(n,r.items),r}function aA(n,r){return r.items=wt(n,r.items),r}function eA(n,r){return r.items=wt(n,r.items),r}function iA(n,r){return r.item=wt(n,r.item),r}function sA(n,r){let t=bA(n,r.properties);return{...r,...Hn(t)}}function lA(n,r){let t=wt(n,Bw(r)),o=wt(n,vi(r)),c=Ki(t,o);return{...r,...c}}function fA(n,r){return r.index in n?n[r.index]:Ro()}function dA(n,r){let t=Yc(r),o=Mr(r),c=wt(n,r);return t&&o?Fi(c):t&&!o?zr(c):!t&&o?mr(c):c}function bA(n,r){return globalThis.Object.getOwnPropertyNames(r).reduce((t,o)=>{return{...t,[o]:dA(n,r[o])}},{})}function Za(n,r){return r.map((t)=>wt(n,t))}function wt(n,r){return bt(r)?y3(n,r):gt(r)?nA(n,r):Cn(r)?rA(n,r):gn(r)?tA(n,r):Qr(r)?oA(n,r):ft(r)?cA(n,r):Oo(r)?aA(n,r):jo(r)?eA(n,r):Ko(r)?iA(n,r):Kn(r)?sA(n,r):To(r)?lA(n,r):Hf(r)?fA(n,r):r}function Ww(n,r){return wt(r,Wc(n))}var Yw=d(()=>{ui();Oc();ji();yo();Tt();Gr();Ia();wn()});var S0=d(()=>{Yw()});function Jw(n){return M({[L]:"Integer",type:"integer"},n)}var Xw=d(()=>{Z();nn()});var E0=d(()=>{Xw()});function gA(n,r,t){return{[n]:ht(kn(n),r,Yn(t))}}function uA(n,r,t){return n.reduce((c,a)=>{return{...c,...gA(a,r,t)}},{})}function _A(n,r,t){return uA(n.keys,r,t)}function Vw(n,r,t){let o=_A(n,r,t);return hn(o)}var M0=d(()=>{or();tc();Dr();Er()});function mA(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toLowerCase(),t].join("")}function wA(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toUpperCase(),t].join("")}function hA(n){return n.toUpperCase()}function $A(n){return n.toLowerCase()}function kA(n,r,t){let o=Lc(n.pattern);if(!po(o))return{...n,pattern:Cw(n.pattern,r)};let e=[...Na(o)].map((l)=>kn(l)),i=Lw(e,r),s=An(i);return Si([s],t)}function Cw(n,r){return typeof n==="string"?r==="Uncapitalize"?mA(n):r==="Capitalize"?wA(n):r==="Uppercase"?hA(n):r==="Lowercase"?$A(n):n:n.toString()}function Lw(n,r){return n.map((t)=>ht(t,r))}function ht(n,r,t={}){return Cr(n)?Vw(n,r,t):Lr(n)?kA(n,r,t):gn(n)?An(Lw(n.anyOf,r),t):Vr(n)?kn(Cw(n.const,r),t):M(n,t)}var tc=d(()=>{Z();pt();M0();Dr();Zn();wn()});function Qw(n,r={}){return ht(n,"Capitalize",r)}var Pw=d(()=>{tc()});function Gw(n,r={}){return ht(n,"Lowercase",r)}var qw=d(()=>{tc()});function Nw(n,r={}){return ht(n,"Uncapitalize",r)}var Ow=d(()=>{tc()});function Fw(n,r={}){return ht(n,"Uppercase",r)}var jw=d(()=>{tc()});var D0=d(()=>{Pw();M0();tc();qw();Ow();jw()});function RA(n,r,t){let o={};for(let c of globalThis.Object.getOwnPropertyNames(n))o[c]=So(n[c],r,Yn(t));return o}function AA(n,r,t){return RA(n.properties,r,t)}function Kw(n,r,t){let o=AA(n,r,t);return hn(o)}var H0=d(()=>{or();pi();Er()});function SA(n,r){return n.map((t)=>z0(t,r))}function EA(n,r){return n.map((t)=>z0(t,r))}function MA(n,r){let{[r]:t,...o}=n;return o}function DA(n,r){return r.reduce((t,o)=>MA(t,o),n)}function HA(n,r,t){let o=Ln(n,[In,"$id","required","properties"]),c=DA(t,r);return Hn(c,o)}function zA(n){let r=n.reduce((t,o)=>mi(o)?[...t,kn(o)]:t,[]);return An(r)}function z0(n,r){return Cn(n)?wr(SA(n.allOf,r)):gn(n)?An(EA(n.anyOf,r)):Kn(n)?HA(n,r,n.properties):Hn({})}function So(n,r,t){let o=Fn(r)?zA(r):r,c=Pr(r)?Hr(r):r,a=Pn(n),e=Pn(r);return Jn(n)?Kw(n,c,t):Cr(r)?Tw(n,r,t):a&&e?Wn("Omit",[n,o],t):!a&&e?Wn("Omit",[n,o],t):a&&!e?Wn("Omit",[n,o],t):M({...z0(n,c),...t})}var pi=d(()=>{Z();Ua();ho();Dr();zt();pr();Zn();Gr();U0();H0();wn()});function UA(n,r,t){return{[r]:So(n,[r],Yn(t))}}function BA(n,r,t){return r.reduce((o,c)=>{return{...o,...UA(n,c,t)}},{})}function xA(n,r,t){return BA(n,r.keys,t)}function Tw(n,r,t){let o=xA(n,r,t);return hn(o)}var U0=d(()=>{or();pi();Er()});var Ii=d(()=>{U0();H0();pi()});function WA(n,r,t){let o={};for(let c of globalThis.Object.getOwnPropertyNames(n))o[c]=Eo(n[c],r,Yn(t));return o}function YA(n,r,t){return WA(n.properties,r,t)}function vw(n,r,t){let o=YA(n,r,t);return hn(o)}var B0=d(()=>{or();Zi();Er()});function JA(n,r){return n.map((t)=>x0(t,r))}function XA(n,r){return n.map((t)=>x0(t,r))}function VA(n,r){let t={};for(let o of r)if(o in n)t[o]=n[o];return t}function CA(n,r,t){let o=Ln(n,[In,"$id","required","properties"]),c=VA(t,r);return Hn(c,o)}function LA(n){let r=n.reduce((t,o)=>mi(o)?[...t,kn(o)]:t,[]);return An(r)}function x0(n,r){return Cn(n)?wr(JA(n.allOf,r)):gn(n)?An(XA(n.anyOf,r)):Kn(n)?CA(n,r,n.properties):Hn({})}function Eo(n,r,t){let o=Fn(r)?LA(r):r,c=Pr(r)?Hr(r):r,a=Pn(n),e=Pn(r);return Jn(n)?vw(n,c,t):Cr(r)?pw(n,r,t):a&&e?Wn("Pick",[n,o],t):!a&&e?Wn("Pick",[n,o],t):a&&!e?Wn("Pick",[n,o],t):M({...x0(n,c),...t})}var Zi=d(()=>{Z();ho();pr();Dr();Gr();Zn();zt();Ua();wn();W0();B0()});function QA(n,r,t){return{[r]:Eo(n,[r],Yn(t))}}function PA(n,r,t){return r.reduce((o,c)=>{return{...o,...QA(n,c,t)}},{})}function GA(n,r,t){return PA(n,r.keys,t)}function pw(n,r,t){let o=GA(n,r,t);return hn(o)}var W0=d(()=>{or();Zi();Er()});var yi=d(()=>{W0();B0();Zi()});function qA(n,r){return Wn("Partial",[Wn(n,r)])}function NA(n){return Wn("Partial",[Ut(n)])}function OA(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=mr(n[t]);return r}function FA(n,r){let t=Ln(n,[In,"$id","required","properties"]),o=OA(r);return Hn(o,t)}function Iw(n){return n.map((r)=>Zw(r))}function Zw(n){return dt(n)?qA(n.target,n.parameters):Pn(n)?NA(n.$ref):Cn(n)?wr(Iw(n.allOf)):gn(n)?An(Iw(n.anyOf)):Kn(n)?FA(n,n.properties):Fo(n)?n:Ot(n)?n:ut(n)?n:Vr(n)?n:Ba(n)?n:_t(n)?n:Ft(n)?n:xa(n)?n:Wa(n)?n:Hn({})}function vc(n,r){if(Jn(n))return yw(n,r);else return M({...Zw(n),...r})}var Y0=d(()=>{Z();ho();Tt();Gr();pr();Zn();nc();Kt();nn();J0();wn()});function jA(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=vc(n[o],Yn(r));return t}function KA(n,r){return jA(n.properties,r)}function yw(n,r){let t=KA(n,r);return hn(t)}var J0=d(()=>{or();Y0();Er()});var ns=d(()=>{J0();Y0()});function TA(n,r){return Wn("Required",[Wn(n,r)])}function vA(n){return Wn("Required",[Ut(n)])}function pA(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Ln(n[t],[fr]);return r}function IA(n,r){let t=Ln(n,[In,"$id","required","properties"]),o=pA(r);return Hn(o,t)}function n1(n){return n.map((r)=>r1(r))}function r1(n){return dt(n)?TA(n.target,n.parameters):Pn(n)?vA(n.$ref):Cn(n)?wr(n1(n.allOf)):gn(n)?An(n1(n.anyOf)):Kn(n)?IA(n,n.properties):Fo(n)?n:Ot(n)?n:ut(n)?n:Vr(n)?n:Ba(n)?n:_t(n)?n:Ft(n)?n:xa(n)?n:Wa(n)?n:Hn({})}function pc(n,r){if(Jn(n))return t1(n,r);else return M({...r1(n),...r})}var X0=d(()=>{Z();ho();Gr();pr();Zn();nc();nn();Kt();V0();wn()});function ZA(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=pc(n[o],r);return t}function yA(n,r){return ZA(n.properties,r)}function t1(n,r){let t=yA(n,r);return hn(t)}var V0=d(()=>{or();X0()});var rs=d(()=>{V0();X0()});function n4(n,r){return r.map((t)=>{return Pn(t)?C0(n,t.$ref):qr(n,t)})}function C0(n,r){return r in n?Pn(n[r])?C0(n,n[r].$ref):qr(n,n[r]):un()}function r4(n){return qc(n[0])}function t4(n){return $o(n[0],n[1])}function o4(n){return Nc(n[0])}function c4(n){return vc(n[0])}function a4(n){return So(n[0],n[1])}function e4(n){return Eo(n[0],n[1])}function i4(n){return pc(n[0])}function s4(n,r,t){let o=n4(n,t);return r==="Awaited"?r4(o):r==="Index"?t4(o):r==="KeyOf"?o4(o):r==="Partial"?c4(o):r==="Omit"?a4(o):r==="Pick"?e4(o):r==="Required"?i4(o):un()}function l4(n,r){return Jc(qr(n,r))}function f4(n,r){return Xc(qr(n,r))}function d4(n,r,t){return Vc(ya(n,r),qr(n,t))}function b4(n,r,t){return Dt(ya(n,r),qr(n,t))}function g4(n,r){return wr(ya(n,r))}function u4(n,r){return Gc(qr(n,r))}function _4(n,r){return Hn(globalThis.Object.keys(r).reduce((t,o)=>{return{...t,[o]:qr(n,r[o])}},{}))}function m4(n,r){let[t,o]=[qr(n,vi(r)),Ti(r)],c=Wc(r);return c.patternProperties[o]=t,c}function w4(n,r){return Pn(r)?{...C0(n,r.$ref),[In]:r[In]}:r}function h4(n,r){return Ir(ya(n,r))}function $4(n,r){return An(ya(n,r))}function ya(n,r){return r.map((t)=>qr(n,t))}function qr(n,r){return Mr(r)?M(qr(n,Ln(r,[fr])),r):Yc(r)?M(qr(n,Ln(r,[lt])),r):uo(r)?M(w4(n,r),r):ft(r)?M(l4(n,r.items),r):Oo(r)?M(f4(n,r.items),r):dt(r)?M(s4(n,r.target,r.parameters)):bt(r)?M(d4(n,r.parameters,r.returns),r):gt(r)?M(b4(n,r.parameters,r.returns),r):Cn(r)?M(g4(n,r.allOf),r):jo(r)?M(u4(n,r.items),r):Kn(r)?M(_4(n,r.properties),r):To(r)?M(m4(n,r)):Qr(r)?M(h4(n,r.items||[]),r):gn(r)?M($4(n,r.anyOf),r):r}function k4(n,r){return r in n?qr(n,n[r]):un()}function o1(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:k4(n,t)}},{})}var c1=d(()=>{Nt();Mf();Kt();La();zi();Qa();Pa();zt();vo();pr();Fa();va();Gr();Ii();yi();dr();ns();Ia();rs();ko();Zn();nn();wn()});class a1{constructor(n){let r=o1(n),t=this.WithIdentifiers(r);this.$defs=t}Import(n,r){let t={...this.$defs,[n]:M(this.$defs[n],r)};return M({[L]:"Import",$defs:t,$ref:n})}WithIdentifiers(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:{...n[t],$id:t}}},{})}}function e1(n){return new a1(n)}var i1=d(()=>{Nt();nn();c1()});var L0=d(()=>{i1()});function s1(n,r){return M({[L]:"Not",not:n},r)}var l1=d(()=>{Z();nn()});var Q0=d(()=>{l1()});function f1(n,r){return gt(n)?Ir(n.parameters,r):un()}var d1=d(()=>{ko();dr();wn()});var P0=d(()=>{d1()});function b1(n,r={}){if(jn(r.$id))r.$id=`T${R4++}`;let t=Wc(n({[L]:"This",$ref:`${r.$id}`}));return t.$id=r.$id,M({[Tr]:"Recursive",...t},r)}var R4=0;var g1=d(()=>{ui();Z();nn()});var G0=d(()=>{g1()});function u1(n,r){let t=Bn(n)?new globalThis.RegExp(n):n;return M({[L]:"RegExp",type:"RegExp",source:t.source,flags:t.flags},r)}var _1=d(()=>{Z();nn()});var q0=d(()=>{_1()});function A4(n){return Cn(n)?n.allOf:gn(n)?n.anyOf:Qr(n)?n.items??[]:[]}function m1(n){return A4(n)}var w1=d(()=>{wn()});var N0=d(()=>{w1()});function h1(n,r){return gt(n)?M(n.returns,r):un(r)}var $1=d(()=>{Z();dr();wn()});var O0=d(()=>{$1()});var k1=()=>{};var R1=()=>{};var A1=d(()=>{k1();R1()});var S1=()=>{};var E1=d(()=>{S1()});class M1{constructor(n){this.schema=n}Decode(n){return new D1(this.schema,n)}}class D1{constructor(n,r){this.schema=n,this.decode=r}EncodeTransform(n,r){let c={Encode:(a)=>r[In].Encode(n(a)),Decode:(a)=>this.decode(r[In].Decode(a))};return{...r,[In]:c}}EncodeSchema(n,r){let t={Decode:this.decode,Encode:n};return{...r,[In]:t}}Encode(n){return uo(this.schema)?this.EncodeTransform(n,this.schema):this.EncodeSchema(n,this.schema)}}function H1(n){return new M1(n)}var z1=d(()=>{nn();wn()});var F0=d(()=>{z1()});function U1(n={}){return M({[L]:n[L]??"Unsafe"},n)}var B1=d(()=>{Z();nn()});var j0=d(()=>{B1()});function x1(n){return M({[L]:"Void",type:"void"},n)}var W1=d(()=>{Z();nn()});var K0=d(()=>{W1()});var T0={};Zt(T0,{Void:()=>x1,Uppercase:()=>Fw,Unsafe:()=>U1,Unknown:()=>Ro,Union:()=>An,Undefined:()=>Xi,Uncapitalize:()=>Nw,Uint8Array:()=>Ci,Tuple:()=>Ir,Transform:()=>H1,TemplateLiteral:()=>Si,Symbol:()=>Yi,String:()=>mt,ReturnType:()=>h1,Rest:()=>m1,Required:()=>pc,RegExp:()=>u1,Ref:()=>Ut,Recursive:()=>b1,Record:()=>Ki,ReadonlyOptional:()=>Fi,Readonly:()=>zr,Promise:()=>Di,Pick:()=>Eo,Partial:()=>vc,Parameters:()=>f1,Optional:()=>mr,Omit:()=>So,Object:()=>Hn,Number:()=>vr,Null:()=>xi,Not:()=>s1,Never:()=>un,Module:()=>e1,Mapped:()=>Xm,Lowercase:()=>Gw,Literal:()=>kn,KeyOf:()=>Nc,Iterator:()=>Gc,Intersect:()=>wr,Integer:()=>Jw,Instantiate:()=>Ww,InstanceType:()=>Hw,Index:()=>$o,Function:()=>Dt,Extract:()=>Tc,Extends:()=>jc,Exclude:()=>Kc,Enum:()=>ew,Date:()=>Ui,ConstructorParameters:()=>cw,Constructor:()=>Vc,Const:()=>tw,Composite:()=>Tm,Capitalize:()=>Qw,Boolean:()=>Ri,BigInt:()=>Qc,Awaited:()=>qc,AsyncIterator:()=>Xc,Array:()=>Jc,Argument:()=>I_,Any:()=>wo});var Y1=d(()=>{Ca();Yf();La();Qa();zi();Oa();Ai();t0();c0();Pa();a0();Bi();e0();w0();pa();k0();vo();zt();R0();S0();E0();pr();D0();Fa();va();Dr();or();L0();dr();Q0();Wi();Io();Gr();Ii();Tt();P0();ns();yi();Hi();yo();ji();Ia();G0();nc();q0();rs();N0();O0();Pc();Ji();pt();F0();ko();Li();Vi();Zn();Oc();j0();K0()});var rr;var J1=d(()=>{Y1();rr=T0});var X1=d(()=>{Mf();Nt();Mt();Wf();L_();Xa();O_();Va();nn();Ca();La();Yf();Qa();zi();Oa();Ai();t0();c0();Pa();a0();Bi();e0();w0();pa();k0();vo();zt();R0();S0();E0();pr();Fa();D0();va();Dr();L0();or();dr();Q0();Wi();Io();Gr();Ii();Tt();P0();ns();yi();Hi();yo();ji();Ia();G0();nc();q0();rs();N0();O0();A1();E1();Pc();Ji();pt();F0();ko();Li();Vi();Zn();Oc();j0();K0();J1()});var v0,p0,Pq,Gq;var I0=d(()=>{X1();v0=rr.Object({email:rr.String({format:"email"})}),p0=rr.Object({token:rr.String()}),Pq=rr.Object({success:rr.Boolean(),message:rr.Optional(rr.String())}),Gq=rr.Object({success:rr.Boolean(),message:rr.Optional(rr.String()),data:rr.Optional(rr.Object({user:rr.Object({id:rr.String(),email:rr.String()}),accessToken:rr.String(),refreshToken:rr.String()}))})});import{eq as Z0}from"drizzle-orm";import{Elysia as S4}from"elysia";function ts(n,r,t,o,c,a,e,i,s,l){let{db:f,logger:b,usersTable:g}=n,h=r.route||"/auth/magic-link",k=r.verifyRoute||"/auth/magic-link/verify",$=r.expiresIn||"15m",m=r.redirectUrl||"",R=new S4;if(!r.enabled)return R;return R.post(h,async(X)=>{if(!f||!g)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return b.error("[AUTH] Magic link requested but email service not available"),{success:!1,message:"Email service not available"};let{email:C}=X.body,Q=(await f.select().from(g).where(Z0(g.email,C)).limit(1))[0];if(!Q)return b.info("[AUTH] Magic link requested for non-existent email",{email:C}),{success:!0,message:"If an account exists, a magic link has been sent"};if(Q.isLocked)return b.warn("[AUTH] Magic link requested for locked account",{email:C}),{success:!0,message:"If an account exists, a magic link has been sent"};let W=oi(),S=Pt(W),z=new Date(Date.now()+ci($));await e({userId:Q.id,email:C,tokenHash:S,expiresAt:z});let w=m?`${m}?token=${W}`:`${k}?token=${W}`,u=await t.sendMagicLinkEmail(C,w,l);if(!u.success)return b.error("[AUTH] Failed to send magic link email",{email:C,error:u.error}),{success:!1,message:"Failed to send email"};return b.info("[AUTH] Magic link sent",{email:C,userId:Q.id}),{success:!0,message:"If an account exists, a magic link has been sent"}},{body:v0,detail:{tags:["Authentication"],summary:"Request Magic Link",description:"Send a magic link to the user's email for passwordless login"}}),R.get(k,async(X)=>{if(!f||!g)return{success:!1,message:"Database not configured"};let C=X.query.token;if(!C)return{success:!1,message:"Token is required"};let E=Pt(C),Q=await i(E);if(!Q)return b.warn("[AUTH] Invalid magic link token"),{success:!1,message:"Invalid or expired token"};if(new Date>Q.expiresAt)return await s(E),b.warn("[AUTH] Expired magic link token",{email:Q.email}),{success:!1,message:"Invalid or expired token"};let S=(await f.select().from(g).where(Z0(g.id,Q.userId)).limit(1))[0];if(!S)return await s(E),{success:!1,message:"User not found"};await s(E),await f.update(g).set({lastLoginAt:new Date,loginCount:(S.loginCount||0)+1,emailVerified:!0}).where(Z0(g.id,S.id));let z=X.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||X.request.headers.get("x-real-ip")?.trim()||"unknown",w=X.request.headers.get("user-agent")||"",u=o(S.id),U=c(S.id),P=await a({userId:S.id,deviceInfo:{ipAddress:z,userAgent:w,deviceType:"unknown"},loginMethod:"magic_link"});return b.info("[AUTH] Magic link login successful",{userId:S.id,email:S.email}),X.set.headers["x-session-id"]=P,{success:!0,data:{user:{id:S.id,email:S.email},accessToken:u,refreshToken:U}}},{query:p0,detail:{tags:["Authentication"],summary:"Verify Magic Link",description:"Verify magic link token and login user"}}),R}var y0=d(()=>{I0();ai();I0()});import{eq as Ic}from"drizzle-orm";import{Elysia as E4}from"elysia";function os(n,r,t,o,c){let{db:a,logger:e,usersTable:i}=n,s=r.route||"/auth/me",l=new E4;if(!r.enabled)return l;return l.get(s,async(f)=>{if(!a||!i)return{success:!1,message:"Database not configured"};let b=f.request.headers.get("x-user-id");if(!b)return f.set.status=401,{success:!1,message:"Unauthorized"};let h=(await a.select().from(i).where(Ic(i.id,b)).limit(1))[0];if(!h)return f.set.status=404,{success:!1,message:"User not found"};let{password:k,...$}=h,m=null,R=[],X=[],C=[],E=[];if(r.includeProfile&&t){let W=t.profiles;if(W&&a)m=(await a.select().from(W).where(Ic(W.userId,b)).limit(1))[0]||null}if(r.includeAddresses&&t){let W=t.addresses;if(W&&a)R=await a.select().from(W).where(Ic(W.ownerId,b))}if(r.includePhones&&t){let W=t.phones;if(W&&a)X=await a.select().from(W).where(Ic(W.ownerId,b))}if(r.includeFiles&&t){let W=t.files;if(W&&a)C=await a.select().from(W).where(Ic(W.uploadedBy,b))}if(r.includeRoles&&t){let{userRoles:W,roles:S}=t;if(W&&S&&a){let w=(await a.select().from(W).where(Ic(W.userId,b))).map((u)=>u.roleId);if(w.length>0){let{inArray:u}=await import("drizzle-orm");E=await a.select().from(S).where(u(S.id,w))}}}return e.info("[AUTH] Me endpoint accessed",{userId:b}),JSON.parse(JSON.stringify({success:!0,data:{user:$,profile:m,addresses:R,phones:X,files:C,roles:E}},(W,S)=>typeof S==="bigint"?Number(S):S))},{detail:{tags:["Authentication"],summary:"Get current user",description:"Get the currently authenticated user with profile, addresses, phones and files"}}),l}var nd=()=>{};import{t as Mo}from"elysia";var rd,M4;var td=d(()=>{rd=Mo.Object({currentPassword:Mo.String({minLength:1}),newPassword:Mo.String({minLength:8}),confirmPassword:Mo.String({minLength:8})}),M4=Mo.Object({success:Mo.Boolean(),message:Mo.Optional(Mo.String())})});function V1(n,r){return n===r}import{eq as C1}from"drizzle-orm";import{Elysia as D4}from"elysia";function cs(n,r){let{db:t,logger:o,usersTable:c}=n,a=r.route||"/auth/password-change",e=new D4;if(!r.enabled)return e;return e.post(a,async(i)=>{if(!t||!c)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:b}=i.body;if(!V1(f,b))return i.set.status=422,{success:!1,message:"New passwords do not match"};let h=(await t.select().from(c).where(C1(c.id,s)).limit(1))[0];if(!h)return i.set.status=404,{success:!1,message:"User not found"};if(!await si(l,h.password))return o.warn("[AUTH] Password change failed - invalid current password",{userId:s}),i.set.status=400,{success:!1,message:"Current password is incorrect"};let $=await bo(f);return await t.update(c).set({password:$,updatedAt:new Date}).where(C1(c.id,s)),o.info("[AUTH] Password change successful",{userId:s}),{success:!0,message:"Password changed successfully"}},{body:rd,detail:{tags:["Authentication"],summary:"Change Password",description:"Change password for authenticated user"}}),e}var od=d(()=>{mf();xc();td();td()});import{t as Bt}from"elysia";var cd,ad,H4;var ed=d(()=>{cd=Bt.Object({email:Bt.String({format:"email"})}),ad=Bt.Object({token:Bt.String(),newPassword:Bt.String({minLength:8}),confirmPassword:Bt.String({minLength:8})}),H4=Bt.Object({success:Bt.Boolean(),message:Bt.Optional(Bt.String())})});import{randomBytes as z4}from"crypto";function L1(){return z4(32).toString("hex")}function Q1(n){return new Date>n}var P1=()=>{};import{Elysia as U4}from"elysia";function as(n,r,t,o,c,a){let{db:e,logger:i,usersTable:s}=n,l=r.route||"/auth/password-reset",f=new U4;if(!r.enabled)return f;return f.post(`${l}/request`,async(b)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let{email:g}=b.body,{eq:h}=await import("drizzle-orm"),$=(await e.select().from(s).where(h(s.email,g)).limit(1))[0];if(!$)return{success:!0,message:"If email exists, reset link will be sent"};let m=L1(),R=new Date(Date.now()+3600000);if(await t($.id,m,R),a)try{await a(g,m),i.info("[AUTH] Password reset email sent",{email:g})}catch(X){i.error("[AUTH] Failed to send password reset email",{email:g,error:X})}else i.warn("[AUTH] sendResetEmail not configured - email not sent",{email:g});return i.info("[AUTH] Password reset requested",{userId:$.id,email:g}),{success:!0,message:"If email exists, reset link will be sent"}},{body:cd,detail:{tags:["Authentication"],summary:"Request Password Reset",description:"Request a password reset email"}}),f.post(`${l}/confirm`,async(b)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let{token:g,newPassword:h,confirmPassword:k}=b.body;if(h!==k)return{success:!1,message:"Passwords do not match"};let $=await o(g);if(!$)return{success:!1,message:"Invalid or expired reset token"};if(Q1($.expiresAt))return await c(g),{success:!1,message:"Reset token has expired"};let m=await bo(h),{eq:R}=await import("drizzle-orm");return await e.update(s).set({password:m}).where(R(s.id,$.userId)),await c(g),i.info("[AUTH] Password reset successful",{userId:$.userId}),{success:!0,message:"Password has been reset"}},{body:ad,detail:{tags:["Authentication"],summary:"Confirm Password Reset",description:"Reset password with token"}}),f}var id=d(()=>{xc();ed();P1();ed()});import{t as It}from"elysia";var sd,B4;var ld=d(()=>{sd=It.Object({newPassword:It.String({minLength:8}),userId:It.Optional(It.String()),token:It.Optional(It.String())}),B4=It.Object({success:It.Boolean(),message:It.String()})});import{eq as G1}from"drizzle-orm";import{Elysia as x4}from"elysia";function es(n,r,t,o){let{db:c,logger:a,usersTable:e}=n,i=r.route||"/auth/password-set",s=new x4;if(!r.enabled)return s;return s.post(i,async(l)=>{if(a.info("[AUTH] Password set request received"),!c||!e)return a.error("[AUTH] Password set failed - database not configured"),{success:!1,message:"Database not configured"};let{newPassword:f,userId:b,token:g}=l.body,h=b;if(g&&t&&o){let X=Pt(g),C=await t(X);if(!C)return a.warn("[AUTH] Password set failed - invalid token"),{success:!1,message:"Invalid or expired token"};if(new Date>C.expiresAt)return await o(X),a.warn("[AUTH] Password set failed - expired token",{email:C.email}),{success:!1,message:"Invalid or expired token"};h=C.userId,a.info("[AUTH] Password set - userId resolved from token",{userId:h,email:C.email})}if(!h)return a.warn("[AUTH] Password set failed - no userId in payload or token"),{success:!1,message:"User ID or token required"};let $=(await c.select().from(e).where(G1(e.id,h)).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:h}),{success:!1,message:"Password already set. Use password change instead."};let m=await bo(f);a.info("[AUTH] Password set - updating user with verifiedAt",{userId:h});let R=await c.update(e).set({password:m,verifiedAt:new Date,updatedAt:new Date}).where(G1(e.id,h));if(a.info("[AUTH] Password set successful for invited user",{userId:h,updateResult:R}),g&&o){let X=Pt(g);await o(X),a.info("[AUTH] Invite token consumed after password set",{userId:h})}return{success:!0,message:"Password set successfully"}},{body:sd,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 fd=d(()=>{ai();xc();ld();ld()});function dd(n){let r=n.match(/^(\d+)([smhd])$/);if(!r)return 900;let t=r[1],o=r[2];if(!t||!o)return 900;let c=parseInt(t,10);switch(o){case"s":return c;case"m":return c*60;case"h":return c*3600;case"d":return c*86400;default:return 900}}import{t as oc}from"elysia";var W4;var q1=d(()=>{W4=oc.Object({success:oc.Boolean(),message:oc.Optional(oc.String()),data:oc.Optional(oc.Object({accessToken:oc.String()}))})});import{Elysia as Y4}from"elysia";function is(n,r,t,o,c,a,e){let{logger:i,authentication:s}=n,l=r.route||"/auth/refresh",f=new Y4;if(!r.enabled)return f;return f.post(l,async(b)=>{let g=s?.refreshToken?.name||"refresh_token",h=s?.accessToken?.name||"access_token",k=b.request.headers.get("x-refresh-token");if(!k){let F=b.request.headers.get("cookie");if(F)k=F.split(";").reduce((Y,B)=>{let[D,x]=B.trim().split("=");if(D&&x)Y[D]=x;return Y},{})[g]||null}if(!k)return b.set.status=401,{success:!1,message:"Refresh token required"};let $=t(k);if(!$.valid||!$.payload)return i.warn("[AUTH] Refresh failed - invalid token"),b.set.status=401,{success:!1,message:"Invalid refresh token"};let m=$.payload.sub,R=o(m),X=c?c(m):null,C=a?.accessToken?.setHeadersEnabled??!0,E=a?.accessToken?.returnJson??!0,Q=a?.refreshToken?.setHeadersEnabled??!0,W=a?.refreshToken?.returnJson??!1,S=s?.accessToken?.expiresIn||"15m",z=Math.max(0,dd(S)-(e??0)),w=s?.refreshToken?.expiresIn||"7d",u=dd(w),U=new Headers;if(U.set("Content-Type","application/json"),C)U.append("Set-Cookie",`${h}=${R}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${z}`);if(X&&Q)U.append("Set-Cookie",`${g}=${X}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${u}`);i.info("[AUTH] Token refresh successful",{userId:m,rotatedRefreshToken:!!X});let P={};if(E)P.accessToken=R;if(X&&W)P.refreshToken=X;let J=JSON.stringify({success:!0,data:P});return new Response(J,{status:200,headers:U})},{detail:{tags:["Authentication"],summary:"Refresh Token",description:"Get new access token using refresh token"}}),f}var bd=d(()=>{q1()});import{t as Br}from"elysia";var gd,J4;var ud=d(()=>{gd=Br.Object({email:Br.String({format:"email"}),password:Br.String({minLength:8}),confirmPassword:Br.Optional(Br.String({minLength:8}))}),J4=Br.Object({success:Br.Boolean(),message:Br.Optional(Br.String()),data:Br.Optional(Br.Object({user:Br.Object({id:Br.String(),email:Br.String()})}))})});import{eq as X4}from"drizzle-orm";import{Elysia as V4}from"elysia";function ss(n,r,t,o,c,a,e,i,s,l){let{db:f,logger:b,usersTable:g}=n,h=r.route||"/auth/register",k={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"strict",path:e?.path||"/"},$=new V4;if(!r.enabled)return $;return $.post(h,async(m)=>{if(!f||!g)return m.set.status=500,{success:!1,message:"Database not configured"};let{email:R,password:X,confirmPassword:C}=m.body;if(C&&X!==C)return m.set.status=400,{success:!1,message:"Passwords do not match"};let E=Xu(X);if(!E.valid)return m.set.status=400,{success:!1,message:"Password too weak",errors:E.errors};if((await f.select().from(g).where(X4(g.email,R)).limit(1)).length>0)return b.warn("[AUTH] Registration failed - email exists",{email:R}),m.set.status=409,{success:!1,message:"Email already registered"};let W=await bo(X),S=r.emailVerification?.enabled&&s?.isAvailable(),z=S?ye():null,w=r.emailVerification?.tokenExpiresIn||"24h",u=S?new Date(Date.now()+Bc(w)):null,U={email:R,password:W};if(S&&z)U.emailVerificationToken=z,U.emailVerificationTokenExpiresAt=u,U.emailVerificationSentAt=new Date,U.emailVerificationAttempts=1;let J=(await f.insert(g).values(U).returning())[0];if(b.info("[AUTH] Registration successful",{userId:J.id,email:R,emailVerificationEnabled:S}),S&&s&&z){let I=`${(r.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${z}`;s.sendVerificationEmail(R,R.split("@")[0]||"User",I,l||"Nucleus").then((x)=>{if(x.success)b.info("[AUTH] Verification email sent",{email:R});else b.error("[AUTH] Failed to send verification email",{email:R,error:x.error})}).catch((x)=>{b.error("[AUTH] Failed to send verification email",{email:R,error:x})});let Y=r.emailVerification?.resendCooldown||"60s",B=Bc(Y)/1000,D=r.emailVerification?.maxResendAttempts||3;return{success:!0,message:"Registration successful. Please check your email to verify your account.",data:{user:{id:J.id,email:J.email},emailVerificationRequired:!0,verification:{cooldownSeconds:B,canResendAt:new Date(Date.now()+B*1000).toISOString(),attemptsRemaining:D-1,maxAttempts:D}}}}if(t)t(R,R.split("@")[0]||"User").catch((F)=>{b.error("[AUTH] Failed to send welcome email",{email:R,error:F})});if(o&&c&&a){let F=m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||m.request.headers.get("x-real-ip")?.trim()||"unknown",I=m.request.headers.get("user-agent")||"",Y=o(J.id),B=c(J.id),D=await a({userId:J.id,deviceInfo:{ipAddress:F,userAgent:I},loginMethod:"register"}),x={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}},N=k.secure?"; Secure":"",j=`; Path=${k.path}; HttpOnly; SameSite=${k.sameSite}${N}`,K=[];if(x.accessToken.setHeadersEnabled)K.push(`${k.accessTokenName}=${Y}${j}; Max-Age=${k.accessTokenMaxAge}`);if(x.refreshToken.setHeadersEnabled)K.push(`${k.refreshTokenName}=${B}${j}; Max-Age=${k.refreshTokenMaxAge}`);if(x.sessionToken.setHeadersEnabled)K.push(`${k.sessionTokenName}=${D}${j}; Max-Age=${k.sessionTokenMaxAge}`);let q={user:{id:J.id,email:J.email}};if(x.accessToken.returnJson)q.accessToken=Y;if(x.refreshToken.returnJson)q.refreshToken=B;if(x.sessionToken.returnJson)q.sessionId=D;let tn=JSON.stringify({success:!0,data:q}),v=new Headers;v.set("Content-Type","application/json"),v.set("x-session-id",D);for(let dn of K)v.append("Set-Cookie",dn);return new Response(tn,{status:200,headers:v})}return{success:!0,data:{user:{id:J.id,email:J.email}}}},{body:gd,detail:{tags:["Authentication"],summary:"Register",description:"Register a new user account"}}),$}var _d=d(()=>{ud();xc();ud()});import{t as p}from"elysia";var N1,C4,md,wd,ON;var hd=d(()=>{N1=p.Object({id:p.String(),deviceName:p.Optional(p.String()),deviceType:p.Optional(p.String()),browserName:p.Optional(p.String()),browserVersion:p.Optional(p.String()),osName:p.Optional(p.String()),osVersion:p.Optional(p.String()),ipAddress:p.String(),locationCountry:p.Optional(p.String()),locationCity:p.Optional(p.String()),lastActivityAt:p.String(),createdAt:p.String(),isCurrent:p.Boolean(),loginMethod:p.Optional(p.String()),trustScore:p.Optional(p.Number())}),C4=p.Object({success:p.Boolean(),data:p.Optional(p.Object({sessions:p.Array(N1),currentSessionId:p.Optional(p.String()),totalCount:p.Number()})),message:p.Optional(p.String())}),md=p.Object({reason:p.Optional(p.String())}),wd=p.Object({excludeCurrent:p.Optional(p.Boolean()),reason:p.Optional(p.String())}),ON=p.Object({success:p.Boolean(),data:p.Optional(p.Object({recentActivity:p.Array(p.Object({sessionId:p.String(),action:p.String(),ipAddress:p.String(),timestamp:p.String(),deviceInfo:p.Optional(p.String())}))})),message:p.Optional(p.String())})});function ls(n){let r=(o,c)=>n[o]??n[c],t=(o,c)=>{let a=n[o]??n[c];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 O1=()=>{};import{and as Do,desc as F1,eq as Gn,isNull as j1}from"drizzle-orm";import{Elysia as L4}from"elysia";function fs(n,r,t){let{db:o,logger:c}=n,a=r.route||"/auth/sessions",e=new L4;if(!r.enabled||!t)return e;let i=t,s=(l)=>{let f=l.replace(/([A-Z])/g,"_$1").toLowerCase();return i[l]||i[f]};return e.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 b=l.request.headers.get("x-session-id"),g=await o.select().from(t).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0),j1(s("revokedAt")))).orderBy(F1(s("lastActivityAt"))),h=g.filter(($)=>{let m=$,R=(m.deviceFingerprint||"").toLowerCase(),X=m.ipAddress||"";return!((!R||R==="--"||R==="--unknown"||R.includes("bot/crawler")||R.includes("headless")||R.includes("unknown-unknown"))&&(X==="127.0.0.1"||X==="::1"||X==="localhost"||!X))}),k=h.map(($)=>{let m=$,R=ls(m);return R.isCurrent=m.id===b,R});return c.info("[AUTH] Sessions list retrieved",{userId:f,totalInDb:g.length,filteredCount:h.length,hiddenBotSessions:g.length-h.length}),{success:!0,data:{sessions:k,currentSessionId:b,totalCount:h.length}}},{detail:{tags:["Authentication"],summary:"List active sessions",description:"Get all active sessions for the current user"}}),e.get(`${a}/current`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id"),b=l.request.headers.get("x-session-id");if(!f||!b)return{success:!1,message:"Authentication required"};let g=await o.select().from(t).where(Gn(s("id"),b)).limit(1);if(g.length===0)return{success:!1,message:"Session not found"};let h=g[0],k=ls(h);return k.isCurrent=!0,{success:!0,data:k}},{detail:{tags:["Authentication"],summary:"Get current session",description:"Get details of the current session"}}),e.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:b}=l.params,g=l.body,h=l.request.headers.get("x-session-id");if((await o.select().from(t).where(Do(Gn(s("id"),b),Gn(s("userId"),f))).limit(1)).length===0)return{success:!1,message:"Session not found"};let $=b===h;return await o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:$?"user_logout":g.reason||"user_revoked"}).where(Gn(s("id"),b)),c.info("[AUTH] Session revoked",{userId:f,sessionId:b,isCurrentSession:$,reason:g.reason||"user_revoked"}),{success:!0,message:$?"Logged out successfully":"Session revoked successfully"}},{body:md,detail:{tags:["Authentication"],summary:"Revoke session",description:"Revoke a specific session by ID"}}),e.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 b=l.body,g=l.request.headers.get("x-session-id"),h=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:b.reason||"user_revoked"}).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0)));if(b.excludeCurrent&&g){let{ne:k}=await import("drizzle-orm");h=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:b.reason||"user_revoked"}).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0),k(s("id"),g)))}return await h,c.info("[AUTH] All sessions revoked",{userId:f,excludeCurrent:b.excludeCurrent,reason:b.reason||"user_revoked"}),{success:!0,message:b.excludeCurrent?"All other sessions revoked successfully":"All sessions revoked successfully"}},{body:wd,detail:{tags:["Authentication"],summary:"Revoke all sessions",description:"Revoke all sessions for the current user (optionally exclude current)"}}),e.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:b,countDistinct:g}=await import("drizzle-orm"),h=await o.select({count:b()}).from(t).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0),j1(s("revokedAt")))),k=await o.select({count:g(s("deviceFingerprint"))}).from(t).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0))),$=await o.select({count:g(s("ipAddress"))}).from(t).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0)));return{success:!0,data:{activeSessions:h[0]?.count||0,uniqueDevices:k[0]?.count||0,uniqueIpAddresses:$[0]?.count||0}}},{detail:{tags:["Authentication"],summary:"Session statistics",description:"Get session statistics for the current user"}}),e.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 b=await o.select().from(t).where(Gn(s("approvalToken"),f)).limit(1);if(b.length===0)return{success:!1,message:"Invalid or expired approval token"};let g=b[0];if(g.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(Gn(s("id"),g.id)),c.info("[AUTH] Device approved",{sessionId:g.id,userId:g.userId}),{success:!0,message:"Device approved successfully"}},{detail:{tags:["Authentication"],summary:"Approve pending device",description:"Approve a pending device login request"}}),e.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 b=await o.select().from(t).where(Gn(s("approvalToken"),f)).limit(1);if(b.length===0)return{success:!1,message:"Invalid or expired approval token"};let g=b[0];if(g.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(Gn(s("id"),g.id)),c.info("[AUTH] Device rejected",{sessionId:g.id,userId:g.userId}),{success:!0,message:"Device rejected and blocked"}},{detail:{tags:["Authentication"],summary:"Reject pending device",description:"Reject a pending device login request"}}),e.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 b=await o.select().from(t).where(Do(Gn(s("userId"),f),Gn(s("approvalStatus"),"pending"))).orderBy(F1(s("createdAt")));return{success:!0,data:{sessions:b.map((h)=>{let k=h;return{...ls(k),approvalStatus:k.approval_status||k.approvalStatus,approvalToken:k.approval_token||k.approvalToken,approvalRequestedAt:k.approval_requested_at?.toISOString()||k.approvalRequestedAt?.toISOString()}}),totalCount:b.length}}},{detail:{tags:["Authentication"],summary:"List pending devices",description:"Get all pending device approval requests for the current user"}}),e}var $d=d(()=>{hd();O1();hd()});var T1={};Zt(T1,{createSessionsRoute:()=>fs,createRegisterRoute:()=>ss,createRefreshRoute:()=>is,createPasswordSetRoute:()=>es,createPasswordResetRoute:()=>as,createPasswordChangeRoute:()=>cs,createMeRoute:()=>os,createMagicLinkRoute:()=>ts,createLogoutRoute:()=>di,createLoginRoute:()=>li,createInviteRoute:()=>ii,createEmailVerificationRoutes:()=>ti,createAuthRoutes:()=>K1});function K1(n,r){let{authConfig:t,features:o,helpers:c}=r,a=t.authentication?.cookieMaxAgeBufferSeconds??0,e={accessTokenName:t.authentication?.accessToken?.name||"access_token",refreshTokenName:t.authentication?.refreshToken?.name||"refresh_token",sessionTokenName:t.authentication?.sessionToken?.name||"session_token",accessTokenMaxAge:Math.max(0,ot(t.authentication?.accessToken?.expiresIn||"15m")-a),refreshTokenMaxAge:ot(t.authentication?.refreshToken?.expiresIn||"7d"),sessionTokenMaxAge:ot(t.authentication?.sessionToken?.expiresIn||"30d")};if(t.logger.info("[AUTH] Cookie config created",{accessTokenMaxAge:e.accessTokenMaxAge,refreshTokenMaxAge:e.refreshTokenMaxAge,sessionTokenMaxAge:e.sessionTokenMaxAge,accessTokenExpiresIn:t.authentication?.accessToken?.expiresIn,sessionTokenExpiresIn:t.authentication?.sessionToken?.expiresIn}),o.login?.enabled){let i=li(t,o.login,c.signAccessToken,c.signRefreshToken,c.createSession,c.saveSessionToDb,e,r.tokenResponseConfig);n.use(i)}if(o.register?.enabled){let i=ss(t,o.register,c.sendWelcomeEmail,c.signAccessToken,c.signRefreshToken,c.createSession,e,r.tokenResponseConfig,r.emailService,r.appName);if(n.use(i),o.register.emailVerification?.enabled){let s=ti({authConfig:t,registerConfig:o.register,emailService:r.emailService,appName:r.appName});n.use(s)}}if(o.logout?.enabled){let i=di(t,o.logout,c.destroySession,c.revokeSessionInDb);n.use(i)}if(o.refresh?.enabled){let i=is(t,o.refresh,c.verifyRefreshToken,c.signAccessToken,c.signRefreshToken,r.tokenResponseConfig,a);n.use(i)}if(o.passwordReset?.enabled&&c.storeResetToken&&c.getResetToken&&c.deleteResetToken){let i=as(t,o.passwordReset,c.storeResetToken,c.getResetToken,c.deleteResetToken,c.sendResetEmail);n.use(i)}if(o.passwordChange?.enabled){let i=cs(t,o.passwordChange);n.use(i)}if(o.passwordSet?.enabled){let i=es(t,o.passwordSet,c.getMagicToken,c.deleteMagicToken);n.use(i)}if(o.sessions?.enabled&&r.sessionsTable){let i=fs(t,o.sessions,r.sessionsTable);n.use(i)}if(o.magicLink?.enabled&&r.emailService?.isAvailable()&&c.storeMagicToken&&c.getMagicToken&&c.deleteMagicToken){let i=ts(t,o.magicLink,r.emailService,c.signAccessToken,c.signRefreshToken,c.createSession,c.storeMagicToken,c.getMagicToken,c.deleteMagicToken,r.appName);n.use(i)}if(o.me?.enabled){let i=os(t,o.me,r.schemaTables||{},r.schemaRelations||{},r.databaseUrl);n.use(i)}if(o.invite?.enabled&&r.emailService?.isAvailable()&&c.storeMagicToken){let i=ii(t,o.invite,r.emailService,c.storeMagicToken,r.appName,c.getMagicToken);n.use(i)}if(o.captcha?.enabled&&r.captchaService){let i=Yu({captchaService:r.captchaService,logger:t.logger,basePath:o.captcha.route||"/auth/captcha"});n.use(i)}return n}var kd=d(()=>{Ne();Ju();bf();gf();hf();$f();y0();nd();od();id();fd();bd();_d();$d();bf();gf();hf();$f();y0();nd();od();id();fd();bd();_d();$d()});import{batch as gs,createStore as y1}from"h-state";import{useEffectEvent as n2}from"react";function r2(n){let r={};for(let t of Object.keys(n))r[t]={isPending:!1,data:null,error:null,code:null};return r}function t2(n,r){let{useStore:t}=y1(r2(n),{_callEndpoint:(o)=>async(c,a)=>{if(!o[c])return;gs(()=>{o[c].isPending=!0,o[c].error=null});try{let i=await r(c,a.payload);if(gs(()=>{if(o[c].isPending=!1,o[c].code=i.code??null,i.isSuccess&&i.data!==void 0)o[c].data=i.data,o[c].error=null;else o[c].error=i.errors??null}),i.isSuccess)a.onAfterHandle?.(i.data??i);else a.onErrorHandle?.(i.errors??{message:"Request failed"},i.code)}catch(i){gs(()=>{o[c].isPending=!1,o[c].error={message:i instanceof Error?i.message:"Unknown error"}}),a.onErrorHandle?.({message:i instanceof Error?i.message:"Unknown error"},null)}}});return function(){let c=t(),a=n2((i,s)=>{c._callEndpoint(i,s)}),e={};for(let i of Object.keys(n)){let s=(l)=>{a(i,l)};e[i]={state:c[i],start:s}}return e}}var Ed={$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"]}]}]};var us={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}]}};var c2=["profiles","addresses","phones","files","users","roles","claims","user_roles","role_claims","audit_logs"],a2=Ed.tables.filter((n)=>c2.includes(n.table_name));function ic(n){return n.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toUpperCase()}function e2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function _s(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 $t(n,r){let t=ic(n),o=ic(_s(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 ec(n,r){let t=ic(n);switch(r){case"POST":return`BULK_ADD_${t}`;case"PUT":return`BULK_UPDATE_${t}`;case"DELETE":return`BULK_DELETE_${t}`}}function yt(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 Md(n){let r={};for(let t of n.entities){let o=t.table_name,c=`/${o}`;if(!yt(t,"GET")){r[$t(o,"GET")]={method:"GET",path:c,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0};let a=ic(_s(o));r[`GET_${a}_BY_ID`]={method:"GET",path:`${c}/:id`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0},r[`GET_${ic(o)}_DISTINCT`]={method:"GET",path:`${c}/distinct/:field`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0}}if(!yt(t,"POST"))r[$t(o,"POST")]={method:"POST",path:c,isPublic:t.is_public?.POST??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"PUT"))r[$t(o,"PUT")]={method:"PUT",path:`${c}/:id`,isPublic:t.is_public?.PUT??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"PATCH"))r[$t(o,"PATCH")]={method:"PATCH",path:`${c}/:id`,isPublic:t.is_public?.PATCH??!1,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"DELETE"))r[$t(o,"DELETE")]={method:"DELETE",path:`${c}/:id`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0};if(t.bulk_endpoints_enabled){if(!yt(t,"POST"))r[ec(o,"POST")]={method:"POST",path:`${c}/bulk`,isPublic:t.is_public?.POST??!1,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"PUT"))r[ec(o,"PUT")]={method:"PUT",path:`${c}/bulk`,isPublic:t.is_public?.PUT??!1,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"DELETE"))r[ec(o,"DELETE")]={method:"DELETE",path:`${c}/bulk`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0}}}return r}function Dd(n){let r={},t=n.authentication;if(!t?.enabled)return r;for(let[o,c]of Object.entries(us)){let a=t[o];if(!a?.enabled)continue;let e=a.route||c.defaultRoute,i=a.isPublic??c.defaultIsPublic;if("subEndpoints"in c&&c.subEndpoints)for(let s of c.subEndpoints){let l="routeKey"in s&&s.routeKey&&a[s.routeKey]?String(a[s.routeKey]):("defaultRoute"in s)&&s.defaultRoute?String(s.defaultRoute):`${e}${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 c)r[c.key]={method:c.method,path:e,isPublic:i,_payload:c._payload,_success:c._success,_error:c._error}}return r}function Hd(){let n={};for(let r of a2){let t=r.table_name,c=`/${e2(t)}`,a=t==="files";n[$t(t,"GET")]={method:"GET",path:c,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0};let e=ic(_s(t));if(n[`GET_${e}_BY_ID`]={method:"GET",path:`${c}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[$t(t,"POST")]={method:"POST",path:c,isPublic:!1,isFormData:a,_payload:void 0,_success:void 0,_error:void 0},n[$t(t,"PUT")]={method:"PUT",path:`${c}/:id`,isPublic:!1,isFormData:a,_payload:void 0,_success:void 0,_error:void 0},n[$t(t,"PATCH")]={method:"PATCH",path:`${c}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[$t(t,"DELETE")]={method:"DELETE",path:`${c}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.bulk_endpoints_enabled)n[ec(t,"POST")]={method:"POST",path:`${c}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[ec(t,"PUT")]={method:"PUT",path:`${c}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[ec(t,"DELETE")]={method:"DELETE",path:`${c}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0}}return n}function i2(n,r){let t=Md(n),o=Dd(n),c=Hd();return{...t,...o,...c,...r??{}}}Ms();import{randomUUID as b2}from"crypto";var g2={timeout:30000,retries:0,retryDelay:1000,debug:!1};class na{config;logger;constructor(n={}){this.config={...g2,...n},this.logger=new xr({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 c=r[o];r[o]=c?`${c}, ${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,c=setTimeout(()=>o.abort(),r);try{return await Promise.race([n,new Promise((e,i)=>{o.signal.addEventListener("abort",()=>{i(Error(`Request timeout after ${r}ms`))})})])}finally{clearTimeout(c)}}async fetch(n){let r=b2(),t=performance.now(),o=this.buildUrl(n.url),c=this.buildHeaders(n.headers),a=n.timeout??this.config.timeout??30000,e=n.retries??this.config.retries??0,i=n.retryDelay??this.config.retryDelay??1000,s;if(n.body)if(typeof n.body==="object"&&!(n.body instanceof FormData)&&!(n.body instanceof URLSearchParams)&&!(n.body instanceof Blob)&&!(n.body instanceof ArrayBuffer)){if(s=JSON.stringify(n.body),!c.has("content-type"))c.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<=e)try{let g=await this.executeWithTimeout(fetch(o,{method:n.method,headers:c,body:s}),a,r),h=performance.now()-t,k=this.parseResponseHeaders(g.headers),$,m,R=await g.text();if(R)try{let C=JSON.parse(R);if(g.ok)$=C;else m=C}catch{if(!g.ok)m={message:R||g.statusText}}else if(!g.ok)m={message:g.statusText};let X={isSuccess:g.ok,response:$,errors:m,code:g.status,headers:k,durationMs:h,requestId:r,createdAt:new Date};if(g.ok)this.logger.info(`[${r}] ${n.method} ${o} ${g.status}`,{method:n.method,url:o,statusCode:g.status,durationMs:Math.round(h)});else this.logger.warn(`[${r}] ${n.method} ${o} ${g.status}`,{method:n.method,url:o,statusCode:g.status,durationMs:Math.round(h),error:m});return X}catch(g){if(l=g instanceof Error?g:Error(String(g)),f++,f<=e)this.logger.warn(`[${r}] Retry ${f}/${e} after error`,{method:n.method,url:o,error:l.message,attempt:f,retries:e}),await new Promise((h)=>setTimeout(h,i))}let b=performance.now()-t;return this.logger.error(`[${r}] ${n.method} ${o} failed`,l,{method:n.method,url:o,durationMs:Math.round(b),attempts:f}),{isSuccess:!1,response:void 0,errors:{message:l?.message||"Unknown error"},code:null,headers:{},durationMs:b,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 u2=new na;var _2={accessToken:"access_token",refreshToken:"refresh_token",sessionToken:"session_token"};function m2(n){let r=[],t="";for(let o=0;o<n.length;o++){let c=n[o];if(c===","){let a=n.slice(o+1).trimStart();if(/^[a-zA-Z0-9_-]+=/.test(a)){r.push(t.trim()),t="";continue}}t+=c}if(t.trim())r.push(t.trim());return r}function w2(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 c=n.get(`x-${r.accessToken}`),a=n.get(`x-${r.refreshToken}`),e=n.get(`x-${r.sessionToken}`);if(c)t[`x-${r.accessToken}`]=c;if(a)t[`x-${r.refreshToken}`]=a;if(e)t[`x-${r.sessionToken}`]=e;let i=n.get("cookie");if(i)t.cookie=i;return t}function h2(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 c=t.startsWith("_")?t:h2(t);if(o instanceof Date)r[c]=o.toISOString();else if(o&&typeof o==="object"&&!Array.isArray(o))r[c]=xd(o);else r[c]=o}return r}function $2(n,r){let t=new URLSearchParams,o=(a,e)=>{if(e===void 0||e===null)return;if(Array.isArray(e))for(let i of e)o(`${a}[]`,i);else if(e instanceof Date)t.append(a,e.toISOString());else if(typeof e==="object")for(let[i,s]of Object.entries(e))o(`${a}[${i}]`,s);else t.append(a,String(e))};for(let[a,e]of Object.entries(r))o(a,e);let c=t.toString();if(!c)return n;return n.includes("?")?`${n}&${c}`:`${n}?${c}`}function k2(n,r,t,o){let c={..._2,...r.tokenNames},a=new na({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(),b=await o(),g={};b.forEach((X,C)=>{g[C]=X});let h=w2(b,c),k=l.path,$;if(s&&typeof s==="object"&&!(s instanceof FormData)){let X=s;for(let[C,E]of Object.entries(X))if(E!=null){if(C.startsWith("_"))k=k.replace(`:${C.substring(1)}`,String(E));else if(C==="id"&&k.includes(":id"))k=k.replace(":id",String(E))}}if(l.method==="GET"&&s&&typeof s==="object")k=$2(k,s);else if(s!==void 0){if(l.isFormData&&s instanceof FormData)$=s;else if($=xd(s),!h["content-type"])h["content-type"]="application/json"}let m=await a.fetch({url:k,method:l.method,headers:h,body:$});if(m.headers["set-cookie"])try{let X=m.headers["set-cookie"],C=m2(X);for(let E of C){let[Q,...W]=E.split(";");if(!Q)continue;let[S,z]=Q.split("=");if(S&&z){let w={};for(let u of W){let[U,P]=u.trim().split("=");if(!U)continue;let J=U.toLowerCase();if(J==="path")w.path=P;else if(J==="max-age")w.maxAge=Number(P);else if(J==="expires"&&P)w.expires=new Date(P);else if(J==="httponly")w.httpOnly=!0;else if(J==="secure")w.secure=!0;else if(J==="samesite")w.sameSite=P}f.set(S.trim(),z.trim(),w)}}}catch(X){console.warn("[ServerFactory] Failed to process Set-Cookie headers:",X instanceof Error?X.message:String(X))}let R=m.response;if(m.isSuccess&&R&&typeof R==="object"&&!Array.isArray(R)){let X=R;if("success"in X&&!("data"in X)){let{success:C,message:E,error:Q,...W}=X;R={success:C,...E!==void 0?{message:E}:{},...Q!==void 0?{error:Q}:{},...Object.keys(W).length>0?{data:W}:{}}}}return{isSuccess:m.isSuccess,data:R,errors:m.errors,code:m.code,message:m.isSuccess?void 0:m.errors?.message}}}import{useEffect as Wd,useEffectEvent as zo,useRef as ra}from"react";import{batch as R2,createStore as A2}from"h-state";var S2={connection:{status:"disconnected",clientId:null,subscribedTopics:[],error:null,reconnectAttempt:0},events:[],maxEvents:100},{useStore:Ds}=A2(S2,{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)=>()=>{R2(()=>{n.connection.status="disconnected",n.connection.clientId=null,n.connection.subscribedTopics=[],n.connection.error=null,n.connection.reconnectAttempt=0,n.events=[]})}});function E2(n){if(n.wsUrl){let a=n.wsUrl.replace(/\/$/,""),e=n.wsPath||"/api/events/subscribe",i=(n.topics||["*"]).join(",");return`${a}${e}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(i)}`}if(typeof window>"u")return"";let r=window.location.protocol==="https:"?"wss:":"ws:",t=window.location.host,o=n.wsPath||"/api/events/subscribe",c=(n.topics||["*"]).join(",");return`${r}//${t}${o}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(c)}`}var M2=0;function D2(n){let r=Ds(),t=ra(null),o=ra(null),c=ra(null),a=ra(!1),e=ra(n);e.current=n;let i=n.autoReconnect??!0,s=n.maxReconnectAttempts??10,l=n.reconnectBaseDelay??1000,f=n.reconnectMaxDelay??30000,b=n.heartbeatInterval??30000,g=n.debug??!1,h=(...z)=>{if(g)console.log("[usePubSub]",...z)},k=()=>{if(o.current)clearInterval(o.current),o.current=null},$=()=>{if(c.current)clearTimeout(c.current),c.current=null},m=(z)=>{k(),o.current=setInterval(()=>{if(z.readyState===WebSocket.OPEN)z.send(JSON.stringify({type:"ping"}))},b)},R=zo((z)=>{try{let w=JSON.parse(z.data);switch(w.type){case"connected":r.setConnectionStatus("connected"),r.setClientId(w.clientId),r.setSubscribedTopics(w.subscribedTopics),r.setReconnectAttempt(0),r.setError(null),h("Connected, clientId:",w.clientId);break;case"subscribed":r.setSubscribedTopics(w.topics),h("Subscribed to:",w.topics);break;case"event":{let u={id:`evt_${Date.now()}_${M2++}`,topic:w.topic,data:w.data,timestamp:w.timestamp,receivedAt:Date.now(),messageId:w.messageId,isRedelivery:w.isRedelivery};if(r.addEvent(u),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)),h("Server error:",w.error);break}}catch{h("Failed to parse message")}}),X=zo((z)=>{if(a.current)return;if(!i)return;if(z>=s){r.setConnectionStatus("disconnected"),r.setError(Error("Max reconnection attempts reached")),h("Max reconnect attempts reached");return}let w=Math.min(l*2**z,f);h(`Reconnecting in ${w}ms (attempt ${z+1}/${s})`),r.setConnectionStatus("reconnecting"),r.setReconnectAttempt(z+1),$(),c.current=setTimeout(()=>{if(!a.current)C()},w)}),C=zo(()=>{if(a.current)return;if(t.current?.readyState===WebSocket.OPEN)return;if(!e.current.userId)return;if(t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}let z=E2(e.current);if(!z)return;r.setConnectionStatus("connecting"),r.setError(null),h("Connecting to:",z);let w=new WebSocket(z);t.current=w,w.onopen=()=>{h("WebSocket opened"),m(w)},w.onmessage=R,w.onerror=()=>{h("WebSocket error"),r.setError(Error("WebSocket connection error"))},w.onclose=(u)=>{if(h("WebSocket closed",u.code,u.reason),k(),r.setConnectionStatus("disconnected"),r.setClientId(null),!a.current&&u.code!==4001){let U=r.connection.reconnectAttempt;X(U)}}}),E=zo(()=>{if(k(),$(),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)}),Q=zo((z)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"subscribe",topics:z}))}),W=zo((z)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"unsubscribe",topics:z}))}),S=zo((z)=>{return r.events.filter((w)=>w.topic===z)});return Wd(()=>{if(a.current=!1,n.userId)C();return()=>{a.current=!0,E()}},[n.userId]),Wd(()=>{if(r.connection.status==="connected"&&n.topics)Q(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:C,disconnect:E,subscribe:Q,unsubscribe:W,clearEvents:r.clearEvents,getEventsByTopic:S}}import{randomUUID as Q4}from"crypto";var Ys=$r(Vd(),1);import{Elysia as se,NotFoundError as lc}from"elysia";var Or,no,xt=typeof Bun<"u"&&!!Bun.file;function sc(){if(Or||(Or=process.getBuiltinModule("fs/promises")),no||(no=process.getBuiltinModule("path")),!no){console.warn("@elysiajs/static require path to be available.");return}return[Or,no]}async function Cd(n){if(Or||sc(),xt){let r=new Bun.Glob("**/*.html"),t=[];for await(let o of r.scan(n))t.push(no.join(n,o));return t}return[]}async function zs(n){if(Or||sc(),xt){let t=new Bun.Glob("**/*"),o=[];for await(let c of t.scan(n))o.push(no.join(n,c));return o}let r=await Or.readdir(n).catch(()=>[]);return(await Promise.all(r.map(async(t)=>{let o=n+no.sep+t,c=await Or.stat(o).catch(()=>null);return c?c.isDirectory()?await zs(o):[no.resolve(n,o)]:[]}))).flat()}function Us(n){return Or||sc(),Or.stat(n).then(()=>!0,()=>!1)}class Bs{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,c]of this.map)c[1]<=t&&this.map.delete(o)},this.ttl)),this.map.has(n))this.map.delete(n);else if(this.map.size>=this.max){let t=this.map.keys().next().value;t!==void 0&&this.delete(t)}this.map.set(n,[r,Date.now()+this.ttl*1000])}delete(n){this.map.get(n)&&this.map.delete(n)}clear(){this.map.clear()}size(){return this.map.size}[Symbol.dispose](){this.interval&&clearInterval(this.interval)}}function xs(n,r,t){if(n["cache-control"]&&/no-cache|no-store/.test(n["cache-control"]))return!1;if("if-none-match"in n){let o=n["if-none-match"];return o==="*"?!0:o===null||typeof r!="string"?!1:o===r}if(n["if-modified-since"]){let o=n["if-modified-since"];try{return Or.stat(t).then((c)=>{if(c.mtime!==void 0&&c.mtime.getTime()<=Date.parse(o))return!0})}catch{}}return!1}var ie;function ta(n){return xt?Bun.file(n):(Or||sc(),Or.readFile(n))}async function Ws(n){return xt?new Bun.CryptoHasher("md5").update(await n.arrayBuffer()).digest("base64"):(ie||(ie=process.getBuiltinModule("crypto")),ie?ie.createHash("md5").update(n).digest("base64"):void console.warn("[@elysiajs/static] crypto is required to generate etag."))}var oa=(n)=>{if(!n)return!1;for(let r in n)return!0;return!1};async function Ld({assets:n="public",prefix:r="/public",staticLimit:t=1024,alwaysStatic:o=!1,ignorePatterns:c=[".DS_Store",".git",".env"],headers:a,maxAge:e=86400,directive:i="public",etag:s=!0,extension:l=!0,indexHTML:f=!0,decodeURI:b,silent:g}={}){if(typeof process>"u"||typeof process.getBuiltinModule>"u")return g||console.warn("[@elysiajs/static] require process.getBuiltinModule. Static plugin is disabled"),new se;let h=sc();if(!h)return new se;let[k,$]=h,m=$.sep!=="/"?(W)=>W.replace(/\\/g,"/"):(W)=>W,R=new Bs;r===$.sep&&(r="");let X=$.resolve(n),C=c.length?(W)=>c.find((S)=>typeof S=="string"?S.includes(W):S.test(W)):()=>!1,E=new se({name:"static",seed:r});if(o){let W=await zs($.resolve(n));if(W.length<=t)for(let S of W){let z=function({headers:J}){if(P){let Y=xs(J,P,S);if(Y===!0)return new Response(null,{status:304,headers:oa(a)?a:void 0});if(Y!==!1){let B=R.get(u);return B?B.clone():Y.then((D)=>{if(D)return new Response(null,{status:304,headers:a||void 0});let x=new Response(U,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},a,P?{Etag:P}:{})});return R.set(r,x),x.clone()})}}let F=R.get(u);if(F)return F.clone();let I=new Response(U,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},a,P?{Etag:P}:{})});return R.set(u,I),I.clone()};var Q=z;if(!S||C(S))continue;let w=S.replace(X,"");b&&(w=Ys.default(w)??w);let u=m($.join(r,w));if(xt&&S.endsWith(".html")){let J=await import(S);E.get(u,J.default),f&&u.endsWith("/index.html")&&E.get(u.replace("/index.html",""),J.default);continue}l||(u=m(u.slice(0,u.lastIndexOf("."))));let U=xt?ta(S):await ta(S);if(!U)return g||console.warn(`[@elysiajs/static] Failed to load file: ${S}`),new se;let P=await Ws(U);E.get(u,s?z:new Response(U,oa(a)?{headers:a}:void 0)),f&&u.endsWith("/index.html")&&E.get(u.replace("/index.html",""),s?z:new Response(U,oa(a)?{headers:a}:void 0))}return E}if(!(`GET_${r}/*`in E.routeTree)){if(xt){let W=await Cd($.resolve(n));for(let S of W){if(!S||C(S))continue;let z=S.replace(X,""),w=m($.join(r,z)),u=await import(S);E.get(w,u.default),f&&w.endsWith("/index.html")&&E.get(w.replace("/index.html",""),u.default)}}E.onError(()=>{}).get(`${r.endsWith("/")?r.slice(0,-1):r}/*`,async({params:W,headers:S})=>{let z=m($.join(n,b?Ys.default(W["*"])??W["*"]:W["*"]));if(C(z))throw new lc;let w=R.get(z);if(w)return w.clone();try{let u=await k.stat(z).catch(()=>null);if(!u)throw new lc;if(!f&&u.isDirectory())throw new lc;let U;if(!xt&&f){let F=$.join(z,"index.html"),I=R.get(F);if(I)return I.clone();await Us(F)&&(U=await ta(F))}if(!U&&!u.isDirectory()&&await Us(z))U=await ta(z);else throw new lc;if(!s)return new Response(U,oa(a)?{headers:a}:void 0);let P=await Ws(U);if(P&&await xs(S,P,z))return new Response(null,{status:304});let J=new Response(U,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},a,P?{Etag:P}:{})});return R.set(z,J),J.clone()}catch(u){throw u instanceof lc?u:(g||console.error("[@elysiajs/static]",u),new lc)}})}return E}Hl();$l();import{pushSchema as P4}from"drizzle-kit/api";import{and as ne,eq as br}from"drizzle-orm";import{drizzle as G4}from"drizzle-orm/node-postgres";import{pgSchema as q4}from"drizzle-orm/pg-core";import N4 from"elysia";var ig=[{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 n5={GET:["GET"],POST:["POST"],PUT:["PUT"],DELETE:["DELETE"],PATCH:["PATCH"],TOGGLE:["PATCH"],VERIFICATION:["POST"]};function r5(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 c=o.passwordReset.route||`${r}/auth/password-reset`;t.push({path:`${c}/request`,method:"POST",source:"auth"},{path:`${c}/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:"POST",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 c=o.invite.route||`${r}/auth/invite`;t.push({path:`${c}/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 c=o.captcha.route||`${r}/auth/captcha`;t.push({path:`${c}/generate`,method:"GET",source:"auth"},{path:`${c}/validate`,method:"POST",source:"auth"})}return t}function sg(n,r,t){let o=[];for(let c of n){if(!c.is_public)continue;let a=`${r}/${t}/${c.table_name}`;for(let[e,i]of Object.entries(c.is_public)){if(!i)continue;let s=n5[e];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 t5(n,r,t){return sg(n,r,t)}function zl(n,r,t="",o="public"){let c=r5(n,t),a=sg(n.entities||[],t,o),e=t5(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[...c,...a,...e,...i,...s]}function Ul(n,r,t){let o=r.replace(/\/$/,""),c=t.toUpperCase();for(let a of n){if(a.method!==c)continue;if(o5(a.path,o))return!0}return!1}function o5(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 c=0;c<t.length;c++){let a=t[c],e=o[c];if(a?.startsWith(":"))continue;if(a!==e)return!1}return!0}ml();Ne();je();import{asc as V5,desc as C5,eq as Ar,ilike as jg,inArray as L5,notInArray as Q5,or as P5}from"drizzle-orm";import{drizzle as G5}from"drizzle-orm/node-postgres";import{Elysia as q5,t as Xn}from"elysia";import{t as Qn}from"elysia";function Tl(n){let r={};if(!n||n.length===0)return Qn.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?Qn.Number():Qn.Optional(Qn.Number());break;case"boolean":r[t.name]=t.notNull?Qn.Boolean():Qn.Optional(Qn.Boolean());break;case"timestamp":case"timestamptz":case"date":r[t.name]=t.notNull?Qn.String({format:"date-time"}):Qn.Optional(Qn.String({format:"date-time"}));break;case"json":case"jsonb":r[t.name]=Qn.Optional(Qn.Unknown());break;case"uuid":r[t.name]=t.notNull?Qn.String({format:"uuid"}):Qn.Optional(Qn.String({format:"uuid"}));break;default:r[t.name]=t.notNull?Qn.String():Qn.Optional(Qn.String())}return Qn.Object(r,{additionalProperties:!0})}function Fg(n){return Qn.Array(Qn.Object({id:Qn.String(),data:Tl(n)}))}function vl(n,r){let{db:t,schemaTables:o,schemaRelations:c,entities:a,logger:e,databaseUrl:i,storage:s,authorization:l}=r,f=ba(s),b=l?.enabled??!1;if(!t)return n;let g=Object.keys(o),h=a.map((E)=>E.table_name),k=g.filter((E)=>!h.includes(E)),$=["userSessions","passwordResetTokens","magicLinkTokens"],m=["passwordResetTokens","magicLinkTokens"],R=["files"],X=k.filter((E)=>{if(m.includes(E)&&!r.emailServiceAvailable)return e.info(`Skipping ${E} routes - email service not available`),!1;return!0}).map((E)=>({table_name:E,group_name:$.includes(E)?"Authentication":E,is_form_data:R.includes(E)})),C=[...a,...X];e.info(`All entities: ${C.map((E)=>E.table_name).join(", ")}`);for(let E of C){let Q=E.table_name,W=E.group_name||E.table_name,S=o[Q];if(!S)continue;let z=c[`${Q}Relations`];e.info(`Creating routes for table: ${Q}`);let w=S,u=w.id,U=t,P=Tl(E.columns),J=Xn.Array(P),F=Fg(E.columns),I=Xn.Array(Xn.String()),Y=new q5({prefix:`/${Q}`});if(!E.excluded_methods?.includes("GET"))Y.get("/",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let D=B.request.headers.get("x-user-id"),x=E.columns?.map((vn)=>vn.name),N=Object.keys(c).filter((vn)=>vn.startsWith(`${E.table_name}Relations`)).map((vn)=>vn.replace("Relations","")),j=null;if(b&&D){if(j=await _l({userId:D,method:"GET",entity:E.table_name,requestedFields:x,requestedRelations:N,db:U,schemaTables:o,logger:e}),!j.authorized)return{success:!1,message:j.reason||"Unauthorized",status:403}}let K=ql(B.query),q=[];if(b&&j?.scopeFilters)for(let[vn,on]of Object.entries(j.scopeFilters)){let Un=w[vn];if(Un)q.push(Ar(Un,on))}if(K.search&&K.searchFields){let vn=K.searchFields.map((on)=>{let Un=w[on.trim()];return Un?jg(Un,`%${K.search}%`):null}).filter((on)=>on!==null);if(vn.length>0){let on=P5(...vn);if(on)q.push(on)}}if(K.filters){let{ne:vn,gt:on,gte:Un,lt:Rr,lte:Nr,like:Ho,isNull:ac,isNotNull:ds}=await import("drizzle-orm");for(let gr of K.filters){let ir=w[gr.field];if(!ir)continue;switch(gr.operator){case"eq":q.push(Ar(ir,gr.value));break;case"neq":q.push(vn(ir,gr.value));break;case"gt":q.push(on(ir,gr.value));break;case"gte":q.push(Un(ir,gr.value));break;case"lt":q.push(Rr(ir,gr.value));break;case"lte":q.push(Nr(ir,gr.value));break;case"like":q.push(Ho(ir,gr.value));break;case"ilike":q.push(jg(ir,gr.value));break;case"in":q.push(L5(ir,gr.value));break;case"notIn":q.push(Q5(ir,gr.value));break;case"isNull":q.push(ac(ir));break;case"isNotNull":q.push(ds(ir));break}}}let tn=U.select().from(S);if(q.length>0){let{and:vn}=await import("drizzle-orm"),on=vn(...q);if(on)tn=tn.where(on)}if(K.sort&&K.sort.length>0){let vn=K.sort.map((on)=>{let Un=w[on.field];if(!Un)return null;return on.direction==="desc"?C5(Un):V5(Un)}).filter((on)=>on!==null);if(vn.length>0)tn=tn.orderBy(...vn)}let v=K.page??1,dn=K.limit??20,rt=K.offset??(v-1)*dn,cr=U.select().from(S);if(q.length>0){let{and:vn}=await import("drizzle-orm"),on=vn(...q);if(on)cr.where(on)}let Tn=(await cr).length;tn=tn.limit(dn).offset(rt);let cc=await tn,re=Cg(v,dn,rt,Tn);if(b&&j?.allowedFields)cc=Ue(cc,j.allowedFields);return{success:!0,data:{items:cc,meta:re}}},{detail:{tags:[W],summary:`List ${Q}`,description:`Get paginated list of ${Q} records with filtering, sorting, and search`}}),Y.get("/:id",async(B)=>{if(!U||!u)return{success:!1,message:"No id column or DB"};let D=B.params,x=ql(B.query),N=B.request.headers.get("x-user-id"),j=E.columns?.map((dn)=>dn.name),K=x.with?.map((dn)=>dn.name),q=null;if(b&&N){if(q=await _l({userId:N,method:"GET",entity:E.table_name,requestedFields:j,requestedRelations:K,db:U,schemaTables:o,logger:e}),!q.authorized)return{success:!1,message:q.reason||"Unauthorized",status:403}}if(x.with&&x.with.length>0&&z&&i){let dn=b&&q?.allowedRelations?x.with.filter(($n)=>q.allowedRelations?.includes($n.name)??!1):x.with,cr=await G5(i,{schema:{...o,...c}}).query[E.table_name]?.findFirst({where:Ar(u,D.id),with:dn.reduce(($n,Tn)=>{return $n[Tn.name]=Tn.limit?{limit:Tn.limit}:!0,$n},{})});if(b&&q?.allowedFields&&cr)cr=Ue(cr,q.allowedFields);if(b&&q?.allowedRelations&&cr)cr=Pb(cr,q.allowedRelations);return{success:!0,data:cr||null}}let v=(await U.select().from(S).where(Ar(u,D.id)))[0]||null;if(b&&q?.allowedFields&&v)v=Ue(v,q.allowedFields);return{success:!0,data:v}},{detail:{tags:[W],summary:`Get ${Q} by ID`,description:`Get a single ${Q} record by its ID with optional relations`}}),Y.get("/distinct/:field",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let D=B.params,x=w[D.field];if(!x)return{success:!1,message:"Field not found"};return{success:!0,data:await U.selectDistinct({value:x}).from(S)}},{detail:{tags:[W],summary:`Get distinct ${Q} values`,description:`Get distinct values for a specific field in ${Q}`}});if(!E.excluded_methods?.includes("POST"))if(E.is_form_data&&f.enabled)Y.post("/",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let D=B.request.headers.get("x-user-id"),{data:x,files:N}=ga(B.body,f),j=x;if(E.columns){j=gc(j,E.columns);let tn=bc(j,E.columns,!1);if(!tn.valid)return{success:!1,message:"Validation failed",errors:tn.errors}}let K=null;if(N.length>0){if(K=await ua(N,f,E.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 tn=K.success[0];if(tn){let v=tn.originalName.split(".").pop()||"";j={...j,id:tn.id,name:tn.name,originalName:tn.originalName,path:tn.path,mimeType:tn.mimeType,size:tn.size,extension:v,uploadedBy:D}}}}if(D)j.createdBy=D;let q=await U.insert(S).values(j).returning();{let tn=new URL(B.request.url);e.audit({entityName:E.table_name,entityId:String(q[0]?.id??""),operation:"CREATE",userId:D||void 0,summary:`Created ${E.table_name}`,newValues:q[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:tn.pathname,query:tn.search})}return{success:!0,data:q[0]}},{type:"formdata",body:Xn.Object({[f.formData.dataField]:Xn.Optional(Xn.Union([Xn.String(),Xn.Any()])),[f.formData.filesField]:Xn.Optional(Xn.Union([Xn.File(),Xn.Array(Xn.File())]))}),detail:{tags:[W],summary:`Create ${Q} with files`,description:`Create a new ${Q} record with file upload support`}});else Y.post("/",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let D=B.body,x=B.request.headers.get("x-user-id");if(E.columns){D=gc(D,E.columns);let j=bc(D,E.columns,!1);if(!j.valid)return{success:!1,message:"Validation failed",errors:j.errors}}if(x)D.createdBy=x;let N=await U.insert(S).values(D).returning();{let j=new URL(B.request.url);e.audit({entityName:E.table_name,entityId:String(N[0]?.id??""),operation:"CREATE",userId:x||void 0,summary:`Created ${E.table_name}`,newValues:N[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:j.pathname,query:j.search})}return{success:!0,data:N[0]}},{body:P,detail:{tags:[W],summary:`Create ${Q}`,description:`Create a new ${Q} record`}});if(!E.excluded_methods?.includes("PUT"))if(E.is_form_data&&f.enabled)Y.put("/:id",async(B)=>{if(!U||!u)return{success:!1,message:"No id column or DB"};let D=B.params,x=B.request.headers.get("x-user-id"),{data:N,files:j}=ga(B.body,f),K=N,q=await U.select().from(S).where(Ar(u,D.id)).limit(1);if(E.columns){K=gc(K,E.columns);let dn=bc(K,E.columns,!1);if(!dn.valid)return{success:!1,message:"Validation failed",errors:dn.errors}}let tn=null;if(j.length>0)tn=await ua(j,f,E.table_name);let v=await U.update(S).set(K).where(Ar(u,D.id)).returning();{let dn=new URL(B.request.url);e.audit({entityName:E.table_name,entityId:D.id,operation:"UPDATE",userId:x||void 0,summary:`Updated ${E.table_name} (${D.id})`,oldValues:q[0],newValues:v[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:dn.pathname,query:dn.search})}return{success:!0,data:{record:v[0],files:tn?.success||[],fileErrors:tn?.failed||[]}}},{type:"formdata",body:Xn.Object({[f.formData.dataField]:Xn.Optional(Xn.Union([Xn.String(),Xn.Any()])),[f.formData.filesField]:Xn.Optional(Xn.Union([Xn.File(),Xn.Array(Xn.File())]))}),detail:{tags:[W],summary:`Update ${Q} with files`,description:`Full update of ${Q} record with file upload support`}});else Y.put("/:id",async(B)=>{if(!U||!u)return{success:!1,message:"No id column or DB"};let{params:D,body:x}=B,N=B.request.headers.get("x-user-id"),j=await U.select().from(S).where(Ar(u,D.id)).limit(1);if(E.columns){x=gc(x,E.columns);let q=bc(x,E.columns,!1);if(!q.valid)return{success:!1,message:"Validation failed",errors:q.errors}}if(x.updatedAt=new Date,N)x.updatedBy=N;let K=await U.update(S).set(x).where(Ar(u,D.id)).returning();{let q=new URL(B.request.url);e.audit({entityName:E.table_name,entityId:D.id,operation:"UPDATE",userId:N||void 0,summary:`Updated ${E.table_name} (${D.id})`,oldValues:j[0],newValues:K[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:q.pathname,query:q.search})}return{success:!0,data:K[0]}},{body:P,detail:{tags:[W],summary:`Update ${Q}`,description:`Full update of ${Q} record`}});if(!E.excluded_methods?.includes("PATCH"))Y.patch("/:id",async(B)=>{if(!U||!u)return{success:!1,message:"No id column or DB"};let{params:D,body:x}=B,N=B.request.headers.get("x-user-id"),j=await U.select().from(S).where(Ar(u,D.id)).limit(1);if(E.columns){x=gc(x,E.columns);let q=bc(x,E.columns,!0);if(!q.valid)return{success:!1,message:"Validation failed",errors:q.errors}}if(x.updatedAt=new Date,N)x.updatedBy=N;let K=await U.update(S).set(x).where(Ar(u,D.id)).returning();{let q=new URL(B.request.url);e.audit({entityName:E.table_name,entityId:D.id,operation:"PATCH",userId:N||void 0,summary:`Patched ${E.table_name} (${D.id})`,oldValues:j[0],newValues:K[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:q.pathname,query:q.search})}return{success:!0,data:K[0]}},{body:P,detail:{tags:[W],summary:`Patch ${Q}`,description:`Partial update of ${Q} record`}});if(!E.excluded_methods?.includes("DELETE"))Y.delete("/:id",async(B)=>{if(!U||!u)return{success:!1,message:"No id column or DB"};let D=B.params,x=B.request.headers.get("x-user-id"),N=await U.select().from(S).where(Ar(u,D.id)).limit(1);await U.delete(S).where(Ar(u,D.id));{let j=new URL(B.request.url);e.audit({entityName:E.table_name,entityId:D.id,operation:"DELETE",userId:x||void 0,summary:`Deleted ${E.table_name} (${D.id})`,oldValues:N[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:j.pathname,query:j.search})}return{success:!0,data:null}},{detail:{tags:[W],summary:`Delete ${Q}`,description:`Delete a ${Q} record`}});if(E.bulk_endpoints_enabled){if(!E.excluded_methods?.includes("POST"))Y.post("/bulk",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let D=B.body;if(!Array.isArray(D))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await U.transaction(async(N)=>{let j=[];for(let K of D){let q=await N.insert(S).values(K).returning();j.push(q[0])}return j})}}catch(x){return{success:!1,message:x instanceof Error?x.message:"Transaction failed"}}},{body:J,detail:{tags:[W],summary:`Bulk create ${Q}`,description:`Create multiple ${Q} records`}});if(!E.excluded_methods?.includes("PUT"))Y.put("/bulk",async(B)=>{if(!U||!u)return{success:!1,message:"No id column or DB"};let D=B.body;if(!Array.isArray(D))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await U.transaction(async(N)=>{let j=[];for(let K of D){let q=await N.update(S).set(K.data).where(Ar(u,K.id)).returning();j.push(q[0])}return j})}}catch(x){return{success:!1,message:x instanceof Error?x.message:"Transaction failed"}}},{body:F,detail:{tags:[W],summary:`Bulk update ${Q}`,description:`Update multiple ${Q} records`}});if(!E.excluded_methods?.includes("DELETE"))Y.delete("/bulk",async(B)=>{if(!U||!u)return{success:!1,message:"No id column or DB"};let D=B.body;if(!Array.isArray(D))return{success:!1,message:"Body must be an array of ids"};try{return await U.transaction(async(x)=>{for(let N of D)await x.delete(S).where(Ar(u,N))}),{success:!0,data:{deleted:D.length}}}catch(x){return{success:!1,message:x instanceof Error?x.message:"Transaction failed"}}},{body:I,detail:{tags:[W],summary:`Bulk delete ${Q}`,description:`Delete multiple ${Q} records`}})}n.use(Y)}return n}import N5,{t as _a}from"elysia";function O5(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 pl(n){let{monitoringService:r,logger:t,endpoints:o}=n,c=new N5({prefix:o.basePath});if(!o.enabled)return c;if(o.stream.enabled)c.get(o.stream.path,async function*({request:a}){t.info("[Monitoring] SSE stream connected");let e=O5(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((b)=>setTimeout(b,e)),!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)c.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)c.get(o.history.path,async({query:a})=>{let e=Math.min(a.minutes?parseInt(String(a.minutes),10):60,o.history.maxMinutes),i=await r.getHistory(e);return{isSuccess:!0,message:`Monitoring history for last ${e} minutes`,data:{minutes:e,count:i.length,snapshots:i}}},{query:_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)c.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"}}),c.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})`),c}import F5,{t as Jr}from"elysia";var j5={"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache, no-transform",Connection:"keep-alive"},K5=new TextEncoder,Il=(n,r)=>{let t=typeof r==="string"?r:JSON.stringify(r);return K5.encode(`event: ${n}
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 Rl{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,c=[...this.responseTimes].sort((i,s)=>i-s),a=c.length;return{requests:{total:this.requestCount,perMinute:t,byEndpoint:{...this.byEndpoint},byMethod:{...this.byMethod},byStatus:{...this.byStatus}},responseTime:{avg:a>0?Math.round(c.reduce((i,s)=>i+s,0)/a*100)/100:0,min:a>0?c[0]??0:0,max:a>0?c[a-1]??0:0,p50:a>0?c[Math.floor(a*0.5)]??0:0,p95:a>0?c[Math.floor(a*0.95)]??0:0,p99:a>0?c[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 Ib from"fs";import*as oo from"os";class Al{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=oo.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 c=0;if(this.lastCpuInfo){let a=t-this.lastCpuInfo.idle,e=o-this.lastCpuInfo.total;c=e>0?Math.round((1-a/e)*100*100)/100:0}return this.lastCpuInfo={idle:t,total:o},{usage:c,cores:r}}collectMemory(){let n=oo.totalmem(),r=oo.freemem(),t=n-r,o=Math.round(t/n*100*100)/100,c=process.memoryUsage();return{total:n,used:t,free:r,usagePercent:o,heapUsed:c.heapUsed,heapTotal:c.heapTotal}}async collectDisk(){try{let n=Ib.statfsSync("/"),r=n.blocks*n.bsize,t=n.bfree*n.bsize,o=r-t,c=Math.round(o/r*100*100)/100;return{total:r,used:o,free:t,usagePercent:c}}catch{return{total:0,used:0,free:0,usagePercent:0}}}collectNetwork(){let n=oo.networkInterfaces(),r=0,t=0;for(let o in n){let c=n[o];if(c){for(let a of c)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((c)=>{setImmediate(()=>{c(Date.now()-t)})});return{uptime:n,pid:r,eventLoopLag:o}}}var Zb=()=>{};import*as ng from"os";import{randomUUID as yb}from"crypto";class xe{store;memoryInterval=null;cpuInterval=null;lastCpuInfo=null;isRunning=!1;constructor(n){let r={...Z2,...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=ng.cpus(),t=0,o=0,c=0,a=0;for(let l of r)t+=l.times.user,o+=l.times.sys,c+=l.times.idle,a+=l.times.user+l.times.nice+l.times.sys+l.times.idle+l.times.irq;let e=0,i=0;if(this.lastCpuInfo){let l=a-this.lastCpuInfo.total,f=c-this.lastCpuInfo.idle;if(l>0){let b=l-f;e=Math.round((t-0)/(b||1)*100*100)/100,i=Math.round((o-0)/(b||1)*100*100)/100;let g=Math.round((1-f/l)*100*100)/100;e=Math.round(g*0.7*100)/100,i=Math.round(g*0.3*100)/100}}this.lastCpuInfo={idle:c,total:a};let s={timestamp:Date.now(),user:e,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:yb(),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:yb(),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),c=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||c.length>0||a.length>0))return null;return{memory:r,cpu:t,requests:o,dapr:c,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 Z2;var rg=d(()=>{Z2={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 Sl{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 Al(this.config.system),this.applicationCollector=new Rl(this.config.application),this.alertService=new Ue({logger:n.logger,gmail:n.gmail,config:this.config,appId:n.appId})}mergeConfig(n){return{enabled:n.enabled??Rn.enabled,system:{enabled:n.system?.enabled??Rn.system.enabled,collectInterval:n.system?.collectInterval??Rn.system.collectInterval,metrics:{cpu:n.system?.metrics?.cpu??Rn.system.metrics.cpu,memory:n.system?.metrics?.memory??Rn.system.metrics.memory,disk:n.system?.metrics?.disk??Rn.system.metrics.disk,network:n.system?.metrics?.network??Rn.system.metrics.network,process:n.system?.metrics?.process??Rn.system.metrics.process}},application:{enabled:n.application?.enabled??Rn.application.enabled,metrics:{requests:n.application?.metrics?.requests??Rn.application.metrics.requests,responseTime:n.application?.metrics?.responseTime??Rn.application.metrics.responseTime,errors:n.application?.metrics?.errors??Rn.application.metrics.errors,rateLimits:n.application?.metrics?.rateLimits??Rn.application.metrics.rateLimits}},database:{enabled:n.database?.enabled??Rn.database.enabled,metrics:{connections:n.database?.metrics?.connections??Rn.database.metrics.connections,queryTime:n.database?.metrics?.queryTime??Rn.database.metrics.queryTime,slowQueryThreshold:n.database?.metrics?.slowQueryThreshold??Rn.database.metrics.slowQueryThreshold}},redis:{enabled:n.redis?.enabled??Rn.redis.enabled},persistence:{enabled:n.persistence?.enabled??Rn.persistence.enabled,flushInterval:n.persistence?.flushInterval??Rn.persistence.flushInterval,retentionDays:n.persistence?.retentionDays??Rn.persistence.retentionDays},alerts:{enabled:n.alerts?.enabled??Rn.alerts.enabled,email:{enabled:n.alerts?.email?.enabled??Rn.alerts.email.enabled,recipients:n.alerts?.email?.recipients??Rn.alerts.email.recipients},thresholds:{cpuPercent:n.alerts?.thresholds?.cpuPercent??Rn.alerts.thresholds.cpuPercent,memoryPercent:n.alerts?.thresholds?.memoryPercent??Rn.alerts.thresholds.memoryPercent,diskPercent:n.alerts?.thresholds?.diskPercent??Rn.alerts.thresholds.diskPercent,errorRatePercent:n.alerts?.thresholds?.errorRatePercent??Rn.alerts.thresholds.errorRatePercent,responseTimeMs:n.alerts?.thresholds?.responseTimeMs??Rn.alerts.thresholds.responseTimeMs,rateLimitBlocksPerMinute:n.alerts?.thresholds?.rateLimitBlocksPerMinute??Rn.alerts.thresholds.rateLimitBlocksPerMinute},cooldown:n.alerts?.cooldown??Rn.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=(c,a="")=>{for(let e in c){let i=c[e],s=a?`${a}.${e}`:e;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),c=o.success&&o.data?o.data:[];c.push(n);let a=Date.now()-3600000,e=c.filter((i)=>i.timestamp>a);await this.redis.create(t,e,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((c)=>c.timestamp>o)}getActiveAlerts(){return this.alertService.getActiveAlerts()}acknowledgeAlert(n){return this.alertService.acknowledgeAlert(n)}isEnabled(){return this.config.enabled}getConfig(){return this.config}}var Rn;var tg=d(()=>{Zb();rg();Rn={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 og=()=>{};import{and as YM,eq as JM}from"drizzle-orm";var cg=d(()=>{og()});class El{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??ar.enabled,strategy:n.strategy??ar.strategy,keyPrefix:n.keyPrefix??ar.keyPrefix,authRoutes:{window:n.authRoutes?.window??ar.authRoutes.window,max:n.authRoutes?.max??ar.authRoutes.max,login:{window:n.authRoutes?.login?.window??We.window,max:n.authRoutes?.login?.max??We.max,blockDuration:n.authRoutes?.login?.blockDuration??We.blockDuration},register:{window:n.authRoutes?.register?.window??Ye.window,max:n.authRoutes?.register?.max??Ye.max,blockDuration:n.authRoutes?.register?.blockDuration??Ye.blockDuration},passwordReset:{window:n.authRoutes?.passwordReset?.window??Je.window,max:n.authRoutes?.passwordReset?.max??Je.max,blockDuration:n.authRoutes?.passwordReset?.blockDuration??Je.blockDuration},magicLink:{window:n.authRoutes?.magicLink?.window??Xe.window,max:n.authRoutes?.magicLink?.max??Xe.max,blockDuration:n.authRoutes?.magicLink?.blockDuration??Xe.blockDuration}},publicRoutes:{window:n.publicRoutes?.window??ar.publicRoutes.window,max:n.publicRoutes?.max??ar.publicRoutes.max},privateRoutes:{window:n.privateRoutes?.window??ar.privateRoutes.window,max:n.privateRoutes?.max??ar.privateRoutes.max},byIp:n.byIp??ar.byIp,byUserId:n.byUserId??ar.byUserId,byEndpoint:n.byEndpoint??ar.byEndpoint,skipSuccessfulRequests:n.skipSuccessfulRequests??ar.skipSuccessfulRequests,headers:{remaining:n.headers?.remaining??ar.headers.remaining,reset:n.headers?.reset??ar.headers.reset,limit:n.headers?.limit??ar.headers.limit},whitelist:n.whitelist??ar.whitelist,blacklist:n.blacklist??ar.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),c=`${r}:blocked`,a=await this.readRedis(c);if(a&&a.until>Date.now()){let e=Math.ceil((a.until-Date.now())/1000);return this.logger.warn(`[RateLimit] Blocked: ${r}, retry after ${e}s`),{allowed:!1,remaining:0,resetAt:a.until,limit:t.max,retryAfter:e}}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 c=Date.now(),a=c-t,e=`${n}:sw`,s=(await this.readRedis(e))?.timestamps||[];s=s.filter((g)=>g>a);let l=s.length,f=s[0],b=f!==void 0?f+t:c+t;if(l>=r){if(o){let g=this.parseTimeToMs(o);await this.redis.create(`${n}:blocked`,{until:c+g},Math.ceil(g/1000))}return{allowed:!1,remaining:0,resetAt:b,limit:r,retryAfter:Math.ceil((b-c)/1000)}}return s.push(c),await this.redis.create(e,{timestamps:s},Math.ceil(t/1000)+1),{allowed:!0,remaining:r-s.length,resetAt:b,limit:r}}async fixedWindowCheck(n,r,t,o){let c=Date.now(),a=Math.floor(c/t),e=`${n}:fw:${a}`,i=(a+1)*t,l=(await this.readRedis(e))?.count||0;if(l>=r){if(o){let f=this.parseTimeToMs(o);await this.redis.create(`${n}:blocked`,{until:c+f},Math.ceil(f/1000))}return{allowed:!1,remaining:0,resetAt:i,limit:r,retryAfter:Math.ceil((i-c)/1000)}}return await this.redis.create(e,{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(),c=r/t,a=`${n}:tb`,e=await this.readRedis(a),i=e?.tokens??r,s=e?.lastRefill??o,f=(o-s)*c;if(i=Math.min(r,i+f),i<1){let b=Math.ceil((1-i)/c);return{allowed:!1,remaining:0,resetAt:o+b,limit:r,retryAfter:Math.ceil(b/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 c=this.parseTimeToMs(this.getLimits(n.category,n.authType).window);await this.redis.create(t,o,Math.ceil(c/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),c=`${r}:fw:${o}`,a=await this.readRedis(c);if(a?.count)await this.redis.create(c,{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 We,Ye,Je,Xe,ar;var ag=d(()=>{We={window:"15m",max:5,blockDuration:"30m"},Ye={window:"1h",max:3,blockDuration:"1h"},Je={window:"1h",max:3,blockDuration:"1h"},Xe={window:"1h",max:5,blockDuration:"1h"},ar={enabled:!0,strategy:"sliding-window",keyPrefix:"rl:",authRoutes:{window:"1m",max:10,login:We,register:Ye,passwordReset:Je,magicLink:Xe},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 eg=()=>{};import{and as Ve,desc as y2,eq as Yr}from"drizzle-orm";class Ml{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"),c=this.getTable("verifications"),a=this.getTable("verificationRequirements");if(!t||!o||!c||!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(Ve(Yr(this.getCol(t,"entity_name"),n),Yr(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(Yr(this.getCol(a,"entity_name"),n)).orderBy(this.getCol(a,"step_order")),l=await this.db.select().from(c).where(Ve(Yr(this.getCol(c,"entity_name"),n),Yr(this.getCol(c,"entity_id"),r))).orderBy(y2(this.getCol(c,"created_at"))),f=s.length,b=l.filter((R)=>R.decision==="approved"),g=l.find((R)=>R.decision==="rejected"),h=g?1:b.length+1,k=b.length>=f&&!g,$=!!g,m=s.filter((R)=>R.step_order>=h);return{entity_name:n,entity_id:r,flow:i,current_step:h,total_steps:f,is_completed:k,is_rejected:$,verifications:l,pending_verifiers:m.map((R)=>({step_order:R.step_order,verifier_type:R.verifier_type,verifier_id:R.verifier_id,verifier_role:R.verifier_role,is_signature_mandatory:R.is_signature_mandatory}))}}async decide(n){let{entity_name:r,entity_id:t,user_id:o,decision:c,reason:a,signature_id:e,diff:i}=n,s=this.getTable("verifications"),l=this.getTable("verificationRequirements"),f=this.getTable("user_roles"),b=this.getTable("roles");if(!s||!l)return{success:!1,message:"Verification tables not configured"};let g=await this.getStatus(r,t);if(g.is_completed)return{success:!1,message:"Verification flow already completed"};if(g.total_steps===0)return{success:!1,message:"No verification flow configured for this entity"};let h=g.pending_verifiers.filter((W)=>W.step_order===g.current_step);if(h.length===0)return{success:!1,message:"No pending requirements for current step"};let k=!1,$=null;for(let W of h){if(W.verifier_type==="user"&&W.verifier_id===o){k=!0,$=W;break}if(W.verifier_type==="role"&&W.verifier_role&&f&&b){let S=f,z=b;if((await this.db.select({role_name:z.name}).from(f).innerJoin(b,Yr(S.role_id,z.id)).where(Yr(S.user_id,o))).some((B)=>B.role_name===W.verifier_role)){k=!0,$=W;break}}if(W.verifier_type==="entity_creator"){k=!0,$=W;break}}if(!k||!$)return{success:!1,message:"User is not authorized to verify at this step"};if($.is_signature_mandatory&&!e)return{success:!1,message:"Signature is required for this verification step"};let R=(await this.db.select().from(l).where(Ve(Yr(this.getCol(l,"entity_name"),r),Yr(this.getCol(l,"step_order"),g.current_step))))[0];if(!R)return{success:!1,message:"Requirement not found"};let X={requirement_id:R.id,verifier_id:o,signature_id:e||null,entity_name:r,entity_id:t,step_order:g.current_step,decision:c,reason:a||null,diff:i||null},[C]=await this.db.insert(s).values(X).returning();if(c==="rejected"&&this.config.autoResetOnRejection)this.logger.info(`[Verification] Flow reset due to rejection for ${r}:${t}`);let E=c==="approved"&&g.current_step>=g.total_steps,Q=c==="approved"?g.current_step+1:1;return{success:!0,message:c==="approved"?E?"Verification flow completed":`Step ${g.current_step} approved`:"Verification rejected, flow reset",verification:C,flow_completed:E,next_step:E?void 0:Q}}async getPending(n){let r=this.getTable("verificationRequirements"),t=this.getTable("verificationFlows"),o=this.getTable("user_roles"),c=this.getTable("roles");if(!r||!t)return[];let a=o,e=c,s=(o&&c?await this.db.select({role_name:e.name}).from(o).innerJoin(c,Yr(a.role_id,e.id)).where(Yr(a.user_id,n)):[]).map((b)=>b.role_name),l=await this.db.select().from(r),f=[];for(let b of l){if(!(b.verifier_type==="user"&&b.verifier_id===n||b.verifier_type==="role"&&s.includes(b.verifier_role)||b.verifier_type==="entity_creator"))continue;let k=(await this.db.select().from(t).where(Ve(Yr(this.getCol(t,"entity_name"),b.entity_name),Yr(this.getCol(t,"is_draft"),!1))).limit(1))[0];if(!k)continue;f.push({entity_name:b.entity_name,entity_id:b.entity_id,flow_name:k.name,step_order:b.step_order,step_name:void 0,is_signature_mandatory:b.is_signature_mandatory,created_at:b.created_at,diff:void 0})}return f}}var Dl=d(()=>{eg()});var Hl=d(()=>{Wb();ml();$l();vb();pb();tg();cg();ag();Dl()});import{access as r9,mkdir as c5}from"fs/promises";import{dirname as a5,resolve as lg}from"path";var fa,Ul,En=(n)=>{if(!n||typeof n!=="string")throw Nn("INVALID_PATH","Path must be a non-empty string",n,"resolvePath");return lg(n)},Xt=(n)=>{let r=En(n);return a5(r)},tt=async(n)=>{let r=lg(n);try{await c5(r,{recursive:!0})}catch(t){if(t.code!=="EEXIST")throw Nn("DIRECTORY_CREATE_FAILED",`Failed to create directory: ${r}`,r,"ensureDirectory")}},xl=(n)=>{let r=n,t=0;while(r>=1024&&t<Ul.length-1)r/=1024,t++;return`${r.toFixed(2)} ${Ul[t]}`},fg=(n,r)=>{return n.toLowerCase().endsWith(r.toLowerCase())},Wl=(n,r)=>{let t=r.startsWith(".")?r:`.${r}`;if(fg(n,t))return n;return`${n}${t}`},Nn=(n,r,t,o)=>{return{code:n,message:r,path:t,operation:o||"unknown"}},Ce=(n)=>{try{return JSON.stringify(n,null,2)}catch{return"{}"}},Yl=async(n,r,t=fa.maxConcurrency)=>{let o=[];for(let c=0;c<n.length;c+=t){let a=n.slice(c,c+t),e=[];for(let s of a)e.push(r(s));let i=await Promise.allSettled(e);o.push(...i)}return o},Le=(n,r={})=>{let t=[],o=[],c=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(c&&!r.allowUnknownKeys){let a=["defaultEncoding","defaultCreateDir","defaultRecursive","maxConcurrency"],e=Object.keys(n);for(let i of e)if(!a.includes(i))t.push(`Unknown configuration key: ${i}`)}return{isValid:t.length===0,errors:t,warnings:o}},dg=(n,r=fa)=>{let t=Le(n);if(!t.isValid)throw Nn("CONFIG_VALIDATION_FAILED",`Configuration validation failed: ${t.errors.join(", ")}`,void 0,"mergeConfig");return{...r,...n}},bg=(n)=>{let r=(a)=>({read:Boolean(a&4),write:Boolean(a&2),execute:Boolean(a&1)}),t=n>>6&7,o=n>>3&7,c=n&7;return{owner:r(t),group:r(o),others:r(c)}},gg=(n)=>{return Number.isInteger(n)&&n>=0&&n<=511};var dc=d(()=>{fa={defaultEncoding:"utf-8",defaultCreateDir:!0,defaultRecursive:!0,maxConcurrency:5},Ul=["B","KB","MB","GB","TB"]});import{copyFile as Jl,rename as Xl,unlink as e5}from"fs/promises";import{basename as ug,dirname as _g,extname as i5,join as s5}from"path";var Qe,l5=(n,r=".tmp")=>{let t=En(n),o=Date.now(),c=Math.random().toString(36).substring(2,8);return`${t}${r}.${o}.${c}`},mg=(n,r,t=!0)=>{let o=En(n),c=r?En(r):_g(o),a=ug(o),e=i5(a),i=ug(a,e),s=t?`.${new Date().toISOString().replace(/[:.]/g,"-")}`:"",l=`${i}.backup${s}${e}`;return s5(c,l)},da=async({path:n,data:r,tempSuffix:t=Qe.tempSuffix,backup:o=Qe.backup,sync:c=Qe.sync})=>{let a=En(n),e=l5(a,t),i;try{if(await tt(Xt(a)),o){if(await Bun.file(a).exists())i=mg(a),await Jl(a,i)}let s=await Bun.write(e,r);return await Xl(e,a),{success:!0,bytesWritten:s,tempPath:e,backupPath:i}}catch(s){try{await e5(e)}catch{}throw Nn("ATOMIC_WRITE_FAILED",`Atomic write failed: ${s}`,a,"atomicWrite")}},wg=async(n,r,t={})=>{let o=JSON.stringify(r,null,2);return da({path:n,data:o,...t})},Vl=async({sourcePath:n,backupDir:r,keepOriginal:t=!0,timestamp:o=Qe.timestamp})=>{let c=En(n);if(!await Bun.file(c).exists())throw Nn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,c,"createBackup");let e=mg(c,r,o);if(await tt(_g(e)),t)await Jl(c,e);else await Xl(c,e);return e},Cl=async(n,r,t=!1)=>{let o=En(n),c=En(r);if(!await Bun.file(o).exists())throw Nn("BACKUP_NOT_FOUND",`Backup file not found: ${n}`,o,"restoreFromBackup");try{if(await tt(Xt(c)),t)await Xl(o,c);else await Jl(o,c);return!0}catch(e){return console.error(`Error restoring from backup ${n}:`,e),!1}},hg=async(n,r,t={})=>{let o=En(n),c=Bun.file(o),a;try{if(await c.exists())a=await Vl({sourcePath:o,keepOriginal:!0,timestamp:!0});let e=await c.exists()?await c.text():"",i=await r(e),s=await da({path:o,data:i,backup:!1,...t});return{success:s.success,bytesWritten:s.bytesWritten,tempPath:s.tempPath,backupPath:a}}catch(e){if(a)try{await Cl(a,o,!1)}catch(i){console.error("Rollback failed:",i)}throw e}},$g=async(n)=>{let r=[],t=[];for(let o of n)try{let c=await da(o);r.push(c)}catch(c){t.push({operation:o,error:c})}return{successful:r,failed:t}};var kg=d(()=>{dc();Qe={tempSuffix:".tmp",backup:!1,sync:!0,timestamp:!0}});import{chmod as f5,stat as d5}from"fs/promises";var b5,co=async(n,r)=>{let t=En(n);if(!gg(r))throw Nn("INVALID_PERMISSION_MODE",`Invalid permission mode: ${r.toString(8)}`,t,"setFilePermissions");try{return await f5(t,r),!0}catch(o){return console.error(`Error setting permissions for ${n}:`,o),!1}},Jo=async(n)=>{let r=En(n);try{let o=(await d5(r)).mode&511,c=bg(o);return{path:r,mode:o,owner:c.owner,group:c.group,others:c.others}}catch(t){throw Nn("PERMISSION_READ_FAILED",`Failed to read permissions: ${t}`,r,"getFilePermissions")}},Rg=async(n,r)=>{try{return((await Jo(n)).mode&r)===r}catch{return!1}},Ag=async(n)=>{let t=(await Jo(n)).mode|256;return co(n,t)},Sg=async(n)=>{let t=(await Jo(n)).mode|128;return co(n,t)},Eg=async(n)=>{let t=(await Jo(n)).mode|64;return co(n,t)},Mg=async(n)=>{let t=(await Jo(n)).mode&-147;return co(n,t)},Dg=async(n,r)=>{let t=b5[r];return co(n,t)};var Hg=d(()=>{dc();b5={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 g5,Pe=async(n,r={})=>{let t=En(n),o={...g5,...r};await tt(Xt(t));let a=Bun.file(t).writer({highWaterMark:o.highWaterMark}),e=!1;return{write:(s)=>{if(e)throw Nn("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 Nn("WRITE_FAILED",`Failed to write chunk: ${l}`,t,"streamWrite")}},flush:()=>{if(e)return 0;try{return a.flush()}catch(s){throw Nn("FLUSH_FAILED",`Failed to flush writer: ${s}`,t,"streamFlush")}},end:async(s)=>{if(e)return 0;try{let l=await a.end(s);return e=!0,l}catch(l){throw e=!0,Nn("END_FAILED",`Failed to end writer: ${l}`,t,"streamEnd")}},ref:()=>{if(!e)a.ref()},unref:()=>{if(!e)a.unref()}}},Ll=async(n,r,t={})=>{let o=await Pe(n,t),c=0;try{for(let a of r){let e=o.write(a);c+=e}return await o.flush(),await o.end(),c}catch(a){try{await o.end(a)}catch{}throw a}},zg=async(n,r,t={})=>{let o=En(n),c=Bun.file(o),a=await c.exists()?await c.arrayBuffer():new ArrayBuffer(0),e=[];if(a.byteLength>0)e.push(a);return e.push(...r),Ll(o,e,t)},Bg=async(n,r,t={})=>{let o=En(n),c=Bun.file(o);if(!await c.exists())throw Nn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,o,"copyFileStream");let a=c.stream(),e=await Pe(r,t),i=0;try{let s=a.getReader();while(!0){let{done:l,value:f}=await s.read();if(l)break;let b=e.write(f);i+=b}return await e.flush(),await e.end(),i}catch(s){try{await e.end(s)}catch{}throw s}},Ug=async(n,r)=>{let t=En(n),o=Bun.file(t);if(!await o.exists())throw Nn("FILE_NOT_FOUND",`File not found: ${n}`,t,"readFileStream");let a=o.stream().getReader();try{while(!0){let{done:e,value:i}=await a.read();if(e)break;await r(i)}}finally{a.releaseLock()}};var xg=d(()=>{dc();g5={highWaterMark:1048576,autoFlush:!0,closeOnEnd:!0}});import{readdir as u5,rm as _5,rmdir as m5,stat as w5}from"fs/promises";import{extname as h5,join as $5}from"path";class ao{static instance;config;constructor(){this.config={...fa}}static getInstance(){if(!ao.instance)ao.instance=new ao;return ao.instance}async createFile({dir:n,name:r,data:t,options:o={}}){let c=En($5(n,r));if(o.createDir!==!1)await tt(Xt(c));let a=o.type?new Blob([t],{type:o.type}):t;return await Bun.write(c,a)}async createJsonFile(n,r,t){let o=Wl(r,".json"),c=Ce(t);return this.createFile({dir:n,name:o,data:c,options:{type:"application/json"}})}async createDirectory({path:n}){await tt(n)}async readFile({path:n,format:r="text"}){let t=En(n),o=Bun.file(t);if(!await o.exists())throw Nn("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=En(n),t=Bun.file(r),o=n.split("/").pop()||n,c=null;try{c=await w5(r)}catch{}return{name:o,path:r,size:t.size,type:t.type,exists:await t.exists(),extension:h5(o),createdAt:c?.birthtime,modifiedAt:c?.mtime}}async readDirectory({path:n,recursive:r=!1}){let t=En(n);return await u5(t,{recursive:r,encoding:"utf8"})}async getFilesByExtension(n,r){let t=await this.readDirectory({path:n}),o=r.startsWith(".")?r:`.${r}`;return t.filter((c)=>c.endsWith(o))}async updateFile({path:n,data:r,mode:t="overwrite"}){let o=En(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 c=await this.readJsonFile(n);if(typeof c==="object"&&c!==null&&!Array.isArray(c)&&typeof r==="object"&&r!==null&&!Array.isArray(r))o={...c,...r}}catch{}return this.updateFile({path:n,data:Ce(o),mode:"overwrite"})}async appendToFile(n,r){return this.updateFile({path:n,data:r,mode:"append"})}async deleteFile(n){try{let r=En(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=En(n);if(r)await _5(t,{recursive:!0,force:!0});else await m5(t);return!0}catch(t){return console.error(`Error deleting directory ${n}:`,t),!1}}async deleteFiles(n){let r=await Yl(n,async(c)=>{if(!await this.deleteFile(c))throw Error(`Failed to delete: ${c}`);return c}),t=[],o=[];for(let c=0;c<r.length;c++){let a=r[c],e=n[c];if(a?.status==="fulfilled")t.push(e||"");else o.push(e||"")}return{success:t,failed:o}}async exists(n){let r=En(n);return await Bun.file(r).exists()}async copyFile(n,r){let t=En(n),o=En(r),c=Bun.file(t);if(!await c.exists())throw Nn("SOURCE_NOT_FOUND",`Source file not found: ${n}`,t,"copyFile");return await tt(Xt(o)),await Bun.write(o,c)}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 xl(n)}getConfig(){return{...this.config}}updateConfig(n){let r=Le(n);if(r.isValid){let t=dg(n,this.config);Object.assign(this.config,t)}return r}validateConfiguration(n){return Le(n)}async createStreamWriter(n,r={}){return Pe(n,r)}async writeStream(n,r,t={}){return Ll(n,r,t)}async appendStream(n,r,t={}){return zg(n,r,t)}async copyFileStream(n,r,t={}){return Bg(n,r,t)}async readFileStream(n,r){return Ug(n,r)}async setPermissions(n,r){return co(n,r)}async setPermissionsAdvanced(n){return co(n.path,n.mode)}async getPermissions(n){return Jo(n)}async checkPermissions(n,r){return Rg(n,r)}async makeFileReadable(n){return Ag(n)}async makeFileWritable(n){return Sg(n)}async makeFileExecutable(n){return Eg(n)}async makeFileReadOnly(n){return Mg(n)}async setCommonPermission(n,r){return Dg(n,r)}async atomicWrite(n){return da(n)}async atomicJsonWrite(n,r,t={}){return wg(n,r,t)}async createFileBackup(n){return Vl(n)}async restoreFileFromBackup(n,r,t=!1){return Cl(n,r,t)}async safeFileUpdate(n,r,t={}){return hg(n,r,t)}async batchAtomicOperations(n){return $g(n)}}var Ql=d(()=>{kg();Hg();xg();dc()});var Rt;var Ge=d(()=>{Ql();dc();Ql();Rt=ao.getInstance()});import{Pool as U9}from"pg";var Wg=()=>{};var Yg=d(()=>{tl();Ge();Wg();Jt()});function Xg(n,r){let t=(n.get("cookie")?.split(";")||[]).reduce((o,c)=>{let[a,e]=c.trim().split("=");if(a&&e)o[a]=e;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 Gl(n){if(!n.redis){console.log("Redis not configured, skipping");return}if(n.redis.withDapr){Pl=new qn({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;Pl=new qn({url:r,host:t,port:Number.isNaN(o)?void 0:o})}function qe(){return Pl}function ot(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 e=Math.floor(t*a);if(e<=0)throw Error(`Time value must be positive: "${n}"`);return e}function Vg({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 c=process.env[o];if(!c)throw Error(`Access token secret env "${o}" is not set`);return ca({subject:n.userId,issuer:r.authentication?.accessToken?.issuer,audience:r.authentication?.accessToken?.audience,algorithm:r.authentication?.accessToken?.algorithm,expiresInSeconds:ot(r.authentication?.accessToken?.expiresIn??"15m"),sessionId:n.id,customClaims:{refreshTokenId:t}},c)}function Xo(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 ql(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,c=n.offset?parseInt(n.offset,10):(t-1)*o;return{page:t,limit:o,offset:c,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 Cg(n,r,t,o){let c=Math.ceil(o/r),a=n<c,e=n>1;return{page:n,limit:r,offset:t,totalItems:o,totalPages:c,hasNextPage:a,hasPrevPage:e,nextPage:a?n+1:null,prevPage:e?n-1:null}}function R5(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(c)=>({valid:typeof c==="string",expectedType:"string"});if(t.includes(n))return(c)=>({valid:typeof c==="number",expectedType:"number"});if(o.includes(n))return(c)=>({valid:typeof c==="boolean",expectedType:"boolean"});if(n==="json"||n==="jsonb")return(c)=>({valid:typeof c==="object",expectedType:"object"});return()=>({valid:!0,expectedType:"any"})}function bc(n,r,t=!1){let o=[];for(let c of r){let a=n[c.name],e=c.notNull&&!c.nullable&&c.default===void 0&&!c.defaultRaw;if(a===void 0||a===null){if(e&&!t)o.push({field:c.name,message:c.validation?.customMessage||`${c.name} is required`});continue}let i=R5(c.type)(a);if(!i.valid){o.push({field:c.name,message:c.validation?.customMessage||`${c.name} must be of type ${i.expectedType}`});continue}if(typeof a==="string"){let s=a.length;if(c.length&&s>c.length)o.push({field:c.name,message:c.validation?.customMessage||`${c.name} exceeds max length of ${c.length}`});if(c.validation?.minLength&&s<c.validation.minLength)o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be at least ${c.validation.minLength} characters`});if(c.validation?.maxLength&&s>c.validation.maxLength)o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be at most ${c.validation.maxLength} characters`});if(c.validation?.pattern){if(!new RegExp(c.validation.pattern).test(a))o.push({field:c.name,message:c.validation.customMessage||`${c.name} does not match required pattern`})}if(c.validation?.format){let l=k5[c.validation.format];if(l&&!l.test(a))o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be a valid ${c.validation.format}`})}}if(typeof a==="number"){if(c.validation?.min!==void 0&&a<c.validation.min)o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be at least ${c.validation.min}`});if(c.validation?.max!==void 0&&a>c.validation.max)o.push({field:c.name,message:c.validation.customMessage||`${c.name} must be at most ${c.validation.max}`})}if(c.enumValues&&c.enumValues.length>0){if(!c.enumValues.includes(a))o.push({field:c.name,message:c.validation?.customMessage||`${c.name} must be one of: ${c.enumValues.join(", ")}`})}}return{valid:o.length===0,errors:o}}function S5(n){return n.replace(/[&<>"'`=/]/g,(r)=>A5[r]||r)}function E5(n){return n.replace(/<[^>]*>/g,"")}function M5(n){let r=n.split("@"),t=r[0],o=r[1];if(!t||!o)return n;let c=t.split("+")[0];if(!c)return n;return`${c.replace(/\./g,"")}@${o.toLowerCase()}`}function D5(n){return n.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function H5(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"?S5(n):n;case"stripTags":return typeof n==="string"?E5(n):n;case"normalizeEmail":return typeof n==="string"?M5(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"?D5(n):n;default:return n}}function gc(n,r){let t={};for(let o of Object.keys(n)){let c=n[o],a=r.find((e)=>e.name===o);if(a?.sanitize&&a.sanitize.length>0)for(let e of a.sanitize)c=H5(c,e);t[o]=c}return t}async function Lg(n,r,t){let o=new qn,c=`${B5}${n}`,a=`${z5}${n}:${r}`,e=await o.read(a);if(e.success&&e.data)return{success:!0,accessToken:e.data,fromCache:!0};let i=await o.acquireLock(c,U5);if(!i.success)return{success:!1,error:i.error};if(i.data)try{let b=t();return await o.create(a,b,Jg),{success:!0,accessToken:b,fromCache:!1}}finally{await o.releaseLock(c)}let s=await o.waitForLock(c,x5,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,Jg),{success:!0,accessToken:f,fromCache:!1}}function Qg(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."})}return{valid:r.length===0,errors:r,resolved:t}}async function Pg(n,r){let{Pool:t}=await import("pg"),c=new URL(n).pathname.replace("/","");if(!c)return;let a=new URL(n);a.pathname="/postgres";let e=new t({connectionString:a.toString()});try{if((await e.query("SELECT 1 FROM pg_database WHERE datname = $1",[c])).rowCount===0)r.info(`[Database] Creating database "${c}"...`),await e.query(`CREATE DATABASE "${c}" TEMPLATE template0`),r.info(`[Database] Database "${c}" created successfully`);else r.info(`[Database] Database "${c}" exists`)}catch(i){let s=i instanceof Error?i.message:String(i);r.warn(`[Database] Could not auto-create database: ${s}`)}finally{await e.end()}}var Pl=null,k5,A5,z5="access_token:",B5="refresh_lock:",U5=5,x5=3000,Jg=60;var Ne=d(()=>{Yg();Hl();k5={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};A5={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;","`":"&#96;","=":"&#x3D;"}});import Oe from"path";import W5,{t as Fe}from"elysia";function Nl(n){if(!n)return Vo;return{enabled:n.enabled??Vo.enabled,basePath:n.basePath??Vo.basePath,cacheMaxAge:n.cacheMaxAge??Vo.cacheMaxAge,enableRangeRequests:n.enableRangeRequests??Vo.enableRangeRequests,enableEtag:n.enableEtag??Vo.enableEtag,corsOrigins:n.corsOrigins??Vo.corsOrigins}}function Y5(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 J5(n){return n.replace(/[^A-Za-z0-9._-]+/g,"_").replace(/_{2,}/g,"_").slice(0,200)}function Ol(n){let{cdn:r,storagePath:t,logger:o,getFileRecord:c}=n,a=new W5({prefix:r.basePath});if(!r.enabled)return a;return a.get("/:id",async({params:e,request:i,set:s})=>{let{id:l}=e,f=i.headers.get("x-schema-name")||void 0,b,g,h;if(c){let u=await c(l,f);if(!u)return s.status=404,{success:!1,message:"File not found"};b=Oe.join(u.path,u.name),g=u.name,h=u.mimeType||u.mime_type||"application/octet-stream"}else b=Oe.join(t,l),g=l,h="application/octet-stream";if(!await Rt.exists(b))return s.status=404,{success:!1,message:"Physical file not found"};let $=await Rt.getFileInfo(b),m=new Date($.modifiedAt||Date.now()).toUTCString(),R=r.enableEtag?`"${$.size}-${$.modifiedAt?.getTime()||Date.now()}"`:void 0,X={"Cache-Control":`public, max-age=${r.cacheMaxAge}`,"Last-Modified":m};if(R)X.ETag=R;if(r.corsOrigins.length>0)X["Access-Control-Allow-Origin"]=r.corsOrigins[0]==="*"?"*":r.corsOrigins.join(", "),X["Access-Control-Allow-Methods"]="GET, HEAD, OPTIONS";let C=i.headers.get("if-none-match");if(R&&C===R)return new Response(null,{status:304,headers:X});let E=Bun.file(b),Q=i.headers.get("range");if(r.enableRangeRequests&&Q){let u=Q.match(/bytes=(\d*)-(\d*)/);if(!u)return s.status=416,new Response("Range not satisfiable",{status:416,headers:{"Content-Range":`bytes */${$.size}`,"Content-Type":h,...X}});let B=u[1]||"0",P=u[2]||"",J=parseInt(B,10),F=P?parseInt(P,10):$.size-1;if(J>=$.size||F>=$.size||J>F)return new Response("Range not satisfiable",{status:416,headers:{"Content-Range":`bytes */${$.size}`,"Content-Type":h,...X}});let I=F-J+1,Y=E.slice(J,F+1);return new Response(Y,{status:206,headers:{"Content-Range":`bytes ${J}-${F}/${$.size}`,"Accept-Ranges":"bytes","Content-Length":I.toString(),"Content-Type":h,...X}})}let W=Y5(h),S=J5(g),z=encodeURIComponent(g),w=`${W}; filename="${S}"; filename*=UTF-8''${z}`;return new Response(E,{status:200,headers:{"Content-Length":$.size.toString(),"Content-Type":h,"Accept-Ranges":r.enableRangeRequests?"bytes":"none","Content-Disposition":w,...X}})},{params:Fe.Object({id:Fe.String()}),detail:{tags:["CDN"],summary:"Get file by ID",description:"Serve file with streaming, range requests, and caching support"}}),a.head("/:id",async({params:e,request:i,set:s})=>{let{id:l}=e,f=i.headers.get("x-schema-name")||void 0,b,g;if(c){let X=await c(l,f);if(!X)return s.status=404,new Response(null,{status:404});b=Oe.join(X.path,X.name),g=X.mime_type||"application/octet-stream"}else b=Oe.join(t,l),g="application/octet-stream";if(!await Rt.exists(b))return s.status=404,new Response(null,{status:404});let k=await Rt.getFileInfo(b),$=new Date(k.modifiedAt||Date.now()).toUTCString(),m=r.enableEtag?`"${k.size}-${k.modifiedAt?.getTime()||Date.now()}"`:void 0,R={"Content-Length":k.size.toString(),"Content-Type":g,"Accept-Ranges":r.enableRangeRequests?"bytes":"none","Cache-Control":`public, max-age=${r.cacheMaxAge}`,"Last-Modified":$};if(m)R.ETag=m;if(r.corsOrigins.length>0)R["Access-Control-Allow-Origin"]=r.corsOrigins[0]==="*"?"*":r.corsOrigins.join(", "),R["Access-Control-Allow-Methods"]="GET, HEAD, OPTIONS";return new Response(null,{status:200,headers:R})},{params:Fe.Object({id:Fe.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 Vo;var Gg=d(()=>{Ge();Vo={enabled:!0,basePath:"/cdn",cacheMaxAge:86400,enableRangeRequests:!0,enableEtag:!0,corsOrigins:["*"]}});import{randomUUID as X5}from"crypto";import Fl from"path";function ba(n){if(!n)return Vt;return{enabled:n.enabled??Vt.enabled,basePath:n.basePath??Vt.basePath,maxFileSizeBytes:n.maxFileSizeBytes??Vt.maxFileSizeBytes,allowedMimeTypes:n.allowedMimeTypes??Vt.allowedMimeTypes,blockedMimeTypes:n.blockedMimeTypes??Vt.blockedMimeTypes,formData:{filesField:n.formData?.filesField??Vt.formData.filesField,dataField:n.formData?.dataField??Vt.formData.dataField,maxFiles:n.formData?.maxFiles??Vt.formData.maxFiles}}}function ga(n,r){let t={data:{},files:[]};if(!n||typeof n!=="object")return t;let o=n,c=o[r.formData.dataField];if(c){if(typeof c==="string")try{t.data=JSON.parse(c)}catch{t.data={}}else if(typeof c==="object")t.data=c}let a=o[r.formData.filesField];if(a){if(a instanceof File)t.files=[a];else if(Array.isArray(a))t.files=a.filter((e)=>e instanceof File)}return t}function jl(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 Kl(n,r,t){let o=X5(),c=Fl.extname(n.name),a=`${o}${c}`,e=t?Fl.join(r.basePath,t):r.basePath,i=await n.arrayBuffer(),s=new Uint8Array(i);return await Rt.createFile({dir:e,name:a,data:s,options:{type:n.type,createDir:!0}}),{id:o,name:a,originalName:n.name,path:e,mimeType:n.type,size:n.size,createdAt:new Date}}async function ua(n,r,t){let o=[],c=[];for(let a of n.slice(0,r.formData.maxFiles)){let e=jl(a,r);if(!e.valid){c.push({file:a.name,error:e.error||"Unknown error"});continue}try{let i=await Kl(a,r,t);o.push(i)}catch(i){c.push({file:a.name,error:i instanceof Error?i.message:"Upload failed"})}}return{success:o,failed:c}}async function qg(n,r){try{let t=Fl.join(n,r);return await Rt.deleteFile(t)}catch{return!1}}var Vt;var Ng=d(()=>{Ge();Vt={enabled:!1,basePath:"./uploads",maxFileSizeBytes:104857600,allowedMimeTypes:[],blockedMimeTypes:["application/x-executable","application/x-msdos-program"],formData:{filesField:"files",dataField:"data",maxFiles:10}}});var Og={};Zt(Og,{validateFile:()=>jl,uploadFiles:()=>ua,uploadFile:()=>Kl,parseFormDataBody:()=>ga,mergeStorageConfig:()=>ba,mergeCdnConfig:()=>Nl,deleteFile:()=>qg,createCdnRoutes:()=>Ol});var je=d(()=>{Gg();Ng()});import{Elysia as B$,t as kr}from"elysia";function Yu(n){let{captchaService:r,logger:t,basePath:o="/auth/captcha"}=n,c=new B$;if(!r.isEnabled())return c;return c.get(`${o}/generate`,async(a)=>{let{type:e,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(e,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:U$,detail:{tags:["Captcha"],summary:"Generate Captcha",description:"Generate a new captcha challenge"}}),c.post(`${o}/validate`,async(a)=>{let{challengeId:e,answer:i}=a.body,s=await r.validate(e,i);if(!s.valid)a.set.status=400;return s},{body:x$,detail:{tags:["Captcha"],summary:"Validate Captcha",description:"Validate a captcha answer"}}),c}var U$,x$;var Ju=d(()=>{U$=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")]))}),x$=kr.Object({challengeId:kr.String(),answer:kr.String()})});import W$ from"crypto";var{password:Y$}=globalThis.Bun;async function bo(n){return await Y$.hash(n,{algorithm:"bcrypt",cost:10})}function ye(){return W$.randomBytes(32).toString("hex")}function Uc(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 Xu(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 xc=()=>{};import{sql as ni}from"drizzle-orm";import{Elysia as J$,t as ri}from"elysia";function ti(n){let{authConfig:r,registerConfig:t,emailService:o,appName:c}=n,{db:a,logger:e,usersTable:i}=r,s=new J$;if(!t.enabled||!t.emailVerification?.enabled)return s;let l="/verify-email",f="/resend-verification";return s.get(l,async(b)=>{if(!a||!i)return{success:!1,message:"Database not configured"};let g=b.query.token;if(!g)return{success:!1,message:"Verification token is required"};let h=await a.select().from(i).where(ni`email_verification_token = ${g}`).limit(1);if(h.length===0)return e.warn("[AUTH] Email verification failed - invalid token"),{success:!1,message:"Invalid or expired verification token"};let k=h[0],$=k.emailVerificationTokenExpiresAt;if($&&new Date>new Date($))return e.warn("[AUTH] Email verification failed - token expired",{userId:k.id,email:k.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(ni`id = ${k.id}`),e.info("[AUTH] Email verified successfully",{userId:k.id,email:k.email}),t.emailVerification?.templates?.welcome?.enabled&&o?.isAvailable())o.sendWelcomeEmail(k.email,k.email.split("@")[0]||"User",c||"Nucleus").catch((R)=>{e.error("[AUTH] Failed to send welcome email after verification",{email:k.email,error:R})});return{success:!0,message:"Email verified successfully. You can now log in.",data:{redirectUrl:t.emailVerification?.redirectUrl||"/login",verified:!0}}},{query:ri.Object({token:ri.String()}),detail:{tags:["Authentication"],summary:"Verify Email",description:"Verify user email address using the verification token"}}),s.post(f,async(b)=>{if(!a||!i)return{success:!1,message:"Database not configured"};if(!o?.isAvailable())return{success:!1,message:"Email service not available"};let{email:g}=b.body,h=await a.select().from(i).where(ni`email = ${g}`).limit(1);if(h.length===0)return{success:!0,message:"If your email is registered, you will receive a verification email."};let k=h[0];if(k.verifiedAt)return{success:!1,message:"Email is already verified"};let $=t.emailVerification?.maxResendAttempts||3,m=k.emailVerificationAttempts||0;if(m>=$)return e.warn("[AUTH] Resend verification failed - max attempts reached",{email:g,attempts:m}),{success:!1,message:"Maximum resend attempts reached. Please contact support.",data:{maxAttemptsReached:!0,attemptsUsed:m,maxAttempts:$}};let R=t.emailVerification?.resendCooldown||"60s",X=Uc(R),C=k.emailVerificationSentAt;if(C){let u=Date.now()-new Date(C).getTime();if(u<X){let B=Math.ceil((X-u)/1000);return{success:!1,message:`Please wait ${B} seconds before requesting another verification email.`,data:{cooldownRemaining:B,canResendAt:new Date(Date.now()+B*1000).toISOString()}}}}let E=ye(),Q=t.emailVerification?.tokenExpiresIn||"24h",W=new Date(Date.now()+Uc(Q));await a.update(i).set({emailVerificationToken:E,emailVerificationTokenExpiresAt:W,emailVerificationSentAt:new Date,emailVerificationAttempts:m+1}).where(ni`id = ${k.id}`);let z=`${(t.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${E}`,w=await o.sendVerificationEmail(g,g.split("@")[0]||"User",z,c||"Nucleus");if(w.success)return e.info("[AUTH] Verification email resent",{email:g}),{success:!0,message:"Verification email sent. Please check your inbox.",data:{cooldownSeconds:Math.ceil(X/1000),canResendAt:new Date(Date.now()+X).toISOString(),attemptsRemaining:$-(m+1)}};return e.error("[AUTH] Failed to resend verification email",{email:g,error:w.error}),{success:!1,message:"Failed to send verification email. Please try again later."}},{body:ri.Object({email:ri.String({format:"email"})}),detail:{tags:["Authentication"],summary:"Resend Verification Email",description:"Resend the email verification link to the user"}}),s}var bf=d(()=>{xc()});import Vu from"crypto";function oi(){return Vu.randomBytes(32).toString("hex")}function Pt(n){return Vu.createHash("sha256").update(n).digest("hex")}function ci(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 ai=()=>{};import{eq as X$}from"drizzle-orm";import{Elysia as V$,t as ei}from"elysia";function ii(n,r,t,o,c,a){let{db:e,logger:i,usersTable:s}=n,l=r.route||"/auth/invite",f=r.tokenExpiresIn||"7d",b=r.redirectUrl||"",g=new V$;if(!r.enabled)return g;if(g.post(l,async(h)=>{if(!e||!s)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return i.error("[AUTH] Invite requested but email service not available"),{success:!1,message:"Email service not available"};let{email:k}=h.body,$=await e.select().from(s).where(X$(s.email,k)).limit(1),m;if($.length>0){let W=$[0];if(W.verifiedAt||W.password)return i.warn("[AUTH] Invite failed - user already verified",{email:k}),{success:!1,message:"User with this email is already verified"};m=W.id,i.info("[AUTH] Resending invitation to existing unverified user",{userId:m,email:k})}else{let W={email:k,password:null,emailVerified:!1,isLocked:!1,createdAt:new Date,updatedAt:new Date},z=(await e.insert(s).values(W).returning())[0];if(!z)return i.error("[AUTH] Failed to create invited user",{email:k}),{success:!1,message:"Failed to create user"};m=z.id,i.info("[AUTH] Invited user created",{userId:m,email:k})}let R=oi(),X=Pt(R),C=new Date(Date.now()+ci(f));await o({userId:m,email:k,tokenHash:X,expiresAt:C});let E=b?`${b}?token=${R}&invite=true`:`/auth/magic-link/verify?token=${R}`,Q=await t.sendInvitationEmail(k,E,c||"Nucleus");if(!Q.success)return i.error("[AUTH] Failed to send invitation email",{email:k,error:Q.error}),{success:!0,message:"User created but failed to send invitation email",data:{id:m,email:k}};return i.info("[AUTH] Invitation email sent",{email:k,userId:m}),{success:!0,message:"Invitation sent successfully",data:{id:m,email:k}}},{body:C$,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)g.post(`${l}/verify`,async(h)=>{let{token:k}=h.body;if(!k)return{success:!1,message:"Token is required"};let $=Pt(k),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:ei.Object({token:ei.String()}),detail:{tags:["Authentication"],summary:"Verify Invite Token",description:"Validate an invite token without consuming it. Returns user info if valid."}});return g}var C$;var gf=d(()=>{ai();C$=ei.Object({email:ei.String({format:"email"})})});import{t as pn}from"elysia";var uf,L$;var _f=d(()=>{uf=pn.Object({email:pn.String({format:"email"}),password:pn.String({minLength:1}),rememberMe:pn.Optional(pn.Boolean()),captchaId:pn.Optional(pn.String()),captchaAnswer:pn.Optional(pn.String())}),L$=pn.Object({success:pn.Boolean(),message:pn.Optional(pn.String()),data:pn.Optional(pn.Object({user:pn.Object({id:pn.String(),email:pn.String()}),accessToken:pn.String(),refreshToken:pn.String()}))})});var{password:Q$}=globalThis.Bun;async function si(n,r){try{return await Q$.verify(n,r)}catch{return!1}}function Cu(n,r){let t=n.toLowerCase(),o=["headlesschrome","headless","phantomjs","nightmare","selenium","webdriver","puppeteer","playwright"],c=["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($)),e=c.some(($)=>t.includes($)),i=a||e,s=[];if(a)s.push("headless_browser");if(e)s.push("bot_user_agent");if(!t||t.length<10)s.push("missing_or_short_ua");if(t==="mozilla/5.0")s.push("generic_ua");if(t.includes("nucleusserveraction")||t.includes("serveraction"))s.push("server_action");let 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,b;if(a)f="Headless Browser";else if(e)f="Bot/Crawler";else if(t.includes("chrome")&&!t.includes("edg")){f="Chrome";let $=n.match(/Chrome\/(\d+\.\d+)/i);if($?.[1])b=$[1]}else if(t.includes("firefox")){f="Firefox";let $=n.match(/Firefox\/(\d+\.\d+)/i);if($?.[1])b=$[1]}else if(t.includes("safari")&&!t.includes("chrome")){f="Safari";let $=n.match(/Version\/(\d+\.\d+)/i);if($?.[1])b=$[1]}else if(t.includes("edg")){f="Edge";let $=n.match(/Edg\/(\d+\.\d+)/i);if($?.[1])b=$[1]}let g,h;if(t.includes("windows nt 10"))g="Windows",h="10/11";else if(t.includes("windows nt"))g="Windows";else if(t.includes("mac os x")){g="macOS";let $=n.match(/Mac OS X (\d+[._]\d+)/i);if($?.[1])h=$[1].replace("_",".")}else if(t.includes("android")){g="Android";let $=n.match(/Android (\d+\.?\d*)/i);if($?.[1])h=$[1]}else if(t.includes("iphone")||t.includes("ipad")){g="iOS";let $=n.match(/OS (\d+[._]\d+)/i);if($?.[1])h=$[1].replace("_",".")}else if(t.includes("linux"))g="Linux";return{deviceName:f&&g?`${f} on ${g}`:"Unknown Device",deviceType:l,browserName:f,browserVersion:b,osName:g,osVersion:h,ipAddress:r,userAgent:n,locationCountry:void 0,locationCity:void 0,isHeadless:a,isBot:e,isSuspicious:i,suspiciousPatterns:s}}var mf=()=>{};import{eq as wf}from"drizzle-orm";import{Elysia as P$}from"elysia";function li(n,r,t,o,c,a,e,i,s){let{db:l,logger:f,usersTable:b}=n,g=r.route||"/auth/login",h={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"strict",path:e?.path||"/"},k=new P$;if(!r.enabled)return k;return k.post(g,async($)=>{if(!l||!b)return{success:!1,message:"Database not configured"};let{email:m,password:R,rememberMe:X,captchaId:C,captchaAnswer:E}=$.body;if(s?.isEnabled()){if(!C||!E)return $.set.status=400,{success:!1,message:"Captcha is required"};let v=await s.validate(C,E);if(!v.valid)return $.set.status=400,{success:!1,message:v.message||"Invalid captcha",attemptsRemaining:v.attemptsRemaining}}let W=(await l.select().from(b).where(wf(b.email,m)).limit(1))[0];if(!W)return f.warn("[AUTH] Login failed - user not found",{email:m}),{success:!1,message:"Invalid email or password"};if(W.isLocked)return f.warn("[AUTH] Login failed - account locked",{email:m,userId:W.id}),{success:!1,message:"Account is locked"};if(!await si(R,W.password)){let v=(W.failedLoginAttempts||0)+1;return await l.update(b).set({failedLoginAttempts:v,isLocked:v>=5,lockedUntil:v>=5?new Date(Date.now()+1800000):null}).where(wf(b.id,W.id)),f.warn("[AUTH] Login failed - invalid password",{email:m,failedAttempts:v}),{success:!1,message:"Invalid email or password"}}await l.update(b).set({failedLoginAttempts:0,lastLoginAt:new Date,loginCount:(W.loginCount||0)+1}).where(wf(b.id,W.id));let z={};$.request.headers.forEach((v,dn)=>{z[dn]=v}),f.info("[AUTH] Login request headers",{headers:z});let w=$.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim(),u=(v)=>!v||v==="127.0.0.1"||v==="::1"||v==="localhost"||v.startsWith("10.")||v.startsWith("192.168.")||v.startsWith("172."),B=$.request.headers.get("cf-connecting-ip")?.trim()||$.request.headers.get("true-client-ip")?.trim()||(!u(w)?w:void 0)||$.request.headers.get("x-real-ip")?.trim()||$.request.headers.get("x-client-ip")?.trim()||w||"127.0.0.1",P=$.request.headers.get("user-agent")||"Unknown Browser";f.info("[AUTH] Parsed device info",{ipAddress:B,userAgent:P});let J=Cu(P,B);try{if(!u(B)){let v=await fetch(`http://ip-api.com/json/${B}?fields=country,city`);if(v.ok){let dn=await v.json();if(dn.country)J.locationCountry=dn.country;if(dn.city)J.locationCity=dn.city}}}catch{}let F=t(W.id),I=o(W.id),Y={userId:W.id,deviceInfo:J,loginMethod:"password",rememberMe:X},U=await c(Y);if(a)await a(U,Y);f.info("[AUTH] Login successful",{userId:W.id,email:m,rememberMe:X});let D={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}},x=h.secure?"; Secure":"",N=`; Path=${h.path}; HttpOnly; SameSite=${h.sameSite}${x}`,j=[];if(D.accessToken.setHeadersEnabled)j.push(`${h.accessTokenName}=${F}${N}; Max-Age=${h.accessTokenMaxAge}`);if(D.refreshToken.setHeadersEnabled)j.push(`${h.refreshTokenName}=${I}${N}; Max-Age=${h.refreshTokenMaxAge}`);if(D.sessionToken.setHeadersEnabled)j.push(`${h.sessionTokenName}=${U}${N}; Max-Age=${h.sessionTokenMaxAge}`);$.set.headers["x-session-id"]=U;let K={user:{id:W.id,email:W.email}};if(D.accessToken.returnJson)K.accessToken=F;if(D.refreshToken.returnJson)K.refreshToken=I;if(D.sessionToken.returnJson)K.sessionId=U;let q=JSON.stringify({success:!0,data:K}),tn=new Headers;tn.set("Content-Type","application/json"),tn.set("x-session-id",U);for(let v of j)tn.append("Set-Cookie",v);return new Response(q,{status:200,headers:tn})},{body:uf,detail:{tags:["Authentication"],summary:"Login",description:"Authenticate user with email and password"}}),k}var hf=d(()=>{_f();mf();_f()});function Lu(){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 fi}from"elysia";var G$;var Qu=d(()=>{G$=fi.Object({success:fi.Boolean(),message:fi.Optional(fi.String())})});import{Elysia as q$}from"elysia";function di(n,r,t,o){let{logger:c}=n,a=r.route||"/auth/logout",e=new q$;if(!r.enabled)return e;return e.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=Lu();for(let[b,g]of Object.entries(f))i.set.headers[b]=g;return c.info("[AUTH] Logout successful",{userId:l,sessionId:s}),{success:!0,message:"Logged out successfully"}},{detail:{tags:["Authentication"],summary:"Logout",description:"Logout and invalidate session"}}),e}var $f=d(()=>{Qu()});var _r={};Zt(_r,{IsUndefined:()=>jn,IsUint8Array:()=>qt,IsSymbol:()=>Ef,IsString:()=>Un,IsRegExp:()=>Ha,IsObject:()=>Mn,IsNumber:()=>Xr,IsNull:()=>Sf,IsIterator:()=>Af,IsFunction:()=>Rf,IsDate:()=>No,IsBoolean:()=>Gt,IsBigInt:()=>Da,IsAsyncIterator:()=>kf,IsArray:()=>Fn,HasPropertyKey:()=>bi});function bi(n,r){return r in n}function kf(n){return Mn(n)&&!Fn(n)&&!qt(n)&&Symbol.asyncIterator in n}function Fn(n){return Array.isArray(n)}function Da(n){return typeof n==="bigint"}function Gt(n){return typeof n==="boolean"}function No(n){return n instanceof globalThis.Date}function Rf(n){return typeof n==="function"}function Af(n){return Mn(n)&&!Fn(n)&&!qt(n)&&Symbol.iterator in n}function Sf(n){return n===null}function Xr(n){return typeof n==="number"}function Mn(n){return typeof n==="object"&&n!==null}function Ha(n){return n instanceof globalThis.RegExp}function Un(n){return typeof n==="string"}function Ef(n){return typeof n==="symbol"}function qt(n){return n instanceof globalThis.Uint8Array}function jn(n){return n===void 0}function N$(n){return n.map((r)=>gi(r))}function O$(n){return new Date(n.getTime())}function F$(n){return new Uint8Array(n)}function j$(n){return new RegExp(n.source,n.flags)}function K$(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=gi(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=gi(n[t]);return r}function gi(n){return Fn(n)?N$(n):No(n)?O$(n):qt(n)?F$(n):Ha(n)?j$(n):Mn(n)?K$(n):n}function Yn(n){return gi(n)}var Er=()=>{};function Wc(n,r){return r===void 0?Yn(n):Yn({...r,...n})}var ui=d(()=>{Er()});var Mf=d(()=>{ui();Er()});function Pu(n){return n!==null&&typeof n==="object"}function Gu(n){return globalThis.Array.isArray(n)&&!globalThis.ArrayBuffer.isView(n)}function qu(n){return n===void 0}function Nu(n){return typeof n==="number"}var Ou=()=>{};var _i;var Fu=d(()=>{Ou();(function(n){n.InstanceMode="default",n.ExactOptionalPropertyTypes=!1,n.AllowArrayObject=!1,n.AllowNaN=!1,n.AllowNullVoid=!1;function r(e,i){return n.ExactOptionalPropertyTypes?i in e:e[i]!==void 0}n.IsExactOptionalProperty=r;function t(e){let i=Pu(e);return n.AllowArrayObject?i:i&&!Gu(e)}n.IsObjectLike=t;function o(e){return t(e)&&!(e instanceof Date)&&!(e instanceof Uint8Array)}n.IsRecordLike=o;function c(e){return n.AllowNaN?Nu(e):Number.isFinite(e)}n.IsNumberLike=c;function a(e){let i=qu(e);return n.AllowNullVoid?i||e===null:i}n.IsVoidLike=a})(_i||(_i={}))});function T$(n){return globalThis.Object.freeze(n).map((r)=>za(r))}function v$(n){return n}function p$(n){return n}function I$(n){return n}function Z$(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=za(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=za(n[t]);return globalThis.Object.freeze(r)}function za(n){return Fn(n)?T$(n):No(n)?v$(n):qt(n)?p$(n):Ha(n)?I$(n):Mn(n)?Z$(n):n}var ju=()=>{};function M(n,r){let t=r!==void 0?{...r,...n}:n;switch(_i.InstanceMode){case"freeze":return za(t);case"clone":return Yn(t);default:return t}}var Z=d(()=>{Fu();ju();Er()});var Nt=d(()=>{Z()});var lr;var Ku=d(()=>{lr=class lr extends Error{constructor(n){super(n)}}});var Mt=d(()=>{Ku()});var In,lt,fr,Tr,L;var Ba=d(()=>{In=Symbol.for("TypeBox.Transform"),lt=Symbol.for("TypeBox.Readonly"),fr=Symbol.for("TypeBox.Optional"),Tr=Symbol.for("TypeBox.Hint"),L=Symbol.for("TypeBox.Kind")});var nn=d(()=>{Ba()});function Yc(n){return Mn(n)&&n[lt]==="Readonly"}function Mr(n){return Mn(n)&&n[fr]==="Optional"}function Df(n){return fn(n,"Any")}function Hf(n){return fn(n,"Argument")}function ft(n){return fn(n,"Array")}function Oo(n){return fn(n,"AsyncIterator")}function Fo(n){return fn(n,"BigInt")}function Ot(n){return fn(n,"Boolean")}function dt(n){return fn(n,"Computed")}function bt(n){return fn(n,"Constructor")}function y$(n){return fn(n,"Date")}function gt(n){return fn(n,"Function")}function ut(n){return fn(n,"Integer")}function Cn(n){return fn(n,"Intersect")}function jo(n){return fn(n,"Iterator")}function fn(n,r){return Mn(n)&&L in n&&n[L]===r}function mi(n){return Gt(n)||Xr(n)||Un(n)}function Vr(n){return fn(n,"Literal")}function Cr(n){return fn(n,"MappedKey")}function Jn(n){return fn(n,"MappedResult")}function go(n){return fn(n,"Never")}function nk(n){return fn(n,"Not")}function Ua(n){return fn(n,"Null")}function _t(n){return fn(n,"Number")}function Kn(n){return fn(n,"Object")}function Ko(n){return fn(n,"Promise")}function To(n){return fn(n,"Record")}function Pn(n){return fn(n,"Ref")}function zf(n){return fn(n,"RegExp")}function Ft(n){return fn(n,"String")}function xa(n){return fn(n,"Symbol")}function Lr(n){return fn(n,"TemplateLiteral")}function rk(n){return fn(n,"This")}function uo(n){return Mn(n)&&In in n}function Qr(n){return fn(n,"Tuple")}function Wa(n){return fn(n,"Undefined")}function gn(n){return fn(n,"Union")}function tk(n){return fn(n,"Uint8Array")}function ok(n){return fn(n,"Unknown")}function ck(n){return fn(n,"Unsafe")}function ak(n){return fn(n,"Void")}function ek(n){return Mn(n)&&L in n&&Un(n[L])}function Pr(n){return Df(n)||Hf(n)||ft(n)||Ot(n)||Fo(n)||Oo(n)||dt(n)||bt(n)||y$(n)||gt(n)||ut(n)||Cn(n)||jo(n)||Vr(n)||Cr(n)||Jn(n)||go(n)||nk(n)||Ua(n)||_t(n)||Kn(n)||Ko(n)||To(n)||Pn(n)||zf(n)||Ft(n)||xa(n)||Lr(n)||rk(n)||Qr(n)||Wa(n)||gn(n)||tk(n)||ok(n)||ck(n)||ak(n)||ek(n)}var wn=d(()=>{nn()});var _={};Zt(_,{TypeGuardUnknownTypeError:()=>Tu,IsVoid:()=>X_,IsUnsafe:()=>J_,IsUnknown:()=>Y_,IsUnionLiteral:()=>_k,IsUnion:()=>xf,IsUndefined:()=>x_,IsUint8Array:()=>W_,IsTuple:()=>U_,IsTransform:()=>B_,IsThis:()=>z_,IsTemplateLiteral:()=>H_,IsSymbol:()=>D_,IsString:()=>M_,IsSchema:()=>er,IsRegExp:()=>E_,IsRef:()=>S_,IsRecursive:()=>uk,IsRecord:()=>A_,IsReadonly:()=>fk,IsProperties:()=>wi,IsPromise:()=>R_,IsOptional:()=>dk,IsObject:()=>k_,IsNumber:()=>$_,IsNull:()=>h_,IsNot:()=>w_,IsNever:()=>m_,IsMappedResult:()=>__,IsMappedKey:()=>u_,IsLiteralValue:()=>g_,IsLiteralString:()=>d_,IsLiteralNumber:()=>b_,IsLiteralBoolean:()=>gk,IsLiteral:()=>Ja,IsKindOf:()=>sn,IsKind:()=>V_,IsIterator:()=>f_,IsIntersect:()=>l_,IsInteger:()=>s_,IsImport:()=>bk,IsFunction:()=>i_,IsDate:()=>e_,IsConstructor:()=>a_,IsComputed:()=>c_,IsBoolean:()=>o_,IsBigInt:()=>t_,IsAsyncIterator:()=>r_,IsArray:()=>n_,IsArgument:()=>yu,IsAny:()=>Zu});function vu(n){try{return new RegExp(n),!0}catch{return!1}}function Bf(n){if(!Un(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 pu(n){return Uf(n)||er(n)}function Ya(n){return jn(n)||Da(n)}function xn(n){return jn(n)||Xr(n)}function Uf(n){return jn(n)||Gt(n)}function Dn(n){return jn(n)||Un(n)}function sk(n){return jn(n)||Un(n)&&Bf(n)&&vu(n)}function lk(n){return jn(n)||Un(n)&&Bf(n)}function Iu(n){return jn(n)||er(n)}function fk(n){return Mn(n)&&n[lt]==="Readonly"}function dk(n){return Mn(n)&&n[fr]==="Optional"}function Zu(n){return sn(n,"Any")&&Dn(n.$id)}function yu(n){return sn(n,"Argument")&&Xr(n.index)}function n_(n){return sn(n,"Array")&&n.type==="array"&&Dn(n.$id)&&er(n.items)&&xn(n.minItems)&&xn(n.maxItems)&&Uf(n.uniqueItems)&&Iu(n.contains)&&xn(n.minContains)&&xn(n.maxContains)}function r_(n){return sn(n,"AsyncIterator")&&n.type==="AsyncIterator"&&Dn(n.$id)&&er(n.items)}function t_(n){return sn(n,"BigInt")&&n.type==="bigint"&&Dn(n.$id)&&Ya(n.exclusiveMaximum)&&Ya(n.exclusiveMinimum)&&Ya(n.maximum)&&Ya(n.minimum)&&Ya(n.multipleOf)}function o_(n){return sn(n,"Boolean")&&n.type==="boolean"&&Dn(n.$id)}function c_(n){return sn(n,"Computed")&&Un(n.target)&&Fn(n.parameters)&&n.parameters.every((r)=>er(r))}function a_(n){return sn(n,"Constructor")&&n.type==="Constructor"&&Dn(n.$id)&&Fn(n.parameters)&&n.parameters.every((r)=>er(r))&&er(n.returns)}function e_(n){return sn(n,"Date")&&n.type==="Date"&&Dn(n.$id)&&xn(n.exclusiveMaximumTimestamp)&&xn(n.exclusiveMinimumTimestamp)&&xn(n.maximumTimestamp)&&xn(n.minimumTimestamp)&&xn(n.multipleOfTimestamp)}function i_(n){return sn(n,"Function")&&n.type==="Function"&&Dn(n.$id)&&Fn(n.parameters)&&n.parameters.every((r)=>er(r))&&er(n.returns)}function bk(n){return sn(n,"Import")&&bi(n,"$defs")&&Mn(n.$defs)&&wi(n.$defs)&&bi(n,"$ref")&&Un(n.$ref)&&n.$ref in n.$defs}function s_(n){return sn(n,"Integer")&&n.type==="integer"&&Dn(n.$id)&&xn(n.exclusiveMaximum)&&xn(n.exclusiveMinimum)&&xn(n.maximum)&&xn(n.minimum)&&xn(n.multipleOf)}function wi(n){return Mn(n)&&Object.entries(n).every(([r,t])=>Bf(r)&&er(t))}function l_(n){return sn(n,"Intersect")&&(Un(n.type)&&n.type!=="object"?!1:!0)&&Fn(n.allOf)&&n.allOf.every((r)=>er(r)&&!B_(r))&&Dn(n.type)&&(Uf(n.unevaluatedProperties)||Iu(n.unevaluatedProperties))&&Dn(n.$id)}function f_(n){return sn(n,"Iterator")&&n.type==="Iterator"&&Dn(n.$id)&&er(n.items)}function sn(n,r){return Mn(n)&&L in n&&n[L]===r}function d_(n){return Ja(n)&&Un(n.const)}function b_(n){return Ja(n)&&Xr(n.const)}function gk(n){return Ja(n)&&Gt(n.const)}function Ja(n){return sn(n,"Literal")&&Dn(n.$id)&&g_(n.const)}function g_(n){return Gt(n)||Xr(n)||Un(n)}function u_(n){return sn(n,"MappedKey")&&Fn(n.keys)&&n.keys.every((r)=>Xr(r)||Un(r))}function __(n){return sn(n,"MappedResult")&&wi(n.properties)}function m_(n){return sn(n,"Never")&&Mn(n.not)&&Object.getOwnPropertyNames(n.not).length===0}function w_(n){return sn(n,"Not")&&er(n.not)}function h_(n){return sn(n,"Null")&&n.type==="null"&&Dn(n.$id)}function $_(n){return sn(n,"Number")&&n.type==="number"&&Dn(n.$id)&&xn(n.exclusiveMaximum)&&xn(n.exclusiveMinimum)&&xn(n.maximum)&&xn(n.minimum)&&xn(n.multipleOf)}function k_(n){return sn(n,"Object")&&n.type==="object"&&Dn(n.$id)&&wi(n.properties)&&pu(n.additionalProperties)&&xn(n.minProperties)&&xn(n.maxProperties)}function R_(n){return sn(n,"Promise")&&n.type==="Promise"&&Dn(n.$id)&&er(n.item)}function A_(n){return sn(n,"Record")&&n.type==="object"&&Dn(n.$id)&&pu(n.additionalProperties)&&Mn(n.patternProperties)&&((r)=>{let t=Object.getOwnPropertyNames(r.patternProperties);return t.length===1&&vu(t[0])&&Mn(r.patternProperties)&&er(r.patternProperties[t[0]])})(n)}function uk(n){return Mn(n)&&Tr in n&&n[Tr]==="Recursive"}function S_(n){return sn(n,"Ref")&&Dn(n.$id)&&Un(n.$ref)}function E_(n){return sn(n,"RegExp")&&Dn(n.$id)&&Un(n.source)&&Un(n.flags)&&xn(n.maxLength)&&xn(n.minLength)}function M_(n){return sn(n,"String")&&n.type==="string"&&Dn(n.$id)&&xn(n.minLength)&&xn(n.maxLength)&&sk(n.pattern)&&lk(n.format)}function D_(n){return sn(n,"Symbol")&&n.type==="symbol"&&Dn(n.$id)}function H_(n){return sn(n,"TemplateLiteral")&&n.type==="string"&&Un(n.pattern)&&n.pattern[0]==="^"&&n.pattern[n.pattern.length-1]==="$"}function z_(n){return sn(n,"This")&&Dn(n.$id)&&Un(n.$ref)}function B_(n){return Mn(n)&&In in n}function U_(n){return sn(n,"Tuple")&&n.type==="array"&&Dn(n.$id)&&Xr(n.minItems)&&Xr(n.maxItems)&&n.minItems===n.maxItems&&(jn(n.items)&&jn(n.additionalItems)&&n.minItems===0||Fn(n.items)&&n.items.every((r)=>er(r)))}function x_(n){return sn(n,"Undefined")&&n.type==="undefined"&&Dn(n.$id)}function _k(n){return xf(n)&&n.anyOf.every((r)=>d_(r)||b_(r))}function xf(n){return sn(n,"Union")&&Dn(n.$id)&&Mn(n)&&Fn(n.anyOf)&&n.anyOf.every((r)=>er(r))}function W_(n){return sn(n,"Uint8Array")&&n.type==="Uint8Array"&&Dn(n.$id)&&xn(n.minByteLength)&&xn(n.maxByteLength)}function Y_(n){return sn(n,"Unknown")&&Dn(n.$id)}function J_(n){return sn(n,"Unsafe")}function X_(n){return sn(n,"Void")&&n.type==="void"&&Dn(n.$id)}function V_(n){return Mn(n)&&L in n&&Un(n[L])&&!ik.includes(n[L])}function er(n){return Mn(n)&&(Zu(n)||yu(n)||n_(n)||o_(n)||t_(n)||r_(n)||c_(n)||a_(n)||e_(n)||i_(n)||s_(n)||l_(n)||f_(n)||Ja(n)||u_(n)||__(n)||m_(n)||w_(n)||h_(n)||$_(n)||k_(n)||R_(n)||A_(n)||S_(n)||E_(n)||M_(n)||D_(n)||H_(n)||z_(n)||U_(n)||x_(n)||xf(n)||W_(n)||Y_(n)||J_(n)||X_(n)||V_(n))}var Tu,ik;var C_=d(()=>{nn();Mt();Tu=class Tu extends lr{};ik=["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 Wf=d(()=>{wn();C_()});var L_=()=>{};var Q_="(true|false)",hi="(0|[1-9][0-9]*)",P_="(.*)",_o="^(0|[1-9][0-9]*)$",mo="^(.*)$",G_="^(?!.*)$";var Xa=()=>{};var q_=()=>{};var N_=()=>{};var O_=d(()=>{q_();N_()});function F_(n,r){return n.includes(r)}function j_(n){return[...new Set(n)]}function hk(n,r){return n.filter((t)=>r.includes(t))}function $k(n,r){return n.reduce((t,o)=>{return hk(t,o)},r)}function K_(n){return n.length===1?n[0]:n.length>1?$k(n.slice(1),n[0]):[]}function T_(n){let r=[];for(let t of n)r.push(...t);return r}var Va=()=>{};function wo(n){return M({[L]:"Any"},n)}var v_=d(()=>{Nt();nn()});var Ca=d(()=>{v_()});function Jc(n,r){return M({[L]:"Array",type:"array",items:n},r)}var p_=d(()=>{Z();nn()});var La=d(()=>{p_()});function I_(n){return M({[L]:"Argument",index:n})}var Z_=d(()=>{Z();nn()});var Yf=d(()=>{Z_()});function Xc(n,r){return M({[L]:"AsyncIterator",type:"AsyncIterator",items:n},r)}var y_=d(()=>{nn();Z()});var Qa=d(()=>{y_()});function Wn(n,r,t){return M({[L]:"Computed",target:n,parameters:r},t)}var nm=d(()=>{Nt();Ba()});var ho=d(()=>{nm()});function kk(n,r){let{[r]:t,...o}=n;return o}function Ln(n,r){return r.reduce((t,o)=>kk(t,o),n)}var Kt=()=>{};function un(n){return M({[L]:"Never",not:{}},n)}var rm=d(()=>{Z();nn()});var dr=d(()=>{rm()});var tm=()=>{};function hn(n){return M({[L]:"MappedResult",properties:n})}var Jf=d(()=>{Z();nn()});function Vc(n,r,t){return M({[L]:"Constructor",type:"Constructor",parameters:n,returns:r},t)}var om=d(()=>{Z();nn()});var Pa=d(()=>{om()});function Dt(n,r,t){return M({[L]:"Function",type:"Function",parameters:n,returns:r},t)}var cm=d(()=>{Z();nn()});var vo=d(()=>{cm()});function Ga(n,r){return M({[L]:"Union",anyOf:n},r)}var Xf=d(()=>{Z();nn()});function Rk(n){return n.some((r)=>Mr(r))}function am(n){return n.map((r)=>Mr(r)?Ak(r):r)}function Ak(n){return Ln(n,[fr])}function Sk(n,r){return Rk(n)?mr(Ga(am(n),r)):Ga(am(n),r)}function Ht(n,r){return n.length===1?M(n[0],r):n.length===0?un(r):Sk(n,r)}var em=d(()=>{Z();nn();Kt();dr();Tt();Xf();wn()});var im=()=>{};function An(n,r){return n.length===0?un(r):n.length===1?M(n[0],r):Ga(n,r)}var sm=d(()=>{dr();Z();Xf()});var Zn=d(()=>{em();im();sm()});function Ek(n){return n.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function Cf(n,r,t){return n[r]===t&&n.charCodeAt(r-1)!==92}function vt(n,r){return Cf(n,r,"(")}function qa(n,r){return Cf(n,r,")")}function lm(n,r){return Cf(n,r,"|")}function Mk(n){if(!(vt(n,0)&&qa(n,n.length-1)))return!1;let r=0;for(let t=0;t<n.length;t++){if(vt(n,t))r+=1;if(qa(n,t))r-=1;if(r===0&&t!==n.length-1)return!1}return!0}function Dk(n){return n.slice(1,n.length-1)}function Hk(n){let r=0;for(let t=0;t<n.length;t++){if(vt(n,t))r+=1;if(qa(n,t))r-=1;if(lm(n,t)&&r===0)return!0}return!1}function zk(n){for(let r=0;r<n.length;r++)if(vt(n,r))return!0;return!1}function Bk(n){let[r,t]=[0,0],o=[];for(let a=0;a<n.length;a++){if(vt(n,a))r+=1;if(qa(n,a))r-=1;if(lm(n,a)&&r===0){let e=n.slice(t,a);if(e.length>0)o.push(Cc(e));t=a+1}}let c=n.slice(t);if(c.length>0)o.push(Cc(c));if(o.length===0)return{type:"const",const:""};if(o.length===1)return o[0];return{type:"or",expr:o}}function Uk(n){function r(c,a){if(!vt(c,a))throw new Vf("TemplateLiteralParser: Index must point to open parens");let e=0;for(let i=a;i<c.length;i++){if(vt(c,i))e+=1;if(qa(c,i))e-=1;if(e===0)return[a,i]}throw new Vf("TemplateLiteralParser: Unclosed group parens in expression")}function t(c,a){for(let e=a;e<c.length;e++)if(vt(c,e))return[a,e];return[a,c.length]}let o=[];for(let c=0;c<n.length;c++)if(vt(n,c)){let[a,e]=r(n,c),i=n.slice(a,e+1);o.push(Cc(i)),c=e}else{let[a,e]=t(n,c),i=n.slice(a,e);if(i.length>0)o.push(Cc(i));c=e-1}return o.length===0?{type:"const",const:""}:o.length===1?o[0]:{type:"and",expr:o}}function Cc(n){return Mk(n)?Cc(Dk(n)):Hk(n)?Bk(n):zk(n)?Uk(n):{type:"const",const:Ek(n)}}function Lc(n){return Cc(n.slice(1,n.length-1))}var Vf;var $i=d(()=>{Mt();Vf=class Vf extends lr{}});function xk(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 Wk(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 Yk(n){return n.type==="const"&&n.const===".*"}function po(n){return xk(n)||Yk(n)?!1:Wk(n)?!0:n.type==="and"?n.expr.every((r)=>po(r)):n.type==="or"?n.expr.every((r)=>po(r)):n.type==="const"?!0:(()=>{throw new fm("Unknown expression type")})()}function dm(n){let r=Lc(n.pattern);return po(r)}var fm;var Lf=d(()=>{$i();Mt();fm=class fm extends lr{}});function*gm(n){if(n.length===1)return yield*n[0];for(let r of n[0])for(let t of gm(n.slice(1)))yield`${r}${t}`}function*Jk(n){return yield*gm(n.expr.map((r)=>[...Na(r)]))}function*Xk(n){for(let r of n.expr)yield*Na(r)}function*Vk(n){return yield n.const}function*Na(n){return n.type==="and"?yield*Jk(n):n.type==="or"?yield*Xk(n):n.type==="const"?yield*Vk(n):(()=>{throw new bm("Unknown expression")})()}function ki(n){let r=Lc(n.pattern);return po(r)?[...Na(r)]:[]}var bm;var Qf=d(()=>{Lf();$i();Mt();bm=class bm extends lr{}});function kn(n,r){return M({[L]:"Literal",const:n,type:typeof n},r)}var um=d(()=>{Z();nn()});var Dr=d(()=>{um()});function Ri(n){return M({[L]:"Boolean",type:"boolean"},n)}var _m=d(()=>{nn();Nt()});var Ai=d(()=>{_m()});function Qc(n){return M({[L]:"BigInt",type:"bigint"},n)}var mm=d(()=>{nn();Nt()});var Oa=d(()=>{mm()});function vr(n){return M({[L]:"Number",type:"number"},n)}var wm=d(()=>{Z();nn()});var Io=d(()=>{wm()});function mt(n){return M({[L]:"String",type:"string"},n)}var hm=d(()=>{Z();nn()});var Pc=d(()=>{hm()});function*Ck(n){let r=n.trim().replace(/"|'/g,"");return r==="boolean"?yield Ri():r==="number"?yield vr():r==="bigint"?yield Qc():r==="string"?yield mt():yield(()=>{let t=r.split("|").map((o)=>kn(o.trim()));return t.length===0?un():t.length===1?t[0]:Ht(t)})()}function*Lk(n){if(n[1]!=="{"){let r=kn("$"),t=Pf(n.slice(1));return yield*[r,...t]}for(let r=2;r<n.length;r++)if(n[r]==="}"){let t=Ck(n.slice(2,r)),o=Pf(n.slice(r+1));return yield*[...t,...o]}yield kn(n)}function*Pf(n){for(let r=0;r<n.length;r++)if(n[r]==="$"){let t=kn(n.slice(0,r)),o=Lk(n.slice(r));return yield*[t,...o]}yield kn(n)}function $m(n){return[...Pf(n)]}var Gf=d(()=>{Dr();Ai();Oa();Io();Pc();Zn();dr()});function Qk(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Rm(n,r){return Lr(n)?n.pattern.slice(1,n.pattern.length-1):gn(n)?`(${n.anyOf.map((t)=>Rm(t,r)).join("|")})`:_t(n)?`${r}${hi}`:ut(n)?`${r}${hi}`:Fo(n)?`${r}${hi}`:Ft(n)?`${r}${P_}`:Vr(n)?`${r}${Qk(n.const.toString())}`:Ot(n)?`${r}${Q_}`:(()=>{throw new km(`Unexpected Kind '${n[L]}'`)})()}function qf(n){return`^${n.map((r)=>Rm(r,"")).join("")}$`}var km;var Nf=d(()=>{Xa();nn();Mt();wn();km=class km extends lr{}});function Zo(n){let t=ki(n).map((o)=>kn(o));return Ht(t)}var Am=d(()=>{Zn();Dr();Qf()});function Si(n,r){let t=Un(n)?qf($m(n)):qf(n);return M({[L]:"TemplateLiteral",type:"string",pattern:t},r)}var Sm=d(()=>{Z();Gf();Nf();nn()});var pt=d(()=>{Lf();Qf();Gf();$i();Nf();Am();Sm()});function Pk(n){return ki(n).map((t)=>t.toString())}function Gk(n){let r=[];for(let t of n)r.push(...Hr(t));return r}function qk(n){return[n.toString()]}function Hr(n){return[...new Set(Lr(n)?Pk(n):gn(n)?Gk(n.anyOf):Vr(n)?qk(n.const):_t(n)?["[number]"]:ut(n)?["[number]"]:[])]}var Ei=d(()=>{pt();wn()});function Nk(n,r,t){let o={};for(let c of Object.getOwnPropertyNames(r))o[c]=$o(n,Hr(r[c]),t);return o}function Ok(n,r,t){return Nk(n,r.properties,t)}function Em(n,r,t){let o=Ok(n,r,t);return hn(o)}var Of=d(()=>{or();Ei();zt()});function Dm(n,r){return n.map((t)=>Hm(t,r))}function Fk(n){return n.filter((r)=>!go(r))}function jk(n,r){return Mi(Fk(Dm(n,r)))}function Kk(n){return n.some((r)=>go(r))?[]:n}function Tk(n,r){return Ht(Kk(Dm(n,r)))}function vk(n,r){return r in n?n[r]:r==="[number]"?Ht(n):un()}function pk(n,r){return r==="[number]"?n:un()}function Ik(n,r){return r in n?n[r]:un()}function Hm(n,r){return Cn(n)?jk(n.allOf,r):gn(n)?Tk(n.anyOf,r):Qr(n)?vk(n.items??[],r):ft(n)?pk(n.items,r):Kn(n)?Ik(n.properties,r):un()}function Ff(n,r){return r.map((t)=>Hm(n,t))}function Mm(n,r){return Ht(Ff(n,r))}function $o(n,r,t){if(Pn(n)||Pn(r)){if(!Pr(n)||!Pr(r))throw new lr("Index types using Ref parameters require both Type and Key to be of TSchema");return Wn("Index",[n,r])}if(Jn(r))return Em(n,r,t);if(Cr(r))return zm(n,r,t);return M(Pr(r)?Mm(n,Hr(r)):Mm(n,r),t)}var jf=d(()=>{Z();Mt();ho();dr();pr();Zn();Ei();Kf();Of();wn()});function Zk(n,r,t){return{[r]:$o(n,[r],Yn(t))}}function yk(n,r,t){return r.reduce((o,c)=>{return{...o,...Zk(n,c,t)}},{})}function nR(n,r,t){return yk(n,r.keys,t)}function zm(n,r,t){let o=nR(n,r,t);return hn(o)}var Kf=d(()=>{jf();or();Er()});var zt=d(()=>{Kf();Of();Ei();jf()});function Gc(n,r){return M({[L]:"Iterator",type:"Iterator",items:n},r)}var Bm=d(()=>{Z();nn()});var Fa=d(()=>{Bm()});function rR(n){return globalThis.Object.keys(n).filter((r)=>!Mr(n[r]))}function tR(n,r){let t=rR(n),o=t.length>0?{[L]:"Object",type:"object",required:t,properties:n}:{[L]:"Object",type:"object",properties:n};return M(o,r)}var Hn;var Um=d(()=>{Z();nn();wn();Hn=tR});var Gr=d(()=>{Um()});function Di(n,r){return M({[L]:"Promise",type:"Promise",item:n},r)}var xm=d(()=>{Z();nn()});var Hi=d(()=>{xm()});function oR(n){return M(Ln(n,[lt]))}function cR(n){return M({...n,[lt]:"Readonly"})}function aR(n,r){return r===!1?oR(n):cR(n)}function zr(n,r){let t=r??!0;return Jn(n)?Wm(n,t):aR(n,t)}var Tf=d(()=>{Z();nn();Kt();vf();wn()});function eR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=zr(n[o],r);return t}function iR(n,r){return eR(n.properties,r)}function Wm(n,r){let t=iR(n,r);return hn(t)}var vf=d(()=>{or();Tf()});var yo=d(()=>{vf();Tf()});function Ir(n,r){return M(n.length>0?{[L]:"Tuple",type:"array",items:n,additionalItems:!1,minItems:n.length,maxItems:n.length}:{[L]:"Tuple",type:"array",minItems:n.length,maxItems:n.length},r)}var Ym=d(()=>{Z();nn()});var ko=d(()=>{Ym()});function Jm(n,r){return n in r?Zr(n,r[n]):hn(r)}function sR(n){return{[n]:kn(n)}}function lR(n){let r={};for(let t of n)r[t]=kn(t);return r}function fR(n,r){return F_(r,n)?sR(n):lR(r)}function dR(n,r){let t=fR(n,r);return Jm(n,t)}function ja(n,r){return r.map((t)=>Zr(n,t))}function bR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(r))t[o]=Zr(n,r[o]);return t}function Zr(n,r){let t={...r};return Mr(r)?mr(Zr(n,Ln(r,[fr]))):Yc(r)?zr(Zr(n,Ln(r,[lt]))):Jn(r)?Jm(n,r.properties):Cr(r)?dR(n,r.keys):bt(r)?Vc(ja(n,r.parameters),Zr(n,r.returns),t):gt(r)?Dt(ja(n,r.parameters),Zr(n,r.returns),t):Oo(r)?Xc(Zr(n,r.items),t):jo(r)?Gc(Zr(n,r.items),t):Cn(r)?wr(ja(n,r.allOf),t):gn(r)?An(ja(n,r.anyOf),t):Qr(r)?Ir(ja(n,r.items??[]),t):Kn(r)?Hn(bR(n,r.properties),t):ft(r)?Jc(Zr(n,r.items),t):Ko(r)?Di(Zr(n,r.item),t):r}function gR(n,r){let t={};for(let o of n)t[o]=Zr(o,r);return t}function Xm(n,r,t){let o=Pr(n)?Hr(n):n,c=r({[L]:"MappedKey",keys:o}),a=gR(o,c);return Hn(a,t)}var Vm=d(()=>{nn();Kt();La();Qa();Pa();vo();zt();pr();Fa();Dr();Gr();Tt();Hi();yo();ko();Zn();Va();Jf();wn()});var or=d(()=>{tm();Jf();Vm()});function uR(n){return M(Ln(n,[fr]))}function _R(n){return M({...n,[fr]:"Optional"})}function mR(n,r){return r===!1?uR(n):_R(n)}function mr(n,r){let t=r??!0;return Jn(n)?Cm(n,t):mR(n,t)}var pf=d(()=>{Z();nn();Kt();If();wn()});function wR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=mr(n[o],r);return t}function hR(n,r){return wR(n.properties,r)}function Cm(n,r){let t=hR(n,r);return hn(t)}var If=d(()=>{or();pf()});var Tt=d(()=>{If();pf()});function Ka(n,r={}){let t=n.every((c)=>Kn(c)),o=Pr(r.unevaluatedProperties)?{unevaluatedProperties:r.unevaluatedProperties}:{};return M(r.unevaluatedProperties===!1||Pr(r.unevaluatedProperties)||t?{...o,[L]:"Intersect",type:"object",allOf:n}:{...o,[L]:"Intersect",allOf:n},r)}var Zf=d(()=>{Z();nn();wn()});function $R(n){return n.every((r)=>Mr(r))}function kR(n){return Ln(n,[fr])}function Lm(n){return n.map((r)=>Mr(r)?kR(r):r)}function RR(n,r){return $R(n)?mr(Ka(Lm(n),r)):Ka(Lm(n),r)}function Mi(n,r={}){if(n.length===1)return M(n[0],r);if(n.length===0)return un(r);if(n.some((t)=>uo(t)))throw Error("Cannot intersect transform types");return RR(n,r)}var Qm=d(()=>{nn();Z();Kt();dr();Tt();Zf();wn()});var Pm=()=>{};function wr(n,r){if(n.length===1)return M(n[0],r);if(n.length===0)return un(r);if(n.some((t)=>uo(t)))throw Error("Cannot intersect transform types");return Ka(n,r)}var Gm=d(()=>{Z();dr();Zf();wn()});var pr=d(()=>{Qm();Pm();Gm()});function Bt(...n){let[r,t]=typeof n[0]==="string"?[n[0],n[1]]:[n[0].$id,n[1]];if(typeof r!=="string")throw new lr("Ref: $ref must be a string");return M({[L]:"Ref",$ref:r},t)}var qm=d(()=>{Mt();Z();nn()});var nc=d(()=>{qm()});function AR(n,r){return Wn("Awaited",[Wn(n,r)])}function SR(n){return Wn("Awaited",[Bt(n)])}function ER(n){return wr(Nm(n))}function MR(n){return An(Nm(n))}function DR(n){return qc(n)}function Nm(n){return n.map((r)=>qc(r))}function qc(n,r){return M(dt(n)?AR(n.target,n.parameters):Cn(n)?ER(n.allOf):gn(n)?MR(n.anyOf):Ko(n)?DR(n.item):Pn(n)?SR(n.$ref):n,r)}var Om=d(()=>{Z();ho();pr();Zn();nc();wn()});var zi=d(()=>{Om()});function Fm(n){let r=[];for(let t of n)r.push(Ta(t));return r}function HR(n){let r=Fm(n);return T_(r)}function zR(n){let r=Fm(n);return K_(r)}function BR(n){return n.map((r,t)=>t.toString())}function UR(n){return["[number]"]}function xR(n){return globalThis.Object.getOwnPropertyNames(n)}function WR(n){if(!YR)return[];return globalThis.Object.getOwnPropertyNames(n).map((t)=>{return t[0]==="^"&&t[t.length-1]==="$"?t.slice(1,t.length-1):t})}function Ta(n){return Cn(n)?HR(n.allOf):gn(n)?zR(n.anyOf):Qr(n)?BR(n.items??[]):ft(n)?UR(n.items):Kn(n)?xR(n.properties):To(n)?WR(n.patternProperties):[]}var YR=!1;var yf=d(()=>{Va();wn()});function JR(n,r){return Wn("KeyOf",[Wn(n,r)])}function XR(n){return Wn("KeyOf",[Bt(n)])}function VR(n,r){let t=Ta(n),o=CR(t),c=Ht(o);return M(c,r)}function CR(n){return n.map((r)=>r==="[number]"?vr():kn(r))}function Nc(n,r){return dt(n)?JR(n.target,n.parameters):Pn(n)?XR(n.$ref):Jn(n)?jm(n,r):VR(n,r)}var n0=d(()=>{Z();Dr();Io();ho();nc();yf();Zn();r0();wn()});function LR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Nc(n[o],Yn(r));return t}function QR(n,r){return LR(n.properties,r)}function jm(n,r){let t=QR(n,r);return hn(t)}var r0=d(()=>{or();n0();Er()});var Km=()=>{};var va=d(()=>{r0();Km();yf();n0()});function PR(n){let r=[];for(let t of n)r.push(...Ta(t));return j_(r)}function GR(n){return n.filter((r)=>!go(r))}function qR(n,r){let t=[];for(let o of n)t.push(...Ff(o,[r]));return GR(t)}function NR(n,r){let t={};for(let o of r)t[o]=Mi(qR(n,o));return t}function Tm(n,r){let t=PR(n),o=NR(n,t);return Hn(o,r)}var vm=d(()=>{pr();zt();va();Gr();Va();wn()});var t0=d(()=>{vm()});function Bi(n){return M({[L]:"Date",type:"Date"},n)}var pm=d(()=>{nn();Z()});var Ui=d(()=>{pm()});function xi(n){return M({[L]:"Null",type:"null"},n)}var Im=d(()=>{Z();nn()});var Wi=d(()=>{Im()});function Yi(n){return M({[L]:"Symbol",type:"symbol"},n)}var Zm=d(()=>{Z();nn()});var Ji=d(()=>{Zm()});function Xi(n){return M({[L]:"Undefined",type:"undefined"},n)}var ym=d(()=>{Z();nn()});var Vi=d(()=>{ym()});function Ci(n){return M({[L]:"Uint8Array",type:"Uint8Array"},n)}var nw=d(()=>{Z();nn()});var Li=d(()=>{nw()});function Ro(n){return M({[L]:"Unknown"},n)}var rw=d(()=>{Z();nn()});var Oc=d(()=>{rw()});function OR(n){return n.map((r)=>o0(r,!1))}function FR(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=zr(o0(n[t],!1));return r}function Qi(n,r){return r===!0?n:zr(n)}function o0(n,r){return kf(n)?Qi(wo(),r):Af(n)?Qi(wo(),r):Fn(n)?zr(Ir(OR(n))):qt(n)?Ci():No(n)?Bi():Mn(n)?Qi(Hn(FR(n)),r):Rf(n)?Qi(Dt([],Ro()),r):jn(n)?Xi():Sf(n)?xi():Ef(n)?Yi():Da(n)?Qc():Xr(n)?kn(n):Gt(n)?kn(n):Un(n)?kn(n):Hn({})}function tw(n,r){return M(o0(n,!0),r)}var ow=d(()=>{Ca();Oa();Ui();vo();Dr();Wi();Gr();Ji();ko();yo();Vi();Li();Oc();Nt()});var c0=d(()=>{ow()});function cw(n,r){return bt(n)?Ir(n.parameters,r):un(r)}var aw=d(()=>{ko();dr();wn()});var a0=d(()=>{aw()});function ew(n,r){if(jn(n))throw Error("Enum undefined or empty");let t=globalThis.Object.getOwnPropertyNames(n).filter((a)=>isNaN(a)).map((a)=>n[a]),c=[...new Set(t)].map((a)=>kn(a));return An(c,{...r,[Tr]:"Enum"})}var iw=d(()=>{Dr();nn();Zn()});var e0=d(()=>{iw()});function yr(n){return n===H.False?n:H.True}function Fc(n){throw new bw(n)}function yn(n){return _.IsNever(n)||_.IsIntersect(n)||_.IsUnion(n)||_.IsUnknown(n)||_.IsAny(n)}function nr(n,r){return _.IsNever(r)?_w(n,r):_.IsIntersect(r)?Pi(n,r):_.IsUnion(r)?d0(n,r):_.IsUnknown(r)?$w(n,r):_.IsAny(r)?f0(n,r):Fc("StructuralRight")}function f0(n,r){return H.True}function jR(n,r){return _.IsIntersect(r)?Pi(n,r):_.IsUnion(r)&&r.anyOf.some((t)=>_.IsAny(t)||_.IsUnknown(t))?H.True:_.IsUnion(r)?H.Union:_.IsUnknown(r)?H.True:_.IsAny(r)?H.True:H.Union}function KR(n,r){return _.IsUnknown(n)?H.False:_.IsAny(n)?H.Union:_.IsNever(n)?H.True:H.False}function TR(n,r){return _.IsObject(r)&&Gi(r)?H.True:yn(r)?nr(n,r):!_.IsArray(r)?H.False:yr(zn(n.items,r.items))}function vR(n,r){return yn(r)?nr(n,r):!_.IsAsyncIterator(r)?H.False:yr(zn(n.items,r.items))}function pR(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsBigInt(r)?H.True:H.False}function gw(n,r){return _.IsLiteralBoolean(n)?H.True:_.IsBoolean(n)?H.True:H.False}function IR(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsBoolean(r)?H.True:H.False}function ZR(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):!_.IsConstructor(r)?H.False:n.parameters.length>r.parameters.length?H.False:!n.parameters.every((t,o)=>yr(zn(r.parameters[o],t))===H.True)?H.False:yr(zn(n.returns,r.returns))}function yR(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsDate(r)?H.True:H.False}function n3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):!_.IsFunction(r)?H.False:n.parameters.length>r.parameters.length?H.False:!n.parameters.every((t,o)=>yr(zn(r.parameters[o],t))===H.True)?H.False:yr(zn(n.returns,r.returns))}function uw(n,r){return _.IsLiteral(n)&&_r.IsNumber(n.const)?H.True:_.IsNumber(n)||_.IsInteger(n)?H.True:H.False}function r3(n,r){return _.IsInteger(r)||_.IsNumber(r)?H.True:yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):H.False}function Pi(n,r){return r.allOf.every((t)=>zn(n,t)===H.True)?H.True:H.False}function t3(n,r){return n.allOf.some((t)=>zn(t,r)===H.True)?H.True:H.False}function o3(n,r){return yn(r)?nr(n,r):!_.IsIterator(r)?H.False:yr(zn(n.items,r.items))}function c3(n,r){return _.IsLiteral(r)&&r.const===n.const?H.True:yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsString(r)?hw(n,r):_.IsNumber(r)?mw(n,r):_.IsInteger(r)?uw(n,r):_.IsBoolean(r)?gw(n,r):H.False}function _w(n,r){return H.False}function a3(n,r){return H.True}function sw(n){let[r,t]=[n,0];while(!0){if(!_.IsNot(r))break;r=r.not,t+=1}return t%2===0?r:Ro()}function e3(n,r){return _.IsNot(n)?zn(sw(n),r):_.IsNot(r)?zn(n,sw(r)):Fc("Invalid fallthrough for Not")}function i3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsNull(r)?H.True:H.False}function mw(n,r){return _.IsLiteralNumber(n)?H.True:_.IsNumber(n)||_.IsInteger(n)?H.True:H.False}function s3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsInteger(r)||_.IsNumber(r)?H.True:H.False}function Br(n,r){return Object.getOwnPropertyNames(n.properties).length===r}function lw(n){return Gi(n)}function fw(n){return Br(n,0)||Br(n,1)&&"description"in n.properties&&_.IsUnion(n.properties.description)&&n.properties.description.anyOf.length===2&&(_.IsString(n.properties.description.anyOf[0])&&_.IsUndefined(n.properties.description.anyOf[1])||_.IsString(n.properties.description.anyOf[1])&&_.IsUndefined(n.properties.description.anyOf[0]))}function i0(n){return Br(n,0)}function dw(n){return Br(n,0)}function l3(n){return Br(n,0)}function f3(n){return Br(n,0)}function d3(n){return Gi(n)}function b3(n){let r=vr();return Br(n,0)||Br(n,1)&&"length"in n.properties&&yr(zn(n.properties.length,r))===H.True}function g3(n){return Br(n,0)}function Gi(n){let r=vr();return Br(n,0)||Br(n,1)&&"length"in n.properties&&yr(zn(n.properties.length,r))===H.True}function u3(n){let r=Dt([wo()],wo());return Br(n,0)||Br(n,1)&&"then"in n.properties&&yr(zn(n.properties.then,r))===H.True}function ww(n,r){return zn(n,r)===H.False?H.False:_.IsOptional(n)&&!_.IsOptional(r)?H.False:H.True}function hr(n,r){return _.IsUnknown(n)?H.False:_.IsAny(n)?H.Union:_.IsNever(n)||_.IsLiteralString(n)&&lw(r)||_.IsLiteralNumber(n)&&i0(r)||_.IsLiteralBoolean(n)&&dw(r)||_.IsSymbol(n)&&fw(r)||_.IsBigInt(n)&&l3(r)||_.IsString(n)&&lw(r)||_.IsSymbol(n)&&fw(r)||_.IsNumber(n)&&i0(r)||_.IsInteger(n)&&i0(r)||_.IsBoolean(n)&&dw(r)||_.IsUint8Array(n)&&d3(r)||_.IsDate(n)&&f3(r)||_.IsConstructor(n)&&g3(r)||_.IsFunction(n)&&b3(r)?H.True:_.IsRecord(n)&&_.IsString(s0(n))?(()=>{return r[Tr]==="Record"?H.True:H.False})():_.IsRecord(n)&&_.IsNumber(s0(n))?(()=>{return Br(r,0)?H.True:H.False})():H.False}function _3(n,r){return yn(r)?nr(n,r):_.IsRecord(r)?nt(n,r):!_.IsObject(r)?H.False:(()=>{for(let t of Object.getOwnPropertyNames(r.properties)){if(!(t in n.properties)&&!_.IsOptional(r.properties[t]))return H.False;if(_.IsOptional(r.properties[t]))return H.True;if(ww(n.properties[t],r.properties[t])===H.False)return H.False}return H.True})()}function m3(n,r){return yn(r)?nr(n,r):_.IsObject(r)&&u3(r)?H.True:!_.IsPromise(r)?H.False:yr(zn(n.item,r.item))}function s0(n){return _o in n.patternProperties?vr():(mo in n.patternProperties)?mt():Fc("Unknown record key pattern")}function l0(n){return _o in n.patternProperties?n.patternProperties[_o]:(mo in n.patternProperties)?n.patternProperties[mo]:Fc("Unable to get record value schema")}function nt(n,r){let[t,o]=[s0(r),l0(r)];return _.IsLiteralString(n)&&_.IsNumber(t)&&yr(zn(n,o))===H.True?H.True:_.IsUint8Array(n)&&_.IsNumber(t)?zn(n,o):_.IsString(n)&&_.IsNumber(t)?zn(n,o):_.IsArray(n)&&_.IsNumber(t)?zn(n,o):_.IsObject(n)?(()=>{for(let c of Object.getOwnPropertyNames(n.properties))if(ww(o,n.properties[c])===H.False)return H.False;return H.True})():H.False}function w3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):!_.IsRecord(r)?H.False:zn(l0(n),l0(r))}function h3(n,r){let t=_.IsRegExp(n)?mt():n,o=_.IsRegExp(r)?mt():r;return zn(t,o)}function hw(n,r){return _.IsLiteral(n)&&_r.IsString(n.const)?H.True:_.IsString(n)?H.True:H.False}function $3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsString(r)?H.True:H.False}function k3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsSymbol(r)?H.True:H.False}function R3(n,r){return _.IsTemplateLiteral(n)?zn(Zo(n),r):_.IsTemplateLiteral(r)?zn(n,Zo(r)):Fc("Invalid fallthrough for TemplateLiteral")}function A3(n,r){return _.IsArray(r)&&n.items!==void 0&&n.items.every((t)=>zn(t,r.items)===H.True)}function S3(n,r){return _.IsNever(n)?H.True:_.IsUnknown(n)?H.False:_.IsAny(n)?H.Union:H.False}function E3(n,r){return yn(r)?nr(n,r):_.IsObject(r)&&Gi(r)?H.True:_.IsArray(r)&&A3(n,r)?H.True:!_.IsTuple(r)?H.False:_r.IsUndefined(n.items)&&!_r.IsUndefined(r.items)||!_r.IsUndefined(n.items)&&_r.IsUndefined(r.items)?H.False:_r.IsUndefined(n.items)&&!_r.IsUndefined(r.items)?H.True:n.items.every((t,o)=>zn(t,r.items[o])===H.True)?H.True:H.False}function M3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsUint8Array(r)?H.True:H.False}function D3(n,r){return yn(r)?nr(n,r):_.IsObject(r)?hr(n,r):_.IsRecord(r)?nt(n,r):_.IsVoid(r)?B3(n,r):_.IsUndefined(r)?H.True:H.False}function d0(n,r){return r.anyOf.some((t)=>zn(n,t)===H.True)?H.True:H.False}function H3(n,r){return n.anyOf.every((t)=>zn(t,r)===H.True)?H.True:H.False}function $w(n,r){return H.True}function z3(n,r){return _.IsNever(r)?_w(n,r):_.IsIntersect(r)?Pi(n,r):_.IsUnion(r)?d0(n,r):_.IsAny(r)?f0(n,r):_.IsString(r)?hw(n,r):_.IsNumber(r)?mw(n,r):_.IsInteger(r)?uw(n,r):_.IsBoolean(r)?gw(n,r):_.IsArray(r)?KR(n,r):_.IsTuple(r)?S3(n,r):_.IsObject(r)?hr(n,r):_.IsUnknown(r)?H.True:H.False}function B3(n,r){return _.IsUndefined(n)?H.True:_.IsUndefined(n)?H.True:H.False}function U3(n,r){return _.IsIntersect(r)?Pi(n,r):_.IsUnion(r)?d0(n,r):_.IsUnknown(r)?$w(n,r):_.IsAny(r)?f0(n,r):_.IsObject(r)?hr(n,r):_.IsVoid(r)?H.True:H.False}function zn(n,r){return _.IsTemplateLiteral(n)||_.IsTemplateLiteral(r)?R3(n,r):_.IsRegExp(n)||_.IsRegExp(r)?h3(n,r):_.IsNot(n)||_.IsNot(r)?e3(n,r):_.IsAny(n)?jR(n,r):_.IsArray(n)?TR(n,r):_.IsBigInt(n)?pR(n,r):_.IsBoolean(n)?IR(n,r):_.IsAsyncIterator(n)?vR(n,r):_.IsConstructor(n)?ZR(n,r):_.IsDate(n)?yR(n,r):_.IsFunction(n)?n3(n,r):_.IsInteger(n)?r3(n,r):_.IsIntersect(n)?t3(n,r):_.IsIterator(n)?o3(n,r):_.IsLiteral(n)?c3(n,r):_.IsNever(n)?a3(n,r):_.IsNull(n)?i3(n,r):_.IsNumber(n)?s3(n,r):_.IsObject(n)?_3(n,r):_.IsRecord(n)?w3(n,r):_.IsString(n)?$3(n,r):_.IsSymbol(n)?k3(n,r):_.IsTuple(n)?E3(n,r):_.IsPromise(n)?m3(n,r):_.IsUint8Array(n)?M3(n,r):_.IsUndefined(n)?D3(n,r):_.IsUnion(n)?H3(n,r):_.IsUnknown(n)?z3(n,r):_.IsVoid(n)?U3(n,r):Fc(`Unknown left type operand '${n[L]}'`)}function Ao(n,r){return zn(n,r)}var bw,H;var b0=d(()=>{Ca();vo();Io();Pc();Oc();pt();Xa();nn();Mt();Wf();bw=class bw extends lr{};(function(n){n[n.Union=0]="Union",n[n.True=1]="True",n[n.False=2]="False"})(H||(H={}))});function x3(n,r,t,o,c){let a={};for(let e of globalThis.Object.getOwnPropertyNames(n))a[e]=jc(n[e],r,t,o,Yn(c));return a}function W3(n,r,t,o,c){return x3(n.properties,r,t,o,c)}function kw(n,r,t,o,c){let a=W3(n,r,t,o,c);return hn(a)}var g0=d(()=>{or();qi();Er()});function Y3(n,r,t,o){let c=Ao(n,r);return c===H.Union?An([t,o]):c===H.True?t:o}function jc(n,r,t,o,c){return Jn(n)?kw(n,r,t,o,c):Cr(n)?M(Rw(n,r,t,o,c)):M(Y3(n,r,t,o),c)}var qi=d(()=>{Z();Zn();b0();u0();g0();wn()});function J3(n,r,t,o,c){return{[n]:jc(kn(n),r,t,o,Yn(c))}}function X3(n,r,t,o,c){return n.reduce((a,e)=>{return{...a,...J3(e,r,t,o,c)}},{})}function V3(n,r,t,o,c){return X3(n.keys,r,t,o,c)}function Rw(n,r,t,o,c){let a=V3(n,r,t,o,c);return hn(a)}var u0=d(()=>{or();Dr();qi();Er()});var Aw=()=>{};var pa=d(()=>{b0();u0();g0();Aw();qi()});function Sw(n,r){return Kc(Zo(n),r)}var _0=d(()=>{Ni();pt()});function C3(n,r){let t=n.filter((o)=>Ao(o,r)===H.False);return t.length===1?t[0]:An(t)}function Kc(n,r,t={}){if(Lr(n))return M(Sw(n,r),t);if(Jn(n))return M(Ew(n,r),t);return M(gn(n)?C3(n.anyOf,r):Ao(n,r)!==H.False?un():n,t)}var Ni=d(()=>{Z();Zn();dr();pa();m0();_0();wn()});function L3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Kc(n[o],r);return t}function Q3(n,r){return L3(n.properties,r)}function Ew(n,r){let t=Q3(n,r);return hn(t)}var m0=d(()=>{or();Ni()});var w0=d(()=>{m0();_0();Ni()});function Mw(n,r){return Tc(Zo(n),r)}var h0=d(()=>{Oi();pt()});function P3(n,r){let t=n.filter((o)=>Ao(o,r)!==H.False);return t.length===1?t[0]:An(t)}function Tc(n,r,t){if(Lr(n))return M(Mw(n,r),t);if(Jn(n))return M(Dw(n,r),t);return M(gn(n)?P3(n.anyOf,r):Ao(n,r)!==H.False?n:un(),t)}var Oi=d(()=>{Z();Zn();dr();pa();$0();h0();wn()});function G3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Tc(n[o],r);return t}function q3(n,r){return G3(n.properties,r)}function Dw(n,r){let t=q3(n,r);return hn(t)}var $0=d(()=>{or();Oi()});var k0=d(()=>{$0();h0();Oi()});function Hw(n,r){return bt(n)?M(n.returns,r):un(r)}var zw=d(()=>{Z();dr();wn()});var R0=d(()=>{zw()});function Fi(n){return zr(mr(n))}var Bw=d(()=>{yo();Tt()});var ji=d(()=>{Bw()});function rc(n,r,t){return M({[L]:"Record",type:"object",patternProperties:{[n]:r}},t)}function A0(n,r,t){let o={};for(let c of n)o[c]=r;return Hn(o,{...t,[Tr]:"Record"})}function N3(n,r,t){return dm(n)?A0(Hr(n),r,t):rc(n.pattern,r,t)}function O3(n,r,t){return A0(Hr(An(n)),r,t)}function F3(n,r,t){return A0([n.toString()],r,t)}function j3(n,r,t){return rc(n.source,r,t)}function K3(n,r,t){let o=jn(n.pattern)?mo:n.pattern;return rc(o,r,t)}function T3(n,r,t){return rc(mo,r,t)}function v3(n,r,t){return rc(G_,r,t)}function p3(n,r,t){return Hn({true:r,false:r},t)}function I3(n,r,t){return rc(_o,r,t)}function Z3(n,r,t){return rc(_o,r,t)}function Ki(n,r,t={}){return gn(n)?O3(n.anyOf,r,t):Lr(n)?N3(n,r,t):Vr(n)?F3(n.const,r,t):Ot(n)?p3(n,r,t):ut(n)?I3(n,r,t):_t(n)?Z3(n,r,t):zf(n)?j3(n,r,t):Ft(n)?K3(n,r,t):Df(n)?T3(n,r,t):go(n)?v3(n,r,t):un(t)}function Ti(n){return globalThis.Object.getOwnPropertyNames(n.patternProperties)[0]}function Uw(n){let r=Ti(n);return r===mo?mt():r===_o?vr():mt({pattern:r})}function vi(n){return n.patternProperties[Ti(n)]}var xw=d(()=>{Z();nn();dr();Io();Gr();Pc();Zn();pt();Xa();zt();wn()});var Ia=d(()=>{xw()});function y3(n,r){return r.parameters=Za(n,r.parameters),r.returns=wt(n,r.returns),r}function nA(n,r){return r.parameters=Za(n,r.parameters),r.returns=wt(n,r.returns),r}function rA(n,r){return r.allOf=Za(n,r.allOf),r}function tA(n,r){return r.anyOf=Za(n,r.anyOf),r}function oA(n,r){if(jn(r.items))return r;return r.items=Za(n,r.items),r}function cA(n,r){return r.items=wt(n,r.items),r}function aA(n,r){return r.items=wt(n,r.items),r}function eA(n,r){return r.items=wt(n,r.items),r}function iA(n,r){return r.item=wt(n,r.item),r}function sA(n,r){let t=bA(n,r.properties);return{...r,...Hn(t)}}function lA(n,r){let t=wt(n,Uw(r)),o=wt(n,vi(r)),c=Ki(t,o);return{...r,...c}}function fA(n,r){return r.index in n?n[r.index]:Ro()}function dA(n,r){let t=Yc(r),o=Mr(r),c=wt(n,r);return t&&o?Fi(c):t&&!o?zr(c):!t&&o?mr(c):c}function bA(n,r){return globalThis.Object.getOwnPropertyNames(r).reduce((t,o)=>{return{...t,[o]:dA(n,r[o])}},{})}function Za(n,r){return r.map((t)=>wt(n,t))}function wt(n,r){return bt(r)?y3(n,r):gt(r)?nA(n,r):Cn(r)?rA(n,r):gn(r)?tA(n,r):Qr(r)?oA(n,r):ft(r)?cA(n,r):Oo(r)?aA(n,r):jo(r)?eA(n,r):Ko(r)?iA(n,r):Kn(r)?sA(n,r):To(r)?lA(n,r):Hf(r)?fA(n,r):r}function Ww(n,r){return wt(r,Wc(n))}var Yw=d(()=>{ui();Oc();ji();yo();Tt();Gr();Ia();wn()});var S0=d(()=>{Yw()});function Jw(n){return M({[L]:"Integer",type:"integer"},n)}var Xw=d(()=>{Z();nn()});var E0=d(()=>{Xw()});function gA(n,r,t){return{[n]:ht(kn(n),r,Yn(t))}}function uA(n,r,t){return n.reduce((c,a)=>{return{...c,...gA(a,r,t)}},{})}function _A(n,r,t){return uA(n.keys,r,t)}function Vw(n,r,t){let o=_A(n,r,t);return hn(o)}var M0=d(()=>{or();tc();Dr();Er()});function mA(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toLowerCase(),t].join("")}function wA(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toUpperCase(),t].join("")}function hA(n){return n.toUpperCase()}function $A(n){return n.toLowerCase()}function kA(n,r,t){let o=Lc(n.pattern);if(!po(o))return{...n,pattern:Cw(n.pattern,r)};let e=[...Na(o)].map((l)=>kn(l)),i=Lw(e,r),s=An(i);return Si([s],t)}function Cw(n,r){return typeof n==="string"?r==="Uncapitalize"?mA(n):r==="Capitalize"?wA(n):r==="Uppercase"?hA(n):r==="Lowercase"?$A(n):n:n.toString()}function Lw(n,r){return n.map((t)=>ht(t,r))}function ht(n,r,t={}){return Cr(n)?Vw(n,r,t):Lr(n)?kA(n,r,t):gn(n)?An(Lw(n.anyOf,r),t):Vr(n)?kn(Cw(n.const,r),t):M(n,t)}var tc=d(()=>{Z();pt();M0();Dr();Zn();wn()});function Qw(n,r={}){return ht(n,"Capitalize",r)}var Pw=d(()=>{tc()});function Gw(n,r={}){return ht(n,"Lowercase",r)}var qw=d(()=>{tc()});function Nw(n,r={}){return ht(n,"Uncapitalize",r)}var Ow=d(()=>{tc()});function Fw(n,r={}){return ht(n,"Uppercase",r)}var jw=d(()=>{tc()});var D0=d(()=>{Pw();M0();tc();qw();Ow();jw()});function RA(n,r,t){let o={};for(let c of globalThis.Object.getOwnPropertyNames(n))o[c]=So(n[c],r,Yn(t));return o}function AA(n,r,t){return RA(n.properties,r,t)}function Kw(n,r,t){let o=AA(n,r,t);return hn(o)}var H0=d(()=>{or();pi();Er()});function SA(n,r){return n.map((t)=>z0(t,r))}function EA(n,r){return n.map((t)=>z0(t,r))}function MA(n,r){let{[r]:t,...o}=n;return o}function DA(n,r){return r.reduce((t,o)=>MA(t,o),n)}function HA(n,r,t){let o=Ln(n,[In,"$id","required","properties"]),c=DA(t,r);return Hn(c,o)}function zA(n){let r=n.reduce((t,o)=>mi(o)?[...t,kn(o)]:t,[]);return An(r)}function z0(n,r){return Cn(n)?wr(SA(n.allOf,r)):gn(n)?An(EA(n.anyOf,r)):Kn(n)?HA(n,r,n.properties):Hn({})}function So(n,r,t){let o=Fn(r)?zA(r):r,c=Pr(r)?Hr(r):r,a=Pn(n),e=Pn(r);return Jn(n)?Kw(n,c,t):Cr(r)?Tw(n,r,t):a&&e?Wn("Omit",[n,o],t):!a&&e?Wn("Omit",[n,o],t):a&&!e?Wn("Omit",[n,o],t):M({...z0(n,c),...t})}var pi=d(()=>{Z();Ba();ho();Dr();zt();pr();Zn();Gr();B0();H0();wn()});function BA(n,r,t){return{[r]:So(n,[r],Yn(t))}}function UA(n,r,t){return r.reduce((o,c)=>{return{...o,...BA(n,c,t)}},{})}function xA(n,r,t){return UA(n,r.keys,t)}function Tw(n,r,t){let o=xA(n,r,t);return hn(o)}var B0=d(()=>{or();pi();Er()});var Ii=d(()=>{B0();H0();pi()});function WA(n,r,t){let o={};for(let c of globalThis.Object.getOwnPropertyNames(n))o[c]=Eo(n[c],r,Yn(t));return o}function YA(n,r,t){return WA(n.properties,r,t)}function vw(n,r,t){let o=YA(n,r,t);return hn(o)}var U0=d(()=>{or();Zi();Er()});function JA(n,r){return n.map((t)=>x0(t,r))}function XA(n,r){return n.map((t)=>x0(t,r))}function VA(n,r){let t={};for(let o of r)if(o in n)t[o]=n[o];return t}function CA(n,r,t){let o=Ln(n,[In,"$id","required","properties"]),c=VA(t,r);return Hn(c,o)}function LA(n){let r=n.reduce((t,o)=>mi(o)?[...t,kn(o)]:t,[]);return An(r)}function x0(n,r){return Cn(n)?wr(JA(n.allOf,r)):gn(n)?An(XA(n.anyOf,r)):Kn(n)?CA(n,r,n.properties):Hn({})}function Eo(n,r,t){let o=Fn(r)?LA(r):r,c=Pr(r)?Hr(r):r,a=Pn(n),e=Pn(r);return Jn(n)?vw(n,c,t):Cr(r)?pw(n,r,t):a&&e?Wn("Pick",[n,o],t):!a&&e?Wn("Pick",[n,o],t):a&&!e?Wn("Pick",[n,o],t):M({...x0(n,c),...t})}var Zi=d(()=>{Z();ho();pr();Dr();Gr();Zn();zt();Ba();wn();W0();U0()});function QA(n,r,t){return{[r]:Eo(n,[r],Yn(t))}}function PA(n,r,t){return r.reduce((o,c)=>{return{...o,...QA(n,c,t)}},{})}function GA(n,r,t){return PA(n,r.keys,t)}function pw(n,r,t){let o=GA(n,r,t);return hn(o)}var W0=d(()=>{or();Zi();Er()});var yi=d(()=>{W0();U0();Zi()});function qA(n,r){return Wn("Partial",[Wn(n,r)])}function NA(n){return Wn("Partial",[Bt(n)])}function OA(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=mr(n[t]);return r}function FA(n,r){let t=Ln(n,[In,"$id","required","properties"]),o=OA(r);return Hn(o,t)}function Iw(n){return n.map((r)=>Zw(r))}function Zw(n){return dt(n)?qA(n.target,n.parameters):Pn(n)?NA(n.$ref):Cn(n)?wr(Iw(n.allOf)):gn(n)?An(Iw(n.anyOf)):Kn(n)?FA(n,n.properties):Fo(n)?n:Ot(n)?n:ut(n)?n:Vr(n)?n:Ua(n)?n:_t(n)?n:Ft(n)?n:xa(n)?n:Wa(n)?n:Hn({})}function vc(n,r){if(Jn(n))return yw(n,r);else return M({...Zw(n),...r})}var Y0=d(()=>{Z();ho();Tt();Gr();pr();Zn();nc();Kt();nn();J0();wn()});function jA(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=vc(n[o],Yn(r));return t}function KA(n,r){return jA(n.properties,r)}function yw(n,r){let t=KA(n,r);return hn(t)}var J0=d(()=>{or();Y0();Er()});var ns=d(()=>{J0();Y0()});function TA(n,r){return Wn("Required",[Wn(n,r)])}function vA(n){return Wn("Required",[Bt(n)])}function pA(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Ln(n[t],[fr]);return r}function IA(n,r){let t=Ln(n,[In,"$id","required","properties"]),o=pA(r);return Hn(o,t)}function n1(n){return n.map((r)=>r1(r))}function r1(n){return dt(n)?TA(n.target,n.parameters):Pn(n)?vA(n.$ref):Cn(n)?wr(n1(n.allOf)):gn(n)?An(n1(n.anyOf)):Kn(n)?IA(n,n.properties):Fo(n)?n:Ot(n)?n:ut(n)?n:Vr(n)?n:Ua(n)?n:_t(n)?n:Ft(n)?n:xa(n)?n:Wa(n)?n:Hn({})}function pc(n,r){if(Jn(n))return t1(n,r);else return M({...r1(n),...r})}var X0=d(()=>{Z();ho();Gr();pr();Zn();nc();nn();Kt();V0();wn()});function ZA(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=pc(n[o],r);return t}function yA(n,r){return ZA(n.properties,r)}function t1(n,r){let t=yA(n,r);return hn(t)}var V0=d(()=>{or();X0()});var rs=d(()=>{V0();X0()});function n4(n,r){return r.map((t)=>{return Pn(t)?C0(n,t.$ref):qr(n,t)})}function C0(n,r){return r in n?Pn(n[r])?C0(n,n[r].$ref):qr(n,n[r]):un()}function r4(n){return qc(n[0])}function t4(n){return $o(n[0],n[1])}function o4(n){return Nc(n[0])}function c4(n){return vc(n[0])}function a4(n){return So(n[0],n[1])}function e4(n){return Eo(n[0],n[1])}function i4(n){return pc(n[0])}function s4(n,r,t){let o=n4(n,t);return r==="Awaited"?r4(o):r==="Index"?t4(o):r==="KeyOf"?o4(o):r==="Partial"?c4(o):r==="Omit"?a4(o):r==="Pick"?e4(o):r==="Required"?i4(o):un()}function l4(n,r){return Jc(qr(n,r))}function f4(n,r){return Xc(qr(n,r))}function d4(n,r,t){return Vc(ya(n,r),qr(n,t))}function b4(n,r,t){return Dt(ya(n,r),qr(n,t))}function g4(n,r){return wr(ya(n,r))}function u4(n,r){return Gc(qr(n,r))}function _4(n,r){return Hn(globalThis.Object.keys(r).reduce((t,o)=>{return{...t,[o]:qr(n,r[o])}},{}))}function m4(n,r){let[t,o]=[qr(n,vi(r)),Ti(r)],c=Wc(r);return c.patternProperties[o]=t,c}function w4(n,r){return Pn(r)?{...C0(n,r.$ref),[In]:r[In]}:r}function h4(n,r){return Ir(ya(n,r))}function $4(n,r){return An(ya(n,r))}function ya(n,r){return r.map((t)=>qr(n,t))}function qr(n,r){return Mr(r)?M(qr(n,Ln(r,[fr])),r):Yc(r)?M(qr(n,Ln(r,[lt])),r):uo(r)?M(w4(n,r),r):ft(r)?M(l4(n,r.items),r):Oo(r)?M(f4(n,r.items),r):dt(r)?M(s4(n,r.target,r.parameters)):bt(r)?M(d4(n,r.parameters,r.returns),r):gt(r)?M(b4(n,r.parameters,r.returns),r):Cn(r)?M(g4(n,r.allOf),r):jo(r)?M(u4(n,r.items),r):Kn(r)?M(_4(n,r.properties),r):To(r)?M(m4(n,r)):Qr(r)?M(h4(n,r.items||[]),r):gn(r)?M($4(n,r.anyOf),r):r}function k4(n,r){return r in n?qr(n,n[r]):un()}function o1(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:k4(n,t)}},{})}var c1=d(()=>{Nt();Mf();Kt();La();zi();Qa();Pa();zt();vo();pr();Fa();va();Gr();Ii();yi();dr();ns();Ia();rs();ko();Zn();nn();wn()});class a1{constructor(n){let r=o1(n),t=this.WithIdentifiers(r);this.$defs=t}Import(n,r){let t={...this.$defs,[n]:M(this.$defs[n],r)};return M({[L]:"Import",$defs:t,$ref:n})}WithIdentifiers(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:{...n[t],$id:t}}},{})}}function e1(n){return new a1(n)}var i1=d(()=>{Nt();nn();c1()});var L0=d(()=>{i1()});function s1(n,r){return M({[L]:"Not",not:n},r)}var l1=d(()=>{Z();nn()});var Q0=d(()=>{l1()});function f1(n,r){return gt(n)?Ir(n.parameters,r):un()}var d1=d(()=>{ko();dr();wn()});var P0=d(()=>{d1()});function b1(n,r={}){if(jn(r.$id))r.$id=`T${R4++}`;let t=Wc(n({[L]:"This",$ref:`${r.$id}`}));return t.$id=r.$id,M({[Tr]:"Recursive",...t},r)}var R4=0;var g1=d(()=>{ui();Z();nn()});var G0=d(()=>{g1()});function u1(n,r){let t=Un(n)?new globalThis.RegExp(n):n;return M({[L]:"RegExp",type:"RegExp",source:t.source,flags:t.flags},r)}var _1=d(()=>{Z();nn()});var q0=d(()=>{_1()});function A4(n){return Cn(n)?n.allOf:gn(n)?n.anyOf:Qr(n)?n.items??[]:[]}function m1(n){return A4(n)}var w1=d(()=>{wn()});var N0=d(()=>{w1()});function h1(n,r){return gt(n)?M(n.returns,r):un(r)}var $1=d(()=>{Z();dr();wn()});var O0=d(()=>{$1()});var k1=()=>{};var R1=()=>{};var A1=d(()=>{k1();R1()});var S1=()=>{};var E1=d(()=>{S1()});class M1{constructor(n){this.schema=n}Decode(n){return new D1(this.schema,n)}}class D1{constructor(n,r){this.schema=n,this.decode=r}EncodeTransform(n,r){let c={Encode:(a)=>r[In].Encode(n(a)),Decode:(a)=>this.decode(r[In].Decode(a))};return{...r,[In]:c}}EncodeSchema(n,r){let t={Decode:this.decode,Encode:n};return{...r,[In]:t}}Encode(n){return uo(this.schema)?this.EncodeTransform(n,this.schema):this.EncodeSchema(n,this.schema)}}function H1(n){return new M1(n)}var z1=d(()=>{nn();wn()});var F0=d(()=>{z1()});function B1(n={}){return M({[L]:n[L]??"Unsafe"},n)}var U1=d(()=>{Z();nn()});var j0=d(()=>{U1()});function x1(n){return M({[L]:"Void",type:"void"},n)}var W1=d(()=>{Z();nn()});var K0=d(()=>{W1()});var T0={};Zt(T0,{Void:()=>x1,Uppercase:()=>Fw,Unsafe:()=>B1,Unknown:()=>Ro,Union:()=>An,Undefined:()=>Xi,Uncapitalize:()=>Nw,Uint8Array:()=>Ci,Tuple:()=>Ir,Transform:()=>H1,TemplateLiteral:()=>Si,Symbol:()=>Yi,String:()=>mt,ReturnType:()=>h1,Rest:()=>m1,Required:()=>pc,RegExp:()=>u1,Ref:()=>Bt,Recursive:()=>b1,Record:()=>Ki,ReadonlyOptional:()=>Fi,Readonly:()=>zr,Promise:()=>Di,Pick:()=>Eo,Partial:()=>vc,Parameters:()=>f1,Optional:()=>mr,Omit:()=>So,Object:()=>Hn,Number:()=>vr,Null:()=>xi,Not:()=>s1,Never:()=>un,Module:()=>e1,Mapped:()=>Xm,Lowercase:()=>Gw,Literal:()=>kn,KeyOf:()=>Nc,Iterator:()=>Gc,Intersect:()=>wr,Integer:()=>Jw,Instantiate:()=>Ww,InstanceType:()=>Hw,Index:()=>$o,Function:()=>Dt,Extract:()=>Tc,Extends:()=>jc,Exclude:()=>Kc,Enum:()=>ew,Date:()=>Bi,ConstructorParameters:()=>cw,Constructor:()=>Vc,Const:()=>tw,Composite:()=>Tm,Capitalize:()=>Qw,Boolean:()=>Ri,BigInt:()=>Qc,Awaited:()=>qc,AsyncIterator:()=>Xc,Array:()=>Jc,Argument:()=>I_,Any:()=>wo});var Y1=d(()=>{Ca();Yf();La();Qa();zi();Oa();Ai();t0();c0();Pa();a0();Ui();e0();w0();pa();k0();vo();zt();R0();S0();E0();pr();D0();Fa();va();Dr();or();L0();dr();Q0();Wi();Io();Gr();Ii();Tt();P0();ns();yi();Hi();yo();ji();Ia();G0();nc();q0();rs();N0();O0();Pc();Ji();pt();F0();ko();Li();Vi();Zn();Oc();j0();K0()});var rr;var J1=d(()=>{Y1();rr=T0});var X1=d(()=>{Mf();Nt();Mt();Wf();L_();Xa();O_();Va();nn();Ca();La();Yf();Qa();zi();Oa();Ai();t0();c0();Pa();a0();Ui();e0();w0();pa();k0();vo();zt();R0();S0();E0();pr();Fa();D0();va();Dr();L0();or();dr();Q0();Wi();Io();Gr();Ii();Tt();P0();ns();yi();Hi();yo();ji();Ia();G0();nc();q0();rs();N0();O0();A1();E1();Pc();Ji();pt();F0();ko();Li();Vi();Zn();Oc();j0();K0();J1()});var v0,p0,Pq,Gq;var I0=d(()=>{X1();v0=rr.Object({email:rr.String({format:"email"})}),p0=rr.Object({token:rr.String()}),Pq=rr.Object({success:rr.Boolean(),message:rr.Optional(rr.String())}),Gq=rr.Object({success:rr.Boolean(),message:rr.Optional(rr.String()),data:rr.Optional(rr.Object({user:rr.Object({id:rr.String(),email:rr.String()}),accessToken:rr.String(),refreshToken:rr.String()}))})});import{eq as Z0}from"drizzle-orm";import{Elysia as S4}from"elysia";function ts(n,r,t,o,c,a,e,i,s,l){let{db:f,logger:b,usersTable:g}=n,h=r.route||"/auth/magic-link",k=r.verifyRoute||"/auth/magic-link/verify",$=r.expiresIn||"15m",m=r.redirectUrl||"",R=new S4;if(!r.enabled)return R;return R.post(h,async(X)=>{if(!f||!g)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return b.error("[AUTH] Magic link requested but email service not available"),{success:!1,message:"Email service not available"};let{email:C}=X.body,Q=(await f.select().from(g).where(Z0(g.email,C)).limit(1))[0];if(!Q)return b.info("[AUTH] Magic link requested for non-existent email",{email:C}),{success:!0,message:"If an account exists, a magic link has been sent"};if(Q.isLocked)return b.warn("[AUTH] Magic link requested for locked account",{email:C}),{success:!0,message:"If an account exists, a magic link has been sent"};let W=oi(),S=Pt(W),z=new Date(Date.now()+ci($));await e({userId:Q.id,email:C,tokenHash:S,expiresAt:z});let w=m?`${m}?token=${W}`:`${k}?token=${W}`,u=await t.sendMagicLinkEmail(C,w,l);if(!u.success)return b.error("[AUTH] Failed to send magic link email",{email:C,error:u.error}),{success:!1,message:"Failed to send email"};return b.info("[AUTH] Magic link sent",{email:C,userId:Q.id}),{success:!0,message:"If an account exists, a magic link has been sent"}},{body:v0,detail:{tags:["Authentication"],summary:"Request Magic Link",description:"Send a magic link to the user's email for passwordless login"}}),R.get(k,async(X)=>{if(!f||!g)return{success:!1,message:"Database not configured"};let C=X.query.token;if(!C)return{success:!1,message:"Token is required"};let E=Pt(C),Q=await i(E);if(!Q)return b.warn("[AUTH] Invalid magic link token"),{success:!1,message:"Invalid or expired token"};if(new Date>Q.expiresAt)return await s(E),b.warn("[AUTH] Expired magic link token",{email:Q.email}),{success:!1,message:"Invalid or expired token"};let S=(await f.select().from(g).where(Z0(g.id,Q.userId)).limit(1))[0];if(!S)return await s(E),{success:!1,message:"User not found"};await s(E),await f.update(g).set({lastLoginAt:new Date,loginCount:(S.loginCount||0)+1,emailVerified:!0}).where(Z0(g.id,S.id));let z=X.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||X.request.headers.get("x-real-ip")?.trim()||"unknown",w=X.request.headers.get("user-agent")||"",u=o(S.id),B=c(S.id),P=await a({userId:S.id,deviceInfo:{ipAddress:z,userAgent:w,deviceType:"unknown"},loginMethod:"magic_link"});return b.info("[AUTH] Magic link login successful",{userId:S.id,email:S.email}),X.set.headers["x-session-id"]=P,{success:!0,data:{user:{id:S.id,email:S.email},accessToken:u,refreshToken:B}}},{query:p0,detail:{tags:["Authentication"],summary:"Verify Magic Link",description:"Verify magic link token and login user"}}),R}var y0=d(()=>{I0();ai();I0()});import{eq as Ic}from"drizzle-orm";import{Elysia as E4}from"elysia";function os(n,r,t,o,c){let{db:a,logger:e,usersTable:i}=n,s=r.route||"/auth/me",l=new E4;if(!r.enabled)return l;return l.get(s,async(f)=>{if(!a||!i)return{success:!1,message:"Database not configured"};let b=f.request.headers.get("x-user-id");if(!b)return f.set.status=401,{success:!1,message:"Unauthorized"};let h=(await a.select().from(i).where(Ic(i.id,b)).limit(1))[0];if(!h)return f.set.status=404,{success:!1,message:"User not found"};let{password:k,...$}=h,m=null,R=[],X=[],C=[],E=[];if(r.includeProfile&&t){let W=t.profiles;if(W&&a)m=(await a.select().from(W).where(Ic(W.userId,b)).limit(1))[0]||null}if(r.includeAddresses&&t){let W=t.addresses;if(W&&a)R=await a.select().from(W).where(Ic(W.ownerId,b))}if(r.includePhones&&t){let W=t.phones;if(W&&a)X=await a.select().from(W).where(Ic(W.ownerId,b))}if(r.includeFiles&&t){let W=t.files;if(W&&a)C=await a.select().from(W).where(Ic(W.uploadedBy,b))}if(r.includeRoles&&t){let{userRoles:W,roles:S}=t;if(W&&S&&a){let w=(await a.select().from(W).where(Ic(W.userId,b))).map((u)=>u.roleId);if(w.length>0){let{inArray:u}=await import("drizzle-orm");E=await a.select().from(S).where(u(S.id,w))}}}return e.info("[AUTH] Me endpoint accessed",{userId:b}),JSON.parse(JSON.stringify({success:!0,data:{user:$,profile:m,addresses:R,phones:X,files:C,roles:E}},(W,S)=>typeof S==="bigint"?Number(S):S))},{detail:{tags:["Authentication"],summary:"Get current user",description:"Get the currently authenticated user with profile, addresses, phones and files"}}),l}var nd=()=>{};import{t as Mo}from"elysia";var rd,M4;var td=d(()=>{rd=Mo.Object({currentPassword:Mo.String({minLength:1}),newPassword:Mo.String({minLength:8}),confirmPassword:Mo.String({minLength:8})}),M4=Mo.Object({success:Mo.Boolean(),message:Mo.Optional(Mo.String())})});function V1(n,r){return n===r}import{eq as C1}from"drizzle-orm";import{Elysia as D4}from"elysia";function cs(n,r){let{db:t,logger:o,usersTable:c}=n,a=r.route||"/auth/password-change",e=new D4;if(!r.enabled)return e;return e.post(a,async(i)=>{if(!t||!c)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:b}=i.body;if(!V1(f,b))return i.set.status=422,{success:!1,message:"New passwords do not match"};let h=(await t.select().from(c).where(C1(c.id,s)).limit(1))[0];if(!h)return i.set.status=404,{success:!1,message:"User not found"};if(!await si(l,h.password))return o.warn("[AUTH] Password change failed - invalid current password",{userId:s}),i.set.status=400,{success:!1,message:"Current password is incorrect"};let $=await bo(f);return await t.update(c).set({password:$,updatedAt:new Date}).where(C1(c.id,s)),o.info("[AUTH] Password change successful",{userId:s}),{success:!0,message:"Password changed successfully"}},{body:rd,detail:{tags:["Authentication"],summary:"Change Password",description:"Change password for authenticated user"}}),e}var od=d(()=>{mf();xc();td();td()});import{t as Ut}from"elysia";var cd,ad,H4;var ed=d(()=>{cd=Ut.Object({email:Ut.String({format:"email"})}),ad=Ut.Object({token:Ut.String(),newPassword:Ut.String({minLength:8}),confirmPassword:Ut.String({minLength:8})}),H4=Ut.Object({success:Ut.Boolean(),message:Ut.Optional(Ut.String())})});import{randomBytes as z4}from"crypto";function L1(){return z4(32).toString("hex")}function Q1(n){return new Date>n}var P1=()=>{};import{Elysia as B4}from"elysia";function as(n,r,t,o,c,a){let{db:e,logger:i,usersTable:s}=n,l=r.route||"/auth/password-reset",f=new B4;if(!r.enabled)return f;return f.post(`${l}/request`,async(b)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let{email:g}=b.body,{eq:h}=await import("drizzle-orm"),$=(await e.select().from(s).where(h(s.email,g)).limit(1))[0];if(!$)return{success:!0,message:"If email exists, reset link will be sent"};let m=L1(),R=new Date(Date.now()+3600000);if(await t($.id,m,R),a)try{await a(g,m),i.info("[AUTH] Password reset email sent",{email:g})}catch(X){i.error("[AUTH] Failed to send password reset email",{email:g,error:X})}else i.warn("[AUTH] sendResetEmail not configured - email not sent",{email:g});return i.info("[AUTH] Password reset requested",{userId:$.id,email:g}),{success:!0,message:"If email exists, reset link will be sent"}},{body:cd,detail:{tags:["Authentication"],summary:"Request Password Reset",description:"Request a password reset email"}}),f.post(`${l}/confirm`,async(b)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let{token:g,newPassword:h,confirmPassword:k}=b.body;if(h!==k)return{success:!1,message:"Passwords do not match"};let $=await o(g);if(!$)return{success:!1,message:"Invalid or expired reset token"};if(Q1($.expiresAt))return await c(g),{success:!1,message:"Reset token has expired"};let m=await bo(h),{eq:R}=await import("drizzle-orm");return await e.update(s).set({password:m}).where(R(s.id,$.userId)),await c(g),i.info("[AUTH] Password reset successful",{userId:$.userId}),{success:!0,message:"Password has been reset"}},{body:ad,detail:{tags:["Authentication"],summary:"Confirm Password Reset",description:"Reset password with token"}}),f}var id=d(()=>{xc();ed();P1();ed()});import{t as It}from"elysia";var sd,U4;var ld=d(()=>{sd=It.Object({newPassword:It.String({minLength:8}),userId:It.Optional(It.String()),token:It.Optional(It.String())}),U4=It.Object({success:It.Boolean(),message:It.String()})});import{eq as G1}from"drizzle-orm";import{Elysia as x4}from"elysia";function es(n,r,t,o){let{db:c,logger:a,usersTable:e}=n,i=r.route||"/auth/password-set",s=new x4;if(!r.enabled)return s;return s.post(i,async(l)=>{if(a.info("[AUTH] Password set request received"),!c||!e)return a.error("[AUTH] Password set failed - database not configured"),{success:!1,message:"Database not configured"};let{newPassword:f,userId:b,token:g}=l.body,h=b;if(g&&t&&o){let X=Pt(g),C=await t(X);if(!C)return a.warn("[AUTH] Password set failed - invalid token"),{success:!1,message:"Invalid or expired token"};if(new Date>C.expiresAt)return await o(X),a.warn("[AUTH] Password set failed - expired token",{email:C.email}),{success:!1,message:"Invalid or expired token"};h=C.userId,a.info("[AUTH] Password set - userId resolved from token",{userId:h,email:C.email})}if(!h)return a.warn("[AUTH] Password set failed - no userId in payload or token"),{success:!1,message:"User ID or token required"};let $=(await c.select().from(e).where(G1(e.id,h)).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:h}),{success:!1,message:"Password already set. Use password change instead."};let m=await bo(f);a.info("[AUTH] Password set - updating user with verifiedAt",{userId:h});let R=await c.update(e).set({password:m,verifiedAt:new Date,updatedAt:new Date}).where(G1(e.id,h));if(a.info("[AUTH] Password set successful for invited user",{userId:h,updateResult:R}),g&&o){let X=Pt(g);await o(X),a.info("[AUTH] Invite token consumed after password set",{userId:h})}return{success:!0,message:"Password set successfully"}},{body:sd,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 fd=d(()=>{ai();xc();ld();ld()});function dd(n){let r=n.match(/^(\d+)([smhd])$/);if(!r)return 900;let t=r[1],o=r[2];if(!t||!o)return 900;let c=parseInt(t,10);switch(o){case"s":return c;case"m":return c*60;case"h":return c*3600;case"d":return c*86400;default:return 900}}import{t as oc}from"elysia";var W4;var q1=d(()=>{W4=oc.Object({success:oc.Boolean(),message:oc.Optional(oc.String()),data:oc.Optional(oc.Object({accessToken:oc.String()}))})});import{Elysia as Y4}from"elysia";function is(n,r,t,o,c,a,e){let{logger:i,authentication:s}=n,l=r.route||"/auth/refresh",f=new Y4;if(!r.enabled)return f;return f.post(l,async(b)=>{let g=s?.refreshToken?.name||"refresh_token",h=s?.accessToken?.name||"access_token",k=b.request.headers.get("x-refresh-token");if(!k){let F=b.request.headers.get("cookie");if(F)k=F.split(";").reduce((Y,U)=>{let[D,x]=U.trim().split("=");if(D&&x)Y[D]=x;return Y},{})[g]||null}if(!k)return b.set.status=401,{success:!1,message:"Refresh token required"};let $=t(k);if(!$.valid||!$.payload)return i.warn("[AUTH] Refresh failed - invalid token"),b.set.status=401,{success:!1,message:"Invalid refresh token"};let m=$.payload.sub,R=o(m),X=c?c(m):null,C=a?.accessToken?.setHeadersEnabled??!0,E=a?.accessToken?.returnJson??!0,Q=a?.refreshToken?.setHeadersEnabled??!0,W=a?.refreshToken?.returnJson??!1,S=s?.accessToken?.expiresIn||"15m",z=Math.max(0,dd(S)-(e??0)),w=s?.refreshToken?.expiresIn||"7d",u=dd(w),B=new Headers;if(B.set("Content-Type","application/json"),C)B.append("Set-Cookie",`${h}=${R}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${z}`);if(X&&Q)B.append("Set-Cookie",`${g}=${X}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${u}`);i.info("[AUTH] Token refresh successful",{userId:m,rotatedRefreshToken:!!X});let P={};if(E)P.accessToken=R;if(X&&W)P.refreshToken=X;let J=JSON.stringify({success:!0,data:P});return new Response(J,{status:200,headers:B})},{detail:{tags:["Authentication"],summary:"Refresh Token",description:"Get new access token using refresh token"}}),f}var bd=d(()=>{q1()});import{t as Ur}from"elysia";var gd,J4;var ud=d(()=>{gd=Ur.Object({email:Ur.String({format:"email"}),password:Ur.String({minLength:8}),confirmPassword:Ur.Optional(Ur.String({minLength:8}))}),J4=Ur.Object({success:Ur.Boolean(),message:Ur.Optional(Ur.String()),data:Ur.Optional(Ur.Object({user:Ur.Object({id:Ur.String(),email:Ur.String()})}))})});import{eq as X4}from"drizzle-orm";import{Elysia as V4}from"elysia";function ss(n,r,t,o,c,a,e,i,s,l){let{db:f,logger:b,usersTable:g}=n,h=r.route||"/auth/register",k={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"strict",path:e?.path||"/"},$=new V4;if(!r.enabled)return $;return $.post(h,async(m)=>{if(!f||!g)return m.set.status=500,{success:!1,message:"Database not configured"};let{email:R,password:X,confirmPassword:C}=m.body;if(C&&X!==C)return m.set.status=400,{success:!1,message:"Passwords do not match"};let E=Xu(X);if(!E.valid)return m.set.status=400,{success:!1,message:"Password too weak",errors:E.errors};if((await f.select().from(g).where(X4(g.email,R)).limit(1)).length>0)return b.warn("[AUTH] Registration failed - email exists",{email:R}),m.set.status=409,{success:!1,message:"Email already registered"};let W=await bo(X),S=r.emailVerification?.enabled&&s?.isAvailable(),z=S?ye():null,w=r.emailVerification?.tokenExpiresIn||"24h",u=S?new Date(Date.now()+Uc(w)):null,B={email:R,password:W};if(S&&z)B.emailVerificationToken=z,B.emailVerificationTokenExpiresAt=u,B.emailVerificationSentAt=new Date,B.emailVerificationAttempts=1;let J=(await f.insert(g).values(B).returning())[0];if(b.info("[AUTH] Registration successful",{userId:J.id,email:R,emailVerificationEnabled:S}),S&&s&&z){let I=`${(r.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${z}`;s.sendVerificationEmail(R,R.split("@")[0]||"User",I,l||"Nucleus").then((x)=>{if(x.success)b.info("[AUTH] Verification email sent",{email:R});else b.error("[AUTH] Failed to send verification email",{email:R,error:x.error})}).catch((x)=>{b.error("[AUTH] Failed to send verification email",{email:R,error:x})});let Y=r.emailVerification?.resendCooldown||"60s",U=Uc(Y)/1000,D=r.emailVerification?.maxResendAttempts||3;return{success:!0,message:"Registration successful. Please check your email to verify your account.",data:{user:{id:J.id,email:J.email},emailVerificationRequired:!0,verification:{cooldownSeconds:U,canResendAt:new Date(Date.now()+U*1000).toISOString(),attemptsRemaining:D-1,maxAttempts:D}}}}if(t)t(R,R.split("@")[0]||"User").catch((F)=>{b.error("[AUTH] Failed to send welcome email",{email:R,error:F})});if(o&&c&&a){let F=m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||m.request.headers.get("x-real-ip")?.trim()||"unknown",I=m.request.headers.get("user-agent")||"",Y=o(J.id),U=c(J.id),D=await a({userId:J.id,deviceInfo:{ipAddress:F,userAgent:I},loginMethod:"register"}),x={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}},N=k.secure?"; Secure":"",j=`; Path=${k.path}; HttpOnly; SameSite=${k.sameSite}${N}`,K=[];if(x.accessToken.setHeadersEnabled)K.push(`${k.accessTokenName}=${Y}${j}; Max-Age=${k.accessTokenMaxAge}`);if(x.refreshToken.setHeadersEnabled)K.push(`${k.refreshTokenName}=${U}${j}; Max-Age=${k.refreshTokenMaxAge}`);if(x.sessionToken.setHeadersEnabled)K.push(`${k.sessionTokenName}=${D}${j}; Max-Age=${k.sessionTokenMaxAge}`);let q={user:{id:J.id,email:J.email}};if(x.accessToken.returnJson)q.accessToken=Y;if(x.refreshToken.returnJson)q.refreshToken=U;if(x.sessionToken.returnJson)q.sessionId=D;let tn=JSON.stringify({success:!0,data:q}),v=new Headers;v.set("Content-Type","application/json"),v.set("x-session-id",D);for(let dn of K)v.append("Set-Cookie",dn);return new Response(tn,{status:200,headers:v})}return{success:!0,data:{user:{id:J.id,email:J.email}}}},{body:gd,detail:{tags:["Authentication"],summary:"Register",description:"Register a new user account"}}),$}var _d=d(()=>{ud();xc();ud()});import{t as p}from"elysia";var N1,C4,md,wd,ON;var hd=d(()=>{N1=p.Object({id:p.String(),deviceName:p.Optional(p.String()),deviceType:p.Optional(p.String()),browserName:p.Optional(p.String()),browserVersion:p.Optional(p.String()),osName:p.Optional(p.String()),osVersion:p.Optional(p.String()),ipAddress:p.String(),locationCountry:p.Optional(p.String()),locationCity:p.Optional(p.String()),lastActivityAt:p.String(),createdAt:p.String(),isCurrent:p.Boolean(),loginMethod:p.Optional(p.String()),trustScore:p.Optional(p.Number())}),C4=p.Object({success:p.Boolean(),data:p.Optional(p.Object({sessions:p.Array(N1),currentSessionId:p.Optional(p.String()),totalCount:p.Number()})),message:p.Optional(p.String())}),md=p.Object({reason:p.Optional(p.String())}),wd=p.Object({excludeCurrent:p.Optional(p.Boolean()),reason:p.Optional(p.String())}),ON=p.Object({success:p.Boolean(),data:p.Optional(p.Object({recentActivity:p.Array(p.Object({sessionId:p.String(),action:p.String(),ipAddress:p.String(),timestamp:p.String(),deviceInfo:p.Optional(p.String())}))})),message:p.Optional(p.String())})});function ls(n){let r=(o,c)=>n[o]??n[c],t=(o,c)=>{let a=n[o]??n[c];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 O1=()=>{};import{and as Do,desc as F1,eq as Gn,isNull as j1}from"drizzle-orm";import{Elysia as L4}from"elysia";function fs(n,r,t){let{db:o,logger:c}=n,a=r.route||"/auth/sessions",e=new L4;if(!r.enabled||!t)return e;let i=t,s=(l)=>{let f=l.replace(/([A-Z])/g,"_$1").toLowerCase();return i[l]||i[f]};return e.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 b=l.request.headers.get("x-session-id"),g=await o.select().from(t).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0),j1(s("revokedAt")))).orderBy(F1(s("lastActivityAt"))),h=g.filter(($)=>{let m=$,R=(m.deviceFingerprint||"").toLowerCase(),X=m.ipAddress||"";return!((!R||R==="--"||R==="--unknown"||R.includes("bot/crawler")||R.includes("headless")||R.includes("unknown-unknown"))&&(X==="127.0.0.1"||X==="::1"||X==="localhost"||!X))}),k=h.map(($)=>{let m=$,R=ls(m);return R.isCurrent=m.id===b,R});return c.info("[AUTH] Sessions list retrieved",{userId:f,totalInDb:g.length,filteredCount:h.length,hiddenBotSessions:g.length-h.length}),{success:!0,data:{sessions:k,currentSessionId:b,totalCount:h.length}}},{detail:{tags:["Authentication"],summary:"List active sessions",description:"Get all active sessions for the current user"}}),e.get(`${a}/current`,async(l)=>{if(!o)return{success:!1,message:"Database not configured"};let f=l.request.headers.get("x-user-id"),b=l.request.headers.get("x-session-id");if(!f||!b)return{success:!1,message:"Authentication required"};let g=await o.select().from(t).where(Gn(s("id"),b)).limit(1);if(g.length===0)return{success:!1,message:"Session not found"};let h=g[0],k=ls(h);return k.isCurrent=!0,{success:!0,data:k}},{detail:{tags:["Authentication"],summary:"Get current session",description:"Get details of the current session"}}),e.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:b}=l.params,g=l.body,h=l.request.headers.get("x-session-id");if((await o.select().from(t).where(Do(Gn(s("id"),b),Gn(s("userId"),f))).limit(1)).length===0)return{success:!1,message:"Session not found"};let $=b===h;return await o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:$?"user_logout":g.reason||"user_revoked"}).where(Gn(s("id"),b)),c.info("[AUTH] Session revoked",{userId:f,sessionId:b,isCurrentSession:$,reason:g.reason||"user_revoked"}),{success:!0,message:$?"Logged out successfully":"Session revoked successfully"}},{body:md,detail:{tags:["Authentication"],summary:"Revoke session",description:"Revoke a specific session by ID"}}),e.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 b=l.body,g=l.request.headers.get("x-session-id"),h=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:b.reason||"user_revoked"}).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0)));if(b.excludeCurrent&&g){let{ne:k}=await import("drizzle-orm");h=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:b.reason||"user_revoked"}).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0),k(s("id"),g)))}return await h,c.info("[AUTH] All sessions revoked",{userId:f,excludeCurrent:b.excludeCurrent,reason:b.reason||"user_revoked"}),{success:!0,message:b.excludeCurrent?"All other sessions revoked successfully":"All sessions revoked successfully"}},{body:wd,detail:{tags:["Authentication"],summary:"Revoke all sessions",description:"Revoke all sessions for the current user (optionally exclude current)"}}),e.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:b,countDistinct:g}=await import("drizzle-orm"),h=await o.select({count:b()}).from(t).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0),j1(s("revokedAt")))),k=await o.select({count:g(s("deviceFingerprint"))}).from(t).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0))),$=await o.select({count:g(s("ipAddress"))}).from(t).where(Do(Gn(s("userId"),f),Gn(s("isActive"),!0)));return{success:!0,data:{activeSessions:h[0]?.count||0,uniqueDevices:k[0]?.count||0,uniqueIpAddresses:$[0]?.count||0}}},{detail:{tags:["Authentication"],summary:"Session statistics",description:"Get session statistics for the current user"}}),e.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 b=await o.select().from(t).where(Gn(s("approvalToken"),f)).limit(1);if(b.length===0)return{success:!1,message:"Invalid or expired approval token"};let g=b[0];if(g.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(Gn(s("id"),g.id)),c.info("[AUTH] Device approved",{sessionId:g.id,userId:g.userId}),{success:!0,message:"Device approved successfully"}},{detail:{tags:["Authentication"],summary:"Approve pending device",description:"Approve a pending device login request"}}),e.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 b=await o.select().from(t).where(Gn(s("approvalToken"),f)).limit(1);if(b.length===0)return{success:!1,message:"Invalid or expired approval token"};let g=b[0];if(g.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(Gn(s("id"),g.id)),c.info("[AUTH] Device rejected",{sessionId:g.id,userId:g.userId}),{success:!0,message:"Device rejected and blocked"}},{detail:{tags:["Authentication"],summary:"Reject pending device",description:"Reject a pending device login request"}}),e.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 b=await o.select().from(t).where(Do(Gn(s("userId"),f),Gn(s("approvalStatus"),"pending"))).orderBy(F1(s("createdAt")));return{success:!0,data:{sessions:b.map((h)=>{let k=h;return{...ls(k),approvalStatus:k.approval_status||k.approvalStatus,approvalToken:k.approval_token||k.approvalToken,approvalRequestedAt:k.approval_requested_at?.toISOString()||k.approvalRequestedAt?.toISOString()}}),totalCount:b.length}}},{detail:{tags:["Authentication"],summary:"List pending devices",description:"Get all pending device approval requests for the current user"}}),e}var $d=d(()=>{hd();O1();hd()});var T1={};Zt(T1,{createSessionsRoute:()=>fs,createRegisterRoute:()=>ss,createRefreshRoute:()=>is,createPasswordSetRoute:()=>es,createPasswordResetRoute:()=>as,createPasswordChangeRoute:()=>cs,createMeRoute:()=>os,createMagicLinkRoute:()=>ts,createLogoutRoute:()=>di,createLoginRoute:()=>li,createInviteRoute:()=>ii,createEmailVerificationRoutes:()=>ti,createAuthRoutes:()=>K1});function K1(n,r){let{authConfig:t,features:o,helpers:c}=r,a=t.authentication?.cookieMaxAgeBufferSeconds??0,e={accessTokenName:t.authentication?.accessToken?.name||"access_token",refreshTokenName:t.authentication?.refreshToken?.name||"refresh_token",sessionTokenName:t.authentication?.sessionToken?.name||"session_token",accessTokenMaxAge:Math.max(0,ot(t.authentication?.accessToken?.expiresIn||"15m")-a),refreshTokenMaxAge:ot(t.authentication?.refreshToken?.expiresIn||"7d"),sessionTokenMaxAge:ot(t.authentication?.sessionToken?.expiresIn||"30d")};if(t.logger.info("[AUTH] Cookie config created",{accessTokenMaxAge:e.accessTokenMaxAge,refreshTokenMaxAge:e.refreshTokenMaxAge,sessionTokenMaxAge:e.sessionTokenMaxAge,accessTokenExpiresIn:t.authentication?.accessToken?.expiresIn,sessionTokenExpiresIn:t.authentication?.sessionToken?.expiresIn}),o.login?.enabled){let i=li(t,o.login,c.signAccessToken,c.signRefreshToken,c.createSession,c.saveSessionToDb,e,r.tokenResponseConfig);n.use(i)}if(o.register?.enabled){let i=ss(t,o.register,c.sendWelcomeEmail,c.signAccessToken,c.signRefreshToken,c.createSession,e,r.tokenResponseConfig,r.emailService,r.appName);if(n.use(i),o.register.emailVerification?.enabled){let s=ti({authConfig:t,registerConfig:o.register,emailService:r.emailService,appName:r.appName});n.use(s)}}if(o.logout?.enabled){let i=di(t,o.logout,c.destroySession,c.revokeSessionInDb);n.use(i)}if(o.refresh?.enabled){let i=is(t,o.refresh,c.verifyRefreshToken,c.signAccessToken,c.signRefreshToken,r.tokenResponseConfig,a);n.use(i)}if(o.passwordReset?.enabled&&c.storeResetToken&&c.getResetToken&&c.deleteResetToken){let i=as(t,o.passwordReset,c.storeResetToken,c.getResetToken,c.deleteResetToken,c.sendResetEmail);n.use(i)}if(o.passwordChange?.enabled){let i=cs(t,o.passwordChange);n.use(i)}if(o.passwordSet?.enabled){let i=es(t,o.passwordSet,c.getMagicToken,c.deleteMagicToken);n.use(i)}if(o.sessions?.enabled&&r.sessionsTable){let i=fs(t,o.sessions,r.sessionsTable);n.use(i)}if(o.magicLink?.enabled&&r.emailService?.isAvailable()&&c.storeMagicToken&&c.getMagicToken&&c.deleteMagicToken){let i=ts(t,o.magicLink,r.emailService,c.signAccessToken,c.signRefreshToken,c.createSession,c.storeMagicToken,c.getMagicToken,c.deleteMagicToken,r.appName);n.use(i)}if(o.me?.enabled){let i=os(t,o.me,r.schemaTables||{},r.schemaRelations||{},r.databaseUrl);n.use(i)}if(o.invite?.enabled&&r.emailService?.isAvailable()&&c.storeMagicToken){let i=ii(t,o.invite,r.emailService,c.storeMagicToken,r.appName,c.getMagicToken);n.use(i)}if(o.captcha?.enabled&&r.captchaService){let i=Yu({captchaService:r.captchaService,logger:t.logger,basePath:o.captcha.route||"/auth/captcha"});n.use(i)}return n}var kd=d(()=>{Ne();Ju();bf();gf();hf();$f();y0();nd();od();id();fd();bd();_d();$d();bf();gf();hf();$f();y0();nd();od();id();fd();bd();_d();$d()});import{batch as gs,createStore as y1}from"h-state";import{useEffectEvent as n2}from"react";function r2(n){let r={};for(let t of Object.keys(n))r[t]={isPending:!1,data:null,error:null,code:null};return r}function t2(n,r){let{useStore:t}=y1(r2(n),{_callEndpoint:(o)=>async(c,a)=>{if(!o[c])return;gs(()=>{o[c].isPending=!0,o[c].error=null});try{let i=await r(c,a.payload);if(gs(()=>{if(o[c].isPending=!1,o[c].code=i.code??null,i.isSuccess&&i.data!==void 0)o[c].data=i.data,o[c].error=null;else o[c].error=i.errors??null}),i.isSuccess)a.onAfterHandle?.(i.data??i);else a.onErrorHandle?.(i.errors??{message:"Request failed"},i.code)}catch(i){gs(()=>{o[c].isPending=!1,o[c].error={message:i instanceof Error?i.message:"Unknown error"}}),a.onErrorHandle?.({message:i instanceof Error?i.message:"Unknown error"},null)}}});return function(){let c=t(),a=n2((i,s)=>{c._callEndpoint(i,s)}),e={};for(let i of Object.keys(n)){let s=(l)=>{a(i,l)};e[i]={state:c[i],start:s}}return e}}var Ed={$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"]}]}]};var us={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}]}};var c2=["profiles","addresses","phones","files","users","roles","claims","user_roles","role_claims","audit_logs"],a2=Ed.tables.filter((n)=>c2.includes(n.table_name));function ic(n){return n.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toUpperCase()}function e2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function _s(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 $t(n,r){let t=ic(n),o=ic(_s(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 ec(n,r){let t=ic(n);switch(r){case"POST":return`BULK_ADD_${t}`;case"PUT":return`BULK_UPDATE_${t}`;case"DELETE":return`BULK_DELETE_${t}`}}function yt(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 Md(n){let r={};for(let t of n.entities){let o=t.table_name,c=`/${o}`;if(!yt(t,"GET")){r[$t(o,"GET")]={method:"GET",path:c,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0};let a=ic(_s(o));r[`GET_${a}_BY_ID`]={method:"GET",path:`${c}/:id`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0},r[`GET_${ic(o)}_DISTINCT`]={method:"GET",path:`${c}/distinct/:field`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0}}if(!yt(t,"POST"))r[$t(o,"POST")]={method:"POST",path:c,isPublic:t.is_public?.POST??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"PUT"))r[$t(o,"PUT")]={method:"PUT",path:`${c}/:id`,isPublic:t.is_public?.PUT??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"PATCH"))r[$t(o,"PATCH")]={method:"PATCH",path:`${c}/:id`,isPublic:t.is_public?.PATCH??!1,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"DELETE"))r[$t(o,"DELETE")]={method:"DELETE",path:`${c}/:id`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0};if(t.bulk_endpoints_enabled){if(!yt(t,"POST"))r[ec(o,"POST")]={method:"POST",path:`${c}/bulk`,isPublic:t.is_public?.POST??!1,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"PUT"))r[ec(o,"PUT")]={method:"PUT",path:`${c}/bulk`,isPublic:t.is_public?.PUT??!1,_payload:void 0,_success:void 0,_error:void 0};if(!yt(t,"DELETE"))r[ec(o,"DELETE")]={method:"DELETE",path:`${c}/bulk`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0}}}return r}function Dd(n){let r={},t=n.authentication;if(!t?.enabled)return r;for(let[o,c]of Object.entries(us)){let a=t[o];if(!a?.enabled)continue;let e=a.route||c.defaultRoute,i=a.isPublic??c.defaultIsPublic;if("subEndpoints"in c&&c.subEndpoints)for(let s of c.subEndpoints){let l="routeKey"in s&&s.routeKey&&a[s.routeKey]?String(a[s.routeKey]):("defaultRoute"in s)&&s.defaultRoute?String(s.defaultRoute):`${e}${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 c)r[c.key]={method:c.method,path:e,isPublic:i,_payload:c._payload,_success:c._success,_error:c._error}}return r}function Hd(){let n={};for(let r of a2){let t=r.table_name,c=`/${e2(t)}`,a=t==="files";n[$t(t,"GET")]={method:"GET",path:c,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0};let e=ic(_s(t));if(n[`GET_${e}_BY_ID`]={method:"GET",path:`${c}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[$t(t,"POST")]={method:"POST",path:c,isPublic:!1,isFormData:a,_payload:void 0,_success:void 0,_error:void 0},n[$t(t,"PUT")]={method:"PUT",path:`${c}/:id`,isPublic:!1,isFormData:a,_payload:void 0,_success:void 0,_error:void 0},n[$t(t,"PATCH")]={method:"PATCH",path:`${c}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[$t(t,"DELETE")]={method:"DELETE",path:`${c}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.bulk_endpoints_enabled)n[ec(t,"POST")]={method:"POST",path:`${c}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[ec(t,"PUT")]={method:"PUT",path:`${c}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[ec(t,"DELETE")]={method:"DELETE",path:`${c}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0}}return n}function i2(n,r){let t=Md(n),o=Dd(n),c=Hd();return{...t,...o,...c,...r??{}}}Ms();import{randomUUID as b2}from"crypto";var g2={timeout:30000,retries:0,retryDelay:1000,debug:!1};class na{config;logger;constructor(n={}){this.config={...g2,...n},this.logger=new xr({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 c=r[o];r[o]=c?`${c}, ${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,c=setTimeout(()=>o.abort(),r);try{return await Promise.race([n,new Promise((e,i)=>{o.signal.addEventListener("abort",()=>{i(Error(`Request timeout after ${r}ms`))})})])}finally{clearTimeout(c)}}async fetch(n){let r=b2(),t=performance.now(),o=this.buildUrl(n.url),c=this.buildHeaders(n.headers),a=n.timeout??this.config.timeout??30000,e=n.retries??this.config.retries??0,i=n.retryDelay??this.config.retryDelay??1000,s;if(n.body)if(typeof n.body==="object"&&!(n.body instanceof FormData)&&!(n.body instanceof URLSearchParams)&&!(n.body instanceof Blob)&&!(n.body instanceof ArrayBuffer)){if(s=JSON.stringify(n.body),!c.has("content-type"))c.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<=e)try{let g=await this.executeWithTimeout(fetch(o,{method:n.method,headers:c,body:s}),a,r),h=performance.now()-t,k=this.parseResponseHeaders(g.headers),$,m,R=await g.text();if(R)try{let C=JSON.parse(R);if(g.ok)$=C;else m=C}catch{if(!g.ok)m={message:R||g.statusText}}else if(!g.ok)m={message:g.statusText};let X={isSuccess:g.ok,response:$,errors:m,code:g.status,headers:k,durationMs:h,requestId:r,createdAt:new Date};if(g.ok)this.logger.info(`[${r}] ${n.method} ${o} ${g.status}`,{method:n.method,url:o,statusCode:g.status,durationMs:Math.round(h)});else this.logger.warn(`[${r}] ${n.method} ${o} ${g.status}`,{method:n.method,url:o,statusCode:g.status,durationMs:Math.round(h),error:m});return X}catch(g){if(l=g instanceof Error?g:Error(String(g)),f++,f<=e)this.logger.warn(`[${r}] Retry ${f}/${e} after error`,{method:n.method,url:o,error:l.message,attempt:f,retries:e}),await new Promise((h)=>setTimeout(h,i))}let b=performance.now()-t;return this.logger.error(`[${r}] ${n.method} ${o} failed`,l,{method:n.method,url:o,durationMs:Math.round(b),attempts:f}),{isSuccess:!1,response:void 0,errors:{message:l?.message||"Unknown error"},code:null,headers:{},durationMs:b,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 u2=new na;var _2={accessToken:"access_token",refreshToken:"refresh_token",sessionToken:"session_token"};function m2(n){let r=[],t="";for(let o=0;o<n.length;o++){let c=n[o];if(c===","){let a=n.slice(o+1).trimStart();if(/^[a-zA-Z0-9_-]+=/.test(a)){r.push(t.trim()),t="";continue}}t+=c}if(t.trim())r.push(t.trim());return r}function w2(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 c=n.get(`x-${r.accessToken}`),a=n.get(`x-${r.refreshToken}`),e=n.get(`x-${r.sessionToken}`);if(c)t[`x-${r.accessToken}`]=c;if(a)t[`x-${r.refreshToken}`]=a;if(e)t[`x-${r.sessionToken}`]=e;let i=n.get("cookie");if(i)t.cookie=i;return t}function h2(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 c=t.startsWith("_")?t:h2(t);if(o instanceof Date)r[c]=o.toISOString();else if(o&&typeof o==="object"&&!Array.isArray(o))r[c]=xd(o);else r[c]=o}return r}function $2(n,r){let t=new URLSearchParams,o=(a,e)=>{if(e===void 0||e===null)return;if(Array.isArray(e))for(let i of e)o(`${a}[]`,i);else if(e instanceof Date)t.append(a,e.toISOString());else if(typeof e==="object")for(let[i,s]of Object.entries(e))o(`${a}[${i}]`,s);else t.append(a,String(e))};for(let[a,e]of Object.entries(r))o(a,e);let c=t.toString();if(!c)return n;return n.includes("?")?`${n}&${c}`:`${n}?${c}`}function k2(n,r,t,o){let c={..._2,...r.tokenNames},a=new na({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(),b=await o(),g={};b.forEach((X,C)=>{g[C]=X});let h=w2(b,c),k=l.path,$;if(s&&typeof s==="object"&&!(s instanceof FormData)){let X=s;for(let[C,E]of Object.entries(X))if(E!=null){if(C.startsWith("_"))k=k.replace(`:${C.substring(1)}`,String(E));else if(C==="id"&&k.includes(":id"))k=k.replace(":id",String(E))}}if(l.method==="GET"&&s&&typeof s==="object")k=$2(k,s);else if(s!==void 0){if(l.isFormData&&s instanceof FormData)$=s;else if($=xd(s),!h["content-type"])h["content-type"]="application/json"}let m=await a.fetch({url:k,method:l.method,headers:h,body:$});if(m.headers["set-cookie"])try{let X=m.headers["set-cookie"],C=m2(X);for(let E of C){let[Q,...W]=E.split(";");if(!Q)continue;let[S,z]=Q.split("=");if(S&&z){let w={};for(let u of W){let[B,P]=u.trim().split("=");if(!B)continue;let J=B.toLowerCase();if(J==="path")w.path=P;else if(J==="max-age")w.maxAge=Number(P);else if(J==="expires"&&P)w.expires=new Date(P);else if(J==="httponly")w.httpOnly=!0;else if(J==="secure")w.secure=!0;else if(J==="samesite")w.sameSite=P}f.set(S.trim(),z.trim(),w)}}}catch(X){console.warn("[ServerFactory] Failed to process Set-Cookie headers:",X instanceof Error?X.message:String(X))}let R=m.response;if(m.isSuccess&&R&&typeof R==="object"&&!Array.isArray(R)){let X=R;if("success"in X&&!("data"in X)){let{success:C,message:E,error:Q,...W}=X;R={success:C,...E!==void 0?{message:E}:{},...Q!==void 0?{error:Q}:{},...Object.keys(W).length>0?{data:W}:{}}}}return{isSuccess:m.isSuccess,data:R,errors:m.errors,code:m.code,message:m.isSuccess?void 0:m.errors?.message}}}import{useEffect as Wd,useEffectEvent as zo,useRef as ra}from"react";import{batch as R2,createStore as A2}from"h-state";var S2={connection:{status:"disconnected",clientId:null,subscribedTopics:[],error:null,reconnectAttempt:0},events:[],maxEvents:100},{useStore:Ds}=A2(S2,{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)=>()=>{R2(()=>{n.connection.status="disconnected",n.connection.clientId=null,n.connection.subscribedTopics=[],n.connection.error=null,n.connection.reconnectAttempt=0,n.events=[]})}});function E2(n){if(n.wsUrl){let a=n.wsUrl.replace(/\/$/,""),e=n.wsPath||"/api/events/subscribe",i=(n.topics||["*"]).join(",");return`${a}${e}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(i)}`}if(typeof window>"u")return"";let r=window.location.protocol==="https:"?"wss:":"ws:",t=window.location.host,o=n.wsPath||"/api/events/subscribe",c=(n.topics||["*"]).join(",");return`${r}//${t}${o}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(c)}`}var M2=0;function D2(n){let r=Ds(),t=ra(null),o=ra(null),c=ra(null),a=ra(!1),e=ra(n);e.current=n;let i=n.autoReconnect??!0,s=n.maxReconnectAttempts??10,l=n.reconnectBaseDelay??1000,f=n.reconnectMaxDelay??30000,b=n.heartbeatInterval??30000,g=n.debug??!1,h=(...z)=>{if(g)console.log("[usePubSub]",...z)},k=()=>{if(o.current)clearInterval(o.current),o.current=null},$=()=>{if(c.current)clearTimeout(c.current),c.current=null},m=(z)=>{k(),o.current=setInterval(()=>{if(z.readyState===WebSocket.OPEN)z.send(JSON.stringify({type:"ping"}))},b)},R=zo((z)=>{try{let w=JSON.parse(z.data);switch(w.type){case"connected":r.setConnectionStatus("connected"),r.setClientId(w.clientId),r.setSubscribedTopics(w.subscribedTopics),r.setReconnectAttempt(0),r.setError(null),h("Connected, clientId:",w.clientId);break;case"subscribed":r.setSubscribedTopics(w.topics),h("Subscribed to:",w.topics);break;case"event":{let u={id:`evt_${Date.now()}_${M2++}`,topic:w.topic,data:w.data,timestamp:w.timestamp,receivedAt:Date.now(),messageId:w.messageId,isRedelivery:w.isRedelivery};if(r.addEvent(u),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)),h("Server error:",w.error);break}}catch{h("Failed to parse message")}}),X=zo((z)=>{if(a.current)return;if(!i)return;if(z>=s){r.setConnectionStatus("disconnected"),r.setError(Error("Max reconnection attempts reached")),h("Max reconnect attempts reached");return}let w=Math.min(l*2**z,f);h(`Reconnecting in ${w}ms (attempt ${z+1}/${s})`),r.setConnectionStatus("reconnecting"),r.setReconnectAttempt(z+1),$(),c.current=setTimeout(()=>{if(!a.current)C()},w)}),C=zo(()=>{if(a.current)return;if(t.current?.readyState===WebSocket.OPEN)return;if(!e.current.userId)return;if(t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}let z=E2(e.current);if(!z)return;r.setConnectionStatus("connecting"),r.setError(null),h("Connecting to:",z);let w=new WebSocket(z);t.current=w,w.onopen=()=>{h("WebSocket opened"),m(w)},w.onmessage=R,w.onerror=()=>{h("WebSocket error"),r.setError(Error("WebSocket connection error"))},w.onclose=(u)=>{if(h("WebSocket closed",u.code,u.reason),k(),r.setConnectionStatus("disconnected"),r.setClientId(null),!a.current&&u.code!==4001){let B=r.connection.reconnectAttempt;X(B)}}}),E=zo(()=>{if(k(),$(),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)}),Q=zo((z)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"subscribe",topics:z}))}),W=zo((z)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"unsubscribe",topics:z}))}),S=zo((z)=>{return r.events.filter((w)=>w.topic===z)});return Wd(()=>{if(a.current=!1,n.userId)C();return()=>{a.current=!0,E()}},[n.userId]),Wd(()=>{if(r.connection.status==="connected"&&n.topics)Q(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:C,disconnect:E,subscribe:Q,unsubscribe:W,clearEvents:r.clearEvents,getEventsByTopic:S}}import{randomUUID as Q4}from"crypto";var Ys=$r(Vd(),1);import{Elysia as se,NotFoundError as lc}from"elysia";var Or,no,xt=typeof Bun<"u"&&!!Bun.file;function sc(){if(Or||(Or=process.getBuiltinModule("fs/promises")),no||(no=process.getBuiltinModule("path")),!no){console.warn("@elysiajs/static require path to be available.");return}return[Or,no]}async function Cd(n){if(Or||sc(),xt){let r=new Bun.Glob("**/*.html"),t=[];for await(let o of r.scan(n))t.push(no.join(n,o));return t}return[]}async function zs(n){if(Or||sc(),xt){let t=new Bun.Glob("**/*"),o=[];for await(let c of t.scan(n))o.push(no.join(n,c));return o}let r=await Or.readdir(n).catch(()=>[]);return(await Promise.all(r.map(async(t)=>{let o=n+no.sep+t,c=await Or.stat(o).catch(()=>null);return c?c.isDirectory()?await zs(o):[no.resolve(n,o)]:[]}))).flat()}function Bs(n){return Or||sc(),Or.stat(n).then(()=>!0,()=>!1)}class Us{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,c]of this.map)c[1]<=t&&this.map.delete(o)},this.ttl)),this.map.has(n))this.map.delete(n);else if(this.map.size>=this.max){let t=this.map.keys().next().value;t!==void 0&&this.delete(t)}this.map.set(n,[r,Date.now()+this.ttl*1000])}delete(n){this.map.get(n)&&this.map.delete(n)}clear(){this.map.clear()}size(){return this.map.size}[Symbol.dispose](){this.interval&&clearInterval(this.interval)}}function xs(n,r,t){if(n["cache-control"]&&/no-cache|no-store/.test(n["cache-control"]))return!1;if("if-none-match"in n){let o=n["if-none-match"];return o==="*"?!0:o===null||typeof r!="string"?!1:o===r}if(n["if-modified-since"]){let o=n["if-modified-since"];try{return Or.stat(t).then((c)=>{if(c.mtime!==void 0&&c.mtime.getTime()<=Date.parse(o))return!0})}catch{}}return!1}var ie;function ta(n){return xt?Bun.file(n):(Or||sc(),Or.readFile(n))}async function Ws(n){return xt?new Bun.CryptoHasher("md5").update(await n.arrayBuffer()).digest("base64"):(ie||(ie=process.getBuiltinModule("crypto")),ie?ie.createHash("md5").update(n).digest("base64"):void console.warn("[@elysiajs/static] crypto is required to generate etag."))}var oa=(n)=>{if(!n)return!1;for(let r in n)return!0;return!1};async function Ld({assets:n="public",prefix:r="/public",staticLimit:t=1024,alwaysStatic:o=!1,ignorePatterns:c=[".DS_Store",".git",".env"],headers:a,maxAge:e=86400,directive:i="public",etag:s=!0,extension:l=!0,indexHTML:f=!0,decodeURI:b,silent:g}={}){if(typeof process>"u"||typeof process.getBuiltinModule>"u")return g||console.warn("[@elysiajs/static] require process.getBuiltinModule. Static plugin is disabled"),new se;let h=sc();if(!h)return new se;let[k,$]=h,m=$.sep!=="/"?(W)=>W.replace(/\\/g,"/"):(W)=>W,R=new Us;r===$.sep&&(r="");let X=$.resolve(n),C=c.length?(W)=>c.find((S)=>typeof S=="string"?S.includes(W):S.test(W)):()=>!1,E=new se({name:"static",seed:r});if(o){let W=await zs($.resolve(n));if(W.length<=t)for(let S of W){let z=function({headers:J}){if(P){let Y=xs(J,P,S);if(Y===!0)return new Response(null,{status:304,headers:oa(a)?a:void 0});if(Y!==!1){let U=R.get(u);return U?U.clone():Y.then((D)=>{if(D)return new Response(null,{status:304,headers:a||void 0});let x=new Response(B,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},a,P?{Etag:P}:{})});return R.set(r,x),x.clone()})}}let F=R.get(u);if(F)return F.clone();let I=new Response(B,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},a,P?{Etag:P}:{})});return R.set(u,I),I.clone()};var Q=z;if(!S||C(S))continue;let w=S.replace(X,"");b&&(w=Ys.default(w)??w);let u=m($.join(r,w));if(xt&&S.endsWith(".html")){let J=await import(S);E.get(u,J.default),f&&u.endsWith("/index.html")&&E.get(u.replace("/index.html",""),J.default);continue}l||(u=m(u.slice(0,u.lastIndexOf("."))));let B=xt?ta(S):await ta(S);if(!B)return g||console.warn(`[@elysiajs/static] Failed to load file: ${S}`),new se;let P=await Ws(B);E.get(u,s?z:new Response(B,oa(a)?{headers:a}:void 0)),f&&u.endsWith("/index.html")&&E.get(u.replace("/index.html",""),s?z:new Response(B,oa(a)?{headers:a}:void 0))}return E}if(!(`GET_${r}/*`in E.routeTree)){if(xt){let W=await Cd($.resolve(n));for(let S of W){if(!S||C(S))continue;let z=S.replace(X,""),w=m($.join(r,z)),u=await import(S);E.get(w,u.default),f&&w.endsWith("/index.html")&&E.get(w.replace("/index.html",""),u.default)}}E.onError(()=>{}).get(`${r.endsWith("/")?r.slice(0,-1):r}/*`,async({params:W,headers:S})=>{let z=m($.join(n,b?Ys.default(W["*"])??W["*"]:W["*"]));if(C(z))throw new lc;let w=R.get(z);if(w)return w.clone();try{let u=await k.stat(z).catch(()=>null);if(!u)throw new lc;if(!f&&u.isDirectory())throw new lc;let B;if(!xt&&f){let F=$.join(z,"index.html"),I=R.get(F);if(I)return I.clone();await Bs(F)&&(B=await ta(F))}if(!B&&!u.isDirectory()&&await Bs(z))B=await ta(z);else throw new lc;if(!s)return new Response(B,oa(a)?{headers:a}:void 0);let P=await Ws(B);if(P&&await xs(S,P,z))return new Response(null,{status:304});let J=new Response(B,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},a,P?{Etag:P}:{})});return R.set(z,J),J.clone()}catch(u){throw u instanceof lc?u:(g||console.error("[@elysiajs/static]",u),new lc)}})}return E}Hl();$l();import{pushSchema as P4}from"drizzle-kit/api";import{and as ne,eq as br}from"drizzle-orm";import{drizzle as G4}from"drizzle-orm/node-postgres";import{pgSchema as q4}from"drizzle-orm/pg-core";import N4 from"elysia";var ig=[{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 n5={GET:["GET"],POST:["POST"],PUT:["PUT"],DELETE:["DELETE"],PATCH:["PATCH"],TOGGLE:["PATCH"],VERIFICATION:["POST"]};function r5(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 c=o.passwordReset.route||`${r}/auth/password-reset`;t.push({path:`${c}/request`,method:"POST",source:"auth"},{path:`${c}/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:"POST",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 c=o.invite.route||`${r}/auth/invite`;t.push({path:`${c}/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 c=o.captcha.route||`${r}/auth/captcha`;t.push({path:`${c}/generate`,method:"GET",source:"auth"},{path:`${c}/validate`,method:"POST",source:"auth"})}return t}function sg(n,r,t){let o=[];for(let c of n){if(!c.is_public)continue;let a=`${r}/${t}/${c.table_name}`;for(let[e,i]of Object.entries(c.is_public)){if(!i)continue;let s=n5[e];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 t5(n,r,t){return sg(n,r,t)}function zl(n,r,t="",o="public"){let c=r5(n,t),a=sg(n.entities||[],t,o),e=t5(r,t,o),i=[];if(n.pubsub?.enabled){let f=n.pubsub.basePath||"/subs",b=n.pubsub.wsPath||"/api/events/subscribe";i.push({path:`${f}/:topic`,method:"POST",source:"system"},{path:b,method:"GET",source:"system"})}let s=[];if(n.liveMonitoring?.enabled){let f=n.liveMonitoring.basePath||"/v1/monitoring";s.push({path:`${f}/health`,method:"GET",source:"system"},{path:`${f}/settings`,method:"GET",source:"system"},{path:`${f}/settings`,method:"PATCH",source:"system"},{path:`${f}/logs`,method:"GET",source:"system"},{path:`${f}/logs/stream`,method:"GET",source:"system"})}let l=[{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[...c,...a,...e,...i,...s,...l]}function Bl(n,r,t){let o=r.replace(/\/$/,""),c=t.toUpperCase();for(let a of n){if(a.method!==c)continue;if(o5(a.path,o))return!0}return!1}function o5(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 c=0;c<t.length;c++){let a=t[c],e=o[c];if(a?.startsWith(":"))continue;if(a!==e)return!1}return!0}ml();Ne();je();import{asc as V5,desc as C5,eq as Ar,ilike as jg,inArray as L5,notInArray as Q5,or as P5}from"drizzle-orm";import{drizzle as G5}from"drizzle-orm/node-postgres";import{Elysia as q5,t as Xn}from"elysia";import{t as Qn}from"elysia";function Tl(n){let r={};if(!n||n.length===0)return Qn.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?Qn.Number():Qn.Optional(Qn.Number());break;case"boolean":r[t.name]=t.notNull?Qn.Boolean():Qn.Optional(Qn.Boolean());break;case"timestamp":case"timestamptz":case"date":r[t.name]=t.notNull?Qn.String({format:"date-time"}):Qn.Optional(Qn.String({format:"date-time"}));break;case"json":case"jsonb":r[t.name]=Qn.Optional(Qn.Unknown());break;case"uuid":r[t.name]=t.notNull?Qn.String({format:"uuid"}):Qn.Optional(Qn.String({format:"uuid"}));break;default:r[t.name]=t.notNull?Qn.String():Qn.Optional(Qn.String())}return Qn.Object(r,{additionalProperties:!0})}function Fg(n){return Qn.Array(Qn.Object({id:Qn.String(),data:Tl(n)}))}function vl(n,r){let{db:t,schemaTables:o,schemaRelations:c,entities:a,logger:e,databaseUrl:i,storage:s,authorization:l}=r,f=ba(s),b=l?.enabled??!1;if(!t)return n;let g=Object.keys(o),h=a.map((E)=>E.table_name),k=g.filter((E)=>!h.includes(E)),$=["userSessions","passwordResetTokens","magicLinkTokens"],m=["passwordResetTokens","magicLinkTokens"],R=["files"],X=k.filter((E)=>{if(m.includes(E)&&!r.emailServiceAvailable)return e.info(`Skipping ${E} routes - email service not available`),!1;return!0}).map((E)=>({table_name:E,group_name:$.includes(E)?"Authentication":E,is_form_data:R.includes(E)})),C=[...a,...X];e.info(`All entities: ${C.map((E)=>E.table_name).join(", ")}`);for(let E of C){let Q=E.table_name,W=E.group_name||E.table_name,S=o[Q];if(!S)continue;let z=c[`${Q}Relations`];e.info(`Creating routes for table: ${Q}`);let w=S,u=w.id,B=t,P=Tl(E.columns),J=Xn.Array(P),F=Fg(E.columns),I=Xn.Array(Xn.String()),Y=new q5({prefix:`/${Q}`});if(!E.excluded_methods?.includes("GET"))Y.get("/",async(U)=>{if(!B)return{success:!1,message:"DB not initialized"};let D=U.request.headers.get("x-user-id"),x=E.columns?.map((vn)=>vn.name),N=Object.keys(c).filter((vn)=>vn.startsWith(`${E.table_name}Relations`)).map((vn)=>vn.replace("Relations","")),j=null;if(b&&D){if(j=await _l({userId:D,method:"GET",entity:E.table_name,requestedFields:x,requestedRelations:N,db:B,schemaTables:o,logger:e}),!j.authorized)return{success:!1,message:j.reason||"Unauthorized",status:403}}let K=ql(U.query),q=[];if(b&&j?.scopeFilters)for(let[vn,on]of Object.entries(j.scopeFilters)){let Bn=w[vn];if(Bn)q.push(Ar(Bn,on))}if(K.search&&K.searchFields){let vn=K.searchFields.map((on)=>{let Bn=w[on.trim()];return Bn?jg(Bn,`%${K.search}%`):null}).filter((on)=>on!==null);if(vn.length>0){let on=P5(...vn);if(on)q.push(on)}}if(K.filters){let{ne:vn,gt:on,gte:Bn,lt:Rr,lte:Nr,like:Ho,isNull:ac,isNotNull:ds}=await import("drizzle-orm");for(let gr of K.filters){let ir=w[gr.field];if(!ir)continue;switch(gr.operator){case"eq":q.push(Ar(ir,gr.value));break;case"neq":q.push(vn(ir,gr.value));break;case"gt":q.push(on(ir,gr.value));break;case"gte":q.push(Bn(ir,gr.value));break;case"lt":q.push(Rr(ir,gr.value));break;case"lte":q.push(Nr(ir,gr.value));break;case"like":q.push(Ho(ir,gr.value));break;case"ilike":q.push(jg(ir,gr.value));break;case"in":q.push(L5(ir,gr.value));break;case"notIn":q.push(Q5(ir,gr.value));break;case"isNull":q.push(ac(ir));break;case"isNotNull":q.push(ds(ir));break}}}let tn=B.select().from(S);if(q.length>0){let{and:vn}=await import("drizzle-orm"),on=vn(...q);if(on)tn=tn.where(on)}if(K.sort&&K.sort.length>0){let vn=K.sort.map((on)=>{let Bn=w[on.field];if(!Bn)return null;return on.direction==="desc"?C5(Bn):V5(Bn)}).filter((on)=>on!==null);if(vn.length>0)tn=tn.orderBy(...vn)}let v=K.page??1,dn=K.limit??20,rt=K.offset??(v-1)*dn,cr=B.select().from(S);if(q.length>0){let{and:vn}=await import("drizzle-orm"),on=vn(...q);if(on)cr.where(on)}let Tn=(await cr).length;tn=tn.limit(dn).offset(rt);let cc=await tn,re=Cg(v,dn,rt,Tn);if(b&&j?.allowedFields)cc=Be(cc,j.allowedFields);return{success:!0,data:{items:cc,meta:re}}},{detail:{tags:[W],summary:`List ${Q}`,description:`Get paginated list of ${Q} records with filtering, sorting, and search`}}),Y.get("/:id",async(U)=>{if(!B||!u)return{success:!1,message:"No id column or DB"};let D=U.params,x=ql(U.query),N=U.request.headers.get("x-user-id"),j=E.columns?.map((dn)=>dn.name),K=x.with?.map((dn)=>dn.name),q=null;if(b&&N){if(q=await _l({userId:N,method:"GET",entity:E.table_name,requestedFields:j,requestedRelations:K,db:B,schemaTables:o,logger:e}),!q.authorized)return{success:!1,message:q.reason||"Unauthorized",status:403}}if(x.with&&x.with.length>0&&z&&i){let dn=b&&q?.allowedRelations?x.with.filter(($n)=>q.allowedRelations?.includes($n.name)??!1):x.with,cr=await G5(i,{schema:{...o,...c}}).query[E.table_name]?.findFirst({where:Ar(u,D.id),with:dn.reduce(($n,Tn)=>{return $n[Tn.name]=Tn.limit?{limit:Tn.limit}:!0,$n},{})});if(b&&q?.allowedFields&&cr)cr=Be(cr,q.allowedFields);if(b&&q?.allowedRelations&&cr)cr=Pb(cr,q.allowedRelations);return{success:!0,data:cr||null}}let v=(await B.select().from(S).where(Ar(u,D.id)))[0]||null;if(b&&q?.allowedFields&&v)v=Be(v,q.allowedFields);return{success:!0,data:v}},{detail:{tags:[W],summary:`Get ${Q} by ID`,description:`Get a single ${Q} record by its ID with optional relations`}}),Y.get("/distinct/:field",async(U)=>{if(!B)return{success:!1,message:"DB not initialized"};let D=U.params,x=w[D.field];if(!x)return{success:!1,message:"Field not found"};return{success:!0,data:await B.selectDistinct({value:x}).from(S)}},{detail:{tags:[W],summary:`Get distinct ${Q} values`,description:`Get distinct values for a specific field in ${Q}`}});if(!E.excluded_methods?.includes("POST"))if(E.is_form_data&&f.enabled)Y.post("/",async(U)=>{if(!B)return{success:!1,message:"DB not initialized"};let D=U.request.headers.get("x-user-id"),{data:x,files:N}=ga(U.body,f),j=x;if(E.columns){j=gc(j,E.columns);let tn=bc(j,E.columns,!1);if(!tn.valid)return{success:!1,message:"Validation failed",errors:tn.errors}}let K=null;if(N.length>0){if(K=await ua(N,f,E.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 tn=K.success[0];if(tn){let v=tn.originalName.split(".").pop()||"";j={...j,id:tn.id,name:tn.name,originalName:tn.originalName,path:tn.path,mimeType:tn.mimeType,size:tn.size,extension:v,uploadedBy:D}}}}if(D)j.createdBy=D;let q=await B.insert(S).values(j).returning();{let tn=new URL(U.request.url);e.audit({entityName:E.table_name,entityId:String(q[0]?.id??""),operation:"CREATE",userId:D||void 0,summary:`Created ${E.table_name}`,newValues:q[0],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:tn.pathname,query:tn.search})}return{success:!0,data:q[0]}},{type:"formdata",body:Xn.Object({[f.formData.dataField]:Xn.Optional(Xn.Union([Xn.String(),Xn.Any()])),[f.formData.filesField]:Xn.Optional(Xn.Union([Xn.File(),Xn.Array(Xn.File())]))}),detail:{tags:[W],summary:`Create ${Q} with files`,description:`Create a new ${Q} record with file upload support`}});else Y.post("/",async(U)=>{if(!B)return{success:!1,message:"DB not initialized"};let D=U.body,x=U.request.headers.get("x-user-id");if(E.columns){D=gc(D,E.columns);let j=bc(D,E.columns,!1);if(!j.valid)return{success:!1,message:"Validation failed",errors:j.errors}}if(x)D.createdBy=x;let N=await B.insert(S).values(D).returning();{let j=new URL(U.request.url);e.audit({entityName:E.table_name,entityId:String(N[0]?.id??""),operation:"CREATE",userId:x||void 0,summary:`Created ${E.table_name}`,newValues:N[0],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:j.pathname,query:j.search})}return{success:!0,data:N[0]}},{body:P,detail:{tags:[W],summary:`Create ${Q}`,description:`Create a new ${Q} record`}});if(!E.excluded_methods?.includes("PUT"))if(E.is_form_data&&f.enabled)Y.put("/:id",async(U)=>{if(!B||!u)return{success:!1,message:"No id column or DB"};let D=U.params,x=U.request.headers.get("x-user-id"),{data:N,files:j}=ga(U.body,f),K=N,q=await B.select().from(S).where(Ar(u,D.id)).limit(1);if(E.columns){K=gc(K,E.columns);let dn=bc(K,E.columns,!1);if(!dn.valid)return{success:!1,message:"Validation failed",errors:dn.errors}}let tn=null;if(j.length>0)tn=await ua(j,f,E.table_name);let v=await B.update(S).set(K).where(Ar(u,D.id)).returning();{let dn=new URL(U.request.url);e.audit({entityName:E.table_name,entityId:D.id,operation:"UPDATE",userId:x||void 0,summary:`Updated ${E.table_name} (${D.id})`,oldValues:q[0],newValues:v[0],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:dn.pathname,query:dn.search})}return{success:!0,data:{record:v[0],files:tn?.success||[],fileErrors:tn?.failed||[]}}},{type:"formdata",body:Xn.Object({[f.formData.dataField]:Xn.Optional(Xn.Union([Xn.String(),Xn.Any()])),[f.formData.filesField]:Xn.Optional(Xn.Union([Xn.File(),Xn.Array(Xn.File())]))}),detail:{tags:[W],summary:`Update ${Q} with files`,description:`Full update of ${Q} record with file upload support`}});else Y.put("/:id",async(U)=>{if(!B||!u)return{success:!1,message:"No id column or DB"};let{params:D,body:x}=U,N=U.request.headers.get("x-user-id"),j=await B.select().from(S).where(Ar(u,D.id)).limit(1);if(E.columns){x=gc(x,E.columns);let q=bc(x,E.columns,!1);if(!q.valid)return{success:!1,message:"Validation failed",errors:q.errors}}if(x.updatedAt=new Date,N)x.updatedBy=N;let K=await B.update(S).set(x).where(Ar(u,D.id)).returning();{let q=new URL(U.request.url);e.audit({entityName:E.table_name,entityId:D.id,operation:"UPDATE",userId:N||void 0,summary:`Updated ${E.table_name} (${D.id})`,oldValues:j[0],newValues:K[0],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:q.pathname,query:q.search})}return{success:!0,data:K[0]}},{body:P,detail:{tags:[W],summary:`Update ${Q}`,description:`Full update of ${Q} record`}});if(!E.excluded_methods?.includes("PATCH"))Y.patch("/:id",async(U)=>{if(!B||!u)return{success:!1,message:"No id column or DB"};let{params:D,body:x}=U,N=U.request.headers.get("x-user-id"),j=await B.select().from(S).where(Ar(u,D.id)).limit(1);if(E.columns){x=gc(x,E.columns);let q=bc(x,E.columns,!0);if(!q.valid)return{success:!1,message:"Validation failed",errors:q.errors}}if(x.updatedAt=new Date,N)x.updatedBy=N;let K=await B.update(S).set(x).where(Ar(u,D.id)).returning();{let q=new URL(U.request.url);e.audit({entityName:E.table_name,entityId:D.id,operation:"PATCH",userId:N||void 0,summary:`Patched ${E.table_name} (${D.id})`,oldValues:j[0],newValues:K[0],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:q.pathname,query:q.search})}return{success:!0,data:K[0]}},{body:P,detail:{tags:[W],summary:`Patch ${Q}`,description:`Partial update of ${Q} record`}});if(!E.excluded_methods?.includes("DELETE"))Y.delete("/:id",async(U)=>{if(!B||!u)return{success:!1,message:"No id column or DB"};let D=U.params,x=U.request.headers.get("x-user-id"),N=await B.select().from(S).where(Ar(u,D.id)).limit(1);await B.delete(S).where(Ar(u,D.id));{let j=new URL(U.request.url);e.audit({entityName:E.table_name,entityId:D.id,operation:"DELETE",userId:x||void 0,summary:`Deleted ${E.table_name} (${D.id})`,oldValues:N[0],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:j.pathname,query:j.search})}return{success:!0,data:null}},{detail:{tags:[W],summary:`Delete ${Q}`,description:`Delete a ${Q} record`}});if(E.bulk_endpoints_enabled){if(!E.excluded_methods?.includes("POST"))Y.post("/bulk",async(U)=>{if(!B)return{success:!1,message:"DB not initialized"};let D=U.body;if(!Array.isArray(D))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await B.transaction(async(N)=>{let j=[];for(let K of D){let q=await N.insert(S).values(K).returning();j.push(q[0])}return j})}}catch(x){return{success:!1,message:x instanceof Error?x.message:"Transaction failed"}}},{body:J,detail:{tags:[W],summary:`Bulk create ${Q}`,description:`Create multiple ${Q} records`}});if(!E.excluded_methods?.includes("PUT"))Y.put("/bulk",async(U)=>{if(!B||!u)return{success:!1,message:"No id column or DB"};let D=U.body;if(!Array.isArray(D))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await B.transaction(async(N)=>{let j=[];for(let K of D){let q=await N.update(S).set(K.data).where(Ar(u,K.id)).returning();j.push(q[0])}return j})}}catch(x){return{success:!1,message:x instanceof Error?x.message:"Transaction failed"}}},{body:F,detail:{tags:[W],summary:`Bulk update ${Q}`,description:`Update multiple ${Q} records`}});if(!E.excluded_methods?.includes("DELETE"))Y.delete("/bulk",async(U)=>{if(!B||!u)return{success:!1,message:"No id column or DB"};let D=U.body;if(!Array.isArray(D))return{success:!1,message:"Body must be an array of ids"};try{return await B.transaction(async(x)=>{for(let N of D)await x.delete(S).where(Ar(u,N))}),{success:!0,data:{deleted:D.length}}}catch(x){return{success:!1,message:x instanceof Error?x.message:"Transaction failed"}}},{body:I,detail:{tags:[W],summary:`Bulk delete ${Q}`,description:`Delete multiple ${Q} records`}})}n.use(Y)}return n}import N5,{t as _a}from"elysia";function O5(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 pl(n){let{monitoringService:r,logger:t,endpoints:o}=n,c=new N5({prefix:o.basePath});if(!o.enabled)return c;if(o.stream.enabled)c.get(o.stream.path,async function*({request:a}){t.info("[Monitoring] SSE stream connected");let e=O5(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((b)=>setTimeout(b,e)),!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)c.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)c.get(o.history.path,async({query:a})=>{let e=Math.min(a.minutes?parseInt(String(a.minutes),10):60,o.history.maxMinutes),i=await r.getHistory(e);return{isSuccess:!0,message:`Monitoring history for last ${e} minutes`,data:{minutes:e,count:i.length,snapshots:i}}},{query:_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)c.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"}}),c.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})`),c}import F5,{t as Jr}from"elysia";var j5={"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache, no-transform",Connection:"keep-alive"},K5=new TextEncoder,Il=(n,r)=>{let t=typeof r==="string"?r:JSON.stringify(r);return K5.encode(`event: ${n}
61
61
  data: ${t}
62
62
 
63
- `)};function Kg(n){let{liveMonitoringService:r,logger:t,basePath:o,streamInterval:c}=n,a=new F5({prefix:o});return a.get("/health",()=>({status:"ok",timestamp:Date.now(),monitoring:r.isEnabled()}),{detail:{tags:["Live Monitoring"],summary:"Health check for live monitoring"}}),a.get("/settings",()=>{return r.getSettings()},{detail:{tags:["Live Monitoring"],summary:"Get live monitoring settings"}}),a.patch("/settings",({body:e})=>{return r.changeSettings(e)},{body:Jr.Partial(Jr.Object({logMemory:Jr.Boolean(),logCpu:Jr.Boolean(),logDapr:Jr.Boolean(),logWebSocket:Jr.Boolean(),memoryLogInterval:Jr.Number(),cpuLogInterval:Jr.Number(),memoryLogLimit:Jr.Number(),cpuLogLimit:Jr.Number(),daprLogLimit:Jr.Number(),wsLogLimit:Jr.Number(),requestLogLimit:Jr.Number()})),detail:{tags:["Live Monitoring"],summary:"Change live monitoring settings"}}),a.get("/logs",()=>{return r.getLogs()},{detail:{tags:["Live Monitoring"],summary:"Get all live monitoring logs"}}),a.get("/logs/stream",({request:e})=>{let i=e.signal,s,l=r.getSnapshot(),f={memory:l.memory.length?l.memory[l.memory.length-1]?.timestamp??0:0,cpu:l.cpu.length?l.cpu[l.cpu.length-1]?.timestamp??0:0,request:l.requests.length?l.requests[l.requests.length-1]?.timestamp??0:0,dapr:l.dapr.length?l.dapr[l.dapr.length-1]?.timestamp??0:0,ws:l.ws.length?l.ws[l.ws.length-1]?.timestamp??0:0},b=new ReadableStream({start(g){let h=!1;g.enqueue(Il("snapshot",l));let $=setInterval(()=>{if(h)return;let R=r.getUpdatesSince(f);if(!R){g.enqueue(Il("heartbeat",{timestamp:Date.now()}));return}if(R.memory.length)f.memory=R.memory[R.memory.length-1]?.timestamp??f.memory;if(R.cpu.length)f.cpu=R.cpu[R.cpu.length-1]?.timestamp??f.cpu;if(R.requests.length)f.request=R.requests[R.requests.length-1]?.timestamp??f.request;if(R.dapr.length)f.dapr=R.dapr[R.dapr.length-1]?.timestamp??f.dapr;if(R.ws.length)f.ws=R.ws[R.ws.length-1]?.timestamp??f.ws;g.enqueue(Il("update",R))},c),m=()=>{if(h)return;h=!0,clearInterval($),i?.removeEventListener("abort",m);try{g.close()}catch{}};s=m,i?.addEventListener("abort",m)},cancel(){s?.()}});return new Response(b,{headers:j5})},{detail:{tags:["Live Monitoring"],summary:"Stream real-time live monitoring data via SSE"}}),t.info(`[LiveMonitoring] Routes enabled at ${o} (stream interval: ${c}ms)`),a}import Z5 from"elysia";var ma=new Map;var Tg=null;function T5(){let n=Date.now();for(let[r,t]of ma)if(n-t>1e4)ma.delete(r)}var Co={totalSent:0,totalAcked:0,totalFailed:0,averageLatencyMs:0};function vg(){if(Tg)return;Tg=setInterval(T5,30000)}function Zl(){return`msg_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}async function yl(n,r,t){if(!r.userId)return;let o=`pubsub:pending:user:${r.userId}:${r.messageId}`,c=`pubsub:user:pending-set:${r.userId}`;await n.create(o,r,t);let a=await n.read(c),e=a.success&&a.data?a.data:[];if(!e.includes(r.messageId))e.push(r.messageId),await n.create(c,e,t)}async function pg(n,r,t,o){let c=`${r}:${t}`;if(ma.has(c))return!1;let a=`pubsub:pending:user:${r}:${t}`,e=`pubsub:user:pending-set:${r}`,i=`pubsub:ack:${r}:${t}`,s=await n.read(a);if(!s.success||!s.data)return ma.set(c,Date.now()),!1;ma.set(c,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 b=await n.read(e),h=(b.success&&b.data?b.data:[]).filter(($)=>$!==t);if(h.length>0)await n.create(e,h,o);else await n.remove(e);let k=Date.now()-l.sentAt;return p5(k),!0}async function Ig(n,r){if(!r)return[];let t=`pubsub:user:pending-set:${r}`,o=await n.read(t),c=o.success&&o.data?o.data:[],a=[];for(let e of c){let i=`pubsub:pending:user:${r}:${e}`,s=await n.read(i);if(s.success&&s.data)a.push(s.data)}return a.sort((e,i)=>e.sentAt-i.sentAt),a}async function Zg(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 yg(n,r,t,o,c){let a=`pubsub:pending:user:${r}:${t}`,e=await n.read(a);if(!e.success||!e.data)return!1;let i={...e.data,retryCount:e.data.retryCount+1};if(i.retryCount>=c)return await v5(n,r,t),I5(),!1;return await n.create(a,i,o),!0}async function v5(n,r,t){let o=`pubsub:pending:user:${r}:${t}`,c=`pubsub:user:pending-set:${r}`;await n.remove(o);let a=await n.read(c),i=(a.success&&a.data?a.data:[]).filter((s)=>s!==t);if(i.length>0)await n.create(c,i,300);else await n.remove(c)}function nf(){Co.totalSent++}function p5(n){Co.totalAcked++,Co.averageLatencyMs=(Co.averageLatencyMs*(Co.totalAcked-1)+n)/Co.totalAcked}function I5(){Co.totalFailed++}var tr=new Map,wa=new Map;function nu(n){let{redis:r,logger:t}=n,o=n.ack.ttlSeconds,c=n.ack.enabled,a=n.ack.maxRetries,e=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(S,z,w,u){let U=h(w);if(U.length>=s){let P=U[0];if(P)t.info("[PubSub] Max clients reached, closing oldest",{userId:w,oldestClientId:P}),b(P)}tr.set(S,{ws:z,userId:w,subscribedTopics:new Set(u),connectedAt:Date.now(),pendingAcks:new Map}),t.info("[PubSub] Client registered",{clientId:S,userId:w,topics:u,totalClients:tr.size})}function b(S){let z=tr.get(S);if(!z)return;let w=z.userId;if(tr.delete(S),t.info("[PubSub] Client unregistered",{clientId:S,userId:w,totalClients:tr.size}),e&&w){if(h(w).length===0)E(w,"offline")}}function g(S,z){let w=tr.get(S);if(w)w.subscribedTopics=new Set(z)}function h(S){let z=[];for(let[w,u]of tr)if(u.userId===S)z.push(w);return z}function k(){let S=new Set;for(let[,z]of tr)if(z.userId)S.add(z.userId);return S}function $(){return tr.size}function m(S,z){let w=tr.get(S);if(!w)return!1;try{return w.ws.send(JSON.stringify(z)),!0}catch{return tr.delete(S),!1}}function R(S,z){let w=Zl(),u=Date.now(),U=JSON.stringify({type:"event",messageId:c?w:void 0,topic:S,data:z,timestamp:u}),P=0;for(let[J,F]of tr)if(F.subscribedTopics.has("*")||F.subscribedTopics.has(S))try{if(F.ws.send(U),P++,c){if(F.pendingAcks.set(w,{sentAt:u,retryCount:0}),nf(),F.userId)yl(r,{messageId:w,topic:S,clientId:J,userId:F.userId,data:z,sentAt:u,retryCount:0,maxRetries:a},o).catch(()=>{})}}catch{tr.delete(J)}t.info("[PubSub] Broadcasted event",{topic:S,messageId:w,sentCount:P})}function X(S,z,w){let u=Zl(),U=Date.now(),P=JSON.stringify({type:"event",messageId:c?u:void 0,topic:z,data:w,timestamp:U}),J=0,F=!1;for(let[I,Y]of tr){if(Y.userId!==S)continue;if(!Y.subscribedTopics.has("*")&&!Y.subscribedTopics.has(z))continue;try{if(Y.ws.send(P),J++,F=!0,c)Y.pendingAcks.set(u,{sentAt:U,retryCount:0}),nf()}catch{tr.delete(I)}}if(c)yl(r,{messageId:u,topic:z,clientId:F?"delivered":"pending",userId:S,data:w,sentAt:U,retryCount:0,maxRetries:a},o).catch(()=>{});t.info("[PubSub] Broadcasted to user",{userId:S,topic:z,messageId:u,sentCount:J,storedForOffline:!F})}function C(S,z,w){let u=Date.now(),U=JSON.stringify({type:"event",topic:z,data:w,timestamp:u});for(let[P,J]of tr){if(J.userId!==S)continue;if(!J.subscribedTopics.has("*")&&!J.subscribedTopics.has(z))continue;try{J.ws.send(U)}catch{tr.delete(P)}}}function E(S,z){let w=`${S}:${z}`,u=Date.now(),U=wa.get(w);if(U&&u-U<i)return;if(wa.set(w,u),wa.size>1000){let J=u-i*2;for(let[F,I]of wa)if(I<J)wa.delete(F)}let P=k();for(let J of P)if(J!==S)C(J,"user-presence",{type:"user-presence",data:{userId:S,status:z}})}async function Q(S,z){if(!c)return!0;let w=tr.get(S);if(!w)return!1;if(w.pendingAcks.get(z))w.pendingAcks.delete(z);if(w.userId)return pg(r,w.userId,z,o);return!0}async function W(S,z){if(!c)return 0;let w=tr.get(z);if(!w||w.userId!==S)return 0;let u=await Ig(r,S);if(u.length===0)return 0;t.info("[PubSub] Delivering pending messages",{userId:S,count:u.length});let U=0;for(let P of u){if(!w.subscribedTopics.has("*")&&!w.subscribedTopics.has(P.topic))continue;let J=JSON.stringify({type:"event",messageId:P.messageId,topic:P.topic,data:P.data,timestamp:P.sentAt,isRedelivery:!0});try{w.ws.send(J),w.pendingAcks.set(P.messageId,{sentAt:Date.now(),retryCount:P.retryCount+1}),await yg(r,S,P.messageId,o,a),U++}catch{break}}return U}return{generateClientId:l,registerClient:f,unregisterClient:b,updateClientTopics:g,getClientsByUser:h,getConnectedUserIds:k,getClientCount:$,sendToClient:m,broadcastEvent:R,broadcastToUser:X,broadcastToUserNoAck:C,broadcastPresenceToOthers:E,handleClientAck:Q,deliverPendingMessages:W,getPendingMessageCount:(S)=>Zg(r,S)}}function rf(n){let{logger:r}=n,t=nu(n);if(n.ack.enabled)vg();let o=null,c=new Z5;return c.onStart(()=>{if(n.cleanupIntervalMs>0)o=setInterval(()=>{r.info("[PubSub] Periodic cleanup running",{totalClients:t.getClientCount()})},n.cleanupIntervalMs);r.info("[PubSub] Routes initialized",{basePath:n.basePath,wsPath:n.wsPath,ackEnabled:n.ack.enabled,presenceEnabled:n.presence.enabled})}),c.onStop(()=>{if(o)clearInterval(o),o=null}),c.post(`${n.basePath}/:topic`,async({params:a,body:e,request:i,set:s})=>{let l=a.topic,f;try{if(!e){let g=await i.text();f=JSON.parse(g)}else f=e}catch{return s.status=200,{status:"DROP"}}r.info("[PubSub] Dapr event received",{topic:l,eventId:f.id,source:f.source});let b=f.data?.user_id;if(b)t.broadcastToUser(b,l,f);else t.broadcastEvent(l,f);return s.status=200,{status:"SUCCESS"}}),c.ws(n.wsPath,{idleTimeout:n.wsIdleTimeout,open(a){let e=a.data?.query||{};if(!e.userId){a.send(JSON.stringify({type:"error",error:"userId is required for WebSocket connection",timestamp:Date.now()})),a.close(4001,"userId is required");return}let i=t.generateClientId(),s=e.topics?.split(",").map((f)=>f.trim())||["*"];if(a.data.clientId=i,t.registerClient(i,a,e.userId,s),a.send(JSON.stringify({type:"connected",clientId:i,subscribedTopics:s,timestamp:Date.now()})),n.presence.enabled)t.broadcastPresenceToOthers(e.userId,"online");let l=e.userId;if(n.ack.enabled&&l)t.getPendingMessageCount(l).then((f)=>{if(f>0)r.info("[PubSub] Delivering pending messages",{userId:l,count:f}),t.deliverPendingMessages(l,i).catch(()=>{})}).catch(()=>{})},message(a,e){let i=a.data.clientId;try{let s=null;if(typeof e==="string")s=JSON.parse(e);else if(e&&typeof e==="object"){if(s="type"in e?e:null,typeof s==="string")s=JSON.parse(s)}if(!s?.type)return;switch(s.type){case"subscribe":if(Array.isArray(s.topics))t.updateClientTopics(i,s.topics),t.sendToClient(i,{type:"subscribed",topics:s.topics,timestamp:Date.now()});break;case"unsubscribe":r.info("[PubSub] Unsubscribe request",{clientId:i,topics:s.topics});break;case"ping":t.sendToClient(i,{type:"pong",timestamp:Date.now()});break;case"ack":if(s.messageId)t.handleClientAck(i,s.messageId).catch(()=>{});break}}catch{r.warn("[PubSub] Failed to parse client message",{clientId:i})}},close(a,e,i){let s=a.data.clientId;if(s)t.unregisterClient(s);r.info("[PubSub] Client disconnected",{clientId:s,code:e,reason:i})}}),{plugin:c,clientManager:t}}Dl();import{Elysia as y5,t as On}from"elysia";function ru(n){let{db:r,schemaTables:t,config:o,logger:c}=n,a=new Ml({db:r,schemaTables:t,config:o,logger:c}),e=o.endpoints?.basePath||"/verifications",i=new y5({prefix:e});return i.get("/status/:entity_name/:entity_id",async({params:s})=>{return{success:!0,data:await a.getStatus(s.entity_name,s.entity_id)}},{params:On.Object({entity_name:On.String(),entity_id:On.String()})}),i.post("/:entity_name/:entity_id/decide",async({params:s,body:l,request:f})=>{let b=f.headers.get("x-user-id");if(!b)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:b,decision:l.decision,reason:l.reason,signature_id:l.signature_id,diff:l.diff})},{params:On.Object({entity_name:On.String(),entity_id:On.String()}),body:On.Object({decision:On.Union([On.Literal("approved"),On.Literal("rejected")]),reason:On.Optional(On.String()),signature_id:On.Optional(On.String()),diff:On.Optional(On.Record(On.String(),On.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:On.Object({entity_name:On.String(),entity_id:On.String()})}),c.info(`[Verification] Routes registered at ${e}`),i}import{Elysia as R$}from"elysia";var tu=`/* basic theme */
63
+ `)};function Kg(n){let{liveMonitoringService:r,logger:t,basePath:o,streamInterval:c}=n,a=new F5({prefix:o});return a.get("/health",()=>({status:"ok",timestamp:Date.now(),monitoring:r.isEnabled()}),{detail:{tags:["Live Monitoring"],summary:"Health check for live monitoring"}}),a.get("/settings",()=>{return r.getSettings()},{detail:{tags:["Live Monitoring"],summary:"Get live monitoring settings"}}),a.patch("/settings",({body:e})=>{return r.changeSettings(e)},{body:Jr.Partial(Jr.Object({logMemory:Jr.Boolean(),logCpu:Jr.Boolean(),logDapr:Jr.Boolean(),logWebSocket:Jr.Boolean(),memoryLogInterval:Jr.Number(),cpuLogInterval:Jr.Number(),memoryLogLimit:Jr.Number(),cpuLogLimit:Jr.Number(),daprLogLimit:Jr.Number(),wsLogLimit:Jr.Number(),requestLogLimit:Jr.Number()})),detail:{tags:["Live Monitoring"],summary:"Change live monitoring settings"}}),a.get("/logs",()=>{return r.getLogs()},{detail:{tags:["Live Monitoring"],summary:"Get all live monitoring logs"}}),a.get("/logs/stream",({request:e})=>{let i=e.signal,s,l=r.getSnapshot(),f={memory:l.memory.length?l.memory[l.memory.length-1]?.timestamp??0:0,cpu:l.cpu.length?l.cpu[l.cpu.length-1]?.timestamp??0:0,request:l.requests.length?l.requests[l.requests.length-1]?.timestamp??0:0,dapr:l.dapr.length?l.dapr[l.dapr.length-1]?.timestamp??0:0,ws:l.ws.length?l.ws[l.ws.length-1]?.timestamp??0:0},b=new ReadableStream({start(g){let h=!1;g.enqueue(Il("snapshot",l));let $=setInterval(()=>{if(h)return;let R=r.getUpdatesSince(f);if(!R){g.enqueue(Il("heartbeat",{timestamp:Date.now()}));return}if(R.memory.length)f.memory=R.memory[R.memory.length-1]?.timestamp??f.memory;if(R.cpu.length)f.cpu=R.cpu[R.cpu.length-1]?.timestamp??f.cpu;if(R.requests.length)f.request=R.requests[R.requests.length-1]?.timestamp??f.request;if(R.dapr.length)f.dapr=R.dapr[R.dapr.length-1]?.timestamp??f.dapr;if(R.ws.length)f.ws=R.ws[R.ws.length-1]?.timestamp??f.ws;g.enqueue(Il("update",R))},c),m=()=>{if(h)return;h=!0,clearInterval($),i?.removeEventListener("abort",m);try{g.close()}catch{}};s=m,i?.addEventListener("abort",m)},cancel(){s?.()}});return new Response(b,{headers:j5})},{detail:{tags:["Live Monitoring"],summary:"Stream real-time live monitoring data via SSE"}}),t.info(`[LiveMonitoring] Routes enabled at ${o} (stream interval: ${c}ms)`),a}import Z5 from"elysia";var ma=new Map;var Tg=null;function T5(){let n=Date.now();for(let[r,t]of ma)if(n-t>1e4)ma.delete(r)}var Co={totalSent:0,totalAcked:0,totalFailed:0,averageLatencyMs:0};function vg(){if(Tg)return;Tg=setInterval(T5,30000)}function Zl(){return`msg_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}async function yl(n,r,t){if(!r.userId)return;let o=`pubsub:pending:user:${r.userId}:${r.messageId}`,c=`pubsub:user:pending-set:${r.userId}`;await n.create(o,r,t);let a=await n.read(c),e=a.success&&a.data?a.data:[];if(!e.includes(r.messageId))e.push(r.messageId),await n.create(c,e,t)}async function pg(n,r,t,o){let c=`${r}:${t}`;if(ma.has(c))return!1;let a=`pubsub:pending:user:${r}:${t}`,e=`pubsub:user:pending-set:${r}`,i=`pubsub:ack:${r}:${t}`,s=await n.read(a);if(!s.success||!s.data)return ma.set(c,Date.now()),!1;ma.set(c,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 b=await n.read(e),h=(b.success&&b.data?b.data:[]).filter(($)=>$!==t);if(h.length>0)await n.create(e,h,o);else await n.remove(e);let k=Date.now()-l.sentAt;return p5(k),!0}async function Ig(n,r){if(!r)return[];let t=`pubsub:user:pending-set:${r}`,o=await n.read(t),c=o.success&&o.data?o.data:[],a=[];for(let e of c){let i=`pubsub:pending:user:${r}:${e}`,s=await n.read(i);if(s.success&&s.data)a.push(s.data)}return a.sort((e,i)=>e.sentAt-i.sentAt),a}async function Zg(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 yg(n,r,t,o,c){let a=`pubsub:pending:user:${r}:${t}`,e=await n.read(a);if(!e.success||!e.data)return!1;let i={...e.data,retryCount:e.data.retryCount+1};if(i.retryCount>=c)return await v5(n,r,t),I5(),!1;return await n.create(a,i,o),!0}async function v5(n,r,t){let o=`pubsub:pending:user:${r}:${t}`,c=`pubsub:user:pending-set:${r}`;await n.remove(o);let a=await n.read(c),i=(a.success&&a.data?a.data:[]).filter((s)=>s!==t);if(i.length>0)await n.create(c,i,300);else await n.remove(c)}function nf(){Co.totalSent++}function p5(n){Co.totalAcked++,Co.averageLatencyMs=(Co.averageLatencyMs*(Co.totalAcked-1)+n)/Co.totalAcked}function I5(){Co.totalFailed++}var tr=new Map,wa=new Map;function nu(n){let{redis:r,logger:t}=n,o=n.ack.ttlSeconds,c=n.ack.enabled,a=n.ack.maxRetries,e=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(S,z,w,u){let B=h(w);if(B.length>=s){let P=B[0];if(P)t.info("[PubSub] Max clients reached, closing oldest",{userId:w,oldestClientId:P}),b(P)}tr.set(S,{ws:z,userId:w,subscribedTopics:new Set(u),connectedAt:Date.now(),pendingAcks:new Map}),t.info("[PubSub] Client registered",{clientId:S,userId:w,topics:u,totalClients:tr.size})}function b(S){let z=tr.get(S);if(!z)return;let w=z.userId;if(tr.delete(S),t.info("[PubSub] Client unregistered",{clientId:S,userId:w,totalClients:tr.size}),e&&w){if(h(w).length===0)E(w,"offline")}}function g(S,z){let w=tr.get(S);if(w)w.subscribedTopics=new Set(z)}function h(S){let z=[];for(let[w,u]of tr)if(u.userId===S)z.push(w);return z}function k(){let S=new Set;for(let[,z]of tr)if(z.userId)S.add(z.userId);return S}function $(){return tr.size}function m(S,z){let w=tr.get(S);if(!w)return!1;try{return w.ws.send(JSON.stringify(z)),!0}catch{return tr.delete(S),!1}}function R(S,z){let w=Zl(),u=Date.now(),B=JSON.stringify({type:"event",messageId:c?w:void 0,topic:S,data:z,timestamp:u}),P=0;for(let[J,F]of tr)if(F.subscribedTopics.has("*")||F.subscribedTopics.has(S))try{if(F.ws.send(B),P++,c){if(F.pendingAcks.set(w,{sentAt:u,retryCount:0}),nf(),F.userId)yl(r,{messageId:w,topic:S,clientId:J,userId:F.userId,data:z,sentAt:u,retryCount:0,maxRetries:a},o).catch(()=>{})}}catch{tr.delete(J)}t.info("[PubSub] Broadcasted event",{topic:S,messageId:w,sentCount:P})}function X(S,z,w){let u=Zl(),B=Date.now(),P=JSON.stringify({type:"event",messageId:c?u:void 0,topic:z,data:w,timestamp:B}),J=0,F=!1;for(let[I,Y]of tr){if(Y.userId!==S)continue;if(!Y.subscribedTopics.has("*")&&!Y.subscribedTopics.has(z))continue;try{if(Y.ws.send(P),J++,F=!0,c)Y.pendingAcks.set(u,{sentAt:B,retryCount:0}),nf()}catch{tr.delete(I)}}if(c)yl(r,{messageId:u,topic:z,clientId:F?"delivered":"pending",userId:S,data:w,sentAt:B,retryCount:0,maxRetries:a},o).catch(()=>{});t.info("[PubSub] Broadcasted to user",{userId:S,topic:z,messageId:u,sentCount:J,storedForOffline:!F})}function C(S,z,w){let u=Date.now(),B=JSON.stringify({type:"event",topic:z,data:w,timestamp:u});for(let[P,J]of tr){if(J.userId!==S)continue;if(!J.subscribedTopics.has("*")&&!J.subscribedTopics.has(z))continue;try{J.ws.send(B)}catch{tr.delete(P)}}}function E(S,z){let w=`${S}:${z}`,u=Date.now(),B=wa.get(w);if(B&&u-B<i)return;if(wa.set(w,u),wa.size>1000){let J=u-i*2;for(let[F,I]of wa)if(I<J)wa.delete(F)}let P=k();for(let J of P)if(J!==S)C(J,"user-presence",{type:"user-presence",data:{userId:S,status:z}})}async function Q(S,z){if(!c)return!0;let w=tr.get(S);if(!w)return!1;if(w.pendingAcks.get(z))w.pendingAcks.delete(z);if(w.userId)return pg(r,w.userId,z,o);return!0}async function W(S,z){if(!c)return 0;let w=tr.get(z);if(!w||w.userId!==S)return 0;let u=await Ig(r,S);if(u.length===0)return 0;t.info("[PubSub] Delivering pending messages",{userId:S,count:u.length});let B=0;for(let P of u){if(!w.subscribedTopics.has("*")&&!w.subscribedTopics.has(P.topic))continue;let J=JSON.stringify({type:"event",messageId:P.messageId,topic:P.topic,data:P.data,timestamp:P.sentAt,isRedelivery:!0});try{w.ws.send(J),w.pendingAcks.set(P.messageId,{sentAt:Date.now(),retryCount:P.retryCount+1}),await yg(r,S,P.messageId,o,a),B++}catch{break}}return B}return{generateClientId:l,registerClient:f,unregisterClient:b,updateClientTopics:g,getClientsByUser:h,getConnectedUserIds:k,getClientCount:$,sendToClient:m,broadcastEvent:R,broadcastToUser:X,broadcastToUserNoAck:C,broadcastPresenceToOthers:E,handleClientAck:Q,deliverPendingMessages:W,getPendingMessageCount:(S)=>Zg(r,S)}}function rf(n){let{logger:r}=n,t=nu(n);if(n.ack.enabled)vg();let o=null,c=new Z5;return c.onStart(()=>{if(n.cleanupIntervalMs>0)o=setInterval(()=>{r.info("[PubSub] Periodic cleanup running",{totalClients:t.getClientCount()})},n.cleanupIntervalMs);r.info("[PubSub] Routes initialized",{basePath:n.basePath,wsPath:n.wsPath,ackEnabled:n.ack.enabled,presenceEnabled:n.presence.enabled})}),c.onStop(()=>{if(o)clearInterval(o),o=null}),c.post(`${n.basePath}/:topic`,async({params:a,body:e,request:i,set:s})=>{let l=a.topic,f;try{if(!e){let g=await i.text();f=JSON.parse(g)}else f=e}catch{return s.status=200,{status:"DROP"}}r.info("[PubSub] Dapr event received",{topic:l,eventId:f.id,source:f.source});let b=f.data?.user_id;if(b)t.broadcastToUser(b,l,f);else t.broadcastEvent(l,f);return s.status=200,{status:"SUCCESS"}}),c.ws(n.wsPath,{idleTimeout:n.wsIdleTimeout,open(a){let e=a.data?.query||{};if(!e.userId){a.send(JSON.stringify({type:"error",error:"userId is required for WebSocket connection",timestamp:Date.now()})),a.close(4001,"userId is required");return}let i=t.generateClientId(),s=e.topics?.split(",").map((f)=>f.trim())||["*"];if(a.data.clientId=i,t.registerClient(i,a,e.userId,s),a.send(JSON.stringify({type:"connected",clientId:i,subscribedTopics:s,timestamp:Date.now()})),n.presence.enabled)t.broadcastPresenceToOthers(e.userId,"online");let l=e.userId;if(n.ack.enabled&&l)t.getPendingMessageCount(l).then((f)=>{if(f>0)r.info("[PubSub] Delivering pending messages",{userId:l,count:f}),t.deliverPendingMessages(l,i).catch(()=>{})}).catch(()=>{})},message(a,e){let i=a.data.clientId;try{let s=null;if(typeof e==="string")s=JSON.parse(e);else if(e&&typeof e==="object"){if(s="type"in e?e:null,typeof s==="string")s=JSON.parse(s)}if(!s?.type)return;switch(s.type){case"subscribe":if(Array.isArray(s.topics))t.updateClientTopics(i,s.topics),t.sendToClient(i,{type:"subscribed",topics:s.topics,timestamp:Date.now()});break;case"unsubscribe":r.info("[PubSub] Unsubscribe request",{clientId:i,topics:s.topics});break;case"ping":t.sendToClient(i,{type:"pong",timestamp:Date.now()});break;case"ack":if(s.messageId)t.handleClientAck(i,s.messageId).catch(()=>{});break}}catch{r.warn("[PubSub] Failed to parse client message",{clientId:i})}},close(a,e,i){let s=a.data.clientId;if(s)t.unregisterClient(s);r.info("[PubSub] Client disconnected",{clientId:s,code:e,reason:i})}}),{plugin:c,clientManager:t}}Dl();import{Elysia as y5,t as On}from"elysia";function ru(n){let{db:r,schemaTables:t,config:o,logger:c}=n,a=new Ml({db:r,schemaTables:t,config:o,logger:c}),e=o.endpoints?.basePath||"/verifications",i=new y5({prefix:e});return i.get("/status/:entity_name/:entity_id",async({params:s})=>{return{success:!0,data:await a.getStatus(s.entity_name,s.entity_id)}},{params:On.Object({entity_name:On.String(),entity_id:On.String()})}),i.post("/:entity_name/:entity_id/decide",async({params:s,body:l,request:f})=>{let b=f.headers.get("x-user-id");if(!b)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:b,decision:l.decision,reason:l.reason,signature_id:l.signature_id,diff:l.diff})},{params:On.Object({entity_name:On.String(),entity_id:On.String()}),body:On.Object({decision:On.Union([On.Literal("approved"),On.Literal("rejected")]),reason:On.Optional(On.String()),signature_id:On.Optional(On.String()),diff:On.Optional(On.Record(On.String(),On.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:On.Object({entity_name:On.String(),entity_id:On.String()})}),c.info(`[Verification] Routes registered at ${e}`),i}import{Elysia as R$}from"elysia";var tu=`/* basic theme */
64
64
  :root {
65
65
  --scalar-text-decoration: underline;
66
66
  --scalar-text-decoration-hover: underline;
@@ -1425,7 +1425,7 @@ data: ${t}
1425
1425
  *::selection {
1426
1426
  background-color: color-mix(in srgb, var(--scalar-color-accent), transparent 70%);
1427
1427
  }
1428
- `;var A={};Zt(A,{void:()=>Ch,util:()=>ln,unknown:()=>Xh,union:()=>Gh,undefined:()=>Wh,tuple:()=>Oh,transformer:()=>n$,symbol:()=>xh,string:()=>Ru,strictObject:()=>Ph,setErrorMap:()=>th,set:()=>Kh,record:()=>Fh,quotelessJson:()=>nh,promise:()=>yh,preprocess:()=>o$,pipeline:()=>c$,ostring:()=>a$,optional:()=>r$,onumber:()=>e$,oboolean:()=>i$,objectUtil:()=>tf,object:()=>Qh,number:()=>Au,nullable:()=>t$,null:()=>Yh,never:()=>Vh,nativeEnum:()=>Zh,nan:()=>zh,map:()=>jh,makeIssue:()=>ha,literal:()=>ph,lazy:()=>vh,late:()=>Dh,isValid:()=>eo,isDirty:()=>ve,isAsync:()=>_c,isAborted:()=>Te,intersection:()=>Nh,instanceof:()=>Hh,getParsedType:()=>At,getErrorMap:()=>uc,function:()=>Th,enum:()=>Ih,effect:()=>n$,discriminatedUnion:()=>qh,defaultErrorMap:()=>Ct,datetimeRegex:()=>hu,date:()=>Bh,custom:()=>ku,coerce:()=>s$,boolean:()=>Su,bigint:()=>Uh,array:()=>Lh,any:()=>Jh,addIssueToContext:()=>O,ZodVoid:()=>ka,ZodUnknown:()=>io,ZodUnion:()=>Rc,ZodUndefined:()=>$c,ZodType:()=>en,ZodTuple:()=>Et,ZodTransformer:()=>st,ZodSymbol:()=>$a,ZodString:()=>ct,ZodSet:()=>Go,ZodSchema:()=>en,ZodRecord:()=>Ra,ZodReadonly:()=>zc,ZodPromise:()=>qo,ZodPipeline:()=>Ea,ZodParsedType:()=>G,ZodOptional:()=>et,ZodObject:()=>Vn,ZodNumber:()=>so,ZodNullable:()=>Qt,ZodNull:()=>kc,ZodNever:()=>St,ZodNativeEnum:()=>Mc,ZodNaN:()=>Sa,ZodMap:()=>Aa,ZodLiteral:()=>Ec,ZodLazy:()=>Sc,ZodIssueCode:()=>V,ZodIntersection:()=>Ac,ZodFunction:()=>wc,ZodFirstPartyTypeKind:()=>rn,ZodError:()=>Sr,ZodEnum:()=>fo,ZodEffects:()=>st,ZodDiscriminatedUnion:()=>pe,ZodDefault:()=>Dc,ZodDate:()=>Qo,ZodCatch:()=>Hc,ZodBranded:()=>Ie,ZodBoolean:()=>hc,ZodBigInt:()=>lo,ZodArray:()=>at,ZodAny:()=>Po,Schema:()=>en,ParseStatus:()=>sr,OK:()=>ur,NEVER:()=>l$,INVALID:()=>y,EMPTY_PATH:()=>oh,DIRTY:()=>Lo,BRAND:()=>Mh});var ln;(function(n){n.assertEqual=(c)=>{};function r(c){}n.assertIs=r;function t(c){throw Error()}n.assertNever=t,n.arrayToEnum=(c)=>{let a={};for(let e of c)a[e]=e;return a},n.getValidEnumValues=(c)=>{let a=n.objectKeys(c).filter((i)=>typeof c[c[i]]!=="number"),e={};for(let i of a)e[i]=c[i];return n.objectValues(e)},n.objectValues=(c)=>{return n.objectKeys(c).map(function(a){return c[a]})},n.objectKeys=typeof Object.keys==="function"?(c)=>Object.keys(c):(c)=>{let a=[];for(let e in c)if(Object.prototype.hasOwnProperty.call(c,e))a.push(e);return a},n.find=(c,a)=>{for(let e of c)if(a(e))return e;return},n.isInteger=typeof Number.isInteger==="function"?(c)=>Number.isInteger(c):(c)=>typeof c==="number"&&Number.isFinite(c)&&Math.floor(c)===c;function o(c,a=" | "){return c.map((e)=>typeof e==="string"?`'${e}'`:e).join(a)}n.joinValues=o,n.jsonStringifyReplacer=(c,a)=>{if(typeof a==="bigint")return a.toString();return a}})(ln||(ln={}));var tf;(function(n){n.mergeShapes=(r,t)=>{return{...r,...t}}})(tf||(tf={}));var G=ln.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),At=(n)=>{switch(typeof n){case"undefined":return G.undefined;case"string":return G.string;case"number":return Number.isNaN(n)?G.nan:G.number;case"boolean":return G.boolean;case"function":return G.function;case"bigint":return G.bigint;case"symbol":return G.symbol;case"object":if(Array.isArray(n))return G.array;if(n===null)return G.null;if(n.then&&typeof n.then==="function"&&n.catch&&typeof n.catch==="function")return G.promise;if(typeof Map<"u"&&n instanceof Map)return G.map;if(typeof Set<"u"&&n instanceof Set)return G.set;if(typeof Date<"u"&&n instanceof Date)return G.date;return G.object;default:return G.unknown}};var V=ln.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"]),nh=(n)=>{return JSON.stringify(n,null,2).replace(/"([^"]+)":/g,"$1:")};class Sr 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(c){return c.message},t={_errors:[]},o=(c)=>{for(let a of c.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 e=t,i=0;while(i<a.path.length){let s=a.path[i];if(i!==a.path.length-1)e[s]=e[s]||{_errors:[]};else e[s]=e[s]||{_errors:[]},e[s]._errors.push(r(a));e=e[s],i++}}};return o(this),t}static assert(n){if(!(n instanceof Sr))throw Error(`Not a ZodError: ${n}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ln.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 c=o.path[0];r[c]=r[c]||[],r[c].push(n(o))}else t.push(n(o));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}}Sr.create=(n)=>{return new Sr(n)};var rh=(n,r)=>{let t;switch(n.code){case V.invalid_type:if(n.received===G.undefined)t="Required";else t=`Expected ${n.expected}, received ${n.received}`;break;case V.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,ln.jsonStringifyReplacer)}`;break;case V.unrecognized_keys:t=`Unrecognized key(s) in object: ${ln.joinValues(n.keys,", ")}`;break;case V.invalid_union:t="Invalid input";break;case V.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${ln.joinValues(n.options)}`;break;case V.invalid_enum_value:t=`Invalid enum value. Expected ${ln.joinValues(n.options)}, received '${n.received}'`;break;case V.invalid_arguments:t="Invalid function arguments";break;case V.invalid_return_type:t="Invalid function return type";break;case V.invalid_date:t="Invalid date";break;case V.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 ln.assertNever(n.validation);else if(n.validation!=="regex")t=`Invalid ${n.validation}`;else t="Invalid";break;case V.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 V.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 V.custom:t="Invalid input";break;case V.invalid_intersection_types:t="Intersection results could not be merged";break;case V.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case V.not_finite:t="Number must be finite";break;default:t=r.defaultError,ln.assertNever(n)}return{message:t}},Ct=rh;var gu=Ct;function th(n){gu=n}function uc(){return gu}var ha=(n)=>{let{data:r,path:t,errorMaps:o,issueData:c}=n,a=[...t,...c.path||[]],e={...c,path:a};if(c.message!==void 0)return{...c,path:a,message:c.message};let i="",s=o.filter((l)=>!!l).slice().reverse();for(let l of s)i=l(e,{data:r,defaultError:i}).message;return{...c,path:a,message:i}},oh=[];function O(n,r){let t=uc(),o=ha({issueData:r,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Ct?void 0:Ct].filter((c)=>!!c)});n.common.issues.push(o)}class sr{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 c=await o.key,a=await o.value;t.push({key:c,value:a})}return sr.mergeObjectSync(n,t)}static mergeObjectSync(n,r){let t={};for(let o of r){let{key:c,value:a}=o;if(c.status==="aborted")return y;if(a.status==="aborted")return y;if(c.status==="dirty")n.dirty();if(a.status==="dirty")n.dirty();if(c.value!=="__proto__"&&(typeof a.value<"u"||o.alwaysSet))t[c.value]=a.value}return{status:n.value,value:t}}}var y=Object.freeze({status:"aborted"}),Lo=(n)=>({status:"dirty",value:n}),ur=(n)=>({status:"valid",value:n}),Te=(n)=>n.status==="aborted",ve=(n)=>n.status==="dirty",eo=(n)=>n.status==="valid",_c=(n)=>typeof Promise<"u"&&n instanceof Promise;var T;(function(n){n.errToObj=(r)=>typeof r==="string"?{message:r}:r||{},n.toString=(r)=>typeof r==="string"?r:r?.message})(T||(T={}));class it{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 uu=(n,r)=>{if(eo(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 Sr(n.common.issues);return this._error=t,this._error}}}};function an(n){if(!n)return{};let{errorMap:r,invalid_type_error:t,required_error:o,description:c}=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:c};return{errorMap:(e,i)=>{let{message:s}=n;if(e.code==="invalid_enum_value")return{message:s??i.defaultError};if(typeof i.data>"u")return{message:s??o??i.defaultError};if(e.code!=="invalid_type")return{message:i.defaultError};return{message:s??t??i.defaultError}},description:c}}class en{get description(){return this._def.description}_getType(n){return At(n.data)}_getOrReturnCtx(n,r){return r||{common:n.parent.common,data:n.data,parsedType:At(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}_processInputParams(n){return{status:new sr,ctx:{common:n.parent.common,data:n.data,parsedType:At(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}}_parseSync(n){let r=this._parse(n);if(_c(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:At(n)},o=this._parseSync({data:n,path:t.path,parent:t});return uu(t,o)}"~validate"(n){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:At(n)};if(!this["~standard"].async)try{let t=this._parseSync({data:n,path:[],parent:r});return eo(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)=>eo(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:At(n)},o=this._parse({data:n,path:t.path,parent:t}),c=await(_c(o)?o:Promise.resolve(o));return uu(t,c)}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,c)=>{let a=n(o),e=()=>c.addIssue({code:V.custom,...t(o)});if(typeof Promise<"u"&&a instanceof Promise)return a.then((i)=>{if(!i)return e(),!1;else return!0});if(!a)return e(),!1;else return!0})}refinement(n,r){return this._refinement((t,o)=>{if(!n(t))return o.addIssue(typeof r==="function"?r(t,o):r),!1;else return!0})}_refinement(n){return new st({schema:this,typeName:rn.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 et.create(this,this._def)}nullable(){return Qt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return at.create(this)}promise(){return qo.create(this,this._def)}or(n){return Rc.create([this,n],this._def)}and(n){return Ac.create(this,n,this._def)}transform(n){return new st({...an(this._def),schema:this,typeName:rn.ZodEffects,effect:{type:"transform",transform:n}})}default(n){let r=typeof n==="function"?n:()=>n;return new Dc({...an(this._def),innerType:this,defaultValue:r,typeName:rn.ZodDefault})}brand(){return new Ie({typeName:rn.ZodBranded,type:this,...an(this._def)})}catch(n){let r=typeof n==="function"?n:()=>n;return new Hc({...an(this._def),innerType:this,catchValue:r,typeName:rn.ZodCatch})}describe(n){return new this.constructor({...this._def,description:n})}pipe(n){return Ea.create(this,n)}readonly(){return zc.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var ch=/^c[^\s-]{8,}$/i,ah=/^[0-9a-z]+$/,eh=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ih=/^[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,sh=/^[a-z0-9_-]{21}$/i,lh=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,fh=/^[-+]?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)?)??$/,dh=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,bh="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",of,gh=/^(?:(?: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])$/,uh=/^(?:(?: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])$/,_h=/^(([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]))$/,mh=/^(([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])$/,wh=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,hh=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,mu="((\\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])))",$h=new RegExp(`^${mu}$`);function wu(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 kh(n){return new RegExp(`^${wu(n)}$`)}function hu(n){let r=`${mu}T${wu(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 Rh(n,r){if((r==="v4"||!r)&&gh.test(n))return!0;if((r==="v6"||!r)&&_h.test(n))return!0;return!1}function Ah(n,r){if(!lh.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,"="),c=JSON.parse(atob(o));if(typeof c!=="object"||c===null)return!1;if("typ"in c&&c?.typ!=="JWT")return!1;if(!c.alg)return!1;if(r&&c.alg!==r)return!1;return!0}catch{return!1}}function Sh(n,r){if((r==="v4"||!r)&&uh.test(n))return!0;if((r==="v6"||!r)&&mh.test(n))return!0;return!1}class ct extends en{_parse(n){if(this._def.coerce)n.data=String(n.data);if(this._getType(n)!==G.string){let c=this._getOrReturnCtx(n);return O(c,{code:V.invalid_type,expected:G.string,received:c.parsedType}),y}let t=new sr,o=void 0;for(let c of this._def.checks)if(c.kind==="min"){if(n.data.length<c.value)o=this._getOrReturnCtx(n,o),O(o,{code:V.too_small,minimum:c.value,type:"string",inclusive:!0,exact:!1,message:c.message}),t.dirty()}else if(c.kind==="max"){if(n.data.length>c.value)o=this._getOrReturnCtx(n,o),O(o,{code:V.too_big,maximum:c.value,type:"string",inclusive:!0,exact:!1,message:c.message}),t.dirty()}else if(c.kind==="length"){let a=n.data.length>c.value,e=n.data.length<c.value;if(a||e){if(o=this._getOrReturnCtx(n,o),a)O(o,{code:V.too_big,maximum:c.value,type:"string",inclusive:!0,exact:!0,message:c.message});else if(e)O(o,{code:V.too_small,minimum:c.value,type:"string",inclusive:!0,exact:!0,message:c.message});t.dirty()}}else if(c.kind==="email"){if(!dh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"email",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="emoji"){if(!of)of=new RegExp(bh,"u");if(!of.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"emoji",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="uuid"){if(!ih.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"uuid",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="nanoid"){if(!sh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"nanoid",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="cuid"){if(!ch.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"cuid",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="cuid2"){if(!ah.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"cuid2",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="ulid"){if(!eh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"ulid",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="url")try{new URL(n.data)}catch{o=this._getOrReturnCtx(n,o),O(o,{validation:"url",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="regex"){if(c.regex.lastIndex=0,!c.regex.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"regex",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="trim")n.data=n.data.trim();else if(c.kind==="includes"){if(!n.data.includes(c.value,c.position))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:{includes:c.value,position:c.position},message:c.message}),t.dirty()}else if(c.kind==="toLowerCase")n.data=n.data.toLowerCase();else if(c.kind==="toUpperCase")n.data=n.data.toUpperCase();else if(c.kind==="startsWith"){if(!n.data.startsWith(c.value))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:{startsWith:c.value},message:c.message}),t.dirty()}else if(c.kind==="endsWith"){if(!n.data.endsWith(c.value))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:{endsWith:c.value},message:c.message}),t.dirty()}else if(c.kind==="datetime"){if(!hu(c).test(n.data))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:"datetime",message:c.message}),t.dirty()}else if(c.kind==="date"){if(!$h.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:"date",message:c.message}),t.dirty()}else if(c.kind==="time"){if(!kh(c).test(n.data))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:"time",message:c.message}),t.dirty()}else if(c.kind==="duration"){if(!fh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"duration",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="ip"){if(!Rh(n.data,c.version))o=this._getOrReturnCtx(n,o),O(o,{validation:"ip",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="jwt"){if(!Ah(n.data,c.alg))o=this._getOrReturnCtx(n,o),O(o,{validation:"jwt",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="cidr"){if(!Sh(n.data,c.version))o=this._getOrReturnCtx(n,o),O(o,{validation:"cidr",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="base64"){if(!wh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"base64",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="base64url"){if(!hh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"base64url",code:V.invalid_string,message:c.message}),t.dirty()}else ln.assertNever(c);return{status:t.value,value:n.data}}_regex(n,r,t){return this.refinement((o)=>n.test(o),{validation:r,code:V.invalid_string,...T.errToObj(t)})}_addCheck(n){return new ct({...this._def,checks:[...this._def.checks,n]})}email(n){return this._addCheck({kind:"email",...T.errToObj(n)})}url(n){return this._addCheck({kind:"url",...T.errToObj(n)})}emoji(n){return this._addCheck({kind:"emoji",...T.errToObj(n)})}uuid(n){return this._addCheck({kind:"uuid",...T.errToObj(n)})}nanoid(n){return this._addCheck({kind:"nanoid",...T.errToObj(n)})}cuid(n){return this._addCheck({kind:"cuid",...T.errToObj(n)})}cuid2(n){return this._addCheck({kind:"cuid2",...T.errToObj(n)})}ulid(n){return this._addCheck({kind:"ulid",...T.errToObj(n)})}base64(n){return this._addCheck({kind:"base64",...T.errToObj(n)})}base64url(n){return this._addCheck({kind:"base64url",...T.errToObj(n)})}jwt(n){return this._addCheck({kind:"jwt",...T.errToObj(n)})}ip(n){return this._addCheck({kind:"ip",...T.errToObj(n)})}cidr(n){return this._addCheck({kind:"cidr",...T.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,...T.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,...T.errToObj(n?.message)})}duration(n){return this._addCheck({kind:"duration",...T.errToObj(n)})}regex(n,r){return this._addCheck({kind:"regex",regex:n,...T.errToObj(r)})}includes(n,r){return this._addCheck({kind:"includes",value:n,position:r?.position,...T.errToObj(r?.message)})}startsWith(n,r){return this._addCheck({kind:"startsWith",value:n,...T.errToObj(r)})}endsWith(n,r){return this._addCheck({kind:"endsWith",value:n,...T.errToObj(r)})}min(n,r){return this._addCheck({kind:"min",value:n,...T.errToObj(r)})}max(n,r){return this._addCheck({kind:"max",value:n,...T.errToObj(r)})}length(n,r){return this._addCheck({kind:"length",value:n,...T.errToObj(r)})}nonempty(n){return this.min(1,T.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:rn.ZodString,coerce:n?.coerce??!1,...an(n)})};function Eh(n,r){let t=(n.toString().split(".")[1]||"").length,o=(r.toString().split(".")[1]||"").length,c=t>o?t:o,a=Number.parseInt(n.toFixed(c).replace(".","")),e=Number.parseInt(r.toFixed(c).replace(".",""));return a%e/10**c}class so extends en{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)!==G.number){let c=this._getOrReturnCtx(n);return O(c,{code:V.invalid_type,expected:G.number,received:c.parsedType}),y}let t=void 0,o=new sr;for(let c of this._def.checks)if(c.kind==="int"){if(!ln.isInteger(n.data))t=this._getOrReturnCtx(n,t),O(t,{code:V.invalid_type,expected:"integer",received:"float",message:c.message}),o.dirty()}else if(c.kind==="min"){if(c.inclusive?n.data<c.value:n.data<=c.value)t=this._getOrReturnCtx(n,t),O(t,{code:V.too_small,minimum:c.value,type:"number",inclusive:c.inclusive,exact:!1,message:c.message}),o.dirty()}else if(c.kind==="max"){if(c.inclusive?n.data>c.value:n.data>=c.value)t=this._getOrReturnCtx(n,t),O(t,{code:V.too_big,maximum:c.value,type:"number",inclusive:c.inclusive,exact:!1,message:c.message}),o.dirty()}else if(c.kind==="multipleOf"){if(Eh(n.data,c.value)!==0)t=this._getOrReturnCtx(n,t),O(t,{code:V.not_multiple_of,multipleOf:c.value,message:c.message}),o.dirty()}else if(c.kind==="finite"){if(!Number.isFinite(n.data))t=this._getOrReturnCtx(n,t),O(t,{code:V.not_finite,message:c.message}),o.dirty()}else ln.assertNever(c);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,T.toString(r))}gt(n,r){return this.setLimit("min",n,!1,T.toString(r))}lte(n,r){return this.setLimit("max",n,!0,T.toString(r))}lt(n,r){return this.setLimit("max",n,!1,T.toString(r))}setLimit(n,r,t,o){return new so({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:T.toString(o)}]})}_addCheck(n){return new so({...this._def,checks:[...this._def.checks,n]})}int(n){return this._addCheck({kind:"int",message:T.toString(n)})}positive(n){return this._addCheck({kind:"min",value:0,inclusive:!1,message:T.toString(n)})}negative(n){return this._addCheck({kind:"max",value:0,inclusive:!1,message:T.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:0,inclusive:!0,message:T.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:0,inclusive:!0,message:T.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:T.toString(r)})}finite(n){return this._addCheck({kind:"finite",message:T.toString(n)})}safe(n){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:T.toString(n)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:T.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"&&ln.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)}}so.create=(n)=>{return new so({checks:[],typeName:rn.ZodNumber,coerce:n?.coerce||!1,...an(n)})};class lo extends en{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)!==G.bigint)return this._getInvalidInput(n);let t=void 0,o=new sr;for(let c of this._def.checks)if(c.kind==="min"){if(c.inclusive?n.data<c.value:n.data<=c.value)t=this._getOrReturnCtx(n,t),O(t,{code:V.too_small,type:"bigint",minimum:c.value,inclusive:c.inclusive,message:c.message}),o.dirty()}else if(c.kind==="max"){if(c.inclusive?n.data>c.value:n.data>=c.value)t=this._getOrReturnCtx(n,t),O(t,{code:V.too_big,type:"bigint",maximum:c.value,inclusive:c.inclusive,message:c.message}),o.dirty()}else if(c.kind==="multipleOf"){if(n.data%c.value!==BigInt(0))t=this._getOrReturnCtx(n,t),O(t,{code:V.not_multiple_of,multipleOf:c.value,message:c.message}),o.dirty()}else ln.assertNever(c);return{status:o.value,value:n.data}}_getInvalidInput(n){let r=this._getOrReturnCtx(n);return O(r,{code:V.invalid_type,expected:G.bigint,received:r.parsedType}),y}gte(n,r){return this.setLimit("min",n,!0,T.toString(r))}gt(n,r){return this.setLimit("min",n,!1,T.toString(r))}lte(n,r){return this.setLimit("max",n,!0,T.toString(r))}lt(n,r){return this.setLimit("max",n,!1,T.toString(r))}setLimit(n,r,t,o){return new lo({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:T.toString(o)}]})}_addCheck(n){return new lo({...this._def,checks:[...this._def.checks,n]})}positive(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:T.toString(n)})}negative(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:T.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:T.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:T.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:T.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}}lo.create=(n)=>{return new lo({checks:[],typeName:rn.ZodBigInt,coerce:n?.coerce??!1,...an(n)})};class hc extends en{_parse(n){if(this._def.coerce)n.data=Boolean(n.data);if(this._getType(n)!==G.boolean){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.boolean,received:t.parsedType}),y}return ur(n.data)}}hc.create=(n)=>{return new hc({typeName:rn.ZodBoolean,coerce:n?.coerce||!1,...an(n)})};class Qo extends en{_parse(n){if(this._def.coerce)n.data=new Date(n.data);if(this._getType(n)!==G.date){let c=this._getOrReturnCtx(n);return O(c,{code:V.invalid_type,expected:G.date,received:c.parsedType}),y}if(Number.isNaN(n.data.getTime())){let c=this._getOrReturnCtx(n);return O(c,{code:V.invalid_date}),y}let t=new sr,o=void 0;for(let c of this._def.checks)if(c.kind==="min"){if(n.data.getTime()<c.value)o=this._getOrReturnCtx(n,o),O(o,{code:V.too_small,message:c.message,inclusive:!0,exact:!1,minimum:c.value,type:"date"}),t.dirty()}else if(c.kind==="max"){if(n.data.getTime()>c.value)o=this._getOrReturnCtx(n,o),O(o,{code:V.too_big,message:c.message,inclusive:!0,exact:!1,maximum:c.value,type:"date"}),t.dirty()}else ln.assertNever(c);return{status:t.value,value:new Date(n.data.getTime())}}_addCheck(n){return new Qo({...this._def,checks:[...this._def.checks,n]})}min(n,r){return this._addCheck({kind:"min",value:n.getTime(),message:T.toString(r)})}max(n,r){return this._addCheck({kind:"max",value:n.getTime(),message:T.toString(r)})}get minDate(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n!=null?new Date(n):null}get maxDate(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n!=null?new Date(n):null}}Qo.create=(n)=>{return new Qo({checks:[],coerce:n?.coerce||!1,typeName:rn.ZodDate,...an(n)})};class $a extends en{_parse(n){if(this._getType(n)!==G.symbol){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.symbol,received:t.parsedType}),y}return ur(n.data)}}$a.create=(n)=>{return new $a({typeName:rn.ZodSymbol,...an(n)})};class $c extends en{_parse(n){if(this._getType(n)!==G.undefined){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.undefined,received:t.parsedType}),y}return ur(n.data)}}$c.create=(n)=>{return new $c({typeName:rn.ZodUndefined,...an(n)})};class kc extends en{_parse(n){if(this._getType(n)!==G.null){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.null,received:t.parsedType}),y}return ur(n.data)}}kc.create=(n)=>{return new kc({typeName:rn.ZodNull,...an(n)})};class Po extends en{constructor(){super(...arguments);this._any=!0}_parse(n){return ur(n.data)}}Po.create=(n)=>{return new Po({typeName:rn.ZodAny,...an(n)})};class io extends en{constructor(){super(...arguments);this._unknown=!0}_parse(n){return ur(n.data)}}io.create=(n)=>{return new io({typeName:rn.ZodUnknown,...an(n)})};class St extends en{_parse(n){let r=this._getOrReturnCtx(n);return O(r,{code:V.invalid_type,expected:G.never,received:r.parsedType}),y}}St.create=(n)=>{return new St({typeName:rn.ZodNever,...an(n)})};class ka extends en{_parse(n){if(this._getType(n)!==G.undefined){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.void,received:t.parsedType}),y}return ur(n.data)}}ka.create=(n)=>{return new ka({typeName:rn.ZodVoid,...an(n)})};class at extends en{_parse(n){let{ctx:r,status:t}=this._processInputParams(n),o=this._def;if(r.parsedType!==G.array)return O(r,{code:V.invalid_type,expected:G.array,received:r.parsedType}),y;if(o.exactLength!==null){let a=r.data.length>o.exactLength.value,e=r.data.length<o.exactLength.value;if(a||e)O(r,{code:a?V.too_big:V.too_small,minimum:e?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)O(r,{code:V.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)O(r,{code:V.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,e)=>{return o.type._parseAsync(new it(r,a,r.path,e))})).then((a)=>{return sr.mergeArray(t,a)});let c=[...r.data].map((a,e)=>{return o.type._parseSync(new it(r,a,r.path,e))});return sr.mergeArray(t,c)}get element(){return this._def.type}min(n,r){return new at({...this._def,minLength:{value:n,message:T.toString(r)}})}max(n,r){return new at({...this._def,maxLength:{value:n,message:T.toString(r)}})}length(n,r){return new at({...this._def,exactLength:{value:n,message:T.toString(r)}})}nonempty(n){return this.min(1,n)}}at.create=(n,r)=>{return new at({type:n,minLength:null,maxLength:null,exactLength:null,typeName:rn.ZodArray,...an(r)})};function mc(n){if(n instanceof Vn){let r={};for(let t in n.shape){let o=n.shape[t];r[t]=et.create(mc(o))}return new Vn({...n._def,shape:()=>r})}else if(n instanceof at)return new at({...n._def,type:mc(n.element)});else if(n instanceof et)return et.create(mc(n.unwrap()));else if(n instanceof Qt)return Qt.create(mc(n.unwrap()));else if(n instanceof Et)return Et.create(n.items.map((r)=>mc(r)));else return n}class Vn extends en{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=ln.objectKeys(n);return this._cached={shape:n,keys:r},this._cached}_parse(n){if(this._getType(n)!==G.object){let s=this._getOrReturnCtx(n);return O(s,{code:V.invalid_type,expected:G.object,received:s.parsedType}),y}let{status:t,ctx:o}=this._processInputParams(n),{shape:c,keys:a}=this._getCached(),e=[];if(!(this._def.catchall instanceof St&&this._def.unknownKeys==="strip")){for(let s in o.data)if(!a.includes(s))e.push(s)}let i=[];for(let s of a){let l=c[s],f=o.data[s];i.push({key:{status:"valid",value:s},value:l._parse(new it(o,f,o.path,s)),alwaysSet:s in o.data})}if(this._def.catchall instanceof St){let s=this._def.unknownKeys;if(s==="passthrough")for(let l of e)i.push({key:{status:"valid",value:l},value:{status:"valid",value:o.data[l]}});else if(s==="strict"){if(e.length>0)O(o,{code:V.unrecognized_keys,keys:e}),t.dirty()}else if(s==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let s=this._def.catchall;for(let l of e){let f=o.data[l];i.push({key:{status:"valid",value:l},value:s._parse(new it(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,b=await l.value;s.push({key:f,value:b,alwaysSet:l.alwaysSet})}return s}).then((s)=>{return sr.mergeObjectSync(t,s)});else return sr.mergeObjectSync(t,i)}get shape(){return this._def.shape()}strict(n){return T.errToObj,new Vn({...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:T.errToObj(n).message??o};return{message:o}}}:{}})}strip(){return new Vn({...this._def,unknownKeys:"strip"})}passthrough(){return new Vn({...this._def,unknownKeys:"passthrough"})}extend(n){return new Vn({...this._def,shape:()=>({...this._def.shape(),...n})})}merge(n){return new Vn({unknownKeys:n._def.unknownKeys,catchall:n._def.catchall,shape:()=>({...this._def.shape(),...n._def.shape()}),typeName:rn.ZodObject})}setKey(n,r){return this.augment({[n]:r})}catchall(n){return new Vn({...this._def,catchall:n})}pick(n){let r={};for(let t of ln.objectKeys(n))if(n[t]&&this.shape[t])r[t]=this.shape[t];return new Vn({...this._def,shape:()=>r})}omit(n){let r={};for(let t of ln.objectKeys(this.shape))if(!n[t])r[t]=this.shape[t];return new Vn({...this._def,shape:()=>r})}deepPartial(){return mc(this)}partial(n){let r={};for(let t of ln.objectKeys(this.shape)){let o=this.shape[t];if(n&&!n[t])r[t]=o;else r[t]=o.optional()}return new Vn({...this._def,shape:()=>r})}required(n){let r={};for(let t of ln.objectKeys(this.shape))if(n&&!n[t])r[t]=this.shape[t];else{let c=this.shape[t];while(c instanceof et)c=c._def.innerType;r[t]=c}return new Vn({...this._def,shape:()=>r})}keyof(){return $u(ln.objectKeys(this.shape))}}Vn.create=(n,r)=>{return new Vn({shape:()=>n,unknownKeys:"strip",catchall:St.create(),typeName:rn.ZodObject,...an(r)})};Vn.strictCreate=(n,r)=>{return new Vn({shape:()=>n,unknownKeys:"strict",catchall:St.create(),typeName:rn.ZodObject,...an(r)})};Vn.lazycreate=(n,r)=>{return new Vn({shape:n,unknownKeys:"strip",catchall:St.create(),typeName:rn.ZodObject,...an(r)})};class Rc extends en{_parse(n){let{ctx:r}=this._processInputParams(n),t=this._def.options;function o(c){for(let e of c)if(e.result.status==="valid")return e.result;for(let e of c)if(e.result.status==="dirty")return r.common.issues.push(...e.ctx.common.issues),e.result;let a=c.map((e)=>new Sr(e.ctx.common.issues));return O(r,{code:V.invalid_union,unionErrors:a}),y}if(r.common.async)return Promise.all(t.map(async(c)=>{let a={...r,common:{...r.common,issues:[]},parent:null};return{result:await c._parseAsync({data:r.data,path:r.path,parent:a}),ctx:a}})).then(o);else{let c=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"&&!c)c={result:l,ctx:s};if(s.common.issues.length)a.push(s.common.issues)}if(c)return r.common.issues.push(...c.ctx.common.issues),c.result;let e=a.map((i)=>new Sr(i));return O(r,{code:V.invalid_union,unionErrors:e}),y}}get options(){return this._def.options}}Rc.create=(n,r)=>{return new Rc({options:n,typeName:rn.ZodUnion,...an(r)})};var Lt=(n)=>{if(n instanceof Sc)return Lt(n.schema);else if(n instanceof st)return Lt(n.innerType());else if(n instanceof Ec)return[n.value];else if(n instanceof fo)return n.options;else if(n instanceof Mc)return ln.objectValues(n.enum);else if(n instanceof Dc)return Lt(n._def.innerType);else if(n instanceof $c)return[void 0];else if(n instanceof kc)return[null];else if(n instanceof et)return[void 0,...Lt(n.unwrap())];else if(n instanceof Qt)return[null,...Lt(n.unwrap())];else if(n instanceof Ie)return Lt(n.unwrap());else if(n instanceof zc)return Lt(n.unwrap());else if(n instanceof Hc)return Lt(n._def.innerType);else return[]};class pe extends en{_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==G.object)return O(r,{code:V.invalid_type,expected:G.object,received:r.parsedType}),y;let t=this.discriminator,o=r.data[t],c=this.optionsMap.get(o);if(!c)return O(r,{code:V.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),y;if(r.common.async)return c._parseAsync({data:r.data,path:r.path,parent:r});else return c._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 c of r){let a=Lt(c.shape[n]);if(!a.length)throw Error(`A discriminator value for key \`${n}\` could not be extracted from all schema options`);for(let e of a){if(o.has(e))throw Error(`Discriminator property ${String(n)} has duplicate value ${String(e)}`);o.set(e,c)}}return new pe({typeName:rn.ZodDiscriminatedUnion,discriminator:n,options:r,optionsMap:o,...an(t)})}}function cf(n,r){let t=At(n),o=At(r);if(n===r)return{valid:!0,data:n};else if(t===G.object&&o===G.object){let c=ln.objectKeys(r),a=ln.objectKeys(n).filter((i)=>c.indexOf(i)!==-1),e={...n,...r};for(let i of a){let s=cf(n[i],r[i]);if(!s.valid)return{valid:!1};e[i]=s.data}return{valid:!0,data:e}}else if(t===G.array&&o===G.array){if(n.length!==r.length)return{valid:!1};let c=[];for(let a=0;a<n.length;a++){let e=n[a],i=r[a],s=cf(e,i);if(!s.valid)return{valid:!1};c.push(s.data)}return{valid:!0,data:c}}else if(t===G.date&&o===G.date&&+n===+r)return{valid:!0,data:n};else return{valid:!1}}class Ac extends en{_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=(c,a)=>{if(Te(c)||Te(a))return y;let e=cf(c.value,a.value);if(!e.valid)return O(t,{code:V.invalid_intersection_types}),y;if(ve(c)||ve(a))r.dirty();return{status:r.value,value:e.data}};if(t.common.async)return Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([c,a])=>o(c,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}))}}Ac.create=(n,r,t)=>{return new Ac({left:n,right:r,typeName:rn.ZodIntersection,...an(t)})};class Et extends en{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==G.array)return O(t,{code:V.invalid_type,expected:G.array,received:t.parsedType}),y;if(t.data.length<this._def.items.length)return O(t,{code:V.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)O(t,{code:V.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty();let c=[...t.data].map((a,e)=>{let i=this._def.items[e]||this._def.rest;if(!i)return null;return i._parse(new it(t,a,t.path,e))}).filter((a)=>!!a);if(t.common.async)return Promise.all(c).then((a)=>{return sr.mergeArray(r,a)});else return sr.mergeArray(r,c)}get items(){return this._def.items}rest(n){return new Et({...this._def,rest:n})}}Et.create=(n,r)=>{if(!Array.isArray(n))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new Et({items:n,typeName:rn.ZodTuple,rest:null,...an(r)})};class Ra extends en{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!==G.object)return O(t,{code:V.invalid_type,expected:G.object,received:t.parsedType}),y;let o=[],c=this._def.keyType,a=this._def.valueType;for(let e in t.data)o.push({key:c._parse(new it(t,e,t.path,e)),value:a._parse(new it(t,t.data[e],t.path,e)),alwaysSet:e in t.data});if(t.common.async)return sr.mergeObjectAsync(r,o);else return sr.mergeObjectSync(r,o)}get element(){return this._def.valueType}static create(n,r,t){if(r instanceof en)return new Ra({keyType:n,valueType:r,typeName:rn.ZodRecord,...an(t)});return new Ra({keyType:ct.create(),valueType:n,typeName:rn.ZodRecord,...an(r)})}}class Aa extends en{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!==G.map)return O(t,{code:V.invalid_type,expected:G.map,received:t.parsedType}),y;let o=this._def.keyType,c=this._def.valueType,a=[...t.data.entries()].map(([e,i],s)=>{return{key:o._parse(new it(t,e,t.path,[s,"key"])),value:c._parse(new it(t,i,t.path,[s,"value"]))}});if(t.common.async){let e=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();e.set(s.value,l.value)}return{status:r.value,value:e}})}else{let e=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();e.set(s.value,l.value)}return{status:r.value,value:e}}}}Aa.create=(n,r,t)=>{return new Aa({valueType:r,keyType:n,typeName:rn.ZodMap,...an(t)})};class Go extends en{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==G.set)return O(t,{code:V.invalid_type,expected:G.set,received:t.parsedType}),y;let o=this._def;if(o.minSize!==null){if(t.data.size<o.minSize.value)O(t,{code:V.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)O(t,{code:V.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty()}let c=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 e=[...t.data.values()].map((i,s)=>c._parse(new it(t,i,t.path,s)));if(t.common.async)return Promise.all(e).then((i)=>a(i));else return a(e)}min(n,r){return new Go({...this._def,minSize:{value:n,message:T.toString(r)}})}max(n,r){return new Go({...this._def,maxSize:{value:n,message:T.toString(r)}})}size(n,r){return this.min(n,r).max(n,r)}nonempty(n){return this.min(1,n)}}Go.create=(n,r)=>{return new Go({valueType:n,minSize:null,maxSize:null,typeName:rn.ZodSet,...an(r)})};class wc extends en{constructor(){super(...arguments);this.validate=this.implement}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==G.function)return O(r,{code:V.invalid_type,expected:G.function,received:r.parsedType}),y;function t(e,i){return ha({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,uc(),Ct].filter((s)=>!!s),issueData:{code:V.invalid_arguments,argumentsError:i}})}function o(e,i){return ha({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,uc(),Ct].filter((s)=>!!s),issueData:{code:V.invalid_return_type,returnTypeError:i}})}let c={errorMap:r.common.contextualErrorMap},a=r.data;if(this._def.returns instanceof qo){let e=this;return ur(async function(...i){let s=new Sr([]),l=await e._def.args.parseAsync(i,c).catch((g)=>{throw s.addIssue(t(i,g)),s}),f=await Reflect.apply(a,this,l);return await e._def.returns._def.type.parseAsync(f,c).catch((g)=>{throw s.addIssue(o(f,g)),s})})}else{let e=this;return ur(function(...i){let s=e._def.args.safeParse(i,c);if(!s.success)throw new Sr([t(i,s.error)]);let l=Reflect.apply(a,this,s.data),f=e._def.returns.safeParse(l,c);if(!f.success)throw new Sr([o(l,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...n){return new wc({...this._def,args:Et.create(n).rest(io.create())})}returns(n){return new wc({...this._def,returns:n})}implement(n){return this.parse(n)}strictImplement(n){return this.parse(n)}static create(n,r,t){return new wc({args:n?n:Et.create([]).rest(io.create()),returns:r||io.create(),typeName:rn.ZodFunction,...an(t)})}}class Sc extends en{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})}}Sc.create=(n,r)=>{return new Sc({getter:n,typeName:rn.ZodLazy,...an(r)})};class Ec extends en{_parse(n){if(n.data!==this._def.value){let r=this._getOrReturnCtx(n);return O(r,{received:r.data,code:V.invalid_literal,expected:this._def.value}),y}return{status:"valid",value:n.data}}get value(){return this._def.value}}Ec.create=(n,r)=>{return new Ec({value:n,typeName:rn.ZodLiteral,...an(r)})};function $u(n,r){return new fo({values:n,typeName:rn.ZodEnum,...an(r)})}class fo extends en{_parse(n){if(typeof n.data!=="string"){let r=this._getOrReturnCtx(n),t=this._def.values;return O(r,{expected:ln.joinValues(t),received:r.parsedType,code:V.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 O(r,{received:r.data,code:V.invalid_enum_value,options:t}),y}return ur(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 fo.create(n,{...this._def,...r})}exclude(n,r=this._def){return fo.create(this.options.filter((t)=>!n.includes(t)),{...this._def,...r})}}fo.create=$u;class Mc extends en{_parse(n){let r=ln.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(n);if(t.parsedType!==G.string&&t.parsedType!==G.number){let o=ln.objectValues(r);return O(t,{expected:ln.joinValues(o),received:t.parsedType,code:V.invalid_type}),y}if(!this._cache)this._cache=new Set(ln.getValidEnumValues(this._def.values));if(!this._cache.has(n.data)){let o=ln.objectValues(r);return O(t,{received:t.data,code:V.invalid_enum_value,options:o}),y}return ur(n.data)}get enum(){return this._def.values}}Mc.create=(n,r)=>{return new Mc({values:n,typeName:rn.ZodNativeEnum,...an(r)})};class qo extends en{unwrap(){return this._def.type}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==G.promise&&r.common.async===!1)return O(r,{code:V.invalid_type,expected:G.promise,received:r.parsedType}),y;let t=r.parsedType===G.promise?r.data:Promise.resolve(r.data);return ur(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:rn.ZodPromise,...an(r)})};class st extends en{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===rn.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=this._def.effect||null,c={addIssue:(a)=>{if(O(t,a),a.fatal)r.abort();else r.dirty()},get path(){return t.path}};if(c.addIssue=c.addIssue.bind(c),o.type==="preprocess"){let a=o.transform(t.data,c);if(t.common.async)return Promise.resolve(a).then(async(e)=>{if(r.value==="aborted")return y;let i=await this._def.schema._parseAsync({data:e,path:t.path,parent:t});if(i.status==="aborted")return y;if(i.status==="dirty")return Lo(i.value);if(r.value==="dirty")return Lo(i.value);return i});else{if(r.value==="aborted")return y;let e=this._def.schema._parseSync({data:a,path:t.path,parent:t});if(e.status==="aborted")return y;if(e.status==="dirty")return Lo(e.value);if(r.value==="dirty")return Lo(e.value);return e}}if(o.type==="refinement"){let a=(e)=>{let i=o.refinement(e,c);if(t.common.async)return Promise.resolve(i);if(i instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(t.common.async===!1){let e=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(e.status==="aborted")return y;if(e.status==="dirty")r.dirty();return a(e.value),{status:r.value,value:e.value}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((e)=>{if(e.status==="aborted")return y;if(e.status==="dirty")r.dirty();return a(e.value).then(()=>{return{status:r.value,value:e.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(!eo(a))return y;let e=o.transform(a.value,c);if(e instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:e}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((a)=>{if(!eo(a))return y;return Promise.resolve(o.transform(a.value,c)).then((e)=>({status:r.value,value:e}))});ln.assertNever(o)}}st.create=(n,r,t)=>{return new st({schema:n,typeName:rn.ZodEffects,effect:r,...an(t)})};st.createWithPreprocess=(n,r,t)=>{return new st({schema:r,effect:{type:"preprocess",transform:n},typeName:rn.ZodEffects,...an(t)})};class et extends en{_parse(n){if(this._getType(n)===G.undefined)return ur(void 0);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}et.create=(n,r)=>{return new et({innerType:n,typeName:rn.ZodOptional,...an(r)})};class Qt extends en{_parse(n){if(this._getType(n)===G.null)return ur(null);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}Qt.create=(n,r)=>{return new Qt({innerType:n,typeName:rn.ZodNullable,...an(r)})};class Dc extends en{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;if(r.parsedType===G.undefined)t=this._def.defaultValue();return this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}Dc.create=(n,r)=>{return new Dc({innerType:n,typeName:rn.ZodDefault,defaultValue:typeof r.default==="function"?r.default:()=>r.default,...an(r)})};class Hc extends en{_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(_c(o))return o.then((c)=>{return{status:"valid",value:c.status==="valid"?c.value:this._def.catchValue({get error(){return new Sr(t.common.issues)},input:t.data})}});else return{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Sr(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}}Hc.create=(n,r)=>{return new Hc({innerType:n,typeName:rn.ZodCatch,catchValue:typeof r.catch==="function"?r.catch:()=>r.catch,...an(r)})};class Sa extends en{_parse(n){if(this._getType(n)!==G.nan){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.nan,received:t.parsedType}),y}return{status:"valid",value:n.data}}}Sa.create=(n)=>{return new Sa({typeName:rn.ZodNaN,...an(n)})};var Mh=Symbol("zod_brand");class Ie extends en{_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 Ea extends en{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.common.async)return(async()=>{let c=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});if(c.status==="aborted")return y;if(c.status==="dirty")return r.dirty(),Lo(c.value);else return this._def.out._parseAsync({data:c.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 Ea({in:n,out:r,typeName:rn.ZodPipeline})}}class zc extends en{_parse(n){let r=this._def.innerType._parse(n),t=(o)=>{if(eo(o))o.value=Object.freeze(o.value);return o};return _c(r)?r.then((o)=>t(o)):t(r)}unwrap(){return this._def.innerType}}zc.create=(n,r)=>{return new zc({innerType:n,typeName:rn.ZodReadonly,...an(r)})};function _u(n,r){let t=typeof n==="function"?n(r):typeof n==="string"?{message:n}:n;return typeof t==="string"?{message:t}:t}function ku(n,r={},t){if(n)return Po.create().superRefine((o,c)=>{let a=n(o);if(a instanceof Promise)return a.then((e)=>{if(!e){let i=_u(r,o),s=i.fatal??t??!0;c.addIssue({code:"custom",...i,fatal:s})}});if(!a){let e=_u(r,o),i=e.fatal??t??!0;c.addIssue({code:"custom",...e,fatal:i})}return});return Po.create()}var Dh={object:Vn.lazycreate},rn;(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"})(rn||(rn={}));var Hh=(n,r={message:`Input not instance of ${n.name}`})=>ku((t)=>t instanceof n,r),Ru=ct.create,Au=so.create,zh=Sa.create,Uh=lo.create,Su=hc.create,Bh=Qo.create,xh=$a.create,Wh=$c.create,Yh=kc.create,Jh=Po.create,Xh=io.create,Vh=St.create,Ch=ka.create,Lh=at.create,Qh=Vn.create,Ph=Vn.strictCreate,Gh=Rc.create,qh=pe.create,Nh=Ac.create,Oh=Et.create,Fh=Ra.create,jh=Aa.create,Kh=Go.create,Th=wc.create,vh=Sc.create,ph=Ec.create,Ih=fo.create,Zh=Mc.create,yh=qo.create,n$=st.create,r$=et.create,t$=Qt.create,o$=st.createWithPreprocess,c$=Ea.create,a$=()=>Ru().optional(),e$=()=>Au().optional(),i$=()=>Su().optional(),s$={string:(n)=>ct.create({...n,coerce:!0}),number:(n)=>so.create({...n,coerce:!0}),boolean:(n)=>hc.create({...n,coerce:!0}),bigint:(n)=>lo.create({...n,coerce:!0}),date:(n)=>Qo.create({...n,coerce:!0})};var l$=y;var f$=A.object({name:A.string().regex(/^x-/),component:A.unknown()}),Eu=A.function().returns(A.object({name:A.string(),extensions:A.array(f$)}));var Mu=[["--theme-","--scalar-"],["--sidebar-","--scalar-sidebar-"]],d$=Mu.map(([n])=>n);function Ze(n){if(!d$.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"),Mu.reduce((t,[o,c])=>t.replaceAll(o,c),n)}var b$=A.enum(["alternate","default","moon","purple","solarized","bluePlanet","deepSpace","saturn","kepler","elysiajs","fastify","mars","none"]),g$=A.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"]),u$=A.enum(["adonisjs","docusaurus","dotnet","elysiajs","express","fastapi","fastify","go","hono","html","laravel","litestar","nestjs","nextjs","nitro","nuxt","platformatic","react","rust","vue"]).nullable(),Hu=A.object({url:A.string().optional(),content:A.union([A.string(),A.record(A.any()),A.function().returns(A.record(A.any())),A.null()]).optional(),title:A.string().optional(),slug:A.string().optional()}),_$=A.object({basePath:A.string()}),zu=A.object({url:A.string().optional(),content:A.union([A.string(),A.record(A.any()),A.function().returns(A.record(A.any())),A.null()]).optional(),title:A.string().optional(),slug:A.string().optional(),spec:Hu.optional(),authentication:A.any().optional(),baseServerURL:A.string().optional(),hideClientButton:A.boolean().optional().default(!1).catch(!1),proxyUrl:A.string().optional(),searchHotKey:g$.optional(),servers:A.array(A.any()).optional(),showSidebar:A.boolean().optional().default(!0).catch(!0),theme:b$.optional().default("default").catch("default"),_integration:u$.optional(),onRequestSent:A.function().args(A.string()).returns(A.void()).optional()}),Du="https://api.scalar.com/request-proxy",af="https://proxy.scalar.com",m$=zu.merge(A.object({layout:A.enum(["modern","classic"]).optional().default("modern").catch("modern"),proxy:A.string().optional(),plugins:A.array(Eu).optional(),isEditable:A.boolean().optional().default(!1).catch(!1),isLoading:A.boolean().optional().default(!1).catch(!1),hideModels:A.boolean().optional().default(!1).catch(!1),hideDownloadButton:A.boolean().optional().default(!1).catch(!1),hideTestRequestButton:A.boolean().optional().default(!1).catch(!1),hideSearch:A.boolean().optional().default(!1).catch(!1),darkMode:A.boolean().optional(),forceDarkModeState:A.enum(["dark","light"]).optional(),hideDarkModeToggle:A.boolean().optional().default(!1).catch(!1),metaData:A.any().optional(),favicon:A.string().optional(),hiddenClients:A.union([A.record(A.union([A.boolean(),A.array(A.string())])),A.array(A.string()),A.literal(!0)]).optional(),defaultHttpClient:A.object({targetKey:A.custom(),clientKey:A.string()}).optional(),customCss:A.string().optional(),onSpecUpdate:A.function().args(A.string()).returns(A.void()).optional(),onServerChange:A.function().args(A.string()).returns(A.void()).optional(),onDocumentSelect:A.function().returns(A.void().or(A.void().promise())).optional(),onLoaded:A.function().returns(A.void().or(A.void().promise())).optional(),onShowMore:A.function().args(A.string()).returns(A.void().or(A.void().promise())).optional(),onSidebarClick:A.function().args(A.string()).returns(A.void().or(A.void().promise())).optional(),pathRouting:_$.optional(),generateHeadingSlug:A.function().args(A.object({slug:A.string().default("headingSlug")})).returns(A.string()).optional(),generateModelSlug:A.function().args(A.object({name:A.string().default("modelName")})).returns(A.string()).optional(),generateTagSlug:A.function().args(A.object({name:A.string().default("tagName")})).returns(A.string()).optional(),generateOperationSlug:A.function().args(A.object({path:A.string(),operationId:A.string().optional(),method:A.string(),summary:A.string().optional()})).returns(A.string()).optional(),generateWebhookSlug:A.function().args(A.object({name:A.string(),method:A.string().optional()})).returns(A.string()).optional(),redirect:A.function().args(A.string()).returns(A.string().nullable().optional()).optional(),withDefaultFonts:A.boolean().optional().default(!0).catch(!0),defaultOpenAllTags:A.boolean().optional(),tagsSorter:A.union([A.literal("alpha"),A.function().args(A.any(),A.any()).returns(A.number())]).optional(),operationsSorter:A.union([A.literal("alpha"),A.literal("method"),A.function().args(A.any(),A.any()).returns(A.number())]).optional()})),w$=(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=Ze(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===Du)console.warn(`[DEPRECATED] Warning: configuration.proxyUrl points to our old proxy (${Du}).`),console.warn(`[DEPRECATED] We are overwriting the value and use the new proxy URL (${af}) instead.`),console.warn(`[DEPRECATED] Action Required: You should manually update your configuration to use the new URL (${af}). Read more: https://github.com/scalar/scalar`),r.proxyUrl=af;return r},h$=m$.transform(w$);var $$=A.object({cdn:A.string().optional().default("https://cdn.jsdelivr.net/npm/@scalar/api-reference"),pageTitle:A.string().optional().default("Scalar API Reference")});var k$={alternate:tu,default:au,moon:lu,elysiajs:Ke,fastify:eu,purple:fu,solarized:bu,bluePlanet:ou,deepSpace:cu,saturn:du,kepler:iu,mars:su};var C7=Object.keys(k$);import{replaceSchemaType as M$,t as sf}from"elysia";function ef(n){return"type"in n||"properties"in n||"items"in n}function A$(n,r){return(n==="createdAt"||n==="updatedAt")&&"anyOf"in r&&Array.isArray(r.anyOf)}function xu(n){if(!ef(n)||typeof n!=="object"||n===null)return n;let r={...n};return Object.entries(r).forEach(([t,o])=>{if(ef(o))if(A$(t,o)){let c=o.anyOf?.find((a)=>ef(a)&&a.format==="date-time");if(c){let a={type:"string",format:"date-time",default:c.default};r[t]=a}}else r[t]=xu(o)}),r}var S$=(n,r,t,o,c)=>{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,xu(s)]));let e=JSON.stringify(a);return`<!DOCTYPE html>
1428
+ `;var A={};Zt(A,{void:()=>Ch,util:()=>ln,unknown:()=>Xh,union:()=>Gh,undefined:()=>Wh,tuple:()=>Oh,transformer:()=>n$,symbol:()=>xh,string:()=>Ru,strictObject:()=>Ph,setErrorMap:()=>th,set:()=>Kh,record:()=>Fh,quotelessJson:()=>nh,promise:()=>yh,preprocess:()=>o$,pipeline:()=>c$,ostring:()=>a$,optional:()=>r$,onumber:()=>e$,oboolean:()=>i$,objectUtil:()=>tf,object:()=>Qh,number:()=>Au,nullable:()=>t$,null:()=>Yh,never:()=>Vh,nativeEnum:()=>Zh,nan:()=>zh,map:()=>jh,makeIssue:()=>ha,literal:()=>ph,lazy:()=>vh,late:()=>Dh,isValid:()=>eo,isDirty:()=>ve,isAsync:()=>_c,isAborted:()=>Te,intersection:()=>Nh,instanceof:()=>Hh,getParsedType:()=>At,getErrorMap:()=>uc,function:()=>Th,enum:()=>Ih,effect:()=>n$,discriminatedUnion:()=>qh,defaultErrorMap:()=>Ct,datetimeRegex:()=>hu,date:()=>Uh,custom:()=>ku,coerce:()=>s$,boolean:()=>Su,bigint:()=>Bh,array:()=>Lh,any:()=>Jh,addIssueToContext:()=>O,ZodVoid:()=>ka,ZodUnknown:()=>io,ZodUnion:()=>Rc,ZodUndefined:()=>$c,ZodType:()=>en,ZodTuple:()=>Et,ZodTransformer:()=>st,ZodSymbol:()=>$a,ZodString:()=>ct,ZodSet:()=>Go,ZodSchema:()=>en,ZodRecord:()=>Ra,ZodReadonly:()=>zc,ZodPromise:()=>qo,ZodPipeline:()=>Ea,ZodParsedType:()=>G,ZodOptional:()=>et,ZodObject:()=>Vn,ZodNumber:()=>so,ZodNullable:()=>Qt,ZodNull:()=>kc,ZodNever:()=>St,ZodNativeEnum:()=>Mc,ZodNaN:()=>Sa,ZodMap:()=>Aa,ZodLiteral:()=>Ec,ZodLazy:()=>Sc,ZodIssueCode:()=>V,ZodIntersection:()=>Ac,ZodFunction:()=>wc,ZodFirstPartyTypeKind:()=>rn,ZodError:()=>Sr,ZodEnum:()=>fo,ZodEffects:()=>st,ZodDiscriminatedUnion:()=>pe,ZodDefault:()=>Dc,ZodDate:()=>Qo,ZodCatch:()=>Hc,ZodBranded:()=>Ie,ZodBoolean:()=>hc,ZodBigInt:()=>lo,ZodArray:()=>at,ZodAny:()=>Po,Schema:()=>en,ParseStatus:()=>sr,OK:()=>ur,NEVER:()=>l$,INVALID:()=>y,EMPTY_PATH:()=>oh,DIRTY:()=>Lo,BRAND:()=>Mh});var ln;(function(n){n.assertEqual=(c)=>{};function r(c){}n.assertIs=r;function t(c){throw Error()}n.assertNever=t,n.arrayToEnum=(c)=>{let a={};for(let e of c)a[e]=e;return a},n.getValidEnumValues=(c)=>{let a=n.objectKeys(c).filter((i)=>typeof c[c[i]]!=="number"),e={};for(let i of a)e[i]=c[i];return n.objectValues(e)},n.objectValues=(c)=>{return n.objectKeys(c).map(function(a){return c[a]})},n.objectKeys=typeof Object.keys==="function"?(c)=>Object.keys(c):(c)=>{let a=[];for(let e in c)if(Object.prototype.hasOwnProperty.call(c,e))a.push(e);return a},n.find=(c,a)=>{for(let e of c)if(a(e))return e;return},n.isInteger=typeof Number.isInteger==="function"?(c)=>Number.isInteger(c):(c)=>typeof c==="number"&&Number.isFinite(c)&&Math.floor(c)===c;function o(c,a=" | "){return c.map((e)=>typeof e==="string"?`'${e}'`:e).join(a)}n.joinValues=o,n.jsonStringifyReplacer=(c,a)=>{if(typeof a==="bigint")return a.toString();return a}})(ln||(ln={}));var tf;(function(n){n.mergeShapes=(r,t)=>{return{...r,...t}}})(tf||(tf={}));var G=ln.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),At=(n)=>{switch(typeof n){case"undefined":return G.undefined;case"string":return G.string;case"number":return Number.isNaN(n)?G.nan:G.number;case"boolean":return G.boolean;case"function":return G.function;case"bigint":return G.bigint;case"symbol":return G.symbol;case"object":if(Array.isArray(n))return G.array;if(n===null)return G.null;if(n.then&&typeof n.then==="function"&&n.catch&&typeof n.catch==="function")return G.promise;if(typeof Map<"u"&&n instanceof Map)return G.map;if(typeof Set<"u"&&n instanceof Set)return G.set;if(typeof Date<"u"&&n instanceof Date)return G.date;return G.object;default:return G.unknown}};var V=ln.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"]),nh=(n)=>{return JSON.stringify(n,null,2).replace(/"([^"]+)":/g,"$1:")};class Sr 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(c){return c.message},t={_errors:[]},o=(c)=>{for(let a of c.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 e=t,i=0;while(i<a.path.length){let s=a.path[i];if(i!==a.path.length-1)e[s]=e[s]||{_errors:[]};else e[s]=e[s]||{_errors:[]},e[s]._errors.push(r(a));e=e[s],i++}}};return o(this),t}static assert(n){if(!(n instanceof Sr))throw Error(`Not a ZodError: ${n}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ln.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 c=o.path[0];r[c]=r[c]||[],r[c].push(n(o))}else t.push(n(o));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}}Sr.create=(n)=>{return new Sr(n)};var rh=(n,r)=>{let t;switch(n.code){case V.invalid_type:if(n.received===G.undefined)t="Required";else t=`Expected ${n.expected}, received ${n.received}`;break;case V.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,ln.jsonStringifyReplacer)}`;break;case V.unrecognized_keys:t=`Unrecognized key(s) in object: ${ln.joinValues(n.keys,", ")}`;break;case V.invalid_union:t="Invalid input";break;case V.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${ln.joinValues(n.options)}`;break;case V.invalid_enum_value:t=`Invalid enum value. Expected ${ln.joinValues(n.options)}, received '${n.received}'`;break;case V.invalid_arguments:t="Invalid function arguments";break;case V.invalid_return_type:t="Invalid function return type";break;case V.invalid_date:t="Invalid date";break;case V.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 ln.assertNever(n.validation);else if(n.validation!=="regex")t=`Invalid ${n.validation}`;else t="Invalid";break;case V.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 V.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 V.custom:t="Invalid input";break;case V.invalid_intersection_types:t="Intersection results could not be merged";break;case V.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case V.not_finite:t="Number must be finite";break;default:t=r.defaultError,ln.assertNever(n)}return{message:t}},Ct=rh;var gu=Ct;function th(n){gu=n}function uc(){return gu}var ha=(n)=>{let{data:r,path:t,errorMaps:o,issueData:c}=n,a=[...t,...c.path||[]],e={...c,path:a};if(c.message!==void 0)return{...c,path:a,message:c.message};let i="",s=o.filter((l)=>!!l).slice().reverse();for(let l of s)i=l(e,{data:r,defaultError:i}).message;return{...c,path:a,message:i}},oh=[];function O(n,r){let t=uc(),o=ha({issueData:r,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Ct?void 0:Ct].filter((c)=>!!c)});n.common.issues.push(o)}class sr{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 c=await o.key,a=await o.value;t.push({key:c,value:a})}return sr.mergeObjectSync(n,t)}static mergeObjectSync(n,r){let t={};for(let o of r){let{key:c,value:a}=o;if(c.status==="aborted")return y;if(a.status==="aborted")return y;if(c.status==="dirty")n.dirty();if(a.status==="dirty")n.dirty();if(c.value!=="__proto__"&&(typeof a.value<"u"||o.alwaysSet))t[c.value]=a.value}return{status:n.value,value:t}}}var y=Object.freeze({status:"aborted"}),Lo=(n)=>({status:"dirty",value:n}),ur=(n)=>({status:"valid",value:n}),Te=(n)=>n.status==="aborted",ve=(n)=>n.status==="dirty",eo=(n)=>n.status==="valid",_c=(n)=>typeof Promise<"u"&&n instanceof Promise;var T;(function(n){n.errToObj=(r)=>typeof r==="string"?{message:r}:r||{},n.toString=(r)=>typeof r==="string"?r:r?.message})(T||(T={}));class it{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 uu=(n,r)=>{if(eo(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 Sr(n.common.issues);return this._error=t,this._error}}}};function an(n){if(!n)return{};let{errorMap:r,invalid_type_error:t,required_error:o,description:c}=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:c};return{errorMap:(e,i)=>{let{message:s}=n;if(e.code==="invalid_enum_value")return{message:s??i.defaultError};if(typeof i.data>"u")return{message:s??o??i.defaultError};if(e.code!=="invalid_type")return{message:i.defaultError};return{message:s??t??i.defaultError}},description:c}}class en{get description(){return this._def.description}_getType(n){return At(n.data)}_getOrReturnCtx(n,r){return r||{common:n.parent.common,data:n.data,parsedType:At(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}_processInputParams(n){return{status:new sr,ctx:{common:n.parent.common,data:n.data,parsedType:At(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}}_parseSync(n){let r=this._parse(n);if(_c(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:At(n)},o=this._parseSync({data:n,path:t.path,parent:t});return uu(t,o)}"~validate"(n){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:At(n)};if(!this["~standard"].async)try{let t=this._parseSync({data:n,path:[],parent:r});return eo(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)=>eo(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:At(n)},o=this._parse({data:n,path:t.path,parent:t}),c=await(_c(o)?o:Promise.resolve(o));return uu(t,c)}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,c)=>{let a=n(o),e=()=>c.addIssue({code:V.custom,...t(o)});if(typeof Promise<"u"&&a instanceof Promise)return a.then((i)=>{if(!i)return e(),!1;else return!0});if(!a)return e(),!1;else return!0})}refinement(n,r){return this._refinement((t,o)=>{if(!n(t))return o.addIssue(typeof r==="function"?r(t,o):r),!1;else return!0})}_refinement(n){return new st({schema:this,typeName:rn.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 et.create(this,this._def)}nullable(){return Qt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return at.create(this)}promise(){return qo.create(this,this._def)}or(n){return Rc.create([this,n],this._def)}and(n){return Ac.create(this,n,this._def)}transform(n){return new st({...an(this._def),schema:this,typeName:rn.ZodEffects,effect:{type:"transform",transform:n}})}default(n){let r=typeof n==="function"?n:()=>n;return new Dc({...an(this._def),innerType:this,defaultValue:r,typeName:rn.ZodDefault})}brand(){return new Ie({typeName:rn.ZodBranded,type:this,...an(this._def)})}catch(n){let r=typeof n==="function"?n:()=>n;return new Hc({...an(this._def),innerType:this,catchValue:r,typeName:rn.ZodCatch})}describe(n){return new this.constructor({...this._def,description:n})}pipe(n){return Ea.create(this,n)}readonly(){return zc.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var ch=/^c[^\s-]{8,}$/i,ah=/^[0-9a-z]+$/,eh=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ih=/^[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,sh=/^[a-z0-9_-]{21}$/i,lh=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,fh=/^[-+]?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)?)??$/,dh=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,bh="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",of,gh=/^(?:(?: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])$/,uh=/^(?:(?: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])$/,_h=/^(([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]))$/,mh=/^(([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])$/,wh=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,hh=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,mu="((\\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])))",$h=new RegExp(`^${mu}$`);function wu(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 kh(n){return new RegExp(`^${wu(n)}$`)}function hu(n){let r=`${mu}T${wu(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 Rh(n,r){if((r==="v4"||!r)&&gh.test(n))return!0;if((r==="v6"||!r)&&_h.test(n))return!0;return!1}function Ah(n,r){if(!lh.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,"="),c=JSON.parse(atob(o));if(typeof c!=="object"||c===null)return!1;if("typ"in c&&c?.typ!=="JWT")return!1;if(!c.alg)return!1;if(r&&c.alg!==r)return!1;return!0}catch{return!1}}function Sh(n,r){if((r==="v4"||!r)&&uh.test(n))return!0;if((r==="v6"||!r)&&mh.test(n))return!0;return!1}class ct extends en{_parse(n){if(this._def.coerce)n.data=String(n.data);if(this._getType(n)!==G.string){let c=this._getOrReturnCtx(n);return O(c,{code:V.invalid_type,expected:G.string,received:c.parsedType}),y}let t=new sr,o=void 0;for(let c of this._def.checks)if(c.kind==="min"){if(n.data.length<c.value)o=this._getOrReturnCtx(n,o),O(o,{code:V.too_small,minimum:c.value,type:"string",inclusive:!0,exact:!1,message:c.message}),t.dirty()}else if(c.kind==="max"){if(n.data.length>c.value)o=this._getOrReturnCtx(n,o),O(o,{code:V.too_big,maximum:c.value,type:"string",inclusive:!0,exact:!1,message:c.message}),t.dirty()}else if(c.kind==="length"){let a=n.data.length>c.value,e=n.data.length<c.value;if(a||e){if(o=this._getOrReturnCtx(n,o),a)O(o,{code:V.too_big,maximum:c.value,type:"string",inclusive:!0,exact:!0,message:c.message});else if(e)O(o,{code:V.too_small,minimum:c.value,type:"string",inclusive:!0,exact:!0,message:c.message});t.dirty()}}else if(c.kind==="email"){if(!dh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"email",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="emoji"){if(!of)of=new RegExp(bh,"u");if(!of.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"emoji",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="uuid"){if(!ih.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"uuid",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="nanoid"){if(!sh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"nanoid",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="cuid"){if(!ch.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"cuid",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="cuid2"){if(!ah.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"cuid2",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="ulid"){if(!eh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"ulid",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="url")try{new URL(n.data)}catch{o=this._getOrReturnCtx(n,o),O(o,{validation:"url",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="regex"){if(c.regex.lastIndex=0,!c.regex.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"regex",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="trim")n.data=n.data.trim();else if(c.kind==="includes"){if(!n.data.includes(c.value,c.position))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:{includes:c.value,position:c.position},message:c.message}),t.dirty()}else if(c.kind==="toLowerCase")n.data=n.data.toLowerCase();else if(c.kind==="toUpperCase")n.data=n.data.toUpperCase();else if(c.kind==="startsWith"){if(!n.data.startsWith(c.value))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:{startsWith:c.value},message:c.message}),t.dirty()}else if(c.kind==="endsWith"){if(!n.data.endsWith(c.value))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:{endsWith:c.value},message:c.message}),t.dirty()}else if(c.kind==="datetime"){if(!hu(c).test(n.data))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:"datetime",message:c.message}),t.dirty()}else if(c.kind==="date"){if(!$h.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:"date",message:c.message}),t.dirty()}else if(c.kind==="time"){if(!kh(c).test(n.data))o=this._getOrReturnCtx(n,o),O(o,{code:V.invalid_string,validation:"time",message:c.message}),t.dirty()}else if(c.kind==="duration"){if(!fh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"duration",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="ip"){if(!Rh(n.data,c.version))o=this._getOrReturnCtx(n,o),O(o,{validation:"ip",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="jwt"){if(!Ah(n.data,c.alg))o=this._getOrReturnCtx(n,o),O(o,{validation:"jwt",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="cidr"){if(!Sh(n.data,c.version))o=this._getOrReturnCtx(n,o),O(o,{validation:"cidr",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="base64"){if(!wh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"base64",code:V.invalid_string,message:c.message}),t.dirty()}else if(c.kind==="base64url"){if(!hh.test(n.data))o=this._getOrReturnCtx(n,o),O(o,{validation:"base64url",code:V.invalid_string,message:c.message}),t.dirty()}else ln.assertNever(c);return{status:t.value,value:n.data}}_regex(n,r,t){return this.refinement((o)=>n.test(o),{validation:r,code:V.invalid_string,...T.errToObj(t)})}_addCheck(n){return new ct({...this._def,checks:[...this._def.checks,n]})}email(n){return this._addCheck({kind:"email",...T.errToObj(n)})}url(n){return this._addCheck({kind:"url",...T.errToObj(n)})}emoji(n){return this._addCheck({kind:"emoji",...T.errToObj(n)})}uuid(n){return this._addCheck({kind:"uuid",...T.errToObj(n)})}nanoid(n){return this._addCheck({kind:"nanoid",...T.errToObj(n)})}cuid(n){return this._addCheck({kind:"cuid",...T.errToObj(n)})}cuid2(n){return this._addCheck({kind:"cuid2",...T.errToObj(n)})}ulid(n){return this._addCheck({kind:"ulid",...T.errToObj(n)})}base64(n){return this._addCheck({kind:"base64",...T.errToObj(n)})}base64url(n){return this._addCheck({kind:"base64url",...T.errToObj(n)})}jwt(n){return this._addCheck({kind:"jwt",...T.errToObj(n)})}ip(n){return this._addCheck({kind:"ip",...T.errToObj(n)})}cidr(n){return this._addCheck({kind:"cidr",...T.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,...T.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,...T.errToObj(n?.message)})}duration(n){return this._addCheck({kind:"duration",...T.errToObj(n)})}regex(n,r){return this._addCheck({kind:"regex",regex:n,...T.errToObj(r)})}includes(n,r){return this._addCheck({kind:"includes",value:n,position:r?.position,...T.errToObj(r?.message)})}startsWith(n,r){return this._addCheck({kind:"startsWith",value:n,...T.errToObj(r)})}endsWith(n,r){return this._addCheck({kind:"endsWith",value:n,...T.errToObj(r)})}min(n,r){return this._addCheck({kind:"min",value:n,...T.errToObj(r)})}max(n,r){return this._addCheck({kind:"max",value:n,...T.errToObj(r)})}length(n,r){return this._addCheck({kind:"length",value:n,...T.errToObj(r)})}nonempty(n){return this.min(1,T.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:rn.ZodString,coerce:n?.coerce??!1,...an(n)})};function Eh(n,r){let t=(n.toString().split(".")[1]||"").length,o=(r.toString().split(".")[1]||"").length,c=t>o?t:o,a=Number.parseInt(n.toFixed(c).replace(".","")),e=Number.parseInt(r.toFixed(c).replace(".",""));return a%e/10**c}class so extends en{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)!==G.number){let c=this._getOrReturnCtx(n);return O(c,{code:V.invalid_type,expected:G.number,received:c.parsedType}),y}let t=void 0,o=new sr;for(let c of this._def.checks)if(c.kind==="int"){if(!ln.isInteger(n.data))t=this._getOrReturnCtx(n,t),O(t,{code:V.invalid_type,expected:"integer",received:"float",message:c.message}),o.dirty()}else if(c.kind==="min"){if(c.inclusive?n.data<c.value:n.data<=c.value)t=this._getOrReturnCtx(n,t),O(t,{code:V.too_small,minimum:c.value,type:"number",inclusive:c.inclusive,exact:!1,message:c.message}),o.dirty()}else if(c.kind==="max"){if(c.inclusive?n.data>c.value:n.data>=c.value)t=this._getOrReturnCtx(n,t),O(t,{code:V.too_big,maximum:c.value,type:"number",inclusive:c.inclusive,exact:!1,message:c.message}),o.dirty()}else if(c.kind==="multipleOf"){if(Eh(n.data,c.value)!==0)t=this._getOrReturnCtx(n,t),O(t,{code:V.not_multiple_of,multipleOf:c.value,message:c.message}),o.dirty()}else if(c.kind==="finite"){if(!Number.isFinite(n.data))t=this._getOrReturnCtx(n,t),O(t,{code:V.not_finite,message:c.message}),o.dirty()}else ln.assertNever(c);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,T.toString(r))}gt(n,r){return this.setLimit("min",n,!1,T.toString(r))}lte(n,r){return this.setLimit("max",n,!0,T.toString(r))}lt(n,r){return this.setLimit("max",n,!1,T.toString(r))}setLimit(n,r,t,o){return new so({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:T.toString(o)}]})}_addCheck(n){return new so({...this._def,checks:[...this._def.checks,n]})}int(n){return this._addCheck({kind:"int",message:T.toString(n)})}positive(n){return this._addCheck({kind:"min",value:0,inclusive:!1,message:T.toString(n)})}negative(n){return this._addCheck({kind:"max",value:0,inclusive:!1,message:T.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:0,inclusive:!0,message:T.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:0,inclusive:!0,message:T.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:T.toString(r)})}finite(n){return this._addCheck({kind:"finite",message:T.toString(n)})}safe(n){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:T.toString(n)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:T.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"&&ln.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)}}so.create=(n)=>{return new so({checks:[],typeName:rn.ZodNumber,coerce:n?.coerce||!1,...an(n)})};class lo extends en{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)!==G.bigint)return this._getInvalidInput(n);let t=void 0,o=new sr;for(let c of this._def.checks)if(c.kind==="min"){if(c.inclusive?n.data<c.value:n.data<=c.value)t=this._getOrReturnCtx(n,t),O(t,{code:V.too_small,type:"bigint",minimum:c.value,inclusive:c.inclusive,message:c.message}),o.dirty()}else if(c.kind==="max"){if(c.inclusive?n.data>c.value:n.data>=c.value)t=this._getOrReturnCtx(n,t),O(t,{code:V.too_big,type:"bigint",maximum:c.value,inclusive:c.inclusive,message:c.message}),o.dirty()}else if(c.kind==="multipleOf"){if(n.data%c.value!==BigInt(0))t=this._getOrReturnCtx(n,t),O(t,{code:V.not_multiple_of,multipleOf:c.value,message:c.message}),o.dirty()}else ln.assertNever(c);return{status:o.value,value:n.data}}_getInvalidInput(n){let r=this._getOrReturnCtx(n);return O(r,{code:V.invalid_type,expected:G.bigint,received:r.parsedType}),y}gte(n,r){return this.setLimit("min",n,!0,T.toString(r))}gt(n,r){return this.setLimit("min",n,!1,T.toString(r))}lte(n,r){return this.setLimit("max",n,!0,T.toString(r))}lt(n,r){return this.setLimit("max",n,!1,T.toString(r))}setLimit(n,r,t,o){return new lo({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:T.toString(o)}]})}_addCheck(n){return new lo({...this._def,checks:[...this._def.checks,n]})}positive(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:T.toString(n)})}negative(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:T.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:T.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:T.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:T.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}}lo.create=(n)=>{return new lo({checks:[],typeName:rn.ZodBigInt,coerce:n?.coerce??!1,...an(n)})};class hc extends en{_parse(n){if(this._def.coerce)n.data=Boolean(n.data);if(this._getType(n)!==G.boolean){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.boolean,received:t.parsedType}),y}return ur(n.data)}}hc.create=(n)=>{return new hc({typeName:rn.ZodBoolean,coerce:n?.coerce||!1,...an(n)})};class Qo extends en{_parse(n){if(this._def.coerce)n.data=new Date(n.data);if(this._getType(n)!==G.date){let c=this._getOrReturnCtx(n);return O(c,{code:V.invalid_type,expected:G.date,received:c.parsedType}),y}if(Number.isNaN(n.data.getTime())){let c=this._getOrReturnCtx(n);return O(c,{code:V.invalid_date}),y}let t=new sr,o=void 0;for(let c of this._def.checks)if(c.kind==="min"){if(n.data.getTime()<c.value)o=this._getOrReturnCtx(n,o),O(o,{code:V.too_small,message:c.message,inclusive:!0,exact:!1,minimum:c.value,type:"date"}),t.dirty()}else if(c.kind==="max"){if(n.data.getTime()>c.value)o=this._getOrReturnCtx(n,o),O(o,{code:V.too_big,message:c.message,inclusive:!0,exact:!1,maximum:c.value,type:"date"}),t.dirty()}else ln.assertNever(c);return{status:t.value,value:new Date(n.data.getTime())}}_addCheck(n){return new Qo({...this._def,checks:[...this._def.checks,n]})}min(n,r){return this._addCheck({kind:"min",value:n.getTime(),message:T.toString(r)})}max(n,r){return this._addCheck({kind:"max",value:n.getTime(),message:T.toString(r)})}get minDate(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n!=null?new Date(n):null}get maxDate(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n!=null?new Date(n):null}}Qo.create=(n)=>{return new Qo({checks:[],coerce:n?.coerce||!1,typeName:rn.ZodDate,...an(n)})};class $a extends en{_parse(n){if(this._getType(n)!==G.symbol){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.symbol,received:t.parsedType}),y}return ur(n.data)}}$a.create=(n)=>{return new $a({typeName:rn.ZodSymbol,...an(n)})};class $c extends en{_parse(n){if(this._getType(n)!==G.undefined){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.undefined,received:t.parsedType}),y}return ur(n.data)}}$c.create=(n)=>{return new $c({typeName:rn.ZodUndefined,...an(n)})};class kc extends en{_parse(n){if(this._getType(n)!==G.null){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.null,received:t.parsedType}),y}return ur(n.data)}}kc.create=(n)=>{return new kc({typeName:rn.ZodNull,...an(n)})};class Po extends en{constructor(){super(...arguments);this._any=!0}_parse(n){return ur(n.data)}}Po.create=(n)=>{return new Po({typeName:rn.ZodAny,...an(n)})};class io extends en{constructor(){super(...arguments);this._unknown=!0}_parse(n){return ur(n.data)}}io.create=(n)=>{return new io({typeName:rn.ZodUnknown,...an(n)})};class St extends en{_parse(n){let r=this._getOrReturnCtx(n);return O(r,{code:V.invalid_type,expected:G.never,received:r.parsedType}),y}}St.create=(n)=>{return new St({typeName:rn.ZodNever,...an(n)})};class ka extends en{_parse(n){if(this._getType(n)!==G.undefined){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.void,received:t.parsedType}),y}return ur(n.data)}}ka.create=(n)=>{return new ka({typeName:rn.ZodVoid,...an(n)})};class at extends en{_parse(n){let{ctx:r,status:t}=this._processInputParams(n),o=this._def;if(r.parsedType!==G.array)return O(r,{code:V.invalid_type,expected:G.array,received:r.parsedType}),y;if(o.exactLength!==null){let a=r.data.length>o.exactLength.value,e=r.data.length<o.exactLength.value;if(a||e)O(r,{code:a?V.too_big:V.too_small,minimum:e?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)O(r,{code:V.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)O(r,{code:V.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,e)=>{return o.type._parseAsync(new it(r,a,r.path,e))})).then((a)=>{return sr.mergeArray(t,a)});let c=[...r.data].map((a,e)=>{return o.type._parseSync(new it(r,a,r.path,e))});return sr.mergeArray(t,c)}get element(){return this._def.type}min(n,r){return new at({...this._def,minLength:{value:n,message:T.toString(r)}})}max(n,r){return new at({...this._def,maxLength:{value:n,message:T.toString(r)}})}length(n,r){return new at({...this._def,exactLength:{value:n,message:T.toString(r)}})}nonempty(n){return this.min(1,n)}}at.create=(n,r)=>{return new at({type:n,minLength:null,maxLength:null,exactLength:null,typeName:rn.ZodArray,...an(r)})};function mc(n){if(n instanceof Vn){let r={};for(let t in n.shape){let o=n.shape[t];r[t]=et.create(mc(o))}return new Vn({...n._def,shape:()=>r})}else if(n instanceof at)return new at({...n._def,type:mc(n.element)});else if(n instanceof et)return et.create(mc(n.unwrap()));else if(n instanceof Qt)return Qt.create(mc(n.unwrap()));else if(n instanceof Et)return Et.create(n.items.map((r)=>mc(r)));else return n}class Vn extends en{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=ln.objectKeys(n);return this._cached={shape:n,keys:r},this._cached}_parse(n){if(this._getType(n)!==G.object){let s=this._getOrReturnCtx(n);return O(s,{code:V.invalid_type,expected:G.object,received:s.parsedType}),y}let{status:t,ctx:o}=this._processInputParams(n),{shape:c,keys:a}=this._getCached(),e=[];if(!(this._def.catchall instanceof St&&this._def.unknownKeys==="strip")){for(let s in o.data)if(!a.includes(s))e.push(s)}let i=[];for(let s of a){let l=c[s],f=o.data[s];i.push({key:{status:"valid",value:s},value:l._parse(new it(o,f,o.path,s)),alwaysSet:s in o.data})}if(this._def.catchall instanceof St){let s=this._def.unknownKeys;if(s==="passthrough")for(let l of e)i.push({key:{status:"valid",value:l},value:{status:"valid",value:o.data[l]}});else if(s==="strict"){if(e.length>0)O(o,{code:V.unrecognized_keys,keys:e}),t.dirty()}else if(s==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let s=this._def.catchall;for(let l of e){let f=o.data[l];i.push({key:{status:"valid",value:l},value:s._parse(new it(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,b=await l.value;s.push({key:f,value:b,alwaysSet:l.alwaysSet})}return s}).then((s)=>{return sr.mergeObjectSync(t,s)});else return sr.mergeObjectSync(t,i)}get shape(){return this._def.shape()}strict(n){return T.errToObj,new Vn({...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:T.errToObj(n).message??o};return{message:o}}}:{}})}strip(){return new Vn({...this._def,unknownKeys:"strip"})}passthrough(){return new Vn({...this._def,unknownKeys:"passthrough"})}extend(n){return new Vn({...this._def,shape:()=>({...this._def.shape(),...n})})}merge(n){return new Vn({unknownKeys:n._def.unknownKeys,catchall:n._def.catchall,shape:()=>({...this._def.shape(),...n._def.shape()}),typeName:rn.ZodObject})}setKey(n,r){return this.augment({[n]:r})}catchall(n){return new Vn({...this._def,catchall:n})}pick(n){let r={};for(let t of ln.objectKeys(n))if(n[t]&&this.shape[t])r[t]=this.shape[t];return new Vn({...this._def,shape:()=>r})}omit(n){let r={};for(let t of ln.objectKeys(this.shape))if(!n[t])r[t]=this.shape[t];return new Vn({...this._def,shape:()=>r})}deepPartial(){return mc(this)}partial(n){let r={};for(let t of ln.objectKeys(this.shape)){let o=this.shape[t];if(n&&!n[t])r[t]=o;else r[t]=o.optional()}return new Vn({...this._def,shape:()=>r})}required(n){let r={};for(let t of ln.objectKeys(this.shape))if(n&&!n[t])r[t]=this.shape[t];else{let c=this.shape[t];while(c instanceof et)c=c._def.innerType;r[t]=c}return new Vn({...this._def,shape:()=>r})}keyof(){return $u(ln.objectKeys(this.shape))}}Vn.create=(n,r)=>{return new Vn({shape:()=>n,unknownKeys:"strip",catchall:St.create(),typeName:rn.ZodObject,...an(r)})};Vn.strictCreate=(n,r)=>{return new Vn({shape:()=>n,unknownKeys:"strict",catchall:St.create(),typeName:rn.ZodObject,...an(r)})};Vn.lazycreate=(n,r)=>{return new Vn({shape:n,unknownKeys:"strip",catchall:St.create(),typeName:rn.ZodObject,...an(r)})};class Rc extends en{_parse(n){let{ctx:r}=this._processInputParams(n),t=this._def.options;function o(c){for(let e of c)if(e.result.status==="valid")return e.result;for(let e of c)if(e.result.status==="dirty")return r.common.issues.push(...e.ctx.common.issues),e.result;let a=c.map((e)=>new Sr(e.ctx.common.issues));return O(r,{code:V.invalid_union,unionErrors:a}),y}if(r.common.async)return Promise.all(t.map(async(c)=>{let a={...r,common:{...r.common,issues:[]},parent:null};return{result:await c._parseAsync({data:r.data,path:r.path,parent:a}),ctx:a}})).then(o);else{let c=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"&&!c)c={result:l,ctx:s};if(s.common.issues.length)a.push(s.common.issues)}if(c)return r.common.issues.push(...c.ctx.common.issues),c.result;let e=a.map((i)=>new Sr(i));return O(r,{code:V.invalid_union,unionErrors:e}),y}}get options(){return this._def.options}}Rc.create=(n,r)=>{return new Rc({options:n,typeName:rn.ZodUnion,...an(r)})};var Lt=(n)=>{if(n instanceof Sc)return Lt(n.schema);else if(n instanceof st)return Lt(n.innerType());else if(n instanceof Ec)return[n.value];else if(n instanceof fo)return n.options;else if(n instanceof Mc)return ln.objectValues(n.enum);else if(n instanceof Dc)return Lt(n._def.innerType);else if(n instanceof $c)return[void 0];else if(n instanceof kc)return[null];else if(n instanceof et)return[void 0,...Lt(n.unwrap())];else if(n instanceof Qt)return[null,...Lt(n.unwrap())];else if(n instanceof Ie)return Lt(n.unwrap());else if(n instanceof zc)return Lt(n.unwrap());else if(n instanceof Hc)return Lt(n._def.innerType);else return[]};class pe extends en{_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==G.object)return O(r,{code:V.invalid_type,expected:G.object,received:r.parsedType}),y;let t=this.discriminator,o=r.data[t],c=this.optionsMap.get(o);if(!c)return O(r,{code:V.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),y;if(r.common.async)return c._parseAsync({data:r.data,path:r.path,parent:r});else return c._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 c of r){let a=Lt(c.shape[n]);if(!a.length)throw Error(`A discriminator value for key \`${n}\` could not be extracted from all schema options`);for(let e of a){if(o.has(e))throw Error(`Discriminator property ${String(n)} has duplicate value ${String(e)}`);o.set(e,c)}}return new pe({typeName:rn.ZodDiscriminatedUnion,discriminator:n,options:r,optionsMap:o,...an(t)})}}function cf(n,r){let t=At(n),o=At(r);if(n===r)return{valid:!0,data:n};else if(t===G.object&&o===G.object){let c=ln.objectKeys(r),a=ln.objectKeys(n).filter((i)=>c.indexOf(i)!==-1),e={...n,...r};for(let i of a){let s=cf(n[i],r[i]);if(!s.valid)return{valid:!1};e[i]=s.data}return{valid:!0,data:e}}else if(t===G.array&&o===G.array){if(n.length!==r.length)return{valid:!1};let c=[];for(let a=0;a<n.length;a++){let e=n[a],i=r[a],s=cf(e,i);if(!s.valid)return{valid:!1};c.push(s.data)}return{valid:!0,data:c}}else if(t===G.date&&o===G.date&&+n===+r)return{valid:!0,data:n};else return{valid:!1}}class Ac extends en{_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=(c,a)=>{if(Te(c)||Te(a))return y;let e=cf(c.value,a.value);if(!e.valid)return O(t,{code:V.invalid_intersection_types}),y;if(ve(c)||ve(a))r.dirty();return{status:r.value,value:e.data}};if(t.common.async)return Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([c,a])=>o(c,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}))}}Ac.create=(n,r,t)=>{return new Ac({left:n,right:r,typeName:rn.ZodIntersection,...an(t)})};class Et extends en{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==G.array)return O(t,{code:V.invalid_type,expected:G.array,received:t.parsedType}),y;if(t.data.length<this._def.items.length)return O(t,{code:V.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)O(t,{code:V.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty();let c=[...t.data].map((a,e)=>{let i=this._def.items[e]||this._def.rest;if(!i)return null;return i._parse(new it(t,a,t.path,e))}).filter((a)=>!!a);if(t.common.async)return Promise.all(c).then((a)=>{return sr.mergeArray(r,a)});else return sr.mergeArray(r,c)}get items(){return this._def.items}rest(n){return new Et({...this._def,rest:n})}}Et.create=(n,r)=>{if(!Array.isArray(n))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new Et({items:n,typeName:rn.ZodTuple,rest:null,...an(r)})};class Ra extends en{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!==G.object)return O(t,{code:V.invalid_type,expected:G.object,received:t.parsedType}),y;let o=[],c=this._def.keyType,a=this._def.valueType;for(let e in t.data)o.push({key:c._parse(new it(t,e,t.path,e)),value:a._parse(new it(t,t.data[e],t.path,e)),alwaysSet:e in t.data});if(t.common.async)return sr.mergeObjectAsync(r,o);else return sr.mergeObjectSync(r,o)}get element(){return this._def.valueType}static create(n,r,t){if(r instanceof en)return new Ra({keyType:n,valueType:r,typeName:rn.ZodRecord,...an(t)});return new Ra({keyType:ct.create(),valueType:n,typeName:rn.ZodRecord,...an(r)})}}class Aa extends en{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!==G.map)return O(t,{code:V.invalid_type,expected:G.map,received:t.parsedType}),y;let o=this._def.keyType,c=this._def.valueType,a=[...t.data.entries()].map(([e,i],s)=>{return{key:o._parse(new it(t,e,t.path,[s,"key"])),value:c._parse(new it(t,i,t.path,[s,"value"]))}});if(t.common.async){let e=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();e.set(s.value,l.value)}return{status:r.value,value:e}})}else{let e=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();e.set(s.value,l.value)}return{status:r.value,value:e}}}}Aa.create=(n,r,t)=>{return new Aa({valueType:r,keyType:n,typeName:rn.ZodMap,...an(t)})};class Go extends en{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==G.set)return O(t,{code:V.invalid_type,expected:G.set,received:t.parsedType}),y;let o=this._def;if(o.minSize!==null){if(t.data.size<o.minSize.value)O(t,{code:V.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)O(t,{code:V.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty()}let c=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 e=[...t.data.values()].map((i,s)=>c._parse(new it(t,i,t.path,s)));if(t.common.async)return Promise.all(e).then((i)=>a(i));else return a(e)}min(n,r){return new Go({...this._def,minSize:{value:n,message:T.toString(r)}})}max(n,r){return new Go({...this._def,maxSize:{value:n,message:T.toString(r)}})}size(n,r){return this.min(n,r).max(n,r)}nonempty(n){return this.min(1,n)}}Go.create=(n,r)=>{return new Go({valueType:n,minSize:null,maxSize:null,typeName:rn.ZodSet,...an(r)})};class wc extends en{constructor(){super(...arguments);this.validate=this.implement}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==G.function)return O(r,{code:V.invalid_type,expected:G.function,received:r.parsedType}),y;function t(e,i){return ha({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,uc(),Ct].filter((s)=>!!s),issueData:{code:V.invalid_arguments,argumentsError:i}})}function o(e,i){return ha({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,uc(),Ct].filter((s)=>!!s),issueData:{code:V.invalid_return_type,returnTypeError:i}})}let c={errorMap:r.common.contextualErrorMap},a=r.data;if(this._def.returns instanceof qo){let e=this;return ur(async function(...i){let s=new Sr([]),l=await e._def.args.parseAsync(i,c).catch((g)=>{throw s.addIssue(t(i,g)),s}),f=await Reflect.apply(a,this,l);return await e._def.returns._def.type.parseAsync(f,c).catch((g)=>{throw s.addIssue(o(f,g)),s})})}else{let e=this;return ur(function(...i){let s=e._def.args.safeParse(i,c);if(!s.success)throw new Sr([t(i,s.error)]);let l=Reflect.apply(a,this,s.data),f=e._def.returns.safeParse(l,c);if(!f.success)throw new Sr([o(l,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...n){return new wc({...this._def,args:Et.create(n).rest(io.create())})}returns(n){return new wc({...this._def,returns:n})}implement(n){return this.parse(n)}strictImplement(n){return this.parse(n)}static create(n,r,t){return new wc({args:n?n:Et.create([]).rest(io.create()),returns:r||io.create(),typeName:rn.ZodFunction,...an(t)})}}class Sc extends en{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})}}Sc.create=(n,r)=>{return new Sc({getter:n,typeName:rn.ZodLazy,...an(r)})};class Ec extends en{_parse(n){if(n.data!==this._def.value){let r=this._getOrReturnCtx(n);return O(r,{received:r.data,code:V.invalid_literal,expected:this._def.value}),y}return{status:"valid",value:n.data}}get value(){return this._def.value}}Ec.create=(n,r)=>{return new Ec({value:n,typeName:rn.ZodLiteral,...an(r)})};function $u(n,r){return new fo({values:n,typeName:rn.ZodEnum,...an(r)})}class fo extends en{_parse(n){if(typeof n.data!=="string"){let r=this._getOrReturnCtx(n),t=this._def.values;return O(r,{expected:ln.joinValues(t),received:r.parsedType,code:V.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 O(r,{received:r.data,code:V.invalid_enum_value,options:t}),y}return ur(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 fo.create(n,{...this._def,...r})}exclude(n,r=this._def){return fo.create(this.options.filter((t)=>!n.includes(t)),{...this._def,...r})}}fo.create=$u;class Mc extends en{_parse(n){let r=ln.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(n);if(t.parsedType!==G.string&&t.parsedType!==G.number){let o=ln.objectValues(r);return O(t,{expected:ln.joinValues(o),received:t.parsedType,code:V.invalid_type}),y}if(!this._cache)this._cache=new Set(ln.getValidEnumValues(this._def.values));if(!this._cache.has(n.data)){let o=ln.objectValues(r);return O(t,{received:t.data,code:V.invalid_enum_value,options:o}),y}return ur(n.data)}get enum(){return this._def.values}}Mc.create=(n,r)=>{return new Mc({values:n,typeName:rn.ZodNativeEnum,...an(r)})};class qo extends en{unwrap(){return this._def.type}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==G.promise&&r.common.async===!1)return O(r,{code:V.invalid_type,expected:G.promise,received:r.parsedType}),y;let t=r.parsedType===G.promise?r.data:Promise.resolve(r.data);return ur(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:rn.ZodPromise,...an(r)})};class st extends en{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===rn.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=this._def.effect||null,c={addIssue:(a)=>{if(O(t,a),a.fatal)r.abort();else r.dirty()},get path(){return t.path}};if(c.addIssue=c.addIssue.bind(c),o.type==="preprocess"){let a=o.transform(t.data,c);if(t.common.async)return Promise.resolve(a).then(async(e)=>{if(r.value==="aborted")return y;let i=await this._def.schema._parseAsync({data:e,path:t.path,parent:t});if(i.status==="aborted")return y;if(i.status==="dirty")return Lo(i.value);if(r.value==="dirty")return Lo(i.value);return i});else{if(r.value==="aborted")return y;let e=this._def.schema._parseSync({data:a,path:t.path,parent:t});if(e.status==="aborted")return y;if(e.status==="dirty")return Lo(e.value);if(r.value==="dirty")return Lo(e.value);return e}}if(o.type==="refinement"){let a=(e)=>{let i=o.refinement(e,c);if(t.common.async)return Promise.resolve(i);if(i instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(t.common.async===!1){let e=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(e.status==="aborted")return y;if(e.status==="dirty")r.dirty();return a(e.value),{status:r.value,value:e.value}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((e)=>{if(e.status==="aborted")return y;if(e.status==="dirty")r.dirty();return a(e.value).then(()=>{return{status:r.value,value:e.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(!eo(a))return y;let e=o.transform(a.value,c);if(e instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:e}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((a)=>{if(!eo(a))return y;return Promise.resolve(o.transform(a.value,c)).then((e)=>({status:r.value,value:e}))});ln.assertNever(o)}}st.create=(n,r,t)=>{return new st({schema:n,typeName:rn.ZodEffects,effect:r,...an(t)})};st.createWithPreprocess=(n,r,t)=>{return new st({schema:r,effect:{type:"preprocess",transform:n},typeName:rn.ZodEffects,...an(t)})};class et extends en{_parse(n){if(this._getType(n)===G.undefined)return ur(void 0);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}et.create=(n,r)=>{return new et({innerType:n,typeName:rn.ZodOptional,...an(r)})};class Qt extends en{_parse(n){if(this._getType(n)===G.null)return ur(null);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}Qt.create=(n,r)=>{return new Qt({innerType:n,typeName:rn.ZodNullable,...an(r)})};class Dc extends en{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;if(r.parsedType===G.undefined)t=this._def.defaultValue();return this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}Dc.create=(n,r)=>{return new Dc({innerType:n,typeName:rn.ZodDefault,defaultValue:typeof r.default==="function"?r.default:()=>r.default,...an(r)})};class Hc extends en{_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(_c(o))return o.then((c)=>{return{status:"valid",value:c.status==="valid"?c.value:this._def.catchValue({get error(){return new Sr(t.common.issues)},input:t.data})}});else return{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Sr(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}}Hc.create=(n,r)=>{return new Hc({innerType:n,typeName:rn.ZodCatch,catchValue:typeof r.catch==="function"?r.catch:()=>r.catch,...an(r)})};class Sa extends en{_parse(n){if(this._getType(n)!==G.nan){let t=this._getOrReturnCtx(n);return O(t,{code:V.invalid_type,expected:G.nan,received:t.parsedType}),y}return{status:"valid",value:n.data}}}Sa.create=(n)=>{return new Sa({typeName:rn.ZodNaN,...an(n)})};var Mh=Symbol("zod_brand");class Ie extends en{_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 Ea extends en{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.common.async)return(async()=>{let c=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});if(c.status==="aborted")return y;if(c.status==="dirty")return r.dirty(),Lo(c.value);else return this._def.out._parseAsync({data:c.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 Ea({in:n,out:r,typeName:rn.ZodPipeline})}}class zc extends en{_parse(n){let r=this._def.innerType._parse(n),t=(o)=>{if(eo(o))o.value=Object.freeze(o.value);return o};return _c(r)?r.then((o)=>t(o)):t(r)}unwrap(){return this._def.innerType}}zc.create=(n,r)=>{return new zc({innerType:n,typeName:rn.ZodReadonly,...an(r)})};function _u(n,r){let t=typeof n==="function"?n(r):typeof n==="string"?{message:n}:n;return typeof t==="string"?{message:t}:t}function ku(n,r={},t){if(n)return Po.create().superRefine((o,c)=>{let a=n(o);if(a instanceof Promise)return a.then((e)=>{if(!e){let i=_u(r,o),s=i.fatal??t??!0;c.addIssue({code:"custom",...i,fatal:s})}});if(!a){let e=_u(r,o),i=e.fatal??t??!0;c.addIssue({code:"custom",...e,fatal:i})}return});return Po.create()}var Dh={object:Vn.lazycreate},rn;(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"})(rn||(rn={}));var Hh=(n,r={message:`Input not instance of ${n.name}`})=>ku((t)=>t instanceof n,r),Ru=ct.create,Au=so.create,zh=Sa.create,Bh=lo.create,Su=hc.create,Uh=Qo.create,xh=$a.create,Wh=$c.create,Yh=kc.create,Jh=Po.create,Xh=io.create,Vh=St.create,Ch=ka.create,Lh=at.create,Qh=Vn.create,Ph=Vn.strictCreate,Gh=Rc.create,qh=pe.create,Nh=Ac.create,Oh=Et.create,Fh=Ra.create,jh=Aa.create,Kh=Go.create,Th=wc.create,vh=Sc.create,ph=Ec.create,Ih=fo.create,Zh=Mc.create,yh=qo.create,n$=st.create,r$=et.create,t$=Qt.create,o$=st.createWithPreprocess,c$=Ea.create,a$=()=>Ru().optional(),e$=()=>Au().optional(),i$=()=>Su().optional(),s$={string:(n)=>ct.create({...n,coerce:!0}),number:(n)=>so.create({...n,coerce:!0}),boolean:(n)=>hc.create({...n,coerce:!0}),bigint:(n)=>lo.create({...n,coerce:!0}),date:(n)=>Qo.create({...n,coerce:!0})};var l$=y;var f$=A.object({name:A.string().regex(/^x-/),component:A.unknown()}),Eu=A.function().returns(A.object({name:A.string(),extensions:A.array(f$)}));var Mu=[["--theme-","--scalar-"],["--sidebar-","--scalar-sidebar-"]],d$=Mu.map(([n])=>n);function Ze(n){if(!d$.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"),Mu.reduce((t,[o,c])=>t.replaceAll(o,c),n)}var b$=A.enum(["alternate","default","moon","purple","solarized","bluePlanet","deepSpace","saturn","kepler","elysiajs","fastify","mars","none"]),g$=A.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"]),u$=A.enum(["adonisjs","docusaurus","dotnet","elysiajs","express","fastapi","fastify","go","hono","html","laravel","litestar","nestjs","nextjs","nitro","nuxt","platformatic","react","rust","vue"]).nullable(),Hu=A.object({url:A.string().optional(),content:A.union([A.string(),A.record(A.any()),A.function().returns(A.record(A.any())),A.null()]).optional(),title:A.string().optional(),slug:A.string().optional()}),_$=A.object({basePath:A.string()}),zu=A.object({url:A.string().optional(),content:A.union([A.string(),A.record(A.any()),A.function().returns(A.record(A.any())),A.null()]).optional(),title:A.string().optional(),slug:A.string().optional(),spec:Hu.optional(),authentication:A.any().optional(),baseServerURL:A.string().optional(),hideClientButton:A.boolean().optional().default(!1).catch(!1),proxyUrl:A.string().optional(),searchHotKey:g$.optional(),servers:A.array(A.any()).optional(),showSidebar:A.boolean().optional().default(!0).catch(!0),theme:b$.optional().default("default").catch("default"),_integration:u$.optional(),onRequestSent:A.function().args(A.string()).returns(A.void()).optional()}),Du="https://api.scalar.com/request-proxy",af="https://proxy.scalar.com",m$=zu.merge(A.object({layout:A.enum(["modern","classic"]).optional().default("modern").catch("modern"),proxy:A.string().optional(),plugins:A.array(Eu).optional(),isEditable:A.boolean().optional().default(!1).catch(!1),isLoading:A.boolean().optional().default(!1).catch(!1),hideModels:A.boolean().optional().default(!1).catch(!1),hideDownloadButton:A.boolean().optional().default(!1).catch(!1),hideTestRequestButton:A.boolean().optional().default(!1).catch(!1),hideSearch:A.boolean().optional().default(!1).catch(!1),darkMode:A.boolean().optional(),forceDarkModeState:A.enum(["dark","light"]).optional(),hideDarkModeToggle:A.boolean().optional().default(!1).catch(!1),metaData:A.any().optional(),favicon:A.string().optional(),hiddenClients:A.union([A.record(A.union([A.boolean(),A.array(A.string())])),A.array(A.string()),A.literal(!0)]).optional(),defaultHttpClient:A.object({targetKey:A.custom(),clientKey:A.string()}).optional(),customCss:A.string().optional(),onSpecUpdate:A.function().args(A.string()).returns(A.void()).optional(),onServerChange:A.function().args(A.string()).returns(A.void()).optional(),onDocumentSelect:A.function().returns(A.void().or(A.void().promise())).optional(),onLoaded:A.function().returns(A.void().or(A.void().promise())).optional(),onShowMore:A.function().args(A.string()).returns(A.void().or(A.void().promise())).optional(),onSidebarClick:A.function().args(A.string()).returns(A.void().or(A.void().promise())).optional(),pathRouting:_$.optional(),generateHeadingSlug:A.function().args(A.object({slug:A.string().default("headingSlug")})).returns(A.string()).optional(),generateModelSlug:A.function().args(A.object({name:A.string().default("modelName")})).returns(A.string()).optional(),generateTagSlug:A.function().args(A.object({name:A.string().default("tagName")})).returns(A.string()).optional(),generateOperationSlug:A.function().args(A.object({path:A.string(),operationId:A.string().optional(),method:A.string(),summary:A.string().optional()})).returns(A.string()).optional(),generateWebhookSlug:A.function().args(A.object({name:A.string(),method:A.string().optional()})).returns(A.string()).optional(),redirect:A.function().args(A.string()).returns(A.string().nullable().optional()).optional(),withDefaultFonts:A.boolean().optional().default(!0).catch(!0),defaultOpenAllTags:A.boolean().optional(),tagsSorter:A.union([A.literal("alpha"),A.function().args(A.any(),A.any()).returns(A.number())]).optional(),operationsSorter:A.union([A.literal("alpha"),A.literal("method"),A.function().args(A.any(),A.any()).returns(A.number())]).optional()})),w$=(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=Ze(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===Du)console.warn(`[DEPRECATED] Warning: configuration.proxyUrl points to our old proxy (${Du}).`),console.warn(`[DEPRECATED] We are overwriting the value and use the new proxy URL (${af}) instead.`),console.warn(`[DEPRECATED] Action Required: You should manually update your configuration to use the new URL (${af}). Read more: https://github.com/scalar/scalar`),r.proxyUrl=af;return r},h$=m$.transform(w$);var $$=A.object({cdn:A.string().optional().default("https://cdn.jsdelivr.net/npm/@scalar/api-reference"),pageTitle:A.string().optional().default("Scalar API Reference")});var k$={alternate:tu,default:au,moon:lu,elysiajs:Ke,fastify:eu,purple:fu,solarized:bu,bluePlanet:ou,deepSpace:cu,saturn:du,kepler:iu,mars:su};var C7=Object.keys(k$);import{replaceSchemaType as M$,t as sf}from"elysia";function ef(n){return"type"in n||"properties"in n||"items"in n}function A$(n,r){return(n==="createdAt"||n==="updatedAt")&&"anyOf"in r&&Array.isArray(r.anyOf)}function xu(n){if(!ef(n)||typeof n!=="object"||n===null)return n;let r={...n};return Object.entries(r).forEach(([t,o])=>{if(ef(o))if(A$(t,o)){let c=o.anyOf?.find((a)=>ef(a)&&a.format==="date-time");if(c){let a={type:"string",format:"date-time",default:c.default};r[t]=a}}else r[t]=xu(o)}),r}var S$=(n,r,t,o,c)=>{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,xu(s)]));let e=JSON.stringify(a);return`<!DOCTYPE html>
1429
1429
  <html lang="en">
1430
1430
  <head>
1431
1431
  <meta charset="utf-8" />
@@ -1501,7 +1501,7 @@ data: ${t}
1501
1501
  </script>
1502
1502
  <script src="${o?o:`https://cdn.jsdelivr.net/npm/@scalar/api-reference@${r}/dist/browser/standalone.min.js`}" crossorigin></script>
1503
1503
  </body>
1504
- </html>`;var ff=Symbol.for("TypeBox.Kind"),D$=(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("/"),lf=(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,c])=>{let{type:a=void 0,description:e,examples:i,...s}=c;return{description:e,examples:i,schema:{type:a,...s},in:n,name:o,required:r.required?.includes(o)??!1}})},Ma=(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)&&(ff in r)&&r[ff]==="Ref"?{...r,$ref:`#/components/schemas/${r.$ref}`}:M$({...r},{from:sf.Ref(""),to:({$ref:c,...a})=>{if(!c.startsWith("#/components/schemas/"))return sf.Ref(`#/components/schemas/${c}`,a);return sf.Ref(c,a)}})};return t},Uu=(n)=>n.charAt(0).toUpperCase()+n.slice(1),H$=(n,r)=>{let t=n.toLowerCase();if(r==="/")return t+"Index";for(let o of r.split("/"))if(o.charCodeAt(0)===123)t+="By"+Uu(o.slice(1,-1));else t+=Uu(o);return t},Uc=(n)=>{if(!n)return;if(typeof n==="string")return n;if(Array.isArray(n))return[...n];return{...n}},Bu=({schema:n,path:r,method:t,hook:o,models:c})=>{if(o=Uc(o),o.parse&&!Array.isArray(o.parse))o.parse=[o.parse];let a=o.parse?.map((h)=>{switch(typeof h){case"string":return h;case"object":if(h&&typeof h?.fn!=="string")return;switch(h?.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((h)=>h!==void 0);if(!a||a.length===0)a=["application/json","multipart/form-data","text/plain"];r=D$(r);let e=typeof a==="string"?[a]:a??["application/json"],i=Uc(o?.body),s=Uc(o?.params),l=Uc(o?.headers),f=Uc(o?.query),b=Uc(o?.response);if(typeof b==="object")if(ff in b){let{type:h,properties:k,required:$,additionalProperties:m,patternProperties:R,$ref:X,...C}=b;b={"200":{...C,description:C.description,content:Ma(e,h==="object"||h==="array"?{type:h,properties:k,patternProperties:R,items:b.items,required:$}:b)}}}else Object.entries(b).forEach(([h,k])=>{if(typeof k==="string"){if(!c[k])return;let{type:$,properties:m,required:R,additionalProperties:X,patternProperties:C,...E}=c[k];b[h]={...E,description:E.description,content:Ma(e,k)}}else{let{type:$,properties:m,required:R,additionalProperties:X,patternProperties:C,...E}=k;b[h]={...E,description:E.description,content:Ma(e,$==="object"||$==="array"?{type:$,properties:m,patternProperties:C,items:k.items,required:R}:k)}}});else if(typeof b==="string"){if(!(b in c))return;let{type:h,properties:k,required:$,$ref:m,additionalProperties:R,patternProperties:X,...C}=c[b];b={"200":{...C,content:Ma(e,b)}}}let g=[...lf("header",l,c),...lf("path",s,c),...lf("query",f,c)];n[r]={...n[r]?n[r]:{},[t.toLowerCase()]:{...l||s||f||i?{parameters:g}:{},...b?{responses:b}:{},operationId:o?.detail?.operationId??H$(t,r),...o?.detail,...i?{requestBody:{required:!0,content:Ma(e,typeof i==="string"?{$ref:`#/components/schemas/${i}`}:i)}}:null}}},z$=(n,{excludeStaticFile:r=!0,exclude:t=[]})=>{let o={};for(let[c,a]of Object.entries(n))if(!t.some((e)=>{if(typeof e==="string")return c===e;return e.test(c)})&&!c.includes("*")&&(r?!c.includes("."):!0))Object.keys(a).forEach((e)=>{let i=a[e];if(c.includes("{")){if(!i.parameters)i.parameters=[];i.parameters=[...c.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[c]=a;return o},Wu=({provider:n="scalar",scalarVersion:r="latest",scalarCDN:t="",scalarConfig:o={},documentation:c={},version:a="5.9.0",excludeStaticFile:e=!0,path:i="/swagger",specPath:s=`${i}/json`,exclude:l=[],swaggerOptions:f={},theme:b=`https://unpkg.com/swagger-ui-dist@${a}/swagger-ui.css`,autoDarkMode:g=!0,excludeMethods:h=["OPTIONS"],excludeTags:k=[]}={})=>{let $={},m=0;if(!a)a=`https://unpkg.com/swagger-ui-dist@${a}/swagger-ui.css`;let R={title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...c.info},X=s.startsWith("/")?s.slice(1):s,C=new R$({name:"@elysiajs/swagger"}),E=new Response(n==="swagger-ui"?S$(R,a,b,JSON.stringify({url:X,dom_id:"#swagger-ui",...f},(Q,W)=>typeof W==="function"?void 0:W),g):E$(R,r,{spec:{url:X,...o.spec},...o,_integration:"elysiajs"},t),{headers:{"content-type":"text/html; charset=utf8"}});return C.get(i,E,{detail:{hide:!0}}).get(s,function(){let W=C.getGlobalRoutes();if(W.length!==m){let S=["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"];m=W.length,W.forEach((z)=>{if(z.hooks?.detail?.hide===!0)return;if(h.includes(z.method))return;if(S.includes(z.method)===!1&&z.method!=="ALL")return;if(z.method==="ALL")S.forEach((w)=>{Bu({schema:$,hook:z.hooks,method:w,path:z.path,models:C.getGlobalDefinitions?.().type,contentType:z.hooks.type})});else Bu({schema:$,hook:z.hooks,method:z.method,path:z.path,models:C.getGlobalDefinitions?.().type,contentType:z.hooks.type})})}return{openapi:"3.0.3",...{...c,tags:c.tags?.filter((S)=>!k?.includes(S?.name)),info:{title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...c.info}},paths:{...z$($,{excludeStaticFile:e,exclude:Array.isArray(l)?l:[l]}),...c.paths},components:{...c.components,schemas:{...C.getGlobalDefinitions?.().type,...c.components?.schemas}}}},{detail:{hide:!0}}),C};function df(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 Wu(r)}Ne();kd();je();var O4=(n)=>{let r=new Map;for(let t of n){let o=r.get(t.table_name),c=t.columns??o?.columns;r.set(t.table_name,{...o||{},...t,columns:c})}return Array.from(r.values())},F4=(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}),j4=(n)=>{let r=[];for(let[t,o]of Object.entries(n)){if(!o||typeof o!=="object")continue;let c=o,a=c._;if(a?.name){r.push({table_name:a.name});continue}let e=Object.getOwnPropertySymbols(c);for(let i of e){let s=c[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 K4(n){let r=new N4;if(r.get("/health",()=>({status:"ok",timestamp:Date.now()})),n.staticAssets!==!1){let w=Sn("path"),u=Sn("fs"),U;if(typeof n.staticAssets==="string")U=n.staticAssets;else{let P=w.join(process.cwd(),"public"),J="";for(let F of["nucleus-core-ts","nucleus-core"])try{let I=Sn.resolve(`${F}/package.json`),Y=w.join(w.dirname(I),"public");if(u.existsSync(Y)){J=Y;break}}catch{}if(J)U=J;else if(u.existsSync(P))U=P;else U=P}try{r.use(await Ld({prefix:"/nucleus-core",assets:U}))}catch{}}let t=[],o,c=process.cwd();if(typeof n.options==="string"){let w=Sn("fs"),u=Sn("path"),U=u.isAbsolute(n.options)?n.options:u.resolve(process.cwd(),n.options);c=u.dirname(U);let P=w.readFileSync(U,"utf-8");o=JSON.parse(P)}else o=n.options;if(o.email?.gmail?.json_file_path){let w=Sn("path"),u=o.email.gmail.json_file_path;if(!w.isAbsolute(u))o.email.gmail.json_file_path=w.resolve(c,u)}let{authentication:a,audit:e,entities:i,database:s}=o,l=o.mode==="development",f=new xr({service:o.appId||"nucleus",prettyPrint:l,colorize:l,auditEnabled:e?.enabled??!1}),b=Qg(o);if(!b.valid){for(let w of b.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:g}=b,h={access_token:a?.accessToken?.name||"access_token",refresh_token:a?.refreshToken?.name||"refresh_token",session_token:a?.sessionToken?.name||"session_token"},k=s?.schemas?.[0]||"main",$=q4(k);if(g.databaseUrl)await Pg(g.databaseUrl,f);let m=g.databaseUrl?G4(g.databaseUrl):null,R={},X={};if(n.schema){let u=Sn("path").resolve(process.cwd(),n.schema),U=Sn(u);R=U.createAllTablesForSchema?U.createAllTablesForSchema($):{}}if(n.relations){let u=Sn("path").resolve(process.cwd(),n.relations);X=Sn(u)}let C=df(n.swagger);if(C)r.use(C);let E=n.systemTables||[];t=zl(o,E,"",k),f.info(`[AUTH] Built ${t.length} public routes`);let Q=null,W=null,S=null,z=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}),z=new kl({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:z.isAvailable()});if(r.onStart(async()=>{Gl(o);let w=qe();if(w&&o.rateLimit?.enabled!==!1)Q=new El({redis:w,logger:f,config:o.rateLimit||{}}),f.info(`[RateLimit] Enabled with strategy: ${o.rateLimit?.strategy||"sliding-window"}`);if(w&&o.monitoring?.enabled){if(W=new Sl({redis:w,logger:f,gmail:z||void 0,config:o.monitoring,appId:o.appId}),W.start(),f.info("[Monitoring] Service started"),o.monitoring.endpoints?.enabled){let u={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(pl({monitoringService:W,logger:f,endpoints:u}))}}if(o.liveMonitoring?.enabled){S=new xe(o.liveMonitoring),S.start(),f.info("[LiveMonitoring] Service started");let u=o.liveMonitoring.basePath||"/v1/monitoring",U=o.liveMonitoring.streamInterval||150;r.use(Kg({liveMonitoringService:S,logger:f,basePath:u,streamInterval:U}))}if(m&&n.schema){let P=await import(Sn("path").resolve(process.cwd(),n.schema)),J=R.auditLogs||P.auditLogs;if(e?.enabled&&J)f.addAuditTransport(new ae({db:m,table:J,enabled:!0}));try{f.info(`Syncing schema to database (target: ${k})...`);let{sql:I}=await import("drizzle-orm");await m.execute(I.raw(`CREATE SCHEMA IF NOT EXISTS "${k}"`));try{let Y=Object.fromEntries(Object.entries(R).filter(([N,j])=>{if(j===void 0||j===null)return!1;if(typeof j==="object"&&j!==null)return Object.getOwnPropertySymbols(j).length>0||j._!==void 0;return!1})),B=Object.keys(Y);f.info("[Schema] Tables to sync:",{tables:B,count:B.length});let D=Y.users;if(D){let N=Object.getOwnPropertyNames(D).filter((j)=>!j.startsWith("_"));f.info("[Schema] Users table columns:",{columns:N})}await(await P4({schema:$,...Y},m,[k])).apply(),f.info("[Schema] pushSchema completed successfully")}catch(Y){let B=Y instanceof Error?Y.message:String(Y);f.warn(`[Schema] pushSchema warning: ${B}`)}console.log("Schema sync completed")}catch(I){let Y=I instanceof Error?I.message:String(I);console.error("Schema sync failed:",Y)}if(console.log("Database connection established"),o.authorization?.enabled){let I={...qb,...o.authorization};if(I.autoSeedClaims){let Y=j4(R),B=ig.map((N)=>F4(N)),D=o.entities||[],x=O4([...Y,...D,...B,...n.systemTables||[]]);f.info("[Authorization] Seeding claims...",{schemaEntities:Y.length,systemEntities:B.length,configEntities:D.length,totalEntities:x.length}),await Yb(m,R,X,x,I,f)}if(I.godminEmail&&I.godminPassword)f.info("[Authorization] Setting up godmin..."),await Xb(m,R,I,f);f.info("[Authorization] Enabled")}let F=R.userSessions;if(F&&o.authentication?.sessions?.enabled){let{lt:I}=await import("drizzle-orm"),Y=await m.update(F).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ne(br(F.isActive,!0),I(F.expiresAt,new Date)));f.info("[AUTH] Expired sessions cleanup completed",{expiredCount:Y}),setInterval(async()=>{try{await m.update(F).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ne(br(F.isActive,!0),I(F.expiresAt,new Date)))}catch(B){f.warn("[AUTH] Session cleanup failed",{error:B})}},3600000)}}}).onRequest(async({request:w,set:u})=>{let U=Date.now();w.headers.set("x-request-start-time",String(U));let P=new URL(w.url),J=P.pathname,F=w.method,I=P.search,Y=w.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||w.headers.get("x-real-ip")?.trim()||"unknown",B=w.headers.get("user-agent")||"unknown",D,x={};if(w.method!=="GET"&&w.method!=="HEAD")try{let q=await w.clone().text();x=q?JSON.parse(q):{}}catch{x={}}let N=e?.enabled?{id:Q4(),user_id:"unknown",entity_name:J.split("/").filter(Boolean)[0]||"root",entity_id:null,operation_type:F,summary:"",old_values:{},new_values:x,ip_address:Y,user_agent:B,timestamp:new Date().toISOString(),path:J,query:I}:null,j=Ul(t,J,F);if(Q){let K=j?"public":"private",q;if(J.includes("/auth/login"))q="login";else if(J.includes("/auth/register"))q="register";else if(J.includes("/auth/password-reset"))q="passwordReset";else if(J.includes("/auth/magic-link"))q="magicLink";let tn=q?"auth":K,v=await Q.check({ip:Y,endpoint:J,category:tn,authType:q}),dn=Q.getHeaders(v);for(let[rt,cr]of Object.entries(dn))u.headers[rt]=cr;if(!v.allowed){if(u.status=429,v.retryAfter)u.headers["Retry-After"]=String(v.retryAfter);if(f.warn(`[RateLimit] Blocked request from ${Y} to ${J}`),W)W.recordRateLimitBlock();return new Response(JSON.stringify({error:"Too Many Requests",retryAfter:v.retryAfter}),{status:429,headers:{"Content-Type":"application/json"}})}}if(J==="/health")return;if(a?.enabled&&!j){if(!a.accessToken?.secret||!a.refreshToken?.secret||!a.sessionToken?.secret)return u.status=500,f.traceSync({message:"Authentication secrets not defined",level:"error",context:{path:J,method:F},audit:Xo(N,"Authentication secrets not defined")}),Error("One or more authentication secrets are not defined");if(D=Xg(w.headers,h),!D.session_token)return u.status=401,f.traceSync({message:"No session token",level:"warn",context:{path:J,method:F},audit:Xo(N,"No session token")}),Error("Unauthenticated");let K=await Wo({sessionId:D.session_token});if(!K)return u.status=401,f.traceSync({message:"Invalid session",level:"warn",context:{path:J,method:F,sessionId:D.session_token},audit:Xo(N,"Invalid session")}),Error("Unauthenticated");let q=R.userSessions;if(q&&m){let Tn=(await m.select().from(q).where(br(q.id,D.session_token)).limit(1))[0];if(!Tn||Tn.isActive===!1||Tn.revokedAt)return u.status=401,f.traceSync({message:"Session revoked or inactive",level:"warn",context:{path:J,method:F,sessionId:D.session_token,isActive:Tn?.isActive,revokedAt:Tn?.revokedAt},audit:Xo(N,"Session revoked")}),Error("Session has been revoked");if(Tn.expiresAt&&new Date(Tn.expiresAt)<new Date)return u.status=401,f.traceSync({message:"Session expired",level:"warn",context:{path:J,method:F,sessionId:D.session_token,expiresAt:Tn.expiresAt},audit:Xo(N,"Session expired")}),Error("Session has expired")}if(K.lastActiveAt&&a.sessions?.inactivityTimeout){let $n=new Date(K.lastActiveAt).getTime(),Tn=ot(a.sessions.inactivityTimeout)*1000;if(Date.now()-$n>Tn)return u.status=401,f.traceSync({message:"Session inactive timeout",level:"warn",context:{path:J,method:F,sessionId:D.session_token,lastActiveAt:K.lastActiveAt},audit:Xo(N,"Session inactive timeout")}),Error("Session expired due to inactivity")}il(D.session_token).catch(()=>{});let tn=R.userSessions;if(tn&&m)m.update(tn).set({lastActivityAt:new Date}).where(br(tn.id,D.session_token)).catch(()=>{});let v=Uo(D.access_token||"",g.accessTokenSecret||""),dn=D.access_token?v.valid:!1,rt=D.refresh_token?Uo(D.refresh_token,g.refreshTokenSecret||"").valid:!1;if(!dn&&rt&&D.refresh_token&&K.rememberMe===!0){let $n=await Lg(K.userId,K.id,()=>Vg({refreshTokenId:D.refresh_token,options:o,sessionData:K}));if($n.success&&$n.accessToken){D.access_token=$n.accessToken;let Tn=`${h.access_token}=${$n.accessToken}; Path=/; HttpOnly; SameSite=Strict;Secure; Max-Age=${ot(a.accessToken.expiresIn??"15m")}`;u.headers["Set-Cookie"]=Tn}}let cr=v.valid?v.payload.sub:K.userId;w.headers.set("x-access-token",D.access_token||""),w.headers.set("x-refresh-token",D.refresh_token||""),w.headers.set("x-session-id",D.session_token||""),w.headers.set("x-user-id",cr||"")}}).onAfterHandle(({request:w,set:u})=>{if(W){let U=w.headers.get("x-request-start-time"),P=U?parseInt(U,10):Date.now(),J=Date.now()-P,F=new URL(w.url),I=typeof u.status==="number"?u.status:200;W.recordRequest({endpoint:F.pathname,method:w.method,status:I,responseTimeMs:J,isError:I>=400,errorType:I>=500?"server_error":I>=400?"client_error":void 0})}if(S){let U=new URL(w.url),P={};w.headers.forEach((J,F)=>{P[F]=J}),S.recordRequest({path:U.pathname,method:w.method,timestamp:Date.now(),headers:P})}}).onError((w)=>{let{set:u,code:U,error:P}=w,J=typeof U==="number"?U:500,F=P instanceof Error?P.message:"Internal Server Error";return u.status=J,Response.json({isSuccess:!1,message:F,status:J,errors:[P],data:null})}),f.info("Creating routes for entities"),vl(r,{db:m,schemaTables:R,schemaRelations:X,entities:i,logger:f,databaseUrl:g.databaseUrl,storage:o.storage,authorization:o.authorization,emailServiceAvailable:!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)}),a?.enabled&&m){let w=R.users,u=R.userSessions||R.user_sessions||R.sessions;if(!u&&a.sessions?.enabled)f.warn("[AUTH] sessions is enabled but user_sessions table not found in schema. Disabling sessions.");if(w){Gl(o);let{createAuthRoutes:U}=(kd(),te(T1)),{signJWT:P,verifyJWT:J}=(Bo(),te(Id)),{generateSession:F,deleteSession:I}=(sl(),te(xb));U(r,{authConfig:{db:m,logger:f,usersTable:w,sessionsTable:u,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 Y=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.passwordReset?.enabled&&!Y)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 Y=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.magicLink?.enabled&&!Y)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 Y=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.invite?.enabled&&!Y)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},sessionsTable:u,schemaTables:R,schemaRelations:X,databaseUrl:s?.url,emailService:z,appName:o.appId,captchaService:(()=>{let Y=qe();if(!a.captcha?.enabled||!Y)return null;return new hl({redis:{get:async(D)=>{let x=await Y.read(D);return x.success?x.data:null},set:async(D,x,N)=>{await Y.create(D,x,N?.ex)},del:async(D)=>{await Y.remove(D)}},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:(Y)=>P({subject:Y,expiresInSeconds:ot(a.accessToken?.expiresIn||"15m"),issuer:a.accessToken?.issuer,audience:a.accessToken?.audience},g.accessTokenSecret||"",a.accessToken?.algorithm||"HS256"),signRefreshToken:(Y)=>P({subject:Y,expiresInSeconds:ot(a.refreshToken?.expiresIn||"7d"),issuer:a.refreshToken?.issuer,audience:a.refreshToken?.audience},g.refreshTokenSecret||"",a.refreshToken?.algorithm||"HS256"),verifyRefreshToken:(Y)=>J(Y,g.refreshTokenSecret||""),createSession:async(Y)=>{let B=await F({userId:Y.userId,deviceInfo:Y.deviceInfo});return B.success?B.session.id:""},destroySession:async(Y)=>I({sessionId:Y}),saveSessionToDb:async(Y,B)=>{if(!u||!m)return;let D=a.sessions,x=B.deviceInfo||{},N=`${x.browserName||""}-${x.osName||""}-${x.deviceType||""}`,j=await m.select().from(u).where(ne(br(u.userId,B.userId),br(u.isActive,!0))),K=N&&!N.includes("--unknown")&&!N.includes("Bot/Crawler")&&!N.includes("Headless")&&N!=="--"&&N!=="--unknown",q=K?!j.some((on)=>on.deviceFingerprint===N):!1,tn=j.some((on)=>on.approvalStatus==="approved"),v=D?.trustNewDevices===!1&&q&&K&&tn;f.info("[AUTH] Device fingerprint analysis",{userId:B.userId,deviceFingerprint:N,hasValidFingerprint:K,isNewDevice:q,existingSessionCount:j.length,hasAnyApprovedSession:tn,requiresApproval:v});let dn=null,rt="approved";if(v){let{randomBytes:on}=await import("crypto");dn=on(32).toString("hex"),rt="pending",f.info("[AUTH] New device requires approval",{userId:B.userId,deviceFingerprint:N,ipAddress:x.ipAddress})}let cr=j.filter((on)=>{let Un=on,Rr=Un.deviceFingerprint||"",Nr=Un.ipAddress||"";return(!Rr||Rr==="--"||Rr==="--unknown"||Rr.includes("Bot/Crawler")||Rr.includes("Headless")||Rr.includes("unknown-unknown"))&&(Nr==="127.0.0.1"||Nr==="::1"||Nr==="localhost"||!Nr)});if(cr.length>0){for(let on of cr)await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:"bot_session_cleanup"}).where(br(u.id,on.id));f.info("[AUTH] Cleaned up stale bot/crawler sessions",{userId:B.userId,cleanedCount:cr.length})}if(K&&!q){let on=j.filter((Un)=>Un.deviceFingerprint===N);for(let Un of on)await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:"relogin_same_device"}).where(br(u.id,Un.id));f.info("[AUTH] Revoked old sessions from same device",{userId:B.userId,deviceFingerprint:N,revokedCount:on.length})}if(!D?.allowMultipleDevices&&j.length>0){if(j.filter((Un)=>Un.deviceFingerprint===N).length===0&&q)for(let Un of j)await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:"new_device_login"}).where(br(u.id,Un.id))}if(D?.maxActiveSessions){let{count:on}=await import("drizzle-orm"),Rr=(await m.select({count:on()}).from(u).where(ne(br(u.userId,B.userId),br(u.isActive,!0))))[0]?.count||0;if(Rr>=D.maxActiveSessions){let{asc:Nr}=await import("drizzle-orm"),Ho=await m.select().from(u).where(ne(br(u.userId,B.userId),br(u.isActive,!0))).orderBy(Nr(u.createdAt)).limit(Rr-D.maxActiveSessions+1);for(let ac of Ho)await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:"max_sessions_exceeded"}).where(br(u.id,ac.id))}}let $n=100;if(x.isHeadless)$n-=50;if(x.isBot)$n-=40;if(x.isSuspicious)f.warn("[AUTH] Suspicious login detected",{userId:B.userId,suspiciousPatterns:x.suspiciousPatterns,userAgent:x.userAgent,ipAddress:x.ipAddress});if(q)$n-=25;if(!x.ipAddress||x.ipAddress==="unknown")$n-=20;if(!x.browserName)$n-=15;if(!x.osName)$n-=15;if(!x.deviceType||x.deviceType==="unknown")$n-=10;if(!x.deviceName||x.deviceName==="Unknown Device")$n-=5;let Tn=N&&!N.includes("--unknown")&&N!=="--",cc=x.ipAddress&&x.ipAddress!=="unknown";if(Tn){if(j.filter((Un)=>Un.deviceFingerprint===N).length>0)$n+=20}if(cc){if(j.filter((Un)=>Un.ipAddress===x.ipAddress).length>0)$n+=15}$n=Math.max(0,Math.min(100,$n));let re=50;if(await m.insert(u).values({id:Y,userId:B.userId,tokenHash:Y,deviceFingerprint:N,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:B.loginMethod||"password",rememberMe:B.rememberMe??!1,trustScore:$n,lastActivityAt:new Date,createdAt:new Date,expiresAt:new Date(Date.now()+ot(a.sessionToken?.expiresIn||"30d")*1000),isActive:rt==="approved",approvalStatus:rt,approvalToken:dn,approvalRequestedAt:v?new Date:null}),z&&(D?.notifyOnNewDevice&&q||$n<re||v)){let on=R.users;if(on){let Rr=(await m.select().from(on).where(br(on.id,B.userId)).limit(1))[0];if(Rr?.email){let Nr=$n<re,Ho=a.sessions?.approvalRedirectUrl||"http://localhost:3000/devices",ac=dn?`${Ho}?action=approve&token=${dn}`:"",ds=dn?`${Ho}?action=reject&token=${dn}`:"",gr,ir;if(v)gr="\uD83D\uDD10 New Device Login Requires Approval",ir=`
1504
+ </html>`;var ff=Symbol.for("TypeBox.Kind"),D$=(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("/"),lf=(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,c])=>{let{type:a=void 0,description:e,examples:i,...s}=c;return{description:e,examples:i,schema:{type:a,...s},in:n,name:o,required:r.required?.includes(o)??!1}})},Ma=(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)&&(ff in r)&&r[ff]==="Ref"?{...r,$ref:`#/components/schemas/${r.$ref}`}:M$({...r},{from:sf.Ref(""),to:({$ref:c,...a})=>{if(!c.startsWith("#/components/schemas/"))return sf.Ref(`#/components/schemas/${c}`,a);return sf.Ref(c,a)}})};return t},Bu=(n)=>n.charAt(0).toUpperCase()+n.slice(1),H$=(n,r)=>{let t=n.toLowerCase();if(r==="/")return t+"Index";for(let o of r.split("/"))if(o.charCodeAt(0)===123)t+="By"+Bu(o.slice(1,-1));else t+=Bu(o);return t},Bc=(n)=>{if(!n)return;if(typeof n==="string")return n;if(Array.isArray(n))return[...n];return{...n}},Uu=({schema:n,path:r,method:t,hook:o,models:c})=>{if(o=Bc(o),o.parse&&!Array.isArray(o.parse))o.parse=[o.parse];let a=o.parse?.map((h)=>{switch(typeof h){case"string":return h;case"object":if(h&&typeof h?.fn!=="string")return;switch(h?.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((h)=>h!==void 0);if(!a||a.length===0)a=["application/json","multipart/form-data","text/plain"];r=D$(r);let e=typeof a==="string"?[a]:a??["application/json"],i=Bc(o?.body),s=Bc(o?.params),l=Bc(o?.headers),f=Bc(o?.query),b=Bc(o?.response);if(typeof b==="object")if(ff in b){let{type:h,properties:k,required:$,additionalProperties:m,patternProperties:R,$ref:X,...C}=b;b={"200":{...C,description:C.description,content:Ma(e,h==="object"||h==="array"?{type:h,properties:k,patternProperties:R,items:b.items,required:$}:b)}}}else Object.entries(b).forEach(([h,k])=>{if(typeof k==="string"){if(!c[k])return;let{type:$,properties:m,required:R,additionalProperties:X,patternProperties:C,...E}=c[k];b[h]={...E,description:E.description,content:Ma(e,k)}}else{let{type:$,properties:m,required:R,additionalProperties:X,patternProperties:C,...E}=k;b[h]={...E,description:E.description,content:Ma(e,$==="object"||$==="array"?{type:$,properties:m,patternProperties:C,items:k.items,required:R}:k)}}});else if(typeof b==="string"){if(!(b in c))return;let{type:h,properties:k,required:$,$ref:m,additionalProperties:R,patternProperties:X,...C}=c[b];b={"200":{...C,content:Ma(e,b)}}}let g=[...lf("header",l,c),...lf("path",s,c),...lf("query",f,c)];n[r]={...n[r]?n[r]:{},[t.toLowerCase()]:{...l||s||f||i?{parameters:g}:{},...b?{responses:b}:{},operationId:o?.detail?.operationId??H$(t,r),...o?.detail,...i?{requestBody:{required:!0,content:Ma(e,typeof i==="string"?{$ref:`#/components/schemas/${i}`}:i)}}:null}}},z$=(n,{excludeStaticFile:r=!0,exclude:t=[]})=>{let o={};for(let[c,a]of Object.entries(n))if(!t.some((e)=>{if(typeof e==="string")return c===e;return e.test(c)})&&!c.includes("*")&&(r?!c.includes("."):!0))Object.keys(a).forEach((e)=>{let i=a[e];if(c.includes("{")){if(!i.parameters)i.parameters=[];i.parameters=[...c.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[c]=a;return o},Wu=({provider:n="scalar",scalarVersion:r="latest",scalarCDN:t="",scalarConfig:o={},documentation:c={},version:a="5.9.0",excludeStaticFile:e=!0,path:i="/swagger",specPath:s=`${i}/json`,exclude:l=[],swaggerOptions:f={},theme:b=`https://unpkg.com/swagger-ui-dist@${a}/swagger-ui.css`,autoDarkMode:g=!0,excludeMethods:h=["OPTIONS"],excludeTags:k=[]}={})=>{let $={},m=0;if(!a)a=`https://unpkg.com/swagger-ui-dist@${a}/swagger-ui.css`;let R={title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...c.info},X=s.startsWith("/")?s.slice(1):s,C=new R$({name:"@elysiajs/swagger"}),E=new Response(n==="swagger-ui"?S$(R,a,b,JSON.stringify({url:X,dom_id:"#swagger-ui",...f},(Q,W)=>typeof W==="function"?void 0:W),g):E$(R,r,{spec:{url:X,...o.spec},...o,_integration:"elysiajs"},t),{headers:{"content-type":"text/html; charset=utf8"}});return C.get(i,E,{detail:{hide:!0}}).get(s,function(){let W=C.getGlobalRoutes();if(W.length!==m){let S=["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"];m=W.length,W.forEach((z)=>{if(z.hooks?.detail?.hide===!0)return;if(h.includes(z.method))return;if(S.includes(z.method)===!1&&z.method!=="ALL")return;if(z.method==="ALL")S.forEach((w)=>{Uu({schema:$,hook:z.hooks,method:w,path:z.path,models:C.getGlobalDefinitions?.().type,contentType:z.hooks.type})});else Uu({schema:$,hook:z.hooks,method:z.method,path:z.path,models:C.getGlobalDefinitions?.().type,contentType:z.hooks.type})})}return{openapi:"3.0.3",...{...c,tags:c.tags?.filter((S)=>!k?.includes(S?.name)),info:{title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...c.info}},paths:{...z$($,{excludeStaticFile:e,exclude:Array.isArray(l)?l:[l]}),...c.paths},components:{...c.components,schemas:{...C.getGlobalDefinitions?.().type,...c.components?.schemas}}}},{detail:{hide:!0}}),C};function df(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 Wu(r)}Ne();kd();je();var O4=(n)=>{let r=new Map;for(let t of n){let o=r.get(t.table_name),c=t.columns??o?.columns;r.set(t.table_name,{...o||{},...t,columns:c})}return Array.from(r.values())},F4=(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}),j4=(n)=>{let r=[];for(let[t,o]of Object.entries(n)){if(!o||typeof o!=="object")continue;let c=o,a=c._;if(a?.name){r.push({table_name:a.name});continue}let e=Object.getOwnPropertySymbols(c);for(let i of e){let s=c[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 K4(n){let r=new N4;if(r.get("/health",()=>({status:"ok",timestamp:Date.now()})),n.staticAssets!==!1){let w=Sn("path"),u=Sn("fs"),B;if(typeof n.staticAssets==="string")B=n.staticAssets;else{let P=w.join(process.cwd(),"public"),J="";for(let F of["nucleus-core-ts","nucleus-core"])try{let I=Sn.resolve(`${F}/package.json`),Y=w.join(w.dirname(I),"public");if(u.existsSync(Y)){J=Y;break}}catch{}if(J)B=J;else if(u.existsSync(P))B=P;else B=P}try{r.use(await Ld({prefix:"/nucleus-core",assets:B}))}catch{}}let t=[],o,c=process.cwd();if(typeof n.options==="string"){let w=Sn("fs"),u=Sn("path"),B=u.isAbsolute(n.options)?n.options:u.resolve(process.cwd(),n.options);c=u.dirname(B);let P=w.readFileSync(B,"utf-8");o=JSON.parse(P)}else o=n.options;if(o.email?.gmail?.json_file_path){let w=Sn("path"),u=o.email.gmail.json_file_path;if(!w.isAbsolute(u))o.email.gmail.json_file_path=w.resolve(c,u)}let{authentication:a,audit:e,entities:i,database:s}=o,l=o.mode==="development",f=new xr({service:o.appId||"nucleus",prettyPrint:l,colorize:l,auditEnabled:e?.enabled??!1}),b=Qg(o);if(!b.valid){for(let w of b.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:g}=b,h={access_token:a?.accessToken?.name||"access_token",refresh_token:a?.refreshToken?.name||"refresh_token",session_token:a?.sessionToken?.name||"session_token"},k=s?.schemas?.[0]||"main",$=q4(k);if(g.databaseUrl)await Pg(g.databaseUrl,f);let m=g.databaseUrl?G4(g.databaseUrl):null,R={},X={};if(n.schema){let u=Sn("path").resolve(process.cwd(),n.schema),B=Sn(u);R=B.createAllTablesForSchema?B.createAllTablesForSchema($):{}}if(n.relations){let u=Sn("path").resolve(process.cwd(),n.relations);X=Sn(u)}let C=df(n.swagger);if(C)r.use(C);let E=n.systemTables||[];t=zl(o,E,"",k),f.info(`[AUTH] Built ${t.length} public routes`);let Q=null,W=null,S=null,z=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}),z=new kl({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:z.isAvailable()});if(r.onStart(async()=>{Gl(o);let w=qe();if(w&&o.rateLimit?.enabled!==!1)Q=new El({redis:w,logger:f,config:o.rateLimit||{}}),f.info(`[RateLimit] Enabled with strategy: ${o.rateLimit?.strategy||"sliding-window"}`);if(w&&o.monitoring?.enabled){if(W=new Sl({redis:w,logger:f,gmail:z||void 0,config:o.monitoring,appId:o.appId}),W.start(),f.info("[Monitoring] Service started"),o.monitoring.endpoints?.enabled){let u={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(pl({monitoringService:W,logger:f,endpoints:u}))}}if(o.liveMonitoring?.enabled){S=new xe(o.liveMonitoring),S.start(),f.info("[LiveMonitoring] Service started");let u=o.liveMonitoring.basePath||"/v1/monitoring",B=o.liveMonitoring.streamInterval||150;r.use(Kg({liveMonitoringService:S,logger:f,basePath:u,streamInterval:B}))}if(m&&n.schema){let P=await import(Sn("path").resolve(process.cwd(),n.schema)),J=R.auditLogs||P.auditLogs;if(e?.enabled&&J)f.addAuditTransport(new ae({db:m,table:J,enabled:!0}));try{f.info(`Syncing schema to database (target: ${k})...`);let{sql:I}=await import("drizzle-orm");await m.execute(I.raw(`CREATE SCHEMA IF NOT EXISTS "${k}"`));try{let Y=Object.fromEntries(Object.entries(R).filter(([N,j])=>{if(j===void 0||j===null)return!1;if(typeof j==="object"&&j!==null)return Object.getOwnPropertySymbols(j).length>0||j._!==void 0;return!1})),U=Object.keys(Y);f.info("[Schema] Tables to sync:",{tables:U,count:U.length});let D=Y.users;if(D){let N=Object.getOwnPropertyNames(D).filter((j)=>!j.startsWith("_"));f.info("[Schema] Users table columns:",{columns:N})}await(await P4({schema:$,...Y},m,[k])).apply(),f.info("[Schema] pushSchema completed successfully")}catch(Y){let U=Y instanceof Error?Y.message:String(Y);f.warn(`[Schema] pushSchema warning: ${U}`)}console.log("Schema sync completed")}catch(I){let Y=I instanceof Error?I.message:String(I);console.error("Schema sync failed:",Y)}if(console.log("Database connection established"),o.authorization?.enabled){let I={...qb,...o.authorization};if(I.autoSeedClaims){let Y=j4(R),U=ig.map((N)=>F4(N)),D=o.entities||[],x=O4([...Y,...D,...U,...n.systemTables||[]]);f.info("[Authorization] Seeding claims...",{schemaEntities:Y.length,systemEntities:U.length,configEntities:D.length,totalEntities:x.length}),await Yb(m,R,X,x,I,f)}if(I.godminEmail&&I.godminPassword)f.info("[Authorization] Setting up godmin..."),await Xb(m,R,I,f);f.info("[Authorization] Enabled")}let F=R.userSessions;if(F&&o.authentication?.sessions?.enabled){let{lt:I}=await import("drizzle-orm"),Y=await m.update(F).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ne(br(F.isActive,!0),I(F.expiresAt,new Date)));f.info("[AUTH] Expired sessions cleanup completed",{expiredCount:Y}),setInterval(async()=>{try{await m.update(F).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ne(br(F.isActive,!0),I(F.expiresAt,new Date)))}catch(U){f.warn("[AUTH] Session cleanup failed",{error:U})}},3600000)}}}).onRequest(async({request:w,set:u})=>{let B=Date.now();w.headers.set("x-request-start-time",String(B));let P=new URL(w.url),J=P.pathname,F=w.method,I=P.search,Y=w.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||w.headers.get("x-real-ip")?.trim()||"unknown",U=w.headers.get("user-agent")||"unknown",D,x={};if(w.method!=="GET"&&w.method!=="HEAD")try{let q=await w.clone().text();x=q?JSON.parse(q):{}}catch{x={}}let N=e?.enabled?{id:Q4(),user_id:"unknown",entity_name:J.split("/").filter(Boolean)[0]||"root",entity_id:null,operation_type:F,summary:"",old_values:{},new_values:x,ip_address:Y,user_agent:U,timestamp:new Date().toISOString(),path:J,query:I}:null,j=Bl(t,J,F);if(Q){let K=j?"public":"private",q;if(J.includes("/auth/login"))q="login";else if(J.includes("/auth/register"))q="register";else if(J.includes("/auth/password-reset"))q="passwordReset";else if(J.includes("/auth/magic-link"))q="magicLink";let tn=q?"auth":K,v=await Q.check({ip:Y,endpoint:J,category:tn,authType:q}),dn=Q.getHeaders(v);for(let[rt,cr]of Object.entries(dn))u.headers[rt]=cr;if(!v.allowed){if(u.status=429,v.retryAfter)u.headers["Retry-After"]=String(v.retryAfter);if(f.warn(`[RateLimit] Blocked request from ${Y} to ${J}`),W)W.recordRateLimitBlock();return new Response(JSON.stringify({error:"Too Many Requests",retryAfter:v.retryAfter}),{status:429,headers:{"Content-Type":"application/json"}})}}if(J==="/health")return;if(a?.enabled&&!j){if(!a.accessToken?.secret||!a.refreshToken?.secret||!a.sessionToken?.secret)return u.status=500,f.traceSync({message:"Authentication secrets not defined",level:"error",context:{path:J,method:F},audit:Xo(N,"Authentication secrets not defined")}),Error("One or more authentication secrets are not defined");if(D=Xg(w.headers,h),!D.session_token)return u.status=401,f.traceSync({message:"No session token",level:"warn",context:{path:J,method:F},audit:Xo(N,"No session token")}),Error("Unauthenticated");let K=await Wo({sessionId:D.session_token});if(!K)return u.status=401,f.traceSync({message:"Invalid session",level:"warn",context:{path:J,method:F,sessionId:D.session_token},audit:Xo(N,"Invalid session")}),Error("Unauthenticated");let q=R.userSessions;if(q&&m){let Tn=(await m.select().from(q).where(br(q.id,D.session_token)).limit(1))[0];if(!Tn||Tn.isActive===!1||Tn.revokedAt)return u.status=401,f.traceSync({message:"Session revoked or inactive",level:"warn",context:{path:J,method:F,sessionId:D.session_token,isActive:Tn?.isActive,revokedAt:Tn?.revokedAt},audit:Xo(N,"Session revoked")}),Error("Session has been revoked");if(Tn.expiresAt&&new Date(Tn.expiresAt)<new Date)return u.status=401,f.traceSync({message:"Session expired",level:"warn",context:{path:J,method:F,sessionId:D.session_token,expiresAt:Tn.expiresAt},audit:Xo(N,"Session expired")}),Error("Session has expired")}if(K.lastActiveAt&&a.sessions?.inactivityTimeout){let $n=new Date(K.lastActiveAt).getTime(),Tn=ot(a.sessions.inactivityTimeout)*1000;if(Date.now()-$n>Tn)return u.status=401,f.traceSync({message:"Session inactive timeout",level:"warn",context:{path:J,method:F,sessionId:D.session_token,lastActiveAt:K.lastActiveAt},audit:Xo(N,"Session inactive timeout")}),Error("Session expired due to inactivity")}il(D.session_token).catch(()=>{});let tn=R.userSessions;if(tn&&m)m.update(tn).set({lastActivityAt:new Date}).where(br(tn.id,D.session_token)).catch(()=>{});let v=Bo(D.access_token||"",g.accessTokenSecret||""),dn=D.access_token?v.valid:!1,rt=D.refresh_token?Bo(D.refresh_token,g.refreshTokenSecret||"").valid:!1;if(!dn&&rt&&D.refresh_token&&K.rememberMe===!0){let $n=await Lg(K.userId,K.id,()=>Vg({refreshTokenId:D.refresh_token,options:o,sessionData:K}));if($n.success&&$n.accessToken){D.access_token=$n.accessToken;let Tn=`${h.access_token}=${$n.accessToken}; Path=/; HttpOnly; SameSite=Strict;Secure; Max-Age=${ot(a.accessToken.expiresIn??"15m")}`;u.headers["Set-Cookie"]=Tn}}let cr=v.valid?v.payload.sub:K.userId;w.headers.set("x-access-token",D.access_token||""),w.headers.set("x-refresh-token",D.refresh_token||""),w.headers.set("x-session-id",D.session_token||""),w.headers.set("x-user-id",cr||"")}}).onAfterHandle(({request:w,set:u})=>{if(W){let B=w.headers.get("x-request-start-time"),P=B?parseInt(B,10):Date.now(),J=Date.now()-P,F=new URL(w.url),I=typeof u.status==="number"?u.status:200;W.recordRequest({endpoint:F.pathname,method:w.method,status:I,responseTimeMs:J,isError:I>=400,errorType:I>=500?"server_error":I>=400?"client_error":void 0})}if(S){let B=new URL(w.url),P={};w.headers.forEach((J,F)=>{P[F]=J}),S.recordRequest({path:B.pathname,method:w.method,timestamp:Date.now(),headers:P})}}).onError((w)=>{let{set:u,code:B,error:P}=w,J=typeof B==="number"?B:500,F=P instanceof Error?P.message:"Internal Server Error";return u.status=J,Response.json({isSuccess:!1,message:F,status:J,errors:[P],data:null})}),f.info("Creating routes for entities"),vl(r,{db:m,schemaTables:R,schemaRelations:X,entities:i,logger:f,databaseUrl:g.databaseUrl,storage:o.storage,authorization:o.authorization,emailServiceAvailable:!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)}),a?.enabled&&m){let w=R.users,u=R.userSessions||R.user_sessions||R.sessions;if(!u&&a.sessions?.enabled)f.warn("[AUTH] sessions is enabled but user_sessions table not found in schema. Disabling sessions.");if(w){Gl(o);let{createAuthRoutes:B}=(kd(),te(T1)),{signJWT:P,verifyJWT:J}=(Uo(),te(Id)),{generateSession:F,deleteSession:I}=(sl(),te(xb));B(r,{authConfig:{db:m,logger:f,usersTable:w,sessionsTable:u,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 Y=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.passwordReset?.enabled&&!Y)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 Y=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.magicLink?.enabled&&!Y)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 Y=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(a.invite?.enabled&&!Y)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},sessionsTable:u,schemaTables:R,schemaRelations:X,databaseUrl:s?.url,emailService:z,appName:o.appId,captchaService:(()=>{let Y=qe();if(!a.captcha?.enabled||!Y)return null;return new hl({redis:{get:async(D)=>{let x=await Y.read(D);return x.success?x.data:null},set:async(D,x,N)=>{await Y.create(D,x,N?.ex)},del:async(D)=>{await Y.remove(D)}},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:(Y)=>P({subject:Y,expiresInSeconds:ot(a.accessToken?.expiresIn||"15m"),issuer:a.accessToken?.issuer,audience:a.accessToken?.audience},g.accessTokenSecret||"",a.accessToken?.algorithm||"HS256"),signRefreshToken:(Y)=>P({subject:Y,expiresInSeconds:ot(a.refreshToken?.expiresIn||"7d"),issuer:a.refreshToken?.issuer,audience:a.refreshToken?.audience},g.refreshTokenSecret||"",a.refreshToken?.algorithm||"HS256"),verifyRefreshToken:(Y)=>J(Y,g.refreshTokenSecret||""),createSession:async(Y)=>{let U=await F({userId:Y.userId,deviceInfo:Y.deviceInfo});return U.success?U.session.id:""},destroySession:async(Y)=>I({sessionId:Y}),saveSessionToDb:async(Y,U)=>{if(!u||!m)return;let D=a.sessions,x=U.deviceInfo||{},N=`${x.browserName||""}-${x.osName||""}-${x.deviceType||""}`,j=await m.select().from(u).where(ne(br(u.userId,U.userId),br(u.isActive,!0))),K=N&&!N.includes("--unknown")&&!N.includes("Bot/Crawler")&&!N.includes("Headless")&&N!=="--"&&N!=="--unknown",q=K?!j.some((on)=>on.deviceFingerprint===N):!1,tn=j.some((on)=>on.approvalStatus==="approved"),v=D?.trustNewDevices===!1&&q&&K&&tn;f.info("[AUTH] Device fingerprint analysis",{userId:U.userId,deviceFingerprint:N,hasValidFingerprint:K,isNewDevice:q,existingSessionCount:j.length,hasAnyApprovedSession:tn,requiresApproval:v});let dn=null,rt="approved";if(v){let{randomBytes:on}=await import("crypto");dn=on(32).toString("hex"),rt="pending",f.info("[AUTH] New device requires approval",{userId:U.userId,deviceFingerprint:N,ipAddress:x.ipAddress})}let cr=j.filter((on)=>{let Bn=on,Rr=Bn.deviceFingerprint||"",Nr=Bn.ipAddress||"";return(!Rr||Rr==="--"||Rr==="--unknown"||Rr.includes("Bot/Crawler")||Rr.includes("Headless")||Rr.includes("unknown-unknown"))&&(Nr==="127.0.0.1"||Nr==="::1"||Nr==="localhost"||!Nr)});if(cr.length>0){for(let on of cr)await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:"bot_session_cleanup"}).where(br(u.id,on.id));f.info("[AUTH] Cleaned up stale bot/crawler sessions",{userId:U.userId,cleanedCount:cr.length})}if(K&&!q){let on=j.filter((Bn)=>Bn.deviceFingerprint===N);for(let Bn of on)await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:"relogin_same_device"}).where(br(u.id,Bn.id));f.info("[AUTH] Revoked old sessions from same device",{userId:U.userId,deviceFingerprint:N,revokedCount:on.length})}if(!D?.allowMultipleDevices&&j.length>0){if(j.filter((Bn)=>Bn.deviceFingerprint===N).length===0&&q)for(let Bn of j)await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:"new_device_login"}).where(br(u.id,Bn.id))}if(D?.maxActiveSessions){let{count:on}=await import("drizzle-orm"),Rr=(await m.select({count:on()}).from(u).where(ne(br(u.userId,U.userId),br(u.isActive,!0))))[0]?.count||0;if(Rr>=D.maxActiveSessions){let{asc:Nr}=await import("drizzle-orm"),Ho=await m.select().from(u).where(ne(br(u.userId,U.userId),br(u.isActive,!0))).orderBy(Nr(u.createdAt)).limit(Rr-D.maxActiveSessions+1);for(let ac of Ho)await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:"max_sessions_exceeded"}).where(br(u.id,ac.id))}}let $n=100;if(x.isHeadless)$n-=50;if(x.isBot)$n-=40;if(x.isSuspicious)f.warn("[AUTH] Suspicious login detected",{userId:U.userId,suspiciousPatterns:x.suspiciousPatterns,userAgent:x.userAgent,ipAddress:x.ipAddress});if(q)$n-=25;if(!x.ipAddress||x.ipAddress==="unknown")$n-=20;if(!x.browserName)$n-=15;if(!x.osName)$n-=15;if(!x.deviceType||x.deviceType==="unknown")$n-=10;if(!x.deviceName||x.deviceName==="Unknown Device")$n-=5;let Tn=N&&!N.includes("--unknown")&&N!=="--",cc=x.ipAddress&&x.ipAddress!=="unknown";if(Tn){if(j.filter((Bn)=>Bn.deviceFingerprint===N).length>0)$n+=20}if(cc){if(j.filter((Bn)=>Bn.ipAddress===x.ipAddress).length>0)$n+=15}$n=Math.max(0,Math.min(100,$n));let re=50;if(await m.insert(u).values({id:Y,userId:U.userId,tokenHash:Y,deviceFingerprint:N,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:U.loginMethod||"password",rememberMe:U.rememberMe??!1,trustScore:$n,lastActivityAt:new Date,createdAt:new Date,expiresAt:new Date(Date.now()+ot(a.sessionToken?.expiresIn||"30d")*1000),isActive:rt==="approved",approvalStatus:rt,approvalToken:dn,approvalRequestedAt:v?new Date:null}),z&&(D?.notifyOnNewDevice&&q||$n<re||v)){let on=R.users;if(on){let Rr=(await m.select().from(on).where(br(on.id,U.userId)).limit(1))[0];if(Rr?.email){let Nr=$n<re,Ho=a.sessions?.approvalRedirectUrl||"http://localhost:3000/devices",ac=dn?`${Ho}?action=approve&token=${dn}`:"",ds=dn?`${Ho}?action=reject&token=${dn}`:"",gr,ir;if(v)gr="\uD83D\uDD10 New Device Login Requires Approval",ir=`
1505
1505
  <h2>\uD83D\uDD10 New Device Login Requires Your Approval</h2>
1506
1506
  <p>Someone is trying to log into your account from a new device:</p>
1507
1507
  <ul>
@@ -1529,4 +1529,4 @@ data: ${t}
1529
1529
  <li><strong>Time:</strong> ${new Date().toISOString()}</li>
1530
1530
  </ul>
1531
1531
  <p>If this wasn't you, please secure your account immediately.</p>
1532
- `}z?.sendEmail({to:Rr.email,subject:gr,html:ir}).catch((bs)=>{f.warn("[AUTH] Failed to send login notification email",{error:bs,userId:B.userId,trustScore:$n,requiresApproval:v})})}}}f.info("[AUTH] Session saved to DB",{sessionId:Y,userId:B.userId,isNewDevice:q,deviceFingerprint:N,ipAddress:x.ipAddress})},storeResetToken:async(Y,B,D)=>{let x=R.passwordResetTokens;if(!x||!m)return;await m.insert(x).values({userId:Y,tokenHash:B,expiresAt:D})},getResetToken:async(Y)=>{let{eq:B}=Sn("drizzle-orm"),D=R.passwordResetTokens;if(!D||!m)return null;let N=(await m.select().from(D).where(B(D.tokenHash,Y)).limit(1))[0];if(!N||N.usedAt)return null;return{userId:N.userId,expiresAt:N.expiresAt}},deleteResetToken:async(Y)=>{let{eq:B}=Sn("drizzle-orm"),D=R.passwordResetTokens;if(!D||!m)return;await m.delete(D).where(B(D.tokenHash,Y))},revokeSessionInDb:async(Y,B)=>{if(!u||!m)return;await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:B}).where(br(u.id,Y)),f.info("[AUTH] Session revoked in DB",{sessionId:Y,reason:B})},sendResetEmail:async(Y,B)=>{if(!z?.isAvailable()){f.warn("[AUTH] Cannot send reset email - gmail service not available");return}let D=`${a.passwordReset?.redirectUrl||"http://localhost:3000/reset-password"}?token=${B}`;await z.sendEmail({to:Y,subject:"Password Reset Request",html:`<p>Click the link to reset your password:</p><a href="${D}">${D}</a>`})},storeMagicToken:async(Y)=>{let B=R.magicLinkTokens;if(!B||!m)return;await m.insert(B).values({userId:Y.userId,email:Y.email,tokenHash:Y.tokenHash,expiresAt:Y.expiresAt})},getMagicToken:async(Y)=>{let{eq:B}=Sn("drizzle-orm"),D=R.magicLinkTokens;if(!D||!m)return null;let N=(await m.select().from(D).where(B(D.tokenHash,Y)).limit(1))[0];if(!N||N.usedAt)return null;return{userId:N.userId,email:N.email,tokenHash:N.tokenHash,expiresAt:N.expiresAt}},deleteMagicToken:async(Y)=>{let{eq:B}=Sn("drizzle-orm"),D=R.magicLinkTokens;if(!D||!m)return;await m.delete(D).where(B(D.tokenHash,Y))}}}),f.info("[AUTH] Routes registered")}}if(o.storage?.enabled&&o.storage?.cdn?.enabled){let{createCdnRoutes:w,mergeCdnConfig:u,mergeStorageConfig:U}=(je(),te(Og)),P=u(o.storage.cdn),J=U(o.storage),F=R.files;r.use(w({cdn:P,storagePath:J.basePath,logger:f,getFileRecord:F&&m?async(I)=>{let Y=F,B=await m.select().from(Y).where(br(Y.id,I)).limit(1);if(B.length===0)return null;let D=B[0];return{id:D.id,name:D.name,path:D.path,mime_type:D.mimeType||D.mime_type}}:void 0})),f.info(`[Storage] CDN routes enabled at ${P.basePath}`)}if(o.verification?.enabled&&m)r.use(ru({db:m,schemaTables:R,config:o.verification,logger:f}));if(o.pubsub?.enabled){let w=qe();if(w){let u=o.pubsub,{plugin:U}=rf({redis:w,logger:f,basePath:u.basePath||"/subs",wsPath:u.wsPath||"/api/events/subscribe",pubsubName:u.pubsubName||"pubsub-redis",maxClientsPerUser:u.maxClientsPerUser??10,wsIdleTimeout:u.wsIdleTimeout??120,ack:{enabled:u.ack?.enabled??!0,ttlSeconds:u.ack?.ttlSeconds??300,maxRetries:u.ack?.maxRetries??3,retryIntervalMs:u.ack?.retryIntervalMs??5000},presence:{enabled:u.presence?.enabled??!0,debounceMs:u.presence?.debounceMs??5000},cleanupIntervalMs:u.cleanupIntervalMs??60000});r.use(U),f.info("[PubSub] Enabled",{basePath:u.basePath||"/subs",wsPath:u.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,u=o.appId||"nucleus",U=o.mode||"production";console.log(""),console.log(` \x1B[32m\uD83D\uDE80 ${u}\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${U}\x1B[0m`),console.log("")}),r}export{Ds as usePubSubStore,D2 as usePubSub,u2 as serverFetch,Hd as generateSystemTableEndpoints,Md as generateEndpointsFromConfig,Dd as generateAuthEndpoints,i2 as generateAllEndpoints,k2 as createServerFactory,t2 as createApiHook,na as ServerFetch,K4 as NucleusElysiaPlugin,us as AUTH_ENDPOINT_CONFIGS};
1532
+ `}z?.sendEmail({to:Rr.email,subject:gr,html:ir}).catch((bs)=>{f.warn("[AUTH] Failed to send login notification email",{error:bs,userId:U.userId,trustScore:$n,requiresApproval:v})})}}}f.info("[AUTH] Session saved to DB",{sessionId:Y,userId:U.userId,isNewDevice:q,deviceFingerprint:N,ipAddress:x.ipAddress})},storeResetToken:async(Y,U,D)=>{let x=R.passwordResetTokens;if(!x||!m)return;await m.insert(x).values({userId:Y,tokenHash:U,expiresAt:D})},getResetToken:async(Y)=>{let{eq:U}=Sn("drizzle-orm"),D=R.passwordResetTokens;if(!D||!m)return null;let N=(await m.select().from(D).where(U(D.tokenHash,Y)).limit(1))[0];if(!N||N.usedAt)return null;return{userId:N.userId,expiresAt:N.expiresAt}},deleteResetToken:async(Y)=>{let{eq:U}=Sn("drizzle-orm"),D=R.passwordResetTokens;if(!D||!m)return;await m.delete(D).where(U(D.tokenHash,Y))},revokeSessionInDb:async(Y,U)=>{if(!u||!m)return;await m.update(u).set({isActive:!1,revokedAt:new Date,revokedReason:U}).where(br(u.id,Y)),f.info("[AUTH] Session revoked in DB",{sessionId:Y,reason:U})},sendResetEmail:async(Y,U)=>{if(!z?.isAvailable()){f.warn("[AUTH] Cannot send reset email - gmail service not available");return}let D=`${a.passwordReset?.redirectUrl||"http://localhost:3000/reset-password"}?token=${U}`;await z.sendEmail({to:Y,subject:"Password Reset Request",html:`<p>Click the link to reset your password:</p><a href="${D}">${D}</a>`})},storeMagicToken:async(Y)=>{let U=R.magicLinkTokens;if(!U||!m)return;await m.insert(U).values({userId:Y.userId,email:Y.email,tokenHash:Y.tokenHash,expiresAt:Y.expiresAt})},getMagicToken:async(Y)=>{let{eq:U}=Sn("drizzle-orm"),D=R.magicLinkTokens;if(!D||!m)return null;let N=(await m.select().from(D).where(U(D.tokenHash,Y)).limit(1))[0];if(!N||N.usedAt)return null;return{userId:N.userId,email:N.email,tokenHash:N.tokenHash,expiresAt:N.expiresAt}},deleteMagicToken:async(Y)=>{let{eq:U}=Sn("drizzle-orm"),D=R.magicLinkTokens;if(!D||!m)return;await m.delete(D).where(U(D.tokenHash,Y))}}}),f.info("[AUTH] Routes registered")}}if(o.storage?.enabled&&o.storage?.cdn?.enabled){let{createCdnRoutes:w,mergeCdnConfig:u,mergeStorageConfig:B}=(je(),te(Og)),P=u(o.storage.cdn),J=B(o.storage),F=R.files;r.use(w({cdn:P,storagePath:J.basePath,logger:f,getFileRecord:F&&m?async(I)=>{let Y=F,U=await m.select().from(Y).where(br(Y.id,I)).limit(1);if(U.length===0)return null;let D=U[0];return{id:D.id,name:D.name,path:D.path,mime_type:D.mimeType||D.mime_type}}:void 0})),f.info(`[Storage] CDN routes enabled at ${P.basePath}`)}if(o.verification?.enabled&&m)r.use(ru({db:m,schemaTables:R,config:o.verification,logger:f}));if(o.pubsub?.enabled){let w=qe();if(w){let u=o.pubsub,{plugin:B}=rf({redis:w,logger:f,basePath:u.basePath||"/subs",wsPath:u.wsPath||"/api/events/subscribe",pubsubName:u.pubsubName||"pubsub-redis",maxClientsPerUser:u.maxClientsPerUser??10,wsIdleTimeout:u.wsIdleTimeout??120,ack:{enabled:u.ack?.enabled??!0,ttlSeconds:u.ack?.ttlSeconds??300,maxRetries:u.ack?.maxRetries??3,retryIntervalMs:u.ack?.retryIntervalMs??5000},presence:{enabled:u.presence?.enabled??!0,debounceMs:u.presence?.debounceMs??5000},cleanupIntervalMs:u.cleanupIntervalMs??60000});r.use(B),f.info("[PubSub] Enabled",{basePath:u.basePath||"/subs",wsPath:u.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,u=o.appId||"nucleus",B=o.mode||"production";console.log(""),console.log(` \x1B[32m\uD83D\uDE80 ${u}\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${B}\x1B[0m`),console.log("")}),r}export{Ds as usePubSubStore,D2 as usePubSub,u2 as serverFetch,Hd as generateSystemTableEndpoints,Md as generateEndpointsFromConfig,Dd as generateAuthEndpoints,i2 as generateAllEndpoints,k2 as createServerFactory,t2 as createApiHook,na as ServerFetch,K4 as NucleusElysiaPlugin,us as AUTH_ENDPOINT_CONFIGS};