@webex/plugin-logger 3.0.0-beta.4 → 3.0.0-beta.400
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/dist/config.js +1 -5
- package/dist/config.js.map +1 -1
- package/dist/index.js +1 -13
- package/dist/index.js.map +1 -1
- package/dist/logger.js +53 -78
- package/dist/logger.js.map +1 -1
- package/package.json +7 -7
- package/src/config.js +2 -2
- package/src/index.js +2 -5
- package/src/logger.js +80 -44
- package/test/unit/spec/logger.js +340 -96
package/dist/config.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
|
|
9
7
|
exports.default = void 0;
|
|
10
|
-
|
|
11
8
|
/*!
|
|
12
9
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
13
10
|
*/
|
|
14
|
-
|
|
15
11
|
/**
|
|
16
12
|
* @typedef {Object} LoggerConfig
|
|
17
13
|
* @property {string} [level=process.env.WEBEX_LOG_LEVEL] - Maximum log level that
|
|
@@ -27,7 +23,7 @@ exports.default = void 0;
|
|
|
27
23
|
var _default = {
|
|
28
24
|
logger: {
|
|
29
25
|
level: process.env.WEBEX_LOG_LEVEL,
|
|
30
|
-
historyLength:
|
|
26
|
+
historyLength: 10000
|
|
31
27
|
}
|
|
32
28
|
};
|
|
33
29
|
exports.default = _default;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["logger","level","process","env","WEBEX_LOG_LEVEL","historyLength"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/**\n * @typedef {Object} LoggerConfig\n * @property {string} [level=process.env.WEBEX_LOG_LEVEL] - Maximum log level that\n * should be printed to the console. One of\n * silent|error|warn|log|info|debug|trace\n * @property {number} [historyLength=1000] - Maximum number of entries to store in the log buffer.\n * @example\n * {\n * level: process.env.WEBEX_LOG_LEVEL,\n * historyLength: 1000\n * }\n */\n\nexport default {\n logger: {\n level: process.env.WEBEX_LOG_LEVEL,\n historyLength:
|
|
1
|
+
{"version":3,"names":["logger","level","process","env","WEBEX_LOG_LEVEL","historyLength"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/**\n * @typedef {Object} LoggerConfig\n * @property {string} [level=process.env.WEBEX_LOG_LEVEL] - Maximum log level that\n * should be printed to the console. One of\n * silent|error|warn|log|info|debug|trace\n * @property {number} [historyLength=1000] - Maximum number of entries to store in the log buffer.\n * @example\n * {\n * level: process.env.WEBEX_LOG_LEVEL,\n * historyLength: 1000\n * }\n */\n\nexport default {\n logger: {\n level: process.env.WEBEX_LOG_LEVEL,\n historyLength: 10000,\n },\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA,eAae;EACbA,MAAM,EAAE;IACNC,KAAK,EAAEC,OAAO,CAACC,GAAG,CAACC,eAAe;IAClCC,aAAa,EAAE;EACjB;AACF,CAAC;AAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,46 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
|
|
4
|
-
|
|
5
4
|
var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
|
|
6
|
-
|
|
7
5
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
8
|
-
|
|
9
6
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
10
|
-
|
|
11
7
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
12
|
-
|
|
13
8
|
_Object$defineProperty(exports, "__esModule", {
|
|
14
9
|
value: true
|
|
15
10
|
});
|
|
16
|
-
|
|
17
11
|
_Object$defineProperty(exports, "default", {
|
|
18
12
|
enumerable: true,
|
|
19
13
|
get: function get() {
|
|
20
14
|
return _logger.default;
|
|
21
15
|
}
|
|
22
16
|
});
|
|
23
|
-
|
|
24
17
|
_Object$defineProperty(exports, "levels", {
|
|
25
18
|
enumerable: true,
|
|
26
19
|
get: function get() {
|
|
27
20
|
return _logger.levels;
|
|
28
21
|
}
|
|
29
22
|
});
|
|
30
|
-
|
|
31
23
|
var _webexCore = require("@webex/webex-core");
|
|
32
|
-
|
|
33
24
|
var _logger = _interopRequireWildcard(require("./logger"));
|
|
34
|
-
|
|
35
25
|
var _config = _interopRequireDefault(require("./config"));
|
|
36
|
-
|
|
37
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
38
|
-
|
|
39
27
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
40
|
-
|
|
41
28
|
/*!
|
|
42
29
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
43
30
|
*/
|
|
31
|
+
|
|
44
32
|
(0, _webexCore.registerPlugin)('logger', _logger.default, {
|
|
45
33
|
config: _config.default,
|
|
46
34
|
replace: true
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["registerPlugin","Logger","config","replace"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Logger from './logger';\nimport config from './config';\n\nregisterPlugin('logger', Logger, {\n config,\n replace: true
|
|
1
|
+
{"version":3,"names":["registerPlugin","Logger","config","replace"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Logger from './logger';\nimport config from './config';\n\nregisterPlugin('logger', Logger, {\n config,\n replace: true,\n});\n\nexport {default, levels} from './logger';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA;AAEA;AACA;AAA8B;AAAA;AAP9B;AACA;AACA;;AAOA,IAAAA,yBAAc,EAAC,QAAQ,EAAEC,eAAM,EAAE;EAC/BC,MAAM,EAANA,eAAM;EACNC,OAAO,EAAE;AACX,CAAC,CAAC"}
|
package/dist/logger.js
CHANGED
|
@@ -1,42 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.levels = exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
14
|
-
|
|
15
10
|
var _entries = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/entries"));
|
|
16
|
-
|
|
17
11
|
var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
|
|
18
|
-
|
|
12
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
13
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
|
|
19
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
|
|
20
|
-
|
|
21
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
|
|
22
|
-
|
|
23
16
|
var _isString2 = _interopRequireDefault(require("lodash/isString"));
|
|
24
|
-
|
|
25
17
|
var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
|
|
26
|
-
|
|
27
18
|
var _isArray2 = _interopRequireDefault(require("lodash/isArray"));
|
|
28
|
-
|
|
29
19
|
var _has2 = _interopRequireDefault(require("lodash/has"));
|
|
30
|
-
|
|
31
20
|
var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
32
|
-
|
|
33
21
|
var _common = require("@webex/common");
|
|
34
|
-
|
|
35
22
|
var _webexCore = require("@webex/webex-core");
|
|
36
|
-
|
|
37
23
|
/*!
|
|
38
24
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
39
25
|
*/
|
|
26
|
+
|
|
40
27
|
var precedence = {
|
|
41
28
|
silent: 0,
|
|
42
29
|
group: 1,
|
|
@@ -65,6 +52,7 @@ var LOG_TYPES = {
|
|
|
65
52
|
};
|
|
66
53
|
var SDK_LOG_TYPE_NAME = 'wx-js-sdk';
|
|
67
54
|
var authTokenKeyPattern = /[Aa]uthorization/;
|
|
55
|
+
|
|
68
56
|
/**
|
|
69
57
|
* Recursively strips "authorization" fields from the specified object
|
|
70
58
|
* @param {Object} object
|
|
@@ -72,52 +60,45 @@ var authTokenKeyPattern = /[Aa]uthorization/;
|
|
|
72
60
|
* @private
|
|
73
61
|
* @returns {Object}
|
|
74
62
|
*/
|
|
75
|
-
|
|
76
63
|
function walkAndFilter(object) {
|
|
77
64
|
var visited = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
78
|
-
|
|
79
65
|
if (visited.includes(object)) {
|
|
80
66
|
// Prevent circular references
|
|
81
67
|
return object;
|
|
82
68
|
}
|
|
83
|
-
|
|
84
69
|
visited.push(object);
|
|
85
|
-
|
|
86
70
|
if ((0, _isArray2.default)(object)) {
|
|
87
71
|
return object.map(function (o) {
|
|
88
72
|
return walkAndFilter(o, visited);
|
|
89
73
|
});
|
|
90
74
|
}
|
|
91
|
-
|
|
92
75
|
if (!(0, _isObject2.default)(object)) {
|
|
93
76
|
if ((0, _isString2.default)(object)) {
|
|
94
77
|
if (_common.patterns.containsEmails.test(object)) {
|
|
95
78
|
return object.replace(_common.patterns.containsEmails, '[REDACTED]');
|
|
96
79
|
}
|
|
80
|
+
if (_common.patterns.containsMTID.test(object)) {
|
|
81
|
+
return object.replace(_common.patterns.containsMTID, '$1[REDACTED]');
|
|
82
|
+
}
|
|
97
83
|
}
|
|
98
|
-
|
|
99
84
|
return object;
|
|
100
85
|
}
|
|
101
|
-
|
|
102
86
|
for (var _i = 0, _Object$entries = (0, _entries.default)(object); _i < _Object$entries.length; _i++) {
|
|
103
87
|
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
88
|
+
key = _Object$entries$_i[0],
|
|
89
|
+
value = _Object$entries$_i[1];
|
|
107
90
|
if (authTokenKeyPattern.test(key)) {
|
|
108
91
|
(0, _deleteProperty.default)(object, key);
|
|
109
92
|
} else {
|
|
110
93
|
object[key] = walkAndFilter(value, visited);
|
|
111
94
|
}
|
|
112
95
|
}
|
|
113
|
-
|
|
114
96
|
return object;
|
|
115
97
|
}
|
|
98
|
+
|
|
116
99
|
/**
|
|
117
100
|
* @class
|
|
118
101
|
*/
|
|
119
|
-
|
|
120
|
-
|
|
121
102
|
var Logger = _webexCore.WebexPlugin.extend({
|
|
122
103
|
namespace: 'Logger',
|
|
123
104
|
derived: {
|
|
@@ -162,7 +143,6 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
162
143
|
}
|
|
163
144
|
}
|
|
164
145
|
},
|
|
165
|
-
|
|
166
146
|
/**
|
|
167
147
|
* Ensures auth headers don't get printed in logs
|
|
168
148
|
* @param {Array<mixed>} args
|
|
@@ -171,10 +151,9 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
171
151
|
* @returns {Array<mixed>}
|
|
172
152
|
*/
|
|
173
153
|
filter: function filter() {
|
|
174
|
-
for (var _len = arguments.length, args = new Array(_len),
|
|
175
|
-
args[
|
|
154
|
+
for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
|
|
155
|
+
args[_key2] = arguments[_key2];
|
|
176
156
|
}
|
|
177
|
-
|
|
178
157
|
return args.map(function (arg) {
|
|
179
158
|
// WebexHttpError already ensures auth tokens don't get printed, so, no
|
|
180
159
|
// need to alter it here.
|
|
@@ -188,15 +167,12 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
188
167
|
ret += 'END STACK';
|
|
189
168
|
return ret;
|
|
190
169
|
}
|
|
191
|
-
|
|
192
170
|
return arg;
|
|
193
171
|
}
|
|
194
|
-
|
|
195
172
|
arg = (0, _cloneDeep2.default)(arg);
|
|
196
173
|
return walkAndFilter(arg);
|
|
197
174
|
});
|
|
198
175
|
},
|
|
199
|
-
|
|
200
176
|
/**
|
|
201
177
|
* Determines if the current level allows logs at the specified level to be
|
|
202
178
|
* printed
|
|
@@ -210,7 +186,6 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
210
186
|
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : LOG_TYPES.SDK;
|
|
211
187
|
return precedence[level] <= precedence[type === LOG_TYPES.SDK ? this.getCurrentLevel() : this.getCurrentClientLevel()];
|
|
212
188
|
},
|
|
213
|
-
|
|
214
189
|
/**
|
|
215
190
|
* Determines if the current level allows logs at the specified level to be
|
|
216
191
|
* put into the log buffer. We're configuring it omit trace and debug logs
|
|
@@ -226,7 +201,6 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
226
201
|
shouldBuffer: function shouldBuffer(level) {
|
|
227
202
|
return precedence[level] <= (this.config.bufferLogLevel ? precedence[this.config.bufferLogLevel] : precedence.info);
|
|
228
203
|
},
|
|
229
|
-
|
|
230
204
|
/**
|
|
231
205
|
* Indicates the current SDK log level based on env vars, feature toggles, and
|
|
232
206
|
* user type.
|
|
@@ -242,28 +216,24 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
242
216
|
if (this.config.level) {
|
|
243
217
|
return this.config.level;
|
|
244
218
|
}
|
|
245
|
-
|
|
246
219
|
if (levels.includes(process.env.WEBEX_LOG_LEVEL)) {
|
|
247
220
|
return process.env.WEBEX_LOG_LEVEL;
|
|
248
|
-
}
|
|
249
|
-
|
|
221
|
+
}
|
|
250
222
|
|
|
223
|
+
// Always use debug-level logging in test mode;
|
|
251
224
|
if (process.env.NODE_ENV === 'test') {
|
|
252
225
|
return 'trace';
|
|
253
|
-
}
|
|
254
|
-
|
|
226
|
+
}
|
|
255
227
|
|
|
228
|
+
// Use server-side-feature toggles to configure log levels
|
|
256
229
|
var level = this.webex.internal.device && this.webex.internal.device.features.developer.get('log-level');
|
|
257
|
-
|
|
258
230
|
if (level) {
|
|
259
231
|
if (levels.includes(level)) {
|
|
260
232
|
return level;
|
|
261
233
|
}
|
|
262
234
|
}
|
|
263
|
-
|
|
264
235
|
return 'error';
|
|
265
236
|
},
|
|
266
|
-
|
|
267
237
|
/**
|
|
268
238
|
* Indicates the current client log level based on config, defaults to SDK level
|
|
269
239
|
* @instance
|
|
@@ -276,12 +246,11 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
276
246
|
// If a client log level has been explicitly set via config, alway use it.
|
|
277
247
|
if (this.config.clientLevel) {
|
|
278
248
|
return this.config.clientLevel;
|
|
279
|
-
}
|
|
280
|
-
|
|
249
|
+
}
|
|
281
250
|
|
|
251
|
+
// otherwise default to SDK level
|
|
282
252
|
return this.getCurrentLevel();
|
|
283
253
|
},
|
|
284
|
-
|
|
285
254
|
/**
|
|
286
255
|
* Format logs (for upload)
|
|
287
256
|
*
|
|
@@ -297,22 +266,22 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
297
266
|
function getDate(log) {
|
|
298
267
|
return log[1];
|
|
299
268
|
}
|
|
300
|
-
|
|
301
269
|
var buffer = [];
|
|
302
270
|
var clientIndex = 0;
|
|
303
271
|
var sdkIndex = 0;
|
|
304
|
-
|
|
305
272
|
if (this.config.separateLogBuffers) {
|
|
306
273
|
// merge the client and sdk buffers
|
|
307
274
|
// while we have entries in either buffer
|
|
308
275
|
while (clientIndex < this.clientBuffer.length || sdkIndex < this.sdkBuffer.length) {
|
|
309
276
|
// if we have remaining entries in the SDK buffer
|
|
310
|
-
if (sdkIndex < this.sdkBuffer.length && (
|
|
277
|
+
if (sdkIndex < this.sdkBuffer.length && (
|
|
278
|
+
// and we haven't exhausted all the client buffer entries, or SDK date is before client date
|
|
311
279
|
clientIndex >= this.clientBuffer.length || new Date(getDate(this.sdkBuffer[sdkIndex])) <= new Date(getDate(this.clientBuffer[clientIndex])))) {
|
|
312
280
|
// then add to the SDK buffer
|
|
313
281
|
buffer.push(this.sdkBuffer[sdkIndex]);
|
|
314
282
|
sdkIndex += 1;
|
|
315
|
-
}
|
|
283
|
+
}
|
|
284
|
+
// otherwise if we haven't exhausted all the client buffer entries, add client entry, whether it was because
|
|
316
285
|
// it was the only remaining entries or date was later (the above if)
|
|
317
286
|
else if (clientIndex < this.clientBuffer.length) {
|
|
318
287
|
buffer.push(this.clientBuffer[clientIndex]);
|
|
@@ -322,11 +291,11 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
322
291
|
} else {
|
|
323
292
|
buffer = this.buffer;
|
|
324
293
|
}
|
|
325
|
-
|
|
326
294
|
return buffer.join('\n');
|
|
327
295
|
},
|
|
328
|
-
version: "3.0.0-beta.
|
|
296
|
+
version: "3.0.0-beta.400"
|
|
329
297
|
});
|
|
298
|
+
|
|
330
299
|
/**
|
|
331
300
|
* Creates a logger method
|
|
332
301
|
*
|
|
@@ -342,8 +311,6 @@ var Logger = _webexCore.WebexPlugin.extend({
|
|
|
342
311
|
* @memberof Logger
|
|
343
312
|
* @returns {function} logger method with specified params
|
|
344
313
|
*/
|
|
345
|
-
|
|
346
|
-
|
|
347
314
|
function makeLoggerMethod(level, impl, type) {
|
|
348
315
|
var neverPrint = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
349
316
|
var alwaysBuffer = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
@@ -357,7 +324,6 @@ function makeLoggerMethod(level, impl, type) {
|
|
|
357
324
|
var clientName = logType === LOG_TYPES.SDK ? SDK_LOG_TYPE_NAME : this.config.clientName || logType;
|
|
358
325
|
var buffer;
|
|
359
326
|
var historyLength;
|
|
360
|
-
|
|
361
327
|
if (this.config.separateLogBuffers) {
|
|
362
328
|
historyLength = this.config.clientHistoryLength ? this.config.clientHistoryLength : this.config.historyLength;
|
|
363
329
|
buffer = logType === LOG_TYPES.SDK ? this.sdkBuffer : this.clientBuffer;
|
|
@@ -365,52 +331,63 @@ function makeLoggerMethod(level, impl, type) {
|
|
|
365
331
|
buffer = this.buffer;
|
|
366
332
|
historyLength = this.config.historyLength;
|
|
367
333
|
}
|
|
368
|
-
|
|
369
334
|
try {
|
|
370
335
|
var shouldPrint = !neverPrint && this.shouldPrint(level, logType);
|
|
371
336
|
var shouldBuffer = alwaysBuffer || this.shouldBuffer(level);
|
|
372
|
-
|
|
373
337
|
if (!shouldBuffer && !shouldPrint) {
|
|
374
338
|
return;
|
|
375
339
|
}
|
|
376
|
-
|
|
377
340
|
var filtered = [clientName].concat((0, _toConsumableArray2.default)(this.filter.apply(this, arguments)));
|
|
378
341
|
var stringified = filtered.map(function (item) {
|
|
379
342
|
if (item instanceof _webexCore.WebexHttpError) {
|
|
380
343
|
return item.toString();
|
|
381
344
|
}
|
|
382
|
-
|
|
345
|
+
if ((0, _typeof2.default)(item) === 'object') {
|
|
346
|
+
var cache = [];
|
|
347
|
+
var returnItem;
|
|
348
|
+
try {
|
|
349
|
+
returnItem = (0, _stringify.default)(item, function (_key, value) {
|
|
350
|
+
if ((0, _typeof2.default)(value) === 'object' && value !== null) {
|
|
351
|
+
if (cache.includes(value)) {
|
|
352
|
+
// Circular reference found, discard key
|
|
353
|
+
return undefined;
|
|
354
|
+
}
|
|
355
|
+
// Store value in our collection
|
|
356
|
+
cache.push(value);
|
|
357
|
+
}
|
|
358
|
+
return value;
|
|
359
|
+
});
|
|
360
|
+
} catch (e) {
|
|
361
|
+
returnItem = "Failed to stringify: ".concat(item);
|
|
362
|
+
}
|
|
363
|
+
cache = null;
|
|
364
|
+
return returnItem;
|
|
365
|
+
}
|
|
383
366
|
return item;
|
|
384
367
|
});
|
|
385
|
-
|
|
386
368
|
if (shouldPrint) {
|
|
387
369
|
var _console;
|
|
388
|
-
|
|
389
370
|
// when logging an object in browsers, we tend to get a dynamic
|
|
390
371
|
// reference, thus going back to look at the logged value doesn't
|
|
391
372
|
// necessarily show the state at log time, thus we print the stringified
|
|
392
373
|
// value.
|
|
393
374
|
var toPrint = _common.inBrowser ? stringified : filtered;
|
|
394
|
-
/* istanbul ignore if */
|
|
395
375
|
|
|
376
|
+
/* istanbul ignore if */
|
|
396
377
|
if (process.env.NODE_ENV === 'test' && (0, _has2.default)(this, 'webex.internal.device.url')) {
|
|
397
378
|
toPrint.unshift(this.webex.internal.device.url.slice(-3));
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
|
|
379
|
+
}
|
|
380
|
+
// eslint-disable-next-line no-console
|
|
401
381
|
(_console = console)[impl].apply(_console, (0, _toConsumableArray2.default)(toPrint));
|
|
402
382
|
}
|
|
403
|
-
|
|
404
383
|
if (shouldBuffer) {
|
|
405
384
|
var logDate = new Date();
|
|
406
385
|
stringified.unshift(logDate.toISOString());
|
|
407
386
|
stringified.unshift('| '.repeat(this.groupLevel));
|
|
408
387
|
buffer.push(stringified);
|
|
409
|
-
|
|
410
388
|
if (buffer.length > historyLength) {
|
|
411
|
-
buffer.
|
|
389
|
+
buffer.splice(0, buffer.length - historyLength);
|
|
412
390
|
}
|
|
413
|
-
|
|
414
391
|
if (level === 'group') this.groupLevel += 1;
|
|
415
392
|
if (level === 'groupEnd' && this.groupLevel > 0) this.groupLevel -= 1;
|
|
416
393
|
}
|
|
@@ -423,20 +400,18 @@ function makeLoggerMethod(level, impl, type) {
|
|
|
423
400
|
}
|
|
424
401
|
};
|
|
425
402
|
}
|
|
426
|
-
|
|
427
403
|
levels.forEach(function (level) {
|
|
428
404
|
var impls = fallbacks[level];
|
|
429
405
|
var impl = level;
|
|
430
|
-
|
|
431
406
|
if (impls) {
|
|
432
|
-
impls = impls.slice();
|
|
433
|
-
|
|
407
|
+
impls = impls.slice();
|
|
408
|
+
// eslint-disable-next-line no-console
|
|
434
409
|
while (!console[impl]) {
|
|
435
410
|
impl = impls.pop();
|
|
436
411
|
}
|
|
437
|
-
}
|
|
438
|
-
|
|
412
|
+
}
|
|
439
413
|
|
|
414
|
+
// eslint-disable-next-line complexity
|
|
440
415
|
Logger.prototype["client_".concat(level)] = makeLoggerMethod(level, impl, LOG_TYPES.CLIENT);
|
|
441
416
|
Logger.prototype[level] = makeLoggerMethod(level, impl, LOG_TYPES.SDK);
|
|
442
417
|
});
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["precedence","silent","group","groupEnd","error","warn","log","info","debug","trace","levels","filter","level","fallbacks","LOG_TYPES","SDK","CLIENT","SDK_LOG_TYPE_NAME","authTokenKeyPattern","walkAndFilter","object","visited","includes","push","map","o","patterns","containsEmails","test","replace","key","value","Logger","WebexPlugin","extend","namespace","derived","cache","fn","getCurrentLevel","client_level","getCurrentClientLevel","session","buffer","type","default","groupLevel","sdkBuffer","clientBuffer","args","arg","Error","process","env","NODE_ENV","inBrowser","ret","toString","stack","shouldPrint","shouldBuffer","config","bufferLogLevel","WEBEX_LOG_LEVEL","webex","internal","device","features","developer","get","clientLevel","formatLogs","getDate","clientIndex","sdkIndex","separateLogBuffers","length","Date","join","makeLoggerMethod","impl","neverPrint","alwaysBuffer","wrappedConsoleMethod","logType","clientName","historyLength","clientHistoryLength","filtered","stringified","item","WebexHttpError","toPrint","unshift","url","slice","console","logDate","toISOString","repeat","shift","reason","forEach","impls","pop","prototype","client_logToBuffer","logToBuffer"],"sources":["logger.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {inBrowser, patterns} from '@webex/common';\nimport {\n WebexHttpError,\n WebexPlugin\n} from '@webex/webex-core';\nimport {\n cloneDeep,\n has,\n isArray,\n isObject,\n isString\n} from 'lodash';\n\nconst precedence = {\n silent: 0,\n group: 1,\n groupEnd: 2,\n error: 3,\n warn: 4,\n log: 5,\n info: 6,\n debug: 7,\n trace: 8\n};\n\nexport const levels = Object.keys(precedence).filter((level) => level !== 'silent');\n\nconst fallbacks = {\n error: ['log'],\n warn: ['error', 'log'],\n info: ['log'],\n debug: ['info', 'log'],\n trace: ['debug', 'info', 'log']\n};\n\nconst LOG_TYPES = {\n SDK: 'sdk',\n CLIENT: 'client'\n};\n\nconst SDK_LOG_TYPE_NAME = 'wx-js-sdk';\n\nconst authTokenKeyPattern = /[Aa]uthorization/;\n\n/**\n * Recursively strips \"authorization\" fields from the specified object\n * @param {Object} object\n * @param {Array<mixed>} [visited]\n * @private\n * @returns {Object}\n */\nfunction walkAndFilter(object, visited = []) {\n if (visited.includes(object)) {\n // Prevent circular references\n return object;\n }\n\n visited.push(object);\n\n if (isArray(object)) {\n return object.map((o) => walkAndFilter(o, visited));\n }\n if (!isObject(object)) {\n if (isString(object)) {\n if (patterns.containsEmails.test(object)) {\n return object.replace(patterns.containsEmails, '[REDACTED]');\n }\n }\n\n return object;\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (authTokenKeyPattern.test(key)) {\n Reflect.deleteProperty(object, key);\n }\n else {\n object[key] = walkAndFilter(value, visited);\n }\n }\n\n return object;\n}\n\n/**\n * @class\n */\nconst Logger = WebexPlugin.extend({\n namespace: 'Logger',\n\n derived: {\n level: {\n cache: false,\n fn() {\n return this.getCurrentLevel();\n }\n },\n client_level: {\n cache: false,\n fn() {\n return this.getCurrentClientLevel();\n }\n }\n },\n session: {\n // for when configured to use single buffer\n buffer: {\n type: 'array',\n default() {\n return [];\n }\n },\n groupLevel: {\n type: 'number',\n default() {\n return 0;\n }\n },\n // for when configured to use separate buffers\n sdkBuffer: {\n type: 'array',\n default() {\n return [];\n }\n },\n clientBuffer: {\n type: 'array',\n default() {\n return [];\n }\n }\n },\n\n /**\n * Ensures auth headers don't get printed in logs\n * @param {Array<mixed>} args\n * @private\n * @memberof Logger\n * @returns {Array<mixed>}\n */\n filter(...args) {\n return args.map((arg) => {\n // WebexHttpError already ensures auth tokens don't get printed, so, no\n // need to alter it here.\n if (arg instanceof Error) {\n // karma logs won't print subclassed errors correctly, so we need\n // explicitly call their tostring methods.\n if (process.env.NODE_ENV === 'test' && inBrowser) {\n let ret = arg.toString();\n\n ret += 'BEGIN STACK';\n ret += arg.stack;\n ret += 'END STACK';\n\n return ret;\n }\n\n return arg;\n }\n\n arg = cloneDeep(arg);\n\n return walkAndFilter(arg);\n });\n },\n\n /**\n * Determines if the current level allows logs at the specified level to be\n * printed\n * @param {string} level\n * @param {string} type type of log, SDK or client\n * @private\n * @memberof Logger\n * @returns {boolean}\n */\n shouldPrint(level, type = LOG_TYPES.SDK) {\n return precedence[level] <= precedence[type === LOG_TYPES.SDK ? this.getCurrentLevel() : this.getCurrentClientLevel()];\n },\n\n /**\n * Determines if the current level allows logs at the specified level to be\n * put into the log buffer. We're configuring it omit trace and debug logs\n * because there are *a lot* of debug logs that really don't provide value at\n * runtime (they're helpful for debugging locally, but really just pollute the\n * uploaded logs and push useful info out).\n * @param {string} level\n * @param {string} type type of log, SDK or client\n * @private\n * @memberof Logger\n * @returns {boolean}\n */\n shouldBuffer(level) {\n return precedence[level] <= (this.config.bufferLogLevel ? precedence[this.config.bufferLogLevel] : precedence.info);\n },\n\n /**\n * Indicates the current SDK log level based on env vars, feature toggles, and\n * user type.\n * @instance\n * @memberof Logger\n * @private\n * @memberof Logger\n * @returns {string}\n */\n // eslint-disable-next-line complexity\n getCurrentLevel() {\n // If a level has been explicitly set via config, alway use it.\n if (this.config.level) {\n return this.config.level;\n }\n\n if (levels.includes(process.env.WEBEX_LOG_LEVEL)) {\n return process.env.WEBEX_LOG_LEVEL;\n }\n\n // Always use debug-level logging in test mode;\n if (process.env.NODE_ENV === 'test') {\n return 'trace';\n }\n\n // Use server-side-feature toggles to configure log levels\n const level = this.webex.internal.device && this.webex.internal.device.features.developer.get('log-level');\n\n if (level) {\n if (levels.includes(level)) {\n return level;\n }\n }\n\n return 'error';\n },\n\n /**\n * Indicates the current client log level based on config, defaults to SDK level\n * @instance\n * @memberof Logger\n * @private\n * @memberof Logger\n * @returns {string}\n */\n getCurrentClientLevel() {\n // If a client log level has been explicitly set via config, alway use it.\n if (this.config.clientLevel) {\n return this.config.clientLevel;\n }\n\n // otherwise default to SDK level\n return this.getCurrentLevel();\n },\n\n /**\n * Format logs (for upload)\n *\n * If separate client, SDK buffers is configured, merge the buffers, if configured\n *\n * @instance\n * @memberof Logger\n * @public\n * @memberof Logger\n * @returns {string} formatted buffer\n */\n formatLogs() {\n function getDate(log) {\n return log[1];\n }\n let buffer = [];\n let clientIndex = 0;\n let sdkIndex = 0;\n\n if (this.config.separateLogBuffers) {\n // merge the client and sdk buffers\n // while we have entries in either buffer\n while (clientIndex < this.clientBuffer.length || sdkIndex < this.sdkBuffer.length) {\n // if we have remaining entries in the SDK buffer\n if (sdkIndex < this.sdkBuffer.length &&\n // and we haven't exhausted all the client buffer entries, or SDK date is before client date\n (clientIndex >= this.clientBuffer.length ||\n (new Date(getDate(this.sdkBuffer[sdkIndex])) <= new Date(getDate(this.clientBuffer[clientIndex]))))) {\n // then add to the SDK buffer\n buffer.push(this.sdkBuffer[sdkIndex]);\n sdkIndex += 1;\n }\n // otherwise if we haven't exhausted all the client buffer entries, add client entry, whether it was because\n // it was the only remaining entries or date was later (the above if)\n else if (clientIndex < this.clientBuffer.length) {\n buffer.push(this.clientBuffer[clientIndex]);\n clientIndex += 1;\n }\n }\n }\n else {\n buffer = this.buffer;\n }\n\n return buffer.join('\\n');\n }\n});\n\n/**\n * Creates a logger method\n *\n *\n * @param {string} level level to create (info, error, warn, etc.)\n * @param {string} impl the level to use when writing to console\n * @param {string} type type of log, SDK or client\n * @param {bool} neverPrint function never prints to console\n * @param {bool} alwaysBuffer function always logs to log buffer\n * @instance\n * @memberof Logger\n * @private\n * @memberof Logger\n * @returns {function} logger method with specified params\n */\nfunction makeLoggerMethod(level, impl, type, neverPrint = false, alwaysBuffer = false) {\n // Much of the complexity in the following function is due to a test-mode-only\n // helper\n return function wrappedConsoleMethod(...args) {\n // it would be easier to just pass in the name and buffer here, but the config isn't completely initialized\n // in Ampersand, even if the initialize method is used to set this up. so we keep the type to achieve\n // a sort of late binding to allow retrieving a name from config.\n const logType = type;\n const clientName = logType === LOG_TYPES.SDK ? SDK_LOG_TYPE_NAME : (this.config.clientName || logType);\n\n let buffer;\n let historyLength;\n\n if (this.config.separateLogBuffers) {\n historyLength = this.config.clientHistoryLength ? this.config.clientHistoryLength : this.config.historyLength;\n buffer = logType === LOG_TYPES.SDK ? this.sdkBuffer : this.clientBuffer;\n }\n else {\n buffer = this.buffer;\n historyLength = this.config.historyLength;\n }\n\n try {\n const shouldPrint = !neverPrint && this.shouldPrint(level, logType);\n const shouldBuffer = alwaysBuffer || this.shouldBuffer(level);\n\n if (!shouldBuffer && !shouldPrint) {\n return;\n }\n\n const filtered = [clientName, ...this.filter(...args)];\n const stringified = filtered.map((item) => {\n if (item instanceof WebexHttpError) {\n return item.toString();\n }\n\n return item;\n });\n\n if (shouldPrint) {\n // when logging an object in browsers, we tend to get a dynamic\n // reference, thus going back to look at the logged value doesn't\n // necessarily show the state at log time, thus we print the stringified\n // value.\n const toPrint = inBrowser ? stringified : filtered;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'test' && has(this, 'webex.internal.device.url')) {\n toPrint.unshift(this.webex.internal.device.url.slice(-3));\n }\n // eslint-disable-next-line no-console\n console[impl](...toPrint);\n }\n\n if (shouldBuffer) {\n const logDate = new Date();\n\n stringified.unshift(logDate.toISOString());\n stringified.unshift('| '.repeat(this.groupLevel));\n buffer.push(stringified);\n if (buffer.length > historyLength) {\n buffer.shift();\n }\n if (level === 'group') this.groupLevel += 1;\n if (level === 'groupEnd' && this.groupLevel > 0) this.groupLevel -= 1;\n }\n }\n catch (reason) {\n if (!neverPrint) {\n /* istanbul ignore next */\n // eslint-disable-next-line no-console\n console.warn(`failed to execute Logger#${level}`, reason);\n }\n }\n };\n}\n\nlevels.forEach((level) => {\n let impls = fallbacks[level];\n let impl = level;\n\n if (impls) {\n impls = impls.slice();\n // eslint-disable-next-line no-console\n while (!console[impl]) {\n impl = impls.pop();\n }\n }\n\n\n // eslint-disable-next-line complexity\n Logger.prototype[`client_${level}`] = makeLoggerMethod(level, impl, LOG_TYPES.CLIENT);\n Logger.prototype[level] = makeLoggerMethod(level, impl, LOG_TYPES.SDK);\n});\n\nLogger.prototype.client_logToBuffer =\n makeLoggerMethod(levels.info, levels.info, LOG_TYPES.CLIENT, true, true);\nLogger.prototype.logToBuffer = makeLoggerMethod(levels.info, levels.info, LOG_TYPES.SDK, true, true);\n\nexport default Logger;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["precedence","silent","group","groupEnd","error","warn","log","info","debug","trace","levels","filter","level","fallbacks","LOG_TYPES","SDK","CLIENT","SDK_LOG_TYPE_NAME","authTokenKeyPattern","walkAndFilter","object","visited","includes","push","map","o","patterns","containsEmails","test","replace","containsMTID","key","value","Logger","WebexPlugin","extend","namespace","derived","cache","fn","getCurrentLevel","client_level","getCurrentClientLevel","session","buffer","type","default","groupLevel","sdkBuffer","clientBuffer","args","arg","Error","process","env","NODE_ENV","inBrowser","ret","toString","stack","shouldPrint","shouldBuffer","config","bufferLogLevel","WEBEX_LOG_LEVEL","webex","internal","device","features","developer","get","clientLevel","formatLogs","getDate","clientIndex","sdkIndex","separateLogBuffers","length","Date","join","makeLoggerMethod","impl","neverPrint","alwaysBuffer","wrappedConsoleMethod","logType","clientName","historyLength","clientHistoryLength","filtered","stringified","item","WebexHttpError","returnItem","_key","undefined","e","toPrint","unshift","url","slice","console","logDate","toISOString","repeat","splice","reason","forEach","impls","pop","prototype","client_logToBuffer","logToBuffer"],"sources":["logger.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {inBrowser, patterns} from '@webex/common';\nimport {WebexHttpError, WebexPlugin} from '@webex/webex-core';\nimport {cloneDeep, has, isArray, isObject, isString} from 'lodash';\n\nconst precedence = {\n silent: 0,\n group: 1,\n groupEnd: 2,\n error: 3,\n warn: 4,\n log: 5,\n info: 6,\n debug: 7,\n trace: 8,\n};\n\nexport const levels = Object.keys(precedence).filter((level) => level !== 'silent');\n\nconst fallbacks = {\n error: ['log'],\n warn: ['error', 'log'],\n info: ['log'],\n debug: ['info', 'log'],\n trace: ['debug', 'info', 'log'],\n};\n\nconst LOG_TYPES = {\n SDK: 'sdk',\n CLIENT: 'client',\n};\n\nconst SDK_LOG_TYPE_NAME = 'wx-js-sdk';\n\nconst authTokenKeyPattern = /[Aa]uthorization/;\n\n/**\n * Recursively strips \"authorization\" fields from the specified object\n * @param {Object} object\n * @param {Array<mixed>} [visited]\n * @private\n * @returns {Object}\n */\nfunction walkAndFilter(object, visited = []) {\n if (visited.includes(object)) {\n // Prevent circular references\n return object;\n }\n\n visited.push(object);\n\n if (isArray(object)) {\n return object.map((o) => walkAndFilter(o, visited));\n }\n if (!isObject(object)) {\n if (isString(object)) {\n if (patterns.containsEmails.test(object)) {\n return object.replace(patterns.containsEmails, '[REDACTED]');\n }\n if (patterns.containsMTID.test(object)) {\n return object.replace(patterns.containsMTID, '$1[REDACTED]');\n }\n }\n\n return object;\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (authTokenKeyPattern.test(key)) {\n Reflect.deleteProperty(object, key);\n } else {\n object[key] = walkAndFilter(value, visited);\n }\n }\n\n return object;\n}\n\n/**\n * @class\n */\nconst Logger = WebexPlugin.extend({\n namespace: 'Logger',\n\n derived: {\n level: {\n cache: false,\n fn() {\n return this.getCurrentLevel();\n },\n },\n client_level: {\n cache: false,\n fn() {\n return this.getCurrentClientLevel();\n },\n },\n },\n session: {\n // for when configured to use single buffer\n buffer: {\n type: 'array',\n default() {\n return [];\n },\n },\n groupLevel: {\n type: 'number',\n default() {\n return 0;\n },\n },\n // for when configured to use separate buffers\n sdkBuffer: {\n type: 'array',\n default() {\n return [];\n },\n },\n clientBuffer: {\n type: 'array',\n default() {\n return [];\n },\n },\n },\n\n /**\n * Ensures auth headers don't get printed in logs\n * @param {Array<mixed>} args\n * @private\n * @memberof Logger\n * @returns {Array<mixed>}\n */\n filter(...args) {\n return args.map((arg) => {\n // WebexHttpError already ensures auth tokens don't get printed, so, no\n // need to alter it here.\n if (arg instanceof Error) {\n // karma logs won't print subclassed errors correctly, so we need\n // explicitly call their tostring methods.\n if (process.env.NODE_ENV === 'test' && inBrowser) {\n let ret = arg.toString();\n\n ret += 'BEGIN STACK';\n ret += arg.stack;\n ret += 'END STACK';\n\n return ret;\n }\n\n return arg;\n }\n\n arg = cloneDeep(arg);\n\n return walkAndFilter(arg);\n });\n },\n\n /**\n * Determines if the current level allows logs at the specified level to be\n * printed\n * @param {string} level\n * @param {string} type type of log, SDK or client\n * @private\n * @memberof Logger\n * @returns {boolean}\n */\n shouldPrint(level, type = LOG_TYPES.SDK) {\n return (\n precedence[level] <=\n precedence[type === LOG_TYPES.SDK ? this.getCurrentLevel() : this.getCurrentClientLevel()]\n );\n },\n\n /**\n * Determines if the current level allows logs at the specified level to be\n * put into the log buffer. We're configuring it omit trace and debug logs\n * because there are *a lot* of debug logs that really don't provide value at\n * runtime (they're helpful for debugging locally, but really just pollute the\n * uploaded logs and push useful info out).\n * @param {string} level\n * @param {string} type type of log, SDK or client\n * @private\n * @memberof Logger\n * @returns {boolean}\n */\n shouldBuffer(level) {\n return (\n precedence[level] <=\n (this.config.bufferLogLevel ? precedence[this.config.bufferLogLevel] : precedence.info)\n );\n },\n\n /**\n * Indicates the current SDK log level based on env vars, feature toggles, and\n * user type.\n * @instance\n * @memberof Logger\n * @private\n * @memberof Logger\n * @returns {string}\n */\n // eslint-disable-next-line complexity\n getCurrentLevel() {\n // If a level has been explicitly set via config, alway use it.\n if (this.config.level) {\n return this.config.level;\n }\n\n if (levels.includes(process.env.WEBEX_LOG_LEVEL)) {\n return process.env.WEBEX_LOG_LEVEL;\n }\n\n // Always use debug-level logging in test mode;\n if (process.env.NODE_ENV === 'test') {\n return 'trace';\n }\n\n // Use server-side-feature toggles to configure log levels\n const level =\n this.webex.internal.device && this.webex.internal.device.features.developer.get('log-level');\n\n if (level) {\n if (levels.includes(level)) {\n return level;\n }\n }\n\n return 'error';\n },\n\n /**\n * Indicates the current client log level based on config, defaults to SDK level\n * @instance\n * @memberof Logger\n * @private\n * @memberof Logger\n * @returns {string}\n */\n getCurrentClientLevel() {\n // If a client log level has been explicitly set via config, alway use it.\n if (this.config.clientLevel) {\n return this.config.clientLevel;\n }\n\n // otherwise default to SDK level\n return this.getCurrentLevel();\n },\n\n /**\n * Format logs (for upload)\n *\n * If separate client, SDK buffers is configured, merge the buffers, if configured\n *\n * @instance\n * @memberof Logger\n * @public\n * @memberof Logger\n * @returns {string} formatted buffer\n */\n formatLogs() {\n function getDate(log) {\n return log[1];\n }\n let buffer = [];\n let clientIndex = 0;\n let sdkIndex = 0;\n\n if (this.config.separateLogBuffers) {\n // merge the client and sdk buffers\n // while we have entries in either buffer\n while (clientIndex < this.clientBuffer.length || sdkIndex < this.sdkBuffer.length) {\n // if we have remaining entries in the SDK buffer\n if (\n sdkIndex < this.sdkBuffer.length &&\n // and we haven't exhausted all the client buffer entries, or SDK date is before client date\n (clientIndex >= this.clientBuffer.length ||\n new Date(getDate(this.sdkBuffer[sdkIndex])) <=\n new Date(getDate(this.clientBuffer[clientIndex])))\n ) {\n // then add to the SDK buffer\n buffer.push(this.sdkBuffer[sdkIndex]);\n sdkIndex += 1;\n }\n // otherwise if we haven't exhausted all the client buffer entries, add client entry, whether it was because\n // it was the only remaining entries or date was later (the above if)\n else if (clientIndex < this.clientBuffer.length) {\n buffer.push(this.clientBuffer[clientIndex]);\n clientIndex += 1;\n }\n }\n } else {\n buffer = this.buffer;\n }\n\n return buffer.join('\\n');\n },\n});\n\n/**\n * Creates a logger method\n *\n *\n * @param {string} level level to create (info, error, warn, etc.)\n * @param {string} impl the level to use when writing to console\n * @param {string} type type of log, SDK or client\n * @param {bool} neverPrint function never prints to console\n * @param {bool} alwaysBuffer function always logs to log buffer\n * @instance\n * @memberof Logger\n * @private\n * @memberof Logger\n * @returns {function} logger method with specified params\n */\nfunction makeLoggerMethod(level, impl, type, neverPrint = false, alwaysBuffer = false) {\n // Much of the complexity in the following function is due to a test-mode-only\n // helper\n return function wrappedConsoleMethod(...args) {\n // it would be easier to just pass in the name and buffer here, but the config isn't completely initialized\n // in Ampersand, even if the initialize method is used to set this up. so we keep the type to achieve\n // a sort of late binding to allow retrieving a name from config.\n const logType = type;\n const clientName =\n logType === LOG_TYPES.SDK ? SDK_LOG_TYPE_NAME : this.config.clientName || logType;\n\n let buffer;\n let historyLength;\n\n if (this.config.separateLogBuffers) {\n historyLength = this.config.clientHistoryLength\n ? this.config.clientHistoryLength\n : this.config.historyLength;\n buffer = logType === LOG_TYPES.SDK ? this.sdkBuffer : this.clientBuffer;\n } else {\n buffer = this.buffer;\n historyLength = this.config.historyLength;\n }\n\n try {\n const shouldPrint = !neverPrint && this.shouldPrint(level, logType);\n const shouldBuffer = alwaysBuffer || this.shouldBuffer(level);\n\n if (!shouldBuffer && !shouldPrint) {\n return;\n }\n\n const filtered = [clientName, ...this.filter(...args)];\n const stringified = filtered.map((item) => {\n if (item instanceof WebexHttpError) {\n return item.toString();\n }\n if (typeof item === 'object') {\n let cache = [];\n let returnItem;\n try {\n returnItem = JSON.stringify(item, (_key, value) => {\n if (typeof value === 'object' && value !== null) {\n if (cache.includes(value)) {\n // Circular reference found, discard key\n return undefined;\n }\n // Store value in our collection\n cache.push(value);\n }\n\n return value;\n });\n } catch (e) {\n returnItem = `Failed to stringify: ${item}`;\n }\n cache = null;\n\n return returnItem;\n }\n\n return item;\n });\n\n if (shouldPrint) {\n // when logging an object in browsers, we tend to get a dynamic\n // reference, thus going back to look at the logged value doesn't\n // necessarily show the state at log time, thus we print the stringified\n // value.\n const toPrint = inBrowser ? stringified : filtered;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'test' && has(this, 'webex.internal.device.url')) {\n toPrint.unshift(this.webex.internal.device.url.slice(-3));\n }\n // eslint-disable-next-line no-console\n console[impl](...toPrint);\n }\n\n if (shouldBuffer) {\n const logDate = new Date();\n\n stringified.unshift(logDate.toISOString());\n stringified.unshift('| '.repeat(this.groupLevel));\n buffer.push(stringified);\n if (buffer.length > historyLength) {\n buffer.splice(0, buffer.length - historyLength);\n }\n if (level === 'group') this.groupLevel += 1;\n if (level === 'groupEnd' && this.groupLevel > 0) this.groupLevel -= 1;\n }\n } catch (reason) {\n if (!neverPrint) {\n /* istanbul ignore next */\n // eslint-disable-next-line no-console\n console.warn(`failed to execute Logger#${level}`, reason);\n }\n }\n };\n}\n\nlevels.forEach((level) => {\n let impls = fallbacks[level];\n let impl = level;\n\n if (impls) {\n impls = impls.slice();\n // eslint-disable-next-line no-console\n while (!console[impl]) {\n impl = impls.pop();\n }\n }\n\n // eslint-disable-next-line complexity\n Logger.prototype[`client_${level}`] = makeLoggerMethod(level, impl, LOG_TYPES.CLIENT);\n Logger.prototype[level] = makeLoggerMethod(level, impl, LOG_TYPES.SDK);\n});\n\nLogger.prototype.client_logToBuffer = makeLoggerMethod(\n levels.info,\n levels.info,\n LOG_TYPES.CLIENT,\n true,\n true\n);\nLogger.prototype.logToBuffer = makeLoggerMethod(\n levels.info,\n levels.info,\n LOG_TYPES.SDK,\n true,\n true\n);\n\nexport default Logger;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIA;AACA;AALA;AACA;AACA;;AAMA,IAAMA,UAAU,GAAG;EACjBC,MAAM,EAAE,CAAC;EACTC,KAAK,EAAE,CAAC;EACRC,QAAQ,EAAE,CAAC;EACXC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,CAAC;EACPC,GAAG,EAAE,CAAC;EACNC,IAAI,EAAE,CAAC;EACPC,KAAK,EAAE,CAAC;EACRC,KAAK,EAAE;AACT,CAAC;AAEM,IAAMC,MAAM,GAAG,mBAAYV,UAAU,CAAC,CAACW,MAAM,CAAC,UAACC,KAAK;EAAA,OAAKA,KAAK,KAAK,QAAQ;AAAA,EAAC;AAAC;AAEpF,IAAMC,SAAS,GAAG;EAChBT,KAAK,EAAE,CAAC,KAAK,CAAC;EACdC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;EACtBE,IAAI,EAAE,CAAC,KAAK,CAAC;EACbC,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;EACtBC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK;AAChC,CAAC;AAED,IAAMK,SAAS,GAAG;EAChBC,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE;AACV,CAAC;AAED,IAAMC,iBAAiB,GAAG,WAAW;AAErC,IAAMC,mBAAmB,GAAG,kBAAkB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAa,CAACC,MAAM,EAAgB;EAAA,IAAdC,OAAO,uEAAG,EAAE;EACzC,IAAIA,OAAO,CAACC,QAAQ,CAACF,MAAM,CAAC,EAAE;IAC5B;IACA,OAAOA,MAAM;EACf;EAEAC,OAAO,CAACE,IAAI,CAACH,MAAM,CAAC;EAEpB,IAAI,uBAAQA,MAAM,CAAC,EAAE;IACnB,OAAOA,MAAM,CAACI,GAAG,CAAC,UAACC,CAAC;MAAA,OAAKN,aAAa,CAACM,CAAC,EAAEJ,OAAO,CAAC;IAAA,EAAC;EACrD;EACA,IAAI,CAAC,wBAASD,MAAM,CAAC,EAAE;IACrB,IAAI,wBAASA,MAAM,CAAC,EAAE;MACpB,IAAIM,gBAAQ,CAACC,cAAc,CAACC,IAAI,CAACR,MAAM,CAAC,EAAE;QACxC,OAAOA,MAAM,CAACS,OAAO,CAACH,gBAAQ,CAACC,cAAc,EAAE,YAAY,CAAC;MAC9D;MACA,IAAID,gBAAQ,CAACI,YAAY,CAACF,IAAI,CAACR,MAAM,CAAC,EAAE;QACtC,OAAOA,MAAM,CAACS,OAAO,CAACH,gBAAQ,CAACI,YAAY,EAAE,cAAc,CAAC;MAC9D;IACF;IAEA,OAAOV,MAAM;EACf;EAEA,mCAA2B,sBAAeA,MAAM,CAAC,qCAAE;IAA9C;MAAOW,GAAG;MAAEC,KAAK;IACpB,IAAId,mBAAmB,CAACU,IAAI,CAACG,GAAG,CAAC,EAAE;MACjC,6BAAuBX,MAAM,EAAEW,GAAG,CAAC;IACrC,CAAC,MAAM;MACLX,MAAM,CAACW,GAAG,CAAC,GAAGZ,aAAa,CAACa,KAAK,EAAEX,OAAO,CAAC;IAC7C;EACF;EAEA,OAAOD,MAAM;AACf;;AAEA;AACA;AACA;AACA,IAAMa,MAAM,GAAGC,sBAAW,CAACC,MAAM,CAAC;EAChCC,SAAS,EAAE,QAAQ;EAEnBC,OAAO,EAAE;IACPzB,KAAK,EAAE;MACL0B,KAAK,EAAE,KAAK;MACZC,EAAE,gBAAG;QACH,OAAO,IAAI,CAACC,eAAe,EAAE;MAC/B;IACF,CAAC;IACDC,YAAY,EAAE;MACZH,KAAK,EAAE,KAAK;MACZC,EAAE,gBAAG;QACH,OAAO,IAAI,CAACG,qBAAqB,EAAE;MACrC;IACF;EACF,CAAC;EACDC,OAAO,EAAE;IACP;IACAC,MAAM,EAAE;MACNC,IAAI,EAAE,OAAO;MACbC,OAAO,sBAAG;QACR,OAAO,EAAE;MACX;IACF,CAAC;IACDC,UAAU,EAAE;MACVF,IAAI,EAAE,QAAQ;MACdC,OAAO,sBAAG;QACR,OAAO,CAAC;MACV;IACF,CAAC;IACD;IACAE,SAAS,EAAE;MACTH,IAAI,EAAE,OAAO;MACbC,OAAO,sBAAG;QACR,OAAO,EAAE;MACX;IACF,CAAC;IACDG,YAAY,EAAE;MACZJ,IAAI,EAAE,OAAO;MACbC,OAAO,sBAAG;QACR,OAAO,EAAE;MACX;IACF;EACF,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEnC,MAAM,oBAAU;IAAA,kCAANuC,IAAI;MAAJA,IAAI;IAAA;IACZ,OAAOA,IAAI,CAAC1B,GAAG,CAAC,UAAC2B,GAAG,EAAK;MACvB;MACA;MACA,IAAIA,GAAG,YAAYC,KAAK,EAAE;QACxB;QACA;QACA,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,IAAIC,iBAAS,EAAE;UAChD,IAAIC,GAAG,GAAGN,GAAG,CAACO,QAAQ,EAAE;UAExBD,GAAG,IAAI,aAAa;UACpBA,GAAG,IAAIN,GAAG,CAACQ,KAAK;UAChBF,GAAG,IAAI,WAAW;UAElB,OAAOA,GAAG;QACZ;QAEA,OAAON,GAAG;MACZ;MAEAA,GAAG,GAAG,yBAAUA,GAAG,CAAC;MAEpB,OAAOhC,aAAa,CAACgC,GAAG,CAAC;IAC3B,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACES,WAAW,uBAAChD,KAAK,EAAwB;IAAA,IAAtBiC,IAAI,uEAAG/B,SAAS,CAACC,GAAG;IACrC,OACEf,UAAU,CAACY,KAAK,CAAC,IACjBZ,UAAU,CAAC6C,IAAI,KAAK/B,SAAS,CAACC,GAAG,GAAG,IAAI,CAACyB,eAAe,EAAE,GAAG,IAAI,CAACE,qBAAqB,EAAE,CAAC;EAE9F,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEmB,YAAY,wBAACjD,KAAK,EAAE;IAClB,OACEZ,UAAU,CAACY,KAAK,CAAC,KAChB,IAAI,CAACkD,MAAM,CAACC,cAAc,GAAG/D,UAAU,CAAC,IAAI,CAAC8D,MAAM,CAACC,cAAc,CAAC,GAAG/D,UAAU,CAACO,IAAI,CAAC;EAE3F,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE;EACAiC,eAAe,6BAAG;IAChB;IACA,IAAI,IAAI,CAACsB,MAAM,CAAClD,KAAK,EAAE;MACrB,OAAO,IAAI,CAACkD,MAAM,CAAClD,KAAK;IAC1B;IAEA,IAAIF,MAAM,CAACY,QAAQ,CAAC+B,OAAO,CAACC,GAAG,CAACU,eAAe,CAAC,EAAE;MAChD,OAAOX,OAAO,CAACC,GAAG,CAACU,eAAe;IACpC;;IAEA;IACA,IAAIX,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,EAAE;MACnC,OAAO,OAAO;IAChB;;IAEA;IACA,IAAM3C,KAAK,GACT,IAAI,CAACqD,KAAK,CAACC,QAAQ,CAACC,MAAM,IAAI,IAAI,CAACF,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACC,QAAQ,CAACC,SAAS,CAACC,GAAG,CAAC,WAAW,CAAC;IAE9F,IAAI1D,KAAK,EAAE;MACT,IAAIF,MAAM,CAACY,QAAQ,CAACV,KAAK,CAAC,EAAE;QAC1B,OAAOA,KAAK;MACd;IACF;IAEA,OAAO,OAAO;EAChB,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE8B,qBAAqB,mCAAG;IACtB;IACA,IAAI,IAAI,CAACoB,MAAM,CAACS,WAAW,EAAE;MAC3B,OAAO,IAAI,CAACT,MAAM,CAACS,WAAW;IAChC;;IAEA;IACA,OAAO,IAAI,CAAC/B,eAAe,EAAE;EAC/B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEgC,UAAU,wBAAG;IACX,SAASC,OAAO,CAACnE,GAAG,EAAE;MACpB,OAAOA,GAAG,CAAC,CAAC,CAAC;IACf;IACA,IAAIsC,MAAM,GAAG,EAAE;IACf,IAAI8B,WAAW,GAAG,CAAC;IACnB,IAAIC,QAAQ,GAAG,CAAC;IAEhB,IAAI,IAAI,CAACb,MAAM,CAACc,kBAAkB,EAAE;MAClC;MACA;MACA,OAAOF,WAAW,GAAG,IAAI,CAACzB,YAAY,CAAC4B,MAAM,IAAIF,QAAQ,GAAG,IAAI,CAAC3B,SAAS,CAAC6B,MAAM,EAAE;QACjF;QACA,IACEF,QAAQ,GAAG,IAAI,CAAC3B,SAAS,CAAC6B,MAAM;QAChC;QACCH,WAAW,IAAI,IAAI,CAACzB,YAAY,CAAC4B,MAAM,IACtC,IAAIC,IAAI,CAACL,OAAO,CAAC,IAAI,CAACzB,SAAS,CAAC2B,QAAQ,CAAC,CAAC,CAAC,IACzC,IAAIG,IAAI,CAACL,OAAO,CAAC,IAAI,CAACxB,YAAY,CAACyB,WAAW,CAAC,CAAC,CAAC,CAAC,EACtD;UACA;UACA9B,MAAM,CAACrB,IAAI,CAAC,IAAI,CAACyB,SAAS,CAAC2B,QAAQ,CAAC,CAAC;UACrCA,QAAQ,IAAI,CAAC;QACf;QACA;QACA;QAAA,KACK,IAAID,WAAW,GAAG,IAAI,CAACzB,YAAY,CAAC4B,MAAM,EAAE;UAC/CjC,MAAM,CAACrB,IAAI,CAAC,IAAI,CAAC0B,YAAY,CAACyB,WAAW,CAAC,CAAC;UAC3CA,WAAW,IAAI,CAAC;QAClB;MACF;IACF,CAAC,MAAM;MACL9B,MAAM,GAAG,IAAI,CAACA,MAAM;IACtB;IAEA,OAAOA,MAAM,CAACmC,IAAI,CAAC,IAAI,CAAC;EAC1B,CAAC;EAAA;AACH,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgB,CAACpE,KAAK,EAAEqE,IAAI,EAAEpC,IAAI,EAA4C;EAAA,IAA1CqC,UAAU,uEAAG,KAAK;EAAA,IAAEC,YAAY,uEAAG,KAAK;EACnF;EACA;EACA,OAAO,SAASC,oBAAoB,GAAU;IAC5C;IACA;IACA;IACA,IAAMC,OAAO,GAAGxC,IAAI;IACpB,IAAMyC,UAAU,GACdD,OAAO,KAAKvE,SAAS,CAACC,GAAG,GAAGE,iBAAiB,GAAG,IAAI,CAAC6C,MAAM,CAACwB,UAAU,IAAID,OAAO;IAEnF,IAAIzC,MAAM;IACV,IAAI2C,aAAa;IAEjB,IAAI,IAAI,CAACzB,MAAM,CAACc,kBAAkB,EAAE;MAClCW,aAAa,GAAG,IAAI,CAACzB,MAAM,CAAC0B,mBAAmB,GAC3C,IAAI,CAAC1B,MAAM,CAAC0B,mBAAmB,GAC/B,IAAI,CAAC1B,MAAM,CAACyB,aAAa;MAC7B3C,MAAM,GAAGyC,OAAO,KAAKvE,SAAS,CAACC,GAAG,GAAG,IAAI,CAACiC,SAAS,GAAG,IAAI,CAACC,YAAY;IACzE,CAAC,MAAM;MACLL,MAAM,GAAG,IAAI,CAACA,MAAM;MACpB2C,aAAa,GAAG,IAAI,CAACzB,MAAM,CAACyB,aAAa;IAC3C;IAEA,IAAI;MACF,IAAM3B,WAAW,GAAG,CAACsB,UAAU,IAAI,IAAI,CAACtB,WAAW,CAAChD,KAAK,EAAEyE,OAAO,CAAC;MACnE,IAAMxB,YAAY,GAAGsB,YAAY,IAAI,IAAI,CAACtB,YAAY,CAACjD,KAAK,CAAC;MAE7D,IAAI,CAACiD,YAAY,IAAI,CAACD,WAAW,EAAE;QACjC;MACF;MAEA,IAAM6B,QAAQ,IAAIH,UAAU,0CAAK,IAAI,CAAC3E,MAAM,OAAX,IAAI,YAAgB,EAAC;MACtD,IAAM+E,WAAW,GAAGD,QAAQ,CAACjE,GAAG,CAAC,UAACmE,IAAI,EAAK;QACzC,IAAIA,IAAI,YAAYC,yBAAc,EAAE;UAClC,OAAOD,IAAI,CAACjC,QAAQ,EAAE;QACxB;QACA,IAAI,sBAAOiC,IAAI,MAAK,QAAQ,EAAE;UAC5B,IAAIrD,KAAK,GAAG,EAAE;UACd,IAAIuD,UAAU;UACd,IAAI;YACFA,UAAU,GAAG,wBAAeF,IAAI,EAAE,UAACG,IAAI,EAAE9D,KAAK,EAAK;cACjD,IAAI,sBAAOA,KAAK,MAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;gBAC/C,IAAIM,KAAK,CAAChB,QAAQ,CAACU,KAAK,CAAC,EAAE;kBACzB;kBACA,OAAO+D,SAAS;gBAClB;gBACA;gBACAzD,KAAK,CAACf,IAAI,CAACS,KAAK,CAAC;cACnB;cAEA,OAAOA,KAAK;YACd,CAAC,CAAC;UACJ,CAAC,CAAC,OAAOgE,CAAC,EAAE;YACVH,UAAU,kCAA2BF,IAAI,CAAE;UAC7C;UACArD,KAAK,GAAG,IAAI;UAEZ,OAAOuD,UAAU;QACnB;QAEA,OAAOF,IAAI;MACb,CAAC,CAAC;MAEF,IAAI/B,WAAW,EAAE;QAAA;QACf;QACA;QACA;QACA;QACA,IAAMqC,OAAO,GAAGzC,iBAAS,GAAGkC,WAAW,GAAGD,QAAQ;;QAElD;QACA,IAAIpC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,IAAI,mBAAI,IAAI,EAAE,2BAA2B,CAAC,EAAE;UAC7E0C,OAAO,CAACC,OAAO,CAAC,IAAI,CAACjC,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACgC,GAAG,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D;QACA;QACA,YAAAC,OAAO,EAACpB,IAAI,CAAC,kDAAIgB,OAAO,EAAC;MAC3B;MAEA,IAAIpC,YAAY,EAAE;QAChB,IAAMyC,OAAO,GAAG,IAAIxB,IAAI,EAAE;QAE1BY,WAAW,CAACQ,OAAO,CAACI,OAAO,CAACC,WAAW,EAAE,CAAC;QAC1Cb,WAAW,CAACQ,OAAO,CAAC,KAAK,CAACM,MAAM,CAAC,IAAI,CAACzD,UAAU,CAAC,CAAC;QAClDH,MAAM,CAACrB,IAAI,CAACmE,WAAW,CAAC;QACxB,IAAI9C,MAAM,CAACiC,MAAM,GAAGU,aAAa,EAAE;UACjC3C,MAAM,CAAC6D,MAAM,CAAC,CAAC,EAAE7D,MAAM,CAACiC,MAAM,GAAGU,aAAa,CAAC;QACjD;QACA,IAAI3E,KAAK,KAAK,OAAO,EAAE,IAAI,CAACmC,UAAU,IAAI,CAAC;QAC3C,IAAInC,KAAK,KAAK,UAAU,IAAI,IAAI,CAACmC,UAAU,GAAG,CAAC,EAAE,IAAI,CAACA,UAAU,IAAI,CAAC;MACvE;IACF,CAAC,CAAC,OAAO2D,MAAM,EAAE;MACf,IAAI,CAACxB,UAAU,EAAE;QACf;QACA;QACAmB,OAAO,CAAChG,IAAI,oCAA6BO,KAAK,GAAI8F,MAAM,CAAC;MAC3D;IACF;EACF,CAAC;AACH;AAEAhG,MAAM,CAACiG,OAAO,CAAC,UAAC/F,KAAK,EAAK;EACxB,IAAIgG,KAAK,GAAG/F,SAAS,CAACD,KAAK,CAAC;EAC5B,IAAIqE,IAAI,GAAGrE,KAAK;EAEhB,IAAIgG,KAAK,EAAE;IACTA,KAAK,GAAGA,KAAK,CAACR,KAAK,EAAE;IACrB;IACA,OAAO,CAACC,OAAO,CAACpB,IAAI,CAAC,EAAE;MACrBA,IAAI,GAAG2B,KAAK,CAACC,GAAG,EAAE;IACpB;EACF;;EAEA;EACA5E,MAAM,CAAC6E,SAAS,kBAAWlG,KAAK,EAAG,GAAGoE,gBAAgB,CAACpE,KAAK,EAAEqE,IAAI,EAAEnE,SAAS,CAACE,MAAM,CAAC;EACrFiB,MAAM,CAAC6E,SAAS,CAAClG,KAAK,CAAC,GAAGoE,gBAAgB,CAACpE,KAAK,EAAEqE,IAAI,EAAEnE,SAAS,CAACC,GAAG,CAAC;AACxE,CAAC,CAAC;AAEFkB,MAAM,CAAC6E,SAAS,CAACC,kBAAkB,GAAG/B,gBAAgB,CACpDtE,MAAM,CAACH,IAAI,EACXG,MAAM,CAACH,IAAI,EACXO,SAAS,CAACE,MAAM,EAChB,IAAI,EACJ,IAAI,CACL;AACDiB,MAAM,CAAC6E,SAAS,CAACE,WAAW,GAAGhC,gBAAgB,CAC7CtE,MAAM,CAACH,IAAI,EACXG,MAAM,CAACH,IAAI,EACXO,SAAS,CAACC,GAAG,EACb,IAAI,EACJ,IAAI,CACL;AAAC,gBAEakB,MAAM;AAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-logger",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.400",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,12 +23,12 @@
|
|
|
23
23
|
"sinon": "^9.2.4"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@webex/common": "3.0.0-beta.
|
|
27
|
-
"@webex/plugin-logger": "3.0.0-beta.
|
|
28
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
29
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
30
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
31
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
26
|
+
"@webex/common": "3.0.0-beta.400",
|
|
27
|
+
"@webex/plugin-logger": "3.0.0-beta.400",
|
|
28
|
+
"@webex/test-helper-chai": "3.0.0-beta.400",
|
|
29
|
+
"@webex/test-helper-mocha": "3.0.0-beta.400",
|
|
30
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.400",
|
|
31
|
+
"@webex/webex-core": "3.0.0-beta.400",
|
|
32
32
|
"lodash": "^4.17.21"
|
|
33
33
|
}
|
|
34
34
|
}
|
package/src/config.js
CHANGED
package/src/index.js
CHANGED