necessary 11.1.8 → 11.1.10

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/lib/constants.js CHANGED
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.EMPTY_STRING = exports.ENVIRONMENT = exports.DEFAULT = exports.BOOLEAN = exports.NUMBER = exports.STRING = exports.ERROR = exports.DATA = void 0;
5
+ exports.EMPTY_STRING = exports.ENVIRONMENT = exports.DEFAULT = exports.BOOLEAN = exports.NUMBER = exports.STRING = exports.ERROR = exports.DATA = exports.ZERO = void 0;
6
+ var ZERO = "0";
7
+ exports.ZERO = ZERO;
6
8
  var DATA = "data";
7
9
  exports.DATA = DATA;
8
10
  var ERROR = "error";
@@ -20,4 +22,4 @@ exports.ENVIRONMENT = ENVIRONMENT;
20
22
  var EMPTY_STRING = "";
21
23
  exports.EMPTY_STRING = EMPTY_STRING;
22
24
 
23
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBEQVRBID0gXCJkYXRhXCI7XG5leHBvcnQgY29uc3QgRVJST1IgPSBcImVycm9yXCI7XG5leHBvcnQgY29uc3QgU1RSSU5HID0gXCJzdHJpbmdcIjtcbmV4cG9ydCBjb25zdCBOVU1CRVIgPSBcIm51bWJlclwiO1xuZXhwb3J0IGNvbnN0IEJPT0xFQU4gPSBcImJvb2xlYW5cIjtcbmV4cG9ydCBjb25zdCBERUZBVUxUID0gXCJkZWZhdWx0XCI7XG5leHBvcnQgY29uc3QgRU5WSVJPTk1FTlQgPSBcIkVOVklST05NRU5UXCI7XG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjtcbiJdLCJuYW1lcyI6WyJEQVRBIiwiRVJST1IiLCJTVFJJTkciLCJOVU1CRVIiLCJCT09MRUFOIiwiREVGQVVMVCIsIkVOVklST05NRU5UIiwiRU1QVFlfU1RSSU5HIl0sIm1hcHBpbmdzIjoiQUFBQSxDQUFZOzs7OztBQUVMLEdBQUssQ0FBQ0EsSUFBSSxHQUFHLENBQU07UUFBYkEsSUFBSSxHQUFKQSxJQUFJO0FBQ1YsR0FBSyxDQUFDQyxLQUFLLEdBQUcsQ0FBTztRQUFmQSxLQUFLLEdBQUxBLEtBQUs7QUFDWCxHQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFRO1FBQWpCQSxNQUFNLEdBQU5BLE1BQU07QUFDWixHQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFRO1FBQWpCQSxNQUFNLEdBQU5BLE1BQU07QUFDWixHQUFLLENBQUNDLE9BQU8sR0FBRyxDQUFTO1FBQW5CQSxPQUFPLEdBQVBBLE9BQU87QUFDYixHQUFLLENBQUNDLE9BQU8sR0FBRyxDQUFTO1FBQW5CQSxPQUFPLEdBQVBBLE9BQU87QUFDYixHQUFLLENBQUNDLFdBQVcsR0FBRyxDQUFhO1FBQTNCQSxXQUFXLEdBQVhBLFdBQVc7QUFDakIsR0FBSyxDQUFDQyxZQUFZLEdBQUcsQ0FBRTtRQUFqQkEsWUFBWSxHQUFaQSxZQUFZIn0=
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBaRVJPID0gXCIwXCI7XG5leHBvcnQgY29uc3QgREFUQSA9IFwiZGF0YVwiO1xuZXhwb3J0IGNvbnN0IEVSUk9SID0gXCJlcnJvclwiO1xuZXhwb3J0IGNvbnN0IFNUUklORyA9IFwic3RyaW5nXCI7XG5leHBvcnQgY29uc3QgTlVNQkVSID0gXCJudW1iZXJcIjtcbmV4cG9ydCBjb25zdCBCT09MRUFOID0gXCJib29sZWFuXCI7XG5leHBvcnQgY29uc3QgREVGQVVMVCA9IFwiZGVmYXVsdFwiO1xuZXhwb3J0IGNvbnN0IEVOVklST05NRU5UID0gXCJFTlZJUk9OTUVOVFwiO1xuZXhwb3J0IGNvbnN0IEVNUFRZX1NUUklORyA9IFwiXCI7XG4iXSwibmFtZXMiOlsiWkVSTyIsIkRBVEEiLCJFUlJPUiIsIlNUUklORyIsIk5VTUJFUiIsIkJPT0xFQU4iLCJERUZBVUxUIiwiRU5WSVJPTk1FTlQiLCJFTVBUWV9TVFJJTkciXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7O0FBRUwsR0FBSyxDQUFDQSxJQUFJLEdBQUcsQ0FBRztRQUFWQSxJQUFJLEdBQUpBLElBQUk7QUFDVixHQUFLLENBQUNDLElBQUksR0FBRyxDQUFNO1FBQWJBLElBQUksR0FBSkEsSUFBSTtBQUNWLEdBQUssQ0FBQ0MsS0FBSyxHQUFHLENBQU87UUFBZkEsS0FBSyxHQUFMQSxLQUFLO0FBQ1gsR0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBUTtRQUFqQkEsTUFBTSxHQUFOQSxNQUFNO0FBQ1osR0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBUTtRQUFqQkEsTUFBTSxHQUFOQSxNQUFNO0FBQ1osR0FBSyxDQUFDQyxPQUFPLEdBQUcsQ0FBUztRQUFuQkEsT0FBTyxHQUFQQSxPQUFPO0FBQ2IsR0FBSyxDQUFDQyxPQUFPLEdBQUcsQ0FBUztRQUFuQkEsT0FBTyxHQUFQQSxPQUFPO0FBQ2IsR0FBSyxDQUFDQyxXQUFXLEdBQUcsQ0FBYTtRQUEzQkEsV0FBVyxHQUFYQSxXQUFXO0FBQ2pCLEdBQUssQ0FBQ0MsWUFBWSxHQUFHLENBQUU7UUFBakJBLFlBQVksR0FBWkEsWUFBWSJ9
@@ -6,8 +6,8 @@ exports.log = log;
6
6
  exports.default = void 0;
7
7
  var _path = _interopRequireDefault(require("path"));
8
8
  var _array = require("../utilities/array");
9
- var _constants = require("../constants");
10
9
  var _path1 = require("../utilities/path");
10
+ var _constants = require("../constants");
11
11
  var _fileSystem = require("../utilities/fileSystem");
12
12
  var _defaults = require("../defaults");
13
13
  var _levels = require("../levels");
@@ -85,12 +85,6 @@ function fatal(message) {
85
85
  function setLogLevel(level) {
86
86
  logLevel = level;
87
87
  }
88
- function setLogFileBaseName(fileBaseName) {
89
- logFileBaseName = fileBaseName;
90
- }
91
- function setLogDirectoryPath(directoryPath) {
92
- logDirectoryPath = directoryPath;
93
- }
94
88
  function setLogOptions(logOptions) {
95
89
  var level = logOptions.level, fileBaseName = logOptions.fileBaseName, directoryPath = logOptions.directoryPath;
96
90
  setLogLevel(level);
@@ -101,13 +95,13 @@ function getLogFileContent() {
101
95
  var logFilePath = getLogFilePath(), logFileContent = (0, _fileSystem).readFile(logFilePath);
102
96
  return logFileContent;
103
97
  }
98
+ function setLogFileBaseName(fileBaseName) {
99
+ logFileBaseName = fileBaseName;
100
+ }
101
+ function setLogDirectoryPath(directoryPath) {
102
+ logDirectoryPath = directoryPath;
103
+ }
104
104
  Object.assign(log, {
105
- TRACE_LEVEL: _levels.TRACE_LEVEL,
106
- DEBUG_LEVEL: _levels.DEBUG_LEVEL,
107
- INFO_LEVEL: _levels.INFO_LEVEL,
108
- WARNING_LEVEL: _levels.WARNING_LEVEL,
109
- ERROR_LEVEL: _levels.ERROR_LEVEL,
110
- FATAL_LEVEL: _levels.FATAL_LEVEL,
111
105
  trace: trace,
112
106
  debug: debug,
113
107
  info: info,
@@ -115,10 +109,10 @@ Object.assign(log, {
115
109
  error: error,
116
110
  fatal: fatal,
117
111
  setLogLevel: setLogLevel,
118
- setLogFileBaseName: setLogFileBaseName,
119
- setLogDirectoryPath: setLogDirectoryPath,
120
112
  setLogOptions: setLogOptions,
121
- getLogFileContent: getLogFileContent
113
+ getLogFileContent: getLogFileContent,
114
+ setLogFileBaseName: setLogFileBaseName,
115
+ setLogDirectoryPath: setLogDirectoryPath
122
116
  });
123
117
  function getLogFilePath() {
124
118
  var logFileName = "".concat(logFileBaseName, ".log"), logFilePath = (0, _path1).concatenatePaths(logDirectoryPath, logFileName);
@@ -177,7 +171,7 @@ function lineNumberFromStackMessage(stackMessage) {
177
171
  return lineNumber;
178
172
  }
179
173
  function padStartWithZeroes(string, targetLength) {
180
- var padString = "0", paddedString = padStart(string, targetLength, padString);
174
+ var padString = _constants.ZERO, paddedString = padStart(string, targetLength, padString);
181
175
  return paddedString;
182
176
  }
183
177
  function padStart(string, targetLength, padString) {
@@ -189,4 +183,4 @@ function padStart(string, targetLength, padString) {
189
183
  return paddedString;
190
184
  }
191
185
 
192
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbG9nZ2luZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY29uY2F0ZW5hdGVQYXRocyB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGF0aFwiO1xuaW1wb3J0IHsgY2hlY2tGaWxlRXhpc3RzLCByZWFkRmlsZSwgYXBwZW5kVG9GaWxlLCByZW5hbWVGaWxlLCBnZXRTdGF0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZmlsZVN5c3RlbVwiO1xuaW1wb3J0IHsgREVGQVVMVF9MT0dfTEVWRUwsIERFRkFVTFRfTE9HX0ZJTEVfQkFTRV9OQU1FLCBERUZBVUxUX0xPR19ESVJFQ1RPUllfUEFUSCB9IGZyb20gXCIuLi9kZWZhdWx0c1wiO1xuaW1wb3J0IHsgVFJBQ0VfTEVWRUwsIERFQlVHX0xFVkVMLCBJTkZPX0xFVkVMLCBXQVJOSU5HX0xFVkVMLCBFUlJPUl9MRVZFTCwgRkFUQUxfTEVWRUwgfSBmcm9tIFwiLi4vbGV2ZWxzXCI7XG5cbmNvbnN0IGxldmVscyA9IFtcbiAgVFJBQ0VfTEVWRUwsXG4gIERFQlVHX0xFVkVMLFxuICBJTkZPX0xFVkVMLFxuICBXQVJOSU5HX0xFVkVMLFxuICBFUlJPUl9MRVZFTCxcbiAgRkFUQUxfTEVWRUwsXG5dO1xuXG5sZXQgbG9nTGV2ZWwgPSBERUZBVUxUX0xPR19MRVZFTCxcbiAgICBsb2dGaWxlQmFzZU5hbWUgPSBERUZBVUxUX0xPR19GSUxFX0JBU0VfTkFNRSxcbiAgICBsb2dEaXJlY3RvcnlQYXRoID0gREVGQVVMVF9MT0dfRElSRUNUT1JZX1BBVEg7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2cobWVzc2FnZU9yRXJyb3IsIGxldmVsID0gRU1QVFlfU1RSSU5HKSB7XG4gIGxldCBzYWxpZW50U3RhY2tNZXNzYWdlSW5kZXggPSAxO1xuXG4gIGlmIChsZXZlbCAhPT0gRU1QVFlfU1RSSU5HKSB7XG4gICAgY29uc3QgbGV2ZWxJbmRleCA9IGxldmVscy5pbmRleE9mKGxldmVsKSxcbiAgICAgICAgICBsb2dMZXZlbEluZGV4ID0gbGV2ZWxzLmluZGV4T2YobG9nTGV2ZWwpO1xuXG4gICAgaWYgKGxldmVsSW5kZXggPCBsb2dMZXZlbEluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2FsaWVudFN0YWNrTWVzc2FnZUluZGV4ICs9IDE7XG5cbiAgICBsZXZlbCA9IGAke2xldmVsfSBgOyAgLy8vXG4gIH1cblxuICBsZXQgZXJyb3IsXG4gICAgICBtZXNzYWdlO1xuXG4gIGlmIChtZXNzYWdlT3JFcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgZXJyb3IgPSBtZXNzYWdlT3JFcnJvcjsgLy8vXG5cbiAgICAoeyBtZXNzYWdlIH0gPSBlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2VPckVycm9yOyAvLy9cblxuICAgIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3QgeyBzdGFjayB9ID0gZXJyb3IsXG4gICAgICAgIHN0YWNrTWVzc2FnZXMgPSBzdGFja01lc3NhZ2VzRnJvbVN0YWNrKHN0YWNrKSxcbiAgICAgICAgcGVydGluZW50U3RhY2tNZXNzYWdlID0gc3RhY2tNZXNzYWdlc1tzYWxpZW50U3RhY2tNZXNzYWdlSW5kZXhdLFxuICAgICAgICBzdGFja01lc3NhZ2UgPSBwZXJ0aW5lbnRTdGFja01lc3NhZ2UsIC8vL1xuICAgICAgICB1cHBlckNhc2VMZXZlbCA9IGxldmVsLnRvVXBwZXJDYXNlKCksXG4gICAgICAgIGN1cnJlbnREYXRlQW5kVGltZVN0cmluZyA9IGdldEN1cnJlbnREYXRlQW5kVGltZVN0cmluZygpLFxuICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoRnJvbVN0YWNrTWVzc2FnZShzdGFja01lc3NhZ2UpLFxuICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlckZyb21TdGFja01lc3NhZ2Uoc3RhY2tNZXNzYWdlKSxcbiAgICAgICAgbG9nTWVzc2FnZSA9IGAke3VwcGVyQ2FzZUxldmVsfSR7Y3VycmVudERhdGVBbmRUaW1lU3RyaW5nfSAke2ZpbGVQYXRofSgke2xpbmVOdW1iZXJ9KSAke21lc3NhZ2V9YDtcblxuICBjb25zb2xlLmxvZyhsb2dNZXNzYWdlKTtcblxuICBpZiAobG9nRGlyZWN0b3J5UGF0aCAhPT0gbnVsbCkge1xuICAgIHJvbGxPdmVyTG9nRmlsZSgpO1xuXG4gICAgY29uc3QgbG9nRmlsZVBhdGggPSBnZXRMb2dGaWxlUGF0aCgpLFxuICAgICAgICAgIGxvZ0ZpbGVDb250ZW50ID0gYCR7bG9nTWVzc2FnZX1cXG5gO1xuXG4gICAgYXBwZW5kVG9GaWxlKGxvZ0ZpbGVQYXRoLCBsb2dGaWxlQ29udGVudCk7XG4gIH1cblxuICByZXR1cm4gbG9nTWVzc2FnZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2dcbn1cblxuZnVuY3Rpb24gdHJhY2UobWVzc2FnZSkgeyByZXR1cm4gbG9nKG1lc3NhZ2UsIFRSQUNFX0xFVkVMKTsgfVxuXG5mdW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKSB7IHJldHVybiBsb2cobWVzc2FnZSwgREVCVUdfTEVWRUwpOyB9XG5cbmZ1bmN0aW9uIGluZm8obWVzc2FnZSkgeyByZXR1cm4gbG9nKG1lc3NhZ2UsIElORk9fTEVWRUwpOyB9XG5cbmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkgeyByZXR1cm4gbG9nKG1lc3NhZ2UsIFdBUk5JTkdfTEVWRUwpOyB9XG5cbmZ1bmN0aW9uIGVycm9yKG1lc3NhZ2UpIHsgcmV0dXJuIGxvZyhtZXNzYWdlLCBFUlJPUl9MRVZFTCk7IH1cblxuZnVuY3Rpb24gZmF0YWwobWVzc2FnZSkgeyByZXR1cm4gbG9nKG1lc3NhZ2UsIEZBVEFMX0xFVkVMKTsgfVxuXG5mdW5jdGlvbiBzZXRMb2dMZXZlbChsZXZlbCkgeyBsb2dMZXZlbCA9IGxldmVsOyB9XG5cbmZ1bmN0aW9uIHNldExvZ0ZpbGVCYXNlTmFtZShmaWxlQmFzZU5hbWUpIHsgbG9nRmlsZUJhc2VOYW1lID0gZmlsZUJhc2VOYW1lOyB9XG5cbmZ1bmN0aW9uIHNldExvZ0RpcmVjdG9yeVBhdGgoZGlyZWN0b3J5UGF0aCkgeyBsb2dEaXJlY3RvcnlQYXRoID0gZGlyZWN0b3J5UGF0aDsgfVxuXG5mdW5jdGlvbiBzZXRMb2dPcHRpb25zKGxvZ09wdGlvbnMpIHtcbiAgY29uc3QgeyBsZXZlbCwgZmlsZUJhc2VOYW1lLCBkaXJlY3RvcnlQYXRoIH0gPSBsb2dPcHRpb25zO1xuXG4gIHNldExvZ0xldmVsKGxldmVsKTtcblxuICBzZXRMb2dGaWxlQmFzZU5hbWUoZmlsZUJhc2VOYW1lKTtcblxuICBzZXRMb2dEaXJlY3RvcnlQYXRoKGRpcmVjdG9yeVBhdGgpO1xufVxuXG5mdW5jdGlvbiBnZXRMb2dGaWxlQ29udGVudCgpIHtcbiAgY29uc3QgbG9nRmlsZVBhdGggPSBnZXRMb2dGaWxlUGF0aCgpLFxuICAgICAgICBsb2dGaWxlQ29udGVudCA9IHJlYWRGaWxlKGxvZ0ZpbGVQYXRoKTtcblxuICByZXR1cm4gbG9nRmlsZUNvbnRlbnQ7XG59XG5cbk9iamVjdC5hc3NpZ24obG9nLCB7XG4gIFRSQUNFX0xFVkVMLFxuICBERUJVR19MRVZFTCxcbiAgSU5GT19MRVZFTCxcbiAgV0FSTklOR19MRVZFTCxcbiAgRVJST1JfTEVWRUwsXG4gIEZBVEFMX0xFVkVMLFxuICB0cmFjZSxcbiAgZGVidWcsXG4gIGluZm8sXG4gIHdhcm5pbmcsXG4gIGVycm9yLFxuICBmYXRhbCxcbiAgc2V0TG9nTGV2ZWwsXG4gIHNldExvZ0ZpbGVCYXNlTmFtZSxcbiAgc2V0TG9nRGlyZWN0b3J5UGF0aCxcbiAgc2V0TG9nT3B0aW9ucyxcbiAgZ2V0TG9nRmlsZUNvbnRlbnRcbn0pO1xuXG5mdW5jdGlvbiBnZXRMb2dGaWxlUGF0aCgpIHtcbiAgY29uc3QgbG9nRmlsZU5hbWUgPSBgJHtsb2dGaWxlQmFzZU5hbWV9LmxvZ2AsXG4gICAgICAgIGxvZ0ZpbGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhsb2dEaXJlY3RvcnlQYXRoLCBsb2dGaWxlTmFtZSk7XG5cbiAgcmV0dXJuIGxvZ0ZpbGVQYXRoO1xufVxuXG5mdW5jdGlvbiBnZXRSb2xsZWRPdmVyTG9nRmlsZVBhdGgoKSB7XG4gIGNvbnN0IGN1cnJlbnREYXRlU3RyaW5nID0gZ2V0Q3VycmVudERhdGVTdHJpbmcoKSxcbiAgICAgICAgcm9sbGVkT3ZlckxvZ0ZpbGVOYW1lID0gYCR7bG9nRmlsZUJhc2VOYW1lfS4ke2N1cnJlbnREYXRlU3RyaW5nfS5sb2dgLFxuICAgICAgICByb2xsZWRPdmVyTG9nRmlsZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKGxvZ0RpcmVjdG9yeVBhdGgsIHJvbGxlZE92ZXJMb2dGaWxlTmFtZSk7XG5cbiAgcmV0dXJuIHJvbGxlZE92ZXJMb2dGaWxlUGF0aDtcbn1cblxuZnVuY3Rpb24gZ2V0TG9nRmlsZUxhc3RNb2RpZmllZERhdGUoKSB7XG4gIGNvbnN0IGxvZ0ZpbGVQYXRoID0gZ2V0TG9nRmlsZVBhdGgoKSxcbiAgICAgICAgbG9nRmlsZVN0YXRzID0gZ2V0U3RhdHMobG9nRmlsZVBhdGgpLFxuICAgICAgICB7IG10aW1lIH0gPSBsb2dGaWxlU3RhdHMsXG4gICAgICAgIGxvZ0ZpbGVMYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUobXRpbWUpOyAgLy8vXG5cbiAgcmV0dXJuIGxvZ0ZpbGVMYXN0TW9kaWZpZWREYXRlO1xufVxuXG5mdW5jdGlvbiByb2xsT3ZlckxvZ0ZpbGUoKSB7XG4gIGNvbnN0IGxvZ0ZpbGVQYXRoID0gZ2V0TG9nRmlsZVBhdGgoKSxcbiAgICAgICAgbG9nRmlsZUV4aXN0cyA9IGNoZWNrRmlsZUV4aXN0cyhsb2dGaWxlUGF0aCk7XG5cbiAgaWYgKCFsb2dGaWxlRXhpc3RzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbG9nRmlsZUxhc3RNb2RpZmllZERhdGUgPSBnZXRMb2dGaWxlTGFzdE1vZGlmaWVkRGF0ZSgpLFxuICAgICAgICBsb2dGaWxlTGFzdE1vZGlmaWVkRGF0ZUN1cnJlbnREYXRlID0gaXNEYXRlQ3VycmVudERhdGUobG9nRmlsZUxhc3RNb2RpZmllZERhdGUpO1xuXG4gIGlmICghbG9nRmlsZUxhc3RNb2RpZmllZERhdGVDdXJyZW50RGF0ZSkge1xuICAgIGNvbnN0IHJvbGxlZE92ZXJMb2dGaWxlUGF0aCA9IGdldFJvbGxlZE92ZXJMb2dGaWxlUGF0aCgpO1xuXG4gICAgcmVuYW1lRmlsZShsb2dGaWxlUGF0aCwgcm9sbGVkT3ZlckxvZ0ZpbGVQYXRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0RhdGVDdXJyZW50RGF0ZShkYXRlKSB7XG4gIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKSxcbiAgICAgICAgZGF0ZVN0cmluZyA9IGRhdGUudG9EYXRlU3RyaW5nKCksXG4gICAgICAgIGN1cnJlbnREYXRlU3RyaW5nID0gY3VycmVudERhdGUudG9EYXRlU3RyaW5nKCksXG4gICAgICAgIGRhdGVDdXJyZW50RGF0ZSA9IChkYXRlU3RyaW5nID09PSBjdXJyZW50RGF0ZVN0cmluZyk7XG5cbiAgcmV0dXJuIGRhdGVDdXJyZW50RGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0Q3VycmVudERhdGVTdHJpbmcoKSB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpLFxuICAgICAgICBkYXkgPSBwYWRTdGFydFdpdGhaZXJvZXMoZGF0ZS5nZXREYXRlKCksIDIpLCAgLy8vXG4gICAgICAgIG1vbnRoID0gcGFkU3RhcnRXaXRoWmVyb2VzKGRhdGUuZ2V0TW9udGgoKSArIDEsIDIpLCAvLy9cbiAgICAgICAgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgY3VycmVudERhdGVBbmRUaW1lU3RyaW5nID0gYCR7ZGF5fS0ke21vbnRofS0ke3llYXJ9YDtcblxuICByZXR1cm4gY3VycmVudERhdGVBbmRUaW1lU3RyaW5nO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RGF0ZUFuZFRpbWVTdHJpbmcoKSB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpLFxuICAgICAgICBkYXkgPSBwYWRTdGFydFdpdGhaZXJvZXMoZGF0ZS5nZXREYXRlKCksIDIpLCAgLy8vXG4gICAgICAgIG1vbnRoID0gcGFkU3RhcnRXaXRoWmVyb2VzKGRhdGUuZ2V0TW9udGgoKSArIDEsIDIpLCAvLy9cbiAgICAgICAgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgaG91cnMgPSBwYWRTdGFydFdpdGhaZXJvZXMoZGF0ZS5nZXRIb3VycygpLCAyKSxcbiAgICAgICAgbWludXRlcyA9IHBhZFN0YXJ0V2l0aFplcm9lcyhkYXRlLmdldE1pbnV0ZXMoKSwgMiksXG4gICAgICAgIHNlY29uZHMgPSBwYWRTdGFydFdpdGhaZXJvZXMoZGF0ZS5nZXRTZWNvbmRzKCksIDIpLFxuICAgICAgICBtaWxsaXNlY29uZHMgPSBwYWRTdGFydFdpdGhaZXJvZXMoZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSwgMyksXG4gICAgICAgIGN1cnJlbnREYXRlQW5kVGltZVN0cmluZyA9IGAke2RheX0tJHttb250aH0tJHt5ZWFyfSAke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc30uJHttaWxsaXNlY29uZHN9YDtcblxuICByZXR1cm4gY3VycmVudERhdGVBbmRUaW1lU3RyaW5nO1xufVxuXG5mdW5jdGlvbiBzdGFja01lc3NhZ2VzRnJvbVN0YWNrKHN0YWNrKSB7XG4gIGNvbnN0IHN0YWNrTWVzc2FnZXMgPSBbXSxcbiAgICAgICAgc3RhY2tMaW5lcyA9IHN0YWNrLnNwbGl0KC9cXHJcXG58XFxuLyk7XG5cbiAgbGV0IHN0YWNrTWVzc2FnZSA9IEVNUFRZX1NUUklORztcblxuICBzdGFja0xpbmVzLmZvckVhY2goKHN0YWNrTGluZSkgPT4ge1xuICAgIGNvbnN0IG1hdGNoZXMgPSAvXlxccyphdC4qLy50ZXN0KHN0YWNrTGluZSk7XG5cbiAgICBzdGFja01lc3NhZ2UgPSAoc3RhY2tNZXNzYWdlID09PSBFTVBUWV9TVFJJTkcpID9cbiAgICAgICAgICAgICAgICAgICAgICBzdGFja0xpbmUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7c3RhY2tNZXNzYWdlfVxcbiR7c3RhY2tMaW5lfWA7XG5cbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgc3RhY2tNZXNzYWdlcy5wdXNoKHN0YWNrTWVzc2FnZSk7XG5cbiAgICAgIHN0YWNrTWVzc2FnZSA9IEVNUFRZX1NUUklORztcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBzdGFja01lc3NhZ2VzO1xufVxuXG5mdW5jdGlvbiBmaWxlUGF0aEZyb21TdGFja01lc3NhZ2Uoc3RhY2tNZXNzYWdlKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBzdGFja01lc3NhZ2UubWF0Y2goLyhcXC8uKyk6XFxkKzpcXGQrL20pLFxuICAgICAgICBzZWNvbmRNYXRjaCA9IHNlY29uZChtYXRjaGVzKSxcbiAgICAgICAgYWJzb2x1dGVGaWxlUGF0aCA9IHNlY29uZE1hdGNoLCAgLy8vXG4gICAgICAgIGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UGF0aCA9IHBhdGgucmVzb2x2ZShcIi5cIiksICAvLy9cbiAgICAgICAgY3VycmVudFdvcmtpbmdEaXJlY3RvcnlQYXRoTGVuZ3RoID0gY3VycmVudFdvcmtpbmdEaXJlY3RvcnlQYXRoLmxlbmd0aCxcbiAgICAgICAgc3RhcnQgPSBjdXJyZW50V29ya2luZ0RpcmVjdG9yeVBhdGhMZW5ndGggKyAxLCAgLy8vXG4gICAgICAgIGZpbGVQYXRoID0gYWJzb2x1dGVGaWxlUGF0aC5zdWJzdHIoc3RhcnQpO1xuXG4gIHJldHVybiBmaWxlUGF0aDtcbn1cblxuZnVuY3Rpb24gbGluZU51bWJlckZyb21TdGFja01lc3NhZ2Uoc3RhY2tNZXNzYWdlKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBzdGFja01lc3NhZ2UubWF0Y2goLzooXFxkKykvbSksXG4gICAgICAgIHNlY29uZE1hdGNoID0gc2Vjb25kKG1hdGNoZXMpLFxuICAgICAgICBsaW5lTnVtYmVyID0gc2Vjb25kTWF0Y2g7IC8vL1xuXG4gIHJldHVybiBsaW5lTnVtYmVyO1xufVxuXG5mdW5jdGlvbiBwYWRTdGFydFdpdGhaZXJvZXMoc3RyaW5nLCB0YXJnZXRMZW5ndGgpIHtcbiAgY29uc3QgcGFkU3RyaW5nID0gXCIwXCIsXG4gICAgICAgIHBhZGRlZFN0cmluZyA9IHBhZFN0YXJ0KHN0cmluZywgdGFyZ2V0TGVuZ3RoLCBwYWRTdHJpbmcpO1xuXG4gIHJldHVybiBwYWRkZWRTdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZywgdGFyZ2V0TGVuZ3RoLCBwYWRTdHJpbmcpIHtcbiAgbGV0IHBhZGRpbmcgPSBFTVBUWV9TVFJJTkc7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRhcmdldExlbmd0aDsgaW5kZXgrKykge1xuICAgIHBhZGRpbmcgKz0gcGFkU3RyaW5nO1xuICB9XG5cbiAgY29uc3QgcGFkZGVkU3RyaW5nID0gYCR7cGFkZGluZ30ke3N0cmluZ31gLnN1YnN0cigtdGFyZ2V0TGVuZ3RoKTtcblxuICByZXR1cm4gcGFkZGVkU3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbImxvZyIsImxldmVscyIsImxvZ0xldmVsIiwibG9nRmlsZUJhc2VOYW1lIiwibG9nRGlyZWN0b3J5UGF0aCIsIm1lc3NhZ2VPckVycm9yIiwibGV2ZWwiLCJzYWxpZW50U3RhY2tNZXNzYWdlSW5kZXgiLCJsZXZlbEluZGV4IiwiaW5kZXhPZiIsImxvZ0xldmVsSW5kZXgiLCJlcnJvciIsIm1lc3NhZ2UiLCJFcnJvciIsInN0YWNrIiwic3RhY2tNZXNzYWdlcyIsInN0YWNrTWVzc2FnZXNGcm9tU3RhY2siLCJwZXJ0aW5lbnRTdGFja01lc3NhZ2UiLCJzdGFja01lc3NhZ2UiLCJ1cHBlckNhc2VMZXZlbCIsInRvVXBwZXJDYXNlIiwiY3VycmVudERhdGVBbmRUaW1lU3RyaW5nIiwiZ2V0Q3VycmVudERhdGVBbmRUaW1lU3RyaW5nIiwiZmlsZVBhdGgiLCJmaWxlUGF0aEZyb21TdGFja01lc3NhZ2UiLCJsaW5lTnVtYmVyIiwibGluZU51bWJlckZyb21TdGFja01lc3NhZ2UiLCJsb2dNZXNzYWdlIiwiY29uc29sZSIsInJvbGxPdmVyTG9nRmlsZSIsImxvZ0ZpbGVQYXRoIiwiZ2V0TG9nRmlsZVBhdGgiLCJsb2dGaWxlQ29udGVudCIsInRyYWNlIiwiZGVidWciLCJpbmZvIiwid2FybmluZyIsImZhdGFsIiwic2V0TG9nTGV2ZWwiLCJzZXRMb2dGaWxlQmFzZU5hbWUiLCJmaWxlQmFzZU5hbWUiLCJzZXRMb2dEaXJlY3RvcnlQYXRoIiwiZGlyZWN0b3J5UGF0aCIsInNldExvZ09wdGlvbnMiLCJsb2dPcHRpb25zIiwiZ2V0TG9nRmlsZUNvbnRlbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJUUkFDRV9MRVZFTCIsIkRFQlVHX0xFVkVMIiwiSU5GT19MRVZFTCIsIldBUk5JTkdfTEVWRUwiLCJFUlJPUl9MRVZFTCIsIkZBVEFMX0xFVkVMIiwibG9nRmlsZU5hbWUiLCJnZXRSb2xsZWRPdmVyTG9nRmlsZVBhdGgiLCJjdXJyZW50RGF0ZVN0cmluZyIsImdldEN1cnJlbnREYXRlU3RyaW5nIiwicm9sbGVkT3ZlckxvZ0ZpbGVOYW1lIiwicm9sbGVkT3ZlckxvZ0ZpbGVQYXRoIiwiZ2V0TG9nRmlsZUxhc3RNb2RpZmllZERhdGUiLCJsb2dGaWxlU3RhdHMiLCJtdGltZSIsImxvZ0ZpbGVMYXN0TW9kaWZpZWREYXRlIiwiRGF0ZSIsImxvZ0ZpbGVFeGlzdHMiLCJsb2dGaWxlTGFzdE1vZGlmaWVkRGF0ZUN1cnJlbnREYXRlIiwiaXNEYXRlQ3VycmVudERhdGUiLCJkYXRlIiwiY3VycmVudERhdGUiLCJkYXRlU3RyaW5nIiwidG9EYXRlU3RyaW5nIiwiZGF0ZUN1cnJlbnREYXRlIiwiZGF5IiwicGFkU3RhcnRXaXRoWmVyb2VzIiwiZ2V0RGF0ZSIsIm1vbnRoIiwiZ2V0TW9udGgiLCJ5ZWFyIiwiZ2V0RnVsbFllYXIiLCJob3VycyIsImdldEhvdXJzIiwibWludXRlcyIsImdldE1pbnV0ZXMiLCJzZWNvbmRzIiwiZ2V0U2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsImdldE1pbGxpc2Vjb25kcyIsInN0YWNrTGluZXMiLCJzcGxpdCIsImZvckVhY2giLCJzdGFja0xpbmUiLCJtYXRjaGVzIiwidGVzdCIsInB1c2giLCJtYXRjaCIsInNlY29uZE1hdGNoIiwiYWJzb2x1dGVGaWxlUGF0aCIsImN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UGF0aCIsInJlc29sdmUiLCJjdXJyZW50V29ya2luZ0RpcmVjdG9yeVBhdGhMZW5ndGgiLCJsZW5ndGgiLCJzdGFydCIsInN1YnN0ciIsInN0cmluZyIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInBhZGRlZFN0cmluZyIsInBhZFN0YXJ0IiwicGFkZGluZyIsImluZGV4Il0sIm1hcHBpbmdzIjoiQUFBQSxDQUFZOzs7O1FBd0JJQSxHQUFHLEdBQUhBLEdBQUc7O0FBdEJGLEdBQU0sQ0FBTixLQUFNO0FBRUEsR0FBb0IsQ0FBcEIsTUFBb0I7QUFDZCxHQUFjLENBQWQsVUFBYztBQUNWLEdBQW1CLENBQW5CLE1BQW1CO0FBQzBCLEdBQXlCLENBQXpCLFdBQXlCO0FBQ2IsR0FBYSxDQUFiLFNBQWE7QUFDVCxHQUFXLENBQVgsT0FBVzs7Ozs7Ozs7Ozs7OztBQUV6RyxHQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFDO0lBRjhFLE9BQVc7SUFBWCxPQUFXO0lBQVgsT0FBVztJQUFYLE9BQVc7SUFBWCxPQUFXO0lBQVgsT0FBVztBQVN6RyxDQUFDO0FBRUQsR0FBRyxDQUFDQyxRQUFRLEdBWjhFLFNBQWEsb0JBYW5HQyxlQUFlLEdBYnVFLFNBQWEsNkJBY25HQyxnQkFBZ0IsR0Fkc0UsU0FBYTtTQWdCdkZKLEdBQUcsQ0FBQ0ssY0FBYyxFQUF3QixDQUFDO1FBQXZCQyxLQUFLLG9FQW5CWixVQUFjO0lBb0J6QyxHQUFHLENBQUNDLHdCQUF3QixHQUFHLENBQUM7SUFF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
186
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbG9nZ2luZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgY29uY2F0ZW5hdGVQYXRocyB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGF0aFwiO1xuaW1wb3J0IHsgWkVSTywgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY2hlY2tGaWxlRXhpc3RzLCByZWFkRmlsZSwgYXBwZW5kVG9GaWxlLCByZW5hbWVGaWxlLCBnZXRTdGF0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZmlsZVN5c3RlbVwiO1xuaW1wb3J0IHsgREVGQVVMVF9MT0dfTEVWRUwsIERFRkFVTFRfTE9HX0ZJTEVfQkFTRV9OQU1FLCBERUZBVUxUX0xPR19ESVJFQ1RPUllfUEFUSCB9IGZyb20gXCIuLi9kZWZhdWx0c1wiO1xuaW1wb3J0IHsgVFJBQ0VfTEVWRUwsIERFQlVHX0xFVkVMLCBJTkZPX0xFVkVMLCBXQVJOSU5HX0xFVkVMLCBFUlJPUl9MRVZFTCwgRkFUQUxfTEVWRUwgfSBmcm9tIFwiLi4vbGV2ZWxzXCI7XG5cbmNvbnN0IGxldmVscyA9IFtcbiAgVFJBQ0VfTEVWRUwsXG4gIERFQlVHX0xFVkVMLFxuICBJTkZPX0xFVkVMLFxuICBXQVJOSU5HX0xFVkVMLFxuICBFUlJPUl9MRVZFTCxcbiAgRkFUQUxfTEVWRUwsXG5dO1xuXG5sZXQgbG9nTGV2ZWwgPSBERUZBVUxUX0xPR19MRVZFTCxcbiAgICBsb2dGaWxlQmFzZU5hbWUgPSBERUZBVUxUX0xPR19GSUxFX0JBU0VfTkFNRSxcbiAgICBsb2dEaXJlY3RvcnlQYXRoID0gREVGQVVMVF9MT0dfRElSRUNUT1JZX1BBVEg7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2cobWVzc2FnZU9yRXJyb3IsIGxldmVsID0gRU1QVFlfU1RSSU5HKSB7XG4gIGxldCBzYWxpZW50U3RhY2tNZXNzYWdlSW5kZXggPSAxO1xuXG4gIGlmIChsZXZlbCAhPT0gRU1QVFlfU1RSSU5HKSB7XG4gICAgY29uc3QgbGV2ZWxJbmRleCA9IGxldmVscy5pbmRleE9mKGxldmVsKSxcbiAgICAgICAgICBsb2dMZXZlbEluZGV4ID0gbGV2ZWxzLmluZGV4T2YobG9nTGV2ZWwpO1xuXG4gICAgaWYgKGxldmVsSW5kZXggPCBsb2dMZXZlbEluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2FsaWVudFN0YWNrTWVzc2FnZUluZGV4ICs9IDE7XG5cbiAgICBsZXZlbCA9IGAke2xldmVsfSBgOyAgLy8vXG4gIH1cblxuICBsZXQgZXJyb3IsXG4gICAgICBtZXNzYWdlO1xuXG4gIGlmIChtZXNzYWdlT3JFcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgZXJyb3IgPSBtZXNzYWdlT3JFcnJvcjsgLy8vXG5cbiAgICAoeyBtZXNzYWdlIH0gPSBlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2VPckVycm9yOyAvLy9cblxuICAgIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3QgeyBzdGFjayB9ID0gZXJyb3IsXG4gICAgICAgIHN0YWNrTWVzc2FnZXMgPSBzdGFja01lc3NhZ2VzRnJvbVN0YWNrKHN0YWNrKSxcbiAgICAgICAgcGVydGluZW50U3RhY2tNZXNzYWdlID0gc3RhY2tNZXNzYWdlc1tzYWxpZW50U3RhY2tNZXNzYWdlSW5kZXhdLFxuICAgICAgICBzdGFja01lc3NhZ2UgPSBwZXJ0aW5lbnRTdGFja01lc3NhZ2UsIC8vL1xuICAgICAgICB1cHBlckNhc2VMZXZlbCA9IGxldmVsLnRvVXBwZXJDYXNlKCksXG4gICAgICAgIGN1cnJlbnREYXRlQW5kVGltZVN0cmluZyA9IGdldEN1cnJlbnREYXRlQW5kVGltZVN0cmluZygpLFxuICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoRnJvbVN0YWNrTWVzc2FnZShzdGFja01lc3NhZ2UpLFxuICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlckZyb21TdGFja01lc3NhZ2Uoc3RhY2tNZXNzYWdlKSxcbiAgICAgICAgbG9nTWVzc2FnZSA9IGAke3VwcGVyQ2FzZUxldmVsfSR7Y3VycmVudERhdGVBbmRUaW1lU3RyaW5nfSAke2ZpbGVQYXRofSgke2xpbmVOdW1iZXJ9KSAke21lc3NhZ2V9YDtcblxuICBjb25zb2xlLmxvZyhsb2dNZXNzYWdlKTtcblxuICBpZiAobG9nRGlyZWN0b3J5UGF0aCAhPT0gbnVsbCkge1xuICAgIHJvbGxPdmVyTG9nRmlsZSgpO1xuXG4gICAgY29uc3QgbG9nRmlsZVBhdGggPSBnZXRMb2dGaWxlUGF0aCgpLFxuICAgICAgICAgIGxvZ0ZpbGVDb250ZW50ID0gYCR7bG9nTWVzc2FnZX1cXG5gO1xuXG4gICAgYXBwZW5kVG9GaWxlKGxvZ0ZpbGVQYXRoLCBsb2dGaWxlQ29udGVudCk7XG4gIH1cblxuICByZXR1cm4gbG9nTWVzc2FnZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2dcbn1cblxuZnVuY3Rpb24gdHJhY2UobWVzc2FnZSkgeyByZXR1cm4gbG9nKG1lc3NhZ2UsIFRSQUNFX0xFVkVMKTsgfVxuXG5mdW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKSB7IHJldHVybiBsb2cobWVzc2FnZSwgREVCVUdfTEVWRUwpOyB9XG5cbmZ1bmN0aW9uIGluZm8obWVzc2FnZSkgeyByZXR1cm4gbG9nKG1lc3NhZ2UsIElORk9fTEVWRUwpOyB9XG5cbmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkgeyByZXR1cm4gbG9nKG1lc3NhZ2UsIFdBUk5JTkdfTEVWRUwpOyB9XG5cbmZ1bmN0aW9uIGVycm9yKG1lc3NhZ2UpIHsgcmV0dXJuIGxvZyhtZXNzYWdlLCBFUlJPUl9MRVZFTCk7IH1cblxuZnVuY3Rpb24gZmF0YWwobWVzc2FnZSkgeyByZXR1cm4gbG9nKG1lc3NhZ2UsIEZBVEFMX0xFVkVMKTsgfVxuXG5mdW5jdGlvbiBzZXRMb2dMZXZlbChsZXZlbCkgeyBsb2dMZXZlbCA9IGxldmVsOyB9XG5cbmZ1bmN0aW9uIHNldExvZ09wdGlvbnMobG9nT3B0aW9ucykge1xuICBjb25zdCB7IGxldmVsLCBmaWxlQmFzZU5hbWUsIGRpcmVjdG9yeVBhdGggfSA9IGxvZ09wdGlvbnM7XG5cbiAgc2V0TG9nTGV2ZWwobGV2ZWwpO1xuXG4gIHNldExvZ0ZpbGVCYXNlTmFtZShmaWxlQmFzZU5hbWUpO1xuXG4gIHNldExvZ0RpcmVjdG9yeVBhdGgoZGlyZWN0b3J5UGF0aCk7XG59XG5cbmZ1bmN0aW9uIGdldExvZ0ZpbGVDb250ZW50KCkge1xuICBjb25zdCBsb2dGaWxlUGF0aCA9IGdldExvZ0ZpbGVQYXRoKCksXG4gICAgICAgIGxvZ0ZpbGVDb250ZW50ID0gcmVhZEZpbGUobG9nRmlsZVBhdGgpO1xuXG4gIHJldHVybiBsb2dGaWxlQ29udGVudDtcbn1cblxuZnVuY3Rpb24gc2V0TG9nRmlsZUJhc2VOYW1lKGZpbGVCYXNlTmFtZSkgeyBsb2dGaWxlQmFzZU5hbWUgPSBmaWxlQmFzZU5hbWU7IH1cblxuZnVuY3Rpb24gc2V0TG9nRGlyZWN0b3J5UGF0aChkaXJlY3RvcnlQYXRoKSB7IGxvZ0RpcmVjdG9yeVBhdGggPSBkaXJlY3RvcnlQYXRoOyB9XG5cbk9iamVjdC5hc3NpZ24obG9nLCB7XG4gIHRyYWNlLFxuICBkZWJ1ZyxcbiAgaW5mbyxcbiAgd2FybmluZyxcbiAgZXJyb3IsXG4gIGZhdGFsLFxuICBzZXRMb2dMZXZlbCxcbiAgc2V0TG9nT3B0aW9ucyxcbiAgZ2V0TG9nRmlsZUNvbnRlbnQsXG4gIHNldExvZ0ZpbGVCYXNlTmFtZSxcbiAgc2V0TG9nRGlyZWN0b3J5UGF0aFxufSk7XG5cbmZ1bmN0aW9uIGdldExvZ0ZpbGVQYXRoKCkge1xuICBjb25zdCBsb2dGaWxlTmFtZSA9IGAke2xvZ0ZpbGVCYXNlTmFtZX0ubG9nYCxcbiAgICAgICAgbG9nRmlsZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKGxvZ0RpcmVjdG9yeVBhdGgsIGxvZ0ZpbGVOYW1lKTtcblxuICByZXR1cm4gbG9nRmlsZVBhdGg7XG59XG5cbmZ1bmN0aW9uIGdldFJvbGxlZE92ZXJMb2dGaWxlUGF0aCgpIHtcbiAgY29uc3QgY3VycmVudERhdGVTdHJpbmcgPSBnZXRDdXJyZW50RGF0ZVN0cmluZygpLFxuICAgICAgICByb2xsZWRPdmVyTG9nRmlsZU5hbWUgPSBgJHtsb2dGaWxlQmFzZU5hbWV9LiR7Y3VycmVudERhdGVTdHJpbmd9LmxvZ2AsXG4gICAgICAgIHJvbGxlZE92ZXJMb2dGaWxlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMobG9nRGlyZWN0b3J5UGF0aCwgcm9sbGVkT3ZlckxvZ0ZpbGVOYW1lKTtcblxuICByZXR1cm4gcm9sbGVkT3ZlckxvZ0ZpbGVQYXRoO1xufVxuXG5mdW5jdGlvbiBnZXRMb2dGaWxlTGFzdE1vZGlmaWVkRGF0ZSgpIHtcbiAgY29uc3QgbG9nRmlsZVBhdGggPSBnZXRMb2dGaWxlUGF0aCgpLFxuICAgICAgICBsb2dGaWxlU3RhdHMgPSBnZXRTdGF0cyhsb2dGaWxlUGF0aCksXG4gICAgICAgIHsgbXRpbWUgfSA9IGxvZ0ZpbGVTdGF0cyxcbiAgICAgICAgbG9nRmlsZUxhc3RNb2RpZmllZERhdGUgPSBuZXcgRGF0ZShtdGltZSk7ICAvLy9cblxuICByZXR1cm4gbG9nRmlsZUxhc3RNb2RpZmllZERhdGU7XG59XG5cbmZ1bmN0aW9uIHJvbGxPdmVyTG9nRmlsZSgpIHtcbiAgY29uc3QgbG9nRmlsZVBhdGggPSBnZXRMb2dGaWxlUGF0aCgpLFxuICAgICAgICBsb2dGaWxlRXhpc3RzID0gY2hlY2tGaWxlRXhpc3RzKGxvZ0ZpbGVQYXRoKTtcblxuICBpZiAoIWxvZ0ZpbGVFeGlzdHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBsb2dGaWxlTGFzdE1vZGlmaWVkRGF0ZSA9IGdldExvZ0ZpbGVMYXN0TW9kaWZpZWREYXRlKCksXG4gICAgICAgIGxvZ0ZpbGVMYXN0TW9kaWZpZWREYXRlQ3VycmVudERhdGUgPSBpc0RhdGVDdXJyZW50RGF0ZShsb2dGaWxlTGFzdE1vZGlmaWVkRGF0ZSk7XG5cbiAgaWYgKCFsb2dGaWxlTGFzdE1vZGlmaWVkRGF0ZUN1cnJlbnREYXRlKSB7XG4gICAgY29uc3Qgcm9sbGVkT3ZlckxvZ0ZpbGVQYXRoID0gZ2V0Um9sbGVkT3ZlckxvZ0ZpbGVQYXRoKCk7XG5cbiAgICByZW5hbWVGaWxlKGxvZ0ZpbGVQYXRoLCByb2xsZWRPdmVyTG9nRmlsZVBhdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRGF0ZUN1cnJlbnREYXRlKGRhdGUpIHtcbiAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLFxuICAgICAgICBkYXRlU3RyaW5nID0gZGF0ZS50b0RhdGVTdHJpbmcoKSxcbiAgICAgICAgY3VycmVudERhdGVTdHJpbmcgPSBjdXJyZW50RGF0ZS50b0RhdGVTdHJpbmcoKSxcbiAgICAgICAgZGF0ZUN1cnJlbnREYXRlID0gKGRhdGVTdHJpbmcgPT09IGN1cnJlbnREYXRlU3RyaW5nKTtcblxuICByZXR1cm4gZGF0ZUN1cnJlbnREYXRlO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RGF0ZVN0cmluZygpIHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCksXG4gICAgICAgIGRheSA9IHBhZFN0YXJ0V2l0aFplcm9lcyhkYXRlLmdldERhdGUoKSwgMiksICAvLy9cbiAgICAgICAgbW9udGggPSBwYWRTdGFydFdpdGhaZXJvZXMoZGF0ZS5nZXRNb250aCgpICsgMSwgMiksIC8vL1xuICAgICAgICB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBjdXJyZW50RGF0ZUFuZFRpbWVTdHJpbmcgPSBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xuXG4gIHJldHVybiBjdXJyZW50RGF0ZUFuZFRpbWVTdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnREYXRlQW5kVGltZVN0cmluZygpIHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCksXG4gICAgICAgIGRheSA9IHBhZFN0YXJ0V2l0aFplcm9lcyhkYXRlLmdldERhdGUoKSwgMiksICAvLy9cbiAgICAgICAgbW9udGggPSBwYWRTdGFydFdpdGhaZXJvZXMoZGF0ZS5nZXRNb250aCgpICsgMSwgMiksIC8vL1xuICAgICAgICB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBob3VycyA9IHBhZFN0YXJ0V2l0aFplcm9lcyhkYXRlLmdldEhvdXJzKCksIDIpLFxuICAgICAgICBtaW51dGVzID0gcGFkU3RhcnRXaXRoWmVyb2VzKGRhdGUuZ2V0TWludXRlcygpLCAyKSxcbiAgICAgICAgc2Vjb25kcyA9IHBhZFN0YXJ0V2l0aFplcm9lcyhkYXRlLmdldFNlY29uZHMoKSwgMiksXG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IHBhZFN0YXJ0V2l0aFplcm9lcyhkYXRlLmdldE1pbGxpc2Vjb25kcygpLCAzKSxcbiAgICAgICAgY3VycmVudERhdGVBbmRUaW1lU3RyaW5nID0gYCR7ZGF5fS0ke21vbnRofS0ke3llYXJ9ICR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfS4ke21pbGxpc2Vjb25kc31gO1xuXG4gIHJldHVybiBjdXJyZW50RGF0ZUFuZFRpbWVTdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHN0YWNrTWVzc2FnZXNGcm9tU3RhY2soc3RhY2spIHtcbiAgY29uc3Qgc3RhY2tNZXNzYWdlcyA9IFtdLFxuICAgICAgICBzdGFja0xpbmVzID0gc3RhY2suc3BsaXQoL1xcclxcbnxcXG4vKTtcblxuICBsZXQgc3RhY2tNZXNzYWdlID0gRU1QVFlfU1RSSU5HO1xuXG4gIHN0YWNrTGluZXMuZm9yRWFjaCgoc3RhY2tMaW5lKSA9PiB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IC9eXFxzKmF0LiovLnRlc3Qoc3RhY2tMaW5lKTtcblxuICAgIHN0YWNrTWVzc2FnZSA9IChzdGFja01lc3NhZ2UgPT09IEVNUFRZX1NUUklORykgP1xuICAgICAgICAgICAgICAgICAgICAgIHN0YWNrTGluZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtzdGFja01lc3NhZ2V9XFxuJHtzdGFja0xpbmV9YDtcblxuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICBzdGFja01lc3NhZ2VzLnB1c2goc3RhY2tNZXNzYWdlKTtcblxuICAgICAgc3RhY2tNZXNzYWdlID0gRU1QVFlfU1RSSU5HO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHN0YWNrTWVzc2FnZXM7XG59XG5cbmZ1bmN0aW9uIGZpbGVQYXRoRnJvbVN0YWNrTWVzc2FnZShzdGFja01lc3NhZ2UpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHN0YWNrTWVzc2FnZS5tYXRjaCgvKFxcLy4rKTpcXGQrOlxcZCsvbSksXG4gICAgICAgIHNlY29uZE1hdGNoID0gc2Vjb25kKG1hdGNoZXMpLFxuICAgICAgICBhYnNvbHV0ZUZpbGVQYXRoID0gc2Vjb25kTWF0Y2gsICAvLy9cbiAgICAgICAgY3VycmVudFdvcmtpbmdEaXJlY3RvcnlQYXRoID0gcGF0aC5yZXNvbHZlKFwiLlwiKSwgIC8vL1xuICAgICAgICBjdXJyZW50V29ya2luZ0RpcmVjdG9yeVBhdGhMZW5ndGggPSBjdXJyZW50V29ya2luZ0RpcmVjdG9yeVBhdGgubGVuZ3RoLFxuICAgICAgICBzdGFydCA9IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UGF0aExlbmd0aCArIDEsICAvLy9cbiAgICAgICAgZmlsZVBhdGggPSBhYnNvbHV0ZUZpbGVQYXRoLnN1YnN0cihzdGFydCk7XG5cbiAgcmV0dXJuIGZpbGVQYXRoO1xufVxuXG5mdW5jdGlvbiBsaW5lTnVtYmVyRnJvbVN0YWNrTWVzc2FnZShzdGFja01lc3NhZ2UpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHN0YWNrTWVzc2FnZS5tYXRjaCgvOihcXGQrKS9tKSxcbiAgICAgICAgc2Vjb25kTWF0Y2ggPSBzZWNvbmQobWF0Y2hlcyksXG4gICAgICAgIGxpbmVOdW1iZXIgPSBzZWNvbmRNYXRjaDsgLy8vXG5cbiAgcmV0dXJuIGxpbmVOdW1iZXI7XG59XG5cbmZ1bmN0aW9uIHBhZFN0YXJ0V2l0aFplcm9lcyhzdHJpbmcsIHRhcmdldExlbmd0aCkge1xuICBjb25zdCBwYWRTdHJpbmcgPSBaRVJPLCAvLy9cbiAgICAgICAgcGFkZGVkU3RyaW5nID0gcGFkU3RhcnQoc3RyaW5nLCB0YXJnZXRMZW5ndGgsIHBhZFN0cmluZyk7XG5cbiAgcmV0dXJuIHBhZGRlZFN0cmluZztcbn1cblxuZnVuY3Rpb24gcGFkU3RhcnQoc3RyaW5nLCB0YXJnZXRMZW5ndGgsIHBhZFN0cmluZykge1xuICBsZXQgcGFkZGluZyA9IEVNUFRZX1NUUklORztcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGFyZ2V0TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgcGFkZGluZyArPSBwYWRTdHJpbmc7XG4gIH1cblxuICBjb25zdCBwYWRkZWRTdHJpbmcgPSBgJHtwYWRkaW5nfSR7c3RyaW5nfWAuc3Vic3RyKC10YXJnZXRMZW5ndGgpO1xuXG4gIHJldHVybiBwYWRkZWRTdHJpbmc7XG59XG4iXSwibmFtZXMiOlsibG9nIiwibGV2ZWxzIiwibG9nTGV2ZWwiLCJsb2dGaWxlQmFzZU5hbWUiLCJsb2dEaXJlY3RvcnlQYXRoIiwibWVzc2FnZU9yRXJyb3IiLCJsZXZlbCIsInNhbGllbnRTdGFja01lc3NhZ2VJbmRleCIsImxldmVsSW5kZXgiLCJpbmRleE9mIiwibG9nTGV2ZWxJbmRleCIsImVycm9yIiwibWVzc2FnZSIsIkVycm9yIiwic3RhY2siLCJzdGFja01lc3NhZ2VzIiwic3RhY2tNZXNzYWdlc0Zyb21TdGFjayIsInBlcnRpbmVudFN0YWNrTWVzc2FnZSIsInN0YWNrTWVzc2FnZSIsInVwcGVyQ2FzZUxldmVsIiwidG9VcHBlckNhc2UiLCJjdXJyZW50RGF0ZUFuZFRpbWVTdHJpbmciLCJnZXRDdXJyZW50RGF0ZUFuZFRpbWVTdHJpbmciLCJmaWxlUGF0aCIsImZpbGVQYXRoRnJvbVN0YWNrTWVzc2FnZSIsImxpbmVOdW1iZXIiLCJsaW5lTnVtYmVyRnJvbVN0YWNrTWVzc2FnZSIsImxvZ01lc3NhZ2UiLCJjb25zb2xlIiwicm9sbE92ZXJMb2dGaWxlIiwibG9nRmlsZVBhdGgiLCJnZXRMb2dGaWxlUGF0aCIsImxvZ0ZpbGVDb250ZW50IiwidHJhY2UiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuaW5nIiwiZmF0YWwiLCJzZXRMb2dMZXZlbCIsInNldExvZ09wdGlvbnMiLCJsb2dPcHRpb25zIiwiZmlsZUJhc2VOYW1lIiwiZGlyZWN0b3J5UGF0aCIsInNldExvZ0ZpbGVCYXNlTmFtZSIsInNldExvZ0RpcmVjdG9yeVBhdGgiLCJnZXRMb2dGaWxlQ29udGVudCIsIk9iamVjdCIsImFzc2lnbiIsImxvZ0ZpbGVOYW1lIiwiZ2V0Um9sbGVkT3ZlckxvZ0ZpbGVQYXRoIiwiY3VycmVudERhdGVTdHJpbmciLCJnZXRDdXJyZW50RGF0ZVN0cmluZyIsInJvbGxlZE92ZXJMb2dGaWxlTmFtZSIsInJvbGxlZE92ZXJMb2dGaWxlUGF0aCIsImdldExvZ0ZpbGVMYXN0TW9kaWZpZWREYXRlIiwibG9nRmlsZVN0YXRzIiwibXRpbWUiLCJsb2dGaWxlTGFzdE1vZGlmaWVkRGF0ZSIsIkRhdGUiLCJsb2dGaWxlRXhpc3RzIiwibG9nRmlsZUxhc3RNb2RpZmllZERhdGVDdXJyZW50RGF0ZSIsImlzRGF0ZUN1cnJlbnREYXRlIiwiZGF0ZSIsImN1cnJlbnREYXRlIiwiZGF0ZVN0cmluZyIsInRvRGF0ZVN0cmluZyIsImRhdGVDdXJyZW50RGF0ZSIsImRheSIsInBhZFN0YXJ0V2l0aFplcm9lcyIsImdldERhdGUiLCJtb250aCIsImdldE1vbnRoIiwieWVhciIsImdldEZ1bGxZZWFyIiwiaG91cnMiLCJnZXRIb3VycyIsIm1pbnV0ZXMiLCJnZXRNaW51dGVzIiwic2Vjb25kcyIsImdldFNlY29uZHMiLCJtaWxsaXNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJzdGFja0xpbmVzIiwic3BsaXQiLCJmb3JFYWNoIiwic3RhY2tMaW5lIiwibWF0Y2hlcyIsInRlc3QiLCJwdXNoIiwibWF0Y2giLCJzZWNvbmRNYXRjaCIsImFic29sdXRlRmlsZVBhdGgiLCJjdXJyZW50V29ya2luZ0RpcmVjdG9yeVBhdGgiLCJyZXNvbHZlIiwiY3VycmVudFdvcmtpbmdEaXJlY3RvcnlQYXRoTGVuZ3RoIiwibGVuZ3RoIiwic3RhcnQiLCJzdWJzdHIiLCJzdHJpbmciLCJ0YXJnZXRMZW5ndGgiLCJwYWRTdHJpbmciLCJwYWRkZWRTdHJpbmciLCJwYWRTdGFydCIsInBhZGRpbmciLCJpbmRleCJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQXdCSUEsR0FBRyxHQUFIQSxHQUFHOztBQXRCRixHQUFNLENBQU4sS0FBTTtBQUVBLEdBQW9CLENBQXBCLE1BQW9CO0FBQ1YsR0FBbUIsQ0FBbkIsTUFBbUI7QUFDakIsR0FBYyxDQUFkLFVBQWM7QUFDNkIsR0FBeUIsQ0FBekIsV0FBeUI7QUFDYixHQUFhLENBQWIsU0FBYTtBQUNULEdBQVcsQ0FBWCxPQUFXOzs7Ozs7Ozs7Ozs7O0FBRXpHLEdBQUssQ0FBQ0MsTUFBTSxHQUFHLENBQUM7SUFGOEUsT0FBVztJQUFYLE9BQVc7SUFBWCxPQUFXO0lBQVgsT0FBVztJQUFYLE9BQVc7SUFBWCxPQUFXO0FBU3pHLENBQUM7QUFFRCxHQUFHLENBQUNDLFFBQVEsR0FaOEUsU0FBYSxvQkFhbkdDLGVBQWUsR0FidUUsU0FBYSw2QkFjbkdDLGdCQUFnQixHQWRzRSxTQUFhO1NBZ0J2RkosR0FBRyxDQUFDSyxjQUFjLEVBQXdCLENBQUM7UUFBdkJDLEtBQUssb0VBbEJOLFVBQWM7SUFtQi9DLEdBQUcsQ0FBQ0Msd0JBQXdCLEdBQUcsQ0FBQztJQUVoQyxFQUFFLEVBQUVELEtBQUssS0FyQndCLFVBQWMsZUFxQm5CLENBQUM7UUFDM0IsR0FBSyxDQUFDRSxVQUFVLEdBQUdQLE1BQU0sQ0FBQ1EsT0FBTyxDQUFDSCxLQUFLLEdBQ2pDSSxhQUFhLEdBQUdULE1BQU0sQ0FBQ1EsT0FBTyxDQUFDUCxRQUFRO1FBRTdDLEVBQUUsRUFBRU0sVUFBVSxHQUFHRSxh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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "necessary",
3
3
  "author": "James Smith",
4
- "version": "11.1.8",
4
+ "version": "11.1.10",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/necessary",
7
7
  "description": "A collection of utility functions.",
package/src/constants.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ export const ZERO = "0";
3
4
  export const DATA = "data";
4
5
  export const ERROR = "error";
5
6
  export const STRING = "string";
@@ -3,8 +3,8 @@
3
3
  import path from "path";
4
4
 
5
5
  import { second } from "../utilities/array";
6
- import { EMPTY_STRING } from "../constants";
7
6
  import { concatenatePaths } from "../utilities/path";
7
+ import { ZERO, EMPTY_STRING } from "../constants";
8
8
  import { checkFileExists, readFile, appendToFile, renameFile, getStats } from "../utilities/fileSystem";
9
9
  import { DEFAULT_LOG_LEVEL, DEFAULT_LOG_FILE_BASE_NAME, DEFAULT_LOG_DIRECTORY_PATH } from "../defaults";
10
10
  import { TRACE_LEVEL, DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL, FATAL_LEVEL } from "../levels";
@@ -93,10 +93,6 @@ function fatal(message) { return log(message, FATAL_LEVEL); }
93
93
 
94
94
  function setLogLevel(level) { logLevel = level; }
95
95
 
96
- function setLogFileBaseName(fileBaseName) { logFileBaseName = fileBaseName; }
97
-
98
- function setLogDirectoryPath(directoryPath) { logDirectoryPath = directoryPath; }
99
-
100
96
  function setLogOptions(logOptions) {
101
97
  const { level, fileBaseName, directoryPath } = logOptions;
102
98
 
@@ -114,13 +110,11 @@ function getLogFileContent() {
114
110
  return logFileContent;
115
111
  }
116
112
 
113
+ function setLogFileBaseName(fileBaseName) { logFileBaseName = fileBaseName; }
114
+
115
+ function setLogDirectoryPath(directoryPath) { logDirectoryPath = directoryPath; }
116
+
117
117
  Object.assign(log, {
118
- TRACE_LEVEL,
119
- DEBUG_LEVEL,
120
- INFO_LEVEL,
121
- WARNING_LEVEL,
122
- ERROR_LEVEL,
123
- FATAL_LEVEL,
124
118
  trace,
125
119
  debug,
126
120
  info,
@@ -128,10 +122,10 @@ Object.assign(log, {
128
122
  error,
129
123
  fatal,
130
124
  setLogLevel,
131
- setLogFileBaseName,
132
- setLogDirectoryPath,
133
125
  setLogOptions,
134
- getLogFileContent
126
+ getLogFileContent,
127
+ setLogFileBaseName,
128
+ setLogDirectoryPath
135
129
  });
136
130
 
137
131
  function getLogFilePath() {
@@ -253,7 +247,7 @@ function lineNumberFromStackMessage(stackMessage) {
253
247
  }
254
248
 
255
249
  function padStartWithZeroes(string, targetLength) {
256
- const padString = "0",
250
+ const padString = ZERO, ///
257
251
  paddedString = padStart(string, targetLength, padString);
258
252
 
259
253
  return paddedString;