Add ability to pass arguments to parameter providing middleware

This commit is contained in:
2022-04-05 10:25:07 -05:00
parent 8b9f393405
commit ee21811771
3 changed files with 9 additions and 8 deletions

View File

@@ -310,8 +310,9 @@ export class Route<TReturn extends ResponseObject, THandlerParams extends unknow
return params
}
public parameterMiddleware<T>(
handler: ParameterProvidingMiddleware<T> | Instantiable<ParameterMiddleware<T>>,
public parameterMiddleware<T, THandlerArgs extends any[] = []>(
handler: ParameterProvidingMiddleware<T> | Instantiable<ParameterMiddleware<T, THandlerArgs>>,
...handlerArgs: THandlerArgs
): Route<TReturn, PrefixTypeArray<T, THandlerParams>> {
const route = new Route<TReturn, PrefixTypeArray<T, THandlerParams>>(
this.method,
@@ -321,7 +322,7 @@ export class Route<TReturn extends ResponseObject, THandlerParams extends unknow
route.copyFrom(this)
if ( handler.prototype instanceof ParameterMiddleware ) {
route.parameters.push(req => req.make<ParameterMiddleware<T>>(handler).handle())
route.parameters.push(req => req.make<ParameterMiddleware<T, THandlerArgs>>(handler).handle(...handlerArgs))
}
route.parameters.push(handler as ParameterProvidingMiddleware<T>)