performance-monitor-logger
Version:
## Instalação
57 lines • 10.1 kB
JavaScript
import { HttpResponse, } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { tap } from 'rxjs/operators';
import { GlobalPerformanceLogger } from '../performanceLoggerGlobal';
export class PerformanceMonitorInterceptor {
intercept(req, next) {
var _a;
// Ignora arquivos de assets
if (!req.url.startsWith('./assets')) {
// 🔹 Recupera dados da sessão
let tela = sessionStorage.getItem('idTela');
if (!tela) {
tela = 'SEL041';
sessionStorage.setItem('idTela', tela);
}
const cdUsuario = (_a = sessionStorage.getItem('cdUsuario')) !== null && _a !== void 0 ? _a : '';
// 🔹 Clona a requisição adicionando headers
const authReq = req.clone({
headers: req.headers
.set('tela_id', tela)
.set('tela', 'SEL041')
.set('user', cdUsuario),
});
const start = performance.now();
return next.handle(authReq).pipe(tap({
next: (event) => {
var _a, _b;
if (event instanceof HttpResponse) {
const tempo = performance.now() - start;
// ✅ Verificação segura do body e suas propriedades
const operationType = ((_a = authReq.body) === null || _a === void 0 ? void 0 : _a.operationType) || 'UNKNOWN';
const operationName = ((_b = authReq.body) === null || _b === void 0 ? void 0 : _b.name) || '';
console.log(`%c🟢 [HTTP] ${operationType} ${operationType === 'SELECT_FULL' ? '' : operationName} - ${tempo.toFixed(1)}ms`, 'color: #7048cfff; font-weight: bold;');
GlobalPerformanceLogger.registerHttpRequest(authReq, tempo, false);
}
},
error: (error) => {
var _a, _b;
const tempo = performance.now() - start;
// ✅ Verificação segura do body e suas propriedades
const operationType = ((_a = authReq.body) === null || _a === void 0 ? void 0 : _a.operationType) || 'UNKNOWN';
const operationName = ((_b = authReq.body) === null || _b === void 0 ? void 0 : _b.name) || '';
console.groupCollapsed(`%c🔴 [HTTP] ${operationType} ${operationName} - ${tempo.toFixed(1)}ms`, 'color: #7048cfff; font-weight: bold;');
console.error(error);
console.groupEnd();
GlobalPerformanceLogger.registerHttpRequest(authReq, tempo, true);
},
}));
}
// Requisição de asset, passa direto
return next.handle(req);
}
}
PerformanceMonitorInterceptor.decorators = [
{ type: Injectable }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZm9ybWFuY2UtbW9uaXRvci5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BlcmZvcm1hbmNlLW1vbml0b3ItbG9nZ2VyL3NyYy9saWIvc2hhcmVkL3BlcmZvcm1hbmNlLW1vbml0b3IuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLFlBQVksR0FFYixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3JFLE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsU0FBUyxDQUNQLEdBQXFCLEVBQ3JCLElBQWlCOztRQUVqQiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ25DLDhCQUE4QjtZQUM5QixJQUFJLElBQUksR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsSUFBSSxHQUFHLFFBQVEsQ0FBQztnQkFDaEIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDeEM7WUFDRCxNQUFNLFNBQVMsU0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQ0FBSSxFQUFFLENBQUM7WUFFNUQsNENBQTRDO1lBQzVDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3hCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztxQkFDakIsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUM7cUJBQ3BCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO3FCQUNyQixHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQzthQUMxQixDQUFDLENBQUM7WUFFSCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDO2dCQUNGLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFOztvQkFDZCxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7d0JBQ2pDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7d0JBRXhDLG1EQUFtRDt3QkFDbkQsTUFBTSxhQUFhLEdBQUcsT0FBQSxPQUFPLENBQUMsSUFBSSwwQ0FBRSxhQUFhLEtBQUksU0FBUyxDQUFDO3dCQUMvRCxNQUFNLGFBQWEsR0FBRyxPQUFBLE9BQU8sQ0FBQyxJQUFJLDBDQUFFLElBQUksS0FBSSxFQUFFLENBQUM7d0JBRS9DLE9BQU8sQ0FBQyxHQUFHLENBQ1QsZUFBZSxhQUFhLElBQzFCLGFBQWEsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFDekMsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQzFCLHNDQUFzQyxDQUN2QyxDQUFDO3dCQUVGLHVCQUF1QixDQUFDLG1CQUFtQixDQUN6QyxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssQ0FDTixDQUFDO3FCQUNIO2dCQUNILENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBd0IsRUFBRSxFQUFFOztvQkFDbEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztvQkFFeEMsbURBQW1EO29CQUNuRCxNQUFNLGFBQWEsR0FBRyxPQUFBLE9BQU8sQ0FBQyxJQUFJLDBDQUFFLGFBQWEsS0FBSSxTQUFTLENBQUM7b0JBQy9ELE1BQU0sYUFBYSxHQUFHLE9BQUEsT0FBTyxDQUFDLElBQUksMENBQUUsSUFBSSxLQUFJLEVBQUUsQ0FBQztvQkFFL0MsT0FBTyxDQUFDLGNBQWMsQ0FDcEIsZUFBZSxhQUFhLElBQUksYUFBYSxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQzlELENBQUMsQ0FDRixJQUFJLEVBQ0wsc0NBQXNDLENBQ3ZDLENBQUM7b0JBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUVuQix1QkFBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwRSxDQUFDO2FBQ0YsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUVELG9DQUFvQztRQUNwQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQzs7O1lBMUVGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBFdmVudCxcclxuICBIdHRwSGFuZGxlcixcclxuICBIdHRwSW50ZXJjZXB0b3IsXHJcbiAgSHR0cFJlcXVlc3QsXHJcbiAgSHR0cFJlc3BvbnNlLFxyXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgR2xvYmFsUGVyZm9ybWFuY2VMb2dnZXIgfSBmcm9tICcuLi9wZXJmb3JtYW5jZUxvZ2dlckdsb2JhbCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQZXJmb3JtYW5jZU1vbml0b3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgaW50ZXJjZXB0KFxyXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICAvLyBJZ25vcmEgYXJxdWl2b3MgZGUgYXNzZXRzXHJcbiAgICBpZiAoIXJlcS51cmwuc3RhcnRzV2l0aCgnLi9hc3NldHMnKSkge1xyXG4gICAgICAvLyDwn5S5IFJlY3VwZXJhIGRhZG9zIGRhIHNlc3PDo29cclxuICAgICAgbGV0IHRlbGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRlbGEnKTtcclxuICAgICAgaWYgKCF0ZWxhKSB7XHJcbiAgICAgICAgdGVsYSA9ICdTRUwwNDEnO1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2lkVGVsYScsIHRlbGEpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNkVXN1YXJpbyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NkVXN1YXJpbycpID8/ICcnO1xyXG5cclxuICAgICAgLy8g8J+UuSBDbG9uYSBhIHJlcXVpc2nDp8OjbyBhZGljaW9uYW5kbyBoZWFkZXJzXHJcbiAgICAgIGNvbnN0IGF1dGhSZXEgPSByZXEuY2xvbmUoe1xyXG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzXHJcbiAgICAgICAgICAuc2V0KCd0ZWxhX2lkJywgdGVsYSlcclxuICAgICAgICAgIC5zZXQoJ3RlbGEnLCAnU0VMMDQxJylcclxuICAgICAgICAgIC5zZXQoJ3VzZXInLCBjZFVzdWFyaW8pLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcblxyXG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUoYXV0aFJlcSkucGlwZShcclxuICAgICAgICB0YXAoe1xyXG4gICAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRlbXBvID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydDtcclxuXHJcbiAgICAgICAgICAgICAgLy8g4pyFIFZlcmlmaWNhw6fDo28gc2VndXJhIGRvIGJvZHkgZSBzdWFzIHByb3ByaWVkYWRlc1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvblR5cGUgPSBhdXRoUmVxLmJvZHk/Lm9wZXJhdGlvblR5cGUgfHwgJ1VOS05PV04nO1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBhdXRoUmVxLmJvZHk/Lm5hbWUgfHwgJyc7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgYCVj8J+foiBbSFRUUF0gJHtvcGVyYXRpb25UeXBlfSAke1xyXG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb25UeXBlID09PSAnU0VMRUNUX0ZVTEwnID8gJycgOiBvcGVyYXRpb25OYW1lXHJcbiAgICAgICAgICAgICAgICB9IC0gJHt0ZW1wby50b0ZpeGVkKDEpfW1zYCxcclxuICAgICAgICAgICAgICAgICdjb2xvcjogIzcwNDhjZmZmOyBmb250LXdlaWdodDogYm9sZDsnXHJcbiAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgR2xvYmFsUGVyZm9ybWFuY2VMb2dnZXIucmVnaXN0ZXJIdHRwUmVxdWVzdChcclxuICAgICAgICAgICAgICAgIGF1dGhSZXEsXHJcbiAgICAgICAgICAgICAgICB0ZW1wbyxcclxuICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXBvID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydDtcclxuXHJcbiAgICAgICAgICAgIC8vIOKchSBWZXJpZmljYcOnw6NvIHNlZ3VyYSBkbyBib2R5IGUgc3VhcyBwcm9wcmllZGFkZXNcclxuICAgICAgICAgICAgY29uc3Qgb3BlcmF0aW9uVHlwZSA9IGF1dGhSZXEuYm9keT8ub3BlcmF0aW9uVHlwZSB8fCAnVU5LTk9XTic7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBhdXRoUmVxLmJvZHk/Lm5hbWUgfHwgJyc7XHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwQ29sbGFwc2VkKFxyXG4gICAgICAgICAgICAgIGAlY/CflLQgW0hUVFBdICR7b3BlcmF0aW9uVHlwZX0gJHtvcGVyYXRpb25OYW1lfSAtICR7dGVtcG8udG9GaXhlZChcclxuICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICApfW1zYCxcclxuICAgICAgICAgICAgICAnY29sb3I6ICM3MDQ4Y2ZmZjsgZm9udC13ZWlnaHQ6IGJvbGQ7J1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xyXG5cclxuICAgICAgICAgICAgR2xvYmFsUGVyZm9ybWFuY2VMb2dnZXIucmVnaXN0ZXJIdHRwUmVxdWVzdChhdXRoUmVxLCB0ZW1wbywgdHJ1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVxdWlzacOnw6NvIGRlIGFzc2V0LCBwYXNzYSBkaXJldG9cclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gIH1cclxufVxyXG4iXX0=