@splitsoftware/splitio-commons 2.6.1-rc.0 → 2.6.1-rc.1
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/CHANGES.txt +1 -1
- package/cjs/logger/index.js +29 -28
- package/cjs/utils/settingsValidation/logger/builtinLogger.js +2 -2
- package/cjs/utils/settingsValidation/logger/pluggableLogger.js +2 -2
- package/esm/logger/index.js +29 -28
- package/esm/utils/settingsValidation/logger/builtinLogger.js +2 -2
- package/esm/utils/settingsValidation/logger/pluggableLogger.js +2 -2
- package/package.json +1 -1
- package/src/logger/index.ts +27 -32
- package/src/logger/types.ts +0 -1
- package/src/utils/settingsValidation/logger/builtinLogger.ts +2 -2
- package/src/utils/settingsValidation/logger/pluggableLogger.ts +2 -2
- package/types/splitio.d.ts +4 -0
package/CHANGES.txt
CHANGED
package/cjs/logger/index.js
CHANGED
|
@@ -18,6 +18,12 @@ var LogLevelIndexes = {
|
|
|
18
18
|
ERROR: 4,
|
|
19
19
|
NONE: 5
|
|
20
20
|
};
|
|
21
|
+
var DEFAULT_LOGGER = {
|
|
22
|
+
debug: function (msg) { console.log('[DEBUG] ' + msg); },
|
|
23
|
+
info: function (msg) { console.log('[INFO] ' + msg); },
|
|
24
|
+
warn: function (msg) { console.log('[WARN] ' + msg); },
|
|
25
|
+
error: function (msg) { console.log('[ERROR] ' + msg); }
|
|
26
|
+
};
|
|
21
27
|
function isLogLevelString(str) {
|
|
22
28
|
return !!(0, lang_1.find)(exports.LogLevels, function (lvl) { return str === lvl; });
|
|
23
29
|
}
|
|
@@ -42,7 +48,6 @@ exports._sprintf = _sprintf;
|
|
|
42
48
|
var defaultOptions = {
|
|
43
49
|
prefix: 'splitio',
|
|
44
50
|
logLevel: exports.LogLevels.NONE,
|
|
45
|
-
showLevel: true,
|
|
46
51
|
};
|
|
47
52
|
var Logger = /** @class */ (function () {
|
|
48
53
|
function Logger(options, codes) {
|
|
@@ -55,31 +60,38 @@ var Logger = /** @class */ (function () {
|
|
|
55
60
|
this.logLevel = LogLevelIndexes[logLevel];
|
|
56
61
|
};
|
|
57
62
|
Logger.prototype.setLogger = function (logger) {
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
if (logger) {
|
|
64
|
+
if ((0, commons_1.isLogger)(logger)) {
|
|
65
|
+
this.logger = logger;
|
|
66
|
+
// If custom logger is set, all logs are either enabled or disabled
|
|
67
|
+
if (this.logLevel !== LogLevelIndexes.NONE)
|
|
68
|
+
this.setLogLevel(exports.LogLevels.DEBUG);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.error('Invalid `logger` instance. It must be an object with `debug`, `info`, `warn` and `error` methods. Defaulting to `console.log`');
|
|
73
|
+
}
|
|
64
74
|
}
|
|
75
|
+
// unset
|
|
76
|
+
this.logger = undefined;
|
|
65
77
|
};
|
|
66
78
|
Logger.prototype.debug = function (msg, args) {
|
|
67
79
|
if (this._shouldLog(LogLevelIndexes.DEBUG))
|
|
68
|
-
this._log(
|
|
80
|
+
this._log('debug', msg, args);
|
|
69
81
|
};
|
|
70
82
|
Logger.prototype.info = function (msg, args) {
|
|
71
83
|
if (this._shouldLog(LogLevelIndexes.INFO))
|
|
72
|
-
this._log(
|
|
84
|
+
this._log('info', msg, args);
|
|
73
85
|
};
|
|
74
86
|
Logger.prototype.warn = function (msg, args) {
|
|
75
87
|
if (this._shouldLog(LogLevelIndexes.WARN))
|
|
76
|
-
this._log(
|
|
88
|
+
this._log('warn', msg, args);
|
|
77
89
|
};
|
|
78
90
|
Logger.prototype.error = function (msg, args) {
|
|
79
91
|
if (this._shouldLog(LogLevelIndexes.ERROR))
|
|
80
|
-
this._log(
|
|
92
|
+
this._log('error', msg, args);
|
|
81
93
|
};
|
|
82
|
-
Logger.prototype._log = function (
|
|
94
|
+
Logger.prototype._log = function (method, msg, args) {
|
|
83
95
|
if (typeof msg === 'number') {
|
|
84
96
|
var format = this.codes.get(msg);
|
|
85
97
|
msg = format ? _sprintf(format, args) : "Message code " + msg + (args ? ', with args: ' + args.toString() : '');
|
|
@@ -88,27 +100,16 @@ var Logger = /** @class */ (function () {
|
|
|
88
100
|
if (args)
|
|
89
101
|
msg = _sprintf(msg, args);
|
|
90
102
|
}
|
|
91
|
-
|
|
92
|
-
|
|
103
|
+
if (this.options.prefix)
|
|
104
|
+
msg = this.options.prefix + ' => ' + msg;
|
|
93
105
|
if (this.logger) {
|
|
94
|
-
try {
|
|
95
|
-
this.logger[
|
|
106
|
+
try {
|
|
107
|
+
this.logger[method](msg);
|
|
96
108
|
return;
|
|
97
109
|
}
|
|
98
110
|
catch (e) { /* empty */ }
|
|
99
111
|
}
|
|
100
|
-
|
|
101
|
-
};
|
|
102
|
-
Logger.prototype._generateLogMessage = function (level, text) {
|
|
103
|
-
var textPre = ' => ';
|
|
104
|
-
var result = '';
|
|
105
|
-
if (this.options.showLevel) {
|
|
106
|
-
result += '[' + level + ']' + (level === exports.LogLevels.INFO || level === exports.LogLevels.WARN ? ' ' : '') + ' ';
|
|
107
|
-
}
|
|
108
|
-
if (this.options.prefix) {
|
|
109
|
-
result += this.options.prefix + textPre;
|
|
110
|
-
}
|
|
111
|
-
return result += text;
|
|
112
|
+
DEFAULT_LOGGER[method](msg);
|
|
112
113
|
};
|
|
113
114
|
Logger.prototype._shouldLog = function (level) {
|
|
114
115
|
return level >= this.logLevel;
|
|
@@ -39,9 +39,9 @@ function validateLogger(settings) {
|
|
|
39
39
|
var logLevel = debug !== undefined ? (0, commons_1.getLogLevel)(debug) : initialLogLevel;
|
|
40
40
|
var log = new logger_1.Logger({ logLevel: logLevel || initialLogLevel }, allCodes);
|
|
41
41
|
log.setLogger(logger);
|
|
42
|
-
//
|
|
42
|
+
// if logLevel is undefined at this point, it means that settings `debug` value is invalid
|
|
43
43
|
if (!logLevel)
|
|
44
|
-
log._log(
|
|
44
|
+
log._log('error', 'Invalid Log Level - No changes to the logs will be applied.');
|
|
45
45
|
return log;
|
|
46
46
|
}
|
|
47
47
|
exports.validateLogger = validateLogger;
|
|
@@ -27,9 +27,9 @@ function validateLogger(settings) {
|
|
|
27
27
|
}
|
|
28
28
|
var log = new logger_1.Logger({ logLevel: logLevel || initialLogLevel });
|
|
29
29
|
log.setLogger(logger);
|
|
30
|
-
//
|
|
30
|
+
// `debug` value is invalid if logLevel is undefined at this point
|
|
31
31
|
if (!logLevel)
|
|
32
|
-
log._log(
|
|
32
|
+
log._log('error', 'Invalid `debug` value at config. Logs will be disabled.');
|
|
33
33
|
return log;
|
|
34
34
|
}
|
|
35
35
|
exports.validateLogger = validateLogger;
|
package/esm/logger/index.js
CHANGED
|
@@ -15,6 +15,12 @@ var LogLevelIndexes = {
|
|
|
15
15
|
ERROR: 4,
|
|
16
16
|
NONE: 5
|
|
17
17
|
};
|
|
18
|
+
var DEFAULT_LOGGER = {
|
|
19
|
+
debug: function (msg) { console.log('[DEBUG] ' + msg); },
|
|
20
|
+
info: function (msg) { console.log('[INFO] ' + msg); },
|
|
21
|
+
warn: function (msg) { console.log('[WARN] ' + msg); },
|
|
22
|
+
error: function (msg) { console.log('[ERROR] ' + msg); }
|
|
23
|
+
};
|
|
18
24
|
export function isLogLevelString(str) {
|
|
19
25
|
return !!find(LogLevels, function (lvl) { return str === lvl; });
|
|
20
26
|
}
|
|
@@ -37,7 +43,6 @@ export function _sprintf(format, args) {
|
|
|
37
43
|
var defaultOptions = {
|
|
38
44
|
prefix: 'splitio',
|
|
39
45
|
logLevel: LogLevels.NONE,
|
|
40
|
-
showLevel: true,
|
|
41
46
|
};
|
|
42
47
|
var Logger = /** @class */ (function () {
|
|
43
48
|
function Logger(options, codes) {
|
|
@@ -50,31 +55,38 @@ var Logger = /** @class */ (function () {
|
|
|
50
55
|
this.logLevel = LogLevelIndexes[logLevel];
|
|
51
56
|
};
|
|
52
57
|
Logger.prototype.setLogger = function (logger) {
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
if (logger) {
|
|
59
|
+
if (isLogger(logger)) {
|
|
60
|
+
this.logger = logger;
|
|
61
|
+
// If custom logger is set, all logs are either enabled or disabled
|
|
62
|
+
if (this.logLevel !== LogLevelIndexes.NONE)
|
|
63
|
+
this.setLogLevel(LogLevels.DEBUG);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.error('Invalid `logger` instance. It must be an object with `debug`, `info`, `warn` and `error` methods. Defaulting to `console.log`');
|
|
68
|
+
}
|
|
59
69
|
}
|
|
70
|
+
// unset
|
|
71
|
+
this.logger = undefined;
|
|
60
72
|
};
|
|
61
73
|
Logger.prototype.debug = function (msg, args) {
|
|
62
74
|
if (this._shouldLog(LogLevelIndexes.DEBUG))
|
|
63
|
-
this._log(
|
|
75
|
+
this._log('debug', msg, args);
|
|
64
76
|
};
|
|
65
77
|
Logger.prototype.info = function (msg, args) {
|
|
66
78
|
if (this._shouldLog(LogLevelIndexes.INFO))
|
|
67
|
-
this._log(
|
|
79
|
+
this._log('info', msg, args);
|
|
68
80
|
};
|
|
69
81
|
Logger.prototype.warn = function (msg, args) {
|
|
70
82
|
if (this._shouldLog(LogLevelIndexes.WARN))
|
|
71
|
-
this._log(
|
|
83
|
+
this._log('warn', msg, args);
|
|
72
84
|
};
|
|
73
85
|
Logger.prototype.error = function (msg, args) {
|
|
74
86
|
if (this._shouldLog(LogLevelIndexes.ERROR))
|
|
75
|
-
this._log(
|
|
87
|
+
this._log('error', msg, args);
|
|
76
88
|
};
|
|
77
|
-
Logger.prototype._log = function (
|
|
89
|
+
Logger.prototype._log = function (method, msg, args) {
|
|
78
90
|
if (typeof msg === 'number') {
|
|
79
91
|
var format = this.codes.get(msg);
|
|
80
92
|
msg = format ? _sprintf(format, args) : "Message code " + msg + (args ? ', with args: ' + args.toString() : '');
|
|
@@ -83,27 +95,16 @@ var Logger = /** @class */ (function () {
|
|
|
83
95
|
if (args)
|
|
84
96
|
msg = _sprintf(msg, args);
|
|
85
97
|
}
|
|
86
|
-
|
|
87
|
-
|
|
98
|
+
if (this.options.prefix)
|
|
99
|
+
msg = this.options.prefix + ' => ' + msg;
|
|
88
100
|
if (this.logger) {
|
|
89
|
-
try {
|
|
90
|
-
this.logger[
|
|
101
|
+
try {
|
|
102
|
+
this.logger[method](msg);
|
|
91
103
|
return;
|
|
92
104
|
}
|
|
93
105
|
catch (e) { /* empty */ }
|
|
94
106
|
}
|
|
95
|
-
|
|
96
|
-
};
|
|
97
|
-
Logger.prototype._generateLogMessage = function (level, text) {
|
|
98
|
-
var textPre = ' => ';
|
|
99
|
-
var result = '';
|
|
100
|
-
if (this.options.showLevel) {
|
|
101
|
-
result += '[' + level + ']' + (level === LogLevels.INFO || level === LogLevels.WARN ? ' ' : '') + ' ';
|
|
102
|
-
}
|
|
103
|
-
if (this.options.prefix) {
|
|
104
|
-
result += this.options.prefix + textPre;
|
|
105
|
-
}
|
|
106
|
-
return result += text;
|
|
107
|
+
DEFAULT_LOGGER[method](msg);
|
|
107
108
|
};
|
|
108
109
|
Logger.prototype._shouldLog = function (level) {
|
|
109
110
|
return level >= this.logLevel;
|
|
@@ -36,8 +36,8 @@ export function validateLogger(settings) {
|
|
|
36
36
|
var logLevel = debug !== undefined ? getLogLevel(debug) : initialLogLevel;
|
|
37
37
|
var log = new Logger({ logLevel: logLevel || initialLogLevel }, allCodes);
|
|
38
38
|
log.setLogger(logger);
|
|
39
|
-
//
|
|
39
|
+
// if logLevel is undefined at this point, it means that settings `debug` value is invalid
|
|
40
40
|
if (!logLevel)
|
|
41
|
-
log._log(
|
|
41
|
+
log._log('error', 'Invalid Log Level - No changes to the logs will be applied.');
|
|
42
42
|
return log;
|
|
43
43
|
}
|
|
@@ -24,8 +24,8 @@ export function validateLogger(settings) {
|
|
|
24
24
|
}
|
|
25
25
|
var log = new Logger({ logLevel: logLevel || initialLogLevel });
|
|
26
26
|
log.setLogger(logger);
|
|
27
|
-
//
|
|
27
|
+
// `debug` value is invalid if logLevel is undefined at this point
|
|
28
28
|
if (!logLevel)
|
|
29
|
-
log._log(
|
|
29
|
+
log._log('error', 'Invalid `debug` value at config. Logs will be disabled.');
|
|
30
30
|
return log;
|
|
31
31
|
}
|
package/package.json
CHANGED
package/src/logger/index.ts
CHANGED
|
@@ -20,6 +20,13 @@ const LogLevelIndexes = {
|
|
|
20
20
|
NONE: 5
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
+
const DEFAULT_LOGGER: SplitIO.Logger = {
|
|
24
|
+
debug(msg) { console.log('[DEBUG] ' + msg); },
|
|
25
|
+
info(msg) { console.log('[INFO] ' + msg); },
|
|
26
|
+
warn(msg) { console.log('[WARN] ' + msg); },
|
|
27
|
+
error(msg) { console.log('[ERROR] ' + msg); }
|
|
28
|
+
};
|
|
29
|
+
|
|
23
30
|
export function isLogLevelString(str: string): str is SplitIO.LogLevel {
|
|
24
31
|
return !!find(LogLevels, (lvl: string) => str === lvl);
|
|
25
32
|
}
|
|
@@ -41,7 +48,6 @@ export function _sprintf(format: string = '', args: any[] = []): string {
|
|
|
41
48
|
const defaultOptions = {
|
|
42
49
|
prefix: 'splitio',
|
|
43
50
|
logLevel: LogLevels.NONE,
|
|
44
|
-
showLevel: true,
|
|
45
51
|
};
|
|
46
52
|
|
|
47
53
|
export class Logger implements ILogger {
|
|
@@ -63,31 +69,37 @@ export class Logger implements ILogger {
|
|
|
63
69
|
}
|
|
64
70
|
|
|
65
71
|
setLogger(logger?: SplitIO.Logger) {
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
if (logger) {
|
|
73
|
+
if (isLogger(logger)) {
|
|
74
|
+
this.logger = logger;
|
|
75
|
+
// If custom logger is set, all logs are either enabled or disabled
|
|
76
|
+
if (this.logLevel !== LogLevelIndexes.NONE) this.setLogLevel(LogLevels.DEBUG);
|
|
77
|
+
return;
|
|
78
|
+
} else {
|
|
79
|
+
this.error('Invalid `logger` instance. It must be an object with `debug`, `info`, `warn` and `error` methods. Defaulting to `console.log`');
|
|
80
|
+
}
|
|
71
81
|
}
|
|
82
|
+
// unset
|
|
83
|
+
this.logger = undefined;
|
|
72
84
|
}
|
|
73
85
|
|
|
74
86
|
debug(msg: string | number, args?: any[]) {
|
|
75
|
-
if (this._shouldLog(LogLevelIndexes.DEBUG)) this._log(
|
|
87
|
+
if (this._shouldLog(LogLevelIndexes.DEBUG)) this._log('debug', msg, args);
|
|
76
88
|
}
|
|
77
89
|
|
|
78
90
|
info(msg: string | number, args?: any[]) {
|
|
79
|
-
if (this._shouldLog(LogLevelIndexes.INFO)) this._log(
|
|
91
|
+
if (this._shouldLog(LogLevelIndexes.INFO)) this._log('info', msg, args);
|
|
80
92
|
}
|
|
81
93
|
|
|
82
94
|
warn(msg: string | number, args?: any[]) {
|
|
83
|
-
if (this._shouldLog(LogLevelIndexes.WARN)) this._log(
|
|
95
|
+
if (this._shouldLog(LogLevelIndexes.WARN)) this._log('warn', msg, args);
|
|
84
96
|
}
|
|
85
97
|
|
|
86
98
|
error(msg: string | number, args?: any[]) {
|
|
87
|
-
if (this._shouldLog(LogLevelIndexes.ERROR)) this._log(
|
|
99
|
+
if (this._shouldLog(LogLevelIndexes.ERROR)) this._log('error', msg, args);
|
|
88
100
|
}
|
|
89
101
|
|
|
90
|
-
|
|
102
|
+
_log(method: keyof SplitIO.Logger, msg: string | number, args?: any[]) {
|
|
91
103
|
if (typeof msg === 'number') {
|
|
92
104
|
const format = this.codes.get(msg);
|
|
93
105
|
msg = format ? _sprintf(format, args) : `Message code ${msg}${args ? ', with args: ' + args.toString() : ''}`;
|
|
@@ -95,32 +107,15 @@ export class Logger implements ILogger {
|
|
|
95
107
|
if (args) msg = _sprintf(msg, args);
|
|
96
108
|
}
|
|
97
109
|
|
|
98
|
-
|
|
110
|
+
if (this.options.prefix) msg = this.options.prefix + ' => ' + msg;
|
|
99
111
|
|
|
100
|
-
// Do not break on custom logger errors
|
|
101
112
|
if (this.logger) {
|
|
102
|
-
try {
|
|
103
|
-
this.logger[
|
|
113
|
+
try {
|
|
114
|
+
this.logger[method](msg);
|
|
104
115
|
return;
|
|
105
116
|
} catch (e) { /* empty */ }
|
|
106
117
|
}
|
|
107
|
-
|
|
108
|
-
console.log(formattedText);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
private _generateLogMessage(level: SplitIO.LogLevel, text: string) {
|
|
112
|
-
const textPre = ' => ';
|
|
113
|
-
let result = '';
|
|
114
|
-
|
|
115
|
-
if (this.options.showLevel) {
|
|
116
|
-
result += '[' + level + ']' + (level === LogLevels.INFO || level === LogLevels.WARN ? ' ' : '') + ' ';
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (this.options.prefix) {
|
|
120
|
-
result += this.options.prefix + textPre;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return result += text;
|
|
118
|
+
DEFAULT_LOGGER[method](msg);
|
|
124
119
|
}
|
|
125
120
|
|
|
126
121
|
private _shouldLog(level: number) {
|
package/src/logger/types.ts
CHANGED
|
@@ -3,7 +3,6 @@ import SplitIO from '../../types/splitio';
|
|
|
3
3
|
export interface ILoggerOptions {
|
|
4
4
|
prefix?: string;
|
|
5
5
|
logLevel?: SplitIO.LogLevel;
|
|
6
|
-
showLevel?: boolean; // @TODO remove this param eventually since it is not being set `false` anymore
|
|
7
6
|
}
|
|
8
7
|
|
|
9
8
|
export interface ILogger extends SplitIO.ILogger {
|
|
@@ -48,8 +48,8 @@ export function validateLogger(settings: { debug: unknown, logger?: SplitIO.Logg
|
|
|
48
48
|
const log = new Logger({ logLevel: logLevel || initialLogLevel }, allCodes);
|
|
49
49
|
log.setLogger(logger);
|
|
50
50
|
|
|
51
|
-
//
|
|
52
|
-
if (!logLevel) log._log(
|
|
51
|
+
// if logLevel is undefined at this point, it means that settings `debug` value is invalid
|
|
52
|
+
if (!logLevel) log._log('error', 'Invalid Log Level - No changes to the logs will be applied.');
|
|
53
53
|
|
|
54
54
|
return log;
|
|
55
55
|
}
|
|
@@ -32,8 +32,8 @@ export function validateLogger(settings: { debug: unknown, logger?: SplitIO.Logg
|
|
|
32
32
|
const log = new Logger({ logLevel: logLevel || initialLogLevel });
|
|
33
33
|
log.setLogger(logger);
|
|
34
34
|
|
|
35
|
-
//
|
|
36
|
-
if (!logLevel) log._log(
|
|
35
|
+
// `debug` value is invalid if logLevel is undefined at this point
|
|
36
|
+
if (!logLevel) log._log('error', 'Invalid `debug` value at config. Logs will be disabled.');
|
|
37
37
|
|
|
38
38
|
return log;
|
|
39
39
|
}
|
package/types/splitio.d.ts
CHANGED
|
@@ -145,6 +145,8 @@ interface IPluggableSharedSettings {
|
|
|
145
145
|
* config.debug = ErrorLogger()
|
|
146
146
|
* ```
|
|
147
147
|
*
|
|
148
|
+
* When combined with the `logger` option, any log level other than `NONE` (false) will be set to `DEBUG` (true), delegating log level control to the custom logger.
|
|
149
|
+
*
|
|
148
150
|
* @defaultValue `false`
|
|
149
151
|
*/
|
|
150
152
|
debug?: boolean | SplitIO.LogLevel | SplitIO.ILogger;
|
|
@@ -168,6 +170,8 @@ interface INonPluggableSharedSettings {
|
|
|
168
170
|
* config.debug = 'WARN'
|
|
169
171
|
* ```
|
|
170
172
|
*
|
|
173
|
+
* When combined with the `logger` option, any log level other than `NONE` (false) will be set to `DEBUG` (true), delegating log level control to the custom logger.
|
|
174
|
+
*
|
|
171
175
|
* @defaultValue `false`
|
|
172
176
|
*/
|
|
173
177
|
debug?: boolean | SplitIO.LogLevel;
|