@63pokupki/nodejs-common
Version:
common nodejs functionality
255 lines • 8.47 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Системный сервис обработки ошибок
*/
class ErrorSys {
constructor(req) {
this.errorCount = 0;
this.ok = true;
this.env = req.conf.common.env;
this.bMute = false;
this.bMute = req.conf.common.errorMute;
if (this.env == 'local' || this.env == 'dev' || this.env == 'test') {
this.ifDevMode = true;
}
else {
this.ifDevMode = false;
}
this.errorList = {};
this.errorDeclareList = {};
this.devWarningList = {};
this.warningList = {};
this.devNoticeList = {};
this.noticeList = {};
this.devLogList = [];
}
/**
* очистка стека
*/
clear() {
this.ok = true;
this.errorList = {};
this.devWarningList = {};
this.warningList = {};
this.devNoticeList = {};
this.noticeList = {};
this.devLogList = [];
this.errorCount = 0;
}
/**
* Получить глобальный статус выполнения
*
* @return boolean
*/
isOk() {
return this.ok;
}
/**
* Получить режим окружения
*
* @return boolean
*/
isDev() {
return this.ifDevMode;
}
/**
* Декларировать одну возможную ошибку
*
* @param keyError
*/
decl(keyError, infoError = null) {
this.errorDeclareList[keyError] = infoError;
}
/**
* Декларация возможных ошибок
*
* @param keyErrorList
*/
declare(keyErrorList) {
for (let i = 0; i < keyErrorList.length; i++) {
this.errorDeclareList[keyErrorList[i]] = null;
}
}
/**
* Декларация возможных ошибок
*
* @param keyErrorList
*/
declareEx(keyErrorList) {
Object.assign(this.errorDeclareList, keyErrorList);
}
/**
* Добавляет ошибку в стек
*
* @param string kError - ключ ошибки
* @param string sError - сообщение
* @return void
*/
error(kError, sError) {
if (!this.bMute) {
this.ok = false; // При любой одной ошибке приложение отдает отрицательный ответ
this.errorList[kError] = sError;
if (this.ifDevMode) {
this.devLogList.push('E:[' + kError + '] - ' + sError);
console.log('E:[' + kError + '] - ' + sError);
// Проверка на декларацию ошибок
if (!(kError in this.errorDeclareList)) {
this.devWarning(kError, 'Отсутствует декларация ошибки');
}
}
}
}
/**
* Сокращенный вариант
* Добавляет ошибку в стек (используя в качестве сообщения значение из декларации)
*
* @param string kError - ключ ошибки
* @return void
*/
err(kError) {
if (!this.bMute) {
if (this.errorDeclareList[kError]) {
this.error(kError, this.errorDeclareList[kError]);
}
else {
this.error(kError, 'Неизвестная ошибка');
this.devWarning(kError, 'Отсутствует декларация ошибки');
}
}
}
/**
* Добавляет ошибку в стек,
* В dev режиме выводит catch(e) ошибки в консоль
*
* @param e // Error exeption
* @param kError // Ключ ошибки - для тестирования
* @param sError // Сообщение об ошибке
*/
errorEx(e, kError, sError) {
if (!this.bMute) {
this.ok = false; // При любой одной ошибке приложение отдает отрицательный ответ
this.errorList[kError] = sError;
if (this.ifDevMode) {
this.devLogList.push('E:[' + kError + '] - ' + sError);
console.log('E:[' + kError + '] - ' + sError);
console.log('Ошибка - ' + e.name, e.message, e.stack);
// Проверка на декларацию ошибок
if (!(kError in this.errorDeclareList)) {
this.devWarning(kError, 'Отсутствует декларация ошибки');
}
}
}
}
/**
* Добавляет уведомление в стек
*
* @param string kNotice - ключ ошибки
* @param string sNotice - сообщение
* @return void
*/
notice(kNotice, sNotice) {
this.noticeList[kNotice] = sNotice;
}
/**
* Добавляет уведомление для разработки в стек
*
* @param string kNotice - ключ ошибки
* @param string sNotice - сообщение
* @return void
*/
devNotice(kNotice, sNotice) {
if (this.ifDevMode) {
this.devNoticeList[kNotice] = sNotice;
this.devLogList.push('N:[' + kNotice + '] - ' + sNotice);
console.log('N:[' + kNotice + '] - ' + sNotice);
}
}
/**
* Добавляет предупреждение в стек
*
* @param string kWarning - ключ ошибки
* @param string sWarning - сообщение
* @return void
*/
warning(kWarning, sWarning) {
this.warningList[kWarning] = sWarning;
}
/**
* Добавляет предупреждение для разработки в стек
* Добавляется информация только в тестовом режиме
*
* @param string kWarning - ключ ошибки
* @param string sWarning - сообщение
* @return void
*/
devWarning(kWarning, sWarning) {
if (this.ifDevMode) {
this.devWarningList[kWarning] = sWarning;
this.devLogList.push('W:[' + kWarning + '] - ' + sWarning);
console.log('W:[' + kWarning + '] - ' + sWarning);
}
}
// ==============================================================
/**
* Получить все ошибки
*
* @return array|null - возвращаются ошибки (key, val)
*/
getErrors() {
return this.errorList;
}
/**
* Получить все декларации для DEV режима
*/
getDevDeclare() {
for (let k in this.errorDeclareList) {
if (this.errorList[k] && !this.errorDeclareList[k]) {
this.errorDeclareList[k] = this.errorList[k];
}
}
return this.errorDeclareList;
}
/**
* Получить все предупреждения для разработки
*
* @return array|null - возвращаются предупреждения (key, val)
*/
getDevWarning() {
return this.devWarningList;
}
/**
* Получить все предупреждения для пользователя
*
* @return array|null - возвращаются предупреждения (key, val)
*/
getWarning() {
return this.warningList;
}
/**
* Получить все уведомления для разработки
*
* @return array|null - возвращаются уведомления (key, val)
*/
getDevNotice() {
return this.devNoticeList;
}
/**
* Получить все уведомления для пользователя
*
* @return array|null - возвращаются уведомления (key, val)
*/
getNotice() {
return this.noticeList;
}
/**
* Получить все логи для разработки
*
* @return array|null - возвращаются уведомления (key, val)
*/
getDevLog() {
return this.devLogList;
}
}
exports.ErrorSys = ErrorSys;
//# sourceMappingURL=ErrorSys.js.map