UNPKG

@63pokupki/nodejs-common

Version:
156 lines 6.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResponseSys = exports.faSendRouter = void 0; const ErrorHandler_1 = require("./ErrorHandler"); const Json_1 = require("../Helpers/Json"); let i = 0; /** Индексированный список полезных нагрузок для функций рендера страниц */ const ixSendRouter = {}; /** Интервал для очистки индексированного списка если остались не удаленные полезные нагрузки по истечения 5 секунд * Интервал вызывается раз в час */ // const iInterval = setInterval(() =>{ // const aidKeys = Object.keys(ixSendRouter); // for(let i = 0; i < aidKeys.length; i++) { // const idKeys = Number(aidKeys[i]); // const vCurrentSend = ixSendRouter[idKeys]; // if (vCurrentSend && Date.now() - vCurrentSend.time > 60000) { // console.log('WARNING - У НАС ЕСТЬ ЗАВИСШИЙ ЗАПРОС', 'url: ', ixSendRouter[idKeys].pathname, 'body: ', ixSendRouter[idKeys].body) // delete ixSendRouter[idKeys]; // } // } // }, 3600000); /** Функция отправки сообщения в маттермост */ const fSendMonitoringMsg = (idx, ctx) => { if (ixSendRouter[idx] && Date.now() - ixSendRouter[idx].time > 5000) { if (ctx.sys.monitoringSys) { ctx.sys.monitoringSys.sendInfoApiTimecrit('api_slowcrit:' + ctx.common.nameApp + ':' + ctx.url.pathname, { time_start: ixSendRouter[idx].time, time_end: Date.now(), val: Date.now() - ixSendRouter[idx].time, msg: (0, Json_1.tryJsonToString)({ info: { title: 'Мониторинг скорости запросов', url: `${ctx.common.nameApp} - ${ctx.url.pathname}`, time: `- длительность выполнения ${(Date.now() - ixSendRouter[idx].time) / 1000} сек.`, date: `${new Date(ixSendRouter[idx].time).toString()}`, }, data: ctx.body }) }); } console.log('WARNING - ОЧЕНЬ МЕДЛЕННЫЙ МЕТОД', 'url: ', ctx.url.pathname, 'body: ', ctx.body); } else if (ixSendRouter[idx] && Date.now() - ixSendRouter[idx].time > 2000) { if (ctx.sys.monitoringSys) { ctx.sys.monitoringSys.sendInfoApiTimelong('api_slow:' + ctx.common.nameApp + ':' + ctx.url.pathname, { time_start: ixSendRouter[idx].time, time_end: Date.now(), val: Date.now() - ixSendRouter[idx].time, msg: (0, Json_1.tryJsonToString)({ info: { title: 'Мониторинг скорости запросов', url: `${ctx.common.nameApp} - ${ctx.url.pathname}`, time: `- длительность выполнения ${(Date.now() - ixSendRouter[idx].time) / 1000} сек.`, date: `${new Date(ixSendRouter[idx].time).toString()}`, }, data: ctx.body }) }); } } else if (ixSendRouter[idx] && Date.now() - ixSendRouter[idx].time < 2000) { // if(ctx.sys.monitoringSys){ // ctx.sys.monitoringSys.sendInfoApiSuccsess('ok:'+ctx.common.nameApp +':'+ ctx.url.pathname, { // time_start: ixSendRouter[idx].time, // time_end: Date.now(), // info: { // title:'Мониторинг скорости запросов', // url:`${ctx.common.nameApp} - ${ctx.url.pathname}`, // time: `- длительность выполнения ${(Date.now()-ixSendRouter[idx].time)/1000 } сек.`, // date: `${new Date(ixSendRouter[idx].time).toString()}`, // }, // data: JSON.stringify(ctx.body) // }); // } } }; /** * Функция рендера страницы * @param faCallback - функция контролера */ const faSendRouter = (faCallback) => async (ctx) => { // i++; // const currentIdx = i // ixSendRouter[currentIdx] = { // nameApp:ctx.common.nameApp, // pathname:ctx.url.pathname, // body:JSON.stringify(ctx.body), // time:Date.now() // } try { await faCallback(ctx); // fSendMonitoringMsg(currentIdx, ctx); // delete ixSendRouter[currentIdx]; } catch (e) { // fSendMonitoringMsg(currentIdx, ctx); // delete ixSendRouter[currentIdx]; if (ctx.sys.errorSys.isOk()) { ctx.sys.errorSys.error('stop_execute_no_error', e.message); } else { ctx.sys.errorSys.errorEx(e, ctx.req.url, ctx.msg); } (0, ErrorHandler_1.fErrorHandler)(ctx); } }; exports.faSendRouter = faSendRouter; /** * Системный сервис формирования ответа */ class ResponseSys { constructor(ctx) { this.ctx = ctx; this.env = ctx.common.env; if (this.env === 'local' || this.env === 'dev' || this.env === 'test') { this.ifDevMode = true; } else { this.ifDevMode = false; } this.errorSys = ctx.sys.errorSys; } /** * Формирование ответа клиенту * * @param array|null data * @param string sMsg * @return array */ response(data, sMsg) { const out = { ok: this.errorSys.isOk(), e: !this.errorSys.isOk(), errors: this.errorSys.getErrors(), warning: this.errorSys.getWarning(), notice: this.errorSys.getNotice(), msg: sMsg, }; if (this.ifDevMode) { // Выводит информацию для разработчиков и тестировщиков out.dev_warning = this.errorSys.getDevWarning(); out.dev_notice = this.errorSys.getDevNotice(); out.dev_log = this.errorSys.getDevLog(); } if (this.errorSys.isOk()) { out.data = data; } else { out.data = null; out.msg = 'Что то пошло не так - обратитесь к администратору'; } return out; } } exports.ResponseSys = ResponseSys; //# sourceMappingURL=ResponseSys.js.map