UNPKG

3.19 kBJavaScriptView Raw
1"use strict";
2const utils_1 = require("./utils");
3const jaul = require("jaul");
4const settings = require("setmeup").settings;
5class Logger {
6 static argsCleaner(obj, index) {
7 const max = settings.logger.maxDepth;
8 if (utils_1.isArray(obj)) {
9 for (let i = 0; i < obj.length; i++) {
10 if (index >= max) {
11 obj[i] = "...";
12 }
13 else if (utils_1.isFunction(obj[i])) {
14 obj[i] = "[Function]";
15 }
16 else {
17 Logger.argsCleaner(obj[i], index + 1);
18 }
19 }
20 }
21 else if (utils_1.isObject(obj)) {
22 let keys = Object.keys(obj);
23 for (let key of keys) {
24 let value = obj[key];
25 try {
26 if (index >= max) {
27 obj[key] = "...";
28 }
29 else if (settings.logger.obfuscateFields && settings.logger.obfuscateFields.indexOf(key) >= 0) {
30 obj[key] = "****";
31 }
32 else if (settings.logger.maskFields && settings.logger.maskFields[key]) {
33 let maskedValue;
34 if (utils_1.isObject(value)) {
35 maskedValue = value.value || value.text || value.data || value.toString();
36 }
37 else {
38 maskedValue = value.toString();
39 }
40 obj[key] = jaul.data.maskString(maskedValue, "*", settings.logger.maskFields[key]);
41 }
42 else if (settings.logger.removeFields && settings.logger.removeFields.indexOf(key) >= 0) {
43 delete obj[key];
44 }
45 else if (utils_1.isArray(value)) {
46 for (let i = 0; i < value.length; i++) {
47 Logger.argsCleaner(value[i], index + 1);
48 }
49 }
50 else if (utils_1.isFunction(value)) {
51 obj[key] = "[Function]";
52 }
53 else if (utils_1.isObject(value)) {
54 Logger.argsCleaner(value, index + 1);
55 }
56 }
57 catch (ex) {
58 delete obj[key];
59 obj[key] = "[Unreadable]";
60 }
61 }
62 }
63 }
64 static clean(args) {
65 let result = [];
66 for (let arg of args) {
67 if (utils_1.isError(arg)) {
68 result.push(arg.toString());
69 }
70 else if (utils_1.isObject(arg) || utils_1.isArray(arg)) {
71 let cloned = JSON.parse(JSON.stringify(arg, null, 0));
72 Logger.argsCleaner(cloned, 0);
73 result.push(cloned);
74 }
75 else if (utils_1.isFunction(arg)) {
76 result.push("[Function]");
77 }
78 else {
79 result.push(arg);
80 }
81 }
82 return result;
83 }
84}
85module.exports = Logger;