@dazejs/framework
Version:
Daze.js - A powerful web framework for Node.js
46 lines (40 loc) • 1.28 kB
text/typescript
/**
* Copyright (c) 2018 Chan Zewail
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
import { UseMiddlewareOption } from './interface';
/**
* use middleware on controller
*
* @param middleware
*/
export const UseMiddleware = function (middleware: any, middlewareArgs: any[] = []) {
return function (...args: any[]) {
// decorator class
if (args.length === 1) {
const [target] = args;
// const middlewares = Reflect.getMetadata('controllerMiddlewares', target) || [];
const middlewaresMeta: UseMiddlewareOption[] = Reflect.getMetadata('use-middlewares', target) ?? [];
middlewaresMeta.push({
middleware,
args: middlewareArgs
});
Reflect.defineMetadata('use-middlewares', middlewaresMeta, target);
}
// decorator method
else {
const [target, name] = args;
const middlewaresMeta = Reflect.getMetadata('use-middlewares', target.constructor, name) || {};
if (!middlewaresMeta[name]) {
middlewaresMeta[name] = [];
}
middlewaresMeta[name].push({
middleware,
args: middlewareArgs
});
Reflect.defineMetadata('use-middlewares', middlewaresMeta, target.constructor, name);
}
};
};