@rabbit-company/logger 2.0.0 → 2.1.0

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/module/logger.js CHANGED
@@ -418,6 +418,11 @@ var source_default = chalk;
418
418
  // module/logger.js
419
419
  var _NDJson, _levels, _processMessage, processMessage_fn;
420
420
  var Logger = class {
421
+ /**
422
+ * Parses the log message to ensure it is a string.
423
+ * @param {*} message - The log message.
424
+ * @returns {string | null} - The parsed log message or null if the message is undefined.
425
+ */
421
426
  static parseMessage(message) {
422
427
  if (typeof message === "undefined")
423
428
  return null;
@@ -425,6 +430,12 @@ var Logger = class {
425
430
  message = JSON.stringify(message);
426
431
  return message;
427
432
  }
433
+ /**
434
+ * Formats the log message with timestamp and log level.
435
+ * @param {string} message - The log message.
436
+ * @param {number} logLevel - The log level.
437
+ * @returns {string} - The formatted log message.
438
+ */
428
439
  static formatMessage(message, logLevel) {
429
440
  let type = __privateGet(this, _levels)[logLevel];
430
441
  let date = (/* @__PURE__ */ new Date()).toISOString().split(".")[0].replace("T", " ");
@@ -463,31 +474,68 @@ var Logger = class {
463
474
  }
464
475
  return `[${date}] ${type} ${message}`;
465
476
  }
477
+ /**
478
+ * Logs an error message.
479
+ * @param {*} message - The error message.
480
+ */
466
481
  static error(message) {
467
482
  __privateMethod(this, _processMessage, processMessage_fn).call(this, message, 0);
468
483
  }
484
+ /**
485
+ * Logs a warning message.
486
+ * @param {*} message - The warning message.
487
+ */
469
488
  static warn(message) {
470
489
  __privateMethod(this, _processMessage, processMessage_fn).call(this, message, 1);
471
490
  }
491
+ /**
492
+ * Logs an informational message.
493
+ * @param {*} message - The informational message.
494
+ */
472
495
  static info(message) {
473
496
  __privateMethod(this, _processMessage, processMessage_fn).call(this, message, 2);
474
497
  }
498
+ /**
499
+ * Logs an HTTP-related message.
500
+ * @param {*} message - The HTTP-related message.
501
+ */
475
502
  static http(message) {
476
503
  __privateMethod(this, _processMessage, processMessage_fn).call(this, message, 3);
477
504
  }
505
+ /**
506
+ * Logs a verbose message.
507
+ * @param {*} message - The verbose message.
508
+ */
478
509
  static verbose(message) {
479
510
  __privateMethod(this, _processMessage, processMessage_fn).call(this, message, 4);
480
511
  }
512
+ /**
513
+ * Logs a debug message.
514
+ * @param {*} message - The debug message.
515
+ */
481
516
  static debug(message) {
482
517
  __privateMethod(this, _processMessage, processMessage_fn).call(this, message, 5);
483
518
  }
519
+ /**
520
+ * Logs a silly message.
521
+ * @param {*} message - The silly message.
522
+ */
484
523
  static silly(message) {
485
524
  __privateMethod(this, _processMessage, processMessage_fn).call(this, message, 6);
486
525
  }
526
+ /**
527
+ * Appends a message to NDJson format.
528
+ * @param {string} message - The message to append.
529
+ * @param {number} logLevel - The log level associated with the message.
530
+ */
487
531
  static putNDJson(message, logLevel) {
488
532
  let separator = __privateGet(this, _NDJson).length !== 0 ? "\n" : "";
489
533
  __privateSet(this, _NDJson, __privateGet(this, _NDJson) + (separator + JSON.stringify({ "time": (/* @__PURE__ */ new Date()).toISOString(), "level": logLevel, "msg": message })));
490
534
  }
535
+ /**
536
+ * Gets the NDJson log.
537
+ * @returns {string} - The NDJson log.
538
+ */
491
539
  static getNDJson() {
492
540
  return __privateGet(this, _NDJson);
493
541
  }
@@ -515,11 +563,32 @@ processMessage_fn = function(message, level2) {
515
563
  break;
516
564
  }
517
565
  };
566
+ /**
567
+ * Processes and logs a message with the specified log level.
568
+ * @param {*} message - The log message.
569
+ * @param {number} level - The log level.
570
+ */
518
571
  __privateAdd(Logger, _processMessage);
519
572
  __privateAdd(Logger, _NDJson, "");
573
+ /**
574
+ * Indicates whether NDJson is enabled.
575
+ * @type {boolean}
576
+ */
520
577
  __publicField(Logger, "NDJson", false);
578
+ /**
579
+ * The log level of the logger.
580
+ * @type {number}
581
+ */
521
582
  __publicField(Logger, "level", 2);
583
+ /**
584
+ * Indicates whether colors are enabled for log messages.
585
+ * @type {boolean}
586
+ */
522
587
  __publicField(Logger, "colors", true);
588
+ /**
589
+ * Defines log levels and their associated numeric values.
590
+ * @type {Object}
591
+ */
523
592
  __publicField(Logger, "levels", {
524
593
  error: 0,
525
594
  warn: 1,
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@rabbit-company/logger",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Simple logger",
5
- "main": "./module/logger.js",
5
+ "main": "./src/logger.js",
6
+ "browser": "./module/logger.js",
6
7
  "type": "module",
7
8
  "homepage": "https://github.com/Rabbit-Company/Logger-JS",
8
9
  "funding": "https://rabbit-company.com/donation",
@@ -13,7 +14,8 @@
13
14
  "build": "rabbit-builder"
14
15
  },
15
16
  "files": [
16
- "module/logger.js"
17
+ "module/logger.js",
18
+ "src/logger.js"
17
19
  ],
18
20
  "repository": {
19
21
  "type": "git",
@@ -33,6 +35,6 @@
33
35
  "@rabbit-company/rabbit-builder": "^1.0.5"
34
36
  },
35
37
  "dependencies": {
36
- "chalk": "^5.2.0"
38
+ "chalk": "^5.3.0"
37
39
  }
38
40
  }
package/src/logger.js ADDED
@@ -0,0 +1,210 @@
1
+ import chalk from 'chalk';
2
+
3
+ /**
4
+ * Represents a logger utility for logging messages with different log levels.
5
+ */
6
+ export default class Logger{
7
+
8
+ static #NDJson = '';
9
+
10
+ /**
11
+ * Indicates whether NDJson is enabled.
12
+ * @type {boolean}
13
+ */
14
+ static NDJson = false;
15
+
16
+ /**
17
+ * The log level of the logger.
18
+ * @type {number}
19
+ */
20
+ static level = 2;
21
+
22
+ /**
23
+ * Indicates whether colors are enabled for log messages.
24
+ * @type {boolean}
25
+ */
26
+ static colors = true;
27
+
28
+ /**
29
+ * Defines log levels and their associated numeric values.
30
+ * @type {Object}
31
+ */
32
+ static levels = {
33
+ error: 0,
34
+ warn: 1,
35
+ info: 2,
36
+ http: 3,
37
+ verbose: 4,
38
+ debug: 5,
39
+ silly: 6
40
+ }
41
+
42
+ static #levels = {
43
+ 0: 'ERROR',
44
+ 1: 'WARN',
45
+ 2: 'INFO',
46
+ 3: 'HTTP',
47
+ 4: 'VERBOSE',
48
+ 5: 'DEBUG',
49
+ 6: 'SILLY'
50
+ }
51
+
52
+ /**
53
+ * Parses the log message to ensure it is a string.
54
+ * @param {*} message - The log message.
55
+ * @returns {string | null} - The parsed log message or null if the message is undefined.
56
+ */
57
+ static parseMessage(message){
58
+ if(typeof(message) === 'undefined') return null;
59
+ if(typeof(message) === 'object') message = JSON.stringify(message);
60
+ return message;
61
+ }
62
+
63
+ /**
64
+ * Formats the log message with timestamp and log level.
65
+ * @param {string} message - The log message.
66
+ * @param {number} logLevel - The log level.
67
+ * @returns {string} - The formatted log message.
68
+ */
69
+ static formatMessage(message, logLevel){
70
+ let type = this.#levels[logLevel];
71
+ let date = new Date().toISOString().split('.')[0].replace('T', ' ');
72
+
73
+ if(this.colors){
74
+ date = chalk.gray(date);
75
+
76
+ switch(logLevel){
77
+ case 0:
78
+ type = chalk.bold(chalk.red(type));
79
+ message = chalk.red(message);
80
+ break;
81
+ case 1:
82
+ type = chalk.bold(chalk.yellow(type));
83
+ message = chalk.yellow(message);
84
+ break;
85
+ case 2:
86
+ type = chalk.bold(chalk.cyan(type));
87
+ message = chalk.cyan(message);
88
+ break;
89
+ case 3:
90
+ type = chalk.bold(chalk.blue(type));
91
+ message = chalk.blue(message);
92
+ break;
93
+ case 4:
94
+ type = chalk.bold(chalk.blue(type));
95
+ message = chalk.blue(message);
96
+ break;
97
+ case 5:
98
+ type = chalk.bold(chalk.gray(type));
99
+ message = chalk.gray(message);
100
+ break;
101
+ case 6:
102
+ type = chalk.bold(chalk.gray(type));
103
+ message = chalk.gray(message);
104
+ break;
105
+ }
106
+ }
107
+
108
+ return `[${date}] ${type} ${message}`;
109
+ }
110
+
111
+ /**
112
+ * Processes and logs a message with the specified log level.
113
+ * @param {*} message - The log message.
114
+ * @param {number} level - The log level.
115
+ */
116
+ static #processMessage(message, level){
117
+ if(this.level < level) return;
118
+ message = this.parseMessage(message);
119
+ if(message === null) return;
120
+ if(this.NDJson) this.putNDJson(message, level);
121
+
122
+ switch(level){
123
+ case 0:
124
+ console.error(this.formatMessage(message, level));
125
+ break;
126
+ case 1:
127
+ console.warn(this.formatMessage(message, level));
128
+ break;
129
+ default:
130
+ console.info(this.formatMessage(message, level));
131
+ break;
132
+ }
133
+ }
134
+
135
+
136
+ /**
137
+ * Logs an error message.
138
+ * @param {*} message - The error message.
139
+ */
140
+ static error(message){
141
+ this.#processMessage(message, 0);
142
+ }
143
+
144
+ /**
145
+ * Logs a warning message.
146
+ * @param {*} message - The warning message.
147
+ */
148
+ static warn(message){
149
+ this.#processMessage(message, 1);
150
+ }
151
+
152
+ /**
153
+ * Logs an informational message.
154
+ * @param {*} message - The informational message.
155
+ */
156
+ static info(message){
157
+ this.#processMessage(message, 2);
158
+ }
159
+
160
+ /**
161
+ * Logs an HTTP-related message.
162
+ * @param {*} message - The HTTP-related message.
163
+ */
164
+ static http(message){
165
+ this.#processMessage(message, 3);
166
+ }
167
+
168
+ /**
169
+ * Logs a verbose message.
170
+ * @param {*} message - The verbose message.
171
+ */
172
+ static verbose(message){
173
+ this.#processMessage(message, 4);
174
+ }
175
+
176
+ /**
177
+ * Logs a debug message.
178
+ * @param {*} message - The debug message.
179
+ */
180
+ static debug(message){
181
+ this.#processMessage(message, 5);
182
+ }
183
+
184
+ /**
185
+ * Logs a silly message.
186
+ * @param {*} message - The silly message.
187
+ */
188
+ static silly(message){
189
+ this.#processMessage(message, 6);
190
+ }
191
+
192
+ /**
193
+ * Appends a message to NDJson format.
194
+ * @param {string} message - The message to append.
195
+ * @param {number} logLevel - The log level associated with the message.
196
+ */
197
+ static putNDJson(message, logLevel){
198
+ let separator = (this.#NDJson.length !== 0) ? '\n' : '';
199
+ this.#NDJson += separator + JSON.stringify({ 'time': new Date().toISOString(), 'level': logLevel, 'msg': message });
200
+ }
201
+
202
+ /**
203
+ * Gets the NDJson log.
204
+ * @returns {string} - The NDJson log.
205
+ */
206
+ static getNDJson(){
207
+ return this.#NDJson;
208
+ }
209
+
210
+ }