jsforce
Version:
Salesforce API Library for JavaScript
140 lines (138 loc) • 16.4 kB
JavaScript
import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
import _createClass from "@babel/runtime-corejs3/helpers/createClass";
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
import "core-js/modules/es.object.keys.js";
import "core-js/modules/es.regexp.exec.js";
import "core-js/modules/es.regexp.test.js";
/**
*
*/
export var LogLevels = {
DEBUG: 1,
INFO: 2,
WARN: 3,
ERROR: 4,
FATAL: 5,
NONE: 6
};
var LogLevelLabels = ['', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', 'NONE'];
var globalLogLevelConfig = function () {
var globalLogLevelStr = process.env.JSFORCE_LOG_LEVEL || global.__JSFORCE_LOG_LEVEL__ || 'NONE';
if (/^(DEBUG|INFO|WARN|ERROR|FATAL|NONE)$/i.test(globalLogLevelStr)) {
return {
'*': globalLogLevelStr
};
}
try {
return JSON.parse(globalLogLevelStr);
} catch (e) {
return {
'*': 'NONE'
};
}
}();
function getModuleLogLevel(logLevelConfig, moduleName) {
var logLevel = logLevelConfig[moduleName] || logLevelConfig['*'];
return typeof logLevel === 'number' ? logLevel : LogLevels[logLevel] || LogLevels.NONE;
}
/**
*
*/
export var Logger = /*#__PURE__*/function () {
function Logger(moduleName) {
var logLevelConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalLogLevelConfig;
_classCallCheck(this, Logger);
this._moduleName = moduleName;
this._logLevel = typeof logLevelConfig === 'number' ? logLevelConfig : typeof logLevelConfig === 'string' ? LogLevels[logLevelConfig] || LogLevels.NONE : getModuleLogLevel(logLevelConfig, moduleName);
}
return _createClass(Logger, [{
key: "createInstance",
value: function createInstance() {
var logLevelConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._logLevel;
return new Logger(this._moduleName, logLevelConfig);
}
}, {
key: "setLogLevel",
value: function setLogLevel(logLevel) {
if (typeof logLevel === 'string') {
this._logLevel = LogLevels[logLevel] || LogLevels.NONE;
} else {
this._logLevel = logLevel;
}
}
}, {
key: "log",
value: function log(logLevel) {
if (this._logLevel <= logLevel) {
var _context, _context2;
for (var _len = arguments.length, messages = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
messages[_key - 1] = arguments[_key];
}
var msgs = _concatInstanceProperty(_context = [_concatInstanceProperty(_context2 = "".concat(LogLevelLabels[logLevel], "\t[")).call(_context2, this._moduleName, "] ")]).call(_context, messages);
if (logLevel < LogLevels.ERROR) {
var _console;
(_console = console).log.apply(_console, _toConsumableArray(msgs)); // eslint-disable-line no-console
} else {
var _console2;
(_console2 = console).error.apply(_console2, _toConsumableArray(msgs)); // eslint-disable-line no-console
}
}
}
}, {
key: "debug",
value: function debug() {
var _context3;
for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
messages[_key2] = arguments[_key2];
}
this.log.apply(this, _concatInstanceProperty(_context3 = [LogLevels.DEBUG]).call(_context3, messages));
}
}, {
key: "info",
value: function info() {
var _context4;
for (var _len3 = arguments.length, messages = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
messages[_key3] = arguments[_key3];
}
this.log.apply(this, _concatInstanceProperty(_context4 = [LogLevels.INFO]).call(_context4, messages));
}
}, {
key: "warn",
value: function warn() {
var _context5;
for (var _len4 = arguments.length, messages = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
messages[_key4] = arguments[_key4];
}
this.log.apply(this, _concatInstanceProperty(_context5 = [LogLevels.WARN]).call(_context5, messages));
}
}, {
key: "error",
value: function error() {
var _context6;
for (var _len5 = arguments.length, messages = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
messages[_key5] = arguments[_key5];
}
this.log.apply(this, _concatInstanceProperty(_context6 = [LogLevels.ERROR]).call(_context6, messages));
}
}, {
key: "fatal",
value: function fatal() {
var _context7;
for (var _len6 = arguments.length, messages = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
messages[_key6] = arguments[_key6];
}
this.log.apply(this, _concatInstanceProperty(_context7 = [LogLevels.FATAL]).call(_context7, messages));
}
}]);
}();
var loggers = {};
/**
*
*/
export function getLogger(moduleName) {
var logger = loggers[moduleName] || new Logger(moduleName);
loggers[moduleName] = logger;
return logger;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMb2dMZXZlbHMiLCJERUJVRyIsIklORk8iLCJXQVJOIiwiRVJST1IiLCJGQVRBTCIsIk5PTkUiLCJMb2dMZXZlbExhYmVscyIsImdsb2JhbExvZ0xldmVsQ29uZmlnIiwiZ2xvYmFsTG9nTGV2ZWxTdHIiLCJwcm9jZXNzIiwiZW52IiwiSlNGT1JDRV9MT0dfTEVWRUwiLCJnbG9iYWwiLCJfX0pTRk9SQ0VfTE9HX0xFVkVMX18iLCJ0ZXN0IiwiSlNPTiIsInBhcnNlIiwiZSIsImdldE1vZHVsZUxvZ0xldmVsIiwibG9nTGV2ZWxDb25maWciLCJtb2R1bGVOYW1lIiwibG9nTGV2ZWwiLCJMb2dnZXIiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJfY2xhc3NDYWxsQ2hlY2siLCJfbW9kdWxlTmFtZSIsIl9sb2dMZXZlbCIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiY3JlYXRlSW5zdGFuY2UiLCJzZXRMb2dMZXZlbCIsImxvZyIsIl9jb250ZXh0IiwiX2NvbnRleHQyIiwiX2xlbiIsIm1lc3NhZ2VzIiwiQXJyYXkiLCJfa2V5IiwibXNncyIsIl9jb25jYXRJbnN0YW5jZVByb3BlcnR5IiwiY29uY2F0IiwiY2FsbCIsIl9jb25zb2xlIiwiY29uc29sZSIsImFwcGx5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2NvbnNvbGUyIiwiZXJyb3IiLCJkZWJ1ZyIsIl9jb250ZXh0MyIsIl9sZW4yIiwiX2tleTIiLCJpbmZvIiwiX2NvbnRleHQ0IiwiX2xlbjMiLCJfa2V5MyIsIndhcm4iLCJfY29udGV4dDUiLCJfbGVuNCIsIl9rZXk0IiwiX2NvbnRleHQ2IiwiX2xlbjUiLCJfa2V5NSIsImZhdGFsIiwiX2NvbnRleHQ3IiwiX2xlbjYiLCJfa2V5NiIsImxvZ2dlcnMiLCJnZXRMb2dnZXIiLCJsb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9sb2dnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICovXG5leHBvcnQgY29uc3QgTG9nTGV2ZWxzOiB7IFtsZXZlbDogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gIERFQlVHOiAxLFxuICBJTkZPOiAyLFxuICBXQVJOOiAzLFxuICBFUlJPUjogNCxcbiAgRkFUQUw6IDUsXG4gIE5PTkU6IDYsXG59O1xuXG5jb25zdCBMb2dMZXZlbExhYmVscyA9IFsnJywgJ0RFQlVHJywgJ0lORk8nLCAnV0FSTicsICdFUlJPUicsICdGQVRBTCcsICdOT05FJ107XG5cbmNvbnN0IGdsb2JhbExvZ0xldmVsQ29uZmlnID0gKCgpID0+IHtcbiAgY29uc3QgZ2xvYmFsTG9nTGV2ZWxTdHIgPVxuICAgIHByb2Nlc3MuZW52LkpTRk9SQ0VfTE9HX0xFVkVMIHx8XG4gICAgKGdsb2JhbCBhcyBhbnkpLl9fSlNGT1JDRV9MT0dfTEVWRUxfXyB8fFxuICAgICdOT05FJztcbiAgaWYgKC9eKERFQlVHfElORk98V0FSTnxFUlJPUnxGQVRBTHxOT05FKSQvaS50ZXN0KGdsb2JhbExvZ0xldmVsU3RyKSkge1xuICAgIHJldHVybiB7ICcqJzogZ2xvYmFsTG9nTGV2ZWxTdHIgfTtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGdsb2JhbExvZ0xldmVsU3RyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7ICcqJzogJ05PTkUnIH07XG4gIH1cbn0pKCk7XG5cbmV4cG9ydCB0eXBlIExvZ0xldmVsQ29uZmlnID1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXJcbiAgfCB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfTtcblxuZnVuY3Rpb24gZ2V0TW9kdWxlTG9nTGV2ZWwoXG4gIGxvZ0xldmVsQ29uZmlnOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSxcbiAgbW9kdWxlTmFtZTogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IGxvZ0xldmVsID0gbG9nTGV2ZWxDb25maWdbbW9kdWxlTmFtZV0gfHwgbG9nTGV2ZWxDb25maWdbJyonXTtcbiAgcmV0dXJuIHR5cGVvZiBsb2dMZXZlbCA9PT0gJ251bWJlcidcbiAgICA/IGxvZ0xldmVsXG4gICAgOiBMb2dMZXZlbHNbbG9nTGV2ZWxdIHx8IExvZ0xldmVscy5OT05FO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICBfbW9kdWxlTmFtZTogc3RyaW5nO1xuICBfbG9nTGV2ZWw6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gICAgbG9nTGV2ZWxDb25maWc6IExvZ0xldmVsQ29uZmlnID0gZ2xvYmFsTG9nTGV2ZWxDb25maWcsXG4gICkge1xuICAgIHRoaXMuX21vZHVsZU5hbWUgPSBtb2R1bGVOYW1lO1xuICAgIHRoaXMuX2xvZ0xldmVsID1cbiAgICAgIHR5cGVvZiBsb2dMZXZlbENvbmZpZyA9PT0gJ251bWJlcidcbiAgICAgICAgPyBsb2dMZXZlbENvbmZpZ1xuICAgICAgICA6IHR5cGVvZiBsb2dMZXZlbENvbmZpZyA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBMb2dMZXZlbHNbbG9nTGV2ZWxDb25maWddIHx8IExvZ0xldmVscy5OT05FXG4gICAgICAgIDogZ2V0TW9kdWxlTG9nTGV2ZWwobG9nTGV2ZWxDb25maWcsIG1vZHVsZU5hbWUpO1xuICB9XG5cbiAgY3JlYXRlSW5zdGFuY2UobG9nTGV2ZWxDb25maWc6IExvZ0xldmVsQ29uZmlnID0gdGhpcy5fbG9nTGV2ZWwpIHtcbiAgICByZXR1cm4gbmV3IExvZ2dlcih0aGlzLl9tb2R1bGVOYW1lLCBsb2dMZXZlbENvbmZpZyk7XG4gIH1cblxuICBzZXRMb2dMZXZlbChsb2dMZXZlbDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHR5cGVvZiBsb2dMZXZlbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2xvZ0xldmVsID0gTG9nTGV2ZWxzW2xvZ0xldmVsXSB8fCBMb2dMZXZlbHMuTk9ORTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9nTGV2ZWwgPSBsb2dMZXZlbDtcbiAgICB9XG4gIH1cblxuICBsb2cobG9nTGV2ZWw6IG51bWJlciwgLi4ubWVzc2FnZXM6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuX2xvZ0xldmVsIDw9IGxvZ0xldmVsKSB7XG4gICAgICBjb25zdCBtc2dzID0gW1xuICAgICAgICBgJHtMb2dMZXZlbExhYmVsc1tsb2dMZXZlbF19XFx0WyR7dGhpcy5fbW9kdWxlTmFtZX1dIGAsXG4gICAgICAgIC4uLm1lc3NhZ2VzLFxuICAgICAgXTtcbiAgICAgIGlmIChsb2dMZXZlbCA8IExvZ0xldmVscy5FUlJPUikge1xuICAgICAgICBjb25zb2xlLmxvZyguLi5tc2dzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKC4uLm1zZ3MpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZWJ1ZyguLi5tZXNzYWdlczogYW55W10pIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbHMuREVCVUcsIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIGluZm8oLi4ubWVzc2FnZXM6IGFueVtdKSB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWxzLklORk8sIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIHdhcm4oLi4ubWVzc2FnZXM6IGFueVtdKSB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWxzLldBUk4sIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIGVycm9yKC4uLm1lc3NhZ2VzOiBhbnlbXSkge1xuICAgIHRoaXMubG9nKExvZ0xldmVscy5FUlJPUiwgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgZmF0YWwoLi4ubWVzc2FnZXM6IGFueVtdKSB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWxzLkZBVEFMLCAuLi5tZXNzYWdlcyk7XG4gIH1cbn1cblxuY29uc3QgbG9nZ2VyczogeyBbbmFtZTogc3RyaW5nXTogTG9nZ2VyIH0gPSB7fTtcblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyKG1vZHVsZU5hbWU6IHN0cmluZykge1xuICBjb25zdCBsb2dnZXIgPSBsb2dnZXJzW21vZHVsZU5hbWVdIHx8IG5ldyBMb2dnZXIobW9kdWxlTmFtZSk7XG4gIGxvZ2dlcnNbbW9kdWxlTmFtZV0gPSBsb2dnZXI7XG4gIHJldHVybiBsb2dnZXI7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1BLFNBQXNDLEdBQUc7RUFDcERDLEtBQUssRUFBRSxDQUFDO0VBQ1JDLElBQUksRUFBRSxDQUFDO0VBQ1BDLElBQUksRUFBRSxDQUFDO0VBQ1BDLEtBQUssRUFBRSxDQUFDO0VBQ1JDLEtBQUssRUFBRSxDQUFDO0VBQ1JDLElBQUksRUFBRTtBQUNSLENBQUM7QUFFRCxJQUFNQyxjQUFjLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7QUFFOUUsSUFBTUMsb0JBQW9CLEdBQUksWUFBTTtFQUNsQyxJQUFNQyxpQkFBaUIsR0FDckJDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxpQkFBaUIsSUFDNUJDLE1BQU0sQ0FBU0MscUJBQXFCLElBQ3JDLE1BQU07RUFDUixJQUFJLHVDQUF1QyxDQUFDQyxJQUFJLENBQUNOLGlCQUFpQixDQUFDLEVBQUU7SUFDbkUsT0FBTztNQUFFLEdBQUcsRUFBRUE7SUFBa0IsQ0FBQztFQUNuQztFQUNBLElBQUk7SUFDRixPQUFPTyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsaUJBQWlCLENBQUM7RUFDdEMsQ0FBQyxDQUFDLE9BQU9TLENBQUMsRUFBRTtJQUNWLE9BQU87TUFBRSxHQUFHLEVBQUU7SUFBTyxDQUFDO0VBQ3hCO0FBQ0YsQ0FBQyxDQUFFLENBQUM7QUFPSixTQUFTQyxpQkFBaUJBLENBQ3hCQyxjQUFtRCxFQUNuREMsVUFBa0IsRUFDbEI7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