mpp-sdk
Version:
SDK to talk to the Memento Payments Platform
95 lines (94 loc) • 3.24 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.errorHandler = exports.LockedUserError = exports.UnknownError = exports.ValidationError = exports.NotFoundError = exports.InternalServerError = exports.GeneralError = exports.AuthenticationError = exports.MPPError = void 0;
const tslib_1 = require("tslib");
const axios_1 = tslib_1.__importDefault(require("axios"));
class MPPError extends Error {
constructor(message, aerr) {
var _a, _b;
super(message);
this.message = this.message;
this.request_id = (_a = aerr === null || aerr === void 0 ? void 0 : aerr.response) === null || _a === void 0 ? void 0 : _a.headers["request-id"];
this.data = (_b = aerr === null || aerr === void 0 ? void 0 : aerr.response) === null || _b === void 0 ? void 0 : _b.data;
}
}
exports.MPPError = MPPError;
class AuthenticationError extends MPPError {
constructor() {
super(...arguments);
this.name = "AuthenticationError";
}
}
exports.AuthenticationError = AuthenticationError;
class GeneralError extends MPPError {
constructor() {
super(...arguments);
this.name = "GeneralError";
}
}
exports.GeneralError = GeneralError;
class InternalServerError extends MPPError {
constructor() {
super(...arguments);
this.name = "InternalServerError";
}
}
exports.InternalServerError = InternalServerError;
class NotFoundError extends MPPError {
constructor() {
super(...arguments);
this.name = "NotFoundError";
}
}
exports.NotFoundError = NotFoundError;
class ValidationError extends MPPError {
constructor() {
super(...arguments);
this.name = "ValidationError";
}
}
exports.ValidationError = ValidationError;
class UnknownError extends MPPError {
constructor() {
super(...arguments);
this.name = "UnknownError";
}
}
exports.UnknownError = UnknownError;
class LockedUserError extends MPPError {
constructor() {
super(...arguments);
this.name = "LockedUser";
}
}
exports.LockedUserError = LockedUserError;
const errorHandler = (err) => {
if (err instanceof Error) {
if (axios_1.default.isAxiosError(err)) {
let aerr = err;
if (aerr.response) {
switch (aerr.response.status) {
case 400:
return new GeneralError(aerr.message, aerr);
case 401:
return new AuthenticationError(aerr.message, aerr);
case 404:
return new NotFoundError(aerr.message, aerr);
case 422:
return new ValidationError(aerr.message, aerr);
case 500:
return new InternalServerError(aerr.message, aerr);
default:
return new UnknownError(aerr.message, aerr);
}
}
else {
return aerr;
}
}
return err;
}
// Without a response this is unknown, presumably a network error
return new Error("unhandleable error");
};
exports.errorHandler = errorHandler;
;