@decorators/express
Advanced tools
Comparing version
import { Router, Express } from 'express'; | ||
import { Type } from './middleware'; | ||
import { Type, MiddlewareFunction } from './middleware'; | ||
/** | ||
@@ -11,1 +11,9 @@ * Attach controllers to express application | ||
export declare function attachControllerInstances(app: Express | Router, controllers: InstanceType<Type>[]): Promise<void>; | ||
/** | ||
* Attach middleware to controller metadata | ||
* @param {boolean} unshift if set to false all the custom decorator middlewares will be exectuted after the middlewares attached through controller | ||
* | ||
* | ||
* Note- Please use custom decorators before express method decorators Get Post etc. | ||
*/ | ||
export declare function attachMiddleware(target: any, property: string, middleware: MiddlewareFunction): void; |
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.attachControllerInstances = exports.attachControllers = void 0; | ||
exports.attachMiddleware = exports.attachControllerInstances = exports.attachControllers = void 0; | ||
const express_1 = require("express"); | ||
@@ -20,9 +11,7 @@ const di_1 = require("@decorators/di"); | ||
*/ | ||
function attachControllers(app, controllers) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const promises = controllers.map((controller) => registerController(app, controller, getController)); | ||
yield Promise.all(promises); | ||
// error middleware must be registered as the very last one | ||
app.use((0, middleware_1.errorMiddlewareHandler)()); | ||
}); | ||
async function attachControllers(app, controllers) { | ||
const promises = controllers.map((controller) => registerController(app, controller, getController)); | ||
await Promise.all(promises); | ||
// error middleware must be registered as the very last one | ||
app.use((0, middleware_1.errorMiddlewareHandler)()); | ||
} | ||
@@ -33,9 +22,7 @@ exports.attachControllers = attachControllers; | ||
*/ | ||
function attachControllerInstances(app, controllers) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const promises = controllers.map((controller) => registerController(app, controller, (c) => c)); | ||
yield Promise.all(promises); | ||
// error middleware must be registered as the very last one | ||
app.use((0, middleware_1.errorMiddlewareHandler)()); | ||
}); | ||
async function attachControllerInstances(app, controllers) { | ||
const promises = controllers.map((controller) => registerController(app, controller, (c) => c)); | ||
await Promise.all(promises); | ||
// error middleware must be registered as the very last one | ||
app.use((0, middleware_1.errorMiddlewareHandler)()); | ||
} | ||
@@ -46,36 +33,34 @@ exports.attachControllerInstances = attachControllerInstances; | ||
*/ | ||
function registerController(app, Controller, extractController) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const controller = yield extractController(Controller); | ||
const meta = (0, meta_1.getMeta)(controller); | ||
const router = (0, express_1.Router)(meta.routerOptions); | ||
/** | ||
* Wrap all registered middleware with helper function | ||
* that can instantiate or get from the container instance of the class | ||
* or execute given middleware function | ||
*/ | ||
const routerMiddleware = (meta.middleware || []) | ||
.map(middleware => (0, middleware_1.middlewareHandler)(middleware)); | ||
/** | ||
* Apply router middleware | ||
*/ | ||
if (routerMiddleware.length) { | ||
router.use(...routerMiddleware); | ||
} | ||
/** | ||
* Applying registered routes | ||
*/ | ||
for (const [methodName, methodMeta] of Object.entries(meta.routes)) { | ||
methodMeta.routes.forEach(route => { | ||
const routeMiddleware = (route.middleware || []) | ||
.map(middleware => (0, middleware_1.middlewareHandler)(middleware)); | ||
const handler = routeHandler(controller, methodName, meta.params[methodName], methodMeta.status); | ||
router[route.method].apply(router, [ | ||
route.url, ...routeMiddleware, handler, | ||
]); | ||
}); | ||
} | ||
app.use(meta.url, router); | ||
return app; | ||
}); | ||
async function registerController(app, Controller, extractController) { | ||
const controller = await extractController(Controller); | ||
const meta = (0, meta_1.getMeta)(controller); | ||
const router = (0, express_1.Router)(meta.routerOptions); | ||
/** | ||
* Wrap all registered middleware with helper function | ||
* that can instantiate or get from the container instance of the class | ||
* or execute given middleware function | ||
*/ | ||
const routerMiddleware = (meta.middleware || []) | ||
.map(middleware => (0, middleware_1.middlewareHandler)(middleware)); | ||
/** | ||
* Apply router middleware | ||
*/ | ||
if (routerMiddleware.length) { | ||
router.use(...routerMiddleware); | ||
} | ||
/** | ||
* Applying registered routes | ||
*/ | ||
for (const [methodName, methodMeta] of Object.entries(meta.routes)) { | ||
methodMeta.routes.forEach(route => { | ||
const routeMiddleware = (route.middleware || []) | ||
.map(middleware => (0, middleware_1.middlewareHandler)(middleware)); | ||
const handler = routeHandler(controller, methodName, meta.params[methodName], methodMeta.status); | ||
router[route.method].apply(router, [ | ||
route.url, ...routeMiddleware, handler, | ||
]); | ||
}); | ||
} | ||
app.use(meta.url, router); | ||
return app; | ||
} | ||
@@ -163,2 +148,19 @@ /** | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHByZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHFDQUF3RztBQUN4Ryx1Q0FBMkM7QUFFM0MsaUNBQXNGO0FBQ3RGLDZDQUErRTtBQUUvRTs7R0FFRztBQUNILFNBQXNCLGlCQUFpQixDQUFDLEdBQXFCLEVBQUUsV0FBbUI7O1FBQ2hGLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFnQixFQUFFLEVBQUUsQ0FDcEQsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FDbkQsQ0FBQztRQUVGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QiwyREFBMkQ7UUFDM0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFBLG1DQUFzQixHQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQUE7QUFURCw4Q0FTQztBQUVEOztHQUVHO0FBQ0gsU0FBc0IseUJBQXlCLENBQUMsR0FBcUIsRUFBRSxXQUFpQzs7UUFDdEcsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQWdDLEVBQUUsRUFBRSxDQUNwRSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2xFLENBQUM7UUFFRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUIsMkRBQTJEO1FBQzNELEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBQSxtQ0FBc0IsR0FBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUFBO0FBVEQsOERBU0M7QUFFRDs7R0FFRztBQUNILFNBQWUsa0JBQWtCLENBQy9CLEdBQXlCLEVBQ3pCLFVBQXFDLEVBQ3JDLGlCQUFxRzs7UUFFckcsTUFBTSxVQUFV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QyxPQUFPO2dCQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzdDLE1BQU07WUFDUixLQUFLLG9CQUFhLENBQUMsT0FBTztnQkFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxNQUFNO1NBQ1Q7S0FDRjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxhQUFhLENBQUMsVUFBZ0I7SUFDckMsSUFBSTtRQUNGLE9BQU8sY0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNsQztJQUFDLFdBQU07UUFDTixPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7S0FDekI7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFFBQVEsQ0FBQyxNQUFXLEVBQUUsU0FBaUIsRUFBRSxJQUFZO0lBQzVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUM7SUFFMUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXF1ZXN0SGFuZGxlciwgQXBwbGljYXRpb24sIFJvdXRlciwgRXhwcmVzcywgUmVxdWVzdCwgUmVzcG9uc2UsIE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSAnQGRlY29yYXRvcnMvZGknO1xuXG5pbXBvcnQgeyBnZXRNZXRhLCBQYXJhbWV0ZXJUeXBlLCBFeHByZXNzQ2xhc3MsIFBhcmFtZXRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL21ldGEnO1xuaW1wb3J0IHsgbWlkZGxld2FyZUhhbmRsZXIsIGVycm9yTWlkZGxld2FyZUhhbmRsZXIsIFR5cGUgfSBmcm9tICcuL21pZGRsZXdhcmUnO1xuXG4vKipcbiAqIEF0dGFjaCBjb250cm9sbGVycyB0byBleHByZXNzIGFwcGxpY2F0aW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhdHRhY2hDb250cm9sbGVycyhhcHA6IEV4cHJlc3MgfCBSb3V0ZXIsIGNvbnRyb2xsZXJzOiBUeXBlW10pIHtcbiAgY29uc3QgcHJvbWlzZXMgPSBjb250cm9sbGVycy5tYXAoKGNvbnRyb2xsZXI6IFR5cGUpID0+XG4gICAgcmVnaXN0ZXJDb250cm9sbGVyKGFwcCwgY29udHJvbGxlciwgZ2V0Q29udHJvbGxlciksXG4gICk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gIC8vIGVycm9yIG1pZGRsZXdhcmUgbXVzdCBiZSByZWdpc3RlcmVkIGFzIHRoZSB2ZXJ5IGxhc3Qgb25lXG4gIGFwcC51c2UoZXJyb3JNaWRkbGV3YXJlSGFuZGxlcigpKTtcbn1cblxuLyoqXG4gKiBBdHRhY2ggY29udHJvbGxlciBpbnN0YW5jZXMgdG8gZXhwcmVzcyBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXR0YWNoQ29udHJvbGxlckluc3RhbmNlcyhhcHA6IEV4cHJlc3MgfCBSb3V0ZXIsIGNvbnRyb2xsZXJzOiBJbnN0YW5jZVR5cGU8VHlwZT5bXSkge1xuICBjb25zdCBwcm9taXNlcyA9IGNvbnRyb2xsZXJzLm1hcCgoY29udHJvbGxlcjogSW5zdGFuY2VUeXBlPFR5cGU+W10pID0+XG4gICAgcmVnaXN0ZXJDb250cm9sbGVyKGFwcCwgY29udHJvbGxlciwgKGM6IEluc3RhbmNlVHlwZTxUeXBlPikgPT4gYyksXG4gICk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gIC8vIGVycm9yIG1pZGRsZXdhcmUgbXVzdCBiZSByZWdpc3RlcmVkIGFzIHRoZSB2ZXJ5IGxhc3Qgb25lXG4gIGFwcC51c2UoZXJyb3JNaWRkbGV3YXJlSGFuZGxlcigpKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBjb250cm9sbGVyIHZpYSByZWdpc3RlcmluZyBuZXcgUm91dGVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyQ29udHJvbGxlcihcbiAgYXBwOiBBcHBsaWNhdGlvbiB8IFJvdXRlcixcbiAgQ29udHJvbGxlcjogVHlwZSB8IEluc3RhbmNlVHlwZTxUeXBlPixcbiAgZXh0cmFjdENvbnRyb2xsZXI6IChjOiBUeXBlIHwgSW5zdGFuY2VUeXBlPFR5cGU+KSA9PiBQcm9taXNlPEluc3RhbmNlVHlwZTxUeXBlPj4gfCBJbnN0YW5jZVR5cGU8VHlwZT4sXG4pIHtcbiAgY29uc3QgY29udHJvbGxlciA9IGF3YWl0IGV4dHJhY3RDb250cm9sbGVyKENvbnRyb2xsZXIpO1xuICBjb25zdCBtZXRhID0gZ2V0TWV0YShjb250cm9sbGVyKTtcbiAgY29uc3Qgcm91dGVyID0gUm91dGVyKG1ldGEucm91dGVyT3B0aW9ucyk7XG5cbiAgLyoqXG4gICAqIFdyYXAgYWxsIHJlZ2lzdGVyZWQgbWlkZGxld2FyZSB3aXRoIGhlbHBlciBmdW5jdGlvblxuICAgKiB0aGF0IGNhbiBpbnN0YW50aWF0ZSBvciBnZXQgZnJvbSB0aGUgY29udGFpbmVyIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuICAgKiBvciBleGVjdXRlIGdpdmVuIG1pZGRsZXdhcmUgZnVuY3Rpb25cbiAgICovXG4gIGNvbnN0IHJvdXRlck1pZGRsZXdhcmU6IFJlcXVlc3RIYW5kbGVyW10gPSAobWV0YS5taWRkbGV3YXJlIHx8IFtdKVxuICAgIC5tYXAobWlkZGxld2FyZSA9PiBtaWRkbGV3YXJlSGFuZGxlcihtaWRkbGV3YXJlKSk7XG5cbiAgLyoqXG4gICAqIEFwcGx5IHJvdXRlciBtaWRkbGV3YXJlXG4gICAqL1xuICBpZiAocm91dGVyTWlkZGxld2FyZS5sZW5ndGgpIHtcbiAgICByb3V0ZXIudXNlKC4uLnJvdXRlck1pZGRsZXdhcmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5aW5nIHJlZ2lzdGVyZWQgcm91dGVzXG4gICAqL1xuICBmb3IgKGNvbnN0IFttZXRob2ROYW1lLCBtZXRob2RNZXRhXSBvZiBPYmplY3QuZW50cmllcyhtZXRhLnJvdXRlcykpIHtcbiAgICBtZXRob2RNZXRhLnJvdXRlcy5mb3JFYWNoKHJvdXRlID0+IHtcbiAgICAgIGNvbnN0IHJvdXRlTWlkZGxld2FyZTogUmVxdWVzdEhhbmRsZXJbXSA9IChyb3V0ZS5taWRkbGV3YXJlIHx8IFtdKVxuICAgICAgICAubWFwKG1pZGRsZXdhcmUgPT4gbWlkZGxld2FyZUhhbmRsZXIobWlkZGxld2FyZSkpO1xuICAgICAgY29uc3QgaGFuZGxlciA9IHJvdXRlSGFuZGxlcihjb250cm9sbGVyLCBtZXRob2ROYW1lLCBtZXRhLnBhcmFtc1ttZXRob2ROYW1lXSwgbWV0aG9kTWV0YS5zdGF0dXMpO1xuXG4gICAgICByb3V0ZXJbcm91dGUubWV0aG9kXS5hcHBseShyb3V0ZXIsIFtcbiAgICAgICAgcm91dGUudXJsLCAuLi5yb3V0ZU1pZGRsZXdhcmUsIGhhbmRsZXIsXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIChhcHAgYXMgUm91dGVyKS51c2UobWV0YS51cmwsIHJvdXRlcik7XG5cbiAgcmV0dXJuIGFwcDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGZ1bmN0aW9uIHRoYXQgd2lsbCBjYWxsIG9yaWdpbmFsIHJvdXRlIGhhbmRsZXIgYW5kIHdyYXAgcmV0dXJuIG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gcm91dGVIYW5kbGVyKGNvbnRyb2xsZXI6IEV4cHJlc3NDbGFzcywgbWV0aG9kTmFtZTogc3RyaW5nLCBwYXJhbXM6IFBhcmFtZXRlckNvbmZpZ3VyYXRpb25bXSwgc3RhdHVzOiBudW1iZXIpIHtcbiAgcmV0dXJuIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSBleHRyYWN0UGFyYW1ldGVycyhyZXEsIHJlcywgbmV4dCwgcGFyYW1zKTtcbiAgICBjb25zdCByZXN1bHQgPSBjb250cm9sbGVyW21ldGhvZE5hbWVdLmNhbGwoY29udHJvbGxlciwgLi4uYXJncyk7XG5cbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgcmVzdWx0LnRoZW4oKHI6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIXJlcy5oZWFkZXJzU2VudCAmJiB0eXBlb2YgciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICByZXMuc3RhdHVzKHN0YXR1cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcy5zZW5kKHIpO1xuICAgICAgICB9XG4gICAgICB9KS5jYXRjaChuZXh0KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXN1bHQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoIXJlcy5oZWFkZXJzU2VudCkge1xuICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyhzdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zZW5kKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHBhcmFtZXRlcnMgZm9yIGhhbmRsZXJzXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RQYXJhbWV0ZXJzKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uLCBwYXJhbXM6IFBhcmFtZXRlckNvbmZpZ3VyYXRpb25bXSA9IFtdKTogYW55W10ge1xuICBjb25zdCBhcmdzID0gW107XG5cbiAgZm9yIChjb25zdCB7IG5hbWUsIGluZGV4LCB0eXBlIH0gb2YgcGFyYW1zKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuUkVTUE9OU0U6XG4gICAgICAgIGFyZ3NbaW5kZXhdID0gcmVzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5SRVFVRVNUOlxuICAgICAgICBhcmdzW2luZGV4XSA9IGdldFBhcmFtKHJlcSwgbnVsbCwgbmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLk5FWFQ6XG4gICAgICAgIGFyZ3NbaW5kZXhdID0gbmV4dDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuUEFSQU1TOlxuICAgICAgICBhcmdzW2luZGV4XSA9IGdldFBhcmFtKHJlcSwgJ3BhcmFtcycsIG5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5RVUVSWTpcbiAgICAgICAgYXJnc1tpbmRleF0gPSBnZXRQYXJhbShyZXEsICdxdWVyeScsIG5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5CT0RZOlxuICAgICAgICBhcmdzW2luZGV4XSA9IGdldFBhcmFtKHJlcSwgJ2JvZHknLCBuYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuSEVBREVSUzpcbiAgICAgICAgYXJnc1tpbmRleF0gPSBnZXRQYXJhbShyZXEsICdoZWFkZXJzJywgbmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLkNPT0tJRVM6XG4gICAgICAgIGFyZ3NbaW5kZXhdID0gZ2V0UGFyYW0ocmVxLCAnY29va2llcycsIG5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJncztcbn1cblxuLyoqXG4gKiBHZXQgY29udHJvbGxlciBpbnN0YW5jZSBmcm9tIGNvbnRhaW5lciBvciBpbnN0YW50aWF0ZSBvbmVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29udHJvbGxlcihDb250cm9sbGVyOiBUeXBlKTogUHJvbWlzZTxFeHByZXNzQ2xhc3M+IHwgRXhwcmVzc0NsYXNzIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gQ29udGFpbmVyLmdldChDb250cm9sbGVyKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG5ldyBDb250cm9sbGVyKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgcGFyYW1ldGVyIHZhbHVlIGZyb20gdGhlIHNvdXJjZSBvYmplY3RcbiAqL1xuZnVuY3Rpb24gZ2V0UGFyYW0oc291cmNlOiBhbnksIHBhcmFtVHlwZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBhbnkge1xuICBjb25zdCBwYXJhbSA9IHNvdXJjZVtwYXJhbVR5cGVdIHx8IHNvdXJjZTtcblxuICByZXR1cm4gbmFtZSA/IHBhcmFtW25hbWVdIDogcGFyYW07XG59XG4iXX0= | ||
/** | ||
* Attach middleware to controller metadata | ||
* @param {boolean} unshift if set to false all the custom decorator middlewares will be exectuted after the middlewares attached through controller | ||
* | ||
* | ||
* Note- Please use custom decorators before express method decorators Get Post etc. | ||
*/ | ||
function attachMiddleware(target, property, middleware) { | ||
const meta = (0, meta_1.getMeta)(target); | ||
if (meta.url !== '') { | ||
meta.middleware.unshift(middleware); | ||
} | ||
else if (property in meta.routes) { | ||
meta.routes[property].routes[0].middleware.unshift(middleware); | ||
} | ||
} | ||
exports.attachMiddleware = attachMiddleware; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHByZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUF3RztBQUN4Ryx1Q0FBMkM7QUFFM0MsaUNBQWtHO0FBQ2xHLDZDQUFrRztBQUVsRzs7R0FFRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxHQUFxQixFQUFFLFdBQW1CO0lBQ2hGLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFnQixFQUFFLEVBQUUsQ0FDcEQsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FDbkQsQ0FBQztJQUVGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU1QiwyREFBMkQ7SUFDM0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFBLG1DQUFzQixHQUFFLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBVEQsOENBU0M7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxHQUFxQixFQUFFLFdBQWlDO0lBQ3RHLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFnQyxFQUFFLEVBQUUsQ0FDcEUsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNsRSxDQUFDO0lBRUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTVCLDJEQUEyRDtJQUMzRCxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUEsbUNBQXNCLEdBQUUsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFURCw4REFTQztBQUVEOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGtCQUFrQixDQUMvQixHQUF5QixFQUN6QixVQUFxQyxFQUNyQyxpQkFBcUc7SUFFckcsTUFBTSxVQUFVLEdBQUcsTUFB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Q0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDaEU7QUFDSCxDQUFDO0FBUEQsNENBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXF1ZXN0SGFuZGxlciwgQXBwbGljYXRpb24sIFJvdXRlciwgRXhwcmVzcywgUmVxdWVzdCwgUmVzcG9uc2UsIE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSAnQGRlY29yYXRvcnMvZGknO1xuXG5pbXBvcnQgeyBnZXRNZXRhLCBQYXJhbWV0ZXJUeXBlLCBFeHByZXNzQ2xhc3MsIFBhcmFtZXRlckNvbmZpZ3VyYXRpb24sIEV4cHJlc3NNZXRhfSBmcm9tICcuL21ldGEnO1xuaW1wb3J0IHsgbWlkZGxld2FyZUhhbmRsZXIsIGVycm9yTWlkZGxld2FyZUhhbmRsZXIsIFR5cGUsIE1pZGRsZXdhcmVGdW5jdGlvbn0gZnJvbSAnLi9taWRkbGV3YXJlJztcblxuLyoqXG4gKiBBdHRhY2ggY29udHJvbGxlcnMgdG8gZXhwcmVzcyBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXR0YWNoQ29udHJvbGxlcnMoYXBwOiBFeHByZXNzIHwgUm91dGVyLCBjb250cm9sbGVyczogVHlwZVtdKSB7XG4gIGNvbnN0IHByb21pc2VzID0gY29udHJvbGxlcnMubWFwKChjb250cm9sbGVyOiBUeXBlKSA9PlxuICAgIHJlZ2lzdGVyQ29udHJvbGxlcihhcHAsIGNvbnRyb2xsZXIsIGdldENvbnRyb2xsZXIpLFxuICApO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAvLyBlcnJvciBtaWRkbGV3YXJlIG11c3QgYmUgcmVnaXN0ZXJlZCBhcyB0aGUgdmVyeSBsYXN0IG9uZVxuICBhcHAudXNlKGVycm9yTWlkZGxld2FyZUhhbmRsZXIoKSk7XG59XG5cbi8qKlxuICogQXR0YWNoIGNvbnRyb2xsZXIgaW5zdGFuY2VzIHRvIGV4cHJlc3MgYXBwbGljYXRpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGF0dGFjaENvbnRyb2xsZXJJbnN0YW5jZXMoYXBwOiBFeHByZXNzIHwgUm91dGVyLCBjb250cm9sbGVyczogSW5zdGFuY2VUeXBlPFR5cGU+W10pIHtcbiAgY29uc3QgcHJvbWlzZXMgPSBjb250cm9sbGVycy5tYXAoKGNvbnRyb2xsZXI6IEluc3RhbmNlVHlwZTxUeXBlPltdKSA9PlxuICAgIHJlZ2lzdGVyQ29udHJvbGxlcihhcHAsIGNvbnRyb2xsZXIsIChjOiBJbnN0YW5jZVR5cGU8VHlwZT4pID0+IGMpLFxuICApO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAvLyBlcnJvciBtaWRkbGV3YXJlIG11c3QgYmUgcmVnaXN0ZXJlZCBhcyB0aGUgdmVyeSBsYXN0IG9uZVxuICBhcHAudXNlKGVycm9yTWlkZGxld2FyZUhhbmRsZXIoKSk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgY29udHJvbGxlciB2aWEgcmVnaXN0ZXJpbmcgbmV3IFJvdXRlclxuICovXG5hc3luYyBmdW5jdGlvbiByZWdpc3RlckNvbnRyb2xsZXIoXG4gIGFwcDogQXBwbGljYXRpb24gfCBSb3V0ZXIsXG4gIENvbnRyb2xsZXI6IFR5cGUgfCBJbnN0YW5jZVR5cGU8VHlwZT4sXG4gIGV4dHJhY3RDb250cm9sbGVyOiAoYzogVHlwZSB8IEluc3RhbmNlVHlwZTxUeXBlPikgPT4gUHJvbWlzZTxJbnN0YW5jZVR5cGU8VHlwZT4+IHwgSW5zdGFuY2VUeXBlPFR5cGU+LFxuKSB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBhd2FpdCBleHRyYWN0Q29udHJvbGxlcihDb250cm9sbGVyKTtcbiAgY29uc3QgbWV0YSA9IGdldE1ldGEoY29udHJvbGxlcik7XG4gIGNvbnN0IHJvdXRlciA9IFJvdXRlcihtZXRhLnJvdXRlck9wdGlvbnMpO1xuXG4gIC8qKlxuICAgKiBXcmFwIGFsbCByZWdpc3RlcmVkIG1pZGRsZXdhcmUgd2l0aCBoZWxwZXIgZnVuY3Rpb25cbiAgICogdGhhdCBjYW4gaW5zdGFudGlhdGUgb3IgZ2V0IGZyb20gdGhlIGNvbnRhaW5lciBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbiAgICogb3IgZXhlY3V0ZSBnaXZlbiBtaWRkbGV3YXJlIGZ1bmN0aW9uXG4gICAqL1xuICBjb25zdCByb3V0ZXJNaWRkbGV3YXJlOiBSZXF1ZXN0SGFuZGxlcltdID0gKG1ldGEubWlkZGxld2FyZSB8fCBbXSlcbiAgICAubWFwKG1pZGRsZXdhcmUgPT4gbWlkZGxld2FyZUhhbmRsZXIobWlkZGxld2FyZSkpO1xuXG4gIC8qKlxuICAgKiBBcHBseSByb3V0ZXIgbWlkZGxld2FyZVxuICAgKi9cbiAgaWYgKHJvdXRlck1pZGRsZXdhcmUubGVuZ3RoKSB7XG4gICAgcm91dGVyLnVzZSguLi5yb3V0ZXJNaWRkbGV3YXJlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseWluZyByZWdpc3RlcmVkIHJvdXRlc1xuICAgKi9cbiAgZm9yIChjb25zdCBbbWV0aG9kTmFtZSwgbWV0aG9kTWV0YV0gb2YgT2JqZWN0LmVudHJpZXMobWV0YS5yb3V0ZXMpKSB7XG4gICAgbWV0aG9kTWV0YS5yb3V0ZXMuZm9yRWFjaChyb3V0ZSA9PiB7XG4gICAgICBjb25zdCByb3V0ZU1pZGRsZXdhcmU6IFJlcXVlc3RIYW5kbGVyW10gPSAocm91dGUubWlkZGxld2FyZSB8fCBbXSlcbiAgICAgICAgLm1hcChtaWRkbGV3YXJlID0+IG1pZGRsZXdhcmVIYW5kbGVyKG1pZGRsZXdhcmUpKTtcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSByb3V0ZUhhbmRsZXIoY29udHJvbGxlciwgbWV0aG9kTmFtZSwgbWV0YS5wYXJhbXNbbWV0aG9kTmFtZV0sIG1ldGhvZE1ldGEuc3RhdHVzKTtcblxuICAgICAgcm91dGVyW3JvdXRlLm1ldGhvZF0uYXBwbHkocm91dGVyLCBbXG4gICAgICAgIHJvdXRlLnVybCwgLi4ucm91dGVNaWRkbGV3YXJlLCBoYW5kbGVyLFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH1cblxuICAoYXBwIGFzIFJvdXRlcikudXNlKG1ldGEudXJsLCByb3V0ZXIpO1xuXG4gIHJldHVybiBhcHA7XG59XG5cbi8qKlxuICogUmV0dXJucyBmdW5jdGlvbiB0aGF0IHdpbGwgY2FsbCBvcmlnaW5hbCByb3V0ZSBoYW5kbGVyIGFuZCB3cmFwIHJldHVybiBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIHJvdXRlSGFuZGxlcihjb250cm9sbGVyOiBFeHByZXNzQ2xhc3MsIG1ldGhvZE5hbWU6IHN0cmluZywgcGFyYW1zOiBQYXJhbWV0ZXJDb25maWd1cmF0aW9uW10sIHN0YXR1czogbnVtYmVyKSB7XG4gIHJldHVybiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pID0+IHtcbiAgICBjb25zdCBhcmdzID0gZXh0cmFjdFBhcmFtZXRlcnMocmVxLCByZXMsIG5leHQsIHBhcmFtcyk7XG4gICAgY29uc3QgcmVzdWx0ID0gY29udHJvbGxlclttZXRob2ROYW1lXS5jYWxsKGNvbnRyb2xsZXIsIC4uLmFyZ3MpO1xuXG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHJlc3VsdC50aGVuKChyOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFyZXMuaGVhZGVyc1NlbnQgJiYgdHlwZW9mIHIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgcmVzLnN0YXR1cyhzdGF0dXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXMuc2VuZChyKTtcbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2gobmV4dCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKCFyZXMuaGVhZGVyc1NlbnQpIHtcbiAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgIHJlcy5zdGF0dXMoc3RhdHVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXMuc2VuZChyZXN1bHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbi8qKlxuICogRXh0cmFjdCBwYXJhbWV0ZXJzIGZvciBoYW5kbGVyc1xuICovXG5mdW5jdGlvbiBleHRyYWN0UGFyYW1ldGVycyhyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbiwgcGFyYW1zOiBQYXJhbWV0ZXJDb25maWd1cmF0aW9uW10gPSBbXSk6IGFueVtdIHtcbiAgY29uc3QgYXJncyA9IFtdO1xuXG4gIGZvciAoY29uc3QgeyBuYW1lLCBpbmRleCwgdHlwZSB9IG9mIHBhcmFtcykge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLlJFU1BPTlNFOlxuICAgICAgICBhcmdzW2luZGV4XSA9IHJlcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuUkVRVUVTVDpcbiAgICAgICAgYXJnc1tpbmRleF0gPSBnZXRQYXJhbShyZXEsIG51bGwsIG5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5ORVhUOlxuICAgICAgICBhcmdzW2luZGV4XSA9IG5leHQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLlBBUkFNUzpcbiAgICAgICAgYXJnc1tpbmRleF0gPSBnZXRQYXJhbShyZXEsICdwYXJhbXMnLCBuYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuUVVFUlk6XG4gICAgICAgIGFyZ3NbaW5kZXhdID0gZ2V0UGFyYW0ocmVxLCAncXVlcnknLCBuYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuQk9EWTpcbiAgICAgICAgYXJnc1tpbmRleF0gPSBnZXRQYXJhbShyZXEsICdib2R5JywgbmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLkhFQURFUlM6XG4gICAgICAgIGFyZ3NbaW5kZXhdID0gZ2V0UGFyYW0ocmVxLCAnaGVhZGVycycsIG5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5DT09LSUVTOlxuICAgICAgICBhcmdzW2luZGV4XSA9IGdldFBhcmFtKHJlcSwgJ2Nvb2tpZXMnLCBuYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8qKlxuICogR2V0IGNvbnRyb2xsZXIgaW5zdGFuY2UgZnJvbSBjb250YWluZXIgb3IgaW5zdGFudGlhdGUgb25lXG4gKi9cbmZ1bmN0aW9uIGdldENvbnRyb2xsZXIoQ29udHJvbGxlcjogVHlwZSk6IFByb21pc2U8RXhwcmVzc0NsYXNzPiB8IEV4cHJlc3NDbGFzcyB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIENvbnRhaW5lci5nZXQoQ29udHJvbGxlcik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBuZXcgQ29udHJvbGxlcigpO1xuICB9XG59XG5cbi8qKlxuICogR2V0IHBhcmFtZXRlciB2YWx1ZSBmcm9tIHRoZSBzb3VyY2Ugb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGdldFBhcmFtKHNvdXJjZTogYW55LCBwYXJhbVR5cGU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogYW55IHtcbiAgY29uc3QgcGFyYW0gPSBzb3VyY2VbcGFyYW1UeXBlXSB8fCBzb3VyY2U7XG5cbiAgcmV0dXJuIG5hbWUgPyBwYXJhbVtuYW1lXSA6IHBhcmFtO1xufVxuXG5cblxuLyoqXG4gKiBBdHRhY2ggbWlkZGxld2FyZSB0byBjb250cm9sbGVyIG1ldGFkYXRhXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHVuc2hpZnQgaWYgc2V0IHRvIGZhbHNlIGFsbCB0aGUgY3VzdG9tIGRlY29yYXRvciBtaWRkbGV3YXJlcyB3aWxsIGJlIGV4ZWN0dXRlZCBhZnRlciB0aGUgbWlkZGxld2FyZXMgYXR0YWNoZWQgdGhyb3VnaCBjb250cm9sbGVyIFxuICogXG4gKiBcbiAqIE5vdGUtIFBsZWFzZSB1c2UgY3VzdG9tIGRlY29yYXRvcnMgYmVmb3JlIGV4cHJlc3MgbWV0aG9kIGRlY29yYXRvcnMgR2V0IFBvc3QgZXRjLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hNaWRkbGV3YXJlKHRhcmdldCA6IGFueSxwcm9wZXJ0eSA6IHN0cmluZyxtaWRkbGV3YXJlIDogTWlkZGxld2FyZUZ1bmN0aW9uKXtcbiAgY29uc3QgbWV0YSAgOiBFeHByZXNzTWV0YSA9IGdldE1ldGEodGFyZ2V0IGFzIEV4cHJlc3NDbGFzcyk7XG4gIGlmKG1ldGEudXJsICE9PSAnJyl7XG4gICAgbWV0YS5taWRkbGV3YXJlLnVuc2hpZnQobWlkZGxld2FyZSk7XG4gIH1lbHNlIGlmKHByb3BlcnR5IGluIG1ldGEucm91dGVzKXtcbiAgICBtZXRhLnJvdXRlc1twcm9wZXJ0eV0ucm91dGVzWzBdLm1pZGRsZXdhcmUudW5zaGlmdChtaWRkbGV3YXJlKTtcbiAgfVxufSJdfQ== |
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -39,30 +30,28 @@ exports.errorMiddlewareHandler = exports.ERROR_MIDDLEWARE = exports.middlewareHandler = void 0; | ||
*/ | ||
function invokeMiddleware(middleware, args) { | ||
async function invokeMiddleware(middleware, args) { | ||
var _a, _b; | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const next = args[args.length - 1]; | ||
try { | ||
let instance; | ||
if (typeof middleware === 'function') { | ||
if ((_a = middleware.prototype) === null || _a === void 0 ? void 0 : _a.use) { | ||
instance = new middleware(...args); | ||
} | ||
else { | ||
instance = middleware; | ||
} | ||
const next = args[args.length - 1]; | ||
try { | ||
let instance; | ||
if (typeof middleware === 'function') { | ||
if ((_a = middleware.prototype) === null || _a === void 0 ? void 0 : _a.use) { | ||
instance = new middleware(...args); | ||
} | ||
else { | ||
instance = yield di_1.Container.get(middleware); | ||
instance = middleware; | ||
} | ||
const handler = (_b = instance === null || instance === void 0 ? void 0 : instance.use) !== null && _b !== void 0 ? _b : instance; | ||
const result = typeof handler === 'function' ? handler.apply(instance, args) : instance; | ||
if (result instanceof Promise) { | ||
result.catch(next); | ||
} | ||
} | ||
catch (err) { | ||
next(err); | ||
else { | ||
instance = await di_1.Container.get(middleware); | ||
} | ||
}); | ||
const handler = (_b = instance === null || instance === void 0 ? void 0 : instance.use) !== null && _b !== void 0 ? _b : instance; | ||
const result = typeof handler === 'function' ? handler.apply(instance, args) : instance; | ||
if (result instanceof Promise) { | ||
result.catch(next); | ||
} | ||
} | ||
catch (err) { | ||
next(err); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLHVDQUEyRDtBQWdCM0Q7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxVQUFzQjtJQUN0RCxPQUFPLENBQUMsR0FBWSxFQUFFLEdBQWEsRUFBRSxJQUFrQixFQUFFLEVBQUU7UUFDekQsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBSkQsOENBSUM7QUFFRDs7R0FFRztBQUNVLFFBQUEsZ0JBQWdCLEdBQUcsSUFBSSxtQkFBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFdkU7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0I7SUFDcEMsT0FBTyxDQUFDLEtBQVksRUFBRSxHQUFZLEVBQUUsR0FBYSxFQUFFLElBQWtCLEVBQUUsRUFBRTtRQUN2RSxnQkFBZ0IsQ0FBQyx3QkFBZ0IsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFKRCx3REFJQztBQUVEOztHQUVHO0FBQ0gsU0FBZSxnQkFBZ0IsQ0FDN0IsVUFBeUQsRUFDekQsSUFBMEU7OztRQUUxRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQWlCLENBQUM7UUFFbkQsSUFBSTtZQUNGLElBQUksUUFBcUUsQ0FBQztZQUUxRSxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRTtnQkFDcEMsSUFBSSxNQUFBLFVBQVUsQ0FBQyxTQUFTLDBDQUFFLEdBQUcsRUFBRTtvQkFDN0IsUUFBUSxHQUFHLElBQUssVUFBMkQsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO2lCQUN0RjtxQkFBTTtvQkFDTCxRQUFRLEdBQUcsVUFBZ0MsQ0FBQztpQkFDN0M7YUFDRjtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsTUFBTSxjQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzVDO1lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBQyxRQUFtRCxhQUFuRCxRQUFRLHVCQUFSLFFBQVEsQ0FBNkMsR0FBRyxtQ0FBSSxRQUFRLENBQUM7WUFDdEYsTUFBTSxNQUFNLEdBQUcsT0FBTyxPQUFPLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBRXhGLElBQUksTUFBTSxZQUFZLE9BQU8sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNwQjtTQUNGO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDWDs7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3QsIFJlc3BvbnNlLCBOZXh0RnVuY3Rpb24sIFJlcXVlc3RIYW5kbGVyLCBFcnJvclJlcXVlc3RIYW5kbGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBDb250YWluZXIsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGRlY29yYXRvcnMvZGknO1xuXG5leHBvcnQgdHlwZSBUeXBlPEMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+ID0gbmV3ICguLi5hcmdzOiBhbnkpID0+IEM7XG5cbmV4cG9ydCB0eXBlIE1pZGRsZXdhcmVGdW5jdGlvbiA9IChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4gdm9pZDtcbmV4cG9ydCBpbnRlcmZhY2UgTWlkZGxld2FyZUNsYXNzIHtcbiAgdXNlOiBNaWRkbGV3YXJlRnVuY3Rpb247XG59XG5leHBvcnQgdHlwZSBNaWRkbGV3YXJlID0gTWlkZGxld2FyZUZ1bmN0aW9uIHwgVHlwZTxNaWRkbGV3YXJlQ2xhc3M+O1xuXG5leHBvcnQgdHlwZSBFcnJvck1pZGRsZXdhcmVGdW5jdGlvbiA9IChlcnJvcjogRXJyb3IsIHJlcXVlc3Q6IFJlcXVlc3QsIHJlc3BvbnNlOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB2b2lkO1xuZXhwb3J0IGludGVyZmFjZSBFcnJvck1pZGRsZXdhcmVDbGFzcyB7XG4gIHVzZTogRXJyb3JNaWRkbGV3YXJlRnVuY3Rpb247XG59XG5leHBvcnQgdHlwZSBFcnJvck1pZGRsZXdhcmUgPSBFcnJvck1pZGRsZXdhcmVGdW5jdGlvbiB8IFR5cGU8RXJyb3JNaWRkbGV3YXJlQ2xhc3M+O1xuXG4vKipcbiAqIENyZWF0ZSByZXF1ZXN0IG1pZGRsZXdhcmUgaGFuZGxlciB0aGF0IHVzZXMgY2xhc3Mgb3IgZnVuY3Rpb24gcHJvdmlkZWQgYXMgbWlkZGxld2FyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWlkZGxld2FyZUhhbmRsZXIobWlkZGxld2FyZTogTWlkZGxld2FyZSk6IFJlcXVlc3RIYW5kbGVyIHtcbiAgcmV0dXJuIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4ge1xuICAgIGludm9rZU1pZGRsZXdhcmUobWlkZGxld2FyZSwgW3JlcSwgcmVzLCBuZXh0XSkuY2F0Y2gobmV4dCk7XG4gIH07XG59XG5cbi8qKlxuICogRXJyb3IgTWlkZGxld2FyZSBjbGFzcyByZWdpc3RyYXRpb24gREkgdG9rZW5cbiAqL1xuZXhwb3J0IGNvbnN0IEVSUk9SX01JRERMRVdBUkUgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0VSUk9SX01JRERMRVdBUkUnKTtcblxuLyoqXG4gKiBBZGQgZXJyb3IgbWlkZGxld2FyZSB0byB0aGUgYXBwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlcnJvck1pZGRsZXdhcmVIYW5kbGVyKCk6IEVycm9yUmVxdWVzdEhhbmRsZXIge1xuICByZXR1cm4gKGVycm9yOiBFcnJvciwgcmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pID0+IHtcbiAgICBpbnZva2VNaWRkbGV3YXJlKEVSUk9SX01JRERMRVdBUkUsIFtlcnJvciwgcmVxLCByZXMsIG5leHRdKS5jYXRjaChuZXh0KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBJbnN0YW50aWF0ZSBtaWRkbGV3YXJlIGFuZCBpbnZva2UgaXQgd2l0aCBhcmd1bWVudHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW52b2tlTWlkZGxld2FyZShcbiAgbWlkZGxld2FyZTogSW5qZWN0aW9uVG9rZW4gfCBNaWRkbGV3YXJlIHwgRXJyb3JNaWRkbGV3YXJlLFxuICBhcmdzOiBQYXJhbWV0ZXJzPE1pZGRsZXdhcmVGdW5jdGlvbj4gfCBQYXJhbWV0ZXJzPEVycm9yTWlkZGxld2FyZUZ1bmN0aW9uPixcbikge1xuICBjb25zdCBuZXh0ID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdIGFzIE5leHRGdW5jdGlvbjtcblxuICB0cnkge1xuICAgIGxldCBpbnN0YW5jZTogTWlkZGxld2FyZUNsYXNzIHwgRXJyb3JNaWRkbGV3YXJlQ2xhc3MgfCBNaWRkbGV3YXJlRnVuY3Rpb247XG5cbiAgICBpZiAodHlwZW9mIG1pZGRsZXdhcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChtaWRkbGV3YXJlLnByb3RvdHlwZT8udXNlKSB7XG4gICAgICAgIGluc3RhbmNlID0gbmV3IChtaWRkbGV3YXJlIGFzIFR5cGU8TWlkZGxld2FyZUNsYXNzIHwgRXJyb3JNaWRkbGV3YXJlQ2xhc3M+KSguLi5hcmdzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3RhbmNlID0gbWlkZGxld2FyZSBhcyBNaWRkbGV3YXJlRnVuY3Rpb247XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc3RhbmNlID0gYXdhaXQgQ29udGFpbmVyLmdldChtaWRkbGV3YXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVyID0gKGluc3RhbmNlIGFzIE1pZGRsZXdhcmVDbGFzcyB8IEVycm9yTWlkZGxld2FyZUNsYXNzKT8udXNlID8/IGluc3RhbmNlO1xuICAgIGNvbnN0IHJlc3VsdCA9IHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nID8gaGFuZGxlci5hcHBseShpbnN0YW5jZSwgYXJncykgOiBpbnN0YW5jZTtcblxuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICByZXN1bHQuY2F0Y2gobmV4dCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBuZXh0KGVycik7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVDQUEyRDtBQWdCM0Q7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxVQUFzQjtJQUN0RCxPQUFPLENBQUMsR0FBWSxFQUFFLEdBQWEsRUFBRSxJQUFrQixFQUFFLEVBQUU7UUFDekQsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBSkQsOENBSUM7QUFFRDs7R0FFRztBQUNVLFFBQUEsZ0JBQWdCLEdBQUcsSUFBSSxtQkFBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFdkU7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0I7SUFDcEMsT0FBTyxDQUFDLEtBQVksRUFBRSxHQUFZLEVBQUUsR0FBYSxFQUFFLElBQWtCLEVBQUUsRUFBRTtRQUN2RSxnQkFBZ0IsQ0FBQyx3QkFBZ0IsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFKRCx3REFJQztBQUVEOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGdCQUFnQixDQUM3QixVQUF5RCxFQUN6RCxJQUEwRTs7SUFFMUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFpQixDQUFDO0lBRW5ELElBQUk7UUFDRixJQUFJLFFBQXFFLENBQUM7UUFFMUUsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUU7WUFDcEMsSUFBSSxNQUFBLFVBQVUsQ0FBQyxTQUFTLDBDQUFFLEdBQUcsRUFBRTtnQkFDN0IsUUFBUSxHQUFHLElBQUssVUFBMkQsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQ3RGO2lCQUFNO2dCQUNMLFFBQVEsR0FBRyxVQUFnQyxDQUFDO2FBQzdDO1NBQ0Y7YUFBTTtZQUNMLFFBQVEsR0FBRyxNQUFNLGNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDNUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFDLFFBQW1ELGFBQW5ELFFBQVEsdUJBQVIsUUFBUSxDQUE2QyxHQUFHLG1DQUFJLFFBQVEsQ0FBQztRQUN0RixNQUFNLE1BQU0sR0FBRyxPQUFPLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFFeEYsSUFBSSxNQUFNLFlBQVksT0FBTyxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEI7S0FDRjtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ1g7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVxdWVzdCwgUmVzcG9uc2UsIE5leHRGdW5jdGlvbiwgUmVxdWVzdEhhbmRsZXIsIEVycm9yUmVxdWVzdEhhbmRsZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IENvbnRhaW5lciwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAZGVjb3JhdG9ycy9kaSc7XG5cbmV4cG9ydCB0eXBlIFR5cGU8QyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gPSBuZXcgKC4uLmFyZ3M6IGFueSkgPT4gQztcblxuZXhwb3J0IHR5cGUgTWlkZGxld2FyZUZ1bmN0aW9uID0gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB2b2lkO1xuZXhwb3J0IGludGVyZmFjZSBNaWRkbGV3YXJlQ2xhc3Mge1xuICB1c2U6IE1pZGRsZXdhcmVGdW5jdGlvbjtcbn1cbmV4cG9ydCB0eXBlIE1pZGRsZXdhcmUgPSBNaWRkbGV3YXJlRnVuY3Rpb24gfCBUeXBlPE1pZGRsZXdhcmVDbGFzcz47XG5cbmV4cG9ydCB0eXBlIEVycm9yTWlkZGxld2FyZUZ1bmN0aW9uID0gKGVycm9yOiBFcnJvciwgcmVxdWVzdDogUmVxdWVzdCwgcmVzcG9uc2U6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pID0+IHZvaWQ7XG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTWlkZGxld2FyZUNsYXNzIHtcbiAgdXNlOiBFcnJvck1pZGRsZXdhcmVGdW5jdGlvbjtcbn1cbmV4cG9ydCB0eXBlIEVycm9yTWlkZGxld2FyZSA9IEVycm9yTWlkZGxld2FyZUZ1bmN0aW9uIHwgVHlwZTxFcnJvck1pZGRsZXdhcmVDbGFzcz47XG5cbi8qKlxuICogQ3JlYXRlIHJlcXVlc3QgbWlkZGxld2FyZSBoYW5kbGVyIHRoYXQgdXNlcyBjbGFzcyBvciBmdW5jdGlvbiBwcm92aWRlZCBhcyBtaWRkbGV3YXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaWRkbGV3YXJlSGFuZGxlcihtaWRkbGV3YXJlOiBNaWRkbGV3YXJlKTogUmVxdWVzdEhhbmRsZXIge1xuICByZXR1cm4gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgaW52b2tlTWlkZGxld2FyZShtaWRkbGV3YXJlLCBbcmVxLCByZXMsIG5leHRdKS5jYXRjaChuZXh0KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBFcnJvciBNaWRkbGV3YXJlIGNsYXNzIHJlZ2lzdHJhdGlvbiBESSB0b2tlblxuICovXG5leHBvcnQgY29uc3QgRVJST1JfTUlERExFV0FSRSA9IG5ldyBJbmplY3Rpb25Ub2tlbignRVJST1JfTUlERExFV0FSRScpO1xuXG4vKipcbiAqIEFkZCBlcnJvciBtaWRkbGV3YXJlIHRvIHRoZSBhcHBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yTWlkZGxld2FyZUhhbmRsZXIoKTogRXJyb3JSZXF1ZXN0SGFuZGxlciB7XG4gIHJldHVybiAoZXJyb3I6IEVycm9yLCByZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4ge1xuICAgIGludm9rZU1pZGRsZXdhcmUoRVJST1JfTUlERExFV0FSRSwgW2Vycm9yLCByZXEsIHJlcywgbmV4dF0pLmNhdGNoKG5leHQpO1xuICB9O1xufVxuXG4vKipcbiAqIEluc3RhbnRpYXRlIG1pZGRsZXdhcmUgYW5kIGludm9rZSBpdCB3aXRoIGFyZ3VtZW50c1xuICovXG5hc3luYyBmdW5jdGlvbiBpbnZva2VNaWRkbGV3YXJlKFxuICBtaWRkbGV3YXJlOiBJbmplY3Rpb25Ub2tlbiB8IE1pZGRsZXdhcmUgfCBFcnJvck1pZGRsZXdhcmUsXG4gIGFyZ3M6IFBhcmFtZXRlcnM8TWlkZGxld2FyZUZ1bmN0aW9uPiB8IFBhcmFtZXRlcnM8RXJyb3JNaWRkbGV3YXJlRnVuY3Rpb24+LFxuKSB7XG4gIGNvbnN0IG5leHQgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gYXMgTmV4dEZ1bmN0aW9uO1xuXG4gIHRyeSB7XG4gICAgbGV0IGluc3RhbmNlOiBNaWRkbGV3YXJlQ2xhc3MgfCBFcnJvck1pZGRsZXdhcmVDbGFzcyB8IE1pZGRsZXdhcmVGdW5jdGlvbjtcblxuICAgIGlmICh0eXBlb2YgbWlkZGxld2FyZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKG1pZGRsZXdhcmUucHJvdG90eXBlPy51c2UpIHtcbiAgICAgICAgaW5zdGFuY2UgPSBuZXcgKG1pZGRsZXdhcmUgYXMgVHlwZTxNaWRkbGV3YXJlQ2xhc3MgfCBFcnJvck1pZGRsZXdhcmVDbGFzcz4pKC4uLmFyZ3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdGFuY2UgPSBtaWRkbGV3YXJlIGFzIE1pZGRsZXdhcmVGdW5jdGlvbjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UgPSBhd2FpdCBDb250YWluZXIuZ2V0KG1pZGRsZXdhcmUpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoaW5zdGFuY2UgYXMgTWlkZGxld2FyZUNsYXNzIHwgRXJyb3JNaWRkbGV3YXJlQ2xhc3MpPy51c2UgPz8gaW5zdGFuY2U7XG4gICAgY29uc3QgcmVzdWx0ID0gdHlwZW9mIGhhbmRsZXIgPT09ICdmdW5jdGlvbicgPyBoYW5kbGVyLmFwcGx5KGluc3RhbmNlLCBhcmdzKSA6IGluc3RhbmNlO1xuXG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHJlc3VsdC5jYXRjaChuZXh0KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIG5leHQoZXJyKTtcbiAgfVxufVxuIl19 |
{ | ||
"name": "@decorators/express", | ||
"version": "2.9.1", | ||
"version": "2.9.3", | ||
"description": "node decorators - decorators for express library", | ||
@@ -21,2 +21,3 @@ "main": "lib/index.js", | ||
"express": "^4.16.3", | ||
"ts-node": "^10.9.1", | ||
"typescript": "^4.9.4" | ||
@@ -40,4 +41,7 @@ }, | ||
"scripts": { | ||
"compile": "tsc" | ||
"build": "tsc --project tsconfig.build.json" | ||
}, | ||
"overrides": { | ||
"typescript": "$typescript" | ||
} | ||
} |
@@ -132,2 +132,66 @@  | ||
You can also use custom decorators as middleware : | ||
Custom Decorator | ||
```typescript | ||
import { attachMiddleware } from "@decorators/express"; | ||
import {Request,Response,NextFunction} from '@decorators/express/node_modules/express'; | ||
export function Access(key: string) { | ||
return function (target: any,propertyKey: string,descriptor: PropertyDescriptor) { | ||
attachMiddleware(target,propertyKey,(req : Request,res : Response,next : NextFunction)=>{ | ||
if(["CAN_ACCESS_TEST","CAN_ACCESS_HOME"].includes(key)){ | ||
next(); | ||
}else{ | ||
res.send("ACCESS DENIED"); | ||
} | ||
}) | ||
}; | ||
} | ||
``` | ||
Controller Code | ||
```typescript | ||
@Controller("/") | ||
export class MainController { | ||
@Access("CAN_ACCESS_TEST") | ||
@Get("/test") | ||
getB() { | ||
return "You can access the test"; | ||
} | ||
@Access("CAN_ACCESS_HOME") | ||
@Get("/home") | ||
getB() { | ||
return "You can access the home"; | ||
} | ||
} | ||
``` | ||
*Note:-*``` Please use custom decorators before express decorators otherwise system will not detect any controller metadata and your decorator will not invoked.``` | ||
Will work: | ||
```typescript | ||
@Access("CAN_ACCESS_TEST") | ||
@Get("/test") | ||
getB() { | ||
return "You can access the test"; | ||
} | ||
``` | ||
Will not work: | ||
```typescript | ||
@Get("/test") | ||
@Access("CAN_ACCESS_TEST") | ||
getB() { | ||
return "You can access the test"; | ||
} | ||
``` | ||
[ExpressJS]:http://expressjs.com |
71575
4.15%24
14.29%905
4.5%197
48.12%11
10%