@shipengine/connect
Version:
The official developer tooling for building ShipEngine connect apps
35 lines • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.localErrorHandler = void 0;
const connect_runtime_1 = require("@shipengine/connect-runtime");
const serialize_error_1 = require("serialize-error");
const localErrorHandler = (error, request, response, next) => {
const transactionId = request.headers['shipstation-transactionid'] ??
request.body.transaction_id ??
'no-transaction-id';
let statusCode = error.statusCode ?? 500;
if (error.isIntentional) {
const handledError = error;
const mappedBaseError = (0, connect_runtime_1.mapBaseError)(transactionId, handledError);
if (mappedBaseError.status_code) {
statusCode = mappedBaseError.status_code;
}
response.status(statusCode).json(mappedBaseError);
}
else {
const unhandledError = (0, serialize_error_1.serializeError)(error);
connect_runtime_1.logger.error(unhandledError);
response.status(statusCode).json({
transaction_id: transactionId,
detailed_errors: [
{
message: error.message,
raw_external_context: JSON.stringify(unhandledError),
},
],
});
}
next(error);
};
exports.localErrorHandler = localErrorHandler;
//# sourceMappingURL=error-handling.js.map