diff --git a/core/mv-middleware.ts b/core/mv-middleware.ts index 054aaa7..b6b2be4 100644 --- a/core/mv-middleware.ts +++ b/core/mv-middleware.ts @@ -1,3 +1,5 @@ +import { ContextAccessor } from "./context-accessor.ts"; + export type NextMiddlewareFunction = () => Promise; /** @@ -7,5 +9,8 @@ export type NextMiddlewareFunction = () => Promise; * Middleware will be executed immediately before a request is processed. */ export interface MvMiddleware { - execute(context: unknown, next: NextMiddlewareFunction): Promise; + execute( + context: ContextAccessor, + next: NextMiddlewareFunction, + ): Promise; } diff --git a/core/server-controller.ts b/core/server-controller.ts index 962dc93..b59e356 100644 --- a/core/server-controller.ts +++ b/core/server-controller.ts @@ -246,6 +246,7 @@ export class ServerController { }, parameterMetadatas?.map((parameterMetadata) => ({ index: parameterMetadata.index, + name: parameterMetadata.name, type: parameterMetadata.type, })), ); @@ -255,15 +256,6 @@ export class ServerController { private async handleError(err: unknown, contextAccessor: ContextAccessor) { this.#logger.error(err, "An unhandled exception occurred"); - for (const handler of this.getGlobalErrorHandlers()) { - try { - const result = await handler(err, contextAccessor); - if (result && result.handled) { - return; - } - // deno-lint-ignore no-empty - } catch {} - } if (err instanceof ServerException) { try { let content: string; @@ -283,6 +275,15 @@ export class ServerController { // deno-lint-ignore no-empty } catch {} } + for (const handler of this.getGlobalErrorHandlers()) { + try { + const result = await handler(err, contextAccessor); + if (result && result.handled) { + return; + } + // deno-lint-ignore no-empty + } catch {} + } contextAccessor.setBody("An unknown error occurred"); contextAccessor.setHeader("Content-Type", "text/plain"); contextAccessor.setStatus(500);