99
1010import string from '@poppinss/utils/string'
1111import Middleware from '@poppinss/middleware'
12+ import { RuntimeException } from '@poppinss/utils'
1213import type Encryption from '@adonisjs/encryption'
1314import type { ContainerResolver } from '@adonisjs/fold'
1415import type { Application } from '@adonisjs/application'
@@ -24,11 +25,11 @@ import debug from '../debug.js'
2425import { Request } from '../request.js'
2526import { Response } from '../response.js'
2627import { Router } from '../router/main.js'
27- import { shouldUseReturnValue } from '../helpers.js'
2828import { HttpContext } from '../http_context/main.js'
2929import { MiddlewareStore } from '../middleware/store.js'
3030import { finalHandler } from './factories/final_handler.js'
3131import { writeResponse } from './factories/write_response.js'
32+ import { useReturnValue } from './factories/use_return_value.js'
3233import { asyncLocalStorage } from '../http_context/local_storage.js'
3334import { middlewareHandler } from './factories/middleware_handler.js'
3435
@@ -177,8 +178,24 @@ export class Server<NamedMiddleware extends Record<string, LazyImport<Middleware
177178 */
178179 async boot ( ) {
179180 debug ( 'booting HTTP server' )
180- this . router ! . commit ( )
181181
182+ /**
183+ * Ensure middleware are registered
184+ */
185+ if ( ! this . router ) {
186+ throw new RuntimeException (
187+ 'Cannot boot HTTP server. Register middleware using "server.use" first'
188+ )
189+ }
190+
191+ /**
192+ * Commit routes
193+ */
194+ this . router . commit ( )
195+
196+ /**
197+ * Register custom error handler
198+ */
182199 if ( this . #errorHandler) {
183200 if ( debug . enabled ) {
184201 debug ( 'using custom error handler "%s"' , this . #errorHandler)
@@ -196,11 +213,7 @@ export class Server<NamedMiddleware extends Record<string, LazyImport<Middleware
196213 return this . #serverMiddlewareStack! . runner ( )
197214 . finalHandler ( finalHandler ( this . router ! , resolver , ctx ) )
198215 . run ( middlewareHandler ( resolver , ctx ) )
199- . then ( ( value ) => {
200- if ( shouldUseReturnValue ( value , ctx ) ) {
201- ctx . response . send ( value )
202- }
203- } )
216+ . then ( useReturnValue ( ctx ) )
204217 . catch ( ( error ) => this . #resolvedErrorHandler. handle ( error , ctx ) )
205218 . finally ( writeResponse ( ctx ) )
206219 }
0 commit comments