UNPKG

bknd

Version:

Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.

2 lines 226 kB
import {Value,Default,Check}from'@sinclair/typebox/value';import {validator}from'hono/validator';import {AwsClient}from'aws4fetch';import {XMLParser}from'fast-xml-parser';import {isEqual,pick,set,get,transform,has,omit,mergeWith}from'lodash-es';import {getRuntimeKey}from'hono/adapter';import*as h from'@sinclair/typebox';import {SetErrorFunction,DefaultErrorFunction,Errors}from'@sinclair/typebox/errors';import pr from'dayjs';import mc from'dayjs/plugin/weekOfYear.js';import {getSignedCookie,setSignedCookie,deleteCookie,setCookie}from'hono/cookie';import {Validator}from'@cfworker/json-schema';import*as Lt from'kysely';import {ParseJSONResultsPlugin,sql,Kysely,DEFAULT_MIGRATION_TABLE,DEFAULT_MIGRATION_LOCK_TABLE}from'kysely';import*as na from'@libsql/client';import {createClient}from'@libsql/client';import {jsonBuildObject,jsonObjectFrom,jsonArrayFrom}from'kysely/helpers/sqlite';import {sign,verify,decode}from'hono/jwt';import {Hono}from'hono';import {createMiddleware}from'hono/factory';import*as v from'oauth4webapi';import {genSalt,hash,compare}from'bcryptjs';import {cors}from'hono/cors';import {html}from'hono/html';import {Fragment}from'hono/jsx';import {css,Style}from'hono/css';import {jsxs,jsx}from'hono/jsx/jsx-runtime';import {swaggerUI}from'@hono/swagger-ui';var Ua=Object.create;var di=Object.defineProperty;var La=Object.getOwnPropertyDescriptor;var Qa=Object.getOwnPropertyNames;var Ka=Object.getPrototypeOf,Ja=Object.prototype.hasOwnProperty;var Hs=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),ze=(n,e)=>{for(var t in e)di(n,t,{get:e[t],enumerable:true});},za=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Qa(e))!Ja.call(n,i)&&i!==t&&di(n,i,{get:()=>e[i],enumerable:!(r=La(e,i))||r.enumerable});return n};var Ys=(n,e,t)=>(t=n!=null?Ua(Ka(n)):{},za(di(t,"default",{value:n,enumerable:true}),n));var uo=Hs((Gd,Si)=>{var b=String,po=function(){return {isColorSupported:false,reset:b,bold:b,dim:b,italic:b,underline:b,inverse:b,hidden:b,strikethrough:b,black:b,red:b,green:b,yellow:b,blue:b,magenta:b,cyan:b,white:b,gray:b,bgBlack:b,bgRed:b,bgGreen:b,bgYellow:b,bgBlue:b,bgMagenta:b,bgCyan:b,bgWhite:b,blackBright:b,redBright:b,greenBright:b,yellowBright:b,blueBright:b,magentaBright:b,cyanBright:b,whiteBright:b,bgBlackBright:b,bgRedBright:b,bgGreenBright:b,bgYellowBright:b,bgBlueBright:b,bgMagentaBright:b,bgCyanBright:b,bgWhiteBright:b}};Si.exports=po();Si.exports.createColors=po;});var Ma=Hs((LT,gd)=>{gd.exports={"_TextareaWidget-C8tThLP4.js":{file:"assets/TextareaWidget-C8tThLP4.js",name:"TextareaWidget",imports:["src/ui/main.tsx"]},"src/ui/components/code/CodeEditor.tsx":{file:"assets/CodeEditor-vRgX0mX5.js",name:"CodeEditor",src:"src/ui/components/code/CodeEditor.tsx",isDynamicEntry:true,imports:["src/ui/main.tsx"]},"src/ui/components/form/json-schema/JsonSchemaForm.tsx":{file:"assets/JsonSchemaForm-Chpms2Bu.js",name:"JsonSchemaForm",src:"src/ui/components/form/json-schema/JsonSchemaForm.tsx",isDynamicEntry:true,imports:["src/ui/main.tsx","_TextareaWidget-C8tThLP4.js"]},"src/ui/main.tsx":{file:"assets/main-BgziOQpI.js",name:"main",src:"src/ui/main.tsx",isEntry:true,dynamicImports:["src/ui/components/form/json-schema/JsonSchemaForm.tsx","src/ui/components/code/CodeEditor.tsx","src/ui/modules/data/components/canvas/DataSchemaCanvas.tsx","src/ui/components/code/CodeEditor.tsx","src/ui/routes/test/index.tsx"],css:["assets/main-BLjkA8xT.css"]},"src/ui/modules/data/components/canvas/DataSchemaCanvas.tsx":{file:"assets/DataSchemaCanvas-DTZGWaQg.js",name:"DataSchemaCanvas",src:"src/ui/modules/data/components/canvas/DataSchemaCanvas.tsx",isDynamicEntry:true,imports:["src/ui/main.tsx"]},"src/ui/routes/test/index.tsx":{file:"assets/index-qOep4CAx.js",name:"index",src:"src/ui/routes/test/index.tsx",isDynamicEntry:true,imports:["src/ui/main.tsx","_TextareaWidget-C8tThLP4.js"]}};});function $r(n,e,t){return validator(n,(r,i)=>{if(Value.Check(e,r)){let s=Value.Decode(e,r);return s}return i.json({success:false,errors:[...Value.Errors(e,r)]},400)})}function Ga(n){return n?{...Object.fromEntries(n.entries())}:{}}function Xs(n,e){let t=Ga(n),r={};for(let i of e)t[i]&&(r[i]=t[i]);return r}function Zs(n,e){let t=new Headers;for(let r of e)n.has(r)&&t.set(r,n.get(r));return t}function eo(n,e){let t="";function r(i){return i}for(let i in n){let s=n[i];if(s!==void 0)if(Array.isArray(s))for(let o=0;o<s.length;o++)t.length>0&&(t+="&"),t+=`${r(i)}=${r(s[o])}`;else typeof s=="object"&&(s=JSON.stringify(s)),t.length>0&&(t+="&"),t+=`${r(i)}=${r(s)}`;}return ("")+t}var I=class extends Error{code=400;name="Exception";_context=void 0;constructor(e,t){super(e),t&&(this.code=t);}context(e){return this._context=e,this}toJSON(){return {error:this.message,type:this.name,context:this._context}}},ge=class n extends Error{constructor(t,r,i){super(t);this.details=r;this.type=i;}static with(t,r,i){throw new n(t,r,i)}toJSON(){return {type:this.type??"unknown",message:this.message,details:this.details}}};var fi=(n,e)=>typeof n=="string"?[1,"1","true"].includes(n):!!(n||e);function K(){try{return fi(0)}catch{return false}}function to(){try{return "0.14.0"}catch{return "0.0.0"}}var Wa={cli_log_level:{key:"BKND_CLI_LOG_LEVEL",validate:n=>{if(typeof n=="string"&&["log","info","warn","error","debug"].includes(n.toLowerCase()))return n.toLowerCase()}},cli_create_ref:{key:"BKND_CLI_CREATE_REF",validate:n=>typeof n=="string"?n:void 0},cli_telemetry:{key:"BKND_CLI_TELEMETRY",validate:n=>{if(!(typeof n>"u"))return fi(n,true)}},modules_debug:{key:"BKND_MODULES_DEBUG",validate:fi}},ar=(n,e,t)=>{try{let r=t?.source??process.env,i=Wa[n],s=r[i.key],o=i.validate(s);if(typeof o<"u")return t?.onValid?.(o),o;t?.onFallback?.(s);}catch{}return e};var at={server:{assets_path:"/"},data:{default_primary_field:"id"}};function ro(n){return !n||n.length===0?n:n.charAt(0).toUpperCase()+n.slice(1)}function qr(n,e=false){let i="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"+(e?"!@#$%^&*()_+{}:\"<>?|[];',./`~":""),s="";for(let o=0;o<n;o++)s+=i[Math.floor(Math.random()*i.length)];return s}function Rt(n){return !n||n.length===0?n:n.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ")}function no(n){return n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function io(n,e){return e instanceof RegExp?e.test(n):typeof e=="string"&&e.startsWith("/")?new RegExp(e).test(n):typeof e=="string"?n.startsWith(e):false}function so(n,e=50,t="..."){return n.length<=e?n:n.substring(0,e)+t}function Ha(n){return Object.prototype.toString.call(n)==="[object Object]"}function Ct(n){return n!==null&&typeof n=="object"}function Lr(n,e){let t=new Set(e),r={};for(let[i,s]of Object.entries(n))t.has(i)||(r[i]=s);return r}function Br(n,e=[]){return n===null||typeof n!="object"?n:Array.isArray(n)?n.map(t=>Br(t,e)):Object.keys(n).reduce((t,r)=>{let i=e.includes(r)?r:no(r);return t[i]=Br(n[r],e),t},{})}function yi(n,e){let t={};for(let r in n)e.some(s=>r.includes(s))||(typeof n[r]=="object"&&n[r]!==null&&!Array.isArray(n[r])?t[r]=yi(n[r],e):t[r]=n[r]);return t}function O(n,e){return Object.entries(n).reduce((t,[r,i])=>{let s=e(i,r);return typeof s<"u"&&(t[r]=s),t},{})}var Ve=O;function hi(n,e){Object.entries(n).forEach(([t,r])=>{e(r,t);},{});}function gi(n,e=""){let t=[];for(let r in n){let i=e?`${e}.${r}`:r;t.push(i),typeof n[r]=="object"&&n[r]!==null&&(t=t.concat(gi(n[r],i)));}return t}function Nr(n){return n&&Object.entries(n).reduce((e,[t,r])=>{if(r&&Array.isArray(r)&&r.some(i=>typeof i=="object")){let i=r.map(Nr);i.length>0&&(e[t]=i);}else if(r&&typeof r=="object"&&!Array.isArray(r)){let i=Nr(r);Object.keys(i).length>0&&(e[t]=i);}else r!==""&&r!==null&&r!==void 0&&(e[t]=r);return e},{})}function bi(n,e,t){for(let[r,i]of Object.entries(e)){let s=t(n[r],i,r,n,e);if(s!==void 0){n[r]=s;continue}i!==void 0&&(!Ha(i)&&!Array.isArray(i)||Array.isArray(i)&&!Array.isArray(n[r])?n[r]=i:Ct(n[r])?bi(n[r],i,t):n[r]=i);}return n}function Ur(n,e=0,t=0){let r=e?` `:"",i=a=>e?" ".repeat(e*a):"",s=i(t+1),o=i(t);if(n===null)return "null";if(n===void 0)return "undefined";let c=typeof n;if(c==="string")return JSON.stringify(n);if(c==="number"||c==="boolean")return String(n);if(Array.isArray(n)){let a=n.map(l=>Ur(l,e,t+1)).join(", "+(e?r+s:""));return "["+(e&&n.length?r+s:"")+a+(e&&n.length?r+o:"")+"]"}if(c==="object"){let a=Object.entries(n).map(([p,u])=>(/^[A-Za-z_$][\w$]*$/.test(p)?p:JSON.stringify(p))+": "+Ur(u,e,t+1)),l=a.join(", "+(e?r+s:""));return "{"+(e&&a.length?r+s:"")+l+(e&&a.length?r+o:"")+"}"}throw new TypeError(`Unsupported data type: ${c}`)}function oo(n){return new XMLParser().parse(n)}var cr=class extends AwsClient{#e;constructor(e,t){super(e),this.#e=t??{responseType:"json"};}convertParams(e){switch(this.#e.convertParams){case "pascalToKebab":return Br(e);default:return e}}getUrl(e="/",t={}){let r=new URL(e),i=this.convertParams(t);return Object.entries(i).forEach(([s,o])=>{r.searchParams.append(s,o);}),r.toString()}updateKeysRecursively(e,t){return e==null?e:Array.isArray(e)?e.map(r=>this.updateKeysRecursively(r,t)):typeof e=="object"?Object.keys(e).reduce((r,i)=>{let s=i;return i.indexOf(" ")===-1&&(s=i.charAt(0)[t]()+i.slice(1)),r[s]=this.updateKeysRecursively(e[i],t),r},{}):e}async fetchJson(e,t){let r=await this.fetch(e,t);if(this.#e.responseType==="xml"){if(!r.ok){let o=await r.text();throw new Error(o)}let s=await r.text();return oo(s)}if(!r.ok){let s=await r.json();throw new Error(s.message)}let i=await r.json();return this.#e.responseKeysToUpper?this.updateKeysRecursively(i,"toUpperCase"):i}};var At=class{constructor(e={},t={}){this.variables=e;this.options=t;}another(){return 1}static hasMarkup(e){let t="";if(Array.isArray(e)||typeof e=="object"){if(!["Array","Object"].includes(e.constructor.name))return false;t=JSON.stringify(e);}else t=String(e);return ["{{"].some(i=>t.includes(i))}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(t=>this.render(t)));if(typeof e=="object")return await this.renderObject(e);throw new Error("Invalid template type")}async renderString(e){return e.replace(/{{\s*([^{}]+?)\s*}}/g,(t,r)=>{let i=get(this.variables,r.trim());return i==null?"":String(i)})}async renderObject(e){let t={};for(let[r,i]of Object.entries(e)){let s=r;this.options.renderKeys&&(s=await this.renderString(r)),t[s]=await this.render(i);}return t}};var xi={video:["mp4","webm"],audio:["ogg"],image:["jpeg","png","gif","webp","bmp","tiff","avif","heic","heif"],text:["html","css","mdx","yaml","vcard","csv","vtt"],application:["zip","xml","toml","json","json5"],font:["woff","woff2","ttf","otf"]},E={vnd:"vnd.openxmlformats-officedocument",z:"application/x-7z-compressed",t:(n="plain")=>`text/${n}`,a:(n="octet-stream")=>`application/${n}`,i:n=>`image/${n}`,v:n=>`video/${n}`},wi=new Map([["7z",E.z],["7zip",E.z],["ai",E.a("pdf")],["apk",E.a("vnd.android.package-archive")],["doc",E.a("msword")],["docx",`${E.vnd}.wordprocessingml.document`],["eps",E.a("postscript")],["epub",E.a("epub+zip")],["ini",E.t()],["jar",E.a("java-archive")],["jsonld",E.a("ld+json")],["jpg",E.i("jpeg")],["log",E.t()],["m3u",E.t()],["m3u8",E.a("vnd.apple.mpegurl")],["manifest",E.t("cache-manifest")],["md",E.t("markdown")],["mkv",E.v("x-matroska")],["mp3",E.a("mpeg")],["mobi",E.a("x-mobipocket-ebook")],["ppt",E.a("powerpoint")],["pptx",`${E.vnd}.presentationml.presentation`],["qt",E.v("quicktime")],["svg",E.i("svg+xml")],["tif",E.i("tiff")],["tsv",E.t("tab-separated-values")],["tgz",E.a("x-tar")],["txt",E.t()],["text",E.t()],["vcd",E.a("x-cdlink")],["vcs",E.t("x-vcalendar")],["wav",E.a("x-wav")],["webmanifest",E.a("manifest+json")],["xls",E.a("vnd.ms-excel")],["xlsx",`${E.vnd}.spreadsheetml.sheet`],["yml",E.t("yaml")]]);function ao(n){try{let e=n.split(".").pop();if(!e)return E.a();for(let[t,r]of Object.entries(xi))if(r.includes(e))return `${t}/${e}`;return wi.get(e)}catch{return E.a()}}function Qr(n,e=[]){let t=n.toLowerCase();if(e.includes(t))return false;if(Object.entries(xi).flatMap(([r,i])=>i.map(s=>`${r}/${s}`)).includes(t))return true;for(let[r,i]of wi.entries())if(i===t&&!e.includes(r))return true;return false}function Kr(n){let e=n.toLowerCase();for(let[t,r]of Object.entries(xi))for(let i of r)if(e===`${t}/${i}`)return i;for(let[t,r]of wi.entries())if(r===e)return t;return ""}function Ei(){let n=globalThis;return n?.process?.env?.NEXT_RUNTIME==="nodejs"?"nextjs":n?.process?.env?.NEXT_RUNTIME==="edge"?"nextjs-edge":typeof window<"u"&&window.__NEXT_DATA__?"nextjs-client":getRuntimeKey()}var co={redirects_non_fq:true};function lo(n){return Ei().startsWith("nextjs")&&(co.redirects_non_fq=false),co[n]}function Ti(n,e){if(!n)throw new Error(e)}var re=Ys(uo());function tc(){try{let n=process||{},e=n.argv||[],t=n.env||{};return !(t.NO_COLOR||e.includes("--no-color"))&&(!!t.FORCE_COLOR||e.includes("--color")||n.platform==="win32"||(n.stdout||{}).isTTY&&t.TERM!=="dumb"||!!t.CI)}catch{return false}}var vi={critical:{prefix:"CRT",color:re.default.red,args_color:re.default.red,original:console.error},error:{prefix:"ERR",color:re.default.red,args_color:re.default.red,original:console.error},warn:{prefix:"WRN",color:re.default.yellow,args_color:re.default.yellow,original:console.warn},info:{prefix:"INF",color:re.default.cyan,original:console.info},log:{prefix:"LOG",color:re.default.dim,args_color:re.default.dim,original:console.log},debug:{prefix:"DBG",color:re.default.yellow,args_color:re.default.dim,original:console.debug}};function rc(n,e){let t=tc(),r=vi[n],i=r.color(`[${r.prefix}]`),s=e.map(o=>"args_color"in r&&t&&typeof o=="string"?r.args_color(o):o);return r.original(i,re.default.gray(zr()),...s)}var fo=ar("cli_log_level","log"),Jr=globalThis.__consoleConfig??={level:fo},mo=Object.keys(vi),m=new Proxy(Jr,{get:(n,e)=>{switch(e){case "original":return console;case "setLevel":return i=>{Jr.level=i;};case "resetLevel":return ()=>{Jr.level=fo;}}let t=mo.indexOf(Jr.level),r=mo.indexOf(e);return e in vi&&r<=t?(...i)=>rc(e,i):()=>null}});function nc(n){let e="";typeof n=="string"?e=n:n instanceof Headers?e=n.get("Content-Disposition")||"":n instanceof Request&&(e=n.headers.get("Content-Disposition")||"");let t=e.match(/filename\*?=(?:UTF-8'')?("?)([^";]+)\1/);return t?t[2]:void 0}function ic(n){return typeof n=="object"&&n!==null&&typeof n.getReader=="function"}function Vr(n){return typeof n=="object"&&n!==null&&typeof n.arrayBuffer=="function"&&typeof n.type=="string"}function Fe(n){return Vr(n)&&typeof n.name=="string"&&typeof n.lastModified=="number"}function sc(n){return typeof n=="object"&&n!==null&&Object.prototype.toString.call(n)==="[object ArrayBuffer]"}function oc(n){return typeof n=="object"&&n!==null&&ArrayBuffer.isView(n)}var ac={"89504E47":"image/png",FFD8FF:"image/jpeg",47494638:"image/gif","49492A00":"image/tiff","4D4D002A":"image/tiff","52494646????57454250":"image/webp","504B0304":"application/zip",25504446:"application/pdf","00000020667479706D70":"video/mp4","000001BA":"video/mpeg","000001B3":"video/mpeg","1A45DFA3":"video/webm","4F676753":"audio/ogg",494433:"audio/mpeg",FFF1:"audio/aac",FFF9:"audio/aac","52494646????41564920":"audio/wav","52494646????57415645":"audio/wave","52494646????415550":"audio/aiff"};async function cc(n){if(!n)return;let e;if(ic(n)){let r=n.getReader(),{value:i}=await r.read();if(!i)return;e=new Uint8Array(i);}else if(Vr(n)||Fe(n))e=new Uint8Array(await n.slice(0,12).arrayBuffer());else if(sc(n))e=new Uint8Array(n);else if(oc(n))e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);else if(typeof n=="string")e=new TextEncoder().encode(n);else return;let t=Array.from(e.slice(0,12)).map(r=>r.toString(16).padStart(2,"0").toUpperCase()).join("");for(let[r,i]of Object.entries(ac))if(new RegExp("^"+r.replace(/\?\?/g,"..")).test(t))return i}async function Gr(n){let e=n.req.header("Content-Type")??"application/octet-stream";if(e?.startsWith("multipart/form-data")||e?.startsWith("application/x-www-form-urlencoded"))try{let t=await n.req.formData();if([...t.values()].length>0){let r=[...t.values()][0];return await yo(r)}}catch(t){m.warn("Error parsing form data",t);}else try{let t=await n.req.blob();if(Fe(t))return t;if(Vr(t))return await yo(t,{name:nc(n.req.raw),type:e})}catch(t){m.warn("Error parsing blob",t);}throw new Error("No file found in request")}async function ho(n,e){let t=Fe(n),r=t?n.type:e;Ti(r&&typeof r=="string"&&r.startsWith("image/"),"type must be image/*");let i=t?await n.arrayBuffer():n;Ti(i.byteLength>=128,"Buffer must be at least 128 bytes");let s=new DataView(i);if(r==="image/jpeg"){let o=2;for(;o<s.byteLength;){let c=s.getUint16(o);if(o+=2,c===65472||c===65474)return {width:s.getUint16(o+5),height:s.getUint16(o+3)};o+=s.getUint16(o);}}else {if(r==="image/png")return {width:s.getUint32(16),height:s.getUint32(20)};if(r==="image/gif")return {width:s.getUint16(6),height:s.getUint16(8)};if(r==="image/tiff"){let o=s.getUint16(0)===18761,c=s.getUint32(4,o),a=s.getUint32(c+18,o),l=s.getUint32(c+10,o);return {width:a,height:l}}}throw new Error("Unsupported image format")}async function yo(n,e={}){if(Fe(n))return n;if(!Vr(n))throw new Error("Not a Blob");let t=Qr(e.type,["application/octet-stream"])?e.type:await cc(n),r=t?Kr(t):"",i=e.name||[qr(16),r].filter(Boolean).join(".");return new File([n],i,{type:t||ao(i),lastModified:Date.now()})}var Oi=Symbol("tb-parse-validation"),$e=class extends Error{constructor(t,r,i){super(i??`Invalid: ${JSON.stringify(r)}`);this.schema=t;this.data=r;this.errors=[...Errors(t,r)];}errors;first(){return this.errors[0]}firstToString(){let t=this.first();return `${t.message} at "${t.path}"`}toJSON(){return {message:this.message,schema:this.schema,data:this.data,errors:this.errors}}};function Wr(n){let e=structuredClone(n);return lr(e,false),e}function lr(n,e=true){if(typeof n=="object"&&n!==null&&!Array.isArray(n)){e?n[Oi]=true:delete n[Oi];for(let t in n)typeof n[t]=="object"&&n[t]!==null&&lr(n[t],e);}}function _(n,e,t){if(!t?.forceParse&&typeof e=="object"&&Oi in e)return t?.useDefaults===false?e:Default(n,e);let r=t?.useDefaults===false?e:Default(n,e);if(Check(n,r))return t?.skipMark!==true&&lr(r,true),r;if(t?.onError)t.onError(Errors(n,e));else throw new $e(n,e)}function dc(n){n.Set("StringEnum",(e,t)=>typeof t=="string"&&e.enum.includes(t));}dc(h.TypeRegistry);var w=(n,e)=>h.Type.Unsafe({[h.Kind]:"StringEnum",type:"string",enum:n,...e}),le=(n,e)=>h.Type.Object({},{...e,additionalProperties:n}),xe=(n,e)=>h.Type.Literal(n,{...e,default:n,const:n,readOnly:true});h.Type.String({pattern:"^[a-zA-Z_][a-zA-Z0-9_]*$",minLength:2,maxLength:150});var We=(n,e)=>h.Type.Object(n,{...e,additionalProperties:false});SetErrorFunction(n=>n?.schema?.errorMessage?n.schema.errorMessage:n?.schema?.[h.Kind]==="StringEnum"?`Expected: ${n.schema.enum.map(e=>`"${e}"`).join(", ")}`:DefaultErrorFunction(n));pr.extend(mc);function zr(n){return pr(n).format("YYYY-MM-DD HH:mm:ss")}function xo(n){return (n?new Date(n):new Date).toISOString().replace("T"," ").split(".")[0]}function wo(){return new Date().getTimezoneOffset()}function Eo(){return Intl.DateTimeFormat().resolvedOptions().timeZone}var fc=["SHA-1","SHA-256","SHA-384","SHA-512"];async function To(n,e,t,r){if(!fc.includes(n))throw new Error(`Invalid hash algorithm: ${n}`);let i=new TextEncoder().encode((t??"")+e+(r??"")),s=await crypto.subtle.digest(n,i);return Array.from(new Uint8Array(s)).map(c=>c.toString(16).padStart(2,"0")).join("")}var Hr={sha256:async(n,e,t)=>To("SHA-256",n,e,t),sha1:async(n,e,t)=>To("SHA-1",n,e,t)};function So(n){let e=new Uint8Array(n);return crypto.getRandomValues(e),Array.from(e,t=>String.fromCharCode(33+t%94)).join("")}var z=[];for(let n=0;n<256;++n)z.push((n+256).toString(16).slice(1));function Yr(n,e=0){return (z[n[e+0]]+z[n[e+1]]+z[n[e+2]]+z[n[e+3]]+"-"+z[n[e+4]]+z[n[e+5]]+"-"+z[n[e+6]]+z[n[e+7]]+"-"+z[n[e+8]]+z[n[e+9]]+"-"+z[n[e+10]]+z[n[e+11]]+z[n[e+12]]+z[n[e+13]]+z[n[e+14]]+z[n[e+15]]).toLowerCase()}var Ri,yc=new Uint8Array(16);function Ft(){if(!Ri){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Ri=crypto.getRandomValues.bind(crypto);}return Ri(yc)}var hc=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Ci={randomUUID:hc};function gc(n,e,t){if(Ci.randomUUID&&!e&&!n)return Ci.randomUUID();n=n||{};let r=n.random??n.rng?.()??Ft();if(r.length<16)throw new Error("Random bytes length must be >= 16");if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,e){if(t=t||0,t<0||t+16>e.length)throw new RangeError(`UUID byte range ${t}:${t+15} is out of buffer bounds`);for(let i=0;i<16;++i)e[t+i]=r[i];return e}return Yr(r)}var Ai=gc;var Fi={};function bc(n,e,t){let r;if(n)r=vo(n.random??n.rng?.()??Ft(),n.msecs,n.seq,e,t);else {let i=Date.now(),s=Ft();xc(Fi,i,s),r=vo(s,Fi.msecs,Fi.seq,e,t);}return e??Yr(r)}function xc(n,e,t){return n.msecs??=-1/0,n.seq??=0,e>n.msecs?(n.seq=t[6]<<23|t[7]<<16|t[8]<<8|t[9],n.msecs=e):(n.seq=n.seq+1|0,n.seq===0&&n.msecs++),n}function vo(n,e,t,r,i=0){if(n.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(),t??=n[6]*127<<24|n[7]<<16|n[8]<<8|n[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|t>>>28&15,r[i++]=t>>>20&255,r[i++]=128|t>>>14&63,r[i++]=t>>>6&255,r[i++]=t<<2&255|n[10]&3,r[i++]=n[11],r[i++]=n[12],r[i++]=n[13],r[i++]=n[14],r[i++]=n[15],r}var _i=bc;function Oo(){return Ai()}function Ro(){return _i()}var Ye=(n,e)=>n===e,wc=n=>h.ValueGuard.IsString(n)||h.ValueGuard.IsNumber(n)||h.ValueGuard.IsBoolean(n),Ec=n=>h.ValueGuard.IsObject(n)&&h.ValueGuard.IsArray(n.enum)&&n.enum.every(e=>wc(e)),Tc=n=>h.ValueGuard.IsObject(n)&&h.ValueGuard.IsArray(n.allOf),Sc=n=>h.ValueGuard.IsObject(n)&&h.ValueGuard.IsArray(n.anyOf),vc=n=>h.ValueGuard.IsObject(n)&&h.ValueGuard.IsArray(n.oneOf),Oc=n=>h.ValueGuard.IsObject(n)&&Ye(n.type,"array")&&h.ValueGuard.IsArray(n.items),Rc=n=>h.ValueGuard.IsObject(n)&&Ye(n.type,"array")&&!h.ValueGuard.IsArray(n.items)&&h.ValueGuard.IsObject(n.items),Cc=n=>h.ValueGuard.IsObject(n)&&h.ValueGuard.IsObject(n.const),Ac=n=>h.ValueGuard.IsObject(n)&&Ye(n.type,"string"),Fc=n=>h.ValueGuard.IsObject(n)&&Ye(n.type,"number"),_c=n=>h.ValueGuard.IsObject(n)&&Ye(n.type,"integer"),kc=n=>h.ValueGuard.IsObject(n)&&Ye(n.type,"boolean"),Pc=n=>h.ValueGuard.IsObject(n)&&Ye(n.type,"null"),jc=n=>h.ValueGuard.IsObject(n),Mc=n=>h.ValueGuard.IsObject(n)&&Ye(n.type,"object")&&jc(n.properties)&&(n.required===void 0||h.ValueGuard.IsArray(n.required)&&n.required.every(e=>h.ValueGuard.IsString(e)));function Xr(n){return n.map(e=>He(e))}function Ic(n){return n.map(e=>h.Literal(e))}function Dc(n){return h.IntersectEvaluated(Xr(n.allOf),n)}function $c(n){return h.UnionEvaluated(Xr(n.anyOf),n)}function qc(n){return h.UnionEvaluated(Xr(n.oneOf),n)}function Bc(n){return h.UnionEvaluated(Ic(n.enum))}function Nc(n){return h.Tuple(Xr(n.items),n)}function Uc(n){return h.Array(He(n.items),n)}function Lc(n){return h.Literal(n.const,n)}function Qc(n){let e=globalThis.Object.getOwnPropertyNames(n.properties).reduce((t,r)=>({...t,[r]:n.required?.includes(r)?He(n.properties[r]):h.Optional(He(n.properties[r]))}),{});return h.Object(e,n)}function He(n){return Tc(n)?Dc(n):Sc(n)?$c(n):vc(n)?qc(n):Ec(n)?Bc(n):Mc(n)?Qc(n):Oc(n)?Nc(n):Rc(n)?Uc(n):Cc(n)?Lc(n):Ac(n)?h.String(n):Fc(n)?h.Number(n):_c(n)?h.Integer(n):kc(n)?h.Boolean(n):Pc(n)?h.Null(n):h.Unknown(n||{})}function ki(n){return n==null?0:typeof n=="number"?n:Number.parseInt(n,10)}var _t=class{constructor(e,t,r){this._schema=e;this.options=r;this._default=Default(e,{}),this._value=t?_(e,structuredClone(t),{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,t){return this.options?.onBeforeUpdate?this.options.onBeforeUpdate(e,t):t}get(e){return e?.stripMark?Wr(this._config):this._config}clone(){return structuredClone(this._config)}async set(e,t){let r=_(this._schema,structuredClone(e),{forceParse:true,skipMark:this.isForceParse()}),i=await this.onBeforeUpdate(this._config,r);return this._value=i,this._config=Object.freeze(i),t!==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 t=this.options?.restrictPaths??[];if(Array.isArray(t)&&t.length>0){for(let r of t)if(typeof e=="string"?e.startsWith(r):has(e,r))throw new Error(`Path "${r}" is restricted`)}}async patch(e,t){let r=this.clone(),i=e.length>0?set({},e,t):t;this.throwIfRestricted(i);let s=bi(r,i,(c,a)=>{if(Array.isArray(c)&&Array.isArray(a))return a});if(this.options?.overwritePaths){let a=gi(t).map(l=>e.length>0?e+"."+l:l).filter(l=>this.options?.overwritePaths?.some(p=>typeof p=="string"?l===p:p.test(l)));if(a.length>0){let l=a.length>1?a.filter(p=>a.some(u=>u!==p&&u.startsWith(p))):a;for(let p of l)set(s,p,get(i,p));}}let o=await this.set(s);return [i,o]}async overwrite(e,t){let r=this.clone(),i=e.length>0?set({},e,t):t;this.throwIfRestricted(i);let s=set(r,e,t),o=await this.set(s);return [i,o]}has(e){let t=e.split(".");if(t.length>1){let r=t.slice(0,-1).join(".");if(!has(this._config,r))throw new Error(`Parent path "${r}" 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 t=this.clone(),r=get(t,e),i=omit(t,e),s=await this.set(i);return [r,s]}};var ur=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 t=performance.now(),r=this.last===0?0:Number.parseInt(String(t-this.last)),i=" ".repeat(Math.max(this._context.length-1,0)),s=this._context.length>0?`[${this._context[this._context.length-1]}]`:"";return console.log(i,s,r,...e),this.last=t,this}};var R=class{constructor(e){this.name=e;this.name=e;}toJSON(){return {name:this.name}}};function _e(n){return ["string","number","boolean"].includes(typeof n)}function Mi(n){return [true,false,0,1].includes(n)}var ji=class{constructor(e,t,r){this.key=e;this.valid=t;this.validate=r;}expect};function ne(n,e,t){return new ji(n,e,t)}function _o(n,e){let t=n.find(r=>r.key===e);if(!t)throw new Error(`Expression does not exist: "${e}"`);return t}var Ao="$or";function Ii(n,e,t=[]){let r=e.map(a=>a.key),i=Object.keys(n),s=[Ao],o={};if(i.some(a=>a.startsWith("$")&&!s.includes(a)))throw new Error(`Invalid key '${i}'. Keys must not start with '$'.`);if(t.length>0&&i.some(a=>s.includes(a)))throw new Error(`Operand ${Ao} can only appear at the top level.`);function c(a,l,p=[]){if(_o(e,a).valid(l)===false)throw new Error(`Invalid value at "${[...p,a].join(".")}": ${l}`)}for(let[a,l]of Object.entries(n))if(a==="$or")o.$or=Ii(l,e,[...t,a]);else if(_e(l))c("$eq",l,t),o[a]={$eq:l};else if(typeof l=="object"){let p=Object.keys(l).filter(u=>!r.includes(u));if(p.length===0){o[a]={};for(let[u,d]of Object.entries(l))c(u,d,[...t,a]),o[a][u]=d;}else throw new Error(`Invalid key(s) at "${a}": ${p.join(", ")}. Expected expressions.`)}return o}function Fo(n,e,t){let r=t.convert?Ii(n,e):n,i={$and:[],$or:[],keys:new Set},{$or:s,...o}=r;function c(a,l,p,u=[]){let d=_o(e,a);if(!d)throw new Error(`Expression does not exist: "${a}"`);if(!d.valid(l))throw new Error(`Invalid expected value at "${[...u,a].join(".")}": ${l}`);return d.validate(l,p,t.exp_ctx)}for(let[a,l]of Object.entries(o))for(let[p,u]of Object.entries(l)){let d=t.value_is_kv?a:t.object[a];i.$and.push(c(p,u,d,[a])),i.keys.add(a);}for(let[a,l]of Object.entries(s??{})){let p=t.value_is_kv?a:t.object[a];for(let[u,d]of Object.entries(l))i.$or.push(c(u,d,p,[a])),i.keys.add(a);}return i}function Jc(n){let e={$and:void 0,$or:void 0};return e.$and=n.$and.every(t=>!!t),e.$or=n.$or.some(t=>!!t),!!e.$and||!!e.$or}function Di(n){return {convert:e=>Ii(e,n),build:(e,t)=>Fo(e,n,t),validate:(e,t)=>{let r=Fo(e,n,t);return Jc(r)},expressions:n,expressionKeys:n.map(e=>e.key)}}var dr=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,t){return this.items[e]=t,this}register(e,t){if(this.registerFn){let r=this.registerFn(t);return this.items[e]=r,this}return this.add(e,t)}get(e){return this.items[e]}has(e){return e in this.items}all(){return this.items}};var Vc="__bknd_flash";function kt(n,e,t="info"){n.req.header("Accept")?.includes("text/html")&&setCookie(n,Vc,JSON.stringify({type:t,message:e}),{path:"/"});}var f={};ze(f,{$kind:()=>Bi,$optional:()=>Ni,$raw:()=>ct,any:()=>Bl,anyOf:()=>Jl,array:()=>Uo,boolean:()=>Lo,error:()=>A,fromSchema:()=>lt,integer:()=>Bo,makeOpts:()=>ut,number:()=>qo,object:()=>fr,oneOf:()=>zl,partialObject:()=>Ul,record:()=>Ll,recursive:()=>Wl,ref:()=>Vl,refId:()=>Gl,schema:()=>B,strictObject:()=>Nl,string:()=>$o,stringConst:()=>Ql,valid:()=>g});var Bi=Symbol.for("kind"),Ni=Symbol.for("optional"),ct=Symbol.for("raw"),pt=class extends Error{constructor(n){super(`Expected ${n}`);}},Gc=class extends Error{constructor(n,e){super(`${n??"Invalid raw schema"}: ${JSON.stringify(e)}`),this.schema=e;}},Wc=class extends Error{constructor(n,e){super(`${n}, got: '${JSON.stringify(e)}'`),this.value=e;}};function Hc(n){return n===null}function J(n){return !Array.isArray(n)&&typeof n=="object"&&n!==null}function ke(n){return typeof n=="string"}function Be(n){return typeof n=="number"}function Yc(n){return typeof n=="number"&&Number.isInteger(n)}function Pt(n){return typeof n=="boolean"}function Ne(n){return Array.isArray(n)}function Xc(n){return typeof n=="string"&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)}function Zc(n){return typeof n!="boolean"}function el(n){return n!==void 0&&Zc(n)&&"type"in n}function pe(n){return J(n)&&Bi in n}function tl(n){return pe(n)&&Pt(n[ct])}function $i(n,e,t){if(!n)throw new Wc(e,t)}function qe(n){if(Ne(n))return n.map(qe).sort();if(J(n)){let e=Object.entries(n).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>[t,qe(r)]);return Object.fromEntries(e)}return ke(n)?n.normalize("NFC"):n}var qi=(n=[],e="")=>"/"+[e,...n.map(t=>String(t).replace(/\./g,"/"))].filter(Boolean).join("/"),rl=n=>n.split("/").slice(1);function nl(n,e,t=void 0){let r=typeof e=="string"?rl(e):qi(e);return Mo(n,r,t)}function Mo(n,e,t=void 0){let r=typeof e=="string"?e.split(/[.\[\]\"]+/).filter(i=>i):e;if(r.length===0)return n;try{let[i,...s]=r;return !i||!(i in n)?t:Mo(n[i],s,t)}catch{if(typeof t<"u")return t;throw new Error(`Invalid path: ${r.join(".")}`)}}var A=(n={},e,t,r)=>({valid:false,errors:[...n.errors??[],{keywordLocation:qi([...n.keywordPath??[],e]),instanceLocation:qi(n.instancePath),error:typeof t=="string"?t:`Invalid value for ${e}`,data:r}]}),g=()=>({valid:true,errors:[]}),ut=(n,e,t)=>{let r=Array.isArray(e)?e:[e],i=t?Array.isArray(t)?t:[t]:[];return {...n,keywordPath:[...n.keywordPath??[],...r],instancePath:i?[...n.instancePath??[],...i]:n.instancePath}},en=(n={})=>({...n,errors:[]}),il=({type:n},e,t={})=>{if(n===void 0)return g();let r,i={string:ke,number:Be,integer:Yc,object:J,array:Ne,boolean:Pt,null:Hc};if(Array.isArray(n)){for(let s of n){if(!(s in i))throw new pt(`Unknown type: ${s}`);if(i[s](e))return g()}r=`Expected one of: ${n.join(", ")}`;}else {if(!(n in i))throw new pt(`Unknown type: ${n}`);i[n](e)||(r=`Expected ${n}`);}return r?A(t,"type",r,e):g()},sl=({const:n},e,t={})=>{let r=JSON.stringify(qe(n)),i=JSON.stringify(qe(e));return r!==i?A(t,"const",`Expected const: ${r}`,i):g()},ol=({enum:n=[]},e,t={})=>{let r=JSON.stringify(n.map(qe)),i=JSON.stringify(qe(e));return r.includes(i)?g():A(t,"enum",`Expected enum: ${r}`,e)};function mr(n,e,t={}){return n.map(r=>r.validate(e,en(t)).valid?r:void 0).filter(Boolean)}var al=({anyOf:n=[]},e,t={})=>mr(n,e,t).length>0?g():A(t,"anyOf","Expected at least one to match",e),cl=({oneOf:n=[]},e,t={})=>mr(n,e).length===1?g():A(t,"oneOf","Expected exactly one to match",e),ll=({allOf:n=[]},e,t={})=>mr(n,e,t).length===n.length?g():A(t,"allOf","Expected all to match",e),pl=({not:n},e,t={})=>pe(n)&&n.validate(e,t).valid?A(t,"not","Expected not to match",e):g(),ul=({if:n,then:e,else:t},r,i={})=>{if(n&&(e||t)){if(n.validate(r,en(i)).valid)return e?e.validate(r,en(i)):g();if(t)return t.validate(r,en(i))}return g()},dl=({pattern:n=""},e,t={})=>ke(e)?new RegExp(n,"u").test(e)?g():A(t,"pattern",`Expected string matching pattern ${n}`,e):g(),ml=({minLength:n=0},e,t={})=>ke(e)?[...qe(e)].length>=n?g():A(t,"minLength",`Expected string with minimum length of ${n}`,e):g(),fl=({maxLength:n=0},e,t={})=>ke(e)?[...qe(e)].length<=n?g():A(t,"maxLength",`Expected string with maximum length of ${n}`,e):g(),yl=({multipleOf:n=0},e,t={})=>{if(!Be(e))return g();if(!(Number.isFinite(e)&&Number.isFinite(n))||n<=0)throw new pt("number");let r=e/n,i=Number.EPSILON*Math.max(1,Math.abs(r));return Math.abs(r-Math.round(r))<=i?g():A(t,"multipleOf",`Expected number being a multiple of ${n}`,e)},hl=({maximum:n=0},e,t={})=>!Be(e)||e<=n?g():A(t,"maximum",`Expected number less than or equal to ${n}`,e),gl=({exclusiveMaximum:n=0},e,t={})=>!Be(e)||e<n?g():A(t,"exclusiveMaximum",`Expected number less than ${n}`,e),bl=({minimum:n=0},e,t={})=>!Be(e)||e>=n?g():A(t,"minimum",`Expected number greater than or equal to ${n}`,e),xl=({exclusiveMinimum:n=0},e,t={})=>!Be(e)||e>n?g():A(t,"exclusiveMinimum",`Expected number greater than ${n}`,e),wl=({properties:n={}},e,t={})=>{if(!J(e))return g();for(let[r,i]of Object.entries(e)){let s=n[r];if(!pe(s))continue;let o=s.validate(i,ut(t,["properties",r],r));if(!o.valid)return o}return g()},El=({properties:n={},additionalProperties:e,patternProperties:t},r,i={})=>{if(!J(r))return g();if(!pe(e))throw new pt("additionalProperties must be a boolean or a managed schema");let s=Object.keys(n),o=J(t)?Object.keys(r).filter(a=>Object.keys(t).some(l=>new RegExp(l).test(a))):[],c=Object.keys(r).filter(a=>!s.includes(a)&&!o.includes(a));if(c.length>0){if(tl(e))return e.validate(void 0);if(pe(e))for(let a of c){let l=e.validate(r[a],ut(i,["additionalProperties"],a));if(!l.valid)return l}}return g()},Tl=({dependentRequired:n},e,t={})=>{if(!J(e))return g();let r=Object.keys(e).filter(i=>typeof e[i]!="function");if(J(n)){for(let[i,s]of Object.entries(n))if(r.includes(i)){for(let o of s)if(!r.includes(o))return A(t,"dependentRequired",`Expected dependent required property ${o}`,e)}}return g()},Sl=({required:n=[]},e,t={})=>{if(!J(e))return g();let r=Object.keys(e).filter(i=>typeof e[i]!="function");return n.every(i=>r.includes(i))?g():A(t,"required",`Expected object with required properties ${n.join(", ")}`,e)},vl=({dependentSchemas:n},e,t={})=>{if(!J(e))return g();let r=Object.keys(e).filter(i=>typeof e[i]!="function");if(J(n)){for(let[i,s]of Object.entries(n))if(r.includes(i)){let o=s.validate(e,t);if(!o.valid)return o}}return g()},Ol=({minProperties:n=0},e,t={})=>J(e)?Object.keys(e).length>=n?g():A(t,"minProperties",`Expected object with at least ${n} properties`,e):g(),Rl=({maxProperties:n=0},e,t={})=>!J(e)||Object.keys(e).length<=n?g():A(t,"maxProperties",`Expected object with at most ${n} properties`,e),Cl=({patternProperties:n={}},e,t={})=>{if(!J(e))return g();if(!J(n))throw new pt("patternProperties must be an object");for(let[r,i]of Object.entries(e))for(let[s,o]of Object.entries(n))if(new RegExp(s,"u").test(r)){let c=o.validate(i,ut(t,["patternProperties"],r));if(!c.valid)return c}return g()},Al=({propertyNames:n},e,t={})=>{if(!J(e)||n===void 0)return g();if(!pe(n))throw new pt("propertyNames must be a managed schema");for(let r of Object.keys(e)){let i=n.validate(r,ut(t,["propertyNames"],r));if(!i.valid)return i}return g()},Fl=({items:n,prefixItems:e=[]},t,r={})=>{if(!Ne(t)||n===void 0)return g();if(!pe(n))throw new pt("items must be a managed schema");for(let[i,s]of t.slice(e.length).entries()){let o=n.validate(s,ut(r,["items"],String(i)));if(!o.valid)return o}return g()},_l=({minItems:n=0},e,t={})=>!Ne(e)||e.length>=n?g():A(t,"minItems",`Expected array with at least ${n} items`,e),kl=({maxItems:n=0},e,t={})=>!Ne(e)||e.length<=n?g():A(t,"maxItems",`Expected array with at most ${n} items`,e),Pl=({uniqueItems:n=false},e,t={})=>{if(!Ne(e)||!n)return g();let r=e.map(qe);return new Set(r.map(i=>JSON.stringify(i))).size===e.length?g():A(t,"uniqueItems","Expected array with unique items",e)},jl=({contains:n,minContains:e,maxContains:t},r,i={})=>{if(!pe(n))throw new Error("contains must be a managed schema");if(!Ne(r))return g();let s=r.filter(o=>n.validate(o).valid).length;return s<(e??1)?A(i,e?"minContains":"contains",`Expected array to contain at least ${e??1}, but found ${s}`,r):t!==void 0&&s>t?A(i,"maxContains",`Expected array to contain at most ${t}, but found ${s}`,r):g()},Ml=({prefixItems:n=[]},e,t={})=>{if(!Ne(e))return g();for(let r=0;r<e.length;r++){let i=n[r]?.validate(e[r],ut(t,String(r),String(r)));if(i&&i?.valid!==true)return i}return g()},ko={email:n=>{if(n.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(n))return true;if(!n.includes("@")||/(^\.|^"|\.@|\.\.)/.test(n))return false;let[e,t,...r]=n.split("@");return !e||!t||r.length!==0||e.length>64||t.length>253||!/^[a-z0-9.-]+$/i.test(t)||!/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(e)?false:t.split(".").every(i=>/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(i))},hostname:n=>n.length>(n.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(n),date:n=>{if(n.length!==10)return false;if(n[5]==="0"&&n[6]==="2"){if(/^\d\d\d\d-02-(?:[012][1-8]|[12]0|[01]9)$/.test(n))return true;let e=n.match(/^(\d\d\d\d)-02-29$/);if(!e)return false;let t=Number(e[1]);return t%16===0||t%4===0&&t%25!==0}return n.endsWith("31")?/^\d\d\d\d-(?:0[13578]|1[02])-31$/.test(n):/^\d\d\d\d-(?:0[13-9]|1[012])-(?:[012][1-9]|[123]0)$/.test(n)},time:n=>{if(n.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(n))return false;if(!/:60/.test(n))return true;let e=n.match(/([0-9.]+|[^0-9.])/g);if(!e)return false;let t=Number(e[0])*60+Number(e[2]);return e[5]==="+"?t+=24*60-Number(e[6]||0)*60-Number(e[8]||0):e[5]==="-"&&(t+=Number(e[6]||0)*60+Number(e[8]||0)),t%(24*60)===23*60+59},"date-time":n=>{if(n.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,t=n[5]==="0"&&n[6]==="2";if(t&&n[8]==="3"||!e.test(n))return false;if(n[17]==="6"){let r=n.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(t){if(/^\d\d\d\d-02-(?:[012][1-8]|[12]0|[01]9)/.test(n))return true;let r=n.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 n[8]==="3"&&n[9]==="1"?/^\d\d\d\d-(?:0[13578]|1[02])-31/.test(n):/^\d\d\d\d-(?:0[13-9]|1[012])-(?:[012][1-9]|[123]0)/.test(n)},ipv4:n=>n.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(n),ipv6:n=>{if(n.length>45||n.length<2)return false;let e=0,t=0,r=0,i=false,s=false,o=0,c=true;for(let l=0;l<n.length;l++){let p=n.charCodeAt(l);if(l===1&&o===58&&p!==58)return false;if(p>=48&&p<=57){if(++r>4)return false}else if(p===46){if(e>6||t>=3||r===0||s)return false;t++,r=0;}else if(p===58){if(t>0||e>=7)return false;if(o===58){if(i)return false;i=true;}else l===0&&(c=false);e++,r=0,s=false;}else if(p>=97&&p<=102||p>=65&&p<=70){if(t>0||++r>4)return false;s=true;}else return false;o=p;}if(e<2||t>0&&(t!==3||r===0))return false;if(i&&n.length===2)return true;if(t>0&&!/(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$/.test(n))return false;let a=t>0?6:7;return i?(c||r>0)&&e<a:e===a&&c&&r>0},uri:n=>/^[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(n),"uri-reference":n=>/^(?:[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(n),"uri-template":n=>/^(?:[^\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(n),"json-pointer":n=>/^(?:|\/(?:[^~]|~0|~1)*)$/.test(n),"relative-json-pointer":n=>/^(?:0|[1-9][0-9]*)(?:|#|\/(?:[^~]|~0|~1)*)$/.test(n),uuid:n=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n),duration:n=>n.length>1&&n.length<80&&(/^P\d+([.,]\d+)?W$/.test(n)||/^P[\dYMDTHS]*(\d[.,]\d+)?[YMDHS]$/.test(n)&&/^P([.,\d]+Y)?([.,\d]+M)?([.,\d]+D)?(T([.,\d]+H)?([.,\d]+M)?([.,\d]+S)?)?$/.test(n)),regex:n=>{if(/[^\\]\\Z/.test(n))return false;try{return new RegExp(n,"u"),!0}catch{return false}}},Il=({format:n},e,t={})=>!ke(e)||!n?g():ko[n]?ko[n](e)?g():A(t,"format",`Expected format: ${n}`,e):g(),Ui=class{constructor(n){this.root=n,this.cache=new Map;}cache;hasRef(n,e){return e!==void 0&&"$ref"in n&&ke(n.$ref)}resolve(n){let e=this.cache.get(n);if(!e){if(e=nl(this.root,n),!pe(e))throw new Error(`ref not found: ${n}`);if("$ref"in e&&e.$ref===n)throw new Error(`ref loop: ${n}`);this.cache.set(n,e);}return e}},Dl={type:il,const:sl,enum:ol,allOf:ll,anyOf:al,oneOf:cl,not:pl,minLength:ml,maxLength:fl,pattern:dl,format:Il,minimum:bl,exclusiveMinimum:xl,maximum:hl,exclusiveMaximum:gl,multipleOf:yl,required:Sl,dependentRequired:Tl,dependentSchemas:vl,minProperties:Ol,maxProperties:Rl,propertyNames:Al,properties:wl,patternProperties:Cl,additionalProperties:El,minItems:_l,maxItems:kl,uniqueItems:Pl,contains:jl,prefixItems:Ml,items:Fl,if:ul};function $l(n,e,t={}){let r={keywordPath:t.keywordPath||[],instancePath:t.instancePath||[],coerce:t.coerce||false,errors:t.errors||[],shortCircuit:t.shortCircuit||false,ignoreUnsupported:t.ignoreUnsupported||false,resolver:t.resolver||new Ui(n),depth:t.depth?t.depth+1:0},i=structuredClone(t?.coerce?n.coerce(e,{resolver:r.resolver,depth:r.depth}):e);if(t.ignoreUnsupported!==true){let s=["$defs"];for(let o of s)if(n[o])throw new Error(`${o} not implemented`)}if(r.resolver.hasRef(n,i)){let s=r.resolver.resolve(n.$ref).validate(i,{...r,errors:[]});s.valid||r.errors.push(...s.errors);}else for(let[s,o]of Object.entries(Dl)){if(n[s]===void 0)continue;let c=o(n,i,{...r,errors:[]});if(!c.valid){if(t.shortCircuit)return c;r.errors.push(...c.errors);}}return {valid:r.errors.length===0,errors:r.errors}}function ql(n,e,t={}){let r=structuredClone(e),i={resolver:t.resolver||new Ui(n),depth:t.depth||0};return i.resolver.hasRef(n,r)?i.resolver.resolve(n.$ref).coerce(r,{...i,depth:i.depth+1}):r}var B=(n={},e="any")=>{let t=J(n)?n:{},r=Pt(n)?n:ct in n?n[ct]:void 0,i={...t,[Bi]:e,[ct]:r,optional:function(){return B({...this,validate:void 0,[ct]:r,[Ni]:true},e)},template:function(s={}){if(t.const!==void 0)return t.const;if(t.default!==void 0)return t.default;if(t.enum!==void 0)return t.enum[0];if(t.template)return t.template(s)},toJSON:function(){let s=this[ct];return Pt(s)?s:JSON.parse(JSON.stringify(t))}};return i.coerce=function(s,o={}){let c={...o,resolver:o.resolver||new Ui(i),depth:o.depth?o.depth+1:0},a=s;return "coerce"in t&&t.coerce!==void 0?t.coerce(a,c):ql(i,a,c)},i.validate=function(s,o={}){if(Pt(r))return r===false?A(o,"","Always fails"):g();let c=o.errors||[];if("validate"in t&&t.validate!==void 0){let a=t.validate(s,o);a.valid||(c=[...c,...a.errors]);}return $l(i,s,{...o,errors:c})},i},Bl=(n={})=>B(n,"any"),fr=(n,e={})=>{for(let r of Object.keys(n||{}))$i(Xc(r),"invalid property name",r),$i(pe(n[r]),"properties must be managed schemas",n[r]);let t=Object.entries(n||{}).filter(([,r])=>!(Ni in r)).map(([r])=>r);return B({template:Io,coerce:Do,...e,type:"object",properties:n,required:t.length>0?t:void 0},"object")},Nl=(n,e={})=>fr(n,{...e,additionalProperties:B(false)}),Ul=(n,e={})=>{let t=Object.fromEntries(Object.entries(n).map(([r,i])=>[r,"optional"in i?i.optional():i]));return fr(t,e)},Ll=(n,e={},t)=>B({template:Io,coerce:Do,...e,type:"object",additionalProperties:fr(n,t)},"object");function Io(n={}){let e={};if(this.properties)for(let[t,r]of Object.entries(this.properties)){if(n.withOptional!==true&&!this.required?.includes(t))continue;let i=r.template(n);i!==void 0&&(e[t]=i);}return e}function Do(n,e={}){let t=n;if(typeof t=="string"&&(t.match(/^\{/)||t.match(/^\[/))&&(t=JSON.parse(t)),!(typeof t!="object"||t===null)){if(this.properties)for(let[r,i]of Object.entries(this.properties)){let s=t[r];s!==void 0&&(t[r]=i.coerce(s,e));}return t}}var $o=(n={})=>B({template:()=>"",coerce:e=>Be(e)?String(e):e,...n,type:"string"},"string"),Ql=(n,e={})=>B({const:n,default:n,readOnly:true,template:()=>n,coerce:t=>(String(t)),...e,type:"string"},"string"),qo=(n={})=>B({coerce:e=>ke(e)?Number(e):e,template:No,...n,type:"number"},"number"),Bo=(n={})=>B({coerce:e=>ke(e)?Number.parseInt(e):e,template:No,...n,type:"integer"},"integer");function No(){if(this.minimum)return this.minimum;if(this.exclusiveMinimum){if(this.multipleOf){let n=this.exclusiveMinimum;for(;n%this.multipleOf!==0;)n++;return n}return this.exclusiveMinimum+1}return 0}var Uo=(n,e={})=>(n!==void 0&&$i(pe(n),"items must be a schema",n),B({template:()=>[],coerce:Kl,...e,type:"array",items:n},"array"));function Kl(n,e){try{let t=typeof n=="string"?JSON.parse(n):n;if(!Array.isArray(t))return;if(pe(this.items))for(let[r,i]of t.entries())t[r]=this.items.coerce(i,e);return t}catch{}return n}var Lo=(n={})=>B({...n,coerce:function(e){if("coerce"in n&&n.coerce)return n.coerce(e);if(ke(e)&&["true","false","1","0"].includes(e))return e==="true"||e==="1";if(Be(e)){if(e===1)return true;if(e===0)return false}return e},type:"boolean"},"boolean");function Po(n,e){return Array.isArray(n)?n.map(e):n!==void 0?[e(n)]:[]}function jo(n,e,t=r=>r){return Object.fromEntries(Object.entries(n).map(([r,i])=>[r,t(e(i),r)]))}function lt(n){if(Pt(n))return B(!!n);let e=structuredClone(n);if(!J(e))throw new Gc("non-object schemas not implemented",e);"properties"in e&&e.properties&&(e.properties=jo(e.properties,lt,(s,o)=>"required"in e&&Array.isArray(e.required)&&e.required.includes(o)?s:s.optional()));let t=["patternProperties","dependentSchemas","$defs"];for(let s of t)s in e&&e[s]&&(e[s]=jo(e[s],lt));let r=["additionalProperties","items","prefixItems","propertyNames","contains","not","if","then","else"];for(let s of r)s in e&&typeof e[s]<"u"&&(Ne(e[s])?e[s]=Po(e[s],lt):e[s]=lt(e[s]));let i=["anyOf","oneOf","allOf"];for(let s of i)if(s in e){let{[s]:o}=e;e[s]=Po(o,lt);}if(el(e))switch(e.type){case "string":return $o(e);case "number":return qo(e);case "integer":return Bo(e);case "boolean":return Lo(e);case "object":{let{properties:s,...o}=e;return fr(s,o)}case "array":{let{items:s,...o}=e;return Uo(s,o)}}return B(e)}var Jl=(n,e={})=>B({...e,coerce:function(t,r={}){let i=t;if("coerce"in e&&e.coerce!==void 0)return e.coerce.bind(this)(t,r);let s=mr(n,i,{ignoreUnsupported:true,resolver:r.resolver,coerce:true});return s.length>0?s[0].coerce(i,r):i},anyOf:n},"anyOf"),zl=(n,e={})=>B({...e,coerce:function(t,r={}){let i=mr(n,t,{ignoreUnsupported:true,resolver:r.resolver,coerce:true});return i.length===1?i[0].coerce(t,r):t},oneOf:n},"oneOf"),Vl=(n,e)=>{if(!n.$id)throw new Error("Schema must have an $id");return B({$ref:e??n.$id,coerce:function(t,r={}){return n.coerce(t,r)}}