@@ -350,6 +350,8 @@ export const composeHandler = ({
350350 ! ! hooks . trace . length
351351
352352 const isHandleFn = typeof handler === 'function'
353+ if ( ! isHandleFn ) handler = mapCompactResponse ( handler )
354+
353355 const handle = isHandleFn ? `handler(c)` : `handler`
354356 const handleResponse = hooks . onResponse . length
355357 ? `\n;(async () => {${ hooks . onResponse
@@ -383,6 +385,8 @@ export const composeHandler = ({
383385
384386 // @ts -expect-error private
385387 const defaultHeaders = app . setHeaders
388+ const hasDefaultHeaders =
389+ defaultHeaders && ! ! Object . keys ( defaultHeaders ) . length
386390
387391 // ? defaultHeaders doesn't imply that user will use headers in handler
388392 const hasHeaders = inference . headers || validator . headers
@@ -552,7 +556,7 @@ export const composeHandler = ({
552556 inference . set ||
553557 hasTraceSet ||
554558 hasHeaders ||
555- ( defaultHeaders && ! ! Object . keys ( defaultHeaders ) . length )
559+ hasDefaultHeaders
556560
557561 if ( hasTrace ) fnLiteral += '\nconst id = c.$$requestId\n'
558562
@@ -781,7 +785,6 @@ export const composeHandler = ({
781785 name : transform . name
782786 } )
783787
784- // @ts -ignore
785788 if ( transform . $elysia === 'derive' )
786789 fnLiteral += isAsync ( transform )
787790 ? `Object.assign(c, await transform[${ i } ](c));`
@@ -980,7 +983,9 @@ export const composeHandler = ({
980983 } )
981984 if ( hooks . afterHandle ) {
982985 report ( 'handle' , {
983- name : isHandleFn ? handler . name : undefined
986+ name : isHandleFn
987+ ? ( handler as Function ) . name
988+ : undefined
984989 } ) ( )
985990
986991 for ( let i = 0 ; i < hooks . afterHandle . length ; i ++ ) {
@@ -1038,7 +1043,7 @@ export const composeHandler = ({
10381043
10391044 if ( hooks ?. afterHandle . length ) {
10401045 const endHandle = report ( 'handle' , {
1041- name : isHandleFn ? handler . name : undefined
1046+ name : isHandleFn ? ( handler as Function ) . name : undefined
10421047 } )
10431048
10441049 if ( hooks . afterHandle . length )
@@ -1112,7 +1117,7 @@ export const composeHandler = ({
11121117 else fnLiteral += `return mapCompactResponse(r, c.request)\n`
11131118 } else {
11141119 const endHandle = report ( 'handle' , {
1115- name : isHandleFn ? handler . name : undefined
1120+ name : isHandleFn ? ( handler as Function ) . name : undefined
11161121 } )
11171122
11181123 if ( validator . response || hooks . mapResponse . length ) {
@@ -1139,9 +1144,22 @@ export const composeHandler = ({
11391144
11401145 fnLiteral += encodeCookie
11411146
1142- if ( handler instanceof Response )
1143- fnLiteral += `return ${ handle } .clone()\n`
1144- else if ( hasSet )
1147+ if ( handler instanceof Response ) {
1148+ fnLiteral +=
1149+ inference . set || hasDefaultHeaders
1150+ ? `if(
1151+ isNotEmpty(c.set.headers) ||
1152+ c.set.status !== 200 ||
1153+ c.set.redirect ||
1154+ c.set.cookie
1155+ )
1156+ return mapResponse(r, c.set, c.request)
1157+ else
1158+ return ${ handle } .clone()`
1159+ : `return ${ handle } .clone()`
1160+
1161+ fnLiteral += '\n'
1162+ } else if ( hasSet )
11451163 fnLiteral += `return mapResponse(r, c.set, c.request)\n`
11461164 else fnLiteral += `return mapCompactResponse(r, c.request)\n`
11471165 } else if ( traceConditions . handle || hasCookie ) {
@@ -1175,9 +1193,22 @@ export const composeHandler = ({
11751193
11761194 report ( 'afterHandle' ) ( )
11771195
1178- if ( handler instanceof Response )
1179- fnLiteral += `return ${ handle } .clone()\n`
1180- else if ( hasSet )
1196+ if ( handler instanceof Response ) {
1197+ fnLiteral +=
1198+ inference . set || hasDefaultHeaders
1199+ ? `if(
1200+ isNotEmpty(c.set.headers) ||
1201+ c.set.status !== 200 ||
1202+ c.set.redirect ||
1203+ c.set.cookie
1204+ )
1205+ return mapResponse(r, c.set, c.request)
1206+ else
1207+ return ${ handle } .clone()`
1208+ : `return ${ handle } .clone()`
1209+
1210+ fnLiteral += '\n'
1211+ } else if ( hasSet )
11811212 fnLiteral += `return mapResponse(${ handled } , c.set, c.request)\n`
11821213 else
11831214 fnLiteral += `return mapCompactResponse(${ handled } , c.request)\n`
@@ -1267,7 +1298,8 @@ export const composeHandler = ({
12671298 mapResponse,
12681299 mapCompactResponse,
12691300 mapEarlyResponse,
1270- parseQuery
1301+ parseQuery,
1302+ isNotEmpty
12711303 },
12721304 error: {
12731305 NotFoundError,
@@ -1315,7 +1347,8 @@ export const composeHandler = ({
13151347 mapResponse,
13161348 mapCompactResponse,
13171349 mapEarlyResponse,
1318- parseQuery
1350+ parseQuery,
1351+ isNotEmpty
13191352 } ,
13201353 error : {
13211354 NotFoundError,
0 commit comments