mirror of
https://github.com/nestjs/nest.git
synced 2026-02-21 23:11:44 +00:00
31 lines
737 B
TypeScript
31 lines
737 B
TypeScript
import { Type } from '@nestjs/common/interfaces';
|
|
import { isFunction } from '@nestjs/common/utils/shared.utils';
|
|
import * as uuid from 'uuid/v4';
|
|
|
|
export const filterMiddleware = middleware => {
|
|
return []
|
|
.concat(middleware)
|
|
.filter(isFunction)
|
|
.map(mapToClass);
|
|
};
|
|
|
|
export const mapToClass = middleware => {
|
|
if (isClass(middleware)) {
|
|
return middleware;
|
|
}
|
|
return assignToken(
|
|
class {
|
|
resolve = (...args) => (...params) => middleware(...params);
|
|
},
|
|
);
|
|
};
|
|
|
|
export function isClass(middleware: any) {
|
|
return middleware.toString().substring(0, 5) === 'class';
|
|
}
|
|
|
|
export function assignToken(metatype): Type<any> {
|
|
Object.defineProperty(metatype, 'name', { value: uuid() });
|
|
return metatype;
|
|
}
|