micro-json-error
Version:
Outputs errors from your micro service in JSON.
34 lines (26 loc) • 973 B
JavaScript
;
const { send } = require('micro');
function sendError (request, response, error, options) {
const { statusCode = 500, message = 'Internal Server Error' } = error;
const { httpStatusCode, onError } = options;
if (onError) {
onError(error);
}
send(response, httpStatusCode || statusCode, {
statusCode,
message
});
}
module.exports = function (handleRequest, options = {}) {
if (!handleRequest || typeof handleRequest !== 'function') {
throw new Error('Please supply a callback to micro-json-error.');
}
return function (request, response) {return __async(function*(){
try {
yield handleRequest(request, response);
} catch (error) {
sendError(request, response, error, options);
}
}())};
};
function __async(g){return new Promise(function(s,j){function c(a,x){try{var r=g[x?"throw":"next"](a)}catch(e){j(e);return}r.done?s(r.value):Promise.resolve(r.value).then(c,d)}function d(e){c(e,1)}c()})}