Socket
Socket
Sign inDemoInstall

elysia

Package Overview
Dependencies
Maintainers
1
Versions
410
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

elysia - npm Package Compare versions

Comparing version 1.2.0-exp.7 to 1.2.0-exp.8

8

dist/cjs/compose.d.ts

@@ -1,2 +0,2 @@

import { type Elysia } from '.';
import type { AnyElysia } from '.';
import type { TAnySchema } from '@sinclair/typebox';

@@ -14,3 +14,3 @@ import { Sucrose } from './sucrose';

export declare const composeHandler: ({ app, path, method, localHook, hooks, validator, handler, allowMeta, inference }: {
app: Elysia<any, any, any, any, any, any, any, any>;
app: AnyElysia;
path: string;

@@ -37,3 +37,3 @@ method: string;

}
export declare const composeGeneralHandler: (app: Elysia<any, any, any, any, any, any, any, any>) => any;
export declare const composeErrorHandler: (app: Elysia<any, any, any, any, any, any, any, any>) => any;
export declare const composeGeneralHandler: (app: AnyElysia) => any;
export declare const composeErrorHandler: (app: AnyElysia) => any;

@@ -1,2 +0,2 @@

"use strict";var Re=Object.create;var te=Object.defineProperty;var Ee=Object.getOwnPropertyDescriptor;var Se=Object.getOwnPropertyNames;var ve=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Oe=(t,a)=>{for(var f in a)te(t,f,{get:a[f],enumerable:!0})},pe=(t,a,f,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of Se(a))!Ce.call(t,r)&&r!==f&&te(t,r,{get:()=>a[r],enumerable:!(o=Ee(a,r))||o.enumerable});return t};var we=(t,a,f)=>(f=t!=null?Re(ve(t)):{},pe(a||!t||!t.__esModule?te(f,"default",{value:t,enumerable:!0}):f,t)),xe=t=>pe(te({},"__esModule",{value:!0}),t);var Te={};Oe(Te,{composeErrorHandler:()=>ye,composeGeneralHandler:()=>Ae,composeHandler:()=>ke,hasAdditionalProperties:()=>H,hasProperty:()=>D,hasTransform:()=>F,hasType:()=>le,isAsync:()=>g,isAsyncName:()=>M,isGenerator:()=>X});module.exports=xe(Te);var z=require("@sinclair/typebox/value"),oe=require("./fast-querystring"),ue=we(require("fast-decode-uri-component")),v=require("./utils"),ae=require("./error"),j=require("./handler"),w=require("./error"),se=require("./trace"),P=require("./sucrose"),me=require("./cookies");const qe=new Headers().toJSON,de={optional:Symbol.for("TypeBox.Optional"),kind:Symbol.for("TypeBox.Kind")},O=t=>{if(!t)return!1;const a=t?.schema;return!!a&&de.optional in a},H=t=>{if(!t)return!1;const a=t?.schema??t;if(a.anyOf)return a.anyOf.some(H);if(a.someOf)return a.someOf.some(H);if(a.allOf)return a.allOf.some(H);if(a.not)return a.not.some(H);if(a.type==="object"){const f=a.properties;if("additionalProperties"in a)return a.additionalProperties;for(const o of Object.keys(f)){const r=f[o];if(r.type==="object"){if(H(r))return!0}else if(r.anyOf){for(let s=0;s<r.anyOf.length;s++)if(H(r.anyOf[s]))return!0}return r.additionalProperties}return!1}return!1},ie=({context:t="c",trace:a,addFn:f})=>{if(!a.length)return()=>({resolveChild(){return()=>{}},resolve(){}});for(let o=0;o<a.length;o++)f(`let report${o}, reportChild${o}, reportErr${o}, reportErrChild${o};let trace${o} = ${t}[ELYSIA_TRACE]?.[${o}] ?? trace[${o}](${t});
"use strict";var Re=Object.create;var ne=Object.defineProperty;var Ee=Object.getOwnPropertyDescriptor;var Se=Object.getOwnPropertyNames;var ve=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Oe=(n,a)=>{for(var f in a)ne(n,f,{get:a[f],enumerable:!0})},pe=(n,a,f,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of Se(a))!Ce.call(n,r)&&r!==f&&ne(n,r,{get:()=>a[r],enumerable:!(o=Ee(a,r))||o.enumerable});return n};var we=(n,a,f)=>(f=n!=null?Re(ve(n)):{},pe(a||!n||!n.__esModule?ne(f,"default",{value:n,enumerable:!0}):f,n)),xe=n=>pe(ne({},"__esModule",{value:!0}),n);var Te={};Oe(Te,{composeErrorHandler:()=>ye,composeGeneralHandler:()=>ke,composeHandler:()=>Ae,hasAdditionalProperties:()=>H,hasProperty:()=>D,hasTransform:()=>F,hasType:()=>le,isAsync:()=>g,isAsyncName:()=>M,isGenerator:()=>X});module.exports=xe(Te);var z=require("@sinclair/typebox/value"),oe=require("./fast-querystring"),ue=we(require("fast-decode-uri-component")),v=require("./utils"),ae=require("./error"),j=require("./handler"),w=require("./error"),se=require("./trace"),P=require("./sucrose"),me=require("./cookies");const qe=new Headers().toJSON,de={optional:Symbol.for("TypeBox.Optional"),kind:Symbol.for("TypeBox.Kind")},O=n=>{if(!n)return!1;const a=n?.schema;return!!a&&de.optional in a},H=n=>{if(!n)return!1;const a=n?.schema??n;if(a.anyOf)return a.anyOf.some(H);if(a.someOf)return a.someOf.some(H);if(a.allOf)return a.allOf.some(H);if(a.not)return a.not.some(H);if(a.type==="object"){const f=a.properties;if("additionalProperties"in a)return a.additionalProperties;for(const o of Object.keys(f)){const r=f[o];if(r.type==="object"){if(H(r))return!0}else if(r.anyOf){for(let s=0;s<r.anyOf.length;s++)if(H(r.anyOf[s]))return!0}return r.additionalProperties}return!1}return!1},ie=({context:n="c",trace:a,addFn:f})=>{if(!a.length)return()=>({resolveChild(){return()=>{}},resolve(){}});for(let o=0;o<a.length;o++)f(`let report${o}, reportChild${o}, reportErr${o}, reportErrChild${o};let trace${o} = ${n}[ELYSIA_TRACE]?.[${o}] ?? trace[${o}](${n});
`);return(o,{name:r,total:s=0}={})=>{r||(r="anonymous");const d=o==="error"?"reportErr":"report";for(let u=0;u<a.length;u++)f(`${d}${u} = trace${u}.${o}({id,event:'${o}',name:'${r}',begin:performance.now(),total:${s}})

@@ -6,3 +6,3 @@ `);return{resolve(){for(let u=0;u<a.length;u++)f(`${d}${u}.resolve()

`);return m=>{for(let $=0;$<a.length;$++)f(m?`if(${m} instanceof Error){${d}Child${$}?.(${m}) }else{${d}Child${$}?.()}`:`${d}Child${$}?.()
`)}}}}},He=({injectResponse:t="",normalize:a=!1,validator:f})=>({composeValidation:(o,r=`c.${o}`)=>`c.set.status=422;throw new ValidationError('${o}',validator.${o},${r})`,composeResponseValidation:(o="r")=>{let r=t+`
`)}}}}},He=({injectResponse:n="",normalize:a=!1,validator:f})=>({composeValidation:(o,r=`c.${o}`)=>`c.set.status=422;throw new ValidationError('${o}',validator.${o},${r})`,composeResponseValidation:(o="r")=>{let r=n+`
`;r+=`if(typeof ${o}==="object"&&${o}&&ELYSIA_RESPONSE in ${o}){c.set.status=${o}[ELYSIA_RESPONSE]

@@ -14,21 +14,21 @@ ${o}=${o}.response}const isResponse=${o} instanceof Response

throw new ValidationError('response',validator.response['${s}'],${o})}c.set.status = ${s}}break
`;return r+"}"}}),G=Symbol.for("TypeBox.Kind"),le=(t,a)=>{if(a){if(G in a&&a[G]===t)return!0;if(a.type==="object"){const f=a.properties;for(const o of Object.keys(f)){const r=f[o];if(r.type==="object"){if(le(t,r))return!0}else if(r.anyOf){for(let s=0;s<r.anyOf.length;s++)if(le(t,r.anyOf[s]))return!0}if(G in r&&r[G]===t)return!0}return!1}return a.properties&&G in a.properties&&a.properties[G]===t}},D=(t,a)=>{if(a){if(a.type==="object"){const f=a.properties;if(!f)return!1;for(const o of Object.keys(f)){const r=f[o];if(t in r)return!0;if(r.type==="object"){if(D(t,r))return!0}else if(r.anyOf){for(let s=0;s<r.anyOf.length;s++)if(D(t,r.anyOf[s]))return!0}}return!1}return t in a}},fe=Symbol.for("TypeBox.Transform"),F=t=>{if(t){if(t.type==="object"&&t.properties){const a=t.properties;for(const f of Object.keys(a)){const o=a[f];if(o.type==="object"){if(F(o))return!0}else if(o.anyOf){for(let s=0;s<o.anyOf.length;s++)if(F(o.anyOf[s]))return!0}if(fe in o)return!0}return!1}return fe in t||t.properties&&fe in t.properties}},je=/(?:return|=>) \S+\(/g,M=t=>(t?.fn??t).constructor.name==="AsyncFunction",g=t=>{const a=t?.fn??t;if(a.constructor.name==="AsyncFunction")return!0;const f=a.toString();return f.includes("=> response.clone(")?!1:f.includes("await")||f.includes("async")?!0:!!f.match(je)},X=t=>{const a=t?.fn??t;return a.constructor.name==="AsyncGeneratorFunction"||a.constructor.name==="GeneratorFunction"},ke=({app:t,path:a,method:f,localHook:o,hooks:r,validator:s,handler:d,allowMeta:u=!1,inference:m})=>{const $=typeof d=="function";if(!$&&(d=(0,j.mapResponse)(d,{headers:t.setHeaders??{}}),r.parse.length===0&&r.transform.length===0&&r.beforeHandle.length===0&&r.afterHandle.length===0))return Function("a","return function(){return a.clone()}")(d);const h=$?"handler(c)":"handler",A=r.afterResponse.length>0,C=r.trace.length>0;let e="";m=(0,P.sucrose)(Object.assign(o,{handler:d}),m),m.server&&(e+=`Object.defineProperty(c,'server',{get:function(){return getServer()}})
`;return r+"}"}}),G=Symbol.for("TypeBox.Kind"),le=(n,a)=>{if(a){if(G in a&&a[G]===n)return!0;if(a.type==="object"){const f=a.properties;for(const o of Object.keys(f)){const r=f[o];if(r.type==="object"){if(le(n,r))return!0}else if(r.anyOf){for(let s=0;s<r.anyOf.length;s++)if(le(n,r.anyOf[s]))return!0}if(G in r&&r[G]===n)return!0}return!1}return a.properties&&G in a.properties&&a.properties[G]===n}},D=(n,a)=>{if(a){if(a.type==="object"){const f=a.properties;if(!f)return!1;for(const o of Object.keys(f)){const r=f[o];if(n in r)return!0;if(r.type==="object"){if(D(n,r))return!0}else if(r.anyOf){for(let s=0;s<r.anyOf.length;s++)if(D(n,r.anyOf[s]))return!0}}return!1}return n in a}},fe=Symbol.for("TypeBox.Transform"),F=n=>{if(n){if(n.type==="object"&&n.properties){const a=n.properties;for(const f of Object.keys(a)){const o=a[f];if(o.type==="object"){if(F(o))return!0}else if(o.anyOf){for(let s=0;s<o.anyOf.length;s++)if(F(o.anyOf[s]))return!0}if(fe in o)return!0}return!1}return fe in n||n.properties&&fe in n.properties}},je=/(?:return|=>) \S+\(/g,M=n=>(n?.fn??n).constructor.name==="AsyncFunction",g=n=>{const a=n?.fn??n;if(a.constructor.name==="AsyncFunction")return!0;const f=a.toString();return f.includes("=> response.clone(")?!1:f.includes("await")||f.includes("async")?!0:!!f.match(je)},X=n=>{const a=n?.fn??n;return a.constructor.name==="AsyncGeneratorFunction"||a.constructor.name==="GeneratorFunction"},Ae=({app:n,path:a,method:f,localHook:o,hooks:r,validator:s,handler:d,allowMeta:u=!1,inference:m})=>{const $=typeof d=="function";if(!$&&(d=(0,j.mapResponse)(d,{headers:n.setHeaders??{}}),r.parse.length===0&&r.transform.length===0&&r.beforeHandle.length===0&&r.afterHandle.length===0))return Function("a","return function(){return a.clone()}")(d);const h=$?"handler(c)":"handler",k=r.afterResponse.length>0,C=r.trace.length>0;let e="";m=(0,P.sucrose)(Object.assign(o,{handler:d}),m),m.server&&(e+=`Object.defineProperty(c,'server',{get:function(){return getServer()}})
`),m.body&&(e+=`let isParsing = false
`),s.createBody?.(),s.createQuery?.(),s.createHeaders?.(),s.createParams?.(),s.createCookie?.(),s.createResponse?.();const Z=m.query||!!s.query,y=f!=="$INTERNALWS"&&f!=="GET"&&f!=="HEAD"&&(m.body||!!s.body||r.parse.length),b=t.setHeaders,V=b&&!!Object.keys(b).length,I=m.headers||s.headers,Y=m.cookie||!!s.cookie,K=Y?(0,v.getCookieValidator)({validator:s.cookie,defaultConfig:t.config.cookie,dynamic:!!t.config.aot,config:s.cookie?.config??{},models:t.definitions.type}):void 0,E=K?.config;let L="";if(E?.sign){if(!E.secrets)throw new Error(`t.Cookie required secret which is not set in (${f}) ${a}.`);const i=E.secrets?typeof E.secrets=="string"?E.secrets:E.secrets[0]:void 0;if(L+=`const _setCookie = c.set.cookie
if(_setCookie){`,E.sign===!0)L+=`for(const [key, cookie] of Object.entries(_setCookie)){c.set.cookie[key].value=await signCookie(cookie.value,'${i}')}`;else for(const n of E.sign)L+=`if(_setCookie['${n}']?.value){c.set.cookie['${n}'].value=await signCookie(_setCookie['${n}'].value,'${i}')}`;L+="}"}const ee=t.config.normalize,{composeValidation:U,composeResponseValidation:re}=He({normalize:ee,validator:s});if(I&&(e+=qe?`c.headers = c.request.headers.toJSON()
`),s.createBody?.(),s.createQuery?.(),s.createHeaders?.(),s.createParams?.(),s.createCookie?.(),s.createResponse?.();const Z=m.query||!!s.query,y=f!=="$INTERNALWS"&&f!=="GET"&&f!=="HEAD"&&(m.body||!!s.body||r.parse.length),b=n.setHeaders,V=b&&!!Object.keys(b).length,I=m.headers||s.headers,Y=m.cookie||!!s.cookie,K=Y?(0,v.getCookieValidator)({validator:s.cookie,defaultConfig:n.config.cookie,dynamic:!!n.config.aot,config:s.cookie?.config??{},models:n.definitions.type}):void 0,E=K?.config;let L="";if(E?.sign){if(!E.secrets)throw new Error(`t.Cookie required secret which is not set in (${f}) ${a}.`);const i=E.secrets?typeof E.secrets=="string"?E.secrets:E.secrets[0]:void 0;if(L+=`const _setCookie = c.set.cookie
if(_setCookie){`,E.sign===!0)L+=`for(const [key, cookie] of Object.entries(_setCookie)){c.set.cookie[key].value=await signCookie(cookie.value,'${i}')}`;else for(const t of E.sign)L+=`if(_setCookie['${t}']?.value){c.set.cookie['${t}'].value=await signCookie(_setCookie['${t}'].value,'${i}')}`;L+="}"}const ee=n.config.normalize,{composeValidation:U,composeResponseValidation:re}=He({normalize:ee,validator:s});if(I&&(e+=qe?`c.headers = c.request.headers.toJSON()
`:`c.headers = {}
for (const [key, value] of c.request.headers.entries())
c.headers[key] = value`),Y){const i=(c,l)=>{const p=E?.[c]??l;return p?typeof p=="string"?`${c}:'${p}',`:p instanceof Date?`${c}: new Date(${p.getTime()}),`:`${c}:${p},`:typeof l=="string"?`${c}:"${l}",`:`${c}:${l},`},n=E?`{secrets:${E.secrets!==void 0?typeof E.secrets=="string"?`'${E.secrets}'`:"["+E.secrets.reduce((c,l)=>c+`'${l}',`,"")+"]":"undefined"},sign:${E.sign===!0?!0:E.sign!==void 0?"["+E.sign.reduce((c,l)=>c+`'${l}',`,"")+"]":"undefined"},`+i("domain")+i("expires")+i("httpOnly")+i("maxAge")+i("path","/")+i("priority")+i("sameSite")+i("secure")+"}":"undefined";I?e+=`
c.cookie=await parseCookie(c.set,c.headers.cookie,${n})
c.headers[key] = value`),Y){const i=(c,l)=>{const p=E?.[c]??l;return p?typeof p=="string"?`${c}:'${p}',`:p instanceof Date?`${c}: new Date(${p.getTime()}),`:`${c}:${p},`:typeof l=="string"?`${c}:"${l}",`:`${c}:${l},`},t=E?`{secrets:${E.secrets!==void 0?typeof E.secrets=="string"?`'${E.secrets}'`:"["+E.secrets.reduce((c,l)=>c+`'${l}',`,"")+"]":"undefined"},sign:${E.sign===!0?!0:E.sign!==void 0?"["+E.sign.reduce((c,l)=>c+`'${l}',`,"")+"]":"undefined"},`+i("domain")+i("expires")+i("httpOnly")+i("maxAge")+i("path","/")+i("priority")+i("sameSite")+i("secure")+"}":"undefined";I?e+=`
c.cookie=await parseCookie(c.set,c.headers.cookie,${t})
`:e+=`
c.cookie=await parseCookie(c.set,c.request.headers.get('cookie'),${n})
`}if(Z){const i=[];if(s.query&&s.query.schema.type==="object"){const n=s.query.schema.properties;if(!H(s.query))for(let[c,l]of Object.entries(n)){let p=l;p&&de.optional in p&&p.type==="array"&&p.items&&(p=p.items);const{type:q,anyOf:_}=p,N=q==="array"||_?.some(S=>S.type==="string"&&S.format==="ArrayString");i.push({key:c,isArray:N,isNestedObjectArray:N&&p.items?.type==="object"||!!p.items?.anyOf?.some(S=>S.type==="object"||S.type==="array"),isObject:q==="object"||_?.some(S=>S.type==="string"&&S.format==="ArrayString"),anyOf:!!_})}}if(!i.length)e+="if(c.qi===-1){c.query={}}else{c.query=parseQueryFromURL(c.url.slice(c.qi + 1))}";else{e+=`if(c.qi!==-1){let url = '&' + c.url.slice(c.qi + 1)
`;let n=0;for(const{key:c,isArray:l,isObject:p,isNestedObjectArray:q,anyOf:_}of i){const N=(n===0?"let ":"")+`memory=url.indexOf('&${c}=')
let a${n}
c.cookie=await parseCookie(c.set,c.request.headers.get('cookie'),${t})
`}if(Z){const i=[];if(s.query&&s.query.schema.type==="object"){const t=s.query.schema.properties;if(!H(s.query))for(let[c,l]of Object.entries(t)){let p=l;p&&de.optional in p&&p.type==="array"&&p.items&&(p=p.items);const{type:q,anyOf:_}=p,N=q==="array"||_?.some(S=>S.type==="string"&&S.format==="ArrayString");i.push({key:c,isArray:N,isNestedObjectArray:N&&p.items?.type==="object"||!!p.items?.anyOf?.some(S=>S.type==="object"||S.type==="array"),isObject:q==="object"||_?.some(S=>S.type==="string"&&S.format==="ArrayString"),anyOf:!!_})}}if(!i.length)e+="if(c.qi===-1){c.query={}}else{c.query=parseQueryFromURL(c.url.slice(c.qi + 1))}";else{e+=`if(c.qi!==-1){let url = '&' + c.url.slice(c.qi + 1)
`;let t=0;for(const{key:c,isArray:l,isObject:p,isNestedObjectArray:q,anyOf:_}of i){const N=(t===0?"let ":"")+`memory=url.indexOf('&${c}=')
let a${t}
`;l?(e+=N,q?e+=`while(memory!==-1){const start=memory+${c.length+2}
memory=url.indexOf('&',start)
if(a${n}===undefined)
a${n}=''
if(a${t}===undefined)
a${t}=''
else
a${n}+=','
a${t}+=','
let temp

@@ -40,13 +40,13 @@ if(memory===-1)temp=decodeURIComponent(url.slice(start).replace(/\\+/g,' '))

temp='"'+temp+'"'
a${n} += temp
a${t} += temp
if(memory === -1)break
memory=url.indexOf('&${c}=',memory)
if(memory === -1)break}try{if(a${n}.charCodeAt(0) === 91)a${n} = JSON.parse(a${n})
if(memory === -1)break}try{if(a${t}.charCodeAt(0) === 91)a${t} = JSON.parse(a${t})
else
a${n}=JSON.parse('['+a${n}+']')}catch{}
a${t}=JSON.parse('['+a${t}+']')}catch{}
`:e+=`while(memory!==-1){const start=memory+${c.length+2}
memory=url.indexOf('&',start)
if(a${n}===undefined)a${n}=[]
if(memory===-1){a${n}.push(decodeURIComponent(url.slice(start)).replace(/\\+/g,' '))
break}else a${n}.push(decodeURIComponent(url.slice(start, memory)).replace(/\\+/g,' '))
if(a${t}===undefined)a${t}=[]
if(memory===-1){a${t}.push(decodeURIComponent(url.slice(start)).replace(/\\+/g,' '))
break}else a${t}.push(decodeURIComponent(url.slice(start, memory)).replace(/\\+/g,' '))
memory=url.indexOf('&${c}=',memory)

@@ -56,8 +56,8 @@ if(memory===-1) break

memory=url.indexOf('&',start)
if(memory===-1)a${n}=decodeURIComponent(url.slice(start).replace(/\\+/g,' '))else a${n}=decodeURIComponent(url.slice(start,memory).replace(/\\+/g,' '))if(a${n}!==undefined)try{a${n}=JSON.parse(a${n})}catch{}}`:(e+=N+`if(memory!==-1){const start=memory+${c.length+2}
if(memory===-1)a${t}=decodeURIComponent(url.slice(start).replace(/\\+/g,' '))else a${t}=decodeURIComponent(url.slice(start,memory).replace(/\\+/g,' '))if(a${t}!==undefined)try{a${t}=JSON.parse(a${t})}catch{}}`:(e+=N+`if(memory!==-1){const start=memory+${c.length+2}
memory=url.indexOf('&',start)
if(memory===-1)a${n}=decodeURIComponent(url.slice(start).replace(/\\+/g,' '))
else{a${n}=decodeURIComponent(url.slice(start,memory).replace(/\\+/g,' '))`,_&&(e+=`
if(memory===-1)a${t}=decodeURIComponent(url.slice(start).replace(/\\+/g,' '))
else{a${t}=decodeURIComponent(url.slice(start,memory).replace(/\\+/g,' '))`,_&&(e+=`
let deepMemory=url.indexOf('&${c}=',memory)
if(deepMemory!==-1){a${n}=[a${n}]
if(deepMemory!==-1){a${t}=[a${t}]
let first=true

@@ -73,6 +73,6 @@ while(true){const start=deepMemory+${c.length+2}

if((vStart===91&&vEnd===93)||(vStart===123&&vEnd===125))
try{a${n}.push(JSON.parse(value))}catch{a${n}.push(value)}if(deepMemory===-1)break}}`),e+="}}"),n++,e+=`
try{a${t}.push(JSON.parse(value))}catch{a${t}.push(value)}if(deepMemory===-1)break}}`),e+="}}"),t++,e+=`
`}e+="c.query={"+i.map(({key:c},l)=>`'${c}':a${l}`).join(",")+"}",e+=`} else c.query = {}
`}}C&&(e+=`const id=c[ELYSIA_REQUEST_ID]
`);const R=ie({trace:r.trace,addFn:i=>{e+=i}});e+="try{";const Q=typeof d=="function"&&g(d),k=C||r.afterResponse.length>0?"c.response= ":"",W=Y||y||Q||r.parse.length>0||r.afterHandle.some(g)||r.beforeHandle.some(g)||r.transform.some(g)||r.mapResponse.some(g),he=(typeof d=="function"?X(d):!1)||r.beforeHandle.some(X)||r.afterHandle.some(X)||r.transform.some(X),ne=m.cookie||m.set||I||C||s.response||$&&V||he,x=",c.request";e+=`c.route=\`${a}\`
`);const R=ie({trace:r.trace,addFn:i=>{e+=i}});e+="try{";const Q=typeof d=="function"&&g(d),A=C||r.afterResponse.length>0?"c.response= ":"",W=Y||y||Q||r.parse.length>0||r.afterHandle.some(g)||r.beforeHandle.some(g)||r.transform.some(g)||r.mapResponse.some(g),he=(typeof d=="function"?X(d):!1)||r.beforeHandle.some(X)||r.afterHandle.some(X)||r.transform.some(X),te=m.cookie||m.set||I||C||s.response||$&&V||he,x=",c.request";e+=`c.route=\`${a}\`
`;const ge=R("parse",{total:r.parse.length});if(y){const i=r.parse.length||m.body||s.body;if(e+=`isParsing=true

@@ -93,5 +93,5 @@ `,r.type&&!r.parse.length)switch(r.type){case"json":case"application/json":O(s.body)?e+="try{c.body=await c.request.json()}catch{}":e+="c.body=await c.request.json()";break;case"text":case"text/plain":e+=`c.body=await c.request.text()

`,r.parse.length){e+=`let used=false
`;const n=R("parse",{total:r.parse.length});for(let c=0;c<r.parse.length;c++){const l=n.resolveChild(r.parse[c].fn.name),p=`bo${c}`;c!==0&&(e+="if(!used){"),e+=`let ${p}=parse[${c}](c,contentType)
`;const t=R("parse",{total:r.parse.length});for(let c=0;c<r.parse.length;c++){const l=t.resolveChild(r.parse[c].fn.name),p=`bo${c}`;c!==0&&(e+="if(!used){"),e+=`let ${p}=parse[${c}](c,contentType)
if(${p} instanceof Promise)${p}=await ${p}
if(${p}!==undefined){c.body=${p};used=true}`,l(),c!==0&&(e+="}")}n.resolve()}if(e+=`
if(${p}!==undefined){c.body=${p};used=true}`,l(),c!==0&&(e+="}")}t.resolve()}if(e+=`
delete c.contentType

@@ -122,4 +122,4 @@ `,r.parse.length&&(e+="if(!used){"),r.type&&!Array.isArray(r.type))switch(r.type){case"json":case"application/json":O(s.body)?e+="try{c.body=await c.request.json()}catch{}":e+=`c.body=await c.request.json()

`}if(ge.resolve(),r?.transform){const i=R("transform",{total:r.transform.length});r.transform.length&&(e+=`let transformed
`);for(let n=0;n<r.transform.length;n++){const c=r.transform[n],l=i.resolveChild(c.fn.name);e+=g(c)?`transformed=await transform[${n}](c)
`:`transformed=transform[${n}](c)
`);for(let t=0;t<r.transform.length;t++){const c=r.transform[t],l=i.resolveChild(c.fn.name);e+=g(c)?`transformed=await transform[${t}](c)
`:`transformed=transform[${t}](c)
`,c.subType==="mapDerive"?e+=`if(transformed?.[ELYSIA_RESPONSE])throw transformed

@@ -137,12 +137,12 @@ else{transformed.request=c.request

`,l()}i.resolve()}if(s){if(s.headers){if(ee&&"Clean"in s.headers&&!H(s.headers)&&(e+=`c.headers=validator.headers.Clean(c.headers);
`),D("default",s.headers.schema))for(const[i,n]of Object.entries(z.Value.Default(s.headers.schema,{}))){const c=typeof n=="object"?JSON.stringify(n):typeof n=="string"?`'${n}'`:n;c!==void 0&&(e+=`c.headers['${i}']??=${c}
`),D("default",s.headers.schema))for(const[i,t]of Object.entries(z.Value.Default(s.headers.schema,{}))){const c=typeof t=="object"?JSON.stringify(t):typeof t=="string"?`'${t}'`:t;c!==void 0&&(e+=`c.headers['${i}']??=${c}
`)}O(s.headers)&&(e+="if(isNotEmpty(c.headers)){"),e+="if(validator.headers.Check(c.headers) === false){"+U("headers")+"}",F(s.headers.schema)&&(e+=`c.headers=validator.headers.Decode(c.headers)
`),O(s.headers)&&(e+="}")}if(s.params){if(D("default",s.params.schema))for(const[i,n]of Object.entries(z.Value.Default(s.params.schema,{}))){const c=typeof n=="object"?JSON.stringify(n):typeof n=="string"?`'${n}'`:n;c!==void 0&&(e+=`c.params['${i}']??=${c}
`),O(s.headers)&&(e+="}")}if(s.params){if(D("default",s.params.schema))for(const[i,t]of Object.entries(z.Value.Default(s.params.schema,{}))){const c=typeof t=="object"?JSON.stringify(t):typeof t=="string"?`'${t}'`:t;c!==void 0&&(e+=`c.params['${i}']??=${c}
`)}e+="if(validator.params.Check(c.params)===false){"+U("params")+"}",F(s.params.schema)&&(e+=`c.params=validator.params.Decode(c.params)
`)}if(s.query){if(ee&&"Clean"in s.query&&!H(s.query)&&(e+=`c.query=validator.query.Clean(c.query)
`),D("default",s.query.schema))for(const[i,n]of Object.entries(z.Value.Default(s.query.schema,{}))){const c=typeof n=="object"?JSON.stringify(n):typeof n=="string"?`'${n}'`:n;c!==void 0&&(e+=`if(c.query['${i}']===undefined)c.query['${i}']=${c}
`),D("default",s.query.schema))for(const[i,t]of Object.entries(z.Value.Default(s.query.schema,{}))){const c=typeof t=="object"?JSON.stringify(t):typeof t=="string"?`'${t}'`:t;c!==void 0&&(e+=`if(c.query['${i}']===undefined)c.query['${i}']=${c}
`)}O(s.query)&&(e+="if(isNotEmpty(c.query)){"),e+="if(validator.query.Check(c.query)===false){"+U("query")+"}",F(s.query.schema)&&(e+=`c.query=validator.query.Decode(Object.assign({},c.query))
`),O(s.query)&&(e+="}")}if(s.body){ee&&"Clean"in s.body&&!H(s.body)&&(e+=`c.body=validator.body.Clean(c.body)
`);const i=F(s.body.schema);if((i||O(s.body))&&(e+=`const isNotEmptyObject=c.body&&(typeof c.body==="object"&&isNotEmpty(c.body))
`),D("default",s.body.schema)){const n=z.Value.Default(s.body.schema,s.body.schema.type==="object"?{}:void 0),c=typeof n=="object"?JSON.stringify(n):typeof n=="string"?`'${n}'`:n;e+=`if(validator.body.Check(c.body)===false){if(typeof c.body==='object')c.body=Object.assign(${c},c.body)
`),D("default",s.body.schema)){const t=z.Value.Default(s.body.schema,s.body.schema.type==="object"?{}:void 0),c=typeof t=="object"?JSON.stringify(t):typeof t=="string"?`'${t}'`:t;e+=`if(validator.body.Check(c.body)===false){if(typeof c.body==='object')c.body=Object.assign(${c},c.body)
else c.body=${c}

@@ -152,5 +152,5 @@ `,O(s.body)?e+="if(isNotEmptyObject&&validator.body.Check(c.body)===false){"+U("body")+"}":e+="if(validator.body.Check(c.body)===false){"+U("body")+"}",e+="}"}else O(s.body)?e+="if(isNotEmptyObject&&validator.body.Check(c.body)===false){"+U("body")+"}":e+="if(validator.body.Check(c.body)===false){"+U("body")+"}";i&&(e+=`if(isNotEmptyObject)c.body=validator.body.Decode(c.body)

for(const [key,value] of Object.entries(c.cookie))cookieValue[key]=value.value
`,D("default",K.schema))for(const[i,n]of Object.entries(z.Value.Default(K.schema,{})))e+=`cookieValue['${i}'] = ${typeof n=="object"?JSON.stringify(n):n}
`,D("default",K.schema))for(const[i,t]of Object.entries(z.Value.Default(K.schema,{})))e+=`cookieValue['${i}'] = ${typeof t=="object"?JSON.stringify(t):t}
`;O(s.cookie)&&(e+="if(isNotEmpty(c.cookie)){"),e+="if(validator.cookie.Check(cookieValue)===false){"+U("cookie","cookieValue")+"}",F(s.cookie.schema)&&(e+=`for(const [key,value] of Object.entries(validator.cookie.Decode(cookieValue)))c.cookie[key].value=value
`),O(s.cookie)&&(e+="}")}}if(r?.beforeHandle){const i=R("beforeHandle",{total:r.beforeHandle.length});let n=!1;for(let c=0;c<r.beforeHandle.length;c++){const l=r.beforeHandle[c],p=i.resolveChild(l.fn.name),q=(0,P.hasReturn)(l);if(l.subType==="resolve"||l.subType==="mapResolve")n||(n=!0,e+=`
`),O(s.cookie)&&(e+="}")}}if(r?.beforeHandle){const i=R("beforeHandle",{total:r.beforeHandle.length});let t=!1;for(let c=0;c<r.beforeHandle.length;c++){const l=r.beforeHandle[c],p=i.resolveChild(l.fn.name),q=(0,P.hasReturn)(l);if(l.subType==="resolve"||l.subType==="mapResolve")t||(t=!0,e+=`
let resolved

@@ -182,3 +182,3 @@ `),e+=g(l)?`resolved=await beforeHandle[${c}](c);

`;for(let S=0;S<r.mapResponse.length;S++){const T=r.mapResponse[S],J=N.resolveChild(T.fn.name);e+=`if(mr===undefined){mr=${M(T)?"await":""} onMapResponse[${S}](c)
if(mr!==undefined)be=c.response=mr}`,J()}}N.resolve(),e+=L,e+=`return mapEarlyResponse(${k}be,c.set${x})}
if(mr!==undefined)be=c.response=mr}`,J()}}N.resolve(),e+=L,e+=`return mapEarlyResponse(${A}be,c.set${x})}
`}}i.resolve()}if(r?.afterHandle.length){const i=R("handle",{name:$?d.name:void 0});r.afterHandle.length?e+=Q?`let r=c.response=await ${h}

@@ -188,30 +188,30 @@ `:`let r=c.response=${h}

`:`let r=${h}
`,i.resolve();const n=R("afterHandle",{total:r.afterHandle.length});for(let l=0;l<r.afterHandle.length;l++){const p=r.afterHandle[l],q=(0,P.hasReturn)(p),_=n.resolveChild(p.fn.name);q?(e+=g(p.fn)?`af=await afterHandle[${l}](c)
`,i.resolve();const t=R("afterHandle",{total:r.afterHandle.length});for(let l=0;l<r.afterHandle.length;l++){const p=r.afterHandle[l],q=(0,P.hasReturn)(p),_=t.resolveChild(p.fn.name);q?(e+=g(p.fn)?`af=await afterHandle[${l}](c)
`:`af=afterHandle[${l}](c)
`,_("af"),s.response?(e+="if(af!==undefined){",n.resolve(),e+=re("af"),e+="c.response=af}"):(e+="if(af!==undefined){",n.resolve(),e+="c.response=af}")):(e+=g(p.fn)?`await afterHandle[${l}](c)
`,_("af"),s.response?(e+="if(af!==undefined){",t.resolve(),e+=re("af"),e+="c.response=af}"):(e+="if(af!==undefined){",t.resolve(),e+="c.response=af}")):(e+=g(p.fn)?`await afterHandle[${l}](c)
`:`afterHandle[${l}](c)
`,_())}n.resolve(),e+=`r=c.response
`,_())}t.resolve(),e+=`r=c.response
`,s.response&&(e+=re()),e+=L;const c=R("mapResponse",{total:r.mapResponse.length});if(r.mapResponse.length)for(let l=0;l<r.mapResponse.length;l++){const p=r.mapResponse[l],q=c.resolveChild(p.fn.name);e+=`mr=${M(p)?"await":""} onMapResponse[${l}](c)
if(mr!==undefined)r=c.response=mr`,q()}c.resolve(),ne?e+=`return mapResponse(${k}r,c.set${x})
`:e+=`return mapCompactResponse(${k}r${x})
if(mr!==undefined)r=c.response=mr`,q()}c.resolve(),te?e+=`return mapResponse(${A}r,c.set${x})
`:e+=`return mapCompactResponse(${A}r${x})
`}else{const i=R("handle",{name:$?d.name:void 0});if(s.response||r.mapResponse.length){e+=Q?`let r=await ${h}
`:`let r=${h}
`,i.resolve(),s.response&&(e+=re()),R("afterHandle").resolve();const n=R("mapResponse",{total:r.mapResponse.length});if(r.mapResponse.length){e+=`
`,i.resolve(),s.response&&(e+=re()),R("afterHandle").resolve();const t=R("mapResponse",{total:r.mapResponse.length});if(r.mapResponse.length){e+=`
c.response=r
`;for(let c=0;c<r.mapResponse.length;c++){const l=r.mapResponse[c],p=n.resolveChild(l.fn.name);e+=`
`;for(let c=0;c<r.mapResponse.length;c++){const l=r.mapResponse[c],p=t.resolveChild(l.fn.name);e+=`
if(mr===undefined){mr=${M(l)?"await ":""}onMapResponse[${c}](c)
if(mr!==undefined)r=c.response=mr}
`,p()}}n.resolve(),e+=L,d instanceof Response?(e+=m.set?`if(isNotEmpty(c.set.headers)||c.set.status!==200||c.set.redirect||c.set.cookie)return mapResponse(${k}${h}.clone(),c.set${x})else return ${h}.clone()`:`return ${h}.clone()`,e+=`
`):ne?e+=`return mapResponse(${k}r,c.set${x})
`:e+=`return mapCompactResponse(${k}r${x})
`,p()}}t.resolve(),e+=L,d instanceof Response?(e+=m.set?`if(isNotEmpty(c.set.headers)||c.set.status!==200||c.set.redirect||c.set.cookie)return mapResponse(${A}${h}.clone(),c.set${x})else return ${h}.clone()`:`return ${h}.clone()`,e+=`
`):te?e+=`return mapResponse(${A}r,c.set${x})
`:e+=`return mapCompactResponse(${A}r${x})
`}else if(Y||C){e+=Q?`let r=await ${h}
`:`let r=${h}
`,i.resolve(),R("afterHandle").resolve();const n=R("mapResponse",{total:r.mapResponse.length});if(r.mapResponse.length){e+=`c.response= r
`;for(let c=0;c<r.mapResponse.length;c++){const l=r.mapResponse[c],p=n.resolveChild(l.fn.name);e+=`if(mr===undefined){mr=${M(l)?"await ":""}onMapResponse[${c}](c)if(mr!==undefined)r=c.response=mr}`,p()}}n.resolve(),e+=L,ne?e+=`return mapResponse(${k}r,c.set${x})
`:e+=`return mapCompactResponse(${k}r${x})
`}else{i.resolve();const n=Q?`await ${h}`:h;R("afterHandle").resolve(),d instanceof Response?e+=m.set?`if(isNotEmpty(c.set.headers)||c.set.status!==200||c.set.redirect||c.set.cookie)return mapResponse(${k}${h}.clone(),c.set${x})
`,i.resolve(),R("afterHandle").resolve();const t=R("mapResponse",{total:r.mapResponse.length});if(r.mapResponse.length){e+=`c.response= r
`;for(let c=0;c<r.mapResponse.length;c++){const l=r.mapResponse[c],p=t.resolveChild(l.fn.name);e+=`if(mr===undefined){mr=${M(l)?"await ":""}onMapResponse[${c}](c)if(mr!==undefined)r=c.response=mr}`,p()}}t.resolve(),e+=L,te?e+=`return mapResponse(${A}r,c.set${x})
`:e+=`return mapCompactResponse(${A}r${x})
`}else{i.resolve();const t=Q?`await ${h}`:h;R("afterHandle").resolve(),d instanceof Response?e+=m.set?`if(isNotEmpty(c.set.headers)||c.set.status!==200||c.set.redirect||c.set.cookie)return mapResponse(${A}${h}.clone(),c.set${x})
else return ${h}.clone()
`:`return ${h}.clone()
`:ne?e+=`return mapResponse(${k}${n},c.set${x})
`:e+=`return mapCompactResponse(${k}${n}${x})
`:te?e+=`return mapResponse(${A}${t},c.set${x})
`:e+=`return mapCompactResponse(${A}${t}${x})
`}}if(e+=`

@@ -225,11 +225,11 @@ }catch(error){`,y&&(e+=`if(isParsing)error=new ParseError()

let er
`;for(let i=0;i<r.error.length;i++){const n=ce.resolveChild(r.error[i].fn.name);g(r.error[i])?e+=`er=await handleErrors[${i}](c)
`;for(let i=0;i<r.error.length;i++){const t=ce.resolveChild(r.error[i].fn.name);g(r.error[i])?e+=`er=await handleErrors[${i}](c)
`:e+=`er=handleErrors[${i}](c)
if(er instanceof Promise)er=await er
`,n();const c=R("mapResponse",{total:r.mapResponse.length});if(r.mapResponse.length)for(let l=0;l<r.mapResponse.length;l++){const p=r.mapResponse[l],q=c.resolveChild(p.fn.name);e+=`c.response=er
`,t();const c=R("mapResponse",{total:r.mapResponse.length});if(r.mapResponse.length)for(let l=0;l<r.mapResponse.length;l++){const p=r.mapResponse[l],q=c.resolveChild(p.fn.name);e+=`c.response=er
er=${M(p)?"await ":""}onMapResponse[${l}](c)
if(er instanceof Promise)er=await er`,q()}if(c.resolve(),e+=`er=mapEarlyResponse(er,set${x})
`,e+="if(er){",C){for(let l=0;l<r.trace.length;l++)e+=`report${l}.resolve()
`;ce.resolve()}e+="return er}"}}if(ce.resolve(),e+="return handleError(c,error,true)",W||(e+="})()"),e+="}",A||C){e+="finally{ ",W||(e+=";(async()=>{");const i=R("afterResponse",{total:r.afterResponse.length});if(A)for(let n=0;n<r.afterResponse.length;n++){const c=i.resolveChild(r.afterResponse[n].fn.name);e+=`
await afterResponse[${n}](c)
`;ce.resolve()}e+="return er}"}}if(ce.resolve(),e+="return handleError(c,error,true)",W||(e+="})()"),e+="}",k||C){e+="finally{ ",W||(e+=";(async()=>{");const i=R("afterResponse",{total:r.afterResponse.length});if(k)for(let t=0;t<r.afterResponse.length;t++){const c=i.resolveChild(r.afterResponse[t].fn.name);e+=`
await afterResponse[${t}](c)
`,c()}i.resolve(),W||(e+="})()"),e+="}"}let B=`const {handler,handleError,hooks: {transform,resolve,beforeHandle,afterHandle,mapResponse: onMapResponse,parse,error: handleErrors,afterResponse,trace: _trace},validator,utils: {mapResponse,mapCompactResponse,mapEarlyResponse,parseQuery,parseQueryFromURL,isNotEmpty},error: {NotFoundError,ValidationError,InternalServerError,ParseError},schema,definitions,ERROR_CODE,parseCookie,signCookie,decodeURIComponent,ELYSIA_RESPONSE,ELYSIA_TRACE,ELYSIA_REQUEST_ID,getServer}=hooks

@@ -242,5 +242,5 @@ const trace=_trace.map(x=>typeof x==='function'?x:x.fn)

c.defs = definitions
`),B+=e+"}";try{return Function("hooks",B)({handler:d,hooks:(0,v.lifeCycleToFn)(r),validator:s,handleError:t.handleError,utils:{mapResponse:j.mapResponse,mapCompactResponse:j.mapCompactResponse,mapEarlyResponse:j.mapEarlyResponse,parseQuery:oe.parseQuery,parseQueryFromURL:oe.parseQueryFromURL,isNotEmpty:j.isNotEmpty},error:{NotFoundError:w.NotFoundError,ValidationError:w.ValidationError,InternalServerError:w.InternalServerError,ParseError:ae.ParseError},schema:t.router.history,definitions:t.definitions.type,ERROR_CODE:w.ERROR_CODE,parseCookie:me.parseCookie,signCookie:v.signCookie,decodeURIComponent:ue.default,ELYSIA_RESPONSE:w.ELYSIA_RESPONSE,ELYSIA_TRACE:se.ELYSIA_TRACE,ELYSIA_REQUEST_ID:v.ELYSIA_REQUEST_ID,getServer:()=>t.getServer()})}catch{const i=(0,v.lifeCycleToFn)(r);console.log("[Composer] failed to generate optimized handler"),console.log("Please report the following to Elysia maintainers privately as it may include sensitive information about your codebase:"),console.log("---"),console.log({handler:typeof d=="function"?d.toString():d,hooks:{...i,transform:i?.transform?.map?.(n=>n.toString()),resolve:i?.resolve?.map?.(n=>n.toString()),beforeHandle:i?.beforeHandle?.map?.(n=>n.toString()),afterHandle:i?.afterHandle?.map?.(n=>n.toString()),mapResponse:i?.mapResponse?.map?.(n=>n.toString()),parse:i?.parse?.map?.(n=>n.toString()),error:i?.error?.map?.(n=>n.toString()),afterResponse:i?.afterResponse?.map?.(n=>n.toString()),stop:i?.stop?.map?.(n=>n.toString())},validator:s,definitions:t.definitions.type,fnLiteral:e}),console.log("---"),process.exit(1)}},Ae=t=>{const a=t.config.handler?.standardHostname??!0;let f="",o="";const r=t.setHeaders;for(const y of Object.keys(t.singleton.decorator))f+=`,${y}: app.singleton.decorator.${y}`;const s=t.router,d=t.event.trace.length>0;let u="const route=router.find(r.method,p)";u+=s.http.root.ALL?`??router.find("ALL",p)
`),B+=e+"}";try{return Function("hooks",B)({handler:d,hooks:(0,v.lifeCycleToFn)(r),validator:s,handleError:n.handleError,utils:{mapResponse:j.mapResponse,mapCompactResponse:j.mapCompactResponse,mapEarlyResponse:j.mapEarlyResponse,parseQuery:oe.parseQuery,parseQueryFromURL:oe.parseQueryFromURL,isNotEmpty:j.isNotEmpty},error:{NotFoundError:w.NotFoundError,ValidationError:w.ValidationError,InternalServerError:w.InternalServerError,ParseError:ae.ParseError},schema:n.router.history,definitions:n.definitions.type,ERROR_CODE:w.ERROR_CODE,parseCookie:me.parseCookie,signCookie:v.signCookie,decodeURIComponent:ue.default,ELYSIA_RESPONSE:w.ELYSIA_RESPONSE,ELYSIA_TRACE:se.ELYSIA_TRACE,ELYSIA_REQUEST_ID:v.ELYSIA_REQUEST_ID,getServer:()=>n.getServer()})}catch{const i=(0,v.lifeCycleToFn)(r);console.log("[Composer] failed to generate optimized handler"),console.log("Please report the following to Elysia maintainers privately as it may include sensitive information about your codebase:"),console.log("---"),console.log({handler:typeof d=="function"?d.toString():d,hooks:{...i,transform:i?.transform?.map?.(t=>t.toString()),resolve:i?.resolve?.map?.(t=>t.toString()),beforeHandle:i?.beforeHandle?.map?.(t=>t.toString()),afterHandle:i?.afterHandle?.map?.(t=>t.toString()),mapResponse:i?.mapResponse?.map?.(t=>t.toString()),parse:i?.parse?.map?.(t=>t.toString()),error:i?.error?.map?.(t=>t.toString()),afterResponse:i?.afterResponse?.map?.(t=>t.toString()),stop:i?.stop?.map?.(t=>t.toString())},validator:s,definitions:n.definitions.type,fnLiteral:e}),console.log("---"),process.exit(1)}},ke=n=>{const a=n.config.handler?.standardHostname??!0;let f="",o="";const r=n.setHeaders;for(const y of Object.keys(n.singleton.decorator))f+=`,${y}: app.singleton.decorator.${y}`;const s=n.router,d=n.event.trace.length>0;let u="const route=router.find(r.method,p)";u+=s.http.root.ALL?`??router.find("ALL",p)
`:`
`,u+="if(route===null)return ",t.event.error.length?u+="app.handleError(c,notFound)":u+=t.event.request.length?"new Response(error404Message,{status:c.set.status===200?404:c.set.status,headers:c.set.headers})":"error404.clone()",u+=`
`,u+="if(route===null)return ",n.event.error.length?u+="app.handleError(c,notFound)":u+=n.event.request.length?"new Response(error404Message,{status:c.set.status===200?404:c.set.status,headers:c.set.headers})":"error404.clone()",u+=`
c.params=route.params

@@ -250,3 +250,3 @@ if(route.store.handler)return route.store.handler(c)

`;let m="";for(const[y,{code:b,all:V,static:I}]of Object.entries(s.static.http.map))I&&(m+=`case'${y}':switch(r.method){${b}
${V??"default:"+u}}`),m+=`case'${y}':switch(r.method){${b}${V??"default:"+u}}`;const $=t.event.request.some(g);o+=`
${V??"default:"+u}}`),m+=`case'${y}':switch(r.method){${b}${V??"default:"+u}}`;const $=n.event.request.some(g);o+=`
const {app,mapEarlyResponse,NotFoundError,randomId,handleError,error,redirect,ELYSIA_TRACE,ELYSIA_REQUEST_ID,getServer}=data

@@ -261,7 +261,7 @@ const store=app.singleton.store

const hoc=app.extender.higherOrderFunctions.map(x=>x.fn)
`,t.event.request.length&&(o+=`const onRequest=app.event.request.map(x=>x.fn)
`),t.event.error.length||(o+=`const error404Message=notFound.message.toString()
`,n.event.request.length&&(o+=`const onRequest=app.event.request.map(x=>x.fn)
`),n.event.error.length||(o+=`const error404Message=notFound.message.toString()
const error404=new Response(error404Message,{status:404})
`),t.event.trace.length&&(o+="const "+t.event.trace.map((y,b)=>`tr${b}=app.event.trace[${b}].fn`).join(",")+`
`),o+=`${$?"async ":""}function map(r){`,t.event.request.length&&(o+=`let re
`),n.event.trace.length&&(o+="const "+n.event.trace.map((y,b)=>`tr${b}=app.event.trace[${b}].fn`).join(",")+`
`),o+=`${$?"async ":""}function map(r){`,n.event.request.length&&(o+=`let re
`),o+=`const u=r.url,s=u.indexOf('/',${a?11:7}),qi=u.indexOf('?', s + 1)

@@ -272,12 +272,12 @@ let p

`,d&&(o+=`const id=randomId()
`),o+="const c={request:r,store,qi,path:p,url:u,redirect,error,set:{headers:",o+=Object.keys(r??{}).length?"Object.assign({}, app.setHeaders)":"{}",o+=",status:200}",t.inference.server&&(o+=",get server(){return getServer()}"),d&&(o+=",[ELYSIA_REQUEST_ID]:id"),o+=f,o+=`}
`,t.event.trace.length&&(o+="c[ELYSIA_TRACE]=["+t.event.trace.map((y,b)=>`tr${b}(c)`).join(",")+`]
`);const A=ie({trace:t.event.trace,addFn(y){o+=y}})("request",{total:t.event.request.length});if(t.event.request.length){o+="try{";for(let y=0;y<t.event.request.length;y++){const b=t.event.request[y],V=(0,P.hasReturn)(b),I=g(b),Y=A.resolveChild(t.event.request[y].fn.name);V?(o+=`re=mapEarlyResponse(${I?"await ":""}onRequest[${y}](c),c.set,r)
`),o+="const c={request:r,store,qi,path:p,url:u,redirect,error,set:{headers:",o+=Object.keys(r??{}).length?"Object.assign({}, app.setHeaders)":"{}",o+=",status:200}",n.inference.server&&(o+=",get server(){return getServer()}"),d&&(o+=",[ELYSIA_REQUEST_ID]:id"),o+=f,o+=`}
`,n.event.trace.length&&(o+="c[ELYSIA_TRACE]=["+n.event.trace.map((y,b)=>`tr${b}(c)`).join(",")+`]
`);const k=ie({trace:n.event.trace,addFn(y){o+=y}})("request",{total:n.event.request.length});if(n.event.request.length){o+="try{";for(let y=0;y<n.event.request.length;y++){const b=n.event.request[y],V=(0,P.hasReturn)(b),I=g(b),Y=k.resolveChild(n.event.request[y].fn.name);V?(o+=`re=mapEarlyResponse(${I?"await ":""}onRequest[${y}](c),c.set,r)
`,Y("re"),o+=`if(re!==undefined)return re
`):(o+=`${I?"await ":""}onRequest[${y}](c)
`,Y())}o+="}catch(error){return app.handleError(c,error)}"}A.resolve();const C=t.router.static.ws,e=t.router.ws;if(Object.keys(C).length||e.history.length){o+="if(r.method==='GET'){switch(p){";for(const[y,b]of Object.entries(C))o+=`case'${y}':if(r.headers.get('upgrade')==='websocket')return st[${b}](c)
`,Y())}o+="}catch(error){return app.handleError(c,error)}"}k.resolve();const C=n.router.static.ws,e=n.router.ws;if(Object.keys(C).length||e.history.length){o+="if(r.method==='GET'){switch(p){";for(const[y,b]of Object.entries(C))o+=`case'${y}':if(r.headers.get('upgrade')==='websocket')return st[${b}](c)
`;o+=`default:if(r.headers.get('upgrade')==='websocket'){const route=wsRouter.find('ws',p)
if(route){c.params=route.params
if(route.store.handler)return route.store.handler(c)
return (route.store.handler=route.store.compile())(c)}}break}}`}if(o+="switch(p){"+m+"default:break}"+u+"}",t.extender.higherOrderFunctions.length){let y="map";for(let b=0;b<t.extender.higherOrderFunctions.length;b++)y=`hoc[${b}](${y},r)`;o+=`return function hocMap(r){return ${y}(r)}`}else o+="return map";const Z=ye(t);return t.handleError=Z,Function("data",o)({app:t,mapEarlyResponse:j.mapEarlyResponse,NotFoundError:w.NotFoundError,randomId:v.randomId,handleError:Z,error:ae.error,redirect:v.redirect,ELYSIA_TRACE:se.ELYSIA_TRACE,ELYSIA_REQUEST_ID:v.ELYSIA_REQUEST_ID,getServer:()=>t.getServer()})},ye=t=>{const a=t.event;let f="";f+=`const {app:{event:{error:onErrorContainer,afterResponse:resContainer,mapResponse:_onMapResponse,trace:_trace}},mapResponse,ERROR_CODE,ELYSIA_RESPONSE,ELYSIA_TRACE,ELYSIA_REQUEST_ID}=inject
return (route.store.handler=route.store.compile())(c)}}break}}`}if(o+="switch(p){"+m+"default:break}"+u+"}",n.extender.higherOrderFunctions.length){let y="map";for(let b=0;b<n.extender.higherOrderFunctions.length;b++)y=`hoc[${b}](${y},r)`;o+=`return function hocMap(r){return ${y}(r)}`}else o+="return map";const Z=ye(n);return n.handleError=Z,Function("data",o)({app:n,mapEarlyResponse:j.mapEarlyResponse,NotFoundError:w.NotFoundError,randomId:v.randomId,handleError:Z,error:ae.error,redirect:v.redirect,ELYSIA_TRACE:se.ELYSIA_TRACE,ELYSIA_REQUEST_ID:v.ELYSIA_REQUEST_ID,getServer:()=>n.getServer()})},ye=n=>{const a=n.event;let f="";f+=`const {app:{event:{error:onErrorContainer,afterResponse:resContainer,mapResponse:_onMapResponse,trace:_trace}},mapResponse,ERROR_CODE,ELYSIA_RESPONSE,ELYSIA_TRACE,ELYSIA_REQUEST_ID}=inject
`,f+=`const trace=_trace.map(x=>typeof x==='function'?x:x.fn)

@@ -289,3 +289,3 @@ const onMapResponse=[]

const res=resContainer.map(x=>x.fn)
return ${t.event.error.find(g)||t.event.mapResponse.find(g)?"async ":""}function(context,error,skipGlobal){`;const o=t.event.trace.length>0;o&&(f+=`const id=context[ELYSIA_REQUEST_ID]
return ${n.event.error.find(g)||n.event.mapResponse.find(g)?"async ":""}function(context,error,skipGlobal){`;const o=n.event.trace.length>0;o&&(f+=`const id=context[ELYSIA_REQUEST_ID]
`);const r=ie({context:"context",trace:a.trace,addFn:u=>{f+=u}});f+=`const set = context.set

@@ -297,3 +297,3 @@ let r

error.message = error.response}
`;const s=o||a.afterResponse.length>0||a.afterResponse.length>0?"context.response = ":"";for(let u=0;u<t.event.error.length;u++){const m=t.event.error[u],$=`${g(m)?"await ":""}onError[${u}](context)
`;const s=o||a.afterResponse.length>0||a.afterResponse.length>0?"context.response = ":"";for(let u=0;u<n.event.error.length;u++){const m=n.event.error[u],$=`${g(m)?"await ":""}onError[${u}](context)
`;if(f+="if(skipGlobal!==true){",(0,P.hasReturn)(m)){f+=`r=${$}

@@ -303,3 +303,3 @@ if(r!==undefined){if(r instanceof Response)return r

error.message = error.response}if(set.status === 200) set.status = error.status
`;const h=r("mapResponse",{total:a.mapResponse.length,name:"context"});if(a.mapResponse.length)for(let A=0;A<a.mapResponse.length;A++){const C=a.mapResponse[A],e=h.resolveChild(C.fn.name);f+=`context.response=rr=${M(C)?"await ":""}onMapResponse[${A}](context)
`;const h=r("mapResponse",{total:a.mapResponse.length,name:"context"});if(a.mapResponse.length)for(let k=0;k<a.mapResponse.length;k++){const C=a.mapResponse[k],e=h.resolveChild(C.fn.name);f+=`context.response=rr=${M(C)?"await ":""}onMapResponse[${k}](context)
`,e()}h.resolve(),f+=`return mapResponse(${s}r,set,context.request)}`}else f+=$;f+="}"}f+=`if(error.constructor.name==="ValidationError"||error.constructor.name==="TransformDecodeError"){set.status = error.status??422

@@ -310,2 +310,2 @@ return new Response(error.message,{headers:Object.assign({'content-type':'application/json'},set.headers),status:set.status})}else{if(error.code&&typeof error.status==="number")return new Response(error.message,{headers:set.headers,status:error.status})

`,$()}return d.resolve(),f+=`
return mapResponse(${s}error,set,context.request)}}`,Function("inject",f)({app:t,mapResponse:j.mapResponse,ERROR_CODE:w.ERROR_CODE,ELYSIA_RESPONSE:w.ELYSIA_RESPONSE,ELYSIA_TRACE:se.ELYSIA_TRACE,ELYSIA_REQUEST_ID:v.ELYSIA_REQUEST_ID})};0&&(module.exports={composeErrorHandler,composeGeneralHandler,composeHandler,hasAdditionalProperties,hasProperty,hasTransform,hasType,isAsync,isAsyncName,isGenerator});
return mapResponse(${s}error,set,context.request)}}`,Function("inject",f)({app:n,mapResponse:j.mapResponse,ERROR_CODE:w.ERROR_CODE,ELYSIA_RESPONSE:w.ELYSIA_RESPONSE,ELYSIA_TRACE:se.ELYSIA_TRACE,ELYSIA_REQUEST_ID:v.ELYSIA_REQUEST_ID})};0&&(module.exports={composeErrorHandler,composeGeneralHandler,composeHandler,hasAdditionalProperties,hasProperty,hasTransform,hasType,isAsync,isAsyncName,isGenerator});

@@ -1,2 +0,2 @@

import type { Elysia } from '.';
import type { AnyElysia } from '.';
import { ElysiaErrors } from './error';

@@ -11,5 +11,5 @@ import type { Context } from './context';

};
export declare const createDynamicHandler: (app: Elysia<any, any, any, any, any, any, any, any>) => (request: Request) => Promise<Response>;
export declare const createDynamicErrorHandler: (app: Elysia<any, any, any, any, any, any, any, any>) => (context: Context & {
export declare const createDynamicHandler: (app: AnyElysia) => (request: Request) => Promise<Response>;
export declare const createDynamicErrorHandler: (app: AnyElysia) => (context: Context & {
response: unknown;
}, error: ElysiaErrors) => Promise<import("undici-types").Response>;

@@ -1,1 +0,1 @@

"use strict";var E=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var S=(i,o)=>{for(var c in o)E(i,c,{get:o[c],enumerable:!0})},V=(i,o,c,h)=>{if(o&&typeof o=="object"||typeof o=="function")for(let l of O(o))!P.call(i,l)&&l!==c&&E(i,l,{get:()=>o[l],enumerable:!(h=j(o,l))||h.enumerable});return i};var L=i=>V(E({},"__esModule",{value:!0}),i);var B={};S(B,{createDynamicErrorHandler:()=>A,createDynamicHandler:()=>T});module.exports=L(B);var g=require("./handler"),m=require("./error"),x=require("./fast-querystring"),b=require("./utils"),v=require("./cookies");const T=i=>async o=>{const c=o.url,h=c.indexOf("/",11),l=c.indexOf("?",h+1),C=l===-1?c.substring(h):c.substring(h,l),p={cookie:{},status:200,headers:{}},e=Object.assign({},i.singleton.decorator,{set:p,store:i.singleton.store,request:o,path:C,qi:l,redirect:b.redirect});try{for(let s=0;s<i.event.request.length;s++){const n=i.event.request[s].fn;let t=n(e);if(t instanceof Promise&&(t=await t),t=(0,g.mapEarlyResponse)(t,p),t)return e.response=t}const w=i.router.dynamic.find(o.method,C)??i.router.dynamic.find("ALL",C);if(!w)throw new m.NotFoundError;const{handle:R,hooks:k,validator:a,content:D}=w.store;let r;if(o.method!=="GET"&&o.method!=="HEAD")if(D)switch(D){case"application/json":r=await o.json();break;case"text/plain":r=await o.text();break;case"application/x-www-form-urlencoded":r=(0,x.parseQuery)(await o.text());break;case"application/octet-stream":r=await o.arrayBuffer();break;case"multipart/form-data":r={};const s=await o.formData();for(const n of s.keys()){if(r[n])continue;const t=s.getAll(n);t.length===1?r[n]=t[0]:r[n]=t}break}else{let s=o.headers.get("content-type");if(s){const n=s.indexOf(";");n!==-1&&(s=s.slice(0,n)),e.contentType=s;for(let t=0;t<k.parse.length;t++){const d=k.parse[t].fn;let y=d(e,s);if(y instanceof Promise&&(y=await y),y){r=y;break}}if(delete e.contentType,r===void 0)switch(s){case"application/json":r=await o.json();break;case"text/plain":r=await o.text();break;case"application/x-www-form-urlencoded":r=(0,x.parseQuery)(await o.text());break;case"application/octet-stream":r=await o.arrayBuffer();break;case"multipart/form-data":r={};const t=await o.formData();for(const d of t.keys()){if(r[d])continue;const y=t.getAll(d);y.length===1?r[d]=y[0]:r[d]=y}break}}}e.body=r,e.params=w?.params||void 0,e.query=l===-1?{}:(0,x.parseQueryFromURL)(c.substring(l+1)),e.headers={};for(const[s,n]of o.headers.entries())e.headers[s]=n;const f=Object.assign({},i.config?.cookie,a?.cookie?.config),H=o.headers.get("cookie");e.cookie=await(0,v.parseCookie)(e.set,H,f?{secrets:f.secrets!==void 0?typeof f.secrets=="string"?f.secrets:f.secrets.join(","):void 0,sign:f.sign===!0?!0:f.sign!==void 0?typeof f.sign=="string"?f.sign:f.sign.join(","):void 0}:void 0);for(let s=0;s<k.transform.length;s++){const n=k.transform[s],t=n.fn(e);n.subType==="derive"?t instanceof Promise?Object.assign(e,await t):Object.assign(e,t):t instanceof Promise&&await t}if(a){if(a.createHeaders?.()){const s={};for(const n in o.headers)s[n]=o.headers.get(n);if(a.headers.Check(s)===!1)throw new m.ValidationError("header",a.headers,s)}else a.headers?.Decode&&(e.headers=a.headers.Decode(e.headers));if(a.createParams?.()?.Check(e.params)===!1)throw new m.ValidationError("params",a.params,e.params);if(a.params?.Decode&&(e.params=a.params.Decode(e.params)),a.createQuery?.()?.Check(e.query)===!1)throw new m.ValidationError("query",a.query,e.query);if(a.query?.Decode&&(e.query=a.query.Decode(e.query)),a.createCookie?.()){let s={};for(const[n,t]of Object.entries(e.cookie))s[n]=t.value;if(a.cookie.Check(s)===!1)throw new m.ValidationError("cookie",a.cookie,s);a.cookie?.Decode&&(s=a.cookie.Decode(s))}if(a.createBody?.()?.Check(r)===!1)throw new m.ValidationError("body",a.body,r);a.body?.Decode&&(e.body=a.body.Decode(r))}for(let s=0;s<k.beforeHandle.length;s++){let n=k.beforeHandle[s].fn(e);if(n instanceof Promise&&(n=await n),n!==void 0){e.response=n;for(let d=0;d<k.afterHandle.length;d++){let y=k.afterHandle[d].fn(e);y instanceof Promise&&(y=await y),y&&(n=y)}const t=(0,g.mapEarlyResponse)(n,e.set);if(t)return e.response=t}}let u=R(e);if(u instanceof Promise&&(u=await u),k.afterHandle.length){e.response=u;for(let s=0;s<k.afterHandle.length;s++){let n=k.afterHandle[s].fn(e);n instanceof Promise&&(n=await n);const t=(0,g.mapEarlyResponse)(n,e.set);if(t!==void 0){const d=a?.response?.[t.status];if(d?.Check(t)===!1)throw new m.ValidationError("response",d,t);return d?.Decode&&(u=d.Decode(u)),e.response=t}}}else{const s=u?.[m.ELYSIA_RESPONSE]??(p.status?typeof p.status=="string"?b.StatusMap[p.status]:p.status:200),n=a?.createResponse?.()?.[s];if(n?.Check(u)===!1)throw new m.ValidationError("response",n,u);n?.Decode&&(u=n.Decode(u))}if(e.set.cookie&&f?.sign){const s=f.secrets?typeof f.secrets=="string"?f.secrets:f.secrets[0]:void 0;if(f.sign===!0)for(const[n,t]of Object.entries(e.set.cookie))e.set.cookie[n].value=await(0,b.signCookie)(t.value,"${secret}");else{const n=a?.cookie?.schema?.properties;for(const t of f.sign)t in n&&e.set.cookie[t]?.value&&(e.set.cookie[t].value=await(0,b.signCookie)(e.set.cookie[t].value,s))}}return e.response=(0,g.mapResponse)(u,e.set)}catch(w){return w.status&&(p.status=w.status),i.handleError(e,w)}finally{for(const w of i.event.afterResponse)await w.fn(e)}},A=i=>async(o,c)=>{const h=Object.assign(o,{error:c,code:c.code});h.set=o.set;for(let l=0;l<i.event.error.length;l++){let p=i.event.error[l].fn(h);if(p instanceof Promise&&(p=await p),p!=null)return o.response=(0,g.mapResponse)(p,o.set)}return new Response(typeof c.cause=="string"?c.cause:c.message,{headers:o.set.headers,status:c.status??500})};0&&(module.exports={createDynamicErrorHandler,createDynamicHandler});
"use strict";var E=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var A=(i,n)=>{for(var c in n)E(i,c,{get:n[c],enumerable:!0})},S=(i,n,c,h)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of O(n))!P.call(i,l)&&l!==c&&E(i,l,{get:()=>n[l],enumerable:!(h=j(n,l))||h.enumerable});return i};var V=i=>S(E({},"__esModule",{value:!0}),i);var B={};A(B,{createDynamicErrorHandler:()=>T,createDynamicHandler:()=>L});module.exports=V(B);var g=require("./handler"),m=require("./error"),x=require("./fast-querystring"),b=require("./utils"),v=require("./cookies");const L=i=>async n=>{const c=n.url,h=c.indexOf("/",11),l=c.indexOf("?",h+1),C=l===-1?c.substring(h):c.substring(h,l),y={cookie:{},status:200,headers:{}},e=Object.assign({},i.singleton.decorator,{set:y,store:i.singleton.store,request:n,path:C,qi:l,redirect:b.redirect});try{for(let s=0;s<i.event.request.length;s++){const o=i.event.request[s].fn;let t=o(e);if(t instanceof Promise&&(t=await t),t=(0,g.mapEarlyResponse)(t,y),t)return e.response=t}const w=i.router.dynamic.find(n.method,C)??i.router.dynamic.find("ALL",C);if(!w)throw new m.NotFoundError;const{handle:R,hooks:k,validator:a,content:D}=w.store;let r;if(n.method!=="GET"&&n.method!=="HEAD")if(D)switch(D){case"application/json":r=await n.json();break;case"text/plain":r=await n.text();break;case"application/x-www-form-urlencoded":r=(0,x.parseQuery)(await n.text());break;case"application/octet-stream":r=await n.arrayBuffer();break;case"multipart/form-data":r={};const s=await n.formData();for(const o of s.keys()){if(r[o])continue;const t=s.getAll(o);t.length===1?r[o]=t[0]:r[o]=t}break}else{let s=n.headers.get("content-type");if(s){const o=s.indexOf(";");o!==-1&&(s=s.slice(0,o)),e.contentType=s;for(let t=0;t<k.parse.length;t++){const d=k.parse[t].fn;let p=d(e,s);if(p instanceof Promise&&(p=await p),p){r=p;break}}if(delete e.contentType,r===void 0)switch(s){case"application/json":r=await n.json();break;case"text/plain":r=await n.text();break;case"application/x-www-form-urlencoded":r=(0,x.parseQuery)(await n.text());break;case"application/octet-stream":r=await n.arrayBuffer();break;case"multipart/form-data":r={};const t=await n.formData();for(const d of t.keys()){if(r[d])continue;const p=t.getAll(d);p.length===1?r[d]=p[0]:r[d]=p}break}}}e.body=r,e.params=w?.params||void 0,e.query=l===-1?{}:(0,x.parseQueryFromURL)(c.substring(l+1)),e.headers={};for(const[s,o]of n.headers.entries())e.headers[s]=o;const f=Object.assign({},i.config?.cookie,a?.cookie?.config),H=n.headers.get("cookie");e.cookie=await(0,v.parseCookie)(e.set,H,f?{secrets:f.secrets!==void 0?typeof f.secrets=="string"?f.secrets:f.secrets.join(","):void 0,sign:f.sign===!0?!0:f.sign!==void 0?typeof f.sign=="string"?f.sign:f.sign.join(","):void 0}:void 0);for(let s=0;s<k.transform.length;s++){const o=k.transform[s],t=o.fn(e);o.subType==="derive"?t instanceof Promise?Object.assign(e,await t):Object.assign(e,t):t instanceof Promise&&await t}if(a){if(a.createHeaders?.()){const s={};for(const o in n.headers)s[o]=n.headers.get(o);if(a.headers.Check(s)===!1)throw new m.ValidationError("header",a.headers,s)}else a.headers?.Decode&&(e.headers=a.headers.Decode(e.headers));if(a.createParams?.()?.Check(e.params)===!1)throw new m.ValidationError("params",a.params,e.params);if(a.params?.Decode&&(e.params=a.params.Decode(e.params)),a.createQuery?.()?.Check(e.query)===!1)throw new m.ValidationError("query",a.query,e.query);if(a.query?.Decode&&(e.query=a.query.Decode(e.query)),a.createCookie?.()){let s={};for(const[o,t]of Object.entries(e.cookie))s[o]=t.value;if(a.cookie.Check(s)===!1)throw new m.ValidationError("cookie",a.cookie,s);a.cookie?.Decode&&(s=a.cookie.Decode(s))}if(a.createBody?.()?.Check(r)===!1)throw new m.ValidationError("body",a.body,r);a.body?.Decode&&(e.body=a.body.Decode(r))}for(let s=0;s<k.beforeHandle.length;s++){let o=k.beforeHandle[s].fn(e);if(o instanceof Promise&&(o=await o),o!==void 0){e.response=o;for(let d=0;d<k.afterHandle.length;d++){let p=k.afterHandle[d].fn(e);p instanceof Promise&&(p=await p),p&&(o=p)}const t=(0,g.mapEarlyResponse)(o,e.set);if(t)return e.response=t}}let u=R(e);if(u instanceof Promise&&(u=await u),k.afterHandle.length){e.response=u;for(let s=0;s<k.afterHandle.length;s++){let o=k.afterHandle[s].fn(e);o instanceof Promise&&(o=await o);const t=(0,g.mapEarlyResponse)(o,e.set);if(t!==void 0){const d=a?.response?.[t.status];if(d?.Check(t)===!1)throw new m.ValidationError("response",d,t);return d?.Decode&&(u=d.Decode(u)),e.response=t}}}else{const s=u?.[m.ELYSIA_RESPONSE]??(y.status?typeof y.status=="string"?b.StatusMap[y.status]:y.status:200),o=a?.createResponse?.()?.[s];if(o?.Check(u)===!1)throw new m.ValidationError("response",o,u);o?.Decode&&(u=o.Decode(u))}if(e.set.cookie&&f?.sign){const s=f.secrets?typeof f.secrets=="string"?f.secrets:f.secrets[0]:void 0;if(f.sign===!0)for(const[o,t]of Object.entries(e.set.cookie))e.set.cookie[o].value=await(0,b.signCookie)(t.value,"${secret}");else{const o=a?.cookie?.schema?.properties;for(const t of f.sign)t in o&&e.set.cookie[t]?.value&&(e.set.cookie[t].value=await(0,b.signCookie)(e.set.cookie[t].value,s))}}return e.response=(0,g.mapResponse)(u,e.set)}catch(w){return w.status&&(y.status=w.status),i.handleError(e,w)}finally{for(const w of i.event.afterResponse)await w.fn(e)}},T=i=>async(n,c)=>{const h=Object.assign(n,{error:c,code:c.code});h.set=n.set;for(let l=0;l<i.event.error.length;l++){let y=i.event.error[l].fn(h);if(y instanceof Promise&&(y=await y),y!=null)return n.response=(0,g.mapResponse)(y,n.set)}return new Response(typeof c.cause=="string"?c.cause:c.message,{headers:n.set.headers,status:c.status??500})};0&&(module.exports={createDynamicErrorHandler,createDynamicHandler});

@@ -1,6 +0,6 @@

"use strict";var I=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var Q=(V,e)=>{for(var t in e)I(V,t,{get:e[t],enumerable:!0})},Y=(V,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of G(e))!K.call(V,r)&&r!==t&&I(V,r,{get:()=>e[r],enumerable:!(a=j(e,r))||a.enumerable});return V};var X=V=>Y(I({},"__esModule",{value:!0}),V);var Z={};Q(Z,{Cookie:()=>J.Cookie,ELYSIA_FORM_DATA:()=>m.ELYSIA_FORM_DATA,ELYSIA_REQUEST_ID:()=>m.ELYSIA_REQUEST_ID,ELYSIA_RESPONSE:()=>p.ELYSIA_RESPONSE,ELYSIA_TRACE:()=>O.ELYSIA_TRACE,ERROR_CODE:()=>p.ERROR_CODE,Elysia:()=>g,InternalServerError:()=>p.InternalServerError,InvalidCookieSignature:()=>p.InvalidCookieSignature,InvertedStatusMap:()=>m.InvertedStatusMap,NotFoundError:()=>p.NotFoundError,ParseError:()=>p.ParseError,StatusMap:()=>m.StatusMap,TypeSystemPolicy:()=>z.TypeSystemPolicy,ValidationError:()=>p.ValidationError,checksum:()=>m.checksum,cloneInference:()=>m.cloneInference,deduplicateChecksum:()=>m.deduplicateChecksum,default:()=>g,error:()=>p.error,form:()=>m.form,getResponseSchemaValidator:()=>m.getResponseSchemaValidator,getSchemaValidator:()=>m.getSchemaValidator,mapCompactResponse:()=>D.mapCompactResponse,mapEarlyResponse:()=>D.mapEarlyResponse,mapResponse:()=>D.mapResponse,mapValueError:()=>p.mapValueError,mergeHook:()=>m.mergeHook,mergeObjectArray:()=>m.mergeObjectArray,redirect:()=>m.redirect,replaceSchemaType:()=>m.replaceSchemaType,replaceUrlPath:()=>m.replaceUrlPath,t:()=>$.t});module.exports=X(Z);var F=require("memoirist"),q=require("./sucrose"),R=require("./ws/index"),C=require("./handler"),l=require("./utils"),T=require("./compose"),W=require("./trace"),i=require("./utils"),B=require("./dynamic-handle"),x=require("./error"),D=require("./handler"),$=require("./type-system"),J=require("./cookies"),O=require("./trace"),m=require("./utils"),p=require("./error"),z=require("@sinclair/typebox/system");class g{constructor(e={}){this.server=null;this.dependencies={};this._routes={};this._types={Prefix:"",Scoped:!1,Singleton:{},Definitions:{},Metadata:{}};this._ephemeral={};this._volatile={};this.singleton={decorator:{},store:{},derive:{},resolve:{}};this.definitions={type:{},error:{}};this.extender={macros:[],higherOrderFunctions:[]};this.validator={global:null,scoped:null,local:null,getCandidate(){return(0,l.mergeSchemaValidator)((0,l.mergeSchemaValidator)(this.global,this.scoped),this.local)}};this.event={start:[],request:[],parse:[],transform:[],beforeHandle:[],afterHandle:[],mapResponse:[],afterResponse:[],trace:[],error:[],stop:[]};this.telemetry={stack:void 0};this.router={http:new F.Memoirist,ws:new F.Memoirist,dynamic:new F.Memoirist,static:{http:{static:{},handlers:[],map:{},all:""},ws:{}},history:[]};this.routeTree=new Map;this.inference={body:!1,cookie:!1,headers:!1,query:!1,set:!1,server:!1};this.handle=async e=>this.fetch(e);this.fetch=e=>(this.fetch=this.config.aot?(0,T.composeGeneralHandler)(this):(0,B.createDynamicHandler)(this))(e);this.handleError=async(e,t)=>(this.handleError=this.config.aot?(0,T.composeErrorHandler)(this):(0,B.createDynamicErrorHandler)(this))(e,t);this.outerErrorHandler=e=>new Response(e.message||e.name||"Error",{status:e?.status??500});this.listen=(e,t)=>{if(typeof Bun>"u")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 e=="string"){if(!(0,i.isNumericString)(e))throw new Error("Port must be a numeric value");e=parseInt(e)}const a=this.fetch,r=typeof e=="object"?{development:!x.isProduction,reusePort:!0,...this.config.serve||{},...e||{},static:this.router.static.http.static,websocket:{...this.config.websocket||{},...R.websocket||{}},fetch:a,error:this.outerErrorHandler}:{development:!x.isProduction,reusePort:!0,...this.config.serve||{},static:this.router.static.http.static,websocket:{...this.config.websocket||{},...R.websocket||{}},port:e,fetch:a,error:this.outerErrorHandler};this.server=Bun?.serve(r);for(let o=0;o<this.event.start.length;o++)this.event.start[o].fn(this);return t&&t(this.server),process.on("beforeExit",()=>{if(this.server){this.server.stop(),this.server=null;for(let o=0;o<this.event.stop.length;o++)this.event.stop[o].fn(this)}}),this.promisedModules.then(()=>{Bun?.gc(!1)}),this};this.stop=async e=>{if(!this.server)throw new Error("Elysia isn't running. Call `app.listen` to start the server.");if(this.server&&(this.server.stop(e),this.server=null,this.event.stop.length))for(let t=0;t<this.event.stop.length;t++)this.event.stop[t].fn(this)};e.tags&&(e.detail?e.detail.tags=e.tags:e.detail={tags:e.tags}),e.nativeStaticResponse===void 0&&(e.nativeStaticResponse=!0),this.config={},this.applyConfig(e??{}),e?.analytic&&(e?.name||e?.seed!==void 0)&&(this.telemetry.stack=new Error().stack)}get store(){return this.singleton.store}get decorator(){return this.singleton.decorator}get _scoped(){return this.config.scoped}get routes(){return this.router.history}getGlobalRoutes(){return this.router.history}getServer(){return this.server}get promisedModules(){return this._promisedModules||(this._promisedModules=new l.PromiseGroup),this._promisedModules}env(e,t=Bun?.env??process.env){if((0,i.getSchemaValidator)(e,{dynamic:!0,additionalProperties:!0,coerce:!0}).Check(t)===!1){const r=new x.ValidationError("env",e,t);throw new Error(r.all.map(o=>o.summary).join(`
`))}return this}wrap(e){return this.extender.higherOrderFunctions.push({checksum:(0,i.checksum)(JSON.stringify({name:this.config.name,seed:this.config.seed,content:e.toString()})),fn:e}),this}applyMacro(e){if(this.extender.macros.length){const t=(0,i.createMacroManager)({globalHook:this.event,localHook:e}),a={events:{global:this.event,local:e},onParse:t("parse"),onTransform:t("transform"),onBeforeHandle:t("beforeHandle"),onAfterHandle:t("afterHandle"),mapResponse:t("mapResponse"),onAfterResponse:t("afterResponse"),onError:t("error")};for(const r of this.extender.macros)(0,i.traceBackMacro)(r.fn(a),e)}}applyConfig(e){return this.config={prefix:"",aot:!0,strictPath:!1,global:!1,analytic:!1,normalize:!0,...e,cookie:{path:"/",...e?.cookie},experimental:e?.experimental??{},seed:e?.seed===void 0?"":e?.seed},this}get models(){const e={};for(const[t,a]of Object.entries(this.definitions.type))e[t]=(0,i.getSchemaValidator)(a);return e}add(e,t,a,r,{allowMeta:o=!1,skipPrefix:s=!1}={allowMeta:!1,skipPrefix:!1}){if(r=(0,l.localHookToLifeCycleStore)(r),t!==""&&t.charCodeAt(0)!==47&&(t="/"+t),this.config.prefix&&!s&&!this.config.scoped&&(t=this.config.prefix+t),r?.type)switch(r.type){case"text":r.type="text/plain";break;case"json":r.type="application/json";break;case"formdata":r.type="multipart/form-data";break;case"urlencoded":r.type="application/x-www-form-urlencoded";break;case"arrayBuffer":r.type="application/octet-stream";break;default:break}const n=this.definitions.type,c=!this.config.aot,h={...this.validator.getCandidate()},d={body:r?.body??h?.body,headers:r?.headers??h?.headers,params:r?.params??h?.params,query:r?.query??h?.query,cookie:r?.cookie??h?.cookie,response:r?.response??h?.response},f=()=>d.cookie?(0,i.getCookieValidator)({validator:d.cookie,defaultConfig:this.config.cookie,config:d.cookie?.config??{},dynamic:c,models:n}):void 0,u=this.config.normalize,H=this.config.precompile===!0||typeof this.config.precompile=="object"&&this.config.precompile.schema===!0?{body:(0,i.getSchemaValidator)(d.body,{dynamic:c,models:n,normalize:u}),headers:(0,i.getSchemaValidator)(d.headers,{dynamic:c,models:n,additionalProperties:!this.config.normalize,coerce:!0,additionalCoerce:(0,l.stringToStructureCoercions)()}),params:(0,i.getSchemaValidator)(d.params,{dynamic:c,models:n,coerce:!0,additionalCoerce:(0,l.stringToStructureCoercions)()}),query:(0,i.getSchemaValidator)(d.query,{dynamic:c,models:n,normalize:u,coerce:!0,additionalCoerce:(0,l.stringToStructureCoercions)()}),cookie:f(),response:(0,i.getResponseSchemaValidator)(d.response,{dynamic:c,models:n,normalize:u})}:{createBody(){return this.body?this.body:this.body=(0,i.getSchemaValidator)(d.body,{dynamic:c,models:n,normalize:u})},createHeaders(){return this.headers?this.headers:this.headers=(0,i.getSchemaValidator)(d.headers,{dynamic:c,models:n,additionalProperties:!u,coerce:!0,additionalCoerce:(0,l.stringToStructureCoercions)()})},createParams(){return this.params?this.params:this.params=(0,i.getSchemaValidator)(d.params,{dynamic:c,models:n,coerce:!0,additionalCoerce:(0,l.stringToStructureCoercions)()})},createQuery(){return this.query?this.query:this.query=(0,i.getSchemaValidator)(d.query,{dynamic:c,models:n,coerce:!0,additionalCoerce:(0,l.stringToStructureCoercions)()})},createCookie(){return this.cookie?this.cookie:this.cookie=f()},createResponse(){return this.response?this.response:this.response=(0,i.getResponseSchemaValidator)(d.response,{dynamic:c,models:n,normalize:u})}},M=t.endsWith("/")?t.slice(0,t.length-1):t+"/";r=(0,i.mergeHook)(r,h),r.tags&&(r.detail?r.detail.tags=r.tags:r.detail={tags:r.tags}),(0,C.isNotEmpty)(this.config.detail)&&(r.detail=(0,l.mergeDeep)(Object.assign({},this.config.detail),r.detail)),this.applyMacro(r);const v=(0,i.mergeHook)(this.event,r);if(this.config.aot===!1){this.router.dynamic.add(e,t,{validator:H,hooks:v,content:r?.type,handle:a}),this.config.strictPath===!1&&this.router.dynamic.add(e,M,{validator:H,hooks:v,content:r?.type,handle:a}),this.router.history.push({method:e,path:t,composed:null,handler:a,hooks:v});return}const w=this.config.precompile===!0||typeof this.config.precompile=="object"&&this.config.precompile.compose===!0,b=(0,l.cloneInference)(this.inference),A=typeof a!="function"?(0,C.createStaticHandler)(a,v,this.setHeaders):void 0,k=typeof a!="function"?(0,C.createNativeStaticHandler)(a,v,this.setHeaders):void 0;this.config.nativeStaticResponse===!0&&k&&(e==="GET"||e==="ALL")&&(this.router.static.http.static[t]=k());const L=()=>(0,T.composeHandler)({app:this,path:t,method:e,localHook:(0,i.mergeHook)(r),hooks:v,validator:H,handler:a,allowMeta:o,inference:b}),_=w?L():y=>L()(y),U=this.router.history.length;if(this.routeTree.has(e+t))for(let y=0;y<this.router.history.length;y++){const E=this.router.history[y];if(E.path===t&&E.method===e){const P=this.router.history.splice(y,1)[0];P&&this.routeTree.has(P?.method+P?.path)&&this.routeTree.delete(P.method+P.path)}}else this.routeTree.set(e+t,U);this.router.history.push({method:e,path:t,composed:_,handler:a,hooks:v});const S=this.router.static.http,N={handler:w?_:void 0,compile:L};if(e==="$INTERNALWS"){const y=this.config.strictPath?void 0:t.endsWith("/")?t.slice(0,t.length-1):t+"/";if(t.indexOf(":")===-1&&t.indexOf("*")===-1){const E=S.handlers.length;S.handlers.push(P=>(S.handlers[E]=L())(P)),this.router.static.ws[t]=E,y&&(this.router.static.ws[y]=E)}else this.router.ws.add("ws",t,N),y&&this.router.ws.add("ws",y,N);return}if(t.indexOf(":")===-1&&t.indexOf("*")===-1){const y=S.handlers.length;S.handlers.push(A??(P=>(S.handlers[y]=L())(P))),S.map[t]||(S.map[t]={code:""});const E=A?"":"c";e==="ALL"?S.map[t].all=`default: return st[${y}](${E})
`:S.map[t].code=`case '${e}': return st[${y}](${E})
${S.map[t].code}`,this.config.strictPath||(S.map[M]||(S.map[M]={code:""}),this.config.nativeStaticResponse===!0&&k&&(e==="GET"||e==="ALL")&&(this.router.static.http.static[M]=k()),e==="ALL"?S.map[M].all=`default: return st[${y}](${E})
`:S.map[M].code=`case '${e}': return st[${y}](${E})
${S.map[M].code}`)}else if(this.router.http.add(e,t,N),!this.config.strictPath){const y=t.endsWith("/")?t.slice(0,t.length-1):t+"/";this.config.nativeStaticResponse===!0&&A&&(e==="GET"||e==="ALL")&&(this.router.static.http.static[y]=A()),this.router.http.add(e,y,N)}}headers(e){return e?(this.setHeaders||(this.setHeaders={}),this.setHeaders=(0,l.mergeDeep)(this.setHeaders,e),this):this}onStart(e){return this.on("start",e),this}onRequest(e){return this.on("request",e),this}onParse(e,t){return t?this.on(e,"parse",t):this.on("parse",e)}onTransform(e,t){return t?this.on(e,"transform",t):this.on("transform",e)}resolve(e,t){t||(t=e,e={as:"local"});const a={subType:"resolve",fn:t};return this.onBeforeHandle(e,a)}mapResolve(e,t){t||(t=e,e={as:"local"});const a={subType:"mapResolve",fn:t};return this.onBeforeHandle(e,a)}onBeforeHandle(e,t){return t?this.on(e,"beforeHandle",t):this.on("beforeHandle",e)}onAfterHandle(e,t){return t?this.on(e,"afterHandle",t):this.on("afterHandle",e)}mapResponse(e,t){return t?this.on(e,"mapResponse",t):this.on("mapResponse",e)}onAfterResponse(e,t){return t?this.on(e,"afterResponse",t):this.on("afterResponse",e)}trace(e,t){t||(t=e,e={as:"local"}),Array.isArray(t)||(t=[t]);for(const a of t)this.on(e,"trace",(0,W.createTracer)(a));return this}error(e,t){switch(typeof e){case"string":return t.prototype[x.ERROR_CODE]=e,this.definitions.error[e]=t,this;case"function":return this.definitions.error=e(this.definitions.error),this}for(const[a,r]of Object.entries(e))r.prototype[x.ERROR_CODE]=a,this.definitions.error[a]=r;return this}onError(e,t){return t?this.on(e,"error",t):this.on("error",e)}onStop(e){return this.on("stop",e),this}on(e,t,a){let r;switch(typeof e){case"string":r=e,a=t;break;case"object":r=t,!Array.isArray(t)&&typeof t=="object"&&(a=t);break}Array.isArray(a)?a=(0,l.fnToContainer)(a):typeof a=="function"?a=[{fn:a}]:a=[a];const o=a;for(const s of o)s.scope=typeof e=="string"?"local":e?.as??"local";r!=="trace"&&(0,q.sucrose)({[r]:o.map(s=>s.fn)},this.inference);for(const s of o){const n=(0,i.asHookType)(s,"global",{skipIfHasType:!0});switch(r){case"start":this.event.start.push(n);break;case"request":this.event.request.push(n);break;case"parse":this.event.parse.push(n);break;case"transform":this.event.transform.push(n);break;case"beforeHandle":this.event.beforeHandle.push(n);break;case"afterHandle":this.event.afterHandle.push(n);break;case"mapResponse":this.event.mapResponse.push(n);break;case"afterResponse":this.event.afterResponse.push(n);break;case"trace":this.event.trace.push(n);break;case"error":this.event.error.push(n);break;case"stop":this.event.stop.push(n);break}}return this}propagate(){return(0,l.promoteEvent)(this.event.parse),(0,l.promoteEvent)(this.event.transform),(0,l.promoteEvent)(this.event.beforeHandle),(0,l.promoteEvent)(this.event.afterHandle),(0,l.promoteEvent)(this.event.mapResponse),(0,l.promoteEvent)(this.event.afterResponse),(0,l.promoteEvent)(this.event.trace),(0,l.promoteEvent)(this.event.error),this}as(e){const t={plugin:"scoped",global:"global"}[e];return(0,l.promoteEvent)(this.event.parse,t),(0,l.promoteEvent)(this.event.transform,t),(0,l.promoteEvent)(this.event.beforeHandle,t),(0,l.promoteEvent)(this.event.afterHandle,t),(0,l.promoteEvent)(this.event.mapResponse,t),(0,l.promoteEvent)(this.event.afterResponse,t),(0,l.promoteEvent)(this.event.trace,t),(0,l.promoteEvent)(this.event.error,t),e==="plugin"?(this.validator.scoped=(0,l.mergeSchemaValidator)(this.validator.scoped,this.validator.local),this.validator.local=null):e==="global"&&(this.validator.global=(0,l.mergeSchemaValidator)(this.validator.global,(0,l.mergeSchemaValidator)(this.validator.scoped,this.validator.local)),this.validator.scoped=null,this.validator.local=null),this}group(e,t,a){const r=new g({...this.config,prefix:""});r.singleton={...this.singleton},r.definitions={...this.definitions},r.getServer=()=>this.getServer(),r.inference=(0,l.cloneInference)(this.inference),r.extender={...this.extender};const o=typeof t=="object",s=(o?a:t)(r);return this.singleton=(0,l.mergeDeep)(this.singleton,r.singleton),this.definitions=(0,l.mergeDeep)(this.definitions,r.definitions),s.event.request.length&&(this.event.request=[...this.event.request||[],...s.event.request||[]]),s.event.mapResponse.length&&(this.event.mapResponse=[...this.event.mapResponse||[],...s.event.mapResponse||[]]),this.model(s.definitions.type),Object.values(r.router.history).forEach(({method:n,path:c,handler:h,hooks:d})=>{if(c=(o?"":this.config.prefix)+e+c,o){const f=t,u=d;this.add(n,c,h,(0,i.mergeHook)(f,{...u||{},error:u.error?Array.isArray(u.error)?[...u.error||{},...s.event.error||{}]:[u.error,...s.event.error||{}]:s.event.error}))}else this.add(n,c,h,(0,i.mergeHook)(d,{error:s.event.error}),{skipPrefix:!0})}),this}guard(e,t){if(!t){if(typeof e=="object"){this.applyMacro(e);const o=e.as??"local";return this.validator[o]={body:e.body??this.validator[o]?.body,headers:e.headers??this.validator[o]?.headers,params:e.params??this.validator[o]?.params,query:e.query??this.validator[o]?.query,response:e.response??this.validator[o]?.response,cookie:e.cookie??this.validator[o]?.cookie},e.parse&&this.on({as:o},"parse",e.parse),e.transform&&this.on({as:o},"transform",e.transform),e.beforeHandle&&this.on({as:o},"beforeHandle",e.beforeHandle),e.afterHandle&&this.on({as:o},"afterHandle",e.afterHandle),e.mapResponse&&this.on({as:o},"mapResponse",e.mapResponse),e.afterResponse&&this.on({as:o},"afterResponse",e.afterResponse),e.error&&this.on({as:o},"error",e.error),e.detail&&(this.config.detail?this.config.detail=(0,l.mergeDeep)(Object.assign({},this.config.detail),e.detail):this.config.detail=e.detail),e?.tags&&(this.config.detail?this.config.detail.tags=e.tags:this.config.detail={tags:e.tags}),this}return this.guard({},e)}const a=new g({...this.config,prefix:""});a.singleton={...this.singleton},a.definitions={...this.definitions},a.inference=(0,l.cloneInference)(this.inference),a.extender={...this.extender};const r=t(a);return this.singleton=(0,l.mergeDeep)(this.singleton,a.singleton),this.definitions=(0,l.mergeDeep)(this.definitions,a.definitions),r.getServer=()=>this.server,r.event.request.length&&(this.event.request=[...this.event.request||[],...r.event.request||[]]),r.event.mapResponse.length&&(this.event.mapResponse=[...this.event.mapResponse||[],...r.event.mapResponse||[]]),this.model(r.definitions.type),Object.values(a.router.history).forEach(({method:o,path:s,handler:n,hooks:c})=>{this.add(o,s,n,(0,i.mergeHook)(e,{...c||{},error:c.error?Array.isArray(c.error)?[...c.error||{},...r.event.error||[]]:[c.error,...r.event.error||[]]:r.event.error}))}),this}use(e,t){if(t?.scoped)return this.guard({},a=>a.use(e));if(Array.isArray(e)){let a=this;for(const r of e)a=this.use(r);return a}return e instanceof Promise?(this.promisedModules.add(e.then(a=>{if(typeof a=="function")return a(this);if(a instanceof g)return this._use(a).compile();if(typeof a.default=="function")return a.default(this);if(a.default instanceof g)return this._use(a.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(a=>a.compile())),this):this._use(e)}_use(e){if(typeof e=="function"){const o=e(this);return o instanceof Promise?(this.promisedModules.add(o.then(s=>{if(s instanceof g){s.getServer=()=>this.getServer(),s.getGlobalRoutes=()=>this.getGlobalRoutes(),s.model(this.definitions.type),s.error(this.definitions.error);for(const{method:n,path:c,handler:h,hooks:d}of Object.values(s.router.history))this.add(n,c,h,(0,i.mergeHook)(d,{error:s.event.error}));return s.compile(),s}return typeof s=="function"?s(this):typeof s.default=="function"?s.default(this):this._use(s)}).then(s=>s.compile())),this):o}const{name:t,seed:a}=e.config;e.getServer=()=>this.getServer(),e.getGlobalRoutes=()=>this.getGlobalRoutes(),e.model(this.definitions.type),e.error(this.definitions.error);const r=e.config.scoped;if(r){if(t){t in this.dependencies||(this.dependencies[t]=[]);const s=a!==void 0?(0,i.checksum)(t+JSON.stringify(a)):0;if(this.dependencies[t].some(({checksum:n})=>s===n))return this;this.dependencies[t].push(this.config?.analytic?{name:e.config.name,seed:e.config.seed,checksum:s,dependencies:e.dependencies,stack:e.telemetry.stack,routes:e.router.history,decorators:e.singleton.decorator,store:e.singleton.store,type:e.definitions.type,error:e.definitions.error,derive:e.event.transform.filter(n=>n.subType==="derive").map(n=>({fn:n.fn.toString(),stack:new Error().stack??""})),resolve:e.event.transform.filter(n=>n.subType==="derive").map(n=>({fn:n.fn.toString(),stack:new Error().stack??""}))}:{name:e.config.name,seed:e.config.seed,checksum:s,dependencies:e.dependencies})}e.extender.macros=this.extender.macros.concat(e.extender.macros);const o=[];for(let s=0;s<e.extender.macros.length;s++){const n=this.extender.macros[s];o.includes(n.checksum)&&(e.extender.macros.splice(s,1),s--),o.push(n.checksum)}if(e.onRequest(s=>{Object.assign(s,this.singleton.decorator),Object.assign(s.store,this.singleton.store)}),e.event.trace.length&&e.event.trace.push(...e.event.trace),e.config.prefix||console.warn("It's recommended to use scoped instance with a prefix to prevent collision routing with other instance."),e.event.error.length&&e.event.error.push(...this.event.error),e.config.aot&&e.compile(),r===!0&&e.config.prefix){this.mount(e.config.prefix+"/",e.fetch);for(const s of e.router.history)this.routeTree.set(s.method+`${e.config.prefix}${s.path}`,this.router.history.length),this.router.history.push({...s,path:`${e.config.prefix}${s.path}`,hooks:(0,i.mergeHook)(s.hooks,{error:this.event.error})})}else{this.mount(e.fetch);for(const s of e.router.history)this.routeTree.set(s.method+`${e.config.prefix}${s.path}`,this.router.history.length),this.router.history.push({...s,path:`${e.config.prefix}${s.path}`,hooks:(0,i.mergeHook)(s.hooks,{error:this.event.error})})}return this}else{if(this.headers(e.setHeaders),t){t in this.dependencies||(this.dependencies[t]=[]);const s=a!==void 0?(0,i.checksum)(t+JSON.stringify(a)):0;this.dependencies[t].some(({checksum:n})=>s===n)||(this.extender.macros=this.extender.macros.concat(e.extender.macros),this.extender.higherOrderFunctions=this.extender.higherOrderFunctions.concat(e.extender.higherOrderFunctions))}else this.extender.macros=this.extender.macros.concat(e.extender.macros),this.extender.higherOrderFunctions=this.extender.higherOrderFunctions.concat(e.extender.higherOrderFunctions);(0,l.deduplicateChecksum)(this.extender.macros),(0,l.deduplicateChecksum)(this.extender.higherOrderFunctions);const o=[];for(let s=0;s<this.extender.higherOrderFunctions.length;s++){const n=this.extender.higherOrderFunctions[s];n.checksum&&(o.includes(n.checksum)&&(this.extender.higherOrderFunctions.splice(s,1),s--),o.push(n.checksum))}this.inference={body:this.inference.body||e.inference.body,cookie:this.inference.cookie||e.inference.cookie,headers:this.inference.headers||e.inference.headers,query:this.inference.query||e.inference.query,set:this.inference.set||e.inference.set,server:this.inference.server||e.inference.server}}this.decorate(e.singleton.decorator),this.state(e.singleton.store),this.model(e.definitions.type),this.error(e.definitions.error),e.extender.macros=this.extender.macros.concat(e.extender.macros);for(const{method:o,path:s,handler:n,hooks:c}of Object.values(e.router.history))this.add(o,s,n,(0,i.mergeHook)(c,{error:e.event.error}));if(!r)if(t){t in this.dependencies||(this.dependencies[t]=[]);const o=a!==void 0?(0,i.checksum)(t+JSON.stringify(a)):0;if(this.dependencies[t].some(({checksum:s})=>o===s))return this;this.dependencies[t].push(this.config?.analytic?{name:e.config.name,seed:e.config.seed,checksum:o,dependencies:e.dependencies,stack:e.telemetry.stack,routes:e.router.history,decorators:e.singleton,store:e.singleton.store,type:e.definitions.type,error:e.definitions.error,derive:e.event.transform.filter(s=>s?.subType==="derive").map(s=>({fn:s.toString(),stack:new Error().stack??""})),resolve:e.event.transform.filter(s=>s?.subType==="resolve").map(s=>({fn:s.toString(),stack:new Error().stack??""}))}:{name:e.config.name,seed:e.config.seed,checksum:o,dependencies:e.dependencies}),this.event=(0,i.mergeLifeCycle)(this.event,(0,i.filterGlobalHook)(e.event),o)}else this.event=(0,i.mergeLifeCycle)(this.event,(0,i.filterGlobalHook)(e.event));return this.validator.global=(0,i.mergeHook)(this.validator.global,{...e.validator.global}),this.validator.local=(0,i.mergeHook)(this.validator.local,{...e.validator.scoped}),this}macro(e){const t={checksum:(0,i.checksum)(JSON.stringify({name:this.config.name,seed:this.config.seed,content:e.toString()})),fn:e};return this.extender.macros.push(t),this}mount(e,t){if(e instanceof g||typeof e=="function"||e.length===0||e==="/"){const o=typeof e=="function"?e:e instanceof g?e.compile().fetch:t instanceof g?t.compile().fetch:t,s=async({request:n,path:c})=>n.method==="GET"||n.method==="HEAD"||!n.headers.get("content-type")?o(new Request((0,i.replaceUrlPath)(n.url,c||"/"),n)):o(new Request((0,i.replaceUrlPath)(n.url,c||"/"),{...n,body:await n.arrayBuffer()}));return this.all("/*",s,{type:"none"}),this}const a=e.length;t instanceof g&&(t=t.compile().fetch);const r=async({request:o,path:s})=>o.method==="GET"||o.method==="HEAD"||!o.headers.get("content-type")?t(new Request((0,i.replaceUrlPath)(o.url,s.slice(a)||"/"),o)):t(new Request((0,i.replaceUrlPath)(o.url,s.slice(a)||"/"),{...o,body:await o.arrayBuffer()}));return this.all(e,r,{type:"none"}),this.all(e+(e.endsWith("/")?"*":"/*"),r,{type:"none"}),this}get(e,t,a){return this.add("GET",e,t,a),this}post(e,t,a){return this.add("POST",e,t,a),this}put(e,t,a){return this.add("PUT",e,t,a),this}patch(e,t,a){return this.add("PATCH",e,t,a),this}delete(e,t,a){return this.add("DELETE",e,t,a),this}options(e,t,a){return this.add("OPTIONS",e,t,a),this}all(e,t,a){return this.add("ALL",e,t,a),this}head(e,t,a){return this.add("HEAD",e,t,a),this}connect(e,t,a){return this.add("CONNECT",e,t,a),this}route(e,t,a,r){return this.add(e.toUpperCase(),t,a,r,r?.config),this}ws(e,t){const a=t.transformMessage?Array.isArray(t.transformMessage)?t.transformMessage:[t.transformMessage]:void 0;let r=null;const o=(0,i.getSchemaValidator)(t?.body,{models:this.definitions.type,normalize:this.config.normalize}),s=(0,i.getSchemaValidator)(t?.response,{models:this.definitions.type,normalize:this.config.normalize}),n=c=>{if(typeof c=="string"){const h=c?.charCodeAt(0);if(h===47||h===123)try{c=JSON.parse(c)}catch{}else(0,i.isNumericString)(c)&&(c=+c)}if(a?.length)for(let h=0;h<a.length;h++){const d=a[h](c);d!==void 0&&(c=d)}return c};return this.route("$INTERNALWS",e,c=>{const{set:h,path:d,qi:f,headers:u,query:H,params:M}=c;if(r===null&&(r=this.getServer()),!r?.upgrade(c.request,{headers:typeof t.upgrade=="function"?t.upgrade(c):t.upgrade,data:{validator:s,open(v){t.open?.(new R.ElysiaWS(v,c))},message:(v,w)=>{const b=n(w);if(o?.Check(b)===!1)return void v.send(new x.ValidationError("message",o,b).message);t.message?.(new R.ElysiaWS(v,c),b)},drain(v){t.drain?.(new R.ElysiaWS(v,c))},close(v,w,b){t.close?.(new R.ElysiaWS(v,c),w,b)}}}))return h.status=400,"Expected a websocket connection"},{beforeHandle:t.beforeHandle,transform:t.transform,headers:t.headers,params:t.params,query:t.query}),this}state(e,t,a){t===void 0?(a=e,e={as:"append"},t=""):a===void 0&&(typeof e=="string"?(a=t,t=e,e={as:"append"}):typeof e=="object"&&(a=t,t=""));const{as:r}=e;if(typeof t!="string")return this;switch(typeof a){case"object":return t?(t in this.singleton.store?this.singleton.store[t]=(0,l.mergeDeep)(this.singleton.store[t],a,{override:r==="override"}):this.singleton.store[t]=a,this):a===null?this:(this.singleton.store=(0,l.mergeDeep)(this.singleton.store,a,{override:r==="override"}),this);case"function":return t?(r==="override"||!(t in this.singleton.store))&&(this.singleton.store[t]=a):this.singleton.store=a(this.singleton.store),this;default:return(r==="override"||!(t in this.singleton.store))&&(this.singleton.store[t]=a),this}}decorate(e,t,a){t===void 0?(a=e,e={as:"append"},t=""):a===void 0&&(typeof e=="string"?(a=t,t=e,e={as:"append"}):typeof e=="object"&&(a=t,t=""));const{as:r}=e;if(typeof t!="string")return this;switch(typeof a){case"object":return t?(t in this.singleton.decorator?this.singleton.decorator[t]=(0,l.mergeDeep)(this.singleton.decorator[t],a,{override:r==="override"}):this.singleton.decorator[t]=a,this):a===null?this:(this.singleton.decorator=(0,l.mergeDeep)(this.singleton.decorator,a,{override:r==="override"}),this);case"function":return t?(r==="override"||!(t in this.singleton.decorator))&&(this.singleton.decorator[t]=a):this.singleton.decorator=a(this.singleton.decorator),this;default:return(r==="override"||!(t in this.singleton.decorator))&&(this.singleton.decorator[t]=a),this}}derive(e,t){t||(t=e,e={as:"local"});const a={subType:"derive",fn:t};return this.onTransform(e,a)}model(e,t){switch(typeof e){case"object":return Object.entries(e).forEach(([a,r])=>{a in this.definitions.type||(this.definitions.type[a]=r)}),this;case"function":return this.definitions.type=e(this.definitions.type),this}return this.definitions.type[e]=t,this}mapDerive(e,t){t||(t=e,e={as:"local"});const a={subType:"mapDerive",fn:t};return this.onTransform(e,a)}affix(e,t,a){if(a==="")return this;const r=["_","-"," "],o=h=>h[0].toUpperCase()+h.slice(1),s=e==="prefix"?(h,d)=>r.includes(h.at(-1)??"")?h+d:h+o(d):r.includes(a.at(-1)??"")?(h,d)=>d+h:(h,d)=>d+o(h),n=h=>{const d={};switch(h){case"decorator":for(const f in this.singleton.decorator)d[s(a,f)]=this.singleton.decorator[f];this.singleton.decorator=d;break;case"state":for(const f in this.singleton.store)d[s(a,f)]=this.singleton.store[f];this.singleton.store=d;break;case"model":for(const f in this.definitions.type)d[s(a,f)]=this.definitions.type[f];this.definitions.type=d;break;case"error":for(const f in this.definitions.error)d[s(a,f)]=this.definitions.error[f];this.definitions.error=d;break}},c=Array.isArray(t)?t:[t];for(const h of c.some(d=>d==="all")?["decorator","state","model","error"]:c)n(h);return this}prefix(e,t){return this.affix("prefix",e,t)}suffix(e,t){return this.affix("suffix",e,t)}compile(){return this.fetch=this.config.aot?(0,T.composeGeneralHandler)(this):(0,B.createDynamicHandler)(this),typeof this.server?.reload=="function"&&this.server.reload({...this.server||{},fetch:this.fetch}),this}get modules(){return Promise.all(this.promisedModules.promises)}}0&&(module.exports={Cookie,ELYSIA_FORM_DATA,ELYSIA_REQUEST_ID,ELYSIA_RESPONSE,ELYSIA_TRACE,ERROR_CODE,Elysia,InternalServerError,InvalidCookieSignature,InvertedStatusMap,NotFoundError,ParseError,StatusMap,TypeSystemPolicy,ValidationError,checksum,cloneInference,deduplicateChecksum,error,form,getResponseSchemaValidator,getSchemaValidator,mapCompactResponse,mapEarlyResponse,mapResponse,mapValueError,mergeHook,mergeObjectArray,redirect,replaceSchemaType,replaceUrlPath,t});
"use strict";var I=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var Q=(V,e)=>{for(var t in e)I(V,t,{get:e[t],enumerable:!0})},Y=(V,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of G(e))!K.call(V,r)&&r!==t&&I(V,r,{get:()=>e[r],enumerable:!(a=j(e,r))||a.enumerable});return V};var X=V=>Y(I({},"__esModule",{value:!0}),V);var Z={};Q(Z,{Cookie:()=>O.Cookie,ELYSIA_FORM_DATA:()=>m.ELYSIA_FORM_DATA,ELYSIA_REQUEST_ID:()=>m.ELYSIA_REQUEST_ID,ELYSIA_RESPONSE:()=>p.ELYSIA_RESPONSE,ELYSIA_TRACE:()=>U.ELYSIA_TRACE,ERROR_CODE:()=>p.ERROR_CODE,Elysia:()=>g,InternalServerError:()=>p.InternalServerError,InvalidCookieSignature:()=>p.InvalidCookieSignature,InvertedStatusMap:()=>m.InvertedStatusMap,NotFoundError:()=>p.NotFoundError,ParseError:()=>p.ParseError,StatusMap:()=>m.StatusMap,TypeSystemPolicy:()=>$.TypeSystemPolicy,ValidationError:()=>p.ValidationError,checksum:()=>m.checksum,cloneInference:()=>m.cloneInference,deduplicateChecksum:()=>m.deduplicateChecksum,default:()=>g,error:()=>p.error,form:()=>m.form,getResponseSchemaValidator:()=>m.getResponseSchemaValidator,getSchemaValidator:()=>m.getSchemaValidator,mapCompactResponse:()=>D.mapCompactResponse,mapEarlyResponse:()=>D.mapEarlyResponse,mapResponse:()=>D.mapResponse,mapValueError:()=>p.mapValueError,mergeHook:()=>m.mergeHook,mergeObjectArray:()=>m.mergeObjectArray,redirect:()=>m.redirect,replaceSchemaType:()=>m.replaceSchemaType,replaceUrlPath:()=>m.replaceUrlPath,t:()=>J.t});module.exports=X(Z);var F=require("memoirist"),_=require("./sucrose"),R=require("./ws/index"),w=require("./handler"),n=require("./utils"),T=require("./compose"),W=require("./trace"),i=require("./utils"),A=require("./dynamic-handle"),x=require("./error"),D=require("./handler"),J=require("./type-system"),O=require("./cookies"),U=require("./trace"),m=require("./utils"),p=require("./error"),$=require("@sinclair/typebox/system");class g{constructor(e={}){this.server=null;this.dependencies={};this._routes={};this._types={Prefix:"",Singleton:{},Definitions:{},Metadata:{}};this._ephemeral={};this._volatile={};this.singleton={decorator:{},store:{},derive:{},resolve:{}};this.definitions={type:{},error:{}};this.extender={macros:[],higherOrderFunctions:[]};this.validator={global:null,scoped:null,local:null,getCandidate(){return(0,n.mergeSchemaValidator)((0,n.mergeSchemaValidator)(this.global,this.scoped),this.local)}};this.event={start:[],request:[],parse:[],transform:[],beforeHandle:[],afterHandle:[],mapResponse:[],afterResponse:[],trace:[],error:[],stop:[]};this.telemetry={stack:void 0};this.router={http:new F.Memoirist,ws:new F.Memoirist,dynamic:new F.Memoirist,static:{http:{static:{},handlers:[],map:{},all:""},ws:{}},history:[]};this.routeTree=new Map;this.inference={body:!1,cookie:!1,headers:!1,query:!1,set:!1,server:!1};this.handle=async e=>this.fetch(e);this.fetch=e=>(this.fetch=this.config.aot?(0,T.composeGeneralHandler)(this):(0,A.createDynamicHandler)(this))(e);this.handleError=async(e,t)=>(this.handleError=this.config.aot?(0,T.composeErrorHandler)(this):(0,A.createDynamicErrorHandler)(this))(e,t);this.outerErrorHandler=e=>new Response(e.message||e.name||"Error",{status:e?.status??500});this.listen=(e,t)=>{if(typeof Bun>"u")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 e=="string"){if(!(0,i.isNumericString)(e))throw new Error("Port must be a numeric value");e=parseInt(e)}const a=this.fetch,r=typeof e=="object"?{development:!x.isProduction,reusePort:!0,...this.config.serve||{},...e||{},static:this.router.static.http.static,websocket:{...this.config.websocket||{},...R.websocket||{}},fetch:a,error:this.outerErrorHandler}:{development:!x.isProduction,reusePort:!0,...this.config.serve||{},static:this.router.static.http.static,websocket:{...this.config.websocket||{},...R.websocket||{}},port:e,fetch:a,error:this.outerErrorHandler};this.server=Bun?.serve(r);for(let s=0;s<this.event.start.length;s++)this.event.start[s].fn(this);return t&&t(this.server),process.on("beforeExit",()=>{if(this.server){this.server.stop(),this.server=null;for(let s=0;s<this.event.stop.length;s++)this.event.stop[s].fn(this)}}),this.promisedModules.then(()=>{Bun?.gc(!1)}),this};this.stop=async e=>{if(!this.server)throw new Error("Elysia isn't running. Call `app.listen` to start the server.");if(this.server&&(this.server.stop(e),this.server=null,this.event.stop.length))for(let t=0;t<this.event.stop.length;t++)this.event.stop[t].fn(this)};e.tags&&(e.detail?e.detail.tags=e.tags:e.detail={tags:e.tags}),e.nativeStaticResponse===void 0&&(e.nativeStaticResponse=!0),this.config={},this.applyConfig(e??{}),e?.analytic&&(e?.name||e?.seed!==void 0)&&(this.telemetry.stack=new Error().stack)}get store(){return this.singleton.store}get decorator(){return this.singleton.decorator}get routes(){return this.router.history}getGlobalRoutes(){return this.router.history}getServer(){return this.server}get promisedModules(){return this._promisedModules||(this._promisedModules=new n.PromiseGroup),this._promisedModules}env(e,t=Bun?.env??process.env){if((0,i.getSchemaValidator)(e,{dynamic:!0,additionalProperties:!0,coerce:!0}).Check(t)===!1){const r=new x.ValidationError("env",e,t);throw new Error(r.all.map(s=>s.summary).join(`
`))}return this}wrap(e){return this.extender.higherOrderFunctions.push({checksum:(0,i.checksum)(JSON.stringify({name:this.config.name,seed:this.config.seed,content:e.toString()})),fn:e}),this}applyMacro(e){if(this.extender.macros.length){const t=(0,i.createMacroManager)({globalHook:this.event,localHook:e}),a={events:{global:this.event,local:e},onParse:t("parse"),onTransform:t("transform"),onBeforeHandle:t("beforeHandle"),onAfterHandle:t("afterHandle"),mapResponse:t("mapResponse"),onAfterResponse:t("afterResponse"),onError:t("error")};for(const r of this.extender.macros)(0,i.traceBackMacro)(r.fn(a),e)}}applyConfig(e){return this.config={prefix:"",aot:!0,strictPath:!1,global:!1,analytic:!1,normalize:!0,...e,cookie:{path:"/",...e?.cookie},experimental:e?.experimental??{},seed:e?.seed===void 0?"":e?.seed},this}get models(){const e={};for(const[t,a]of Object.entries(this.definitions.type))e[t]=(0,i.getSchemaValidator)(a);return e}add(e,t,a,r,{allowMeta:s=!1,skipPrefix:o=!1}={allowMeta:!1,skipPrefix:!1}){if(r=(0,n.localHookToLifeCycleStore)(r),t!==""&&t.charCodeAt(0)!==47&&(t="/"+t),this.config.prefix&&!o&&(t=this.config.prefix+t),r?.type)switch(r.type){case"text":r.type="text/plain";break;case"json":r.type="application/json";break;case"formdata":r.type="multipart/form-data";break;case"urlencoded":r.type="application/x-www-form-urlencoded";break;case"arrayBuffer":r.type="application/octet-stream";break;default:break}const c=this.definitions.type,l=!this.config.aot,h={...this.validator.getCandidate()},d={body:r?.body??h?.body,headers:r?.headers??h?.headers,params:r?.params??h?.params,query:r?.query??h?.query,cookie:r?.cookie??h?.cookie,response:r?.response??h?.response},f=()=>d.cookie?(0,i.getCookieValidator)({validator:d.cookie,defaultConfig:this.config.cookie,config:d.cookie?.config??{},dynamic:l,models:c}):void 0,S=this.config.normalize,H=this.config.precompile===!0||typeof this.config.precompile=="object"&&this.config.precompile.schema===!0?{body:(0,i.getSchemaValidator)(d.body,{dynamic:l,models:c,normalize:S}),headers:(0,i.getSchemaValidator)(d.headers,{dynamic:l,models:c,additionalProperties:!this.config.normalize,coerce:!0,additionalCoerce:(0,n.stringToStructureCoercions)()}),params:(0,i.getSchemaValidator)(d.params,{dynamic:l,models:c,coerce:!0,additionalCoerce:(0,n.stringToStructureCoercions)()}),query:(0,i.getSchemaValidator)(d.query,{dynamic:l,models:c,normalize:S,coerce:!0,additionalCoerce:(0,n.stringToStructureCoercions)()}),cookie:f(),response:(0,i.getResponseSchemaValidator)(d.response,{dynamic:l,models:c,normalize:S})}:{createBody(){return this.body?this.body:this.body=(0,i.getSchemaValidator)(d.body,{dynamic:l,models:c,normalize:S})},createHeaders(){return this.headers?this.headers:this.headers=(0,i.getSchemaValidator)(d.headers,{dynamic:l,models:c,additionalProperties:!S,coerce:!0,additionalCoerce:(0,n.stringToStructureCoercions)()})},createParams(){return this.params?this.params:this.params=(0,i.getSchemaValidator)(d.params,{dynamic:l,models:c,coerce:!0,additionalCoerce:(0,n.stringToStructureCoercions)()})},createQuery(){return this.query?this.query:this.query=(0,i.getSchemaValidator)(d.query,{dynamic:l,models:c,coerce:!0,additionalCoerce:(0,n.stringToStructureCoercions)()})},createCookie(){return this.cookie?this.cookie:this.cookie=f()},createResponse(){return this.response?this.response:this.response=(0,i.getResponseSchemaValidator)(d.response,{dynamic:l,models:c,normalize:S})}},M=t.endsWith("/")?t.slice(0,t.length-1):t+"/";r=(0,i.mergeHook)(r,h),r.tags&&(r.detail?r.detail.tags=r.tags:r.detail={tags:r.tags}),(0,w.isNotEmpty)(this.config.detail)&&(r.detail=(0,n.mergeDeep)(Object.assign({},this.config.detail),r.detail)),this.applyMacro(r);const v=(0,i.mergeHook)(this.event,r);if(this.config.aot===!1){this.router.dynamic.add(e,t,{validator:H,hooks:v,content:r?.type,handle:a}),this.config.strictPath===!1&&this.router.dynamic.add(e,M,{validator:H,hooks:v,content:r?.type,handle:a}),this.router.history.push({method:e,path:t,composed:null,handler:a,hooks:v});return}const C=this.config.precompile===!0||typeof this.config.precompile=="object"&&this.config.precompile.compose===!0,b=(0,n.cloneInference)(this.inference),B=typeof a!="function"?(0,w.createStaticHandler)(a,v,this.setHeaders):void 0,k=typeof a!="function"?(0,w.createNativeStaticHandler)(a,v,this.setHeaders):void 0;this.config.nativeStaticResponse===!0&&k&&(e==="GET"||e==="ALL")&&(this.router.static.http.static[t]=k());const L=()=>(0,T.composeHandler)({app:this,path:t,method:e,localHook:(0,i.mergeHook)(r),hooks:v,validator:H,handler:a,allowMeta:s,inference:b}),q=C?L():y=>L()(y),z=this.router.history.length;if(this.routeTree.has(e+t))for(let y=0;y<this.router.history.length;y++){const E=this.router.history[y];if(E.path===t&&E.method===e){const P=this.router.history.splice(y,1)[0];P&&this.routeTree.has(P?.method+P?.path)&&this.routeTree.delete(P.method+P.path)}}else this.routeTree.set(e+t,z);this.router.history.push({method:e,path:t,composed:q,handler:a,hooks:v});const u=this.router.static.http,N={handler:C?q:void 0,compile:L};if(e==="$INTERNALWS"){const y=this.config.strictPath?void 0:t.endsWith("/")?t.slice(0,t.length-1):t+"/";if(t.indexOf(":")===-1&&t.indexOf("*")===-1){const E=u.handlers.length;u.handlers.push(P=>(u.handlers[E]=L())(P)),this.router.static.ws[t]=E,y&&(this.router.static.ws[y]=E)}else this.router.ws.add("ws",t,N),y&&this.router.ws.add("ws",y,N);return}if(t.indexOf(":")===-1&&t.indexOf("*")===-1){const y=u.handlers.length;u.handlers.push(B??(P=>(u.handlers[y]=L())(P))),u.map[t]||(u.map[t]={code:""});const E=B?"":"c";e==="ALL"?u.map[t].all=`default: return st[${y}](${E})
`:u.map[t].code=`case '${e}': return st[${y}](${E})
${u.map[t].code}`,this.config.strictPath||(u.map[M]||(u.map[M]={code:""}),this.config.nativeStaticResponse===!0&&k&&(e==="GET"||e==="ALL")&&(this.router.static.http.static[M]=k()),e==="ALL"?u.map[M].all=`default: return st[${y}](${E})
`:u.map[M].code=`case '${e}': return st[${y}](${E})
${u.map[M].code}`)}else if(this.router.http.add(e,t,N),!this.config.strictPath){const y=t.endsWith("/")?t.slice(0,t.length-1):t+"/";this.config.nativeStaticResponse===!0&&B&&(e==="GET"||e==="ALL")&&(this.router.static.http.static[y]=B()),this.router.http.add(e,y,N)}}headers(e){return e?(this.setHeaders||(this.setHeaders={}),this.setHeaders=(0,n.mergeDeep)(this.setHeaders,e),this):this}onStart(e){return this.on("start",e),this}onRequest(e){return this.on("request",e),this}onParse(e,t){return t?this.on(e,"parse",t):this.on("parse",e)}onTransform(e,t){return t?this.on(e,"transform",t):this.on("transform",e)}resolve(e,t){t||(t=e,e={as:"local"});const a={subType:"resolve",fn:t};return this.onBeforeHandle(e,a)}mapResolve(e,t){t||(t=e,e={as:"local"});const a={subType:"mapResolve",fn:t};return this.onBeforeHandle(e,a)}onBeforeHandle(e,t){return t?this.on(e,"beforeHandle",t):this.on("beforeHandle",e)}onAfterHandle(e,t){return t?this.on(e,"afterHandle",t):this.on("afterHandle",e)}mapResponse(e,t){return t?this.on(e,"mapResponse",t):this.on("mapResponse",e)}onAfterResponse(e,t){return t?this.on(e,"afterResponse",t):this.on("afterResponse",e)}trace(e,t){t||(t=e,e={as:"local"}),Array.isArray(t)||(t=[t]);for(const a of t)this.on(e,"trace",(0,W.createTracer)(a));return this}error(e,t){switch(typeof e){case"string":return t.prototype[x.ERROR_CODE]=e,this.definitions.error[e]=t,this;case"function":return this.definitions.error=e(this.definitions.error),this}for(const[a,r]of Object.entries(e))r.prototype[x.ERROR_CODE]=a,this.definitions.error[a]=r;return this}onError(e,t){return t?this.on(e,"error",t):this.on("error",e)}onStop(e){return this.on("stop",e),this}on(e,t,a){let r;switch(typeof e){case"string":r=e,a=t;break;case"object":r=t,!Array.isArray(t)&&typeof t=="object"&&(a=t);break}Array.isArray(a)?a=(0,n.fnToContainer)(a):typeof a=="function"?a=[{fn:a}]:a=[a];const s=a;for(const o of s)o.scope=typeof e=="string"?"local":e?.as??"local";r!=="trace"&&(0,_.sucrose)({[r]:s.map(o=>o.fn)},this.inference);for(const o of s){const c=(0,i.asHookType)(o,"global",{skipIfHasType:!0});switch(r){case"start":this.event.start.push(c);break;case"request":this.event.request.push(c);break;case"parse":this.event.parse.push(c);break;case"transform":this.event.transform.push(c);break;case"beforeHandle":this.event.beforeHandle.push(c);break;case"afterHandle":this.event.afterHandle.push(c);break;case"mapResponse":this.event.mapResponse.push(c);break;case"afterResponse":this.event.afterResponse.push(c);break;case"trace":this.event.trace.push(c);break;case"error":this.event.error.push(c);break;case"stop":this.event.stop.push(c);break}}return this}propagate(){return(0,n.promoteEvent)(this.event.parse),(0,n.promoteEvent)(this.event.transform),(0,n.promoteEvent)(this.event.beforeHandle),(0,n.promoteEvent)(this.event.afterHandle),(0,n.promoteEvent)(this.event.mapResponse),(0,n.promoteEvent)(this.event.afterResponse),(0,n.promoteEvent)(this.event.trace),(0,n.promoteEvent)(this.event.error),this}as(e){const t={plugin:"scoped",global:"global"}[e];return(0,n.promoteEvent)(this.event.parse,t),(0,n.promoteEvent)(this.event.transform,t),(0,n.promoteEvent)(this.event.beforeHandle,t),(0,n.promoteEvent)(this.event.afterHandle,t),(0,n.promoteEvent)(this.event.mapResponse,t),(0,n.promoteEvent)(this.event.afterResponse,t),(0,n.promoteEvent)(this.event.trace,t),(0,n.promoteEvent)(this.event.error,t),e==="plugin"?(this.validator.scoped=(0,n.mergeSchemaValidator)(this.validator.scoped,this.validator.local),this.validator.local=null):e==="global"&&(this.validator.global=(0,n.mergeSchemaValidator)(this.validator.global,(0,n.mergeSchemaValidator)(this.validator.scoped,this.validator.local)),this.validator.scoped=null,this.validator.local=null),this}group(e,t,a){const r=new g({...this.config,prefix:""});r.singleton={...this.singleton},r.definitions={...this.definitions},r.getServer=()=>this.getServer(),r.inference=(0,n.cloneInference)(this.inference),r.extender={...this.extender};const s=typeof t=="object",o=(s?a:t)(r);return this.singleton=(0,n.mergeDeep)(this.singleton,r.singleton),this.definitions=(0,n.mergeDeep)(this.definitions,r.definitions),o.event.request.length&&(this.event.request=[...this.event.request||[],...o.event.request||[]]),o.event.mapResponse.length&&(this.event.mapResponse=[...this.event.mapResponse||[],...o.event.mapResponse||[]]),this.model(o.definitions.type),Object.values(r.router.history).forEach(({method:c,path:l,handler:h,hooks:d})=>{if(l=(s?"":this.config.prefix)+e+l,s){const f=t,S=d;this.add(c,l,h,(0,i.mergeHook)(f,{...S||{},error:S.error?Array.isArray(S.error)?[...S.error||{},...o.event.error||{}]:[S.error,...o.event.error||{}]:o.event.error}))}else this.add(c,l,h,(0,i.mergeHook)(d,{error:o.event.error}),{skipPrefix:!0})}),this}guard(e,t){if(!t){if(typeof e=="object"){this.applyMacro(e);const s=e.as??"local";return this.validator[s]={body:e.body??this.validator[s]?.body,headers:e.headers??this.validator[s]?.headers,params:e.params??this.validator[s]?.params,query:e.query??this.validator[s]?.query,response:e.response??this.validator[s]?.response,cookie:e.cookie??this.validator[s]?.cookie},e.parse&&this.on({as:s},"parse",e.parse),e.transform&&this.on({as:s},"transform",e.transform),e.beforeHandle&&this.on({as:s},"beforeHandle",e.beforeHandle),e.afterHandle&&this.on({as:s},"afterHandle",e.afterHandle),e.mapResponse&&this.on({as:s},"mapResponse",e.mapResponse),e.afterResponse&&this.on({as:s},"afterResponse",e.afterResponse),e.error&&this.on({as:s},"error",e.error),e.detail&&(this.config.detail?this.config.detail=(0,n.mergeDeep)(Object.assign({},this.config.detail),e.detail):this.config.detail=e.detail),e?.tags&&(this.config.detail?this.config.detail.tags=e.tags:this.config.detail={tags:e.tags}),this}return this.guard({},e)}const a=new g({...this.config,prefix:""});a.singleton={...this.singleton},a.definitions={...this.definitions},a.inference=(0,n.cloneInference)(this.inference),a.extender={...this.extender};const r=t(a);return this.singleton=(0,n.mergeDeep)(this.singleton,a.singleton),this.definitions=(0,n.mergeDeep)(this.definitions,a.definitions),r.getServer=()=>this.server,r.event.request.length&&(this.event.request=[...this.event.request||[],...r.event.request||[]]),r.event.mapResponse.length&&(this.event.mapResponse=[...this.event.mapResponse||[],...r.event.mapResponse||[]]),this.model(r.definitions.type),Object.values(a.router.history).forEach(({method:s,path:o,handler:c,hooks:l})=>{this.add(s,o,c,(0,i.mergeHook)(e,{...l||{},error:l.error?Array.isArray(l.error)?[...l.error||{},...r.event.error||[]]:[l.error,...r.event.error||[]]:r.event.error}))}),this}use(e,t){if(Array.isArray(e)){let a=this;for(const r of e)a=a.use(r);return a}if(t?.scoped)return this.guard({},a=>a.use(e));if(Array.isArray(e)){let a=this;for(const r of e)a=this.use(r);return a}return e instanceof Promise?(this.promisedModules.add(e.then(a=>{if(typeof a=="function")return a(this);if(a instanceof g)return this._use(a).compile();if(typeof a.default=="function")return a.default(this);if(a.default instanceof g)return this._use(a.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(a=>a.compile())),this):this._use(e)}_use(e){if(typeof e=="function"){const s=e(this);return s instanceof Promise?(this.promisedModules.add(s.then(o=>{if(o instanceof g){o.getServer=()=>this.getServer(),o.getGlobalRoutes=()=>this.getGlobalRoutes(),o.model(this.definitions.type),o.error(this.definitions.error);for(const{method:c,path:l,handler:h,hooks:d}of Object.values(o.router.history))this.add(c,l,h,(0,i.mergeHook)(d,{error:o.event.error}));return o.compile(),o}return typeof o=="function"?o(this):typeof o.default=="function"?o.default(this):this._use(o)}).then(o=>o.compile())),this):s}const{name:t,seed:a}=e.config;if(e.getServer=()=>this.getServer(),e.getGlobalRoutes=()=>this.getGlobalRoutes(),e.model(this.definitions.type),e.error(this.definitions.error),this.headers(e.setHeaders),t){t in this.dependencies||(this.dependencies[t]=[]);const s=a!==void 0?(0,i.checksum)(t+JSON.stringify(a)):0;this.dependencies[t].some(({checksum:o})=>s===o)||(this.extender.macros=this.extender.macros.concat(e.extender.macros),this.extender.higherOrderFunctions=this.extender.higherOrderFunctions.concat(e.extender.higherOrderFunctions))}else this.extender.macros=this.extender.macros.concat(e.extender.macros),this.extender.higherOrderFunctions=this.extender.higherOrderFunctions.concat(e.extender.higherOrderFunctions);(0,n.deduplicateChecksum)(this.extender.macros),(0,n.deduplicateChecksum)(this.extender.higherOrderFunctions);const r=[];for(let s=0;s<this.extender.higherOrderFunctions.length;s++){const o=this.extender.higherOrderFunctions[s];o.checksum&&(r.includes(o.checksum)&&(this.extender.higherOrderFunctions.splice(s,1),s--),r.push(o.checksum))}this.inference={body:this.inference.body||e.inference.body,cookie:this.inference.cookie||e.inference.cookie,headers:this.inference.headers||e.inference.headers,query:this.inference.query||e.inference.query,set:this.inference.set||e.inference.set,server:this.inference.server||e.inference.server},this.decorate(e.singleton.decorator),this.state(e.singleton.store),this.model(e.definitions.type),this.error(e.definitions.error),e.extender.macros=this.extender.macros.concat(e.extender.macros);for(const{method:s,path:o,handler:c,hooks:l}of Object.values(e.router.history))this.add(s,o,c,(0,i.mergeHook)(l,{error:e.event.error}));if(t){t in this.dependencies||(this.dependencies[t]=[]);const s=a!==void 0?(0,i.checksum)(t+JSON.stringify(a)):0;if(this.dependencies[t].some(({checksum:o})=>s===o))return this;this.dependencies[t].push(this.config?.analytic?{name:e.config.name,seed:e.config.seed,checksum:s,dependencies:e.dependencies,stack:e.telemetry.stack,routes:e.router.history,decorators:e.singleton,store:e.singleton.store,type:e.definitions.type,error:e.definitions.error,derive:e.event.transform.filter(o=>o?.subType==="derive").map(o=>({fn:o.toString(),stack:new Error().stack??""})),resolve:e.event.transform.filter(o=>o?.subType==="resolve").map(o=>({fn:o.toString(),stack:new Error().stack??""}))}:{name:e.config.name,seed:e.config.seed,checksum:s,dependencies:e.dependencies}),this.event=(0,i.mergeLifeCycle)(this.event,(0,i.filterGlobalHook)(e.event),s)}else this.event=(0,i.mergeLifeCycle)(this.event,(0,i.filterGlobalHook)(e.event));return this.validator.global=(0,i.mergeHook)(this.validator.global,{...e.validator.global}),this.validator.local=(0,i.mergeHook)(this.validator.local,{...e.validator.scoped}),this}macro(e){const t={checksum:(0,i.checksum)(JSON.stringify({name:this.config.name,seed:this.config.seed,content:e.toString()})),fn:e};return this.extender.macros.push(t),this}mount(e,t){if(e instanceof g||typeof e=="function"||e.length===0||e==="/"){const s=typeof e=="function"?e:e instanceof g?e.compile().fetch:t instanceof g?t.compile().fetch:t,o=async({request:c,path:l})=>c.method==="GET"||c.method==="HEAD"||!c.headers.get("content-type")?s(new Request((0,i.replaceUrlPath)(c.url,l||"/"),c)):s(new Request((0,i.replaceUrlPath)(c.url,l||"/"),{...c,body:await c.arrayBuffer()}));return this.all("/*",o,{type:"none"}),this}const a=e.length;t instanceof g&&(t=t.compile().fetch);const r=async({request:s,path:o})=>s.method==="GET"||s.method==="HEAD"||!s.headers.get("content-type")?t(new Request((0,i.replaceUrlPath)(s.url,o.slice(a)||"/"),s)):t(new Request((0,i.replaceUrlPath)(s.url,o.slice(a)||"/"),{...s,body:await s.arrayBuffer()}));return this.all(e,r,{type:"none"}),this.all(e+(e.endsWith("/")?"*":"/*"),r,{type:"none"}),this}get(e,t,a){return this.add("GET",e,t,a),this}post(e,t,a){return this.add("POST",e,t,a),this}put(e,t,a){return this.add("PUT",e,t,a),this}patch(e,t,a){return this.add("PATCH",e,t,a),this}delete(e,t,a){return this.add("DELETE",e,t,a),this}options(e,t,a){return this.add("OPTIONS",e,t,a),this}all(e,t,a){return this.add("ALL",e,t,a),this}head(e,t,a){return this.add("HEAD",e,t,a),this}connect(e,t,a){return this.add("CONNECT",e,t,a),this}route(e,t,a,r){return this.add(e.toUpperCase(),t,a,r,r?.config),this}ws(e,t){const a=t.transformMessage?Array.isArray(t.transformMessage)?t.transformMessage:[t.transformMessage]:void 0;let r=null;const s=(0,i.getSchemaValidator)(t?.body,{models:this.definitions.type,normalize:this.config.normalize}),o=(0,i.getSchemaValidator)(t?.response,{models:this.definitions.type,normalize:this.config.normalize}),c=l=>{if(typeof l=="string"){const h=l?.charCodeAt(0);if(h===47||h===123)try{l=JSON.parse(l)}catch{}else(0,i.isNumericString)(l)&&(l=+l)}if(a?.length)for(let h=0;h<a.length;h++){const d=a[h](l);d!==void 0&&(l=d)}return l};return this.route("$INTERNALWS",e,l=>{const{set:h,path:d,qi:f,headers:S,query:H,params:M}=l;if(r===null&&(r=this.getServer()),!r?.upgrade(l.request,{headers:typeof t.upgrade=="function"?t.upgrade(l):t.upgrade,data:{validator:o,open(v){t.open?.(new R.ElysiaWS(v,l))},message:(v,C)=>{const b=c(C);if(s?.Check(b)===!1)return void v.send(new x.ValidationError("message",s,b).message);t.message?.(new R.ElysiaWS(v,l),b)},drain(v){t.drain?.(new R.ElysiaWS(v,l))},close(v,C,b){t.close?.(new R.ElysiaWS(v,l),C,b)}}}))return h.status=400,"Expected a websocket connection"},{beforeHandle:t.beforeHandle,transform:t.transform,headers:t.headers,params:t.params,query:t.query}),this}state(e,t,a){t===void 0?(a=e,e={as:"append"},t=""):a===void 0&&(typeof e=="string"?(a=t,t=e,e={as:"append"}):typeof e=="object"&&(a=t,t=""));const{as:r}=e;if(typeof t!="string")return this;switch(typeof a){case"object":return t?(t in this.singleton.store?this.singleton.store[t]=(0,n.mergeDeep)(this.singleton.store[t],a,{override:r==="override"}):this.singleton.store[t]=a,this):a===null?this:(this.singleton.store=(0,n.mergeDeep)(this.singleton.store,a,{override:r==="override"}),this);case"function":return t?(r==="override"||!(t in this.singleton.store))&&(this.singleton.store[t]=a):this.singleton.store=a(this.singleton.store),this;default:return(r==="override"||!(t in this.singleton.store))&&(this.singleton.store[t]=a),this}}decorate(e,t,a){t===void 0?(a=e,e={as:"append"},t=""):a===void 0&&(typeof e=="string"?(a=t,t=e,e={as:"append"}):typeof e=="object"&&(a=t,t=""));const{as:r}=e;if(typeof t!="string")return this;switch(typeof a){case"object":return t?(t in this.singleton.decorator?this.singleton.decorator[t]=(0,n.mergeDeep)(this.singleton.decorator[t],a,{override:r==="override"}):this.singleton.decorator[t]=a,this):a===null?this:(this.singleton.decorator=(0,n.mergeDeep)(this.singleton.decorator,a,{override:r==="override"}),this);case"function":return t?(r==="override"||!(t in this.singleton.decorator))&&(this.singleton.decorator[t]=a):this.singleton.decorator=a(this.singleton.decorator),this;default:return(r==="override"||!(t in this.singleton.decorator))&&(this.singleton.decorator[t]=a),this}}derive(e,t){t||(t=e,e={as:"local"});const a={subType:"derive",fn:t};return this.onTransform(e,a)}model(e,t){switch(typeof e){case"object":return Object.entries(e).forEach(([a,r])=>{a in this.definitions.type||(this.definitions.type[a]=r)}),this;case"function":return this.definitions.type=e(this.definitions.type),this}return this.definitions.type[e]=t,this}mapDerive(e,t){t||(t=e,e={as:"local"});const a={subType:"mapDerive",fn:t};return this.onTransform(e,a)}affix(e,t,a){if(a==="")return this;const r=["_","-"," "],s=h=>h[0].toUpperCase()+h.slice(1),o=e==="prefix"?(h,d)=>r.includes(h.at(-1)??"")?h+d:h+s(d):r.includes(a.at(-1)??"")?(h,d)=>d+h:(h,d)=>d+s(h),c=h=>{const d={};switch(h){case"decorator":for(const f in this.singleton.decorator)d[o(a,f)]=this.singleton.decorator[f];this.singleton.decorator=d;break;case"state":for(const f in this.singleton.store)d[o(a,f)]=this.singleton.store[f];this.singleton.store=d;break;case"model":for(const f in this.definitions.type)d[o(a,f)]=this.definitions.type[f];this.definitions.type=d;break;case"error":for(const f in this.definitions.error)d[o(a,f)]=this.definitions.error[f];this.definitions.error=d;break}},l=Array.isArray(t)?t:[t];for(const h of l.some(d=>d==="all")?["decorator","state","model","error"]:l)c(h);return this}prefix(e,t){return this.affix("prefix",e,t)}suffix(e,t){return this.affix("suffix",e,t)}compile(){return this.fetch=this.config.aot?(0,T.composeGeneralHandler)(this):(0,A.createDynamicHandler)(this),typeof this.server?.reload=="function"&&this.server.reload({...this.server||{},fetch:this.fetch}),this}get modules(){return Promise.all(this.promisedModules.promises)}}0&&(module.exports={Cookie,ELYSIA_FORM_DATA,ELYSIA_REQUEST_ID,ELYSIA_RESPONSE,ELYSIA_TRACE,ERROR_CODE,Elysia,InternalServerError,InvalidCookieSignature,InvertedStatusMap,NotFoundError,ParseError,StatusMap,TypeSystemPolicy,ValidationError,checksum,cloneInference,deduplicateChecksum,error,form,getResponseSchemaValidator,getSchemaValidator,mapCompactResponse,mapEarlyResponse,mapResponse,mapValueError,mergeHook,mergeObjectArray,redirect,replaceSchemaType,replaceUrlPath,t});

@@ -1,2 +0,2 @@

import type { Elysia } from '.';
import type { Elysia, AnyElysia } from '.';
import type { BunFile, Serve, Server, WebSocketHandler } from 'bun';

@@ -12,3 +12,3 @@ import type { TSchema, TObject, Static, TAnySchema, TNull, TUndefined, StaticDecode, OptionalKind } from '@sinclair/typebox';

type PartialServe = Partial<Serve>;
export type ElysiaConfig<Prefix extends string | undefined, Scoped extends boolean | undefined> = {
export type ElysiaConfig<Prefix extends string | undefined> = {
/**

@@ -21,8 +21,2 @@ * Path prefix of the instance

/**
* If set to true, other Elysia handler will not inherits global life-cycle, store, decorators from the current instance
*
* @default false
*/
scoped?: Scoped;
/**
* Name of the instance for debugging, and plugin deduplication purpose

@@ -390,3 +384,3 @@ */

}>) => MaybePromise<void>;
export type GracefulHandler<in Instance extends Elysia<any, any, any, any, any, any, any, any>> = (data: Instance) => any;
export type GracefulHandler<in Instance extends AnyElysia> = (data: Instance) => any;
export type ErrorHandler<in out T extends Record<string, Error> = {}, in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {

@@ -613,3 +607,3 @@ decorator: {};

} : Response>;
export type MergeElysiaInstances<Instances extends Elysia<any, any, any, any, any, any>[] = [], Prefix extends string = '', Scoped extends boolean = false, Singleton extends SingletonBase = {
export type MergeElysiaInstances<Instances extends AnyElysia[] = [], Prefix extends string = '', Singleton extends SingletonBase = {
decorator: {};

@@ -626,18 +620,14 @@ store: {};

macroFn: {};
}, Ephemeral extends EphemeralType = {
derive: {};
resolve: {};
schema: {};
}, Volatile extends EphemeralType = {
derive: {};
resolve: {};
schema: {};
}, Routes extends RouteBase = {}> = Instances extends [
infer Current extends Elysia<any, any, any, any, any, any>,
...infer Rest extends Elysia<any, any, any, any, any, any>[]
] ? Current['_types']['Scoped'] extends true ? MergeElysiaInstances<Rest, Prefix, Scoped, Singleton, Definitions, Metadata, Routes> : MergeElysiaInstances<Rest, Prefix, Scoped, Singleton & Current['_types']['Singleton'], Definitions & Current['_types']['Definitions'], Metadata & Current['_types']['Metadata'], Routes & (Prefix extends `` ? Current['_routes'] : AddPrefix<Prefix, Current['_routes']>)> : Elysia<Prefix, Scoped, {
decorator: Prettify<Singleton['decorator']>;
store: Prettify<Singleton['store']>;
derive: Prettify<Singleton['derive']>;
resolve: Prettify<Singleton['resolve']>;
}, {
type: Prettify<Definitions['type']>;
error: Prettify<Definitions['error']>;
}, {
schema: Prettify<Metadata['schema']>;
macro: Prettify<Metadata['macro']>;
macroFn: Prettify<Metadata['macroFn']>;
}, Routes>;
infer Current extends AnyElysia,
...infer Rest extends AnyElysia[]
] ? MergeElysiaInstances<Rest, Prefix, Singleton & Current['_types']['Singleton'], Definitions & Current['_types']['Definitions'], Metadata & Current['_types']['Metadata'], Ephemeral, Volatile & Current['_ephemeral'], Routes & (Prefix extends `` ? Current['_routes'] : AddPrefix<Prefix, Current['_routes']>)> : Elysia<Prefix, Prettify2<Singleton>, Prettify2<Definitions>, Prettify2<Metadata>, Routes, Ephemeral, Prettify2<Volatile>>;
export type LifeCycleType = 'global' | 'local' | 'scoped';

@@ -647,7 +637,7 @@ export type ExcludeElysiaResponse<T> = Exclude<undefined extends Awaited<T> ? Partial<Awaited<T>> : Awaited<T>, {

}>;
export type InferContext<T extends Elysia<any, any, any, any, any, any, any, any>, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = Context<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
export type InferContext<T extends AnyElysia, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = Context<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
derive: T['_ephemeral']['derive'] & T['_volatile']['derive'];
resolve: T['_ephemeral']['resolve'] & T['_volatile']['resolve'];
}, Path>;
export type InferHandler<T extends Elysia<any, any, any, any, any, any, any, any>, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = InlineHandler<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
export type InferHandler<T extends AnyElysia, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = InlineHandler<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
derive: T['_ephemeral']['derive'] & T['_volatile']['derive'];

@@ -654,0 +644,0 @@ resolve: T['_ephemeral']['resolve'] & T['_volatile']['resolve'];

@@ -1,2 +0,2 @@

import { type Elysia } from '.';
import type { AnyElysia } from '.';
import type { TAnySchema } from '@sinclair/typebox';

@@ -14,3 +14,3 @@ import { Sucrose } from './sucrose';

export declare const composeHandler: ({ app, path, method, localHook, hooks, validator, handler, allowMeta, inference }: {
app: Elysia<any, any, any, any, any, any, any, any>;
app: AnyElysia;
path: string;

@@ -37,3 +37,3 @@ method: string;

}
export declare const composeGeneralHandler: (app: Elysia<any, any, any, any, any, any, any, any>) => any;
export declare const composeErrorHandler: (app: Elysia<any, any, any, any, any, any, any, any>) => any;
export declare const composeGeneralHandler: (app: AnyElysia) => any;
export declare const composeErrorHandler: (app: AnyElysia) => any;

@@ -1,2 +0,2 @@

import type { Elysia } from '.';
import type { AnyElysia } from '.';
import { ElysiaErrors } from './error';

@@ -11,5 +11,5 @@ import type { Context } from './context';

};
export declare const createDynamicHandler: (app: Elysia<any, any, any, any, any, any, any, any>) => (request: Request) => Promise<Response>;
export declare const createDynamicErrorHandler: (app: Elysia<any, any, any, any, any, any, any, any>) => (context: Context & {
export declare const createDynamicHandler: (app: AnyElysia) => (request: Request) => Promise<Response>;
export declare const createDynamicErrorHandler: (app: AnyElysia) => (context: Context & {
response: unknown;
}, error: ElysiaErrors) => Promise<import("undici-types").Response>;

@@ -1,2 +0,2 @@

import type { Elysia } from '.';
import type { Elysia, AnyElysia } from '.';
import type { BunFile, Serve, Server, WebSocketHandler } from 'bun';

@@ -12,3 +12,3 @@ import type { TSchema, TObject, Static, TAnySchema, TNull, TUndefined, StaticDecode, OptionalKind } from '@sinclair/typebox';

type PartialServe = Partial<Serve>;
export type ElysiaConfig<Prefix extends string | undefined, Scoped extends boolean | undefined> = {
export type ElysiaConfig<Prefix extends string | undefined> = {
/**

@@ -21,8 +21,2 @@ * Path prefix of the instance

/**
* If set to true, other Elysia handler will not inherits global life-cycle, store, decorators from the current instance
*
* @default false
*/
scoped?: Scoped;
/**
* Name of the instance for debugging, and plugin deduplication purpose

@@ -390,3 +384,3 @@ */

}>) => MaybePromise<void>;
export type GracefulHandler<in Instance extends Elysia<any, any, any, any, any, any, any, any>> = (data: Instance) => any;
export type GracefulHandler<in Instance extends AnyElysia> = (data: Instance) => any;
export type ErrorHandler<in out T extends Record<string, Error> = {}, in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {

@@ -613,3 +607,3 @@ decorator: {};

} : Response>;
export type MergeElysiaInstances<Instances extends Elysia<any, any, any, any, any, any>[] = [], Prefix extends string = '', Scoped extends boolean = false, Singleton extends SingletonBase = {
export type MergeElysiaInstances<Instances extends AnyElysia[] = [], Prefix extends string = '', Singleton extends SingletonBase = {
decorator: {};

@@ -626,18 +620,14 @@ store: {};

macroFn: {};
}, Ephemeral extends EphemeralType = {
derive: {};
resolve: {};
schema: {};
}, Volatile extends EphemeralType = {
derive: {};
resolve: {};
schema: {};
}, Routes extends RouteBase = {}> = Instances extends [
infer Current extends Elysia<any, any, any, any, any, any>,
...infer Rest extends Elysia<any, any, any, any, any, any>[]
] ? Current['_types']['Scoped'] extends true ? MergeElysiaInstances<Rest, Prefix, Scoped, Singleton, Definitions, Metadata, Routes> : MergeElysiaInstances<Rest, Prefix, Scoped, Singleton & Current['_types']['Singleton'], Definitions & Current['_types']['Definitions'], Metadata & Current['_types']['Metadata'], Routes & (Prefix extends `` ? Current['_routes'] : AddPrefix<Prefix, Current['_routes']>)> : Elysia<Prefix, Scoped, {
decorator: Prettify<Singleton['decorator']>;
store: Prettify<Singleton['store']>;
derive: Prettify<Singleton['derive']>;
resolve: Prettify<Singleton['resolve']>;
}, {
type: Prettify<Definitions['type']>;
error: Prettify<Definitions['error']>;
}, {
schema: Prettify<Metadata['schema']>;
macro: Prettify<Metadata['macro']>;
macroFn: Prettify<Metadata['macroFn']>;
}, Routes>;
infer Current extends AnyElysia,
...infer Rest extends AnyElysia[]
] ? MergeElysiaInstances<Rest, Prefix, Singleton & Current['_types']['Singleton'], Definitions & Current['_types']['Definitions'], Metadata & Current['_types']['Metadata'], Ephemeral, Volatile & Current['_ephemeral'], Routes & (Prefix extends `` ? Current['_routes'] : AddPrefix<Prefix, Current['_routes']>)> : Elysia<Prefix, Prettify2<Singleton>, Prettify2<Definitions>, Prettify2<Metadata>, Routes, Ephemeral, Prettify2<Volatile>>;
export type LifeCycleType = 'global' | 'local' | 'scoped';

@@ -647,7 +637,7 @@ export type ExcludeElysiaResponse<T> = Exclude<undefined extends Awaited<T> ? Partial<Awaited<T>> : Awaited<T>, {

}>;
export type InferContext<T extends Elysia<any, any, any, any, any, any, any, any>, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = Context<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
export type InferContext<T extends AnyElysia, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = Context<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
derive: T['_ephemeral']['derive'] & T['_volatile']['derive'];
resolve: T['_ephemeral']['resolve'] & T['_volatile']['resolve'];
}, Path>;
export type InferHandler<T extends Elysia<any, any, any, any, any, any, any, any>, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = InlineHandler<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
export type InferHandler<T extends AnyElysia, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = InlineHandler<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
derive: T['_ephemeral']['derive'] & T['_volatile']['derive'];

@@ -654,0 +644,0 @@ resolve: T['_ephemeral']['resolve'] & T['_volatile']['resolve'];

{
"name": "elysia",
"description": "Ergonomic Framework for Human",
"version": "1.2.0-exp.7",
"version": "1.2.0-exp.8",
"author": {

@@ -6,0 +6,0 @@ "name": "saltyAom",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc