UNPKG

mpp-sdk

Version:

SDK to talk to the Memento Payments Platform

95 lines (94 loc) 3.24 kB
"use strict"; 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;