necessary 17.1.0 → 17.1.2
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/.aiignore +11 -0
- package/.swcrc +3 -0
- package/lib/browser.js +17 -17
- package/lib/characters.js +68 -68
- package/lib/constants.js +13 -13
- package/lib/contentTypes.js +20 -20
- package/lib/defaults.js +11 -11
- package/lib/encodings.js +8 -8
- package/lib/headers.js +30 -30
- package/lib/keyCodes.js +22 -22
- package/lib/levels.js +14 -14
- package/lib/main.js +23 -23
- package/lib/methods.js +12 -12
- package/lib/statusCodes.js +40 -40
- package/lib/statusMessages.js +40 -40
- package/lib/utilities/ajax.js +30 -34
- package/lib/utilities/array.js +175 -200
- package/lib/utilities/asynchronous.js +34 -34
- package/lib/utilities/configuration.js +60 -74
- package/lib/utilities/fileSystem.js +47 -49
- package/lib/utilities/http.js +26 -26
- package/lib/utilities/logging.js +57 -65
- package/lib/utilities/package.js +19 -19
- package/lib/utilities/path.js +44 -75
- package/lib/utilities/request.js +22 -22
- package/lib/utilities/shell.js +24 -24
- package/lib/utilities/string.js +24 -25
- package/lib/utilities/template.js +19 -22
- package/lib/utilities/version.js +6 -6
- package/package.json +1 -1
|
@@ -64,28 +64,28 @@ _export(exports, {
|
|
|
64
64
|
return writeFile;
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
68
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
69
|
+
const _constants = require("../constants");
|
|
70
|
+
const _defaults = require("../defaults");
|
|
71
71
|
function _interop_require_default(obj) {
|
|
72
72
|
return obj && obj.__esModule ? obj : {
|
|
73
73
|
default: obj
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
76
|
function getEntryStats(entryPath) {
|
|
77
|
-
|
|
77
|
+
const entryStats = _fs.default.statSync(entryPath);
|
|
78
78
|
return entryStats;
|
|
79
79
|
}
|
|
80
80
|
function checkEntryExists(entryPath) {
|
|
81
|
-
|
|
81
|
+
const entryExists = _fs.default.existsSync(entryPath);
|
|
82
82
|
return entryExists;
|
|
83
83
|
}
|
|
84
84
|
function checkFileExists(filePath) {
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
let fileExists = false;
|
|
86
|
+
const entryPath = filePath, entryExists = checkEntryExists(entryPath);
|
|
87
87
|
if (entryExists) {
|
|
88
|
-
|
|
88
|
+
const entryFile = isEntryFile(entryPath);
|
|
89
89
|
if (entryFile) {
|
|
90
90
|
fileExists = true;
|
|
91
91
|
}
|
|
@@ -93,10 +93,10 @@ function checkFileExists(filePath) {
|
|
|
93
93
|
return fileExists;
|
|
94
94
|
}
|
|
95
95
|
function checkDirectoryExists(directoryPath) {
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
let directoryExists = false;
|
|
97
|
+
const entryPath = directoryPath, entryExists = checkEntryExists(entryPath);
|
|
98
98
|
if (entryExists) {
|
|
99
|
-
|
|
99
|
+
const entryDirectory = isEntryDirectory(entryPath);
|
|
100
100
|
if (entryDirectory) {
|
|
101
101
|
directoryExists = true;
|
|
102
102
|
}
|
|
@@ -104,25 +104,24 @@ function checkDirectoryExists(directoryPath) {
|
|
|
104
104
|
return directoryExists;
|
|
105
105
|
}
|
|
106
106
|
function isEntryFile(entryPath) {
|
|
107
|
-
|
|
107
|
+
const stats = getEntryStats(entryPath), entryFile = stats.isFile(); ///
|
|
108
108
|
return entryFile;
|
|
109
109
|
}
|
|
110
110
|
function isEntryDirectory(entryPath) {
|
|
111
|
-
|
|
111
|
+
const stats = getEntryStats(entryPath), entryDirectory = stats.isDirectory(); ///
|
|
112
112
|
return entryDirectory;
|
|
113
113
|
}
|
|
114
114
|
function isDirectoryEmpty(directoryPath) {
|
|
115
|
-
|
|
115
|
+
const subEntryNames = readDirectory(directoryPath), subEntryNamesLength = subEntryNames.length, directoryEmpty = subEntryNamesLength === 0;
|
|
116
116
|
return directoryEmpty;
|
|
117
117
|
}
|
|
118
118
|
function readDirectory(directoryPath) {
|
|
119
|
-
|
|
119
|
+
const subEntryNames = _fs.default.readdirSync(directoryPath);
|
|
120
120
|
return subEntryNames;
|
|
121
121
|
}
|
|
122
|
-
function readFile(filePath) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
encoding: encoding
|
|
122
|
+
function readFile(filePath, encoding = _defaults.DEFAULT_ENCODING) {
|
|
123
|
+
const options = {
|
|
124
|
+
encoding
|
|
126
125
|
}, content = _fs.default.readFileSync(filePath, options);
|
|
127
126
|
return content;
|
|
128
127
|
}
|
|
@@ -135,15 +134,14 @@ function writeFile(filePath, content) {
|
|
|
135
134
|
function appendToFile(filePath, content) {
|
|
136
135
|
_fs.default.appendFileSync(filePath, content);
|
|
137
136
|
}
|
|
138
|
-
function createDirectory(directoryPath) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
recursive: recursive
|
|
137
|
+
function createDirectory(directoryPath, recursive = true) {
|
|
138
|
+
const options = {
|
|
139
|
+
recursive
|
|
142
140
|
};
|
|
143
141
|
_fs.default.mkdirSync(directoryPath, options);
|
|
144
142
|
}
|
|
145
143
|
function createFile(filePath) {
|
|
146
|
-
|
|
144
|
+
const content = _constants.EMPTY_STRING;
|
|
147
145
|
_fs.default.writeFileSync(filePath, content);
|
|
148
146
|
}
|
|
149
147
|
function moveEntry(oldEntryPath, newEntryPath) {
|
|
@@ -151,40 +149,40 @@ function moveEntry(oldEntryPath, newEntryPath) {
|
|
|
151
149
|
renameEntry(oldEntryPath, newEntryPath);
|
|
152
150
|
}
|
|
153
151
|
function removeEntry(entryPath) {
|
|
154
|
-
|
|
155
|
-
force
|
|
156
|
-
recursive
|
|
152
|
+
const force = true, recursive = true, options = {
|
|
153
|
+
force,
|
|
154
|
+
recursive
|
|
157
155
|
};
|
|
158
156
|
_fs.default.rmSync(entryPath, options);
|
|
159
157
|
}
|
|
160
158
|
function renameEntry(oldEntryPath, newEntryPath) {
|
|
161
159
|
_fs.default.renameSync(oldEntryPath, newEntryPath);
|
|
162
160
|
}
|
|
163
|
-
|
|
164
|
-
getEntryStats
|
|
165
|
-
checkEntryExists
|
|
166
|
-
checkFileExists
|
|
167
|
-
checkDirectoryExists
|
|
168
|
-
isEntryFile
|
|
169
|
-
isEntryDirectory
|
|
170
|
-
isDirectoryEmpty
|
|
171
|
-
readDirectory
|
|
172
|
-
copyFile
|
|
173
|
-
readFile
|
|
174
|
-
writeFile
|
|
175
|
-
appendToFile
|
|
176
|
-
createDirectory
|
|
177
|
-
createFile
|
|
178
|
-
moveEntry
|
|
179
|
-
renameEntry
|
|
180
|
-
removeEntry
|
|
161
|
+
const _default = {
|
|
162
|
+
getEntryStats,
|
|
163
|
+
checkEntryExists,
|
|
164
|
+
checkFileExists,
|
|
165
|
+
checkDirectoryExists,
|
|
166
|
+
isEntryFile,
|
|
167
|
+
isEntryDirectory,
|
|
168
|
+
isDirectoryEmpty,
|
|
169
|
+
readDirectory,
|
|
170
|
+
copyFile,
|
|
171
|
+
readFile,
|
|
172
|
+
writeFile,
|
|
173
|
+
appendToFile,
|
|
174
|
+
createDirectory,
|
|
175
|
+
createFile,
|
|
176
|
+
moveEntry,
|
|
177
|
+
renameEntry,
|
|
178
|
+
removeEntry
|
|
181
179
|
};
|
|
182
180
|
function ensureParentDirectoryExists(entryPath) {
|
|
183
|
-
|
|
181
|
+
const parentDirectoryPath = _path.default.dirname(entryPath), parentDirectoryExists = checkDirectoryExists(parentDirectoryPath);
|
|
184
182
|
if (!parentDirectoryExists) {
|
|
185
|
-
|
|
183
|
+
const recursive = true;
|
|
186
184
|
createDirectory(parentDirectoryPath, recursive);
|
|
187
185
|
}
|
|
188
186
|
}
|
|
189
187
|
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgREVGQVVMVF9FTkNPRElORyB9IGZyb20gXCIuLi9kZWZhdWx0c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cnlTdGF0cyhlbnRyeVBhdGgpIHtcbiAgY29uc3QgZW50cnlTdGF0cyA9IGZzLnN0YXRTeW5jKGVudHJ5UGF0aCk7XG5cbiAgcmV0dXJuIGVudHJ5U3RhdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0VudHJ5RXhpc3RzKGVudHJ5UGF0aCkge1xuICBjb25zdCBlbnRyeUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMoZW50cnlQYXRoKTtcblxuICByZXR1cm4gZW50cnlFeGlzdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0ZpbGVFeGlzdHMoZmlsZVBhdGgpIHtcbiAgbGV0IGZpbGVFeGlzdHMgPSBmYWxzZTtcbiAgXG4gIGNvbnN0IGVudHJ5UGF0aCA9IGZpbGVQYXRoLCAvLy9cbiAgICAgICAgZW50cnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGVudHJ5UGF0aCk7XG4gIFxuICBpZiAoZW50cnlFeGlzdHMpIHtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShlbnRyeVBhdGgpO1xuICAgIFxuICAgIGlmIChlbnRyeUZpbGUpIHtcbiAgICAgIGZpbGVFeGlzdHMgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGZpbGVFeGlzdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0RpcmVjdG9yeUV4aXN0cyhkaXJlY3RvcnlQYXRoKSB7XG4gIGxldCBkaXJlY3RvcnlFeGlzdHMgPSBmYWxzZTtcblxuICBjb25zdCBlbnRyeVBhdGggPSBkaXJlY3RvcnlQYXRoLCAvLy9cbiAgICAgICAgZW50cnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGVudHJ5UGF0aCk7XG5cbiAgaWYgKGVudHJ5RXhpc3RzKSB7XG4gICAgY29uc3QgZW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGVudHJ5UGF0aCk7XG5cbiAgICBpZiAoZW50cnlEaXJlY3RvcnkpIHtcbiAgICAgIGRpcmVjdG9yeUV4aXN0cyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRpcmVjdG9yeUV4aXN0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW50cnlGaWxlKGVudHJ5UGF0aCkge1xuICBjb25zdCBzdGF0cyA9IGdldEVudHJ5U3RhdHMoZW50cnlQYXRoKSxcbiAgICAgICAgZW50cnlGaWxlID0gc3RhdHMuaXNGaWxlKCk7IC8vL1xuXG4gIHJldHVybiBlbnRyeUZpbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VudHJ5RGlyZWN0b3J5KGVudHJ5UGF0aCkge1xuICBjb25zdCBzdGF0cyA9IGdldEVudHJ5U3RhdHMoZW50cnlQYXRoKSxcbiAgICAgICAgZW50cnlEaXJlY3RvcnkgPSBzdGF0cy5pc0RpcmVjdG9yeSgpOyAvLy9cblxuICByZXR1cm4gZW50cnlEaXJlY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpcmVjdG9yeUVtcHR5KGRpcmVjdG9yeVBhdGgpIHtcbiAgY29uc3Qgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCksXG4gICAgICAgIHN1YkVudHJ5TmFtZXNMZW5ndGggPSBzdWJFbnRyeU5hbWVzLmxlbmd0aCxcbiAgICAgICAgZGlyZWN0b3J5RW1wdHkgPSAoc3ViRW50cnlOYW1lc0xlbmd0aCA9PT0gMCk7XG5cbiAgcmV0dXJuIGRpcmVjdG9yeUVtcHR5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZERpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSB7XG4gIGNvbnN0IHN1YkVudHJ5TmFtZXMgPSBmcy5yZWFkZGlyU3luYyhkaXJlY3RvcnlQYXRoKTtcblxuICByZXR1cm4gc3ViRW50cnlOYW1lcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGaWxlKGZpbGVQYXRoLCBlbmNvZGluZyA9IERFRkFVTFRfRU5DT0RJTkcpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICBlbmNvZGluZ1xuICAgICAgICB9LFxuICAgICAgICBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCBvcHRpb25zKTtcblxuICByZXR1cm4gY29udGVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlGaWxlKHNvdXJjZUZpbGVQYXRoLCB0YXJnZXRGaWxlcGF0aCkge1xuICBmcy5jb3B5RmlsZVN5bmMoc291cmNlRmlsZVBhdGgsIHRhcmdldEZpbGVwYXRoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRmlsZShmaWxlUGF0aCwgY29udGVudCkge1xuICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBjb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFRvRmlsZShmaWxlUGF0aCwgY29udGVudCkge1xuICBmcy5hcHBlbmRGaWxlU3luYyhmaWxlUGF0aCwgY29udGVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgcmVjdXJzaXZlID0gdHJ1ZSkge1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHJlY3Vyc2l2ZVxuICB9O1xuXG4gIGZzLm1rZGlyU3luYyhkaXJlY3RvcnlQYXRoLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbGUoZmlsZVBhdGgpIHtcbiAgY29uc3QgY29udGVudCA9IEVNUFRZX1NUUklORztcblxuICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBjb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVFbnRyeShvbGRFbnRyeVBhdGgsIG5ld0VudHJ5UGF0aCkge1xuICBlbnN1cmVQYXJlbnREaXJlY3RvcnlFeGlzdHMobmV3RW50cnlQYXRoKTtcblxuICByZW5hbWVFbnRyeShvbGRFbnRyeVBhdGgsIG5ld0VudHJ5UGF0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFbnRyeShlbnRyeVBhdGgpIHtcbiAgY29uc3QgZm9yY2UgPSB0cnVlLFxuICAgICAgICByZWN1cnNpdmUgPSB0cnVlLFxuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgIGZvcmNlLFxuICAgICAgICAgIHJlY3Vyc2l2ZVxuICAgICAgICB9O1xuXG4gIGZzLnJtU3luYyhlbnRyeVBhdGgsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuYW1lRW50cnkob2xkRW50cnlQYXRoLCBuZXdFbnRyeVBhdGgpIHtcbiAgZnMucmVuYW1lU3luYyhvbGRFbnRyeVBhdGgsIG5ld0VudHJ5UGF0aCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RW50cnlTdGF0cyxcbiAgY2hlY2tFbnRyeUV4aXN0cyxcbiAgY2hlY2tGaWxlRXhpc3RzLFxuICBjaGVja0RpcmVjdG9yeUV4aXN0cyxcbiAgaXNFbnRyeUZpbGUsXG4gIGlzRW50cnlEaXJlY3RvcnksXG4gIGlzRGlyZWN0b3J5RW1wdHksXG4gIHJlYWREaXJlY3RvcnksXG4gIGNvcHlGaWxlLFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlLFxuICBhcHBlbmRUb0ZpbGUsXG4gIGNyZWF0ZURpcmVjdG9yeSxcbiAgY3JlYXRlRmlsZSxcbiAgbW92ZUVudHJ5LFxuICByZW5hbWVFbnRyeSxcbiAgcmVtb3ZlRW50cnlcbn07XG5cbmZ1bmN0aW9uIGVuc3VyZVBhcmVudERpcmVjdG9yeUV4aXN0cyhlbnRyeVBhdGgpIHtcbiAgY29uc3QgcGFyZW50RGlyZWN0b3J5UGF0aCA9IHBhdGguZGlybmFtZShlbnRyeVBhdGgpLCAvLy9cbiAgICAgICAgcGFyZW50RGlyZWN0b3J5RXhpc3RzID0gY2hlY2tEaXJlY3RvcnlFeGlzdHMocGFyZW50RGlyZWN0b3J5UGF0aCk7XG5cbiAgaWYgKCFwYXJlbnREaXJlY3RvcnlFeGlzdHMpIHtcbiAgICBjb25zdCByZWN1cnNpdmUgPSB0cnVlO1xuXG4gICAgY3JlYXRlRGlyZWN0b3J5KHBhcmVudERpcmVjdG9yeVBhdGgsIHJlY3Vyc2l2ZSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJhcHBlbmRUb0ZpbGUiLCJjaGVja0RpcmVjdG9yeUV4aXN0cyIsImNoZWNrRW50cnlFeGlzdHMiLCJjaGVja0ZpbGVFeGlzdHMiLCJjb3B5RmlsZSIsImNyZWF0ZURpcmVjdG9yeSIsImNyZWF0ZUZpbGUiLCJnZXRFbnRyeVN0YXRzIiwiaXNEaXJlY3RvcnlFbXB0eSIsImlzRW50cnlEaXJlY3RvcnkiLCJpc0VudHJ5RmlsZSIsIm1vdmVFbnRyeSIsInJlYWREaXJlY3RvcnkiLCJyZWFkRmlsZSIsInJlbW92ZUVudHJ5IiwicmVuYW1lRW50cnkiLCJ3cml0ZUZpbGUiLCJlbnRyeVBhdGgiLCJlbnRyeVN0YXRzIiwiZnMiLCJzdGF0U3luYyIsImVudHJ5RXhpc3RzIiwiZXhpc3RzU3luYyIsImZpbGVQYXRoIiwiZmlsZUV4aXN0cyIsImVudHJ5RmlsZSIsImRpcmVjdG9yeVBhdGgiLCJkaXJlY3RvcnlFeGlzdHMiLCJlbnRyeURpcmVjdG9yeSIsInN0YXRzIiwiaXNGaWxlIiwiaXNEaXJlY3RvcnkiLCJzdWJFbnRyeU5hbWVzIiwic3ViRW50cnlOYW1lc0xlbmd0aCIsImxlbmd0aCIsImRpcmVjdG9yeUVtcHR5IiwicmVhZGRpclN5bmMiLCJlbmNvZGluZyIsIkRFRkFVTFRfRU5DT0RJTkciLCJvcHRpb25zIiwiY29udGVudCIsInJlYWRGaWxlU3luYyIsInNvdXJjZUZpbGVQYXRoIiwidGFyZ2V0RmlsZXBhdGgiLCJjb3B5RmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwiYXBwZW5kRmlsZVN5bmMiLCJyZWN1cnNpdmUiLCJta2RpclN5bmMiLCJFTVBUWV9TVFJJTkciLCJvbGRFbnRyeVBhdGgiLCJuZXdFbnRyeVBhdGgiLCJlbnN1cmVQYXJlbnREaXJlY3RvcnlFeGlzdHMiLCJmb3JjZSIsInJtU3luYyIsInJlbmFtZVN5bmMiLCJwYXJlbnREaXJlY3RvcnlQYXRoIiwicGF0aCIsImRpcm5hbWUiLCJwYXJlbnREaXJlY3RvcnlFeGlzdHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQW1HZ0JBO2VBQUFBOztRQTlEQUM7ZUFBQUE7O1FBdkJBQztlQUFBQTs7UUFNQUM7ZUFBQUE7O1FBdUVBQztlQUFBQTs7UUFZQUM7ZUFBQUE7O1FBUUFDO2VBQUFBOztRQTJCaEI7ZUFBQTs7UUFsSWdCQztlQUFBQTs7UUE0REFDO2VBQUFBOztRQVBBQztlQUFBQTs7UUFQQUM7ZUFBQUE7O1FBK0RBQztlQUFBQTs7UUF6Q0FDO2VBQUFBOztRQU1BQztlQUFBQTs7UUF5Q0FDO2VBQUFBOztRQVdBQztlQUFBQTs7UUF2Q0FDO2VBQUFBOzs7MkRBN0ZEOzZEQUNFOzJCQUVZOzBCQUNJOzs7Ozs7QUFFMUIsU0FBU1QsY0FBY1UsU0FBUztJQUNyQyxNQUFNQyxhQUFhQyxXQUFFLENBQUNDLFFBQVEsQ0FBQ0g7SUFFL0IsT0FBT0M7QUFDVDtBQUVPLFNBQVNoQixpQkFBaUJlLFNBQVM7SUFDeEMsTUFBTUksY0FBY0YsV0FBRSxDQUFDRyxVQUFVLENBQUNMO0lBRWxDLE9BQU9JO0FBQ1Q7QUFFTyxTQUFTbEIsZ0JBQWdCb0IsUUFBUTtJQUN0QyxJQUFJQyxhQUFhO0lBRWpCLE1BQU1QLFlBQVlNLFVBQ1pGLGNBQWNuQixpQkFBaUJlO0lBRXJDLElBQUlJLGFBQWE7UUFDZixNQUFNSSxZQUFZZixZQUFZTztRQUU5QixJQUFJUSxXQUFXO1lBQ2JELGFBQWE7UUFDZjtJQUNGO0lBRUEsT0FBT0E7QUFDVDtBQUVPLFNBQVN2QixxQkFBcUJ5QixhQUFhO0lBQ2hELElBQUlDLGtCQUFrQjtJQUV0QixNQUFNVixZQUFZUyxlQUNaTCxjQUFjbkIsaUJBQWlCZTtJQUVyQyxJQUFJSSxhQUFhO1FBQ2YsTUFBTU8saUJBQWlCbkIsaUJBQWlCUTtRQUV4QyxJQUFJVyxnQkFBZ0I7WUFDbEJELGtCQUFrQjtRQUNwQjtJQUNGO0lBRUEsT0FBT0E7QUFDVDtBQUVPLFNBQVNqQixZQUFZTyxTQUFTO0lBQ25DLE1BQU1ZLFFBQVF0QixjQUFjVSxZQUN0QlEsWUFBWUksTUFBTUMsTUFBTSxJQUFJLEdBQUc7SUFFckMsT0FBT0w7QUFDVDtBQUVPLFNBQVNoQixpQkFBaUJRLFNBQVM7SUFDeEMsTUFBTVksUUFBUXRCLGNBQWNVLFlBQ3RCVyxpQkFBaUJDLE1BQU1FLFdBQVcsSUFBSSxHQUFHO0lBRS9DLE9BQU9IO0FBQ1Q7QUFFTyxTQUFTcEIsaUJBQWlCa0IsYUFBYTtJQUM1QyxNQUFNTSxnQkFBZ0JwQixjQUFjYyxnQkFDOUJPLHNCQUFzQkQsY0FBY0UsTUFBTSxFQUMxQ0MsaUJBQWtCRix3QkFBd0I7SUFFaEQsT0FBT0U7QUFDVDtBQUVPLFNBQVN2QixjQUFjYyxhQUFhO0lBQ3pDLE1BQU1NLGdCQUFnQmIsV0FBRSxDQUFDaUIsV0FBVyxDQUFDVjtJQUVyQyxPQUFPTTtBQUNUO0FBRU8sU0FBU25CLFNBQVNVLFFBQVEsRUFBRWMsV0FBV0MsMEJBQWdCO0lBQzVELE1BQU1DLFVBQVU7UUFDUkY7SUFDRixHQUNBRyxVQUFVckIsV0FBRSxDQUFDc0IsWUFBWSxDQUFDbEIsVUFBVWdCO0lBRTFDLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTcEMsU0FBU3NDLGNBQWMsRUFBRUMsY0FBYztJQUNyRHhCLFdBQUUsQ0FBQ3lCLFlBQVksQ0FBQ0YsZ0JBQWdCQztBQUNsQztBQUVPLFNBQVMzQixVQUFVTyxRQUFRLEVBQUVpQixPQUFPO0lBQ3pDckIsV0FBRSxDQUFDMEIsYUFBYSxDQUFDdEIsVUFBVWlCO0FBQzdCO0FBRU8sU0FBU3hDLGFBQWF1QixRQUFRLEVBQUVpQixPQUFPO0lBQzVDckIsV0FBRSxDQUFDMkIsY0FBYyxDQUFDdkIsVUFBVWlCO0FBQzlCO0FBRU8sU0FBU25DLGdCQUFnQnFCLGFBQWEsRUFBRXFCLFlBQVksSUFBSTtJQUM3RCxNQUFNUixVQUFVO1FBQ2RRO0lBQ0Y7SUFFQTVCLFdBQUUsQ0FBQzZCLFNBQVMsQ0FBQ3RCLGVBQWVhO0FBQzlCO0FBRU8sU0FBU2pDLFdBQVdpQixRQUFRO0lBQ2pDLE1BQU1pQixVQUFVUyx1QkFBWTtJQUU1QjlCLFdBQUUsQ0FBQzBCLGFBQWEsQ0FBQ3RCLFVBQVVpQjtBQUM3QjtBQUVPLFNBQVM3QixVQUFVdUMsWUFBWSxFQUFFQyxZQUFZO0lBQ2xEQyw0QkFBNEJEO0lBRTVCcEMsWUFBWW1DLGNBQWNDO0FBQzVCO0FBRU8sU0FBU3JDLFlBQVlHLFNBQVM7SUFDbkMsTUFBTW9DLFFBQVEsTUFDUk4sWUFBWSxNQUNaUixVQUFVO1FBQ1JjO1FBQ0FOO0lBQ0Y7SUFFTjVCLFdBQUUsQ0FBQ21DLE1BQU0sQ0FBQ3JDLFdBQVdzQjtBQUN2QjtBQUVPLFNBQVN4QixZQUFZbUMsWUFBWSxFQUFFQyxZQUFZO0lBQ3BEaEMsV0FBRSxDQUFDb0MsVUFBVSxDQUFDTCxjQUFjQztBQUM5QjtNQUVBLFdBQWU7SUFDYjVDO0lBQ0FMO0lBQ0FDO0lBQ0FGO0lBQ0FTO0lBQ0FEO0lBQ0FEO0lBQ0FJO0lBQ0FSO0lBQ0FTO0lBQ0FHO0lBQ0FoQjtJQUNBSztJQUNBQztJQUNBSztJQUNBSTtJQUNBRDtBQUNGO0FBRUEsU0FBU3NDLDRCQUE0Qm5DLFNBQVM7SUFDNUMsTUFBTXVDLHNCQUFzQkMsYUFBSSxDQUFDQyxPQUFPLENBQUN6QyxZQUNuQzBDLHdCQUF3QjFELHFCQUFxQnVEO0lBRW5ELElBQUksQ0FBQ0csdUJBQXVCO1FBQzFCLE1BQU1aLFlBQVk7UUFFbEIxQyxnQkFBZ0JtRCxxQkFBcUJUO0lBQ3ZDO0FBQ0YifQ==
|
package/lib/utilities/http.js
CHANGED
|
@@ -34,12 +34,12 @@ _export(exports, {
|
|
|
34
34
|
return urlFromHostURIAndQuery;
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
const _array = require("../utilities/array");
|
|
38
|
+
const _constants = require("../constants");
|
|
39
|
+
const _characters = require("../characters");
|
|
40
40
|
function overwrite(headers, name, value) {
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
const lowerCaseName = name.toLowerCase(), existingNames = Object.getOwnPropertyNames(headers), existingName = existingNames.find((existingName)=>{
|
|
42
|
+
const existingLowerCaseName = existingName.toLowerCase();
|
|
43
43
|
if (existingLowerCaseName === lowerCaseName) {
|
|
44
44
|
return true;
|
|
45
45
|
}
|
|
@@ -49,8 +49,8 @@ function overwrite(headers, name, value) {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
function underwrite(headers, name, value) {
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
const lowerCaseName = name.toLowerCase(), existingNames = Object.getOwnPropertyNames(headers), existingName = existingNames.find((existingName)=>{
|
|
53
|
+
const existingLowerCaseName = existingName.toLowerCase();
|
|
54
54
|
if (existingLowerCaseName === lowerCaseName) {
|
|
55
55
|
return true;
|
|
56
56
|
}
|
|
@@ -60,45 +60,45 @@ function underwrite(headers, name, value) {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
function portFromHost(host) {
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
let port;
|
|
64
|
+
const matches = host.match(/^https?:\/\/([^\/]+)/), secondMatch = (0, _array.second)(matches), index = secondMatch.indexOf(_characters.COLON_CHARACTER);
|
|
65
65
|
if (index === -1) {
|
|
66
|
-
|
|
66
|
+
const secure = secureFromHost(host);
|
|
67
67
|
port = secure ? 443 : 80; ///
|
|
68
68
|
} else {
|
|
69
|
-
|
|
69
|
+
const start = index + 1, portString = secondMatch.substring(start);
|
|
70
70
|
port = Number(portString);
|
|
71
71
|
}
|
|
72
72
|
return port;
|
|
73
73
|
}
|
|
74
74
|
function secureFromHost(host) {
|
|
75
|
-
|
|
75
|
+
const secure = /^https:\/\//.test(host);
|
|
76
76
|
return secure;
|
|
77
77
|
}
|
|
78
78
|
function hostnameFromHost(host) {
|
|
79
|
-
|
|
79
|
+
const matches = host.match(/^https?:\/\/([^:\/]+)/), secondMatch = (0, _array.second)(matches), hostname = secondMatch; ///
|
|
80
80
|
return hostname;
|
|
81
81
|
}
|
|
82
82
|
function queryStringFromQuery(query) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
queryString +=
|
|
83
|
+
const names = Object.keys(query), namesLength = names.length, lastIndex = namesLength - 1, queryString = names.reduce((queryString, name, index)=>{
|
|
84
|
+
const value = query[name], encodedName = encodeURIComponent(name), encodedValue = encodeURIComponent(value), ampersandOrNothing = index !== lastIndex ? _characters.AMPERSAND_CHARACTER : _constants.EMPTY_STRING;
|
|
85
|
+
queryString += `${encodedName}=${encodedValue}${ampersandOrNothing}`;
|
|
86
86
|
return queryString;
|
|
87
87
|
}, _constants.EMPTY_STRING);
|
|
88
88
|
return queryString;
|
|
89
89
|
}
|
|
90
90
|
function urlFromHostURIAndQuery(host, uri, query) {
|
|
91
|
-
|
|
91
|
+
const queryString = queryStringFromQuery(query), url = queryString === _constants.EMPTY_STRING ? `${host}${uri}` : `${host}${uri}?${queryString}`;
|
|
92
92
|
return url;
|
|
93
93
|
}
|
|
94
|
-
|
|
95
|
-
overwrite
|
|
96
|
-
underwrite
|
|
97
|
-
portFromHost
|
|
98
|
-
secureFromHost
|
|
99
|
-
hostnameFromHost
|
|
100
|
-
queryStringFromQuery
|
|
101
|
-
urlFromHostURIAndQuery
|
|
94
|
+
const _default = {
|
|
95
|
+
overwrite,
|
|
96
|
+
underwrite,
|
|
97
|
+
portFromHost,
|
|
98
|
+
secureFromHost,
|
|
99
|
+
hostnameFromHost,
|
|
100
|
+
queryStringFromQuery,
|
|
101
|
+
urlFromHostURIAndQuery
|
|
102
102
|
};
|
|
103
103
|
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaHR0cC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ09MT05fQ0hBUkFDVEVSLCBBTVBFUlNBTkRfQ0hBUkFDVEVSIH0gZnJvbSBcIi4uL2NoYXJhY3RlcnNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG92ZXJ3cml0ZShoZWFkZXJzLCBuYW1lLCB2YWx1ZSkge1xuICBjb25zdCBsb3dlckNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICBleGlzdGluZ05hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycyksICAvLy9cbiAgICAgICAgZXhpc3RpbmdOYW1lID0gZXhpc3RpbmdOYW1lcy5maW5kKChleGlzdGluZ05hbWUpID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0xvd2VyQ2FzZU5hbWUgPSBleGlzdGluZ05hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgIGlmIChleGlzdGluZ0xvd2VyQ2FzZU5hbWUgPT09IGxvd2VyQ2FzZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAoZXhpc3RpbmdOYW1lICE9PSBudWxsKSB7XG4gICAgaGVhZGVyc1tleGlzdGluZ05hbWVdID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuZGVyd3JpdGUoaGVhZGVycywgbmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgbG93ZXJDYXNlTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgZXhpc3RpbmdOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMpLCAgLy8vXG4gICAgICAgIGV4aXN0aW5nTmFtZSA9IGV4aXN0aW5nTmFtZXMuZmluZCgoZXhpc3RpbmdOYW1lKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdMb3dlckNhc2VOYW1lID0gZXhpc3RpbmdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAoZXhpc3RpbmdMb3dlckNhc2VOYW1lID09PSBsb3dlckNhc2VOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgaWYgKGV4aXN0aW5nTmFtZSA9PT0gbnVsbCkge1xuICAgIGhlYWRlcnNbbmFtZV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9ydEZyb21Ib3N0KGhvc3QpIHtcbiAgbGV0IHBvcnQ7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IGhvc3QubWF0Y2goL15odHRwcz86XFwvXFwvKFteXFwvXSspLyksXG4gICAgICAgIHNlY29uZE1hdGNoID0gc2Vjb25kKG1hdGNoZXMpLFxuICAgICAgICBpbmRleCA9IHNlY29uZE1hdGNoLmluZGV4T2YoQ09MT05fQ0hBUkFDVEVSKTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgY29uc3Qgc2VjdXJlID0gc2VjdXJlRnJvbUhvc3QoaG9zdCk7XG5cbiAgICBwb3J0ID0gc2VjdXJlID8gNDQzIDogODA7IC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKyAxLFxuICAgICAgICAgIHBvcnRTdHJpbmcgPSBzZWNvbmRNYXRjaC5zdWJzdHJpbmcoc3RhcnQpO1xuXG4gICAgcG9ydCA9IE51bWJlcihwb3J0U3RyaW5nKTtcbiAgfVxuXG4gIHJldHVybiBwb3J0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJlRnJvbUhvc3QoaG9zdCkge1xuICBjb25zdCBzZWN1cmUgPSAvXmh0dHBzOlxcL1xcLy8udGVzdChob3N0KTtcblxuICByZXR1cm4gc2VjdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaG9zdG5hbWVGcm9tSG9zdChob3N0KSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBob3N0Lm1hdGNoKC9eaHR0cHM/OlxcL1xcLyhbXjpcXC9dKykvKSxcbiAgICAgICAgc2Vjb25kTWF0Y2ggPSBzZWNvbmQobWF0Y2hlcyksXG4gICAgICAgIGhvc3RuYW1lID0gc2Vjb25kTWF0Y2g7IC8vL1xuXG4gIHJldHVybiBob3N0bmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5U3RyaW5nRnJvbVF1ZXJ5KHF1ZXJ5KSB7XG4gIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMocXVlcnkpLFxuICAgICAgICBuYW1lc0xlbmd0aCA9IG5hbWVzLmxlbmd0aCxcbiAgICAgICAgbGFzdEluZGV4ID0gbmFtZXNMZW5ndGggLSAxLFxuICAgICAgICBxdWVyeVN0cmluZyA9IG5hbWVzLnJlZHVjZSgocXVlcnlTdHJpbmcsIG5hbWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBxdWVyeVtuYW1lXSxcbiAgICAgICAgICAgICAgICBlbmNvZGVkTmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSxcbiAgICAgICAgICAgICAgICBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpLFxuICAgICAgICAgICAgICAgIGFtcGVyc2FuZE9yTm90aGluZyA9IChpbmRleCAhPT0gbGFzdEluZGV4KSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTVBFUlNBTkRfQ0hBUkFDVEVSIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HO1xuICBcbiAgICAgICAgICBxdWVyeVN0cmluZyArPSBgJHtlbmNvZGVkTmFtZX09JHtlbmNvZGVkVmFsdWV9JHthbXBlcnNhbmRPck5vdGhpbmd9YDtcbiAgXG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5U3RyaW5nO1xuICAgICAgICB9LCBFTVBUWV9TVFJJTkcpO1xuXG4gIHJldHVybiBxdWVyeVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21Ib3N0VVJJQW5kUXVlcnkoaG9zdCwgdXJpLCBxdWVyeSkge1xuICBjb25zdCBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nRnJvbVF1ZXJ5KHF1ZXJ5KSxcbiAgICAgICAgdXJsID0gKHF1ZXJ5U3RyaW5nID09PSBFTVBUWV9TVFJJTkcpID9cbiAgICAgICAgICAgICAgICBgJHtob3N0fSR7dXJpfWAgOlxuICAgICAgICAgICAgICAgICAgYCR7aG9zdH0ke3VyaX0/
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaHR0cC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ09MT05fQ0hBUkFDVEVSLCBBTVBFUlNBTkRfQ0hBUkFDVEVSIH0gZnJvbSBcIi4uL2NoYXJhY3RlcnNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG92ZXJ3cml0ZShoZWFkZXJzLCBuYW1lLCB2YWx1ZSkge1xuICBjb25zdCBsb3dlckNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICBleGlzdGluZ05hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycyksICAvLy9cbiAgICAgICAgZXhpc3RpbmdOYW1lID0gZXhpc3RpbmdOYW1lcy5maW5kKChleGlzdGluZ05hbWUpID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0xvd2VyQ2FzZU5hbWUgPSBleGlzdGluZ05hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgIGlmIChleGlzdGluZ0xvd2VyQ2FzZU5hbWUgPT09IGxvd2VyQ2FzZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAoZXhpc3RpbmdOYW1lICE9PSBudWxsKSB7XG4gICAgaGVhZGVyc1tleGlzdGluZ05hbWVdID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuZGVyd3JpdGUoaGVhZGVycywgbmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgbG93ZXJDYXNlTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgZXhpc3RpbmdOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMpLCAgLy8vXG4gICAgICAgIGV4aXN0aW5nTmFtZSA9IGV4aXN0aW5nTmFtZXMuZmluZCgoZXhpc3RpbmdOYW1lKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdMb3dlckNhc2VOYW1lID0gZXhpc3RpbmdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAoZXhpc3RpbmdMb3dlckNhc2VOYW1lID09PSBsb3dlckNhc2VOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgaWYgKGV4aXN0aW5nTmFtZSA9PT0gbnVsbCkge1xuICAgIGhlYWRlcnNbbmFtZV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9ydEZyb21Ib3N0KGhvc3QpIHtcbiAgbGV0IHBvcnQ7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IGhvc3QubWF0Y2goL15odHRwcz86XFwvXFwvKFteXFwvXSspLyksXG4gICAgICAgIHNlY29uZE1hdGNoID0gc2Vjb25kKG1hdGNoZXMpLFxuICAgICAgICBpbmRleCA9IHNlY29uZE1hdGNoLmluZGV4T2YoQ09MT05fQ0hBUkFDVEVSKTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgY29uc3Qgc2VjdXJlID0gc2VjdXJlRnJvbUhvc3QoaG9zdCk7XG5cbiAgICBwb3J0ID0gc2VjdXJlID8gNDQzIDogODA7IC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKyAxLFxuICAgICAgICAgIHBvcnRTdHJpbmcgPSBzZWNvbmRNYXRjaC5zdWJzdHJpbmcoc3RhcnQpO1xuXG4gICAgcG9ydCA9IE51bWJlcihwb3J0U3RyaW5nKTtcbiAgfVxuXG4gIHJldHVybiBwb3J0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJlRnJvbUhvc3QoaG9zdCkge1xuICBjb25zdCBzZWN1cmUgPSAvXmh0dHBzOlxcL1xcLy8udGVzdChob3N0KTtcblxuICByZXR1cm4gc2VjdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaG9zdG5hbWVGcm9tSG9zdChob3N0KSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBob3N0Lm1hdGNoKC9eaHR0cHM/OlxcL1xcLyhbXjpcXC9dKykvKSxcbiAgICAgICAgc2Vjb25kTWF0Y2ggPSBzZWNvbmQobWF0Y2hlcyksXG4gICAgICAgIGhvc3RuYW1lID0gc2Vjb25kTWF0Y2g7IC8vL1xuXG4gIHJldHVybiBob3N0bmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5U3RyaW5nRnJvbVF1ZXJ5KHF1ZXJ5KSB7XG4gIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMocXVlcnkpLFxuICAgICAgICBuYW1lc0xlbmd0aCA9IG5hbWVzLmxlbmd0aCxcbiAgICAgICAgbGFzdEluZGV4ID0gbmFtZXNMZW5ndGggLSAxLFxuICAgICAgICBxdWVyeVN0cmluZyA9IG5hbWVzLnJlZHVjZSgocXVlcnlTdHJpbmcsIG5hbWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBxdWVyeVtuYW1lXSxcbiAgICAgICAgICAgICAgICBlbmNvZGVkTmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSxcbiAgICAgICAgICAgICAgICBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpLFxuICAgICAgICAgICAgICAgIGFtcGVyc2FuZE9yTm90aGluZyA9IChpbmRleCAhPT0gbGFzdEluZGV4KSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTVBFUlNBTkRfQ0hBUkFDVEVSIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HO1xuICBcbiAgICAgICAgICBxdWVyeVN0cmluZyArPSBgJHtlbmNvZGVkTmFtZX09JHtlbmNvZGVkVmFsdWV9JHthbXBlcnNhbmRPck5vdGhpbmd9YDtcbiAgXG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5U3RyaW5nO1xuICAgICAgICB9LCBFTVBUWV9TVFJJTkcpO1xuXG4gIHJldHVybiBxdWVyeVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21Ib3N0VVJJQW5kUXVlcnkoaG9zdCwgdXJpLCBxdWVyeSkge1xuICBjb25zdCBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nRnJvbVF1ZXJ5KHF1ZXJ5KSxcbiAgICAgICAgdXJsID0gKHF1ZXJ5U3RyaW5nID09PSBFTVBUWV9TVFJJTkcpID9cbiAgICAgICAgICAgICAgICBgJHtob3N0fSR7dXJpfWAgOlxuICAgICAgICAgICAgICAgICAgYCR7aG9zdH0ke3VyaX0/JHtxdWVyeVN0cmluZ31gO1xuXG4gIHJldHVybiB1cmw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgb3ZlcndyaXRlLFxuICB1bmRlcndyaXRlLFxuICBwb3J0RnJvbUhvc3QsXG4gIHNlY3VyZUZyb21Ib3N0LFxuICBob3N0bmFtZUZyb21Ib3N0LFxuICBxdWVyeVN0cmluZ0Zyb21RdWVyeSxcbiAgdXJsRnJvbUhvc3RVUklBbmRRdWVyeVxufTtcbiJdLCJuYW1lcyI6WyJob3N0bmFtZUZyb21Ib3N0Iiwib3ZlcndyaXRlIiwicG9ydEZyb21Ib3N0IiwicXVlcnlTdHJpbmdGcm9tUXVlcnkiLCJzZWN1cmVGcm9tSG9zdCIsInVuZGVyd3JpdGUiLCJ1cmxGcm9tSG9zdFVSSUFuZFF1ZXJ5IiwiaGVhZGVycyIsIm5hbWUiLCJ2YWx1ZSIsImxvd2VyQ2FzZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsImV4aXN0aW5nTmFtZXMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZXhpc3RpbmdOYW1lIiwiZmluZCIsImV4aXN0aW5nTG93ZXJDYXNlTmFtZSIsImhvc3QiLCJwb3J0IiwibWF0Y2hlcyIsIm1hdGNoIiwic2Vjb25kTWF0Y2giLCJzZWNvbmQiLCJpbmRleCIsImluZGV4T2YiLCJDT0xPTl9DSEFSQUNURVIiLCJzZWN1cmUiLCJzdGFydCIsInBvcnRTdHJpbmciLCJzdWJzdHJpbmciLCJOdW1iZXIiLCJ0ZXN0IiwiaG9zdG5hbWUiLCJxdWVyeSIsIm5hbWVzIiwia2V5cyIsIm5hbWVzTGVuZ3RoIiwibGVuZ3RoIiwibGFzdEluZGV4IiwicXVlcnlTdHJpbmciLCJyZWR1Y2UiLCJlbmNvZGVkTmFtZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImVuY29kZWRWYWx1ZSIsImFtcGVyc2FuZE9yTm90aGluZyIsIkFNUEVSU0FORF9DSEFSQUNURVIiLCJFTVBUWV9TVFJJTkciLCJ1cmkiLCJ1cmwiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXNHQTtlQUFBOztRQXJDZ0JBO2VBQUFBOztRQTNEQUM7ZUFBQUE7O1FBZ0NBQztlQUFBQTs7UUFtQ0FDO2VBQUFBOztRQWRBQztlQUFBQTs7UUFyQ0FDO2VBQUFBOztRQXVFQUM7ZUFBQUE7Ozt1QkEzRk87MkJBQ007NEJBQ3dCO0FBRTlDLFNBQVNMLFVBQVVNLE9BQU8sRUFBRUMsSUFBSSxFQUFFQyxLQUFLO0lBQzVDLE1BQU1DLGdCQUFnQkYsS0FBS0csV0FBVyxJQUNoQ0MsZ0JBQWdCQyxPQUFPQyxtQkFBbUIsQ0FBQ1AsVUFDM0NRLGVBQWVILGNBQWNJLElBQUksQ0FBQyxDQUFDRDtRQUNqQyxNQUFNRSx3QkFBd0JGLGFBQWFKLFdBQVc7UUFFdEQsSUFBSU0sMEJBQTBCUCxlQUFlO1lBQzNDLE9BQU87UUFDVDtJQUNGLE1BQU07SUFFWixJQUFJSyxpQkFBaUIsTUFBTTtRQUN6QlIsT0FBTyxDQUFDUSxhQUFhLEdBQUdOO0lBQzFCO0FBQ0Y7QUFFTyxTQUFTSixXQUFXRSxPQUFPLEVBQUVDLElBQUksRUFBRUMsS0FBSztJQUM3QyxNQUFNQyxnQkFBZ0JGLEtBQUtHLFdBQVcsSUFDaENDLGdCQUFnQkMsT0FBT0MsbUJBQW1CLENBQUNQLFVBQzNDUSxlQUFlSCxjQUFjSSxJQUFJLENBQUMsQ0FBQ0Q7UUFDakMsTUFBTUUsd0JBQXdCRixhQUFhSixXQUFXO1FBRXRELElBQUlNLDBCQUEwQlAsZUFBZTtZQUMzQyxPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRVosSUFBSUssaUJBQWlCLE1BQU07UUFDekJSLE9BQU8sQ0FBQ0MsS0FBSyxHQUFHQztJQUNsQjtBQUNGO0FBRU8sU0FBU1AsYUFBYWdCLElBQUk7SUFDL0IsSUFBSUM7SUFFSixNQUFNQyxVQUFVRixLQUFLRyxLQUFLLENBQUMseUJBQ3JCQyxjQUFjQyxJQUFBQSxhQUFNLEVBQUNILFVBQ3JCSSxRQUFRRixZQUFZRyxPQUFPLENBQUNDLDJCQUFlO0lBRWpELElBQUlGLFVBQVUsQ0FBQyxHQUFHO1FBQ2hCLE1BQU1HLFNBQVN2QixlQUFlYztRQUU5QkMsT0FBT1EsU0FBUyxNQUFNLElBQUksR0FBRztJQUMvQixPQUFPO1FBQ0wsTUFBTUMsUUFBUUosUUFBUSxHQUNoQkssYUFBYVAsWUFBWVEsU0FBUyxDQUFDRjtRQUV6Q1QsT0FBT1ksT0FBT0Y7SUFDaEI7SUFFQSxPQUFPVjtBQUNUO0FBRU8sU0FBU2YsZUFBZWMsSUFBSTtJQUNqQyxNQUFNUyxTQUFTLGNBQWNLLElBQUksQ0FBQ2Q7SUFFbEMsT0FBT1M7QUFDVDtBQUVPLFNBQVMzQixpQkFBaUJrQixJQUFJO0lBQ25DLE1BQU1FLFVBQVVGLEtBQUtHLEtBQUssQ0FBQywwQkFDckJDLGNBQWNDLElBQUFBLGFBQU0sRUFBQ0gsVUFDckJhLFdBQVdYLGFBQWEsR0FBRztJQUVqQyxPQUFPVztBQUNUO0FBRU8sU0FBUzlCLHFCQUFxQitCLEtBQUs7SUFDeEMsTUFBTUMsUUFBUXRCLE9BQU91QixJQUFJLENBQUNGLFFBQ3BCRyxjQUFjRixNQUFNRyxNQUFNLEVBQzFCQyxZQUFZRixjQUFjLEdBQzFCRyxjQUFjTCxNQUFNTSxNQUFNLENBQUMsQ0FBQ0QsYUFBYWhDLE1BQU1nQjtRQUM3QyxNQUFNZixRQUFReUIsS0FBSyxDQUFDMUIsS0FBSyxFQUNuQmtDLGNBQWNDLG1CQUFtQm5DLE9BQ2pDb0MsZUFBZUQsbUJBQW1CbEMsUUFDbENvQyxxQkFBcUIsQUFBQ3JCLFVBQVVlLFlBQ1RPLCtCQUFtQixHQUNqQkMsdUJBQVk7UUFFM0NQLGVBQWUsR0FBR0UsWUFBWSxDQUFDLEVBQUVFLGVBQWVDLG9CQUFvQjtRQUVwRSxPQUFPTDtJQUNULEdBQUdPLHVCQUFZO0lBRXJCLE9BQU9QO0FBQ1Q7QUFFTyxTQUFTbEMsdUJBQXVCWSxJQUFJLEVBQUU4QixHQUFHLEVBQUVkLEtBQUs7SUFDckQsTUFBTU0sY0FBY3JDLHFCQUFxQitCLFFBQ25DZSxNQUFNLEFBQUNULGdCQUFnQk8sdUJBQVksR0FDM0IsR0FBRzdCLE9BQU84QixLQUFLLEdBQ2IsR0FBRzlCLE9BQU84QixJQUFJLENBQUMsRUFBRVIsYUFBYTtJQUU5QyxPQUFPUztBQUNUO01BRUEsV0FBZTtJQUNiaEQ7SUFDQUk7SUFDQUg7SUFDQUU7SUFDQUo7SUFDQUc7SUFDQUc7QUFDRiJ9
|