UNPKG

monobank

Version:
95 lines (84 loc) 3.06 kB
'use strict'; const utils = require('./utils'); module.exports = _Error; /** * Generic Error klass to wrap any errors returned by stripe-node */ function _Error(raw) { this.populate(...arguments); this.stack = new Error(this.message).stack; } // Extend Native Error _Error.prototype = Object.create(Error.prototype); _Error.prototype.type = 'GenericError'; _Error.prototype.populate = function(type, message) { this.type = type; this.message = message; }; _Error.extend = utils.protoExtend; /** * Create subclass of internal Error klass * (Specifically for errors returned from Monobank's REST API) */ const MonobankError = (_Error.MonobankError = _Error.extend({ type: 'MonobankError', populate(raw) { // Move from prototype def (so it appears in stringified obj) this.type = this.type; this.stack = new Error(raw.message).stack; this.rawType = raw.type; this.code = raw.code; this.param = raw.param; this.message = raw.message; this.detail = raw.detail; this.raw = raw; this.headers = raw.headers; this.requestId = raw.requestId; this.statusCode = raw.statusCode; }, })); /** * Helper factory which takes raw stripe errors and outputs wrapping instances */ MonobankError.generate = (rawMonobankError) => { switch (rawMonobankError.type) { case 'card_error': return new _Error.MonobankCardError(rawMonobankError); case 'invalid_request_error': return new _Error.MonobankInvalidRequestError(rawMonobankError); case 'api_error': return new _Error.MonobankAPIError(rawMonobankError); case 'idempotency_error': return new _Error.MonobankIdempotencyError(rawMonobankError); case 'invalid_grant': return new _Error.MonobankInvalidGrantError(rawMonobankError); } return new _Error('Generic', 'Unknown Error'); }; // Specific Monobank Error types: _Error.MonobankCardError = MonobankError.extend({type: 'MonobankCardError'}); _Error.MonobankInvalidRequestError = MonobankError.extend({ type: 'MonobankInvalidRequestError', }); _Error.MonobankAPIError = MonobankError.extend({type: 'MonobankAPIError'}); _Error.MonobankAuthenticationError = MonobankError.extend({ type: 'MonobankAuthenticationError', }); _Error.MonobankPermissionError = MonobankError.extend({ type: 'MonobankPermissionError', }); _Error.MonobankRateLimitError = MonobankError.extend({ type: 'MonobankRateLimitError', }); _Error.MonobankConnectionError = MonobankError.extend({ type: 'MonobankConnectionError', }); _Error.MonobankSignatureVerificationError = MonobankError.extend({ type: 'MonobankSignatureVerificationError', }); _Error.MonobankIdempotencyError = MonobankError.extend({ type: 'MonobankIdempotencyError', }); _Error.MonobankInvalidGrantError = MonobankError.extend({ type: 'MonobankInvalidGrantError', });