@app-masters/js-lib
Version:
138 lines (132 loc) • 5.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _rollbar = _interopRequireDefault(require("./rollbar"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var HttpErrorHandler = /*#__PURE__*/function () {
function HttpErrorHandler() {
_classCallCheck(this, HttpErrorHandler);
}
_createClass(HttpErrorHandler, null, [{
key: "setup",
value: function setup(callback) {
// console.log("HttpErrorHandler - setup");
// More callbacks can be added if necessary in the future
if (!callback || !callback.onConnectionFail || !callback.onAPIFail) {
console.warn('You must pass callback parameter to AppBootstrap.setup, with onConnectionFail and onAPIFail methods.');
} else {
HttpErrorHandler.callback['onAPIFail'] = callback.onAPIFail;
HttpErrorHandler.callback['onConnectionFail'] = callback.onConnectionFail;
HttpErrorHandler.callback['errorCatcher'] = callback.errorCatcher; // Optional
}
}
}, {
key: "handle",
value: function handle(error, method, url, body) {
var errorObj = {
payload: error
}; // Keep the original error on payload
// TypeError can have different meanings, so check the message
if (error.name !== 'TypeError') {
errorObj.name = error.name;
errorObj.message = error.message;
} else {
errorObj.name = error.message;
errorObj.message = error.message;
}
errorObj.stack = new Error().stack;
errorObj.level = 'error'; // Default level
errorObj.method = method;
errorObj.url = url;
errorObj.body = body;
var handler = errorLibrary[errorObj.name];
if (handler) {
if (handler.message) {
errorObj.message = handler.message;
}
if (handler.callback && HttpErrorHandler.callback[handler.callback]) {
HttpErrorHandler.callback[handler.callback](errorObj);
errorObj.sentToAnotherErrorHandler = true;
}
if (handler.level === null) {
return errorObj;
} else {
errorObj.level = handler.level;
}
}
// Send to rollbar or defined errorCatcher
if (this.callback.errorCatcher) {
this.callback.errorCatcher(errorObj);
} else {
_rollbar.default[errorObj.level](errorObj);
}
errorObj.sentToAnotherErrorHandler = true;
return errorObj;
}
}, {
key: "mount",
value: function mount(response) {
var error = {};
error.headers = response.headers;
error.name = response.status;
return response.text().then(function (message) {
error.message = message || 'Error with no message';
throw error;
});
}
}]);
return HttpErrorHandler;
}(); // Http errors that need a special handle.
var errorLibrary = {
'400': {
level: null //Don't send to rollbar
},
'404': {
level: 'error',
// Send to rollbar as error
message: 'Não encontrado.',
// Change de message to the view
callback: 'onAPIFail' // Call onAPIFail callback
},
'500': {
level: 'warning',
message: 'Falha do servidor. Tente novamente.',
callback: 'onConnectionFail'
},
'503': {
level: 'warning',
message: 'Falha do servidor. Tente novamente.',
callback: 'onConnectionFail'
},
'ValidatorError': {
level: 'critical',
message: 'Um campo foi preenchido com valor não permitido.',
callback: 'onAPIFail'
},
'MongoError': {
level: 'warning',
message: 'Falha de comunicação com o servidor.',
callback: 'onConnectionFail'
},
'Failed to fetch': {
level: 'warning',
message: 'Falha de comunicação com o servidor.',
callback: 'onConnectionFail'
},
'FetchError': {
level: 'warning',
message: 'Falha de comunicação com o servidor.',
callback: 'onConnectionFail'
}
};
HttpErrorHandler.callback = {};
var _default = HttpErrorHandler;
exports.default = _default;