1 | /**
|
2 | * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
3 | * For licensing, see LICENSE.md.
|
4 | */
|
5 |
|
6 | ;
|
7 |
|
8 | const chalk = require( 'chalk' );
|
9 | const levels = new Map();
|
10 |
|
11 | // Displays everything.
|
12 | levels.set( 'info', new Set( [ 'info' ] ) );
|
13 |
|
14 | // Displays warning and error logs.
|
15 | levels.set( 'warning', new Set( [ 'info', 'warning' ] ) );
|
16 |
|
17 | // Displays error logs only.
|
18 | levels.set( 'error', new Set( [ 'info', 'warning', 'error' ] ) );
|
19 |
|
20 | /**
|
21 | * Logger module which allows configuring the verbosity level.
|
22 | *
|
23 | * There are three levels of verbosity:
|
24 | * 1. `info` - all messages will be logged,
|
25 | * 2. `warning` - warning and errors will be logged,
|
26 | * 3. `error` - only errors will be logged.
|
27 | *
|
28 | * Usage:
|
29 | *
|
30 | * const logger = require( '@ckeditor/ckeditor5-dev-utils' ).logger;
|
31 | *
|
32 | * const infoLog = logger( 'info' );
|
33 | * infoLog.info( 'Message.' ); // This message will be always displayed.
|
34 | * infoLog.warning( 'Message.' ); // This message will be always displayed.
|
35 | * infoLog.error( 'Message.' ); // This message will be always displayed.
|
36 | *
|
37 | * const warningLog = logger( 'warning' );
|
38 | * warningLog.info( 'Message.' ); // This message won't be displayed.
|
39 | * warningLog.warning( 'Message.' ); // This message will be always displayed.
|
40 | * warningLog.error( 'Message.' ); // This message will be always displayed.
|
41 | *
|
42 | * const errorLog = logger( 'error' );
|
43 | * errorLog.info( 'Message.' ); // This message won't be displayed.
|
44 | * errorLog.warning( 'Message.' ); // This message won't be displayed.
|
45 | * errorLog.error( 'Message.' ); // This message will be always displayed.
|
46 | *
|
47 | * @param {String} moduleVerbosity='info' Level of the verbosity for all log methods.
|
48 | * @returns {Object} logger
|
49 | * @returns {Function} logger.info
|
50 | * @returns {Function} logger.warning
|
51 | * @returns {Function} logger.error
|
52 | */
|
53 | module.exports = ( moduleVerbosity = 'info' ) => {
|
54 | return {
|
55 | /**
|
56 | * Displays a message when verbosity level is equal to 'info'.
|
57 | *
|
58 | * @param {String} message Message to log.
|
59 | */
|
60 | info( message ) {
|
61 | this._log( 'info', message );
|
62 | },
|
63 |
|
64 | /**
|
65 | * Displays a warning message when verbosity level is equal to 'info' or 'warning'.
|
66 | *
|
67 | * @param {String} message Message to log.
|
68 | */
|
69 | warning( message ) {
|
70 | this._log( 'warning', chalk.yellow( message ) );
|
71 | },
|
72 |
|
73 | /**
|
74 | * Displays an error message.
|
75 | *
|
76 | * @param {String} message Message to log.
|
77 | */
|
78 | error( message ) {
|
79 | this._log( 'error', chalk.red( message ) );
|
80 | },
|
81 |
|
82 | /**
|
83 | * @private
|
84 | * @param {String} messageVerbosity Verbosity of particular message.
|
85 | * @param {String} message Message to log.
|
86 | */
|
87 | _log( messageVerbosity, message ) {
|
88 | if ( !levels.get( messageVerbosity ).has( moduleVerbosity ) ) {
|
89 | return;
|
90 | }
|
91 |
|
92 | console.log( message );
|
93 | }
|
94 | };
|
95 | };
|