From c3ee38bf657b527470a875bdb1cf91968aed72ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franc=CC=A7ois-Pierre=20Bouchard?= Date: Thu, 4 Feb 2021 06:59:39 -0500 Subject: [PATCH] Only allow actual member functions on member invokers --- src/__tests__/integration.test.ts | 2 +- src/controller.ts | 5 +++-- src/invokers.ts | 3 +-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/__tests__/integration.test.ts b/src/__tests__/integration.test.ts index 04fedde..3dae293 100644 --- a/src/__tests__/integration.test.ts +++ b/src/__tests__/integration.test.ts @@ -51,7 +51,7 @@ function createServer(spies: any) { const classAPI = makeClassInvoker(TestClass) router.get('/function', fnAPI('handle')) router.get('/class', classAPI('handle')) - router.get('/fail', fnAPI('not a method')) + router.get('/fail', fnAPI('not a method' as any)) app.use(router) return new Promise((resolve, reject) => { diff --git a/src/controller.ts b/src/controller.ts index 213704a..2ef0c36 100644 --- a/src/controller.ts +++ b/src/controller.ts @@ -5,7 +5,8 @@ import { HttpVerbs, getStateAndTarget, IStateAndTarget, - IAwilixControllerBuilder + IAwilixControllerBuilder, + ClassOrFunctionReturning } from 'awilix-router-core' import { makeInvoker } from './invokers' import { Router } from 'express' @@ -83,7 +84,7 @@ function _registerController( methodCfg.paths, ...methodCfg.beforeMiddleware, /*tslint:disable-next-line*/ - makeInvoker(target as any)(methodName), + makeInvoker(target as ClassOrFunctionReturning)(methodName as any), ...methodCfg.afterMiddleware ) }) diff --git a/src/invokers.ts b/src/invokers.ts index 16a7991..fa6db74 100644 --- a/src/invokers.ts +++ b/src/invokers.ts @@ -10,7 +10,6 @@ import { } from 'awilix' import { isClass } from 'awilix/lib/utils' import { NextFunction, Request, Response } from 'express' -import { MethodName } from 'awilix-router-core' import assert = require('assert') /** @@ -82,7 +81,7 @@ export function makeResolverInvoker(resolver: Resolver) { * @param {MethodName} methodToInvoke * @return {(req) => void} */ - return function makeMemberInvoker(methodToInvoke: MethodName) { + return function makeMemberInvoker(methodToInvoke: K) { /** * The invoker middleware. *