bknd
Version:
Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.
2 lines • 110 kB
JavaScript
import*as p from'@sinclair/typebox';import {SetErrorFunction,DefaultErrorFunction,Errors}from'@sinclair/typebox/errors';import {Default,Check}from'@sinclair/typebox/value';import ze from'dayjs';import Dr from'dayjs/plugin/weekOfYear.js';import {Validator}from'@cfworker/json-schema';import {omit}from'lodash-es';import*as Qe from'kysely';import {ParseJSONResultsPlugin,sql,DEFAULT_MIGRATION_TABLE,DEFAULT_MIGRATION_LOCK_TABLE,Kysely,SqliteDialect}from'kysely';import*as xr from'@libsql/client';import {createClient}from'@libsql/client';import {jsonBuildObject,jsonObjectFrom,jsonArrayFrom}from'kysely/helpers/sqlite';var wr=Object.create;var $t=Object.defineProperty;var Sr=Object.getOwnPropertyDescriptor;var vr=Object.getOwnPropertyNames;var Or=Object.getPrototypeOf,Rr=Object.prototype.hasOwnProperty;var Fr=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),kn=(t,e)=>{for(var n in e)$t(t,n,{get:e[n],enumerable:true});},Cr=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of vr(e))!Rr.call(t,i)&&i!==n&&$t(t,i,{get:()=>e[i],enumerable:!(r=Sr(e,i))||r.enumerable});return t};var $r=(t,e,n)=>(n=t!=null?wr(Or(t)):{},Cr($t(n,"default",{value:t,enumerable:true}),t));var Dn=Fr((Ps,It)=>{var h=String,Bn=function(){return {isColorSupported:false,reset:h,bold:h,dim:h,italic:h,underline:h,inverse:h,hidden:h,strikethrough:h,black:h,red:h,green:h,yellow:h,blue:h,magenta:h,cyan:h,white:h,gray:h,bgBlack:h,bgRed:h,bgGreen:h,bgYellow:h,bgBlue:h,bgMagenta:h,bgCyan:h,bgWhite:h,blackBright:h,redBright:h,greenBright:h,yellowBright:h,blueBright:h,magentaBright:h,cyanBright:h,whiteBright:h,bgBlackBright:h,bgRedBright:h,bgGreenBright:h,bgYellowBright:h,bgBlueBright:h,bgMagentaBright:h,bgCyanBright:h,bgWhiteBright:h}};It.exports=Bn();It.exports.createColors=Bn;});var Z=class extends Error{code=400;name="Exception";_context=void 0;constructor(e,n){super(e),n&&(this.code=n);}context(e){return this._context=e,this}toJSON(){return {error:this.message,type:this.name,context:this._context}}};var jn=(t,e)=>typeof t=="string"?[1,"1","true"].includes(t):!!(t||e);var Pr={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 jn(t,true)}},modules_debug:{key:"BKND_MODULES_DEBUG",validate:jn}},Pt=(t,e,n)=>{try{let r=n?.source??process.env,i=Pr[t],o=r[i.key],s=i.validate(o);if(typeof s<"u")return n?.onValid?.(s),s;n?.onFallback?.(o);}catch{}return e};var Le={data:{default_primary_field:"id"}};function _e(t){return !t||t.length===0?t:t.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ")}function Ve(t){return t!==null&&typeof t=="object"}function Ke(t,e){return Object.entries(t).reduce((n,[r,i])=>{let o=e(i,r);return typeof o<"u"&&(n[r]=o),n},{})}var Mn=Ke;function rt(t,e=0,n=0){let r=e?`
`:"",i=a=>e?" ".repeat(e*a):"",o=i(n+1),s=i(n);if(t===null)return "null";if(t===void 0)return "undefined";let l=typeof t;if(l==="string")return JSON.stringify(t);if(l==="number"||l==="boolean")return String(t);if(Array.isArray(t)){let a=t.map(c=>rt(c,e,n+1)).join(", "+(e?r+o:""));return "["+(e&&t.length?r+o:"")+a+(e&&t.length?r+s:"")+"]"}if(l==="object"){let a=Object.entries(t).map(([u,f])=>(/^[A-Za-z_$][\w$]*$/.test(u)?u:JSON.stringify(u))+": "+rt(f,e,n+1)),c=a.join(", "+(e?r+o:""));return "{"+(e&&a.length?r+o:"")+c+(e&&a.length?r+s:"")+"}"}throw new TypeError(`Unsupported data type: ${l}`)}var A=$r(Dn());function Ir(){try{let t=process||{},e=t.argv||[],n=t.env||{};return !(n.NO_COLOR||e.includes("--no-color"))&&(!!n.FORCE_COLOR||e.includes("--color")||t.platform==="win32"||(t.stdout||{}).isTTY&&n.TERM!=="dumb"||!!n.CI)}catch{return false}}var _t={critical:{prefix:"CRT",color:A.default.red,args_color:A.default.red,original:console.error},error:{prefix:"ERR",color:A.default.red,args_color:A.default.red,original:console.error},warn:{prefix:"WRN",color:A.default.yellow,args_color:A.default.yellow,original:console.warn},info:{prefix:"INF",color:A.default.cyan,original:console.info},log:{prefix:"LOG",color:A.default.dim,args_color:A.default.dim,original:console.log},debug:{prefix:"DBG",color:A.default.yellow,args_color:A.default.dim,original:console.debug}};function _r(t,e){let n=Ir(),r=_t[t],i=r.color(`[${r.prefix}]`),o=e.map(s=>"args_color"in r&&n&&typeof s=="string"?r.args_color(s):s);return r.original(i,A.default.gray(Nn()),...o)}var qn=Pt("cli_log_level","log"),it=globalThis.__consoleConfig??={level:qn},An=Object.keys(_t),g=new Proxy(it,{get:(t,e)=>{switch(e){case "original":return console;case "setLevel":return i=>{it.level=i;};case "resetLevel":return ()=>{it.level=qn;}}let n=An.indexOf(it.level),r=An.indexOf(e);return e in _t&&r<=n?(...i)=>_r(e,i):()=>null}});var kt=Symbol("tb-parse-validation"),Je=class extends Error{constructor(n,r,i){super(i??`Invalid: ${JSON.stringify(r)}`);this.schema=n;this.data=r;this.errors=[...Errors(n,r)];}errors;first(){return this.errors[0]}firstToString(){let n=this.first();return `${n.message} at "${n.path}"`}toJSON(){return {message:this.message,schema:this.schema,data:this.data,errors:this.errors}}};function Ln(t,e=true){if(typeof t=="object"&&t!==null&&!Array.isArray(t)){e?t[kt]=true:delete t[kt];for(let n in t)typeof t[n]=="object"&&t[n]!==null&&Ln(t[n],e);}}function ke(t,e,n){if(typeof e=="object"&&kt in e)return n?.useDefaults===false?e:Default(t,e);let r=n?.useDefaults===false?e:Default(t,e);if(Check(t,r))return Ln(r,true),r;throw new Je(t,e)}function Br(t){t.Set("StringEnum",(e,n)=>typeof n=="string"&&e.enum.includes(n));}Br(p.TypeRegistry);var $=(t,e)=>p.Type.Unsafe({[p.Kind]:"StringEnum",type:"string",enum:t,...e}),Ue=(t,e)=>p.Type.Object({},{...e,additionalProperties:t}),jt=(t,e)=>p.Type.Literal(t,{...e,default:t,const:t,readOnly:true});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));ze.extend(Dr);function Nn(t){return ze(t).format("YYYY-MM-DD HH:mm:ss")}var P=[];for(let t=0;t<256;++t)P.push((t+256).toString(16).slice(1));function Vn(t,e=0){return (P[t[e+0]]+P[t[e+1]]+P[t[e+2]]+P[t[e+3]]+"-"+P[t[e+4]]+P[t[e+5]]+"-"+P[t[e+6]]+P[t[e+7]]+"-"+P[t[e+8]]+P[t[e+9]]+"-"+P[t[e+10]]+P[t[e+11]]+P[t[e+12]]+P[t[e+13]]+P[t[e+14]]+P[t[e+15]]).toLowerCase()}var Mt,Ar=new Uint8Array(16);function st(){if(!Mt){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Mt=crypto.getRandomValues.bind(crypto);}return Mt(Ar)}var Bt={};function qr(t,e,n){let r;if(t)r=Kn(t.random??t.rng?.()??st(),t.msecs,t.seq,e,n);else {let i=Date.now(),o=st();Nr(Bt,i,o),r=Kn(o,Bt.msecs,Bt.seq,e,n);}return e??Vn(r)}function Nr(t,e,n){return t.msecs??=-1/0,t.seq??=0,e>t.msecs?(t.seq=n[6]<<23|n[7]<<16|n[8]<<8|n[9],t.msecs=e):(t.seq=t.seq+1|0,t.seq===0&&t.msecs++),t}function Kn(t,e,n,r,i=0){if(t.length<16)throw new Error("Random bytes length must be >= 16");if(!r)r=new Uint8Array(16),i=0;else if(i<0||i+16>r.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);return e??=Date.now(),n??=t[6]*127<<24|t[7]<<16|t[8]<<8|t[9],r[i++]=e/1099511627776&255,r[i++]=e/4294967296&255,r[i++]=e/16777216&255,r[i++]=e/65536&255,r[i++]=e/256&255,r[i++]=e&255,r[i++]=112|n>>>28&15,r[i++]=n>>>20&255,r[i++]=128|n>>>14&63,r[i++]=n>>>6&255,r[i++]=n<<2&255|t[10]&3,r[i++]=t[11],r[i++]=t[12],r[i++]=t[13],r[i++]=t[14],r[i++]=t[15],r}var Dt=qr;function Jn(){return Dt()}var fe=(t,e)=>t===e,Qr=t=>p.ValueGuard.IsString(t)||p.ValueGuard.IsNumber(t)||p.ValueGuard.IsBoolean(t),Lr=t=>p.ValueGuard.IsObject(t)&&p.ValueGuard.IsArray(t.enum)&&t.enum.every(e=>Qr(e)),Vr=t=>p.ValueGuard.IsObject(t)&&p.ValueGuard.IsArray(t.allOf),Kr=t=>p.ValueGuard.IsObject(t)&&p.ValueGuard.IsArray(t.anyOf),Jr=t=>p.ValueGuard.IsObject(t)&&p.ValueGuard.IsArray(t.oneOf),Ur=t=>p.ValueGuard.IsObject(t)&&fe(t.type,"array")&&p.ValueGuard.IsArray(t.items),zr=t=>p.ValueGuard.IsObject(t)&&fe(t.type,"array")&&!p.ValueGuard.IsArray(t.items)&&p.ValueGuard.IsObject(t.items),Wr=t=>p.ValueGuard.IsObject(t)&&p.ValueGuard.IsObject(t.const),Gr=t=>p.ValueGuard.IsObject(t)&&fe(t.type,"string"),Hr=t=>p.ValueGuard.IsObject(t)&&fe(t.type,"number"),Yr=t=>p.ValueGuard.IsObject(t)&&fe(t.type,"integer"),Zr=t=>p.ValueGuard.IsObject(t)&&fe(t.type,"boolean"),Xr=t=>p.ValueGuard.IsObject(t)&&fe(t.type,"null"),ei=t=>p.ValueGuard.IsObject(t),ti=t=>p.ValueGuard.IsObject(t)&&fe(t.type,"object")&&ei(t.properties)&&(t.required===void 0||p.ValueGuard.IsArray(t.required)&&t.required.every(e=>p.ValueGuard.IsString(e)));function at(t){return t.map(e=>ye(e))}function ni(t){return t.map(e=>p.Literal(e))}function ri(t){return p.IntersectEvaluated(at(t.allOf),t)}function ii(t){return p.UnionEvaluated(at(t.anyOf),t)}function oi(t){return p.UnionEvaluated(at(t.oneOf),t)}function si(t){return p.UnionEvaluated(ni(t.enum))}function ai(t){return p.Tuple(at(t.items),t)}function li(t){return p.Array(ye(t.items),t)}function ci(t){return p.Literal(t.const,t)}function ui(t){let e=globalThis.Object.getOwnPropertyNames(t.properties).reduce((n,r)=>({...n,[r]:t.required?.includes(r)?ye(t.properties[r]):p.Optional(ye(t.properties[r]))}),{});return p.Object(e,t)}function ye(t){return Vr(t)?ri(t):Kr(t)?ii(t):Jr(t)?oi(t):Lr(t)?si(t):ti(t)?ui(t):Ur(t)?ai(t):zr(t)?li(t):Wr(t)?ci(t):Gr(t)?p.String(t):Hr(t)?p.Number(t):Yr(t)?p.Integer(t):Zr(t)?p.Boolean(t):Xr(t)?p.Null(t):p.Unknown(t||{})}function At(t){return t==null?0:typeof t=="number"?t:Number.parseInt(t,10)}var U=class{constructor(e){this.name=e;this.name=e;}toJSON(){return {name:this.name}}};function ee(t){return ["string","number","boolean"].includes(typeof t)}function Nt(t){return [true,false,0,1].includes(t)}var qt=class{constructor(e,n,r){this.key=e;this.valid=n;this.validate=r;}expect};function q(t,e,n){return new qt(t,e,n)}function Wn(t,e){let n=t.find(r=>r.key===e);if(!n)throw new Error(`Expression does not exist: "${e}"`);return n}var Un="$or";function Qt(t,e,n=[]){let r=e.map(a=>a.key),i=Object.keys(t),o=[Un],s={};if(i.some(a=>a.startsWith("$")&&!o.includes(a)))throw new Error(`Invalid key '${i}'. Keys must not start with '$'.`);if(n.length>0&&i.some(a=>o.includes(a)))throw new Error(`Operand ${Un} can only appear at the top level.`);function l(a,c,u=[]){if(Wn(e,a).valid(c)===false)throw new Error(`Invalid value at "${[...u,a].join(".")}": ${c}`)}for(let[a,c]of Object.entries(t))if(a==="$or")s.$or=Qt(c,e,[...n,a]);else if(ee(c))l("$eq",c,n),s[a]={$eq:c};else if(typeof c=="object"){let u=Object.keys(c).filter(f=>!r.includes(f));if(u.length===0){s[a]={};for(let[f,d]of Object.entries(c))l(f,d,[...n,a]),s[a][f]=d;}else throw new Error(`Invalid key(s) at "${a}": ${u.join(", ")}. Expected expressions.`)}return s}function zn(t,e,n){let r=n.convert?Qt(t,e):t,i={$and:[],$or:[],keys:new Set},{$or:o,...s}=r;function l(a,c,u,f=[]){let d=Wn(e,a);if(!d)throw new Error(`Expression does not exist: "${a}"`);if(!d.valid(c))throw new Error(`Invalid expected value at "${[...f,a].join(".")}": ${c}`);return d.validate(c,u,n.exp_ctx)}for(let[a,c]of Object.entries(s))for(let[u,f]of Object.entries(c)){let d=n.value_is_kv?a:n.object[a];i.$and.push(l(u,f,d,[a])),i.keys.add(a);}for(let[a,c]of Object.entries(o??{})){let u=n.value_is_kv?a:n.object[a];for(let[f,d]of Object.entries(c))i.$or.push(l(f,d,u,[a])),i.keys.add(a);}return i}function pi(t){let e={$and:void 0,$or:void 0};return e.$and=t.$and.every(n=>!!n),e.$or=t.$or.some(n=>!!n),!!e.$and||!!e.$or}function Lt(t){return {convert:e=>Qt(e,t),build:(e,n)=>zn(e,t,n),validate:(e,n)=>{let r=zn(e,t,n);return pi(r)},expressions:t,expressionKeys:t.map(e=>e.key)}}var O={};kn(O,{$kind:()=>Jt,$optional:()=>Ut,$raw:()=>Te,any:()=>ro,anyOf:()=>co,array:()=>or,boolean:()=>sr,error:()=>b,fromSchema:()=>we,integer:()=>rr,makeOpts:()=>ve,number:()=>nr,object:()=>Ge,oneOf:()=>uo,partialObject:()=>oo,record:()=>so,recursive:()=>fo,ref:()=>po,refId:()=>yo,schema:()=>v,strictObject:()=>io,string:()=>tr,stringConst:()=>ao,valid:()=>y});var Jt=Symbol.for("kind"),Ut=Symbol.for("optional"),Te=Symbol.for("raw"),Se=class extends Error{constructor(t){super(`Expected ${t}`);}},di=class extends Error{constructor(t,e){super(`${t??"Invalid raw schema"}: ${JSON.stringify(e)}`),this.schema=e;}},yi=class extends Error{constructor(t,e){super(`${t}, got: '${JSON.stringify(e)}'`),this.value=e;}};function fi(t){return t===null}function C(t){return !Array.isArray(t)&&typeof t=="object"&&t!==null}function te(t){return typeof t=="string"}function oe(t){return typeof t=="number"}function mi(t){return typeof t=="number"&&Number.isInteger(t)}function je(t){return typeof t=="boolean"}function se(t){return Array.isArray(t)}function hi(t){return typeof t=="string"&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)}function gi(t){return typeof t!="boolean"}function xi(t){return t!==void 0&&gi(t)&&"type"in t}function V(t){return C(t)&&Jt in t}function bi(t){return V(t)&&je(t[Te])}function Vt(t,e,n){if(!t)throw new yi(e,n)}function ie(t){if(se(t))return t.map(ie).sort();if(C(t)){let e=Object.entries(t).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,ie(r)]);return Object.fromEntries(e)}return te(t)?t.normalize("NFC"):t}var Kt=(t=[],e="")=>"/"+[e,...t.map(n=>String(n).replace(/\./g,"/"))].filter(Boolean).join("/"),Ei=t=>t.split("/").slice(1);function Ti(t,e,n=void 0){let r=typeof e=="string"?Ei(e):Kt(e);return Zn(t,r,n)}function Zn(t,e,n=void 0){let r=typeof e=="string"?e.split(/[.\[\]\"]+/).filter(i=>i):e;if(r.length===0)return t;try{let[i,...o]=r;return !i||!(i in t)?n:Zn(t[i],o,n)}catch{if(typeof n<"u")return n;throw new Error(`Invalid path: ${r.join(".")}`)}}var b=(t={},e,n,r)=>({valid:false,errors:[...t.errors??[],{keywordLocation:Kt([...t.keywordPath??[],e]),instanceLocation:Kt(t.instancePath),error:typeof n=="string"?n:`Invalid value for ${e}`,data:r}]}),y=()=>({valid:true,errors:[]}),ve=(t,e,n)=>{let r=Array.isArray(e)?e:[e],i=n?Array.isArray(n)?n:[n]:[];return {...t,keywordPath:[...t.keywordPath??[],...r],instancePath:i?[...t.instancePath??[],...i]:t.instancePath}},lt=(t={})=>({...t,errors:[]}),wi=({type:t},e,n={})=>{if(t===void 0)return y();let r,i={string:te,number:oe,integer:mi,object:C,array:se,boolean:je,null:fi};if(Array.isArray(t)){for(let o of t){if(!(o in i))throw new Se(`Unknown type: ${o}`);if(i[o](e))return y()}r=`Expected one of: ${t.join(", ")}`;}else {if(!(t in i))throw new Se(`Unknown type: ${t}`);i[t](e)||(r=`Expected ${t}`);}return r?b(n,"type",r,e):y()},Si=({const:t},e,n={})=>{let r=JSON.stringify(ie(t)),i=JSON.stringify(ie(e));return r!==i?b(n,"const",`Expected const: ${r}`,i):y()},vi=({enum:t=[]},e,n={})=>{let r=JSON.stringify(t.map(ie)),i=JSON.stringify(ie(e));return r.includes(i)?y():b(n,"enum",`Expected enum: ${r}`,e)};function We(t,e,n={}){return t.map(r=>r.validate(e,lt(n)).valid?r:void 0).filter(Boolean)}var Oi=({anyOf:t=[]},e,n={})=>We(t,e,n).length>0?y():b(n,"anyOf","Expected at least one to match",e),Ri=({oneOf:t=[]},e,n={})=>We(t,e).length===1?y():b(n,"oneOf","Expected exactly one to match",e),Fi=({allOf:t=[]},e,n={})=>We(t,e,n).length===t.length?y():b(n,"allOf","Expected all to match",e),Ci=({not:t},e,n={})=>V(t)&&t.validate(e,n).valid?b(n,"not","Expected not to match",e):y(),$i=({if:t,then:e,else:n},r,i={})=>{if(t&&(e||n)){if(t.validate(r,lt(i)).valid)return e?e.validate(r,lt(i)):y();if(n)return n.validate(r,lt(i))}return y()},Pi=({pattern:t=""},e,n={})=>te(e)?new RegExp(t,"u").test(e)?y():b(n,"pattern",`Expected string matching pattern ${t}`,e):y(),Ii=({minLength:t=0},e,n={})=>te(e)?[...ie(e)].length>=t?y():b(n,"minLength",`Expected string with minimum length of ${t}`,e):y(),_i=({maxLength:t=0},e,n={})=>te(e)?[...ie(e)].length<=t?y():b(n,"maxLength",`Expected string with maximum length of ${t}`,e):y(),ki=({multipleOf:t=0},e,n={})=>{if(!oe(e))return y();if(!(Number.isFinite(e)&&Number.isFinite(t))||t<=0)throw new Se("number");let r=e/t,i=Number.EPSILON*Math.max(1,Math.abs(r));return Math.abs(r-Math.round(r))<=i?y():b(n,"multipleOf",`Expected number being a multiple of ${t}`,e)},ji=({maximum:t=0},e,n={})=>!oe(e)||e<=t?y():b(n,"maximum",`Expected number less than or equal to ${t}`,e),Mi=({exclusiveMaximum:t=0},e,n={})=>!oe(e)||e<t?y():b(n,"exclusiveMaximum",`Expected number less than ${t}`,e),Bi=({minimum:t=0},e,n={})=>!oe(e)||e>=t?y():b(n,"minimum",`Expected number greater than or equal to ${t}`,e),Di=({exclusiveMinimum:t=0},e,n={})=>!oe(e)||e>t?y():b(n,"exclusiveMinimum",`Expected number greater than ${t}`,e),Ai=({properties:t={}},e,n={})=>{if(!C(e))return y();for(let[r,i]of Object.entries(e)){let o=t[r];if(!V(o))continue;let s=o.validate(i,ve(n,["properties",r],r));if(!s.valid)return s}return y()},qi=({properties:t={},additionalProperties:e,patternProperties:n},r,i={})=>{if(!C(r))return y();if(!V(e))throw new Se("additionalProperties must be a boolean or a managed schema");let o=Object.keys(t),s=C(n)?Object.keys(r).filter(a=>Object.keys(n).some(c=>new RegExp(c).test(a))):[],l=Object.keys(r).filter(a=>!o.includes(a)&&!s.includes(a));if(l.length>0){if(bi(e))return e.validate(void 0);if(V(e))for(let a of l){let c=e.validate(r[a],ve(i,["additionalProperties"],a));if(!c.valid)return c}}return y()},Ni=({dependentRequired:t},e,n={})=>{if(!C(e))return y();let r=Object.keys(e).filter(i=>typeof e[i]!="function");if(C(t)){for(let[i,o]of Object.entries(t))if(r.includes(i)){for(let s of o)if(!r.includes(s))return b(n,"dependentRequired",`Expected dependent required property ${s}`,e)}}return y()},Qi=({required:t=[]},e,n={})=>{if(!C(e))return y();let r=Object.keys(e).filter(i=>typeof e[i]!="function");return t.every(i=>r.includes(i))?y():b(n,"required",`Expected object with required properties ${t.join(", ")}`,e)},Li=({dependentSchemas:t},e,n={})=>{if(!C(e))return y();let r=Object.keys(e).filter(i=>typeof e[i]!="function");if(C(t)){for(let[i,o]of Object.entries(t))if(r.includes(i)){let s=o.validate(e,n);if(!s.valid)return s}}return y()},Vi=({minProperties:t=0},e,n={})=>C(e)?Object.keys(e).length>=t?y():b(n,"minProperties",`Expected object with at least ${t} properties`,e):y(),Ki=({maxProperties:t=0},e,n={})=>!C(e)||Object.keys(e).length<=t?y():b(n,"maxProperties",`Expected object with at most ${t} properties`,e),Ji=({patternProperties:t={}},e,n={})=>{if(!C(e))return y();if(!C(t))throw new Se("patternProperties must be an object");for(let[r,i]of Object.entries(e))for(let[o,s]of Object.entries(t))if(new RegExp(o,"u").test(r)){let l=s.validate(i,ve(n,["patternProperties"],r));if(!l.valid)return l}return y()},Ui=({propertyNames:t},e,n={})=>{if(!C(e)||t===void 0)return y();if(!V(t))throw new Se("propertyNames must be a managed schema");for(let r of Object.keys(e)){let i=t.validate(r,ve(n,["propertyNames"],r));if(!i.valid)return i}return y()},zi=({items:t,prefixItems:e=[]},n,r={})=>{if(!se(n)||t===void 0)return y();if(!V(t))throw new Se("items must be a managed schema");for(let[i,o]of n.slice(e.length).entries()){let s=t.validate(o,ve(r,["items"],String(i)));if(!s.valid)return s}return y()},Wi=({minItems:t=0},e,n={})=>!se(e)||e.length>=t?y():b(n,"minItems",`Expected array with at least ${t} items`,e),Gi=({maxItems:t=0},e,n={})=>!se(e)||e.length<=t?y():b(n,"maxItems",`Expected array with at most ${t} items`,e),Hi=({uniqueItems:t=false},e,n={})=>{if(!se(e)||!t)return y();let r=e.map(ie);return new Set(r.map(i=>JSON.stringify(i))).size===e.length?y():b(n,"uniqueItems","Expected array with unique items",e)},Yi=({contains:t,minContains:e,maxContains:n},r,i={})=>{if(!V(t))throw new Error("contains must be a managed schema");if(!se(r))return y();let o=r.filter(s=>t.validate(s).valid).length;return o<(e??1)?b(i,e?"minContains":"contains",`Expected array to contain at least ${e??1}, but found ${o}`,r):n!==void 0&&o>n?b(i,"maxContains",`Expected array to contain at most ${n}, but found ${o}`,r):y()},Zi=({prefixItems:t=[]},e,n={})=>{if(!se(e))return y();for(let r=0;r<e.length;r++){let i=t[r]?.validate(e[r],ve(n,String(r),String(r)));if(i&&i?.valid!==true)return i}return y()},Gn={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,n,...r]=t.split("@");return !e||!n||r.length!==0||e.length>64||n.length>253||!/^[a-z0-9.-]+$/i.test(n)||!/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(e)?false:n.split(".").every(i=>/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(i))},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 n=Number(e[1]);return n%16===0||n%4===0&&n%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 n=Number(e[0])*60+Number(e[2]);return e[5]==="+"?n+=24*60-Number(e[6]||0)*60-Number(e[8]||0):e[5]==="-"&&(n+=Number(e[6]||0)*60+Number(e[8]||0)),n%(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,n=t[5]==="0"&&t[6]==="2";if(n&&t[8]==="3"||!e.test(t))return false;if(t[17]==="6"){let r=t.slice(11).match(/([0-9.]+|[^0-9.])/g);if(!r)return false;let i=Number(r[0])*60+Number(r[2]);if(r[5]==="+"?i+=24*60-Number(r[6]||0)*60-Number(r[8]||0):r[5]==="-"&&(i+=Number(r[6]||0)*60+Number(r[8]||0)),i%(24*60)!==23*60+59)return false}if(n){if(/^\d\d\d\d-02-(?:[012][1-8]|[12]0|[01]9)/.test(t))return true;let r=t.match(/^(\d\d\d\d)-02-29/);if(!r)return false;let i=Number(r[1]??0);return i%16===0||i%4===0&&i%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,n=0,r=0,i=false,o=false,s=0,l=true;for(let c=0;c<t.length;c++){let u=t.charCodeAt(c);if(c===1&&s===58&&u!==58)return false;if(u>=48&&u<=57){if(++r>4)return false}else if(u===46){if(e>6||n>=3||r===0||o)return false;n++,r=0;}else if(u===58){if(n>0||e>=7)return false;if(s===58){if(i)return false;i=true;}else c===0&&(l=false);e++,r=0,o=false;}else if(u>=97&&u<=102||u>=65&&u<=70){if(n>0||++r>4)return false;o=true;}else return false;s=u;}if(e<2||n>0&&(n!==3||r===0))return false;if(i&&t.length===2)return true;if(n>0&&!/(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$/.test(t))return false;let a=n>0?6:7;return i?(l||r>0)&&e<a:e===a&&l&&r>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}}},Xi=({format:t},e,n={})=>!te(e)||!t?y():Gn[t]?Gn[t](e)?y():b(n,"format",`Expected format: ${t}`,e):y(),zt=class{constructor(t){this.root=t,this.cache=new Map;}cache;hasRef(t,e){return e!==void 0&&"$ref"in t&&te(t.$ref)}resolve(t){let e=this.cache.get(t);if(!e){if(e=Ti(this.root,t),!V(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}},eo={type:wi,const:Si,enum:vi,allOf:Fi,anyOf:Oi,oneOf:Ri,not:Ci,minLength:Ii,maxLength:_i,pattern:Pi,format:Xi,minimum:Bi,exclusiveMinimum:Di,maximum:ji,exclusiveMaximum:Mi,multipleOf:ki,required:Qi,dependentRequired:Ni,dependentSchemas:Li,minProperties:Vi,maxProperties:Ki,propertyNames:Ui,properties:Ai,patternProperties:Ji,additionalProperties:qi,minItems:Wi,maxItems:Gi,uniqueItems:Hi,contains:Yi,prefixItems:Zi,items:zi,if:$i};function to(t,e,n={}){let r={keywordPath:n.keywordPath||[],instancePath:n.instancePath||[],coerce:n.coerce||false,errors:n.errors||[],shortCircuit:n.shortCircuit||false,ignoreUnsupported:n.ignoreUnsupported||false,resolver:n.resolver||new zt(t),depth:n.depth?n.depth+1:0},i=structuredClone(n?.coerce?t.coerce(e,{resolver:r.resolver,depth:r.depth}):e);if(n.ignoreUnsupported!==true){let o=["$defs"];for(let s of o)if(t[s])throw new Error(`${s} not implemented`)}if(r.resolver.hasRef(t,i)){let o=r.resolver.resolve(t.$ref).validate(i,{...r,errors:[]});o.valid||r.errors.push(...o.errors);}else for(let[o,s]of Object.entries(eo)){if(t[o]===void 0)continue;let l=s(t,i,{...r,errors:[]});if(!l.valid){if(n.shortCircuit)return l;r.errors.push(...l.errors);}}return {valid:r.errors.length===0,errors:r.errors}}function no(t,e,n={}){let r=structuredClone(e),i={resolver:n.resolver||new zt(t),depth:n.depth||0};return i.resolver.hasRef(t,r)?i.resolver.resolve(t.$ref).coerce(r,{...i,depth:i.depth+1}):r}var v=(t={},e="any")=>{let n=C(t)?t:{},r=je(t)?t:Te in t?t[Te]:void 0,i={...n,[Jt]:e,[Te]:r,optional:function(){return v({...this,validate:void 0,[Te]:r,[Ut]:true},e)},template:function(o={}){if(n.const!==void 0)return n.const;if(n.default!==void 0)return n.default;if(n.enum!==void 0)return n.enum[0];if(n.template)return n.template(o)},toJSON:function(){let o=this[Te];return je(o)?o:JSON.parse(JSON.stringify(n))}};return i.coerce=function(o,s={}){let l={...s,resolver:s.resolver||new zt(i),depth:s.depth?s.depth+1:0},a=o;return "coerce"in n&&n.coerce!==void 0?n.coerce(a,l):no(i,a,l)},i.validate=function(o,s={}){if(je(r))return r===false?b(s,"","Always fails"):y();let l=s.errors||[];if("validate"in n&&n.validate!==void 0){let a=n.validate(o,s);a.valid||(l=[...l,...a.errors]);}return to(i,o,{...s,errors:l})},i},ro=(t={})=>v(t,"any"),Ge=(t,e={})=>{for(let r of Object.keys(t||{}))Vt(hi(r),"invalid property name",r),Vt(V(t[r]),"properties must be managed schemas",t[r]);let n=Object.entries(t||{}).filter(([,r])=>!(Ut in r)).map(([r])=>r);return v({template:Xn,coerce:er,...e,type:"object",properties:t,required:n.length>0?n:void 0},"object")},io=(t,e={})=>Ge(t,{...e,additionalProperties:v(false)}),oo=(t,e={})=>{let n=Object.fromEntries(Object.entries(t).map(([r,i])=>[r,"optional"in i?i.optional():i]));return Ge(n,e)},so=(t,e={},n)=>v({template:Xn,coerce:er,...e,type:"object",additionalProperties:Ge(t,n)},"object");function Xn(t={}){let e={};if(this.properties)for(let[n,r]of Object.entries(this.properties)){if(t.withOptional!==true&&!this.required?.includes(n))continue;let i=r.template(t);i!==void 0&&(e[n]=i);}return e}function er(t,e={}){let n=t;if(typeof n=="string"&&(n.match(/^\{/)||n.match(/^\[/))&&(n=JSON.parse(n)),!(typeof n!="object"||n===null)){if(this.properties)for(let[r,i]of Object.entries(this.properties)){let o=n[r];o!==void 0&&(n[r]=i.coerce(o,e));}return n}}var tr=(t={})=>v({template:()=>"",coerce:e=>oe(e)?String(e):e,...t,type:"string"},"string"),ao=(t,e={})=>v({const:t,default:t,readOnly:true,template:()=>t,coerce:n=>(String(n)),...e,type:"string"},"string"),nr=(t={})=>v({coerce:e=>te(e)?Number(e):e,template:ir,...t,type:"number"},"number"),rr=(t={})=>v({coerce:e=>te(e)?Number.parseInt(e):e,template:ir,...t,type:"integer"},"integer");function ir(){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 or=(t,e={})=>(t!==void 0&&Vt(V(t),"items must be a schema",t),v({template:()=>[],coerce:lo,...e,type:"array",items:t},"array"));function lo(t,e){try{let n=typeof t=="string"?JSON.parse(t):t;if(!Array.isArray(n))return;if(V(this.items))for(let[r,i]of n.entries())n[r]=this.items.coerce(i,e);return n}catch{}return t}var sr=(t={})=>v({...t,coerce:function(e){if("coerce"in t&&t.coerce)return t.coerce(e);if(te(e)&&["true","false","1","0"].includes(e))return e==="true"||e==="1";if(oe(e)){if(e===1)return true;if(e===0)return false}return e},type:"boolean"},"boolean");function Hn(t,e){return Array.isArray(t)?t.map(e):t!==void 0?[e(t)]:[]}function Yn(t,e,n=r=>r){return Object.fromEntries(Object.entries(t).map(([r,i])=>[r,n(e(i),r)]))}function we(t){if(je(t))return v(!!t);let e=structuredClone(t);if(!C(e))throw new di("non-object schemas not implemented",e);"properties"in e&&e.properties&&(e.properties=Yn(e.properties,we,(o,s)=>"required"in e&&Array.isArray(e.required)&&e.required.includes(s)?o:o.optional()));let n=["patternProperties","dependentSchemas","$defs"];for(let o of n)o in e&&e[o]&&(e[o]=Yn(e[o],we));let r=["additionalProperties","items","prefixItems","propertyNames","contains","not","if","then","else"];for(let o of r)o in e&&typeof e[o]<"u"&&(se(e[o])?e[o]=Hn(e[o],we):e[o]=we(e[o]));let i=["anyOf","oneOf","allOf"];for(let o of i)if(o in e){let{[o]:s}=e;e[o]=Hn(s,we);}if(xi(e))switch(e.type){case "string":return tr(e);case "number":return nr(e);case "integer":return rr(e);case "boolean":return sr(e);case "object":{let{properties:o,...s}=e;return Ge(o,s)}case "array":{let{items:o,...s}=e;return or(o,s)}}return v(e)}var co=(t,e={})=>v({...e,coerce:function(n,r={}){let i=n;if("coerce"in e&&e.coerce!==void 0)return e.coerce.bind(this)(n,r);let o=We(t,i,{ignoreUnsupported:true,resolver:r.resolver,coerce:true});return o.length>0?o[0].coerce(i,r):i},anyOf:t},"anyOf"),uo=(t,e={})=>v({...e,coerce:function(n,r={}){let i=We(t,n,{ignoreUnsupported:true,resolver:r.resolver,coerce:true});return i.length===1?i[0].coerce(n,r):n},oneOf:t},"oneOf"),po=(t,e)=>{if(!t.$id)throw new Error("Schema must have an $id");return v({$ref:e??t.$id,coerce:function(n,r={}){return t.coerce(n,r)}},"ref")},yo=t=>v({$ref:t},"ref"),fo=t=>{let{validate:e,...n}=t(v({$ref:"#"},"recursive"));return v(n,"recursive")};var M=class{_returning;static slug="untitled-event";params;returned=false;validate(e){throw new Wt(this,e)}clone(e){let n=new this.constructor(e);return n.returned=true,n}constructor(e){this.params=e;}};var me=class extends Error{constructor(e,n){super(`Expected "${e}", got "${n}"`);}},Wt=class extends Error{constructor(n,r){super(`Event "${n.constructor.slug}" returned without validation`);this.data=r;}};var ct=class{mode="async";event;handler;once=false;id;constructor(e,n,r="async",i){this.event=e,this.handler=n,this.mode=r,this.id=i;}};var ae=class{constructor(e,n){this.options=n;e&&this.registerEvents(e),n?.listeners?.forEach(r=>this.addListener(r));}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,n)=>this.events.find(r=>r.slug===n)})}eventExists(e){let n;return typeof e=="string"?n=e:n=e.constructor?.slug??e.slug,!!this.events.find(r=>n===r.slug)}throwIfEventNotRegistered(e){if(!this.eventExists(e)){let n=e.constructor?.slug??e.slug??e;throw new Error(`Event "${n}" not registered`)}}registerEvent(e,n=false){if(this.eventExists(e)){if(n)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(r=>this.registerEvent(r,true)),this}addListener(e){return this.throwIfEventNotRegistered(e.event),e.id&&this.listeners.find(r=>r.id===e.id)?(g.debug(`Listener with id "${e.id}" already exists.`),this):(this.listeners.push(e),this)}createEventListener(e,n,r="async"){let i=typeof e=="string"?this.events.find(l=>l.slug===e):e,o=typeof r=="string"?{mode:r}:r,s=new ct(i,n,o.mode);o.once&&(s.once=true),o.id&&(s.id=`${i.slug}-${o.id}`),this.addListener(s);}onEvent(e,n,r){this.createEventListener(e,n,r);}on(e,n,r){this.createEventListener(e,n,r);}onAny(e,n){this.events.forEach(r=>this.onEvent(r,e,n));}collectAsyncs(e){this.asyncs.push(...e);}async executeAsyncs(e=n=>Promise.all(n)){if(this.asyncs.length===0)return;let n=[...this.asyncs];this.asyncs=[],await e(n.map(r=>r()));}async emit(e){let n=e.constructor.slug;if(!this.enabled)return g.debug("EventManager disabled, not emitting",n),e;if(!this.eventExists(e))throw new Error(`Event "${n}" not registered`);let r=[],i=[];this.listeners=this.listeners.filter(s=>s.event.slug!==n?true:(s.mode==="sync"?r.push(s):i.push(async()=>await s.handler(e,s.event.slug)),!s.once)),this.collectAsyncs(i);let o=e;for(let s of r)try{let l=await s.handler(o,s.event.slug);if(typeof l<"u"){let a=o.validate(l);if(a&&a.constructor.slug===n){if(!a.returned)throw new Error(`Returned event ${a.constructor.slug} must be marked as returned.`);o=a;}}}catch(l){if(l instanceof me)this.options?.onInvalidReturn?.(o,l),g.warn(`Invalid return of event listener for "${n}": ${l.message}`);else if(this.options?.onError)this.options.onError(o,l);else throw l}return o}};var Gt=class extends M{static slug="mutator-insert-before";validate(e){let{entity:n}=this.params;if(!n.isValidData(e,"create"))throw g.warn("MutatorInsertBefore.validate: invalid",{entity:n.name,data:e}),new me("EntityData","invalid");return this.clone({entity:n,data:e})}},Ht=class extends M{static slug="mutator-insert-after"},Yt=class extends M{static slug="mutator-update-before";validate(e){let{entity:n,entityId:r}=this.params;if(!n.isValidData(e,"update"))throw g.warn("MutatorUpdateBefore.validate: invalid",{entity:n.name,entityId:r,data:e}),new me("EntityData","invalid");return this.clone({entityId:r,entity:n,data:e})}},Zt=class extends M{static slug="mutator-update-after"},Xt=class extends M{static slug="mutator-delete-before"},en=class extends M{static slug="mutator-delete-after"},le={MutatorInsertBefore:Gt,MutatorInsertAfter:Ht,MutatorUpdateBefore:Yt,MutatorUpdateAfter:Zt,MutatorDeleteBefore:Xt,MutatorDeleteAfter:en},tn=class extends M{static slug="repository-find-one-before"},nn=class extends M{static slug="repository-find-one-after"},rn=class extends M{static slug="repository-find-many-before";static another="one"},on=class extends M{static slug="repository-find-many-after"},Me={RepositoryFindOneBefore:tn,RepositoryFindOneAfter:nn,RepositoryFindManyBefore:rn,RepositoryFindManyAfter:on};var ut=class extends Z{name="UnableToConnectException";code=500},N=class extends Z{name="InvalidSearchParamsException";code=422},pt=class extends Z{name="TransformRetrieveFailedException";code=422},R=class t extends Z{name="TransformPersistFailedException";code=422;static invalidType(e,n,r){let i=typeof r=="object"?JSON.stringify(r):r,o=`Property "${e}" must be of type "${n}", "${i}" of type "${typeof r}" given.`;return new t(o)}static required(e){return new t(`Property "${e}" is required`)}},dt=class extends Z{constructor(n,r,i){console.error("InvalidFieldConfigException",{given:r,error:i.firstToString()});super(`Invalid Field config given for field "${n.name}": ${i.firstToString()}`);this.given=r;}name="InvalidFieldConfigException";code=400},yt=class extends Z{name="EntityNotDefinedException";code=400;constructor(e){e?super(`Entity "${typeof e!="string"?e.name:e}" not defined`):super("Cannot find an entity that is undefined");}};var {Type:S}=p,ho=["create","read","update","delete"],Ha=["form","table","read","submit"],go=["create","read","update","delete","form","table","submit"],xo=false,sn=true,an=false,w=S.Object({label:S.Optional(S.String()),description:S.Optional(S.String()),required:S.Optional(S.Boolean({default:xo})),fillable:S.Optional(S.Union([S.Boolean({title:"Boolean",default:sn}),S.Array($(ho),{title:"Context",uniqueItems:true})],{default:sn})),hidden:S.Optional(S.Union([S.Boolean({title:"Boolean",default:an}),S.Array($(go),{title:"Context",uniqueItems:true})],{default:an})),virtual:S.Optional(S.Boolean()),default_value:S.Optional(S.Any())},{additionalProperties:false}),E=class{_required;_type;name;type="field";config;constructor(e,n){this.name=e,this._type,this._required;try{this.config=ke(this.getSchema(),n||{});}catch(r){throw r instanceof Je?new dt(this,n,r):r}}getType(){return this.type}schema(){return Object.freeze({name:this.name,type:"text",nullable:true,dflt:this.getDefault()})}hasDefault(){return this.config.default_value!==void 0}getDefault(){return this.config?.default_value}isFillable(e){return Array.isArray(this.config.fillable)?e?this.config.fillable.includes(e):sn:!!this.config.fillable}isHidden(e){return Array.isArray(this.config.hidden)?e?this.config.hidden.includes(e):an:this.config.hidden??false}isRequired(){return this.config?.required??false}isVirtual(){return this.config.virtual??false}getLabel(e){return this.config.label?this.config.label:e?.fallback!==false?_e(this.name):void 0}getDescription(){return this.config.description}getValue(e,n){return e}getHtmlConfig(){return {element:"input",props:{type:"text"}}}isValid(e,n){return typeof e<"u"?this.isFillable(n):n==="create"?!this.isRequired():true}transformRetrieve(e){return e}async transformPersist(e,n,r){if(this.nullish(e)){if(this.isRequired()&&!this.hasDefault())throw R.required(this.name);return this.getDefault()}return e}toSchemaWrapIfRequired(e){return this.isRequired()?e:S.Optional(e)}nullish(e){return e==null}toJsonSchema(){return this.toSchemaWrapIfRequired(S.Any())}toType(){return {required:this.isRequired(),comment:this.getDescription(),type:"any"}}toJSON(){return {type:this.type,config:this.config}}};var {Type:He}=p,ln=He.Composite([He.Object({default_value:He.Optional(He.Boolean({default:false}))}),w]),Be=class extends E{type="boolean";getSchema(){return ln}getValue(e,n){switch(n){case "table":return e?"Yes":"No";default:return e}}schema(){return Object.freeze({...super.schema(),type:"boolean"})}getHtmlConfig(){return {...super.getHtmlConfig(),element:"boolean"}}transformRetrieve(e){return typeof e>"u"||e===null?this.isRequired()?false:this.hasDefault()?this.getDefault():null:typeof e=="string"?e==="1":!!e}async transformPersist(e,n,r){let i=await super.transformPersist(e,n,r);if(this.nullish(i))return this.isRequired()?!!this.config.default_value:void 0;if(typeof i=="number")return i!==0;if(typeof i!="boolean")throw R.invalidType(this.name,"boolean",i);return i}toJsonSchema(){return this.toSchemaWrapIfRequired(He.Boolean({default:this.getDefault()}))}toType(){return {...super.toType(),type:"boolean"}}};var {Type:ce}=p,cn=ce.Composite([ce.Object({type:$(["date","datetime","week"],{default:"date"}),timezone:ce.Optional(ce.String()),min_date:ce.Optional(ce.String()),max_date:ce.Optional(ce.String())}),w],{additionalProperties:false}),Oe=class extends E{type="date";getSchema(){return cn}schema(){return Object.freeze({...super.schema(),type:this.config.type==="datetime"?"datetime":"date"})}getHtmlConfig(){let e=this.config.type==="datetime"?"datetime-local":this.config.type;return {...super.getHtmlConfig(),element:"date",props:{type:e}}}parseDateFromString(e){if(this.config.type==="week"&&e.includes("-W")){let[n,r]=e.split("-W").map(i=>Number.parseInt(i,10));return ze().year(n).week(r).toDate()}return new Date(e)}getValue(e,n){if(e===null||!e)return;let r=this.parseDateFromString(e);if(n==="submit")try{return r.toISOString()}catch{return}if(this.config.type==="week")try{return `${r.getFullYear()}-W${ze(r).week()}`}catch(i){g.warn("DateField.getValue:week error",e,String(i));return}try{let o=new Date().getTimezoneOffset(),s=new Date(r.getTime()-o*6e4);return this.formatDate(s)}catch(i){g.warn("DateField.getValue error",this.config.type,e,String(i));return}}formatDate(e){switch(this.config.type){case "datetime":return e.toISOString().split(".")[0].replace("T"," ");default:return e.toISOString().split("T")[0]}}transformRetrieve(e){let n=super.transformRetrieve(e);if(n===null)return null;try{return new Date(n)}catch{return null}}async transformPersist(e,n,r){let i=await super.transformPersist(e,n,r);if(this.nullish(i))return i;switch(this.config.type){case "date":case "week":return new Date(i).toISOString().split("T")[0];default:return new Date(i).toISOString()}}toJsonSchema(){return this.toSchemaWrapIfRequired(ce.String({default:this.getDefault()}))}toType(){return {...super.toType(),type:"Date | string"}}};var {Type:B}=p,un=B.Composite([B.Object({default_value:B.Optional(B.String()),options:B.Optional(B.Union([B.Object({type:jt("strings"),values:B.Array(B.String())},{title:"Strings"}),B.Object({type:jt("objects"),values:B.Array(B.Object({label:B.String(),value:B.String()}))},{title:"Objects",additionalProperties:false})]))}),w],{additionalProperties:false}),De=class extends E{type="enum";constructor(e,n){if(super(e,n),this.config.default_value&&!this.isValidValue(this.config.default_value))throw new Error(`Default value "${this.config.default_value}" is not a valid option`)}getSchema(){return un}getOptions(){let e=this.config?.options??{type:"strings",values:[]};return e.type==="strings"?e.values?.map(n=>({label:n,value:n})):e?.values}isValidValue(e){return this.getOptions().map(r=>r.value).includes(e)}getValue(e,n){if(!this.isValidValue(e))return this.hasDefault()?this.getDefault():null;switch(n){case "table":return this.getOptions().find(r=>r.value===e)?.label??e}return e}transformRetrieve(e){let n=super.transformRetrieve(e);return n===null&&this.hasDefault()?this.getDefault():this.isValidValue(n)?n:this.hasDefault()?this.getDefault():null}async transformPersist(e,n,r){let i=await super.transformPersist(e,n,r);if(this.nullish(i))return i;if(!this.isValidValue(i))throw new R(`Field "${this.name}" must be one of the following values: ${this.getOptions().map(o=>o.value).join(", ")}`);return i}toJsonSchema(){let n=(this.config?.options??{values:[]}).values?.map(r=>typeof r=="string"?r:r.value)??[];return this.toSchemaWrapIfRequired($(n,{default:this.getDefault()}))}toType(){let e=this.getOptions().map(({value:n})=>typeof n=="string"?`"${n}"`:n);return {...super.toType(),type:e.length>0?e.join(" | "):"string"}}};var {Type:ar}=p,pn=ar.Composite([w,ar.Object({})]),Ae=class extends E{type="json";getSchema(){return pn}transformRetrieve(e){let n=super.transformRetrieve(e);return n===null&&this.hasDefault()?this.getDefault():this.isSerialized(n)?JSON.parse(n):n}isSerializable(e){try{let n=JSON.stringify(e);if(n===JSON.stringify(JSON.parse(n)))return !0}catch{}return false}isSerialized(e){try{if(typeof e=="string")return e===JSON.stringify(JSON.parse(e))}catch{}return false}getValue(e,n){switch(n){case "form":return e===null?"":JSON.stringify(e,null,2);case "table":return e===null?null:JSON.stringify(e);case "submit":return typeof e=="string"&&e.length===0?null:JSON.parse(e)}return e}async transformPersist(e,n,r){let i=await super.transformPersist(e,n,r);if(this.nullish(i))return i;if(!this.isSerializable(i))throw new R(`Field "${this.name}" must be serializable to JSON.`);return this.isSerialized(i)?i:JSON.stringify(i)}toType(){return {...super.toType(),type:"any"}}};var {Type:Re}=p,dn=Re.Composite([Re.Object({schema:Re.Object({},{default:{}}),ui_schema:Re.Optional(Re.Object({})),default_from_schema:Re.Optional(Re.Boolean())}),w],{additionalProperties:false}),qe=class extends E{type="jsonschema";validator;constructor(e,n){super(e,n),this.validator=new Validator(this.getJsonSchema());}getSchema(){return dn}getJsonSchema(){return this.config?.schema}getJsonUiSchema(){return this.config.ui_schema??{}}isValid(e,n="update"){return super.isValid(e,n)?!this.isRequired()&&(!e||typeof e!="object")?true:this.validator.validate(e).valid:false}getValue(e,n){switch(n){case "form":return e===null?"":e;case "table":return e===null?null:JSON.stringify(e);}return e}transformRetrieve(e){let n=super.transformRetrieve(e);if(n===null){if(this.config.default_from_schema)try{return Default(ye(this.getJsonSchema()),{})}catch{return null}else if(this.hasDefault())return this.getDefault()}return n}async transformPersist(e,n,r){let i=await super.transformPersist(e,n,r);if(this.nullish(i))return i;if(!this.isValid(i))throw new R(this.name,i);return !i||typeof i!="object"?this.getDefault():JSON.stringify(i)}toJsonSchema(){let e=this.getJsonSchema()??{type:"object"};return this.toSchemaWrapIfRequired(ye({default:this.getDefault(),...e}))}toType(){return {...super.toType(),import:[{package:"json-schema-to-ts",name:"FromSchema"}],type:`FromSchema<${rt(this.getJsonSchema(),2,1)}>`}}};var {Type:k}=p,yn=k.Composite([k.Object({default_value:k.Optional(k.Number()),minimum:k.Optional(k.Number()),maximum:k.Optional(k.Number()),exclusiveMinimum:k.Optional(k.Number()),exclusiveMaximum:k.Optional(k.Number()),multipleOf:k.Optional(k.Number())}),w],{additionalProperties:false}),he=class extends E{type="number";getSchema(){return yn}getHtmlConfig(){return {element:"input",props:{type:"number",pattern:"d*",inputMode:"numeric"}}}schema(){return Object.freeze({...super.schema(),type:"integer"})}getValue(e,n){if(typeof e>"u"||e===null)return null;switch(n){case "submit":return Number.parseInt(e)}return e}async transformPersist(e,n,r){let i=await super.transformPersist(e,n,r);if(!this.nullish(i)&&typeof i!="number")throw R.invalidType(this.name,"number",i);if(this.config.maximum&&i>this.config.maximum)throw new R(`Field "${this.name}" cannot be greater than ${this.config.maximum}`);if(this.config.minimum&&i<this.config.minimum)throw new R(`Field "${this.name}" cannot be less than ${this.config.minimum}`);return i}toJsonSchema(){return this.toSchemaWrapIfRequired(k.Number({default:this.getDefault(),minimum:this.config?.minimum,maximum:this.config?.maximum,exclusiveMinimum:this.config?.exclusiveMinimum,exclusiveMaximum:this.config?.exclusiveMaximum,multipleOf:this.config?.multipleOf}))}toType(){return {...super.toType(),type:"number"}}};var {Type:ge}=p,Ye=["integer","uuid"],fn=ge.Composite([ge.Omit(w,["required"]),ge.Object({format:ge.Optional($(Ye,{default:"integer"})),required:ge.Optional(ge.Literal(false))})]),z=class extends E{type="primary";constructor(e=Le.data.default_primary_field,n){super(e,{fillable:false,required:false,...n});}isRequired(){return false}getSchema(){return fn}get format(){return this.config.format??"integer"}get fieldType(){return this.format==="integer"?"integer":"text"}schema(){return Object.freeze({type:this.fieldType,name:this.name,primary:true,nullable:false})}getNewValue(){if(this.format==="uuid")return Jn()}async transformPersist(e){throw new Error("PrimaryField: This function should not be called")}toJsonSchema(){return this.format==="uuid"?this.toSchemaWrapIfRequired(ge.String({writeOnly:void 0})):this.toSchemaWrapIfRequired(ge.Number({writeOnly:void 0}))}toType(){let e=this.format==="integer"?"number":"string";return {...super.toType(),required:true,import:[{package:"kysely",name:"Generated"}],type:`Generated<${e}>`}}};var {Type:F}=p,mn=F.Composite([F.Object({default_value:F.Optional(F.String()),minLength:F.Optional(F.Number()),maxLength:F.Optional(F.Number()),pattern:F.Optional(F.String()),html_config: