@creator.co/wapi 1.6.1 → 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/npmpublish.yml +1 -1
- package/.github/workflows/prs.yml +1 -1
- package/dist/index.js +45 -31
- package/dist/index.js.map +1 -1
- package/dist/jest.config.js +2 -4
- package/dist/jest.config.js.map +1 -1
- package/dist/package.json +12 -12
- package/dist/src/API/Request.js +53 -59
- package/dist/src/API/Request.js.map +1 -1
- package/dist/src/API/Response.js +81 -156
- package/dist/src/API/Response.js.map +1 -1
- package/dist/src/BaseEvent/EventProcessor.js +54 -132
- package/dist/src/BaseEvent/EventProcessor.js.map +1 -1
- package/dist/src/BaseEvent/Process.js +40 -98
- package/dist/src/BaseEvent/Process.js.map +1 -1
- package/dist/src/BaseEvent/Transaction.js +122 -310
- package/dist/src/BaseEvent/Transaction.js.map +1 -1
- package/dist/src/Cache/Redis.js +55 -119
- package/dist/src/Cache/Redis.js.map +1 -1
- package/dist/src/Cache/types.js +1 -2
- package/dist/src/Config/Configuration.js +46 -86
- package/dist/src/Config/Configuration.js.map +1 -1
- package/dist/src/Config/EnvironmentVar.js +57 -119
- package/dist/src/Config/EnvironmentVar.js.map +1 -1
- package/dist/src/Crypto/Crypto.js +35 -82
- package/dist/src/Crypto/Crypto.js.map +1 -1
- package/dist/src/Crypto/JWT.js +12 -27
- package/dist/src/Crypto/JWT.js.map +1 -1
- package/dist/src/Database/Database.js +3 -8
- package/dist/src/Database/Database.js.map +1 -1
- package/dist/src/Database/DatabaseManager.js +23 -28
- package/dist/src/Database/DatabaseManager.js.map +1 -1
- package/dist/src/Database/DatabaseTransaction.js +50 -166
- package/dist/src/Database/DatabaseTransaction.js.map +1 -1
- package/dist/src/Database/index.js +11 -15
- package/dist/src/Database/index.js.map +1 -1
- package/dist/src/Database/integrations/knex/KnexDatabase.js +22 -76
- package/dist/src/Database/integrations/knex/KnexDatabase.js.map +1 -1
- package/dist/src/Database/integrations/knex/KnexTransaction.js +19 -85
- package/dist/src/Database/integrations/knex/KnexTransaction.js.map +1 -1
- package/dist/src/Database/integrations/kysely/KyselyDatabase.js +37 -88
- package/dist/src/Database/integrations/kysely/KyselyDatabase.js.map +1 -1
- package/dist/src/Database/integrations/kysely/KyselyTransaction.js +46 -114
- package/dist/src/Database/integrations/kysely/KyselyTransaction.js.map +1 -1
- package/dist/src/Database/integrations/pgsql/PostgresDatabase.js +20 -71
- package/dist/src/Database/integrations/pgsql/PostgresDatabase.js.map +1 -1
- package/dist/src/Database/integrations/pgsql/PostgresTransaction.js +19 -85
- package/dist/src/Database/integrations/pgsql/PostgresTransaction.js.map +1 -1
- package/dist/src/Database/types.js +1 -2
- package/dist/src/Globals.js +93 -98
- package/dist/src/Globals.js.map +1 -1
- package/dist/src/Logger/Logger.js +88 -222
- package/dist/src/Logger/Logger.js.map +1 -1
- package/dist/src/Mailer/Mailer.js +83 -204
- package/dist/src/Mailer/Mailer.js.map +1 -1
- package/dist/src/Publisher/Publisher.js +43 -107
- package/dist/src/Publisher/Publisher.js.map +1 -1
- package/dist/src/Server/RouteResolver.js +22 -49
- package/dist/src/Server/RouteResolver.js.map +1 -1
- package/dist/src/Server/Router.js +12 -16
- package/dist/src/Server/Router.js.map +1 -1
- package/dist/src/Server/lib/ContainerServer.js +21 -83
- package/dist/src/Server/lib/ContainerServer.js.map +1 -1
- package/dist/src/Server/lib/Server.js +50 -99
- package/dist/src/Server/lib/Server.js.map +1 -1
- package/dist/src/Server/lib/container/GenericHandler.js +32 -107
- package/dist/src/Server/lib/container/GenericHandler.js.map +1 -1
- package/dist/src/Server/lib/container/GenericHandlerEvent.js +37 -81
- package/dist/src/Server/lib/container/GenericHandlerEvent.js.map +1 -1
- package/dist/src/Server/lib/container/HealthHandler.js +3 -35
- package/dist/src/Server/lib/container/HealthHandler.js.map +1 -1
- package/dist/src/Server/lib/container/Proxy.js +64 -127
- package/dist/src/Server/lib/container/Proxy.js.map +1 -1
- package/dist/src/Server/lib/container/Utils.js +12 -55
- package/dist/src/Server/lib/container/Utils.js.map +1 -1
- package/dist/src/Util/AsyncSingleton.js +40 -164
- package/dist/src/Util/AsyncSingleton.js.map +1 -1
- package/dist/src/Util/Utils.js +18 -24
- package/dist/src/Util/Utils.js.map +1 -1
- package/dist/src/Validation/Validator.js +10 -16
- package/dist/src/Validation/Validator.js.map +1 -1
- package/package.json +12 -12
- package/tests/Logger/Logger.test.ts +5 -3
- package/tsconfig.json +3 -1
|
@@ -1,37 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (o && typeof o.length === "number") return {
|
|
6
|
-
next: function () {
|
|
7
|
-
if (o && i >= o.length) o = void 0;
|
|
8
|
-
return { value: o && o[i++], done: !o };
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
-
};
|
|
13
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
-
if (!m) return o;
|
|
16
|
-
var i = m.call(o), r, ar = [], e;
|
|
17
|
-
try {
|
|
18
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
-
}
|
|
20
|
-
catch (error) { e = { error: error }; }
|
|
21
|
-
finally {
|
|
22
|
-
try {
|
|
23
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
-
}
|
|
25
|
-
finally { if (e) throw e.error; }
|
|
26
|
-
}
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.LOG_LEVELS = void 0;
|
|
31
|
-
var abind = require("abind");
|
|
32
|
-
var stringify = require("json-stringify-safe");
|
|
33
|
-
var stackTrace = require("stack-trace");
|
|
34
|
-
var Utils_1 = require("../Util/Utils");
|
|
1
|
+
import * as abind from 'abind';
|
|
2
|
+
import * as stringify from 'json-stringify-safe';
|
|
3
|
+
import * as stackTrace from 'stack-trace';
|
|
4
|
+
import Utils from '../Util/Utils';
|
|
35
5
|
/**
|
|
36
6
|
* Enumeration of log levels.
|
|
37
7
|
* @enum {string}
|
|
@@ -40,13 +10,13 @@ var Utils_1 = require("../Util/Utils");
|
|
|
40
10
|
* @property {string} WARN - Warning log level.
|
|
41
11
|
* @property {string} ERROR - Error log level.
|
|
42
12
|
*/
|
|
43
|
-
var LOG_LEVELS;
|
|
13
|
+
export var LOG_LEVELS;
|
|
44
14
|
(function (LOG_LEVELS) {
|
|
45
15
|
LOG_LEVELS["DEBUG"] = "DEBUG";
|
|
46
16
|
LOG_LEVELS["INFO"] = "INFO";
|
|
47
17
|
LOG_LEVELS["WARN"] = "WARN";
|
|
48
18
|
LOG_LEVELS["ERROR"] = "ERROR";
|
|
49
|
-
})(LOG_LEVELS || (
|
|
19
|
+
})(LOG_LEVELS || (LOG_LEVELS = {}));
|
|
50
20
|
/**
|
|
51
21
|
* A constant that represents the console object to be used for logging.
|
|
52
22
|
* If the console object has a property named 'notGlobalLogger', it is assumed
|
|
@@ -54,30 +24,30 @@ var LOG_LEVELS;
|
|
|
54
24
|
* Otherwise, the global console object is used.
|
|
55
25
|
* @type {Console}
|
|
56
26
|
*/
|
|
57
|
-
|
|
27
|
+
const PURE_CONSOLE = console['notGlobalLogger'] ? console['origin'] : console;
|
|
58
28
|
/**
|
|
59
29
|
* The default log function that is used for logging messages.
|
|
60
30
|
* @type {Function}
|
|
61
31
|
*/
|
|
62
|
-
|
|
32
|
+
const DEFAULT_LOG_FUNCTION = PURE_CONSOLE.log.bind(PURE_CONSOLE);
|
|
63
33
|
/**
|
|
64
34
|
* Creates a blacklist array by mapping each string in the given array to its lowercase form.
|
|
65
35
|
* The resulting blacklist array is used to filter out sensitive information.
|
|
66
36
|
* @type {string[]} blacklist - An array of strings to be converted to lowercase and used as a blacklist.
|
|
67
37
|
* @returns {string[]} - An array of lowercase strings representing the blacklist.
|
|
68
38
|
*/
|
|
69
|
-
|
|
39
|
+
const blacklist = ['password', 'token', 'accounts'].map(s => s.toLowerCase());
|
|
70
40
|
/**
|
|
71
41
|
* Logger class for logging messages with different log levels.
|
|
72
42
|
*/
|
|
73
|
-
|
|
43
|
+
export default class Logger {
|
|
74
44
|
/**
|
|
75
45
|
* Constructs a Logger object with the given configuration and transaction ID.
|
|
76
46
|
* @param {config} config - The configuration object for the logger. Can be undefined.
|
|
77
47
|
* @param {string} transactionID - The ID of the transaction associated with the logger.
|
|
78
48
|
* @returns None
|
|
79
49
|
*/
|
|
80
|
-
|
|
50
|
+
constructor(config, transactionID) {
|
|
81
51
|
abind(this);
|
|
82
52
|
//
|
|
83
53
|
this.origin = PURE_CONSOLE;
|
|
@@ -101,155 +71,84 @@ var Logger = /** @class */ (function () {
|
|
|
101
71
|
* Returns a boolean value indicating whether the notGlobalLogger function is executed successfully.
|
|
102
72
|
* @returns {boolean} - true if the function is executed successfully, false otherwise.
|
|
103
73
|
*/
|
|
104
|
-
|
|
74
|
+
notGlobalLogger() {
|
|
105
75
|
return true;
|
|
106
|
-
}
|
|
76
|
+
}
|
|
107
77
|
/**
|
|
108
78
|
* Logs the given arguments with the debug log level.
|
|
109
79
|
* @param {...any} args - The arguments to be logged.
|
|
110
80
|
* @returns None
|
|
111
81
|
*/
|
|
112
|
-
|
|
113
|
-
var args = [];
|
|
114
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
115
|
-
args[_i] = arguments[_i];
|
|
116
|
-
}
|
|
82
|
+
debug(...args) {
|
|
117
83
|
this.processLog(LOG_LEVELS.DEBUG, args);
|
|
118
|
-
}
|
|
84
|
+
}
|
|
119
85
|
/**
|
|
120
86
|
* Logs the given arguments with the INFO log level.
|
|
121
87
|
* @param {...any} args - The arguments to be logged.
|
|
122
88
|
* @returns None
|
|
123
89
|
*/
|
|
124
|
-
|
|
125
|
-
var args = [];
|
|
126
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
127
|
-
args[_i] = arguments[_i];
|
|
128
|
-
}
|
|
90
|
+
log(...args) {
|
|
129
91
|
this.processLog(LOG_LEVELS.INFO, args);
|
|
130
|
-
}
|
|
92
|
+
}
|
|
131
93
|
/**
|
|
132
94
|
* Logs an informational message.
|
|
133
95
|
* @param {...any} args - The message(s) to log.
|
|
134
96
|
* @returns None
|
|
135
97
|
*/
|
|
136
|
-
|
|
137
|
-
var args = [];
|
|
138
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
139
|
-
args[_i] = arguments[_i];
|
|
140
|
-
}
|
|
98
|
+
info(...args) {
|
|
141
99
|
this.processLog(LOG_LEVELS.INFO, args);
|
|
142
|
-
}
|
|
100
|
+
}
|
|
143
101
|
/**
|
|
144
102
|
* Logs a warning message with the provided arguments.
|
|
145
103
|
* @param {...any} args - The arguments to be logged as a warning message.
|
|
146
104
|
* @returns None
|
|
147
105
|
*/
|
|
148
|
-
|
|
149
|
-
var args = [];
|
|
150
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
151
|
-
args[_i] = arguments[_i];
|
|
152
|
-
}
|
|
106
|
+
warning(...args) {
|
|
153
107
|
this.processLog(LOG_LEVELS.WARN, args);
|
|
154
|
-
}
|
|
108
|
+
}
|
|
155
109
|
/**
|
|
156
110
|
* Logs a warning message to the console.
|
|
157
111
|
* @param {...any} args - The arguments to be logged.
|
|
158
112
|
* @returns None
|
|
159
113
|
*/
|
|
160
|
-
|
|
161
|
-
var args = [];
|
|
162
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
163
|
-
args[_i] = arguments[_i];
|
|
164
|
-
}
|
|
114
|
+
warn(...args) {
|
|
165
115
|
this.processLog(LOG_LEVELS.WARN, args);
|
|
166
|
-
}
|
|
116
|
+
}
|
|
167
117
|
/**
|
|
168
118
|
* Logs an error message with the given arguments.
|
|
169
119
|
* @param {...any} args - The arguments to log as an error message.
|
|
170
120
|
* @returns None
|
|
171
121
|
*/
|
|
172
|
-
|
|
173
|
-
var args = [];
|
|
174
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
175
|
-
args[_i] = arguments[_i];
|
|
176
|
-
}
|
|
122
|
+
error(...args) {
|
|
177
123
|
this.processLog(LOG_LEVELS.ERROR, args);
|
|
178
|
-
}
|
|
124
|
+
}
|
|
179
125
|
/**
|
|
180
126
|
* Logs an exception with optional additional arguments.
|
|
181
127
|
* @param {any} exception - The exception to log.
|
|
182
128
|
* @param {...any} args - Additional arguments to include in the log.
|
|
183
129
|
* @returns None
|
|
184
130
|
*/
|
|
185
|
-
|
|
186
|
-
var args = [];
|
|
187
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
188
|
-
args[_i - 1] = arguments[_i];
|
|
189
|
-
}
|
|
131
|
+
exception(exception, ...args) {
|
|
190
132
|
this.iexception(exception, args);
|
|
191
|
-
}
|
|
133
|
+
}
|
|
192
134
|
/**
|
|
193
135
|
* Sets up the console bindings for logging purposes.
|
|
194
136
|
* @private
|
|
195
137
|
* @returns None
|
|
196
138
|
*/
|
|
197
|
-
|
|
198
|
-
var _this = this;
|
|
139
|
+
setupBindings() {
|
|
199
140
|
global.console = {
|
|
200
|
-
debug:
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
return _this.processLog(LOG_LEVELS.DEBUG, args);
|
|
206
|
-
},
|
|
207
|
-
log: function () {
|
|
208
|
-
var args = [];
|
|
209
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
210
|
-
args[_i] = arguments[_i];
|
|
211
|
-
}
|
|
212
|
-
return _this.processLog(LOG_LEVELS.INFO, args);
|
|
213
|
-
},
|
|
214
|
-
info: function () {
|
|
215
|
-
var args = [];
|
|
216
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
217
|
-
args[_i] = arguments[_i];
|
|
218
|
-
}
|
|
219
|
-
return _this.processLog(LOG_LEVELS.INFO, args);
|
|
220
|
-
},
|
|
221
|
-
warn: function () {
|
|
222
|
-
var args = [];
|
|
223
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
224
|
-
args[_i] = arguments[_i];
|
|
225
|
-
}
|
|
226
|
-
return _this.processLog(LOG_LEVELS.WARN, args);
|
|
227
|
-
},
|
|
228
|
-
error: function () {
|
|
229
|
-
var args = [];
|
|
230
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
231
|
-
args[_i] = arguments[_i];
|
|
232
|
-
}
|
|
233
|
-
return _this.processLog(LOG_LEVELS.ERROR, args);
|
|
234
|
-
},
|
|
141
|
+
debug: (...args) => this.processLog(LOG_LEVELS.DEBUG, args),
|
|
142
|
+
log: (...args) => this.processLog(LOG_LEVELS.INFO, args),
|
|
143
|
+
info: (...args) => this.processLog(LOG_LEVELS.INFO, args),
|
|
144
|
+
warn: (...args) => this.processLog(LOG_LEVELS.WARN, args),
|
|
145
|
+
error: (...args) => this.processLog(LOG_LEVELS.ERROR, args),
|
|
235
146
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
236
147
|
// @ts-ignore
|
|
237
|
-
warning:
|
|
238
|
-
|
|
239
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
240
|
-
args[_i] = arguments[_i];
|
|
241
|
-
}
|
|
242
|
-
return _this.processLog(LOG_LEVELS.WARN, args);
|
|
243
|
-
},
|
|
244
|
-
exception: function (exception) {
|
|
245
|
-
var args = [];
|
|
246
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
247
|
-
args[_i - 1] = arguments[_i];
|
|
248
|
-
}
|
|
249
|
-
return _this.iexception(exception, args);
|
|
250
|
-
},
|
|
148
|
+
warning: (...args) => this.processLog(LOG_LEVELS.WARN, args),
|
|
149
|
+
exception: (exception, ...args) => this.iexception(exception, args),
|
|
251
150
|
};
|
|
252
|
-
}
|
|
151
|
+
}
|
|
253
152
|
/**
|
|
254
153
|
* Formats a log message with the specified log level, message, and caller.
|
|
255
154
|
* @param {LOG_LEVELS} level - The log level of the message.
|
|
@@ -257,168 +156,135 @@ var Logger = /** @class */ (function () {
|
|
|
257
156
|
* @param {string} caller - The name of the caller function.
|
|
258
157
|
* @returns {string} - The formatted log message.
|
|
259
158
|
*/
|
|
260
|
-
|
|
261
|
-
if (
|
|
262
|
-
return
|
|
159
|
+
formattedLog(level, msg, caller) {
|
|
160
|
+
if (Utils.isHybridlessContainer() && this.transactionID) {
|
|
161
|
+
return `${this.transactionID}` + ` [${level.toString()}] [${caller}] ${msg.join(' ')}`;
|
|
263
162
|
}
|
|
264
163
|
else {
|
|
265
|
-
return
|
|
164
|
+
return `[${level.toString()}] [${caller}] ${msg.join(' ')}`;
|
|
266
165
|
}
|
|
267
|
-
}
|
|
166
|
+
}
|
|
268
167
|
/**
|
|
269
168
|
* Retrieves the name of the caller function at the specified index in the stack trace.
|
|
270
169
|
* @param {number} index - The index of the caller function in the stack trace.
|
|
271
170
|
* @returns {string} The name of the caller function along with the file path and line number.
|
|
272
171
|
*/
|
|
273
|
-
|
|
172
|
+
callerName(index) {
|
|
274
173
|
var _a, _b, _c, _d, _e, _f;
|
|
275
|
-
|
|
174
|
+
const safeIndex = Math.min(index, stackTrace.get().length);
|
|
276
175
|
if (stackTrace.get()[safeIndex]) {
|
|
277
|
-
|
|
176
|
+
let callerName = (_c = (_b = (_a = stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.get()) === null || _a === void 0 ? void 0 : _a[safeIndex]) === null || _b === void 0 ? void 0 : _b.getFileName()) === null || _c === void 0 ? void 0 : _c.split('/');
|
|
278
177
|
callerName = (_d = callerName === null || callerName === void 0 ? void 0 : callerName.slice(callerName === null || callerName === void 0 ? void 0 : callerName.indexOf('src'))) === null || _d === void 0 ? void 0 : _d.join('/');
|
|
279
178
|
return callerName + ':' + ((_f = (_e = stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.get()) === null || _e === void 0 ? void 0 : _e[safeIndex]) === null || _f === void 0 ? void 0 : _f.getLineNumber());
|
|
280
179
|
}
|
|
281
180
|
return '';
|
|
282
|
-
}
|
|
181
|
+
}
|
|
283
182
|
/**
|
|
284
183
|
* Processes log messages based on the specified log level.
|
|
285
184
|
* @param {LOG_LEVELS} level - The level of the log message.
|
|
286
185
|
* @param {any} args - The arguments to be logged.
|
|
287
186
|
* @returns None
|
|
288
187
|
*/
|
|
289
|
-
|
|
290
|
-
var e_1, _a;
|
|
188
|
+
processLog(level, args) {
|
|
291
189
|
if (level < this._LOG_LEVEL)
|
|
292
190
|
return;
|
|
293
191
|
//get args
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
: this.suppressSensitiveInfo(arg);
|
|
302
|
-
msg.push(fMsg);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
306
|
-
finally {
|
|
307
|
-
try {
|
|
308
|
-
if (args_1_1 && !args_1_1.done && (_a = args_1.return)) _a.call(args_1);
|
|
309
|
-
}
|
|
310
|
-
finally { if (e_1) throw e_1.error; }
|
|
192
|
+
const msg = [];
|
|
193
|
+
for (const arg of args) {
|
|
194
|
+
// Deep clone object so we dont modify source
|
|
195
|
+
const fMsg = typeof arg === 'object' && arg
|
|
196
|
+
? stringify(this.suppressSensitiveInfo(JSON.parse(stringify(arg))), null, 2)
|
|
197
|
+
: this.suppressSensitiveInfo(arg);
|
|
198
|
+
msg.push(fMsg);
|
|
311
199
|
}
|
|
312
200
|
//push into logs stack
|
|
313
201
|
// todo: improve error stack
|
|
314
202
|
this.pushLog(level, this.formattedLog(level, msg, this.callerName(3)));
|
|
315
|
-
}
|
|
203
|
+
}
|
|
316
204
|
/**
|
|
317
205
|
* Logs an exception along with additional arguments and the stack trace.
|
|
318
206
|
* @param {Error} exception - The exception object to log.
|
|
319
207
|
* @param {...any} args - Additional arguments to include in the log.
|
|
320
208
|
* @returns None
|
|
321
209
|
*/
|
|
322
|
-
|
|
323
|
-
var e_2, _a;
|
|
324
|
-
var args = [];
|
|
325
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
326
|
-
args[_i - 1] = arguments[_i];
|
|
327
|
-
}
|
|
210
|
+
iexception(exception, ...args) {
|
|
328
211
|
//format message
|
|
329
|
-
|
|
212
|
+
const msg = [];
|
|
330
213
|
//push exeception
|
|
331
214
|
msg.push(exception.toString() + ' -');
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
if (arg != exception)
|
|
337
|
-
msg.push(arg);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
341
|
-
finally {
|
|
342
|
-
try {
|
|
343
|
-
if (args_2_1 && !args_2_1.done && (_a = args_2.return)) _a.call(args_2);
|
|
344
|
-
}
|
|
345
|
-
finally { if (e_2) throw e_2.error; }
|
|
346
|
-
}
|
|
215
|
+
//get args
|
|
216
|
+
for (const arg of args)
|
|
217
|
+
if (arg != exception)
|
|
218
|
+
msg.push(arg);
|
|
347
219
|
if (exception.stack)
|
|
348
220
|
msg.push(exception.stack); //push Exeception stack at the end
|
|
349
221
|
//push into logs stack
|
|
350
222
|
this.pushLog(LOG_LEVELS.ERROR, this.formattedLog(LOG_LEVELS.ERROR, msg, this.callerName(3)));
|
|
351
|
-
}
|
|
223
|
+
}
|
|
352
224
|
/**
|
|
353
225
|
* Pushes a log message to the console with the specified log level.
|
|
354
226
|
* @param {LOG_LEVELS} level - The log level of the message.
|
|
355
227
|
* @param {string} fMsg - The formatted log message.
|
|
356
228
|
* @returns None
|
|
357
229
|
*/
|
|
358
|
-
|
|
230
|
+
pushLog(level, fMsg) {
|
|
359
231
|
DEFAULT_LOG_FUNCTION.apply(PURE_CONSOLE, [fMsg]);
|
|
360
|
-
}
|
|
232
|
+
}
|
|
361
233
|
/**
|
|
362
234
|
* Suppresses sensitive information in the given value based on the filter blacklist.
|
|
363
235
|
* @param {any} value - The value to suppress sensitive information from.
|
|
364
236
|
* @returns {string} - The value with sensitive information suppressed.
|
|
365
237
|
*/
|
|
366
|
-
|
|
238
|
+
suppressSensitiveInfo(value) {
|
|
367
239
|
if (!value || !this.filterBlacklist.length)
|
|
368
240
|
return value;
|
|
369
|
-
|
|
370
|
-
|
|
241
|
+
const parent = [value];
|
|
242
|
+
const stack = [{ value, parent, key: 0 }];
|
|
371
243
|
while (stack.length > 0) {
|
|
372
244
|
this.suppressSensitiveInfoItem(stack.pop(), stack.push.bind(stack));
|
|
373
245
|
}
|
|
374
246
|
return parent[0];
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
var value = _a.value, parent = _a.parent, key = _a.key;
|
|
247
|
+
}
|
|
248
|
+
suppressSensitiveInfoItem({ value, parent, key }, push) {
|
|
378
249
|
if (!value)
|
|
379
250
|
return;
|
|
380
251
|
if (typeof value === 'string') {
|
|
381
|
-
this.suppressSensitiveString({ value
|
|
252
|
+
this.suppressSensitiveString({ value, parent, key }, push);
|
|
382
253
|
}
|
|
383
254
|
else if (Array.isArray(value)) {
|
|
384
|
-
value.forEach(
|
|
255
|
+
value.forEach((v, index) => push({ value: v, parent: value, key: index }));
|
|
385
256
|
}
|
|
386
257
|
else if (typeof value === 'object') {
|
|
387
258
|
this.suppressSensitiveObject(value, push);
|
|
388
259
|
}
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
var
|
|
392
|
-
|
|
393
|
-
var modifiedValue = value;
|
|
260
|
+
}
|
|
261
|
+
suppressSensitiveString({ value, parent, key }, push) {
|
|
262
|
+
var _a;
|
|
263
|
+
let modifiedValue = value;
|
|
394
264
|
try {
|
|
395
265
|
// Try to parse json string
|
|
396
266
|
modifiedValue = JSON.parse(value);
|
|
397
|
-
push({ value: modifiedValue, parent
|
|
267
|
+
push({ value: modifiedValue, parent, key });
|
|
398
268
|
}
|
|
399
|
-
catch (
|
|
400
|
-
|
|
401
|
-
if (this.filterBlacklist.some(
|
|
402
|
-
modifiedValue =
|
|
269
|
+
catch (_b) {
|
|
270
|
+
const lower = value.toLowerCase();
|
|
271
|
+
if (this.filterBlacklist.some(f => lower == f))
|
|
272
|
+
modifiedValue = `**SUPPRESSED_SENSITIVE_DATA** (${((_a = String(modifiedValue)) === null || _a === void 0 ? void 0 : _a.length) || 0} len)`;
|
|
403
273
|
}
|
|
404
274
|
parent[key] = modifiedValue;
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
var lower = k.toLowerCase();
|
|
412
|
-
var match = v && _this.filterBlacklist.some(function (f) { return lower == f; });
|
|
275
|
+
}
|
|
276
|
+
suppressSensitiveObject(value, push) {
|
|
277
|
+
Object.entries(value).forEach(([k, v]) => {
|
|
278
|
+
var _a;
|
|
279
|
+
const lower = k.toLowerCase();
|
|
280
|
+
const match = v && this.filterBlacklist.some(f => lower == f);
|
|
413
281
|
if (match) {
|
|
414
|
-
value[k] =
|
|
282
|
+
value[k] = `**SUPPRESSED_SENSITIVE_DATA** (${((_a = String(v)) === null || _a === void 0 ? void 0 : _a.length) || 0} len)`;
|
|
415
283
|
}
|
|
416
284
|
else {
|
|
417
285
|
push({ value: v, parent: value, key: k });
|
|
418
286
|
}
|
|
419
287
|
});
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
}());
|
|
423
|
-
exports.default = Logger;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
424
290
|
//# sourceMappingURL=Logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/Logger/Logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/Logger/Logger.ts"],"names":[],"mappings":"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"}
|