@@ -15,10 +15,12 @@ export default function routing(nitro: Nitro) {
1515 "_importHash"
1616 ) ;
1717
18+ const traceH3 = ! ! nitro . options . tracingChannel ?. h3 ;
19+
1820 return /* js */ `
1921import * as __routeRules__ from "#nitro/runtime/route-rules";
2022import * as srvxNode from "srvx/node"
21- import * as h3 from "h3";
23+ import * as h3 from "h3";${ traceH3 ? `\nimport { wrapHandlerWithTracing } from "h3/tracing";` : "" }
2224
2325export const findRouteRules = ${ nitro . routing . routeRules . compileToString ( { serialize : serializeRouteRule , matchAll : true } ) }
2426
@@ -41,7 +43,7 @@ ${allHandlers
4143 )
4244 . join ( "\n" ) }
4345
44- export const findRoute = ${ nitro . routing . routes . compileToString ( { serialize : serializeHandler } ) }
46+ export const findRoute = ${ nitro . routing . routes . compileToString ( { serialize : ( h ) => serializeHandler ( h , { tracing : traceH3 } ) } ) }
4547
4648export const findRoutedMiddleware = ${ nitro . routing . routedMiddleware . compileToString ( { serialize : serializeHandler , matchAll : true } ) } ;
4749
@@ -61,18 +63,20 @@ function uniqueBy<T>(arr: T[], key: keyof T): T[] {
6163
6264type MaybeArray < T > = T | T [ ] ;
6365
64- function serializeHandler ( h : MaybeArray < NitroEventHandler & { _importHash : string } > ) : string {
66+ function serializeHandler (
67+ h : MaybeArray < NitroEventHandler & { _importHash : string } > ,
68+ opts : { tracing ?: boolean } = { }
69+ ) : string {
6570 const meta = Array . isArray ( h ) ? h [ 0 ] : h ;
71+ const handler = Array . isArray ( h )
72+ ? `multiHandler(${ h . map ( ( handler ) => serializeHandlerFn ( handler ) ) . join ( "," ) } )`
73+ : serializeHandlerFn ( h ) ;
6674
6775 return `{${ [
6876 `route:${ JSON . stringify ( meta . route ) } ` ,
6977 meta . method && `method:${ JSON . stringify ( meta . method ) } ` ,
7078 meta . meta && `meta:${ JSON . stringify ( meta . meta ) } ` ,
71- `handler:${
72- Array . isArray ( h )
73- ? `multiHandler(${ h . map ( ( handler ) => serializeHandlerFn ( handler ) ) . join ( "," ) } )`
74- : serializeHandlerFn ( h )
75- } `,
79+ `handler:${ opts . tracing ? `wrapHandlerWithTracing(${ handler } )` : handler } ` ,
7680 ]
7781 . filter ( Boolean )
7882 . join ( "," ) } }`;
0 commit comments