node-ansi-logger 3.1.0 → 3.2.0-dev-20260202-7156835

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/dist/logger.js CHANGED
@@ -1,7 +1,34 @@
1
+ /**
2
+ * This file contains the AnsiLogger .
3
+ *
4
+ * @file logger.ts
5
+ * @author Luca Liguori
6
+ * @created 2023-06-01
7
+ * @version 3.0.2
8
+ * @license Apache-2.0
9
+ *
10
+ * Copyright 2024, 2025, 2026 Luca Liguori.
11
+ *
12
+ * Licensed under the Apache License, Version 2.0 (the "License");
13
+ * you may not use this file except in compliance with the License.
14
+ * You may obtain a copy of the License at
15
+ *
16
+ * http://www.apache.org/licenses/LICENSE-2.0
17
+ *
18
+ * Unless required by applicable law or agreed to in writing, software
19
+ * distributed under the License is distributed on an "AS IS" BASIS,
20
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ * See the License for the specific language governing permissions and
22
+ * limitations under the License.
23
+ */
24
+ /* eslint-disable no-console */
25
+ /* eslint-disable jsdoc/reject-any-type */
26
+ // Node.js built-in modules
1
27
  import path from 'node:path';
2
28
  import * as fs from 'node:fs';
3
29
  import * as os from 'node:os';
4
30
  import { stringify } from './stringify.js';
31
+ // ANSI color codes and styles are defined here for use in the logger
5
32
  export const RESET = '';
6
33
  export const BRIGHT = '';
7
34
  export const DIM = '';
@@ -26,23 +53,28 @@ export const CYAN = '';
26
53
  export const LIGHT_GREY = '';
27
54
  export const GREY = '';
28
55
  export const WHITE = '';
29
- export const db = '';
30
- export const nf = '';
31
- export const nt = '';
32
- export const wr = '';
33
- export const er = '';
34
- export const ft = '';
35
- export const rs = '';
36
- export const rk = '';
37
- export const dn = '';
38
- export const gn = '';
39
- export const idn = '';
40
- export const ign = '';
41
- export const zb = '';
42
- export const hk = '';
43
- export const pl = '';
44
- export const id = '';
45
- export const or = '';
56
+ // ANSI color codes short form to use in the logger
57
+ export const db = ''; // Debug 247
58
+ export const nf = ''; // Info 255
59
+ export const nt = ''; // Notice
60
+ export const wr = ''; // Warn 220
61
+ export const er = ''; // Error
62
+ export const ft = ''; // Fatal
63
+ export const rs = ''; // Reset colors to default foreground and background
64
+ export const rk = ''; // Erase from cursor
65
+ // Used internally by plugins
66
+ export const dn = ''; // Display name device
67
+ export const gn = ''; // Display name group
68
+ export const idn = ''; // Inverted display name device
69
+ export const ign = ''; // Inverted display name group
70
+ export const zb = ''; // Zigbee
71
+ export const hk = ''; // Homekit
72
+ export const pl = ''; // payload
73
+ export const id = ''; // id or ieee_address or UUID
74
+ export const or = ''; // history
75
+ /**
76
+ * LogLevel enumeration to specify the logging level.
77
+ */
46
78
  export var LogLevel;
47
79
  (function (LogLevel) {
48
80
  LogLevel["NONE"] = "";
@@ -53,6 +85,9 @@ export var LogLevel;
53
85
  LogLevel["ERROR"] = "error";
54
86
  LogLevel["FATAL"] = "fatal";
55
87
  })(LogLevel || (LogLevel = {}));
88
+ /**
89
+ * TimestampFormat enumeration to specify the format of timestamps in log messages.
90
+ */
56
91
  export var TimestampFormat;
57
92
  (function (TimestampFormat) {
58
93
  TimestampFormat[TimestampFormat["ISO"] = 0] = "ISO";
@@ -63,6 +98,7 @@ export var TimestampFormat;
63
98
  TimestampFormat[TimestampFormat["HOMEBRIDGE"] = 5] = "HOMEBRIDGE";
64
99
  TimestampFormat[TimestampFormat["CUSTOM"] = 6] = "CUSTOM";
65
100
  })(TimestampFormat || (TimestampFormat = {}));
101
+ // Initialize the global variables
66
102
  if (typeof globalThis.__AnsiLoggerCallback__ === 'undefined')
67
103
  globalThis.__AnsiLoggerCallback__ = undefined;
68
104
  if (typeof globalThis.__AnsiLoggerCallbackLoglevel__ === 'undefined')
@@ -73,128 +109,293 @@ if (typeof globalThis.__AnsiLoggerFileLoglevel__ === 'undefined')
73
109
  globalThis.__AnsiLoggerFileLoglevel__ = undefined;
74
110
  if (typeof globalThis.__AnsiLoggerFileLogSize__ === 'undefined')
75
111
  globalThis.__AnsiLoggerFileLogSize__ = undefined;
112
+ /**
113
+ * AnsiLogger provides a customizable logging utility with ANSI color support.
114
+ * It allows for various configurations such as enabling debug logs, customizing log name, and more.
115
+ */
76
116
  export class AnsiLogger {
77
- _extLog;
78
- _logName;
79
- _logFilePath;
80
- _logFileSize;
81
- _logLevel;
82
- _logWithColors;
83
- _logTimestampFormat;
84
- _logCustomTimestampFormat;
85
- _logTimeStampColor = '';
86
- _logNameColor = '';
87
- _maxFileSize = 100000000;
88
- logStartTime;
89
- callback = undefined;
117
+ #extLog;
118
+ #logName;
119
+ #logFilePath;
120
+ #logFileSize;
121
+ #logLevel;
122
+ #logWithColors;
123
+ #logTimestampFormat;
124
+ #logCustomTimestampFormat;
125
+ #logTimeStampColor;
126
+ #logNameColor;
127
+ #maxFileSize;
128
+ #logStartTime;
129
+ #callback = undefined;
130
+ /**
131
+ * Constructs a new AnsiLogger instance with optional configuration parameters.
132
+ *
133
+ * @param {AnsiLoggerParams} params - Configuration options for the logger.
134
+ */
90
135
  constructor(params) {
91
- this._extLog = params.extLog;
92
- this._logName = params.logName ?? 'NodeAnsiLogger';
93
- this._logLevel = params.logLevel ?? (params.logDebug === true ? "debug" : "info");
94
- this._logWithColors = params.logWithColors ?? true;
95
- this._logTimestampFormat = params.logTimestampFormat ?? 3;
96
- this._logCustomTimestampFormat = params.logCustomTimestampFormat ?? 'yyyy-MM-dd HH:mm:ss';
97
- this.logStartTime = 0;
98
- }
136
+ this.#extLog = params.extLog;
137
+ this.#logName = params.logName ?? 'NodeAnsiLogger';
138
+ this.#logNameColor = params.logNameColor ?? '';
139
+ this.#logLevel = params.logLevel ?? (params.logDebug === true ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */);
140
+ this.#logWithColors = params.logWithColors !== undefined ? params.logWithColors : process.env.NO_COLOR === '1' ? false : true;
141
+ this.#logTimestampFormat =
142
+ params.logTimestampFormat !== undefined
143
+ ? params.logTimestampFormat
144
+ : process.env.NODE_ANSI_LOGGER_TIMESTAMP_FORMAT !== undefined && ['0', '1', '2', '3', '4', '5', '6'].includes(process.env.NODE_ANSI_LOGGER_TIMESTAMP_FORMAT)
145
+ ? Number(process.env.NODE_ANSI_LOGGER_TIMESTAMP_FORMAT)
146
+ : 3 /* TimestampFormat.LOCAL_DATE_TIME */;
147
+ this.#logTimeStampColor = params.logTimeStampColor ?? '';
148
+ this.#logCustomTimestampFormat =
149
+ params.logCustomTimestampFormat !== undefined && typeof params.logCustomTimestampFormat === 'string'
150
+ ? params.logCustomTimestampFormat
151
+ : (process.env.NODE_ANSI_LOGGER_TIMESTAMP_CUSTOM_FORMAT ?? 'yyyy-MM-dd HH:mm:ss');
152
+ this.#maxFileSize = params.maxFileSize ?? 100_000_000; // Default 100 MB
153
+ this.#maxFileSize = Math.max(Math.min(this.#maxFileSize, 500_000_000), 1_000_000); // Min 1MB, Max 500MB
154
+ this.#logStartTime = 0;
155
+ }
156
+ /**
157
+ * Gets the name of the logger.
158
+ *
159
+ * @returns {string} The logger name.
160
+ */
99
161
  get logName() {
100
- return this._logName;
162
+ return this.#logName;
101
163
  }
164
+ /**
165
+ * Sets the log name for the logger.
166
+ *
167
+ * @param {string} name - The logger name to set.
168
+ */
102
169
  set logName(name) {
103
- this._logName = name;
170
+ this.#logName = name;
104
171
  }
172
+ /**
173
+ * Gets the log level of the logger.
174
+ *
175
+ * @returns {LogLevel} The log level.
176
+ */
105
177
  get logLevel() {
106
- return this._logLevel;
178
+ return this.#logLevel;
107
179
  }
180
+ /**
181
+ * Sets the log level for the logger.
182
+ *
183
+ * @param {LogLevel} logLevel - The log level to set.
184
+ */
108
185
  set logLevel(logLevel) {
109
- this._logLevel = logLevel;
186
+ this.#logLevel = logLevel;
110
187
  }
188
+ /**
189
+ * Gets the logWithColors flag of the logger.
190
+ *
191
+ * @returns {boolean} The logWithColors parameter.
192
+ */
111
193
  get logWithColors() {
112
- return this._logWithColors;
194
+ return this.#logWithColors;
113
195
  }
196
+ /**
197
+ * Sets the logWithColors flag of the logger.
198
+ *
199
+ * @param {boolean} logWithColors - The logWithColors parameter to set.
200
+ */
114
201
  set logWithColors(logWithColors) {
115
- this._logWithColors = logWithColors;
202
+ this.#logWithColors = logWithColors;
203
+ }
204
+ /**
205
+ * Gets the log name color string of the logger.
206
+ *
207
+ * @returns {string} The log name color string.
208
+ */
209
+ get logTimeStampColor() {
210
+ return this.#logTimeStampColor;
211
+ }
212
+ /**
213
+ * Sets the log name color string for the logger.
214
+ *
215
+ * @param {string} color - The logger name color string to set.
216
+ */
217
+ set logTimeStampColor(color) {
218
+ this.#logTimeStampColor = color;
219
+ }
220
+ /**
221
+ * Gets the log timestamp format of the logger.
222
+ *
223
+ * @returns {TimestampFormat} The log timestamp format.
224
+ */
225
+ get logTimestampFormat() {
226
+ return this.#logTimestampFormat;
227
+ }
228
+ /**
229
+ * Sets the log timestamp format for the logger.
230
+ *
231
+ * @param {TimestampFormat} logTimestampFormat - The log timestamp format to set.
232
+ */
233
+ set logTimestampFormat(logTimestampFormat) {
234
+ this.#logTimestampFormat = logTimestampFormat;
116
235
  }
236
+ /**
237
+ * Gets the log name color string of the logger.
238
+ *
239
+ * @returns {string} The log name color string.
240
+ */
117
241
  get logNameColor() {
118
- return this._logNameColor;
242
+ return this.#logNameColor;
119
243
  }
244
+ /**
245
+ * Sets the log name color string for the logger.
246
+ *
247
+ * @param {string} color - The logger name color string to set.
248
+ */
120
249
  set logNameColor(color) {
121
- this._logNameColor = color;
122
- }
123
- get logTimestampFormat() {
124
- return this._logTimestampFormat;
125
- }
126
- set logTimestampFormat(logTimestampFormat) {
127
- this._logTimestampFormat = logTimestampFormat;
250
+ this.#logNameColor = color;
128
251
  }
252
+ /**
253
+ * Gets the custom log timestamp format of the logger.
254
+ *
255
+ * @returns {string} The custom log timestamp format.
256
+ */
129
257
  get logCustomTimestampFormat() {
130
- return this._logCustomTimestampFormat;
258
+ return this.#logCustomTimestampFormat;
131
259
  }
260
+ /**
261
+ * Sets the custom log timestamp format for the logger.
262
+ *
263
+ * @param {string} logCustomTimestampFormat - The custom log timestamp format to set.
264
+ */
132
265
  set logCustomTimestampFormat(logCustomTimestampFormat) {
133
- this._logCustomTimestampFormat = logCustomTimestampFormat;
266
+ this.#logCustomTimestampFormat = logCustomTimestampFormat;
134
267
  }
