nightingale 15.0.0 → 16.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.
Files changed (106) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +204 -57
  3. package/dist/definitions/config.d.ts +1 -1
  4. package/dist/definitions/debug/debug.d.ts +5 -0
  5. package/dist/definitions/debug/debug.d.ts.map +1 -0
  6. package/dist/definitions/debug/debug.test.d.ts +2 -0
  7. package/dist/definitions/debug/debug.test.d.ts.map +1 -0
  8. package/dist/definitions/formatter-utils/formatObject.d.ts +9 -0
  9. package/dist/definitions/formatter-utils/formatObject.d.ts.map +1 -0
  10. package/dist/definitions/formatter-utils/formatObject.test.d.ts +2 -0
  11. package/dist/definitions/formatter-utils/formatObject.test.d.ts.map +1 -0
  12. package/dist/definitions/formatter-utils/formatRecordToString.d.ts +4 -0
  13. package/dist/definitions/formatter-utils/formatRecordToString.d.ts.map +1 -0
  14. package/dist/definitions/formatter-utils/index.d.ts +15 -0
  15. package/dist/definitions/formatter-utils/index.d.ts.map +1 -0
  16. package/dist/definitions/formatter-utils/index.test.d.ts +2 -0
  17. package/dist/definitions/formatter-utils/index.test.d.ts.map +1 -0
  18. package/dist/definitions/formatter-utils/levelToStyles.d.ts +3 -0
  19. package/dist/definitions/formatter-utils/levelToStyles.d.ts.map +1 -0
  20. package/dist/definitions/formatter-utils/levelToSymbol.d.ts +3 -0
  21. package/dist/definitions/formatter-utils/levelToSymbol.d.ts.map +1 -0
  22. package/dist/definitions/formatter-utils/styleToHexColor.d.ts +7 -0
  23. package/dist/definitions/formatter-utils/styleToHexColor.d.ts.map +1 -0
  24. package/dist/definitions/formatter-utils/styleToHtmlStyle.d.ts +109 -0
  25. package/dist/definitions/formatter-utils/styleToHtmlStyle.d.ts.map +1 -0
  26. package/dist/definitions/formatters/ANSIFormatter.d.ts +6 -0
  27. package/dist/definitions/formatters/ANSIFormatter.d.ts.map +1 -0
  28. package/dist/definitions/formatters/ANSIFormatter.test.d.ts +2 -0
  29. package/dist/definitions/formatters/ANSIFormatter.test.d.ts.map +1 -0
  30. package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts +10 -0
  31. package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts.map +1 -0
  32. package/dist/definitions/formatters/BrowserConsoleFormatter.test.d.ts +2 -0
  33. package/dist/definitions/formatters/BrowserConsoleFormatter.test.d.ts.map +1 -0
  34. package/dist/definitions/formatters/HTMLFormatter.d.ts +5 -0
  35. package/dist/definitions/formatters/HTMLFormatter.d.ts.map +1 -0
  36. package/dist/definitions/formatters/HTMLFormatter.test.d.ts +2 -0
  37. package/dist/definitions/formatters/HTMLFormatter.test.d.ts.map +1 -0
  38. package/dist/definitions/formatters/JSONFormatter.d.ts +4 -0
  39. package/dist/definitions/formatters/JSONFormatter.d.ts.map +1 -0
  40. package/dist/definitions/formatters/JSONFormatter.test.d.ts +2 -0
  41. package/dist/definitions/formatters/JSONFormatter.test.d.ts.map +1 -0
  42. package/dist/definitions/formatters/MarkdownFormatter.d.ts +5 -0
  43. package/dist/definitions/formatters/MarkdownFormatter.d.ts.map +1 -0
  44. package/dist/definitions/formatters/MarkdownFormatter.test.d.ts +2 -0
  45. package/dist/definitions/formatters/MarkdownFormatter.test.d.ts.map +1 -0
  46. package/dist/definitions/formatters/RawFormatter.d.ts +5 -0
  47. package/dist/definitions/formatters/RawFormatter.d.ts.map +1 -0
  48. package/dist/definitions/formatters/RawFormatter.test.d.ts +2 -0
  49. package/dist/definitions/formatters/RawFormatter.test.d.ts.map +1 -0
  50. package/dist/definitions/handlers/BrowserConsoleHandler.d.ts +14 -0
  51. package/dist/definitions/handlers/BrowserConsoleHandler.d.ts.map +1 -0
  52. package/dist/definitions/handlers/ConsoleCLIHandler.d.ts +12 -0
  53. package/dist/definitions/handlers/ConsoleCLIHandler.d.ts.map +1 -0
  54. package/dist/definitions/handlers/ConsoleHandler.d.ts +14 -0
  55. package/dist/definitions/handlers/ConsoleHandler.d.ts.map +1 -0
  56. package/dist/definitions/handlers/StringHandler.d.ts +9 -0
  57. package/dist/definitions/handlers/StringHandler.d.ts.map +1 -0
  58. package/dist/definitions/index.d.ts +18 -4
  59. package/dist/definitions/index.d.ts.map +1 -1
  60. package/dist/definitions/loggers/LoggerCLI.d.ts +23 -0
  61. package/dist/definitions/loggers/LoggerCLI.d.ts.map +1 -0
  62. package/dist/definitions/outputs/cliConsoleOutput.d.ts +3 -0
  63. package/dist/definitions/outputs/cliConsoleOutput.d.ts.map +1 -0
  64. package/dist/definitions/outputs/consoleOutput.d.ts +3 -0
  65. package/dist/definitions/outputs/consoleOutput.d.ts.map +1 -0
  66. package/dist/index-browser.es.js +917 -17
  67. package/dist/index-browser.es.js.map +1 -1
  68. package/dist/index-node20.mjs +1023 -0
  69. package/dist/index-node20.mjs.map +1 -0
  70. package/package.json +31 -30
  71. package/src/config.ts +12 -12
  72. package/src/debug/debug.test.ts +50 -0
  73. package/src/debug/debug.ts +100 -0
  74. package/src/formatter-utils/formatObject.test.ts +153 -0
  75. package/src/formatter-utils/formatObject.ts +462 -0
  76. package/src/formatter-utils/formatRecordToString.ts +67 -0
  77. package/src/formatter-utils/index.test.ts +33 -0
  78. package/src/formatter-utils/index.ts +20 -0
  79. package/src/formatter-utils/levelToStyles.ts +14 -0
  80. package/src/formatter-utils/levelToSymbol.ts +14 -0
  81. package/src/formatter-utils/styleToHexColor.ts +9 -0
  82. package/src/formatter-utils/styleToHtmlStyle.ts +69 -0
  83. package/src/formatters/ANSIFormatter.test.ts +27 -0
  84. package/src/formatters/ANSIFormatter.ts +68 -0
  85. package/src/formatters/BrowserConsoleFormatter.test.ts +59 -0
  86. package/src/formatters/BrowserConsoleFormatter.ts +45 -0
  87. package/src/formatters/HTMLFormatter.test.ts +23 -0
  88. package/src/formatters/HTMLFormatter.ts +28 -0
  89. package/src/formatters/JSONFormatter.test.ts +62 -0
  90. package/src/formatters/JSONFormatter.ts +62 -0
  91. package/src/formatters/MarkdownFormatter.test.ts +19 -0
  92. package/src/formatters/MarkdownFormatter.ts +31 -0
  93. package/src/formatters/RawFormatter.test.ts +21 -0
  94. package/src/formatters/RawFormatter.ts +13 -0
  95. package/src/handlers/BrowserConsoleHandler.ts +78 -0
  96. package/src/handlers/ConsoleCLIHandler.ts +41 -0
  97. package/src/handlers/ConsoleHandler.ts +55 -0
  98. package/src/handlers/StringHandler.ts +21 -0
  99. package/src/index.test.ts +28 -28
  100. package/src/index.ts +24 -10
  101. package/src/loggers/LoggerCLI.ts +91 -0
  102. package/src/outputs/cliConsoleOutput.ts +17 -0
  103. package/src/outputs/consoleOutput.ts +18 -0
  104. package/dist/index-node18.mjs +0 -120
  105. package/dist/index-node18.mjs.map +0 -1
  106. package/src/.eslintrc.json +0 -30
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
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
+ ## [16.0.0](https://github.com/christophehurpeau/nightingale/compare/v15.0.0...v16.0.0) (2025-03-30)
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * drop node 18
11
+
12
+ ### Features
13
+
14
+ * add LoggerCLI ([f13942b](https://github.com/christophehurpeau/nightingale/commit/f13942baf4ec5582dadda8aafb719ee59ca92398))
15
+ * drop node 18 ([1b11a55](https://github.com/christophehurpeau/nightingale/commit/1b11a55dd24c9435be50519a748316079f554414))
16
+
17
+ Version bump for dependency: nightingale-levels
18
+ Version bump for dependency: nightingale-logger
19
+ Version bump for dependency: nightingale-types
20
+
21
+
6
22
  ## [15.0.0](https://github.com/christophehurpeau/nightingale/compare/v14.2.1...v15.0.0) (2023-12-25)
7
23
 
8
24
 
package/README.md CHANGED
@@ -1,16 +1,16 @@
1
- <h3 align="center">
1
+ <h1 align="center">
2
2
  nightingale
3
- </h3>
3
+ </h1>
4
4
 
5
5
  <p align="center">
6
6
  Logger for browser and node
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
- <a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/v/nightingale.svg?style=flat-square"></a>
11
- <a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/dw/nightingale.svg?style=flat-square"></a>
12
- <a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/node/v/nightingale.svg?style=flat-square"></a>
13
- <a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/types/nightingale.svg?style=flat-square"></a>
10
+ <a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/v/nightingale.svg?style=flat-square" alt="npm version"></a>
11
+ <a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/dw/nightingale.svg?style=flat-square" alt="npm downloads"></a>
12
+ <a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/node/v/nightingale.svg?style=flat-square" alt="node version"></a>
13
+ <a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/types/nightingale.svg?style=flat-square" alt="types"></a>
14
14
  <a href="https://codecov.io/gh/christophehurpeau/nightingale"><img src="https://img.shields.io/codecov/c/github/christophehurpeau/nightingale/master.svg?style=flat-square"></a>
15
15
  </p>
16
16
 
@@ -40,15 +40,14 @@ npm install --save nightingale nightingale-console
40
40
  ```
41
41
 
42
42
  ```js
43
- import Logger, { configure, Level } from 'nightingale';
44
- import ConsoleHandler from 'nightingale-console';
43
+ import { configure, Logger, Level, ConsoleHandler } from "nightingale";
45
44
 
46
45
  configure([
47
46
  {
48
47
  handlers: [new ConsoleHandler(Level.WARN)],
49
48
  },
50
49
  {
51
- keys: ['mylib', 'myotherlib'],
50
+ keys: ["mylib", "myotherlib"],
52
51
  handlers: [new ConsoleHandler(Level.ALL)],
53
52
  },
54
53
  {
@@ -63,12 +62,12 @@ configure([
63
62
  ]);
64
63
 
65
64
  // in one of your controllers
66
- const logger = new Logger('app.controllers');
67
- logger.debug('This is a log'); // will not be displayed
65
+ const logger = new Logger("app.controllers");
66
+ logger.debug("This is a log"); // will not be displayed
68
67
 
69
68
  // in your server.js file
70
- const logger = new Logger('app.server');
71
- logger.debug('This is a log'); // will be displayed
69
+ const logger = new Logger("app.server");
70
+ logger.debug("This is a log"); // will be displayed
72
71
  ```
73
72
 
74
73
  You can configure several handlers with different `Level`, like console, slack, sentry.
@@ -76,8 +75,8 @@ You can configure several handlers with different `Level`, like console, slack,
76
75
  Ensure the configure is always called before the first log! For example:
77
76
 
78
77
  ```js
79
- import './configure-logger';
80
- import './myApp';
78
+ import "./configure-logger";
79
+ import "./myApp";
81
80
  ```
82
81
 
83
82
  ### In a library
@@ -87,13 +86,13 @@ npm install --save nightingale-logger
87
86
  ```
88
87
 
89
88
  ```js
90
- import Logger from 'nightingale-logger';
89
+ import Logger from "nightingale-logger";
91
90
 
92
- const logger = new Logger('mylib');
91
+ const logger = new Logger("mylib");
93
92
 
94
- logger.info('This is a log');
95
- logger.warn('This is a warning !');
96
- logger.success('It works !');
93
+ logger.info("This is a log");
94
+ logger.warn("This is a warning !");
95
+ logger.success("It works !");
97
96
  ```
98
97
 
99
98
  ### In the browser
@@ -107,12 +106,12 @@ npm install --save nightingale nightingale-browser-console
107
106
  ![browser log example](https://static.hurpeau.com/images/npm/nightingale/log_in_firefox.png)
108
107
 
109
108
  ```js
110
- import { configure, levels } from 'nightingale';
111
- import { BrowserConsoleHandler } from 'nightingale-browser-console';
109
+ import { configure, levels } from "nightingale";
110
+ import { BrowserConsoleHandler } from "nightingale-browser-console";
112
111
 
113
112
  configure([
114
113
  {
115
- key: 'app',
114
+ key: "app",
116
115
  handlers: [new BrowserConsoleHandler(Level.INFO)],
117
116
  },
118
117
  ]);
@@ -140,65 +139,213 @@ Values are minimatch patterns and separated by `,`.
140
139
  ### Add information on a request
141
140
 
142
141
  ```js
143
- import Koa from 'koa';
144
- import Logger, { configure, Level } from 'nightingale';
145
- import { ConsoleHandler } from 'nightinale-console';
146
- import webProcessor from 'nightinale-web-processor';
142
+ import Koa from "koa";
143
+ import Logger, { configure, Level } from "nightingale";
144
+ import { ConsoleHandler } from "nightinale-console";
145
+ import webProcessor from "nightinale-web-processor";
147
146
 
148
147
  const app = new Koa();
149
- const logger = new Logger('app');
148
+ const logger = new Logger("app");
150
149
 
151
150
  configure([
152
151
  {
153
- key: 'app',
152
+ key: "app",
154
153
  handlers: [new ConsoleHandler(Level.ALL)],
155
154
  processors: [webProcessor],
156
155
  },
157
156
  ]);
158
157
 
159
158
  app.use(async (ctx) => {
160
- logger.info('something to log !', { context: ctx });
159
+ logger.info("something to log !", { context: ctx });
161
160
  });
162
161
 
163
162
  app.use(async (ctx) => {
164
- ctx.logger.info('something to log !', { context: ctx });
163
+ ctx.logger.info("something to log !", { context: ctx });
165
164
  });
166
165
  ```
167
166
 
168
- ## More info
169
-
170
- ### Handler
167
+ ## Handler
171
168
 
172
169
  How a log is processed: has a layout and an output.
173
170
  Also define a minimum level.
174
171
 
172
+ ### Included handlers
173
+
174
+ #### ConsoleHandler
175
+
176
+ Log using `console`.
177
+
178
+ ```js
179
+ import { configure, levels, ConsoleHandler } from "nightingale";
180
+
181
+ configure([
182
+ {
183
+ key: "app",
184
+ handlers: [new ConsoleHandler(Level.INFO)],
185
+ },
186
+ ]);
187
+ ```
188
+
189
+ **DEBUG**
190
+
191
+ `DEBUG=* node .`
192
+
193
+ ```js
194
+ DEBUG='*'; # debug everything
195
+ DEBUG=app # debug for logger with key 'app'
196
+ DEBUG=app:* # debug for logger with key 'app' and all its children
197
+ DEBUG=app,nightingale # debug for logger with key 'app' and 'nightingale'
198
+ DEBUG=/^app/ # debug for logger with key starting with 'app'
199
+ DEBUG=/^(app|nightingale$)/ # debug for logger with key starting with 'app' and key 'nightingale'
200
+ DEBUG='*,-app'; # debug everything except app
201
+ DEBUG='*,-app:*'; # debug everything except app and all its children
202
+ ```
203
+
204
+ **Use source maps to display error stack trace**
205
+
206
+ Since node 12.12.0, you can use `--enable-source-maps` while running node.
207
+
208
+ ![error with source maps](https://static.hurpeau.com/images/npm/nightingale/screenshot-errors-with-source-maps.png)
209
+
210
+ #### BrowserConsoleHandler
211
+
212
+ **Usage**
213
+
214
+ ```js
215
+ import { configure, levels } from "nightingale";
216
+ import { ConsoleHandler } from "nightingale-browser-console";
217
+
218
+ configure([{ handlers: [new ConsoleHandler(Level.INFO)] }]);
219
+ ```
220
+
221
+ **Theme**
222
+
223
+ If you have a dark console theme, you can set this config in your localStorage :
224
+
225
+ ```js
226
+ localStorage.NIGHTINGALE_THEME = "dark";
227
+ ```
228
+
229
+ You can also force this option:
230
+
231
+ ```js
232
+ import { ConsoleHandler } from "nightingale-browser-console";
233
+
234
+ configure([{ handlers: [new ConsoleHandler(Level.INFO, { theme: "dark" })] }]);
235
+ ```
236
+
237
+ **Debug with localStorage**
238
+
239
+ ```js
240
+ localStorage.debug = "*"; // debug everything
241
+ localStorage.debug = "app"; // debug for logger with key 'app'
242
+ localStorage.debug = "app,nightingale"; // debug for logger with key 'app' and 'nightingale'
243
+ localStorage.debug = "/^app/"; //debug for logger with key starting with 'app'
244
+ localStorage.debug = "/^(app|nightingale$)/"; // debug for logger with key starting with 'app' and key 'nightingale'
245
+ localStorage.debug = "*,-app"; // debug everything except app
246
+ localStorage.debug = "*,-app:*"; // debug everything except app and all its children
247
+ ```
248
+
249
+ **Debug with query, in the url**
250
+
251
+ ```js
252
+ ?DEBUG='*'; // debug everything
253
+ ?DEBUG=app // debug for logger with key 'app'
254
+ ?DEBUG=app,nightingale // debug for logger with key 'app' and 'nightingale'
255
+ ?DEBUG=/^app/ // debug for logger with key starting with 'app'
256
+ ?DEBUG=/^(app|nightingale$)/ // debug for logger with key starting with 'app' and key 'nightingale'
257
+ ?DEBUG=*,-app // debug everything except app
258
+ ?DEBUG=*,-app:* // debug everything except app and all its children
259
+ ```
260
+
261
+ **Use source maps to display error stack trace**
262
+
263
+ In production:
264
+
265
+ Send your log to an external tool like [sentry](https://sentry.io/). Sentry allows you to send the source maps after building (if you use webpack, you can use `hidden-source-map` to generate `.map` files, send them to sentry, and remove them so they are not accessible).
266
+
267
+ In development:
268
+
269
+ - Configure your build tool to generate sourcemaps. For webpack: use proper [`devtool` configuration](https://webpack.js.org/configuration/devtool/). For best stack trace, use `source-map` but it's the slowest option.
270
+ - Make sure your project uses [source-map-support](https://www.npmjs.com/package/source-map-support) or similar tool. If not, you can install and simply import `source-map-support/register`.
271
+
272
+ #### StringHandler
273
+
274
+ Useful for testing purposes
275
+
276
+ ```js
277
+ import { configure, levels, StringHandler } from "nightingale";
278
+ import { BrowserConsoleHandler } from "nightingale-browser-console";
279
+
280
+ const stringHandler = new StringHandler(Level.INFO);
281
+
282
+ configure([
283
+ {
284
+ key: "app",
285
+ handlers: [stringHandler],
286
+ },
287
+ ]);
288
+
289
+ console.log(stringHandler.string);
290
+ ```
291
+
292
+ ### More handlers
293
+
175
294
  You can find handlers [on npm](https://www.npmjs.com/search?q=nightingale-handler)
176
295
 
177
- - [ConsoleHandler](https://npmjs.org/package/nightingale-console)
178
- - [BrowserConsoleHandler](https://npmjs.org/package/nightingale-browser-console)
179
- - [StringHandler](https://npmjs.org/package/nightingale-string)
180
296
  - [SlackHandler](https://npmjs.org/package/nightingale-slack)
181
297
  - [ReactNativeConsoleHandler](https://npmjs.org/package/nightingale-react-native-console)
182
298
  - [WinstonAdapterHandler](https://npmjs.org/package/nightingale-winston-adapter)
183
299
 
184
300
  ### Formatter
185
301
 
186
- You can find formatters [on npm](https://www.npmjs.com/search?q=nightingale-formatter)
187
-
188
302
  How the record is formatted, with its colors.
189
303
 
304
+ ### Included formatters
305
+
306
+ #### Raw
307
+
308
+ ```js
309
+ import { RawFormatter } from "nightingale";
310
+
311
+ RawFormatter.format(record);
312
+ ```
313
+
314
+ #### Markdown
315
+
316
+ ```js
317
+ import { MarkdownFormatter } from "nightingale";
318
+
319
+ MarkdownFormatter.format(record);
320
+ ```
321
+
322
+ #### JSON
323
+
324
+ ```js
325
+ import { JSONFormatter } from "nightingale";
326
+
327
+ JSONFormatter.format(record);
328
+ ```
329
+
330
+ ### More formatters
331
+
332
+ You can find formatters [on npm](https://www.npmjs.com/search?q=nightingale-formatter)
333
+
190
334
  - [AnsiFormatter](https://npmjs.org/package/nightingale-ansi-formatter)
191
- - [JsonFormatter](https://npmjs.org/package/nightingale-json-formatter)
192
- - [MarkdownFormatter](https://npmjs.org/package/nightingale-markdown-formatter)
193
335
 
194
336
  ### Output
195
337
 
196
338
  Where the log is sent: console, file, ...
197
339
 
198
- You can find outputs [on npm](https://www.npmjs.com/search?q=nightingale-output)
340
+ ### Included handlers
341
+
342
+ #### consoleOutput
343
+
344
+ Output using `console.log/error` or `process.stdout/stderr`
199
345
 
200
- - [console](https://npmjs.org/package/nightingale-console-output)
201
- - [file](https://npmjs.org/package/nightingale-file-output)
346
+ ### More outputs
347
+
348
+ You can find outputs [on npm](https://www.npmjs.com/search?q=nightingale-output)
202
349
 
203
350
  ### Processor
204
351
 
@@ -207,7 +354,7 @@ Add extra data in the record
207
354
  ## Extends Logger
208
355
 
209
356
  ```js
210
- import { Logger } from 'nightingale';
357
+ import { Logger } from "nightingale";
211
358
 
212
359
  class MyCustomLogger extends Logger {
213
360
  myCustomMethod(message) {
@@ -215,14 +362,14 @@ class MyCustomLogger extends Logger {
215
362
  }
216
363
  }
217
364
 
218
- const logger = new MyCustomLogger('app');
365
+ const logger = new MyCustomLogger("app");
219
366
  ```
220
367
 
221
368
  ## Global processors
222
369
 
223
370
  ```js
224
- import { configure } from 'nightingale';
225
- import errorProcessor from './myErrorProcessor';
371
+ import { configure } from "nightingale";
372
+ import errorProcessor from "./myErrorProcessor";
226
373
 
227
374
  configure([{ processors: [errorProcessor] }]);
228
375
  ```
@@ -230,8 +377,8 @@ configure([{ processors: [errorProcessor] }]);
230
377
  ## Global handlers
231
378
 
232
379
  ```js
233
- import { addGlobalHandler, levels } from 'nightingale';
234
- import { SentryHandler } from 'nightingale-sentry';
380
+ import { addGlobalHandler, levels } from "nightingale";
381
+ import { SentryHandler } from "nightingale-sentry";
235
382
 
236
383
  configure([{ handlers: [new SentryHandler(Level.ERROR)] }]);
237
384
  ```
@@ -241,9 +388,9 @@ configure([{ handlers: [new SentryHandler(Level.ERROR)] }]);
241
388
  You can create children.
242
389
 
243
390
  ```js
244
- import { Logger } from 'nightingale';
245
- const loggerApp = new Logger('app');
246
- const loggerMyService = loggerApp.child('myService');
391
+ import { Logger } from "nightingale";
392
+ const loggerApp = new Logger("app");
393
+ const loggerMyService = loggerApp.child("myService");
247
394
  // loggerMyService key is `app.myService`
248
395
  ```
249
396
 
@@ -252,13 +399,13 @@ const loggerMyService = loggerApp.child('myService');
252
399
  You can use context to add data to each log.
253
400
 
254
401
  ```js
255
- import { Logger } from 'nightingale';
256
- const loggerMyService = new Logger('app.myService');
402
+ import { Logger } from "nightingale";
403
+ const loggerMyService = new Logger("app.myService");
257
404
 
258
405
  export function someAction(arg1) {
259
406
  const logger = loggerMyService.context({ arg1 });
260
- logger.info('starting');
407
+ logger.info("starting");
261
408
  // do stuff
262
- logger.info('done');
409
+ logger.info("done");
263
410
  }
264
411
  ```
@@ -1,4 +1,4 @@
1
- import type { Config } from 'nightingale-logger';
1
+ import type { Config } from "nightingale-logger";
2
2
  export declare function configure(config: Config[]): void;
3
3
  export declare function addConfig(config: Config, unshift?: boolean): void;
4
4
  //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1,5 @@
1
+ import { Level } from "nightingale-levels";
2
+ export type DebugValueType = RegExp | string[] | string;
3
+ export type FindDebugLevel = (minLevel: Level, key: string) => Level;
4
+ export declare function createFindDebugLevel(debugValue?: DebugValueType): FindDebugLevel;
5
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/debug/debug.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAK3C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;AAqBxD,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC;AAErE,wBAAgB,oBAAoB,CAClC,UAAU,CAAC,EAAE,cAAc,GAC1B,cAAc,CAoEhB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=debug.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.test.d.ts","sourceRoot":"","sources":["../../../src/debug/debug.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { Styles } from "nightingale-types";
2
+ export interface FormatObjectOptions {
3
+ padding?: string;
4
+ maxDepth?: number;
5
+ }
6
+ export type StyleFn = (styles: Styles, value: string) => string;
7
+ export type ObjectStyles<Keys extends string = string> = Record<Keys, Styles>;
8
+ export declare function formatObject(object: Record<string, unknown>, styleFn?: StyleFn, objectStyles?: ObjectStyles, { padding, maxDepth }?: FormatObjectOptions): string;
9
+ //# sourceMappingURL=formatObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatObject.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/formatObject.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAEhE,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AA4a9E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,OAAmB,EAC5B,YAAY,CAAC,EAAE,YAAY,EAC3B,EAAE,OAAc,EAAE,QAAa,EAAE,GAAE,mBAAwB,GAC1D,MAAM,CAkBR"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=formatObject.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatObject.test.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/formatObject.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { LogRecord, Metadata } from "nightingale-types";
2
+ import type { StyleFn } from "./formatObject";
3
+ export declare function formatRecordToString<T extends Metadata>(record: LogRecord<T>, style: StyleFn): string;
4
+ //# sourceMappingURL=formatRecordToString.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatRecordToString.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/formatRecordToString.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK5D,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EACrD,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,OAAO,GACb,MAAM,CAyDR"}
@@ -0,0 +1,15 @@
1
+ import type { LogRecord, Metadata } from "nightingale-types";
2
+ export { levelToStyles } from "./levelToStyles";
3
+ export { levelToSymbol } from "./levelToSymbol";
4
+ export { styleToHtmlStyleThemeDark, styleToHtmlStyleThemeLight, } from "./styleToHtmlStyle";
5
+ export type { StyleToHtmlStyle } from "./styleToHtmlStyle";
6
+ export { styleToHexColor } from "./styleToHexColor";
7
+ export { formatObject } from "./formatObject";
8
+ export { formatRecordToString } from "./formatRecordToString";
9
+ export interface NightingaleFormatter {
10
+ format: <T extends Metadata>(record: LogRecord<T>) => string;
11
+ }
12
+ export interface StringArrayNightingaleFormatter {
13
+ format: <T extends Metadata>(record: LogRecord<T>) => string[];
14
+ }
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;CAC9D;AAED,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;CAChE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export type LevelToStyles = Readonly<Record<number, string[]>>;
2
+ export declare const levelToStyles: LevelToStyles;
3
+ //# sourceMappingURL=levelToStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levelToStyles.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/levelToStyles.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAE/D,eAAO,MAAM,aAAa,EAAE,aAS3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type LevelToSymbol = Readonly<Record<number, string>>;
2
+ export declare const levelToSymbol: LevelToSymbol;
3
+ //# sourceMappingURL=levelToSymbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levelToSymbol.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/levelToSymbol.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7D,eAAO,MAAM,aAAa,EAAE,aAS3B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const styleToHexColor: {
2
+ readonly orange: "ff5f00";
3
+ readonly grayLight: "808080";
4
+ readonly "gray-light": "808080";
5
+ };
6
+ export type StyleToHexColor = Readonly<Record<keyof typeof styleToHexColor, string>>;
7
+ //# sourceMappingURL=styleToHexColor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleToHexColor.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/styleToHexColor.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,MAAM,CAAC,MAAM,OAAO,eAAe,EAAE,MAAM,CAAC,CAC7C,CAAC"}
@@ -0,0 +1,109 @@
1
+ export interface HtmlStyle {
2
+ readonly open: string;
3
+ readonly close: string;
4
+ }
5
+ export declare const styleToHtmlStyleThemeLight: {
6
+ readonly bold: {
7
+ readonly open: "font-weight: bold";
8
+ readonly close: "font-weight: normal";
9
+ };
10
+ readonly italic: {
11
+ readonly open: "font-style: italic";
12
+ readonly close: "font-style: normal";
13
+ };
14
+ readonly underline: {
15
+ readonly open: "text-decoration: underline";
16
+ readonly close: "text-decoration: none";
17
+ };
18
+ readonly inverse: {
19
+ readonly open: "unicode-bidi: bidi-override; direction: rtl";
20
+ readonly close: "unicode-bidi: normal; direction: ltr";
21
+ };
22
+ readonly strikethrough: {
23
+ readonly open: "text-decoration: line-through";
24
+ readonly close: "text-decoration: none";
25
+ };
26
+ readonly black: {
27
+ readonly open: "color: black";
28
+ readonly close: "color: currentcolor";
29
+ };
30
+ readonly red: {
31
+ readonly open: "color: #ff0020";
32
+ readonly close: "color: currentcolor";
33
+ };
34
+ readonly green: {
35
+ readonly open: "color: #00b317";
36
+ readonly close: "color: currentcolor";
37
+ };
38
+ readonly yellow: {
39
+ readonly open: "color: #ffcc00";
40
+ readonly close: "color: currentcolor";
41
+ };
42
+ readonly blue: {
43
+ readonly open: "color: #00a0ff";
44
+ readonly close: "color: currentcolor";
45
+ };
46
+ readonly magenta: {
47
+ readonly open: "color: #ff00a0";
48
+ readonly close: "color: currentcolor";
49
+ };
50
+ readonly cyan: {
51
+ readonly open: "color: #00cfd8";
52
+ readonly close: "color: currentcolor";
53
+ };
54
+ readonly white: {
55
+ readonly open: "color: white";
56
+ readonly close: "color: currentcolor";
57
+ };
58
+ readonly gray: {
59
+ readonly open: "color: gray";
60
+ readonly close: "color: currentcolor";
61
+ };
62
+ readonly bgBlack: {
63
+ readonly open: "background: black";
64
+ readonly close: "background: initial";
65
+ };
66
+ readonly bgRed: {
67
+ readonly open: "background: #ff0020";
68
+ readonly close: "background: initial";
69
+ };
70
+ readonly bgGreen: {
71
+ readonly open: "background: #00b317";
72
+ readonly close: "background: initial";
73
+ };
74
+ readonly bgYellow: {
75
+ readonly open: "background: #ffcc00";
76
+ readonly close: "background: initial";
77
+ };
78
+ readonly bgBlue: {
79
+ readonly open: "background: #00a0ff";
80
+ readonly close: "background: initial";
81
+ };
82
+ readonly bgMagenta: {
83
+ readonly open: "background: #ff00a0";
84
+ readonly close: "background: initial";
85
+ };
86
+ readonly bgCyan: {
87
+ readonly open: "background: #00cfd8";
88
+ readonly close: "background: initial";
89
+ };
90
+ readonly bgWhite: {
91
+ readonly open: "background: white";
92
+ readonly close: "background: initial";
93
+ };
94
+ readonly orange: {
95
+ readonly open: "color: #ff5f00";
96
+ readonly close: "color: currentcolor";
97
+ };
98
+ readonly grayLight: {
99
+ readonly open: "color: #808080";
100
+ readonly close: "color: currentcolor";
101
+ };
102
+ readonly "gray-light": {
103
+ readonly open: "color: #808080";
104
+ readonly close: "color: currentcolor";
105
+ };
106
+ };
107
+ export type StyleToHtmlStyle = Readonly<Record<keyof typeof styleToHtmlStyleThemeLight, HtmlStyle>>;
108
+ export declare const styleToHtmlStyleThemeDark: StyleToHtmlStyle;
109
+ //# sourceMappingURL=styleToHtmlStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleToHtmlStyle.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/styleToHtmlStyle.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD7B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CACrC,MAAM,CAAC,MAAM,OAAO,0BAA0B,EAAE,SAAS,CAAC,CAC3D,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,gBAOvC,CAAC"}