@@ -25,6 +25,8 @@ import { toRequest } from "./utils/request.ts";
2525
2626export type H3Core = H3Type ;
2727
28+ const NoHandler = ( ) => kNotFound ;
29+
2830export const H3Core = /* @__PURE__ */ ( ( ) => {
2931 // prettier-ignore
3032 const HTTPMethods = [ "GET" , "POST" , "PUT" , "DELETE" , "PATCH" , "HEAD" , "OPTIONS" , "CONNECT" , "TRACE" ] as const ;
@@ -99,18 +101,23 @@ export const H3Core = /* @__PURE__ */ (() => {
99101 this . _routes . push ( _route ) ;
100102 }
101103
104+ _getMiddleware ( route : MatchedRoute < H3Route > | void ) : Middleware [ ] {
105+ return route ?. data . middleware
106+ ? [ ...this . _middleware , ...route . data . middleware ]
107+ : this . _middleware ;
108+ }
109+
102110 handler ( event : H3Event ) : unknown | Promise < unknown > {
103111 const route = this . _findRoute ( event ) ;
104112 if ( route ) {
105113 event . context . params = route . params ;
106114 event . context . matchedRoute = route . data ;
107115 }
108- const middleware = route ?. data . middleware
109- ? [ ...this . _middleware , ...route . data . middleware ]
110- : this . _middleware ;
111- return callMiddleware ( event , middleware , ( ) => {
112- return route ? route . data . handler ( event ) : kNotFound ;
113- } ) ;
116+ const routeHandler = route ?. data . handler || NoHandler ;
117+ const middleware = this . _getMiddleware ( route ) ;
118+ return middleware . length > 0
119+ ? callMiddleware ( event , middleware , ( ) => routeHandler ( event ) )
120+ : routeHandler ( event ) ;
114121 }
115122
116123 mount (
@@ -208,9 +215,7 @@ export const H3Core = /* @__PURE__ */ (() => {
208215} ) ( ) as unknown as { new ( config ?: H3Config ) : H3Type } ;
209216
210217export class H3 extends H3Core {
211- /**
212- * @internal
213- */
218+ /** @internal */
214219 _rou3 : RouterContext < H3Route > ;
215220
216221 constructor ( config : H3Config = { } ) {
0 commit comments