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 +4 -2
- package/lib/utilities/logging.js +12 -18
- package/package.json +1 -1
- package/src/constants.js +1 -0
- package/src/utilities/logging.js +9 -15
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,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBaRVJPID0gXCIwXCI7XG5leHBvcnQgY29uc3QgREFUQSA9IFwiZGF0YVwiO1xuZXhwb3J0IGNvbnN0IEVSUk9SID0gXCJlcnJvclwiO1xuZXhwb3J0IGNvbnN0IFNUUklORyA9IFwic3RyaW5nXCI7XG5leHBvcnQgY29uc3QgTlVNQkVSID0gXCJudW1iZXJcIjtcbmV4cG9ydCBjb25zdCBCT09MRUFOID0gXCJib29sZWFuXCI7XG5leHBvcnQgY29uc3QgREVGQVVMVCA9IFwiZGVmYXVsdFwiO1xuZXhwb3J0IGNvbnN0IEVOVklST05NRU5UID0gXCJFTlZJUk9OTUVOVFwiO1xuZXhwb3J0IGNvbnN0IEVNUFRZX1NUUklORyA9IFwiXCI7XG4iXSwibmFtZXMiOlsiWkVSTyIsIkRBVEEiLCJFUlJPUiIsIlNUUklORyIsIk5VTUJFUiIsIkJPT0xFQU4iLCJERUZBVUxUIiwiRU5WSVJPTk1FTlQiLCJFTVBUWV9TVFJJTkciXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7O0FBRUwsR0FBSyxDQUFDQSxJQUFJLEdBQUcsQ0FBRztRQUFWQSxJQUFJLEdBQUpBLElBQUk7QUFDVixHQUFLLENBQUNDLElBQUksR0FBRyxDQUFNO1FBQWJBLElBQUksR0FBSkEsSUFBSTtBQUNWLEdBQUssQ0FBQ0MsS0FBSyxHQUFHLENBQU87UUFBZkEsS0FBSyxHQUFMQSxLQUFLO0FBQ1gsR0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBUTtRQUFqQkEsTUFBTSxHQUFOQSxNQUFNO0FBQ1osR0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBUTtRQUFqQkEsTUFBTSxHQUFOQSxNQUFNO0FBQ1osR0FBSyxDQUFDQyxPQUFPLEdBQUcsQ0FBUztRQUFuQkEsT0FBTyxHQUFQQSxPQUFPO0FBQ2IsR0FBSyxDQUFDQyxPQUFPLEdBQUcsQ0FBUztRQUFuQkEsT0FBTyxHQUFQQSxPQUFPO0FBQ2IsR0FBSyxDQUFDQyxXQUFXLEdBQUcsQ0FBYTtRQUEzQkEsV0FBVyxHQUFYQSxXQUFXO0FBQ2pCLEdBQUssQ0FBQ0MsWUFBWSxHQUFHLENBQUU7UUFBakJBLFlBQVksR0FBWkEsWUFBWSJ9
|
package/lib/utilities/logging.js
CHANGED
|
@@ -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 =
|
|
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
package/src/constants.js
CHANGED
package/src/utilities/logging.js
CHANGED
|
@@ -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 =
|
|
250
|
+
const padString = ZERO, ///
|
|
257
251
|
paddedString = padStart(string, targetLength, padString);
|
|
258
252
|
|
|
259
253
|
return paddedString;
|