UNPKG

@wbg-mde/repository

Version:

Managing all common method for file system CRUD operations.

75 lines (74 loc) 3.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const model_1 = require("@wbg-mde/model"); const project_configuration_1 = require("../configuration/project.configuration"); const winston_logger_1 = require("../shared/winston.logger"); const _ = require('lodash'); let traceOptions = {}; function Trace(options) { const writeLog = (logFor, className, methodName, args) => { project_configuration_1.configuaration.refresh(); let logConfig = [model_1.LogPreferences.writeOnlyErrors, model_1.LogBoolStatus.disabled, model_1.LogBoolStatus.disabled]; let clArgs; if (project_configuration_1.configuaration.appLogConfig) { logConfig[0] = project_configuration_1.configuaration.appLogConfig.level || model_1.LogPreferences.writeOnlyErrors; logConfig[1] = project_configuration_1.configuaration.appLogConfig.includeLongParams === undefined ? model_1.LogBoolStatus.disabled : project_configuration_1.configuaration.appLogConfig.includeLongParams; logConfig[2] = project_configuration_1.configuaration.appLogConfig.includeRecMethods === undefined ? model_1.LogBoolStatus.disabled : project_configuration_1.configuaration.appLogConfig.includeRecMethods; } if (logConfig[0] === model_1.LogPreferences.writeAllInfo) { if (traceOptions[className]) { let tOptions = traceOptions[className]; if (tOptions.exclude && tOptions.exclude.indexOf(methodName) !== -1 && logConfig[2] === model_1.LogBoolStatus.disabled) { return; } if (tOptions.params && tOptions.params[methodName] && logConfig[1] === model_1.LogBoolStatus.disabled) { clArgs = _.clone(args); let exPrms = tOptions.params[methodName]; if (exPrms[0] === '*') { clArgs = ['**All arguments removed from log**']; } else { for (let i = 0; i < exPrms.length; i++) { clArgs[exPrms[i]] = '**Param ' + exPrms[i] + ' removed from log**'; } } } } winston_logger_1.ApplicationLogger.writeLog(model_1.LogLevels.info, { context: logFor === 1 ? model_1.TracerLogFor.class : model_1.TracerLogFor.method, class: className, method: methodName, parameters: clArgs || args }); } }; return (target, name, descriptor) => { if (descriptor) { let original = descriptor.value; descriptor.value = function (...args) { writeLog(2, target.constructor.name, name, args); let ret = original.apply(this, args); return ret; }; return descriptor; } else { if (options) { traceOptions[target.name] = options; } Object.getOwnPropertyNames(target.prototype).forEach((methodName) => { let original = target.prototype[methodName]; if (typeof original !== "function" || methodName === "constructor") { return; } target.prototype[methodName] = function (...args) { writeLog(1, target.name, methodName, args); let ret = original.apply(this, args); return ret; }; }); return target; } }; } exports.Trace = Trace;