elysia
Version:
Ergonomic Framework for Human
9 lines • 265 kB
JavaScript
// @bun
var __create=Object.create;var{getPrototypeOf:__getProtoOf,defineProperty:__defProp,getOwnPropertyNames:__getOwnPropNames}=Object;var __hasOwnProp=Object.prototype.hasOwnProperty;var __toESM=(mod,isNodeMode,target)=>{target=mod!=null?__create(__getProtoOf(mod)):{};let to=isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target;for(let key of __getOwnPropNames(mod))if(!__hasOwnProp.call(to,key))__defProp(to,key,{get:()=>mod[key],enumerable:!0});return to};var __commonJS=(cb,mod)=>()=>(mod||cb((mod={exports:{}}).exports,mod),mod.exports);var __require=import.meta.require;var require_fast_decode_uri_component=__commonJS((exports,module)=>{var UTF8_ACCEPT=12,UTF8_REJECT=0,UTF8_DATA=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,7,7,7,7,7,7,7,7,7,7,7,7,8,7,7,10,9,9,9,11,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,24,36,48,60,72,84,96,0,12,12,12,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,24,24,24,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0,0,0,0,48,48,48,0,0,0,0,0,0,0,0,0,0,48,48,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,127,63,63,63,0,31,15,15,15,7,7,7];function decodeURIComponent2(uri){var percentPosition=uri.indexOf("%");if(percentPosition===-1)return uri;var length=uri.length,decoded="",last=0,codepoint=0,startOfOctets=percentPosition,state=UTF8_ACCEPT;while(percentPosition>-1&&percentPosition<length){var high=hexCodeToInt(uri[percentPosition+1],4),low=hexCodeToInt(uri[percentPosition+2],0),byte=high|low,type=UTF8_DATA[byte];if(state=UTF8_DATA[256+state+type],codepoint=codepoint<<6|byte&UTF8_DATA[364+type],state===UTF8_ACCEPT)decoded+=uri.slice(last,startOfOctets),decoded+=codepoint<=65535?String.fromCharCode(codepoint):String.fromCharCode(55232+(codepoint>>10),56320+(codepoint&1023)),codepoint=0,last=percentPosition+3,percentPosition=startOfOctets=uri.indexOf("%",last);else if(state===UTF8_REJECT)return null;else{if(percentPosition+=3,percentPosition<length&&uri.charCodeAt(percentPosition)===37)continue;return null}}return decoded+uri.slice(last)}var HEX={"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};function hexCodeToInt(c,shift){var i=HEX[c];return i===void 0?255:i<<shift}module.exports=decodeURIComponent2});var require_dist=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.parseCookie=parseCookie;exports.parse=parseCookie;exports.stringifyCookie=stringifyCookie;exports.stringifySetCookie=stringifySetCookie;exports.serialize=stringifySetCookie;exports.parseSetCookie=parseSetCookie;exports.stringifySetCookie=stringifySetCookie;exports.serialize=stringifySetCookie;var cookieNameRegExp=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,cookieValueRegExp=/^[\u0021-\u003A\u003C-\u007E]*$/,domainValueRegExp=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,pathValueRegExp=/^[\u0020-\u003A\u003D-\u007E]*$/,maxAgeRegExp=/^-?\d+$/,__toString=Object.prototype.toString,NullObject=(()=>{let C=function(){};return C.prototype=Object.create(null),C})();function parseCookie(str,options){let obj=new NullObject,len=str.length;if(len<2)return obj;let dec=options?.decode||decode,index=0;do{let eqIdx=eqIndex(str,index,len);if(eqIdx===-1)break;let endIdx=endIndex(str,index,len);if(eqIdx>endIdx){index=str.lastIndexOf(";",eqIdx-1)+1;continue}let key=valueSlice(str,index,eqIdx);if(obj[key]===void 0)obj[key]=dec(valueSlice(str,eqIdx+1,endIdx));index=endIdx+1}while(index<len);return obj}function stringifyCookie(cookie,options){let enc=options?.encode||encodeURIComponent,cookieStrings=[];for(let name of Object.keys(cookie)){let val=cookie[name];if(val===void 0)continue;if(!cookieNameRegExp.test(name))throw TypeError(`cookie name is invalid: ${name}`);let value=enc(val);if(!cookieValueRegExp.test(value))throw TypeError(`cookie val is invalid: ${val}`);cookieStrings.push(`${name}=${value}`)}return cookieStrings.join("; ")}function stringifySetCookie(_name,_val,_opts){let cookie=typeof _name==="object"?_name:{..._opts,name:_name,value:String(_val)},enc=(typeof _val==="object"?_val:_opts)?.encode||encodeURIComponent;if(!cookieNameRegExp.test(cookie.name))throw TypeError(`argument name is invalid: ${cookie.name}`);let value=cookie.value?enc(cookie.value):"";if(!cookieValueRegExp.test(value))throw TypeError(`argument val is invalid: ${cookie.value}`);let str=cookie.name+"="+value;if(cookie.maxAge!==void 0){if(!Number.isInteger(cookie.maxAge))throw TypeError(`option maxAge is invalid: ${cookie.maxAge}`);str+="; Max-Age="+cookie.maxAge}if(cookie.domain){if(!domainValueRegExp.test(cookie.domain))throw TypeError(`option domain is invalid: ${cookie.domain}`);str+="; Domain="+cookie.domain}if(cookie.path){if(!pathValueRegExp.test(cookie.path))throw TypeError(`option path is invalid: ${cookie.path}`);str+="; Path="+cookie.path}if(cookie.expires){if(!isDate(cookie.expires)||!Number.isFinite(cookie.expires.valueOf()))throw TypeError(`option expires is invalid: ${cookie.expires}`);str+="; Expires="+cookie.expires.toUTCString()}if(cookie.httpOnly)str+="; HttpOnly";if(cookie.secure)str+="; Secure";if(cookie.partitioned)str+="; Partitioned";if(cookie.priority)switch(typeof cookie.priority==="string"?cookie.priority.toLowerCase():void 0){case"low":str+="; Priority=Low";break;case"medium":str+="; Priority=Medium";break;case"high":str+="; Priority=High";break;default:throw TypeError(`option priority is invalid: ${cookie.priority}`)}if(cookie.sameSite)switch(typeof cookie.sameSite==="string"?cookie.sameSite.toLowerCase():cookie.sameSite){case!0:case"strict":str+="; SameSite=Strict";break;case"lax":str+="; SameSite=Lax";break;case"none":str+="; SameSite=None";break;default:throw TypeError(`option sameSite is invalid: ${cookie.sameSite}`)}return str}function parseSetCookie(str,options){let dec=options?.decode||decode,len=str.length,endIdx=endIndex(str,0,len),eqIdx=eqIndex(str,0,endIdx),setCookie=eqIdx===-1?{name:"",value:dec(valueSlice(str,0,endIdx))}:{name:valueSlice(str,0,eqIdx),value:dec(valueSlice(str,eqIdx+1,endIdx))},index=endIdx+1;while(index<len){let endIdx2=endIndex(str,index,len),eqIdx2=eqIndex(str,index,endIdx2),attr=eqIdx2===-1?valueSlice(str,index,endIdx2):valueSlice(str,index,eqIdx2),val=eqIdx2===-1?void 0:valueSlice(str,eqIdx2+1,endIdx2);switch(attr.toLowerCase()){case"httponly":setCookie.httpOnly=!0;break;case"secure":setCookie.secure=!0;break;case"partitioned":setCookie.partitioned=!0;break;case"domain":setCookie.domain=val;break;case"path":setCookie.path=val;break;case"max-age":if(val&&maxAgeRegExp.test(val))setCookie.maxAge=Number(val);break;case"expires":if(!val)break;let date2=new Date(val);if(Number.isFinite(date2.valueOf()))setCookie.expires=date2;break;case"priority":if(!val)break;let priority=val.toLowerCase();if(priority==="low"||priority==="medium"||priority==="high")setCookie.priority=priority;break;case"samesite":if(!val)break;let sameSite=val.toLowerCase();if(sameSite==="lax"||sameSite==="strict"||sameSite==="none")setCookie.sameSite=sameSite;break}index=endIdx2+1}return setCookie}function endIndex(str,min,len){let index=str.indexOf(";",min);return index===-1?len:index}function eqIndex(str,min,max){let index=str.indexOf("=",min);return index<max?index:-1}function valueSlice(str,min,max){let start=min,end=max;do{let code=str.charCodeAt(start);if(code!==32&&code!==9)break}while(++start<end);while(end>start){let code=str.charCodeAt(end-1);if(code!==32&&code!==9)break;end--}return str.slice(start,end)}function decode(str){if(str.indexOf("%")===-1)return str;try{return decodeURIComponent(str)}catch(e){return str}}function isDate(val){return __toString.call(val)==="[object Date]"}});var Y=(v,b)=>{let A=b?.length?{}:null;if(A)for(let Q of b)A[Q.part.charCodeAt(0)]=Q;return{part:v,store:null,inert:A,params:null,wildcardStore:null}},k=(v,b)=>({...v,part:b}),T=(v)=>({name:v,store:null,inert:null});class _{config;root={};history=[];deferred=[];constructor(v={}){if(this.config=v,v.lazy)this.find=this.lazyFind;if(v.onParam&&!Array.isArray(v.onParam))this.config.onParam=[this.config.onParam]}static regex={static:/:.+?(?=\/|$)/,params:/:.+?(?=\/|$)/g,optionalParams:/(\/:\w+\?)/g};lazyFind=(v,b)=>{if(!this.config.lazy)return this.find;return this.build(),this.find(v,b)};build(){if(!this.config.lazy)return;for(let[v,b,A]of this.deferred)this.add(v,b,A,{lazy:!1,ignoreHistory:!0});this.deferred=[],this.find=(v,b)=>{let A=this.root[v];if(!A)return null;return $(b,b.length,A,0,this.config.onParam)}}add(v,b,A,{ignoreError:Q=!1,ignoreHistory:O=!1,lazy:V=this.config.lazy}={}){if(V)return this.find=this.lazyFind,this.deferred.push([v,b,A]),A;if(typeof b!=="string")throw TypeError("Route path must be a string");if(b==="")b="/";else if(b[0]!=="/")b=`/${b}`;let X=b[b.length-1]==="*",J=b.match(_.regex.optionalParams);if(J){let F=b.replaceAll("?","");this.add(v,F,A,{ignoreError:Q,ignoreHistory:O,lazy:V});for(let B=0;B<J.length;B++){let D=b.replace(J[B],"");this.add(v,D,A,{ignoreError:!0,ignoreHistory:O,lazy:V})}return A}if(J)b=b.replaceAll("?","");if(this.history.find(([F,B,D])=>F===v&&B===b))return A;if(X||J&&b.charCodeAt(b.length-1)===63)b=b.slice(0,-1);if(!O)this.history.push([v,b,A]);let K=b.split(_.regex.static),G=b.match(_.regex.params)||[];if(K[K.length-1]==="")K.pop();let q;if(!this.root[v])q=this.root[v]=Y("/");else q=this.root[v];let U=0;for(let F=0;F<K.length;++F){let B=K[F];if(F>0){let D=G[U++].slice(1);if(q.params===null)q.params=T(D);else if(q.params.name!==D)if(Q)return A;else throw Error(`Cannot create route "${b}" with parameter "${D}" because a route already exists with a different parameter name ("${q.params.name}") in the same location`);let S=q.params;if(S.inert===null){q=S.inert=Y(B);continue}q=S.inert}for(let D=0;;){if(D===B.length){if(D<q.part.length){let S=k(q,q.part.slice(D));Object.assign(q,Y(B,[S]))}break}if(D===q.part.length){if(q.inert===null)q.inert={};let S=q.inert[B.charCodeAt(D)];if(S){q=S,B=B.slice(D),D=0;continue}let Z=Y(B.slice(D));q.inert[B.charCodeAt(D)]=Z,q=Z;break}if(B[D]!==q.part[D]){let S=k(q,q.part.slice(D)),Z=Y(B.slice(D));Object.assign(q,Y(q.part.slice(0,D),[S,Z])),q=Z;break}++D}}if(U<G.length){let B=G[U].slice(1);if(q.params===null)q.params=T(B);else if(q.params.name!==B)if(Q)return A;else throw Error(`Cannot create route "${b}" with parameter "${B}" because a route already exists with a different parameter name ("${q.params.name}") in the same location`);if(q.params.store===null)q.params.store=A;return q.params.store}if(X){if(q.wildcardStore===null)q.wildcardStore=A;return q.wildcardStore}if(q.store===null)q.store=A;return q.store}find(v,b){let A=this.root[v];if(!A)return null;return $(b,b.length,A,0,this.config.onParam)}}var $=(v,b,A,Q,O)=>{let V=A.part,X=V.length,J=Q+X;if(X>1){if(J>b)return null;if(X<15){for(let K=1,G=Q+1;K<X;++K,++G)if(V.charCodeAt(K)!==v.charCodeAt(G))return null}else if(v.slice(Q,J)!==V)return null}if(J===b){if(A.store!==null)return{store:A.store,params:{}};if(A.wildcardStore!==null)return{store:A.wildcardStore,params:{"*":""}};return null}if(A.inert!==null){let K=A.inert[v.charCodeAt(J)];if(K!==void 0){let G=$(v,b,K,J,O);if(G!==null)return G}}if(A.params!==null){let{store:K,name:G,inert:q}=A.params,U=v.indexOf("/",J);if(U!==J){if(U===-1||U>=b){if(K!==null){let F={};if(F[G]=v.substring(J,b),O)for(let B=0;B<O.length;B++){let D=O[B](F[G],G);if(D!==void 0)F[G]=D}return{store:K,params:F}}}else if(q!==null){let F=$(v,b,q,U,O);if(F!==null){if(F.params[G]=v.substring(J,U),O)for(let B=0;B<O.length;B++){let D=O[B](F.params[G],G);if(D!==void 0)F.params[G]=D}return F}}}}if(A.wildcardStore!==null)return{store:A.wildcardStore,params:{"*":v.substring(J,b)}};return null};var import_fast_decode_uri_component4=__toESM(require_fast_decode_uri_component(),1);import{Kind as Kind7}from"@sinclair/typebox";import{Type,Kind as Kind2}from"@sinclair/typebox";import{Kind,TypeRegistry,Unsafe}from"@sinclair/typebox";import{Value as Value2}from"@sinclair/typebox/value";import{TypeCompiler}from"@sinclair/typebox/compiler";var isBun=typeof Bun<"u";var mime={aac:"audio/aac",abw:"application/x-abiword",ai:"application/postscript",arc:"application/octet-stream",avi:"video/x-msvideo",azw:"application/vnd.amazon.ebook",bin:"application/octet-stream",bz:"application/x-bzip",bz2:"application/x-bzip2",csh:"application/x-csh",css:"text/css",csv:"text/csv",doc:"application/msword",dll:"application/octet-stream",eot:"application/vnd.ms-fontobject",epub:"application/epub+zip",gif:"image/gif",htm:"text/html",html:"text/html",ico:"image/x-icon",ics:"text/calendar",jar:"application/java-archive",jpeg:"image/jpeg",jpg:"image/jpeg",js:"application/javascript",json:"application/json",mid:"audio/midi",midi:"audio/midi",mp2:"audio/mpeg",mp3:"audio/mpeg",mp4:"video/mp4",mpa:"video/mpeg",mpe:"video/mpeg",mpeg:"video/mpeg",mpkg:"application/vnd.apple.installer+xml",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",oga:"audio/ogg",ogv:"video/ogg",ogx:"application/ogg",otf:"font/otf",png:"image/png",pdf:"application/pdf",ppt:"application/vnd.ms-powerpoint",rar:"application/x-rar-compressed",rtf:"application/rtf",sh:"application/x-sh",svg:"image/svg+xml",swf:"application/x-shockwave-flash",tar:"application/x-tar",tif:"image/tiff",tiff:"image/tiff",ts:"application/typescript",ttf:"font/ttf",txt:"text/plain",vsd:"application/vnd.visio",wav:"audio/x-wav",weba:"audio/webm",webm:"video/webm",webp:"image/webp",woff:"font/woff",woff2:"font/woff2",xhtml:"application/xhtml+xml",xls:"application/vnd.ms-excel",xlsx:"application/vnd.ms-excel",xlsx_OLD:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",xml:"application/xml",xul:"application/vnd.mozilla.xul+xml",zip:"application/zip","3gp":"video/3gpp","3gp_DOES_NOT_CONTAIN_VIDEO":"audio/3gpp","3gp2":"video/3gpp2","3gp2_DOES_NOT_CONTAIN_VIDEO":"audio/3gpp2","7z":"application/x-7z-compressed"},getFileExtension=(path)=>{let index=path.lastIndexOf(".");if(index===-1)return"";return path.slice(index+1)},file=(path)=>new ElysiaFile(path),createReadStream,stat;class ElysiaFile{path;value;stats;constructor(path){this.path=path;if(isBun)this.value=Bun.file(path);else{if(!createReadStream||!stat){if(typeof window<"u"){console.warn("Browser environment does not support file");return}let warnMissing=(name)=>console.warn(Error(`[elysia] \`file\` require \`fs${name?"."+name:""}\` ${name?.includes(".")?"module ":""}which is not available in this environment`));if(typeof process>"u"||typeof process.getBuiltinModule!=="function"){warnMissing();return}let fs=process.getBuiltinModule("fs");if(!fs){warnMissing();return}if(typeof fs.createReadStream!=="function"){warnMissing();return}if(typeof fs.promises?.stat!=="function"){warnMissing();return}createReadStream=fs.createReadStream,stat=fs.promises.stat}this.value=(()=>createReadStream(path))(),this.stats=stat(path)}}get type(){return mime[getFileExtension(this.path)]||"application/octet-stream"}get length(){if(isBun)return this.value.size;return this.stats?.then((x)=>x.size)??0}}import{Value}from"@sinclair/typebox/value";var hasHeaderShorthand="toJSON"in new Headers,replaceUrlPath=(url,pathname)=>{let urlObject=new URL(url);return urlObject.pathname=pathname,urlObject.toString()},isClass=(v)=>typeof v==="function"&&/^\s*class\s+/.test(v.toString())||v.toString&&v.toString().startsWith("[object ")&&v.toString()!=="[object Object]"||isNotEmpty(Object.getPrototypeOf(v)),isObject=(item)=>item&&typeof item==="object"&&!Array.isArray(item),mergeDeep=(target,source,options)=>{let skipKeys=options?.skipKeys,override=options?.override??!0,mergeArray=options?.mergeArray??!1,seen=options?.seen??new WeakSet;if(!isObject(target)||!isObject(source))return target;if(seen.has(source))return target;seen.add(source);for(let[key,value]of Object.entries(source)){if(skipKeys?.includes(key)||["__proto__","constructor","prototype"].includes(key))continue;if(mergeArray&&Array.isArray(value)){target[key]=Array.isArray(target[key])?[...target[key],...value]:target[key]=value;continue}if(!isObject(value)||!(key in target)||isClass(value)){if((override||!(key in target))&&!Object.isFrozen(target))try{target[key]=value}catch{}continue}if(!Object.isFrozen(target[key]))try{target[key]=mergeDeep(target[key],value,{skipKeys,override,mergeArray,seen})}catch{}}return seen.delete(source),target},mergeCookie=(a,b)=>{let v=mergeDeep(Object.assign({},a),b,{skipKeys:["properties"],mergeArray:!1});if(v.properties)delete v.properties;return v},mergeObjectArray=(a,b)=>{if(!b)return a;let array=[],checksums=[];if(a){if(!Array.isArray(a))a=[a];for(let item of a)if(array.push(item),item.checksum)checksums.push(item.checksum)}if(b){if(!Array.isArray(b))b=[b];for(let item of b)if(!checksums.includes(item.checksum))array.push(item)}return array},primitiveHooks=["start","request","parse","transform","resolve","beforeHandle","afterHandle","mapResponse","afterResponse","trace","error","stop","body","headers","params","query","response","type","detail"],primitiveHookMap=primitiveHooks.reduce((acc,x)=>(acc[x]=!0,acc),{}),isRecordNumber=(x)=>typeof x==="object"&&Object.keys(x).every((x2)=>!isNaN(+x2)),mergeResponse=(a,b)=>{if(isRecordNumber(a)&&isRecordNumber(b))return Object.assign({},a,b);else if(a&&!isRecordNumber(a)&&isRecordNumber(b))return Object.assign({200:a},b);return b??a},mergeSchemaValidator=(a,b)=>{if(!a&&!b)return{body:void 0,headers:void 0,params:void 0,query:void 0,cookie:void 0,response:void 0};return{body:b?.body??a?.body,headers:b?.headers??a?.headers,params:b?.params??a?.params,query:b?.query??a?.query,cookie:b?.cookie??a?.cookie,response:mergeResponse(a?.response,b?.response)}},mergeHook=(a,b)=>{if(!b)return a??{};if(!a)return b??{};if(!Object.values(b).find((x)=>x!==void 0&&x!==null))return{...a};let hook={...a,...b,body:b.body??a.body,headers:b.headers??a.headers,params:b.params??a.params,query:b.query??a.query,cookie:b.cookie??a.cookie,response:mergeResponse(a.response,b.response),type:a.type||b.type,detail:mergeDeep(b.detail??{},a.detail??{}),parse:mergeObjectArray(a.parse,b.parse),transform:mergeObjectArray(a.transform,b.transform),beforeHandle:mergeObjectArray(mergeObjectArray(fnToContainer(a.resolve,"resolve"),a.beforeHandle),mergeObjectArray(fnToContainer(b.resolve,"resolve"),b.beforeHandle)),afterHandle:mergeObjectArray(a.afterHandle,b.afterHandle),mapResponse:mergeObjectArray(a.mapResponse,b.mapResponse),afterResponse:mergeObjectArray(a.afterResponse,b.afterResponse),trace:mergeObjectArray(a.trace,b.trace),error:mergeObjectArray(a.error,b.error),standaloneSchema:a.standaloneSchema||b.standaloneSchema?a.standaloneSchema&&!b.standaloneSchema?a.standaloneSchema:b.standaloneSchema&&!a.standaloneSchema?b.standaloneSchema:[...a.standaloneSchema??[],...b.standaloneSchema??[]]:void 0};if(hook.resolve)delete hook.resolve;return hook},lifeCycleToArray=(a)=>{if(a.parse&&!Array.isArray(a.parse))a.parse=[a.parse];if(a.transform&&!Array.isArray(a.transform))a.transform=[a.transform];if(a.afterHandle&&!Array.isArray(a.afterHandle))a.afterHandle=[a.afterHandle];if(a.mapResponse&&!Array.isArray(a.mapResponse))a.mapResponse=[a.mapResponse];if(a.afterResponse&&!Array.isArray(a.afterResponse))a.afterResponse=[a.afterResponse];if(a.trace&&!Array.isArray(a.trace))a.trace=[a.trace];if(a.error&&!Array.isArray(a.error))a.error=[a.error];let beforeHandle=[];if(a.resolve)beforeHandle=fnToContainer(Array.isArray(a.resolve)?a.resolve:[a.resolve],"resolve"),delete a.resolve;if(a.beforeHandle)if(beforeHandle.length)beforeHandle=beforeHandle.concat(Array.isArray(a.beforeHandle)?a.beforeHandle:[a.beforeHandle]);else beforeHandle=Array.isArray(a.beforeHandle)?a.beforeHandle:[a.beforeHandle];if(beforeHandle.length)a.beforeHandle=beforeHandle;return a},isBun2=typeof Bun<"u",hasBunHash=isBun2&&typeof Bun.hash==="function",hasSetImmediate=typeof setImmediate==="function",checksum=(s)=>{let h=9;for(let i=0;i<s.length;)h=Math.imul(h^s.charCodeAt(i++),387420489);return h=h^h>>>9},injectChecksum=(checksum2,x)=>{if(!x)return;if(!Array.isArray(x)){let fn=x;if(checksum2&&!fn.checksum)fn.checksum=checksum2;if(fn.scope==="scoped")fn.scope="local";return fn}let fns=[...x];for(let fn of fns){if(checksum2&&!fn.checksum)fn.checksum=checksum2;if(fn.scope==="scoped")fn.scope="local"}return fns},mergeLifeCycle=(a,b,checksum2)=>{return{start:mergeObjectArray(a.start,injectChecksum(checksum2,b?.start)),request:mergeObjectArray(a.request,injectChecksum(checksum2,b?.request)),parse:mergeObjectArray(a.parse,injectChecksum(checksum2,b?.parse)),transform:mergeObjectArray(a.transform,injectChecksum(checksum2,b?.transform)),beforeHandle:mergeObjectArray(mergeObjectArray(fnToContainer(a.resolve,"resolve"),a.beforeHandle),injectChecksum(checksum2,mergeObjectArray(fnToContainer(b?.resolve,"resolve"),b?.beforeHandle))),afterHandle:mergeObjectArray(a.afterHandle,injectChecksum(checksum2,b?.afterHandle)),mapResponse:mergeObjectArray(a.mapResponse,injectChecksum(checksum2,b?.mapResponse)),afterResponse:mergeObjectArray(a.afterResponse,injectChecksum(checksum2,b?.afterResponse)),trace:mergeObjectArray(a.trace,injectChecksum(checksum2,b?.trace)),error:mergeObjectArray(a.error,injectChecksum(checksum2,b?.error)),stop:mergeObjectArray(a.stop,injectChecksum(checksum2,b?.stop))}},asHookType=(fn,inject,{skipIfHasType=!1})=>{if(!fn)return fn;if(!Array.isArray(fn)){if(skipIfHasType)fn.scope??=inject;else fn.scope=inject;return fn}for(let x of fn)if(skipIfHasType)x.scope??=inject;else x.scope=inject;return fn},filterGlobal=(fn)=>{if(!fn)return fn;if(!Array.isArray(fn))switch(fn.scope){case"global":case"scoped":return{...fn};default:return{fn}}let array=[];for(let x of fn)switch(x.scope){case"global":case"scoped":array.push({...x});break}return array},filterGlobalHook=(hook)=>{return{...hook,type:hook?.type,detail:hook?.detail,parse:filterGlobal(hook?.parse),transform:filterGlobal(hook?.transform),beforeHandle:filterGlobal(hook?.beforeHandle),afterHandle:filterGlobal(hook?.afterHandle),mapResponse:filterGlobal(hook?.mapResponse),afterResponse:filterGlobal(hook?.afterResponse),error:filterGlobal(hook?.error),trace:filterGlobal(hook?.trace)}},StatusMap={Continue:100,"Switching Protocols":101,Processing:102,"Early Hints":103,OK:200,Created:201,Accepted:202,"Non-Authoritative Information":203,"No Content":204,"Reset Content":205,"Partial Content":206,"Multi-Status":207,"Already Reported":208,"Multiple Choices":300,"Moved Permanently":301,Found:302,"See Other":303,"Not Modified":304,"Temporary Redirect":307,"Permanent Redirect":308,"Bad Request":400,Unauthorized:401,"Payment Required":402,Forbidden:403,"Not Found":404,"Method Not Allowed":405,"Not Acceptable":406,"Proxy Authentication Required":407,"Request Timeout":408,Conflict:409,Gone:410,"Length Required":411,"Precondition Failed":412,"Payload Too Large":413,"URI Too Long":414,"Unsupported Media Type":415,"Range Not Satisfiable":416,"Expectation Failed":417,"I'm a teapot":418,"Enhance Your Calm":420,"Misdirected Request":421,"Unprocessable Content":422,Locked:423,"Failed Dependency":424,"Too Early":425,"Upgrade Required":426,"Precondition Required":428,"Too Many Requests":429,"Request Header Fields Too Large":431,"Unavailable For Legal Reasons":451,"Internal Server Error":500,"Not Implemented":501,"Bad Gateway":502,"Service Unavailable":503,"Gateway Timeout":504,"HTTP Version Not Supported":505,"Variant Also Negotiates":506,"Insufficient Storage":507,"Loop Detected":508,"Not Extended":510,"Network Authentication Required":511},InvertedStatusMap=Object.fromEntries(Object.entries(StatusMap).map(([k2,v])=>[v,k2]));function removeTrailingEquals(digest){let trimmedDigest=digest;while(trimmedDigest.endsWith("="))trimmedDigest=trimmedDigest.slice(0,-1);return trimmedDigest}var encoder=new TextEncoder,signCookie=async(val,secret)=>{if(typeof val==="object")val=JSON.stringify(val);else if(typeof val!=="string")val=val+"";if(secret===null)throw TypeError("Secret key must be provided.");let secretKey=await crypto.subtle.importKey("raw",encoder.encode(secret),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),hmacBuffer=await crypto.subtle.sign("HMAC",secretKey,encoder.encode(val));return val+"."+removeTrailingEquals(Buffer.from(hmacBuffer).toString("base64"))},constantTimeEqual=typeof crypto?.timingSafeEqual==="function"?(a,b)=>{let ab=Buffer.from(a,"utf8"),bb=Buffer.from(b,"utf8");if(ab.length!==bb.length)return!1;return crypto.timingSafeEqual(ab,bb)}:(a,b)=>a===b,unsignCookie=async(input,secret)=>{if(typeof input!=="string")throw TypeError("Signed cookie string must be provided.");if(secret===null)throw TypeError("Secret key must be provided.");let dot=input.lastIndexOf(".");if(dot<=0)return!1;let tentativeValue=input.slice(0,dot),expectedInput=await signCookie(tentativeValue,secret);return constantTimeEqual(expectedInput,input)?tentativeValue:!1},insertStandaloneValidator=(hook,name,value)=>{if(!hook.standaloneValidator?.length||!Array.isArray(hook.standaloneValidator)){hook.standaloneValidator=[{[name]:value}];return}let last=hook.standaloneValidator[hook.standaloneValidator.length-1];if(name in last)hook.standaloneValidator.push({[name]:value});else last[name]=value},parseNumericString=(message)=>{if(typeof message==="number")return message;if(message.length<16){if(message.trim().length===0)return null;let length=Number(message);if(Number.isNaN(length))return null;return length}if(message.length===16){if(message.trim().length===0)return null;let number=Number(message);if(Number.isNaN(number)||number.toString()!==message)return null;return number}return null},isNumericString=(message)=>parseNumericString(message)!==null;class PromiseGroup{onError;onFinally;root=null;promises=[];constructor(onError=console.error,onFinally=()=>{}){this.onError=onError;this.onFinally=onFinally}get size(){return this.promises.length}add(promise){if(this.promises.push(promise),this.root||=this.drain(),this.promises.length===1)this.then(this.onFinally);return promise}async drain(){while(this.promises.length>0){try{await this.promises[0]}catch(error){this.onError(error)}this.promises.shift()}this.root=null}then(onfulfilled,onrejected){return(this.root??Promise.resolve()).then(onfulfilled,onrejected)}}var fnToContainer=(fn,subType)=>{if(!fn)return fn;if(!Array.isArray(fn)){if(typeof fn==="function"||typeof fn==="string")return subType?{fn,subType}:{fn};else if("fn"in fn)return fn}let fns=[];for(let x of fn)if(typeof x==="function"||typeof x==="string")fns.push(subType?{fn:x,subType}:{fn:x});else if("fn"in x)fns.push(x);return fns},localHookToLifeCycleStore=(a)=>{if(a.start)a.start=fnToContainer(a.start);if(a.request)a.request=fnToContainer(a.request);if(a.parse)a.parse=fnToContainer(a.parse);if(a.transform)a.transform=fnToContainer(a.transform);if(a.beforeHandle)a.beforeHandle=fnToContainer(a.beforeHandle);if(a.afterHandle)a.afterHandle=fnToContainer(a.afterHandle);if(a.mapResponse)a.mapResponse=fnToContainer(a.mapResponse);if(a.afterResponse)a.afterResponse=fnToContainer(a.afterResponse);if(a.trace)a.trace=fnToContainer(a.trace);if(a.error)a.error=fnToContainer(a.error);if(a.stop)a.stop=fnToContainer(a.stop);return a},lifeCycleToFn=(a)=>{let lifecycle=Object.create(null);if(a.start?.map)lifecycle.start=a.start.map((x)=>x.fn);if(a.request?.map)lifecycle.request=a.request.map((x)=>x.fn);if(a.parse?.map)lifecycle.parse=a.parse.map((x)=>x.fn);if(a.transform?.map)lifecycle.transform=a.transform.map((x)=>x.fn);if(a.beforeHandle?.map)lifecycle.beforeHandle=a.beforeHandle.map((x)=>x.fn);if(a.afterHandle?.map)lifecycle.afterHandle=a.afterHandle.map((x)=>x.fn);if(a.mapResponse?.map)lifecycle.mapResponse=a.mapResponse.map((x)=>x.fn);if(a.afterResponse?.map)lifecycle.afterResponse=a.afterResponse.map((x)=>x.fn);if(a.error?.map)lifecycle.error=a.error.map((x)=>x.fn);if(a.stop?.map)lifecycle.stop=a.stop.map((x)=>x.fn);if(a.trace?.map)lifecycle.trace=a.trace.map((x)=>x.fn);else lifecycle.trace=[];return lifecycle},cloneInference=(inference)=>({body:inference.body,cookie:inference.cookie,headers:inference.headers,query:inference.query,set:inference.set,server:inference.server,path:inference.path,route:inference.route,url:inference.url}),redirect=(url,status=302)=>Response.redirect(url,status),ELYSIA_FORM_DATA=Symbol("ElysiaFormData"),ELYSIA_REQUEST_ID=Symbol("ElysiaRequestId"),form=(items)=>{let formData=new FormData;if(formData[ELYSIA_FORM_DATA]={},items)for(let[key,value]of Object.entries(items)){if(Array.isArray(value)){formData[ELYSIA_FORM_DATA][key]=[];for(let v of value){if(value instanceof File)formData.append(key,value,value.name);else if(value instanceof ElysiaFile)formData.append(key,value.value,value.value?.name);else formData.append(key,value);formData[ELYSIA_FORM_DATA][key].push(value)}continue}if(value instanceof File)formData.append(key,value,value.name);else if(value instanceof ElysiaFile)formData.append(key,value.value,value.value?.name);else formData.append(key,value);formData[ELYSIA_FORM_DATA][key]=value}return formData},randomId=typeof crypto>"u"?()=>{let result="",characters="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",charactersLength=characters.length;for(let i=0;i<16;i++)result+=characters.charAt(Math.floor(Math.random()*charactersLength));return result}:()=>{let uuid=crypto.randomUUID();return uuid.slice(0,8)+uuid.slice(24,32)},deduplicateChecksum=(array)=>{if(!array.length)return[];let hashes=[];for(let i=0;i<array.length;i++){let item=array[i];if(item.checksum){if(hashes.includes(item.checksum))array.splice(i,1),i--;hashes.push(item.checksum)}}return array},promoteEvent=(events,as="scoped")=>{if(!events)return;if(as==="scoped"){for(let event of events)if("scope"in event&&event.scope==="local")event.scope="scoped";return}for(let event of events)if("scope"in event)event.scope="global"},getLoosePath=(path)=>{if(path.charCodeAt(path.length-1)===47)return path.slice(0,path.length-1);return path+"/"},isNotEmpty=(obj)=>{if(!obj)return!1;for(let _2 in obj)return!0;return!1},encodePath=(path,{dynamic=!1}={})=>{let encoded=encodeURIComponent(path).replace(/%2F/g,"/");if(dynamic)encoded=encoded.replace(/%3A/g,":").replace(/%3F/g,"?");return encoded},supportPerMethodInlineHandler=(()=>{if(typeof Bun>"u")return!0;if(Bun.semver?.satisfies?.(Bun.version,">=1.2.14"))return!0;return!1})(),sse=(_payload)=>{if(_payload instanceof ReadableStream)return _payload.sse=!0,_payload;let payload=typeof _payload==="string"?{data:_payload}:_payload;return payload.sse=!0,payload.toSSE=()=>{let payloadString="";if(payload.id!==void 0&&payload.id!==null)payloadString+=`id: ${payload.id}
`;if(payload.event)payloadString+=`event: ${payload.event}
`;if(payload.retry!==void 0)payloadString+=`retry: ${payload.retry}
`;if(payload.data===null)payloadString+=`data: null
`;else if(typeof payload.data==="string")payloadString+=`data: ${payload.data}
`;else if(typeof payload.data==="object")payloadString+=`data: ${JSON.stringify(payload.data)}
`;if(payloadString)payloadString+=`
`;return payloadString},payload};async function getResponseLength(response){if(response.bodyUsed||!response.body)return 0;let length=0,reader=response.body.getReader();while(!0){let{done,value}=await reader.read();if(done)break;length+=value.byteLength}return length}var emptySchema={headers:!0,cookie:!0,query:!0,params:!0,body:!0,response:!0};var env=typeof Bun<"u"?Bun.env:typeof process<"u"?process?.env:void 0,ERROR_CODE=Symbol("ElysiaErrorCode"),isProduction=(env?.NODE_ENV??env?.ENV)==="production",emptyHttpStatus={101:void 0,204:void 0,205:void 0,304:void 0,307:void 0,308:void 0};class ElysiaCustomStatusResponse{code;response;constructor(code,response){let res=response??(code in InvertedStatusMap?InvertedStatusMap[code]:code);if(this.code=StatusMap[code]??code,code in emptyHttpStatus)this.response=void 0;else this.response=res}}var status=(code,response)=>new ElysiaCustomStatusResponse(code,response);class InternalServerError extends Error{code="INTERNAL_SERVER_ERROR";status=500;constructor(message){super(message??"INTERNAL_SERVER_ERROR")}}class NotFoundError extends Error{code="NOT_FOUND";status=404;constructor(message){super(message??"NOT_FOUND")}}class ParseError extends Error{code="PARSE";status=400;constructor(cause){super("Bad Request",{cause})}}class InvalidCookieSignature extends Error{key;code="INVALID_COOKIE_SIGNATURE";status=400;constructor(key,message){super(message??`"${key}" has invalid cookie signature`);this.key=key}}var mapValueError=(error)=>{if(!error)return{summary:void 0};let{message,path,value,type}=error;if(Array.isArray(path))path=path[0];let property=typeof path==="string"?path.slice(1).replaceAll("/","."):"unknown",isRoot=path==="";switch(type){case 42:return{...error,summary:isRoot?"Value should not be provided":`Property '${property}' should not be provided`};case 45:return{...error,summary:isRoot?"Value is missing":`Property '${property}' is missing`};case 50:let quoteIndex=message.indexOf("'"),format=message.slice(quoteIndex+1,message.indexOf("'",quoteIndex+1));return{...error,summary:isRoot?"Value should be an email":`Property '${property}' should be ${format}`};case 54:return{...error,summary:`${message.slice(0,9).trim()} property '${property}' to be ${message.slice(8).trim()} but found: ${value}`};case 62:let union=error.schema.anyOf.map((x)=>`'${x?.format??x.type}'`).join(", ");return{...error,summary:isRoot?`Value should be one of ${union}`:`Property '${property}' should be one of: ${union}`};default:return{summary:message,...error}}};class InvalidFileType extends Error{property;expected;message;code="INVALID_FILE_TYPE";status=422;constructor(property,expected,message=`"${property}" has invalid file type`){super(message);this.property=property;this.expected=expected;this.message=message;Object.setPrototypeOf(this,InvalidFileType.prototype)}toResponse(headers){if(isProduction)return new Response(JSON.stringify({type:"validation",on:"body"}),{status:422,headers:{...headers,"content-type":"application/json"}});return new Response(JSON.stringify({type:"validation",on:"body",summary:"Invalid file type",message:this.message,property:this.property,expected:this.expected}),{status:422,headers:{...headers,"content-type":"application/json"}})}}class ValidationError extends Error{type;validator;value;allowUnsafeValidationDetails;code="VALIDATION";status=422;valueError;get messageValue(){return this.valueError}expected;customError;constructor(type,validator,value,allowUnsafeValidationDetails=!1,errors){let message="",error,expected,customError;if(validator?.provider==="standard"||"~standard"in validator||validator.schema&&"~standard"in validator.schema){let standard=("~standard"in validator?validator:validator.schema)["~standard"];if(error=(errors??standard.validate(value).issues)?.[0],isProduction&&!allowUnsafeValidationDetails)message=JSON.stringify({type:"validation",on:type,found:value});else message=JSON.stringify({type:"validation",on:type,property:error.path?.[0]||"root",message:error?.message,summary:error?.problem,expected,found:value,errors},null,2);customError=error?.message}else{if(value&&typeof value==="object"&&value instanceof ElysiaCustomStatusResponse)value=value.response;error=errors?.First()??("Errors"in validator?validator.Errors(value).First():Value.Errors(validator,value).First());let accessor=error?.path||"root",schema=validator?.schema??validator;if(!isProduction&&!allowUnsafeValidationDetails)try{expected=Value.Create(schema)}catch(error2){expected={type:"Could not create expected value",message:error2?.message,error:error2}}if(customError=error?.schema?.message||error?.schema?.error!==void 0?typeof error.schema.error==="function"?error.schema.error(isProduction&&!allowUnsafeValidationDetails?{type:"validation",on:type,found:value}:{type:"validation",on:type,value,property:accessor,message:error?.message,summary:mapValueError(error).summary,found:value,expected,errors:"Errors"in validator?[...validator.Errors(value)].map(mapValueError):[...Value.Errors(validator,value)].map(mapValueError)},validator):error.schema.error:void 0,customError!==void 0)message=typeof customError==="object"?JSON.stringify(customError):customError+"";else if(isProduction&&!allowUnsafeValidationDetails)message=JSON.stringify({type:"validation",on:type,found:value});else message=JSON.stringify({type:"validation",on:type,property:accessor,message:error?.message,summary:mapValueError(error).summary,expected,found:value,errors:"Errors"in validator?[...validator.Errors(value)].map(mapValueError):[...Value.Errors(validator,value)].map(mapValueError)},null,2)}super(message);this.type=type;this.validator=validator;this.value=value;this.allowUnsafeValidationDetails=allowUnsafeValidationDetails;this.valueError=error,this.expected=expected,this.customError=customError,Object.setPrototypeOf(this,ValidationError.prototype)}get all(){if(this.validator?.provider==="standard"||"~standard"in this.validator||"schema"in this.validator&&this.validator.schema&&"~standard"in this.validator.schema)return("~standard"in this.validator?this.validator:this.validator.schema)["~standard"].validate(this.value).issues?.map((issue)=>({summary:issue.message,path:issue.path?.join(".")||"root",message:issue.message,value:this.value}))||[];return"Errors"in this.validator?[...this.validator.Errors(this.value)].map(mapValueError):[...Value.Errors(this.validator,this.value)].map(mapValueError)}static simplifyModel(validator){let model="schema"in validator?validator.schema:validator;try{return Value.Create(model)}catch{return model}}get model(){if("~standard"in this.validator)return this.validator;return ValidationError.simplifyModel(this.validator)}toResponse(headers){return new Response(this.message,{status:400,headers:{...headers,"content-type":"application/json"}})}detail(message,allowUnsafeValidatorDetails=this.allowUnsafeValidationDetails){if(!this.customError)return this.message;let value=this.value,expected=this.expected,errors=this.all;return isProduction&&!allowUnsafeValidatorDetails?{type:"validation",on:this.type,found:value,message}:{type:"validation",on:this.type,property:this.valueError?.path||"root",message,summary:mapValueError(this.valueError).summary,found:value,expected,errors}}}var tryParse=(v,schema)=>{try{return JSON.parse(v)}catch{throw new ValidationError("property",schema,v)}};function createType(kind,func){if(!TypeRegistry.Has(kind))TypeRegistry.Set(kind,func);return(options={})=>Unsafe({...options,[Kind]:kind})}var compile=(schema)=>{try{let compiler=TypeCompiler.Compile(schema);return compiler.Create=()=>Value2.Create(schema),compiler.Error=(v)=>new ValidationError("property",schema,v,compiler.Errors(v)),compiler}catch{return{Check:(v)=>Value2.Check(schema,v),CheckThrow:(v)=>{if(!Value2.Check(schema,v))throw new ValidationError("property",schema,v,Value2.Errors(schema,v))},Decode:(v)=>Value2.Decode(schema,v),Create:()=>Value2.Create(schema),Error:(v)=>new ValidationError("property",schema,v,Value2.Errors(schema,v))}}},parseFileUnit=(size)=>{if(typeof size==="string")switch(size.slice(-1)){case"k":return+size.slice(0,size.length-1)*1024;case"m":return+size.slice(0,size.length-1)*1048576;default:return+size}return size},checkFileExtension=(type,extension)=>{if(type.startsWith(extension))return!0;return extension.charCodeAt(extension.length-1)===42&&extension.charCodeAt(extension.length-2)===47&&type.startsWith(extension.slice(0,-1))},_fileTypeFromBlobWarn=!1,warnIfFileTypeIsNotInstalled=()=>{if(!_fileTypeFromBlobWarn)console.warn("[Elysia] Attempt to validate file type without 'file-type'. This may lead to security risks. We recommend installing 'file-type' to properly validate file extension."),_fileTypeFromBlobWarn=!0},loadFileType=async()=>import("file-type").then((x)=>{return _fileTypeFromBlob=x.fileTypeFromBlob,_fileTypeFromBlob}).catch(warnIfFileTypeIsNotInstalled),_fileTypeFromBlob,fileTypeFromBlob=(file2)=>{if(_fileTypeFromBlob)return _fileTypeFromBlob(file2);return loadFileType().then((mod)=>{if(mod)return mod(file2)})},fileType=async(file2,extension,name=file2?.name??"")=>{if(Array.isArray(file2))return await Promise.all(file2.map((f)=>fileType(f,extension,name))),!0;if(!file2)return!1;let result=await fileTypeFromBlob(file2);if(!result)throw new InvalidFileType(name,extension);if(typeof extension==="string"){if(!checkFileExtension(result.mime,extension))throw new InvalidFileType(name,extension)}for(let i=0;i<extension.length;i++)if(checkFileExtension(result.mime,extension[i]))return!0;throw new InvalidFileType(name,extension)},validateFile=(options,value)=>{if(value instanceof ElysiaFile)return!0;if(!(value instanceof Blob))return!1;if(options.minSize&&value.size<parseFileUnit(options.minSize))return!1;if(options.maxSize&&value.size>parseFileUnit(options.maxSize))return!1;if(options.extension){if(typeof options.extension==="string")return checkFileExtension(value.type,options.extension);for(let i=0;i<options.extension.length;i++)if(checkFileExtension(value.type,options.extension[i]))return!0;return!1}return!0},validationDetail=(message)=>(error)=>({...error,message});import{FormatRegistry}from"@sinclair/typebox";var fullFormats={date,time:getTime(!0),"date-time":getDateTime(!0),"iso-time":getTime(!1),"iso-date-time":getDateTime(!1),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri,"uri-reference":/^(?:[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|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\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})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\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})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\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,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?: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)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte,int32:{type:"number",validate:validateInt32},int64:{type:"number",validate:validateInt64},float:{type:"number",validate:validateNumber},double:{type:"number",validate:validateNumber},password:!0,binary:!0};function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var DATE=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,DAYS=[0,31,28,31,30,31,30,31,31,30,31,30,31];function date(str){let matches=DATE.exec(str);if(!matches)return!1;let year=+matches[1],month=+matches[2],day=+matches[3];return month>=1&&month<=12&&day>=1&&day<=(month===2&&isLeapYear(year)?29:DAYS[month])}var TIME=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function getTime(strictTimeZone){return function(str){let matches=TIME.exec(str);if(!matches)return!1;let hr=+matches[1],min=+matches[2],sec=+matches[3],tz=matches[4],tzSign=matches[5]==="-"?-1:1,tzH=+(matches[6]||0),tzM=+(matches[7]||0);if(tzH>23||tzM>59||strictTimeZone&&!tz)return!1;if(hr<=23&&min<=59&&sec<60)return!0;let utcMin=min-tzM*tzSign,utcHr=hr-tzH*tzSign-(utcMin<0?1:0);return(utcHr===23||utcHr===-1)&&(utcMin===59||utcMin===-1)&&sec<61}}var parseDateTimeEmptySpace=(str)=>{if(str.charCodeAt(str.length-6)===32)return str.slice(0,-6)+"+"+str.slice(-5);return str},DATE_TIME_SEPARATOR=/t|\s/i;function getDateTime(strictTimeZone){let time=getTime(strictTimeZone);return function(str){let dateTime=str.split(DATE_TIME_SEPARATOR);return dateTime.length===2&&date(dateTime[0])&&time(dateTime[1])}}var NOT_URI_FRAGMENT=/\/|:/,URI=/^(?:[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|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\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})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\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})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function uri(str){return NOT_URI_FRAGMENT.test(str)&&URI.test(str)}var BYTE=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function byte(str){return BYTE.lastIndex=0,BYTE.test(str)}var MIN_INT32=-2147483648,MAX_INT32=2147483647;function validateInt32(value){return Number.isInteger(value)&&value<=MAX_INT32&&value>=MIN_INT32}function validateInt64(value){return Number.isInteger(value)}function validateNumber(){return!0}var Z_ANCHOR=/[^\\]\\Z/;function regex(str){if(Z_ANCHOR.test(str))return!1;try{return new RegExp(str),!0}catch(e){return!1}}var isISO8601=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,isFormalDate=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,isShortenDate=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,_validateDate=fullFormats.date,_validateDateTime=fullFormats["date-time"];if(!FormatRegistry.Has("date"))FormatRegistry.Set("date",(value)=>{let temp=parseDateTimeEmptySpace(value).replace(/"/g,"");if(isISO8601.test(temp)||isFormalDate.test(temp)||isShortenDate.test(temp)||_validateDate(temp)){let date2=new Date(temp);if(!Number.isNaN(date2.getTime()))return!0}return!1});if(!FormatRegistry.Has("date-time"))FormatRegistry.Set("date-time",(value)=>{let temp=value.replace(/"/g,"");if(isISO8601.test(temp)||isFormalDate.test(temp)||isShortenDate.test(temp)||_validateDateTime(temp)){let date2=new Date(temp);if(!Number.isNaN(date2.getTime()))return!0}return!1});Object.entries(fullFormats).forEach((formatEntry)=>{let[formatName,formatValue]=formatEntry;if(!FormatRegistry.Has(formatName)){if(formatValue instanceof RegExp)FormatRegistry.Set(formatName,(value)=>formatValue.test(value));else if(typeof formatValue==="function