bknd
Version:
Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.
1 lines • 38.8 kB
JavaScript
import {Value,Default,Check}from'@sinclair/typebox/value';import {validator}from'hono/validator';import {AwsClient}from'aws4fetch';import {XMLParser}from'fast-xml-parser';import {get,has,set,omit}from'lodash-es';import*as P from'@sinclair/typebox';import {SetErrorFunction,DefaultErrorFunction,Errors}from'@sinclair/typebox/errors';import Pe from'dayjs';import Et from'dayjs/plugin/weekOfYear.js';import'hono/cookie';var Ze=Object.create;var D=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Qe=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,et=Object.prototype.hasOwnProperty;var tt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),rt=(t,e)=>{for(var r in e)D(t,r,{get:e[r],enumerable:true});},nt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Qe(e))!et.call(t,s)&&s!==r&&D(t,s,{get:()=>e[s],enumerable:!(n=Ye(e,s))||n.enumerable});return t};var st=(t,e,r)=>(r=t!=null?Ze(Xe(t)):{},nt(D(r,"default",{value:t,enumerable:true}),t));var we=tt((Yr,Q)=>{var u=String,Ee=function(){return {isColorSupported:false,reset:u,bold:u,dim:u,italic:u,underline:u,inverse:u,hidden:u,strikethrough:u,black:u,red:u,green:u,yellow:u,blue:u,magenta:u,cyan:u,white:u,gray:u,bgBlack:u,bgRed:u,bgGreen:u,bgYellow:u,bgBlue:u,bgMagenta:u,bgCyan:u,bgWhite:u,blackBright:u,redBright:u,greenBright:u,yellowBright:u,blueBright:u,magentaBright:u,cyanBright:u,whiteBright:u,bgBlackBright:u,bgRedBright:u,bgGreenBright:u,bgYellowBright:u,bgBlueBright:u,bgMagentaBright:u,bgCyanBright:u,bgWhiteBright:u}};Q.exports=Ee();Q.exports.createColors=Ee;});function ot(t,e,r){return validator(t,(n,s)=>{if(Value.Check(e,n)){let i=Value.Decode(e,n);if(r){let o=r({success:true,data:i},s);if(o instanceof Response||o instanceof Promise)return o}return i}return s.json({success:false,errors:[...Value.Errors(e,n)]},400)})}var q=class extends Error{code=400;name="Exception";_context=void 0;constructor(e,r){super(e),r&&(this.code=r);}context(e){return this._context=e,this}toJSON(){return {error:this.message,type:this.name,context:this._context}}},J=class t extends Error{constructor(r,n,s){super(r);this.details=n;this.type=s;}static with(r,n,s){throw new t(r,n,s)}toJSON(){return {type:this.type??"unknown",message:this.message,details:this.details}}};var V=(t,e)=>typeof t=="string"?[1,"1","true"].includes(t):!!(t||e);function at(){try{return V(0)}catch{return false}}var ct={cli_log_level:{key:"BKND_CLI_LOG_LEVEL",validate:t=>{if(typeof t=="string"&&["log","info","warn","error","debug"].includes(t.toLowerCase()))return t.toLowerCase()}},cli_create_ref:{key:"BKND_CLI_CREATE_REF",validate:t=>typeof t=="string"?t:void 0},cli_telemetry:{key:"BKND_CLI_TELEMETRY",validate:t=>{if(!(typeof t>"u"))return V(t,true)}},modules_debug:{key:"BKND_MODULES_DEBUG",validate:V}},H=(t,e,r)=>{try{let n=r?.source??process.env,s=ct[t],i=n[s.key],o=s.validate(i);if(typeof o<"u")return r?.onValid?.(o),o;r?.onFallback?.(i);}catch{r?.onFallback?.(void 0);}return e};var lt={server:{default_port:1337,assets_path:"/"},data:{default_primary_field:"id"}};function be(t){return t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function ut(t){return Object.prototype.toString.call(t)==="[object Object]"}function ft(t){return t!==null&&typeof t=="object"}function L(t,e=[]){return t===null||typeof t!="object"?t:Array.isArray(t)?t.map(r=>L(r,e)):Object.keys(t).reduce((r,n)=>{let s=e.includes(n)?n:be(n);return r[s]=L(t[n],e),r},{})}function G(t,e=""){let r=[];for(let n in t){let s=e?`${e}.${n}`:n;r.push(s),typeof t[n]=="object"&&t[n]!==null&&(r=r.concat(G(t[n],s)));}return r}function W(t,e,r){for(let[n,s]of Object.entries(e)){let i=r(t[n],s,n,t,e);if(i!==void 0){t[n]=i;continue}s!==void 0&&(!ut(s)&&!Array.isArray(s)||Array.isArray(s)&&!Array.isArray(t[n])?t[n]=s:ft(t[n])?W(t[n],s,r):t[n]=s);}return t}function ve(t){return new XMLParser().parse(t)}var Z=class extends AwsClient{#e;constructor(e,r){super(e),this.#e=r??{responseType:"json"};}convertParams(e){switch(this.#e.convertParams){case "pascalToKebab":return L(e);default:return e}}getUrl(e="/",r={}){let n=new URL(e),s=this.convertParams(r);return Object.entries(s).forEach(([i,o])=>{n.searchParams.append(i,o);}),n.toString()}updateKeysRecursively(e,r){return e==null?e:Array.isArray(e)?e.map(n=>this.updateKeysRecursively(n,r)):typeof e=="object"?Object.keys(e).reduce((n,s)=>{let i=s;return s.indexOf(" ")===-1&&(i=s.charAt(0)[r]()+s.slice(1)),n[i]=this.updateKeysRecursively(e[s],r),n},{}):e}async fetchJson(e,r){let n=await this.fetch(e,r);if(this.#e.responseType==="xml"){if(!n.ok){let o=await n.text();throw new Error(o)}let i=await n.text();return ve(i)}if(!n.ok){let i=await n.json();throw new Error(i.message)}let s=await n.json();return this.#e.responseKeysToUpper?this.updateKeysRecursively(s,"toUpperCase"):s}};var Y=class{constructor(e={},r={}){this.variables=e;this.options=r;}another(){return 1}static hasMarkup(e){let r="";if(Array.isArray(e)||typeof e=="object"){if(!["Array","Object"].includes(e.constructor.name))return false;r=JSON.stringify(e);}else r=String(e);return ["{{"].some(s=>r.includes(s))}async render(e){if(typeof e>"u"||e===null)return e;if(typeof e=="string")return await this.renderString(e);if(Array.isArray(e))return await Promise.all(e.map(r=>this.render(r)));if(typeof e=="object")return await this.renderObject(e);throw new Error("Invalid template type")}async renderString(e){return e.replace(/{{\s*([^{}]+?)\s*}}/g,(r,n)=>{let s=get(this.variables,n.trim());return s==null?"":String(s)})}async renderObject(e){let r={};for(let[n,s]of Object.entries(e)){let i=n;this.options.renderKeys&&(i=await this.renderString(n)),r[i]=await this.render(s);}return r}};var g=st(we());function mt(){try{let t=process||{},e=t.argv||[],r=t.env||{};return !(r.NO_COLOR||e.includes("--no-color"))&&(!!r.FORCE_COLOR||e.includes("--color")||t.platform==="win32"||(t.stdout||{}).isTTY&&r.TERM!=="dumb"||!!r.CI)}catch{return false}}var M={critical:{prefix:"CRT",color:g.default.red,args_color:g.default.red,original:console.error},error:{prefix:"ERR",color:g.default.red,args_color:g.default.red,original:console.error},warn:{prefix:"WRN",color:g.default.yellow,args_color:g.default.yellow,original:console.warn},info:{prefix:"INF",color:g.default.cyan,original:console.info},log:{prefix:"LOG",color:g.default.dim,args_color:g.default.dim,original:console.log},debug:{prefix:"DBG",color:g.default.yellow,args_color:g.default.dim,original:console.debug}};function ht(t,e){let r=mt(),n=M[t],s=n.color(`[${n.prefix}]`),i=e.map(o=>"args_color"in n&&r&&typeof o=="string"?n.args_color(o):o);return n.original(s,g.default.gray(Te()),...i)}var Oe=H("cli_log_level","log"),N=globalThis.__consoleConfig??={level:Oe},Se=Object.keys(M),j=new Proxy(N,{get:(t,e)=>{switch(e){case "original":return console;case "setLevel":return s=>{N.level=s;};case "resetLevel":return ()=>{N.level=Oe;}}let r=Se.indexOf(N.level),n=Se.indexOf(e);return e in M&&n<=r?(...s)=>ht(e,s):()=>null}});function en(t){for(let[e]of Object.entries(M))t[e]=j[e];}var X=Symbol("tb-parse-validation"),ee=class extends Error{constructor(r,n,s){super(s??`Invalid: ${JSON.stringify(n)}`);this.schema=r;this.data=n;this.errors=[...Errors(r,n)];}errors;first(){return this.errors[0]}firstToString(){let r=this.first();return `${r.message} at "${r.path}"`}toJSON(){return {message:this.message,schema:this.schema,data:this.data,errors:this.errors}}};function $e(t){let e=structuredClone(t);return te(e,false),e}function te(t,e=true){if(typeof t=="object"&&t!==null&&!Array.isArray(t)){e?t[X]=true:delete t[X];for(let r in t)typeof t[r]=="object"&&t[r]!==null&&te(t[r],e);}}function re(t,e,r){if(!r?.forceParse&&typeof e=="object"&&X in e)return r?.useDefaults===false?e:Default(t,e);let n=r?.useDefaults===false?e:Default(t,e);if(Check(t,n))return r?.skipMark!==true&&te(n,true),n;if(r?.onError)r.onError(Errors(t,e));else throw new ee(t,e)}function vt(t){t.Set("StringEnum",(e,r)=>typeof r=="string"&&e.enum.includes(r));}vt(P.TypeRegistry);P.Type.String({pattern:"^[a-zA-Z_][a-zA-Z0-9_]*$",minLength:2,maxLength:150});SetErrorFunction(t=>t?.schema?.errorMessage?t.schema.errorMessage:t?.schema?.[P.Kind]==="StringEnum"?`Expected: ${t.schema.enum.map(e=>`"${e}"`).join(", ")}`:DefaultErrorFunction(t));Pe.extend(Et);function Te(t){return Pe(t).format("YYYY-MM-DD HH:mm:ss")}var se=class{constructor(e,r,n){this._schema=e;this.options=n;this._default=Default(e,{}),this._value=r?re(e,structuredClone(r),{forceParse:this.isForceParse(),skipMark:this.isForceParse()}):this._default,this._config=Object.freeze(this._value);}_default;_value;_config;_restriction_bypass=false;isForceParse(){return this.options?.forceParse??true}default(){return this._default}async onBeforeUpdate(e,r){return this.options?.onBeforeUpdate?this.options.onBeforeUpdate(e,r):r}get(e){return e?.stripMark?$e(this._config):this._config}clone(){return structuredClone(this._config)}async set(e,r){let n=re(this._schema,structuredClone(e),{forceParse:true,skipMark:this.isForceParse()}),s=await this.onBeforeUpdate(this._config,n);return this._value=s,this._config=Object.freeze(s),r!==true&&await this.options?.onUpdate?.(this._config),this._config}bypass(){return this._restriction_bypass=true,this}throwIfRestricted(e){if(this._restriction_bypass){this._restriction_bypass=false;return}let r=this.options?.restrictPaths??[];if(Array.isArray(r)&&r.length>0){for(let n of r)if(typeof e=="string"?e.startsWith(n):has(e,n))throw new Error(`Path "${n}" is restricted`)}}async patch(e,r){let n=this.clone(),s=e.length>0?set({},e,r):r;this.throwIfRestricted(s);let i=W(n,s,(l,a)=>{if(Array.isArray(l)&&Array.isArray(a))return a});if(this.options?.overwritePaths){let a=G(r).map(f=>e.length>0?e+"."+f:f).filter(f=>this.options?.overwritePaths?.some(p=>typeof p=="string"?f===p:p.test(f)));if(a.length>0){let f=a.length>1?a.filter(p=>a.some(h=>h!==p&&h.startsWith(p))):a;for(let p of f)set(i,p,get(s,p));}}let o=await this.set(i);return [s,o]}async overwrite(e,r){let n=this.clone(),s=e.length>0?set({},e,r):r;this.throwIfRestricted(s);let i=set(n,e,r),o=await this.set(i);return [s,o]}has(e){let r=e.split(".");if(r.length>1){let n=r.slice(0,-1).join(".");if(!has(this._config,n))throw new Error(`Parent path "${n}" does not exist`)}return has(this._config,e)}async remove(e){if(this.throwIfRestricted(e),!this.has(e))throw new Error(`Path "${e}" does not exist`);let r=this.clone(),n=get(r,e),s=omit(r,e),i=await this.set(s);return [n,i]}};var ie=class{_context=[];_enabled=true;id=Math.random().toString(36).substr(2,9);last=0;constructor(e=true){this._enabled=e;}context(e){return this._context.push(e),this}clear(){return this._context.pop(),this}reset(){return this.last=0,this}log(...e){if(!this._enabled)return this;let r=performance.now(),n=this.last===0?0:Number.parseInt(String(r-this.last)),s=" ".repeat(Math.max(this._context.length-1,0)),i=this._context.length>0?`[${this._context[this._context.length-1]}]`:"";return console.log(s,i,n,...e),this.last=r,this}};var oe=class{constructor(e){this.name=e;this.name=e;}toJSON(){return {name:this.name}}};function Ae(t){return ["string","number","boolean"].includes(typeof t)}function St(t){return [true,false,0,1].includes(t)}var ae=class{constructor(e,r,n){this.key=e;this.valid=r;this.validate=n;}expect};function Ot(t,e,r){return new ae(t,e,r)}function Re(t,e){let r=t.find(n=>n.key===e);if(!r)throw new Error(`Expression does not exist: "${e}"`);return r}var je="$or";function ce(t,e,r=[]){let n=e.map(a=>a.key),s=Object.keys(t),i=[je],o={};if(s.some(a=>a.startsWith("$")&&!i.includes(a)))throw new Error(`Invalid key '${s}'. Keys must not start with '$'.`);if(r.length>0&&s.some(a=>i.includes(a)))throw new Error(`Operand ${je} can only appear at the top level.`);function l(a,f,p=[]){if(Re(e,a).valid(f)===false)throw new Error(`Invalid value at "${[...p,a].join(".")}": ${f}`)}for(let[a,f]of Object.entries(t))if(a==="$or")o.$or=ce(f,e,[...r,a]);else if(Ae(f))l("$eq",f,r),o[a]={$eq:f};else if(typeof f=="object"){let p=Object.keys(f).filter(h=>!n.includes(h));if(p.length===0){o[a]={};for(let[h,b]of Object.entries(f))l(h,b,[...r,a]),o[a][h]=b;}else throw new Error(`Invalid key(s) at "${a}": ${p.join(", ")}. Expected expressions.`)}return o}function _e(t,e,r){let n=r.convert?ce(t,e):t,s={$and:[],$or:[],keys:new Set},{$or:i,...o}=n;function l(a,f,p,h=[]){let b=Re(e,a);if(!b)throw new Error(`Expression does not exist: "${a}"`);if(!b.valid(f))throw new Error(`Invalid expected value at "${[...h,a].join(".")}": ${f}`);return b.validate(f,p,r.exp_ctx)}for(let[a,f]of Object.entries(o))for(let[p,h]of Object.entries(f)){let b=r.value_is_kv?a:r.object[a];s.$and.push(l(p,h,b,[a])),s.keys.add(a);}for(let[a,f]of Object.entries(i??{})){let p=r.value_is_kv?a:r.object[a];for(let[h,b]of Object.entries(f))s.$or.push(l(h,b,p,[a])),s.keys.add(a);}return s}function Tt(t){let e={$and:void 0,$or:void 0};return e.$and=t.$and.every(r=>!!r),e.$or=t.$or.some(r=>!!r),!!e.$and||!!e.$or}function kt(t){return {convert:e=>ce(e,t),build:(e,r)=>_e(e,t,r),validate:(e,r)=>{let n=_e(e,t,r);return Tt(n)},expressions:t,expressionKeys:t.map(e=>e.key)}}var le=class{constructor(e){this.registerFn=e;}is_set=false;items={};set(e){if(this.is_set)throw new Error("Registry is already set");return this.items=e,this.is_set=true,this}add(e,r){return this.items[e]=r,this}register(e,r){if(this.registerFn){let n=this.registerFn(r);return this.items[e]=n,this}return this.add(e,r)}get(e){return this.items[e]}has(e){return e in this.items}all(){return this.items}};var Ie="__bknd_flash";function $t(t){let e=document.cookie.split("; ");for(let r of e){let[n,s]=r.split("=");if(n===t)try{return decodeURIComponent(s)}catch{return null}}return null}function Pt(t=true){let e=$t(Ie);return e&&t&&(document.cookie=`${Ie}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`),e?JSON.parse(e):void 0}var me={};rt(me,{$kind:()=>pe,$optional:()=>de,$raw:()=>O,any:()=>vr,anyOf:()=>kr,array:()=>Je,boolean:()=>Ve,error:()=>d,fromSchema:()=>T,integer:()=>Ue,makeOpts:()=>$,number:()=>De,object:()=>A,oneOf:()=>$r,partialObject:()=>wr,record:()=>Sr,recursive:()=>jr,ref:()=>Pr,refId:()=>Cr,schema:()=>y,strictObject:()=>Er,string:()=>Be,stringConst:()=>Or,valid:()=>c});var pe=Symbol.for("kind"),de=Symbol.for("optional"),O=Symbol.for("raw"),k=class extends Error{constructor(t){super(`Expected ${t}`);}},Ct=class extends Error{constructor(t,e){super(`${t??"Invalid raw schema"}: ${JSON.stringify(e)}`),this.schema=e;}},jt=class extends Error{constructor(t,e){super(`${t}, got: '${JSON.stringify(e)}'`),this.value=e;}};function _t(t){return t===null}function m(t){return !Array.isArray(t)&&typeof t=="object"&&t!==null}function v(t){return typeof t=="string"}function w(t){return typeof t=="number"}function At(t){return typeof t=="number"&&Number.isInteger(t)}function C(t){return typeof t=="boolean"}function S(t){return Array.isArray(t)}function Rt(t){return typeof t=="string"&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)}function It(t){return typeof t!="boolean"}function Lt(t){return t!==void 0&&It(t)&&"type"in t}function x(t){return m(t)&&pe in t}function Nt(t){return x(t)&&C(t[O])}function ue(t,e,r){if(!t)throw new jt(e,r)}function E(t){if(S(t))return t.map(E).sort();if(m(t)){let e=Object.entries(t).sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>[r,E(n)]);return Object.fromEntries(e)}return v(t)?t.normalize("NFC"):t}var fe=(t=[],e="")=>"/"+[e,...t.map(r=>String(r).replace(/\./g,"/"))].filter(Boolean).join("/"),Mt=t=>t.split("/").slice(1);function zt(t,e,r=void 0){let n=typeof e=="string"?Mt(e):fe(e);return ze(t,n,r)}function ze(t,e,r=void 0){let n=typeof e=="string"?e.split(/[.\[\]\"]+/).filter(s=>s):e;if(n.length===0)return t;try{let[s,...i]=n;return !s||!(s in t)?r:ze(t[s],i,r)}catch{if(typeof r<"u")return r;throw new Error(`Invalid path: ${n.join(".")}`)}}var d=(t={},e,r,n)=>({valid:false,errors:[...t.errors??[],{keywordLocation:fe([...t.keywordPath??[],e]),instanceLocation:fe(t.instancePath),error:typeof r=="string"?r:`Invalid value for ${e}`,data:n}]}),c=()=>({valid:true,errors:[]}),$=(t,e,r)=>{let n=Array.isArray(e)?e:[e],s=r?Array.isArray(r)?r:[r]:[];return {...t,keywordPath:[...t.keywordPath??[],...n],instancePath:s?[...t.instancePath??[],...s]:t.instancePath}},F=(t={})=>({...t,errors:[]}),Kt=({type:t},e,r={})=>{if(t===void 0)return c();let n,s={string:v,number:w,integer:At,object:m,array:S,boolean:C,null:_t};if(Array.isArray(t)){for(let i of t){if(!(i in s))throw new k(`Unknown type: ${i}`);if(s[i](e))return c()}n=`Expected one of: ${t.join(", ")}`;}else {if(!(t in s))throw new k(`Unknown type: ${t}`);s[t](e)||(n=`Expected ${t}`);}return n?d(r,"type",n,e):c()},Ft=({const:t},e,r={})=>{let n=JSON.stringify(E(t)),s=JSON.stringify(E(e));return n!==s?d(r,"const",`Expected const: ${n}`,s):c()},Bt=({enum:t=[]},e,r={})=>{let n=JSON.stringify(t.map(E)),s=JSON.stringify(E(e));return n.includes(s)?c():d(r,"enum",`Expected enum: ${n}`,e)};function _(t,e,r={}){return t.map(n=>n.validate(e,F(r)).valid?n:void 0).filter(Boolean)}var Dt=({anyOf:t=[]},e,r={})=>_(t,e,r).length>0?c():d(r,"anyOf","Expected at least one to match",e),Ut=({oneOf:t=[]},e,r={})=>_(t,e).length===1?c():d(r,"oneOf","Expected exactly one to match",e),qt=({allOf:t=[]},e,r={})=>_(t,e,r).length===t.length?c():d(r,"allOf","Expected all to match",e),Jt=({not:t},e,r={})=>x(t)&&t.validate(e,r).valid?d(r,"not","Expected not to match",e):c(),Vt=({if:t,then:e,else:r},n,s={})=>{if(t&&(e||r)){if(t.validate(n,F(s)).valid)return e?e.validate(n,F(s)):c();if(r)return r.validate(n,F(s))}return c()},Ht=({pattern:t=""},e,r={})=>v(e)?new RegExp(t,"u").test(e)?c():d(r,"pattern",`Expected string matching pattern ${t}`,e):c(),Gt=({minLength:t=0},e,r={})=>v(e)?[...E(e)].length>=t?c():d(r,"minLength",`Expected string with minimum length of ${t}`,e):c(),Wt=({maxLength:t=0},e,r={})=>v(e)?[...E(e)].length<=t?c():d(r,"maxLength",`Expected string with maximum length of ${t}`,e):c(),Zt=({multipleOf:t=0},e,r={})=>{if(!w(e))return c();if(!(Number.isFinite(e)&&Number.isFinite(t))||t<=0)throw new k("number");let n=e/t,s=Number.EPSILON*Math.max(1,Math.abs(n));return Math.abs(n-Math.round(n))<=s?c():d(r,"multipleOf",`Expected number being a multiple of ${t}`,e)},Yt=({maximum:t=0},e,r={})=>!w(e)||e<=t?c():d(r,"maximum",`Expected number less than or equal to ${t}`,e),Qt=({exclusiveMaximum:t=0},e,r={})=>!w(e)||e<t?c():d(r,"exclusiveMaximum",`Expected number less than ${t}`,e),Xt=({minimum:t=0},e,r={})=>!w(e)||e>=t?c():d(r,"minimum",`Expected number greater than or equal to ${t}`,e),er=({exclusiveMinimum:t=0},e,r={})=>!w(e)||e>t?c():d(r,"exclusiveMinimum",`Expected number greater than ${t}`,e),tr=({properties:t={}},e,r={})=>{if(!m(e))return c();for(let[n,s]of Object.entries(e)){let i=t[n];if(!x(i))continue;let o=i.validate(s,$(r,["properties",n],n));if(!o.valid)return o}return c()},rr=({properties:t={},additionalProperties:e,patternProperties:r},n,s={})=>{if(!m(n))return c();if(!x(e))throw new k("additionalProperties must be a boolean or a managed schema");let i=Object.keys(t),o=m(r)?Object.keys(n).filter(a=>Object.keys(r).some(f=>new RegExp(f).test(a))):[],l=Object.keys(n).filter(a=>!i.includes(a)&&!o.includes(a));if(l.length>0){if(Nt(e))return e.validate(void 0);if(x(e))for(let a of l){let f=e.validate(n[a],$(s,["additionalProperties"],a));if(!f.valid)return f}}return c()},nr=({dependentRequired:t},e,r={})=>{if(!m(e))return c();let n=Object.keys(e).filter(s=>typeof e[s]!="function");if(m(t)){for(let[s,i]of Object.entries(t))if(n.includes(s)){for(let o of i)if(!n.includes(o))return d(r,"dependentRequired",`Expected dependent required property ${o}`,e)}}return c()},sr=({required:t=[]},e,r={})=>{if(!m(e))return c();let n=Object.keys(e).filter(s=>typeof e[s]!="function");return t.every(s=>n.includes(s))?c():d(r,"required",`Expected object with required properties ${t.join(", ")}`,e)},ir=({dependentSchemas:t},e,r={})=>{if(!m(e))return c();let n=Object.keys(e).filter(s=>typeof e[s]!="function");if(m(t)){for(let[s,i]of Object.entries(t))if(n.includes(s)){let o=i.validate(e,r);if(!o.valid)return o}}return c()},or=({minProperties:t=0},e,r={})=>m(e)?Object.keys(e).length>=t?c():d(r,"minProperties",`Expected object with at least ${t} properties`,e):c(),ar=({maxProperties:t=0},e,r={})=>!m(e)||Object.keys(e).length<=t?c():d(r,"maxProperties",`Expected object with at most ${t} properties`,e),cr=({patternProperties:t={}},e,r={})=>{if(!m(e))return c();if(!m(t))throw new k("patternProperties must be an object");for(let[n,s]of Object.entries(e))for(let[i,o]of Object.entries(t))if(new RegExp(i,"u").test(n)){let l=o.validate(s,$(r,["patternProperties"],n));if(!l.valid)return l}return c()},lr=({propertyNames:t},e,r={})=>{if(!m(e)||t===void 0)return c();if(!x(t))throw new k("propertyNames must be a managed schema");for(let n of Object.keys(e)){let s=t.validate(n,$(r,["propertyNames"],n));if(!s.valid)return s}return c()},ur=({items:t,prefixItems:e=[]},r,n={})=>{if(!S(r)||t===void 0)return c();if(!x(t))throw new k("items must be a managed schema");for(let[s,i]of r.slice(e.length).entries()){let o=t.validate(i,$(n,["items"],String(s)));if(!o.valid)return o}return c()},fr=({minItems:t=0},e,r={})=>!S(e)||e.length>=t?c():d(r,"minItems",`Expected array with at least ${t} items`,e),pr=({maxItems:t=0},e,r={})=>!S(e)||e.length<=t?c():d(r,"maxItems",`Expected array with at most ${t} items`,e),dr=({uniqueItems:t=false},e,r={})=>{if(!S(e)||!t)return c();let n=e.map(E);return new Set(n.map(s=>JSON.stringify(s))).size===e.length?c():d(r,"uniqueItems","Expected array with unique items",e)},yr=({contains:t,minContains:e,maxContains:r},n,s={})=>{if(!x(t))throw new Error("contains must be a managed schema");if(!S(n))return c();let i=n.filter(o=>t.validate(o).valid).length;return i<(e??1)?d(s,e?"minContains":"contains",`Expected array to contain at least ${e??1}, but found ${i}`,n):r!==void 0&&i>r?d(s,"maxContains",`Expected array to contain at most ${r}, but found ${i}`,n):c()},mr=({prefixItems:t=[]},e,r={})=>{if(!S(e))return c();for(let n=0;n<e.length;n++){let s=t[n]?.validate(e[n],$(r,String(n),String(n)));if(s&&s?.valid!==true)return s}return c()},Le={email:t=>{if(t.length>318)return false;if(/^[a-z0-9!#$%&'*+/=?^_`{|}~-]{1,20}(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]{1,21}){0,2}@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,60}[a-z0-9])?){0,3}$/i.test(t))return true;if(!t.includes("@")||/(^\.|^"|\.@|\.\.)/.test(t))return false;let[e,r,...n]=t.split("@");return !e||!r||n.length!==0||e.length>64||r.length>253||!/^[a-z0-9.-]+$/i.test(r)||!/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(e)?false:r.split(".").every(s=>/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(s))},hostname:t=>t.length>(t.endsWith(".")?254:253)?false:/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*\.?$/i.test(t),date:t=>{if(t.length!==10)return false;if(t[5]==="0"&&t[6]==="2"){if(/^\d\d\d\d-02-(?:[012][1-8]|[12]0|[01]9)$/.test(t))return true;let e=t.match(/^(\d\d\d\d)-02-29$/);if(!e)return false;let r=Number(e[1]);return r%16===0||r%4===0&&r%25!==0}return t.endsWith("31")?/^\d\d\d\d-(?:0[13578]|1[02])-31$/.test(t):/^\d\d\d\d-(?:0[13-9]|1[012])-(?:[012][1-9]|[123]0)$/.test(t)},time:t=>{if(t.length>27||!/^(?:2[0-3]|[0-1]\d):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:z|[+-](?:2[0-3]|[0-1]\d)(?::?[0-5]\d)?)?$/i.test(t))return false;if(!/:60/.test(t))return true;let e=t.match(/([0-9.]+|[^0-9.])/g);if(!e)return false;let r=Number(e[0])*60+Number(e[2]);return e[5]==="+"?r+=24*60-Number(e[6]||0)*60-Number(e[8]||0):e[5]==="-"&&(r+=Number(e[6]||0)*60+Number(e[8]||0)),r%(24*60)===23*60+59},"date-time":t=>{if(t.length>38)return false;let e=/^\d\d\d\d-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])[t\s](?:2[0-3]|[0-1]\d):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:z|[+-](?:2[0-3]|[0-1]\d)(?::?[0-5]\d)?)$/i,r=t[5]==="0"&&t[6]==="2";if(r&&t[8]==="3"||!e.test(t))return false;if(t[17]==="6"){let n=t.slice(11).match(/([0-9.]+|[^0-9.])/g);if(!n)return false;let s=Number(n[0])*60+Number(n[2]);if(n[5]==="+"?s+=24*60-Number(n[6]||0)*60-Number(n[8]||0):n[5]==="-"&&(s+=Number(n[6]||0)*60+Number(n[8]||0)),s%(24*60)!==23*60+59)return false}if(r){if(/^\d\d\d\d-02-(?:[012][1-8]|[12]0|[01]9)/.test(t))return true;let n=t.match(/^(\d\d\d\d)-02-29/);if(!n)return false;let s=Number(n[1]??0);return s%16===0||s%4===0&&s%25!==0}return t[8]==="3"&&t[9]==="1"?/^\d\d\d\d-(?:0[13578]|1[02])-31/.test(t):/^\d\d\d\d-(?:0[13-9]|1[012])-(?:[012][1-9]|[123]0)/.test(t)},ipv4:t=>t.length<=15&&/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)$/.test(t),ipv6:t=>{if(t.length>45||t.length<2)return false;let e=0,r=0,n=0,s=false,i=false,o=0,l=true;for(let f=0;f<t.length;f++){let p=t.charCodeAt(f);if(f===1&&o===58&&p!==58)return false;if(p>=48&&p<=57){if(++n>4)return false}else if(p===46){if(e>6||r>=3||n===0||i)return false;r++,n=0;}else if(p===58){if(r>0||e>=7)return false;if(o===58){if(s)return false;s=true;}else f===0&&(l=false);e++,n=0,i=false;}else if(p>=97&&p<=102||p>=65&&p<=70){if(r>0||++n>4)return false;i=true;}else return false;o=p;}if(e<2||r>0&&(r!==3||n===0))return false;if(s&&t.length===2)return true;if(r>0&&!/(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$/.test(t))return false;let a=r>0?6:7;return s?(l||n>0)&&e<a:e===a&&l&&n>0},uri:t=>/^[a-z][a-z0-9+\-.]*:(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/?(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i.test(t),"uri-reference":t=>/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/?(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?)?(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i.test(t),"uri-template":t=>/^(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2}|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i.test(t),"json-pointer":t=>/^(?:|\/(?:[^~]|~0|~1)*)$/.test(t),"relative-json-pointer":t=>/^(?:0|[1-9][0-9]*)(?:|#|\/(?:[^~]|~0|~1)*)$/.test(t),uuid:t=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t),duration:t=>t.length>1&&t.length<80&&(/^P\d+([.,]\d+)?W$/.test(t)||/^P[\dYMDTHS]*(\d[.,]\d+)?[YMDHS]$/.test(t)&&/^P([.,\d]+Y)?([.,\d]+M)?([.,\d]+D)?(T([.,\d]+H)?([.,\d]+M)?([.,\d]+S)?)?$/.test(t)),regex:t=>{if(/[^\\]\\Z/.test(t))return false;try{return new RegExp(t,"u"),!0}catch{return false}}},hr=({format:t},e,r={})=>!v(e)||!t?c():Le[t]?Le[t](e)?c():d(r,"format",`Expected format: ${t}`,e):c(),ye=class{constructor(t){this.root=t,this.cache=new Map;}cache;hasRef(t,e){return e!==void 0&&"$ref"in t&&v(t.$ref)}resolve(t){let e=this.cache.get(t);if(!e){if(e=zt(this.root,t),!x(e))throw new Error(`ref not found: ${t}`);if("$ref"in e&&e.$ref===t)throw new Error(`ref loop: ${t}`);this.cache.set(t,e);}return e}},gr={type:Kt,const:Ft,enum:Bt,allOf:qt,anyOf:Dt,oneOf:Ut,not:Jt,minLength:Gt,maxLength:Wt,pattern:Ht,format:hr,minimum:Xt,exclusiveMinimum:er,maximum:Yt,exclusiveMaximum:Qt,multipleOf:Zt,required:sr,dependentRequired:nr,dependentSchemas:ir,minProperties:or,maxProperties:ar,propertyNames:lr,properties:tr,patternProperties:cr,additionalProperties:rr,minItems:fr,maxItems:pr,uniqueItems:dr,contains:yr,prefixItems:mr,items:ur,if:Vt};function xr(t,e,r={}){let n={keywordPath:r.keywordPath||[],instancePath:r.instancePath||[],coerce:r.coerce||false,errors:r.errors||[],shortCircuit:r.shortCircuit||false,ignoreUnsupported:r.ignoreUnsupported||false,resolver:r.resolver||new ye(t),depth:r.depth?r.depth+1:0},s=structuredClone(r?.coerce?t.coerce(e,{resolver:n.resolver,depth:n.depth}):e);if(r.ignoreUnsupported!==true){let i=["$defs"];for(let o of i)if(t[o])throw new Error(`${o} not implemented`)}if(n.resolver.hasRef(t,s)){let i=n.resolver.resolve(t.$ref).validate(s,{...n,errors:[]});i.valid||n.errors.push(...i.errors);}else for(let[i,o]of Object.entries(gr)){if(t[i]===void 0)continue;let l=o(t,s,{...n,errors:[]});if(!l.valid){if(r.shortCircuit)return l;n.errors.push(...l.errors);}}return {valid:n.errors.length===0,errors:n.errors}}function br(t,e,r={}){let n=structuredClone(e),s={resolver:r.resolver||new ye(t),depth:r.depth||0};return s.resolver.hasRef(t,n)?s.resolver.resolve(t.$ref).coerce(n,{...s,depth:s.depth+1}):n}var y=(t={},e="any")=>{let r=m(t)?t:{},n=C(t)?t:O in t?t[O]:void 0,s={...r,[pe]:e,[O]:n,optional:function(){return y({...this,validate:void 0,[O]:n,[de]:true},e)},template:function(i={}){if(r.const!==void 0)return r.const;if(r.default!==void 0)return r.default;if(r.enum!==void 0)return r.enum[0];if(r.template)return r.template(i)},toJSON:function(){let i=this[O];return C(i)?i:JSON.parse(JSON.stringify(r))}};return s.coerce=function(i,o={}){let l={...o,resolver:o.resolver||new ye(s),depth:o.depth?o.depth+1:0},a=i;return "coerce"in r&&r.coerce!==void 0?r.coerce(a,l):br(s,a,l)},s.validate=function(i,o={}){if(C(n))return n===false?d(o,"","Always fails"):c();let l=o.errors||[];if("validate"in r&&r.validate!==void 0){let a=r.validate(i,o);a.valid||(l=[...l,...a.errors]);}return xr(s,i,{...o,errors:l})},s},vr=(t={})=>y(t,"any"),A=(t,e={})=>{for(let n of Object.keys(t||{}))ue(Rt(n),"invalid property name",n),ue(x(t[n]),"properties must be managed schemas",t[n]);let r=Object.entries(t||{}).filter(([,n])=>!(de in n)).map(([n])=>n);return y({template:Ke,coerce:Fe,...e,type:"object",properties:t,required:r.length>0?r:void 0},"object")},Er=(t,e={})=>A(t,{...e,additionalProperties:y(false)}),wr=(t,e={})=>{let r=Object.fromEntries(Object.entries(t).map(([n,s])=>[n,"optional"in s?s.optional():s]));return A(r,e)},Sr=(t,e={},r)=>y({template:Ke,coerce:Fe,...e,type:"object",additionalProperties:A(t,r)},"object");function Ke(t={}){let e={};if(this.properties)for(let[r,n]of Object.entries(this.properties)){if(t.withOptional!==true&&!this.required?.includes(r))continue;let s=n.template(t);s!==void 0&&(e[r]=s);}return e}function Fe(t,e={}){let r=t;if(typeof r=="string"&&(r.match(/^\{/)||r.match(/^\[/))&&(r=JSON.parse(r)),!(typeof r!="object"||r===null)){if(this.properties)for(let[n,s]of Object.entries(this.properties)){let i=r[n];i!==void 0&&(r[n]=s.coerce(i,e));}return r}}var Be=(t={})=>y({template:()=>"",coerce:e=>w(e)?String(e):e,...t,type:"string"},"string"),Or=(t,e={})=>y({const:t,default:t,readOnly:true,template:()=>t,coerce:r=>(String(r)),...e,type:"string"},"string"),De=(t={})=>y({coerce:e=>v(e)?Number(e):e,template:qe,...t,type:"number"},"number"),Ue=(t={})=>y({coerce:e=>v(e)?Number.parseInt(e):e,template:qe,...t,type:"integer"},"integer");function qe(){if(this.minimum)return this.minimum;if(this.exclusiveMinimum){if(this.multipleOf){let t=this.exclusiveMinimum;for(;t%this.multipleOf!==0;)t++;return t}return this.exclusiveMinimum+1}return 0}var Je=(t,e={})=>(t!==void 0&&ue(x(t),"items must be a schema",t),y({template:()=>[],coerce:Tr,...e,type:"array",items:t},"array"));function Tr(t,e){try{let r=typeof t=="string"?JSON.parse(t):t;if(!Array.isArray(r))return;if(x(this.items))for(let[n,s]of r.entries())r[n]=this.items.coerce(s,e);return r}catch{}return t}var Ve=(t={})=>y({...t,coerce:function(e){if("coerce"in t&&t.coerce)return t.coerce(e);if(v(e)&&["true","false","1","0"].includes(e))return e==="true"||e==="1";if(w(e)){if(e===1)return true;if(e===0)return false}return e},type:"boolean"},"boolean");function Ne(t,e){return Array.isArray(t)?t.map(e):t!==void 0?[e(t)]:[]}function Me(t,e,r=n=>n){return Object.fromEntries(Object.entries(t).map(([n,s])=>[n,r(e(s),n)]))}function T(t){if(C(t))return y(!!t);let e=structuredClone(t);if(!m(e))throw new Ct("non-object schemas not implemented",e);"properties"in e&&e.properties&&(e.properties=Me(e.properties,T,(i,o)=>"required"in e&&Array.isArray(e.required)&&e.required.includes(o)?i:i.optional()));let r=["patternProperties","dependentSchemas","$defs"];for(let i of r)i in e&&e[i]&&(e[i]=Me(e[i],T));let n=["additionalProperties","items","prefixItems","propertyNames","contains","not","if","then","else"];for(let i of n)i in e&&typeof e[i]<"u"&&(S(e[i])?e[i]=Ne(e[i],T):e[i]=T(e[i]));let s=["anyOf","oneOf","allOf"];for(let i of s)if(i in e){let{[i]:o}=e;e[i]=Ne(o,T);}if(Lt(e))switch(e.type){case "string":return Be(e);case "number":return De(e);case "integer":return Ue(e);case "boolean":return Ve(e);case "object":{let{properties:i,...o}=e;return A(i,o)}case "array":{let{items:i,...o}=e;return Je(i,o)}}return y(e)}var kr=(t,e={})=>y({...e,coerce:function(r,n={}){let s=r;if("coerce"in e&&e.coerce!==void 0)return e.coerce.bind(this)(r,n);let i=_(t,s,{ignoreUnsupported:true,resolver:n.resolver,coerce:true});return i.length>0?i[0].coerce(s,n):s},anyOf:t},"anyOf"),$r=(t,e={})=>y({...e,coerce:function(r,n={}){let s=_(t,r,{ignoreUnsupported:true,resolver:n.resolver,coerce:true});return s.length===1?s[0].coerce(r,n):r},oneOf:t},"oneOf"),Pr=(t,e)=>{if(!t.$id)throw new Error("Schema must have an $id");return y({$ref:e??t.$id,coerce:function(r,n={}){return t.coerce(r,n)}},"ref")},Cr=t=>y({$ref:t},"ref"),jr=t=>{let{validate:e,...r}=t(y({$ref:"#"},"recursive"));return y(r,"recursive")};var He=Symbol.for("jsonv"),Ge=(t,e,r,n)=>{let s=validator(t,async(i,o)=>{let l=r?.coerce!==false?e.coerce(i):i,a=e.validate(l);if(!a.valid)return o.json({...a,schema:e},400);if(n){let f=n({result:a,data:l},o);if(f)return f}return l});return r?.skipOpenAPI?s:Object.assign(s,{[He]:{type:"parameters",value:{target:t,schema:e}}})};var We=t=>Object.assign(async(e,r)=>{await r();},{[He]:{type:"route-doc",value:t}});var B=class{_returning;static slug="untitled-event";params;returned=false;validate(e){throw new ge(this,e)}clone(e){let r=new this.constructor(e);return r.returned=true,r}constructor(e){this.params=e;}},he=class extends B{static slug="noparam-event";constructor(){super(null);}},R=class extends Error{constructor(e,r){super(`Expected "${e}", got "${r}"`);}},ge=class extends Error{constructor(r,n){super(`Event "${r.constructor.slug}" returned without validation`);this.data=n;}};var Ar=["sync","async"],I=class{mode="async";event;handler;once=false;id;constructor(e,r,n="async",s){this.event=e,this.handler=r,this.mode=n,this.id=s;}};var xe=class{constructor(e,r){this.options=r;e&&this.registerEvents(e),r?.listeners?.forEach(n=>this.addListener(n));}events=[];listeners=[];enabled=true;asyncs=[];enable(){return this.enabled=true,this}disable(){return this.enabled=false,this}clearEvents(){return this.events=[],this}clearAll(){return this.clearEvents(),this.listeners=[],this}getListeners(){return [...this.listeners]}get Events(){return new Proxy(this,{get:(e,r)=>this.events.find(n=>n.slug===r)})}eventExists(e){let r;return typeof e=="string"?r=e:r=e.constructor?.slug??e.slug,!!this.events.find(n=>r===n.slug)}throwIfEventNotRegistered(e){if(!this.eventExists(e)){let r=e.constructor?.slug??e.slug??e;throw new Error(`Event "${r}" not registered`)}}registerEvent(e,r=false){if(this.eventExists(e)){if(r)return this;throw new Error(`Event "${e.name}" already registered.`)}return this.events.push(e),this}registerEvents(e){return (typeof e=="object"?Object.values(e):e).forEach(n=>this.registerEvent(n,true)),this}addListener(e){return this.throwIfEventNotRegistered(e.event),e.id&&this.listeners.find(n=>n.id===e.id)?(j.debug(`Listener with id "${e.id}" already exists.`),this):(this.listeners.push(e),this)}createEventListener(e,r,n="async"){let s=typeof e=="string"?this.events.find(l=>l.slug===e):e,i=typeof n=="string"?{mode:n}:n,o=new I(s,r,i.mode);i.once&&(o.once=true),i.id&&(o.id=`${s.slug}-${i.id}`),this.addListener(o);}onEvent(e,r,n){this.createEventListener(e,r,n);}on(e,r,n){this.createEventListener(e,r,n);}onAny(e,r){this.events.forEach(n=>this.onEvent(n,e,r));}collectAsyncs(e){this.asyncs.push(...e);}async executeAsyncs(e=r=>Promise.all(r)){if(this.asyncs.length===0)return;let r=[...this.asyncs];this.asyncs=[],await e(r.map(n=>n()));}async emit(e){let r=e.constructor.slug;if(!this.enabled)return j.debug("EventManager disabled, not emitting",r),e;if(!this.eventExists(e))throw new Error(`Event "${r}" not registered`);let n=[],s=[];this.listeners=this.listeners.filter(o=>o.event.slug!==r?true:(o.mode==="sync"?n.push(o):s.push(async()=>await o.handler(e,o.event.slug)),!o.once)),this.collectAsyncs(s);let i=e;for(let o of n)try{let l=await o.handler(i,o.event.slug);if(typeof l<"u"){let a=i.validate(l);if(a&&a.constructor.slug===r){if(!a.returned)throw new Error(`Returned event ${a.constructor.slug} must be marked as returned.`);i=a;}}}catch(l){if(l instanceof R)this.options?.onInvalidReturn?.(i,l),j.warn(`Invalid return of event listener for "${r}": ${l.message}`);else if(this.options?.onError)this.options.onError(i,l);else throw l}return i}};export{j as $console,Z as AwsClient,J as BkndError,ie as DebugLogger,B as Event,I as EventListener,xe as EventManager,q as Exception,R as InvalidEventReturn,Ar as ListenerModes,he as NoParamEvent,oe as Permission,le as Registry,se as SchemaObject,Y as SimpleRenderer,en as colorizeConsole,lt as config,We as describeRoute,H as env,Ot as exp,Pt as getFlashMessage,St as isBooleanLike,at as isDebug,Ae as isPrimitive,Ge as jsc,kt as makeValidator,me as s,ot as tbValidator};