nightingale-logger 14.2.0 → 15.0.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/CHANGELOG.md +23 -0
- package/dist/index-browser.es.js +145 -153
- package/dist/index-browser.es.js.map +1 -1
- package/package.json +7 -14
- package/dist/index-browsermodern.es.js +0 -489
- package/dist/index-browsermodern.es.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,29 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [15.0.0](https://github.com/christophehurpeau/nightingale/compare/v14.2.1...v15.0.0) (2023-12-25)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### ⚠ BREAKING CHANGES
|
|
10
|
+
|
|
11
|
+
* update babel and drop browser modern version
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* update babel and drop browser modern version ([5c76abc](https://github.com/christophehurpeau/nightingale/commit/5c76abc8bfb595a617fc4c8b795dae7e674ea664))
|
|
16
|
+
|
|
17
|
+
Version bump for dependency: nightingale-levels
|
|
18
|
+
Version bump for dependency: nightingale-types
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## [14.2.1](https://github.com/christophehurpeau/nightingale/compare/v14.2.0...v14.2.1) (2023-11-05)
|
|
22
|
+
|
|
23
|
+
Note: no notable changes
|
|
24
|
+
|
|
25
|
+
Version bump for dependency: nightingale-levels
|
|
26
|
+
Version bump for dependency: nightingale-types
|
|
27
|
+
|
|
28
|
+
|
|
6
29
|
## [14.2.0](https://github.com/christophehurpeau/nightingale/compare/v14.1.0...v14.2.0) (2023-11-04)
|
|
7
30
|
|
|
8
31
|
Note: no notable changes
|
package/dist/index-browser.es.js
CHANGED
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
1
|
import { Level } from 'nightingale-levels';
|
|
3
2
|
export { Level } from 'nightingale-levels';
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
/* eslint-disable max-lines */
|
|
5
|
+
|
|
6
|
+
const globalOrWindow = typeof global !== 'undefined' ? global : window;
|
|
6
7
|
if (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {
|
|
7
|
-
globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
};
|
|
8
|
+
globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = () => ({
|
|
9
|
+
handlers: [],
|
|
10
|
+
processors: []
|
|
11
|
+
});
|
|
13
12
|
}
|
|
14
13
|
if (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {
|
|
15
|
-
globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD =
|
|
16
|
-
|
|
17
|
-
handlers
|
|
18
|
-
processors
|
|
14
|
+
globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (key, level) => {
|
|
15
|
+
const {
|
|
16
|
+
handlers,
|
|
17
|
+
processors
|
|
18
|
+
} = globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);
|
|
19
19
|
return {
|
|
20
|
-
handlers: handlers.filter(
|
|
21
|
-
|
|
22
|
-
}),
|
|
23
|
-
processors: processors
|
|
20
|
+
handlers: handlers.filter(handler => level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))),
|
|
21
|
+
processors
|
|
24
22
|
};
|
|
25
23
|
};
|
|
26
24
|
}
|
|
@@ -35,37 +33,36 @@ function isError(messageOrError) {
|
|
|
35
33
|
* Interface that allows you to log records.
|
|
36
34
|
* This records are treated by handlers
|
|
37
35
|
*/
|
|
38
|
-
|
|
36
|
+
class Logger {
|
|
39
37
|
/**
|
|
40
38
|
* Create a new Logger
|
|
41
39
|
*
|
|
42
40
|
* @param {string} key
|
|
43
41
|
* @param {string} [displayName]
|
|
44
42
|
*/
|
|
45
|
-
|
|
43
|
+
constructor(key, displayName) {
|
|
46
44
|
this.key = key;
|
|
47
45
|
this.displayName = displayName;
|
|
48
46
|
if (process.env.NODE_ENV !== 'production' && key.includes('.')) {
|
|
49
|
-
throw new Error(
|
|
47
|
+
throw new Error(`nightingale: \`.\` in key is no longer supported, use \`:\` instead (key: ${key})`);
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
|
|
53
51
|
/** @private */
|
|
54
|
-
|
|
55
|
-
_proto.getHandlersAndProcessors = function getHandlersAndProcessors(recordLevel) {
|
|
52
|
+
getHandlersAndProcessors(recordLevel) {
|
|
56
53
|
return getConfigForLoggerRecord(this.key, recordLevel);
|
|
57
54
|
}
|
|
58
55
|
|
|
59
|
-
/** @private
|
|
60
|
-
|
|
56
|
+
/** @private */
|
|
57
|
+
getConfig() {
|
|
61
58
|
return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);
|
|
62
59
|
}
|
|
63
60
|
|
|
64
61
|
/**
|
|
65
62
|
* Create a child logger
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return new Logger(this.key
|
|
63
|
+
*/
|
|
64
|
+
child(childSuffixKey, childDisplayName) {
|
|
65
|
+
return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);
|
|
69
66
|
}
|
|
70
67
|
|
|
71
68
|
/**
|
|
@@ -84,17 +81,17 @@ var Logger = /*#__PURE__*/function () {
|
|
|
84
81
|
* }
|
|
85
82
|
* ```
|
|
86
83
|
*
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
logger.setContext(
|
|
84
|
+
*/
|
|
85
|
+
context(context) {
|
|
86
|
+
const logger = new Logger(this.key);
|
|
87
|
+
logger.setContext(context);
|
|
91
88
|
return logger;
|
|
92
89
|
}
|
|
93
90
|
|
|
94
91
|
/**
|
|
95
92
|
* Get the context of this logger
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
*/
|
|
94
|
+
getContextObject() {
|
|
98
95
|
return this.contextObject;
|
|
99
96
|
}
|
|
100
97
|
|
|
@@ -102,15 +99,15 @@ var Logger = /*#__PURE__*/function () {
|
|
|
102
99
|
* Set the context of this logger
|
|
103
100
|
*
|
|
104
101
|
* @param {Object} context
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
*/
|
|
103
|
+
setContext(context) {
|
|
107
104
|
this.contextObject = context;
|
|
108
105
|
}
|
|
109
106
|
|
|
110
107
|
/**
|
|
111
108
|
* Extends existing context of this logger
|
|
112
|
-
|
|
113
|
-
|
|
109
|
+
*/
|
|
110
|
+
extendsContext(extendedContext) {
|
|
114
111
|
if (this.contextObject === undefined) {
|
|
115
112
|
throw new Error('Cannot extends context that does not exists. Use setContext(context) first.');
|
|
116
113
|
}
|
|
@@ -121,11 +118,12 @@ var Logger = /*#__PURE__*/function () {
|
|
|
121
118
|
* Handle a record
|
|
122
119
|
*
|
|
123
120
|
* Use this only if you know what you are doing.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
handlers
|
|
128
|
-
processors
|
|
121
|
+
*/
|
|
122
|
+
addRecord(record) {
|
|
123
|
+
const {
|
|
124
|
+
handlers,
|
|
125
|
+
processors
|
|
126
|
+
} = this.getHandlersAndProcessors(record.level);
|
|
129
127
|
if (handlers.length === 0) {
|
|
130
128
|
if (record.level > Level.ERROR) {
|
|
131
129
|
// eslint-disable-next-line no-console
|
|
@@ -137,86 +135,83 @@ var Logger = /*#__PURE__*/function () {
|
|
|
137
135
|
return;
|
|
138
136
|
}
|
|
139
137
|
if (processors) {
|
|
140
|
-
processors.forEach(
|
|
138
|
+
processors.forEach(process => {
|
|
141
139
|
process(record, record.context);
|
|
142
140
|
});
|
|
143
141
|
}
|
|
144
|
-
handlers.some(
|
|
145
|
-
return handler.handle(record) === false;
|
|
146
|
-
});
|
|
142
|
+
handlers.some(handler => handler.handle(record) === false);
|
|
147
143
|
}
|
|
148
144
|
|
|
149
145
|
/**
|
|
150
146
|
* Log a message
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
var message = isMessageError ? messageOrError.name + ": " + messageOrError.message : messageOrError;
|
|
158
|
-
var extendedMetadata = isMessageError && !(metadata && Object.prototype.hasOwnProperty.call(metadata, 'error')) ? _extends({}, metadata, {
|
|
147
|
+
*/
|
|
148
|
+
log(messageOrError, metadata, level = Level.INFO, options) {
|
|
149
|
+
const isMessageError = isError(messageOrError);
|
|
150
|
+
const message = isMessageError ? `${messageOrError.name}: ${messageOrError.message}` : messageOrError;
|
|
151
|
+
const extendedMetadata = isMessageError && !(metadata && Object.prototype.hasOwnProperty.call(metadata, 'error')) ? {
|
|
152
|
+
...metadata,
|
|
159
153
|
error: messageOrError
|
|
160
|
-
}
|
|
161
|
-
|
|
154
|
+
} : metadata;
|
|
155
|
+
const context = extendedMetadata == null ? void 0 : extendedMetadata.context;
|
|
162
156
|
if (extendedMetadata) {
|
|
163
157
|
delete extendedMetadata.context;
|
|
164
158
|
}
|
|
165
|
-
|
|
166
|
-
level
|
|
159
|
+
const record = {
|
|
160
|
+
level,
|
|
167
161
|
key: this.key,
|
|
168
162
|
displayName: this.displayName,
|
|
169
163
|
datetime: new Date(),
|
|
170
|
-
message
|
|
164
|
+
message,
|
|
171
165
|
context: context || this.contextObject,
|
|
172
166
|
metadata: extendedMetadata,
|
|
173
|
-
extra: {}
|
|
174
|
-
|
|
167
|
+
extra: {},
|
|
168
|
+
...options
|
|
169
|
+
};
|
|
175
170
|
this.addRecord(record);
|
|
176
171
|
}
|
|
177
172
|
|
|
178
173
|
/**
|
|
179
174
|
* Log a trace message
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
*/
|
|
176
|
+
trace(messageOrError, metadata, metadataStyles) {
|
|
182
177
|
this.log(messageOrError, metadata, Level.TRACE, {
|
|
183
|
-
metadataStyles
|
|
178
|
+
metadataStyles
|
|
184
179
|
});
|
|
185
180
|
}
|
|
186
181
|
|
|
187
182
|
/**
|
|
188
183
|
* Log a debug message
|
|
189
|
-
|
|
190
|
-
|
|
184
|
+
*/
|
|
185
|
+
debug(messageOrError, metadata, metadataStyles) {
|
|
191
186
|
this.log(messageOrError, metadata, Level.DEBUG, {
|
|
192
|
-
metadataStyles
|
|
187
|
+
metadataStyles
|
|
193
188
|
});
|
|
194
189
|
}
|
|
195
190
|
|
|
196
191
|
/**
|
|
197
192
|
* Notice an info message
|
|
198
|
-
|
|
199
|
-
|
|
193
|
+
*/
|
|
194
|
+
notice(messageOrError, metadata, metadataStyles) {
|
|
200
195
|
this.log(messageOrError, metadata, Level.NOTICE, {
|
|
201
|
-
metadataStyles
|
|
196
|
+
metadataStyles
|
|
202
197
|
});
|
|
203
198
|
}
|
|
204
199
|
|
|
205
200
|
/**
|
|
206
201
|
* Log an info message
|
|
207
|
-
|
|
208
|
-
|
|
202
|
+
*/
|
|
203
|
+
info(messageOrError, metadata, metadataStyles) {
|
|
209
204
|
this.log(messageOrError, metadata, Level.INFO, {
|
|
210
|
-
metadataStyles
|
|
205
|
+
metadataStyles
|
|
211
206
|
});
|
|
212
207
|
}
|
|
213
208
|
|
|
214
209
|
/**
|
|
215
210
|
* Log a warn message
|
|
216
|
-
|
|
217
|
-
|
|
211
|
+
*/
|
|
212
|
+
warn(messageOrError, metadata, metadataStyles) {
|
|
218
213
|
this.log(messageOrError, metadata, Level.WARN, {
|
|
219
|
-
metadataStyles
|
|
214
|
+
metadataStyles
|
|
220
215
|
});
|
|
221
216
|
}
|
|
222
217
|
|
|
@@ -232,19 +227,19 @@ var Logger = /*#__PURE__*/function () {
|
|
|
232
227
|
* logger.error('caught error', { error });
|
|
233
228
|
* }
|
|
234
229
|
* ```
|
|
235
|
-
|
|
236
|
-
|
|
230
|
+
*/
|
|
231
|
+
error(messageOrError, metadata, metadataStyles) {
|
|
237
232
|
this.log(messageOrError, metadata, Level.ERROR, {
|
|
238
|
-
metadataStyles
|
|
233
|
+
metadataStyles
|
|
239
234
|
});
|
|
240
235
|
}
|
|
241
236
|
|
|
242
237
|
/**
|
|
243
238
|
* Log an critical message
|
|
244
|
-
|
|
245
|
-
|
|
239
|
+
*/
|
|
240
|
+
critical(messageOrError, metadata, metadataStyles) {
|
|
246
241
|
this.log(messageOrError, metadata, Level.CRITICAL, {
|
|
247
|
-
metadataStyles
|
|
242
|
+
metadataStyles
|
|
248
243
|
});
|
|
249
244
|
}
|
|
250
245
|
|
|
@@ -260,49 +255,49 @@ var Logger = /*#__PURE__*/function () {
|
|
|
260
255
|
* logger.error('caught error', { error });
|
|
261
256
|
* process.exit(1);
|
|
262
257
|
* }
|
|
263
|
-
|
|
264
|
-
|
|
258
|
+
*/
|
|
259
|
+
fatal(messageOrError, metadata, metadataStyles) {
|
|
265
260
|
this.log(messageOrError, metadata, Level.FATAL, {
|
|
266
|
-
metadataStyles
|
|
261
|
+
metadataStyles
|
|
267
262
|
});
|
|
268
263
|
}
|
|
269
264
|
|
|
270
265
|
/**
|
|
271
266
|
* Log an alert message
|
|
272
|
-
|
|
273
|
-
|
|
267
|
+
*/
|
|
268
|
+
alert(messageOrError, metadata, metadataStyles) {
|
|
274
269
|
this.log(messageOrError, metadata, Level.ALERT, {
|
|
275
|
-
metadataStyles
|
|
270
|
+
metadataStyles
|
|
276
271
|
});
|
|
277
272
|
}
|
|
278
273
|
|
|
279
274
|
/**
|
|
280
275
|
* Log an inspected value
|
|
281
|
-
|
|
282
|
-
|
|
276
|
+
*/
|
|
277
|
+
inspectValue() {
|
|
283
278
|
throw new Error('Not supported for the browser. Prefer `debugger;`');
|
|
284
279
|
}
|
|
285
280
|
|
|
286
281
|
/**
|
|
287
282
|
* Log a debugged var
|
|
288
|
-
|
|
289
|
-
|
|
283
|
+
*/
|
|
284
|
+
inspectVar() {
|
|
290
285
|
throw new Error('Not supported for the browser. Prefer `debugger;`');
|
|
291
286
|
}
|
|
292
287
|
|
|
293
288
|
/**
|
|
294
289
|
* Alias for infoSuccess
|
|
295
|
-
|
|
296
|
-
|
|
290
|
+
*/
|
|
291
|
+
success(message, metadata, metadataStyles) {
|
|
297
292
|
this.infoSuccess(message, metadata, metadataStyles);
|
|
298
293
|
}
|
|
299
294
|
|
|
300
295
|
/**
|
|
301
296
|
* Log an info success message
|
|
302
|
-
|
|
303
|
-
|
|
297
|
+
*/
|
|
298
|
+
infoSuccess(message, metadata, metadataStyles) {
|
|
304
299
|
this.log(message, metadata, Level.INFO, {
|
|
305
|
-
metadataStyles
|
|
300
|
+
metadataStyles,
|
|
306
301
|
symbol: '✔',
|
|
307
302
|
styles: ['green', 'bold']
|
|
308
303
|
});
|
|
@@ -310,10 +305,10 @@ var Logger = /*#__PURE__*/function () {
|
|
|
310
305
|
|
|
311
306
|
/**
|
|
312
307
|
* Log an debug success message
|
|
313
|
-
|
|
314
|
-
|
|
308
|
+
*/
|
|
309
|
+
debugSuccess(message, metadata, metadataStyles) {
|
|
315
310
|
this.log(message, metadata, Level.DEBUG, {
|
|
316
|
-
metadataStyles
|
|
311
|
+
metadataStyles,
|
|
317
312
|
symbol: '✔',
|
|
318
313
|
styles: ['green']
|
|
319
314
|
});
|
|
@@ -321,17 +316,17 @@ var Logger = /*#__PURE__*/function () {
|
|
|
321
316
|
|
|
322
317
|
/**
|
|
323
318
|
* Alias for infoFail
|
|
324
|
-
|
|
325
|
-
|
|
319
|
+
*/
|
|
320
|
+
fail(messageOrError, metadata, metadataStyles) {
|
|
326
321
|
this.infoFail(messageOrError, metadata, metadataStyles);
|
|
327
322
|
}
|
|
328
323
|
|
|
329
324
|
/**
|
|
330
325
|
* Log an info fail message
|
|
331
|
-
|
|
332
|
-
|
|
326
|
+
*/
|
|
327
|
+
infoFail(messageOrError, metadata, metadataStyles) {
|
|
333
328
|
this.log(messageOrError, metadata, Level.INFO, {
|
|
334
|
-
metadataStyles
|
|
329
|
+
metadataStyles,
|
|
335
330
|
symbol: '✖',
|
|
336
331
|
styles: ['red', 'bold']
|
|
337
332
|
});
|
|
@@ -339,10 +334,10 @@ var Logger = /*#__PURE__*/function () {
|
|
|
339
334
|
|
|
340
335
|
/**
|
|
341
336
|
* Log an debug fail message
|
|
342
|
-
|
|
343
|
-
|
|
337
|
+
*/
|
|
338
|
+
debugFail(messageOrError, metadata, metadataStyles) {
|
|
344
339
|
this.log(messageOrError, metadata, Level.DEBUG, {
|
|
345
|
-
metadataStyles
|
|
340
|
+
metadataStyles,
|
|
346
341
|
symbol: '✖',
|
|
347
342
|
styles: ['red']
|
|
348
343
|
});
|
|
@@ -350,19 +345,16 @@ var Logger = /*#__PURE__*/function () {
|
|
|
350
345
|
|
|
351
346
|
/**
|
|
352
347
|
* @returns {number} time to pass to timeEnd
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
if (level === void 0) {
|
|
356
|
-
level = Level.DEBUG;
|
|
357
|
-
}
|
|
348
|
+
*/
|
|
349
|
+
time(message, metadata, metadataStyles, level = Level.DEBUG) {
|
|
358
350
|
if (message) {
|
|
359
351
|
this.log(message, metadata, level, {
|
|
360
|
-
metadataStyles
|
|
352
|
+
metadataStyles
|
|
361
353
|
});
|
|
362
354
|
}
|
|
363
355
|
return Date.now();
|
|
364
|
-
}
|
|
365
|
-
|
|
356
|
+
}
|
|
357
|
+
infoTime(message, metadata, metadataStyles) {
|
|
366
358
|
return this.time(message, metadata, metadataStyles, Level.INFO);
|
|
367
359
|
}
|
|
368
360
|
|
|
@@ -371,41 +363,39 @@ var Logger = /*#__PURE__*/function () {
|
|
|
371
363
|
* was called and when the respective time method
|
|
372
364
|
* was called, then logs out the difference
|
|
373
365
|
* and deletes the original record
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
var now = Date.now(),
|
|
380
|
-
seconds;
|
|
381
|
-
var diffTime = now - startTime;
|
|
382
|
-
var readableTime;
|
|
366
|
+
*/
|
|
367
|
+
timeEnd(startTime, message, metadata, metadataStyles, level = Level.DEBUG, options) {
|
|
368
|
+
const now = Date.now();
|
|
369
|
+
const diffTime = now - startTime;
|
|
370
|
+
let readableTime;
|
|
383
371
|
if (diffTime < 1000) {
|
|
384
|
-
readableTime = diffTime
|
|
372
|
+
readableTime = `${diffTime}ms`;
|
|
385
373
|
} else {
|
|
386
|
-
seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;
|
|
387
|
-
readableTime =
|
|
374
|
+
const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;
|
|
375
|
+
readableTime = `${seconds ? `${seconds}s and ` : ''}${diffTime - seconds * 1000}ms`;
|
|
388
376
|
}
|
|
389
|
-
|
|
390
|
-
|
|
377
|
+
const extendedMetadata = {
|
|
378
|
+
...metadata,
|
|
379
|
+
readableTime,
|
|
391
380
|
timeMs: diffTime
|
|
381
|
+
};
|
|
382
|
+
this.log(message, extendedMetadata, level, {
|
|
383
|
+
...options,
|
|
384
|
+
metadataStyles
|
|
392
385
|
});
|
|
393
|
-
this.log(message, extendedMetadata, level, _extends({}, options, {
|
|
394
|
-
metadataStyles: metadataStyles
|
|
395
|
-
}));
|
|
396
386
|
}
|
|
397
387
|
|
|
398
388
|
/**
|
|
399
389
|
* Like timeEnd, but with INFO level
|
|
400
|
-
|
|
401
|
-
|
|
390
|
+
*/
|
|
391
|
+
infoTimeEnd(time, message, metadata, metadataStyles) {
|
|
402
392
|
this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);
|
|
403
393
|
}
|
|
404
394
|
|
|
405
395
|
/**
|
|
406
396
|
* Like timeEnd, but with INFO level
|
|
407
|
-
|
|
408
|
-
|
|
397
|
+
*/
|
|
398
|
+
infoSuccessTimeEnd(time, message, metadata, metadataStyles) {
|
|
409
399
|
this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {
|
|
410
400
|
symbol: '✔',
|
|
411
401
|
styles: ['green', 'bold']
|
|
@@ -425,13 +415,14 @@ var Logger = /*#__PURE__*/function () {
|
|
|
425
415
|
* }
|
|
426
416
|
* ```
|
|
427
417
|
*
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
418
|
+
*/
|
|
419
|
+
enter(fn, metadata, metadataStyles) {
|
|
420
|
+
const extendedMetadata = {
|
|
421
|
+
...metadata,
|
|
431
422
|
functionName: fn.name
|
|
432
|
-
}
|
|
423
|
+
};
|
|
433
424
|
this.log('enter', extendedMetadata, Level.TRACE, {
|
|
434
|
-
metadataStyles
|
|
425
|
+
metadataStyles
|
|
435
426
|
});
|
|
436
427
|
}
|
|
437
428
|
|
|
@@ -448,13 +439,14 @@ var Logger = /*#__PURE__*/function () {
|
|
|
448
439
|
* }
|
|
449
440
|
* }
|
|
450
441
|
* ```
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
442
|
+
*/
|
|
443
|
+
exit(fn, metadata, metadataStyles) {
|
|
444
|
+
const extendedMetadata = {
|
|
445
|
+
...metadata,
|
|
454
446
|
functionName: fn.name
|
|
455
|
-
}
|
|
447
|
+
};
|
|
456
448
|
this.log('exit', extendedMetadata, Level.TRACE, {
|
|
457
|
-
metadataStyles
|
|
449
|
+
metadataStyles
|
|
458
450
|
});
|
|
459
451
|
}
|
|
460
452
|
|
|
@@ -472,10 +464,11 @@ var Logger = /*#__PURE__*/function () {
|
|
|
472
464
|
* }
|
|
473
465
|
* }
|
|
474
466
|
* ```
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
467
|
+
*/
|
|
468
|
+
|
|
469
|
+
wrap(fn, option1, option2, callback) {
|
|
470
|
+
let metadata;
|
|
471
|
+
let metadataStyles;
|
|
479
472
|
if (typeof option1 === 'function') {
|
|
480
473
|
callback = option1;
|
|
481
474
|
} else {
|
|
@@ -489,9 +482,8 @@ var Logger = /*#__PURE__*/function () {
|
|
|
489
482
|
this.enter(fn, metadata, metadataStyles);
|
|
490
483
|
callback();
|
|
491
484
|
this.exit(fn);
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
}();
|
|
485
|
+
}
|
|
486
|
+
}
|
|
495
487
|
|
|
496
488
|
export { Logger };
|
|
497
489
|
//# sourceMappingURL=index-browser.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-browser.es.js","sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport * as util from 'node:util';\nimport { POB_TARGET } from 'pob-babel';\nimport { Level } from 'nightingale-levels';\nimport type {\n Metadata,\n MetadataStyles,\n Styles,\n Handler,\n Processor,\n LogRecord,\n} from 'nightingale-types';\n\nexport { Level } from 'nightingale-levels';\n\nexport interface Options<T extends Metadata> {\n symbol?: string;\n metadataStyles?: MetadataStyles<T>;\n styles?: Styles;\n}\n\nexport interface ComputedConfigForKey {\n handlers: Handler[];\n processors: Processor[];\n}\n\nexport interface ExtendedFunctionNameMetadata {\n functionName: string;\n}\n\nexport interface Config {\n handler?: Handler;\n handlers?: Handler[];\n key?: string;\n keys?: string[];\n pattern?: RegExp;\n processor?: Processor;\n processors?: Processor[];\n stop?: boolean;\n}\n\ndeclare global {\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_CONFIG: Config[];\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_LOGGER_MAP_CACHE: Map<string, ComputedConfigForKey>;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_CONFIG_DEFAULT: ComputedConfigForKey;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_GLOBAL_HANDLERS: unknown;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER: (\n key: string,\n ) => ComputedConfigForKey;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD: (\n key: string,\n level: number,\n ) => ComputedConfigForKey;\n}\n\nconst globalOrWindow: typeof global =\n typeof global !== 'undefined' ? global : (window as typeof global);\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER =\n (): ComputedConfigForKey => ({\n handlers: [],\n processors: [],\n });\n}\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n\nfunction getConfigForLoggerRecord(\n key: string,\n recordLevel: Level,\n): ComputedConfigForKey {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(\n key,\n recordLevel,\n );\n}\n\nfunction isError(messageOrError: Error | string): messageOrError is Error {\n return messageOrError instanceof Error;\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport class Logger {\n private contextObject?: Record<string, unknown>;\n\n readonly key: string;\n\n readonly displayName?: string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName?: string) {\n this.key = key;\n this.displayName = displayName;\n\n if (process.env.NODE_ENV !== 'production' && key.includes('.')) {\n throw new Error(\n `nightingale: \\`.\\` in key is no longer supported, use \\`:\\` instead (key: ${key})`,\n );\n }\n }\n\n /** @private */\n protected getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): Readonly<ComputedConfigForKey> {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName?: string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * ```typescript\n * const loggerMyService = new Logger('app:myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.enter(someAction);\n * // do stuff\n * logger.info('info');\n * // do stuff\n * logger.exit(someAction);\n * }\n * ```\n *\n */\n context(context: Record<string, unknown>): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Get the context of this logger\n */\n getContextObject(): Readonly<Record<string, unknown>> | undefined {\n return this.contextObject;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Record<string, unknown>): void {\n this.contextObject = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Record<string, unknown>): void {\n if (this.contextObject === undefined) {\n throw new Error(\n 'Cannot extends context that does not exists. Use setContext(context) first.',\n );\n }\n Object.assign(this.contextObject, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord<T extends Metadata>(record: Readonly<LogRecord<T>>): void {\n const { handlers, processors } = this.getHandlersAndProcessors(\n record.level,\n );\n\n if (handlers.length === 0) {\n if (record.level > Level.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach((process) => {\n process(record, record.context);\n });\n }\n\n handlers.some((handler) => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n level: Level = Level.INFO,\n options?: Options<T>,\n ): void {\n const isMessageError = isError(messageOrError);\n\n const message = isMessageError\n ? `${messageOrError.name}: ${messageOrError.message}`\n : messageOrError;\n\n const extendedMetadata =\n isMessageError &&\n !(metadata && Object.prototype.hasOwnProperty.call(metadata, 'error'))\n ? { ...metadata, error: messageOrError }\n : metadata;\n\n const context = extendedMetadata?.context;\n if (extendedMetadata) {\n delete extendedMetadata.context;\n }\n\n const record: LogRecord<NonNullable<typeof extendedMetadata>> = {\n level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message,\n context: context || this.contextObject,\n metadata: extendedMetadata as NonNullable<typeof extendedMetadata>,\n extra: {},\n ...options,\n };\n this.addRecord(record);\n }\n\n /**\n * Log a trace message\n */\n trace<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log a debug message\n */\n debug<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, { metadataStyles });\n }\n\n /**\n * Notice an info message\n */\n notice<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.NOTICE, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * }\n * ```\n */\n error<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ERROR, { metadataStyles });\n }\n\n /**\n * Log an critical message\n */\n critical<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.CRITICAL, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * process.exit(1);\n * }\n */\n fatal<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.FATAL, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ALERT, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue<T extends Metadata>(\n value: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n if (POB_TARGET === 'browser') {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n const inspectedValue = util.inspect(value, { depth: 6 });\n this.log(inspectedValue, metadata, Level.DEBUG, {\n metadataStyles,\n styles: ['gray'],\n });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar<T extends Metadata>(\n varName: string,\n varValue: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n if (POB_TARGET === 'browser') {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n const inspectedValue = util.inspect(varValue, { depth: 6 });\n this.log(`${varName} = ${inspectedValue}`, metadata, Level.DEBUG, {\n metadataStyles,\n styles: ['cyan'],\n });\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoFail(messageOrError, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): number {\n return this.time(message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd<T extends Metadata>(\n startTime: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n options?: Options<T>,\n ): void {\n const now = Date.now();\n\n const diffTime = now - startTime;\n let readableTime;\n\n if (diffTime < 1000) {\n readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;\n const ms = diffTime - seconds * 1000;\n readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n const extendedMetadata = {\n ...metadata,\n readableTime,\n timeMs: diffTime,\n };\n\n this.log(message, extendedMetadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * ```typescript\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n * ```\n *\n */\n enter<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log('enter', extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n * ```\n */\n exit<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log('exit', extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n * ```\n */\n wrap<Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n metadataStyles: MetadataStyles<T>,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n option1: T | (() => void),\n option2?: MetadataStyles<T> | (() => void),\n callback?: () => void,\n ): void {\n let metadata: T | undefined;\n let metadataStyles: MetadataStyles<T> | undefined;\n\n if (typeof option1 === 'function') {\n callback = option1;\n } else {\n metadata = option1;\n\n if (typeof option2 === 'function') {\n callback = option2;\n } else {\n metadataStyles = option2;\n }\n }\n\n this.enter(fn, metadata, metadataStyles);\n (callback as () => void)();\n this.exit(fn);\n }\n}\n"],"names":["globalOrWindow","global","window","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","_globalOrWindow$__NIG","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","isError","messageOrError","Error","Logger","displayName","process","env","NODE_ENV","includes","_proto","prototype","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","context","logger","setContext","getContextObject","contextObject","extendsContext","extendedContext","undefined","Object","assign","addRecord","record","_this$getHandlersAndP","length","Level","ERROR","console","log","message","forEach","some","handle","metadata","options","INFO","isMessageError","name","extendedMetadata","hasOwnProperty","call","_extends","error","datetime","Date","extra","trace","metadataStyles","TRACE","debug","DEBUG","notice","NOTICE","info","warn","WARN","critical","CRITICAL","fatal","FATAL","alert","ALERT","inspectValue","inspectVar","success","infoSuccess","symbol","styles","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","seconds","diffTime","readableTime","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","option1","option2","callback"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-browser.es.js","sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport * as util from 'node:util';\nimport { POB_TARGET } from 'pob-babel';\nimport { Level } from 'nightingale-levels';\nimport type {\n Metadata,\n MetadataStyles,\n Styles,\n Handler,\n Processor,\n LogRecord,\n} from 'nightingale-types';\n\nexport { Level } from 'nightingale-levels';\n\nexport interface Options<T extends Metadata> {\n symbol?: string;\n metadataStyles?: MetadataStyles<T>;\n styles?: Styles;\n}\n\nexport interface ComputedConfigForKey {\n handlers: Handler[];\n processors: Processor[];\n}\n\nexport interface ExtendedFunctionNameMetadata {\n functionName: string;\n}\n\nexport interface Config {\n handler?: Handler;\n handlers?: Handler[];\n key?: string;\n keys?: string[];\n pattern?: RegExp;\n processor?: Processor;\n processors?: Processor[];\n stop?: boolean;\n}\n\ndeclare global {\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_CONFIG: Config[];\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_LOGGER_MAP_CACHE: Map<string, ComputedConfigForKey>;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_CONFIG_DEFAULT: ComputedConfigForKey;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_GLOBAL_HANDLERS: unknown;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER: (\n key: string,\n ) => ComputedConfigForKey;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD: (\n key: string,\n level: number,\n ) => ComputedConfigForKey;\n}\n\nconst globalOrWindow: typeof global =\n typeof global !== 'undefined' ? global : (window as typeof global);\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER =\n (): ComputedConfigForKey => ({\n handlers: [],\n processors: [],\n });\n}\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n\nfunction getConfigForLoggerRecord(\n key: string,\n recordLevel: Level,\n): ComputedConfigForKey {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(\n key,\n recordLevel,\n );\n}\n\nfunction isError(messageOrError: Error | string): messageOrError is Error {\n return messageOrError instanceof Error;\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport class Logger {\n private contextObject?: Record<string, unknown>;\n\n readonly key: string;\n\n readonly displayName?: string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName?: string) {\n this.key = key;\n this.displayName = displayName;\n\n if (process.env.NODE_ENV !== 'production' && key.includes('.')) {\n throw new Error(\n `nightingale: \\`.\\` in key is no longer supported, use \\`:\\` instead (key: ${key})`,\n );\n }\n }\n\n /** @private */\n protected getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): Readonly<ComputedConfigForKey> {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName?: string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * ```typescript\n * const loggerMyService = new Logger('app:myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.enter(someAction);\n * // do stuff\n * logger.info('info');\n * // do stuff\n * logger.exit(someAction);\n * }\n * ```\n *\n */\n context(context: Record<string, unknown>): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Get the context of this logger\n */\n getContextObject(): Readonly<Record<string, unknown>> | undefined {\n return this.contextObject;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Record<string, unknown>): void {\n this.contextObject = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Record<string, unknown>): void {\n if (this.contextObject === undefined) {\n throw new Error(\n 'Cannot extends context that does not exists. Use setContext(context) first.',\n );\n }\n Object.assign(this.contextObject, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord<T extends Metadata>(record: Readonly<LogRecord<T>>): void {\n const { handlers, processors } = this.getHandlersAndProcessors(\n record.level,\n );\n\n if (handlers.length === 0) {\n if (record.level > Level.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach((process) => {\n process(record, record.context);\n });\n }\n\n handlers.some((handler) => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n level: Level = Level.INFO,\n options?: Options<T>,\n ): void {\n const isMessageError = isError(messageOrError);\n\n const message = isMessageError\n ? `${messageOrError.name}: ${messageOrError.message}`\n : messageOrError;\n\n const extendedMetadata =\n isMessageError &&\n !(metadata && Object.prototype.hasOwnProperty.call(metadata, 'error'))\n ? { ...metadata, error: messageOrError }\n : metadata;\n\n const context = extendedMetadata?.context;\n if (extendedMetadata) {\n delete extendedMetadata.context;\n }\n\n const record: LogRecord<NonNullable<typeof extendedMetadata>> = {\n level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message,\n context: context || this.contextObject,\n metadata: extendedMetadata as NonNullable<typeof extendedMetadata>,\n extra: {},\n ...options,\n };\n this.addRecord(record);\n }\n\n /**\n * Log a trace message\n */\n trace<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log a debug message\n */\n debug<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, { metadataStyles });\n }\n\n /**\n * Notice an info message\n */\n notice<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.NOTICE, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * }\n * ```\n */\n error<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ERROR, { metadataStyles });\n }\n\n /**\n * Log an critical message\n */\n critical<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.CRITICAL, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * process.exit(1);\n * }\n */\n fatal<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.FATAL, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ALERT, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue<T extends Metadata>(\n value: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n if (POB_TARGET === 'browser') {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n const inspectedValue = util.inspect(value, { depth: 6 });\n this.log(inspectedValue, metadata, Level.DEBUG, {\n metadataStyles,\n styles: ['gray'],\n });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar<T extends Metadata>(\n varName: string,\n varValue: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n if (POB_TARGET === 'browser') {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n const inspectedValue = util.inspect(varValue, { depth: 6 });\n this.log(`${varName} = ${inspectedValue}`, metadata, Level.DEBUG, {\n metadataStyles,\n styles: ['cyan'],\n });\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoFail(messageOrError, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): number {\n return this.time(message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd<T extends Metadata>(\n startTime: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n options?: Options<T>,\n ): void {\n const now = Date.now();\n\n const diffTime = now - startTime;\n let readableTime;\n\n if (diffTime < 1000) {\n readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;\n const ms = diffTime - seconds * 1000;\n readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n const extendedMetadata = {\n ...metadata,\n readableTime,\n timeMs: diffTime,\n };\n\n this.log(message, extendedMetadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * ```typescript\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n * ```\n *\n */\n enter<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log('enter', extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n * ```\n */\n exit<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log('exit', extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n * ```\n */\n wrap<Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n metadataStyles: MetadataStyles<T>,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n option1: T | (() => void),\n option2?: MetadataStyles<T> | (() => void),\n callback?: () => void,\n ): void {\n let metadata: T | undefined;\n let metadataStyles: MetadataStyles<T> | undefined;\n\n if (typeof option1 === 'function') {\n callback = option1;\n } else {\n metadata = option1;\n\n if (typeof option2 === 'function') {\n callback = option2;\n } else {\n metadataStyles = option2;\n }\n }\n\n this.enter(fn, metadata, metadataStyles);\n (callback as () => void)();\n this.exit(fn);\n }\n}\n"],"names":["globalOrWindow","global","window","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","isError","messageOrError","Error","Logger","constructor","displayName","process","env","NODE_ENV","includes","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","context","logger","setContext","getContextObject","contextObject","extendsContext","extendedContext","undefined","Object","assign","addRecord","record","length","Level","ERROR","console","log","message","forEach","some","handle","metadata","INFO","options","isMessageError","name","extendedMetadata","prototype","hasOwnProperty","call","error","datetime","Date","extra","trace","metadataStyles","TRACE","debug","DEBUG","notice","NOTICE","info","warn","WARN","critical","CRITICAL","fatal","FATAL","alert","ALERT","inspectValue","inspectVar","success","infoSuccess","symbol","styles","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","option1","option2","callback"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nightingale-logger",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "15.0.0",
|
|
4
4
|
"description": "Logger for browser and node",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nightingale"
|
|
@@ -38,9 +38,6 @@
|
|
|
38
38
|
"import": "./dist/index-node18.mjs"
|
|
39
39
|
},
|
|
40
40
|
"browser": {
|
|
41
|
-
"browser:modern": {
|
|
42
|
-
"import": "./dist/index-browsermodern.es.js"
|
|
43
|
-
},
|
|
44
41
|
"import": "./dist/index-browser.es.js"
|
|
45
42
|
}
|
|
46
43
|
}
|
|
@@ -67,10 +64,6 @@
|
|
|
67
64
|
"target": "node",
|
|
68
65
|
"version": "18"
|
|
69
66
|
},
|
|
70
|
-
{
|
|
71
|
-
"target": "browser",
|
|
72
|
-
"version": "modern"
|
|
73
|
-
},
|
|
74
67
|
{
|
|
75
68
|
"target": "browser"
|
|
76
69
|
}
|
|
@@ -81,13 +74,13 @@
|
|
|
81
74
|
},
|
|
82
75
|
"dependencies": {
|
|
83
76
|
"@types/node": ">=18.0.0",
|
|
84
|
-
"nightingale-levels": "
|
|
85
|
-
"nightingale-types": "
|
|
77
|
+
"nightingale-levels": "15.0.0",
|
|
78
|
+
"nightingale-types": "15.0.0"
|
|
86
79
|
},
|
|
87
80
|
"devDependencies": {
|
|
88
|
-
"@babel/core": "7.23.
|
|
89
|
-
"@babel/preset-env": "7.23.
|
|
90
|
-
"pob-babel": "
|
|
91
|
-
"typescript": "5.
|
|
81
|
+
"@babel/core": "7.23.6",
|
|
82
|
+
"@babel/preset-env": "7.23.6",
|
|
83
|
+
"pob-babel": "38.0.0",
|
|
84
|
+
"typescript": "5.3.3"
|
|
92
85
|
}
|
|
93
86
|
}
|
|
@@ -1,489 +0,0 @@
|
|
|
1
|
-
import { Level } from 'nightingale-levels';
|
|
2
|
-
export { Level } from 'nightingale-levels';
|
|
3
|
-
|
|
4
|
-
/* eslint-disable max-lines */
|
|
5
|
-
|
|
6
|
-
const globalOrWindow = typeof global !== 'undefined' ? global : window;
|
|
7
|
-
if (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {
|
|
8
|
-
globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = () => ({
|
|
9
|
-
handlers: [],
|
|
10
|
-
processors: []
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
if (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {
|
|
14
|
-
globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (key, level) => {
|
|
15
|
-
const {
|
|
16
|
-
handlers,
|
|
17
|
-
processors
|
|
18
|
-
} = globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);
|
|
19
|
-
return {
|
|
20
|
-
handlers: handlers.filter(handler => level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))),
|
|
21
|
-
processors
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
function getConfigForLoggerRecord(key, recordLevel) {
|
|
26
|
-
return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);
|
|
27
|
-
}
|
|
28
|
-
function isError(messageOrError) {
|
|
29
|
-
return messageOrError instanceof Error;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Interface that allows you to log records.
|
|
34
|
-
* This records are treated by handlers
|
|
35
|
-
*/
|
|
36
|
-
class Logger {
|
|
37
|
-
/**
|
|
38
|
-
* Create a new Logger
|
|
39
|
-
*
|
|
40
|
-
* @param {string} key
|
|
41
|
-
* @param {string} [displayName]
|
|
42
|
-
*/
|
|
43
|
-
constructor(key, displayName) {
|
|
44
|
-
this.key = key;
|
|
45
|
-
this.displayName = displayName;
|
|
46
|
-
if (process.env.NODE_ENV !== 'production' && key.includes('.')) {
|
|
47
|
-
throw new Error(`nightingale: \`.\` in key is no longer supported, use \`:\` instead (key: ${key})`);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/** @private */
|
|
52
|
-
getHandlersAndProcessors(recordLevel) {
|
|
53
|
-
return getConfigForLoggerRecord(this.key, recordLevel);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/** @private */
|
|
57
|
-
getConfig() {
|
|
58
|
-
return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Create a child logger
|
|
63
|
-
*/
|
|
64
|
-
child(childSuffixKey, childDisplayName) {
|
|
65
|
-
return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Create a new Logger with the same key a this attached context
|
|
70
|
-
*
|
|
71
|
-
* @example
|
|
72
|
-
* ```typescript
|
|
73
|
-
* const loggerMyService = new Logger('app:myService');
|
|
74
|
-
* function someAction(arg1) {
|
|
75
|
-
* const logger = loggerMyService.context({ arg1 });
|
|
76
|
-
* logger.enter(someAction);
|
|
77
|
-
* // do stuff
|
|
78
|
-
* logger.info('info');
|
|
79
|
-
* // do stuff
|
|
80
|
-
* logger.exit(someAction);
|
|
81
|
-
* }
|
|
82
|
-
* ```
|
|
83
|
-
*
|
|
84
|
-
*/
|
|
85
|
-
context(context) {
|
|
86
|
-
const logger = new Logger(this.key);
|
|
87
|
-
logger.setContext(context);
|
|
88
|
-
return logger;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Get the context of this logger
|
|
93
|
-
*/
|
|
94
|
-
getContextObject() {
|
|
95
|
-
return this.contextObject;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Set the context of this logger
|
|
100
|
-
*
|
|
101
|
-
* @param {Object} context
|
|
102
|
-
*/
|
|
103
|
-
setContext(context) {
|
|
104
|
-
this.contextObject = context;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Extends existing context of this logger
|
|
109
|
-
*/
|
|
110
|
-
extendsContext(extendedContext) {
|
|
111
|
-
if (this.contextObject === undefined) {
|
|
112
|
-
throw new Error('Cannot extends context that does not exists. Use setContext(context) first.');
|
|
113
|
-
}
|
|
114
|
-
Object.assign(this.contextObject, extendedContext);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Handle a record
|
|
119
|
-
*
|
|
120
|
-
* Use this only if you know what you are doing.
|
|
121
|
-
*/
|
|
122
|
-
addRecord(record) {
|
|
123
|
-
const {
|
|
124
|
-
handlers,
|
|
125
|
-
processors
|
|
126
|
-
} = this.getHandlersAndProcessors(record.level);
|
|
127
|
-
if (handlers.length === 0) {
|
|
128
|
-
if (record.level > Level.ERROR) {
|
|
129
|
-
// eslint-disable-next-line no-console
|
|
130
|
-
console.log('[nightingale] no logger for > error level.', {
|
|
131
|
-
key: record.key,
|
|
132
|
-
message: record.message
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
if (processors) {
|
|
138
|
-
processors.forEach(process => {
|
|
139
|
-
process(record, record.context);
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
handlers.some(handler => handler.handle(record) === false);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Log a message
|
|
147
|
-
*/
|
|
148
|
-
log(messageOrError, metadata, level = Level.INFO, options) {
|
|
149
|
-
const isMessageError = isError(messageOrError);
|
|
150
|
-
const message = isMessageError ? `${messageOrError.name}: ${messageOrError.message}` : messageOrError;
|
|
151
|
-
const extendedMetadata = isMessageError && !(metadata && Object.prototype.hasOwnProperty.call(metadata, 'error')) ? {
|
|
152
|
-
...metadata,
|
|
153
|
-
error: messageOrError
|
|
154
|
-
} : metadata;
|
|
155
|
-
const context = extendedMetadata?.context;
|
|
156
|
-
if (extendedMetadata) {
|
|
157
|
-
delete extendedMetadata.context;
|
|
158
|
-
}
|
|
159
|
-
const record = {
|
|
160
|
-
level,
|
|
161
|
-
key: this.key,
|
|
162
|
-
displayName: this.displayName,
|
|
163
|
-
datetime: new Date(),
|
|
164
|
-
message,
|
|
165
|
-
context: context || this.contextObject,
|
|
166
|
-
metadata: extendedMetadata,
|
|
167
|
-
extra: {},
|
|
168
|
-
...options
|
|
169
|
-
};
|
|
170
|
-
this.addRecord(record);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Log a trace message
|
|
175
|
-
*/
|
|
176
|
-
trace(messageOrError, metadata, metadataStyles) {
|
|
177
|
-
this.log(messageOrError, metadata, Level.TRACE, {
|
|
178
|
-
metadataStyles
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Log a debug message
|
|
184
|
-
*/
|
|
185
|
-
debug(messageOrError, metadata, metadataStyles) {
|
|
186
|
-
this.log(messageOrError, metadata, Level.DEBUG, {
|
|
187
|
-
metadataStyles
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Notice an info message
|
|
193
|
-
*/
|
|
194
|
-
notice(messageOrError, metadata, metadataStyles) {
|
|
195
|
-
this.log(messageOrError, metadata, Level.NOTICE, {
|
|
196
|
-
metadataStyles
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Log an info message
|
|
202
|
-
*/
|
|
203
|
-
info(messageOrError, metadata, metadataStyles) {
|
|
204
|
-
this.log(messageOrError, metadata, Level.INFO, {
|
|
205
|
-
metadataStyles
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Log a warn message
|
|
211
|
-
*/
|
|
212
|
-
warn(messageOrError, metadata, metadataStyles) {
|
|
213
|
-
this.log(messageOrError, metadata, Level.WARN, {
|
|
214
|
-
metadataStyles
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Log an error message
|
|
220
|
-
*
|
|
221
|
-
* @example
|
|
222
|
-
* ```typescript
|
|
223
|
-
* const logger = new Logger('something');
|
|
224
|
-
* try {
|
|
225
|
-
* throw new Error('Always throws here');
|
|
226
|
-
* } catch (error) {
|
|
227
|
-
* logger.error('caught error', { error });
|
|
228
|
-
* }
|
|
229
|
-
* ```
|
|
230
|
-
*/
|
|
231
|
-
error(messageOrError, metadata, metadataStyles) {
|
|
232
|
-
this.log(messageOrError, metadata, Level.ERROR, {
|
|
233
|
-
metadataStyles
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Log an critical message
|
|
239
|
-
*/
|
|
240
|
-
critical(messageOrError, metadata, metadataStyles) {
|
|
241
|
-
this.log(messageOrError, metadata, Level.CRITICAL, {
|
|
242
|
-
metadataStyles
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Log a fatal message
|
|
248
|
-
*
|
|
249
|
-
* @example
|
|
250
|
-
* ```typescript
|
|
251
|
-
* const logger = new Logger('something');
|
|
252
|
-
* try {
|
|
253
|
-
* throw new Error('Always throws here');
|
|
254
|
-
* } catch (error) {
|
|
255
|
-
* logger.error('caught error', { error });
|
|
256
|
-
* process.exit(1);
|
|
257
|
-
* }
|
|
258
|
-
*/
|
|
259
|
-
fatal(messageOrError, metadata, metadataStyles) {
|
|
260
|
-
this.log(messageOrError, metadata, Level.FATAL, {
|
|
261
|
-
metadataStyles
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* Log an alert message
|
|
267
|
-
*/
|
|
268
|
-
alert(messageOrError, metadata, metadataStyles) {
|
|
269
|
-
this.log(messageOrError, metadata, Level.ALERT, {
|
|
270
|
-
metadataStyles
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Log an inspected value
|
|
276
|
-
*/
|
|
277
|
-
inspectValue() {
|
|
278
|
-
throw new Error('Not supported for the browser. Prefer `debugger;`');
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Log a debugged var
|
|
283
|
-
*/
|
|
284
|
-
inspectVar() {
|
|
285
|
-
throw new Error('Not supported for the browser. Prefer `debugger;`');
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Alias for infoSuccess
|
|
290
|
-
*/
|
|
291
|
-
success(message, metadata, metadataStyles) {
|
|
292
|
-
this.infoSuccess(message, metadata, metadataStyles);
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Log an info success message
|
|
297
|
-
*/
|
|
298
|
-
infoSuccess(message, metadata, metadataStyles) {
|
|
299
|
-
this.log(message, metadata, Level.INFO, {
|
|
300
|
-
metadataStyles,
|
|
301
|
-
symbol: '✔',
|
|
302
|
-
styles: ['green', 'bold']
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/**
|
|
307
|
-
* Log an debug success message
|
|
308
|
-
*/
|
|
309
|
-
debugSuccess(message, metadata, metadataStyles) {
|
|
310
|
-
this.log(message, metadata, Level.DEBUG, {
|
|
311
|
-
metadataStyles,
|
|
312
|
-
symbol: '✔',
|
|
313
|
-
styles: ['green']
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* Alias for infoFail
|
|
319
|
-
*/
|
|
320
|
-
fail(messageOrError, metadata, metadataStyles) {
|
|
321
|
-
this.infoFail(messageOrError, metadata, metadataStyles);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Log an info fail message
|
|
326
|
-
*/
|
|
327
|
-
infoFail(messageOrError, metadata, metadataStyles) {
|
|
328
|
-
this.log(messageOrError, metadata, Level.INFO, {
|
|
329
|
-
metadataStyles,
|
|
330
|
-
symbol: '✖',
|
|
331
|
-
styles: ['red', 'bold']
|
|
332
|
-
});
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* Log an debug fail message
|
|
337
|
-
*/
|
|
338
|
-
debugFail(messageOrError, metadata, metadataStyles) {
|
|
339
|
-
this.log(messageOrError, metadata, Level.DEBUG, {
|
|
340
|
-
metadataStyles,
|
|
341
|
-
symbol: '✖',
|
|
342
|
-
styles: ['red']
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
/**
|
|
347
|
-
* @returns {number} time to pass to timeEnd
|
|
348
|
-
*/
|
|
349
|
-
time(message, metadata, metadataStyles, level = Level.DEBUG) {
|
|
350
|
-
if (message) {
|
|
351
|
-
this.log(message, metadata, level, {
|
|
352
|
-
metadataStyles
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
return Date.now();
|
|
356
|
-
}
|
|
357
|
-
infoTime(message, metadata, metadataStyles) {
|
|
358
|
-
return this.time(message, metadata, metadataStyles, Level.INFO);
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
/**
|
|
362
|
-
* Finds difference between when this method
|
|
363
|
-
* was called and when the respective time method
|
|
364
|
-
* was called, then logs out the difference
|
|
365
|
-
* and deletes the original record
|
|
366
|
-
*/
|
|
367
|
-
timeEnd(startTime, message, metadata, metadataStyles, level = Level.DEBUG, options) {
|
|
368
|
-
const now = Date.now();
|
|
369
|
-
const diffTime = now - startTime;
|
|
370
|
-
let readableTime;
|
|
371
|
-
if (diffTime < 1000) {
|
|
372
|
-
readableTime = `${diffTime}ms`;
|
|
373
|
-
} else {
|
|
374
|
-
const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;
|
|
375
|
-
readableTime = `${seconds ? `${seconds}s and ` : ''}${diffTime - seconds * 1000}ms`;
|
|
376
|
-
}
|
|
377
|
-
const extendedMetadata = {
|
|
378
|
-
...metadata,
|
|
379
|
-
readableTime,
|
|
380
|
-
timeMs: diffTime
|
|
381
|
-
};
|
|
382
|
-
this.log(message, extendedMetadata, level, {
|
|
383
|
-
...options,
|
|
384
|
-
metadataStyles
|
|
385
|
-
});
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
/**
|
|
389
|
-
* Like timeEnd, but with INFO level
|
|
390
|
-
*/
|
|
391
|
-
infoTimeEnd(time, message, metadata, metadataStyles) {
|
|
392
|
-
this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
* Like timeEnd, but with INFO level
|
|
397
|
-
*/
|
|
398
|
-
infoSuccessTimeEnd(time, message, metadata, metadataStyles) {
|
|
399
|
-
this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {
|
|
400
|
-
symbol: '✔',
|
|
401
|
-
styles: ['green', 'bold']
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
/**
|
|
406
|
-
* Log an enter in a function
|
|
407
|
-
*
|
|
408
|
-
* @example
|
|
409
|
-
* ```typescript
|
|
410
|
-
* class A {
|
|
411
|
-
* method(arg1) {
|
|
412
|
-
* logger.enter(method, { arg1 });
|
|
413
|
-
* // Do your stuff
|
|
414
|
-
* }
|
|
415
|
-
* }
|
|
416
|
-
* ```
|
|
417
|
-
*
|
|
418
|
-
*/
|
|
419
|
-
enter(fn, metadata, metadataStyles) {
|
|
420
|
-
const extendedMetadata = {
|
|
421
|
-
...metadata,
|
|
422
|
-
functionName: fn.name
|
|
423
|
-
};
|
|
424
|
-
this.log('enter', extendedMetadata, Level.TRACE, {
|
|
425
|
-
metadataStyles
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
/**
|
|
430
|
-
* Log an exit in a function
|
|
431
|
-
*
|
|
432
|
-
* @example
|
|
433
|
-
* ```typescript
|
|
434
|
-
* const logger = new Logger('myNamespace:A');
|
|
435
|
-
* class A {
|
|
436
|
-
* method(arg1) {
|
|
437
|
-
* // Do your stuff
|
|
438
|
-
* logger.exit(method, { arg1 });
|
|
439
|
-
* }
|
|
440
|
-
* }
|
|
441
|
-
* ```
|
|
442
|
-
*/
|
|
443
|
-
exit(fn, metadata, metadataStyles) {
|
|
444
|
-
const extendedMetadata = {
|
|
445
|
-
...metadata,
|
|
446
|
-
functionName: fn.name
|
|
447
|
-
};
|
|
448
|
-
this.log('exit', extendedMetadata, Level.TRACE, {
|
|
449
|
-
metadataStyles
|
|
450
|
-
});
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
/**
|
|
454
|
-
* Wrap around a function to log enter and exit of a function
|
|
455
|
-
*
|
|
456
|
-
* @example
|
|
457
|
-
* ```typescript
|
|
458
|
-
* const logger = new Logger('myNamespace:A');
|
|
459
|
-
* class A {
|
|
460
|
-
* method() {
|
|
461
|
-
* logger.wrap(method, () => {
|
|
462
|
-
* // Do your stuff
|
|
463
|
-
* });
|
|
464
|
-
* }
|
|
465
|
-
* }
|
|
466
|
-
* ```
|
|
467
|
-
*/
|
|
468
|
-
|
|
469
|
-
wrap(fn, option1, option2, callback) {
|
|
470
|
-
let metadata;
|
|
471
|
-
let metadataStyles;
|
|
472
|
-
if (typeof option1 === 'function') {
|
|
473
|
-
callback = option1;
|
|
474
|
-
} else {
|
|
475
|
-
metadata = option1;
|
|
476
|
-
if (typeof option2 === 'function') {
|
|
477
|
-
callback = option2;
|
|
478
|
-
} else {
|
|
479
|
-
metadataStyles = option2;
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
this.enter(fn, metadata, metadataStyles);
|
|
483
|
-
callback();
|
|
484
|
-
this.exit(fn);
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
export { Logger };
|
|
489
|
-
//# sourceMappingURL=index-browsermodern.es.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-browsermodern.es.js","sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable max-lines */\nimport * as util from 'node:util';\nimport { POB_TARGET } from 'pob-babel';\nimport { Level } from 'nightingale-levels';\nimport type {\n Metadata,\n MetadataStyles,\n Styles,\n Handler,\n Processor,\n LogRecord,\n} from 'nightingale-types';\n\nexport { Level } from 'nightingale-levels';\n\nexport interface Options<T extends Metadata> {\n symbol?: string;\n metadataStyles?: MetadataStyles<T>;\n styles?: Styles;\n}\n\nexport interface ComputedConfigForKey {\n handlers: Handler[];\n processors: Processor[];\n}\n\nexport interface ExtendedFunctionNameMetadata {\n functionName: string;\n}\n\nexport interface Config {\n handler?: Handler;\n handlers?: Handler[];\n key?: string;\n keys?: string[];\n pattern?: RegExp;\n processor?: Processor;\n processors?: Processor[];\n stop?: boolean;\n}\n\ndeclare global {\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_CONFIG: Config[];\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_LOGGER_MAP_CACHE: Map<string, ComputedConfigForKey>;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_CONFIG_DEFAULT: ComputedConfigForKey;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_GLOBAL_HANDLERS: unknown;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER: (\n key: string,\n ) => ComputedConfigForKey;\n // eslint-disable-next-line vars-on-top, no-var\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD: (\n key: string,\n level: number,\n ) => ComputedConfigForKey;\n}\n\nconst globalOrWindow: typeof global =\n typeof global !== 'undefined' ? global : (window as typeof global);\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER =\n (): ComputedConfigForKey => ({\n handlers: [],\n processors: [],\n });\n}\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n\nfunction getConfigForLoggerRecord(\n key: string,\n recordLevel: Level,\n): ComputedConfigForKey {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(\n key,\n recordLevel,\n );\n}\n\nfunction isError(messageOrError: Error | string): messageOrError is Error {\n return messageOrError instanceof Error;\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport class Logger {\n private contextObject?: Record<string, unknown>;\n\n readonly key: string;\n\n readonly displayName?: string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName?: string) {\n this.key = key;\n this.displayName = displayName;\n\n if (process.env.NODE_ENV !== 'production' && key.includes('.')) {\n throw new Error(\n `nightingale: \\`.\\` in key is no longer supported, use \\`:\\` instead (key: ${key})`,\n );\n }\n }\n\n /** @private */\n protected getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): Readonly<ComputedConfigForKey> {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName?: string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * ```typescript\n * const loggerMyService = new Logger('app:myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.enter(someAction);\n * // do stuff\n * logger.info('info');\n * // do stuff\n * logger.exit(someAction);\n * }\n * ```\n *\n */\n context(context: Record<string, unknown>): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Get the context of this logger\n */\n getContextObject(): Readonly<Record<string, unknown>> | undefined {\n return this.contextObject;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Record<string, unknown>): void {\n this.contextObject = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Record<string, unknown>): void {\n if (this.contextObject === undefined) {\n throw new Error(\n 'Cannot extends context that does not exists. Use setContext(context) first.',\n );\n }\n Object.assign(this.contextObject, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord<T extends Metadata>(record: Readonly<LogRecord<T>>): void {\n const { handlers, processors } = this.getHandlersAndProcessors(\n record.level,\n );\n\n if (handlers.length === 0) {\n if (record.level > Level.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach((process) => {\n process(record, record.context);\n });\n }\n\n handlers.some((handler) => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n level: Level = Level.INFO,\n options?: Options<T>,\n ): void {\n const isMessageError = isError(messageOrError);\n\n const message = isMessageError\n ? `${messageOrError.name}: ${messageOrError.message}`\n : messageOrError;\n\n const extendedMetadata =\n isMessageError &&\n !(metadata && Object.prototype.hasOwnProperty.call(metadata, 'error'))\n ? { ...metadata, error: messageOrError }\n : metadata;\n\n const context = extendedMetadata?.context;\n if (extendedMetadata) {\n delete extendedMetadata.context;\n }\n\n const record: LogRecord<NonNullable<typeof extendedMetadata>> = {\n level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message,\n context: context || this.contextObject,\n metadata: extendedMetadata as NonNullable<typeof extendedMetadata>,\n extra: {},\n ...options,\n };\n this.addRecord(record);\n }\n\n /**\n * Log a trace message\n */\n trace<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log a debug message\n */\n debug<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, { metadataStyles });\n }\n\n /**\n * Notice an info message\n */\n notice<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.NOTICE, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * }\n * ```\n */\n error<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ERROR, { metadataStyles });\n }\n\n /**\n * Log an critical message\n */\n critical<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.CRITICAL, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * process.exit(1);\n * }\n */\n fatal<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.FATAL, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ALERT, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue<T extends Metadata>(\n value: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n if (POB_TARGET === 'browser') {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n const inspectedValue = util.inspect(value, { depth: 6 });\n this.log(inspectedValue, metadata, Level.DEBUG, {\n metadataStyles,\n styles: ['gray'],\n });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar<T extends Metadata>(\n varName: string,\n varValue: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n if (POB_TARGET === 'browser') {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n const inspectedValue = util.inspect(varValue, { depth: 6 });\n this.log(`${varName} = ${inspectedValue}`, metadata, Level.DEBUG, {\n metadataStyles,\n styles: ['cyan'],\n });\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoFail(messageOrError, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): number {\n return this.time(message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd<T extends Metadata>(\n startTime: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n options?: Options<T>,\n ): void {\n const now = Date.now();\n\n const diffTime = now - startTime;\n let readableTime;\n\n if (diffTime < 1000) {\n readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;\n const ms = diffTime - seconds * 1000;\n readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n const extendedMetadata = {\n ...metadata,\n readableTime,\n timeMs: diffTime,\n };\n\n this.log(message, extendedMetadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * ```typescript\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n * ```\n *\n */\n enter<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log('enter', extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n * ```\n */\n exit<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log('exit', extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n * ```\n */\n wrap<Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n metadataStyles: MetadataStyles<T>,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n option1: T | (() => void),\n option2?: MetadataStyles<T> | (() => void),\n callback?: () => void,\n ): void {\n let metadata: T | undefined;\n let metadataStyles: MetadataStyles<T> | undefined;\n\n if (typeof option1 === 'function') {\n callback = option1;\n } else {\n metadata = option1;\n\n if (typeof option2 === 'function') {\n callback = option2;\n } else {\n metadataStyles = option2;\n }\n }\n\n this.enter(fn, metadata, metadataStyles);\n (callback as () => void)();\n this.exit(fn);\n }\n}\n"],"names":["globalOrWindow","global","window","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","isError","messageOrError","Error","Logger","constructor","displayName","process","env","NODE_ENV","includes","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","context","logger","setContext","getContextObject","contextObject","extendsContext","extendedContext","undefined","Object","assign","addRecord","record","length","Level","ERROR","console","log","message","forEach","some","handle","metadata","INFO","options","isMessageError","name","extendedMetadata","prototype","hasOwnProperty","call","error","datetime","Date","extra","trace","metadataStyles","TRACE","debug","DEBUG","notice","NOTICE","info","warn","WARN","critical","CRITICAL","fatal","FATAL","alert","ALERT","inspectValue","inspectVar","success","infoSuccess","symbol","styles","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","option1","option2","callback"],"mappings":"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"}
|