elysia 1.1.24 → 1.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bun/index.js CHANGED
@@ -1,522 +1,742 @@
1
1
  // @bun
2
- var H2=Object.create;var{getPrototypeOf:R2,defineProperty:f1,getOwnPropertyNames:b2}=Object;var x2=Object.prototype.hasOwnProperty;var k0=($,W,X)=>{X=$!=null?H2(R2($)):{};let Z=W||!$||!$.__esModule?f1(X,"default",{value:$,enumerable:!0}):X;for(let J of b2($))if(!x2.call(Z,J))f1(Z,J,{get:()=>$[J],enumerable:!0});return Z};var y1=($,W)=>()=>(W||$((W={exports:{}}).exports,W),W.exports);var z1=y1((e1)=>{Object.defineProperty(e1,"__esModule",{value:!0});e1.parse=F3;e1.serialize=z3;var G3=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,B3=/^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/,K3=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,U3=/^[\u0020-\u003A\u003D-\u007E]*$/,w3=Object.prototype.toString,_3=(()=>{let $=function(){};return $.prototype=Object.create(null),$})();function F3($,W){let X=new _3,Z=$.length;if(Z<2)return X;let J=W?.decode||M3,j=0;do{let Y=$.indexOf("=",j);if(Y===-1)break;let G=$.indexOf(";",j),K=G===-1?Z:G;if(Y>K){j=$.lastIndexOf(";",Y-1)+1;continue}let B=a1($,j,Y),U=o1($,Y,B),w=$.slice(B,U);if(X[w]===void 0){let F=a1($,Y+1,K),Q=o1($,K,F),M=J($.slice(F,Q));X[w]=M}j=K+1}while(j<Z);return X}function a1($,W,X){do{let Z=$.charCodeAt(W);if(Z!==32&&Z!==9)return W}while(++W<X);return X}function o1($,W,X){while(W>X){let Z=$.charCodeAt(--W);if(Z!==32&&Z!==9)return W+1}return X}function z3($,W,X){let Z=X?.encode||encodeURIComponent;if(!G3.test($))throw new TypeError(`argument name is invalid: ${$}`);let J=Z(W);if(!B3.test(J))throw new TypeError(`argument val is invalid: ${W}`);let j=$+"="+J;if(!X)return j;if(X.maxAge!==void 0){if(!Number.isInteger(X.maxAge))throw new TypeError(`option maxAge is invalid: ${X.maxAge}`);j+="; Max-Age="+X.maxAge}if(X.domain){if(!K3.test(X.domain))throw new TypeError(`option domain is invalid: ${X.domain}`);j+="; Domain="+X.domain}if(X.path){if(!U3.test(X.path))throw new TypeError(`option path is invalid: ${X.path}`);j+="; Path="+X.path}if(X.expires){if(!D3(X.expires)||!Number.isFinite(X.expires.valueOf()))throw new TypeError(`option expires is invalid: ${X.expires}`);j+="; Expires="+X.expires.toUTCString()}if(X.httpOnly)j+="; HttpOnly";if(X.secure)j+="; Secure";if(X.partitioned)j+="; Partitioned";if(X.priority)switch(typeof X.priority==="string"?X.priority.toLowerCase():X.sameSite){case"low":j+="; Priority=Low";break;case"medium":j+="; Priority=Medium";break;case"high":j+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${X.priority}`)}if(X.sameSite)switch(typeof X.sameSite==="string"?X.sameSite.toLowerCase():X.sameSite){case!0:case"strict":j+="; SameSite=Strict";break;case"lax":j+="; SameSite=Lax";break;case"none":j+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${X.sameSite}`)}return j}function M3($){if($.indexOf("%")===-1)return $;try{return decodeURIComponent($)}catch(W){return $}}function D3($){return w3.call($)==="[object Date]"}});var o0=y1((D8,X2)=>{var $2=12,I3=0,M1=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 A3($){var W=$.indexOf("%");if(W===-1)return $;var X=$.length,Z="",J=0,j=0,Y=W,G=$2;while(W>-1&&W<X){var K=W2($[W+1],4),B=W2($[W+2],0),U=K|B,w=M1[U];if(G=M1[256+G+w],j=j<<6|U&M1[364+w],G===$2)Z+=$.slice(J,Y),Z+=j<=65535?String.fromCharCode(j):String.fromCharCode(55232+(j>>10),56320+(j&1023)),j=0,J=W+3,W=Y=$.indexOf("%",J);else if(G===I3)return null;else{if(W+=3,W<X&&$.charCodeAt(W)===37)continue;return null}}return Z+$.slice(J)}var O3={"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 W2($,W){var X=O3[$];return X===void 0?255:X<<W}X2.exports=A3});var T0=($,W)=>{let X=W?.length?{}:null;if(X)for(let Z of W)X[Z.part.charCodeAt(0)]=Z;return{part:$,store:null,inert:X,params:null,wildcardStore:null}},k1=($,W)=>({...$,part:W}),v1=($)=>({name:$,store:null,inert:null});class z0{root={};history=[];static regex={static:/:.+?(?=\/|$)/,params:/:.+?(?=\/|$)/g,optionalParams:/:.+?\?(?=\/|$)/g};add($,W,X,{ignoreError:Z=!1,ignoreHistory:J=!1}={}){if(typeof W!=="string")throw new TypeError("Route path must be a string");if(W==="")W="/";else if(W[0]!=="/")W=`/${W}`;let j=W[W.length-1]==="*",Y=W.match(z0.regex.optionalParams);if(Y){let w=W.replaceAll("?","");this.add($,w,X,{ignoreError:Z});for(let F=0;F<Y.length;F++){let Q=W.replace("/"+Y[F],"");this.add($,Q,X,{ignoreError:!0})}return X}if(Y)W=W.replaceAll("?","");if(this.history.find(([w,F,Q])=>w===$&&F===W))return X;if(j||Y&&W.charCodeAt(W.length-1)===63)W=W.slice(0,-1);if(!J)this.history.push([$,W,X]);let G=W.split(z0.regex.static),K=W.match(z0.regex.params)||[];if(G[G.length-1]==="")G.pop();let B;if(!this.root[$])B=this.root[$]=T0("/");else B=this.root[$];let U=0;for(let w=0;w<G.length;++w){let F=G[w];if(w>0){let Q=K[U++].slice(1);if(B.params===null)B.params=v1(Q);else if(B.params.name!==Q)if(Z)return X;else throw new Error(`Cannot create route "${W}" with parameter "${Q}" because a route already exists with a different parameter name ("${B.params.name}") in the same location`);let M=B.params;if(M.inert===null){B=M.inert=T0(F);continue}B=M.inert}for(let Q=0;;){if(Q===F.length){if(Q<B.part.length){let M=k1(B,B.part.slice(Q));Object.assign(B,T0(F,[M]))}break}if(Q===B.part.length){if(B.inert===null)B.inert={};let M=B.inert[F.charCodeAt(Q)];if(M){B=M,F=F.slice(Q),Q=0;continue}let D=T0(F.slice(Q));B.inert[F.charCodeAt(Q)]=D,B=D;break}if(F[Q]!==B.part[Q]){let M=k1(B,B.part.slice(Q)),D=T0(F.slice(Q));Object.assign(B,T0(B.part.slice(0,Q),[M,D])),B=D;break}++Q}}if(U<K.length){let w=K[U].slice(1);if(B.params===null)B.params=v1(w);else if(B.params.name!==w)if(Z)return X;else throw new Error(`Cannot create route "${W}" with parameter "${w}" because a route already exists with a different parameter name ("${B.params.name}") in the same location`);if(B.params.store===null)B.params.store=X;return B.params.store}if(j){if(B.wildcardStore===null)B.wildcardStore=X;return B.wildcardStore}if(B.store===null)B.store=X;return B.store}find($,W){let X=this.root[$];if(!X)return null;return U1(W,W.length,X,0)}}var U1=($,W,X,Z)=>{let J=X.part,j=J.length,Y=Z+j;if(j>1){if(Y>W)return null;if(j<15){for(let G=1,K=Z+1;G<j;++G,++K)if(J.charCodeAt(G)!==$.charCodeAt(K))return null}else if($.slice(Z,Y)!==J)return null}if(Y===W){if(X.store!==null)return{store:X.store,params:{}};if(X.wildcardStore!==null)return{store:X.wildcardStore,params:{"*":""}};return null}if(X.inert!==null){let G=X.inert[$.charCodeAt(Y)];if(G!==void 0){let K=U1($,W,G,Y);if(K!==null)return K}}if(X.params!==null){let{store:G,name:K,inert:B}=X.params,U=$.indexOf("/",Y);if(U!==Y){if(U===-1||U>=W){if(G!==null){let w={};return w[K]=$.substring(Y,W),{store:G,params:w}}}else if(B!==null){let w=U1($,W,B,U);if(w!==null)return w.params[K]=$.substring(Y,U),w}}}if(X.wildcardStore!==null)return{store:X.wildcardStore,params:{"*":$.substring(Y,W)}};return null};var E0=($)=>{let W=typeof $==="object"?$.fn.toString():typeof $==="string"?$.toString():$,X=W.indexOf(")");if(W.charCodeAt(X+2)===61&&W.charCodeAt(X+5)!==123)return!0;return W.includes("return")},g2=($)=>{if($.startsWith("async"))$=$.slice(5);$=$.trimStart();let W=-1;if($.charCodeAt(0)===40){if(W=$.indexOf("=>",$.indexOf(")")),W!==-1){let J=W;while(J>0)if($.charCodeAt(--J)===41)break;let j=$.slice(W+2);if(j.charCodeAt(0)===32)j=j.trimStart();return[$.slice(1,J),j,{isArrowReturn:j.charCodeAt(0)!==123}]}}if($.startsWith("function")){W=$.indexOf("(");let J=$.indexOf(")");return[$.slice(W+1,J),$.slice(J+2),{isArrowReturn:!1}]}let X=$.indexOf("(");if(X!==-1){let J=$.indexOf("\n",2),j=$.slice(0,J),Y=j.lastIndexOf(")")+1,G=$.slice(J+1);return[j.slice(X,Y),"{"+G,{isArrowReturn:!1}]}let Z=$.split("\n",2);return[Z[0],Z[1],{isArrowReturn:!1}]},f2=($)=>{let W=$.indexOf("{");if(W===-1)return[-1,0];let X=W+1,Z=1;for(;X<$.length;X++){let J=$.charCodeAt(X);if(J===123)Z++;else if(J===125)Z--;if(Z===0)break}if(Z!==0)return[0,$.length];return[W,X+1]},y2=($)=>{let W=$.lastIndexOf("}");if(W===-1)return[-1,0];let X=W-1,Z=1;for(;X>=0;X--){let J=$.charCodeAt(X);if(J===125)Z++;else if(J===123)Z--;if(Z===0)break}if(Z!==0)return[-1,0];return[X,W+1]},u1=($)=>{while(!0){let W=$.indexOf(":");if(W===-1)break;let X=$.indexOf(",",W);if(X===-1)X=$.indexOf("}",W)-1;if(X===-2)X=$.length;$=$.slice(0,W)+$.slice(X)}return $},h1=($)=>{let W=!1;if($.charCodeAt(0)===40)$=$.slice(1,-1);if($.charCodeAt(0)===123)W=!0,$=$.slice(1,-1);$=$.replace(/( |\t|\n)/g,"").trim();let X=[];while(!0){let[J,j]=f2($);if(J===-1)break;if(X.push($.slice(0,J-1)),$.charCodeAt(j)===44)j++;$=$.slice(j)}if($=u1($),$)X=X.concat($.split(","));let Z=[];for(let J of X){if(J.indexOf(",")===-1){Z.push(J);continue}for(let j of J.split(","))Z.push(j.trim())}return X=Z,{hasParenthesis:W,parameters:X}},k2=($,W)=>{let{parameters:X,hasParenthesis:Z}=h1($);if(!W.query&&X.includes("query"))W.query=!0;if(!W.headers&&X.includes("headers"))W.headers=!0;if(!W.body&&X.includes("body"))W.body=!0;if(!W.cookie&&X.includes("cookie"))W.cookie=!0;if(!W.set&&X.includes("set"))W.set=!0;if(!W.server&&X.includes("server"))W.server=!0;if(Z)return`{ ${X.join(", ")} }`;return X.join(", ")},v2=($,W,X)=>{let Z=W.indexOf($+"\n",X),J=W.indexOf($+"\t",X),j=W.indexOf($+",",X),Y=W.indexOf($+";",X),G=W.indexOf($+" ",X);return[Z,J,j,Y,G].filter((K)=>K>0).sort((K,B)=>K-B)[0]||-1};var m1=($,W,X=0)=>{if(X>5)return[];let Z=[],J=W;while(!0){let j=v2(" = "+$,J);if(j===-1){let K=J.indexOf(" = "+$);if(K+3+$.length!==J.length)break;j=K}let Y=J.slice(0,j),G=Y.slice(Y.lastIndexOf(" ")+1);if(G==="}"){let[K,B]=y2(Y);Z.push(u1(J.slice(K,B))),J=J.slice(j+3+$.length);continue}while(G.charCodeAt(0)===44)G=G.slice(1);while(G.charCodeAt(0)===9)G=G.slice(1);if(!G.includes("("))Z.push(G);J=J.slice(j+3+$.length)}for(let j of Z){if(j.charCodeAt(0)===123)continue;let Y=m1(j,W);if(Y.length>0)Z.push(...Y)}return Z},u2=($)=>{if(!$)return;if($.charCodeAt(0)!==123)return $;if($=$.slice(2,-2),!$.includes(",")){if($.includes("..."))return $.slice($.indexOf("...")+3);return}let X=$.indexOf("...");if(X===-1)return;return $.slice(X+3).trimEnd()},h2=($,W,X)=>{let Z=(J,j)=>$.includes(j+"."+J)||$.includes(j+'["'+J+'"]')||$.includes(j+"['"+J+"']");for(let J of W){if(!J)continue;if(J.charCodeAt(0)===123){let j=h1(J).parameters;if(!X.query&&j.includes("query"))X.query=!0;if(!X.headers&&j.includes("headers"))X.headers=!0;if(!X.body&&j.includes("body"))X.body=!0;if(!X.cookie&&j.includes("cookie"))X.cookie=!0;if(!X.set&&j.includes("set"))X.set=!0;if(!X.query&&j.includes("server"))X.server=!0;continue}if(!X.query&&Z("query",J))X.query=!0;if($.includes("return "+J)||$.includes("return "+J+".query"))X.query=!0;if(!X.headers&&Z("headers",J))X.headers=!0;if(!X.body&&Z("body",J))X.body=!0;if(!X.cookie&&Z("cookie",J))X.cookie=!0;if(!X.set&&Z("set",J))X.set=!0;if(!X.server&&Z("server",J))X.server=!0;if(X.query&&X.headers&&X.body&&X.cookie&&X.set&&X.server)break}return W};var m2=($,W,X)=>{try{let Z=new RegExp(`(?:\\w)\\((?:.*)?${$}`,"gs");Z.test(W);let J=W.charCodeAt(Z.lastIndex);if(J===41||J===44)return X.query=!0,X.headers=!0,X.body=!0,X.cookie=!0,X.set=!0,X.server=!0,!0;return!1}catch(Z){return console.log("[Sucrose] warning: unexpected isContextPassToFunction error, you may continue development as usual but please report the following to maintainers:"),console.log("--- body ---"),console.log(W),console.log("--- context ---"),console.log($),!0}},s0=($,W={query:!1,headers:!1,body:!1,cookie:!1,set:!1,server:!1})=>{let X=[];if($.handler&&typeof $.handler==="function")X.push($.handler);if($.request?.length)X.push(...$.request);if($.beforeHandle?.length)X.push(...$.beforeHandle);if($.parse?.length)X.push(...$.parse);if($.error?.length)X.push(...$.error);if($.transform?.length)X.push(...$.transform);if($.afterHandle?.length)X.push(...$.afterHandle);if($.mapResponse?.length)X.push(...$.mapResponse);if($.afterResponse?.length)X.push(...$.afterResponse);for(let Z of X){if(!Z)continue;let J="fn"in Z?Z.fn:Z,[j,Y,{isArrowReturn:G}]=g2(J.toString()),K=k2(j,W),B=u2(K);if(B){let U=m1(B,Y);if(U.splice(0,-1,B),!m2(B,Y,W))h2(Y,U,W);if(!W.query&&Y.includes("return "+B+".query"))W.query=!0}if(W.query&&W.headers&&W.body&&W.cookie&&W.set&&W.server)break}return W};import{Value as l0}from"@sinclair/typebox/value";import{Kind as H0,TransformKind as w2}from"@sinclair/typebox";import{Value as p}from"@sinclair/typebox/value";import{TypeCompiler as F2}from"@sinclair/typebox/compiler";import{Kind as Z3,TypeRegistry as F1}from"@sinclair/typebox";import{TypeSystem as q0}from"@sinclair/typebox/system";import{Type as v0,FormatRegistry as W0}from"@sinclair/typebox";import{TypeCompiler as i1}from"@sinclair/typebox/compiler";import{Value as $0}from"@sinclair/typebox/value";var a0={date:p1,time:w1(!0),"date-time":d1(!0),"iso-time":w1(!1),"iso-date-time":d1(!1),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:r2,"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:X3,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:s2,int32:{type:"number",validate:e2},int64:{type:"number",validate:$3},float:{type:"number",validate:l1},double:{type:"number",validate:l1},password:!0,binary:!0};function d2($){return $%4===0&&($%100!==0||$%400===0)}var c2=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,l2=[0,31,28,31,30,31,30,31,31,30,31,30,31];function p1($){let W=c2.exec($);if(!W)return!1;let X=+W[1],Z=+W[2],J=+W[3];return Z>=1&&Z<=12&&J>=1&&J<=(Z===2&&d2(X)?29:l2[Z])}var p2=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function w1($){return function W(X){let Z=p2.exec(X);if(!Z)return!1;let J=+Z[1],j=+Z[2],Y=+Z[3],G=Z[4],K=Z[5]==="-"?-1:1,B=+(Z[6]||0),U=+(Z[7]||0);if(B>23||U>59||$&&!G)return!1;if(J<=23&&j<=59&&Y<60)return!0;let w=j-U*K,F=J-B*K-(w<0?1:0);return(F===23||F===-1)&&(w===59||w===-1)&&Y<61}}var i2=/t|\s/i;function d1($){let W=w1($);return function X(Z){let J=Z.split(i2);return J.length===2&&p1(J[0])&&W(J[1])}}var n2=/\/|:/,t2=/^(?:[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 r2($){return n2.test($)&&t2.test($)}var c1=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function s2($){return c1.lastIndex=0,c1.test($)}var a2=-2147483648,o2=2147483647;function e2($){return Number.isInteger($)&&$<=o2&&$>=a2}function $3($){return Number.isInteger($)}function l1(){return!0}var W3=/[^\\]\\Z/;function X3($){if(W3.test($))return!1;try{return new RegExp($),!0}catch(W){return!1}}import{TypeSystemPolicy as B8,TypeSystem as K8,TypeSystemDuplicateFormat as U8,TypeSystemDuplicateTypeKind as w8}from"@sinclair/typebox/system";import{TypeCompiler as F8,TypeCheck as z8}from"@sinclair/typebox/compiler";var t1=/(\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))/,r1=/(?: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\([^)]+\)/,s1=/^(?:(?:(?:(?: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)?)?$/,J3=a0.date,j3=a0["date-time"];if(!W0.Has("date"))q0.Format("date",($)=>{let W=$.replace(/"/g,"");if(t1.test(W)||r1.test(W)||s1.test(W)||J3(W)){let X=new Date(W);if(!Number.isNaN(X.getTime()))return!0}return!1});if(!W0.Has("date-time"))q0.Format("date-time",($)=>{let W=$.replace(/"/g,"");if(t1.test(W)||r1.test(W)||s1.test(W)||j3(W)){let X=new Date(W);if(!Number.isNaN(X.getTime()))return!0}return!1});Object.entries(a0).forEach(($)=>{let[W,X]=$;if(!W0.Has(W)){if(X instanceof RegExp)q0.Format(W,(Z)=>X.test(Z));else if(typeof X==="function")q0.Format(W,X)}});var V=Object.assign({},v0),n1=($)=>{if(typeof $==="string")switch($.slice(-1)){case"k":return+$.slice(0,$.length-1)*1024;case"m":return+$.slice(0,$.length-1)*1048576;default:return+$}return $},_1=($,W)=>{if(!(W instanceof Blob))return!1;if($.minSize&&W.size<n1($.minSize))return!1;if($.maxSize&&W.size>n1($.maxSize))return!1;if($.extension)if(typeof $.extension==="string"){if(!W.type.startsWith($.extension))return!1}else{for(let X=0;X<$.extension.length;X++)if(W.type.startsWith($.extension[X]))return!0;return!1}return!0},Q3=F1.Get("Files")??q0.Type("File",_1),Y3=F1.Get("Files")??q0.Type("Files",($,W)=>{if(!Array.isArray(W))return _1($,W);if($.minItems&&W.length<$.minItems)return!1;if($.maxItems&&W.length>$.maxItems)return!1;for(let X=0;X<W.length;X++)if(!_1($,W[X]))return!1;return!0});if(!W0.Has("numeric"))W0.Set("numeric",($)=>!!$&&!isNaN(+$));if(!W0.Has("boolean"))W0.Set("boolean",($)=>$==="true"||$==="false");if(!W0.Has("ObjectString"))W0.Set("ObjectString",($)=>{let W=$.charCodeAt(0);if(W===9||W===10||W===32)W=$.trimStart().charCodeAt(0);if(W!==123&&W!==91)return!1;try{return JSON.parse($),!0}catch{return!1}});if(!W0.Has("ArrayString"))W0.Set("ArrayString",($)=>{let W=$.charCodeAt(0);if(W===9||W===10||W===32)W=$.trimStart().charCodeAt(0);if(W!==123&&W!==91)return!1;try{return JSON.parse($),!0}catch{return!1}});F1.Set("UnionEnum",($,W)=>{return(typeof W==="number"||typeof W==="string"||W===null)&&$.enum.includes(W)});var X0={Numeric:($)=>{let W=v0.Number($);return V.Transform(V.Union([V.String({format:"numeric",default:0}),V.Number($)],$)).Decode((X)=>{let Z=+X;if(isNaN(Z))return X;if($&&!$0.Check(W,Z))throw new q("property",W,Z);return Z}).Encode((X)=>X)},Date:($)=>{let W=v0.Date($);return V.Transform(V.Union([v0.Date($),V.String({format:"date",default:new Date().toISOString()}),V.String({format:"date-time",default:new Date().toISOString()})],$)).Decode((X)=>{if(X instanceof Date)return X;let Z=new Date(X);if(!$0.Check(W,Z))throw new q("property",W,Z);return Z}).Encode((X)=>{if(typeof X==="string")return new Date(X);return X})},BooleanString:($)=>{let W=v0.Boolean($);return V.Transform(V.Union([V.String({format:"boolean",default:!1}),V.Boolean($)],$)).Decode((X)=>{if(typeof X==="string")return X==="true";if($&&!$0.Check(W,X))throw new q("property",W,X);return X}).Encode((X)=>X)},ObjectString:($,W)=>{let X=V.Object($,W),Z=JSON.stringify($0.Create(X)),J;try{J=i1.Compile(X)}catch{}return V.Transform(V.Union([V.String({format:"ObjectString",default:Z}),X])).Decode((j)=>{if(typeof j==="string"){if(j.charCodeAt(0)!==123)throw new q("property",X,j);try{j=JSON.parse(j)}catch{throw new q("property",X,j)}if(J){if(!J.Check(j))throw new q("property",X,j);return J.Decode(j)}if(!$0.Check(X,j))throw new q("property",X,j);return $0.Decode(X,j)}return j}).Encode((j)=>{if(typeof j==="string")try{j=JSON.parse(j)}catch{throw new q("property",X,j)}if(!$0.Check(X,j))throw new q("property",X,j);return JSON.stringify(j)})},ArrayString:($={},W)=>{let X=V.Array($,W),Z=JSON.stringify($0.Create(X)),J;try{J=i1.Compile(X)}catch{}return V.Transform(V.Union([V.String({format:"ArrayString",default:Z}),X])).Decode((j)=>{if(typeof j==="string"){if(j.charCodeAt(0)!==91)throw new q("property",X,j);try{j=JSON.parse(j)}catch{throw new q("property",X,j)}if(J){if(!J.Check(j))throw new q("property",X,j);return J.Decode(j)}if(!$0.Check(X,j))throw new q("property",X,j);return $0.Decode(X,j)}return j}).Encode((j)=>{if(typeof j==="string")try{j=JSON.parse(j)}catch{throw new q("property",X,j)}if(!$0.Check(X,j))throw new q("property",X,j);return JSON.stringify(j)})},File:Q3,Files:($={})=>V.Transform(Y3($)).Decode((W)=>{if(Array.isArray(W))return W;return[W]}).Encode((W)=>W),Nullable:($)=>V.Union([$,V.Null()]),MaybeEmpty:($)=>V.Union([$,V.Null(),V.Undefined()]),Cookie:($,{domain:W,expires:X,httpOnly:Z,maxAge:J,path:j,priority:Y,sameSite:G,secure:K,secrets:B,sign:U,...w}={})=>{let F=V.Object($,w);return F.config={domain:W,expires:X,httpOnly:Z,maxAge:J,path:j,priority:Y,sameSite:G,secure:K,secrets:B,sign:U},F},UnionEnum:($,W={})=>{let X=$.every((Z)=>typeof Z==="string")?{type:"string"}:$.every((Z)=>typeof Z==="number")?{type:"number"}:$.every((Z)=>Z===null)?{type:"null"}:{};if($.some((Z)=>typeof Z==="object"&&Z!==null))throw new Error("This type does not support objects or arrays");return{default:$[0],...W,[Z3]:"UnionEnum",...X,enum:$}}};V.BooleanString=X0.BooleanString;V.ObjectString=X0.ObjectString;V.ArrayString=X0.ArrayString;V.Numeric=X0.Numeric;V.File=($={})=>X0.File({default:"File",...$,extension:$?.type,type:"string",format:"binary"});V.Files=($={})=>X0.Files({...$,elysiaMeta:"Files",default:"Files",extension:$?.type,type:"array",items:{...$,default:"Files",type:"string",format:"binary"}});V.Nullable=($)=>X0.Nullable($);V.MaybeEmpty=X0.MaybeEmpty;V.Cookie=X0.Cookie;V.Date=X0.Date;V.UnionEnum=X0.UnionEnum;var Q2=k0(z1(),1);var J2=k0(z1(),1),j2=k0(o0(),1);class w0{$;W;X;constructor($,W,X={}){this.name=$;this.jar=W;this.initial=X}get cookie(){return this.jar[this.name]??this.initial}set cookie($){if(!(this.name in this.jar))this.jar[this.name]=this.initial;this.jar[this.name]=$}get setCookie(){if(!(this.name in this.jar))this.jar[this.name]=this.initial;return this.jar[this.name]}set setCookie($){this.cookie=$}get value(){return this.cookie.value}set value($){this.setCookie.value=$}get expires(){return this.cookie.expires}set expires($){this.setCookie.expires=$}get maxAge(){return this.cookie.maxAge}set maxAge($){this.setCookie.maxAge=$}get domain(){return this.cookie.domain}set domain($){this.setCookie.domain=$}get path(){return this.cookie.path}set path($){this.setCookie.path=$}get secure(){return this.cookie.secure}set secure($){this.setCookie.secure=$}get httpOnly(){return this.cookie.httpOnly}set httpOnly($){this.setCookie.httpOnly=$}get sameSite(){return this.cookie.sameSite}set sameSite($){this.setCookie.sameSite=$}get priority(){return this.cookie.priority}set priority($){this.setCookie.priority=$}get partitioned(){return this.cookie.partitioned}set partitioned($){this.setCookie.partitioned=$}get secrets(){return this.cookie.secrets}set secrets($){this.setCookie.secrets=$}update($){return this.setCookie=Object.assign(this.cookie,typeof $==="function"?$(this.cookie):$),this}set($){return this.setCookie=Object.assign({...this.initial,value:this.value},typeof $==="function"?$(this.cookie):$),this}remove(){if(this.value===void 0)return;return this.set({expires:new Date(0),maxAge:0,value:""}),this}toString(){return typeof this.value==="object"?JSON.stringify(this.value):this.value?.toString()??""}}var Z2=($,W,X)=>{if(!$.cookie)$.cookie={};return new Proxy(W,{get(Z,J){if(J in W)return new w0(J,$.cookie,Object.assign({},X??{},W[J]));return new w0(J,$.cookie,Object.assign({},X))}})},e0=async($,W,{secrets:X,sign:Z,...J}={})=>{if(!W)return Z2($,{},J);let j=typeof X==="string";if(Z&&Z!==!0&&!Array.isArray(Z))Z=[Z];let Y={},G=J2.parse(W);for(let[K,B]of Object.entries(G)){let U=j2.default(B);if(Z===!0||Z?.includes(K)){if(!X)throw new Error("No secret is provided to cookie plugin");if(j){let w=await D1(U,X);if(w===!1)throw new u0(K);U=w}else{let w=!0;for(let F=0;F<X.length;F++){let Q=await D1(U,X[F]);if(Q!==!1){w=!0,U=Q;break}}if(!w)throw new u0(K)}}Y[K]={value:U}}return Z2($,Y,J)};var Y2="toJSON"in new Headers,c=($)=>{if(!$)return!1;for(let W in $)return!0;return!1},h0=($,W)=>{let X=$.size;if(!W&&X||X&&W&&W.status!==206&&W.status!==304&&W.status!==412&&W.status!==416){if(W&&c(W.headers)){if(W.headers instanceof Headers){if(Y2)W.headers=W.headers.toJSON();else for(let[Z,J]of W.headers.entries())if(Z in W.headers)W.headers[Z]=J}return new Response($,{status:W.status,headers:Object.assign({"accept-ranges":"bytes","content-range":`bytes 0-${X-1}/${X}`},W.headers)})}return new Response($,{headers:{"accept-ranges":"bytes","content-range":`bytes 0-${X-1}/${X}`,"transfer-encoding":"chunked"}})}return new Response($)},G2=($,W)=>{if(!$)return $;$.delete("set-cookie");for(let X=0;X<W.length;X++){let Z=W[X].indexOf("=");$.append("set-cookie",`${W[X].slice(0,Z)}=${W[X].slice(Z+1)||""}`)}return $},B2=($)=>{if(!$||!c($))return;let W=[];for(let[X,Z]of Object.entries($)){if(!X||!Z)continue;let J=Z.value;if(J===void 0||J===null)continue;W.push(Q2.serialize(X,typeof J==="object"?JSON.stringify(J):J+"",Z))}if(W.length===0)return;if(W.length===1)return W[0];return W},B0=async($,W,X)=>{let Z=$.next();if(Z instanceof Promise)Z=await Z;if(Z.done){if(W)return x(Z.value,W,X);return Z0(Z.value,X)}return new Response(new ReadableStream({async start(J){let j=!1;if(X?.signal.addEventListener("abort",()=>{j=!0;try{J.close()}catch{}}),Z.value!==void 0&&Z.value!==null)if(typeof Z.value==="object")try{J.enqueue(Buffer.from(JSON.stringify(Z.value)))}catch{J.enqueue(Buffer.from(Z.value.toString()))}else J.enqueue(Buffer.from(Z.value.toString()));for await(let Y of $){if(j)break;if(Y===void 0||Y===null)continue;if(typeof Y==="object")try{J.enqueue(Buffer.from(JSON.stringify(Y)))}catch{J.enqueue(Buffer.from(Y.toString()))}else J.enqueue(Buffer.from(Y.toString()));await new Promise((G)=>setTimeout(()=>G(),0))}try{J.close()}catch{}}}),{...W,headers:{"transfer-encoding":"chunked","content-type":"text/event-stream; charset=utf-8",...W?.headers}})};async function*m0($){let W=$.body;if(!W)return;let X=W.getReader(),Z=new TextDecoder;try{while(!0){let{done:J,value:j}=await X.read();if(J)break;yield Z.decode(j)}}finally{X.releaseLock()}}var x=($,W,X)=>{if(c(W.headers)||W.status!==200||W.redirect||W.cookie){if(typeof W.status==="string")W.status=_0[W.status];if(W.redirect){if(W.headers.Location=W.redirect,!W.status||W.status<300||W.status>=400)W.status=302}if(W.cookie&&c(W.cookie)){let Z=B2(W.cookie);if(Z)W.headers["set-cookie"]=Z}if(W.headers["set-cookie"]&&Array.isArray(W.headers["set-cookie"]))W.headers=G2(new Headers(W.headers),W.headers["set-cookie"]);switch($?.constructor?.name){case"String":return new Response($,W);case"Blob":return h0($,W);case"Array":return Response.json($,W);case"Object":return Response.json($,W);case"ElysiaCustomStatusResponse":return W.status=$.code,x($.response,W,X);case"ReadableStream":if(!W.headers["content-type"]?.startsWith("text/event-stream"))W.headers["content-type"]="text/event-stream; charset=utf-8";return X?.signal.addEventListener("abort",{handleEvent(){if(!X?.signal.aborted)$.cancel(X)}},{once:!0}),new Response($,W);case void 0:if(!$)return new Response("",W);return Response.json($,W);case"Response":let Z=!1;if(W.headers instanceof Headers)for(let J of W.headers.keys())if(J==="set-cookie"){if(Z)continue;Z=!0;for(let j of W.headers.getSetCookie())$.headers.append("set-cookie",j)}else $.headers.append(J,W.headers?.get(J)??"");else for(let J in W.headers)$.headers.append(J,W.headers[J]);if($.status!==W.status)W.status=$.status;if($.headers.get("transfer-encoding")==="chunked")return B0(m0($),W,X);return $;case"Error":return K0($,W);case"Promise":return $.then((J)=>x(J,W));case"Function":return x($(),W);case"Number":case"Boolean":return new Response($.toString(),W);case"Cookie":if($ instanceof w0)return new Response($.value,W);return new Response($?.toString(),W);case"FormData":return new Response($,W);default:if($ instanceof Response){let J=!1;if(W.headers instanceof Headers)for(let j of W.headers.keys())if(j==="set-cookie"){if(J)continue;J=!0;for(let Y of W.headers.getSetCookie())$.headers.append("set-cookie",Y)}else $.headers.append(j,W.headers?.get(j)??"");else for(let j in W.headers)$.headers.append(j,W.headers[j]);if(Y2)W.headers=$.headers.toJSON();else for(let[j,Y]of $.headers.entries())if(j in W.headers)W.headers[j]=Y;return $}if($ instanceof Promise)return $.then((J)=>x(J,W));if($ instanceof Error)return K0($,W);if($ instanceof l)return W.status=$.code,x($.response,W,X);if(typeof $?.next==="function")return B0($,W,X);if(typeof $?.then==="function")return $.then((J)=>x(J,W));if(typeof $?.toResponse==="function")return x($.toResponse(),W);if("charCodeAt"in $){let J=$.charCodeAt(0);if(J===123||J===91){if(!W.headers["Content-Type"])W.headers["Content-Type"]="application/json";return new Response(JSON.stringify($),W)}}return new Response($,W)}}else switch($?.constructor?.name){case"String":return new Response($);case"Blob":return h0($,W);case"Array":return Response.json($);case"Object":return Response.json($,W);case"ElysiaCustomStatusResponse":return W.status=$.code,x($.response,W,X);case"ReadableStream":return X?.signal.addEventListener("abort",{handleEvent(){if(!X?.signal.aborted)$.cancel(X)}},{once:!0}),new Response($,{headers:{"Content-Type":"text/event-stream; charset=utf-8"}});case void 0:if(!$)return new Response("");return new Response(JSON.stringify($),{headers:{"content-type":"application/json"}});case"Response":if($.headers.get("transfer-encoding")==="chunked")return B0(m0($),W,X);return $;case"Error":return K0($,W);case"Promise":return $.then((Z)=>{let J=Z0(Z,X);if(J!==void 0)return J;return new Response("")});case"Function":return Z0($(),X);case"Number":case"Boolean":return new Response($.toString());case"Cookie":if($ instanceof w0)return new Response($.value,W);return new Response($?.toString(),W);case"FormData":return new Response($,W);default:if($ instanceof Response)return $;if($ instanceof Promise)return $.then((Z)=>x(Z,W));if($ instanceof Error)return K0($,W);if($ instanceof l)return W.status=$.code,x($.response,W,X);if(typeof $?.next==="function")return B0($,W,X);if(typeof $?.then==="function")return $.then((Z)=>x(Z,W));if(typeof $?.toResponse==="function")return x($.toResponse(),W);if("charCodeAt"in $){let Z=$.charCodeAt(0);if(Z===123||Z===91){if(!W.headers["Content-Type"])W.headers["Content-Type"]="application/json";return new Response(JSON.stringify($),W)}}return new Response($)}},g=($,W,X)=>{if($===void 0||$===null)return;if(c(W.headers)||W.status!==200||W.redirect||W.cookie){if(typeof W.status==="string")W.status=_0[W.status];if(W.redirect){if(W.headers.Location=W.redirect,!W.status||W.status<300||W.status>=400)W.status=302}if(W.cookie&&c(W.cookie)){let Z=B2(W.cookie);if(Z)W.headers["set-cookie"]=Z}if(W.headers["set-cookie"]&&Array.isArray(W.headers["set-cookie"]))W.headers=G2(new Headers(W.headers),W.headers["set-cookie"]);switch($?.constructor?.name){case"String":return new Response($,W);case"Blob":return h0($,W);case"Array":return Response.json($,W);case"Object":return Response.json($,W);case"ElysiaCustomStatusResponse":return W.status=$.code,g($.response,W,X);case"ReadableStream":if(!W.headers["content-type"]?.startsWith("text/event-stream"))W.headers["content-type"]="text/event-stream; charset=utf-8";return X?.signal.addEventListener("abort",{handleEvent(){if(!X?.signal.aborted)$.cancel(X)}},{once:!0}),new Response($,W);case void 0:if(!$)return;return Response.json($,W);case"Response":let Z=!1;if(W.headers instanceof Headers)for(let J of W.headers.keys())if(J==="set-cookie"){if(Z)continue;Z=!0;for(let j of W.headers.getSetCookie())$.headers.append("set-cookie",j)}else $.headers.append(J,W.headers?.get(J)??"");else for(let J in W.headers)$.headers.append(J,W.headers[J]);if($.status!==W.status)W.status=$.status;if($.headers.get("transfer-encoding")==="chunked")return B0(m0($),W,X);return $;case"Promise":return $.then((J)=>{let j=g(J,W);if(j!==void 0)return j});case"Error":return K0($,W);case"Function":return g($(),W);case"Number":case"Boolean":return new Response($.toString(),W);case"FormData":return new Response($);case"Cookie":if($ instanceof w0)return new Response($.value,W);return new Response($?.toString(),W);default:if($ instanceof Response){let J=!1;if(W.headers instanceof Headers)for(let j of W.headers.keys())if(j==="set-cookie"){if(J)continue;J=!0;for(let Y of W.headers.getSetCookie())$.headers.append("set-cookie",Y)}else $.headers.append(j,W.headers?.get(j)??"");else for(let j in W.headers)$.headers.append(j,W.headers[j]);if($.status!==W.status)W.status=$.status;return $}if($ instanceof Promise)return $.then((J)=>g(J,W));if($ instanceof Error)return K0($,W);if($ instanceof l)return W.status=$.code,g($.response,W,X);if(typeof $?.next==="function")return B0($,W,X);if(typeof $?.then==="function")return $.then((J)=>g(J,W));if(typeof $?.toResponse==="function")return g($.toResponse(),W);if("charCodeAt"in $){let J=$.charCodeAt(0);if(J===123||J===91){if(!W.headers["Content-Type"])W.headers["Content-Type"]="application/json";return new Response(JSON.stringify($),W)}}return new Response($,W)}}else switch($?.constructor?.name){case"String":return new Response($);case"Blob":return h0($,W);case"Array":return Response.json($);case"Object":return Response.json($,W);case"ElysiaCustomStatusResponse":return W.status=$.code,g($.response,W,X);case"ReadableStream":return X?.signal.addEventListener("abort",{handleEvent(){if(!X?.signal.aborted)$.cancel(X)}},{once:!0}),new Response($,{headers:{"Content-Type":"text/event-stream; charset=utf-8"}});case void 0:if(!$)return new Response("");return new Response(JSON.stringify($),{headers:{"content-type":"application/json"}});case"Response":if($.headers.get("transfer-encoding")==="chunked")return B0(m0($));return $;case"Promise":return $.then((Z)=>{let J=g(Z,W);if(J!==void 0)return J});case"Error":return K0($,W);case"Function":return Z0($(),X);case"Number":case"Boolean":return new Response($.toString());case"Cookie":if($ instanceof w0)return new Response($.value,W);return new Response($?.toString(),W);case"FormData":return new Response($);default:if($ instanceof Response)return $;if($ instanceof Promise)return $.then((Z)=>g(Z,W));if($ instanceof Error)return K0($,W);if($ instanceof l)return W.status=$.code,g($.response,W,X);if(typeof $?.next==="function")return B0($,W,X);if(typeof $?.then==="function")return $.then((Z)=>g(Z,W));if(typeof $?.toResponse==="function")return g($.toResponse(),W);if("charCodeAt"in $){let Z=$.charCodeAt(0);if(Z===123||Z===91){if(!W.headers["Content-Type"])W.headers["Content-Type"]="application/json";return new Response(JSON.stringify($),W)}}return new Response($)}},Z0=($,W)=>{switch($?.constructor?.name){case"String":return new Response($);case"Blob":return h0($);case"Array":return Response.json($);case"Object":return Response.json($);case"ElysiaCustomStatusResponse":return x($.response,{status:$.code,headers:{}});case"ReadableStream":return W?.signal.addEventListener("abort",{handleEvent(){if(!W?.signal.aborted)$.cancel(W)}},{once:!0}),new Response($,{headers:{"Content-Type":"text/event-stream; charset=utf-8"}});case void 0:if(!$)return new Response("");return new Response(JSON.stringify($),{headers:{"content-type":"application/json"}});case"Response":if($.headers.get("transfer-encoding")==="chunked")return B0(m0($));return $;case"Error":return K0($);case"Promise":return $.then((X)=>Z0(X,W));case"Function":return Z0($(),W);case"Number":case"Boolean":return new Response($.toString());case"FormData":return new Response($);default:if($ instanceof Response)return $;if($ instanceof Promise)return $.then((X)=>Z0(X,W));if($ instanceof Error)return K0($);if($ instanceof l)return x($.response,{status:$.code,headers:{}});if(typeof $?.next==="function")return B0($,void 0,W);if(typeof $?.then==="function")return $.then((X)=>x(X,set));if(typeof $?.toResponse==="function")return Z0($.toResponse());if("charCodeAt"in $){let X=$.charCodeAt(0);if(X===123||X===91)return new Response(JSON.stringify($),{headers:{"Content-Type":"application/json"}})}return new Response($)}},K0=($,W)=>new Response(JSON.stringify({name:$?.name,message:$?.message,cause:$?.cause}),{status:W?.status!==200?W?.status??500:500,headers:W?.headers}),K2=($,W,X={})=>{if(typeof $==="function")return;let Z=x($,{headers:X});if(W.parse.length===0&&W.transform.length===0&&W.beforeHandle.length===0&&W.afterHandle.length===0)return Z.clone.bind(Z)},U2=($,W,X={})=>{if(typeof $==="function"||$ instanceof Blob)return;let Z=x($,{headers:X});if(W.parse.length===0&&W.transform.length===0&&W.beforeHandle.length===0&&W.afterHandle.length===0){if(!Z.headers.has("content-type"))Z.headers.append("content-type","text/plain;charset=utf-8");return Z.clone.bind(Z)}};var R0=($,W)=>{let X=new URL($);return X.pathname=W,X.toString()},V3=($)=>typeof $==="function"&&/^\s*class\s+/.test($.toString())||$.toString().startsWith("[object ")&&$.toString()!=="[object Object]"||c(Object.getPrototypeOf($)),N1=($)=>$&&typeof $==="object"&&!Array.isArray($),d=($,W,{skipKeys:X,override:Z=!0}={})=>{if(!N1($)||!N1(W))return $;for(let[J,j]of Object.entries(W)){if(X?.includes(J))continue;if(!N1(j)||!(J in $)||V3(j)){if(Z||!(J in $))$[J]=j;continue}$[J]=d($[J],j,{skipKeys:X,override:Z})}return $},S3=($,W)=>{let{properties:X,...Z}=$??{},{properties:J,...j}=W??{};return d(Z,j)},y=($=[],W=[])=>{if(!$)return[];if(!W)return $;let X=[],Z=[];if(!Array.isArray($))$=[$];if(!Array.isArray(W))W=[W];for(let J of $)if(X.push(J),J.checksum)Z.push(J.checksum);for(let J of W)if(!Z.includes(J.checksum))X.push(J);return X},C3=["start","request","parse","transform","resolve","beforeHandle","afterHandle","mapResponse","afterResponse","trace","error","stop","body","headers","params","query","response","type","detail"],L3=C3.reduce(($,W)=>($[W]=!0,$),{}),z2=($,W)=>{let X=(Z)=>typeof Z==="object"&&Object.keys(Z).every(Z1);if(X($)&&X(W))return{...$,...W};else if($&&!X($)&&X(W))return{200:$,...W};return W??$},b0=($,W)=>{return{body:W?.body??$?.body,headers:W?.headers??$?.headers,params:W?.params??$?.params,query:W?.query??$?.query,cookie:W?.cookie??$?.cookie,response:z2($?.response,W?.response)}},i=($,W)=>{return{...$,...W,body:W?.body??$?.body,headers:W?.headers??$?.headers,params:W?.params??$?.params,query:W?.query??$?.query,cookie:W?.cookie??$?.cookie,response:z2($?.response,W?.response),type:$?.type||W?.type,detail:d(W?.detail??{},$?.detail??{}),parse:y($?.parse,W?.parse),transform:y($?.transform,W?.transform),beforeHandle:y($?.beforeHandle,W?.beforeHandle),afterHandle:y($?.afterHandle,W?.afterHandle),mapResponse:y($?.mapResponse,W?.mapResponse),afterResponse:y($?.afterResponse,W?.afterResponse),trace:y($?.trace,W?.trace),error:y($?.error,W?.error)}},A1=($,W,X=!0)=>{if(!Array.isArray(W))return h($,W,X);for(let Z of W)$=h($,Z,X);return $},h=($,W,X=!0)=>{if(!$)return $;if(W.untilObjectFound&&!X&&$.type==="object")return $;let Z=W.from[H0];if($.oneOf){for(let Y=0;Y<$.oneOf.length;Y++)$.oneOf[Y]=h($.oneOf[Y],W,X);return $}if($.anyOf){for(let Y=0;Y<$.anyOf.length;Y++)$.anyOf[Y]=h($.anyOf[Y],W,X);return $}if($.allOf){for(let Y=0;Y<$.allOf.length;Y++)$.allOf[Y]=h($.allOf[Y],W,X);return $}if($.not){for(let Y=0;Y<$.not.length;Y++)$.not[Y]=h($.not[Y],W,X);return $}let J=X&&!!W.excludeRoot;if($[H0]===Z){let{anyOf:Y,oneOf:G,allOf:K,not:B,properties:U,items:w,...F}=$,Q=W.to(F),M,D=(z)=>{if(U&&z.type==="object"){let O={};for(let[P,b]of Object.entries(U))O[P]=h(b,W,!1);return{...F,...z,properties:O}}if(w&&z.type==="array")return{...F,...z,items:h(w,W,!1)};let I={...F,...z};if(delete I.required,U&&z.type==="string"&&z.format==="ObjectString"&&z.default==="{}")M=V.ObjectString(U,F),I.default=JSON.stringify(p.Create(V.Object(U))),I.properties=U;if(w&&z.type==="string"&&z.format==="ArrayString"&&z.default==="[]")M=V.ArrayString(w,F),I.default=JSON.stringify(p.Create(V.Array(w))),I.items=w;return I};if(J){if(U){let z={};for(let[I,O]of Object.entries(U))z[I]=h(O,W,!1);return{...F,properties:z}}else if(w?.map)return{...F,items:w.map((z)=>h(z,W,!1))};return F}if(Q.anyOf)for(let z=0;z<Q.anyOf.length;z++)Q.anyOf[z]=D(Q.anyOf[z]);else if(Q.oneOf)for(let z=0;z<Q.oneOf.length;z++)Q.oneOf[z]=D(Q.oneOf[z]);else if(Q.allOf)for(let z=0;z<Q.allOf.length;z++)Q.allOf[z]=D(Q.allOf[z]);else if(Q.not)for(let z=0;z<Q.not.length;z++)Q.not[z]=D(Q.not[z]);if(M)Q[w2]=M[w2];if(Q.anyOf||Q.oneOf||Q.allOf||Q.not)return Q;if(U){let z={};for(let[I,O]of Object.entries(U))z[I]=h(O,W,!1);return{...F,...Q,properties:z}}else if(w?.map)return{...F,...Q,items:w.map((z)=>h(z,W,!1))};return{...F,...Q}}let j=$?.properties;if(j&&X&&W.rootOnly!==!0)for(let[Y,G]of Object.entries(j))switch(G[H0]){case Z:let{anyOf:K,oneOf:B,allOf:U,not:w,type:F,...Q}=G,M=W.to(Q);if(M.anyOf)for(let D=0;D<M.anyOf.length;D++)M.anyOf[D]={...Q,...M.anyOf[D]};else if(M.oneOf)for(let D=0;D<M.oneOf.length;D++)M.oneOf[D]={...Q,...M.oneOf[D]};else if(M.allOf)for(let D=0;D<M.allOf.length;D++)M.allOf[D]={...Q,...M.allOf[D]};else if(M.not)for(let D=0;D<M.not.length;D++)M.not[D]={...Q,...M.not[D]};j[Y]={...Q,...h(Q,W,!1)};break;case"Object":case"Union":j[Y]=h(G,W,!1);break;default:if(G.items)for(let D=0;D<G.items.length;D++)G.items[D]=h(G.items[D],W,!1);else if(G.anyOf||G.oneOf||G.allOf||G.not)j[Y]=h(G,W,!1);break}return $},m=($,{models:W={},dynamic:X=!1,normalize:Z=!1,additionalProperties:J=!1,coerce:j=!1,additionalCoerce:Y=[]}={})=>{if(!$)return;if(typeof $==="string"&&!($ in W))return;let G=typeof $==="string"?W[$]:$;if(j||Y)if(j)G=A1(G,[{from:V.Number(),to:(U)=>V.Numeric(U),untilObjectFound:!0},{from:V.Boolean(),to:(U)=>V.BooleanString(U),untilObjectFound:!0},...Array.isArray(Y)?Y:[Y]]);else G=A1(G,[...Array.isArray(Y)?Y:[Y]]);if(G.type==="object"&&"additionalProperties"in G===!1)G.additionalProperties=J;let K=(U)=>p.Clean(G,U);if(X){let U={schema:G,references:"",checkFunc:()=>{},code:"",Check:(w)=>p.Check(G,w),Errors:(w)=>p.Errors(G,w),Code:()=>"",Clean:K,Decode:(w)=>p.Decode(G,w),Encode:(w)=>p.Encode(G,w)};if(Z&&G.additionalProperties===!1)U.Clean=K;if(G.config){if(U.config=G.config,U?.schema?.config)delete U.schema.config}return U.parse=(w)=>{try{return U.Decode(w)}catch(F){throw[...U.Errors(w)].map(o)}},U.safeParse=(w)=>{try{return{success:!0,data:U.Decode(w),error:null}}catch(F){let Q=[...B.Errors(w)].map(o);return{success:!1,data:null,error:Q[0]?.summary,errors:Q}}},U}let B=F2.Compile(G,Object.values(W));if(B.Clean=K,G.config){if(B.config=G.config,B?.schema?.config)delete B.schema.config}return B.parse=(U)=>{try{return B.Decode(U)}catch(w){throw[...B.Errors(U)].map(o)}},B.safeParse=(U)=>{try{return{success:!0,data:B.Decode(U),error:null}}catch(w){let F=[...B.Errors(U)].map(o);return{success:!1,data:null,error:F[0]?.summary,errors:F}}},B},$1=($,{models:W={},dynamic:X=!1,normalize:Z=!1,additionalProperties:J=!1})=>{if(!$)return;if(typeof $==="string"&&!($ in W))return;let j=typeof $==="string"?W[$]:$,Y=(K,B)=>{let U=(F)=>{if(!F||typeof F!=="object")return p.Clean(K,F);if(Array.isArray(F))F=p.Clean(K,F);else F=p.Clean(K,F);return F};if(X)return{schema:K,references:"",checkFunc:()=>{},code:"",Check:(F)=>p.Check(K,F),Errors:(F)=>p.Errors(K,F),Code:()=>"",Decode:(F)=>p.Decode(K,F),Encode:(F)=>p.Encode(K,F)};let w=F2.Compile(K,B);if(Z&&K.additionalProperties===!1)w.Clean=U;return w};if(H0 in j){if("additionalProperties"in j===!1)j.additionalProperties=J;return{200:Y(j,Object.values(W))}}let G={};return Object.keys(j).forEach((K)=>{let B=j[+K];if(typeof B==="string"){if(B in W){let U=W[B];U.type==="object"&&"additionalProperties"in U,G[+K]=H0 in U?Y(U,Object.values(W)):U}return}if(B.type==="object"&&"additionalProperties"in B===!1)B.additionalProperties=J;G[+K]=H0 in B?Y(B,Object.values(W)):B}),G},T3=typeof Bun!=="undefined",E3=T3&&typeof Bun.hash==="function",N0=($)=>{if(E3)return Bun.hash($);let W=9;for(let X=0;X<$.length;)W=Math.imul(W^$.charCodeAt(X++),387420489);return W=W^W>>>9},P1,D0=()=>{if(!P1)P1=[{from:V.Object({}),to:()=>V.ObjectString({}),excludeRoot:!0},{from:V.Array(V.Any()),to:()=>V.ArrayString(V.Any())}];return P1},I1,O1=()=>{if(!I1)I1=[{from:V.Number(),to:($)=>V.Numeric($),rootOnly:!0},{from:V.Boolean(),to:($)=>V.BooleanString($),rootOnly:!0}];return I1},W1=({validator:$,defaultConfig:W={},config:X,dynamic:Z,models:J})=>{let j=m($,{dynamic:Z,models:J,additionalProperties:!0,coerce:!0,additionalCoerce:D0()});if(c(W))if(j)j.config=S3(j.config,X);else j=m(V.Cookie({}),{dynamic:Z,models:J,additionalProperties:!0}),j.config=W;return j},J0=($,W)=>{if(!W)return;if(!Array.isArray(W)){let Z=W;if($&&!Z.checksum)Z.checksum=$;if(Z.scope==="scoped")Z.scope="local";return Z}let X=[...W];for(let Z of X){if($&&!Z.checksum)Z.checksum=$;if(Z.scope==="scoped")Z.scope="local"}return X},V1=($,W,X)=>{return{start:y($.start,J0(X,W?.start)),request:y($.request,J0(X,W?.request)),parse:y($.parse,J0(X,W?.parse)),transform:y($.transform,J0(X,W?.transform)),beforeHandle:y($.beforeHandle,J0(X,W?.beforeHandle)),afterHandle:y($.afterHandle,J0(X,W?.afterHandle)),mapResponse:y($.mapResponse,J0(X,W?.mapResponse)),afterResponse:y($.afterResponse,J0(X,W?.afterResponse)),trace:y($.trace,J0(X,W?.trace)),error:y($.error,J0(X,W?.error)),stop:y($.stop,J0(X,W?.stop))}},M2=($,W,{skipIfHasType:X=!1}={})=>{if(!$)return $;if(!Array.isArray($)){if(X)$.scope??=W;else $.scope=W;return $}for(let Z of $)if(X)Z.scope??=W;else Z.scope=W;return $},M0=($)=>{if(!$)return $;if(!Array.isArray($))switch($.scope){case"global":case"scoped":return{...$};default:return{fn:$}}let W=[];for(let X of $)switch(X.scope){case"global":case"scoped":W.push({...X});break}return W},S1=($)=>{return{...$,type:$?.type,detail:$?.detail,parse:M0($?.parse),transform:M0($?.transform),beforeHandle:M0($?.beforeHandle),afterHandle:M0($?.afterHandle),mapResponse:M0($?.mapResponse),afterResponse:M0($?.afterResponse),error:M0($?.error),trace:M0($?.trace)}},_0={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,"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},X1=Object.fromEntries(Object.entries(_0).map(([$,W])=>[W,$]));function q3($){let W=$;while(W.endsWith("="))W=W.slice(0,-1);return W}var _2=new TextEncoder,x0=async($,W)=>{if(typeof $!=="string")throw new TypeError("Cookie value must be provided as a string.");if(W===null)throw new TypeError("Secret key must be provided.");let X=await crypto.subtle.importKey("raw",_2.encode(W),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),Z=await crypto.subtle.sign("HMAC",X,_2.encode($));return $+"."+q3(Buffer.from(Z).toString("base64"))},D1=async($,W)=>{if(typeof $!=="string")throw new TypeError("Signed cookie string must be provided.");if(W===null)throw new TypeError("Secret key must be provided.");let X=$.slice(0,$.lastIndexOf("."));return await x0(X,W)===$?X:!1},D2=($,W)=>{if(!$||typeof $!=="object"||!W)return;for(let[X,Z]of Object.entries(W)){if(X in L3||!(X in $))continue;let J=$[X];if(typeof J==="function")J(Z),delete W[X]}},N2=({globalHook:$,localHook:W})=>(X)=>(Z,J)=>{if(typeof Z==="function")Z={fn:Z};if("fn"in Z||Array.isArray(Z)){if(!W[X])W[X]=[];if(typeof W[X]==="function")W[X]=[W[X]];if(Array.isArray(Z))W[X]=W[X].concat(Z);else W[X].push(Z);return}let{insert:j="after",stack:Y="local"}=Z;if(typeof J==="function")J={fn:J};if(Y==="global")if(!Array.isArray(J))if(j==="before")$[X].unshift(J);else $[X].push(J);else if(j==="before")$[X]=J.concat($[X]);else $[X]=$[X].concat(J);else{if(!W[X])W[X]=[];if(typeof W[X]==="function")W[X]=[W[X]];if(!Array.isArray(J))if(j==="before")W[X].unshift(J);else W[X].push(J);else if(j==="before")W[X]=J.concat(W[X]);else W[X]=W[X].concat(J)}},H3=($)=>{if(typeof $==="number")return $;if($.length<16){if($.trim().length===0)return null;let W=Number($);if(Number.isNaN(W))return null;return W}if($.length===16){if($.trim().length===0)return null;let W=Number($);if(Number.isNaN(W)||W.toString()!==$)return null;return W}return null},Z1=($)=>H3($)!==null;class C1{$;root=null;promises=[];constructor($=console.error){this.onError=$}get size(){return this.promises.length}add($){return this.promises.push($),this.root||=this.drain(),$}async drain(){while(this.promises.length>0){try{await this.promises[0]}catch($){this.onError($)}this.promises.shift()}this.root=null}then($,W){return(this.root??Promise.resolve()).then($,W)}}var n=($)=>{if(!$)return $;if(!Array.isArray($)){if(typeof $==="function")return{fn:$};else if("fn"in $)return $}let W=[];for(let X of $)if(typeof X==="function")W.push({fn:X});else if("fn"in X)W.push(X);return W},P2=($)=>{return{...$,start:n($?.start),request:n($?.request),parse:n($?.parse),transform:n($?.transform),beforeHandle:n($?.beforeHandle),afterHandle:n($?.afterHandle),mapResponse:n($?.mapResponse),afterResponse:n($?.afterResponse),trace:n($?.trace),error:n($?.error),stop:n($?.stop)}},L1=($)=>{return{...$,start:$.start?.map((W)=>W.fn),request:$.request?.map((W)=>W.fn),parse:$.parse?.map((W)=>W.fn),transform:$.transform?.map((W)=>W.fn),beforeHandle:$.beforeHandle?.map((W)=>W.fn),afterHandle:$.afterHandle?.map((W)=>W.fn),afterResponse:$.afterResponse?.map((W)=>W.fn),mapResponse:$.mapResponse?.map((W)=>W.fn),trace:$.trace?.map((W)=>W.fn),error:$.error?.map((W)=>W.fn),stop:$.stop?.map((W)=>W.fn)}},d0=($)=>({body:$.body,cookie:$.cookie,headers:$.headers,query:$.query,set:$.set,server:$.server}),c0=($,W=302)=>Response.redirect($,W),R3=Symbol("ElysiaFormData"),P0=Symbol("ElysiaRequestId"),b3=($)=>{let W=new FormData;for(let[X,Z]of Object.entries($)){if(Array.isArray(Z)){for(let J of Z){if(Z instanceof File)W.append(X,Z,Z.name);W.append(X,J)}continue}if(Z instanceof File)W.append(X,Z,Z.name);W.append(X,Z)}return W},J1=()=>crypto.getRandomValues(new Uint32Array(1))[0],j1=($)=>{let W=[];for(let X=0;X<$.length;X++){let Z=$[X];if(Z.checksum){if(W.includes(Z.checksum))$.splice(X,1),X--;W.push(Z.checksum)}}return $},v=($,W="scoped")=>{if(W==="scoped"){for(let X of $)if("scope"in X&&X.scope==="local")X.scope="scoped";return}for(let X of $)if("scope"in X)X.scope="global"};var I2=typeof Bun!=="undefined"?Bun.env:typeof process!=="undefined"?process?.env:void 0,I0=Symbol("ElysiaErrorCode"),p0=(I2?.NODE_ENV??I2?.ENV)==="production";class l{code;response;constructor($,W){let X=W??($ in X1?X1[$]:$);this.code=_0[$]??$,this.response=X}}var T1=($,W)=>new l($,W);class Q1 extends Error{code="INTERNAL_SERVER_ERROR";status=500;constructor($){super($??"INTERNAL_SERVER_ERROR")}}class A0 extends Error{code="NOT_FOUND";status=404;constructor($){super($??"NOT_FOUND")}}class Y1 extends Error{code="PARSE";status=400;constructor(){super("Failed to parse body")}}class u0 extends Error{$;code="INVALID_COOKIE_SIGNATURE";status=400;constructor($,W){super(W??`"${$}" has invalid cookie signature`);this.key=$}}var o=($)=>{if(!$)return{summary:void 0};let{message:W,path:X,value:Z,type:J}=$,j=X.slice(1).replaceAll("/","."),Y=X==="";switch(J){case 42:return{...$,summary:Y?"Value should not be provided":`Property '${j}' should not be provided`};case 45:return{...$,summary:Y?"Value is missing":`Property '${j}' is missing`};case 50:let G=W.indexOf("'"),K=W.slice(G+1,W.indexOf("'",G+1));return{...$,summary:Y?"Value should be an email":`Property '${j}' should be ${K}`};case 54:return{...$,summary:`${W.slice(0,9)} property '${j}' to be ${W.slice(8)} but found: ${Z}`};case 62:let B=$.schema.anyOf.map((U)=>`'${U?.format??U.type}'`).join(", ");return{...$,summary:Y?`Value should be one of ${B}`:`Property '${j}' should be one of: ${B}`};default:return{summary:W,...$}}};class q extends Error{$;W;X;code="VALIDATION";status=422;constructor($,W,X){if(X&&typeof X==="object"&&X instanceof l)X=X.response;let Z=p0?void 0:("Errors"in W)?W.Errors(X).First():l0.Errors(W,X).First(),J=Z?.schema.error!==void 0?typeof Z.schema.error==="function"?Z.schema.error({type:$,validator:W,value:X,get errors(){return[...W.Errors(X)].map(o)}}):Z.schema.error:void 0,j=Z?.path||"root",Y="";if(J!==void 0)Y=typeof J==="object"?JSON.stringify(J):J+"";else if(p0)Y=JSON.stringify({type:"validation",on:$,summary:o(Z).summary,message:Z?.message,found:X});else{let G=W?.schema??W,K="Errors"in W?[...W.Errors(X)].map(o):[...l0.Errors(W,X)].map(o),B;try{B=l0.Create(G)}catch(U){B={type:"Could not create expected value",message:U?.message,error:U}}Y=JSON.stringify({type:"validation",on:$,summary:K[0]?.summary,property:j,message:Z?.message,expected:B,found:X,errors:K},null,2)}super(Y);this.type=$;this.validator=W;this.value=X;Object.setPrototypeOf(this,q.prototype)}get all(){return"Errors"in this.validator?[...this.validator.Errors(this.value)].map(o):[...l0.Errors(this.validator,this.value)].map(o)}static simplifyModel($){let W="schema"in $?$.schema:$;try{return l0.Create(W)}catch{return W}}get model(){return q.simplifyModel(this.validator)}toResponse($){return new Response(this.message,{status:400,headers:{...$,"content-type":"application/json"}})}}var E1={open($){$.data.open?.($)},message($,W){$.data.message?.($,W)},drain($){$.data.drain?.($)},close($,W,X){$.data.close?.($,W,X)}};class g0{$;W;validator;_validator;constructor($,W){this.raw=$;this.data=W;if(this.validator=$.data.validator,$.data.id)this.id=$.data.id;else this.id=J1().toString()}get id(){return this.raw.data.id}set id($){this.raw.data.id=$}get publish(){return($,W=void 0,X)=>{if(this.validator?.Check(W)===!1)throw new q("message",this.validator,W);if(typeof W==="object")W=JSON.stringify(W);return this.raw.publish($,W,X),this}}get send(){return($)=>{if(this.validator?.Check($)===!1)throw new q("message",this.validator,$);if(Buffer.isBuffer($))return this.raw.send($),this;if(typeof $==="object")$=JSON.stringify($);return this.raw.send($),this}}get subscribe(){return($)=>{return this.raw.subscribe($),this}}get unsubscribe(){return($)=>{return this.raw.unsubscribe($),this}}get cork(){return($)=>{return this.raw.cork($),this}}get close(){return()=>{return this.raw.close(),this}}get terminate(){return this.raw.terminate.bind(this.raw)}get isSubscribed(){return this.raw.isSubscribed.bind(this.raw)}get remoteAddress(){return this.raw.remoteAddress}}var q1="1.1.24";import{Value as t0}from"@sinclair/typebox/value";import{TypeBoxError as g3}from"@sinclair/typebox";var O0=k0(o0(),1),f0=/\+/g;function G1($){let W={};if(typeof $!=="string")return W;let X="",Z="",J=-1,j=-1,Y=0,G=$.length;for(let K=0;K<G;K++)switch($.charCodeAt(K)){case 38:let B=j>J;if(!B)j=K;if(X=$.slice(J+1,j),B||X.length>0){if(Y&1)X=X.replace(f0," ");if(Y&2)X=O0.default(X)||X;if(!W[X]){if(B){if(Z=$.slice(j+1,K),Y&4)Z=Z.replace(f0," ");if(Y&8)Z=O0.default(Z)||Z}W[X]=Z}}X="",Z="",J=K,j=K,Y=0;break;case 61:if(j<=J)j=K;else Y|=8;break;case 43:if(j>J)Y|=4;else Y|=1;break;case 37:if(j>J)Y|=8;else Y|=2;break}if(J<G){let K=j>J;if(X=$.slice(J+1,K?j:G),K||X.length>0){if(Y&1)X=X.replace(f0," ");if(Y&2)X=O0.default(X)||X;if(!W[X]){if(K){if(Z=$.slice(j+1,G),Y&4)Z=Z.replace(f0," ");if(Y&8)Z=O0.default(Z)||Z}W[X]=Z}}}return W}var i0=($)=>{let W={};if(typeof $!=="string")return W;let X=$.length,Z="",J="",j=-1,Y=-1,G=!1,K=!1,B=!1,U=!1,w=!1,F=0;for(let Q=0;Q<X+1;Q++){if(Q!==X)F=$.charCodeAt(Q);else F=38;switch(F){case 38:{if(w=Y>j,!w)Y=Q;if(Z=$.slice(j+1,Y),w||Z.length>0){if(B)Z=Z.replace(f0," ");if(G)Z=O0.default(Z)||Z;if(w){if(J=$.slice(Y+1,Q),U)J=J.replace(f0," ");if(K)J=O0.default(J)||J}let M=W[Z];if(M===void 0)W[Z]=J;else if(M.pop)M.push(J);else W[Z]=[M,J]}J="",j=Q,Y=Q,G=!1,K=!1,B=!1,U=!1;break}case 61:if(Y<=j)Y=Q;else K=!0;break;case 43:if(Y>j)U=!0;else B=!0;break;case 37:if(Y>j)K=!0;else G=!0;break}}return W};var O2=k0(o0(),1);var n0=Symbol("ElysiaTrace"),F0=()=>{let{promise:$,resolve:W}=Promise.withResolvers(),{promise:X,resolve:Z}=Promise.withResolvers(),{promise:J,resolve:j}=Promise.withResolvers(),Y=[],G=[];return[(K)=>{if(K)Y.push(K);return $},(K)=>{let B=[],U=[],w=null;for(let Q=0;Q<(K.total??0);Q++){let{promise:M,resolve:D}=Promise.withResolvers(),{promise:z,resolve:I}=Promise.withResolvers(),{promise:O,resolve:P}=Promise.withResolvers(),b=[],T=[];B.push((E)=>{if(E)b.push(E);return M}),U.push((E)=>{let r={...E,end:z,error:O,index:Q,onStop(L){if(L)T.push(L);return z}};D(r);for(let L=0;L<b.length;L++)b[L](r);return(L=null)=>{let f=performance.now();if(L)w=L;let R={end:f,error:L,get elapsed(){return f-E.begin}};for(let Y0=0;Y0<T.length;Y0++)T[Y0](R);I(f),P(L)}})}let F={...K,end:X,error:J,onEvent(Q){for(let M=0;M<B.length;M++)B[M](Q)},onStop(Q){if(Q)G.push(Q);return X}};W(F);for(let Q=0;Q<Y.length;Q++)Y[Q](F);return{resolveChild:U,resolve(Q=null){let M=performance.now();if(!Q&&w)Q=w;let D={end:M,error:Q,get elapsed(){return M-K.begin}};for(let z=0;z<G.length;z++)G[z](D);Z(M),j(Q)}}}]},A2=($)=>{return(W)=>{let[X,Z]=F0(),[J,j]=F0(),[Y,G]=F0(),[K,B]=F0(),[U,w]=F0(),[F,Q]=F0(),[M,D]=F0(),[z,I]=F0(),[O,P]=F0();return $({id:W[P0],context:W,set:W.set,onRequest:X,onParse:J,onTransform:Y,onBeforeHandle:K,onHandle:U,onAfterHandle:F,onMapResponse:z,onAfterResponse:O,onError:M}),{request:Z,parse:j,transform:G,beforeHandle:B,handle:w,afterHandle:Q,error:D,mapResponse:I,afterResponse:P}}};var f3=new Headers().toJSON,V2={optional:Symbol.for("TypeBox.Optional"),kind:Symbol.for("TypeBox.Kind")},t=($)=>{if(!$)return!1;let W=$?.schema;return!!W&&V2.optional in W},j0=($)=>{if(!$)return!1;let W=$?.schema??$;if(W.anyOf)return W.anyOf.some(j0);if(W.someOf)return W.someOf.some(j0);if(W.allOf)return W.allOf.some(j0);if(W.not)return W.not.some(j0);if(W.type==="object"){let X=W.properties;if("additionalProperties"in W)return W.additionalProperties;if("patternProperties"in W)return!1;for(let Z of Object.keys(X)){let J=X[Z];if(J.type==="object"){if(j0(J))return!0}else if(J.anyOf){for(let j=0;j<J.anyOf.length;j++)if(j0(J.anyOf[j]))return!0}return J.additionalProperties}return!1}return!1},R1=({context:$="c",trace:W,addFn:X})=>{if(!W.length)return()=>{return{resolveChild(){return()=>{}},resolve(){}}};for(let Z=0;Z<W.length;Z++)X(`let report${Z}, reportChild${Z}, reportErr${Z}, reportErrChild${Z}; let trace${Z} = ${$}[ELYSIA_TRACE]?.[${Z}] ?? trace[${Z}](${$});\n`);return(Z,{name:J,total:j=0}={})=>{if(!J)J="anonymous";let Y=Z==="error"?"reportErr":"report";for(let G=0;G<W.length;G++)X(`\n${Y}${G} = trace${G}.${Z}({id,event: '${Z}',name: '${J}',begin: performance.now(),total: ${j}})\n`);return{resolve(){for(let G=0;G<W.length;G++)X(`\n${Y}${G}.resolve()\n`)},resolveChild(G){for(let K=0;K<W.length;K++)X(`${Y}Child${K} = ${Y}${K}.resolveChild?.shift()?.({id,event: '${Z}',name: '${G}',begin: performance.now()})\n`);return(K)=>{for(let B=0;B<W.length;B++)if(K)X(`
3
- if (${K} instanceof Error)
4
- ${Y}Child${B}?.(${K})
5
- else
6
- ${Y}Child${B}?.()\n`);else X(`${Y}Child${B}?.()\n`)}}}}},y3=({injectResponse:$="",normalize:W=!1,validator:X})=>({composeValidation:(Z,J=`c.${Z}`)=>`c.set.status = 422; throw new ValidationError('${Z}', validator.${Z}, ${J})`,composeResponseValidation:(Z="r")=>{let J="\n"+$+"\n";J+=`if(${Z} instanceof ElysiaCustomStatusResponse) {
7
- c.set.status = ${Z}.code
8
- ${Z} = ${Z}.response
9
- }
10
-
11
- const isResponse = ${Z} instanceof Response\n\n`,J+="switch(c.set.status) {\n";for(let[j,Y]of Object.entries(X.response)){if(J+=`\tcase ${j}:
12
- if (!isResponse) {\n`,W&&"Clean"in Y&&!j0(Y))J+=`${Z} = validator.response['${j}'].Clean(${Z})\n`;J+=`if(validator.response['${j}'].Check(${Z}) === false) {
13
- c.set.status = 422
14
-
15
- throw new ValidationError('response', validator.response['${j}'], ${Z})
16
- }
17
-
18
- c.set.status = ${j}
19
- }
20
-
21
- break\n\n`}return J+="\n}\n",J}}),$5=Symbol.for("TypeBox.Kind");var V0=($,W)=>{if(!W)return;if(W.type==="object"){let X=W.properties;if(!X)return!1;for(let Z of Object.keys(X)){let J=X[Z];if($ in J)return!0;if(J.type==="object"){if(V0($,J))return!0}else if(J.anyOf){for(let j=0;j<J.anyOf.length;j++)if(V0($,J.anyOf[j]))return!0}}return!1}return $ in W},H1=Symbol.for("TypeBox.Transform"),S0=($)=>{if(!$)return;if($.type==="object"&&$.properties){let W=$.properties;for(let X of Object.keys(W)){let Z=W[X];if(Z.type==="object"){if(S0(Z))return!0}else if(Z.anyOf){for(let j=0;j<Z.anyOf.length;j++)if(S0(Z.anyOf[j]))return!0}if(H1 in Z)return!0}return!1}return H1 in $||$.properties&&H1 in $.properties},k3=/(?:return|=>) \S+\(/g,C0=($)=>{return($?.fn??$).constructor.name==="AsyncFunction"},k=($)=>{let W=$?.fn??$;if(W.constructor.name==="AsyncFunction")return!0;let X=W.toString();if(X.includes("=> response.clone("))return!1;if(X.includes("await"))return!0;if(X.includes("async"))return!0;return!!X.match(k3)},B1=($)=>{let W=$?.fn??$;return W.constructor.name==="AsyncGeneratorFunction"||W.constructor.name==="GeneratorFunction"},S2=({app:$,path:W,method:X,localHook:Z,hooks:J,validator:j,handler:Y,allowMeta:G=!1,inference:K})=>{let B=typeof Y==="function";if(!B){if(Y=x(Y,{headers:$.setHeaders??{}}),J.parse.length===0&&J.transform.length===0&&J.beforeHandle.length===0&&J.afterHandle.length===0)return Function("a","return function () { return a.clone() }")(Y)}let U=B?"handler(c)":"handler",w=J.afterResponse.length>0,F=J.trace.length>0,Q="";if(K=s0(Object.assign(Z,{handler:Y}),K),K.server)Q+=`\nObject.defineProperty(c, 'server', {
22
- get: function() { return getServer() }
23
- })\n`;if(K.body)Q+="let isParsing = false\n";j.createBody?.(),j.createQuery?.(),j.createHeaders?.(),j.createParams?.(),j.createCookie?.(),j.createResponse?.();let M=K.query||!!j.query,D=X!=="$INTERNALWS"&&X!=="GET"&&X!=="HEAD"&&(K.body||!!j.body||J.parse.length),z=$.setHeaders,I=z&&!!Object.keys(z).length,O=K.headers||j.headers,P=K.cookie||!!j.cookie,b=P?W1({validator:j.cookie,defaultConfig:$.config.cookie,dynamic:!!$.config.aot,config:j.cookie?.config??{},models:$.definitions.type}):void 0,T=b?.config,E="";if(T?.sign){if(!T.secrets)throw new Error(`t.Cookie required secret which is not set in (${X}) ${W}.`);let N=!T.secrets?void 0:typeof T.secrets==="string"?T.secrets:T.secrets[0];if(E+=`const _setCookie = c.set.cookie
24
- if(_setCookie) {`,T.sign===!0)E+=`for(const [key, cookie] of Object.entries(_setCookie)) {
25
- c.set.cookie[key].value = await signCookie(cookie.value, '${N}')
26
- }`;else for(let _ of T.sign)E+=`if(_setCookie['${_}']?.value) { c.set.cookie['${_}'].value = await signCookie(_setCookie['${_}'].value, '${N}') }\n`;E+="}\n"}let r=$.config.normalize,{composeValidation:L,composeResponseValidation:f}=y3({normalize:r,validator:j});if(O)Q+=f3?"c.headers = c.request.headers.toJSON()\n":`c.headers = {}
2
+ 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_dist=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.parse=parse;exports.serialize=serialize;var cookieNameRegExp=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,cookieValueRegExp=/^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/,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]*$/,__toString=Object.prototype.toString,NullObject=(()=>{let C=function(){};return C.prototype=Object.create(null),C})();function parse(str,options){let obj=new NullObject,len=str.length;if(len<2)return obj;let dec=options?.decode||decode,index=0;do{let eqIdx=str.indexOf("=",index);if(eqIdx===-1)break;let colonIdx=str.indexOf(";",index),endIdx=colonIdx===-1?len:colonIdx;if(eqIdx>endIdx){index=str.lastIndexOf(";",eqIdx-1)+1;continue}let keyStartIdx=startIndex(str,index,eqIdx),keyEndIdx=endIndex(str,eqIdx,keyStartIdx),key=str.slice(keyStartIdx,keyEndIdx);if(obj[key]===void 0){let valStartIdx=startIndex(str,eqIdx+1,endIdx),valEndIdx=endIndex(str,endIdx,valStartIdx),value=dec(str.slice(valStartIdx,valEndIdx));obj[key]=value}index=endIdx+1}while(index<len);return obj}function startIndex(str,index,max){do{let code=str.charCodeAt(index);if(code!==32&&code!==9)return index}while(++index<max);return max}function endIndex(str,index,min){while(index>min){let code=str.charCodeAt(--index);if(code!==32&&code!==9)return index+1}return min}function serialize(name,val,options){let enc=options?.encode||encodeURIComponent;if(!cookieNameRegExp.test(name))throw new TypeError(`argument name is invalid: ${name}`);let value=enc(val);if(!cookieValueRegExp.test(value))throw new TypeError(`argument val is invalid: ${val}`);let str=name+"="+value;if(!options)return str;if(options.maxAge!==void 0){if(!Number.isInteger(options.maxAge))throw new TypeError(`option maxAge is invalid: ${options.maxAge}`);str+="; Max-Age="+options.maxAge}if(options.domain){if(!domainValueRegExp.test(options.domain))throw new TypeError(`option domain is invalid: ${options.domain}`);str+="; Domain="+options.domain}if(options.path){if(!pathValueRegExp.test(options.path))throw new TypeError(`option path is invalid: ${options.path}`);str+="; Path="+options.path}if(options.expires){if(!isDate(options.expires)||!Number.isFinite(options.expires.valueOf()))throw new TypeError(`option expires is invalid: ${options.expires}`);str+="; Expires="+options.expires.toUTCString()}if(options.httpOnly)str+="; HttpOnly";if(options.secure)str+="; Secure";if(options.partitioned)str+="; Partitioned";if(options.priority)switch(typeof options.priority==="string"?options.priority.toLowerCase():options.sameSite){case"low":str+="; Priority=Low";break;case"medium":str+="; Priority=Medium";break;case"high":str+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${options.priority}`)}if(options.sameSite)switch(typeof options.sameSite==="string"?options.sameSite.toLowerCase():options.sameSite){case!0:case"strict":str+="; SameSite=Strict";break;case"lax":str+="; SameSite=Lax";break;case"none":str+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${options.sameSite}`)}return str}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 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(uri2){var percentPosition=uri2.indexOf("%");if(percentPosition===-1)return uri2;var length=uri2.length,decoded="",last=0,codepoint=0,startOfOctets=percentPosition,state=UTF8_ACCEPT;while(percentPosition>-1&&percentPosition<length){var high=hexCodeToInt(uri2[percentPosition+1],4),low=hexCodeToInt(uri2[percentPosition+2],0),byte2=high|low,type=UTF8_DATA[byte2];if(state=UTF8_DATA[256+state+type],codepoint=codepoint<<6|byte2&UTF8_DATA[364+type],state===UTF8_ACCEPT)decoded+=uri2.slice(last,startOfOctets),decoded+=codepoint<=65535?String.fromCharCode(codepoint):String.fromCharCode(55232+(codepoint>>10),56320+(codepoint&1023)),codepoint=0,last=percentPosition+3,percentPosition=startOfOctets=uri2.indexOf("%",last);else if(state===UTF8_REJECT)return null;else{if(percentPosition+=3,percentPosition<length&&uri2.charCodeAt(percentPosition)===37)continue;return null}}return decoded+uri2.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 U=(z,q)=>{let v=q?.length?{}:null;if(v)for(let K of q)v[K.part.charCodeAt(0)]=K;return{part:z,store:null,inert:v,params:null,wildcardStore:null}},_=(z,q)=>({...z,part:q}),$=(z)=>({name:z,store:null,inert:null});class Y{root={};history=[];static regex={static:/:.+?(?=\/|$)/,params:/:.+?(?=\/|$)/g,optionalParams:/:.+?\?(?=\/|$)/g};add(z,q,v,{ignoreError:K=!1,ignoreHistory:V=!1}={}){if(typeof q!=="string")throw new TypeError("Route path must be a string");if(q==="")q="/";else if(q[0]!=="/")q=`/${q}`;let S=q[q.length-1]==="*",D=q.match(Y.regex.optionalParams);if(D){let F=q.replaceAll("?","");this.add(z,F,v,{ignoreError:K});for(let B=0;B<D.length;B++){let A=q.replace("/"+D[B],"");this.add(z,A,v,{ignoreError:!0})}return v}if(D)q=q.replaceAll("?","");if(this.history.find(([F,B,A])=>F===z&&B===q))return v;if(S||D&&q.charCodeAt(q.length-1)===63)q=q.slice(0,-1);if(!V)this.history.push([z,q,v]);let G=q.split(Y.regex.static),J=q.match(Y.regex.params)||[];if(G[G.length-1]==="")G.pop();let b;if(!this.root[z])b=this.root[z]=U("/");else b=this.root[z];let Q=0;for(let F=0;F<G.length;++F){let B=G[F];if(F>0){let A=J[Q++].slice(1);if(b.params===null)b.params=$(A);else if(b.params.name!==A)if(K)return v;else throw new Error(`Cannot create route "${q}" with parameter "${A}" because a route already exists with a different parameter name ("${b.params.name}") in the same location`);let O=b.params;if(O.inert===null){b=O.inert=U(B);continue}b=O.inert}for(let A=0;;){if(A===B.length){if(A<b.part.length){let O=_(b,b.part.slice(A));Object.assign(b,U(B,[O]))}break}if(A===b.part.length){if(b.inert===null)b.inert={};let O=b.inert[B.charCodeAt(A)];if(O){b=O,B=B.slice(A),A=0;continue}let X=U(B.slice(A));b.inert[B.charCodeAt(A)]=X,b=X;break}if(B[A]!==b.part[A]){let O=_(b,b.part.slice(A)),X=U(B.slice(A));Object.assign(b,U(b.part.slice(0,A),[O,X])),b=X;break}++A}}if(Q<J.length){let B=J[Q].slice(1);if(b.params===null)b.params=$(B);else if(b.params.name!==B)if(K)return v;else throw new Error(`Cannot create route "${q}" with parameter "${B}" because a route already exists with a different parameter name ("${b.params.name}") in the same location`);if(b.params.store===null)b.params.store=v;return b.params.store}if(S){if(b.wildcardStore===null)b.wildcardStore=v;return b.wildcardStore}if(b.store===null)b.store=v;return b.store}find(z,q){let v=this.root[z];if(!v)return null;return Z(q,q.length,v,0)}}var Z=(z,q,v,K)=>{let V=v.part,S=V.length,D=K+S;if(S>1){if(D>q)return null;if(S<15){for(let G=1,J=K+1;G<S;++G,++J)if(V.charCodeAt(G)!==z.charCodeAt(J))return null}else if(z.slice(K,D)!==V)return null}if(D===q){if(v.store!==null)return{store:v.store,params:{}};if(v.wildcardStore!==null)return{store:v.wildcardStore,params:{"*":""}};return null}if(v.inert!==null){let G=v.inert[z.charCodeAt(D)];if(G!==void 0){let J=Z(z,q,G,D);if(J!==null)return J}}if(v.params!==null){let{store:G,name:J,inert:b}=v.params,Q=z.indexOf("/",D);if(Q!==D){if(Q===-1||Q>=q){if(G!==null){let F={};return F[J]=z.substring(D,q),{store:G,params:F}}}else if(b!==null){let F=Z(z,q,b,Q);if(F!==null)return F.params[J]=z.substring(D,Q),F}}}if(v.wildcardStore!==null)return{store:v.wildcardStore,params:{"*":z.substring(D,q)}};return null};var hasReturn=(fn)=>{let fnLiteral=typeof fn==="object"?fn.fn.toString():typeof fn==="string"?fn.toString():fn,parenthesisEnd=fnLiteral.indexOf(")");if(fnLiteral.charCodeAt(parenthesisEnd+2)===61&&fnLiteral.charCodeAt(parenthesisEnd+5)!==123)return!0;return fnLiteral.includes("return")},separateFunction=(code)=>{if(code.startsWith("async"))code=code.slice(5);code=code.trimStart();let index=-1;if(code.charCodeAt(0)===40){if(index=code.indexOf("=>",code.indexOf(")")),index!==-1){let bracketEndIndex=index;while(bracketEndIndex>0)if(code.charCodeAt(--bracketEndIndex)===41)break;let body=code.slice(index+2);if(body.charCodeAt(0)===32)body=body.trimStart();return[code.slice(1,bracketEndIndex),body,{isArrowReturn:body.charCodeAt(0)!==123}]}}if(code.startsWith("function")){index=code.indexOf("(");let end=code.indexOf(")");return[code.slice(index+1,end),code.slice(end+2),{isArrowReturn:!1}]}let start=code.indexOf("(");if(start!==-1){let sep=code.indexOf(`
3
+ `,2),parameter=code.slice(0,sep),end=parameter.lastIndexOf(")")+1,body=code.slice(sep+1);return[parameter.slice(start,end),"{"+body,{isArrowReturn:!1}]}let x=code.split(`
4
+ `,2);return[x[0],x[1],{isArrowReturn:!1}]},bracketPairRange=(parameter)=>{let start=parameter.indexOf("{");if(start===-1)return[-1,0];let end=start+1,deep=1;for(;end<parameter.length;end++){let char=parameter.charCodeAt(end);if(char===123)deep++;else if(char===125)deep--;if(deep===0)break}if(deep!==0)return[0,parameter.length];return[start,end+1]},bracketPairRangeReverse=(parameter)=>{let end=parameter.lastIndexOf("}");if(end===-1)return[-1,0];let start=end-1,deep=1;for(;start>=0;start--){let char=parameter.charCodeAt(start);if(char===125)deep++;else if(char===123)deep--;if(deep===0)break}if(deep!==0)return[-1,0];return[start,end+1]},removeColonAlias=(parameter)=>{while(!0){let start=parameter.indexOf(":");if(start===-1)break;let end=parameter.indexOf(",",start);if(end===-1)end=parameter.indexOf("}",start)-1;if(end===-2)end=parameter.length;parameter=parameter.slice(0,start)+parameter.slice(end)}return parameter},retrieveRootParamters=(parameter)=>{let hasParenthesis=!1;if(parameter.charCodeAt(0)===40)parameter=parameter.slice(1,-1);if(parameter.charCodeAt(0)===123)hasParenthesis=!0,parameter=parameter.slice(1,-1);parameter=parameter.replace(/( |\t|\n)/g,"").trim();let parameters=[];while(!0){let[start,end]=bracketPairRange(parameter);if(start===-1)break;if(parameters.push(parameter.slice(0,start-1)),parameter.charCodeAt(end)===44)end++;parameter=parameter.slice(end)}if(parameter=removeColonAlias(parameter),parameter)parameters=parameters.concat(parameter.split(","));let newParameters=[];for(let p of parameters){if(p.indexOf(",")===-1){newParameters.push(p);continue}for(let q of p.split(","))newParameters.push(q.trim())}return parameters=newParameters,{hasParenthesis,parameters}},findParameterReference=(parameter,inference)=>{let{parameters,hasParenthesis}=retrieveRootParamters(parameter);if(!inference.query&&parameters.includes("query"))inference.query=!0;if(!inference.headers&&parameters.includes("headers"))inference.headers=!0;if(!inference.body&&parameters.includes("body"))inference.body=!0;if(!inference.cookie&&parameters.includes("cookie"))inference.cookie=!0;if(!inference.set&&parameters.includes("set"))inference.set=!0;if(!inference.server&&parameters.includes("server"))inference.server=!0;if(hasParenthesis)return`{ ${parameters.join(", ")} }`;return parameters.join(", ")},findEndIndex=(type,content,index)=>{let newLineIndex=content.indexOf(type+`
5
+ `,index),newTabIndex=content.indexOf(type+"\t",index),commaIndex=content.indexOf(type+",",index),semicolonIndex=content.indexOf(type+";",index),emptyIndex=content.indexOf(type+" ",index);return[newLineIndex,newTabIndex,commaIndex,semicolonIndex,emptyIndex].filter((i)=>i>0).sort((a,b)=>a-b)[0]||-1};var findAlias=(type,body,depth=0)=>{if(depth>5)return[];let aliases=[],content=body;while(!0){let index=findEndIndex(" = "+type,content);if(index===-1){let lastIndex=content.indexOf(" = "+type);if(lastIndex+3+type.length!==content.length)break;index=lastIndex}let part=content.slice(0,index),variable=part.slice(part.lastIndexOf(" ")+1);if(variable==="}"){let[start,end]=bracketPairRangeReverse(part);aliases.push(removeColonAlias(content.slice(start,end))),content=content.slice(index+3+type.length);continue}while(variable.charCodeAt(0)===44)variable=variable.slice(1);while(variable.charCodeAt(0)===9)variable=variable.slice(1);if(!variable.includes("("))aliases.push(variable);content=content.slice(index+3+type.length)}for(let alias of aliases){if(alias.charCodeAt(0)===123)continue;let deepAlias=findAlias(alias,body);if(deepAlias.length>0)aliases.push(...deepAlias)}return aliases},extractMainParameter=(parameter)=>{if(!parameter)return;if(parameter.charCodeAt(0)!==123)return parameter;if(parameter=parameter.slice(2,-2),!parameter.includes(",")){if(parameter.includes("..."))return parameter.slice(parameter.indexOf("...")+3);return}let spreadIndex=parameter.indexOf("...");if(spreadIndex===-1)return;return parameter.slice(spreadIndex+3).trimEnd()},inferBodyReference=(code,aliases,inference)=>{let access=(type,alias)=>code.includes(alias+"."+type)||code.includes(alias+'["'+type+'"]')||code.includes(alias+"['"+type+"']");for(let alias of aliases){if(!alias)continue;if(alias.charCodeAt(0)===123){let parameters=retrieveRootParamters(alias).parameters;if(!inference.query&&parameters.includes("query"))inference.query=!0;if(!inference.headers&&parameters.includes("headers"))inference.headers=!0;if(!inference.body&&parameters.includes("body"))inference.body=!0;if(!inference.cookie&&parameters.includes("cookie"))inference.cookie=!0;if(!inference.set&&parameters.includes("set"))inference.set=!0;if(!inference.query&&parameters.includes("server"))inference.server=!0;continue}if(!inference.query&&access("query",alias))inference.query=!0;if(code.includes("return "+alias)||code.includes("return "+alias+".query"))inference.query=!0;if(!inference.headers&&access("headers",alias))inference.headers=!0;if(!inference.body&&access("body",alias))inference.body=!0;if(!inference.cookie&&access("cookie",alias))inference.cookie=!0;if(!inference.set&&access("set",alias))inference.set=!0;if(!inference.server&&access("server",alias))inference.server=!0;if(inference.query&&inference.headers&&inference.body&&inference.cookie&&inference.set&&inference.server)break}return aliases};var isContextPassToFunction=(context,body,inference)=>{try{let captureFunction=new RegExp(`(?:\\w)\\((?:.*)?${context}`,"gs");captureFunction.test(body);let nextChar=body.charCodeAt(captureFunction.lastIndex);if(nextChar===41||nextChar===44)return inference.query=!0,inference.headers=!0,inference.body=!0,inference.cookie=!0,inference.set=!0,inference.server=!0,!0;return!1}catch(error){return console.log("[Sucrose] warning: unexpected isContextPassToFunction error, you may continue development as usual but please report the following to maintainers:"),console.log("--- body ---"),console.log(body),console.log("--- context ---"),console.log(context),!0}},sucrose=(lifeCycle,inference={query:!1,headers:!1,body:!1,cookie:!1,set:!1,server:!1})=>{let events=[];if(lifeCycle.handler&&typeof lifeCycle.handler==="function")events.push(lifeCycle.handler);if(lifeCycle.request?.length)events.push(...lifeCycle.request);if(lifeCycle.beforeHandle?.length)events.push(...lifeCycle.beforeHandle);if(lifeCycle.parse?.length)events.push(...lifeCycle.parse);if(lifeCycle.error?.length)events.push(...lifeCycle.error);if(lifeCycle.transform?.length)events.push(...lifeCycle.transform);if(lifeCycle.afterHandle?.length)events.push(...lifeCycle.afterHandle);if(lifeCycle.mapResponse?.length)events.push(...lifeCycle.mapResponse);if(lifeCycle.afterResponse?.length)events.push(...lifeCycle.afterResponse);for(let e of events){if(!e)continue;let event="fn"in e?e.fn:e,[parameter,body,{isArrowReturn}]=separateFunction(event.toString()),rootParameters=findParameterReference(parameter,inference),mainParameter=extractMainParameter(rootParameters);if(mainParameter){let aliases=findAlias(mainParameter,body);if(aliases.splice(0,-1,mainParameter),!isContextPassToFunction(mainParameter,body,inference))inferBodyReference(body,aliases,inference);if(!inference.query&&body.includes("return "+mainParameter+".query"))inference.query=!0}if(inference.query&&inference.headers&&inference.body&&inference.cookie&&inference.set&&inference.server)break}return inference};import{Value as Value3}from"@sinclair/typebox/value";import{Kind as Kind2,TransformKind}from"@sinclair/typebox";import{Value as Value2}from"@sinclair/typebox/value";import{TypeCompiler as TypeCompiler3}from"@sinclair/typebox/compiler";import{Kind,TypeRegistry}from"@sinclair/typebox";import{TypeSystem}from"@sinclair/typebox/system";import{Type,FormatRegistry}from"@sinclair/typebox";import{TypeCompiler}from"@sinclair/typebox/compiler";import{Value}from"@sinclair/typebox/value";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 time(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 DATE_TIME_SEPARATOR=/t|\s/i;function getDateTime(strictTimeZone){let time=getTime(strictTimeZone);return function date_time(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}}import{TypeSystemPolicy,TypeSystem as TypeSystem2,TypeSystemDuplicateFormat,TypeSystemDuplicateTypeKind}from"@sinclair/typebox/system";import{TypeCompiler as TypeCompiler2,TypeCheck}from"@sinclair/typebox/compiler";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"))TypeSystem.Format("date",(value)=>{let temp=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"))TypeSystem.Format("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)TypeSystem.Format(formatName,(value)=>formatValue.test(value));else if(typeof formatValue==="function")TypeSystem.Format(formatName,formatValue)}});var t=Object.assign({},Type),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},validateFile=(options,value)=>{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"){if(!value.type.startsWith(options.extension))return!1}else{for(let i=0;i<options.extension.length;i++)if(value.type.startsWith(options.extension[i]))return!0;return!1}return!0},File2=TypeRegistry.Get("Files")??TypeSystem.Type("File",validateFile),Files=TypeRegistry.Get("Files")??TypeSystem.Type("Files",(options,value)=>{if(!Array.isArray(value))return validateFile(options,value);if(options.minItems&&value.length<options.minItems)return!1;if(options.maxItems&&value.length>options.maxItems)return!1;for(let i=0;i<value.length;i++)if(!validateFile(options,value[i]))return!1;return!0});if(!FormatRegistry.Has("numeric"))FormatRegistry.Set("numeric",(value)=>!!value&&!isNaN(+value));if(!FormatRegistry.Has("boolean"))FormatRegistry.Set("boolean",(value)=>value==="true"||value==="false");if(!FormatRegistry.Has("ObjectString"))FormatRegistry.Set("ObjectString",(value)=>{let start=value.charCodeAt(0);if(start===9||start===10||start===32)start=value.trimStart().charCodeAt(0);if(start!==123&&start!==91)return!1;try{return JSON.parse(value),!0}catch{return!1}});if(!FormatRegistry.Has("ArrayString"))FormatRegistry.Set("ArrayString",(value)=>{let start=value.charCodeAt(0);if(start===9||start===10||start===32)start=value.trimStart().charCodeAt(0);if(start!==123&&start!==91)return!1;try{return JSON.parse(value),!0}catch{return!1}});TypeRegistry.Set("UnionEnum",(schema,value)=>{return(typeof value==="number"||typeof value==="string"||value===null)&&schema.enum.includes(value)});var ElysiaType={Numeric:(property)=>{let schema=Type.Number(property);return t.Transform(t.Union([t.String({format:"numeric",default:0}),t.Number(property)],property)).Decode((value)=>{let number=+value;if(isNaN(number))return value;if(property&&!Value.Check(schema,number))throw new ValidationError("property",schema,number);return number}).Encode((value)=>value)},Date:(property)=>{let schema=Type.Date(property);return t.Transform(t.Union([Type.Date(property),t.String({format:"date",default:new Date().toISOString()}),t.String({format:"date-time",default:new Date().toISOString()}),t.Number()],property)).Decode((value)=>{if(typeof value==="number"){let date3=new Date(value);if(!Value.Check(schema,date3))throw new ValidationError("property",schema,date3);return date3}if(value instanceof Date)return value;let date2=new Date(value);if(!Value.Check(schema,date2))throw new ValidationError("property",schema,date2);return date2}).Encode((value)=>{if(typeof value==="string")return new Date(value);return value})},BooleanString:(property)=>{let schema=Type.Boolean(property);return t.Transform(t.Union([t.Boolean(property),t.String({format:"boolean",default:!1})],property)).Decode((value)=>{if(typeof value==="string")return value==="true";if(value!==void 0&&!Value.Check(schema,value))throw new ValidationError("property",schema,value);return value}).Encode((value)=>value)},ObjectString:(properties,options)=>{let schema=t.Object(properties,options),defaultValue=JSON.stringify(Value.Create(schema)),compiler;try{compiler=TypeCompiler.Compile(schema)}catch{}return t.Transform(t.Union([t.String({format:"ObjectString",default:defaultValue}),schema])).Decode((value)=>{if(typeof value==="string"){if(value.charCodeAt(0)!==123)throw new ValidationError("property",schema,value);try{value=JSON.parse(value)}catch{throw new ValidationError("property",schema,value)}if(compiler){if(!compiler.Check(value))throw new ValidationError("property",schema,value);return compiler.Decode(value)}if(!Value.Check(schema,value))throw new ValidationError("property",schema,value);return Value.Decode(schema,value)}return value}).Encode((value)=>{if(typeof value==="string")try{value=JSON.parse(value)}catch{throw new ValidationError("property",schema,value)}if(!Value.Check(schema,value))throw new ValidationError("property",schema,value);return JSON.stringify(value)})},ArrayString:(children={},options)=>{let schema=t.Array(children,options),defaultValue=JSON.stringify(Value.Create(schema)),compiler;try{compiler=TypeCompiler.Compile(schema)}catch{}return t.Transform(t.Union([t.String({format:"ArrayString",default:defaultValue}),schema])).Decode((value)=>{if(typeof value==="string"){if(value.charCodeAt(0)!==91)throw new ValidationError("property",schema,value);try{value=JSON.parse(value)}catch{throw new ValidationError("property",schema,value)}if(compiler){if(!compiler.Check(value))throw new ValidationError("property",schema,value);return compiler.Decode(value)}if(!Value.Check(schema,value))throw new ValidationError("property",schema,value);return Value.Decode(schema,value)}return value}).Encode((value)=>{if(typeof value==="string")try{value=JSON.parse(value)}catch{throw new ValidationError("property",schema,value)}if(!Value.Check(schema,value))throw new ValidationError("property",schema,value);return JSON.stringify(value)})},File:File2,Files:(options={})=>t.Transform(Files(options)).Decode((value)=>{if(Array.isArray(value))return value;return[value]}).Encode((value)=>value),Nullable:(schema)=>t.Union([schema,t.Null()]),MaybeEmpty:(schema)=>t.Union([schema,t.Null(),t.Undefined()]),Cookie:(properties,{domain,expires,httpOnly,maxAge,path,priority,sameSite,secure,secrets,sign,...options}={})=>{let v=t.Object(properties,options);return v.config={domain,expires,httpOnly,maxAge,path,priority,sameSite,secure,secrets,sign},v},UnionEnum:(values,options={})=>{let type=values.every((value)=>typeof value==="string")?{type:"string"}:values.every((value)=>typeof value==="number")?{type:"number"}:values.every((value)=>value===null)?{type:"null"}:{};if(values.some((x)=>typeof x==="object"&&x!==null))throw new Error("This type does not support objects or arrays");return{default:values[0],...options,[Kind]:"UnionEnum",...type,enum:values}}};t.BooleanString=ElysiaType.BooleanString;t.ObjectString=ElysiaType.ObjectString;t.ArrayString=ElysiaType.ArrayString;t.Numeric=ElysiaType.Numeric;t.File=(arg={})=>ElysiaType.File({default:"File",...arg,extension:arg?.type,type:"string",format:"binary"});t.Files=(arg={})=>ElysiaType.Files({...arg,elysiaMeta:"Files",default:"Files",extension:arg?.type,type:"array",items:{...arg,default:"Files",type:"string",format:"binary"}});t.Nullable=(schema)=>ElysiaType.Nullable(schema);t.MaybeEmpty=ElysiaType.MaybeEmpty;t.Cookie=ElysiaType.Cookie;t.Date=ElysiaType.Date;t.UnionEnum=ElysiaType.UnionEnum;var import_cookie2=__toESM(require_dist(),1);var import_cookie=__toESM(require_dist(),1),import_fast_decode_uri_component=__toESM(require_fast_decode_uri_component(),1);class Cookie{name;jar;initial;constructor(name,jar,initial={}){this.name=name;this.jar=jar;this.initial=initial}get cookie(){return this.jar[this.name]??this.initial}set cookie(jar){if(!(this.name in this.jar))this.jar[this.name]=this.initial;this.jar[this.name]=jar}get setCookie(){if(!(this.name in this.jar))this.jar[this.name]=this.initial;return this.jar[this.name]}set setCookie(jar){this.cookie=jar}get value(){return this.cookie.value}set value(value){this.setCookie.value=value}get expires(){return this.cookie.expires}set expires(expires){this.setCookie.expires=expires}get maxAge(){return this.cookie.maxAge}set maxAge(maxAge){this.setCookie.maxAge=maxAge}get domain(){return this.cookie.domain}set domain(domain){this.setCookie.domain=domain}get path(){return this.cookie.path}set path(path){this.setCookie.path=path}get secure(){return this.cookie.secure}set secure(secure){this.setCookie.secure=secure}get httpOnly(){return this.cookie.httpOnly}set httpOnly(httpOnly){this.setCookie.httpOnly=httpOnly}get sameSite(){return this.cookie.sameSite}set sameSite(sameSite){this.setCookie.sameSite=sameSite}get priority(){return this.cookie.priority}set priority(priority){this.setCookie.priority=priority}get partitioned(){return this.cookie.partitioned}set partitioned(partitioned){this.setCookie.partitioned=partitioned}get secrets(){return this.cookie.secrets}set secrets(secrets){this.setCookie.secrets=secrets}update(config){return this.setCookie=Object.assign(this.cookie,typeof config==="function"?config(this.cookie):config),this}set(config){return this.setCookie=Object.assign({...this.initial,value:this.value},typeof config==="function"?config(this.cookie):config),this}remove(){if(this.value===void 0)return;return this.set({expires:new Date(0),maxAge:0,value:""}),this}toString(){return typeof this.value==="object"?JSON.stringify(this.value):this.value?.toString()??""}}var createCookieJar=(set2,store,initial)=>{if(!set2.cookie)set2.cookie={};return new Proxy(store,{get(_2,key){if(key in store)return new Cookie(key,set2.cookie,Object.assign({},initial??{},store[key]));return new Cookie(key,set2.cookie,Object.assign({},initial))}})},parseCookie=async(set2,cookieString,{secrets,sign,...initial}={})=>{if(!cookieString)return createCookieJar(set2,{},initial);let isStringKey=typeof secrets==="string";if(sign&&sign!==!0&&!Array.isArray(sign))sign=[sign];let jar={},cookies=import_cookie.parse(cookieString);for(let[name,v]of Object.entries(cookies)){let value=import_fast_decode_uri_component.default(v);if(sign===!0||sign?.includes(name)){if(!secrets)throw new Error("No secret is provided to cookie plugin");if(isStringKey){let temp=await unsignCookie(value,secrets);if(temp===!1)throw new InvalidCookieSignature(name);value=temp}else{let decoded=!0;for(let i=0;i<secrets.length;i++){let temp=await unsignCookie(value,secrets[i]);if(temp!==!1){decoded=!0,value=temp;break}}if(!decoded)throw new InvalidCookieSignature(name)}}jar[name]={value}}return createCookieJar(set2,jar,initial)};var hasHeaderShorthand="toJSON"in new Headers,isNotEmpty=(obj)=>{if(!obj)return!1;for(let x in obj)return!0;return!1},handleFile=(response,set2)=>{let size=response.size;if(!set2&&size||size&&set2&&set2.status!==206&&set2.status!==304&&set2.status!==412&&set2.status!==416){if(set2&&isNotEmpty(set2.headers)){if(set2.headers instanceof Headers){if(hasHeaderShorthand)set2.headers=set2.headers.toJSON();else for(let[key,value]of set2.headers.entries())if(key in set2.headers)set2.headers[key]=value}return new Response(response,{status:set2.status,headers:Object.assign({"accept-ranges":"bytes","content-range":`bytes 0-${size-1}/${size}`},set2.headers)})}return new Response(response,{headers:{"accept-ranges":"bytes","content-range":`bytes 0-${size-1}/${size}`,"transfer-encoding":"chunked"}})}return new Response(response)},parseSetCookies=(headers,setCookie)=>{if(!headers)return headers;headers.delete("set-cookie");for(let i=0;i<setCookie.length;i++){let index=setCookie[i].indexOf("=");headers.append("set-cookie",`${setCookie[i].slice(0,index)}=${setCookie[i].slice(index+1)||""}`)}return headers},serializeCookie=(cookies)=>{if(!cookies||!isNotEmpty(cookies))return;let set2=[];for(let[key,property]of Object.entries(cookies)){if(!key||!property)continue;let value=property.value;if(value===void 0||value===null)continue;set2.push(import_cookie2.serialize(key,typeof value==="object"?JSON.stringify(value):value+"",property))}if(set2.length===0)return;if(set2.length===1)return set2[0];return set2},handleStream=async(generator,set2,request)=>{let init=generator.next();if(init instanceof Promise)init=await init;if(init.done){if(set2)return mapResponse(init.value,set2,request);return mapCompactResponse(init.value,request)}return new Response(new ReadableStream({async start(controller){let end=!1;if(request?.signal.addEventListener("abort",()=>{end=!0;try{controller.close()}catch{}}),init.value!==void 0&&init.value!==null)if(typeof init.value==="object")try{controller.enqueue(Buffer.from(JSON.stringify(init.value)))}catch{controller.enqueue(Buffer.from(init.value.toString()))}else controller.enqueue(Buffer.from(init.value.toString()));for await(let chunk of generator){if(end)break;if(chunk===void 0||chunk===null)continue;if(typeof chunk==="object")try{controller.enqueue(Buffer.from(JSON.stringify(chunk)))}catch{controller.enqueue(Buffer.from(chunk.toString()))}else controller.enqueue(Buffer.from(chunk.toString()));await new Promise((resolve)=>setTimeout(()=>resolve(),0))}try{controller.close()}catch{}}}),{...set2,headers:{"transfer-encoding":"chunked","content-type":"text/event-stream; charset=utf-8",...set2?.headers}})};async function*streamResponse(response){let body=response.body;if(!body)return;let reader=body.getReader(),decoder=new TextDecoder;try{while(!0){let{done,value}=await reader.read();if(done)break;yield decoder.decode(value)}}finally{reader.releaseLock()}}var mapResponse=(response,set2,request)=>{if(isNotEmpty(set2.headers)||set2.status!==200||set2.redirect||set2.cookie){if(typeof set2.status==="string")set2.status=StatusMap[set2.status];if(set2.redirect){if(set2.headers.Location=set2.redirect,!set2.status||set2.status<300||set2.status>=400)set2.status=302}if(set2.cookie&&isNotEmpty(set2.cookie)){let cookie=serializeCookie(set2.cookie);if(cookie)set2.headers["set-cookie"]=cookie}if(set2.headers["set-cookie"]&&Array.isArray(set2.headers["set-cookie"]))set2.headers=parseSetCookies(new Headers(set2.headers),set2.headers["set-cookie"]);switch(response?.constructor?.name){case"String":return new Response(response,set2);case"Blob":return handleFile(response,set2);case"Array":return Response.json(response,set2);case"Object":return Response.json(response,set2);case"ElysiaCustomStatusResponse":return set2.status=response.code,mapResponse(response.response,set2,request);case"ReadableStream":if(!set2.headers["content-type"]?.startsWith("text/event-stream"))set2.headers["content-type"]="text/event-stream; charset=utf-8";return request?.signal.addEventListener("abort",{handleEvent(){if(!request?.signal.aborted)response.cancel(request)}},{once:!0}),new Response(response,set2);case void 0:if(!response)return new Response("",set2);return Response.json(response,set2);case"Response":let isCookieSet=!1;if(set2.headers instanceof Headers)for(let key of set2.headers.keys())if(key==="set-cookie"){if(isCookieSet)continue;isCookieSet=!0;for(let cookie of set2.headers.getSetCookie())response.headers.append("set-cookie",cookie)}else response.headers.append(key,set2.headers?.get(key)??"");else for(let key in set2.headers)response.headers.append(key,set2.headers[key]);if(response.status!==set2.status)set2.status=response.status;if(response.headers.get("transfer-encoding")==="chunked")return handleStream(streamResponse(response),set2,request);return response;case"Error":return errorToResponse(response,set2);case"Promise":return response.then((x)=>mapResponse(x,set2));case"Function":return mapResponse(response(),set2);case"Number":case"Boolean":return new Response(response.toString(),set2);case"Cookie":if(response instanceof Cookie)return new Response(response.value,set2);return new Response(response?.toString(),set2);case"FormData":return new Response(response,set2);default:if(response instanceof Response){let isCookieSet2=!1;if(set2.headers instanceof Headers)for(let key of set2.headers.keys())if(key==="set-cookie"){if(isCookieSet2)continue;isCookieSet2=!0;for(let cookie of set2.headers.getSetCookie())response.headers.append("set-cookie",cookie)}else response.headers.append(key,set2.headers?.get(key)??"");else for(let key in set2.headers)response.headers.append(key,set2.headers[key]);if(hasHeaderShorthand)set2.headers=response.headers.toJSON();else for(let[key,value]of response.headers.entries())if(key in set2.headers)set2.headers[key]=value;return response}if(response instanceof Promise)return response.then((x)=>mapResponse(x,set2));if(response instanceof Error)return errorToResponse(response,set2);if(response instanceof ElysiaCustomStatusResponse)return set2.status=response.code,mapResponse(response.response,set2,request);if(typeof response?.next==="function")return handleStream(response,set2,request);if(typeof response?.then==="function")return response.then((x)=>mapResponse(x,set2));if(typeof response?.toResponse==="function")return mapResponse(response.toResponse(),set2);if("charCodeAt"in response){let code=response.charCodeAt(0);if(code===123||code===91){if(!set2.headers["Content-Type"])set2.headers["Content-Type"]="application/json";return new Response(JSON.stringify(response),set2)}}return new Response(response,set2)}}else switch(response?.constructor?.name){case"String":return new Response(response);case"Blob":return handleFile(response,set2);case"Array":return Response.json(response);case"Object":return Response.json(response,set2);case"ElysiaCustomStatusResponse":return set2.status=response.code,mapResponse(response.response,set2,request);case"ReadableStream":return request?.signal.addEventListener("abort",{handleEvent(){if(!request?.signal.aborted)response.cancel(request)}},{once:!0}),new Response(response,{headers:{"Content-Type":"text/event-stream; charset=utf-8"}});case void 0:if(!response)return new Response("");return new Response(JSON.stringify(response),{headers:{"content-type":"application/json"}});case"Response":if(response.headers.get("transfer-encoding")==="chunked")return handleStream(streamResponse(response),set2,request);return response;case"Error":return errorToResponse(response,set2);case"Promise":return response.then((x)=>{let r=mapCompactResponse(x,request);if(r!==void 0)return r;return new Response("")});case"Function":return mapCompactResponse(response(),request);case"Number":case"Boolean":return new Response(response.toString());case"Cookie":if(response instanceof Cookie)return new Response(response.value,set2);return new Response(response?.toString(),set2);case"FormData":return new Response(response,set2);default:if(response instanceof Response)return response;if(response instanceof Promise)return response.then((x)=>mapResponse(x,set2));if(response instanceof Error)return errorToResponse(response,set2);if(response instanceof ElysiaCustomStatusResponse)return set2.status=response.code,mapResponse(response.response,set2,request);if(typeof response?.next==="function")return handleStream(response,set2,request);if(typeof response?.then==="function")return response.then((x)=>mapResponse(x,set2));if(typeof response?.toResponse==="function")return mapResponse(response.toResponse(),set2);if("charCodeAt"in response){let code=response.charCodeAt(0);if(code===123||code===91){if(!set2.headers["Content-Type"])set2.headers["Content-Type"]="application/json";return new Response(JSON.stringify(response),set2)}}return new Response(response)}},mapEarlyResponse=(response,set2,request)=>{if(response===void 0||response===null)return;if(isNotEmpty(set2.headers)||set2.status!==200||set2.redirect||set2.cookie){if(typeof set2.status==="string")set2.status=StatusMap[set2.status];if(set2.redirect){if(set2.headers.Location=set2.redirect,!set2.status||set2.status<300||set2.status>=400)set2.status=302}if(set2.cookie&&isNotEmpty(set2.cookie)){let cookie=serializeCookie(set2.cookie);if(cookie)set2.headers["set-cookie"]=cookie}if(set2.headers["set-cookie"]&&Array.isArray(set2.headers["set-cookie"]))set2.headers=parseSetCookies(new Headers(set2.headers),set2.headers["set-cookie"]);switch(response?.constructor?.name){case"String":return new Response(response,set2);case"Blob":return handleFile(response,set2);case"Array":return Response.json(response,set2);case"Object":return Response.json(response,set2);case"ElysiaCustomStatusResponse":return set2.status=response.code,mapEarlyResponse(response.response,set2,request);case"ReadableStream":if(!set2.headers["content-type"]?.startsWith("text/event-stream"))set2.headers["content-type"]="text/event-stream; charset=utf-8";return request?.signal.addEventListener("abort",{handleEvent(){if(!request?.signal.aborted)response.cancel(request)}},{once:!0}),new Response(response,set2);case void 0:if(!response)return;return Response.json(response,set2);case"Response":let isCookieSet=!1;if(set2.headers instanceof Headers)for(let key of set2.headers.keys())if(key==="set-cookie"){if(isCookieSet)continue;isCookieSet=!0;for(let cookie of set2.headers.getSetCookie())response.headers.append("set-cookie",cookie)}else response.headers.append(key,set2.headers?.get(key)??"");else for(let key in set2.headers)response.headers.append(key,set2.headers[key]);if(response.status!==set2.status)set2.status=response.status;if(response.headers.get("transfer-encoding")==="chunked")return handleStream(streamResponse(response),set2,request);return response;case"Promise":return response.then((x)=>{let r=mapEarlyResponse(x,set2);if(r!==void 0)return r});case"Error":return errorToResponse(response,set2);case"Function":return mapEarlyResponse(response(),set2);case"Number":case"Boolean":return new Response(response.toString(),set2);case"FormData":return new Response(response);case"Cookie":if(response instanceof Cookie)return new Response(response.value,set2);return new Response(response?.toString(),set2);default:if(response instanceof Response){let isCookieSet2=!1;if(set2.headers instanceof Headers)for(let key of set2.headers.keys())if(key==="set-cookie"){if(isCookieSet2)continue;isCookieSet2=!0;for(let cookie of set2.headers.getSetCookie())response.headers.append("set-cookie",cookie)}else response.headers.append(key,set2.headers?.get(key)??"");else for(let key in set2.headers)response.headers.append(key,set2.headers[key]);if(response.status!==set2.status)set2.status=response.status;return response}if(response instanceof Promise)return response.then((x)=>mapEarlyResponse(x,set2));if(response instanceof Error)return errorToResponse(response,set2);if(response instanceof ElysiaCustomStatusResponse)return set2.status=response.code,mapEarlyResponse(response.response,set2,request);if(typeof response?.next==="function")return handleStream(response,set2,request);if(typeof response?.then==="function")return response.then((x)=>mapEarlyResponse(x,set2));if(typeof response?.toResponse==="function")return mapEarlyResponse(response.toResponse(),set2);if("charCodeAt"in response){let code=response.charCodeAt(0);if(code===123||code===91){if(!set2.headers["Content-Type"])set2.headers["Content-Type"]="application/json";return new Response(JSON.stringify(response),set2)}}return new Response(response,set2)}}else switch(response?.constructor?.name){case"String":return new Response(response);case"Blob":return handleFile(response,set2);case"Array":return Response.json(response);case"Object":return Response.json(response,set2);case"ElysiaCustomStatusResponse":return set2.status=response.code,mapEarlyResponse(response.response,set2,request);case"ReadableStream":return request?.signal.addEventListener("abort",{handleEvent(){if(!request?.signal.aborted)response.cancel(request)}},{once:!0}),new Response(response,{headers:{"Content-Type":"text/event-stream; charset=utf-8"}});case void 0:if(!response)return new Response("");return new Response(JSON.stringify(response),{headers:{"content-type":"application/json"}});case"Response":if(response.headers.get("transfer-encoding")==="chunked")return handleStream(streamResponse(response));return response;case"Promise":return response.then((x)=>{let r=mapEarlyResponse(x,set2);if(r!==void 0)return r});case"Error":return errorToResponse(response,set2);case"Function":return mapCompactResponse(response(),request);case"Number":case"Boolean":return new Response(response.toString());case"Cookie":if(response instanceof Cookie)return new Response(response.value,set2);return new Response(response?.toString(),set2);case"FormData":return new Response(response);default:if(response instanceof Response)return response;if(response instanceof Promise)return response.then((x)=>mapEarlyResponse(x,set2));if(response instanceof Error)return errorToResponse(response,set2);if(response instanceof ElysiaCustomStatusResponse)return set2.status=response.code,mapEarlyResponse(response.response,set2,request);if(typeof response?.next==="function")return handleStream(response,set2,request);if(typeof response?.then==="function")return response.then((x)=>mapEarlyResponse(x,set2));if(typeof response?.toResponse==="function")return mapEarlyResponse(response.toResponse(),set2);if("charCodeAt"in response){let code=response.charCodeAt(0);if(code===123||code===91){if(!set2.headers["Content-Type"])set2.headers["Content-Type"]="application/json";return new Response(JSON.stringify(response),set2)}}return new Response(response)}},mapCompactResponse=(response,request)=>{switch(response?.constructor?.name){case"String":return new Response(response);case"Blob":return handleFile(response);case"Array":return Response.json(response);case"Object":return Response.json(response);case"ElysiaCustomStatusResponse":return mapResponse(response.response,{status:response.code,headers:{}});case"ReadableStream":return request?.signal.addEventListener("abort",{handleEvent(){if(!request?.signal.aborted)response.cancel(request)}},{once:!0}),new Response(response,{headers:{"Content-Type":"text/event-stream; charset=utf-8"}});case void 0:if(!response)return new Response("");return new Response(JSON.stringify(response),{headers:{"content-type":"application/json"}});case"Response":if(response.headers.get("transfer-encoding")==="chunked")return handleStream(streamResponse(response));return response;case"Error":return errorToResponse(response);case"Promise":return response.then((x)=>mapCompactResponse(x,request));case"Function":return mapCompactResponse(response(),request);case"Number":case"Boolean":return new Response(response.toString());case"FormData":return new Response(response);default:if(response instanceof Response)return response;if(response instanceof Promise)return response.then((x)=>mapCompactResponse(x,request));if(response instanceof Error)return errorToResponse(response);if(response instanceof ElysiaCustomStatusResponse)return mapResponse(response.response,{status:response.code,headers:{}});if(typeof response?.next==="function")return handleStream(response,void 0,request);if(typeof response?.then==="function")return response.then((x)=>mapResponse(x,set));if(typeof response?.toResponse==="function")return mapCompactResponse(response.toResponse());if("charCodeAt"in response){let code=response.charCodeAt(0);if(code===123||code===91)return new Response(JSON.stringify(response),{headers:{"Content-Type":"application/json"}})}return new Response(response)}},errorToResponse=(error,set2)=>new Response(JSON.stringify({name:error?.name,message:error?.message,cause:error?.cause}),{status:set2?.status!==200?set2?.status??500:500,headers:set2?.headers}),createStaticHandler=(handle,hooks,setHeaders={})=>{if(typeof handle==="function")return;let response=mapResponse(handle,{headers:setHeaders});if(hooks.parse.length===0&&hooks.transform.length===0&&hooks.beforeHandle.length===0&&hooks.afterHandle.length===0)return response.clone.bind(response)},createNativeStaticHandler=(handle,hooks,setHeaders={})=>{if(typeof handle==="function"||handle instanceof Blob)return;let response=mapResponse(handle,{headers:setHeaders});if(hooks.parse.length===0&&hooks.transform.length===0&&hooks.beforeHandle.length===0&&hooks.afterHandle.length===0){if(!response.headers.has("content-type"))response.headers.append("content-type","text/plain;charset=utf-8");return response.clone.bind(response)}};var 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().startsWith("[object ")&&v.toString()!=="[object Object]"||isNotEmpty(Object.getPrototypeOf(v)),isObject=(item)=>item&&typeof item==="object"&&!Array.isArray(item),mergeDeep=(target,source,{skipKeys,override=!0}={})=>{if(!isObject(target)||!isObject(source))return target;for(let[key,value]of Object.entries(source)){if(skipKeys?.includes(key))continue;if(!isObject(value)||!(key in target)||isClass(value)){if(override||!(key in target))target[key]=value;continue}target[key]=mergeDeep(target[key],value,{skipKeys,override})}return target},mergeCookie=(a,b)=>{let{properties:_2,...target}=a??{},{properties:__,...source}=b??{};return mergeDeep(target,source)},mergeObjectArray=(a=[],b=[])=>{if(!a)return[];if(!b)return a;let array=[],checksums=[];if(!Array.isArray(a))a=[a];if(!Array.isArray(b))b=[b];for(let item of a)if(array.push(item),item.checksum)checksums.push(item.checksum);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),{}),mergeResponse=(a,b)=>{let isRecordNumber=(x)=>typeof x==="object"&&Object.keys(x).every(isNumericString);if(isRecordNumber(a)&&isRecordNumber(b))return{...a,...b};else if(a&&!isRecordNumber(a)&&isRecordNumber(b))return{200:a,...b};return b??a},mergeSchemaValidator=(a,b)=>{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)=>{return{...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(a?.beforeHandle,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)}},replaceSchemaType=(schema,options,root=!0)=>{if(!Array.isArray(options))return _replaceSchemaType(schema,options,root);for(let option of options)schema=_replaceSchemaType(schema,option,root);return schema},_replaceSchemaType=(schema,options,root=!0)=>{if(!schema)return schema;if(options.untilObjectFound&&!root&&schema.type==="object")return schema;let fromSymbol=options.from[Kind2];if(schema.oneOf){for(let i=0;i<schema.oneOf.length;i++)schema.oneOf[i]=_replaceSchemaType(schema.oneOf[i],options,root);return schema}if(schema.anyOf){for(let i=0;i<schema.anyOf.length;i++)schema.anyOf[i]=_replaceSchemaType(schema.anyOf[i],options,root);return schema}if(schema.allOf){for(let i=0;i<schema.allOf.length;i++)schema.allOf[i]=_replaceSchemaType(schema.allOf[i],options,root);return schema}if(schema.not){for(let i=0;i<schema.not.length;i++)schema.not[i]=_replaceSchemaType(schema.not[i],options,root);return schema}let isRoot=root&&!!options.excludeRoot;if(schema[Kind2]===fromSymbol){let{anyOf,oneOf,allOf,not,properties:properties2,items,...rest}=schema,to=options.to(rest),transform,composeProperties=(v)=>{if(properties2&&v.type==="object"){let newProperties={};for(let[key,value2]of Object.entries(properties2))newProperties[key]=_replaceSchemaType(value2,options,!1);return{...rest,...v,properties:newProperties}}if(items&&v.type==="array")return{...rest,...v,items:_replaceSchemaType(items,options,!1)};let value={...rest,...v};if(delete value.required,properties2&&v.type==="string"&&v.format==="ObjectString"&&v.default==="{}")transform=t.ObjectString(properties2,rest),value.default=JSON.stringify(Value2.Create(t.Object(properties2))),value.properties=properties2;if(items&&v.type==="string"&&v.format==="ArrayString"&&v.default==="[]")transform=t.ArrayString(items,rest),value.default=JSON.stringify(Value2.Create(t.Array(items))),value.items=items;return value};if(isRoot){if(properties2){let newProperties={};for(let[key,value]of Object.entries(properties2))newProperties[key]=_replaceSchemaType(value,options,!1);return{...rest,properties:newProperties}}else if(items?.map)return{...rest,items:items.map((v)=>_replaceSchemaType(v,options,!1))};return rest}if(to.anyOf)for(let i=0;i<to.anyOf.length;i++)to.anyOf[i]=composeProperties(to.anyOf[i]);else if(to.oneOf)for(let i=0;i<to.oneOf.length;i++)to.oneOf[i]=composeProperties(to.oneOf[i]);else if(to.allOf)for(let i=0;i<to.allOf.length;i++)to.allOf[i]=composeProperties(to.allOf[i]);else if(to.not)for(let i=0;i<to.not.length;i++)to.not[i]=composeProperties(to.not[i]);if(transform)to[TransformKind]=transform[TransformKind];if(to.anyOf||to.oneOf||to.allOf||to.not)return to;if(properties2){let newProperties={};for(let[key,value]of Object.entries(properties2))newProperties[key]=_replaceSchemaType(value,options,!1);return{...rest,...to,properties:newProperties}}else if(items?.map)return{...rest,...to,items:items.map((v)=>_replaceSchemaType(v,options,!1))};return{...rest,...to}}let properties=schema?.properties;if(properties&&root&&options.rootOnly!==!0)for(let[key,value]of Object.entries(properties))switch(value[Kind2]){case fromSymbol:let{anyOf,oneOf,allOf,not,type,...rest}=value,to=options.to(rest);if(to.anyOf)for(let i=0;i<to.anyOf.length;i++)to.anyOf[i]={...rest,...to.anyOf[i]};else if(to.oneOf)for(let i=0;i<to.oneOf.length;i++)to.oneOf[i]={...rest,...to.oneOf[i]};else if(to.allOf)for(let i=0;i<to.allOf.length;i++)to.allOf[i]={...rest,...to.allOf[i]};else if(to.not)for(let i=0;i<to.not.length;i++)to.not[i]={...rest,...to.not[i]};properties[key]={...rest,..._replaceSchemaType(rest,options,!1)};break;case"Object":case"Union":properties[key]=_replaceSchemaType(value,options,!1);break;default:if(value.items)for(let i=0;i<value.items.length;i++)value.items[i]=_replaceSchemaType(value.items[i],options,!1);else if(value.anyOf||value.oneOf||value.allOf||value.not)properties[key]=_replaceSchemaType(value,options,!1);break}return schema},createCleaner=(schema)=>(value)=>{if(typeof value==="object")try{return Value2.Clean(schema,structuredClone(value))}catch{try{return Value2.Clean(schema,value)}catch{return value}}return value},getSchemaValidator=(s,{models={},dynamic=!1,normalize=!1,additionalProperties=!1,coerce=!1,additionalCoerce=[]}={})=>{if(!s)return;if(typeof s==="string"&&!(s in models))return;let schema=typeof s==="string"?models[s]:s;if(coerce||additionalCoerce)if(coerce)schema=replaceSchemaType(schema,[{from:t.Number(),to:(options)=>t.Numeric(options),untilObjectFound:!0},{from:t.Boolean(),to:(options)=>t.BooleanString(options),untilObjectFound:!0},...Array.isArray(additionalCoerce)?additionalCoerce:[additionalCoerce]]);else schema=replaceSchemaType(schema,[...Array.isArray(additionalCoerce)?additionalCoerce:[additionalCoerce]]);if(schema.type==="object"&&"additionalProperties"in schema===!1)schema.additionalProperties=additionalProperties;if(dynamic){let validator={schema,references:"",checkFunc:()=>{},code:"",Check:(value)=>Value2.Check(schema,value),Errors:(value)=>Value2.Errors(schema,value),Code:()=>"",Clean:createCleaner(schema),Decode:(value)=>Value2.Decode(schema,value),Encode:(value)=>Value2.Encode(schema,value)};if(normalize&&schema.additionalProperties===!1)validator.Clean=createCleaner(schema);if(schema.config){if(validator.config=schema.config,validator?.schema?.config)delete validator.schema.config}return validator.parse=(v)=>{try{return validator.Decode(v)}catch(error){throw[...validator.Errors(v)].map(mapValueError)}},validator.safeParse=(v)=>{try{return{success:!0,data:validator.Decode(v),error:null}}catch(error){let errors=[...compiled.Errors(v)].map(mapValueError);return{success:!1,data:null,error:errors[0]?.summary,errors}}},validator}let compiled=TypeCompiler3.Compile(schema,Object.values(models));if(compiled.Clean=createCleaner(schema),schema.config){if(compiled.config=schema.config,compiled?.schema?.config)delete compiled.schema.config}return compiled.parse=(v)=>{try{return compiled.Decode(v)}catch(error){throw[...compiled.Errors(v)].map(mapValueError)}},compiled.safeParse=(v)=>{try{return{success:!0,data:compiled.Decode(v),error:null}}catch(error){let errors=[...compiled.Errors(v)].map(mapValueError);return{success:!1,data:null,error:errors[0]?.summary,errors}}},compiled},getResponseSchemaValidator=(s,{models={},dynamic=!1,normalize=!1,additionalProperties=!1})=>{if(!s)return;if(typeof s==="string"&&!(s in models))return;let maybeSchemaOrRecord=typeof s==="string"?models[s]:s,compile=(schema,references)=>{if(dynamic)return{schema,references:"",checkFunc:()=>{},code:"",Check:(value)=>Value2.Check(schema,value),Errors:(value)=>Value2.Errors(schema,value),Code:()=>"",Clean:createCleaner(schema),Decode:(value)=>Value2.Decode(schema,value),Encode:(value)=>Value2.Encode(schema,value)};let compiledValidator=TypeCompiler3.Compile(schema,references);if(normalize&&schema.additionalProperties===!1)compiledValidator.Clean=createCleaner(schema);return compiledValidator};if(Kind2 in maybeSchemaOrRecord){if("additionalProperties"in maybeSchemaOrRecord===!1)maybeSchemaOrRecord.additionalProperties=additionalProperties;return{200:compile(maybeSchemaOrRecord,Object.values(models))}}let record={};return Object.keys(maybeSchemaOrRecord).forEach((status)=>{let maybeNameOrSchema=maybeSchemaOrRecord[+status];if(typeof maybeNameOrSchema==="string"){if(maybeNameOrSchema in models){let schema=models[maybeNameOrSchema];schema.type==="object"&&"additionalProperties"in schema,record[+status]=Kind2 in schema?compile(schema,Object.values(models)):schema}return}if(maybeNameOrSchema.type==="object"&&"additionalProperties"in maybeNameOrSchema===!1)maybeNameOrSchema.additionalProperties=additionalProperties;record[+status]=Kind2 in maybeNameOrSchema?compile(maybeNameOrSchema,Object.values(models)):maybeNameOrSchema}),record},isBun=typeof Bun!=="undefined",hasHash=isBun&&typeof Bun.hash==="function",checksum=(s)=>{if(hasHash)return Bun.hash(s);let h=9;for(let i=0;i<s.length;)h=Math.imul(h^s.charCodeAt(i++),387420489);return h=h^h>>>9},_stringToStructureCoercions,stringToStructureCoercions=()=>{if(!_stringToStructureCoercions)_stringToStructureCoercions=[{from:t.Object({}),to:()=>t.ObjectString({}),excludeRoot:!0},{from:t.Array(t.Any()),to:()=>t.ArrayString(t.Any())}];return _stringToStructureCoercions},_coercePrimitiveRoot,coercePrimitiveRoot=()=>{if(!_coercePrimitiveRoot)_coercePrimitiveRoot=[{from:t.Number(),to:(options)=>t.Numeric(options),rootOnly:!0},{from:t.Boolean(),to:(options)=>t.BooleanString(options),rootOnly:!0}];return _coercePrimitiveRoot},getCookieValidator=({validator,defaultConfig={},config,dynamic,models})=>{let cookieValidator=getSchemaValidator(validator,{dynamic,models,additionalProperties:!0,coerce:!0,additionalCoerce:stringToStructureCoercions()});if(isNotEmpty(defaultConfig))if(cookieValidator)cookieValidator.config=mergeCookie(cookieValidator.config,config);else cookieValidator=getSchemaValidator(t.Cookie({}),{dynamic,models,additionalProperties:!0}),cookieValidator.config=defaultConfig;return cookieValidator},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(a.beforeHandle,injectChecksum(checksum2,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,"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(([k,v])=>[v,k]));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!=="string")throw new TypeError("Cookie value must be provided as a string.");if(secret===null)throw new 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"))},unsignCookie=async(input,secret)=>{if(typeof input!=="string")throw new TypeError("Signed cookie string must be provided.");if(secret===null)throw new TypeError("Secret key must be provided.");let tentativeValue=input.slice(0,input.lastIndexOf("."));return await signCookie(tentativeValue,secret)===input?tentativeValue:!1},traceBackMacro=(extension,property)=>{if(!extension||typeof extension!=="object"||!property)return;for(let[key,value]of Object.entries(property)){if(key in primitiveHookMap||!(key in extension))continue;let v=extension[key];if(typeof v==="function")v(value),delete property[key]}},createMacroManager=({globalHook,localHook})=>(stackName)=>(type,fn)=>{if(typeof type==="function")type={fn:type};if("fn"in type||Array.isArray(type)){if(!localHook[stackName])localHook[stackName]=[];if(typeof localHook[stackName]==="function")localHook[stackName]=[localHook[stackName]];if(Array.isArray(type))localHook[stackName]=localHook[stackName].concat(type);else localHook[stackName].push(type);return}let{insert="after",stack="local"}=type;if(typeof fn==="function")fn={fn};if(stack==="global")if(!Array.isArray(fn))if(insert==="before")globalHook[stackName].unshift(fn);else globalHook[stackName].push(fn);else if(insert==="before")globalHook[stackName]=fn.concat(globalHook[stackName]);else globalHook[stackName]=globalHook[stackName].concat(fn);else{if(!localHook[stackName])localHook[stackName]=[];if(typeof localHook[stackName]==="function")localHook[stackName]=[localHook[stackName]];if(!Array.isArray(fn))if(insert==="before")localHook[stackName].unshift(fn);else localHook[stackName].push(fn);else if(insert==="before")localHook[stackName]=fn.concat(localHook[stackName]);else localHook[stackName]=localHook[stackName].concat(fn)}},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;root=null;promises=[];constructor(onError=console.error){this.onError=onError}get size(){return this.promises.length}add(promise){return this.promises.push(promise),this.root||=this.drain(),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)=>{if(!fn)return fn;if(!Array.isArray(fn)){if(typeof fn==="function")return{fn};else if("fn"in fn)return fn}let fns=[];for(let x of fn)if(typeof x==="function")fns.push({fn:x});else if("fn"in x)fns.push(x);return fns},localHookToLifeCycleStore=(a)=>{return{...a,start:fnToContainer(a?.start),request:fnToContainer(a?.request),parse:fnToContainer(a?.parse),transform:fnToContainer(a?.transform),beforeHandle:fnToContainer(a?.beforeHandle),afterHandle:fnToContainer(a?.afterHandle),mapResponse:fnToContainer(a?.mapResponse),afterResponse:fnToContainer(a?.afterResponse),trace:fnToContainer(a?.trace),error:fnToContainer(a?.error),stop:fnToContainer(a?.stop)}},lifeCycleToFn=(a)=>{return{...a,start:a.start?.map((x)=>x.fn),request:a.request?.map((x)=>x.fn),parse:a.parse?.map((x)=>x.fn),transform:a.transform?.map((x)=>x.fn),beforeHandle:a.beforeHandle?.map((x)=>x.fn),afterHandle:a.afterHandle?.map((x)=>x.fn),afterResponse:a.afterResponse?.map((x)=>x.fn),mapResponse:a.mapResponse?.map((x)=>x.fn),trace:a.trace?.map((x)=>x.fn),error:a.error?.map((x)=>x.fn),stop:a.stop?.map((x)=>x.fn)}},cloneInference=(inference)=>({body:inference.body,cookie:inference.cookie,headers:inference.headers,query:inference.query,set:inference.set,server:inference.server}),redirect=(url,status=302)=>Response.redirect(url,status),ELYSIA_FORM_DATA=Symbol("ElysiaFormData"),ELYSIA_REQUEST_ID=Symbol("ElysiaRequestId"),form=(items)=>{let formData=new FormData;for(let[key,value]of Object.entries(items)){if(Array.isArray(value)){for(let v of value){if(value instanceof File)formData.append(key,value,value.name);formData.append(key,v)}continue}if(value instanceof File)formData.append(key,value,value.name);formData.append(key,value)}return formData},randomId=()=>crypto.getRandomValues(new Uint32Array(1))[0],deduplicateChecksum=(array)=>{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(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"};var env=typeof Bun!=="undefined"?Bun.env:typeof process!=="undefined"?process?.env:void 0,ERROR_CODE=Symbol("ElysiaErrorCode"),isProduction=(env?.NODE_ENV??env?.ENV)==="production";class ElysiaCustomStatusResponse{code;response;constructor(code,response){let res=response??(code in InvertedStatusMap?InvertedStatusMap[code]:code);this.code=StatusMap[code]??code,this.response=res}}var error=(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(){super("Failed to parse body")}}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=(error2)=>{if(!error2)return{summary:void 0};let{message,path,value,type}=error2,property=path.slice(1).replaceAll("/","."),isRoot=path==="";switch(type){case 42:return{...error2,summary:isRoot?"Value should not be provided":`Property '${property}' should not be provided`};case 45:return{...error2,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{...error2,summary:isRoot?"Value should be an email":`Property '${property}' should be ${format}`};case 54:return{...error2,summary:`${message.slice(0,9)} property '${property}' to be ${message.slice(8)} but found: ${value}`};case 62:let union=error2.schema.anyOf.map((x)=>`'${x?.format??x.type}'`).join(", ");return{...error2,summary:isRoot?`Value should be one of ${union}`:`Property '${property}' should be one of: ${union}`};default:return{summary:message,...error2}}};class ValidationError extends Error{type;validator;value;code="VALIDATION";status=422;constructor(type,validator,value){if(value&&typeof value==="object"&&value instanceof ElysiaCustomStatusResponse)value=value.response;let error2=isProduction?void 0:("Errors"in validator)?validator.Errors(value).First():Value3.Errors(validator,value).First(),customError=error2?.schema.error!==void 0?typeof error2.schema.error==="function"?error2.schema.error({type,validator,value,get errors(){return[...validator.Errors(value)].map(mapValueError)}}):error2.schema.error:void 0,accessor=error2?.path||"root",message="";if(customError!==void 0)message=typeof customError==="object"?JSON.stringify(customError):customError+"";else if(isProduction)message=JSON.stringify({type:"validation",on:type,summary:mapValueError(error2).summary,message:error2?.message,found:value});else{let schema=validator?.schema??validator,errors="Errors"in validator?[...validator.Errors(value)].map(mapValueError):[...Value3.Errors(validator,value)].map(mapValueError),expected;try{expected=Value3.Create(schema)}catch(error3){expected={type:"Could not create expected value",message:error3?.message,error:error3}}message=JSON.stringify({type:"validation",on:type,summary:errors[0]?.summary,property:accessor,message:error2?.message,expected,found:value,errors},null,2)}super(message);this.type=type;this.validator=validator;this.value=value;Object.setPrototypeOf(this,ValidationError.prototype)}get all(){return"Errors"in this.validator?[...this.validator.Errors(this.value)].map(mapValueError):[...Value3.Errors(this.validator,this.value)].map(mapValueError)}static simplifyModel(validator){let model="schema"in validator?validator.schema:validator;try{return Value3.Create(model)}catch{return model}}get model(){return ValidationError.simplifyModel(this.validator)}toResponse(headers){return new Response(this.message,{status:400,headers:{...headers,"content-type":"application/json"}})}}var websocket={open(ws){ws.data.open?.(ws)},message(ws,message){ws.data.message?.(ws,message)},drain(ws){ws.data.drain?.(ws)},close(ws,code,reason){ws.data.close?.(ws,code,reason)}};class ElysiaWS{raw;data;validator;_validator;constructor(raw,data){this.raw=raw;this.data=data;if(this.validator=raw.data.validator,raw.data.id)this.id=raw.data.id;else this.id=randomId().toString()}get id(){return this.raw.data.id}set id(newID){this.raw.data.id=newID}get publish(){return(topic,data=void 0,compress)=>{if(this.validator?.Check(data)===!1)throw new ValidationError("message",this.validator,data);if(typeof data==="object")data=JSON.stringify(data);return this.raw.publish(topic,data,compress),this}}get send(){return(data)=>{if(this.validator?.Check(data)===!1)throw new ValidationError("message",this.validator,data);if(Buffer.isBuffer(data))return this.raw.send(data),this;if(typeof data==="object")data=JSON.stringify(data);return this.raw.send(data),this}}get subscribe(){return(room)=>{return this.raw.subscribe(room),this}}get unsubscribe(){return(room)=>{return this.raw.unsubscribe(room),this}}get cork(){return(callback)=>{return this.raw.cork(callback),this}}get close(){return()=>{return this.raw.close(),this}}get terminate(){return this.raw.terminate.bind(this.raw)}get isSubscribed(){return this.raw.isSubscribed.bind(this.raw)}get remoteAddress(){return this.raw.remoteAddress}}var version="1.1.26";import{Value as Value4}from"@sinclair/typebox/value";import{TypeBoxError}from"@sinclair/typebox";var import_fast_decode_uri_component2=__toESM(require_fast_decode_uri_component(),1),plusRegex=/\+/g;function parseQueryFromURL(input){let result={};if(typeof input!=="string")return result;let key="",value="",startingIndex=-1,equalityIndex=-1,flags=0,l=input.length;for(let i=0;i<l;i++)switch(input.charCodeAt(i)){case 38:let hasBothKeyValuePair=equalityIndex>startingIndex;if(!hasBothKeyValuePair)equalityIndex=i;if(key=input.slice(startingIndex+1,equalityIndex),hasBothKeyValuePair||key.length>0){if(flags&1)key=key.replace(plusRegex," ");if(flags&2)key=import_fast_decode_uri_component2.default(key)||key;if(!result[key]){if(hasBothKeyValuePair){if(value=input.slice(equalityIndex+1,i),flags&4)value=value.replace(plusRegex," ");if(flags&8)value=import_fast_decode_uri_component2.default(value)||value}result[key]=value}}key="",value="",startingIndex=i,equalityIndex=i,flags=0;break;case 61:if(equalityIndex<=startingIndex)equalityIndex=i;else flags|=8;break;case 43:if(equalityIndex>startingIndex)flags|=4;else flags|=1;break;case 37:if(equalityIndex>startingIndex)flags|=8;else flags|=2;break}if(startingIndex<l){let hasBothKeyValuePair=equalityIndex>startingIndex;if(key=input.slice(startingIndex+1,hasBothKeyValuePair?equalityIndex:l),hasBothKeyValuePair||key.length>0){if(flags&1)key=key.replace(plusRegex," ");if(flags&2)key=import_fast_decode_uri_component2.default(key)||key;if(!result[key]){if(hasBothKeyValuePair){if(value=input.slice(equalityIndex+1,l),flags&4)value=value.replace(plusRegex," ");if(flags&8)value=import_fast_decode_uri_component2.default(value)||value}result[key]=value}}}return result}var parseQuery=(input)=>{let result={};if(typeof input!=="string")return result;let inputLength=input.length,key="",value="",startingIndex=-1,equalityIndex=-1,shouldDecodeKey=!1,shouldDecodeValue=!1,keyHasPlus=!1,valueHasPlus=!1,hasBothKeyValuePair=!1,c=0;for(let i=0;i<inputLength+1;i++){if(i!==inputLength)c=input.charCodeAt(i);else c=38;switch(c){case 38:{if(hasBothKeyValuePair=equalityIndex>startingIndex,!hasBothKeyValuePair)equalityIndex=i;if(key=input.slice(startingIndex+1,equalityIndex),hasBothKeyValuePair||key.length>0){if(keyHasPlus)key=key.replace(plusRegex," ");if(shouldDecodeKey)key=import_fast_decode_uri_component2.default(key)||key;if(hasBothKeyValuePair){if(value=input.slice(equalityIndex+1,i),valueHasPlus)value=value.replace(plusRegex," ");if(shouldDecodeValue)value=import_fast_decode_uri_component2.default(value)||value}let currentValue=result[key];if(currentValue===void 0)result[key]=value;else if(currentValue.pop)currentValue.push(value);else result[key]=[currentValue,value]}value="",startingIndex=i,equalityIndex=i,shouldDecodeKey=!1,shouldDecodeValue=!1,keyHasPlus=!1,valueHasPlus=!1;break}case 61:if(equalityIndex<=startingIndex)equalityIndex=i;else shouldDecodeValue=!0;break;case 43:if(equalityIndex>startingIndex)valueHasPlus=!0;else keyHasPlus=!0;break;case 37:if(equalityIndex>startingIndex)shouldDecodeValue=!0;else shouldDecodeKey=!0;break}}return result};var import_fast_decode_uri_component3=__toESM(require_fast_decode_uri_component(),1);var ELYSIA_TRACE=Symbol("ElysiaTrace"),createProcess=()=>{let{promise,resolve}=Promise.withResolvers(),{promise:end,resolve:resolveEnd}=Promise.withResolvers(),{promise:error2,resolve:resolveError}=Promise.withResolvers(),callbacks=[],callbacksEnd=[];return[(callback)=>{if(callback)callbacks.push(callback);return promise},(process2)=>{let processes=[],resolvers=[],groupError=null;for(let i=0;i<(process2.total??0);i++){let{promise:promise2,resolve:resolve2}=Promise.withResolvers(),{promise:end2,resolve:resolveEnd2}=Promise.withResolvers(),{promise:error3,resolve:resolveError2}=Promise.withResolvers(),callbacks2=[],callbacksEnd2=[];processes.push((callback)=>{if(callback)callbacks2.push(callback);return promise2}),resolvers.push((process3)=>{let result2={...process3,end:end2,error:error3,index:i,onStop(callback){if(callback)callbacksEnd2.push(callback);return end2}};resolve2(result2);for(let i2=0;i2<callbacks2.length;i2++)callbacks2[i2](result2);return(error4=null)=>{let end3=performance.now();if(error4)groupError=error4;let detail={end:end3,error:error4,get elapsed(){return end3-process3.begin}};for(let i2=0;i2<callbacksEnd2.length;i2++)callbacksEnd2[i2](detail);resolveEnd2(end3),resolveError2(error4)}})}let result={...process2,end,error:error2,onEvent(callback){for(let i=0;i<processes.length;i++)processes[i](callback)},onStop(callback){if(callback)callbacksEnd.push(callback);return end}};resolve(result);for(let i=0;i<callbacks.length;i++)callbacks[i](result);return{resolveChild:resolvers,resolve(error3=null){let end2=performance.now();if(!error3&&groupError)error3=groupError;let detail={end:end2,error:error3,get elapsed(){return end2-process2.begin}};for(let i=0;i<callbacksEnd.length;i++)callbacksEnd[i](detail);resolveEnd(end2),resolveError(error3)}}}]},createTracer=(traceListener)=>{return(context)=>{let[onRequest,resolveRequest]=createProcess(),[onParse,resolveParse]=createProcess(),[onTransform,resolveTransform]=createProcess(),[onBeforeHandle,resolveBeforeHandle]=createProcess(),[onHandle,resolveHandle]=createProcess(),[onAfterHandle,resolveAfterHandle]=createProcess(),[onError,resolveError]=createProcess(),[onMapResponse,resolveMapResponse]=createProcess(),[onAfterResponse,resolveAfterResponse]=createProcess();return traceListener({id:context[ELYSIA_REQUEST_ID],context,set:context.set,onRequest,onParse,onTransform,onBeforeHandle,onHandle,onAfterHandle,onMapResponse,onAfterResponse,onError}),{request:resolveRequest,parse:resolveParse,transform:resolveTransform,beforeHandle:resolveBeforeHandle,handle:resolveHandle,afterHandle:resolveAfterHandle,error:resolveError,mapResponse:resolveMapResponse,afterResponse:resolveAfterResponse}}};var headersHasToJSON=new Headers().toJSON,TypeBoxSymbol={optional:Symbol.for("TypeBox.Optional"),kind:Symbol.for("TypeBox.Kind")},isOptional=(validator)=>{if(!validator)return!1;let schema=validator?.schema;return!!schema&&TypeBoxSymbol.optional in schema},hasAdditionalProperties=(_schema)=>{if(!_schema)return!1;let schema=_schema?.schema??_schema;if(schema.anyOf)return schema.anyOf.some(hasAdditionalProperties);if(schema.someOf)return schema.someOf.some(hasAdditionalProperties);if(schema.allOf)return schema.allOf.some(hasAdditionalProperties);if(schema.not)return schema.not.some(hasAdditionalProperties);if(schema.type==="object"){let properties=schema.properties;if("additionalProperties"in schema)return schema.additionalProperties;if("patternProperties"in schema)return!1;for(let key of Object.keys(properties)){let property=properties[key];if(property.type==="object"){if(hasAdditionalProperties(property))return!0}else if(property.anyOf){for(let i=0;i<property.anyOf.length;i++)if(hasAdditionalProperties(property.anyOf[i]))return!0}return property.additionalProperties}return!1}return!1},createReport=({context="c",trace,addFn})=>{if(!trace.length)return()=>{return{resolveChild(){return()=>{}},resolve(){}}};for(let i=0;i<trace.length;i++)addFn(`let report${i}, reportChild${i}, reportErr${i}, reportErrChild${i}; let trace${i} = ${context}[ELYSIA_TRACE]?.[${i}] ?? trace[${i}](${context});
6
+ `);return(event,{name,total=0}={})=>{if(!name)name="anonymous";let reporter=event==="error"?"reportErr":"report";for(let i=0;i<trace.length;i++)addFn(`
7
+ ${reporter}${i} = trace${i}.${event}({id,event: '${event}',name: '${name}',begin: performance.now(),total: ${total}})
8
+ `);return{resolve(){for(let i=0;i<trace.length;i++)addFn(`
9
+ ${reporter}${i}.resolve()
10
+ `)},resolveChild(name2){for(let i=0;i<trace.length;i++)addFn(`${reporter}Child${i} = ${reporter}${i}.resolveChild?.shift()?.({id,event: '${event}',name: '${name2}',begin: performance.now()})
11
+ `);return(binding)=>{for(let i=0;i<trace.length;i++)if(binding)addFn(`
12
+ \tif (${binding} instanceof Error)
13
+ \t\t\t\t${reporter}Child${i}?.(${binding})
14
+ \t\telse
15
+ \t\t${reporter}Child${i}?.()
16
+ `);else addFn(`${reporter}Child${i}?.()
17
+ `)}}}}},composeValidationFactory=({injectResponse="",normalize=!1,validator})=>({composeValidation:(type,value=`c.${type}`)=>`c.set.status = 422; throw new ValidationError('${type}', validator.${type}, ${value})`,composeResponseValidation:(name="r")=>{let code=`
18
+ `+injectResponse+`
19
+ `;code+=`if(${name} instanceof ElysiaCustomStatusResponse) {
20
+ \t\t\tc.set.status = ${name}.code
21
+ \t\t\t${name} = ${name}.response
22
+ \t\t}
23
+
24
+ \t\tconst isResponse = ${name} instanceof Response
25
+
26
+ `,code+=`switch(c.set.status) {
27
+ `;for(let[status,value]of Object.entries(validator.response)){if(code+=`\tcase ${status}:
28
+ \t\t\t\tif (!isResponse) {
29
+ `,normalize&&"Clean"in value&&!hasAdditionalProperties(value))code+=`${name} = validator.response['${status}'].Clean(${name})
30
+ `;code+=`if(validator.response['${status}'].Check(${name}) === false) {
31
+ \t\t\t\t\tc.set.status = 422
32
+
33
+ \t\t\t\t\tthrow new ValidationError('response', validator.response['${status}'], ${name})
34
+ \t\t\t\t}
35
+
36
+ \t\t\t\tc.set.status = ${status}
37
+ \t\t\t}
38
+
39
+ \t\t\tbreak
40
+
41
+ `}return code+=`
42
+ }
43
+ `,code}}),KindSymbol=Symbol.for("TypeBox.Kind");var hasProperty=(expectedProperty,schema)=>{if(!schema)return;if(schema.type==="object"){let properties=schema.properties;if(!properties)return!1;for(let key of Object.keys(properties)){let property=properties[key];if(expectedProperty in property)return!0;if(property.type==="object"){if(hasProperty(expectedProperty,property))return!0}else if(property.anyOf){for(let i=0;i<property.anyOf.length;i++)if(hasProperty(expectedProperty,property.anyOf[i]))return!0}}return!1}return expectedProperty in schema},TransformSymbol=Symbol.for("TypeBox.Transform"),hasTransform=(schema)=>{if(!schema)return;if(schema.type==="object"&&schema.properties){let properties=schema.properties;for(let key of Object.keys(properties)){let property=properties[key];if(property.type==="object"){if(hasTransform(property))return!0}else if(property.anyOf){for(let i=0;i<property.anyOf.length;i++)if(hasTransform(property.anyOf[i]))return!0}if(TransformSymbol in property)return!0}return!1}return TransformSymbol in schema||schema.properties&&TransformSymbol in schema.properties},matchFnReturn=/(?:return|=>) \S+\(/g,isAsyncName=(v)=>{return(v?.fn??v).constructor.name==="AsyncFunction"},isAsync=(v)=>{let fn=v?.fn??v;if(fn.constructor.name==="AsyncFunction")return!0;let literal=fn.toString();if(literal.includes("=> response.clone("))return!1;if(literal.includes("await"))return!0;if(literal.includes("async"))return!0;return!!literal.match(matchFnReturn)},isGenerator=(v)=>{let fn=v?.fn??v;return fn.constructor.name==="AsyncGeneratorFunction"||fn.constructor.name==="GeneratorFunction"},composeHandler=({app,path,method,localHook,hooks,validator,handler,allowMeta=!1,inference})=>{let isHandleFn=typeof handler==="function";if(!isHandleFn){if(handler=mapResponse(handler,{headers:app.setHeaders??{}}),hooks.parse.length===0&&hooks.transform.length===0&&hooks.beforeHandle.length===0&&hooks.afterHandle.length===0)return Function("a","return function () { return a.clone() }")(handler)}let handle=isHandleFn?"handler(c)":"handler",hasAfterResponse=hooks.afterResponse.length>0,hasTrace=hooks.trace.length>0,fnLiteral="";if(inference=sucrose(Object.assign(localHook,{handler}),inference),inference.server)fnLiteral+=`
44
+ Object.defineProperty(c, 'server', {
45
+ \t\t\tget: function() { return getServer() }
46
+ \t\t})
47
+ `;if(inference.body)fnLiteral+=`let isParsing = false
48
+ `;validator.createBody?.(),validator.createQuery?.(),validator.createHeaders?.(),validator.createParams?.(),validator.createCookie?.(),validator.createResponse?.();let hasQuery=inference.query||!!validator.query,hasBody=method!=="$INTERNALWS"&&method!=="GET"&&method!=="HEAD"&&(inference.body||!!validator.body||hooks.parse.length),defaultHeaders=app.setHeaders,hasDefaultHeaders=defaultHeaders&&!!Object.keys(defaultHeaders).length,hasHeaders=inference.headers||validator.headers,hasCookie=inference.cookie||!!validator.cookie,cookieValidator=hasCookie?getCookieValidator({validator:validator.cookie,defaultConfig:app.config.cookie,dynamic:!!app.config.aot,config:validator.cookie?.config??{},models:app.definitions.type}):void 0,cookieMeta=cookieValidator?.config,encodeCookie="";if(cookieMeta?.sign){if(!cookieMeta.secrets)throw new Error(`t.Cookie required secret which is not set in (${method}) ${path}.`);let secret=!cookieMeta.secrets?void 0:typeof cookieMeta.secrets==="string"?cookieMeta.secrets:cookieMeta.secrets[0];if(encodeCookie+=`const _setCookie = c.set.cookie
49
+ \t\tif(_setCookie) {`,cookieMeta.sign===!0)encodeCookie+=`for(const [key, cookie] of Object.entries(_setCookie)) {
50
+ \t\t\t\tc.set.cookie[key].value = await signCookie(cookie.value, '${secret}')
51
+ \t\t\t}`;else for(let name of cookieMeta.sign)encodeCookie+=`if(_setCookie['${name}']?.value) { c.set.cookie['${name}'].value = await signCookie(_setCookie['${name}'].value, '${secret}') }
52
+ `;encodeCookie+=`}
53
+ `}let normalize=app.config.normalize,{composeValidation,composeResponseValidation}=composeValidationFactory({normalize,validator});if(hasHeaders)fnLiteral+=headersHasToJSON?`c.headers = c.request.headers.toJSON()
54
+ `:`c.headers = {}
27
55
  for (const [key, value] of c.request.headers.entries())
28
- c.headers[key] = value
29
- `;if(P){let N=(A,S)=>{let C=T?.[A]??S;if(!C)return typeof S==="string"?`${A}: "${S}",`:`${A}: ${S},`;if(typeof C==="string")return`${A}: '${C}',`;if(C instanceof Date)return`${A}: new Date(${C.getTime()}),`;return`${A}: ${C},`},_=T?`{
30
- secrets: ${T.secrets!==void 0?typeof T.secrets==="string"?`'${T.secrets}'`:"["+T.secrets.reduce((A,S)=>A+`'${S}',`,"")+"]":"undefined"},
31
- sign: ${T.sign===!0?!0:T.sign!==void 0?"["+T.sign.reduce((A,S)=>A+`'${S}',`,"")+"]":"undefined"},
32
- ${N("domain")}
33
- ${N("expires")}
34
- ${N("httpOnly")}
35
- ${N("maxAge")}
36
- ${N("path","/")}
37
- ${N("priority")}
38
- ${N("sameSite")}
39
- ${N("secure")}
40
- }`:"undefined";if(O)Q+=`\nc.cookie = await parseCookie(c.set, c.headers.cookie, ${_})\n`;else Q+=`\nc.cookie = await parseCookie(c.set, c.request.headers.get('cookie'), ${_})\n`}if(M){let N=[];if(j.query&&j.query.schema.type==="object"){let _=j.query.schema.properties;if(!j0(j.query))for(let[A,S]of Object.entries(_)){let C=S;if(C&&V2.optional in C&&C.type==="array"&&C.items)C=C.items;let{type:a,anyOf:H}=C,U0=a==="array"||H?.some((u)=>u.type==="string"&&u.format==="ArrayString");N.push({key:A,isArray:U0,isNestedObjectArray:U0&&C.items?.type==="object"||!!C.items?.anyOf?.some((u)=>u.type==="object"||u.type==="array"),isObject:a==="object"||H?.some((u)=>u.type==="string"&&u.format==="ArrayString"),anyOf:!!H})}}if(!N.length)Q+=`if(c.qi === -1) {
41
- c.query = {}
42
- } else {
43
- c.query = parseQueryFromURL(c.url.slice(c.qi + 1))
44
- }`;else Q+=`if(c.qi !== -1) {
45
- let url = '&' + c.url.slice(c.qi + 1)
46
-
47
- ${N.map(({key:_,isArray:A,isObject:S,isNestedObjectArray:C,anyOf:a},H)=>{let U0=`${H===0?"let":""} memory = url.indexOf('&${_}=')
48
- let a${H}\n`;if(A)return U0+(C?`while (memory !== -1) {
49
- const start = memory + ${_.length+2}
50
- memory = url.indexOf('&', start)
51
-
52
- if(a${H} === undefined)
53
- a${H} = ''
54
- else
55
- a${H} += ','
56
-
57
- let temp
58
-
59
- if(memory === -1) temp = decodeURIComponent(url.slice(start).replace(/\\+/g, ' '))
60
- else temp = decodeURIComponent(url.slice(start, memory).replace(/\\+/g, ' '))
61
-
62
- const charCode = temp.charCodeAt(0)
63
- if(charCode !== 91 && charCode !== 123)
64
- temp = '"' + temp + '"'
65
-
66
- a${H} += temp
67
-
68
- if(memory === -1) break
69
-
70
- memory = url.indexOf('&${_}=', memory)
71
- if(memory === -1) break
72
- }
73
-
74
- try {
75
- if(a${H}.charCodeAt(0) === 91)
76
- a${H} = JSON.parse(a${H})
77
- else
78
- a${H} = JSON.parse('[' + a${H} + ']')
79
- } catch {}\n`:`while (memory !== -1) {
80
- const start = memory + ${_.length+2}
81
- memory = url.indexOf('&', start)
82
-
83
- if(a${H} === undefined)
84
- a${H} = []
85
-
86
- if(memory === -1) {
87
- a${H}.push(decodeURIComponent(url.slice(start)).replace(/\\+/g, ' '))
88
- break
89
- }
90
- else a${H}.push(decodeURIComponent(url.slice(start, memory)).replace(/\\+/g, ' '))
91
-
92
- memory = url.indexOf('&${_}=', memory)
93
- if(memory === -1) break
94
- }\n`);if(S)return U0+`if (memory !== -1) {
95
- const start = memory + ${_.length+2}
96
- memory = url.indexOf('&', start)
97
-
98
- if(memory === -1) a${H} = decodeURIComponent(url.slice(start).replace(/\\+/g, ' '))
99
- else a${H} = decodeURIComponent(url.slice(start, memory).replace(/\\+/g, ' '))
100
-
101
- if (a${H} !== undefined) {
102
- try {
103
- a${H} = JSON.parse(a${H})
104
- } catch {}
105
- }
106
- }`;return U0+`if (memory !== -1) {
107
- const start = memory + ${_.length+2}
108
- memory = url.indexOf('&', start)
109
-
110
- if(memory === -1) a${H} = decodeURIComponent(url.slice(start).replace(/\\+/g, ' '))
111
- else {
112
- a${H} = decodeURIComponent(url.slice(start, memory).replace(/\\+/g, ' '))
113
-
114
- ${a?`
115
- let deepMemory = url.indexOf('&${_}=', memory)
116
-
117
- if(deepMemory !== -1) {
118
- a${H} = [a${H}]
119
- let first = true
120
-
121
- while(true) {
122
- const start = deepMemory + ${_.length+2}
123
- if(first)
124
- first = false
125
- else
126
- deepMemory = url.indexOf('&', start)
127
-
128
- let value
129
- if(deepMemory === -1) value = decodeURIComponent(url.slice(start).replace(/\\+/g, ' '))
130
- else value = decodeURIComponent(url.slice(start, deepMemory).replace(/\\+/g, ' '))
131
-
132
- const vStart = value.charCodeAt(0)
133
- const vEnd = value.charCodeAt(value.length - 1)
134
-
135
- if((vStart === 91 && vEnd === 93) || (vStart === 123 && vEnd === 125))
136
- try {
137
- a${H}.push(JSON.parse(value))
138
- } catch {
139
- a${H}.push(value)
140
- }
141
-
142
- if(deepMemory === -1) break
143
- }
144
- }
145
- `:""}
146
- }
147
- }`}).join("\n")}
148
-
149
- c.query = {
150
- ${N.map(({key:_},A)=>`'${_}': a${A}`).join(", ")}
151
- }
152
- } else {
153
- c.query = {}
154
- }`}if(F)Q+="\nconst id = c[ELYSIA_REQUEST_ID]\n";let R=R1({trace:J.trace,addFn:(N)=>{Q+=N}});Q+="\ntry {\n";let Y0=typeof Y==="function"&&k(Y),e=F||J.afterResponse.length>0?"c.response = ":"",y0=P||D||Y0||J.parse.length>0||J.afterHandle.some(k)||J.beforeHandle.some(k)||J.transform.some(k)||J.mapResponse.some(k),L2=(typeof Y==="function"?B1(Y):!1)||J.beforeHandle.some(B1)||J.afterHandle.some(B1)||J.transform.some(B1),r0=K.cookie||K.set||O||F||j.response||B&&I||L2,s=", c.request";Q+=`c.route = \`${W}\`\n`;let T2=R("parse",{total:J.parse.length});if(D){let N=J.parse.length||K.body||j.body;if(Q+="isParsing = true\n",J.type&&!J.parse.length)switch(J.type){case"json":case"application/json":if(t(j.body))Q+="try { c.body = await c.request.json() } catch {}";else Q+="c.body = await c.request.json()";break;case"text":case"text/plain":Q+="c.body = await c.request.text()\n";break;case"urlencoded":case"application/x-www-form-urlencoded":Q+="c.body = parseQuery(await c.request.text())\n";break;case"arrayBuffer":case"application/octet-stream":Q+="c.body = await c.request.arrayBuffer()\n";break;case"formdata":case"multipart/form-data":if(Q+="c.body = {}\n",t(j.body))Q+="let form; try { form = await c.request.formData() } catch {}";else Q+="const form = await c.request.formData()";Q+=`\nif(form)
155
- for (const key of form.keys()) {
156
- if (c.body[key])
157
- continue
158
-
159
- const value = form.getAll(key)
160
- if (value.length === 1)
161
- c.body[key] = value[0]
162
- else c.body[key] = value
163
- } else form = {}\n`;break}else if(N){if(Q+="\n",Q+=O?"let contentType = c.headers['content-type']":"let contentType = c.request.headers.get('content-type')",Q+=`
164
- if (contentType) {
165
- const index = contentType.indexOf(';')
166
- if (index !== -1) contentType = contentType.substring(0, index)\n
167
- c.contentType = contentType\n`,J.parse.length){Q+="let used = false\n";let _=R("parse",{total:J.parse.length});for(let A=0;A<J.parse.length;A++){let S=_.resolveChild(J.parse[A].fn.name),C=`bo${A}`;if(A!==0)Q+="if(!used) {\n";if(Q+=`let ${C} = parse[${A}](c, contentType)\n`,Q+=`if(${C} instanceof Promise) ${C} = await ${C}\n`,Q+=`if(${C} !== undefined) { c.body = ${C}; used = true }\n`,S(),A!==0)Q+="}"}_.resolve()}if(Q+="\ndelete c.contentType\n",J.parse.length)Q+="if (!used) {";if(J.type&&!Array.isArray(J.type))switch(J.type){case"json":case"application/json":if(t(j.body))Q+="try { c.body = await c.request.json() } catch {}";else Q+="c.body = await c.request.json()";break;case"text":case"text/plain":Q+="c.body = await c.request.text()\n";break;case"urlencoded":case"application/x-www-form-urlencoded":Q+="c.body = parseQuery(await c.request.text())\n";break;case"arrayBuffer":case"application/octet-stream":Q+="c.body = await c.request.arrayBuffer()\n";break;case"formdata":case"multipart/form-data":Q+=`c.body = {}
168
-
169
- const form = await c.request.formData()
170
- for (const key of form.keys()) {
171
- if (c.body[key])
172
- continue
173
-
174
- const value = form.getAll(key)
175
- if (value.length === 1)
176
- c.body[key] = value[0]
177
- else c.body[key] = value
178
- }\n`;break}else Q+=`
179
- switch (contentType) {
180
- case 'application/json':
181
- ${t(j.body)?"try { c.body = await c.request.json() } catch {}":"c.body = await c.request.json()"}
182
- break
183
-
184
- case 'text/plain':
185
- c.body = await c.request.text()
186
- break
187
-
188
- case 'application/x-www-form-urlencoded':
189
- c.body = parseQuery(await c.request.text())
190
- break
191
-
192
- case 'application/octet-stream':
193
- c.body = await c.request.arrayBuffer();
194
- break
195
-
196
- case 'multipart/form-data':
197
- c.body = {}
198
-
199
- const form = await c.request.formData()
200
- for (const key of form.keys()) {
201
- if (c.body[key])
202
- continue
203
-
204
- const value = form.getAll(key)
205
- if (value.length === 1)
206
- c.body[key] = value[0]
207
- else c.body[key] = value
208
- }
209
-
210
- break
211
- }`;if(J.parse.length)Q+="}";Q+="}\n"}Q+="\nisParsing = false\n"}if(T2.resolve(),J?.transform){let N=R("transform",{total:J.transform.length});if(J.transform.length)Q+="\nlet transformed\n";for(let _=0;_<J.transform.length;_++){let A=J.transform[_],S=N.resolveChild(A.fn.name);if(Q+=k(A)?`transformed = await transform[${_}](c)\n`:`transformed = transform[${_}](c)\n`,A.subType==="mapDerive")Q+=`if(transformed instanceof ElysiaCustomStatusResponse)
212
- throw transformed
213
- else {
214
- transformed.request = c.request
215
- transformed.store = c.store
216
- transformed.qi = c.qi
217
- transformed.path = c.path
218
- transformed.url = c.url
219
- transformed.redirect = c.redirect
220
- transformed.set = c.set
221
- transformed.error = c.error
222
-
223
- c = transformed
224
- }`;else Q+=`if(transformed instanceof ElysiaCustomStatusResponse)
225
- throw transformed
226
- else
227
- Object.assign(c, transformed)\n`;S()}N.resolve()}if(j){if(Q+="\n",j.headers){if(r&&"Clean"in j.headers&&!j0(j.headers))Q+="c.headers = validator.headers.Clean(c.headers);\n";if(V0("default",j.headers.schema))for(let[N,_]of Object.entries(t0.Default(j.headers.schema,{}))){let A=typeof _==="object"?JSON.stringify(_):typeof _==="string"?`'${_}'`:_;if(A!==void 0)Q+=`c.headers['${N}'] ??= ${A}\n`}if(t(j.headers))Q+="if(isNotEmpty(c.headers)) {";if(Q+=`if(validator.headers.Check(c.headers) === false) {
228
- ${L("headers")}
229
- }`,S0(j.headers.schema))Q+="c.headers = validator.headers.Decode(c.headers)\n";if(t(j.headers))Q+="}"}if(j.params){if(V0("default",j.params.schema))for(let[N,_]of Object.entries(t0.Default(j.params.schema,{}))){let A=typeof _==="object"?JSON.stringify(_):typeof _==="string"?`'${_}'`:_;if(A!==void 0)Q+=`c.params['${N}'] ??= ${A}\n`}if(Q+=`if(validator.params.Check(c.params) === false) {
230
- ${L("params")}
231
- }`,S0(j.params.schema))Q+="\nc.params = validator.params.Decode(c.params)\n"}if(j.query){if(r&&"Clean"in j.query&&!j0(j.query))Q+="c.query = validator.query.Clean(c.query);\n";if(V0("default",j.query.schema))for(let[N,_]of Object.entries(t0.Default(j.query.schema,{}))){let A=typeof _==="object"?JSON.stringify(_):typeof _==="string"?`'${_}'`:_;if(A!==void 0)Q+=`if(c.query['${N}'] === undefined) c.query['${N}'] = ${A}\n`}if(t(j.query))Q+="if(isNotEmpty(c.query)) {";if(Q+=`if(validator.query.Check(c.query) === false) {
232
- ${L("query")}
233
- }`,S0(j.query.schema))Q+="\nc.query = validator.query.Decode(Object.assign({}, c.query))\n";if(t(j.query))Q+="}"}if(j.body){if(r&&"Clean"in j.body&&!j0(j.body))Q+="c.body = validator.body.Clean(c.body);\n";let N=S0(j.body.schema);if(N||t(j.body))Q+='\nconst isNotEmptyObject = c.body && (typeof c.body === "object" && isNotEmpty(c.body))\n';if(V0("default",j.body.schema)){let _=t0.Default(j.body.schema,j.body.schema.type==="object"?{}:void 0),A=typeof _==="object"?JSON.stringify(_):typeof _==="string"?`'${_}'`:_;if(Q+=`if(validator.body.Check(c.body) === false) {
234
- if (typeof c.body === 'object') {
235
- c.body = Object.assign(${A}, c.body)
236
- } else { c.body = ${A} }`,t(j.body))Q+=`
237
- if(isNotEmptyObject && validator.body.Check(c.body) === false) {
238
- ${L("body")}
239
- }
240
- }`;else Q+=`
241
- if(validator.body.Check(c.body) === false) {
242
- ${L("body")}
243
- }
244
- }`}else if(t(j.body))Q+=`if(isNotEmptyObject && validator.body.Check(c.body) === false) {
245
- ${L("body")}
246
- }`;else Q+=`if(validator.body.Check(c.body) === false) {
247
- ${L("body")}
248
- }`;if(N)Q+="\nif(isNotEmptyObject) c.body = validator.body.Decode(c.body)\n"}if(c(b?.schema?.properties??b?.schema?.schema??{})){if(Q+=`const cookieValue = {}
249
- for(const [key, value] of Object.entries(c.cookie))
250
- cookieValue[key] = value.value\n`,V0("default",b.schema))for(let[N,_]of Object.entries(t0.Default(b.schema,{})))Q+=`cookieValue['${N}'] = ${typeof _==="object"?JSON.stringify(_):_}\n`;if(t(j.cookie))Q+="if(isNotEmpty(c.cookie)) {";if(Q+=`if(validator.cookie.Check(cookieValue) === false) {
251
- ${L("cookie","cookieValue")}
252
- }`,S0(j.cookie.schema))Q+=`\nfor(const [key, value] of Object.entries(validator.cookie.Decode(cookieValue)))
253
- c.cookie[key].value = value\n`;if(t(j.cookie))Q+="}"}}if(J?.beforeHandle){let N=R("beforeHandle",{total:J.beforeHandle.length}),_=!1;for(let A=0;A<J.beforeHandle.length;A++){let S=J.beforeHandle[A],C=N.resolveChild(S.fn.name),a=E0(S);if(S.subType==="resolve"||S.subType==="mapResolve"){if(!_)_=!0,Q+="\nlet resolved\n";if(Q+=k(S)?`resolved = await beforeHandle[${A}](c);\n`:`resolved = beforeHandle[${A}](c);\n`,S.subType==="mapResolve")Q+=`if(resolved instanceof ElysiaCustomStatusResponse)
254
- throw resolved
255
- else {
256
- resolved.request = c.request
257
- resolved.store = c.store
258
- resolved.qi = c.qi
259
- resolved.path = c.path
260
- resolved.url = c.url
261
- resolved.redirect = c.redirect
262
- resolved.set = c.set
263
- resolved.error = c.error
264
-
265
- c = resolved
266
- }`;else Q+=`if(resolved instanceof ElysiaCustomStatusResponse)
267
- throw resolved
268
- else
269
- Object.assign(c, resolved)\n`}else if(!a)Q+=k(S)?`await beforeHandle[${A}](c);\n`:`beforeHandle[${A}](c);\n`,C();else{if(Q+=k(S)?`be = await beforeHandle[${A}](c);\n`:`be = beforeHandle[${A}](c);\n`,C("be"),Q+="if(be !== undefined) {\n",N.resolve(),J.afterHandle?.length){R("handle",{name:B?Y.name:void 0}).resolve();let u=R("afterHandle",{total:J.afterHandle.length});for(let G0=0;G0<J.afterHandle.length;G0++){let L0=J.afterHandle[G0],E2=E0(L0),q2=u.resolveChild(L0.fn.name);if(Q+="c.response = be\n",!E2)Q+=k(L0.fn)?`await afterHandle[${G0}](c, be)\n`:`afterHandle[${G0}](c, be)\n`;else Q+=k(L0.fn)?`af = await afterHandle[${G0}](c)\n`:`af = afterHandle[${G0}](c)\n`,Q+="if(af !== undefined) { c.response = be = af }\n";q2("af")}u.resolve()}if(j.response)Q+=f("be");let U0=R("mapResponse",{total:J.mapResponse.length});if(J.mapResponse.length){Q+="\nc.response = be\n";for(let u=0;u<J.mapResponse.length;u++){let G0=J.mapResponse[u],L0=U0.resolveChild(G0.fn.name);Q+=`\nif(mr === undefined) {
270
- mr = ${C0(G0)?"await":""} onMapResponse[${u}](c)
271
- if(mr !== undefined) be = c.response = mr
272
- }\n`,L0()}}U0.resolve(),Q+=E,Q+=`return mapEarlyResponse(${e} be, c.set ${s})}\n`}}N.resolve()}if(J?.afterHandle.length){let N=R("handle",{name:B?Y.name:void 0});if(J.afterHandle.length)Q+=Y0?`let r = c.response = await ${U};\n`:`let r = c.response = ${U};\n`;else Q+=Y0?`let r = await ${U};\n`:`let r = ${U};\n`;N.resolve();let _=R("afterHandle",{total:J.afterHandle.length});for(let S=0;S<J.afterHandle.length;S++){let C=J.afterHandle[S],a=E0(C),H=_.resolveChild(C.fn.name);if(!a)Q+=k(C.fn)?`await afterHandle[${S}](c)\n`:`afterHandle[${S}](c)\n`,H();else if(Q+=k(C.fn)?`af = await afterHandle[${S}](c)\n`:`af = afterHandle[${S}](c)\n`,H("af"),j.response)Q+="if(af !== undefined) {",_.resolve(),Q+=f("af"),Q+="c.response = af }";else Q+="if(af !== undefined) {",_.resolve(),Q+="c.response = af}\n"}if(_.resolve(),Q+="r = c.response\n",j.response)Q+=f();Q+=E;let A=R("mapResponse",{total:J.mapResponse.length});if(J.mapResponse.length)for(let S=0;S<J.mapResponse.length;S++){let C=J.mapResponse[S],a=A.resolveChild(C.fn.name);Q+=`\nmr = ${C0(C)?"await":""} onMapResponse[${S}](c)
273
- if(mr !== undefined) r = c.response = mr\n`,a()}if(A.resolve(),r0)Q+=`return mapResponse(${e} r, c.set ${s})\n`;else Q+=`return mapCompactResponse(${e} r ${s})\n`}else{let N=R("handle",{name:B?Y.name:void 0});if(j.response||J.mapResponse.length){if(Q+=Y0?`let r = await ${U};\n`:`let r = ${U};\n`,N.resolve(),j.response)Q+=f();R("afterHandle").resolve();let _=R("mapResponse",{total:J.mapResponse.length});if(J.mapResponse.length){Q+="\nc.response = r\n";for(let A=0;A<J.mapResponse.length;A++){let S=J.mapResponse[A],C=_.resolveChild(S.fn.name);Q+=`\nif(mr === undefined) {
274
- mr = ${C0(S)?"await":""} onMapResponse[${A}](c)
275
- if(mr !== undefined) r = c.response = mr
276
- }\n`,C()}}if(_.resolve(),Q+=E,Y instanceof Response)Q+=K.set?`if(
277
- isNotEmpty(c.set.headers) ||
278
- c.set.status !== 200 ||
279
- c.set.redirect ||
280
- c.set.cookie
281
- )
282
- return mapResponse(${e} ${U}.clone(), c.set ${s})
283
- else
284
- return ${U}.clone()`:`return ${U}.clone()`,Q+="\n";else if(r0)Q+=`return mapResponse(${e} r, c.set ${s})\n`;else Q+=`return mapCompactResponse(${e} r ${s})\n`}else if(P||F){Q+=Y0?`let r = await ${U};\n`:`let r = ${U};\n`,N.resolve(),R("afterHandle").resolve();let _=R("mapResponse",{total:J.mapResponse.length});if(J.mapResponse.length){Q+="\nc.response = r\n";for(let A=0;A<J.mapResponse.length;A++){let S=J.mapResponse[A],C=_.resolveChild(S.fn.name);Q+=`\nif(mr === undefined) {
285
- mr = ${C0(S)?"await":""} onMapResponse[${A}](c)
286
- if(mr !== undefined) r = c.response = mr
287
- }\n`,C()}}if(_.resolve(),Q+=E,r0)Q+=`return mapResponse(${e} r, c.set ${s})\n`;else Q+=`return mapCompactResponse(${e} r ${s})\n`}else{N.resolve();let _=Y0?`await ${U}`:U;if(R("afterHandle").resolve(),Y instanceof Response)Q+=K.set?`if(
288
- isNotEmpty(c.set.headers) ||
289
- c.set.status !== 200 ||
290
- c.set.redirect ||
291
- c.set.cookie
292
- )
293
- return mapResponse(${e} ${U}.clone(), c.set ${s})
294
- else
295
- return ${U}.clone()`:`return ${U}.clone()`,Q+="\n";else if(r0)Q+=`return mapResponse(${e} ${_}, c.set ${s})\n`;else Q+=`return mapCompactResponse(${e} ${_} ${s})\n`}}if(Q+="\n} catch(error) {",D)Q+="\nif(isParsing) error = new ParseError()\n";if(!y0)Q+="\nreturn (async () => {\n";if(Q+="\nconst set = c.set\nif (!set.status || set.status < 300) set.status = error?.status || 500\n",F)for(let N=0;N<J.trace.length;N++)Q+=`report${N}?.resolve(error);reportChild${N}?.(error);\n`;let K1=R("error",{total:J.error.length});if(J.error.length){Q+=`
296
- c.error = error
297
- if(error instanceof TypeBoxError) {
298
- c.code = "VALIDATION"
299
- c.set.status = 422
300
- } else
301
- c.code = error.code ?? error[ERROR_CODE] ?? "UNKNOWN"
302
- let er
303
- `;for(let N=0;N<J.error.length;N++){let _=K1.resolveChild(J.error[N].fn.name);if(k(J.error[N]))Q+=`\ner = await handleErrors[${N}](c)\n`;else Q+=`\ner = handleErrors[${N}](c)\nif (er instanceof Promise) er = await er\n`;_();let A=R("mapResponse",{total:J.mapResponse.length});if(J.mapResponse.length)for(let S=0;S<J.mapResponse.length;S++){let C=J.mapResponse[S],a=A.resolveChild(C.fn.name);Q+=`\nc.response = er\n
304
- er = ${C0(C)?"await":""} onMapResponse[${S}](c)
305
- if(er instanceof Promise) er = await er\n`,a()}if(A.resolve(),Q+=`er = mapEarlyResponse(er, set ${s})\n`,Q+="if (er) {",F){for(let S=0;S<J.trace.length;S++)Q+=`\nreport${S}.resolve()\n`;K1.resolve()}Q+="return er\n}\n"}}if(K1.resolve(),Q+="return handleError(c, error, true)\n",!y0)Q+="})()";if(Q+="}",w||F){if(Q+=" finally { ",!y0)Q+=";(async () => {";let N=R("afterResponse",{total:J.afterResponse.length});if(w)for(let _=0;_<J.afterResponse.length;_++){let A=N.resolveChild(J.afterResponse[_].fn.name);Q+=`\nawait afterResponse[${_}](c);\n`,A()}if(N.resolve(),!y0)Q+="})();";Q+="}"}Q=`const {
306
- handler,
307
- handleError,
308
- hooks: {
309
- transform,
310
- resolve,
311
- beforeHandle,
312
- afterHandle,
313
- mapResponse: onMapResponse,
314
- parse,
315
- error: handleErrors,
316
- afterResponse,
317
- trace: _trace
318
- },
319
- validator,
320
- utils: {
321
- mapResponse,
322
- mapCompactResponse,
323
- mapEarlyResponse,
324
- parseQuery,
325
- parseQueryFromURL,
326
- isNotEmpty
327
- },
328
- error: {
329
- NotFoundError,
330
- ValidationError,
331
- InternalServerError,
332
- ParseError
333
- },
334
- schema,
335
- definitions,
336
- ERROR_CODE,
337
- parseCookie,
338
- signCookie,
339
- decodeURIComponent,
340
- ElysiaCustomStatusResponse,
341
- ELYSIA_TRACE,
342
- ELYSIA_REQUEST_ID,
343
- getServer,
344
- TypeBoxError
345
- } = hooks
346
-
347
- const trace = _trace.map(x => typeof x === 'function' ? x : x.fn)
348
-
349
- return ${y0?"async":""} function handle(c) {
350
- ${J.beforeHandle.length?"let be":""}
351
- ${J.afterHandle.length?"let af":""}
352
- ${J.mapResponse.length?"let mr":""}
353
-
354
- ${G?"c.schema = schema; c.defs = definitions":""}
355
- ${Q}
356
- }`;try{return Function("hooks",Q)({handler:Y,hooks:L1(J),validator:j,handleError:$.handleError,utils:{mapResponse:x,mapCompactResponse:Z0,mapEarlyResponse:g,parseQuery:i0,parseQueryFromURL:G1,isNotEmpty:c},error:{NotFoundError:A0,ValidationError:q,InternalServerError:Q1,ParseError:Y1},schema:$.router.history,definitions:$.definitions.type,ERROR_CODE:I0,parseCookie:e0,signCookie:x0,decodeURIComponent:O2.default,ElysiaCustomStatusResponse:l,ELYSIA_TRACE:n0,ELYSIA_REQUEST_ID:P0,getServer:()=>$.getServer(),TypeBoxError:g3})}catch{let N=L1(J);console.log("[Composer] failed to generate optimized handler"),console.log("Please report the following to SaltyAom privately as it may include sensitive information about your codebase:"),console.log("---"),console.log({handler:typeof Y==="function"?Y.toString():Y,hooks:{...N,transform:N?.transform?.map?.((_)=>_.toString()),resolve:N?.resolve?.map?.((_)=>_.toString()),beforeHandle:N?.beforeHandle?.map?.((_)=>_.toString()),afterHandle:N?.afterHandle?.map?.((_)=>_.toString()),mapResponse:N?.mapResponse?.map?.((_)=>_.toString()),parse:N?.parse?.map?.((_)=>_.toString()),error:N?.error?.map?.((_)=>_.toString()),afterResponse:N?.afterResponse?.map?.((_)=>_.toString()),stop:N?.stop?.map?.((_)=>_.toString())},validator:j,definitions:$.definitions.type}),console.log("---"),process.exit(1)}},b1=($)=>{let W=$.config.handler?.standardHostname??!0,X="",Z="",J=$.setHeaders;for(let D of Object.keys($.singleton.decorator))X+=`,${D}: app.singleton.decorator.${D}`;let j=$.router,Y=$.event.trace.length>0,G=`
357
- const route = router.find(request.method, path) ${j.http.root.ALL?'?? router.find("ALL", path)':""}
358
-
359
- if (route === null)
360
- return ${$.event.error.length?"app.handleError(ctx, notFound)":$.event.request.length?`new Response(error404Message, {
361
- status: ctx.set.status === 200 ? 404 : ctx.set.status,
362
- headers: ctx.set.headers
363
- })`:"error404.clone()"}
364
-
365
- ctx.params = route.params\n`;G+=`if(route.store.handler) return route.store.handler(ctx)
366
- return (route.store.handler = route.store.compile())(ctx)\n`;let K="";for(let[D,{code:z,all:I,static:O}]of Object.entries(j.static.http.map)){if(O)K+=`case '${D}':\nswitch(request.method) {\n${z}\n${I??"default: break map"}}\n\n`;K+=`case '${D}':\nswitch(request.method) {\n${z}\n${I??"default: break map"}}\n\n`}let B=$.event.request.some(k);if(Z+=`const {
367
- app,
368
- mapEarlyResponse,
369
- NotFoundError,
370
- randomId,
371
- handleError,
372
- error,
373
- redirect,
374
- ELYSIA_TRACE,
375
- ELYSIA_REQUEST_ID,
376
- getServer
377
- } = data
378
-
379
- const store = app.singleton.store
380
- const staticRouter = app.router.static.http
381
- const st = staticRouter.handlers
382
- const wsRouter = app.router.ws
383
- const router = app.router.http
384
- const trace = app.event.trace.map(x => typeof x === 'function' ? x : x.fn)
385
-
386
- const notFound = new NotFoundError()
387
- const hoc = app.extender.higherOrderFunctions.map(x => x.fn)
388
-
389
- ${$.event.request.length?"const onRequest = app.event.request.map(x => x.fn)":""}
390
- ${$.event.error.length?"":`\nconst error404Message = notFound.message.toString()
391
- const error404 = new Response(error404Message, { status: 404 });\n`}
392
-
393
- ${$.event.trace.length?`const ${$.event.trace.map((D,z)=>`tr${z} = app.event.trace[${z}].fn`).join(",")}`:""}
394
-
395
- ${B?"async":""} function map(request) {\n`,$.event.request.length)Z+="let re";if(Z+=`\nconst url = request.url
396
- const s = url.indexOf('/', ${W?11:7})
397
- const qi = url.indexOf('?', s + 1)
398
- let path
399
- if(qi === -1)
400
- path = url.substring(s)
401
- else
402
- path = url.substring(s, qi)\n`,Z+=`${Y?"const id = randomId()":""}
403
- const ctx = {
404
- request,
405
- store,
406
- qi,
407
- path,
408
- url,
409
- redirect,
410
- set: {
411
- headers: ${Object.keys(J??{}).length?"Object.assign({}, app.setHeaders)":"{}"},
412
- status: 200
413
- },
414
- error
415
- ${$.inference.server?`, get server() {
416
- return getServer()
417
- }`:""}
418
- ${Y?",[ELYSIA_REQUEST_ID]: id":""}
419
- ${X}
420
- }\n`,$.event.trace.length)Z+=`\nctx[ELYSIA_TRACE] = [${$.event.trace.map((D,z)=>`tr${z}(ctx)`).join(",")}]\n`;let w=R1({context:"ctx",trace:$.event.trace,addFn(D){Z+=D}})("request",{attribute:"ctx",total:$.event.request.length});if($.event.request.length){Z+="\n try {\n";for(let D=0;D<$.event.request.length;D++){let z=$.event.request[D],I=E0(z),O=k(z),P=w.resolveChild($.event.request[D].fn.name);if(I)Z+=`re = mapEarlyResponse(
421
- ${O?"await":""} onRequest[${D}](ctx),
422
- ctx.set,
423
- request
424
- )\n`,P("re"),Z+="if(re !== undefined) return re\n";else Z+=`${O?"await":""} onRequest[${D}](ctx)\n`,P()}Z+=`} catch (error) {
425
- return app.handleError(ctx, error)
426
- }`}w.resolve();let F=$.router.static.ws,Q=$.router.ws;if(Object.keys(F).length||Q.history.length){Z+=`
427
- if(request.method === 'GET') {
428
- switch(path) {`;for(let[D,z]of Object.entries(F))Z+=`
429
- case '${D}':
430
- if(request.headers.get('upgrade') === 'websocket')
431
- return st[${z}](ctx)
432
-
433
- break`;Z+=`
434
- default:
435
- if(request.headers.get('upgrade') === 'websocket') {
436
- const route = wsRouter.find('ws', path)
437
-
438
- if(route) {
439
- ctx.params = route.params
440
-
441
- if(route.store.handler)
442
- return route.store.handler(ctx)
443
-
444
- return (route.store.handler = route.store.compile())(ctx)
445
- }
446
- }
447
-
448
- break
449
- }
450
- }\n`}if(Z+=`
451
- map: switch(path) {
452
- ${K}
453
-
454
- default:
455
- break
456
- }
457
-
458
- ${G}
459
- }\n`,$.extender.higherOrderFunctions.length){let D="map";for(let z=0;z<$.extender.higherOrderFunctions.length;z++)D=`hoc[${z}](${D}, request)`;Z+=`return function hocMap(request) { return ${D}(request) }`}else Z+="return map";let M=x1($);return $.handleError=M,Function("data",Z)({app:$,mapEarlyResponse:g,NotFoundError:A0,randomId:J1,handleError:M,error:T1,redirect:c0,ELYSIA_TRACE:n0,ELYSIA_REQUEST_ID:P0,getServer:()=>$.getServer()})},x1=($)=>{let W=$.event,X="";X+=`const {
460
- app: { event: { error: onErrorContainer, afterResponse: resContainer, mapResponse: _onMapResponse, trace: _trace } },
461
- mapResponse,
462
- ERROR_CODE,
463
- ElysiaCustomStatusResponse,
464
- ELYSIA_TRACE,
465
- ELYSIA_REQUEST_ID
466
- } = inject
467
-
468
- const trace = _trace.map(x => typeof x === 'function' ? x : x.fn)
469
- const onMapResponse = []
470
-
471
- for(let i = 0; i < _onMapResponse.length; i++)
472
- onMapResponse.push(_onMapResponse[i].fn ?? _onMapResponse[i])
473
-
474
- delete _onMapResponse
475
-
476
- const onError = onErrorContainer.map(x => x.fn)
477
- const res = resContainer.map(x => x.fn)
478
-
479
- return ${$.event.error.find(k)||$.event.mapResponse.find(k)?"async":""} function(context, error, skipGlobal) {`;let Z=$.event.trace.length>0;if(Z)X+="\nconst id = context[ELYSIA_REQUEST_ID]\n";let J=R1({context:"context",trace:W.trace,addFn:(G)=>{X+=G}});X+=`
480
- const set = context.set
481
- let r
482
-
483
- if(!context.code)
484
- context.code = error.code ?? error[ERROR_CODE]
485
-
486
- if(!(context.error instanceof Error))
487
- context.error = error
488
-
489
- if(error instanceof ElysiaCustomStatusResponse) {
490
- error.status = error.code
491
- error.message = error.response
492
- }\n`;let j=Z||W.afterResponse.length>0||W.afterResponse.length>0?"context.response = ":"";for(let G=0;G<$.event.error.length;G++){let K=$.event.error[G],B=`${k(K)?"await ":""}onError[${G}](context)`;if(X+="\nif(skipGlobal !== true) {\n",E0(K)){X+=`r = ${B}; if(r !== undefined) {
493
- if(r instanceof Response) return r
494
-
495
- if(r instanceof ElysiaCustomStatusResponse) {
496
- error.status = error.code
497
- error.message = error.response
498
- }
499
-
500
- if(set.status === 200) set.status = error.status\n`;let U=J("mapResponse",{total:W.mapResponse.length,name:"context"});if(W.mapResponse.length)for(let w=0;w<W.mapResponse.length;w++){let F=W.mapResponse[w],Q=U.resolveChild(F.fn.name);X+=`\ncontext.response = r
501
- r = ${C0(F)?"await":""} onMapResponse[${w}](context)\n`,Q()}U.resolve(),X+=`return mapResponse(${j} r, set, context.request)}\n`}else X+=B+"\n";X+="\n}\n"}X+=`if(error.constructor.name === "ValidationError" || error.constructor.name === "TransformDecodeError") {
502
- const reportedError = error.error ?? error
503
- set.status = reportedError.status ?? 422
504
- return new Response(
505
- reportedError.message,
506
- {
507
- headers: Object.assign(
508
- { 'content-type': 'application/json'},
509
- set.headers
510
- ),
511
- status: set.status
512
- }
513
- )
514
- } else {
515
- if(error.code && typeof error.status === "number")
516
- return new Response(
517
- error.message,
518
- { headers: set.headers, status: error.status }
519
- )\n`;let Y=J("mapResponse",{total:W.mapResponse.length,name:"context"});if(W.mapResponse.length)for(let G=0;G<W.mapResponse.length;G++){let K=W.mapResponse[G],B=Y.resolveChild(K.fn.name);X+=`\ncontext.response = error
520
- error = ${C0(K)?"await":""} onMapResponse[${G}](context)\n`,B()}return Y.resolve(),X+=`\nreturn mapResponse(${j} error, set, context.request)\n}\n}`,Function("inject",X)({app:$,mapResponse:x,ERROR_CODE:I0,ElysiaCustomStatusResponse:l,ELYSIA_TRACE:n0,ELYSIA_REQUEST_ID:P0})};import{TransformDecodeError as v3}from"@sinclair/typebox/value";var g1=($)=>async(W)=>{let X=W.url,Z=X.indexOf("/",11),J=X.indexOf("?",Z+1),j=J===-1?X.substring(Z):X.substring(Z,J),Y={cookie:{},status:200,headers:{}},G=Object.assign({},$.singleton.decorator,{set:Y,store:$.singleton.store,request:W,path:j,qi:J,redirect:c0});try{for(let I=0;I<$.event.request.length;I++){let O=$.event.request[I].fn,P=O(G);if(P instanceof Promise)P=await P;if(P=g(P,Y),P)return G.response=P}let K=$.router.dynamic.find(W.method,j)??$.router.dynamic.find("ALL",j);if(!K)throw new A0;let{handle:B,hooks:U,validator:w,content:F}=K.store,Q;if(W.method!=="GET"&&W.method!=="HEAD")if(F)switch(F){case"application/json":Q=await W.json();break;case"text/plain":Q=await W.text();break;case"application/x-www-form-urlencoded":Q=i0(await W.text());break;case"application/octet-stream":Q=await W.arrayBuffer();break;case"multipart/form-data":Q={};let I=await W.formData();for(let O of I.keys()){if(Q[O])continue;let P=I.getAll(O);if(P.length===1)Q[O]=P[0];else Q[O]=P}break}else{let I=W.headers.get("content-type");if(I){let O=I.indexOf(";");if(O!==-1)I=I.slice(0,O);G.contentType=I;for(let P=0;P<U.parse.length;P++){let b=U.parse[P].fn,T=b(G,I);if(T instanceof Promise)T=await T;if(T){Q=T;break}}if(delete G.contentType,Q===void 0)switch(I){case"application/json":Q=await W.json();break;case"text/plain":Q=await W.text();break;case"application/x-www-form-urlencoded":Q=i0(await W.text());break;case"application/octet-stream":Q=await W.arrayBuffer();break;case"multipart/form-data":Q={};let P=await W.formData();for(let b of P.keys()){if(Q[b])continue;let T=P.getAll(b);if(T.length===1)Q[b]=T[0];else Q[b]=T}break}}}G.body=Q,G.params=K?.params||void 0,G.query=J===-1?{}:G1(X.substring(J+1)),G.headers={};for(let[I,O]of W.headers.entries())G.headers[I]=O;let M=Object.assign({},$.config?.cookie,w?.cookie?.config),D=W.headers.get("cookie");G.cookie=await e0(G.set,D,M?{secrets:M.secrets!==void 0?typeof M.secrets==="string"?M.secrets:M.secrets.join(","):void 0,sign:M.sign===!0?!0:M.sign!==void 0?typeof M.sign==="string"?M.sign:M.sign.join(","):void 0}:void 0);for(let I=0;I<U.transform.length;I++){let O=U.transform[I],P=O.fn(G);if(O.subType==="derive")if(P instanceof Promise)Object.assign(G,await P);else Object.assign(G,P);else if(P instanceof Promise)await P}if(w){if(w.createHeaders?.()){let I={};for(let O in W.headers)I[O]=W.headers.get(O);if(w.headers.Check(I)===!1)throw new q("header",w.headers,I)}else if(w.headers?.Decode)G.headers=w.headers.Decode(G.headers);if(w.createParams?.()?.Check(G.params)===!1)throw new q("params",w.params,G.params);else if(w.params?.Decode)G.params=w.params.Decode(G.params);if(w.createQuery?.()?.Check(G.query)===!1)throw new q("query",w.query,G.query);else if(w.query?.Decode)G.query=w.query.Decode(G.query);if(w.createCookie?.()){let I={};for(let[O,P]of Object.entries(G.cookie))I[O]=P.value;if(w.cookie.Check(I)===!1)throw new q("cookie",w.cookie,I);else if(w.cookie?.Decode)I=w.cookie.Decode(I)}if(w.createBody?.()?.Check(Q)===!1)throw new q("body",w.body,Q);else if(w.body?.Decode)G.body=w.body.Decode(Q)}for(let I=0;I<U.beforeHandle.length;I++){let O=U.beforeHandle[I],P=O.fn(G);if(O.subType==="resolve"){if(P instanceof Promise)Object.assign(G,await P);else Object.assign(G,P);continue}else if(P instanceof Promise)P=await P;if(P!==void 0){G.response=P;for(let T=0;T<U.afterHandle.length;T++){let E=U.afterHandle[T].fn(G);if(E instanceof Promise)E=await E;if(E)P=E}let b=g(P,G.set);if(b)return G.response=b}}let z=B(G);if(z instanceof Promise)z=await z;if(!U.afterHandle.length){let I=z instanceof l?z.code:Y.status?typeof Y.status==="string"?_0[Y.status]:Y.status:200,O=w?.createResponse?.()?.[I];if(O?.Check(z)===!1)throw new q("response",O,z);else if(O?.Decode)z=O.Decode(z)}else{G.response=z;for(let I=0;I<U.afterHandle.length;I++){let O=U.afterHandle[I].fn(G);if(O instanceof Promise)O=await O;let P=g(O,G.set);if(P!==void 0){let b=w?.response?.[P.status];if(b?.Check(P)===!1)throw new q("response",b,P);else if(b?.Decode)z=b.Decode(z);return G.response=P}}}if(G.set.cookie&&M?.sign){let I=!M.secrets?void 0:typeof M.secrets==="string"?M.secrets:M.secrets[0];if(M.sign===!0)for(let[O,P]of Object.entries(G.set.cookie))G.set.cookie[O].value=await x0(P.value,"${secret}");else{let O=w?.cookie?.schema?.properties;for(let P of M.sign){if(!(P in O))continue;if(G.set.cookie[P]?.value)G.set.cookie[P].value=await x0(G.set.cookie[P].value,I)}}}return G.response=x(z,G.set)}catch(K){let B=K instanceof v3&&K.error?K.error:K;if(B.status)Y.status=B.status;return $.handleError(G,B)}finally{for(let K of $.event.afterResponse)await K.fn(G)}},C2=($)=>async(W,X)=>{let Z=Object.assign(W,{error:X,code:X.code});Z.set=W.set;for(let J=0;J<$.event.error.length;J++){let Y=$.event.error[J].fn(Z);if(Y instanceof Promise)Y=await Y;if(Y!==void 0&&Y!==null)return W.response=x(Y,W.set)}return new Response(typeof X.cause==="string"?X.cause:X.message,{headers:W.set.headers,status:X.status??500})};import{TypeSystemPolicy as H5}from"@sinclair/typebox/system";class Q0{config;server=null;dependencies={};_routes={};_types={Prefix:"",Scoped:!1,Singleton:{},Definitions:{},Metadata:{}};_ephemeral={};_volatile={};static version=q1;version=q1;singleton={decorator:{},store:{},derive:{},resolve:{}};get store(){return this.singleton.store}get decorator(){return this.singleton.decorator}get _scoped(){return this.config.scoped}definitions={type:{},error:{}};extender={macros:[],higherOrderFunctions:[]};validator={global:null,scoped:null,local:null,getCandidate(){return b0(b0(this.global,this.scoped),this.local)}};event={start:[],request:[],parse:[],transform:[],beforeHandle:[],afterHandle:[],mapResponse:[],afterResponse:[],trace:[],error:[],stop:[]};telemetry={stack:void 0};router={http:new z0,ws:new z0,dynamic:new z0,static:{http:{static:{},handlers:[],map:{},all:""},ws:{}},history:[]};routeTree=new Map;get routes(){return this.router.history}getGlobalRoutes(){return this.router.history}inference={body:!1,cookie:!1,headers:!1,query:!1,set:!1,server:!1};getServer(){return this.server}_promisedModules;get promisedModules(){if(!this._promisedModules)this._promisedModules=new C1;return this._promisedModules}constructor($={}){if($.tags)if(!$.detail)$.detail={tags:$.tags};else $.detail.tags=$.tags;if($.nativeStaticResponse===void 0)$.nativeStaticResponse=!0;if(this.config={},this.applyConfig($??{}),$?.analytic&&($?.name||$?.seed!==void 0))this.telemetry.stack=new Error().stack}env($,W=Bun?.env??process.env){if(m($,{dynamic:!0,additionalProperties:!0,coerce:!0}).Check(W)===!1){let Z=new q("env",$,W);throw new Error(Z.all.map((J)=>J.summary).join("\n"))}return this}wrap($){return this.extender.higherOrderFunctions.push({checksum:N0(JSON.stringify({name:this.config.name,seed:this.config.seed,content:$.toString()})),fn:$}),this}applyMacro($){if(this.extender.macros.length){let W=N2({globalHook:this.event,localHook:$}),X={events:{global:this.event,local:$},onParse:W("parse"),onTransform:W("transform"),onBeforeHandle:W("beforeHandle"),onAfterHandle:W("afterHandle"),mapResponse:W("mapResponse"),onAfterResponse:W("afterResponse"),onError:W("error")};for(let Z of this.extender.macros)D2(Z.fn(X),$)}}applyConfig($){return this.config={prefix:"",aot:!0,strictPath:!1,global:!1,analytic:!1,normalize:!0,...$,cookie:{path:"/",...$?.cookie},experimental:$?.experimental??{},seed:$?.seed===void 0?"":$?.seed},this}get models(){let $={};for(let[W,X]of Object.entries(this.definitions.type))$[W]=m(X);return $}add($,W,X,Z,{allowMeta:J=!1,skipPrefix:j=!1}={allowMeta:!1,skipPrefix:!1}){if(Z=P2(Z),W!==""&&W.charCodeAt(0)!==47)W="/"+W;if(this.config.prefix&&!j&&!this.config.scoped)W=this.config.prefix+W;if(Z?.type)switch(Z.type){case"text":Z.type="text/plain";break;case"json":Z.type="application/json";break;case"formdata":Z.type="multipart/form-data";break;case"urlencoded":Z.type="application/x-www-form-urlencoded";break;case"arrayBuffer":Z.type="application/octet-stream";break;default:break}let Y=this.definitions.type,G=!this.config.aot,K={...this.validator.getCandidate()},B={body:Z?.body??K?.body,headers:Z?.headers??K?.headers,params:Z?.params??K?.params,query:Z?.query??K?.query,cookie:Z?.cookie??K?.cookie,response:Z?.response??K?.response},U=()=>B.cookie?W1({validator:B.cookie,defaultConfig:this.config.cookie,config:B.cookie?.config??{},dynamic:G,models:Y}):void 0,w=this.config.normalize,F=this.config.precompile===!0||typeof this.config.precompile==="object"&&this.config.precompile.schema===!0?{body:m(B.body,{dynamic:G,models:Y,normalize:w,additionalCoerce:O1()}),headers:m(B.headers,{dynamic:G,models:Y,additionalProperties:!this.config.normalize,coerce:!0,additionalCoerce:D0()}),params:m(B.params,{dynamic:G,models:Y,coerce:!0,additionalCoerce:D0()}),query:m(B.query,{dynamic:G,models:Y,normalize:w,coerce:!0,additionalCoerce:D0()}),cookie:U(),response:$1(B.response,{dynamic:G,models:Y,normalize:w})}:{createBody(){if(this.body)return this.body;return this.body=m(B.body,{dynamic:G,models:Y,normalize:w,additionalCoerce:O1()})},createHeaders(){if(this.headers)return this.headers;return this.headers=m(B.headers,{dynamic:G,models:Y,additionalProperties:!w,coerce:!0,additionalCoerce:D0()})},createParams(){if(this.params)return this.params;return this.params=m(B.params,{dynamic:G,models:Y,coerce:!0,additionalCoerce:D0()})},createQuery(){if(this.query)return this.query;return this.query=m(B.query,{dynamic:G,models:Y,coerce:!0,additionalCoerce:D0()})},createCookie(){if(this.cookie)return this.cookie;return this.cookie=U()},createResponse(){if(this.response)return this.response;return this.response=$1(B.response,{dynamic:G,models:Y,normalize:w})}},Q=W.endsWith("/")?W.slice(0,W.length-1):W+"/";if(Z=i(Z,K),Z.tags)if(!Z.detail)Z.detail={tags:Z.tags};else Z.detail.tags=Z.tags;if(c(this.config.detail))Z.detail=d(Object.assign({},this.config.detail),Z.detail);this.applyMacro(Z);let M=i(this.event,Z);if(this.config.aot===!1){if(this.router.dynamic.add($,W,{validator:F,hooks:M,content:Z?.type,handle:X}),this.config.strictPath===!1)this.router.dynamic.add($,Q,{validator:F,hooks:M,content:Z?.type,handle:X});this.router.history.push({method:$,path:W,composed:null,handler:X,hooks:M});return}let D=this.config.precompile===!0||typeof this.config.precompile==="object"&&this.config.precompile.compose===!0,z=d0(this.inference),I=typeof X!=="function"?K2(X,M,this.setHeaders):void 0,O=typeof X!=="function"?U2(X,M,this.setHeaders):void 0;if(this.config.nativeStaticResponse===!0&&O&&($==="GET"||$==="ALL"))this.router.static.http.static[W]=O();let P=()=>S2({app:this,path:W,method:$,localHook:i(Z),hooks:M,validator:F,handler:X,allowMeta:J,inference:z}),b=D?P():(L)=>{return P()(L)},T=this.router.history.length;if(this.routeTree.has($+W))for(let L=0;L<this.router.history.length;L++){let f=this.router.history[L];if(f.path===W&&f.method===$){let R=this.router.history.splice(L,1)[0];if(R&&this.routeTree.has(R?.method+R?.path))this.routeTree.delete(R.method+R.path)}}else this.routeTree.set($+W,T);this.router.history.push({method:$,path:W,composed:b,handler:X,hooks:M});let E=this.router.static.http,r={handler:D?b:void 0,compile:P};if($==="$INTERNALWS"){let L=this.config.strictPath?void 0:W.endsWith("/")?W.slice(0,W.length-1):W+"/";if(W.indexOf(":")===-1&&W.indexOf("*")===-1){let f=E.handlers.length;if(E.handlers.push((R)=>(E.handlers[f]=P())(R)),this.router.static.ws[W]=f,L)this.router.static.ws[L]=f}else if(this.router.ws.add("ws",W,r),L)this.router.ws.add("ws",L,r);return}if(W.indexOf(":")===-1&&W.indexOf("*")===-1){let L=E.handlers.length;if(E.handlers.push(I??((R)=>(E.handlers[L]=P())(R))),!E.map[W])E.map[W]={code:""};let f=I?"":"ctx";if($==="ALL")E.map[W].all=`default: return st[${L}](${f})\n`;else E.map[W].code=`case '${$}': return st[${L}](${f})\n${E.map[W].code}`;if(!this.config.strictPath){if(!E.map[Q])E.map[Q]={code:""};if(this.config.nativeStaticResponse===!0&&O&&($==="GET"||$==="ALL"))this.router.static.http.static[Q]=O();if($==="ALL")E.map[Q].all=`default: return st[${L}](${f})\n`;else E.map[Q].code=`case '${$}': return st[${L}](${f})\n${E.map[Q].code}`}}else if(this.router.http.add($,W,r),!this.config.strictPath){let L=W.endsWith("/")?W.slice(0,W.length-1):W+"/";if(this.config.nativeStaticResponse===!0&&I&&($==="GET"||$==="ALL"))this.router.static.http.static[L]=I();this.router.http.add($,L,r)}}setHeaders;headers($){if(!$)return this;if(!this.setHeaders)this.setHeaders={};return this.setHeaders=d(this.setHeaders,$),this}onStart($){return this.on("start",$),this}onRequest($){return this.on("request",$),this}onParse($,W){if(!W)return this.on("parse",$);return this.on($,"parse",W)}onTransform($,W){if(!W)return this.on("transform",$);return this.on($,"transform",W)}resolve($,W){if(!W)W=$,$={as:"local"};let X={subType:"resolve",fn:W};return this.onBeforeHandle($,X)}mapResolve($,W){if(!W)W=$,$={as:"local"};let X={subType:"mapResolve",fn:W};return this.onBeforeHandle($,X)}onBeforeHandle($,W){if(!W)return this.on("beforeHandle",$);return this.on($,"beforeHandle",W)}onAfterHandle($,W){if(!W)return this.on("afterHandle",$);return this.on($,"afterHandle",W)}mapResponse($,W){if(!W)return this.on("mapResponse",$);return this.on($,"mapResponse",W)}onAfterResponse($,W){if(!W)return this.on("afterResponse",$);return this.on($,"afterResponse",W)}trace($,W){if(!W)W=$,$={as:"local"};if(!Array.isArray(W))W=[W];for(let X of W)this.on($,"trace",A2(X));return this}error($,W){switch(typeof $){case"string":return W.prototype[I0]=$,this.definitions.error[$]=W,this;case"function":return this.definitions.error=$(this.definitions.error),this}for(let[X,Z]of Object.entries($))Z.prototype[I0]=X,this.definitions.error[X]=Z;return this}onError($,W){if(!W)return this.on("error",$);return this.on($,"error",W)}onStop($){return this.on("stop",$),this}on($,W,X){let Z;switch(typeof $){case"string":Z=$,X=W;break;case"object":if(Z=W,!Array.isArray(W)&&typeof W==="object")X=W;break}if(Array.isArray(X))X=n(X);else if(typeof X==="function")X=[{fn:X}];else X=[X];let J=X;for(let j of J)j.scope=typeof $==="string"?"local":$?.as??"local";if(Z!=="trace")s0({[Z]:J.map((j)=>j.fn)},this.inference);for(let j of J){let Y=M2(j,"global",{skipIfHasType:!0});switch(Z){case"start":this.event.start.push(Y);break;case"request":this.event.request.push(Y);break;case"parse":this.event.parse.push(Y);break;case"transform":this.event.transform.push(Y);break;case"beforeHandle":this.event.beforeHandle.push(Y);break;case"afterHandle":this.event.afterHandle.push(Y);break;case"mapResponse":this.event.mapResponse.push(Y);break;case"afterResponse":this.event.afterResponse.push(Y);break;case"trace":this.event.trace.push(Y);break;case"error":this.event.error.push(Y);break;case"stop":this.event.stop.push(Y);break}}return this}propagate(){return v(this.event.parse),v(this.event.transform),v(this.event.beforeHandle),v(this.event.afterHandle),v(this.event.mapResponse),v(this.event.afterResponse),v(this.event.trace),v(this.event.error),this}as($){let W={plugin:"scoped",global:"global"}[$];if(v(this.event.parse,W),v(this.event.transform,W),v(this.event.beforeHandle,W),v(this.event.afterHandle,W),v(this.event.mapResponse,W),v(this.event.afterResponse,W),v(this.event.trace,W),v(this.event.error,W),$==="plugin")this.validator.scoped=b0(this.validator.scoped,this.validator.local),this.validator.local=null;else if($==="global")this.validator.global=b0(this.validator.global,b0(this.validator.scoped,this.validator.local)),this.validator.scoped=null,this.validator.local=null;return this}group($,W,X){let Z=new Q0({...this.config,prefix:""});Z.singleton={...this.singleton},Z.definitions={...this.definitions},Z.getServer=()=>this.getServer(),Z.inference=d0(this.inference),Z.extender={...this.extender};let J=typeof W==="object",j=(J?X:W)(Z);if(this.singleton=d(this.singleton,Z.singleton),this.definitions=d(this.definitions,Z.definitions),j.event.request.length)this.event.request=[...this.event.request||[],...j.event.request||[]];if(j.event.mapResponse.length)this.event.mapResponse=[...this.event.mapResponse||[],...j.event.mapResponse||[]];return this.model(j.definitions.type),Object.values(Z.router.history).forEach(({method:Y,path:G,handler:K,hooks:B})=>{if(G=(J?"":this.config.prefix)+$+G,J){let U=W,w=B;this.add(Y,G,K,i(U,{...w||{},error:!w.error?j.event.error:Array.isArray(w.error)?[...w.error||{},...j.event.error||{}]:[w.error,...j.event.error||{}]}))}else this.add(Y,G,K,i(B,{error:j.event.error}),{skipPrefix:!0})}),this}guard($,W){if(!W){if(typeof $==="object"){this.applyMacro($);let J=$.as??"local";if(this.validator[J]={body:$.body??this.validator[J]?.body,headers:$.headers??this.validator[J]?.headers,params:$.params??this.validator[J]?.params,query:$.query??this.validator[J]?.query,response:$.response??this.validator[J]?.response,cookie:$.cookie??this.validator[J]?.cookie},$.parse)this.on({as:J},"parse",$.parse);if($.transform)this.on({as:J},"transform",$.transform);if($.beforeHandle)this.on({as:J},"beforeHandle",$.beforeHandle);if($.afterHandle)this.on({as:J},"afterHandle",$.afterHandle);if($.mapResponse)this.on({as:J},"mapResponse",$.mapResponse);if($.afterResponse)this.on({as:J},"afterResponse",$.afterResponse);if($.error)this.on({as:J},"error",$.error);if($.detail)if(this.config.detail)this.config.detail=d(Object.assign({},this.config.detail),$.detail);else this.config.detail=$.detail;if($?.tags)if(!this.config.detail)this.config.detail={tags:$.tags};else this.config.detail.tags=$.tags;return this}return this.guard({},$)}let X=new Q0({...this.config,prefix:""});X.singleton={...this.singleton},X.definitions={...this.definitions},X.inference=d0(this.inference),X.extender={...this.extender};let Z=W(X);if(this.singleton=d(this.singleton,X.singleton),this.definitions=d(this.definitions,X.definitions),Z.getServer=()=>this.server,Z.event.request.length)this.event.request=[...this.event.request||[],...Z.event.request||[]];if(Z.event.mapResponse.length)this.event.mapResponse=[...this.event.mapResponse||[],...Z.event.mapResponse||[]];return this.model(Z.definitions.type),Object.values(X.router.history).forEach(({method:J,path:j,handler:Y,hooks:G})=>{this.add(J,j,Y,i($,{...G||{},error:!G.error?Z.event.error:Array.isArray(G.error)?[...G.error||{},...Z.event.error||[]]:[G.error,...Z.event.error||[]]}))}),this}use($,W){if(W?.scoped)return this.guard({},(X)=>X.use($));if(Array.isArray($)){let X=this;for(let Z of $)X=this.use(Z);return X}if($ instanceof Promise)return this.promisedModules.add($.then((X)=>{if(typeof X==="function")return X(this);if(X instanceof Q0)return this._use(X).compile();if(typeof X.default==="function")return X.default(this);if(X.default instanceof Q0)return this._use(X.default);throw new Error('Invalid plugin type. Expected Elysia instance, function, or module with "default" as Elysia instance or function that returns Elysia instance.')}).then((X)=>X.compile())),this;return this._use($)}_use($){if(typeof $==="function"){let J=$(this);if(J instanceof Promise)return this.promisedModules.add(J.then((j)=>{if(j instanceof Q0){j.getServer=()=>this.getServer(),j.getGlobalRoutes=()=>this.getGlobalRoutes(),j.model(this.definitions.type),j.error(this.definitions.error);for(let{method:Y,path:G,handler:K,hooks:B}of Object.values(j.router.history))this.add(Y,G,K,i(B,{error:j.event.error}));return j.compile(),j}if(typeof j==="function")return j(this);if(typeof j.default==="function")return j.default(this);return this._use(j)}).then((j)=>j.compile())),this;return J}let{name:W,seed:X}=$.config;$.getServer=()=>this.getServer(),$.getGlobalRoutes=()=>this.getGlobalRoutes(),$.model(this.definitions.type),$.error(this.definitions.error);let Z=$.config.scoped;if(Z){if(W){if(!(W in this.dependencies))this.dependencies[W]=[];let j=X!==void 0?N0(W+JSON.stringify(X)):0;if(this.dependencies[W].some(({checksum:Y})=>j===Y))return this;this.dependencies[W].push(!this.config?.analytic?{name:$.config.name,seed:$.config.seed,checksum:j,dependencies:$.dependencies}:{name:$.config.name,seed:$.config.seed,checksum:j,dependencies:$.dependencies,stack:$.telemetry.stack,routes:$.router.history,decorators:$.singleton.decorator,store:$.singleton.store,type:$.definitions.type,error:$.definitions.error,derive:$.event.transform.filter((Y)=>Y.subType==="derive").map((Y)=>({fn:Y.fn.toString(),stack:new Error().stack??""})),resolve:$.event.transform.filter((Y)=>Y.subType==="derive").map((Y)=>({fn:Y.fn.toString(),stack:new Error().stack??""}))})}$.extender.macros=this.extender.macros.concat($.extender.macros);let J=[];for(let j=0;j<$.extender.macros.length;j++){let Y=this.extender.macros[j];if(J.includes(Y.checksum))$.extender.macros.splice(j,1),j--;J.push(Y.checksum)}if($.onRequest((j)=>{Object.assign(j,this.singleton.decorator),Object.assign(j.store,this.singleton.store)}),$.event.trace.length)$.event.trace.push(...$.event.trace);if(!$.config.prefix)console.warn("It's recommended to use scoped instance with a prefix to prevent collision routing with other instance.");if($.event.error.length)$.event.error.push(...this.event.error);if($.config.aot)$.compile();if(Z===!0&&$.config.prefix){this.mount($.config.prefix+"/",$.fetch);for(let j of $.router.history)this.routeTree.set(j.method+`${$.config.prefix}${j.path}`,this.router.history.length),this.router.history.push({...j,path:`${$.config.prefix}${j.path}`,hooks:i(j.hooks,{error:this.event.error})})}else{this.mount($.fetch);for(let j of $.router.history)this.routeTree.set(j.method+`${$.config.prefix}${j.path}`,this.router.history.length),this.router.history.push({...j,path:`${$.config.prefix}${j.path}`,hooks:i(j.hooks,{error:this.event.error})})}return this}else{if(this.headers($.setHeaders),W){if(!(W in this.dependencies))this.dependencies[W]=[];let j=X!==void 0?N0(W+JSON.stringify(X)):0;if(!this.dependencies[W].some(({checksum:Y})=>j===Y))this.extender.macros=this.extender.macros.concat($.extender.macros),this.extender.higherOrderFunctions=this.extender.higherOrderFunctions.concat($.extender.higherOrderFunctions)}else this.extender.macros=this.extender.macros.concat($.extender.macros),this.extender.higherOrderFunctions=this.extender.higherOrderFunctions.concat($.extender.higherOrderFunctions);j1(this.extender.macros),j1(this.extender.higherOrderFunctions);let J=[];for(let j=0;j<this.extender.higherOrderFunctions.length;j++){let Y=this.extender.higherOrderFunctions[j];if(Y.checksum){if(J.includes(Y.checksum))this.extender.higherOrderFunctions.splice(j,1),j--;J.push(Y.checksum)}}this.inference={body:this.inference.body||$.inference.body,cookie:this.inference.cookie||$.inference.cookie,headers:this.inference.headers||$.inference.headers,query:this.inference.query||$.inference.query,set:this.inference.set||$.inference.set,server:this.inference.server||$.inference.server}}this.decorate($.singleton.decorator),this.state($.singleton.store),this.model($.definitions.type),this.error($.definitions.error),$.extender.macros=this.extender.macros.concat($.extender.macros);for(let{method:J,path:j,handler:Y,hooks:G}of Object.values($.router.history))this.add(J,j,Y,i(G,{error:$.event.error}));if(!Z)if(W){if(!(W in this.dependencies))this.dependencies[W]=[];let J=X!==void 0?N0(W+JSON.stringify(X)):0;if(this.dependencies[W].some(({checksum:j})=>J===j))return this;this.dependencies[W].push(!this.config?.analytic?{name:$.config.name,seed:$.config.seed,checksum:J,dependencies:$.dependencies}:{name:$.config.name,seed:$.config.seed,checksum:J,dependencies:$.dependencies,stack:$.telemetry.stack,routes:$.router.history,decorators:$.singleton,store:$.singleton.store,type:$.definitions.type,error:$.definitions.error,derive:$.event.transform.filter((j)=>j?.subType==="derive").map((j)=>({fn:j.toString(),stack:new Error().stack??""})),resolve:$.event.transform.filter((j)=>j?.subType==="resolve").map((j)=>({fn:j.toString(),stack:new Error().stack??""}))}),this.event=V1(this.event,S1($.event),J)}else this.event=V1(this.event,S1($.event));return this.validator.global=i(this.validator.global,{...$.validator.global}),this.validator.local=i(this.validator.local,{...$.validator.scoped}),this}macro($){let W={checksum:N0(JSON.stringify({name:this.config.name,seed:this.config.seed,content:$.toString()})),fn:$};return this.extender.macros.push(W),this}mount($,W){if($ instanceof Q0||typeof $==="function"||$.length===0||$==="/"){let J=typeof $==="function"?$:$ instanceof Q0?$.compile().fetch:W instanceof Q0?W.compile().fetch:W,j=async({request:Y,path:G})=>{if(Y.method==="GET"||Y.method==="HEAD"||!Y.headers.get("content-type"))return J(new Request(R0(Y.url,G||"/"),Y));return J(new Request(R0(Y.url,G||"/"),{...Y,body:await Y.arrayBuffer()}))};return this.all("/*",j,{type:"none"}),this}let X=$.length;if(W instanceof Q0)W=W.compile().fetch;let Z=async({request:J,path:j})=>{if(J.method==="GET"||J.method==="HEAD"||!J.headers.get("content-type"))return W(new Request(R0(J.url,j.slice(X)||"/"),J));return W(new Request(R0(J.url,j.slice(X)||"/"),{...J,body:await J.arrayBuffer()}))};return this.all($,Z,{type:"none"}),this.all($+($.endsWith("/")?"*":"/*"),Z,{type:"none"}),this}get($,W,X){return this.add("GET",$,W,X),this}post($,W,X){return this.add("POST",$,W,X),this}put($,W,X){return this.add("PUT",$,W,X),this}patch($,W,X){return this.add("PATCH",$,W,X),this}delete($,W,X){return this.add("DELETE",$,W,X),this}options($,W,X){return this.add("OPTIONS",$,W,X),this}all($,W,X){return this.add("ALL",$,W,X),this}head($,W,X){return this.add("HEAD",$,W,X),this}connect($,W,X){return this.add("CONNECT",$,W,X),this}route($,W,X,Z){return this.add($.toUpperCase(),W,X,Z,Z?.config),this}ws($,W){let X=W.transformMessage?Array.isArray(W.transformMessage)?W.transformMessage:[W.transformMessage]:void 0,Z=null,J=m(W?.body,{models:this.definitions.type,normalize:this.config.normalize}),j=m(W?.response,{models:this.definitions.type,normalize:this.config.normalize}),Y=(G)=>{if(typeof G==="string"){let K=G?.charCodeAt(0);if(K===47||K===123)try{G=JSON.parse(G)}catch{}else if(Z1(G))G=+G}if(X?.length)for(let K=0;K<X.length;K++){let B=X[K](G);if(B!==void 0)G=B}return G};return this.route("$INTERNALWS",$,(G)=>{let{set:K,path:B,qi:U,headers:w,query:F,params:Q}=G;if(Z===null)Z=this.getServer();if(Z?.upgrade(G.request,{headers:typeof W.upgrade==="function"?W.upgrade(G):W.upgrade,data:{validator:j,open(M){W.open?.(new g0(M,G))},message:(M,D)=>{let z=Y(D);if(J?.Check(z)===!1)return void M.send(new q("message",J,z).message);W.message?.(new g0(M,G),z)},drain(M){W.drain?.(new g0(M,G))},close(M,D,z){W.close?.(new g0(M,G),D,z)}}}))return;return K.status=400,"Expected a websocket connection"},{beforeHandle:W.beforeHandle,transform:W.transform,headers:W.headers,params:W.params,query:W.query}),this}state($,W,X){if(W===void 0)X=$,$={as:"append"},W="";else if(X===void 0){if(typeof $==="string")X=W,W=$,$={as:"append"};else if(typeof $==="object")X=W,W=""}let{as:Z}=$;if(typeof W!=="string")return this;switch(typeof X){case"object":if(W){if(W in this.singleton.store)this.singleton.store[W]=d(this.singleton.store[W],X,{override:Z==="override"});else this.singleton.store[W]=X;return this}if(X===null)return this;return this.singleton.store=d(this.singleton.store,X,{override:Z==="override"}),this;case"function":if(W){if(Z==="override"||!(W in this.singleton.store))this.singleton.store[W]=X}else this.singleton.store=X(this.singleton.store);return this;default:if(Z==="override"||!(W in this.singleton.store))this.singleton.store[W]=X;return this}}decorate($,W,X){if(W===void 0)X=$,$={as:"append"},W="";else if(X===void 0){if(typeof $==="string")X=W,W=$,$={as:"append"};else if(typeof $==="object")X=W,W=""}let{as:Z}=$;if(typeof W!=="string")return this;switch(typeof X){case"object":if(W){if(W in this.singleton.decorator)this.singleton.decorator[W]=d(this.singleton.decorator[W],X,{override:Z==="override"});else this.singleton.decorator[W]=X;return this}if(X===null)return this;return this.singleton.decorator=d(this.singleton.decorator,X,{override:Z==="override"}),this;case"function":if(W){if(Z==="override"||!(W in this.singleton.decorator))this.singleton.decorator[W]=X}else this.singleton.decorator=X(this.singleton.decorator);return this;default:if(Z==="override"||!(W in this.singleton.decorator))this.singleton.decorator[W]=X;return this}}derive($,W){if(!W)W=$,$={as:"local"};let X={subType:"derive",fn:W};return this.onTransform($,X)}model($,W){switch(typeof $){case"object":return Object.entries($).forEach(([X,Z])=>{if(!(X in this.definitions.type))this.definitions.type[X]=Z}),this;case"function":return this.definitions.type=$(this.definitions.type),this}return this.definitions.type[$]=W,this}mapDerive($,W){if(!W)W=$,$={as:"local"};let X={subType:"mapDerive",fn:W};return this.onTransform($,X)}affix($,W,X){if(X==="")return this;let Z=["_","-"," "],J=(K)=>K[0].toUpperCase()+K.slice(1),j=$==="prefix"?(K,B)=>Z.includes(K.at(-1)??"")?K+B:K+J(B):Z.includes(X.at(-1)??"")?(K,B)=>B+K:(K,B)=>B+J(K),Y=(K)=>{let B={};switch(K){case"decorator":for(let U in this.singleton.decorator)B[j(X,U)]=this.singleton.decorator[U];this.singleton.decorator=B;break;case"state":for(let U in this.singleton.store)B[j(X,U)]=this.singleton.store[U];this.singleton.store=B;break;case"model":for(let U in this.definitions.type)B[j(X,U)]=this.definitions.type[U];this.definitions.type=B;break;case"error":for(let U in this.definitions.error)B[j(X,U)]=this.definitions.error[U];this.definitions.error=B;break}},G=Array.isArray(W)?W:[W];for(let K of G.some((B)=>B==="all")?["decorator","state","model","error"]:G)Y(K);return this}prefix($,W){return this.affix("prefix",$,W)}suffix($,W){return this.affix("suffix",$,W)}compile(){if(this.fetch=this.config.aot?b1(this):g1(this),typeof this.server?.reload==="function")this.server.reload({...this.server||{},fetch:this.fetch});return this}handle=async($)=>this.fetch($);fetch=($)=>{return(this.fetch=this.config.aot?b1(this):g1(this))($)};handleError=async($,W)=>(this.handleError=this.config.aot?x1(this):C2(this))($,W);outerErrorHandler=($)=>new Response($.message||$.name||"Error",{status:$?.status??500});listen=($,W)=>{if(typeof Bun==="undefined")throw new Error(".listen() is designed to run on Bun only. If you are running Elysia in other environment please use a dedicated plugin or export the handler via Elysia.fetch");if(this.compile(),typeof $==="string"){if(!Z1($))throw new Error("Port must be a numeric value");$=parseInt($)}let X=this.fetch,Z=typeof $==="object"?{development:!p0,reusePort:!0,...this.config.serve||{},...$||{},static:this.router.static.http.static,websocket:{...this.config.websocket||{},...E1||{}},fetch:X,error:this.outerErrorHandler}:{development:!p0,reusePort:!0,...this.config.serve||{},static:this.router.static.http.static,websocket:{...this.config.websocket||{},...E1||{}},port:$,fetch:X,error:this.outerErrorHandler};this.server=Bun?.serve(Z);for(let J=0;J<this.event.start.length;J++)this.event.start[J].fn(this);if(W)W(this.server);return process.on("beforeExit",()=>{if(this.server){this.server.stop(),this.server=null;for(let J=0;J<this.event.stop.length;J++)this.event.stop[J].fn(this)}}),this.promisedModules.then(()=>{Bun?.gc(!1)}),this};stop=async($)=>{if(!this.server)throw new Error("Elysia isn't running. Call `app.listen` to start the server.");if(this.server){if(this.server.stop($),this.server=null,this.event.stop.length)for(let W=0;W<this.event.stop.length;W++)this.event.stop[W].fn(this)}};get modules(){return Promise.all(this.promisedModules.promises)}}export{V as t,R0 as replaceUrlPath,A1 as replaceSchemaType,c0 as redirect,y as mergeObjectArray,i as mergeHook,o as mapValueError,x as mapResponse,g as mapEarlyResponse,Z0 as mapCompactResponse,m as getSchemaValidator,$1 as getResponseSchemaValidator,b3 as form,T1 as error,Q0 as default,j1 as deduplicateChecksum,d0 as cloneInference,N0 as checksum,q as ValidationError,H5 as TypeSystemPolicy,_0 as StatusMap,Y1 as ParseError,A0 as NotFoundError,X1 as InvertedStatusMap,u0 as InvalidCookieSignature,Q1 as InternalServerError,Q0 as Elysia,I0 as ERROR_CODE,n0 as ELYSIA_TRACE,P0 as ELYSIA_REQUEST_ID,R3 as ELYSIA_FORM_DATA,w0 as Cookie};
521
-
522
- //# debugId=583236C6010E9BD364756E2164756E21
56
+ \t\t\t\t\tc.headers[key] = value
57
+ \t\t\t\t`;if(hasCookie){let get=(name,defaultValue)=>{let value=cookieMeta?.[name]??defaultValue;if(!value)return typeof defaultValue==="string"?`${name}: "${defaultValue}",`:`${name}: ${defaultValue},`;if(typeof value==="string")return`${name}: '${value}',`;if(value instanceof Date)return`${name}: new Date(${value.getTime()}),`;return`${name}: ${value},`},options=cookieMeta?`{
58
+ \t\t\tsecrets: ${cookieMeta.secrets!==void 0?typeof cookieMeta.secrets==="string"?`'${cookieMeta.secrets}'`:"["+cookieMeta.secrets.reduce((a,b)=>a+`'${b}',`,"")+"]":"undefined"},
59
+ \t\t\tsign: ${cookieMeta.sign===!0?!0:cookieMeta.sign!==void 0?"["+cookieMeta.sign.reduce((a,b)=>a+`'${b}',`,"")+"]":"undefined"},
60
+ \t\t\t${get("domain")}
61
+ \t\t\t${get("expires")}
62
+ \t\t\t${get("httpOnly")}
63
+ \t\t\t${get("maxAge")}
64
+ \t\t\t${get("path","/")}
65
+ \t\t\t${get("priority")}
66
+ \t\t\t${get("sameSite")}
67
+ \t\t\t${get("secure")}
68
+ \t\t}`:"undefined";if(hasHeaders)fnLiteral+=`
69
+ c.cookie = await parseCookie(c.set, c.headers.cookie, ${options})
70
+ `;else fnLiteral+=`
71
+ c.cookie = await parseCookie(c.set, c.request.headers.get('cookie'), ${options})
72
+ `}if(hasQuery){let destructured=[];if(validator.query&&validator.query.schema.type==="object"){let properties=validator.query.schema.properties;if(!hasAdditionalProperties(validator.query))for(let[key,_value]of Object.entries(properties)){let value=_value;if(value&&TypeBoxSymbol.optional in value&&value.type==="array"&&value.items)value=value.items;let{type,anyOf}=value,isArray=type==="array"||anyOf?.some((v)=>v.type==="string"&&v.format==="ArrayString");destructured.push({key,isArray,isNestedObjectArray:isArray&&value.items?.type==="object"||!!value.items?.anyOf?.some((x)=>x.type==="object"||x.type==="array"),isObject:type==="object"||anyOf?.some((v)=>v.type==="string"&&v.format==="ArrayString"),anyOf:!!anyOf})}}if(!destructured.length)fnLiteral+=`if(c.qi === -1) {
73
+ \t\t\t\tc.query = {}
74
+ \t\t\t} else {
75
+ \t\t\t\tc.query = parseQueryFromURL(c.url.slice(c.qi + 1))
76
+ \t\t\t}`;else fnLiteral+=`if(c.qi !== -1) {
77
+ \t\t\t\tlet url = '&' + decodeURIComponent(c.url.slice(c.qi + 1))
78
+
79
+ \t\t\t\t${destructured.map(({key,isArray,isObject:isObject2,isNestedObjectArray,anyOf},index)=>{let init=`${index===0?"let":""} memory = url.indexOf('&${key}=')
80
+ \t\t\t\t\t\t\tlet a${index}
81
+ `;if(isArray)return init+(isNestedObjectArray?`while (memory !== -1) {
82
+ \t\t\t\t\t\t\t\t\t\t\tconst start = memory + ${key.length+2}
83
+ \t\t\t\t\t\t\t\t\t\t\tmemory = url.indexOf('&', start)
84
+
85
+ \t\t\t\t\t\t\t\t\t\t\tif(a${index} === undefined)
86
+ \t\t\t\t\t\t\t\t\t\t\t\ta${index} = ''
87
+ \t\t\t\t\t\t\t\t\t\t\telse
88
+ \t\t\t\t\t\t\t\t\t\t\t\ta${index} += ','
89
+
90
+ \t\t\t\t\t\t\t\t\t\t\tlet temp
91
+
92
+ \t\t\t\t\t\t\t\t\t\t\tif(memory === -1) temp = url.slice(start).replace(/\\+|%20/g, ' ')
93
+ \t\t\t\t\t\t\t\t\t\t\telse temp = url.slice(start, memory).replace(/\\+|%20/g, ' ')
94
+
95
+ \t\t\t\t\t\t\t\t\t\t\tconst charCode = temp.charCodeAt(0)
96
+ \t\t\t\t\t\t\t\t\t\t\tif(charCode !== 91 && charCode !== 123)
97
+ \t\t\t\t\t\t\t\t\t\t\t\ttemp = '"' + temp + '"'
98
+
99
+ \t\t\t\t\t\t\t\t\t\t\ta${index} += temp
100
+
101
+ \t\t\t\t\t\t\t\t\t\t\tif(memory === -1) break
102
+
103
+ \t\t\t\t\t\t\t\t\t\t\tmemory = url.indexOf('&${key}=', memory)
104
+ \t\t\t\t\t\t\t\t\t\t\tif(memory === -1) break
105
+ \t\t\t\t\t\t\t\t\t\t}
106
+
107
+ \t\t\t\t\t\t\t\t\t\ttry {
108
+ \t\t\t\t\t\t\t\t\t\t if(a${index}.charCodeAt(0) === 91)
109
+ \t\t\t\t\t\t\t\t\t\t\t\ta${index} = JSON.parse(a${index})
110
+ \t\t\t\t\t\t\t\t\t\t\telse
111
+ \t\t\t\t\t\t\t\t\t\t\t\ta${index} = JSON.parse('[' + a${index} + ']')
112
+ \t\t\t\t\t\t\t\t\t\t} catch {}
113
+ `:`while (memory !== -1) {
114
+ \t\t\t\t\t\t\t\t\t\t\tconst start = memory + ${key.length+2}
115
+ \t\t\t\t\t\t\t\t\t\t\tmemory = url.indexOf('&', start)
116
+
117
+ \t\t\t\t\t\t\t\t\t\t\tif(a${index} === undefined)
118
+ \t\t\t\t\t\t\t\t\t\t\t\ta${index} = []
119
+
120
+ \t\t\t\t\t\t\t\t\t\t\tif(memory === -1) {
121
+ \t\t\t\t\t\t\t\t\t\t\t\ta${index}.push(url.slice(start).replace(/\\+|%20/g, ' '))
122
+ \t\t\t\t\t\t\t\t\t\t\t\tbreak
123
+ \t\t\t\t\t\t\t\t\t\t\t}
124
+ \t\t\t\t\t\t\t\t\t\t\telse a${index}.push(url.slice(start, memory).replace(/\\+|%20/g, ' '))
125
+
126
+ \t\t\t\t\t\t\t\t\t\t\tmemory = url.indexOf('&${key}=', memory)
127
+ \t\t\t\t\t\t\t\t\t\t\tif(memory === -1) break
128
+ \t\t\t\t\t\t\t\t\t\t}
129
+ `);if(isObject2)return init+`if (memory !== -1) {
130
+ \t\t\t\t\t\t\t\t\t\tconst start = memory + ${key.length+2}
131
+ \t\t\t\t\t\t\t\t\t\tmemory = url.indexOf('&', start)
132
+
133
+ \t\t\t\t\t\t\t\t\t\tif(memory === -1) a${index} = url.slice(start).replace(/\\+|%20/g, ' ')
134
+ \t\t\t\t\t\t\t\t\t\telse a${index} = url.slice(start, memory).replace(/\\+|%20/g, ' ')
135
+
136
+ \t\t\t\t\t\t\t\t\t\tif (a${index} !== undefined) {
137
+ \t\t\t\t\t\t\t\t\t\t\ttry {
138
+ \t\t\t\t\t\t\t\t\t\t\t\ta${index} = JSON.parse(a${index})
139
+ \t\t\t\t\t\t\t\t\t\t\t} catch {}
140
+ \t\t\t\t\t\t\t\t\t\t}
141
+ \t\t\t\t\t\t\t\t\t}`;return init+`if (memory !== -1) {
142
+ \t\t\t\t\t\t\t\t\t\tconst start = memory + ${key.length+2}
143
+ \t\t\t\t\t\t\t\t\t\tmemory = url.indexOf('&', start)
144
+
145
+ \t\t\t\t\t\t\t\t\t\tif(memory === -1) a${index} = url.slice(start).replace(/\\+|%20/g, ' ')
146
+ \t\t\t\t\t\t\t\t\t\telse {
147
+ \t\t\t\t\t\t\t\t\t\t\ta${index} = url.slice(start, memory).replace(/\\+|%20/g, ' ')
148
+
149
+ \t\t\t\t\t\t\t\t\t\t\t${anyOf?`
150
+ \t\t\t\t\t\t\t\t\t\t\tlet deepMemory = url.indexOf('&${key}=', memory)
151
+
152
+ \t\t\t\t\t\t\t\t\t\t\tif(deepMemory !== -1) {
153
+ \t\t\t\t\t\t\t\t\t\t\t\ta${index} = [a${index}]
154
+ \t\t\t\t\t\t\t\t\t\t\t\tlet first = true
155
+
156
+ \t\t\t\t\t\t\t\t\t\t\t\twhile(true) {
157
+ \t\t\t\t\t\t\t\t\t\t\t\t\tconst start = deepMemory + ${key.length+2}
158
+ \t\t\t\t\t\t\t\t\t\t\t\t\tif(first)
159
+ \t\t\t\t\t\t\t\t\t\t\t\t\t\tfirst = false
160
+ \t\t\t\t\t\t\t\t\t\t\t\t\telse
161
+ \t\t\t\t\t\t\t\t\t\t\t\t\t\tdeepMemory = url.indexOf('&', start)
162
+
163
+ \t\t\t\t\t\t\t\t\t\t\t\t\tlet value
164
+ \t\t\t\t\t\t\t\t\t\t\t\t\tif(deepMemory === -1) value = url.slice(start).replace(/\\+|%20/g, ' ')
165
+ \t\t\t\t\t\t\t\t\t\t\t\t\telse value = url.slice(start, deepMemory).replace(/\\+|%20/g, ' ')
166
+
167
+ \t\t\t\t\t\t\t\t\t\t\t\t\tconst vStart = value.charCodeAt(0)
168
+ \t\t\t\t\t\t\t\t\t\t\t\t\tconst vEnd = value.charCodeAt(value.length - 1)
169
+
170
+ \t\t\t\t\t\t\t\t\t\t\t\t\tif((vStart === 91 && vEnd === 93) || (vStart === 123 && vEnd === 125))
171
+ \t\t\t\t\t\t\t\t\t\t\t\t\t\ttry {
172
+ \t\t\t\t\t\t\t\t\t\t\t\t\t\t\ta${index}.push(JSON.parse(value))
173
+ \t\t\t\t\t\t\t\t\t\t\t\t\t\t} catch {
174
+ \t\t\t\t\t\t\t\t\t\t\t\t\t\t \ta${index}.push(value)
175
+ \t\t\t\t\t\t\t\t\t\t\t\t\t\t}
176
+
177
+ \t\t\t\t\t\t\t\t\t\t\t\t\tif(deepMemory === -1) break
178
+ \t\t\t\t\t\t\t\t\t\t\t\t}
179
+ \t\t\t\t\t\t\t\t\t\t\t}
180
+ \t\t\t\t\t\t\t\t\t\t\t\t`:""}
181
+ \t\t\t\t\t\t\t\t\t\t}
182
+ \t\t\t\t\t\t\t\t\t}`}).join(`
183
+ `)}
184
+
185
+ \t\t\t\tc.query = {
186
+ \t\t\t\t\t${destructured.map(({key},index)=>`'${key}': a${index}`).join(", ")}
187
+ \t\t\t\t}
188
+ \t\t\t} else {
189
+ \t\t\t\tc.query = {}
190
+ \t\t\t}`}if(hasTrace)fnLiteral+=`
191
+ const id = c[ELYSIA_REQUEST_ID]
192
+ `;let report=createReport({trace:hooks.trace,addFn:(word)=>{fnLiteral+=word}});fnLiteral+=`
193
+ try {
194
+ `;let isAsyncHandler=typeof handler==="function"&&isAsync(handler),saveResponse=hasTrace||hooks.afterResponse.length>0?"c.response = ":"",maybeAsync=hasCookie||hasBody||isAsyncHandler||hooks.parse.length>0||hooks.afterHandle.some(isAsync)||hooks.beforeHandle.some(isAsync)||hooks.transform.some(isAsync)||hooks.mapResponse.some(isAsync),maybeStream=(typeof handler==="function"?isGenerator(handler):!1)||hooks.beforeHandle.some(isGenerator)||hooks.afterHandle.some(isGenerator)||hooks.transform.some(isGenerator),hasSet=inference.cookie||inference.set||hasHeaders||hasTrace||validator.response||isHandleFn&&hasDefaultHeaders||maybeStream,requestMapper=", c.request";fnLiteral+=`c.route = \`${path}\`
195
+ `;let parseReporter=report("parse",{total:hooks.parse.length});if(hasBody){let hasBodyInference=hooks.parse.length||inference.body||validator.body;if(fnLiteral+=`isParsing = true
196
+ `,hooks.type&&!hooks.parse.length)switch(hooks.type){case"json":case"application/json":if(isOptional(validator.body))fnLiteral+="try { c.body = await c.request.json() } catch {}";else fnLiteral+="c.body = await c.request.json()";break;case"text":case"text/plain":fnLiteral+=`c.body = await c.request.text()
197
+ `;break;case"urlencoded":case"application/x-www-form-urlencoded":fnLiteral+=`c.body = parseQuery(await c.request.text())
198
+ `;break;case"arrayBuffer":case"application/octet-stream":fnLiteral+=`c.body = await c.request.arrayBuffer()
199
+ `;break;case"formdata":case"multipart/form-data":if(fnLiteral+=`c.body = {}
200
+ `,isOptional(validator.body))fnLiteral+="let form; try { form = await c.request.formData() } catch {}";else fnLiteral+="const form = await c.request.formData()";fnLiteral+=`
201
+ if(form)
202
+ \t\t\t\t\t\tfor (const key of form.keys()) {
203
+ \t\t\t\t\t\t\tif (c.body[key])
204
+ \t\t\t\t\t\t\t\tcontinue
205
+
206
+ \t\t\t\t\t\t\tconst value = form.getAll(key)
207
+ \t\t\t\t\t\t\tif (value.length === 1)
208
+ \t\t\t\t\t\t\t\tc.body[key] = value[0]
209
+ \t\t\t\t\t\t\telse c.body[key] = value
210
+ \t\t\t\t\t\t} else form = {}
211
+ `;break}else if(hasBodyInference){if(fnLiteral+=`
212
+ `,fnLiteral+=hasHeaders?"let contentType = c.headers['content-type']":"let contentType = c.request.headers.get('content-type')",fnLiteral+=`
213
+ \t\t\t\tif (contentType) {
214
+ \t\t\t\t\tconst index = contentType.indexOf(';')
215
+ \t\t\t\t\tif (index !== -1) contentType = contentType.substring(0, index)
216
+
217
+ \t\t\t\t\tc.contentType = contentType
218
+ `,hooks.parse.length){fnLiteral+=`let used = false
219
+ `;let reporter=report("parse",{total:hooks.parse.length});for(let i=0;i<hooks.parse.length;i++){let endUnit=reporter.resolveChild(hooks.parse[i].fn.name),name=`bo${i}`;if(i!==0)fnLiteral+=`if(!used) {
220
+ `;if(fnLiteral+=`let ${name} = parse[${i}](c, contentType)
221
+ `,fnLiteral+=`if(${name} instanceof Promise) ${name} = await ${name}
222
+ `,fnLiteral+=`if(${name} !== undefined) { c.body = ${name}; used = true }
223
+ `,endUnit(),i!==0)fnLiteral+="}"}reporter.resolve()}if(fnLiteral+=`
224
+ delete c.contentType
225
+ `,hooks.parse.length)fnLiteral+="if (!used) {";if(hooks.type&&!Array.isArray(hooks.type))switch(hooks.type){case"json":case"application/json":if(isOptional(validator.body))fnLiteral+="try { c.body = await c.request.json() } catch {}";else fnLiteral+="c.body = await c.request.json()";break;case"text":case"text/plain":fnLiteral+=`c.body = await c.request.text()
226
+ `;break;case"urlencoded":case"application/x-www-form-urlencoded":fnLiteral+=`c.body = parseQuery(await c.request.text())
227
+ `;break;case"arrayBuffer":case"application/octet-stream":fnLiteral+=`c.body = await c.request.arrayBuffer()
228
+ `;break;case"formdata":case"multipart/form-data":fnLiteral+=`c.body = {}
229
+
230
+ \t\t\t\t\t\t\tconst form = await c.request.formData()
231
+ \t\t\t\t\t\t\tfor (const key of form.keys()) {
232
+ \t\t\t\t\t\t\t\tif (c.body[key])
233
+ \t\t\t\t\t\t\t\t\tcontinue
234
+
235
+ \t\t\t\t\t\t\t\tconst value = form.getAll(key)
236
+ \t\t\t\t\t\t\t\tif (value.length === 1)
237
+ \t\t\t\t\t\t\t\t\tc.body[key] = value[0]
238
+ \t\t\t\t\t\t\t\telse c.body[key] = value
239
+ \t\t\t\t\t\t\t}
240
+ `;break}else fnLiteral+=`
241
+ \t\t\t\t\tswitch (contentType) {
242
+ \t\t\t\t\t\tcase 'application/json':
243
+ \t\t\t\t\t\t\t${isOptional(validator.body)?"try { c.body = await c.request.json() } catch {}":"c.body = await c.request.json()"}
244
+ \t\t\t\t\t\t\tbreak
245
+
246
+ \t\t\t\t\t\tcase 'text/plain':
247
+ \t\t\t\t\t\t\tc.body = await c.request.text()
248
+ \t\t\t\t\t\t\tbreak
249
+
250
+ \t\t\t\t\t\tcase 'application/x-www-form-urlencoded':
251
+ \t\t\t\t\t\t\tc.body = parseQuery(await c.request.text())
252
+ \t\t\t\t\t\t\tbreak
253
+
254
+ \t\t\t\t\t\tcase 'application/octet-stream':
255
+ \t\t\t\t\t\t\tc.body = await c.request.arrayBuffer();
256
+ \t\t\t\t\t\t\tbreak
257
+
258
+ \t\t\t\t\t\tcase 'multipart/form-data':
259
+ \t\t\t\t\t\t\tc.body = {}
260
+
261
+ \t\t\t\t\t\t\tconst form = await c.request.formData()
262
+ \t\t\t\t\t\t\tfor (const key of form.keys()) {
263
+ \t\t\t\t\t\t\t\tif (c.body[key])
264
+ \t\t\t\t\t\t\t\t\tcontinue
265
+
266
+ \t\t\t\t\t\t\t\tconst value = form.getAll(key)
267
+ \t\t\t\t\t\t\t\tif (value.length === 1)
268
+ \t\t\t\t\t\t\t\t\tc.body[key] = value[0]
269
+ \t\t\t\t\t\t\t\telse c.body[key] = value
270
+ \t\t\t\t\t\t\t}
271
+
272
+ \t\t\t\t\t\t\tbreak
273
+ \t\t\t\t\t}`;if(hooks.parse.length)fnLiteral+="}";fnLiteral+=`}
274
+ `}fnLiteral+=`
275
+ isParsing = false
276
+ `}if(parseReporter.resolve(),hooks?.transform){let reporter=report("transform",{total:hooks.transform.length});if(hooks.transform.length)fnLiteral+=`
277
+ let transformed
278
+ `;for(let i=0;i<hooks.transform.length;i++){let transform=hooks.transform[i],endUnit=reporter.resolveChild(transform.fn.name);if(fnLiteral+=isAsync(transform)?`transformed = await transform[${i}](c)
279
+ `:`transformed = transform[${i}](c)
280
+ `,transform.subType==="mapDerive")fnLiteral+=`if(transformed instanceof ElysiaCustomStatusResponse)
281
+ \t\t\t\t\tthrow transformed
282
+ \t\t\t\telse {
283
+ \t\t\t\t\ttransformed.request = c.request
284
+ \t\t\t\t\ttransformed.store = c.store
285
+ \t\t\t\t\ttransformed.qi = c.qi
286
+ \t\t\t\t\ttransformed.path = c.path
287
+ \t\t\t\t\ttransformed.url = c.url
288
+ \t\t\t\t\ttransformed.redirect = c.redirect
289
+ \t\t\t\t\ttransformed.set = c.set
290
+ \t\t\t\t\ttransformed.error = c.error
291
+
292
+ \t\t\t\t\tc = transformed
293
+ \t\t\t}`;else fnLiteral+=`if(transformed instanceof ElysiaCustomStatusResponse)
294
+ \t\t\t\t\tthrow transformed
295
+ \t\t\t\telse
296
+ \t\t\t\t\tObject.assign(c, transformed)
297
+ `;endUnit()}reporter.resolve()}if(validator){if(fnLiteral+=`
298
+ `,validator.headers){if(normalize&&"Clean"in validator.headers&&!hasAdditionalProperties(validator.headers))fnLiteral+=`c.headers = validator.headers.Clean(c.headers);
299
+ `;if(hasProperty("default",validator.headers.schema))for(let[key,value]of Object.entries(Value4.Default(validator.headers.schema,{}))){let parsed=typeof value==="object"?JSON.stringify(value):typeof value==="string"?`'${value}'`:value;if(parsed!==void 0)fnLiteral+=`c.headers['${key}'] ??= ${parsed}
300
+ `}if(isOptional(validator.headers))fnLiteral+="if(isNotEmpty(c.headers)) {";if(fnLiteral+=`if(validator.headers.Check(c.headers) === false) {
301
+ \t\t\t\t${composeValidation("headers")}
302
+ \t\t\t}`,hasTransform(validator.headers.schema))fnLiteral+=`c.headers = validator.headers.Decode(c.headers)
303
+ `;if(isOptional(validator.headers))fnLiteral+="}"}if(validator.params){if(hasProperty("default",validator.params.schema))for(let[key,value]of Object.entries(Value4.Default(validator.params.schema,{}))){let parsed=typeof value==="object"?JSON.stringify(value):typeof value==="string"?`'${value}'`:value;if(parsed!==void 0)fnLiteral+=`c.params['${key}'] ??= ${parsed}
304
+ `}if(fnLiteral+=`if(validator.params.Check(c.params) === false) {
305
+ \t\t\t\t${composeValidation("params")}
306
+ \t\t\t}`,hasTransform(validator.params.schema))fnLiteral+=`
307
+ c.params = validator.params.Decode(c.params)
308
+ `}if(validator.query){if(normalize&&"Clean"in validator.query&&!hasAdditionalProperties(validator.query))fnLiteral+=`c.query = validator.query.Clean(c.query);
309
+ `;if(hasProperty("default",validator.query.schema))for(let[key,value]of Object.entries(Value4.Default(validator.query.schema,{}))){let parsed=typeof value==="object"?JSON.stringify(value):typeof value==="string"?`'${value}'`:value;if(parsed!==void 0)fnLiteral+=`if(c.query['${key}'] === undefined) c.query['${key}'] = ${parsed}
310
+ `}if(isOptional(validator.query))fnLiteral+="if(isNotEmpty(c.query)) {";if(fnLiteral+=`if(validator.query.Check(c.query) === false) {
311
+ \t\t${composeValidation("query")}
312
+ \t\t\t}`,hasTransform(validator.query.schema))fnLiteral+=`
313
+ c.query = validator.query.Decode(Object.assign({}, c.query))
314
+ `;if(isOptional(validator.query))fnLiteral+="}"}if(validator.body){if(normalize&&"Clean"in validator.body&&!hasAdditionalProperties(validator.body))fnLiteral+=`c.body = validator.body.Clean(c.body);
315
+ `;let doesHaveTransform=hasTransform(validator.body.schema);if(doesHaveTransform||isOptional(validator.body))fnLiteral+=`
316
+ const isNotEmptyObject = c.body && (typeof c.body === "object" && isNotEmpty(c.body))
317
+ `;if(hasProperty("default",validator.body.schema)){let value=Value4.Default(validator.body.schema,validator.body.schema.type==="object"?{}:void 0),parsed=typeof value==="object"?JSON.stringify(value):typeof value==="string"?`'${value}'`:value;if(fnLiteral+=`if(validator.body.Check(c.body) === false) {
318
+ \t\t\t\t\tif (typeof c.body === 'object') {
319
+ \t\t\t\t\t\tc.body = Object.assign(${parsed}, c.body)
320
+ \t\t\t\t\t} else { c.body = ${parsed} }`,isOptional(validator.body))fnLiteral+=`
321
+ \t\t\t\t\t if(isNotEmptyObject && validator.body.Check(c.body) === false) {
322
+ \t\t\t\t${composeValidation("body")}
323
+ \t\t\t}
324
+ }`;else fnLiteral+=`
325
+ \t\t\t\tif(validator.body.Check(c.body) === false) {
326
+ \t\t\t\t${composeValidation("body")}
327
+ \t\t\t}
328
+ }`}else if(isOptional(validator.body))fnLiteral+=`if(isNotEmptyObject && validator.body.Check(c.body) === false) {
329
+ \t\t\t${composeValidation("body")}
330
+ \t\t}`;else fnLiteral+=`if(validator.body.Check(c.body) === false) {
331
+ \t\t\t${composeValidation("body")}
332
+ \t\t}`;if(doesHaveTransform)fnLiteral+=`
333
+ if(isNotEmptyObject) c.body = validator.body.Decode(c.body)
334
+ `}if(isNotEmpty(cookieValidator?.schema?.properties??cookieValidator?.schema?.schema??{})){if(fnLiteral+=`const cookieValue = {}
335
+ \t\t\tfor(const [key, value] of Object.entries(c.cookie))
336
+ \t\t\t\tcookieValue[key] = value.value
337
+ `,hasProperty("default",cookieValidator.schema))for(let[key,value]of Object.entries(Value4.Default(cookieValidator.schema,{})))fnLiteral+=`cookieValue['${key}'] = ${typeof value==="object"?JSON.stringify(value):value}
338
+ `;if(isOptional(validator.cookie))fnLiteral+="if(isNotEmpty(c.cookie)) {";if(fnLiteral+=`if(validator.cookie.Check(cookieValue) === false) {
339
+ \t\t\t\t${composeValidation("cookie","cookieValue")}
340
+ \t\t\t}`,hasTransform(validator.cookie.schema))fnLiteral+=`
341
+ for(const [key, value] of Object.entries(validator.cookie.Decode(cookieValue)))
342
+ \t\t\t\t\tc.cookie[key].value = value
343
+ `;if(isOptional(validator.cookie))fnLiteral+="}"}}if(hooks?.beforeHandle){let reporter=report("beforeHandle",{total:hooks.beforeHandle.length}),hasResolve=!1;for(let i=0;i<hooks.beforeHandle.length;i++){let beforeHandle=hooks.beforeHandle[i],endUnit=reporter.resolveChild(beforeHandle.fn.name),returning=hasReturn(beforeHandle);if(beforeHandle.subType==="resolve"||beforeHandle.subType==="mapResolve"){if(!hasResolve)hasResolve=!0,fnLiteral+=`
344
+ let resolved
345
+ `;if(fnLiteral+=isAsync(beforeHandle)?`resolved = await beforeHandle[${i}](c);
346
+ `:`resolved = beforeHandle[${i}](c);
347
+ `,beforeHandle.subType==="mapResolve")fnLiteral+=`if(resolved instanceof ElysiaCustomStatusResponse)
348
+ \t\t\t\t\t\tthrow resolved
349
+ \t\t\t\t\telse {
350
+ \t\t\t\t\t\tresolved.request = c.request
351
+ \t\t\t\t\t\tresolved.store = c.store
352
+ \t\t\t\t\t\tresolved.qi = c.qi
353
+ \t\t\t\t\t\tresolved.path = c.path
354
+ \t\t\t\t\t\tresolved.url = c.url
355
+ \t\t\t\t\t\tresolved.redirect = c.redirect
356
+ \t\t\t\t\t\tresolved.set = c.set
357
+ \t\t\t\t\t\tresolved.error = c.error
358
+
359
+ \t\t\t\t\t\tc = resolved
360
+ \t\t\t\t\t}`;else fnLiteral+=`if(resolved instanceof ElysiaCustomStatusResponse)
361
+ \t\t\t\t\t\tthrow resolved
362
+ \t\t\t\t\telse
363
+ \t\t\t\t\t\tObject.assign(c, resolved)
364
+ `}else if(!returning)fnLiteral+=isAsync(beforeHandle)?`await beforeHandle[${i}](c);
365
+ `:`beforeHandle[${i}](c);
366
+ `,endUnit();else{if(fnLiteral+=isAsync(beforeHandle)?`be = await beforeHandle[${i}](c);
367
+ `:`be = beforeHandle[${i}](c);
368
+ `,endUnit("be"),fnLiteral+=`if(be !== undefined) {
369
+ `,reporter.resolve(),hooks.afterHandle?.length){report("handle",{name:isHandleFn?handler.name:void 0}).resolve();let reporter2=report("afterHandle",{total:hooks.afterHandle.length});for(let i2=0;i2<hooks.afterHandle.length;i2++){let hook=hooks.afterHandle[i2],returning2=hasReturn(hook),endUnit2=reporter2.resolveChild(hook.fn.name);if(fnLiteral+=`c.response = be
370
+ `,!returning2)fnLiteral+=isAsync(hook.fn)?`await afterHandle[${i2}](c, be)
371
+ `:`afterHandle[${i2}](c, be)
372
+ `;else fnLiteral+=isAsync(hook.fn)?`af = await afterHandle[${i2}](c)
373
+ `:`af = afterHandle[${i2}](c)
374
+ `,fnLiteral+=`if(af !== undefined) { c.response = be = af }
375
+ `;endUnit2("af")}reporter2.resolve()}if(validator.response)fnLiteral+=composeResponseValidation("be");let mapResponseReporter=report("mapResponse",{total:hooks.mapResponse.length});if(hooks.mapResponse.length){fnLiteral+=`
376
+ c.response = be
377
+ `;for(let i2=0;i2<hooks.mapResponse.length;i2++){let mapResponse2=hooks.mapResponse[i2],endUnit2=mapResponseReporter.resolveChild(mapResponse2.fn.name);fnLiteral+=`
378
+ if(mr === undefined) {
379
+ \t\t\t\t\t\t\tmr = ${isAsyncName(mapResponse2)?"await":""} onMapResponse[${i2}](c)
380
+ \t\t\t\t\t\t\tif(mr !== undefined) be = c.response = mr
381
+ \t\t\t\t\t\t}
382
+ `,endUnit2()}}mapResponseReporter.resolve(),fnLiteral+=encodeCookie,fnLiteral+=`return mapEarlyResponse(${saveResponse} be, c.set ${requestMapper})}
383
+ `}}reporter.resolve()}if(hooks?.afterHandle.length){let handleReporter=report("handle",{name:isHandleFn?handler.name:void 0});if(hooks.afterHandle.length)fnLiteral+=isAsyncHandler?`let r = c.response = await ${handle};
384
+ `:`let r = c.response = ${handle};
385
+ `;else fnLiteral+=isAsyncHandler?`let r = await ${handle};
386
+ `:`let r = ${handle};
387
+ `;handleReporter.resolve();let reporter=report("afterHandle",{total:hooks.afterHandle.length});for(let i=0;i<hooks.afterHandle.length;i++){let hook=hooks.afterHandle[i],returning=hasReturn(hook),endUnit=reporter.resolveChild(hook.fn.name);if(!returning)fnLiteral+=isAsync(hook.fn)?`await afterHandle[${i}](c)
388
+ `:`afterHandle[${i}](c)
389
+ `,endUnit();else if(fnLiteral+=isAsync(hook.fn)?`af = await afterHandle[${i}](c)
390
+ `:`af = afterHandle[${i}](c)
391
+ `,endUnit("af"),validator.response)fnLiteral+="if(af !== undefined) {",reporter.resolve(),fnLiteral+=composeResponseValidation("af"),fnLiteral+="c.response = af }";else fnLiteral+="if(af !== undefined) {",reporter.resolve(),fnLiteral+=`c.response = af}
392
+ `}if(reporter.resolve(),fnLiteral+=`r = c.response
393
+ `,validator.response)fnLiteral+=composeResponseValidation();fnLiteral+=encodeCookie;let mapResponseReporter=report("mapResponse",{total:hooks.mapResponse.length});if(hooks.mapResponse.length)for(let i=0;i<hooks.mapResponse.length;i++){let mapResponse2=hooks.mapResponse[i],endUnit=mapResponseReporter.resolveChild(mapResponse2.fn.name);fnLiteral+=`
394
+ mr = ${isAsyncName(mapResponse2)?"await":""} onMapResponse[${i}](c)
395
+ \t\t\t\tif(mr !== undefined) r = c.response = mr
396
+ `,endUnit()}if(mapResponseReporter.resolve(),hasSet)fnLiteral+=`return mapResponse(${saveResponse} r, c.set ${requestMapper})
397
+ `;else fnLiteral+=`return mapCompactResponse(${saveResponse} r ${requestMapper})
398
+ `}else{let handleReporter=report("handle",{name:isHandleFn?handler.name:void 0});if(validator.response||hooks.mapResponse.length){if(fnLiteral+=isAsyncHandler?`let r = await ${handle};
399
+ `:`let r = ${handle};
400
+ `,handleReporter.resolve(),validator.response)fnLiteral+=composeResponseValidation();report("afterHandle").resolve();let mapResponseReporter=report("mapResponse",{total:hooks.mapResponse.length});if(hooks.mapResponse.length){fnLiteral+=`
401
+ c.response = r
402
+ `;for(let i=0;i<hooks.mapResponse.length;i++){let mapResponse2=hooks.mapResponse[i],endUnit=mapResponseReporter.resolveChild(mapResponse2.fn.name);fnLiteral+=`
403
+ if(mr === undefined) {
404
+ \t\t\t\t\t\tmr = ${isAsyncName(mapResponse2)?"await":""} onMapResponse[${i}](c)
405
+ \t\t\t\t\tif(mr !== undefined) r = c.response = mr
406
+ \t\t\t\t\t}
407
+ `,endUnit()}}if(mapResponseReporter.resolve(),fnLiteral+=encodeCookie,handler instanceof Response)fnLiteral+=inference.set?`if(
408
+ \t\t\t\t\tisNotEmpty(c.set.headers) ||
409
+ \t\t\t\t\tc.set.status !== 200 ||
410
+ \t\t\t\t\tc.set.redirect ||
411
+ \t\t\t\t\tc.set.cookie
412
+ \t\t\t\t)
413
+ \t\t\t\t\treturn mapResponse(${saveResponse} ${handle}.clone(), c.set ${requestMapper})
414
+ \t\t\t\telse
415
+ \t\t\t\t\treturn ${handle}.clone()`:`return ${handle}.clone()`,fnLiteral+=`
416
+ `;else if(hasSet)fnLiteral+=`return mapResponse(${saveResponse} r, c.set ${requestMapper})
417
+ `;else fnLiteral+=`return mapCompactResponse(${saveResponse} r ${requestMapper})
418
+ `}else if(hasCookie||hasTrace){fnLiteral+=isAsyncHandler?`let r = await ${handle};
419
+ `:`let r = ${handle};
420
+ `,handleReporter.resolve(),report("afterHandle").resolve();let mapResponseReporter=report("mapResponse",{total:hooks.mapResponse.length});if(hooks.mapResponse.length){fnLiteral+=`
421
+ c.response = r
422
+ `;for(let i=0;i<hooks.mapResponse.length;i++){let mapResponse2=hooks.mapResponse[i],endUnit=mapResponseReporter.resolveChild(mapResponse2.fn.name);fnLiteral+=`
423
+ if(mr === undefined) {
424
+ \t\t\t\t\t\t\tmr = ${isAsyncName(mapResponse2)?"await":""} onMapResponse[${i}](c)
425
+ \t\t\t\t\t\tif(mr !== undefined) r = c.response = mr
426
+ \t\t\t\t\t\t}
427
+ `,endUnit()}}if(mapResponseReporter.resolve(),fnLiteral+=encodeCookie,hasSet)fnLiteral+=`return mapResponse(${saveResponse} r, c.set ${requestMapper})
428
+ `;else fnLiteral+=`return mapCompactResponse(${saveResponse} r ${requestMapper})
429
+ `}else{handleReporter.resolve();let handled=isAsyncHandler?`await ${handle}`:handle;if(report("afterHandle").resolve(),handler instanceof Response)fnLiteral+=inference.set?`if(
430
+ \t\t\t\t\tisNotEmpty(c.set.headers) ||
431
+ \t\t\t\t\tc.set.status !== 200 ||
432
+ \t\t\t\t\tc.set.redirect ||
433
+ \t\t\t\t\tc.set.cookie
434
+ \t\t\t\t)
435
+ \t\t\t\t\treturn mapResponse(${saveResponse} ${handle}.clone(), c.set ${requestMapper})
436
+ \t\t\t\telse
437
+ \t\t\t\t\treturn ${handle}.clone()`:`return ${handle}.clone()`,fnLiteral+=`
438
+ `;else if(hasSet)fnLiteral+=`return mapResponse(${saveResponse} ${handled}, c.set ${requestMapper})
439
+ `;else fnLiteral+=`return mapCompactResponse(${saveResponse} ${handled} ${requestMapper})
440
+ `}}if(fnLiteral+=`
441
+ } catch(error) {`,hasBody)fnLiteral+=`
442
+ if(isParsing) error = new ParseError()
443
+ `;if(!maybeAsync)fnLiteral+=`
444
+ return (async () => {
445
+ `;if(fnLiteral+=`
446
+ const set = c.set
447
+ if (!set.status || set.status < 300) set.status = error?.status || 500
448
+ `,hasTrace)for(let i=0;i<hooks.trace.length;i++)fnLiteral+=`report${i}?.resolve(error);reportChild${i}?.(error);
449
+ `;let errorReporter=report("error",{total:hooks.error.length});if(hooks.error.length){fnLiteral+=`
450
+ \t\t\t\tc.error = error
451
+ \t\t\t\tif(error instanceof TypeBoxError) {
452
+ \t\t\t\t\tc.code = "VALIDATION"
453
+ \t\t\t\t\tc.set.status = 422
454
+ \t\t\t\t} else
455
+ \t\t\t\t\tc.code = error.code ?? error[ERROR_CODE] ?? "UNKNOWN"
456
+ \t\t\t\tlet er
457
+ \t\t\t`;for(let i=0;i<hooks.error.length;i++){let endUnit=errorReporter.resolveChild(hooks.error[i].fn.name);if(isAsync(hooks.error[i]))fnLiteral+=`
458
+ er = await handleErrors[${i}](c)
459
+ `;else fnLiteral+=`
460
+ er = handleErrors[${i}](c)
461
+ if (er instanceof Promise) er = await er
462
+ `;endUnit();let mapResponseReporter=report("mapResponse",{total:hooks.mapResponse.length});if(hooks.mapResponse.length)for(let i2=0;i2<hooks.mapResponse.length;i2++){let mapResponse2=hooks.mapResponse[i2],endUnit2=mapResponseReporter.resolveChild(mapResponse2.fn.name);fnLiteral+=`
463
+ c.response = er
464
+
465
+ \t\t\t\t\t\t\ter = ${isAsyncName(mapResponse2)?"await":""} onMapResponse[${i2}](c)
466
+ \t\t\t\t\t\t\tif(er instanceof Promise) er = await er
467
+ `,endUnit2()}if(mapResponseReporter.resolve(),fnLiteral+=`er = mapEarlyResponse(er, set ${requestMapper})
468
+ `,fnLiteral+="if (er) {",hasTrace){for(let i2=0;i2<hooks.trace.length;i2++)fnLiteral+=`
469
+ report${i2}.resolve()
470
+ `;errorReporter.resolve()}fnLiteral+=`return er
471
+ }
472
+ `}}if(errorReporter.resolve(),fnLiteral+=`return handleError(c, error, true)
473
+ `,!maybeAsync)fnLiteral+="})()";if(fnLiteral+="}",hasAfterResponse||hasTrace){if(fnLiteral+=" finally { ",!maybeAsync)fnLiteral+=";(async () => {";let reporter=report("afterResponse",{total:hooks.afterResponse.length});if(hasAfterResponse)for(let i=0;i<hooks.afterResponse.length;i++){let endUnit=reporter.resolveChild(hooks.afterResponse[i].fn.name);fnLiteral+=`
474
+ await afterResponse[${i}](c);
475
+ `,endUnit()}if(reporter.resolve(),!maybeAsync)fnLiteral+="})();";fnLiteral+="}"}fnLiteral=`const {
476
+ \t\thandler,
477
+ \t\thandleError,
478
+ \t\thooks: {
479
+ \t\t\ttransform,
480
+ \t\t\tresolve,
481
+ \t\t\tbeforeHandle,
482
+ \t\t\tafterHandle,
483
+ \t\t\tmapResponse: onMapResponse,
484
+ \t\t\tparse,
485
+ \t\t\terror: handleErrors,
486
+ \t\t\tafterResponse,
487
+ \t\t\ttrace: _trace
488
+ \t\t},
489
+ \t\tvalidator,
490
+ \t\tutils: {
491
+ \t\t\tmapResponse,
492
+ \t\t\tmapCompactResponse,
493
+ \t\t\tmapEarlyResponse,
494
+ \t\t\tparseQuery,
495
+ \t\t\tparseQueryFromURL,
496
+ \t\t\tisNotEmpty
497
+ \t\t},
498
+ \t\terror: {
499
+ \t\t\tNotFoundError,
500
+ \t\t\tValidationError,
501
+ \t\t\tInternalServerError,
502
+ \t\t\tParseError
503
+ \t\t},
504
+ \t\tschema,
505
+ \t\tdefinitions,
506
+ \t\tERROR_CODE,
507
+ \t\tparseCookie,
508
+ \t\tsignCookie,
509
+ \t\tdecodeURIComponent,
510
+ \t\tElysiaCustomStatusResponse,
511
+ \t\tELYSIA_TRACE,
512
+ \t\tELYSIA_REQUEST_ID,
513
+ \t\tgetServer,
514
+ \t\tTypeBoxError
515
+ \t} = hooks
516
+
517
+ \tconst trace = _trace.map(x => typeof x === 'function' ? x : x.fn)
518
+
519
+ \treturn ${maybeAsync?"async":""} function handle(c) {
520
+ \t\t${hooks.beforeHandle.length?"let be":""}
521
+ \t\t${hooks.afterHandle.length?"let af":""}
522
+ \t\t${hooks.mapResponse.length?"let mr":""}
523
+
524
+ \t\t${allowMeta?"c.schema = schema; c.defs = definitions":""}
525
+ \t\t${fnLiteral}
526
+ \t}`;try{return Function("hooks",fnLiteral)({handler,hooks:lifeCycleToFn(hooks),validator,handleError:app.handleError,utils:{mapResponse,mapCompactResponse,mapEarlyResponse,parseQuery,parseQueryFromURL,isNotEmpty},error:{NotFoundError,ValidationError,InternalServerError,ParseError},schema:app.router.history,definitions:app.definitions.type,ERROR_CODE,parseCookie,signCookie,decodeURIComponent:import_fast_decode_uri_component3.default,ElysiaCustomStatusResponse,ELYSIA_TRACE,ELYSIA_REQUEST_ID,getServer:()=>app.getServer(),TypeBoxError})}catch{let debugHooks=lifeCycleToFn(hooks);console.log("[Composer] failed to generate optimized handler"),console.log("Please report the following to SaltyAom privately as it may include sensitive information about your codebase:"),console.log("---"),console.log({handler:typeof handler==="function"?handler.toString():handler,hooks:{...debugHooks,transform:debugHooks?.transform?.map?.((x)=>x.toString()),resolve:debugHooks?.resolve?.map?.((x)=>x.toString()),beforeHandle:debugHooks?.beforeHandle?.map?.((x)=>x.toString()),afterHandle:debugHooks?.afterHandle?.map?.((x)=>x.toString()),mapResponse:debugHooks?.mapResponse?.map?.((x)=>x.toString()),parse:debugHooks?.parse?.map?.((x)=>x.toString()),error:debugHooks?.error?.map?.((x)=>x.toString()),afterResponse:debugHooks?.afterResponse?.map?.((x)=>x.toString()),stop:debugHooks?.stop?.map?.((x)=>x.toString())},validator,definitions:app.definitions.type}),console.log("---"),process.exit(1)}},composeGeneralHandler=(app)=>{let standardHostname=app.config.handler?.standardHostname??!0,decoratorsLiteral="",fnLiteral="",defaultHeaders=app.setHeaders;for(let key of Object.keys(app.singleton.decorator))decoratorsLiteral+=`,${key}: app.singleton.decorator.${key}`;let router=app.router,hasTrace=app.event.trace.length>0,findDynamicRoute=`
527
+ \tconst route = router.find(request.method, path) ${router.http.root.ALL?'?? router.find("ALL", path)':""}
528
+
529
+ \tif (route === null)
530
+ \t\treturn ${app.event.error.length?"app.handleError(ctx, notFound)":app.event.request.length?`new Response(error404Message, {
531
+ \t\t\t\t\tstatus: ctx.set.status === 200 ? 404 : ctx.set.status,
532
+ \t\t\t\t\theaders: ctx.set.headers
533
+ \t\t\t\t})`:"error404.clone()"}
534
+
535
+ \tctx.params = route.params
536
+ `;findDynamicRoute+=`if(route.store.handler) return route.store.handler(ctx)
537
+ \treturn (route.store.handler = route.store.compile())(ctx)
538
+ `;let switchMap="";for(let[path,{code,all,static:staticFn}]of Object.entries(router.static.http.map)){if(staticFn)switchMap+=`case '${path}':
539
+ switch(request.method) {
540
+ ${code}
541
+ ${all??"default: break map"}}
542
+
543
+ `;switchMap+=`case '${path}':
544
+ switch(request.method) {
545
+ ${code}
546
+ ${all??"default: break map"}}
547
+
548
+ `}let maybeAsync=app.event.request.some(isAsync);if(fnLiteral+=`const {
549
+ \t\tapp,
550
+ \t\tmapEarlyResponse,
551
+ \t\tNotFoundError,
552
+ \t\trandomId,
553
+ \t\thandleError,
554
+ \t\terror,
555
+ \t\tredirect,
556
+ \t\tELYSIA_TRACE,
557
+ \t\tELYSIA_REQUEST_ID,
558
+ \t\tgetServer
559
+ \t} = data
560
+
561
+ \tconst store = app.singleton.store
562
+ \tconst staticRouter = app.router.static.http
563
+ \tconst st = staticRouter.handlers
564
+ \tconst wsRouter = app.router.ws
565
+ \tconst router = app.router.http
566
+ \tconst trace = app.event.trace.map(x => typeof x === 'function' ? x : x.fn)
567
+
568
+ \tconst notFound = new NotFoundError()
569
+ \tconst hoc = app.extender.higherOrderFunctions.map(x => x.fn)
570
+
571
+ \t${app.event.request.length?"const onRequest = app.event.request.map(x => x.fn)":""}
572
+ \t${app.event.error.length?"":`
573
+ const error404Message = notFound.message.toString()
574
+ \tconst error404 = new Response(error404Message, { status: 404 });
575
+ `}
576
+
577
+ \t${app.event.trace.length?`const ${app.event.trace.map((_2,i)=>`tr${i} = app.event.trace[${i}].fn`).join(",")}`:""}
578
+
579
+ \t${maybeAsync?"async":""} function map(request) {
580
+ `,app.event.request.length)fnLiteral+="let re";if(fnLiteral+=`
581
+ const url = request.url
582
+ \t\tconst s = url.indexOf('/', ${standardHostname?11:7})
583
+ \t\tconst qi = url.indexOf('?', s + 1)
584
+ \t\tlet path
585
+ \t\tif(qi === -1)
586
+ \t\t\tpath = url.substring(s)
587
+ \t\telse
588
+ \t\t\tpath = url.substring(s, qi)
589
+ `,fnLiteral+=`${hasTrace?"const id = randomId()":""}
590
+ \t\tconst ctx = {
591
+ \t\t\trequest,
592
+ \t\t\tstore,
593
+ \t\t\tqi,
594
+ \t\t\tpath,
595
+ \t\t\turl,
596
+ \t\t\tredirect,
597
+ \t\t\tset: {
598
+ \t\t\t\theaders: ${Object.keys(defaultHeaders??{}).length?"Object.assign({}, app.setHeaders)":"{}"},
599
+ \t\t\t\tstatus: 200
600
+ \t\t\t},
601
+ \t\t\terror
602
+ \t\t\t${app.inference.server?`, get server() {
603
+ \t\t\t\t\t\t\treturn getServer()
604
+ \t\t\t\t\t\t}`:""}
605
+ \t\t\t${hasTrace?",[ELYSIA_REQUEST_ID]: id":""}
606
+ \t\t\t${decoratorsLiteral}
607
+ \t\t}
608
+ `,app.event.trace.length)fnLiteral+=`
609
+ ctx[ELYSIA_TRACE] = [${app.event.trace.map((_2,i)=>`tr${i}(ctx)`).join(",")}]
610
+ `;let reporter=createReport({context:"ctx",trace:app.event.trace,addFn(word){fnLiteral+=word}})("request",{attribute:"ctx",total:app.event.request.length});if(app.event.request.length){fnLiteral+=`
611
+ try {
612
+ `;for(let i=0;i<app.event.request.length;i++){let hook=app.event.request[i],withReturn=hasReturn(hook),maybeAsync2=isAsync(hook),endUnit=reporter.resolveChild(app.event.request[i].fn.name);if(withReturn)fnLiteral+=`re = mapEarlyResponse(
613
+ \t\t\t\t\t${maybeAsync2?"await":""} onRequest[${i}](ctx),
614
+ \t\t\t\t\tctx.set,
615
+ \t\t\t\t\trequest
616
+ \t\t\t\t)
617
+ `,endUnit("re"),fnLiteral+=`if(re !== undefined) return re
618
+ `;else fnLiteral+=`${maybeAsync2?"await":""} onRequest[${i}](ctx)
619
+ `,endUnit()}fnLiteral+=`} catch (error) {
620
+ \t\t\treturn app.handleError(ctx, error)
621
+ \t\t}`}reporter.resolve();let wsPaths=app.router.static.ws,wsRouter=app.router.ws;if(Object.keys(wsPaths).length||wsRouter.history.length){fnLiteral+=`
622
+ \t\t\tif(request.method === 'GET') {
623
+ \t\t\t\tswitch(path) {`;for(let[path,index]of Object.entries(wsPaths))fnLiteral+=`
624
+ \t\t\t\t\tcase '${path}':
625
+ \t\t\t\t\t\tif(request.headers.get('upgrade') === 'websocket')
626
+ \t\t\t\t\t\t\treturn st[${index}](ctx)
627
+
628
+ \t\t\t\t\t\tbreak`;fnLiteral+=`
629
+ \t\t\t\tdefault:
630
+ \t\t\t\t\tif(request.headers.get('upgrade') === 'websocket') {
631
+ \t\t\t\t\t\tconst route = wsRouter.find('ws', path)
632
+
633
+ \t\t\t\t\t\tif(route) {
634
+ \t\t\t\t\t\t\tctx.params = route.params
635
+
636
+ \t\t\t\t\t\t\tif(route.store.handler)
637
+ \t\t\t\t\t\t\t return route.store.handler(ctx)
638
+
639
+ \t\t\t\t\t\t\treturn (route.store.handler = route.store.compile())(ctx)
640
+ \t\t\t\t\t\t}
641
+ \t\t\t\t\t}
642
+
643
+ \t\t\t\t\tbreak
644
+ \t\t\t}
645
+ \t\t}
646
+ `}if(fnLiteral+=`
647
+ \t\tmap: switch(path) {
648
+ \t\t\t${switchMap}
649
+
650
+ \t\t\tdefault:
651
+ \t\t\t\tbreak
652
+ \t\t}
653
+
654
+ \t\t${findDynamicRoute}
655
+ \t}
656
+ `,app.extender.higherOrderFunctions.length){let handler="map";for(let i=0;i<app.extender.higherOrderFunctions.length;i++)handler=`hoc[${i}](${handler}, request)`;fnLiteral+=`return function hocMap(request) { return ${handler}(request) }`}else fnLiteral+="return map";let handleError=composeErrorHandler(app);return app.handleError=handleError,Function("data",fnLiteral)({app,mapEarlyResponse,NotFoundError,randomId,handleError,error,redirect,ELYSIA_TRACE,ELYSIA_REQUEST_ID,getServer:()=>app.getServer()})},composeErrorHandler=(app)=>{let hooks=app.event,fnLiteral="";fnLiteral+=`const {
657
+ \t\tapp: { event: { error: onErrorContainer, afterResponse: resContainer, mapResponse: _onMapResponse, trace: _trace } },
658
+ \t\tmapResponse,
659
+ \t\tERROR_CODE,
660
+ \t\tElysiaCustomStatusResponse,
661
+ \t\tELYSIA_TRACE,
662
+ \t\tELYSIA_REQUEST_ID
663
+ \t} = inject
664
+
665
+ \tconst trace = _trace.map(x => typeof x === 'function' ? x : x.fn)
666
+ \tconst onMapResponse = []
667
+
668
+ \tfor(let i = 0; i < _onMapResponse.length; i++)
669
+ \t\tonMapResponse.push(_onMapResponse[i].fn ?? _onMapResponse[i])
670
+
671
+ \tdelete _onMapResponse
672
+
673
+ \tconst onError = onErrorContainer.map(x => x.fn)
674
+ \tconst res = resContainer.map(x => x.fn)
675
+
676
+ \treturn ${app.event.error.find(isAsync)||app.event.mapResponse.find(isAsync)?"async":""} function(context, error, skipGlobal) {`;let hasTrace=app.event.trace.length>0;if(hasTrace)fnLiteral+=`
677
+ const id = context[ELYSIA_REQUEST_ID]
678
+ `;let report=createReport({context:"context",trace:hooks.trace,addFn:(word)=>{fnLiteral+=word}});fnLiteral+=`
679
+ \t\tconst set = context.set
680
+ \t\tlet r
681
+
682
+ \t\tif(!context.code)
683
+ \t\t\tcontext.code = error.code ?? error[ERROR_CODE]
684
+
685
+ \t\tif(!(context.error instanceof Error))
686
+ \t\t\tcontext.error = error
687
+
688
+ \t\tif(error instanceof ElysiaCustomStatusResponse) {
689
+ \t\t\terror.status = error.code
690
+ \t\t\terror.message = error.response
691
+ \t\t}
692
+ `;let saveResponse=hasTrace||hooks.afterResponse.length>0||hooks.afterResponse.length>0?"context.response = ":"";for(let i=0;i<app.event.error.length;i++){let handler=app.event.error[i],response=`${isAsync(handler)?"await ":""}onError[${i}](context)`;if(fnLiteral+=`
693
+ if(skipGlobal !== true) {
694
+ `,hasReturn(handler)){fnLiteral+=`r = ${response}; if(r !== undefined) {
695
+ \t\t\t\tif(r instanceof Response) return r
696
+
697
+ \t\t\t\tif(r instanceof ElysiaCustomStatusResponse) {
698
+ \t\t\t\t\terror.status = error.code
699
+ \t\t\t\t\terror.message = error.response
700
+ \t\t\t\t}
701
+
702
+ \t\t\t\tif(set.status === 200) set.status = error.status
703
+ `;let mapResponseReporter2=report("mapResponse",{total:hooks.mapResponse.length,name:"context"});if(hooks.mapResponse.length)for(let i2=0;i2<hooks.mapResponse.length;i2++){let mapResponse2=hooks.mapResponse[i2],endUnit=mapResponseReporter2.resolveChild(mapResponse2.fn.name);fnLiteral+=`
704
+ context.response = r
705
+ \t\t\t\t\t\tr = ${isAsyncName(mapResponse2)?"await":""} onMapResponse[${i2}](context)
706
+ `,endUnit()}mapResponseReporter2.resolve(),fnLiteral+=`return mapResponse(${saveResponse} r, set, context.request)}
707
+ `}else fnLiteral+=response+`
708
+ `;fnLiteral+=`
709
+ }
710
+ `}fnLiteral+=`if(error.constructor.name === "ValidationError" || error.constructor.name === "TransformDecodeError") {
711
+ \t const reportedError = error.error ?? error
712
+ \t\tset.status = reportedError.status ?? 422
713
+ \t\treturn new Response(
714
+ \t\t\treportedError.message,
715
+ \t\t\t{
716
+ \t\t\t\theaders: Object.assign(
717
+ \t\t\t\t\t{ 'content-type': 'application/json'},
718
+ \t\t\t\t\tset.headers
719
+ \t\t\t\t),
720
+ \t\t\t\tstatus: set.status
721
+ \t\t\t}
722
+ \t\t)
723
+ \t} else {
724
+ \t\tif(error.code && typeof error.status === "number")
725
+ \t\t\treturn new Response(
726
+ \t\t\t\terror.message,
727
+ \t\t\t\t{ headers: set.headers, status: error.status }
728
+ \t\t\t)
729
+ `;let mapResponseReporter=report("mapResponse",{total:hooks.mapResponse.length,name:"context"});if(hooks.mapResponse.length)for(let i=0;i<hooks.mapResponse.length;i++){let mapResponse2=hooks.mapResponse[i],endUnit=mapResponseReporter.resolveChild(mapResponse2.fn.name);fnLiteral+=`
730
+ context.response = error
731
+ \t\t\terror = ${isAsyncName(mapResponse2)?"await":""} onMapResponse[${i}](context)
732
+ `,endUnit()}return mapResponseReporter.resolve(),fnLiteral+=`
733
+ return mapResponse(${saveResponse} error, set, context.request)
734
+ }
735
+ }`,Function("inject",fnLiteral)({app,mapResponse,ERROR_CODE,ElysiaCustomStatusResponse,ELYSIA_TRACE,ELYSIA_REQUEST_ID})};import{TransformDecodeError}from"@sinclair/typebox/value";var createDynamicHandler=(app)=>async(request)=>{let url=request.url,s=url.indexOf("/",11),qi=url.indexOf("?",s+1),path=qi===-1?url.substring(s):url.substring(s,qi),set2={cookie:{},status:200,headers:{}},context=Object.assign({},app.singleton.decorator,{set:set2,store:app.singleton.store,request,path,qi,redirect});try{for(let i=0;i<app.event.request.length;i++){let onRequest=app.event.request[i].fn,response2=onRequest(context);if(response2 instanceof Promise)response2=await response2;if(response2=mapEarlyResponse(response2,set2),response2)return context.response=response2}let handler=app.router.dynamic.find(request.method,path)??app.router.dynamic.find("ALL",path);if(!handler)throw new NotFoundError;let{handle,hooks,validator,content}=handler.store,body;if(request.method!=="GET"&&request.method!=="HEAD")if(content)switch(content){case"application/json":body=await request.json();break;case"text/plain":body=await request.text();break;case"application/x-www-form-urlencoded":body=parseQuery(await request.text());break;case"application/octet-stream":body=await request.arrayBuffer();break;case"multipart/form-data":body={};let form2=await request.formData();for(let key of form2.keys()){if(body[key])continue;let value=form2.getAll(key);if(value.length===1)body[key]=value[0];else body[key]=value}break}else{let contentType=request.headers.get("content-type");if(contentType){let index=contentType.indexOf(";");if(index!==-1)contentType=contentType.slice(0,index);context.contentType=contentType;for(let i=0;i<hooks.parse.length;i++){let hook=hooks.parse[i].fn,temp=hook(context,contentType);if(temp instanceof Promise)temp=await temp;if(temp){body=temp;break}}if(delete context.contentType,body===void 0)switch(contentType){case"application/json":body=await request.json();break;case"text/plain":body=await request.text();break;case"application/x-www-form-urlencoded":body=parseQuery(await request.text());break;case"application/octet-stream":body=await request.arrayBuffer();break;case"multipart/form-data":body={};let form2=await request.formData();for(let key of form2.keys()){if(body[key])continue;let value=form2.getAll(key);if(value.length===1)body[key]=value[0];else body[key]=value}break}}}context.body=body,context.params=handler?.params||void 0,context.query=qi===-1?{}:parseQueryFromURL(url.substring(qi+1)),context.headers={};for(let[key,value]of request.headers.entries())context.headers[key]=value;let cookieMeta=Object.assign({},app.config?.cookie,validator?.cookie?.config),cookieHeaderValue=request.headers.get("cookie");context.cookie=await parseCookie(context.set,cookieHeaderValue,cookieMeta?{secrets:cookieMeta.secrets!==void 0?typeof cookieMeta.secrets==="string"?cookieMeta.secrets:cookieMeta.secrets.join(","):void 0,sign:cookieMeta.sign===!0?!0:cookieMeta.sign!==void 0?typeof cookieMeta.sign==="string"?cookieMeta.sign:cookieMeta.sign.join(","):void 0}:void 0);for(let i=0;i<hooks.transform.length;i++){let hook=hooks.transform[i],operation=hook.fn(context);if(hook.subType==="derive")if(operation instanceof Promise)Object.assign(context,await operation);else Object.assign(context,operation);else if(operation instanceof Promise)await operation}if(validator){if(validator.createHeaders?.()){let _header={};for(let key in request.headers)_header[key]=request.headers.get(key);if(validator.headers.Check(_header)===!1)throw new ValidationError("header",validator.headers,_header)}else if(validator.headers?.Decode)context.headers=validator.headers.Decode(context.headers);if(validator.createParams?.()?.Check(context.params)===!1)throw new ValidationError("params",validator.params,context.params);else if(validator.params?.Decode)context.params=validator.params.Decode(context.params);if(validator.createQuery?.()?.Check(context.query)===!1)throw new ValidationError("query",validator.query,context.query);else if(validator.query?.Decode)context.query=validator.query.Decode(context.query);if(validator.createCookie?.()){let cookieValue={};for(let[key,value]of Object.entries(context.cookie))cookieValue[key]=value.value;if(validator.cookie.Check(cookieValue)===!1)throw new ValidationError("cookie",validator.cookie,cookieValue);else if(validator.cookie?.Decode)cookieValue=validator.cookie.Decode(cookieValue)}if(validator.createBody?.()?.Check(body)===!1)throw new ValidationError("body",validator.body,body);else if(validator.body?.Decode)context.body=validator.body.Decode(body)}for(let i=0;i<hooks.beforeHandle.length;i++){let hook=hooks.beforeHandle[i],response2=hook.fn(context);if(hook.subType==="resolve"){if(response2 instanceof ElysiaCustomStatusResponse){let result=mapEarlyResponse(response2,context.set);if(result)return context.response=result}if(response2 instanceof Promise)Object.assign(context,await response2);else Object.assign(context,response2);continue}else if(response2 instanceof Promise)response2=await response2;if(response2!==void 0){context.response=response2;for(let i2=0;i2<hooks.afterHandle.length;i2++){let newResponse=hooks.afterHandle[i2].fn(context);if(newResponse instanceof Promise)newResponse=await newResponse;if(newResponse)response2=newResponse}let result=mapEarlyResponse(response2,context.set);if(result)return context.response=result}}let response=handle(context);if(response instanceof Promise)response=await response;if(!hooks.afterHandle.length){let status=response instanceof ElysiaCustomStatusResponse?response.code:set2.status?typeof set2.status==="string"?StatusMap[set2.status]:set2.status:200,responseValidator=validator?.createResponse?.()?.[status];if(responseValidator?.Check(response)===!1)throw new ValidationError("response",responseValidator,response);else if(responseValidator?.Decode)response=responseValidator.Decode(response)}else{context.response=response;for(let i=0;i<hooks.afterHandle.length;i++){let newResponse=hooks.afterHandle[i].fn(context);if(newResponse instanceof Promise)newResponse=await newResponse;let result=mapEarlyResponse(newResponse,context.set);if(result!==void 0){let responseValidator=validator?.response?.[result.status];if(responseValidator?.Check(result)===!1)throw new ValidationError("response",responseValidator,result);else if(responseValidator?.Decode)response=responseValidator.Decode(response);return context.response=result}}}if(context.set.cookie&&cookieMeta?.sign){let secret=!cookieMeta.secrets?void 0:typeof cookieMeta.secrets==="string"?cookieMeta.secrets:cookieMeta.secrets[0];if(cookieMeta.sign===!0)for(let[key,cookie]of Object.entries(context.set.cookie))context.set.cookie[key].value=await signCookie(cookie.value,"${secret}");else{let properties=validator?.cookie?.schema?.properties;for(let name of cookieMeta.sign){if(!(name in properties))continue;if(context.set.cookie[name]?.value)context.set.cookie[name].value=await signCookie(context.set.cookie[name].value,secret)}}}return context.response=mapResponse(response,context.set)}catch(error2){let reportedError=error2 instanceof TransformDecodeError&&error2.error?error2.error:error2;if(reportedError.status)set2.status=reportedError.status;return app.handleError(context,reportedError)}finally{for(let afterResponse of app.event.afterResponse)await afterResponse.fn(context)}},createDynamicErrorHandler=(app)=>async(context,error2)=>{let errorContext=Object.assign(context,{error:error2,code:error2.code});errorContext.set=context.set;for(let i=0;i<app.event.error.length;i++){let response=app.event.error[i].fn(errorContext);if(response instanceof Promise)response=await response;if(response!==void 0&&response!==null)return context.response=mapResponse(response,context.set)}return new Response(typeof error2.cause==="string"?error2.cause:error2.message,{headers:context.set.headers,status:error2.status??500})};import{TypeSystemPolicy as TypeSystemPolicy2}from"@sinclair/typebox/system";class Elysia{config;server=null;dependencies={};_routes={};_types={Prefix:"",Scoped:!1,Singleton:{},Definitions:{},Metadata:{}};_ephemeral={};_volatile={};static version=version;version=version;singleton={decorator:{},store:{},derive:{},resolve:{}};get store(){return this.singleton.store}get decorator(){return this.singleton.decorator}get _scoped(){return this.config.scoped}definitions={type:{},error:{}};extender={macros:[],higherOrderFunctions:[]};validator={global:null,scoped:null,local:null,getCandidate(){return mergeSchemaValidator(mergeSchemaValidator(this.global,this.scoped),this.local)}};event={start:[],request:[],parse:[],transform:[],beforeHandle:[],afterHandle:[],mapResponse:[],afterResponse:[],trace:[],error:[],stop:[]};telemetry={stack:void 0};router={http:new Y,ws:new Y,dynamic:new Y,static:{http:{static:{},handlers:[],map:{},all:""},ws:{}},history:[]};routeTree=new Map;get routes(){return this.router.history}getGlobalRoutes(){return this.router.history}inference={body:!1,cookie:!1,headers:!1,query:!1,set:!1,server:!1};getServer(){return this.server}_promisedModules;get promisedModules(){if(!this._promisedModules)this._promisedModules=new PromiseGroup;return this._promisedModules}constructor(config={}){if(config.tags)if(!config.detail)config.detail={tags:config.tags};else config.detail.tags=config.tags;if(config.nativeStaticResponse===void 0)config.nativeStaticResponse=!0;if(this.config={},this.applyConfig(config??{}),config?.analytic&&(config?.name||config?.seed!==void 0))this.telemetry.stack=new Error().stack}env(model,env2=Bun?.env??process.env){if(getSchemaValidator(model,{dynamic:!0,additionalProperties:!0,coerce:!0}).Check(env2)===!1){let error2=new ValidationError("env",model,env2);throw new Error(error2.all.map((x)=>x.summary).join(`
736
+ `))}return this}wrap(fn){return this.extender.higherOrderFunctions.push({checksum:checksum(JSON.stringify({name:this.config.name,seed:this.config.seed,content:fn.toString()})),fn}),this}applyMacro(localHook){if(this.extender.macros.length){let manage=createMacroManager({globalHook:this.event,localHook}),manager={events:{global:this.event,local:localHook},onParse:manage("parse"),onTransform:manage("transform"),onBeforeHandle:manage("beforeHandle"),onAfterHandle:manage("afterHandle"),mapResponse:manage("mapResponse"),onAfterResponse:manage("afterResponse"),onError:manage("error")};for(let macro of this.extender.macros)traceBackMacro(macro.fn(manager),localHook)}}applyConfig(config){return this.config={prefix:"",aot:!0,strictPath:!1,global:!1,analytic:!1,normalize:!0,...config,cookie:{path:"/",...config?.cookie},experimental:config?.experimental??{},seed:config?.seed===void 0?"":config?.seed},this}get models(){let models={};for(let[name,schema]of Object.entries(this.definitions.type))models[name]=getSchemaValidator(schema);return models}add(method,path,handle,localHook,{allowMeta=!1,skipPrefix=!1}={allowMeta:!1,skipPrefix:!1}){if(localHook=localHookToLifeCycleStore(localHook),path!==""&&path.charCodeAt(0)!==47)path="/"+path;if(this.config.prefix&&!skipPrefix&&!this.config.scoped)path=this.config.prefix+path;if(localHook?.type)switch(localHook.type){case"text":localHook.type="text/plain";break;case"json":localHook.type="application/json";break;case"formdata":localHook.type="multipart/form-data";break;case"urlencoded":localHook.type="application/x-www-form-urlencoded";break;case"arrayBuffer":localHook.type="application/octet-stream";break;default:break}let models=this.definitions.type,dynamic=!this.config.aot,instanceValidator={...this.validator.getCandidate()},cloned={body:localHook?.body??instanceValidator?.body,headers:localHook?.headers??instanceValidator?.headers,params:localHook?.params??instanceValidator?.params,query:localHook?.query??instanceValidator?.query,cookie:localHook?.cookie??instanceValidator?.cookie,response:localHook?.response??instanceValidator?.response},cookieValidator=()=>cloned.cookie?getCookieValidator({validator:cloned.cookie,defaultConfig:this.config.cookie,config:cloned.cookie?.config??{},dynamic,models}):void 0,normalize=this.config.normalize,validator=this.config.precompile===!0||typeof this.config.precompile==="object"&&this.config.precompile.schema===!0?{body:getSchemaValidator(cloned.body,{dynamic,models,normalize,additionalCoerce:coercePrimitiveRoot()}),headers:getSchemaValidator(cloned.headers,{dynamic,models,additionalProperties:!this.config.normalize,coerce:!0,additionalCoerce:stringToStructureCoercions()}),params:getSchemaValidator(cloned.params,{dynamic,models,coerce:!0,additionalCoerce:stringToStructureCoercions()}),query:getSchemaValidator(cloned.query,{dynamic,models,normalize,coerce:!0,additionalCoerce:stringToStructureCoercions()}),cookie:cookieValidator(),response:getResponseSchemaValidator(cloned.response,{dynamic,models,normalize})}:{createBody(){if(this.body)return this.body;return this.body=getSchemaValidator(cloned.body,{dynamic,models,normalize,additionalCoerce:coercePrimitiveRoot()})},createHeaders(){if(this.headers)return this.headers;return this.headers=getSchemaValidator(cloned.headers,{dynamic,models,additionalProperties:!normalize,coerce:!0,additionalCoerce:stringToStructureCoercions()})},createParams(){if(this.params)return this.params;return this.params=getSchemaValidator(cloned.params,{dynamic,models,coerce:!0,additionalCoerce:stringToStructureCoercions()})},createQuery(){if(this.query)return this.query;return this.query=getSchemaValidator(cloned.query,{dynamic,models,coerce:!0,additionalCoerce:stringToStructureCoercions()})},createCookie(){if(this.cookie)return this.cookie;return this.cookie=cookieValidator()},createResponse(){if(this.response)return this.response;return this.response=getResponseSchemaValidator(cloned.response,{dynamic,models,normalize})}},loosePath=path.endsWith("/")?path.slice(0,path.length-1):path+"/";if(localHook=mergeHook(localHook,instanceValidator),localHook.tags)if(!localHook.detail)localHook.detail={tags:localHook.tags};else localHook.detail.tags=localHook.tags;if(isNotEmpty(this.config.detail))localHook.detail=mergeDeep(Object.assign({},this.config.detail),localHook.detail);this.applyMacro(localHook);let hooks=mergeHook(this.event,localHook);if(this.config.aot===!1){if(this.router.dynamic.add(method,path,{validator,hooks,content:localHook?.type,handle}),this.config.strictPath===!1)this.router.dynamic.add(method,loosePath,{validator,hooks,content:localHook?.type,handle});this.router.history.push({method,path,composed:null,handler:handle,hooks});return}let shouldPrecompile=this.config.precompile===!0||typeof this.config.precompile==="object"&&this.config.precompile.compose===!0,inference=cloneInference(this.inference),staticHandler=typeof handle!=="function"?createStaticHandler(handle,hooks,this.setHeaders):void 0,nativeStaticHandler=typeof handle!=="function"?createNativeStaticHandler(handle,hooks,this.setHeaders):void 0;if(this.config.nativeStaticResponse===!0&&nativeStaticHandler&&(method==="GET"||method==="ALL"))this.router.static.http.static[path]=nativeStaticHandler();let compile=()=>composeHandler({app:this,path,method,localHook:mergeHook(localHook),hooks,validator,handler:handle,allowMeta,inference}),mainHandler=shouldPrecompile?compile():(context)=>{return compile()(context)},routeIndex=this.router.history.length;if(this.routeTree.has(method+path))for(let i=0;i<this.router.history.length;i++){let route=this.router.history[i];if(route.path===path&&route.method===method){let removed=this.router.history.splice(i,1)[0];if(removed&&this.routeTree.has(removed?.method+removed?.path))this.routeTree.delete(removed.method+removed.path)}}else this.routeTree.set(method+path,routeIndex);this.router.history.push({method,path,composed:mainHandler,handler:handle,hooks});let staticRouter=this.router.static.http,handler={handler:shouldPrecompile?mainHandler:void 0,compile};if(method==="$INTERNALWS"){let loose=this.config.strictPath?void 0:path.endsWith("/")?path.slice(0,path.length-1):path+"/";if(path.indexOf(":")===-1&&path.indexOf("*")===-1){let index=staticRouter.handlers.length;if(staticRouter.handlers.push((ctx)=>(staticRouter.handlers[index]=compile())(ctx)),this.router.static.ws[path]=index,loose)this.router.static.ws[loose]=index}else if(this.router.ws.add("ws",path,handler),loose)this.router.ws.add("ws",loose,handler);return}if(path.indexOf(":")===-1&&path.indexOf("*")===-1){let index=staticRouter.handlers.length;if(staticRouter.handlers.push(staticHandler??((ctx2)=>(staticRouter.handlers[index]=compile())(ctx2))),!staticRouter.map[path])staticRouter.map[path]={code:""};let ctx=staticHandler?"":"ctx";if(method==="ALL")staticRouter.map[path].all=`default: return st[${index}](${ctx})
737
+ `;else staticRouter.map[path].code=`case '${method}': return st[${index}](${ctx})
738
+ ${staticRouter.map[path].code}`;if(!this.config.strictPath){if(!staticRouter.map[loosePath])staticRouter.map[loosePath]={code:""};if(this.config.nativeStaticResponse===!0&&nativeStaticHandler&&(method==="GET"||method==="ALL"))this.router.static.http.static[loosePath]=nativeStaticHandler();if(method==="ALL")staticRouter.map[loosePath].all=`default: return st[${index}](${ctx})
739
+ `;else staticRouter.map[loosePath].code=`case '${method}': return st[${index}](${ctx})
740
+ ${staticRouter.map[loosePath].code}`}}else if(this.router.http.add(method,path,handler),!this.config.strictPath){let loosePath2=path.endsWith("/")?path.slice(0,path.length-1):path+"/";if(this.config.nativeStaticResponse===!0&&staticHandler&&(method==="GET"||method==="ALL"))this.router.static.http.static[loosePath2]=staticHandler();this.router.http.add(method,loosePath2,handler)}}setHeaders;headers(header){if(!header)return this;if(!this.setHeaders)this.setHeaders={};return this.setHeaders=mergeDeep(this.setHeaders,header),this}onStart(handler){return this.on("start",handler),this}onRequest(handler){return this.on("request",handler),this}onParse(options,handler){if(!handler)return this.on("parse",options);return this.on(options,"parse",handler)}onTransform(options,handler){if(!handler)return this.on("transform",options);return this.on(options,"transform",handler)}resolve(optionsOrResolve,resolve){if(!resolve)resolve=optionsOrResolve,optionsOrResolve={as:"local"};let hook={subType:"resolve",fn:resolve};return this.onBeforeHandle(optionsOrResolve,hook)}mapResolve(optionsOrResolve,mapper){if(!mapper)mapper=optionsOrResolve,optionsOrResolve={as:"local"};let hook={subType:"mapResolve",fn:mapper};return this.onBeforeHandle(optionsOrResolve,hook)}onBeforeHandle(options,handler){if(!handler)return this.on("beforeHandle",options);return this.on(options,"beforeHandle",handler)}onAfterHandle(options,handler){if(!handler)return this.on("afterHandle",options);return this.on(options,"afterHandle",handler)}mapResponse(options,handler){if(!handler)return this.on("mapResponse",options);return this.on(options,"mapResponse",handler)}onAfterResponse(options,handler){if(!handler)return this.on("afterResponse",options);return this.on(options,"afterResponse",handler)}trace(options,handler){if(!handler)handler=options,options={as:"local"};if(!Array.isArray(handler))handler=[handler];for(let fn of handler)this.on(options,"trace",createTracer(fn));return this}error(name,error2){switch(typeof name){case"string":return error2.prototype[ERROR_CODE]=name,this.definitions.error[name]=error2,this;case"function":return this.definitions.error=name(this.definitions.error),this}for(let[code,error3]of Object.entries(name))error3.prototype[ERROR_CODE]=code,this.definitions.error[code]=error3;return this}onError(options,handler){if(!handler)return this.on("error",options);return this.on(options,"error",handler)}onStop(handler){return this.on("stop",handler),this}on(optionsOrType,typeOrHandlers,handlers){let type;switch(typeof optionsOrType){case"string":type=optionsOrType,handlers=typeOrHandlers;break;case"object":if(type=typeOrHandlers,!Array.isArray(typeOrHandlers)&&typeof typeOrHandlers==="object")handlers=typeOrHandlers;break}if(Array.isArray(handlers))handlers=fnToContainer(handlers);else if(typeof handlers==="function")handlers=[{fn:handlers}];else handlers=[handlers];let handles=handlers;for(let handle of handles)handle.scope=typeof optionsOrType==="string"?"local":optionsOrType?.as??"local";if(type!=="trace")sucrose({[type]:handles.map((x)=>x.fn)},this.inference);for(let handle of handles){let fn=asHookType(handle,"global",{skipIfHasType:!0});switch(type){case"start":this.event.start.push(fn);break;case"request":this.event.request.push(fn);break;case"parse":this.event.parse.push(fn);break;case"transform":this.event.transform.push(fn);break;case"beforeHandle":this.event.beforeHandle.push(fn);break;case"afterHandle":this.event.afterHandle.push(fn);break;case"mapResponse":this.event.mapResponse.push(fn);break;case"afterResponse":this.event.afterResponse.push(fn);break;case"trace":this.event.trace.push(fn);break;case"error":this.event.error.push(fn);break;case"stop":this.event.stop.push(fn);break}}return this}propagate(){return promoteEvent(this.event.parse),promoteEvent(this.event.transform),promoteEvent(this.event.beforeHandle),promoteEvent(this.event.afterHandle),promoteEvent(this.event.mapResponse),promoteEvent(this.event.afterResponse),promoteEvent(this.event.trace),promoteEvent(this.event.error),this}as(type){let castType={plugin:"scoped",global:"global"}[type];if(promoteEvent(this.event.parse,castType),promoteEvent(this.event.transform,castType),promoteEvent(this.event.beforeHandle,castType),promoteEvent(this.event.afterHandle,castType),promoteEvent(this.event.mapResponse,castType),promoteEvent(this.event.afterResponse,castType),promoteEvent(this.event.trace,castType),promoteEvent(this.event.error,castType),type==="plugin")this.validator.scoped=mergeSchemaValidator(this.validator.scoped,this.validator.local),this.validator.local=null;else if(type==="global")this.validator.global=mergeSchemaValidator(this.validator.global,mergeSchemaValidator(this.validator.scoped,this.validator.local)),this.validator.scoped=null,this.validator.local=null;return this}group(prefix,schemaOrRun,run){let instance=new Elysia({...this.config,prefix:""});instance.singleton={...this.singleton},instance.definitions={...this.definitions},instance.getServer=()=>this.getServer(),instance.inference=cloneInference(this.inference),instance.extender={...this.extender};let isSchema=typeof schemaOrRun==="object",sandbox=(isSchema?run:schemaOrRun)(instance);if(this.singleton=mergeDeep(this.singleton,instance.singleton),this.definitions=mergeDeep(this.definitions,instance.definitions),sandbox.event.request.length)this.event.request=[...this.event.request||[],...sandbox.event.request||[]];if(sandbox.event.mapResponse.length)this.event.mapResponse=[...this.event.mapResponse||[],...sandbox.event.mapResponse||[]];return this.model(sandbox.definitions.type),Object.values(instance.router.history).forEach(({method,path,handler,hooks})=>{if(path=(isSchema?"":this.config.prefix)+prefix+path,isSchema){let hook=schemaOrRun,localHook=hooks;this.add(method,path,handler,mergeHook(hook,{...localHook||{},error:!localHook.error?sandbox.event.error:Array.isArray(localHook.error)?[...localHook.error||{},...sandbox.event.error||{}]:[localHook.error,...sandbox.event.error||{}]}))}else this.add(method,path,handler,mergeHook(hooks,{error:sandbox.event.error}),{skipPrefix:!0})}),this}guard(hook,run){if(!run){if(typeof hook==="object"){this.applyMacro(hook);let type=hook.as??"local";if(this.validator[type]={body:hook.body??this.validator[type]?.body,headers:hook.headers??this.validator[type]?.headers,params:hook.params??this.validator[type]?.params,query:hook.query??this.validator[type]?.query,response:hook.response??this.validator[type]?.response,cookie:hook.cookie??this.validator[type]?.cookie},hook.parse)this.on({as:type},"parse",hook.parse);if(hook.transform)this.on({as:type},"transform",hook.transform);if(hook.beforeHandle)this.on({as:type},"beforeHandle",hook.beforeHandle);if(hook.afterHandle)this.on({as:type},"afterHandle",hook.afterHandle);if(hook.mapResponse)this.on({as:type},"mapResponse",hook.mapResponse);if(hook.afterResponse)this.on({as:type},"afterResponse",hook.afterResponse);if(hook.error)this.on({as:type},"error",hook.error);if(hook.detail)if(this.config.detail)this.config.detail=mergeDeep(Object.assign({},this.config.detail),hook.detail);else this.config.detail=hook.detail;if(hook?.tags)if(!this.config.detail)this.config.detail={tags:hook.tags};else this.config.detail.tags=hook.tags;return this}return this.guard({},hook)}let instance=new Elysia({...this.config,prefix:""});instance.singleton={...this.singleton},instance.definitions={...this.definitions},instance.inference=cloneInference(this.inference),instance.extender={...this.extender};let sandbox=run(instance);if(this.singleton=mergeDeep(this.singleton,instance.singleton),this.definitions=mergeDeep(this.definitions,instance.definitions),sandbox.getServer=()=>this.server,sandbox.event.request.length)this.event.request=[...this.event.request||[],...sandbox.event.request||[]];if(sandbox.event.mapResponse.length)this.event.mapResponse=[...this.event.mapResponse||[],...sandbox.event.mapResponse||[]];return this.model(sandbox.definitions.type),Object.values(instance.router.history).forEach(({method,path,handler,hooks:localHook})=>{this.add(method,path,handler,mergeHook(hook,{...localHook||{},error:!localHook.error?sandbox.event.error:Array.isArray(localHook.error)?[...localHook.error||{},...sandbox.event.error||[]]:[localHook.error,...sandbox.event.error||[]]}))}),this}use(plugin,options){if(options?.scoped)return this.guard({},(app)=>app.use(plugin));if(Array.isArray(plugin)){let current=this;for(let p of plugin)current=this.use(p);return current}if(plugin instanceof Promise)return this.promisedModules.add(plugin.then((plugin2)=>{if(typeof plugin2==="function")return plugin2(this);if(plugin2 instanceof Elysia)return this._use(plugin2).compile();if(typeof plugin2.default==="function")return plugin2.default(this);if(plugin2.default instanceof Elysia)return this._use(plugin2.default);throw new Error('Invalid plugin type. Expected Elysia instance, function, or module with "default" as Elysia instance or function that returns Elysia instance.')}).then((x)=>x.compile())),this;return this._use(plugin)}_use(plugin){if(typeof plugin==="function"){let instance=plugin(this);if(instance instanceof Promise)return this.promisedModules.add(instance.then((plugin2)=>{if(plugin2 instanceof Elysia){plugin2.getServer=()=>this.getServer(),plugin2.getGlobalRoutes=()=>this.getGlobalRoutes(),plugin2.model(this.definitions.type),plugin2.error(this.definitions.error);for(let{method,path,handler,hooks}of Object.values(plugin2.router.history))this.add(method,path,handler,mergeHook(hooks,{error:plugin2.event.error}));return plugin2.compile(),plugin2}if(typeof plugin2==="function")return plugin2(this);if(typeof plugin2.default==="function")return plugin2.default(this);return this._use(plugin2)}).then((x)=>x.compile())),this;return instance}let{name,seed}=plugin.config;plugin.getServer=()=>this.getServer(),plugin.getGlobalRoutes=()=>this.getGlobalRoutes(),plugin.model(this.definitions.type),plugin.error(this.definitions.error);let isScoped=plugin.config.scoped;if(isScoped){if(name){if(!(name in this.dependencies))this.dependencies[name]=[];let current=seed!==void 0?checksum(name+JSON.stringify(seed)):0;if(this.dependencies[name].some(({checksum:checksum2})=>current===checksum2))return this;this.dependencies[name].push(!this.config?.analytic?{name:plugin.config.name,seed:plugin.config.seed,checksum:current,dependencies:plugin.dependencies}:{name:plugin.config.name,seed:plugin.config.seed,checksum:current,dependencies:plugin.dependencies,stack:plugin.telemetry.stack,routes:plugin.router.history,decorators:plugin.singleton.decorator,store:plugin.singleton.store,type:plugin.definitions.type,error:plugin.definitions.error,derive:plugin.event.transform.filter((x)=>x.subType==="derive").map((x)=>({fn:x.fn.toString(),stack:new Error().stack??""})),resolve:plugin.event.transform.filter((x)=>x.subType==="derive").map((x)=>({fn:x.fn.toString(),stack:new Error().stack??""}))})}plugin.extender.macros=this.extender.macros.concat(plugin.extender.macros);let macroHashes=[];for(let i=0;i<plugin.extender.macros.length;i++){let macro=this.extender.macros[i];if(macroHashes.includes(macro.checksum))plugin.extender.macros.splice(i,1),i--;macroHashes.push(macro.checksum)}if(plugin.onRequest((context)=>{Object.assign(context,this.singleton.decorator),Object.assign(context.store,this.singleton.store)}),plugin.event.trace.length)plugin.event.trace.push(...plugin.event.trace);if(!plugin.config.prefix)console.warn("It's recommended to use scoped instance with a prefix to prevent collision routing with other instance.");if(plugin.event.error.length)plugin.event.error.push(...this.event.error);if(plugin.config.aot)plugin.compile();if(isScoped===!0&&plugin.config.prefix){this.mount(plugin.config.prefix+"/",plugin.fetch);for(let route of plugin.router.history)this.routeTree.set(route.method+`${plugin.config.prefix}${route.path}`,this.router.history.length),this.router.history.push({...route,path:`${plugin.config.prefix}${route.path}`,hooks:mergeHook(route.hooks,{error:this.event.error})})}else{this.mount(plugin.fetch);for(let route of plugin.router.history)this.routeTree.set(route.method+`${plugin.config.prefix}${route.path}`,this.router.history.length),this.router.history.push({...route,path:`${plugin.config.prefix}${route.path}`,hooks:mergeHook(route.hooks,{error:this.event.error})})}return this}else{if(this.headers(plugin.setHeaders),name){if(!(name in this.dependencies))this.dependencies[name]=[];let current=seed!==void 0?checksum(name+JSON.stringify(seed)):0;if(!this.dependencies[name].some(({checksum:checksum2})=>current===checksum2))this.extender.macros=this.extender.macros.concat(plugin.extender.macros),this.extender.higherOrderFunctions=this.extender.higherOrderFunctions.concat(plugin.extender.higherOrderFunctions)}else this.extender.macros=this.extender.macros.concat(plugin.extender.macros),this.extender.higherOrderFunctions=this.extender.higherOrderFunctions.concat(plugin.extender.higherOrderFunctions);deduplicateChecksum(this.extender.macros),deduplicateChecksum(this.extender.higherOrderFunctions);let hofHashes=[];for(let i=0;i<this.extender.higherOrderFunctions.length;i++){let hof=this.extender.higherOrderFunctions[i];if(hof.checksum){if(hofHashes.includes(hof.checksum))this.extender.higherOrderFunctions.splice(i,1),i--;hofHashes.push(hof.checksum)}}this.inference={body:this.inference.body||plugin.inference.body,cookie:this.inference.cookie||plugin.inference.cookie,headers:this.inference.headers||plugin.inference.headers,query:this.inference.query||plugin.inference.query,set:this.inference.set||plugin.inference.set,server:this.inference.server||plugin.inference.server}}this.decorate(plugin.singleton.decorator),this.state(plugin.singleton.store),this.model(plugin.definitions.type),this.error(plugin.definitions.error),plugin.extender.macros=this.extender.macros.concat(plugin.extender.macros);for(let{method,path,handler,hooks}of Object.values(plugin.router.history))this.add(method,path,handler,mergeHook(hooks,{error:plugin.event.error}));if(!isScoped)if(name){if(!(name in this.dependencies))this.dependencies[name]=[];let current=seed!==void 0?checksum(name+JSON.stringify(seed)):0;if(this.dependencies[name].some(({checksum:checksum2})=>current===checksum2))return this;this.dependencies[name].push(!this.config?.analytic?{name:plugin.config.name,seed:plugin.config.seed,checksum:current,dependencies:plugin.dependencies}:{name:plugin.config.name,seed:plugin.config.seed,checksum:current,dependencies:plugin.dependencies,stack:plugin.telemetry.stack,routes:plugin.router.history,decorators:plugin.singleton,store:plugin.singleton.store,type:plugin.definitions.type,error:plugin.definitions.error,derive:plugin.event.transform.filter((x)=>x?.subType==="derive").map((x)=>({fn:x.toString(),stack:new Error().stack??""})),resolve:plugin.event.transform.filter((x)=>x?.subType==="resolve").map((x)=>({fn:x.toString(),stack:new Error().stack??""}))}),this.event=mergeLifeCycle(this.event,filterGlobalHook(plugin.event),current)}else this.event=mergeLifeCycle(this.event,filterGlobalHook(plugin.event));return this.validator.global=mergeHook(this.validator.global,{...plugin.validator.global}),this.validator.local=mergeHook(this.validator.local,{...plugin.validator.scoped}),this}macro(macro){let hook={checksum:checksum(JSON.stringify({name:this.config.name,seed:this.config.seed,content:macro.toString()})),fn:macro};return this.extender.macros.push(hook),this}mount(path,handle){if(path instanceof Elysia||typeof path==="function"||path.length===0||path==="/"){let run=typeof path==="function"?path:path instanceof Elysia?path.compile().fetch:handle instanceof Elysia?handle.compile().fetch:handle,handler2=async({request,path:path2})=>{if(request.method==="GET"||request.method==="HEAD"||!request.headers.get("content-type"))return run(new Request(replaceUrlPath(request.url,path2||"/"),request));return run(new Request(replaceUrlPath(request.url,path2||"/"),{...request,body:await request.arrayBuffer()}))};return this.all("/*",handler2,{type:"none"}),this}let length=path.length;if(handle instanceof Elysia)handle=handle.compile().fetch;let handler=async({request,path:path2})=>{if(request.method==="GET"||request.method==="HEAD"||!request.headers.get("content-type"))return handle(new Request(replaceUrlPath(request.url,path2.slice(length)||"/"),request));return handle(new Request(replaceUrlPath(request.url,path2.slice(length)||"/"),{...request,body:await request.arrayBuffer()}))};return this.all(path,handler,{type:"none"}),this.all(path+(path.endsWith("/")?"*":"/*"),handler,{type:"none"}),this}get(path,handler,hook){return this.add("GET",path,handler,hook),this}post(path,handler,hook){return this.add("POST",path,handler,hook),this}put(path,handler,hook){return this.add("PUT",path,handler,hook),this}patch(path,handler,hook){return this.add("PATCH",path,handler,hook),this}delete(path,handler,hook){return this.add("DELETE",path,handler,hook),this}options(path,handler,hook){return this.add("OPTIONS",path,handler,hook),this}all(path,handler,hook){return this.add("ALL",path,handler,hook),this}head(path,handler,hook){return this.add("HEAD",path,handler,hook),this}connect(path,handler,hook){return this.add("CONNECT",path,handler,hook),this}route(method,path,handler,hook){return this.add(method.toUpperCase(),path,handler,hook,hook?.config),this}ws(path,options){let transform=options.transformMessage?Array.isArray(options.transformMessage)?options.transformMessage:[options.transformMessage]:void 0,server=null,validateMessage=getSchemaValidator(options?.body,{models:this.definitions.type,normalize:this.config.normalize}),validateResponse=getSchemaValidator(options?.response,{models:this.definitions.type,normalize:this.config.normalize}),parseMessage=(message)=>{if(typeof message==="string"){let start=message?.charCodeAt(0);if(start===47||start===123)try{message=JSON.parse(message)}catch{}else if(isNumericString(message))message=+message}if(transform?.length)for(let i=0;i<transform.length;i++){let temp=transform[i](message);if(temp!==void 0)message=temp}return message};return this.route("$INTERNALWS",path,(context)=>{let{set:set2,path:path2,qi,headers,query,params}=context;if(server===null)server=this.getServer();if(server?.upgrade(context.request,{headers:typeof options.upgrade==="function"?options.upgrade(context):options.upgrade,data:{validator:validateResponse,open(ws){options.open?.(new ElysiaWS(ws,context))},message:(ws,msg)=>{let message=parseMessage(msg);if(validateMessage?.Check(message)===!1)return void ws.send(new ValidationError("message",validateMessage,message).message);options.message?.(new ElysiaWS(ws,context),message)},drain(ws){options.drain?.(new ElysiaWS(ws,context))},close(ws,code,reason){options.close?.(new ElysiaWS(ws,context),code,reason)}}}))return;return set2.status=400,"Expected a websocket connection"},{beforeHandle:options.beforeHandle,transform:options.transform,headers:options.headers,params:options.params,query:options.query}),this}state(options,name,value){if(name===void 0)value=options,options={as:"append"},name="";else if(value===void 0){if(typeof options==="string")value=name,name=options,options={as:"append"};else if(typeof options==="object")value=name,name=""}let{as}=options;if(typeof name!=="string")return this;switch(typeof value){case"object":if(name){if(name in this.singleton.store)this.singleton.store[name]=mergeDeep(this.singleton.store[name],value,{override:as==="override"});else this.singleton.store[name]=value;return this}if(value===null)return this;return this.singleton.store=mergeDeep(this.singleton.store,value,{override:as==="override"}),this;case"function":if(name){if(as==="override"||!(name in this.singleton.store))this.singleton.store[name]=value}else this.singleton.store=value(this.singleton.store);return this;default:if(as==="override"||!(name in this.singleton.store))this.singleton.store[name]=value;return this}}decorate(options,name,value){if(name===void 0)value=options,options={as:"append"},name="";else if(value===void 0){if(typeof options==="string")value=name,name=options,options={as:"append"};else if(typeof options==="object")value=name,name=""}let{as}=options;if(typeof name!=="string")return this;switch(typeof value){case"object":if(name){if(name in this.singleton.decorator)this.singleton.decorator[name]=mergeDeep(this.singleton.decorator[name],value,{override:as==="override"});else this.singleton.decorator[name]=value;return this}if(value===null)return this;return this.singleton.decorator=mergeDeep(this.singleton.decorator,value,{override:as==="override"}),this;case"function":if(name){if(as==="override"||!(name in this.singleton.decorator))this.singleton.decorator[name]=value}else this.singleton.decorator=value(this.singleton.decorator);return this;default:if(as==="override"||!(name in this.singleton.decorator))this.singleton.decorator[name]=value;return this}}derive(optionsOrTransform,transform){if(!transform)transform=optionsOrTransform,optionsOrTransform={as:"local"};let hook={subType:"derive",fn:transform};return this.onTransform(optionsOrTransform,hook)}model(name,model){switch(typeof name){case"object":return Object.entries(name).forEach(([key,value])=>{if(!(key in this.definitions.type))this.definitions.type[key]=value}),this;case"function":return this.definitions.type=name(this.definitions.type),this}return this.definitions.type[name]=model,this}mapDerive(optionsOrDerive,mapper){if(!mapper)mapper=optionsOrDerive,optionsOrDerive={as:"local"};let hook={subType:"mapDerive",fn:mapper};return this.onTransform(optionsOrDerive,hook)}affix(base,type,word){if(word==="")return this;let delimieter=["_","-"," "],capitalize=(word2)=>word2[0].toUpperCase()+word2.slice(1),joinKey=base==="prefix"?(prefix,word2)=>delimieter.includes(prefix.at(-1)??"")?prefix+word2:prefix+capitalize(word2):delimieter.includes(word.at(-1)??"")?(suffix,word2)=>word2+suffix:(suffix,word2)=>word2+capitalize(suffix),remap=(type2)=>{let store={};switch(type2){case"decorator":for(let key in this.singleton.decorator)store[joinKey(word,key)]=this.singleton.decorator[key];this.singleton.decorator=store;break;case"state":for(let key in this.singleton.store)store[joinKey(word,key)]=this.singleton.store[key];this.singleton.store=store;break;case"model":for(let key in this.definitions.type)store[joinKey(word,key)]=this.definitions.type[key];this.definitions.type=store;break;case"error":for(let key in this.definitions.error)store[joinKey(word,key)]=this.definitions.error[key];this.definitions.error=store;break}},types=Array.isArray(type)?type:[type];for(let type2 of types.some((x)=>x==="all")?["decorator","state","model","error"]:types)remap(type2);return this}prefix(type,word){return this.affix("prefix",type,word)}suffix(type,word){return this.affix("suffix",type,word)}compile(){if(this.fetch=this.config.aot?composeGeneralHandler(this):createDynamicHandler(this),typeof this.server?.reload==="function")this.server.reload({...this.server||{},fetch:this.fetch});return this}handle=async(request)=>this.fetch(request);fetch=(request)=>{return(this.fetch=this.config.aot?composeGeneralHandler(this):createDynamicHandler(this))(request)};handleError=async(context,error2)=>(this.handleError=this.config.aot?composeErrorHandler(this):createDynamicErrorHandler(this))(context,error2);outerErrorHandler=(error2)=>new Response(error2.message||error2.name||"Error",{status:error2?.status??500});listen=(options,callback)=>{if(typeof Bun==="undefined")throw new Error(".listen() is designed to run on Bun only. If you are running Elysia in other environment please use a dedicated plugin or export the handler via Elysia.fetch");if(this.compile(),typeof options==="string"){if(!isNumericString(options))throw new Error("Port must be a numeric value");options=parseInt(options)}let fetch=this.fetch,serve=typeof options==="object"?{development:!isProduction,reusePort:!0,...this.config.serve||{},...options||{},static:this.router.static.http.static,websocket:{...this.config.websocket||{},...websocket||{}},fetch,error:this.outerErrorHandler}:{development:!isProduction,reusePort:!0,...this.config.serve||{},static:this.router.static.http.static,websocket:{...this.config.websocket||{},...websocket||{}},port:options,fetch,error:this.outerErrorHandler};this.server=Bun?.serve(serve);for(let i=0;i<this.event.start.length;i++)this.event.start[i].fn(this);if(callback)callback(this.server);return process.on("beforeExit",()=>{if(this.server){this.server.stop(),this.server=null;for(let i=0;i<this.event.stop.length;i++)this.event.stop[i].fn(this)}}),this.promisedModules.then(()=>{Bun?.gc(!1)}),this};stop=async(closeActiveConnections)=>{if(!this.server)throw new Error("Elysia isn't running. Call `app.listen` to start the server.");if(this.server){if(this.server.stop(closeActiveConnections),this.server=null,this.event.stop.length)for(let i=0;i<this.event.stop.length;i++)this.event.stop[i].fn(this)}};get modules(){return Promise.all(this.promisedModules.promises)}}export{t,replaceUrlPath,replaceSchemaType,redirect,mergeObjectArray,mergeHook,mapValueError,mapResponse,mapEarlyResponse,mapCompactResponse,getSchemaValidator,getResponseSchemaValidator,form,error,Elysia as default,deduplicateChecksum,cloneInference,checksum,ValidationError,TypeSystemPolicy2 as TypeSystemPolicy,StatusMap,ParseError,NotFoundError,InvertedStatusMap,InvalidCookieSignature,InternalServerError,Elysia,ERROR_CODE,ELYSIA_TRACE,ELYSIA_REQUEST_ID,ELYSIA_FORM_DATA,Cookie};
741
+
742
+ //# debugId=50C4F143C2AECBE164756E2164756E21