@restmatic/server
Version:
The core Pomegranate plugins for RestMatic
55 lines • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const plugin_tools_1 = require("@pomegranate/plugin-tools");
const fp_1 = require("lodash/fp");
/**
* @file CaptureErrors
* @author Jim Bulkowski <jim.b@paperelectron.com>
* @project server
* @license MIT {@link http://opensource.org/licenses/MIT}
*/
exports.CaptureErrorPlugin = plugin_tools_1.CreatePlugin('anything')
.configuration({
name: 'CaptureError',
injectableParam: 'CaptureError',
provides: ['@restmatic/Controllers']
})
.hooks({
load: (Injector, PluginLogger, PluginVariables, PluginFiles, Middleware, ExpressConfig) => {
const CaptureError = {
capture: fp_1.curry((next, statusCode, err) => {
err.defaultStatusCode = statusCode || err.defaultStatusCode || 500;
return next(err);
}),
handle: (status, message) => {
return (err, req, res, next) => {
let errorStatus = status || req.errorStatusCode || err.defaultStatusCode || 500;
let response = {
statusCode: errorStatus,
status: message || err.message || 'Sorry Something went wrong.',
err: true,
path: req.originalUrl || false,
method: req.method
};
let logErr = {
errorStatus,
path: req.originalUrl || 'No req.originalUrl available',
method: req.method || 'No req.method available',
userUUID: req.user ? req.user.uuid : 'No req.user.uuid available',
stack: err.stack || 'No stack available.',
headers: req.headers
};
PluginLogger.error(logErr);
if (err.errors && err.errors.length) {
response.err = err.errors.map(function (v) {
return { message: v.message, type: v.type };
});
}
return res.status(errorStatus).json(response);
};
}
};
return CaptureError;
}
});
//# sourceMappingURL=CaptureError.js.map