mirror of
https://github.com/nestjs/nest.git
synced 2026-02-21 23:11:44 +00:00
fix(core): detect conventional middleware class #6586
This commit is contained in:
@@ -29,7 +29,7 @@ export const mapToClass = <T extends Function | Type<any>>(
|
||||
excludedRoutes: RouteInfoRegex[],
|
||||
httpAdapter: HttpServer,
|
||||
) => {
|
||||
if (isClass(middleware)) {
|
||||
if (isMiddlewareClass(middleware)) {
|
||||
if (excludedRoutes.length <= 0) {
|
||||
return middleware;
|
||||
}
|
||||
@@ -59,8 +59,17 @@ export const mapToClass = <T extends Function | Type<any>>(
|
||||
);
|
||||
};
|
||||
|
||||
export function isClass(middleware: any): middleware is Type<any> {
|
||||
return middleware.toString().substring(0, 5) === 'class';
|
||||
export function isMiddlewareClass(middleware: any): middleware is Type<any> {
|
||||
const middlewareStr = middleware.toString();
|
||||
if (middlewareStr.substring(0, 5) === 'class') {
|
||||
return true;
|
||||
}
|
||||
const middlewareArr = middlewareStr.split(' ');
|
||||
return (
|
||||
middlewareArr[0] === 'function' &&
|
||||
/[A-Z]/.test(middlewareArr[1]?.[0]) &&
|
||||
typeof middleware.prototype?.use === 'function'
|
||||
);
|
||||
}
|
||||
|
||||
export function assignToken(metatype: Type<any>, token = uuid()): Type<any> {
|
||||
|
||||
@@ -5,7 +5,7 @@ import * as sinon from 'sinon';
|
||||
import {
|
||||
assignToken,
|
||||
filterMiddleware,
|
||||
isClass,
|
||||
isMiddlewareClass,
|
||||
isRouteExcluded,
|
||||
mapToClass,
|
||||
} from '../../middleware/utils';
|
||||
@@ -63,15 +63,15 @@ describe('middleware utils', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
describe('isClass', () => {
|
||||
describe('isMiddlewareClass', () => {
|
||||
describe('when middleware is a class', () => {
|
||||
it('should returns true', () => {
|
||||
expect(isClass(Test)).to.be.true;
|
||||
expect(isMiddlewareClass(Test)).to.be.true;
|
||||
});
|
||||
});
|
||||
describe('when middleware is a function', () => {
|
||||
it('should returns false', () => {
|
||||
expect(isClass(fnMiddleware)).to.be.false;
|
||||
expect(isMiddlewareClass(fnMiddleware)).to.be.false;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user