268
+ /**
269
+ * Gets the file path of the log.
270
+ *
271
+ * @returns {string | undefined} The file path of the log, or undefined if not set.
272
+ */
135
273
  get logFilePath() {
136
- return this._logFilePath;
274
+ return this.#logFilePath;
137
275
  }
276
+ /**
277
+ * Sets the file path for logging.
278
+ *
279
+ * @param {string | undefined} filePath - The file path to set for logging.
280
+ */
138
281
  set logFilePath(filePath) {
139
282
  if (filePath && typeof filePath === 'string' && filePath !== '') {
283
+ // Convert relative path to absolute path
140
284
  try {
141
- this._logFilePath = path.resolve(filePath);
285
+ this.#logFilePath = path.resolve(filePath);
142
286
  }
143
287
  catch (error) {
144
288
  console.error(`Error resolving log file path ${CYAN}${filePath}${er}: ${error}`);
145
- this._logFilePath = undefined;
146
- this._logFileSize = undefined;
289
+ this.#logFilePath = undefined;
290
+ this.#logFileSize = undefined;
147
291
  return;
148
292
  }
149
- if (this._logFilePath && fs.existsSync(this._logFilePath)) {
293
+ // Check if the file exists and unlink
294
+ if (this.#logFilePath && fs.existsSync(this.#logFilePath)) {
150
295
  try {
151
- fs.unlinkSync(this._logFilePath);
296
+ fs.unlinkSync(this.#logFilePath);
152
297
  }
153
298
  catch (error) {
154
- console.error(`${er}Error unlinking the log file ${CYAN}${this._logFilePath}${er}: ${error}`);
155
- this._logFilePath = undefined;
156
- this._logFileSize = undefined;
299
+ console.error(`${er}Error unlinking the log file ${CYAN}${this.#logFilePath}${er}: ${error}`);
300
+ this.#logFilePath = undefined;
301
+ this.#logFileSize = undefined;
157
302
  return;
158
303
  }
159
304
  }
160
- this._logFileSize = 0;
305
+ this.#logFileSize = 0;
161
306
  }
162
307
  else {
163
- this._logFilePath = undefined;
164
- this._logFileSize = undefined;
308
+ this.#logFilePath = undefined;
309
+ this.#logFileSize = undefined;
165
310
  }
166
311
  }
312
+ /**
313
+ * Gets the size of log file.
314
+ *
315
+ * @returns {number | undefined} The size of log file, or undefined if not set.
316
+ */
167
317
  get logFileSize() {
168
- return this._logFilePath && this._logFileSize ? this._logFileSize : undefined;
318
+ return this.#logFilePath && this.#logFileSize ? this.#logFileSize : undefined;
169
319
  }
320
+ /**
321
+ * Gets the max file size of the file loggers.
322
+ *
323
+ * @returns {number} The current maxFileSize.
324
+ */
170
325
  get maxFileSize() {
171
- return this._maxFileSize;
326
+ return this.#maxFileSize;
172
327
  }
328
+ /**
329
+ * Sets the max file size of the file loggers.
330
+ *
331
+ * @param {number} maxFileSize - The maxFileSize to set. Minimum is 1MB, Maximum is 500MB.
332
+ */
173
333
  set maxFileSize(maxFileSize) {
174
- this._maxFileSize = Math.min(maxFileSize, 500000000);
175
- }
334
+ this.#maxFileSize = Math.max(Math.min(maxFileSize, 500_000_000), 1_000_000);
335
+ }
336
+ /**
337
+ * Gets the log start time of the logger.
338
+ *
339
+ * @returns {number} The current log start time.
340
+ */
341
+ get logStartTime() {
342
+ return this.#logStartTime;
343
+ }
344
+ /**
345
+ * Starts a timer with an optional message.
346
+ *
347
+ * @param {string} message - The message to log when starting the timer.
348
+ */
176
349
  startTimer(message) {
177
- this.logStartTime = Date.now();
350
+ this.#logStartTime = Date.now();
178
351
  this.info(`Timer started ${message}`);
179
352
  }
353
+ /**
354
+ * Stops the timer started by startTimer and logs the elapsed time.
355
+ *
356
+ * @param {string} message - The message to log along with the elapsed time.
357
+ */
180
358
  stopTimer(message) {
181
- if (this.logStartTime !== 0) {
182
- const timePassed = Date.now() - this.logStartTime;
359
+ if (this.#logStartTime !== 0) {
360
+ const timePassed = Date.now() - this.#logStartTime;
183
361
  this.info(`Timer stoppped at ${timePassed} ms ${message}`);
184
362
  }
185
- this.logStartTime = 0;
363
+ this.#logStartTime = 0;
186
364
  }
365
+ /**
366
+ * Sets the callback function to be used by the logger.
367
+ *
368
+ * @param {AnsiLoggerCallback} callback - The callback function.
369
+ */
187
370
  setCallback(callback) {
188
- this.callback = callback;
371
+ this.#callback = callback;
189
372
  }
373
+ /**
374
+ * Gets the callback function currently used by the logger.
375
+ *
376
+ * @returns {AnsiLoggerCallback | undefined} The callback function.
377
+ */
190
378
  getCallback() {
191
- return this.callback;
192
- }
193
- static setGlobalCallback(callback, callbackLevel = "debug") {
379
+ return this.#callback;
380
+ }
381
+ /**
382
+ * Sets the global callback function to be used by the logger.
383
+ *
384
+ * @param {AnsiLoggerCallback | undefined} callback - The callback function.
385
+ * @param {LogLevel} [callbackLevel] - The log level of the log file (default LogLevel.DEBUG).
386
+ *
387
+ * @returns {AnsiLoggerCallback | undefined} The path name of the log file.
388
+ */
389
+ static setGlobalCallback(callback, callbackLevel = "debug" /* LogLevel.DEBUG */) {
194
390
  __AnsiLoggerCallback__ = callback;
195
391
  __AnsiLoggerCallbackLoglevel__ = callbackLevel;
196
392
  return __AnsiLoggerCallback__;
197
393
  }
394
+ /**
395
+ * Gets the global callback function currently used by the logger.
396
+ *
397
+ * @returns {AnsiLoggerCallback | undefined} The callback function.
398
+ */
198
399
  static getGlobalCallback() {
199
400
  if (__AnsiLoggerCallback__) {
200
401
  return __AnsiLoggerCallback__;
@@ -203,6 +404,11 @@ export class AnsiLogger {
203
404
  return undefined;
204
405
  }
205
406
  }
407
+ /**
408
+ * Gets the global callback log level used by the logger.
409
+ *
410
+ * @returns {LogLevel | undefined} The log level of the global callback.
411
+ */
206
412
  static getGlobalCallbackLevel() {
207
413
  if (__AnsiLoggerCallbackLoglevel__) {
208
414
  return __AnsiLoggerCallbackLoglevel__;
@@ -211,13 +417,31 @@ export class AnsiLogger {
211
417
  return undefined;
212
418
  }
213
419
  }
214
- static setGlobalCallbackLevel(logLevel = "debug") {
420
+ /**
421
+ * Sets the global callback log level for the logger.
422
+ *
423
+ * @param {LogLevel} logLevel - The log level to set. Defaults to LogLevel.DEBUG.
424
+ *
425
+ * @returns {LogLevel | undefined} The log level that was set.
426
+ */
427
+ static setGlobalCallbackLevel(logLevel = "debug" /* LogLevel.DEBUG */) {
215
428
  __AnsiLoggerCallbackLoglevel__ = logLevel;
216
429
  return __AnsiLoggerCallbackLoglevel__;
217
430
  }
218
- static setGlobalLogfile(logfilePath, logfileLevel = "debug", unlink = false) {
431
+ /**
432
+ * Sets the global logfile to be used by the logger.
433
+ *
434
+ * @param {string} logfilePath - The path name of the log file.
435
+ * @param {LogLevel} logfileLevel - Optional: the log level of the log file. Default LogLevel.DEBUG.
436
+ * @param {boolean} unlink - Optional: whether to unlink (delete) the log file if it exists. Default false.
437
+ *
438
+ * @returns {string | undefined} The absolute path name of the log file.
439
+ */
440
+ static setGlobalLogfile(logfilePath, logfileLevel = "debug" /* LogLevel.DEBUG */, unlink = false) {
219
441
  if (logfilePath && typeof logfilePath === 'string' && logfilePath !== '') {
442
+ // Convert relative path to absolute path
220
443
  logfilePath = path.resolve(logfilePath);
444
+ // Check if the file exists and unlink it if requested
221
445
  if (unlink && fs.existsSync(logfilePath)) {
222
446
  try {
223
447
  fs.unlinkSync(logfilePath);
@@ -235,6 +459,11 @@ export class AnsiLogger {
235
459
  __AnsiLoggerFileLogSize__ = undefined;
236
460
  return undefined;
237
461
  }
462
+ /**
463
+ * Gets the global logfile currently used by the logger.
464
+ *
465
+ * @returns {string | undefined} The path name of the log file.
466
+ */
238
467
  static getGlobalLogfile() {
239
468
  if (__AnsiLoggerFilePath__) {
240
469
  return __AnsiLoggerFilePath__;
@@ -243,6 +472,11 @@ export class AnsiLogger {
243
472
  return undefined;
244
473
  }
245
474
  }
475
+ /**
476
+ * Gets the global logfile log level used by the loggers.
477
+ *
478
+ * @returns {LogLevel | undefined} The log level of the global logfile.
479
+ */
246
480
  static getGlobalLogfileLevel() {
247
481
  if (__AnsiLoggerFileLoglevel__) {
248
482
  return __AnsiLoggerFileLoglevel__;
@@ -251,50 +485,65 @@ export class AnsiLogger {
251
485
  return undefined;
252
486
  }
253
487
  }
488
+ /**
489
+ * Sets the global logfile log level used by the loggers.
490
+ *
491
+ * @param {LogLevel} logfileLevel - The global logfile log level used by the loggers.
492
+ *
493
+ * @returns {LogLevel | undefined} The log level of the global logfile.
494
+ */
254
495
  static setGlobalLogfileLevel(logfileLevel) {
255
496
  __AnsiLoggerFileLoglevel__ = logfileLevel;
256
497
  return __AnsiLoggerFileLoglevel__;
257
498
  }
499
+ /**
500
+ * Determines whether a log message with the given level should be logged based on the configured log level.
501
+ *
502
+ * @param {LogLevel} level - The level of the log message.
503
+ * @param {LogLevel | undefined} configuredLevel - The configured log level.
504
+ *
505
+ * @returns {boolean} A boolean indicating whether the log message should be logged.
506
+ */
258
507
  shouldLog(level, configuredLevel) {
259
508
  switch (level) {
260
- case "":
509
+ case "" /* LogLevel.NONE */:
261
510
  return false;
262
- case "debug":
263
- if (configuredLevel === "debug") {
511
+ case "debug" /* LogLevel.DEBUG */:
512
+ if (configuredLevel === "debug" /* LogLevel.DEBUG */) {
264
513
  return true;
265
514
  }
266
515
  break;
267
- case "info":
268
- if (configuredLevel === "debug" || configuredLevel === "info") {
516
+ case "info" /* LogLevel.INFO */:
517
+ if (configuredLevel === "debug" /* LogLevel.DEBUG */ || configuredLevel === "info" /* LogLevel.INFO */) {
269
518
  return true;
270
519
  }
271
520
  break;
272
- case "notice":
273
- if (configuredLevel === "debug" || configuredLevel === "info" || configuredLevel === "notice") {
521
+ case "notice" /* LogLevel.NOTICE */:
522
+ if (configuredLevel === "debug" /* LogLevel.DEBUG */ || configuredLevel === "info" /* LogLevel.INFO */ || configuredLevel === "notice" /* LogLevel.NOTICE */) {
274
523
  return true;
275
524
  }
276
525
  break;
277
- case "warn":
278
- if (configuredLevel === "debug" || configuredLevel === "info" || configuredLevel === "notice" || configuredLevel === "warn") {
526
+ case "warn" /* LogLevel.WARN */:
527
+ if (configuredLevel === "debug" /* LogLevel.DEBUG */ || configuredLevel === "info" /* LogLevel.INFO */ || configuredLevel === "notice" /* LogLevel.NOTICE */ || configuredLevel === "warn" /* LogLevel.WARN */) {
279
528
  return true;
280
529
  }
281
530
  break;
282
- case "error":
283
- if (configuredLevel === "debug" ||
284
- configuredLevel === "info" ||
285
- configuredLevel === "notice" ||
286
- configuredLevel === "warn" ||
287
- configuredLevel === "error") {
531
+ case "error" /* LogLevel.ERROR */:
532
+ if (configuredLevel === "debug" /* LogLevel.DEBUG */ ||
533
+ configuredLevel === "info" /* LogLevel.INFO */ ||
534
+ configuredLevel === "notice" /* LogLevel.NOTICE */ ||
535
+ configuredLevel === "warn" /* LogLevel.WARN */ ||
536
+ configuredLevel === "error" /* LogLevel.ERROR */) {
288
537
  return true;
289
538
  }
290
539
  break;
291
- case "fatal":
292
- if (configuredLevel === "debug" ||
293
- configuredLevel === "info" ||
294
- configuredLevel === "notice" ||
295
- configuredLevel === "warn" ||
296
- configuredLevel === "error" ||
297
- configuredLevel === "fatal") {
540
+ case "fatal" /* LogLevel.FATAL */:
541
+ if (configuredLevel === "debug" /* LogLevel.DEBUG */ ||
542
+ configuredLevel === "info" /* LogLevel.INFO */ ||
543
+ configuredLevel === "notice" /* LogLevel.NOTICE */ ||
544
+ configuredLevel === "warn" /* LogLevel.WARN */ ||
545
+ configuredLevel === "error" /* LogLevel.ERROR */ ||
546
+ configuredLevel === "fatal" /* LogLevel.FATAL */) {
298
547
  return true;
299
548
  }
300
549
  break;
@@ -303,13 +552,23 @@ export class AnsiLogger {
303
552
  }
304
553
  return false;
305
554
  }
555
+ /**
556
+ * Formats a Date object into a custom string format.
557
+ *
558
+ * @param {Date} date - The Date object to format.
559
+ * @param {string} formatString - The string format to use.
560
+ * @returns {string} The formatted date.
561
+ * It only handles years, months, days, hours, minutes, and seconds
562
+ * with this format 'yyyy-MM-dd HH:mm:ss'
563
+ */
306
564
  formatCustomTimestamp(date, formatString) {
307
565
  const year = date.getFullYear();
308
- const month = date.getMonth() + 1;
566
+ const month = date.getMonth() + 1; // getMonth() returns 0-11
309
567
  const day = date.getDate();
310
568
  const hours = date.getHours();
311
569
  const minutes = date.getMinutes();
312
570
  const seconds = date.getSeconds();
571
+ // Replace format tokens with actual values. Add more as needed.
313
572
  return formatString
314
573
  .replace('yyyy', year.toString())
315
574
  .replace('MM', month.toString().padStart(2, '0'))
@@ -318,35 +577,47 @@ export class AnsiLogger {
318
577
  .replace('mm', minutes.toString().padStart(2, '0'))
319
578
  .replace('ss', seconds.toString().padStart(2, '0'));
320
579
  }
580
+ /**
581
+ * Returns the current timestamp as a string.
582
+ *
583
+ * @returns {string} The current timestamp.
584
+ */
321
585
  now() {
322
586
  return this.getTimestamp();
323
587
  }
588
+ /**
589
+ * Returns the timestamp based on the configured format.
590
+ * If the log start time is set, it returns the time passed since the start time.
591
+ * Otherwise, it returns the current timestamp based on the configured format.
592
+ *
593
+ * @returns {string} The timestamp string.
594
+ */
324
595
  getTimestamp() {
325
- if (this.logStartTime !== 0) {
326
- const timePassed = Date.now() - this.logStartTime;
596
+ if (this.#logStartTime !== 0) {
597
+ const timePassed = Date.now() - this.#logStartTime;
327
598
  return `Timer: ${timePassed.toString().padStart(7, ' ')} ms`;
328
599
  }
329
600
  else {
330
601
  let timestamp;
331
- switch (this._logTimestampFormat) {
332
- case 1:
602
+ switch (this.#logTimestampFormat) {
603
+ case 1 /* TimestampFormat.LOCAL_DATE */:
333
604
  timestamp = new Date().toLocaleDateString();
334
605
  break;
335
- case 2:
606
+ case 2 /* TimestampFormat.LOCAL_TIME */:
336
607
  timestamp = new Date().toLocaleTimeString();
337
608
  break;
338
- case 5:
339
- case 3:
609
+ case 5 /* TimestampFormat.HOMEBRIDGE */:
610
+ case 3 /* TimestampFormat.LOCAL_DATE_TIME */:
340
611
  timestamp = new Date().toLocaleString();
341
612
  break;
342
- case 0:
613
+ case 0 /* TimestampFormat.ISO */:
343
614
  timestamp = new Date().toISOString();
344
615
  break;
345
- case 4:
616
+ case 4 /* TimestampFormat.TIME_MILLIS */:
346
617
  timestamp = `${new Date().getHours().toString().padStart(2, '0')}:${new Date().getMinutes().toString().padStart(2, '0')}:${new Date().getSeconds().toString().padStart(2, '0')}.${new Date().getMilliseconds().toString().padStart(3, '0')}`;
347
618
  break;
348
- case 6:
349
- timestamp = this.formatCustomTimestamp(new Date(), this._logCustomTimestampFormat);
619
+ case 6 /* TimestampFormat.CUSTOM */:
620
+ timestamp = this.formatCustomTimestamp(new Date(), this.#logCustomTimestampFormat);
350
621
  break;
351
622
  default:
352
623
  timestamp = new Date().toLocaleString();
@@ -355,6 +626,16 @@ export class AnsiLogger {
355
626
  return timestamp;
356
627
  }
357
628
  }
629
+ /**
630
+ * Writes a log message to a file.
631
+ *
632
+ * @param {string} filePath - The path of the file to write the log message to.
633
+ * @param {LogLevel} level - The log level of the message.
634
+ * @param {string} message - The log message.
635
+ * @param {...any[]} parameters - Additional parameters to include in the log message.
636
+ * @returns {number} - The length of the log message including the appended newline character.
637
+ */
638
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
358
639
  logToFile(filePath, level, message, ...parameters) {
359
640
  const parametersString = parameters
360
641
  .map((parameter) => {
@@ -367,6 +648,8 @@ export class AnsiLogger {
367
648
  return stringify(parameter);
368
649
  case 'string':
369
650
  return parameter;
651
+ // case 'undefined':
652
+ // return 'undefined';
370
653
  case 'function':
371
654
  return '(function)';
372
655
  default:
@@ -374,8 +657,9 @@ export class AnsiLogger {
374
657
  }
375
658
  })
376
659
  .join(' ');
377
- let messageLog = `[${this.getTimestamp()}] [${this._logName}] [${level}] ` + message + ' ' + parametersString;
660
+ let messageLog = `[${this.getTimestamp()}] [${this.#logName}] [${level}] ` + message + ' ' + parametersString;
378
661
  messageLog = messageLog
662
+ // eslint-disable-next-line no-control-regex
379
663
  .replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '')
380
664
  .replaceAll('\t', ' ')
381
665
  .replaceAll('\r', '')
@@ -383,70 +667,88 @@ export class AnsiLogger {
383
667
  fs.appendFileSync(filePath, messageLog + os.EOL);
384
668
  return messageLog.length + 1;
385
669
  }
670
+ /**
671
+ * Logs a message with a specific level (e.g. debug, info, notice, warn, error, fatal) and additional parameters.
672
+ * This method formats the log message with ANSI colors based on the log level and other logger settings.
673
+ * It supports dynamic parameters for more detailed and formatted logging.
674
+ *
675
+ * @param {LogLevel} level - The severity level of the log message.
676
+ * @param {string} message - The primary log message to be displayed.
677
+ * @param {...any[]} parameters - Additional parameters to be logged. Supports any number of parameters.
678
+ */
679
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
386
680
  log(level, message, ...parameters) {
387
- const s1ln = '';
388
- const s2ln = '';
389
- const s3ln = '';
390
- const s4ln = '';
681
+ const s1ln = ''; // Highlight LogName Black on Cyan
682
+ const s2ln = ''; // Highlight LogName Black on White
683
+ const s3ln = ''; // Highlight LogName Black on Yellow
684
+ const s4ln = ''; // Highlight LogName Black on Red
391
685
  if (typeof level !== 'string' || level.startsWith === undefined || typeof message !== 'string' || message.startsWith === undefined) {
392
686
  return;
393
687
  }
688
+ // Local callback
394
689
  try {
395
- if (this.callback !== undefined && this.shouldLog(level, this._logLevel)) {
690
+ if (this.#callback !== undefined && this.shouldLog(level, this.#logLevel)) {
691
+ // Convert parameters to string and append to message
396
692
  const parametersString = parameters.length > 0 ? ' ' + parameters.join(' ') : '';
397
693
  const newMessage = message + parametersString;
398
- this.callback(level, this.getTimestamp(), this._logName, newMessage);
694
+ this.#callback(level, this.getTimestamp(), this.#logName, newMessage);
399
695
  }
400
696
  }
401
697
  catch (error) {
402
698
  console.error('Error executing local callback:', error);
403
699
  }
700
+ // Global callback
404
701
  try {
405
702
  if (__AnsiLoggerCallback__ && __AnsiLoggerCallback__ !== undefined && this.shouldLog(level, __AnsiLoggerCallbackLoglevel__)) {
703
+ // Convert parameters to string and append to message
406
704
  const parametersString = parameters.length > 0 ? ' ' + parameters.join(' ') : '';
407
705
  const newMessage = message + parametersString;
408
- __AnsiLoggerCallback__(level, this.getTimestamp(), this._logName, newMessage);
706
+ __AnsiLoggerCallback__(level, this.getTimestamp(), this.#logName, newMessage);
409
707
  }
410
708
  }
411
709
  catch (error) {
412
710
  console.error('Error executing global callback:', error);
413
711
  }
712
+ // Local file logger
414
713
  try {
415
- if (this.logFilePath !== undefined && this._logFileSize !== undefined && this._logFileSize < this._maxFileSize && this.shouldLog(level, this._logLevel)) {
714
+ if (this.logFilePath !== undefined && this.#logFileSize !== undefined && this.#logFileSize < this.#maxFileSize && this.shouldLog(level, this.#logLevel)) {
416
715
  const size = this.logToFile(this.logFilePath, level, message, ...parameters);
417
- this._logFileSize += size;
418
- if (this._logFileSize >= this._maxFileSize) {
419
- fs.appendFileSync(this.logFilePath, 'Logging on file has been stoppped because the file size is greater then 100MB.\n');
716
+ this.#logFileSize += size;
717
+ if (this.#logFileSize >= this.#maxFileSize) {
718
+ // istanbul ignore next
719
+ fs.appendFileSync(this.logFilePath, `Logging on file has been stoppped because the file size is greater then ${this.#maxFileSize}B.\n`);
420
720
  }
421
721
  }
422
722
  }
423
723
  catch (error) {
424
724
  console.error(`Error writing to the local log file ${this.logFilePath}:`, error);
425
725
  }
726
+ // Global file logger
426
727
  try {
427
728
  if (__AnsiLoggerFilePath__ &&
428
729
  __AnsiLoggerFilePath__ !== undefined &&
429
730
  __AnsiLoggerFileLogSize__ !== undefined &&
430
- __AnsiLoggerFileLogSize__ < this._maxFileSize &&
731
+ __AnsiLoggerFileLogSize__ < this.#maxFileSize &&
431
732
  this.shouldLog(level, __AnsiLoggerFileLoglevel__)) {
432
733
  const size = this.logToFile(__AnsiLoggerFilePath__, level, message, ...parameters);
433
734
  __AnsiLoggerFileLogSize__ += size;
434
- if (__AnsiLoggerFileLogSize__ >= this._maxFileSize) {
435
- fs.appendFileSync(__AnsiLoggerFilePath__, 'Logging on file has been stoppped because the file size is greater then 100MB.\n');
735
+ if (__AnsiLoggerFileLogSize__ >= this.#maxFileSize) {
736
+ // istanbul ignore next
737
+ fs.appendFileSync(__AnsiLoggerFilePath__, `Logging on file has been stoppped because the file size is greater then ${this.#maxFileSize}B.\n`);
436
738
  }
437
739
  }
438
740
  }
439
741
  catch (error) {
440
742
  console.error(`Error writing to the global log file ${__AnsiLoggerFilePath__}:`, error);
441
743
  }
442
- if (this._extLog !== undefined) {
443
- if (level !== "") {
444
- this._extLog.log(level, message, ...parameters);
744
+ if (this.#extLog !== undefined) {
745
+ if (level !== "" /* LogLevel.NONE */) {
746
+ this.#extLog.log(level, message, ...parameters);
445
747
  }
446
748
  }
447
749
  else {
448
- if (this._logWithColors) {
449
- let logNameColor = this._logNameColor;
750
+ if (this.#logWithColors) {
751
+ let logNameColor = this.#logNameColor;
450
752
  if (message.startsWith('****')) {
451
753
  logNameColor = s4ln;
452
754
  message = message.slice(4);
@@ -464,34 +766,34 @@ export class AnsiLogger {
464
766
  message = message.slice(1);
465
767
  }
466
768
  switch (level) {
467
- case "debug":
468
- if (this.shouldLog(level, this._logLevel)) {
469
- console.log(`${rs}${this._logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this._logName}]${rs}${db}`, message + rs + rk, ...parameters);
769
+ case "debug" /* LogLevel.DEBUG */:
770
+ if (this.shouldLog(level, this.#logLevel)) {
771
+ console.log(`${rs}${this.#logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this.#logName}]${rs}${db}`, message + rs + rk, ...parameters);
470
772
  }
471
773
  break;
472
- case "info":
473
- if (this.shouldLog(level, this._logLevel)) {
474
- console.log(`${rs}${this._logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this._logName}]${rs}${nf}`, message + rs + rk, ...parameters);
774
+ case "info" /* LogLevel.INFO */:
775
+ if (this.shouldLog(level, this.#logLevel)) {
776
+ console.log(`${rs}${this.#logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this.#logName}]${rs}${nf}`, message + rs + rk, ...parameters);
475
777
  }
476
778
  break;
477
- case "notice":
478
- if (this.shouldLog(level, this._logLevel)) {
479
- console.log(`${rs}${this._logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this._logName}]${rs}${nt}`, message + rs + rk, ...parameters);
779
+ case "notice" /* LogLevel.NOTICE */:
780
+ if (this.shouldLog(level, this.#logLevel)) {
781
+ console.log(`${rs}${this.#logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this.#logName}]${rs}${nt}`, message + rs + rk, ...parameters);
480
782
  }
481
783
  break;
482
- case "warn":
483
- if (this.shouldLog(level, this._logLevel)) {
484
- console.log(`${rs}${this._logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this._logName}]${rs}${wr}`, message + rs + rk, ...parameters);
784
+ case "warn" /* LogLevel.WARN */:
785
+ if (this.shouldLog(level, this.#logLevel)) {
786
+ console.log(`${rs}${this.#logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this.#logName}]${rs}${wr}`, message + rs + rk, ...parameters);
485
787
  }
486
788
  break;
487
- case "error":
488
- if (this.shouldLog(level, this._logLevel)) {
489
- console.log(`${rs}${this._logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this._logName}]${rs}${er}`, message + rs + rk, ...parameters);
789
+ case "error" /* LogLevel.ERROR */:
790
+ if (this.shouldLog(level, this.#logLevel)) {
791
+ console.log(`${rs}${this.#logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this.#logName}]${rs}${er}`, message + rs + rk, ...parameters);
490
792
  }
491
793
  break;
492
- case "fatal":
493
- if (this.shouldLog(level, this._logLevel)) {
494
- console.log(`${rs}${this._logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this._logName}]${rs}${ft}`, message + rs + rk, ...parameters);
794
+ case "fatal" /* LogLevel.FATAL */:
795
+ if (this.shouldLog(level, this.#logLevel)) {
796
+ console.log(`${rs}${this.#logTimeStampColor}[${this.getTimestamp()}] ${logNameColor}[${this.#logName}]${rs}${ft}`, message + rs + rk, ...parameters);
495
797
  }
496
798
  break;
497
799
  default:
@@ -499,44 +801,58 @@ export class AnsiLogger {
499
801
  }
500
802
  }
501
803
  else {
804
+ if (message.startsWith('****')) {
805
+ message = message.slice(4);
806
+ }
807
+ else if (message.startsWith('***')) {
808
+ message = message.slice(3);
809
+ }
810
+ else if (message.startsWith('**')) {
811
+ message = message.slice(2);
812
+ }
813
+ else if (message.startsWith('*')) {
814
+ message = message.slice(1);
815
+ }
816
+ // eslint-disable-next-line no-control-regex
817
+ message = message.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');
502
818
  switch (level) {
503
- case "debug":
504
- if (this._logLevel === "debug") {
505
- console.log(`[${this.getTimestamp()}] [${this._logName}] [${level}] ${message}`, ...parameters);
819
+ case "debug" /* LogLevel.DEBUG */:
820
+ if (this.#logLevel === "debug" /* LogLevel.DEBUG */) {
821
+ console.log(`[${this.getTimestamp()}] [${this.#logName}] [${level}] ${message}`, ...parameters);
506
822
  }
507
823
  break;
508
- case "info":
509
- if (this._logLevel === "debug" || this._logLevel === "info") {
510
- console.log(`[${this.getTimestamp()}] [${this._logName}] [${level}] ${message}`, ...parameters);
824
+ case "info" /* LogLevel.INFO */:
825
+ if (this.#logLevel === "debug" /* LogLevel.DEBUG */ || this.#logLevel === "info" /* LogLevel.INFO */) {
826
+ console.log(`[${this.getTimestamp()}] [${this.#logName}] [${level}] ${message}`, ...parameters);
511
827
  }
512
828
  break;
513
- case "notice":
514
- if (this._logLevel === "debug" || this._logLevel === "info" || this._logLevel === "notice") {
515
- console.log(`[${this.getTimestamp()}] [${this._logName}] [${level}] ${message}`, ...parameters);
829
+ case "notice" /* LogLevel.NOTICE */:
830
+ if (this.#logLevel === "debug" /* LogLevel.DEBUG */ || this.#logLevel === "info" /* LogLevel.INFO */ || this.#logLevel === "notice" /* LogLevel.NOTICE */) {
831
+ console.log(`[${this.getTimestamp()}] [${this.#logName}] [${level}] ${message}`, ...parameters);
516
832
  }
517
833
  break;
518
- case "warn":
519
- if (this._logLevel === "debug" || this._logLevel === "info" || this._logLevel === "notice" || this._logLevel === "warn") {
520
- console.log(`[${this.getTimestamp()}] [${this._logName}] [${level}] ${message}`, ...parameters);
834
+ case "warn" /* LogLevel.WARN */:
835
+ if (this.#logLevel === "debug" /* LogLevel.DEBUG */ || this.#logLevel === "info" /* LogLevel.INFO */ || this.#logLevel === "notice" /* LogLevel.NOTICE */ || this.#logLevel === "warn" /* LogLevel.WARN */) {
836
+ console.log(`[${this.getTimestamp()}] [${this.#logName}] [${level}] ${message}`, ...parameters);
521
837
  }
522
838
  break;
523
- case "error":
524
- if (this._logLevel === "debug" ||
525
- this._logLevel === "info" ||
526
- this._logLevel === "notice" ||
527
- this._logLevel === "warn" ||
528
- this._logLevel === "error") {
529
- console.log(`[${this.getTimestamp()}] [${this._logName}] [${level}] ${message}`, ...parameters);
839
+ case "error" /* LogLevel.ERROR */:
840
+ if (this.#logLevel === "debug" /* LogLevel.DEBUG */ ||
841
+ this.#logLevel === "info" /* LogLevel.INFO */ ||
842
+ this.#logLevel === "notice" /* LogLevel.NOTICE */ ||
843
+ this.#logLevel === "warn" /* LogLevel.WARN */ ||
844
+ this.#logLevel === "error" /* LogLevel.ERROR */) {
845
+ console.log(`[${this.getTimestamp()}] [${this.#logName}] [${level}] ${message}`, ...parameters);
530
846
  }
531
847
  break;
532
- case "fatal":
533
- if (this._logLevel === "debug" ||
534
- this._logLevel === "info" ||
535
- this._logLevel === "notice" ||
536
- this._logLevel === "warn" ||
537
- this._logLevel === "error" ||
538
- this._logLevel === "fatal") {
539
- console.log(`[${this.getTimestamp()}] [${this._logName}] [${level}] ${message}`, ...parameters);
848
+ case "fatal" /* LogLevel.FATAL */:
849
+ if (this.#logLevel === "debug" /* LogLevel.DEBUG */ ||
850
+ this.#logLevel === "info" /* LogLevel.INFO */ ||
851
+ this.#logLevel === "notice" /* LogLevel.NOTICE */ ||
852
+ this.#logLevel === "warn" /* LogLevel.WARN */ ||
853
+ this.#logLevel === "error" /* LogLevel.ERROR */ ||
854
+ this.#logLevel === "fatal" /* LogLevel.FATAL */) {
855
+ console.log(`[${this.getTimestamp()}] [${this.#logName}] [${level}] ${message}`, ...parameters);
540
856
  }
541
857
  break;
542
858
  default:
@@ -545,22 +861,108 @@ export class AnsiLogger {
545
861
  }
546
862
  }
547
863
  }
864
+ /**
865
+ * Logs a debug message if debug logging is enabled. This is a convenience method that delegates to the `log` method with the `LogLevel.DEBUG` level.
866
+ *
867
+ * @param {string} message - The message to log.
868
+ * @param {...any[]} parameters - Additional parameters to be included in the log message. Supports any number of parameters.
869
+ */
870
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
548
871
  debug(message, ...parameters) {
549
- this.log("debug", message, ...parameters);
550
- }
872
+ this.log("debug" /* LogLevel.DEBUG */, message, ...parameters);
873
+ }
874
+ /**
875
+ * Logs an informational message. This is a convenience method that delegates to the `log` method with the `LogLevel.INFO` level.
876
+ *
877
+ * @param {string} message - The message to log.
878
+ * @param {...any[]} parameters - Additional parameters to be included in the log message. Supports any number of parameters.
879
+ */
880
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
551
881
  info(message, ...parameters) {
552
- this.log("info", message, ...parameters);
553
- }
882
+ this.log("info" /* LogLevel.INFO */, message, ...parameters);
883
+ }
884
+ /**
885
+ * Logs a notice message. This is a convenience method that delegates to the `log` method with the `LogLevel.NOTICE` level.
886
+ *
887
+ * @param {string} message - The message to log.
888
+ * @param {...any[]} parameters - Additional parameters to be included in the log message. Supports any number of parameters.
889
+ */
890
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
554
891
  notice(message, ...parameters) {
555
- this.log("notice", message, ...parameters);
556
- }
892
+ this.log("notice" /* LogLevel.NOTICE */, message, ...parameters);
893
+ }
894
+ /**
895
+ * Logs a warning message. This is a convenience method that delegates to the `log` method with the `LogLevel.WARN` level.
896
+ *
897
+ * @param {string} message - The message to log.
898
+ * @param {...any[]} parameters - Additional parameters to be included in the log message. Supports any number of parameters.
899
+ */
900
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
557
901
  warn(message, ...parameters) {
558
- this.log("warn", message, ...parameters);
559
- }
902
+ this.log("warn" /* LogLevel.WARN */, message, ...parameters);
903
+ }
904
+ /**
905
+ * Logs an error message. This is a convenience method that delegates to the `log` method with the `LogLevel.ERROR` level.
906
+ *
907
+ * @param {string} message - The message to log.
908
+ * @param {...any[]} parameters - Additional parameters to be included in the log message. Supports any number of parameters.
909
+ */
910
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
560
911
  error(message, ...parameters) {
561
- this.log("error", message, ...parameters);
562
- }
912
+ this.log("error" /* LogLevel.ERROR */, message, ...parameters);
913
+ }
914
+ /**
915
+ * Logs a fatal message. This is a convenience method that delegates to the `log` method with the `LogLevel.FATAL` level.
916
+ *
917
+ * @param {string} message - The message to log.
918
+ * @param {...any[]} parameters - Additional parameters to be included in the log message. Supports any number of parameters.
919
+ */
920
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
563
921
  fatal(message, ...parameters) {
564
- this.log("fatal", message, ...parameters);
922
+ this.log("fatal" /* LogLevel.FATAL */, message, ...parameters);
565
923
  }
566
924
  }
925
+ /*
926
+  - Reset (clear color)
927
+  - Bold
928
+  - Italic
929
+  - Underline
930
+  - Erase the line from cursor
931
+
932
+  - Black
933
+  - Red
934
+  - Green
935
+  - Yellow
936
+  - Blue
937
+  - Magenta
938
+  - Cyan
939
+  - White
940
+
941
+ [90-97m - Bright
942
+
943
+  - Black background
944
+  - Red background
945
+  - Green background
946
+  - Yellow background
947
+  - Blue background
948
+  - Magenta background
949
+  - Cyan background
950
+  - White background
951
+
952
+ [100-107m - Bright background
953
+
954
+  // Orange
955
+
956
+ RGB foreground
957
+ [38;2;<R>;<G>;<B>m
958
+
959
+ RGB background
960
+ [48;2;<R>;<G>;<B>m
961
+
962
+ 256 colors foreground
963
+ [38;5;<FG COLOR>m
964
+
965
+ 256 colors background
966
+ [48;5;<BG COLOR>m
967
+ */
968
+ //# sourceMappingURL=logger.js.map