UNPKG

3.16 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const logLevel_1 = require("./options/logLevel");
4require("reflect-metadata");
5const STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
6const ARGUMENT_NAMES = /([^\s,]+)/g;
7function extractName(target) {
8 if (!target.name && target.constructor) {
9 return target.constructor.name;
10 }
11 return target.name;
12}
13function postLogError(logger, target, error, propertyKey, _methodIdentifier) {
14 if (logger) {
15 let name = extractName(target);
16 logger.error(`${_methodIdentifier} :: ${name}.${propertyKey} ## `, error.message, error.stack);
17 }
18}
19exports.postLogError = postLogError;
20function preLog(target, propertyKey, args, logLevel, _methodIdentifier, filename) {
21 let logger;
22 let name = extractName(target);
23 let method = target[propertyKey];
24 if (!method) {
25 method = target.prototype[propertyKey];
26 }
27 if (!logger && target.logelas)
28 logger = target.logelas;
29 if (!logger && target.constructor.logelas)
30 logger = target.constructor.logelas;
31 if (logger) {
32 logger.__methodname = `${_methodIdentifier} :: ${name}.${propertyKey}`;
33 logger[logLevel_1.LogLevelStr[logLevel]](`${_methodIdentifier} :: ${name}.${propertyKey} => `, parseArgs(args, method), filename);
34 }
35 return logger;
36}
37exports.preLog = preLog;
38function postLog(target, propertyKey, result, logLevel, _methodIdentifier, filename) {
39 let name = extractName(target);
40 let logger = target.logelas;
41 if (result && result.toString && result.toString() === '[object Promise]') {
42 result.then((data) => {
43 if (logger)
44 logger[logLevel_1.LogLevelStr[logLevel]](`${_methodIdentifier} :: ${name}.${propertyKey} <= `, data === undefined ? 'void' : data, filename);
45 return data;
46 });
47 }
48 else {
49 if (logger)
50 logger[logLevel_1.LogLevelStr[logLevel]](`${_methodIdentifier} :: ${name}.${propertyKey} <= `, result === undefined ? 'void' : result, filename);
51 }
52 return result;
53}
54exports.postLog = postLog;
55function stringify(object) {
56 try {
57 return JSON.stringify(object);
58 }
59 catch (error) {
60 return '[circular ]';
61 }
62}
63function parseArgs(argValues, func) {
64 if (!argValues || argValues.length === 0) {
65 return;
66 }
67 const fnStr = func.toString().replace(STRIP_COMMENTS, '');
68 let argNames = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);
69 if (argNames === null)
70 return [];
71 const requiredArgNames = argNames;
72 return requiredArgNames.map(function (argName) {
73 return argNames.indexOf(argName);
74 }).map(function (argNameIndex) {
75 if (argNameIndex === -1 || argNameIndex >= argValues.length)
76 return;
77 if (typeof argValues[argNameIndex] === 'function') {
78 return `${argNames[argNameIndex]} = ${argValues[argNameIndex].name}`;
79 }
80 else {
81 return `${argNames[argNameIndex]} = ${stringify(argValues[argNameIndex])}`;
82 }
83 }).join(' | | ');
84}
85//# sourceMappingURL=loggerd.js.map
\No newline at end of file