@5minds/processcube_engine
Version:
The ProcessCube Engine. Stores and executes BPMNs.
38 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deprecate = deprecate;
const processcube_engine_sdk_1 = require("@5minds/processcube_engine_sdk");
/**
* Allows you to mark a route as deprecated.
*
* Usage:
*
* Without an alternative route:
* router.post('/my/depcreated/route', deprecate(), requestHandlerFunction);
*
* With an alternative route:
* router.post('/my/depcreated/route', deprecate('/my/alternative/route'), requestHandlerFunction);
*
* @param deprecateSilently Optional: If true, no log message will be printed to the console. This can be useful for routes with high traffic to prevent a log spam.
* @param alternativeRoute Optional: A replacement route that the user can use as an alternative.
*/
function deprecate(deprecateSilently = false, alternativeRoute) {
const logger = new processcube_engine_sdk_1.Logger('http:deprecation_notifier');
return (request, response, next) => {
let deprecatedRoute = request.originalUrl;
for (const paramName of Object.keys(request.params)) {
deprecatedRoute = deprecatedRoute.replace(request.params[paramName], `:${paramName}`);
}
response.setHeader('Deprecation', 'true');
let deprecationMessage = `Route '${deprecatedRoute}' has been deprecated an will be removed in an upcoming major release.`;
if (alternativeRoute) {
response.setHeader('Link', alternativeRoute);
deprecationMessage = `${deprecationMessage} Use '${alternativeRoute}' instead.`;
}
if (!deprecateSilently) {
logger.warn(deprecationMessage);
}
next();
};
}
//# sourceMappingURL=DepcreationWarningMiddleware.js.map