@appium/support 2.59.5 → 2.61.0
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/build/lib/console.js +3 -3
- package/build/lib/console.js.map +1 -0
- package/build/lib/env.d.ts +8 -18
- package/build/lib/env.d.ts.map +1 -1
- package/build/lib/env.js +57 -36
- package/build/lib/env.js.map +1 -0
- package/build/lib/fs.d.ts +39 -10
- package/build/lib/fs.d.ts.map +1 -1
- package/build/lib/fs.js +20 -4
- package/build/lib/fs.js.map +1 -0
- package/build/lib/image-util.js +3 -3
- package/build/lib/image-util.js.map +1 -0
- package/build/lib/index.js.map +1 -0
- package/build/lib/log-internal.js +3 -3
- package/build/lib/log-internal.js.map +1 -0
- package/build/lib/logger.js.map +1 -0
- package/build/lib/logging.js +3 -3
- package/build/lib/logging.js.map +1 -0
- package/build/lib/mjpeg.js +3 -3
- package/build/lib/mjpeg.js.map +1 -0
- package/build/lib/mkdirp.js.map +1 -0
- package/build/lib/net.js +3 -3
- package/build/lib/net.js.map +1 -0
- package/build/lib/node.d.ts +10 -0
- package/build/lib/node.d.ts.map +1 -1
- package/build/lib/node.js +27 -3
- package/build/lib/node.js.map +1 -0
- package/build/lib/npm.d.ts +3 -1
- package/build/lib/npm.d.ts.map +1 -1
- package/build/lib/npm.js +39 -14
- package/build/lib/npm.js.map +1 -0
- package/build/lib/plist.js +3 -3
- package/build/lib/plist.js.map +1 -0
- package/build/lib/process.js.map +1 -0
- package/build/lib/system.js +3 -3
- package/build/lib/system.js.map +1 -0
- package/build/lib/tempdir.js +3 -3
- package/build/lib/tempdir.js.map +1 -0
- package/build/lib/timing.js +3 -3
- package/build/lib/timing.js.map +1 -0
- package/build/lib/util.js +3 -3
- package/build/lib/util.js.map +1 -0
- package/build/lib/zip.js +3 -3
- package/build/lib/zip.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/env.js +63 -74
- package/lib/fs.js +34 -7
- package/lib/node.js +28 -1
- package/lib/npm.js +38 -27
- package/package.json +9 -10
package/build/lib/npm.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -29,6 +27,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
29
27
|
|
|
30
28
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
29
|
|
|
30
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
+
|
|
32
32
|
const CACHE_DIR_RELATIVE_PATH = _path.default.join('node_modules', '.cache', 'appium');
|
|
33
33
|
|
|
34
34
|
exports.CACHE_DIR_RELATIVE_PATH = CACHE_DIR_RELATIVE_PATH;
|
|
@@ -99,20 +99,36 @@ class NPM {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
async getLatestVersion(cwd, pkg) {
|
|
102
|
-
|
|
102
|
+
try {
|
|
103
|
+
var _await$this$exec$json;
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
return ((_await$this$exec$json = (await this.exec('view', [pkg, 'dist-tags'], {
|
|
106
|
+
json: true,
|
|
107
|
+
cwd
|
|
108
|
+
})).json) === null || _await$this$exec$json === void 0 ? void 0 : _await$this$exec$json.latest) ?? null;
|
|
109
|
+
} catch (err) {
|
|
110
|
+
if (!(err !== null && err !== void 0 && err.message.includes('E404'))) {
|
|
111
|
+
throw err;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
108
116
|
}
|
|
109
117
|
|
|
110
118
|
async getLatestSafeUpgradeVersion(cwd, pkg, curVersion) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
119
|
+
try {
|
|
120
|
+
const allVersions = (await this.exec('view', [pkg, 'versions'], {
|
|
121
|
+
json: true,
|
|
122
|
+
cwd
|
|
123
|
+
})).json;
|
|
124
|
+
return this.getLatestSafeUpgradeFromVersions(curVersion, allVersions);
|
|
125
|
+
} catch (err) {
|
|
126
|
+
if (!(err !== null && err !== void 0 && err.message.includes('E404'))) {
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
116
132
|
}
|
|
117
133
|
|
|
118
134
|
async list(cwd, pkg) {
|
|
@@ -180,7 +196,16 @@ class NPM {
|
|
|
180
196
|
}
|
|
181
197
|
}
|
|
182
198
|
|
|
183
|
-
const installOpts =
|
|
199
|
+
const installOpts = ['--save-dev'];
|
|
200
|
+
|
|
201
|
+
if (!(await (0, _env.hasAppiumDependency)(cwd))) {
|
|
202
|
+
if (process.env.APPIUM_OMIT_PEER_DEPS) {
|
|
203
|
+
installOpts.push('--omit=peer');
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
installOpts.push('--save-exact', '--global-style', '--no-package-lock');
|
|
207
|
+
}
|
|
208
|
+
|
|
184
209
|
const res = await this.exec('install', [...installOpts, pkgVer ? `${pkgName}@${pkgVer}` : pkgName], {
|
|
185
210
|
cwd,
|
|
186
211
|
json: true,
|
|
@@ -214,4 +239,4 @@ class NPM {
|
|
|
214
239
|
exports.NPM = NPM;
|
|
215
240
|
const npm = new NPM();
|
|
216
241
|
exports.npm = npm;
|
|
217
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCIsInBhdGgiLCJqb2luIiwiSU5TVEFMTF9MT0NLRklMRV9SRUxBVElWRV9QQVRIIiwiTlBNIiwiX2dldEluc3RhbGxMb2NrZmlsZVBhdGgiLCJjd2QiLCJleGVjIiwiY21kIiwiYXJncyIsIm9wdHMiLCJleGVjT3B0cyIsImpzb24iLCJsb2NrRmlsZSIsInRlZW5Qcm9jZXNzRXhlY09wdHMiLCJ1bnNoaWZ0IiwicHVzaCIsIm5wbUNtZCIsInN5c3RlbSIsImlzV2luZG93cyIsInJ1bm5lciIsImFjcXVpcmVMb2NrIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJfcnVubmVyIiwicmV0Iiwic3Rkb3V0Iiwic3RkZXJyIiwiY29kZSIsIkpTT04iLCJwYXJzZSIsImlnbiIsImUiLCJlcnIiLCJFcnJvciIsInRyaW0iLCJnZXRMYXRlc3RWZXJzaW9uIiwicGtnIiwibGF0ZXN0IiwiZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uIiwiY3VyVmVyc2lvbiIsImFsbFZlcnNpb25zIiwiZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMiLCJsaXN0Iiwic2FmZVVwZ3JhZGVWZXIiLCJjdXJTZW12ZXIiLCJzZW12ZXIiLCJ0ZXN0VmVyIiwidGVzdFNlbXZlciIsInByZXJlbGVhc2UiLCJsZW5ndGgiLCJjb21wYXJlIiwibWFqb3IiLCJmb3JtYXQiLCJpbnN0YWxsUGFja2FnZSIsInBrZ05hbWUiLCJwa2dWZXIiLCJkdW1teVBrZ0pzb24iLCJkdW1teVBrZ1BhdGgiLCJmcyIsInJlYWRGaWxlIiwid3JpdGVGaWxlIiwic3RyaW5naWZ5IiwiaW5zdGFsbE9wdHMiLCJoYXNBcHBpdW1EZXBlbmRlbmN5IiwicmVzIiwiZXJyb3IiLCJwa2dKc29uUGF0aCIsInJlc29sdmVGcm9tIiwicmVxdWlyZSIsInVuaW5zdGFsbFBhY2thZ2UiLCJucG0iXSwic291cmNlcyI6WyIuLi8uLi9saWIvbnBtLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7aGFzQXBwaXVtRGVwZW5kZW5jeX0gZnJvbSAnLi9lbnYnO1xuaW1wb3J0IHtleGVjfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHtmc30gZnJvbSAnLi9mcyc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgKiBhcyBzeXN0ZW0gZnJvbSAnLi9zeXN0ZW0nO1xuaW1wb3J0IHJlc29sdmVGcm9tIGZyb20gJ3Jlc29sdmUtZnJvbSc7XG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyBhbnkgQXBwaXVtIGludGVybmFsIGZpbGVzXG4gKiBYWFg6IHRoaXMgaXMgZHVwbGljYXRlZCBpbiBgYXBwaXVtL2xpYi9jb25zdGFudHMuanNgLlxuICovXG5leHBvcnQgY29uc3QgQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEggPSBwYXRoLmpvaW4oJ25vZGVfbW9kdWxlcycsICcuY2FjaGUnLCAnYXBwaXVtJyk7XG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCB0byBsb2NrZmlsZSB1c2VkIHdoZW4gaW5zdGFsbGluZyBhbiBleHRlbnNpb24gdmlhIGBhcHBpdW1gXG4gKi9cbmV4cG9ydCBjb25zdCBJTlNUQUxMX0xPQ0tGSUxFX1JFTEFUSVZFX1BBVEggPSBwYXRoLmpvaW4oQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEgsICcuaW5zdGFsbC5sb2NrJyk7XG5cbi8qKlxuICogWFhYOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBhIHNpbmdsZXRvbiwgYnV0IGl0IGlzbid0LiAgTWF5YmUgdGhpcyBtb2R1bGUgc2hvdWxkIGp1c3QgZXhwb3J0IGZ1bmN0aW9ucz9cbiAqL1xuZXhwb3J0IGNsYXNzIE5QTSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHBhdGggdG8gXCJpbnN0YWxsXCIgbG9ja2ZpbGVcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN3ZFxuICAgKi9cbiAgX2dldEluc3RhbGxMb2NrZmlsZVBhdGgoY3dkKSB7XG4gICAgcmV0dXJuIHBhdGguam9pbihjd2QsIElOU1RBTExfTE9DS0ZJTEVfUkVMQVRJVkVfUEFUSCk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBgbnBtYCB3aXRoIGdpdmVuIGFyZ3MuXG4gICAqXG4gICAqIElmIHRoZSBwcm9jZXNzIGV4aXRzIHdpdGggYSBub256ZXJvIGNvZGUsIHRoZSBjb250ZW50cyBvZiBgU1RET1VUYCBhbmQgYFNUREVSUmAgd2lsbCBiZSBpbiB0aGVcbiAgICogYG1lc3NhZ2VgIG9mIGFueSByZWplY3RlZCBlcnJvci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNtZFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzXG4gICAqIEBwYXJhbSB7RXhlY09wdHN9IG9wdHNcbiAgICogQHBhcmFtIHtPbWl0PGltcG9ydCgndGVlbl9wcm9jZXNzJykuRXhlY09wdGlvbnMsICdjd2QnPn0gW2V4ZWNPcHRzXVxuICAgKi9cbiAgYXN5bmMgZXhlYyhjbWQsIGFyZ3MsIG9wdHMsIGV4ZWNPcHRzID0ge30pIHtcbiAgICBsZXQge2N3ZCwganNvbiwgbG9ja0ZpbGV9ID0gb3B0cztcblxuICAgIC8vIG1ha2Ugc3VyZSB3ZSBwZXJmb3JtIHRoZSBjdXJyZW50IG9wZXJhdGlvbiBpbiBjd2RcbiAgICAvKiogQHR5cGUge2ltcG9ydCgndGVlbl9wcm9jZXNzJykuRXhlY09wdGlvbnN9ICovXG4gICAgY29uc3QgdGVlblByb2Nlc3NFeGVjT3B0cyA9IHsuLi5leGVjT3B0cywgY3dkfTtcblxuICAgIGFyZ3MudW5zaGlmdChjbWQpO1xuICAgIGlmIChqc29uKSB7XG4gICAgICBhcmdzLnB1c2goJy0tanNvbicpO1xuICAgIH1cbiAgICBjb25zdCBucG1DbWQgPSBzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnbnBtLmNtZCcgOiAnbnBtJztcbiAgICBsZXQgcnVubmVyID0gYXN5bmMgKCkgPT4gYXdhaXQgZXhlYyhucG1DbWQsIGFyZ3MsIHRlZW5Qcm9jZXNzRXhlY09wdHMpO1xuICAgIGlmIChsb2NrRmlsZSkge1xuICAgICAgY29uc3QgYWNxdWlyZUxvY2sgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQobG9ja0ZpbGUpO1xuICAgICAgY29uc3QgX3J1bm5lciA9IHJ1bm5lcjtcbiAgICAgIHJ1bm5lciA9IGFzeW5jICgpID0+IGF3YWl0IGFjcXVpcmVMb2NrKF9ydW5uZXIpO1xuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7aW1wb3J0KCd0ZWVuX3Byb2Nlc3MnKS5FeGVjUmVzdWx0PHN0cmluZz4gJiB7anNvbj86IGFueX19ICovXG4gICAgbGV0IHJldDtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSA9IGF3YWl0IHJ1bm5lcigpO1xuICAgICAgcmV0ID0ge3N0ZG91dCwgc3RkZXJyLCBjb2RlfTtcbiAgICAgIC8vIGlmIHBvc3NpYmxlLCBwYXJzZSBOUE0ncyBqc29uIG91dHB1dC4gRHVyaW5nIE5QTSBpbnN0YWxsIDNyZC1wYXJ0eVxuICAgICAgLy8gcGFja2FnZXMgY2FuIHdyaXRlIHRvIHN0ZG91dCwgc28gc29tZXRpbWVzIHRoZSBqc29uIG91dHB1dCBjYW4ndCBiZVxuICAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSBwYXJzZWFibGVcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldC5qc29uID0gSlNPTi5wYXJzZShzdGRvdXQpO1xuICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3Rkb3V0ID0gJycsXG4gICAgICAgIHN0ZGVyciA9ICcnLFxuICAgICAgICBjb2RlID0gbnVsbCxcbiAgICAgIH0gPSAvKiogQHR5cGUge2ltcG9ydCgndGVlbl9wcm9jZXNzJykuRXhlY0Vycm9yfSAqLyAoZSk7XG4gICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAgIGBucG0gY29tbWFuZCAnJHthcmdzLmpvaW4oXG4gICAgICAgICAgJyAnXG4gICAgICAgICl9JyBmYWlsZWQgd2l0aCBjb2RlICR7Y29kZX0uXFxuXFxuU1RET1VUOlxcbiR7c3Rkb3V0LnRyaW0oKX1cXG5cXG5TVERFUlI6XFxuJHtzdGRlcnIudHJpbSgpfWBcbiAgICAgICk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN3ZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGtnXG4gICAqL1xuICBhc3luYyBnZXRMYXRlc3RWZXJzaW9uKGN3ZCwgcGtnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMuZXhlYygndmlldycsIFtwa2csICdkaXN0LXRhZ3MnXSwge1xuICAgICAgICBqc29uOiB0cnVlLFxuICAgICAgICBjd2QsXG4gICAgICB9KVxuICAgICkuanNvbj8ubGF0ZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBrZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VyVmVyc2lvblxuICAgKi9cbiAgYXN5bmMgZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uKGN3ZCwgcGtnLCBjdXJWZXJzaW9uKSB7XG4gICAgY29uc3QgYWxsVmVyc2lvbnMgPSAoXG4gICAgICBhd2FpdCB0aGlzLmV4ZWMoJ3ZpZXcnLCBbcGtnLCAndmVyc2lvbnMnXSwge1xuICAgICAgICBqc29uOiB0cnVlLFxuICAgICAgICBjd2QsXG4gICAgICB9KVxuICAgICkuanNvbjtcbiAgICByZXR1cm4gdGhpcy5nZXRMYXRlc3RTYWZlVXBncmFkZUZyb21WZXJzaW9ucyhjdXJWZXJzaW9uLCBhbGxWZXJzaW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUnVucyBgbnBtIGxzYCwgb3B0aW9uYWxseSBmb3IgYSBwYXJ0aWN1bGFyIHBhY2thZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtwa2ddXG4gICAqL1xuICBhc3luYyBsaXN0KGN3ZCwgcGtnKSB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmV4ZWMoJ2xpc3QnLCBwa2cgPyBbcGtnXSA6IFtdLCB7Y3dkLCBqc29uOiB0cnVlfSkpLmpzb247XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBjdXJyZW50IHZlcnNpb24gYW5kIGEgbGlzdCBvZiBhbGwgdmVyc2lvbnMgZm9yIGEgcGFja2FnZSwgcmV0dXJuIHRoZSB2ZXJzaW9uIHdoaWNoIGlzXG4gICAqIHRoZSBoaWdoZXN0IHNhZmVseS11cGdyYWRhYmxlIHZlcnNpb24gKG1lYW5pbmcgbm90IGNyb3NzaW5nIGFueSBtYWpvciByZXZpc2lvbiBib3VuZGFyaWVzLCBhbmRcbiAgICogbm90IGluY2x1ZGluZyBhbnkgYWxwaGEvYmV0YS9yYyB2ZXJzaW9ucylcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1clZlcnNpb24gLSB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIGEgcGFja2FnZVxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGFsbFZlcnNpb25zIC0gYSBsaXN0IG9mIHZlcnNpb24gc3RyaW5nc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd8bnVsbH0gLSB0aGUgaGlnaGVzdCBzYWZlbHktdXBncmFkYWJsZSB2ZXJzaW9uLCBvciBudWxsIGlmIHRoZXJlIGlzbid0IG9uZVxuICAgKi9cbiAgZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMoY3VyVmVyc2lvbiwgYWxsVmVyc2lvbnMpIHtcbiAgICBsZXQgc2FmZVVwZ3JhZGVWZXIgPSBudWxsO1xuICAgIGNvbnN0IGN1clNlbXZlciA9IHNlbXZlci5wYXJzZShjdXJWZXJzaW9uKTtcbiAgICBpZiAoY3VyU2VtdmVyID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSBjdXJyZW50IHZlcnNpb24gJyR7Y3VyVmVyc2lvbn0nYCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdGVzdFZlciBvZiBhbGxWZXJzaW9ucykge1xuICAgICAgY29uc3QgdGVzdFNlbXZlciA9IHNlbXZlci5wYXJzZSh0ZXN0VmVyKTtcbiAgICAgIGlmICh0ZXN0U2VtdmVyID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHBhcnNlIHZlcnNpb24gdG8gdGVzdCBhZ2FpbnN0OiAnJHt0ZXN0VmVyfSdgKTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSB0ZXN0IHZlcnNpb24gaXMgYSBwcmVyZWxlYXNlLCBpZ25vcmUgaXRcbiAgICAgIGlmICh0ZXN0U2VtdmVyLnByZXJlbGVhc2UubGVuZ3RoID4gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSBjdXJyZW50IHZlcnNpb24gaXMgbGF0ZXIgdGhhbiB0aGUgdGVzdCB2ZXJzaW9uLCBza2lwIHRoaXMgdGVzdCB2ZXJzaW9uXG4gICAgICBpZiAoY3VyU2VtdmVyLmNvbXBhcmUodGVzdFNlbXZlcikgPT09IDEpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBpZiB0aGUgdGVzdCB2ZXJzaW9uIGlzIG5ld2VyLCBidXQgY3Jvc3NlcyBhIG1ham9yIHJldmlzaW9uIGJvdW5kYXJ5LCBhbHNvIHNraXAgaXRcbiAgICAgIGlmICh0ZXN0U2VtdmVyLm1ham9yID4gY3VyU2VtdmVyLm1ham9yKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gb3RoZXJ3aXNlIHRoaXMgdmVyc2lvbiBpcyBzYWZlIHRvIHVwZ3JhZGUgdG8uIEJ1dCB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSBvbmVzIG9mIHRoaXNcbiAgICAgIC8vIGtpbmQsIHNvIGtlZXAgaXRlcmF0aW5nIGFuZCBrZWVwaW5nIHRoZSBoaWdoZXN0XG4gICAgICBpZiAoc2FmZVVwZ3JhZGVWZXIgPT09IG51bGwgfHwgdGVzdFNlbXZlci5jb21wYXJlKHNhZmVVcGdyYWRlVmVyKSA9PT0gMSkge1xuICAgICAgICBzYWZlVXBncmFkZVZlciA9IHRlc3RTZW12ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzYWZlVXBncmFkZVZlcikge1xuICAgICAgc2FmZVVwZ3JhZGVWZXIgPSBzYWZlVXBncmFkZVZlci5mb3JtYXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNhZmVVcGdyYWRlVmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGxzIGEgcGFja2FnZSB3LyBgbnBtYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3dkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwa2dOYW1lXG4gICAqIEBwYXJhbSB7SW5zdGFsbFBhY2thZ2VPcHRzfSBbb3B0c11cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCd0eXBlLWZlc3QnKS5QYWNrYWdlSnNvbj59XG4gICAqL1xuICBhc3luYyBpbnN0YWxsUGFja2FnZShjd2QsIHBrZ05hbWUsIHtwa2dWZXJ9ID0ge30pIHtcbiAgICAvKiogQHR5cGUge2FueX0gKi9cbiAgICBsZXQgZHVtbXlQa2dKc29uO1xuICAgIGNvbnN0IGR1bW15UGtnUGF0aCA9IHBhdGguam9pbihjd2QsICdwYWNrYWdlLmpzb24nKTtcbiAgICB0cnkge1xuICAgICAgZHVtbXlQa2dKc29uID0gSlNPTi5wYXJzZShhd2FpdCBmcy5yZWFkRmlsZShkdW1teVBrZ1BhdGgsICd1dGY4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICBkdW1teVBrZ0pzb24gPSB7fTtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKGR1bW15UGtnUGF0aCwgSlNPTi5zdHJpbmdpZnkoZHVtbXlQa2dKc29uLCBudWxsLCAyKSwgJ3V0ZjgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB3ZSd2ZSBmb3VuZCBhIGBwYWNrYWdlLmpzb25gIGNvbnRhaW5pbmVkIHRoZSBgYXBwaXVtQ3JlYXRlZGAgcHJvcGVydHksXG4gICAgICogdGhlbiB3ZSBjYW4gZG8gd2hhdGV2ZXIgd2UgcGxlYXNlIHdpdGggaXQsIHNpbmNlIHdlIGNyZWF0ZWQgaXQuICBUaGlzIGlzXG4gICAgICogbGlrZWx5IHdoZW4gYEFQUElVTV9IT01FYCBpcyB0aGUgZGVmYXVsdCAoaW4gYH4vLmFwcGl1bWApLiAgSW4gdGhhdCBjYXNlLFxuICAgICAqIHdlIHdhbnQgYC0tZ2xvYmFsLXN0eWxlYCB0byBhdm9pZCBkZWR1cGluZywgYW5kIHdlIGFsc28gZG8gbm90IG5lZWQgYVxuICAgICAqIGBwYWNrYWdlLWxvY2suanNvbmAuXG4gICAgICpcbiAgICAgKiBJZiB3ZSBfaGF2ZW4ndF8gZm91bmQgc3VjaCBhIGtleSwgdGhlbiB0aGlzIGBwYWNrYWdlLmpzb25gIGlzbid0IGFcbiAgICAgKiBcImR1bW15XCIgYW5kIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHVzZXIuICBTbyB3ZSdsbCBqdXN0IGFkZCBpdCBhcyBhIGRldlxuICAgICAqIGRlcDsgd2hhdGV2ZXIgZWxzZSBpdCBkb2VzIGlzIHVwIHRvIHRoZSB1c2VyJ3MgbnBtIGNvbmZpZy5cbiAgICAgKi9cbiAgICBjb25zdCBpbnN0YWxsT3B0cyA9IChhd2FpdCBoYXNBcHBpdW1EZXBlbmRlbmN5KGN3ZCkpXG4gICAgICA/IFsnLS1zYXZlLWRldiddXG4gICAgICA6IFsnLS1zYXZlLWRldicsICctLXNhdmUtZXhhY3QnLCAnLS1nbG9iYWwtc3R5bGUnLCAnLS1uby1wYWNrYWdlLWxvY2snXTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZXhlYyhcbiAgICAgICdpbnN0YWxsJyxcbiAgICAgIFsuLi5pbnN0YWxsT3B0cywgcGtnVmVyID8gYCR7cGtnTmFtZX1AJHtwa2dWZXJ9YCA6IHBrZ05hbWVdLFxuICAgICAge1xuICAgICAgICBjd2QsXG4gICAgICAgIGpzb246IHRydWUsXG4gICAgICAgIGxvY2tGaWxlOiB0aGlzLl9nZXRJbnN0YWxsTG9ja2ZpbGVQYXRoKGN3ZCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChyZXMuanNvbikge1xuICAgICAgLy8gd2UgcGFyc2VkIGEgdmFsaWQganNvbiByZXNwb25zZSwgc28gaWYgd2UgZ290IGFuIGVycm9yIGhlcmUsIHJldHVybiB0aGF0XG4gICAgICAvLyBtZXNzYWdlIHN0cmFpZ2h0YXdheVxuICAgICAgaWYgKHJlcy5qc29uLmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuanNvbi5lcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm93IHJlYWQgcGFja2FnZSBkYXRhIGZyb20gdGhlIGluc3RhbGxlZCBwYWNrYWdlIHRvIHJldHVybiwgYW5kIG1ha2Ugc3VyZVxuICAgIC8vIGV2ZXJ5dGhpbmcgZ290IGluc3RhbGxlZCBvay4gUmVtZW1iZXIsIHBrZ05hbWUgbWlnaHQgZW5kIHVwIHdpdGggYSAvIGluIGl0IGR1ZSB0byBhbiBucG1cbiAgICAvLyBvcmcsIHNvIGlmIHNvLCB0aGF0IHdpbGwgZ2V0IGNvcnJlY3RseSBleHBsb2RlZCBpbnRvIG11bHRpcGxlIGRpcmVjdG9yaWVzLCBieSBwYXRoLnJlc29sdmUgaGVyZVxuICAgIC8vIChldmVuIG9uIFdpbmRvd3MhKVxuICAgIGNvbnN0IHBrZ0pzb25QYXRoID0gcmVzb2x2ZUZyb20oY3dkLCBgJHtwa2dOYW1lfS9wYWNrYWdlLmpzb25gKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlcXVpcmUocGtnSnNvblBhdGgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGhlIHBhY2thZ2Ugd2FzIG5vdCBkb3dubG9hZGVkIGNvcnJlY3RseTsgaXRzIHBhY2thZ2UuanNvbiAnICtcbiAgICAgICAgICAnZGlkIG5vdCBleGlzdCBvciB3YXMgdW5yZWFkYWJsZS4gV2UgbG9va2VkIGZvciBpdCBhdCAnICtcbiAgICAgICAgICBwa2dKc29uUGF0aFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN3ZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGtnXG4gICAqL1xuICBhc3luYyB1bmluc3RhbGxQYWNrYWdlKGN3ZCwgcGtnKSB7XG4gICAgYXdhaXQgdGhpcy5leGVjKCd1bmluc3RhbGwnLCBbcGtnXSwge1xuICAgICAgY3dkLFxuICAgICAgbG9ja0ZpbGU6IHRoaXMuX2dldEluc3RhbGxMb2NrZmlsZVBhdGgoY3dkKSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbnBtID0gbmV3IE5QTSgpO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBOUE0uaW5zdGFsbFBhY2thZ2V9XG4gKiBAdHlwZWRlZiBJbnN0YWxsUGFja2FnZU9wdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcGtnVmVyXSAtIHRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIHRvIGluc3RhbGxcbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBOUE0uZXhlY31cbiAqIEB0eXBlZGVmIEV4ZWNPcHRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY3dkIC0gQ3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICogQHByb3BlcnR5IHtib29sZWFufSBbanNvbl0gLSBJZiBgdHJ1ZWAsIHN1cHBseSBgLS1qc29uYCBmbGFnIHRvIG5wbSBhbmQgcmVzb2x2ZSB3LyBwYXJzZWQgSlNPTlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtsb2NrRmlsZV0gLSBQYXRoIHRvIGxvY2tmaWxlIHRvIHVzZVxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQU1PLE1BQU1BLHVCQUF1QixHQUFHQyxhQUFBLENBQUtDLElBQUwsQ0FBVSxjQUFWLEVBQTBCLFFBQTFCLEVBQW9DLFFBQXBDLENBQWhDOzs7O0FBS0EsTUFBTUMsOEJBQThCLEdBQUdGLGFBQUEsQ0FBS0MsSUFBTCxDQUFVRix1QkFBVixFQUFtQyxlQUFuQyxDQUF2Qzs7OztBQUtBLE1BQU1JLEdBQU4sQ0FBVTtFQU1mQyx1QkFBdUIsQ0FBQ0MsR0FBRCxFQUFNO0lBQzNCLE9BQU9MLGFBQUEsQ0FBS0MsSUFBTCxDQUFVSSxHQUFWLEVBQWVILDhCQUFmLENBQVA7RUFDRDs7RUFZUyxNQUFKSSxJQUFJLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZQyxJQUFaLEVBQWtCQyxRQUFRLEdBQUcsRUFBN0IsRUFBaUM7SUFDekMsSUFBSTtNQUFDTCxHQUFEO01BQU1NLElBQU47TUFBWUM7SUFBWixJQUF3QkgsSUFBNUI7SUFJQSxNQUFNSSxtQkFBbUIsR0FBRyxFQUFDLEdBQUdILFFBQUo7TUFBY0w7SUFBZCxDQUE1QjtJQUVBRyxJQUFJLENBQUNNLE9BQUwsQ0FBYVAsR0FBYjs7SUFDQSxJQUFJSSxJQUFKLEVBQVU7TUFDUkgsSUFBSSxDQUFDTyxJQUFMLENBQVUsUUFBVjtJQUNEOztJQUNELE1BQU1DLE1BQU0sR0FBR0MsTUFBTSxDQUFDQyxTQUFQLEtBQXFCLFNBQXJCLEdBQWlDLEtBQWhEOztJQUNBLElBQUlDLE1BQU0sR0FBRyxZQUFZLE1BQU0sSUFBQWIsa0JBQUEsRUFBS1UsTUFBTCxFQUFhUixJQUFiLEVBQW1CSyxtQkFBbkIsQ0FBL0I7O0lBQ0EsSUFBSUQsUUFBSixFQUFjO01BQ1osTUFBTVEsV0FBVyxHQUFHQyxJQUFJLENBQUNDLGdCQUFMLENBQXNCVixRQUF0QixDQUFwQjtNQUNBLE1BQU1XLE9BQU8sR0FBR0osTUFBaEI7O01BQ0FBLE1BQU0sR0FBRyxZQUFZLE1BQU1DLFdBQVcsQ0FBQ0csT0FBRCxDQUF0QztJQUNEOztJQUdELElBQUlDLEdBQUo7O0lBQ0EsSUFBSTtNQUNGLE1BQU07UUFBQ0MsTUFBRDtRQUFTQyxNQUFUO1FBQWlCQztNQUFqQixJQUF5QixNQUFNUixNQUFNLEVBQTNDO01BQ0FLLEdBQUcsR0FBRztRQUFDQyxNQUFEO1FBQVNDLE1BQVQ7UUFBaUJDO01BQWpCLENBQU47O01BSUEsSUFBSTtRQUNGSCxHQUFHLENBQUNiLElBQUosR0FBV2lCLElBQUksQ0FBQ0MsS0FBTCxDQUFXSixNQUFYLENBQVg7TUFDRCxDQUZELENBRUUsT0FBT0ssR0FBUCxFQUFZLENBQUU7SUFDakIsQ0FURCxDQVNFLE9BQU9DLENBQVAsRUFBVTtNQUNWLE1BQU07UUFDSk4sTUFBTSxHQUFHLEVBREw7UUFFSkMsTUFBTSxHQUFHLEVBRkw7UUFHSkMsSUFBSSxHQUFHO01BSEgsSUFJK0NJLENBSnJEO01BS0EsTUFBTUMsR0FBRyxHQUFHLElBQUlDLEtBQUosQ0FDVCxnQkFBZXpCLElBQUksQ0FBQ1AsSUFBTCxDQUNkLEdBRGMsQ0FFZCxzQkFBcUIwQixJQUFLLGlCQUFnQkYsTUFBTSxDQUFDUyxJQUFQLEVBQWMsZ0JBQWVSLE1BQU0sQ0FBQ1EsSUFBUCxFQUFjLEVBSDdFLENBQVo7TUFLQSxNQUFNRixHQUFOO0lBQ0Q7O0lBQ0QsT0FBT1IsR0FBUDtFQUNEOztFQU1xQixNQUFoQlcsZ0JBQWdCLENBQUM5QixHQUFELEVBQU0rQixHQUFOLEVBQVc7SUFBQTs7SUFDL0IsZ0NBQU8sQ0FDTCxNQUFNLEtBQUs5QixJQUFMLENBQVUsTUFBVixFQUFrQixDQUFDOEIsR0FBRCxFQUFNLFdBQU4sQ0FBbEIsRUFBc0M7TUFDMUN6QixJQUFJLEVBQUUsSUFEb0M7TUFFMUNOO0lBRjBDLENBQXRDLENBREQsRUFLTE0sSUFMRiwwREFBTyxzQkFLQzBCLE1BTFI7RUFNRDs7RUFPZ0MsTUFBM0JDLDJCQUEyQixDQUFDakMsR0FBRCxFQUFNK0IsR0FBTixFQUFXRyxVQUFYLEVBQXVCO0lBQ3RELE1BQU1DLFdBQVcsR0FBRyxDQUNsQixNQUFNLEtBQUtsQyxJQUFMLENBQVUsTUFBVixFQUFrQixDQUFDOEIsR0FBRCxFQUFNLFVBQU4sQ0FBbEIsRUFBcUM7TUFDekN6QixJQUFJLEVBQUUsSUFEbUM7TUFFekNOO0lBRnlDLENBQXJDLENBRFksRUFLbEJNLElBTEY7SUFNQSxPQUFPLEtBQUs4QixnQ0FBTCxDQUFzQ0YsVUFBdEMsRUFBa0RDLFdBQWxELENBQVA7RUFDRDs7RUFPUyxNQUFKRSxJQUFJLENBQUNyQyxHQUFELEVBQU0rQixHQUFOLEVBQVc7SUFDbkIsT0FBTyxDQUFDLE1BQU0sS0FBSzlCLElBQUwsQ0FBVSxNQUFWLEVBQWtCOEIsR0FBRyxHQUFHLENBQUNBLEdBQUQsQ0FBSCxHQUFXLEVBQWhDLEVBQW9DO01BQUMvQixHQUFEO01BQU1NLElBQUksRUFBRTtJQUFaLENBQXBDLENBQVAsRUFBK0RBLElBQXRFO0VBQ0Q7O0VBWUQ4QixnQ0FBZ0MsQ0FBQ0YsVUFBRCxFQUFhQyxXQUFiLEVBQTBCO0lBQ3hELElBQUlHLGNBQWMsR0FBRyxJQUFyQjs7SUFDQSxNQUFNQyxTQUFTLEdBQUdDLGVBQUEsQ0FBT2hCLEtBQVAsQ0FBYVUsVUFBYixDQUFsQjs7SUFDQSxJQUFJSyxTQUFTLEtBQUssSUFBbEIsRUFBd0I7TUFDdEIsTUFBTSxJQUFJWCxLQUFKLENBQVcsb0NBQW1DTSxVQUFXLEdBQXpELENBQU47SUFDRDs7SUFDRCxLQUFLLE1BQU1PLE9BQVgsSUFBc0JOLFdBQXRCLEVBQW1DO01BQ2pDLE1BQU1PLFVBQVUsR0FBR0YsZUFBQSxDQUFPaEIsS0FBUCxDQUFhaUIsT0FBYixDQUFuQjs7TUFDQSxJQUFJQyxVQUFVLEtBQUssSUFBbkIsRUFBeUI7UUFDdkIsTUFBTSxJQUFJZCxLQUFKLENBQVcsNkNBQTRDYSxPQUFRLEdBQS9ELENBQU47TUFDRDs7TUFFRCxJQUFJQyxVQUFVLENBQUNDLFVBQVgsQ0FBc0JDLE1BQXRCLEdBQStCLENBQW5DLEVBQXNDO1FBQ3BDO01BQ0Q7O01BRUQsSUFBSUwsU0FBUyxDQUFDTSxPQUFWLENBQWtCSCxVQUFsQixNQUFrQyxDQUF0QyxFQUF5QztRQUN2QztNQUNEOztNQUVELElBQUlBLFVBQVUsQ0FBQ0ksS0FBWCxHQUFtQlAsU0FBUyxDQUFDTyxLQUFqQyxFQUF3QztRQUN0QztNQUNEOztNQUdELElBQUlSLGNBQWMsS0FBSyxJQUFuQixJQUEyQkksVUFBVSxDQUFDRyxPQUFYLENBQW1CUCxjQUFuQixNQUF1QyxDQUF0RSxFQUF5RTtRQUN2RUEsY0FBYyxHQUFHSSxVQUFqQjtNQUNEO0lBQ0Y7O0lBQ0QsSUFBSUosY0FBSixFQUFvQjtNQUNsQkEsY0FBYyxHQUFHQSxjQUFjLENBQUNTLE1BQWYsRUFBakI7SUFDRDs7SUFDRCxPQUFPVCxjQUFQO0VBQ0Q7O0VBU21CLE1BQWRVLGNBQWMsQ0FBQ2hELEdBQUQsRUFBTWlELE9BQU4sRUFBZTtJQUFDQztFQUFELElBQVcsRUFBMUIsRUFBOEI7SUFFaEQsSUFBSUMsWUFBSjs7SUFDQSxNQUFNQyxZQUFZLEdBQUd6RCxhQUFBLENBQUtDLElBQUwsQ0FBVUksR0FBVixFQUFlLGNBQWYsQ0FBckI7O0lBQ0EsSUFBSTtNQUNGbUQsWUFBWSxHQUFHNUIsSUFBSSxDQUFDQyxLQUFMLENBQVcsTUFBTTZCLE1BQUEsQ0FBR0MsUUFBSCxDQUFZRixZQUFaLEVBQTBCLE1BQTFCLENBQWpCLENBQWY7SUFDRCxDQUZELENBRUUsT0FBT3pCLEdBQVAsRUFBWTtNQUNaLElBQUlBLEdBQUcsQ0FBQ0wsSUFBSixLQUFhLFFBQWpCLEVBQTJCO1FBQ3pCNkIsWUFBWSxHQUFHLEVBQWY7UUFDQSxNQUFNRSxNQUFBLENBQUdFLFNBQUgsQ0FBYUgsWUFBYixFQUEyQjdCLElBQUksQ0FBQ2lDLFNBQUwsQ0FBZUwsWUFBZixFQUE2QixJQUE3QixFQUFtQyxDQUFuQyxDQUEzQixFQUFrRSxNQUFsRSxDQUFOO01BQ0QsQ0FIRCxNQUdPO1FBQ0wsTUFBTXhCLEdBQU47TUFDRDtJQUNGOztJQWFELE1BQU04QixXQUFXLEdBQUcsQ0FBQyxNQUFNLElBQUFDLHdCQUFBLEVBQW9CMUQsR0FBcEIsQ0FBUCxJQUNoQixDQUFDLFlBQUQsQ0FEZ0IsR0FFaEIsQ0FBQyxZQUFELEVBQWUsY0FBZixFQUErQixnQkFBL0IsRUFBaUQsbUJBQWpELENBRko7SUFJQSxNQUFNMkQsR0FBRyxHQUFHLE1BQU0sS0FBSzFELElBQUwsQ0FDaEIsU0FEZ0IsRUFFaEIsQ0FBQyxHQUFHd0QsV0FBSixFQUFpQlAsTUFBTSxHQUFJLEdBQUVELE9BQVEsSUFBR0MsTUFBTyxFQUF4QixHQUE0QkQsT0FBbkQsQ0FGZ0IsRUFHaEI7TUFDRWpELEdBREY7TUFFRU0sSUFBSSxFQUFFLElBRlI7TUFHRUMsUUFBUSxFQUFFLEtBQUtSLHVCQUFMLENBQTZCQyxHQUE3QjtJQUhaLENBSGdCLENBQWxCOztJQVVBLElBQUkyRCxHQUFHLENBQUNyRCxJQUFSLEVBQWM7TUFHWixJQUFJcUQsR0FBRyxDQUFDckQsSUFBSixDQUFTc0QsS0FBYixFQUFvQjtRQUNsQixNQUFNLElBQUloQyxLQUFKLENBQVUrQixHQUFHLENBQUNyRCxJQUFKLENBQVNzRCxLQUFuQixDQUFOO01BQ0Q7SUFDRjs7SUFNRCxNQUFNQyxXQUFXLEdBQUcsSUFBQUMsb0JBQUEsRUFBWTlELEdBQVosRUFBa0IsR0FBRWlELE9BQVEsZUFBNUIsQ0FBcEI7O0lBQ0EsSUFBSTtNQUNGLE9BQU9jLE9BQU8sQ0FBQ0YsV0FBRCxDQUFkO0lBQ0QsQ0FGRCxDQUVFLE1BQU07TUFDTixNQUFNLElBQUlqQyxLQUFKLENBQ0osZ0VBQ0UsdURBREYsR0FFRWlDLFdBSEUsQ0FBTjtJQUtEO0VBQ0Y7O0VBTXFCLE1BQWhCRyxnQkFBZ0IsQ0FBQ2hFLEdBQUQsRUFBTStCLEdBQU4sRUFBVztJQUMvQixNQUFNLEtBQUs5QixJQUFMLENBQVUsV0FBVixFQUF1QixDQUFDOEIsR0FBRCxDQUF2QixFQUE4QjtNQUNsQy9CLEdBRGtDO01BRWxDTyxRQUFRLEVBQUUsS0FBS1IsdUJBQUwsQ0FBNkJDLEdBQTdCO0lBRndCLENBQTlCLENBQU47RUFJRDs7QUFwT2M7OztBQXVPVixNQUFNaUUsR0FBRyxHQUFHLElBQUluRSxHQUFKLEVBQVoifQ==
|
|
242
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCIsInBhdGgiLCJqb2luIiwiSU5TVEFMTF9MT0NLRklMRV9SRUxBVElWRV9QQVRIIiwiTlBNIiwiX2dldEluc3RhbGxMb2NrZmlsZVBhdGgiLCJjd2QiLCJleGVjIiwiY21kIiwiYXJncyIsIm9wdHMiLCJleGVjT3B0cyIsImpzb24iLCJsb2NrRmlsZSIsInRlZW5Qcm9jZXNzRXhlY09wdHMiLCJ1bnNoaWZ0IiwicHVzaCIsIm5wbUNtZCIsInN5c3RlbSIsImlzV2luZG93cyIsInJ1bm5lciIsImFjcXVpcmVMb2NrIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJfcnVubmVyIiwicmV0Iiwic3Rkb3V0Iiwic3RkZXJyIiwiY29kZSIsIkpTT04iLCJwYXJzZSIsImlnbiIsImUiLCJlcnIiLCJFcnJvciIsInRyaW0iLCJnZXRMYXRlc3RWZXJzaW9uIiwicGtnIiwibGF0ZXN0IiwibWVzc2FnZSIsImluY2x1ZGVzIiwiZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uIiwiY3VyVmVyc2lvbiIsImFsbFZlcnNpb25zIiwiZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMiLCJsaXN0Iiwic2FmZVVwZ3JhZGVWZXIiLCJjdXJTZW12ZXIiLCJzZW12ZXIiLCJ0ZXN0VmVyIiwidGVzdFNlbXZlciIsInByZXJlbGVhc2UiLCJsZW5ndGgiLCJjb21wYXJlIiwibWFqb3IiLCJmb3JtYXQiLCJpbnN0YWxsUGFja2FnZSIsInBrZ05hbWUiLCJwa2dWZXIiLCJkdW1teVBrZ0pzb24iLCJkdW1teVBrZ1BhdGgiLCJmcyIsInJlYWRGaWxlIiwid3JpdGVGaWxlIiwic3RyaW5naWZ5IiwiaW5zdGFsbE9wdHMiLCJoYXNBcHBpdW1EZXBlbmRlbmN5IiwicHJvY2VzcyIsImVudiIsIkFQUElVTV9PTUlUX1BFRVJfREVQUyIsInJlcyIsImVycm9yIiwicGtnSnNvblBhdGgiLCJyZXNvbHZlRnJvbSIsInJlcXVpcmUiLCJ1bmluc3RhbGxQYWNrYWdlIiwibnBtIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL25wbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQge2hhc0FwcGl1bURlcGVuZGVuY3l9IGZyb20gJy4vZW52JztcbmltcG9ydCB7ZXhlY30gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7ZnN9IGZyb20gJy4vZnMnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwnO1xuaW1wb3J0ICogYXMgc3lzdGVtIGZyb20gJy4vc3lzdGVtJztcbmltcG9ydCByZXNvbHZlRnJvbSBmcm9tICdyZXNvbHZlLWZyb20nO1xuXG4vKipcbiAqIFJlbGF0aXZlIHBhdGggdG8gZGlyZWN0b3J5IGNvbnRhaW5pbmcgYW55IEFwcGl1bSBpbnRlcm5hbCBmaWxlc1xuICogWFhYOiB0aGlzIGlzIGR1cGxpY2F0ZWQgaW4gYGFwcGl1bS9saWIvY29uc3RhbnRzLmpzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IENBQ0hFX0RJUl9SRUxBVElWRV9QQVRIID0gcGF0aC5qb2luKCdub2RlX21vZHVsZXMnLCAnLmNhY2hlJywgJ2FwcGl1bScpO1xuXG4vKipcbiAqIFJlbGF0aXZlIHBhdGggdG8gbG9ja2ZpbGUgdXNlZCB3aGVuIGluc3RhbGxpbmcgYW4gZXh0ZW5zaW9uIHZpYSBgYXBwaXVtYFxuICovXG5leHBvcnQgY29uc3QgSU5TVEFMTF9MT0NLRklMRV9SRUxBVElWRV9QQVRIID0gcGF0aC5qb2luKENBQ0hFX0RJUl9SRUxBVElWRV9QQVRILCAnLmluc3RhbGwubG9jaycpO1xuXG4vKipcbiAqIFhYWDogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgYSBzaW5nbGV0b24sIGJ1dCBpdCBpc24ndC4gIE1heWJlIHRoaXMgbW9kdWxlIHNob3VsZCBqdXN0IGV4cG9ydCBmdW5jdGlvbnM/XG4gKi9cbmV4cG9ydCBjbGFzcyBOUE0ge1xuICAvKipcbiAgICogUmV0dXJucyBwYXRoIHRvIFwiaW5zdGFsbFwiIGxvY2tmaWxlXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICovXG4gIF9nZXRJbnN0YWxsTG9ja2ZpbGVQYXRoKGN3ZCkge1xuICAgIHJldHVybiBwYXRoLmpvaW4oY3dkLCBJTlNUQUxMX0xPQ0tGSUxFX1JFTEFUSVZFX1BBVEgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYG5wbWAgd2l0aCBnaXZlbiBhcmdzLlxuICAgKlxuICAgKiBJZiB0aGUgcHJvY2VzcyBleGl0cyB3aXRoIGEgbm9uemVybyBjb2RlLCB0aGUgY29udGVudHMgb2YgYFNURE9VVGAgYW5kIGBTVERFUlJgIHdpbGwgYmUgaW4gdGhlXG4gICAqIGBtZXNzYWdlYCBvZiBhbnkgcmVqZWN0ZWQgZXJyb3IuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbWRcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYXJnc1xuICAgKiBAcGFyYW0ge0V4ZWNPcHRzfSBvcHRzXG4gICAqIEBwYXJhbSB7T21pdDxpbXBvcnQoJ3RlZW5fcHJvY2VzcycpLkV4ZWNPcHRpb25zLCAnY3dkJz59IFtleGVjT3B0c11cbiAgICovXG4gIGFzeW5jIGV4ZWMoY21kLCBhcmdzLCBvcHRzLCBleGVjT3B0cyA9IHt9KSB7XG4gICAgbGV0IHtjd2QsIGpzb24sIGxvY2tGaWxlfSA9IG9wdHM7XG5cbiAgICAvLyBtYWtlIHN1cmUgd2UgcGVyZm9ybSB0aGUgY3VycmVudCBvcGVyYXRpb24gaW4gY3dkXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoJ3RlZW5fcHJvY2VzcycpLkV4ZWNPcHRpb25zfSAqL1xuICAgIGNvbnN0IHRlZW5Qcm9jZXNzRXhlY09wdHMgPSB7Li4uZXhlY09wdHMsIGN3ZH07XG5cbiAgICBhcmdzLnVuc2hpZnQoY21kKTtcbiAgICBpZiAoanNvbikge1xuICAgICAgYXJncy5wdXNoKCctLWpzb24nKTtcbiAgICB9XG4gICAgY29uc3QgbnBtQ21kID0gc3lzdGVtLmlzV2luZG93cygpID8gJ25wbS5jbWQnIDogJ25wbSc7XG4gICAgbGV0IHJ1bm5lciA9IGFzeW5jICgpID0+IGF3YWl0IGV4ZWMobnBtQ21kLCBhcmdzLCB0ZWVuUHJvY2Vzc0V4ZWNPcHRzKTtcbiAgICBpZiAobG9ja0ZpbGUpIHtcbiAgICAgIGNvbnN0IGFjcXVpcmVMb2NrID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKGxvY2tGaWxlKTtcbiAgICAgIGNvbnN0IF9ydW5uZXIgPSBydW5uZXI7XG4gICAgICBydW5uZXIgPSBhc3luYyAoKSA9PiBhd2FpdCBhY3F1aXJlTG9jayhfcnVubmVyKTtcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge2ltcG9ydCgndGVlbl9wcm9jZXNzJykuRXhlY1Jlc3VsdDxzdHJpbmc+ICYge2pzb24/OiBhbnl9fSAqL1xuICAgIGxldCByZXQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtzdGRvdXQsIHN0ZGVyciwgY29kZX0gPSBhd2FpdCBydW5uZXIoKTtcbiAgICAgIHJldCA9IHtzdGRvdXQsIHN0ZGVyciwgY29kZX07XG4gICAgICAvLyBpZiBwb3NzaWJsZSwgcGFyc2UgTlBNJ3MganNvbiBvdXRwdXQuIER1cmluZyBOUE0gaW5zdGFsbCAzcmQtcGFydHlcbiAgICAgIC8vIHBhY2thZ2VzIGNhbiB3cml0ZSB0byBzdGRvdXQsIHNvIHNvbWV0aW1lcyB0aGUganNvbiBvdXRwdXQgY2FuJ3QgYmVcbiAgICAgIC8vIGd1YXJhbnRlZWQgdG8gYmUgcGFyc2VhYmxlXG4gICAgICB0cnkge1xuICAgICAgICByZXQuanNvbiA9IEpTT04ucGFyc2Uoc3Rkb3V0KTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0ZG91dCA9ICcnLFxuICAgICAgICBzdGRlcnIgPSAnJyxcbiAgICAgICAgY29kZSA9IG51bGwsXG4gICAgICB9ID0gLyoqIEB0eXBlIHtpbXBvcnQoJ3RlZW5fcHJvY2VzcycpLkV4ZWNFcnJvcn0gKi8gKGUpO1xuICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKFxuICAgICAgICBgbnBtIGNvbW1hbmQgJyR7YXJncy5qb2luKFxuICAgICAgICAgICcgJ1xuICAgICAgICApfScgZmFpbGVkIHdpdGggY29kZSAke2NvZGV9LlxcblxcblNURE9VVDpcXG4ke3N0ZG91dC50cmltKCl9XFxuXFxuU1RERVJSOlxcbiR7c3RkZXJyLnRyaW0oKX1gXG4gICAgICApO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBrZ1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn1cbiAgICovXG4gIGFzeW5jIGdldExhdGVzdFZlcnNpb24oY3dkLCBwa2cpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgKFxuICAgICAgICAgIGF3YWl0IHRoaXMuZXhlYygndmlldycsIFtwa2csICdkaXN0LXRhZ3MnXSwge1xuICAgICAgICAgICAganNvbjogdHJ1ZSxcbiAgICAgICAgICAgIGN3ZCxcbiAgICAgICAgICB9KVxuICAgICAgICApLmpzb24/LmxhdGVzdCA/PyBudWxsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKCFlcnI/Lm1lc3NhZ2UuaW5jbHVkZXMoJ0U0MDQnKSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN3ZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGtnXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjdXJWZXJzaW9uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz8+fVxuICAgKi9cbiAgYXN5bmMgZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uKGN3ZCwgcGtnLCBjdXJWZXJzaW9uKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFsbFZlcnNpb25zID0gKFxuICAgICAgICBhd2FpdCB0aGlzLmV4ZWMoJ3ZpZXcnLCBbcGtnLCAndmVyc2lvbnMnXSwge1xuICAgICAgICAgIGpzb246IHRydWUsXG4gICAgICAgICAgY3dkLFxuICAgICAgICB9KVxuICAgICAgKS5qc29uO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMoY3VyVmVyc2lvbiwgYWxsVmVyc2lvbnMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKCFlcnI/Lm1lc3NhZ2UuaW5jbHVkZXMoJ0U0MDQnKSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBgbnBtIGxzYCwgb3B0aW9uYWxseSBmb3IgYSBwYXJ0aWN1bGFyIHBhY2thZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjd2RcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtwa2ddXG4gICAqL1xuICBhc3luYyBsaXN0KGN3ZCwgcGtnKSB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmV4ZWMoJ2xpc3QnLCBwa2cgPyBbcGtnXSA6IFtdLCB7Y3dkLCBqc29uOiB0cnVlfSkpLmpzb247XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBjdXJyZW50IHZlcnNpb24gYW5kIGEgbGlzdCBvZiBhbGwgdmVyc2lvbnMgZm9yIGEgcGFja2FnZSwgcmV0dXJuIHRoZSB2ZXJzaW9uIHdoaWNoIGlzXG4gICAqIHRoZSBoaWdoZXN0IHNhZmVseS11cGdyYWRhYmxlIHZlcnNpb24gKG1lYW5pbmcgbm90IGNyb3NzaW5nIGFueSBtYWpvciByZXZpc2lvbiBib3VuZGFyaWVzLCBhbmRcbiAgICogbm90IGluY2x1ZGluZyBhbnkgYWxwaGEvYmV0YS9yYyB2ZXJzaW9ucylcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1clZlcnNpb24gLSB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIGEgcGFja2FnZVxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGFsbFZlcnNpb25zIC0gYSBsaXN0IG9mIHZlcnNpb24gc3RyaW5nc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd8bnVsbH0gLSB0aGUgaGlnaGVzdCBzYWZlbHktdXBncmFkYWJsZSB2ZXJzaW9uLCBvciBudWxsIGlmIHRoZXJlIGlzbid0IG9uZVxuICAgKi9cbiAgZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMoY3VyVmVyc2lvbiwgYWxsVmVyc2lvbnMpIHtcbiAgICBsZXQgc2FmZVVwZ3JhZGVWZXIgPSBudWxsO1xuICAgIGNvbnN0IGN1clNlbXZlciA9IHNlbXZlci5wYXJzZShjdXJWZXJzaW9uKTtcbiAgICBpZiAoY3VyU2VtdmVyID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSBjdXJyZW50IHZlcnNpb24gJyR7Y3VyVmVyc2lvbn0nYCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdGVzdFZlciBvZiBhbGxWZXJzaW9ucykge1xuICAgICAgY29uc3QgdGVzdFNlbXZlciA9IHNlbXZlci5wYXJzZSh0ZXN0VmVyKTtcbiAgICAgIGlmICh0ZXN0U2VtdmVyID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHBhcnNlIHZlcnNpb24gdG8gdGVzdCBhZ2FpbnN0OiAnJHt0ZXN0VmVyfSdgKTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSB0ZXN0IHZlcnNpb24gaXMgYSBwcmVyZWxlYXNlLCBpZ25vcmUgaXRcbiAgICAgIGlmICh0ZXN0U2VtdmVyLnByZXJlbGVhc2UubGVuZ3RoID4gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSBjdXJyZW50IHZlcnNpb24gaXMgbGF0ZXIgdGhhbiB0aGUgdGVzdCB2ZXJzaW9uLCBza2lwIHRoaXMgdGVzdCB2ZXJzaW9uXG4gICAgICBpZiAoY3VyU2VtdmVyLmNvbXBhcmUodGVzdFNlbXZlcikgPT09IDEpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBpZiB0aGUgdGVzdCB2ZXJzaW9uIGlzIG5ld2VyLCBidXQgY3Jvc3NlcyBhIG1ham9yIHJldmlzaW9uIGJvdW5kYXJ5LCBhbHNvIHNraXAgaXRcbiAgICAgIGlmICh0ZXN0U2VtdmVyLm1ham9yID4gY3VyU2VtdmVyLm1ham9yKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gb3RoZXJ3aXNlIHRoaXMgdmVyc2lvbiBpcyBzYWZlIHRvIHVwZ3JhZGUgdG8uIEJ1dCB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSBvbmVzIG9mIHRoaXNcbiAgICAgIC8vIGtpbmQsIHNvIGtlZXAgaXRlcmF0aW5nIGFuZCBrZWVwaW5nIHRoZSBoaWdoZXN0XG4gICAgICBpZiAoc2FmZVVwZ3JhZGVWZXIgPT09IG51bGwgfHwgdGVzdFNlbXZlci5jb21wYXJlKHNhZmVVcGdyYWRlVmVyKSA9PT0gMSkge1xuICAgICAgICBzYWZlVXBncmFkZVZlciA9IHRlc3RTZW12ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzYWZlVXBncmFkZVZlcikge1xuICAgICAgc2FmZVVwZ3JhZGVWZXIgPSBzYWZlVXBncmFkZVZlci5mb3JtYXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNhZmVVcGdyYWRlVmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGxzIGEgcGFja2FnZSB3LyBgbnBtYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3dkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwa2dOYW1lXG4gICAqIEBwYXJhbSB7SW5zdGFsbFBhY2thZ2VPcHRzfSBbb3B0c11cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCd0eXBlLWZlc3QnKS5QYWNrYWdlSnNvbj59XG4gICAqL1xuICBhc3luYyBpbnN0YWxsUGFja2FnZShjd2QsIHBrZ05hbWUsIHtwa2dWZXJ9ID0ge30pIHtcbiAgICAvKiogQHR5cGUge2FueX0gKi9cbiAgICBsZXQgZHVtbXlQa2dKc29uO1xuICAgIGNvbnN0IGR1bW15UGtnUGF0aCA9IHBhdGguam9pbihjd2QsICdwYWNrYWdlLmpzb24nKTtcbiAgICB0cnkge1xuICAgICAgZHVtbXlQa2dKc29uID0gSlNPTi5wYXJzZShhd2FpdCBmcy5yZWFkRmlsZShkdW1teVBrZ1BhdGgsICd1dGY4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICBkdW1teVBrZ0pzb24gPSB7fTtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKGR1bW15UGtnUGF0aCwgSlNPTi5zdHJpbmdpZnkoZHVtbXlQa2dKc29uLCBudWxsLCAyKSwgJ3V0ZjgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YWxsT3B0cyA9IFsnLS1zYXZlLWRldiddO1xuICAgIGlmICghKGF3YWl0IGhhc0FwcGl1bURlcGVuZGVuY3koY3dkKSkpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5BUFBJVU1fT01JVF9QRUVSX0RFUFMpIHtcbiAgICAgICAgaW5zdGFsbE9wdHMucHVzaCgnLS1vbWl0PXBlZXInKTtcbiAgICAgIH1cbiAgICAgIGluc3RhbGxPcHRzLnB1c2goJy0tc2F2ZS1leGFjdCcsICctLWdsb2JhbC1zdHlsZScsICctLW5vLXBhY2thZ2UtbG9jaycpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZXhlYyhcbiAgICAgICdpbnN0YWxsJyxcbiAgICAgIFsuLi5pbnN0YWxsT3B0cywgcGtnVmVyID8gYCR7cGtnTmFtZX1AJHtwa2dWZXJ9YCA6IHBrZ05hbWVdLFxuICAgICAge1xuICAgICAgICBjd2QsXG4gICAgICAgIGpzb246IHRydWUsXG4gICAgICAgIGxvY2tGaWxlOiB0aGlzLl9nZXRJbnN0YWxsTG9ja2ZpbGVQYXRoKGN3ZCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChyZXMuanNvbikge1xuICAgICAgLy8gd2UgcGFyc2VkIGEgdmFsaWQganNvbiByZXNwb25zZSwgc28gaWYgd2UgZ290IGFuIGVycm9yIGhlcmUsIHJldHVybiB0aGF0XG4gICAgICAvLyBtZXNzYWdlIHN0cmFpZ2h0YXdheVxuICAgICAgaWYgKHJlcy5qc29uLmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuanNvbi5lcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm93IHJlYWQgcGFja2FnZSBkYXRhIGZyb20gdGhlIGluc3RhbGxlZCBwYWNrYWdlIHRvIHJldHVybiwgYW5kIG1ha2Ugc3VyZVxuICAgIC8vIGV2ZXJ5dGhpbmcgZ290IGluc3RhbGxlZCBvay4gUmVtZW1iZXIsIHBrZ05hbWUgbWlnaHQgZW5kIHVwIHdpdGggYSAvIGluIGl0IGR1ZSB0byBhbiBucG1cbiAgICAvLyBvcmcsIHNvIGlmIHNvLCB0aGF0IHdpbGwgZ2V0IGNvcnJlY3RseSBleHBsb2RlZCBpbnRvIG11bHRpcGxlIGRpcmVjdG9yaWVzLCBieSBwYXRoLnJlc29sdmUgaGVyZVxuICAgIC8vIChldmVuIG9uIFdpbmRvd3MhKVxuICAgIGNvbnN0IHBrZ0pzb25QYXRoID0gcmVzb2x2ZUZyb20oY3dkLCBgJHtwa2dOYW1lfS9wYWNrYWdlLmpzb25gKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlcXVpcmUocGtnSnNvblBhdGgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGhlIHBhY2thZ2Ugd2FzIG5vdCBkb3dubG9hZGVkIGNvcnJlY3RseTsgaXRzIHBhY2thZ2UuanNvbiAnICtcbiAgICAgICAgICAnZGlkIG5vdCBleGlzdCBvciB3YXMgdW5yZWFkYWJsZS4gV2UgbG9va2VkIGZvciBpdCBhdCAnICtcbiAgICAgICAgICBwa2dKc29uUGF0aFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN3ZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGtnXG4gICAqL1xuICBhc3luYyB1bmluc3RhbGxQYWNrYWdlKGN3ZCwgcGtnKSB7XG4gICAgYXdhaXQgdGhpcy5leGVjKCd1bmluc3RhbGwnLCBbcGtnXSwge1xuICAgICAgY3dkLFxuICAgICAgbG9ja0ZpbGU6IHRoaXMuX2dldEluc3RhbGxMb2NrZmlsZVBhdGgoY3dkKSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbnBtID0gbmV3IE5QTSgpO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBOUE0uaW5zdGFsbFBhY2thZ2V9XG4gKiBAdHlwZWRlZiBJbnN0YWxsUGFja2FnZU9wdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcGtnVmVyXSAtIHRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIHRvIGluc3RhbGxcbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBOUE0uZXhlY31cbiAqIEB0eXBlZGVmIEV4ZWNPcHRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY3dkIC0gQ3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICogQHByb3BlcnR5IHtib29sZWFufSBbanNvbl0gLSBJZiBgdHJ1ZWAsIHN1cHBseSBgLS1qc29uYCBmbGFnIHRvIG5wbSBhbmQgcmVzb2x2ZSB3LyBwYXJzZWQgSlNPTlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtsb2NrRmlsZV0gLSBQYXRoIHRvIGxvY2tmaWxlIHRvIHVzZVxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQU1PLE1BQU1BLHVCQUF1QixHQUFHQyxhQUFBLENBQUtDLElBQUwsQ0FBVSxjQUFW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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm.js","names":["CACHE_DIR_RELATIVE_PATH","path","join","INSTALL_LOCKFILE_RELATIVE_PATH","NPM","_getInstallLockfilePath","cwd","exec","cmd","args","opts","execOpts","json","lockFile","teenProcessExecOpts","unshift","push","npmCmd","system","isWindows","runner","acquireLock","util","getLockFileGuard","_runner","ret","stdout","stderr","code","JSON","parse","ign","e","err","Error","trim","getLatestVersion","pkg","latest","message","includes","getLatestSafeUpgradeVersion","curVersion","allVersions","getLatestSafeUpgradeFromVersions","list","safeUpgradeVer","curSemver","semver","testVer","testSemver","prerelease","length","compare","major","format","installPackage","pkgName","pkgVer","dummyPkgJson","dummyPkgPath","fs","readFile","writeFile","stringify","installOpts","hasAppiumDependency","process","env","APPIUM_OMIT_PEER_DEPS","res","error","pkgJsonPath","resolveFrom","require","uninstallPackage","npm"],"sources":["../../lib/npm.js"],"sourcesContent":["// @ts-check\n\nimport path from 'path';\nimport semver from 'semver';\nimport {hasAppiumDependency} from './env';\nimport {exec} from 'teen_process';\nimport {fs} from './fs';\nimport * as util from './util';\nimport * as system from './system';\nimport resolveFrom from 'resolve-from';\n\n/**\n * Relative path to directory containing any Appium internal files\n * XXX: this is duplicated in `appium/lib/constants.js`.\n */\nexport const CACHE_DIR_RELATIVE_PATH = path.join('node_modules', '.cache', 'appium');\n\n/**\n * Relative path to lockfile used when installing an extension via `appium`\n */\nexport const INSTALL_LOCKFILE_RELATIVE_PATH = path.join(CACHE_DIR_RELATIVE_PATH, '.install.lock');\n\n/**\n * XXX: This should probably be a singleton, but it isn't. Maybe this module should just export functions?\n */\nexport class NPM {\n /**\n * Returns path to \"install\" lockfile\n * @private\n * @param {string} cwd\n */\n _getInstallLockfilePath(cwd) {\n return path.join(cwd, INSTALL_LOCKFILE_RELATIVE_PATH);\n }\n\n /**\n * Execute `npm` with given args.\n *\n * If the process exits with a nonzero code, the contents of `STDOUT` and `STDERR` will be in the\n * `message` of any rejected error.\n * @param {string} cmd\n * @param {string[]} args\n * @param {ExecOpts} opts\n * @param {Omit<import('teen_process').ExecOptions, 'cwd'>} [execOpts]\n */\n async exec(cmd, args, opts, execOpts = {}) {\n let {cwd, json, lockFile} = opts;\n\n // make sure we perform the current operation in cwd\n /** @type {import('teen_process').ExecOptions} */\n const teenProcessExecOpts = {...execOpts, cwd};\n\n args.unshift(cmd);\n if (json) {\n args.push('--json');\n }\n const npmCmd = system.isWindows() ? 'npm.cmd' : 'npm';\n let runner = async () => await exec(npmCmd, args, teenProcessExecOpts);\n if (lockFile) {\n const acquireLock = util.getLockFileGuard(lockFile);\n const _runner = runner;\n runner = async () => await acquireLock(_runner);\n }\n\n /** @type {import('teen_process').ExecResult<string> & {json?: any}} */\n let ret;\n try {\n const {stdout, stderr, code} = await runner();\n ret = {stdout, stderr, code};\n // if possible, parse NPM's json output. During NPM install 3rd-party\n // packages can write to stdout, so sometimes the json output can't be\n // guaranteed to be parseable\n try {\n ret.json = JSON.parse(stdout);\n } catch (ign) {}\n } catch (e) {\n const {\n stdout = '',\n stderr = '',\n code = null,\n } = /** @type {import('teen_process').ExecError} */ (e);\n const err = new Error(\n `npm command '${args.join(\n ' '\n )}' failed with code ${code}.\\n\\nSTDOUT:\\n${stdout.trim()}\\n\\nSTDERR:\\n${stderr.trim()}`\n );\n throw err;\n }\n return ret;\n }\n\n /**\n * @param {string} cwd\n * @param {string} pkg\n * @returns {Promise<string?>}\n */\n async getLatestVersion(cwd, pkg) {\n try {\n return (\n (\n await this.exec('view', [pkg, 'dist-tags'], {\n json: true,\n cwd,\n })\n ).json?.latest ?? null\n );\n } catch (err) {\n if (!err?.message.includes('E404')) {\n throw err;\n }\n return null;\n }\n }\n\n /**\n * @param {string} cwd\n * @param {string} pkg\n * @param {string} curVersion\n * @returns {Promise<string?>}\n */\n async getLatestSafeUpgradeVersion(cwd, pkg, curVersion) {\n try {\n const allVersions = (\n await this.exec('view', [pkg, 'versions'], {\n json: true,\n cwd,\n })\n ).json;\n return this.getLatestSafeUpgradeFromVersions(curVersion, allVersions);\n } catch (err) {\n if (!err?.message.includes('E404')) {\n throw err;\n }\n return null;\n }\n }\n\n /**\n * Runs `npm ls`, optionally for a particular package.\n * @param {string} cwd\n * @param {string} [pkg]\n */\n async list(cwd, pkg) {\n return (await this.exec('list', pkg ? [pkg] : [], {cwd, json: true})).json;\n }\n\n /**\n * Given a current version and a list of all versions for a package, return the version which is\n * the highest safely-upgradable version (meaning not crossing any major revision boundaries, and\n * not including any alpha/beta/rc versions)\n *\n * @param {string} curVersion - the current version of a package\n * @param {Array<string>} allVersions - a list of version strings\n *\n * @return {string|null} - the highest safely-upgradable version, or null if there isn't one\n */\n getLatestSafeUpgradeFromVersions(curVersion, allVersions) {\n let safeUpgradeVer = null;\n const curSemver = semver.parse(curVersion);\n if (curSemver === null) {\n throw new Error(`Could not parse current version '${curVersion}'`);\n }\n for (const testVer of allVersions) {\n const testSemver = semver.parse(testVer);\n if (testSemver === null) {\n throw new Error(`Could not parse version to test against: '${testVer}'`);\n }\n // if the test version is a prerelease, ignore it\n if (testSemver.prerelease.length > 0) {\n continue;\n }\n // if the current version is later than the test version, skip this test version\n if (curSemver.compare(testSemver) === 1) {\n continue;\n }\n // if the test version is newer, but crosses a major revision boundary, also skip it\n if (testSemver.major > curSemver.major) {\n continue;\n }\n // otherwise this version is safe to upgrade to. But there might be multiple ones of this\n // kind, so keep iterating and keeping the highest\n if (safeUpgradeVer === null || testSemver.compare(safeUpgradeVer) === 1) {\n safeUpgradeVer = testSemver;\n }\n }\n if (safeUpgradeVer) {\n safeUpgradeVer = safeUpgradeVer.format();\n }\n return safeUpgradeVer;\n }\n\n /**\n * Installs a package w/ `npm`\n * @param {string} cwd\n * @param {string} pkgName\n * @param {InstallPackageOpts} [opts]\n * @returns {Promise<import('type-fest').PackageJson>}\n */\n async installPackage(cwd, pkgName, {pkgVer} = {}) {\n /** @type {any} */\n let dummyPkgJson;\n const dummyPkgPath = path.join(cwd, 'package.json');\n try {\n dummyPkgJson = JSON.parse(await fs.readFile(dummyPkgPath, 'utf8'));\n } catch (err) {\n if (err.code === 'ENOENT') {\n dummyPkgJson = {};\n await fs.writeFile(dummyPkgPath, JSON.stringify(dummyPkgJson, null, 2), 'utf8');\n } else {\n throw err;\n }\n }\n\n const installOpts = ['--save-dev'];\n if (!(await hasAppiumDependency(cwd))) {\n if (process.env.APPIUM_OMIT_PEER_DEPS) {\n installOpts.push('--omit=peer');\n }\n installOpts.push('--save-exact', '--global-style', '--no-package-lock');\n }\n\n const res = await this.exec(\n 'install',\n [...installOpts, pkgVer ? `${pkgName}@${pkgVer}` : pkgName],\n {\n cwd,\n json: true,\n lockFile: this._getInstallLockfilePath(cwd),\n }\n );\n\n if (res.json) {\n // we parsed a valid json response, so if we got an error here, return that\n // message straightaway\n if (res.json.error) {\n throw new Error(res.json.error);\n }\n }\n\n // Now read package data from the installed package to return, and make sure\n // everything got installed ok. Remember, pkgName might end up with a / in it due to an npm\n // org, so if so, that will get correctly exploded into multiple directories, by path.resolve here\n // (even on Windows!)\n const pkgJsonPath = resolveFrom(cwd, `${pkgName}/package.json`);\n try {\n return require(pkgJsonPath);\n } catch {\n throw new Error(\n 'The package was not downloaded correctly; its package.json ' +\n 'did not exist or was unreadable. We looked for it at ' +\n pkgJsonPath\n );\n }\n }\n\n /**\n * @param {string} cwd\n * @param {string} pkg\n */\n async uninstallPackage(cwd, pkg) {\n await this.exec('uninstall', [pkg], {\n cwd,\n lockFile: this._getInstallLockfilePath(cwd),\n });\n }\n}\n\nexport const npm = new NPM();\n\n/**\n * Options for {@link NPM.installPackage}\n * @typedef InstallPackageOpts\n * @property {string} [pkgVer] - the version of the package to install\n */\n\n/**\n * Options for {@link NPM.exec}\n * @typedef ExecOpts\n * @property {string} cwd - Current working directory\n * @property {boolean} [json] - If `true`, supply `--json` flag to npm and resolve w/ parsed JSON\n * @property {string} [lockFile] - Path to lockfile to use\n */\n"],"mappings":"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"}
|
package/build/lib/plist.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -26,6 +24,8 @@ var _logger = _interopRequireDefault(require("./logger"));
|
|
|
26
24
|
|
|
27
25
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
28
26
|
|
|
27
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
28
|
+
|
|
29
29
|
const BPLIST_IDENTIFIER = {
|
|
30
30
|
BUFFER: Buffer.from('bplist00'),
|
|
31
31
|
TEXT: 'bplist00'
|
|
@@ -157,4 +157,4 @@ function parsePlist(data) {
|
|
|
157
157
|
|
|
158
158
|
throw new Error(`Unknown type of plist, data: ${data.toString()}`);
|
|
159
159
|
}
|
|
160
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCUExJU1RfSURFTlRJRklFUiIsIkJVRkZFUiIsIkJ1ZmZlciIsImZyb20iLCJURVhUIiwiUExJU1RfSURFTlRJRklFUiIsInBhcnNlWG1sUGxpc3RGaWxlIiwicGxpc3RGaWxlbmFtZSIsInhtbENvbnRlbnQiLCJmcyIsInJlYWRGaWxlIiwieG1scGxpc3QiLCJwYXJzZSIsInBhcnNlUGxpc3RGaWxlIiwicGxpc3QiLCJtdXN0RXhpc3QiLCJxdWlldCIsImV4aXN0cyIsImxvZyIsImVycm9yQW5kVGhyb3ciLCJkZWJ1ZyIsIm9iaiIsInR5cGUiLCJicGxpc3RQYXJzZSIsInBhcnNlRmlsZSIsImxlbmd0aCIsIkVycm9yIiwiaWduIiwiZXJyIiwibWVzc2FnZSIsInVwZGF0ZVBsaXN0RmlsZSIsInVwZGF0ZWRGaWVsZHMiLCJiaW5hcnkiLCJfIiwiZXh0ZW5kIiwibmV3UGxpc3QiLCJicGxpc3RDcmVhdGUiLCJidWlsZCIsIndyaXRlRmlsZSIsImNyZWF0ZUJpbmFyeVBsaXN0IiwiZGF0YSIsInBhcnNlQmluYXJ5UGxpc3QiLCJwYXJzZUJ1ZmZlciIsImdldFhtbFBsaXN0IiwiaXNTdHJpbmciLCJzdGFydHNXaXRoIiwiaXNCdWZmZXIiLCJjb21wYXJlIiwidG9TdHJpbmciLCJnZXRCaW5hcnlQbGlzdCIsImNyZWF0ZVBsaXN0Iiwib2JqZWN0IiwicGFyc2VQbGlzdCIsInRleHRQbGlzdCIsImJpbmFyeVBsaXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3BsaXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB4bWxwbGlzdCBmcm9tICdwbGlzdCc7XG5pbXBvcnQgYnBsaXN0Q3JlYXRlIGZyb20gJ2JwbGlzdC1jcmVhdG9yJztcbmltcG9ydCBicGxpc3RQYXJzZSBmcm9tICdicGxpc3QtcGFyc2VyJztcbmltcG9ydCBmcyBmcm9tICcuL2ZzJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgQlBMSVNUX0lERU5USUZJRVIgPSB7XG4gIEJVRkZFUjogQnVmZmVyLmZyb20oJ2JwbGlzdDAwJyksXG4gIFRFWFQ6ICdicGxpc3QwMCcsXG59O1xuY29uc3QgUExJU1RfSURFTlRJRklFUiA9IHtcbiAgQlVGRkVSOiBCdWZmZXIuZnJvbSgnPCcpLFxuICBURVhUOiAnPCcsXG59O1xuXG4vLyBYTUwgUGxpc3QgbGlicmFyeSBoZWxwZXJcbmFzeW5jIGZ1bmN0aW9uIHBhcnNlWG1sUGxpc3RGaWxlKHBsaXN0RmlsZW5hbWUpIHtcbiAgbGV0IHhtbENvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShwbGlzdEZpbGVuYW1lLCAndXRmOCcpO1xuICByZXR1cm4geG1scGxpc3QucGFyc2UoeG1sQ29udGVudCk7XG59XG5cbi8qKlxuICogUGFyc2VzIGEgZmlsZSBpbiB4bWwgb3IgYmluYXJ5IGZvcm1hdCBvZiBwbGlzdFxuICogQHBhcmFtIHtzdHJpbmd9IHBsaXN0IFRoZSBwbGlzdCBmaWxlIHBhdGhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVzdEV4aXN0IElmIHNldCB0byBmYWxzZSwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIGZpbGUgZG9lc24ndCBleGlzdFxuICogQHBhcmFtIHtib29sZWFufSBxdWlldCBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwbGlzdCBwYXRoIHdpbGwgYmUgbG9nZ2VkIGluIGRlYnVnIGxldmVsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSBwYXJzZWQgcGxpc3QgSlMgT2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlUGxpc3RGaWxlKHBsaXN0LCBtdXN0RXhpc3QgPSB0cnVlLCBxdWlldCA9IHRydWUpIHtcbiAgLy8gaGFuZGxlIG5vbmV4aXN0YW50IGZpbGVcbiAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKHBsaXN0KSkpIHtcbiAgICBpZiAobXVzdEV4aXN0KSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgUGxpc3QgZmlsZSBkb2Vzbid0IGV4aXN0OiAnJHtwbGlzdH0nYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUGxpc3QgZmlsZSAnJHtwbGlzdH0nIGRvZXMgbm90IGV4aXN0LiBSZXR1cm5pbmcgYW4gZW1wdHkgcGxpc3QuYCk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgbGV0IG9iaiA9IHt9O1xuICBsZXQgdHlwZSA9ICdiaW5hcnknO1xuICB0cnkge1xuICAgIG9iaiA9IGF3YWl0IGJwbGlzdFBhcnNlLnBhcnNlRmlsZShwbGlzdCk7XG4gICAgaWYgKG9iai5sZW5ndGgpIHtcbiAgICAgIG9iaiA9IG9ialswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCaW5hcnkgZmlsZSAnJHtwbGlzdH0nJyBhcHBlYXJzIHRvIGJlIGVtcHR5YCk7XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHtcbiAgICB0cnkge1xuICAgICAgb2JqID0gYXdhaXQgcGFyc2VYbWxQbGlzdEZpbGUocGxpc3QpO1xuICAgICAgdHlwZSA9ICd4bWwnO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBwYXJzZSBwbGlzdCBmaWxlICcke3BsaXN0fScgYXMgWE1MOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGlmICghcXVpZXQpIHtcbiAgICBsb2cuZGVidWcoYFBhcnNlZCBwbGlzdCBmaWxlICcke3BsaXN0fScgYXMgJHt0eXBlfWApO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogVXBkYXRlcyBhIHBsaXN0IGZpbGUgd2l0aCB0aGUgZ2l2ZW4gZmllbGRzXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxpc3QgVGhlIHBsaXN0IGZpbGUgcGF0aFxuICogQHBhcmFtIHtPYmplY3R9IHVwZGF0ZWRGaWVsZHMgVGhlIHVwZGF0ZWQgZmllbGRzLXZhbHVlIHBhaXJzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpbmFyeSBJZiBzZXQgdG8gZmFsc2UsIHRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhcyBhIHhtbCBwbGlzdFxuICogQHBhcmFtIHtib29sZWFufSBtdXN0RXhpc3QgSWYgc2V0IHRvIGZhbHNlLCB0aGlzIG1ldGhvZCB3aWxsIHVwZGF0ZSBhbiBlbXB0eSBwbGlzdFxuICogQHBhcmFtIHtib29sZWFufSBxdWlldCBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwbGlzdCBwYXRoIHdpbGwgYmUgbG9nZ2VkIGluIGRlYnVnIGxldmVsXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVBsaXN0RmlsZShcbiAgcGxpc3QsXG4gIHVwZGF0ZWRGaWVsZHMsXG4gIGJpbmFyeSA9IHRydWUsXG4gIG11c3RFeGlzdCA9IHRydWUsXG4gIHF1aWV0ID0gdHJ1ZVxuKSB7XG4gIGxldCBvYmo7XG4gIHRyeSB7XG4gICAgb2JqID0gYXdhaXQgcGFyc2VQbGlzdEZpbGUocGxpc3QsIG11c3RFeGlzdCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgdXBkYXRlIHBsaXN0OiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG4gIF8uZXh0ZW5kKG9iaiwgdXBkYXRlZEZpZWxkcyk7XG4gIGxldCBuZXdQbGlzdCA9IGJpbmFyeSA/IGJwbGlzdENyZWF0ZShvYmopIDogeG1scGxpc3QuYnVpbGQob2JqKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocGxpc3QsIG5ld1BsaXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBzYXZlIHBsaXN0OiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG4gIGlmICghcXVpZXQpIHtcbiAgICBsb2cuZGVidWcoYFdyb3RlIHBsaXN0IGZpbGUgJyR7cGxpc3R9J2ApO1xuICB9XG59XG4vKipcbiAqIENyZWF0ZXMgYSBiaW5hcnkgcGxpc3QgQnVmZmVyIGZyb20gYW4gb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YSBUaGUgb2JqZWN0IHRvIGJlIHR1cm5lZCBpbnRvIGEgYmluYXJ5IHBsaXN0XG4gKiBAcmV0dXJucyB7QnVmZmVyfSBwbGlzdCBpbiB0aGUgZm9ybSBvZiBhIGJpbmFyeSBidWZmZXJcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmluYXJ5UGxpc3QoZGF0YSkge1xuICByZXR1cm4gYnBsaXN0Q3JlYXRlKGRhdGEpO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhIEJ1ZmZlciBpbnRvIGFuIE9iamVjdFxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGEgVGhlIGJlZmZlciBvZiBhIGJpbmFyeSBwbGlzdFxuICovXG5mdW5jdGlvbiBwYXJzZUJpbmFyeVBsaXN0KGRhdGEpIHtcbiAgcmV0dXJuIGJwbGlzdFBhcnNlLnBhcnNlQnVmZmVyKGRhdGEpO1xufVxuXG5mdW5jdGlvbiBnZXRYbWxQbGlzdChkYXRhKSB7XG4gIGlmIChfLmlzU3RyaW5nKGRhdGEpICYmIGRhdGEuc3RhcnRzV2l0aChQTElTVF9JREVOVElGSUVSLlRFWFQpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgaWYgKFxuICAgIF8uaXNCdWZmZXIoZGF0YSkgJiZcbiAgICBQTElTVF9JREVOVElGSUVSLkJVRkZFUi5jb21wYXJlKGRhdGEsIDAsIFBMSVNUX0lERU5USUZJRVIuQlVGRkVSLmxlbmd0aCkgPT09IDBcbiAgKSB7XG4gICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0QmluYXJ5UGxpc3QoZGF0YSkge1xuICBpZiAoXy5pc1N0cmluZyhkYXRhKSAmJiBkYXRhLnN0YXJ0c1dpdGgoQlBMSVNUX0lERU5USUZJRVIuVEVYVCkpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZGF0YSk7XG4gIH1cblxuICBpZiAoXG4gICAgXy5pc0J1ZmZlcihkYXRhKSAmJlxuICAgIEJQTElTVF9JREVOVElGSUVSLkJVRkZFUi5jb21wYXJlKGRhdGEsIDAsIEJQTElTVF9JREVOVElGSUVSLkJVRkZFUi5sZW5ndGgpID09PSAwXG4gICkge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBwbGlzdCBmcm9tIGFuIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgSlMgb2JqZWN0IHRvIGJlIHR1cm5lZCBpbnRvIGEgcGxpc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYmluYXJ5IFNldCBpdCB0byB0cnVlIGZvciBhIGJpbmFyeSBwbGlzdFxuICogQHJldHVybnMge3N0cmluZ3xCdWZmZXJ9IHJldHVybnMgYSBidWZmZXIgb3IgYSBzdHJpbmcgaW4gcmVzcGVjdCB0byB0aGUgYmluYXJ5IHBhcmFtZXRlclxuICovXG5mdW5jdGlvbiBjcmVhdGVQbGlzdChvYmplY3QsIGJpbmFyeSA9IGZhbHNlKSB7XG4gIGlmIChiaW5hcnkpIHtcbiAgICByZXR1cm4gY3JlYXRlQmluYXJ5UGxpc3Qob2JqZWN0KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geG1scGxpc3QuYnVpbGQob2JqZWN0KTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlcyBhbiBidWZmZXIgb3IgYSBzdHJpbmcgdG8gYSBKUyBvYmplY3QgYSBwbGlzdCBmcm9tIGFuIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfSBkYXRhIFRoZSBwbGlzdCBpbiB0aGUgZm9ybSBvZiBzdHJpbmcgb3IgQnVmZmVyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBwYXJzZWQgcGxpc3QgSlMgT2JqZWN0XG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHBsaXN0IHR5cGUgaXMgdW5rbm93blxuICovXG5mdW5jdGlvbiBwYXJzZVBsaXN0KGRhdGEpIHtcbiAgbGV0IHRleHRQbGlzdCA9IGdldFhtbFBsaXN0KGRhdGEpO1xuICBpZiAodGV4dFBsaXN0KSB7XG4gICAgcmV0dXJuIHhtbHBsaXN0LnBhcnNlKHRleHRQbGlzdCk7XG4gIH1cblxuICBsZXQgYmluYXJ5UGxpc3QgPSBnZXRCaW5hcnlQbGlzdChkYXRhKTtcbiAgaWYgKGJpbmFyeVBsaXN0KSB7XG4gICAgcmV0dXJuIHBhcnNlQmluYXJ5UGxpc3QoYmluYXJ5UGxpc3QpWzBdO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgb2YgcGxpc3QsIGRhdGE6ICR7ZGF0YS50b1N0cmluZygpfWApO1xufVxuXG5leHBvcnQge1xuICBwYXJzZVBsaXN0RmlsZSxcbiAgcGFyc2VQbGlzdCxcbiAgY3JlYXRlUGxpc3QsXG4gIHVwZGF0ZVBsaXN0RmlsZSxcbiAgY3JlYXRlQmluYXJ5UGxpc3QsXG4gIHBhcnNlQmluYXJ5UGxpc3QsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUc7RUFDeEJDLE1BQU0sRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVksVUFBWixDQURnQjtFQUV4QkMsSUFBSSxFQUFFO0FBRmtCLENBQTFCO0FBSUEsTUFBTUMsZ0JBQWdCLEdBQUc7RUFDdkJKLE1BQU0sRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVksR0FBWixDQURlO0VBRXZCQyxJQUFJLEVBQUU7QUFGaUIsQ0FBekI7O0FBTUEsZUFBZUUsaUJBQWYsQ0FBaUNDLGFBQWpDLEVBQWdEO0VBQzlDLElBQUlDLFVBQVUsR0FBRyxNQUFNQyxXQUFBLENBQUdDLFFBQUgsQ0FBWUgsYUFBWixFQUEyQixNQUEzQixDQUF2QjtFQUNBLE9BQU9JLGNBQUEsQ0FBU0MsS0FBVCxDQUFlSixVQUFmLENBQVA7QUFDRDs7QUFTRCxlQUFlSyxjQUFmLENBQThCQyxLQUE5QixFQUFxQ0MsU0FBUyxHQUFHLElBQWpELEVBQXVEQyxLQUFLLEdBQUcsSUFBL0QsRUFBcUU7RUFFbkUsSUFBSSxFQUFFLE1BQU1QLFdBQUEsQ0FBR1EsTUFBSCxDQUFVSCxL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
|
|
160
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCUExJU1RfSURFTlRJRklFUiIsIkJVRkZFUiIsIkJ1ZmZlciIsImZyb20iLCJURVhUIiwiUExJU1RfSURFTlRJRklFUiIsInBhcnNlWG1sUGxpc3RGaWxlIiwicGxpc3RGaWxlbmFtZSIsInhtbENvbnRlbnQiLCJmcyIsInJlYWRGaWxlIiwieG1scGxpc3QiLCJwYXJzZSIsInBhcnNlUGxpc3RGaWxlIiwicGxpc3QiLCJtdXN0RXhpc3QiLCJxdWlldCIsImV4aXN0cyIsImxvZyIsImVycm9yQW5kVGhyb3ciLCJkZWJ1ZyIsIm9iaiIsInR5cGUiLCJicGxpc3RQYXJzZSIsInBhcnNlRmlsZSIsImxlbmd0aCIsIkVycm9yIiwiaWduIiwiZXJyIiwibWVzc2FnZSIsInVwZGF0ZVBsaXN0RmlsZSIsInVwZGF0ZWRGaWVsZHMiLCJiaW5hcnkiLCJfIiwiZXh0ZW5kIiwibmV3UGxpc3QiLCJicGxpc3RDcmVhdGUiLCJidWlsZCIsIndyaXRlRmlsZSIsImNyZWF0ZUJpbmFyeVBsaXN0IiwiZGF0YSIsInBhcnNlQmluYXJ5UGxpc3QiLCJwYXJzZUJ1ZmZlciIsImdldFhtbFBsaXN0IiwiaXNTdHJpbmciLCJzdGFydHNXaXRoIiwiaXNCdWZmZXIiLCJjb21wYXJlIiwidG9TdHJpbmciLCJnZXRCaW5hcnlQbGlzdCIsImNyZWF0ZVBsaXN0Iiwib2JqZWN0IiwicGFyc2VQbGlzdCIsInRleHRQbGlzdCIsImJpbmFyeVBsaXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3BsaXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB4bWxwbGlzdCBmcm9tICdwbGlzdCc7XG5pbXBvcnQgYnBsaXN0Q3JlYXRlIGZyb20gJ2JwbGlzdC1jcmVhdG9yJztcbmltcG9ydCBicGxpc3RQYXJzZSBmcm9tICdicGxpc3QtcGFyc2VyJztcbmltcG9ydCBmcyBmcm9tICcuL2ZzJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgQlBMSVNUX0lERU5USUZJRVIgPSB7XG4gIEJVRkZFUjogQnVmZmVyLmZyb20oJ2JwbGlzdDAwJyksXG4gIFRFWFQ6ICdicGxpc3QwMCcsXG59O1xuY29uc3QgUExJU1RfSURFTlRJRklFUiA9IHtcbiAgQlVGRkVSOiBCdWZmZXIuZnJvbSgnPCcpLFxuICBURVhUOiAnPCcsXG59O1xuXG4vLyBYTUwgUGxpc3QgbGlicmFyeSBoZWxwZXJcbmFzeW5jIGZ1bmN0aW9uIHBhcnNlWG1sUGxpc3RGaWxlKHBsaXN0RmlsZW5hbWUpIHtcbiAgbGV0IHhtbENvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShwbGlzdEZpbGVuYW1lLCAndXRmOCcpO1xuICByZXR1cm4geG1scGxpc3QucGFyc2UoeG1sQ29udGVudCk7XG59XG5cbi8qKlxuICogUGFyc2VzIGEgZmlsZSBpbiB4bWwgb3IgYmluYXJ5IGZvcm1hdCBvZiBwbGlzdFxuICogQHBhcmFtIHtzdHJpbmd9IHBsaXN0IFRoZSBwbGlzdCBmaWxlIHBhdGhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVzdEV4aXN0IElmIHNldCB0byBmYWxzZSwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIGZpbGUgZG9lc24ndCBleGlzdFxuICogQHBhcmFtIHtib29sZWFufSBxdWlldCBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwbGlzdCBwYXRoIHdpbGwgYmUgbG9nZ2VkIGluIGRlYnVnIGxldmVsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSBwYXJzZWQgcGxpc3QgSlMgT2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlUGxpc3RGaWxlKHBsaXN0LCBtdXN0RXhpc3QgPSB0cnVlLCBxdWlldCA9IHRydWUpIHtcbiAgLy8gaGFuZGxlIG5vbmV4aXN0YW50IGZpbGVcbiAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKHBsaXN0KSkpIHtcbiAgICBpZiAobXVzdEV4aXN0KSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgUGxpc3QgZmlsZSBkb2Vzbid0IGV4aXN0OiAnJHtwbGlzdH0nYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUGxpc3QgZmlsZSAnJHtwbGlzdH0nIGRvZXMgbm90IGV4aXN0LiBSZXR1cm5pbmcgYW4gZW1wdHkgcGxpc3QuYCk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgbGV0IG9iaiA9IHt9O1xuICBsZXQgdHlwZSA9ICdiaW5hcnknO1xuICB0cnkge1xuICAgIG9iaiA9IGF3YWl0IGJwbGlzdFBhcnNlLnBhcnNlRmlsZShwbGlzdCk7XG4gICAgaWYgKG9iai5sZW5ndGgpIHtcbiAgICAgIG9iaiA9IG9ialswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCaW5hcnkgZmlsZSAnJHtwbGlzdH0nJyBhcHBlYXJzIHRvIGJlIGVtcHR5YCk7XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHtcbiAgICB0cnkge1xuICAgICAgb2JqID0gYXdhaXQgcGFyc2VYbWxQbGlzdEZpbGUocGxpc3QpO1xuICAgICAgdHlwZSA9ICd4bWwnO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBwYXJzZSBwbGlzdCBmaWxlICcke3BsaXN0fScgYXMgWE1MOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGlmICghcXVpZXQpIHtcbiAgICBsb2cuZGVidWcoYFBhcnNlZCBwbGlzdCBmaWxlICcke3BsaXN0fScgYXMgJHt0eXBlfWApO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogVXBkYXRlcyBhIHBsaXN0IGZpbGUgd2l0aCB0aGUgZ2l2ZW4gZmllbGRzXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxpc3QgVGhlIHBsaXN0IGZpbGUgcGF0aFxuICogQHBhcmFtIHtPYmplY3R9IHVwZGF0ZWRGaWVsZHMgVGhlIHVwZGF0ZWQgZmllbGRzLXZhbHVlIHBhaXJzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpbmFyeSBJZiBzZXQgdG8gZmFsc2UsIHRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhcyBhIHhtbCBwbGlzdFxuICogQHBhcmFtIHtib29sZWFufSBtdXN0RXhpc3QgSWYgc2V0IHRvIGZhbHNlLCB0aGlzIG1ldGhvZCB3aWxsIHVwZGF0ZSBhbiBlbXB0eSBwbGlzdFxuICogQHBhcmFtIHtib29sZWFufSBxdWlldCBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwbGlzdCBwYXRoIHdpbGwgYmUgbG9nZ2VkIGluIGRlYnVnIGxldmVsXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVBsaXN0RmlsZShcbiAgcGxpc3QsXG4gIHVwZGF0ZWRGaWVsZHMsXG4gIGJpbmFyeSA9IHRydWUsXG4gIG11c3RFeGlzdCA9IHRydWUsXG4gIHF1aWV0ID0gdHJ1ZVxuKSB7XG4gIGxldCBvYmo7XG4gIHRyeSB7XG4gICAgb2JqID0gYXdhaXQgcGFyc2VQbGlzdEZpbGUocGxpc3QsIG11c3RFeGlzdCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgdXBkYXRlIHBsaXN0OiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG4gIF8uZXh0ZW5kKG9iaiwgdXBkYXRlZEZpZWxkcyk7XG4gIGxldCBuZXdQbGlzdCA9IGJpbmFyeSA/IGJwbGlzdENyZWF0ZShvYmopIDogeG1scGxpc3QuYnVpbGQob2JqKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocGxpc3QsIG5ld1BsaXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBzYXZlIHBsaXN0OiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG4gIGlmICghcXVpZXQpIHtcbiAgICBsb2cuZGVidWcoYFdyb3RlIHBsaXN0IGZpbGUgJyR7cGxpc3R9J2ApO1xuICB9XG59XG4vKipcbiAqIENyZWF0ZXMgYSBiaW5hcnkgcGxpc3QgQnVmZmVyIGZyb20gYW4gb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YSBUaGUgb2JqZWN0IHRvIGJlIHR1cm5lZCBpbnRvIGEgYmluYXJ5IHBsaXN0XG4gKiBAcmV0dXJucyB7QnVmZmVyfSBwbGlzdCBpbiB0aGUgZm9ybSBvZiBhIGJpbmFyeSBidWZmZXJcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmluYXJ5UGxpc3QoZGF0YSkge1xuICByZXR1cm4gYnBsaXN0Q3JlYXRlKGRhdGEpO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhIEJ1ZmZlciBpbnRvIGFuIE9iamVjdFxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGEgVGhlIGJlZmZlciBvZiBhIGJpbmFyeSBwbGlzdFxuICovXG5mdW5jdGlvbiBwYXJzZUJpbmFyeVBsaXN0KGRhdGEpIHtcbiAgcmV0dXJuIGJwbGlzdFBhcnNlLnBhcnNlQnVmZmVyKGRhdGEpO1xufVxuXG5mdW5jdGlvbiBnZXRYbWxQbGlzdChkYXRhKSB7XG4gIGlmIChfLmlzU3RyaW5nKGRhdGEpICYmIGRhdGEuc3RhcnRzV2l0aChQTElTVF9JREVOVElGSUVSLlRFWFQpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgaWYgKFxuICAgIF8uaXNCdWZmZXIoZGF0YSkgJiZcbiAgICBQTElTVF9JREVOVElGSUVSLkJVRkZFUi5jb21wYXJlKGRhdGEsIDAsIFBMSVNUX0lERU5USUZJRVIuQlVGRkVSLmxlbmd0aCkgPT09IDBcbiAgKSB7XG4gICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0QmluYXJ5UGxpc3QoZGF0YSkge1xuICBpZiAoXy5pc1N0cmluZyhkYXRhKSAmJiBkYXRhLnN0YXJ0c1dpdGgoQlBMSVNUX0lERU5USUZJRVIuVEVYVCkpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZGF0YSk7XG4gIH1cblxuICBpZiAoXG4gICAgXy5pc0J1ZmZlcihkYXRhKSAmJlxuICAgIEJQTElTVF9JREVOVElGSUVSLkJVRkZFUi5jb21wYXJlKGRhdGEsIDAsIEJQTElTVF9JREVOVElGSUVSLkJVRkZFUi5sZW5ndGgpID09PSAwXG4gICkge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBwbGlzdCBmcm9tIGFuIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgSlMgb2JqZWN0IHRvIGJlIHR1cm5lZCBpbnRvIGEgcGxpc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYmluYXJ5IFNldCBpdCB0byB0cnVlIGZvciBhIGJpbmFyeSBwbGlzdFxuICogQHJldHVybnMge3N0cmluZ3xCdWZmZXJ9IHJldHVybnMgYSBidWZmZXIgb3IgYSBzdHJpbmcgaW4gcmVzcGVjdCB0byB0aGUgYmluYXJ5IHBhcmFtZXRlclxuICovXG5mdW5jdGlvbiBjcmVhdGVQbGlzdChvYmplY3QsIGJpbmFyeSA9IGZhbHNlKSB7XG4gIGlmIChiaW5hcnkpIHtcbiAgICByZXR1cm4gY3JlYXRlQmluYXJ5UGxpc3Qob2JqZWN0KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geG1scGxpc3QuYnVpbGQob2JqZWN0KTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlcyBhbiBidWZmZXIgb3IgYSBzdHJpbmcgdG8gYSBKUyBvYmplY3QgYSBwbGlzdCBmcm9tIGFuIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfSBkYXRhIFRoZSBwbGlzdCBpbiB0aGUgZm9ybSBvZiBzdHJpbmcgb3IgQnVmZmVyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBwYXJzZWQgcGxpc3QgSlMgT2JqZWN0XG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHBsaXN0IHR5cGUgaXMgdW5rbm93blxuICovXG5mdW5jdGlvbiBwYXJzZVBsaXN0KGRhdGEpIHtcbiAgbGV0IHRleHRQbGlzdCA9IGdldFhtbFBsaXN0KGRhdGEpO1xuICBpZiAodGV4dFBsaXN0KSB7XG4gICAgcmV0dXJuIHhtbHBsaXN0LnBhcnNlKHRleHRQbGlzdCk7XG4gIH1cblxuICBsZXQgYmluYXJ5UGxpc3QgPSBnZXRCaW5hcnlQbGlzdChkYXRhKTtcbiAgaWYgKGJpbmFyeVBsaXN0KSB7XG4gICAgcmV0dXJuIHBhcnNlQmluYXJ5UGxpc3QoYmluYXJ5UGxpc3QpWzBdO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgb2YgcGxpc3QsIGRhdGE6ICR7ZGF0YS50b1N0cmluZygpfWApO1xufVxuXG5leHBvcnQge1xuICBwYXJzZVBsaXN0RmlsZSxcbiAgcGFyc2VQbGlzdCxcbiAgY3JlYXRlUGxpc3QsXG4gIHVwZGF0ZVBsaXN0RmlsZSxcbiAgY3JlYXRlQmluYXJ5UGxpc3QsXG4gIHBhcnNlQmluYXJ5UGxpc3QsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUc7RUFDeEJDLE1BQU0sRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVksVUFBWixDQURnQjtFQUV4QkMsSUFBSSxFQUFFO0FBRmtCLENBQTFCO0FBSUEsTUFBTUMsZ0JBQWdCLEdBQUc7RUFDdkJKLE1BQU0sRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVksR0FBWixDQURlO0VBRXZCQyxJQUFJLEVBQUU7QUFGaUIsQ0FBekI7O0FBTUEsZUFBZUUsaUJBQWYsQ0FBaUNDLGFBQWpDLEVBQWdEO0VBQzlDLElBQUlDLFVBQVUsR0FBRyxNQUFNQyxXQUFBLENBQUdDLFFBQUgsQ0FBWUgsYUFBWixFQUEyQixNQUEzQixDQUF2QjtFQUNBLE9BQU9JLGNBQUEsQ0FBU0MsS0FBVCxDQUFlSixVQUFmLENBQVA7QUFDRDs7QUFTRCxlQUFlSyxjQUFmLENBQThCQyxLQUE5QixFQUFxQ0MsU0FBUyxHQUFHLElBQWpELEVBQXVEQyxLQUFLLEdBQUcsSUFBL0QsRUFBcUU7RUFFbkUsSUFBSSxFQUFFLE1BQU1QLFdBQUEsQ0FBR1EsTUFBSCxDQUFVSCxL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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plist.js","names":["BPLIST_IDENTIFIER","BUFFER","Buffer","from","TEXT","PLIST_IDENTIFIER","parseXmlPlistFile","plistFilename","xmlContent","fs","readFile","xmlplist","parse","parsePlistFile","plist","mustExist","quiet","exists","log","errorAndThrow","debug","obj","type","bplistParse","parseFile","length","Error","ign","err","message","updatePlistFile","updatedFields","binary","_","extend","newPlist","bplistCreate","build","writeFile","createBinaryPlist","data","parseBinaryPlist","parseBuffer","getXmlPlist","isString","startsWith","isBuffer","compare","toString","getBinaryPlist","createPlist","object","parsePlist","textPlist","binaryPlist"],"sources":["../../lib/plist.js"],"sourcesContent":["import xmlplist from 'plist';\nimport bplistCreate from 'bplist-creator';\nimport bplistParse from 'bplist-parser';\nimport fs from './fs';\nimport log from './logger';\nimport _ from 'lodash';\n\nconst BPLIST_IDENTIFIER = {\n BUFFER: Buffer.from('bplist00'),\n TEXT: 'bplist00',\n};\nconst PLIST_IDENTIFIER = {\n BUFFER: Buffer.from('<'),\n TEXT: '<',\n};\n\n// XML Plist library helper\nasync function parseXmlPlistFile(plistFilename) {\n let xmlContent = await fs.readFile(plistFilename, 'utf8');\n return xmlplist.parse(xmlContent);\n}\n\n/**\n * Parses a file in xml or binary format of plist\n * @param {string} plist The plist file path\n * @param {boolean} mustExist If set to false, this method will return an empty object when the file doesn't exist\n * @param {boolean} quiet If set to false, the plist path will be logged in debug level\n * @returns {Promise<any>} parsed plist JS Object\n */\nasync function parsePlistFile(plist, mustExist = true, quiet = true) {\n // handle nonexistant file\n if (!(await fs.exists(plist))) {\n if (mustExist) {\n log.errorAndThrow(`Plist file doesn't exist: '${plist}'`);\n } else {\n log.debug(`Plist file '${plist}' does not exist. Returning an empty plist.`);\n return {};\n }\n }\n\n let obj = {};\n let type = 'binary';\n try {\n obj = await bplistParse.parseFile(plist);\n if (obj.length) {\n obj = obj[0];\n } else {\n throw new Error(`Binary file '${plist}'' appears to be empty`);\n }\n } catch (ign) {\n try {\n obj = await parseXmlPlistFile(plist);\n type = 'xml';\n } catch (err) {\n log.errorAndThrow(`Could not parse plist file '${plist}' as XML: ${err.message}`);\n }\n }\n\n if (!quiet) {\n log.debug(`Parsed plist file '${plist}' as ${type}`);\n }\n return obj;\n}\n\n/**\n * Updates a plist file with the given fields\n * @param {string} plist The plist file path\n * @param {Object} updatedFields The updated fields-value pairs\n * @param {boolean} binary If set to false, the file will be created as a xml plist\n * @param {boolean} mustExist If set to false, this method will update an empty plist\n * @param {boolean} quiet If set to false, the plist path will be logged in debug level\n */\nasync function updatePlistFile(\n plist,\n updatedFields,\n binary = true,\n mustExist = true,\n quiet = true\n) {\n let obj;\n try {\n obj = await parsePlistFile(plist, mustExist);\n } catch (err) {\n log.errorAndThrow(`Could not update plist: ${err.message}`);\n }\n _.extend(obj, updatedFields);\n let newPlist = binary ? bplistCreate(obj) : xmlplist.build(obj);\n try {\n await fs.writeFile(plist, newPlist);\n } catch (err) {\n log.errorAndThrow(`Could not save plist: ${err.message}`);\n }\n if (!quiet) {\n log.debug(`Wrote plist file '${plist}'`);\n }\n}\n/**\n * Creates a binary plist Buffer from an object\n * @param {Object} data The object to be turned into a binary plist\n * @returns {Buffer} plist in the form of a binary buffer\n */\nfunction createBinaryPlist(data) {\n return bplistCreate(data);\n}\n\n/**\n * Parses a Buffer into an Object\n * @param {Buffer} data The beffer of a binary plist\n */\nfunction parseBinaryPlist(data) {\n return bplistParse.parseBuffer(data);\n}\n\nfunction getXmlPlist(data) {\n if (_.isString(data) && data.startsWith(PLIST_IDENTIFIER.TEXT)) {\n return data;\n }\n if (\n _.isBuffer(data) &&\n PLIST_IDENTIFIER.BUFFER.compare(data, 0, PLIST_IDENTIFIER.BUFFER.length) === 0\n ) {\n return data.toString();\n }\n return null;\n}\n\nfunction getBinaryPlist(data) {\n if (_.isString(data) && data.startsWith(BPLIST_IDENTIFIER.TEXT)) {\n return Buffer.from(data);\n }\n\n if (\n _.isBuffer(data) &&\n BPLIST_IDENTIFIER.BUFFER.compare(data, 0, BPLIST_IDENTIFIER.BUFFER.length) === 0\n ) {\n return data;\n }\n return null;\n}\n\n/**\n * Creates a plist from an object\n * @param {Object} object The JS object to be turned into a plist\n * @param {boolean} binary Set it to true for a binary plist\n * @returns {string|Buffer} returns a buffer or a string in respect to the binary parameter\n */\nfunction createPlist(object, binary = false) {\n if (binary) {\n return createBinaryPlist(object);\n } else {\n return xmlplist.build(object);\n }\n}\n\n/**\n * Parses an buffer or a string to a JS object a plist from an object\n * @param {string|Buffer} data The plist in the form of string or Buffer\n * @returns {Object} parsed plist JS Object\n * @throws Will throw an error if the plist type is unknown\n */\nfunction parsePlist(data) {\n let textPlist = getXmlPlist(data);\n if (textPlist) {\n return xmlplist.parse(textPlist);\n }\n\n let binaryPlist = getBinaryPlist(data);\n if (binaryPlist) {\n return parseBinaryPlist(binaryPlist)[0];\n }\n\n throw new Error(`Unknown type of plist, data: ${data.toString()}`);\n}\n\nexport {\n parsePlistFile,\n parsePlist,\n createPlist,\n updatePlistFile,\n createBinaryPlist,\n parseBinaryPlist,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.js","names":["getProcessIds","appName","pids","stdout","exec","trim","split","map","pid","parseInt","err","code","Error","message","killProcess","force","length","args","push"],"sources":["../../lib/process.js"],"sourcesContent":["import {exec} from 'teen_process';\n\n/*\n * Exit Status for pgrep and pkill (`man pkill`)\n * 0. One or more processes matched the criteria.\n * 1. No processes matched.\n * 2. Syntax error in the command line.\n * 3. Fatal error: out of memory etc.\n */\n\nasync function getProcessIds(appName) {\n let pids;\n try {\n let {stdout} = await exec('pgrep', ['-x', appName]);\n pids = stdout\n .trim()\n .split('\\n')\n .map((pid) => parseInt(pid, 10));\n } catch (err) {\n if (parseInt(err.code, 10) !== 1) {\n throw new Error(`Error getting process ids for app '${appName}': ${err.message}`);\n }\n pids = [];\n }\n return pids;\n}\n\nasync function killProcess(appName, force = false) {\n let pids = await getProcessIds(appName);\n if (pids.length === 0) {\n // the process is not running\n return;\n }\n\n try {\n let args = force ? ['-9'] : [];\n args.push('-x', appName);\n await exec('pkill', args);\n } catch (err) {\n if (parseInt(err.code, 10) !== 1) {\n throw new Error(`Error killing app '${appName}' with pkill: ${err.message}`);\n }\n }\n}\n\nexport {getProcessIds, killProcess};\n"],"mappings":";;;;;;;;;;AAAA;;AAUA,eAAeA,aAAf,CAA6BC,OAA7B,EAAsC;EACpC,IAAIC,IAAJ;;EACA,IAAI;IACF,IAAI;MAACC;IAAD,IAAW,MAAM,IAAAC,kBAAA,EAAK,OAAL,EAAc,CAAC,IAAD,EAAOH,OAAP,CAAd,CAArB;IACAC,IAAI,GAAGC,MAAM,CACVE,IADI,GAEJC,KAFI,CAEE,IAFF,EAGJC,GAHI,CAGCC,GAAD,IAASC,QAAQ,CAACD,GAAD,EAAM,EAAN,CAHjB,CAAP;EAID,CAND,CAME,OAAOE,GAAP,EAAY;IACZ,IAAID,QAAQ,CAACC,GAAG,CAACC,IAAL,EAAW,EAAX,CAAR,KAA2B,CAA/B,EAAkC;MAChC,MAAM,IAAIC,KAAJ,CAAW,sCAAqCX,OAAQ,MAAKS,GAAG,CAACG,OAAQ,EAAzE,CAAN;IACD;;IACDX,IAAI,GAAG,EAAP;EACD;;EACD,OAAOA,IAAP;AACD;;AAED,eAAeY,WAAf,CAA2Bb,OAA3B,EAAoCc,KAAK,GAAG,KAA5C,EAAmD;EACjD,IAAIb,IAAI,GAAG,MAAMF,aAAa,CAACC,OAAD,CAA9B;;EACA,IAAIC,IAAI,CAACc,MAAL,KAAgB,CAApB,EAAuB;IAErB;EACD;;EAED,IAAI;IACF,IAAIC,IAAI,GAAGF,KAAK,GAAG,CAAC,IAAD,CAAH,GAAY,EAA5B;IACAE,IAAI,CAACC,IAAL,CAAU,IAAV,EAAgBjB,OAAhB;IACA,MAAM,IAAAG,kBAAA,EAAK,OAAL,EAAca,IAAd,CAAN;EACD,CAJD,CAIE,OAAOP,GAAP,EAAY;IACZ,IAAID,QAAQ,CAACC,GAAG,CAACC,IAAL,EAAW,EAAX,CAAR,KAA2B,CAA/B,EAAkC;MAChC,MAAM,IAAIC,KAAJ,CAAW,sBAAqBX,OAAQ,iBAAgBS,GAAG,CAACG,OAAQ,EAApE,CAAN;IACD;EACF;AACF"}
|
package/build/lib/system.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -20,6 +18,8 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
20
18
|
|
|
21
19
|
var _os = _interopRequireDefault(require("os"));
|
|
22
20
|
|
|
21
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
|
+
|
|
23
23
|
const VERSION_PATTERN = /^(\d+\.\d+)/m;
|
|
24
24
|
|
|
25
25
|
function isWindows() {
|
|
@@ -67,4 +67,4 @@ async function macOsxVersion() {
|
|
|
67
67
|
|
|
68
68
|
return versionMatch[1];
|
|
69
69
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWRVJTSU9OX1BBVFRFUk4iLCJpc1dpbmRvd3MiLCJvcyIsInR5cGUiLCJpc01hYyIsImlzTGludXgiLCJpc09TV2luNjQiLCJwcm9jZXNzIiwiYXJjaCIsIl8iLCJoYXMiLCJlbnYiLCJzdGRvdXQiLCJleGVjIiwidHJpbSIsImlzNjQiLCJtYWNPc3hWZXJzaW9uIiwiZXJyIiwiRXJyb3IiLCJ2ZXJzaW9uTWF0Y2giXSwic291cmNlcyI6WyIuLi8uLi9saWIvc3lzdGVtLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXhlY30gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuXG5jb25zdCBWRVJTSU9OX1BBVFRFUk4gPSAvXihcXGQrXFwuXFxkKykvbTtcblxuZnVuY3Rpb24gaXNXaW5kb3dzKCkge1xuICByZXR1cm4gb3MudHlwZSgpID09PSAnV2luZG93c19OVCc7XG59XG5cbmZ1bmN0aW9uIGlzTWFjKCkge1xuICByZXR1cm4gb3MudHlwZSgpID09PSAnRGFyd2luJztcbn1cblxuZnVuY3Rpb24gaXNMaW51eCgpIHtcbiAgcmV0dXJuICFpc1dpbmRvd3MoKSAmJiAhaXNNYWMoKTtcbn1cblxuZnVuY3Rpb24gaXNPU1dpbjY0KCkge1xuICByZXR1cm4gcHJvY2Vzcy5hcmNoID09PSAneDY0JyB8fCBfLmhhcyhwcm9jZXNzLmVudiwgJ1BST0NFU1NPUl9BUkNISVRFVzY0MzInKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXJjaCgpIHtcbiAgaWYgKGlzTGludXgoKSB8fCBpc01hYygpKSB7XG4gICAgbGV0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygndW5hbWUnLCBbJy1tJ10pO1xuICAgIHJldHVybiBzdGRvdXQudHJpbSgpID09PSAnaTY4NicgPyAnMzInIDogJzY0JztcbiAgfSBlbHNlIGlmIChpc1dpbmRvd3MoKSkge1xuICAgIGxldCBpczY0ID0gdGhpcy5pc09TV2luNjQoKTtcbiAgICByZXR1cm4gaXM2NCA/
|
|
70
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWRVJTSU9OX1BBVFRFUk4iLCJpc1dpbmRvd3MiLCJvcyIsInR5cGUiLCJpc01hYyIsImlzTGludXgiLCJpc09TV2luNjQiLCJwcm9jZXNzIiwiYXJjaCIsIl8iLCJoYXMiLCJlbnYiLCJzdGRvdXQiLCJleGVjIiwidHJpbSIsImlzNjQiLCJtYWNPc3hWZXJzaW9uIiwiZXJyIiwiRXJyb3IiLCJ2ZXJzaW9uTWF0Y2giXSwic291cmNlcyI6WyIuLi8uLi9saWIvc3lzdGVtLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXhlY30gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuXG5jb25zdCBWRVJTSU9OX1BBVFRFUk4gPSAvXihcXGQrXFwuXFxkKykvbTtcblxuZnVuY3Rpb24gaXNXaW5kb3dzKCkge1xuICByZXR1cm4gb3MudHlwZSgpID09PSAnV2luZG93c19OVCc7XG59XG5cbmZ1bmN0aW9uIGlzTWFjKCkge1xuICByZXR1cm4gb3MudHlwZSgpID09PSAnRGFyd2luJztcbn1cblxuZnVuY3Rpb24gaXNMaW51eCgpIHtcbiAgcmV0dXJuICFpc1dpbmRvd3MoKSAmJiAhaXNNYWMoKTtcbn1cblxuZnVuY3Rpb24gaXNPU1dpbjY0KCkge1xuICByZXR1cm4gcHJvY2Vzcy5hcmNoID09PSAneDY0JyB8fCBfLmhhcyhwcm9jZXNzLmVudiwgJ1BST0NFU1NPUl9BUkNISVRFVzY0MzInKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXJjaCgpIHtcbiAgaWYgKGlzTGludXgoKSB8fCBpc01hYygpKSB7XG4gICAgbGV0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygndW5hbWUnLCBbJy1tJ10pO1xuICAgIHJldHVybiBzdGRvdXQudHJpbSgpID09PSAnaTY4NicgPyAnMzInIDogJzY0JztcbiAgfSBlbHNlIGlmIChpc1dpbmRvd3MoKSkge1xuICAgIGxldCBpczY0ID0gdGhpcy5pc09TV2luNjQoKTtcbiAgICByZXR1cm4gaXM2NCA/ICc2NCcgOiAnMzInO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1hY09zeFZlcnNpb24oKSB7XG4gIGxldCBzdGRvdXQ7XG4gIHRyeSB7XG4gICAgc3Rkb3V0ID0gKGF3YWl0IGV4ZWMoJ3N3X3ZlcnMnLCBbJy1wcm9kdWN0VmVyc2lvbiddKSkuc3Rkb3V0LnRyaW0oKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZGV0ZWN0IE1hYyBPUyBYIFZlcnNpb246ICR7ZXJyfWApO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvbk1hdGNoID0gVkVSU0lPTl9QQVRURVJOLmV4ZWMoc3Rkb3V0KTtcbiAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBkZXRlY3QgTWFjIE9TIFggVmVyc2lvbiBmcm9tIHN3X3ZlcnMgb3V0cHV0OiAnJHtzdGRvdXR9J2ApO1xuICB9XG4gIHJldHVybiB2ZXJzaW9uTWF0Y2hbMV07XG59XG5cbmV4cG9ydCB7aXNXaW5kb3dzLCBpc01hYywgaXNMaW51eCwgaXNPU1dpbjY0LCBhcmNoLCBtYWNPc3hWZXJzaW9ufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLGVBQWUsR0FBRyxjQUF4Qjs7QUFFQSxTQUFTQyxTQUFULEdBQXFCO0VBQ25CLE9BQU9DLFdBQUEsQ0FBR0MsSUFBSCxPQUFjLFlBQXJCO0FBQ0Q7O0FBRUQsU0FBU0MsS0FBVCxHQUFpQjtFQUNmLE9BQU9GLFdBQUEsQ0FBR0MsSUFBSCxPQUFjLFFBQXJCO0FBQ0Q7O0FBRUQsU0FBU0UsT0FBVCxHQUFtQjtFQUNqQixPQUFPLENBQUNKLFNBQVMsRUFBVixJQUFnQixDQUFDRyxLQUFLLEVBQTdCO0FBQ0Q7O0FBRUQsU0FBU0UsU0FBVCxHQUFxQjtFQUNuQixPQUFPQyxPQUFPLENBQUNDLElBQVIsS0FBaUIsS0FBakIsSUFBMEJDLGVBQUEsQ0FBRUMsR0FBRixDQUFNSCxPQUFPLENBQUNJLEdBQWQsRUFBbUIsd0JBQW5CLENBQWpDO0FBQ0Q7O0FBRUQsZUFBZUgsSUFBZixHQUFzQjtFQUNwQixJQUFJSCxPQUFPLE1BQU1ELEtBQUssRUFBdEIsRUFBMEI7SUFDeEIsSUFBSTtNQUFDUTtJQUFELElBQVcsTUFBTSxJQUFBQyxrQkFBQSxFQUFLLE9BQUwsRUFBYyxDQUFDLElBQUQsQ0FBZCxDQUFyQjtJQUNBLE9BQU9ELE1BQU0sQ0FBQ0UsSUFBUCxPQUFrQixNQUFsQixHQUEyQixJQUEzQixHQUFrQyxJQUF6QztFQUNELENBSEQsTUFHTyxJQUFJYixTQUFTLEVBQWIsRUFBaUI7SUFDdEIsSUFBSWMsSUFBSSxHQUFHLEtBQUtULFNBQUwsRUFBWDtJQUNBLE9BQU9TLElBQUksR0FBRyxJQUFILEdBQVUsSUFBckI7RUFDRDtBQUNGOztBQUVELGVBQWVDLGFBQWYsR0FBK0I7RUFDN0IsSUFBSUosTUFBSjs7RUFDQSxJQUFJO0lBQ0ZBLE1BQU0sR0FBRyxDQUFDLE1BQU0sSUFBQUMsa0JBQUEsRUFBSyxTQUFMLEVBQWdCLENBQUMsaUJBQUQsQ0FBaEIsQ0FBUCxFQUE2Q0QsTUFBN0MsQ0FBb0RFLElBQXBELEVBQVQ7RUFDRCxDQUZELENBRUUsT0FBT0csR0FBUCxFQUFZO0lBQ1osTUFBTSxJQUFJQyxLQUFKLENBQVcsc0NBQXFDRCxHQUFJLEVBQXBELENBQU47RUFDRDs7RUFFRCxNQUFNRSxZQUFZLEdBQUduQixlQUFlLENBQUNhLElBQWhCLENBQXFCRCxNQUFyQixDQUFyQjs7RUFDQSxJQUFJLENBQUNPLFlBQUwsRUFBbUI7SUFDakIsTUFBTSxJQUFJRCxLQUFKLENBQVcsMkRBQTBETixNQUFPLEdBQTVFLENBQU47RUFDRDs7RUFDRCxPQUFPTyxZQUFZLENBQUMsQ0FBRCxDQUFuQjtBQUNEIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.js","names":["VERSION_PATTERN","isWindows","os","type","isMac","isLinux","isOSWin64","process","arch","_","has","env","stdout","exec","trim","is64","macOsxVersion","err","Error","versionMatch"],"sources":["../../lib/system.js"],"sourcesContent":["import {exec} from 'teen_process';\nimport _ from 'lodash';\nimport os from 'os';\n\nconst VERSION_PATTERN = /^(\\d+\\.\\d+)/m;\n\nfunction isWindows() {\n return os.type() === 'Windows_NT';\n}\n\nfunction isMac() {\n return os.type() === 'Darwin';\n}\n\nfunction isLinux() {\n return !isWindows() && !isMac();\n}\n\nfunction isOSWin64() {\n return process.arch === 'x64' || _.has(process.env, 'PROCESSOR_ARCHITEW6432');\n}\n\nasync function arch() {\n if (isLinux() || isMac()) {\n let {stdout} = await exec('uname', ['-m']);\n return stdout.trim() === 'i686' ? '32' : '64';\n } else if (isWindows()) {\n let is64 = this.isOSWin64();\n return is64 ? '64' : '32';\n }\n}\n\nasync function macOsxVersion() {\n let stdout;\n try {\n stdout = (await exec('sw_vers', ['-productVersion'])).stdout.trim();\n } catch (err) {\n throw new Error(`Could not detect Mac OS X Version: ${err}`);\n }\n\n const versionMatch = VERSION_PATTERN.exec(stdout);\n if (!versionMatch) {\n throw new Error(`Could not detect Mac OS X Version from sw_vers output: '${stdout}'`);\n }\n return versionMatch[1];\n}\n\nexport {isWindows, isMac, isLinux, isOSWin64, arch, macOsxVersion};\n"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;AAEA,MAAMA,eAAe,GAAG,cAAxB;;AAEA,SAASC,SAAT,GAAqB;EACnB,OAAOC,WAAA,CAAGC,IAAH,OAAc,YAArB;AACD;;AAED,SAASC,KAAT,GAAiB;EACf,OAAOF,WAAA,CAAGC,IAAH,OAAc,QAArB;AACD;;AAED,SAASE,OAAT,GAAmB;EACjB,OAAO,CAACJ,SAAS,EAAV,IAAgB,CAACG,KAAK,EAA7B;AACD;;AAED,SAASE,SAAT,GAAqB;EACnB,OAAOC,OAAO,CAACC,IAAR,KAAiB,KAAjB,IAA0BC,eAAA,CAAEC,GAAF,CAAMH,OAAO,CAACI,GAAd,EAAmB,wBAAnB,CAAjC;AACD;;AAED,eAAeH,IAAf,GAAsB;EACpB,IAAIH,OAAO,MAAMD,KAAK,EAAtB,EAA0B;IACxB,IAAI;MAACQ;IAAD,IAAW,MAAM,IAAAC,kBAAA,EAAK,OAAL,EAAc,CAAC,IAAD,CAAd,CAArB;IACA,OAAOD,MAAM,CAACE,IAAP,OAAkB,MAAlB,GAA2B,IAA3B,GAAkC,IAAzC;EACD,CAHD,MAGO,IAAIb,SAAS,EAAb,EAAiB;IACtB,IAAIc,IAAI,GAAG,KAAKT,SAAL,EAAX;IACA,OAAOS,IAAI,GAAG,IAAH,GAAU,IAArB;EACD;AACF;;AAED,eAAeC,aAAf,GAA+B;EAC7B,IAAIJ,MAAJ;;EACA,IAAI;IACFA,MAAM,GAAG,CAAC,MAAM,IAAAC,kBAAA,EAAK,SAAL,EAAgB,CAAC,iBAAD,CAAhB,CAAP,EAA6CD,MAA7C,CAAoDE,IAApD,EAAT;EACD,CAFD,CAEE,OAAOG,GAAP,EAAY;IACZ,MAAM,IAAIC,KAAJ,CAAW,sCAAqCD,GAAI,EAApD,CAAN;EACD;;EAED,MAAME,YAAY,GAAGnB,eAAe,CAACa,IAAhB,CAAqBD,MAArB,CAArB;;EACA,IAAI,CAACO,YAAL,EAAmB;IACjB,MAAM,IAAID,KAAJ,CAAW,2DAA0DN,MAAO,GAA5E,CAAN;EACD;;EACD,OAAOO,YAAY,CAAC,CAAD,CAAnB;AACD"}
|
package/build/lib/tempdir.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -22,6 +20,8 @@ var _constants = _interopRequireDefault(require("constants"));
|
|
|
22
20
|
|
|
23
21
|
var _logger = _interopRequireDefault(require("./logger"));
|
|
24
22
|
|
|
23
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
|
+
|
|
25
25
|
const RDWR_EXCL = _constants.default.O_CREAT | _constants.default.O_TRUNC | _constants.default.O_RDWR | _constants.default.O_EXCL;
|
|
26
26
|
|
|
27
27
|
async function tempDir() {
|
|
@@ -85,4 +85,4 @@ exports.openDir = openDir;
|
|
|
85
85
|
async function staticDir() {
|
|
86
86
|
return _static;
|
|
87
87
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRFdSX0VYQ0wiLCJjbnN0IiwiT19DUkVBVCIsIk9fVFJVTkMiLCJPX1JEV1IiLCJPX0VYQ0wiLCJ0ZW1wRGlyIiwibm93IiwiRGF0ZSIsImZpbGVQYXRoIiwibm9kZVBhdGgiLCJqb2luIiwicHJvY2VzcyIsImVudiIsIkFQUElVTV9UTVBfRElSIiwib3MiLCJ0bXBkaXIiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsInBpZCIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsImZzIiwibWtkaXIiLCJwYXRoIiwicmF3QWZmaXhlcyIsImRlZmF1bHRQcmVmaXgiLCJhZmZpeGVzIiwicGFyc2VBZmZpeGVzIiwibmFtZSIsInByZWZpeCIsInN1ZmZpeCIsInRlbXBEaXJlY3RvcnkiLCJvcGVuIiwiZmQiLCJlcnIiLCJsb2ciLCJlcnJvckFuZFRocm93IiwiRXJyb3IiLCJfc3RhdGljIiwib3BlbkRpciIsInN0YXRpY0RpciJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90ZW1wZGlyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIFRoaXMgbGlicmFyeSBpcyBvcmlnaW5hdGVkIGZyb20gdGVtcC5qcyBhdCBodHRwOi8vZ2l0aHViLmNvbS9icnVjZS9ub2RlLXRlbXAgKi9cbmltcG9ydCBmcyBmcm9tICcuL2ZzJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgbm9kZVBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgY25zdCBmcm9tICdjb25zdGFudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5cbmNvbnN0IFJEV1JfRVhDTCA9IGNuc3QuT19DUkVBVCB8IGNuc3QuT19UUlVOQyB8IGNuc3QuT19SRFdSIHwgY25zdC5PX0VYQ0w7XG5cbi8qKlxuICogR2VuZXJhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIG9zLnRlbXBkaXIoKSBvciBwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUi5cbiAqIGUuZy5cbiAqIC0gTm8gYHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSYDogYC92YXIvZm9sZGVycy8zNC8yMjIyc2g4bjI3ZDZyY3A3anFsa3c4a20wMDAwZ24vVC94eHh4eHh4eC55eXl5YFxuICogLSBXaXRoIGBwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUiA9ICcvcGF0aC90by9yb290J2A6IGAvcGF0aC90by9yb290L3h4eHh4eHh4Lnl5eXlgXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwYXRoIHRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHRlbXBEaXIoKSB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IGZpbGVQYXRoID0gbm9kZVBhdGguam9pbihcbiAgICBwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUiB8fCBvcy50bXBkaXIoKSxcbiAgICBbXG4gICAgICBub3cuZ2V0RnVsbFllYXIoKSxcbiAgICAgIG5vdy5nZXRNb250aCgpLFxuICAgICAgbm93LmdldERhdGUoKSxcbiAgICAgICctJyxcbiAgICAgIHByb2Nlc3MucGlkLFxuICAgICAgJy0nLFxuICAgICAgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAwMCArIDEpLnRvU3RyaW5nKDM2KSxcbiAgICBdLmpvaW4oJycpXG4gICk7XG4gIC8vIGNyZWF0ZXMgYSB0ZW1wIGRpcmVjdG9yeSB1c2luZyB0aGUgZGF0ZSBhbmQgYSByYW5kb20gc3RyaW5nXG5cbiAgYXdhaXQgZnMubWtkaXIoZmlsZVBhdGgpO1xuXG4gIHJldHVybiBmaWxlUGF0aDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBBZmZpeGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3ByZWZpeF0gLSBwcmVmaXggb2YgdGhlIHRlbXAgZGlyZWN0b3J5IG5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc3VmZml4XSAtIHN1ZmZpeCBvZiB0aGUgdGVtcCBkaXJlY3RvcnkgbmFtZVxuICovXG5cbi8qKlxuICogR2VuZXJhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIG9zLnRlbXBkaXIoKSBvciBwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUlxuICogd2l0aCBhcmJpdHJhcnkgcHJlZml4L3N1ZmZpeCBmb3IgdGhlIGRpcmVjdG9yeSBuYW1lLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfEFmZml4ZXN9IHJhd0FmZml4ZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZGVmYXVsdFByZWZpeF1cbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59ICBBIHBhdGggdG8gdGhlIHRlbXBvcmFyeSBkaXJlY3Rvcnkgd2l0aCByYXdBZmZpeGVzIGFuZCBkZWZhdWx0UHJlZml4XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBhdGgocmF3QWZmaXhlcywgZGVmYXVsdFByZWZpeCkge1xuICBjb25zdCBhZmZpeGVzID0gcGFyc2VBZmZpeGVzKHJhd0FmZml4ZXMsIGRlZmF1bHRQcmVmaXgpO1xuICBjb25zdCBuYW1lID0gYCR7YWZmaXhlcy5wcmVmaXggfHwgJyd9JHthZmZpeGVzLnN1ZmZpeCB8fCAnJ31gO1xuICBjb25zdCB0ZW1wRGlyZWN0b3J5ID0gYXdhaXQgdGVtcERpcigpO1xuICByZXR1cm4gbm9kZVBhdGguam9pbih0ZW1wRGlyZWN0b3J5LCBuYW1lKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBPcGVuZWRBZmZpeGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIHRvIGZpbGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmZCAtIFRoZSBmaWxlIGRlc2NyaXB0b3Igb3BlbmVkXG4gKi9cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gb3MudGVtcGRpcigpIG9yIHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSXG4gKiB3aXRoIGFyYml0cmFyeSBwcmVmaXgvc3VmZml4IGZvciB0aGUgZGlyZWN0b3J5IG5hbWUgYW5kIHJldHVybiBpdCBhcyBvcGVuLlxuICpcbiAqIEBwYXJhbSB7QWZmaXhlc30gYWZmaXhlc1xuICogQHJldHVybnMge1Byb21pc2U8T3BlbmVkQWZmaXhlcz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG9wZW4oYWZmaXhlcykge1xuICBjb25zdCBmaWxlUGF0aCA9IGF3YWl0IHBhdGgoYWZmaXhlcywgJ2YtJyk7XG4gIHRyeSB7XG4gICAgbGV0IGZkID0gYXdhaXQgZnMub3BlbihmaWxlUGF0aCwgUkRXUl9FWENMLCAwbzYwMCk7XG4gICAgLy8gb3BlbnMgdGhlIGZpbGUgaW4gbW9kZSAzODRcbiAgICByZXR1cm4ge3BhdGg6IGZpbGVQYXRoLCBmZH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBsb2cuZXJyb3JBbmRUaHJvdyhlcnIpO1xuICB9XG59XG5cbi8qKlxuICpcbiAqIFJldHVybnMgcHJlZml4L3N1ZmZpeCBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBZmZpeGVzfSByYXdBZmZpeGVzXG4gKiBAcGFyYW0ge3N0cmluZ30gW2RlZmF1bHRQcmVmaXhdXG4gKiBAcmV0dXJucyB7QWZmaXhlc31cbiAqL1xuZnVuY3Rpb24gcGFyc2VBZmZpeGVzKHJhd0FmZml4ZXMsIGRlZmF1bHRQcmVmaXgpIHtcbiAgLyoqIEB0eXBlIHtBZmZpeGVzfSAqL1xuICBsZXQgYWZmaXhlcyA9IHt9O1xuICBpZiAocmF3QWZmaXhlcykge1xuICAgIHN3aXRjaCAodHlwZW9mIHJhd0FmZml4ZXMpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGFmZml4ZXMucHJlZml4ID0gcmF3QWZmaXhlcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBhZmZpeGVzID0gcmF3QWZmaXhlcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWZmaXggZGVjbGFyYXRpb246ICR7YWZmaXhlc31gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYWZmaXhlcy5wcmVmaXggPSBkZWZhdWx0UHJlZml4O1xuICB9XG4gIHJldHVybiBhZmZpeGVzO1xufVxuXG5jb25zdCBfc3RhdGljID0gdGVtcERpcigpO1xuXG4vKipcbiAqIFJldHVybnMgYSBuZXcgcGF0aCB0byBhIHRlbXBvcmFyeSBkaXJlY3RvcnlcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIG5ldyB0ZW1wRGlyKCkgaWYgdGVtcFJvb3REaXJlY3RvcnkgaXMgbm90IHByb3ZpZGVkXG4gKi9cbmNvbnN0IG9wZW5EaXIgPSB0ZW1wRGlyO1xuXG4vKipcbiAqIFJldHVybnMgYSBwYXRoIHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aGNpaCBpcyBkZWZpbmVkIGFzIHN0YXRpYyBpbiB0aGUgc2FtZSBwcm9jZXNzXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSB0ZW1wIGRpcmVjdG9yeSBwYXRoIHdoY2loIGlzIGRlZmluZWQgYXMgc3RhdGljIGluIHRoZSBzYW1lIHByb2Nlc3NcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbmFzeW5jIGZ1bmN0aW9uIHN0YXRpY0RpcigpIHtcbiAgcmV0dXJuIF9zdGF0aWM7XG59XG5cbmV4cG9ydCB7b3BlbiwgcGF0aCwgb3BlbkRpciwgc3RhdGljRGlyfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxTQUFTLEdBQUdDLGtCQUFBLENBQUtDLE9BQUwsR0FBZUQsa0JBQUEsQ0FBS0UsT0FBcEIsR0FBOEJGLGtCQUFBLENBQUtHLE1BQW5DLEdBQTRDSCxrQkFBQSxDQUFLSSxNQUFuRTs7QUFVQSxlQUFlQyxPQUFmLEdBQXlCO0VBQ3ZCLE1BQU1DLEdBQUcsR0FBRyxJQUFJQyxJQUFKLEVBQVo7O0VBQ0EsTUFBTUMsUUFBUSxHQUFHQyxhQUFBLENBQVNDLElBQVQsQ0FDZkMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLGNBQVosSUFBOEJDLFdBQUEsQ0FBR0MsTUFBSCxFQURmLEVBRWYsQ0FDRVQsR0FBRyxDQUFDVSxXQUFKLEVBREYsRUFFRVYsR0FBRyxDQUFDVyxRQUFKLEVBRkYsRUFHRVgsR0FBRyxDQUFDWSxPQUFKLEVBSEYsRUFJRSxHQUpGLEVBS0VQLE9BQU8sQ0FBQ1EsR0FMVixFQU1FLEdBTkYsRUFPRSxDQUFDQyxJQUFJLENBQUNDLE1BQUwsS0FBZ0IsV0FBaEIsR0FBOEIsQ0FBL0IsRUFBa0NDLFFBQWxDLENBQTJDLEVBQTNDLENBUEYsRUFRRVosSUFSRixDQVFPLEVBUlAsQ0FGZSxDQUFqQjs7RUFjQSxNQUFNYSxXQUFBLENBQUdDLEtBQUgsQ0FBU2hCLFFBQVQsQ0FBTjtFQUVBLE9BQU9BLFFBQVA7QUFDRDs7QUFnQkQsZUFBZWlCLElBQWYsQ0FBb0JDLFVBQXBCLEVBQWdDQyxhQUFoQyxFQUErQztFQUM3QyxNQUFNQyxPQUFPLEdBQUdDLFlBQVksQ0FBQ0gsVUFBRCxFQUFhQyxhQUFiLENBQTVCO0VBQ0EsTUFBTUcsSUFBSSxHQUFJLEdBQUVGLE9BQU8sQ0FBQ0csTUFBUixJQUFrQixFQUFHLEdBQUVILE9BQU8sQ0FBQ0ksTUFBUixJQUFrQixFQUFHLEVBQTVEO0VBQ0EsTUFBTUMsYUFBYSxHQUFHLE1BQU01QixPQUFPLEVBQW5DO0VBQ0EsT0FBT0ksYUFBQSxDQUFTQyxJQUFULENBQWN1QixhQUFkLEVBQTZCSCxJQUE3QixDQUFQO0FBQ0Q7O0FBZUQsZUFBZUksSUFBZixDQUFvQk4sT0FBcEIsRUFBNkI7RUFDM0IsTUFBTXBCLFFBQVEsR0FBRyxNQUFNaUIsSUFBSSxDQUFDRyxPQUFELEVBQVUsSUFBVixDQUEzQjs7RUFDQSxJQUFJO0lBQ0YsSUFBSU8sRUFBRSxHQUFHLE1BQU1aLFdBQUEsQ0FBR1csSUFBSCxDQUFRMUIsUUFBUixFQUFrQlQsU0FBbEIsRUFBNkIsS0FBN0IsQ0FBZjtJQUVBLE9BQU87TUFBQzBCLElBQUksRUFBRWpCLFFBQVA7TUFBaUIyQjtJQUFqQixDQUFQO0VBQ0QsQ0FKRCxDQUlFLE9BQU9DLEdBQVAsRUFBWTtJQUNaLE9BQU9DLGVBQUEsQ0FBSUMsYUFBSixDQUFrQkYsR0FBbEIsQ0FBUDtFQUNEO0FBQ0Y7O0FBVUQsU0FBU1AsWUFBVCxDQUFzQkgsVUFBdEIsRUFBa0NDLGFBQWxDLEVBQWlEO0VBRS9DLElBQUlDLE9BQU8sR0FBRyxFQUFkOztFQUNBLElBQUlGLFVBQUosRUFBZ0I7SUFDZCxRQUFRLE9BQU9BLFVBQWY7TUFDRSxLQUFLLFFBQUw7UUFDRUUsT0FBTyxDQUFDRyxNQUFSLEdBQWlCTCxVQUFqQjtRQUNBOztNQUNGLEtBQUssUUFBTDtRQUNFRSxPQUFPLEdBQUdGLFVBQVY7UUFDQTs7TUFDRjtRQUNFLE1BQU0sSUFBSWEsS0FBSixDQUFXLDhCQUE2QlgsT0FBUSxFQUFoRCxDQUFOO0lBUko7RUFVRCxDQVhELE1BV087SUFDTEEsT0FBTyxDQUFDRyxNQUFSLEdBQWlCSixhQUFqQjtFQUNEOztFQUNELE9BQU9DLE9BQVA7QUFDRDs7QUFFRCxNQUFNWSxPQUFPLEdBQUduQyxPQUFPLEVBQXZCOztBQU9BLE1BQU1vQyxPQUFPLEdBQUdwQyxPQUFoQjs7O0FBUUEsZUFBZXFDLFNBQWYsR0FBMkI7RUFDekIsT0FBT0YsT0FBUDtBQUNEIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempdir.js","names":["RDWR_EXCL","cnst","O_CREAT","O_TRUNC","O_RDWR","O_EXCL","tempDir","now","Date","filePath","nodePath","join","process","env","APPIUM_TMP_DIR","os","tmpdir","getFullYear","getMonth","getDate","pid","Math","random","toString","fs","mkdir","path","rawAffixes","defaultPrefix","affixes","parseAffixes","name","prefix","suffix","tempDirectory","open","fd","err","log","errorAndThrow","Error","_static","openDir","staticDir"],"sources":["../../lib/tempdir.js"],"sourcesContent":["/* This library is originated from temp.js at http://github.com/bruce/node-temp */\nimport fs from './fs';\nimport os from 'os';\nimport nodePath from 'path';\nimport cnst from 'constants';\nimport log from './logger';\n\nconst RDWR_EXCL = cnst.O_CREAT | cnst.O_TRUNC | cnst.O_RDWR | cnst.O_EXCL;\n\n/**\n * Generate a temporary directory in os.tempdir() or process.env.APPIUM_TMP_DIR.\n * e.g.\n * - No `process.env.APPIUM_TMP_DIR`: `/var/folders/34/2222sh8n27d6rcp7jqlkw8km0000gn/T/xxxxxxxx.yyyy`\n * - With `process.env.APPIUM_TMP_DIR = '/path/to/root'`: `/path/to/root/xxxxxxxx.yyyy`\n *\n * @returns {Promise<string>} A path to the temporary directory\n */\nasync function tempDir() {\n const now = new Date();\n const filePath = nodePath.join(\n process.env.APPIUM_TMP_DIR || os.tmpdir(),\n [\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n '-',\n process.pid,\n '-',\n (Math.random() * 0x100000000 + 1).toString(36),\n ].join('')\n );\n // creates a temp directory using the date and a random string\n\n await fs.mkdir(filePath);\n\n return filePath;\n}\n\n/**\n * @typedef Affixes\n * @property {string} [prefix] - prefix of the temp directory name\n * @property {string} [suffix] - suffix of the temp directory name\n */\n\n/**\n * Generate a temporary directory in os.tempdir() or process.env.APPIUM_TMP_DIR\n * with arbitrary prefix/suffix for the directory name.\n *\n * @param {string|Affixes} rawAffixes\n * @param {string} [defaultPrefix]\n * @returns {Promise<string>} A path to the temporary directory with rawAffixes and defaultPrefix\n */\nasync function path(rawAffixes, defaultPrefix) {\n const affixes = parseAffixes(rawAffixes, defaultPrefix);\n const name = `${affixes.prefix || ''}${affixes.suffix || ''}`;\n const tempDirectory = await tempDir();\n return nodePath.join(tempDirectory, name);\n}\n\n/**\n * @typedef OpenedAffixes\n * @property {string} path - The path to file\n * @property {number} fd - The file descriptor opened\n */\n\n/**\n * Generate a temporary directory in os.tempdir() or process.env.APPIUM_TMP_DIR\n * with arbitrary prefix/suffix for the directory name and return it as open.\n *\n * @param {Affixes} affixes\n * @returns {Promise<OpenedAffixes>}\n */\nasync function open(affixes) {\n const filePath = await path(affixes, 'f-');\n try {\n let fd = await fs.open(filePath, RDWR_EXCL, 0o600);\n // opens the file in mode 384\n return {path: filePath, fd};\n } catch (err) {\n return log.errorAndThrow(err);\n }\n}\n\n/**\n *\n * Returns prefix/suffix object\n *\n * @param {string|Affixes} rawAffixes\n * @param {string} [defaultPrefix]\n * @returns {Affixes}\n */\nfunction parseAffixes(rawAffixes, defaultPrefix) {\n /** @type {Affixes} */\n let affixes = {};\n if (rawAffixes) {\n switch (typeof rawAffixes) {\n case 'string':\n affixes.prefix = rawAffixes;\n break;\n case 'object':\n affixes = rawAffixes;\n break;\n default:\n throw new Error(`Unknown affix declaration: ${affixes}`);\n }\n } else {\n affixes.prefix = defaultPrefix;\n }\n return affixes;\n}\n\nconst _static = tempDir();\n\n/**\n * Returns a new path to a temporary directory\n *\n * @returns {string} A new tempDir() if tempRootDirectory is not provided\n */\nconst openDir = tempDir;\n\n/**\n * Returns a path to a temporary directory whcih is defined as static in the same process\n *\n * @returns {Promise<string>} A temp directory path whcih is defined as static in the same process\n */\n// eslint-disable-next-line require-await\nasync function staticDir() {\n return _static;\n}\n\nexport {open, path, openDir, staticDir};\n"],"mappings":";;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,SAAS,GAAGC,kBAAA,CAAKC,OAAL,GAAeD,kBAAA,CAAKE,OAApB,GAA8BF,kBAAA,CAAKG,MAAnC,GAA4CH,kBAAA,CAAKI,MAAnE;;AAUA,eAAeC,OAAf,GAAyB;EACvB,MAAMC,GAAG,GAAG,IAAIC,IAAJ,EAAZ;;EACA,MAAMC,QAAQ,GAAGC,aAAA,CAASC,IAAT,CACfC,OAAO,CAACC,GAAR,CAAYC,cAAZ,IAA8BC,WAAA,CAAGC,MAAH,EADf,EAEf,CACET,GAAG,CAACU,WAAJ,EADF,EAEEV,GAAG,CAACW,QAAJ,EAFF,EAGEX,GAAG,CAACY,OAAJ,EAHF,EAIE,GAJF,EAKEP,OAAO,CAACQ,GALV,EAME,GANF,EAOE,CAACC,IAAI,CAACC,MAAL,KAAgB,WAAhB,GAA8B,CAA/B,EAAkCC,QAAlC,CAA2C,EAA3C,CAPF,EAQEZ,IARF,CAQO,EARP,CAFe,CAAjB;;EAcA,MAAMa,WAAA,CAAGC,KAAH,CAAShB,QAAT,CAAN;EAEA,OAAOA,QAAP;AACD;;AAgBD,eAAeiB,IAAf,CAAoBC,UAApB,EAAgCC,aAAhC,EAA+C;EAC7C,MAAMC,OAAO,GAAGC,YAAY,CAACH,UAAD,EAAaC,aAAb,CAA5B;EACA,MAAMG,IAAI,GAAI,GAAEF,OAAO,CAACG,MAAR,IAAkB,EAAG,GAAEH,OAAO,CAACI,MAAR,IAAkB,EAAG,EAA5D;EACA,MAAMC,aAAa,GAAG,MAAM5B,OAAO,EAAnC;EACA,OAAOI,aAAA,CAASC,IAAT,CAAcuB,aAAd,EAA6BH,IAA7B,CAAP;AACD;;AAeD,eAAeI,IAAf,CAAoBN,OAApB,EAA6B;EAC3B,MAAMpB,QAAQ,GAAG,MAAMiB,IAAI,CAACG,OAAD,EAAU,IAAV,CAA3B;;EACA,IAAI;IACF,IAAIO,EAAE,GAAG,MAAMZ,WAAA,CAAGW,IAAH,CAAQ1B,QAAR,EAAkBT,SAAlB,EAA6B,KAA7B,CAAf;IAEA,OAAO;MAAC0B,IAAI,EAAEjB,QAAP;MAAiB2B;IAAjB,CAAP;EACD,CAJD,CAIE,OAAOC,GAAP,EAAY;IACZ,OAAOC,eAAA,CAAIC,aAAJ,CAAkBF,GAAlB,CAAP;EACD;AACF;;AAUD,SAASP,YAAT,CAAsBH,UAAtB,EAAkCC,aAAlC,EAAiD;EAE/C,IAAIC,OAAO,GAAG,EAAd;;EACA,IAAIF,UAAJ,EAAgB;IACd,QAAQ,OAAOA,UAAf;MACE,KAAK,QAAL;QACEE,OAAO,CAACG,MAAR,GAAiBL,UAAjB;QACA;;MACF,KAAK,QAAL;QACEE,OAAO,GAAGF,UAAV;QACA;;MACF;QACE,MAAM,IAAIa,KAAJ,CAAW,8BAA6BX,OAAQ,EAAhD,CAAN;IARJ;EAUD,CAXD,MAWO;IACLA,OAAO,CAACG,MAAR,GAAiBJ,aAAjB;EACD;;EACD,OAAOC,OAAP;AACD;;AAED,MAAMY,OAAO,GAAGnC,OAAO,EAAvB;;AAOA,MAAMoC,OAAO,GAAGpC,OAAhB;;;AAQA,eAAeqC,SAAf,GAA2B;EACzB,OAAOF,OAAP;AACD"}
|
package/build/lib/timing.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -11,6 +9,8 @@ require("source-map-support/register");
|
|
|
11
9
|
|
|
12
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
11
|
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
14
|
const NS_PER_S = 1e9;
|
|
15
15
|
const NS_PER_MS = 1e6;
|
|
16
16
|
|
|
@@ -94,4 +94,4 @@ class Timer {
|
|
|
94
94
|
exports.Timer = Timer;
|
|
95
95
|
var _default = Timer;
|
|
96
96
|
exports.default = _default;
|
|
97
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOU19QRVJfUyIsIk5TX1BFUl9NUyIsIkR1cmF0aW9uIiwiY29uc3RydWN0b3IiLCJuYW5vcyIsIl9uYW5vcyIsImFzTmFub1NlY29uZHMiLCJhc01pbGxpU2Vjb25kcyIsImFzU2Vjb25kcyIsInRvU3RyaW5nIiwidG9GaXhlZCIsIlRpbWVyIiwiX3N0YXJ0VGltZSIsInN0YXJ0VGltZSIsInN0YXJ0IiwiXyIsImlzTnVsbCIsIkVycm9yIiwiaXNGdW5jdGlvbiIsInByb2Nlc3MiLCJocnRpbWUiLCJiaWdpbnQiLCJnZXREdXJhdGlvbiIsIm5hbm9EdXJhdGlvbiIsImlzQXJyYXkiLCJzZWNvbmRzIiwiZW5kVGltZSIsIk51bWJlciIsImVyciIsIm1lc3NhZ2UiXSwic291cmNlcyI6WyIuLi8uLi9saWIvdGltaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IE5TX1BFUl9TID0gMWU5O1xuY29uc3QgTlNfUEVSX01TID0gMWU2O1xuXG4vKipcbiAqIENsYXNzIHJlcHJlc2VudGluZyBhIGR1cmF0aW9uLCBlbmNhcHN1bGF0aW5nIHRoZSBudW1iZXIgYW5kIHVuaXRzLlxuICovXG5jbGFzcyBEdXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG5hbm9zKSB7XG4gICAgdGhpcy5fbmFub3MgPSBuYW5vcztcbiAgfVxuXG4gIGdldCBuYW5vcygpIHtcbiAgICByZXR1cm4gdGhpcy5fbmFub3M7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkdXJhdGlvbiBhcyBuYW5vc2Vjb25kc1xuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgZHVyYXRpb24gYXMgbmFub3NlY29uZHNcbiAgICovXG4gIGdldCBhc05hbm9TZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLm5hbm9zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZHVyYXRpb24gY29udmVydGVkIGludG8gbWlsbGlzZWNvbmRzXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBkdXJhdGlvbiBhcyBtaWxsaXNlY29uZHNcbiAgICovXG4gIGdldCBhc01pbGxpU2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5uYW5vcyAvIE5TX1BFUl9NUztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGR1cmF0aW9uIGNvbnZlcnRlZCBpbnRvIHNlY29uZHNcbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGR1cmF0aW9uIGZhcyBzZWNvbmRzXG4gICAqL1xuICBnZXQgYXNTZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLm5hbm9zIC8gTlNfUEVSX1M7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICAvLyBkZWZhdWx0IHRvIG1pbGxpc2Vjb25kcywgcm91bmRlZFxuICAgIHJldHVybiB0aGlzLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCk7XG4gIH1cbn1cblxuY2xhc3MgVGltZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIHRpbWVyXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBudWxsO1xuICB9XG5cbiAgZ2V0IHN0YXJ0VGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSB0aW1lclxuICAgKlxuICAgKiBAcmV0dXJuIHtUaW1lcn0gVGhlIGN1cnJlbnQgaW5zdGFuY2UsIGZvciBjaGFpbmluZ1xuICAgKi9cbiAgc3RhcnQoKSB7XG4gICAgaWYgKCFfLmlzTnVsbCh0aGlzLnN0YXJ0VGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGltZXIgaGFzIGFscmVhZHkgYmVlbiBzdGFydGVkLicpO1xuICAgIH1cbiAgICAvLyBvbmNlIE5vZGUgMTAgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCwgdGhpcyBjaGVjayBjYW4gYmUgcmVtb3ZlZFxuICAgIHRoaXMuX3N0YXJ0VGltZSA9IF8uaXNGdW5jdGlvbihwcm9jZXNzLmhydGltZS5iaWdpbnQpXG4gICAgICA/
|
|
97
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOU19QRVJfUyIsIk5TX1BFUl9NUyIsIkR1cmF0aW9uIiwiY29uc3RydWN0b3IiLCJuYW5vcyIsIl9uYW5vcyIsImFzTmFub1NlY29uZHMiLCJhc01pbGxpU2Vjb25kcyIsImFzU2Vjb25kcyIsInRvU3RyaW5nIiwidG9GaXhlZCIsIlRpbWVyIiwiX3N0YXJ0VGltZSIsInN0YXJ0VGltZSIsInN0YXJ0IiwiXyIsImlzTnVsbCIsIkVycm9yIiwiaXNGdW5jdGlvbiIsInByb2Nlc3MiLCJocnRpbWUiLCJiaWdpbnQiLCJnZXREdXJhdGlvbiIsIm5hbm9EdXJhdGlvbiIsImlzQXJyYXkiLCJzZWNvbmRzIiwiZW5kVGltZSIsIk51bWJlciIsImVyciIsIm1lc3NhZ2UiXSwic291cmNlcyI6WyIuLi8uLi9saWIvdGltaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IE5TX1BFUl9TID0gMWU5O1xuY29uc3QgTlNfUEVSX01TID0gMWU2O1xuXG4vKipcbiAqIENsYXNzIHJlcHJlc2VudGluZyBhIGR1cmF0aW9uLCBlbmNhcHN1bGF0aW5nIHRoZSBudW1iZXIgYW5kIHVuaXRzLlxuICovXG5jbGFzcyBEdXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG5hbm9zKSB7XG4gICAgdGhpcy5fbmFub3MgPSBuYW5vcztcbiAgfVxuXG4gIGdldCBuYW5vcygpIHtcbiAgICByZXR1cm4gdGhpcy5fbmFub3M7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkdXJhdGlvbiBhcyBuYW5vc2Vjb25kc1xuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgZHVyYXRpb24gYXMgbmFub3NlY29uZHNcbiAgICovXG4gIGdldCBhc05hbm9TZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLm5hbm9zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZHVyYXRpb24gY29udmVydGVkIGludG8gbWlsbGlzZWNvbmRzXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBkdXJhdGlvbiBhcyBtaWxsaXNlY29uZHNcbiAgICovXG4gIGdldCBhc01pbGxpU2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5uYW5vcyAvIE5TX1BFUl9NUztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGR1cmF0aW9uIGNvbnZlcnRlZCBpbnRvIHNlY29uZHNcbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGR1cmF0aW9uIGZhcyBzZWNvbmRzXG4gICAqL1xuICBnZXQgYXNTZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLm5hbm9zIC8gTlNfUEVSX1M7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICAvLyBkZWZhdWx0IHRvIG1pbGxpc2Vjb25kcywgcm91bmRlZFxuICAgIHJldHVybiB0aGlzLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCk7XG4gIH1cbn1cblxuY2xhc3MgVGltZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIHRpbWVyXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBudWxsO1xuICB9XG5cbiAgZ2V0IHN0YXJ0VGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSB0aW1lclxuICAgKlxuICAgKiBAcmV0dXJuIHtUaW1lcn0gVGhlIGN1cnJlbnQgaW5zdGFuY2UsIGZvciBjaGFpbmluZ1xuICAgKi9cbiAgc3RhcnQoKSB7XG4gICAgaWYgKCFfLmlzTnVsbCh0aGlzLnN0YXJ0VGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGltZXIgaGFzIGFscmVhZHkgYmVlbiBzdGFydGVkLicpO1xuICAgIH1cbiAgICAvLyBvbmNlIE5vZGUgMTAgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCwgdGhpcyBjaGVjayBjYW4gYmUgcmVtb3ZlZFxuICAgIHRoaXMuX3N0YXJ0VGltZSA9IF8uaXNGdW5jdGlvbihwcm9jZXNzLmhydGltZS5iaWdpbnQpXG4gICAgICA/IHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpXG4gICAgICA6IHByb2Nlc3MuaHJ0aW1lKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkdXJhdGlvbiBzaW5jZSB0aGUgdGltZXIgd2FzIHN0YXJ0ZWRcbiAgICpcbiAgICogQHJldHVybiB7RHVyYXRpb259IHRoZSBkdXJhdGlvblxuICAgKi9cbiAgZ2V0RHVyYXRpb24oKSB7XG4gICAgaWYgKF8uaXNOdWxsKHRoaXMuc3RhcnRUaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZ2V0IGR1cmF0aW9uLiBUaW1lciB3YXMgbm90IHN0YXJ0ZWRgKTtcbiAgICB9XG5cbiAgICBsZXQgbmFub0R1cmF0aW9uO1xuICAgIGlmIChfLmlzQXJyYXkodGhpcy5zdGFydFRpbWUpKSB7XG4gICAgICAvLyBzdGFydFRpbWUgd2FzIGNyZWF0ZWQgdXNpbmcgcHJvY2Vzcy5ocnRpbWUoKVxuICAgICAgY29uc3QgW3NlY29uZHMsIG5hbm9zXSA9IHByb2Nlc3MuaHJ0aW1lKHRoaXMuc3RhcnRUaW1lKTtcbiAgICAgIG5hbm9EdXJhdGlvbiA9IHNlY29uZHMgKiBOU19QRVJfUyArIG5hbm9zO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuc3RhcnRUaW1lID09PSAnYmlnaW50JyAmJiBfLmlzRnVuY3Rpb24ocHJvY2Vzcy5ocnRpbWUuYmlnaW50KSkge1xuICAgICAgLy8gc3RhcnRUaW1lIHdhcyBjcmVhdGVkIHVzaW5nIHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpXG4gICAgICBjb25zdCBlbmRUaW1lID0gcHJvY2Vzcy5ocnRpbWUuYmlnaW50KCk7XG4gICAgICAvLyBnZXQgdGhlIGRpZmZlcmVuY2UsIGFuZCBjb252ZXJ0IHRvIG51bWJlclxuICAgICAgbmFub0R1cmF0aW9uID0gTnVtYmVyKGVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGdldCBkdXJhdGlvbi4gU3RhcnQgdGltZSAnJHt0aGlzLnN0YXJ0VGltZX0nIGNhbm5vdCBiZSBwYXJzZWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IER1cmF0aW9uKG5hbm9EdXJhdGlvbik7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RHVyYXRpb24oKS50b1N0cmluZygpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGA8ZXJyOiAke2Vyci5tZXNzYWdlfT5gO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQge1RpbWVyLCBEdXJhdGlvbn07XG5leHBvcnQgZGVmYXVsdCBUaW1lcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsR0FBakI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsR0FBbEI7O0FBS0EsTUFBTUMsUUFBTixDQUFlO0VBQ2JDLFdBQVcsQ0FBQ0MsS0FBRCxFQUFRO0lBQ2pCLEtBQUtDLE1BQUwsR0FBY0QsS0FBZDtFQUNEOztFQUVRLElBQUxBLEtBQUssR0FBRztJQUNWLE9BQU8sS0FBS0MsTUFBWjtFQUNEOztFQU9nQixJQUFiQyxhQUFhLEdBQUc7SUFDbEIsT0FBTyxLQUFLRixLQUFaO0VBQ0Q7O0VBT2lCLElBQWRHLGNBQWMsR0FBRztJQUNuQixPQUFPLEtBQUtILEtBQUwsR0FBYUgsU0FBcEI7RUFDRDs7RUFPWSxJQUFUTyxTQUFTLEdBQUc7SUFDZCxPQUFPLEtBQUtKLEtBQUwsR0FBYUosUUFBcEI7RUFDRDs7RUFFRFMsUUFBUSxHQUFHO0lBRVQsT0FBTyxLQUFLRixjQUFMLENBQW9CRyxPQUFwQixDQUE0QixDQUE1QixDQUFQO0VBQ0Q7O0FBdkNZOzs7O0FBMENmLE1BQU1DLEtBQU4sQ0FBWTtFQUlWUixXQUFXLEdBQUc7SUFDWixLQUFLUyxVQUFMLEdBQWtCLElBQWxCO0VBQ0Q7O0VBRVksSUFBVEMsU0FBUyxHQUFHO0lBQ2QsT0FBTyxLQUFLRCxVQUFaO0VBQ0Q7O0VBT0RFLEtBQUssR0FBRztJQUNOLElBQUksQ0FBQ0MsZUFBQSxDQUFFQyxNQUFGLENBQVMsS0FBS0gsU0FBZCxDQUFMLEVBQStCO01BQzdCLE1BQU0sSUFBSUksS0FBSixDQUFVLGlDQUFWLENBQU47SUFDRDs7SUFFRCxLQUFLTCxVQUFMLEdBQWtCRyxlQUFBLENBQUVHLFVBQUYsQ0FBYUMsT0FBTyxDQUFDQyxNQUFSLENBQWVDLE1BQTVCLElBQ2RGLE9BQU8sQ0FBQ0MsTUFBUixDQUFlQyxNQUFmLEVBRGMsR0FFZEYsT0FBTyxDQUFDQyxNQUFSLEVBRko7SUFHQSxPQUFPLElBQVA7RUFDRDs7RUFPREUsV0FBVyxHQUFHO0lBQ1osSUFBSVAsZUFBQSxDQUFFQyxNQUFGLENBQVMsS0FBS0gsU0FBZCxDQUFKLEVBQThCO01BQzVCLE1BQU0sSUFBSUksS0FBSixDQUFXLCtDQUFYLENBQU47SUFDRDs7SUFFRCxJQUFJTSxZQUFKOztJQUNBLElBQUlSLGVBQUEsQ0FBRVMsT0FBRixDQUFVLEtBQUtYLFNBQWYsQ0FBSixFQUErQjtNQUU3QixNQUFNLENBQUNZLE9BQUQsRUFBVXJCLEtBQVYsSUFBbUJlLE9BQU8sQ0FBQ0MsTUFBUixDQUFlLEtBQUtQLFNBQXBCLENBQXpCO01BQ0FVLFlBQVksR0FBR0UsT0FBTyxHQUFHekIsUUFBVixHQUFxQkksS0FBcEM7SUFDRCxDQUpELE1BSU8sSUFBSSxPQUFPLEtBQUtTLFNBQVosS0FBMEIsUUFBMUIsSUFBc0NFLGVBQUEsQ0FBRUcsVUFBRixDQUFhQyxPQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBNUIsQ0FBMUMsRUFBK0U7TUFFcEYsTUFBTUssT0FBTyxHQUFHUCxPQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBZixFQUFoQjtNQUVBRSxZQUFZLEdBQUdJLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHLEtBQUtiLFNBQWhCLENBQXJCO0lBQ0QsQ0FMTSxNQUtBO01BQ0wsTUFBTSxJQUFJSSxLQUFKLENBQVcsdUNBQXNDLEtBQUtKLFNBQVUsb0JBQWhFLENBQU47SUFDRDs7SUFFRCxPQUFPLElBQUlYLFFBQUosQ0FBYXFCLFlBQWIsQ0FBUDtFQUNEOztFQUVEZCxRQUFRLEdBQUc7SUFDVCxJQUFJO01BQ0YsT0FBTyxLQUFLYSxXQUFMLEdBQW1CYixRQUFuQixFQUFQO0lBQ0QsQ0FGRCxDQUVFLE9BQU9tQixHQUFQLEVBQVk7TUFDWixPQUFRLFNBQVFBLEdBQUcsQ0FBQ0MsT0FBUSxHQUE1QjtJQUNEO0VBQ0Y7O0FBN0RTOzs7ZUFpRUdsQixLIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timing.js","names":["NS_PER_S","NS_PER_MS","Duration","constructor","nanos","_nanos","asNanoSeconds","asMilliSeconds","asSeconds","toString","toFixed","Timer","_startTime","startTime","start","_","isNull","Error","isFunction","process","hrtime","bigint","getDuration","nanoDuration","isArray","seconds","endTime","Number","err","message"],"sources":["../../lib/timing.js"],"sourcesContent":["import _ from 'lodash';\n\nconst NS_PER_S = 1e9;\nconst NS_PER_MS = 1e6;\n\n/**\n * Class representing a duration, encapsulating the number and units.\n */\nclass Duration {\n constructor(nanos) {\n this._nanos = nanos;\n }\n\n get nanos() {\n return this._nanos;\n }\n\n /**\n * Get the duration as nanoseconds\n *\n * @returns {number} The duration as nanoseconds\n */\n get asNanoSeconds() {\n return this.nanos;\n }\n\n /**\n * Get the duration converted into milliseconds\n *\n * @returns {number} The duration as milliseconds\n */\n get asMilliSeconds() {\n return this.nanos / NS_PER_MS;\n }\n\n /**\n * Get the duration converted into seconds\n *\n * @returns {number} The duration fas seconds\n */\n get asSeconds() {\n return this.nanos / NS_PER_S;\n }\n\n toString() {\n // default to milliseconds, rounded\n return this.asMilliSeconds.toFixed(0);\n }\n}\n\nclass Timer {\n /**\n * Creates a timer\n */\n constructor() {\n this._startTime = null;\n }\n\n get startTime() {\n return this._startTime;\n }\n\n /**\n * Start the timer\n *\n * @return {Timer} The current instance, for chaining\n */\n start() {\n if (!_.isNull(this.startTime)) {\n throw new Error('Timer has already been started.');\n }\n // once Node 10 is no longer supported, this check can be removed\n this._startTime = _.isFunction(process.hrtime.bigint)\n ? process.hrtime.bigint()\n : process.hrtime();\n return this;\n }\n\n /**\n * Get the duration since the timer was started\n *\n * @return {Duration} the duration\n */\n getDuration() {\n if (_.isNull(this.startTime)) {\n throw new Error(`Unable to get duration. Timer was not started`);\n }\n\n let nanoDuration;\n if (_.isArray(this.startTime)) {\n // startTime was created using process.hrtime()\n const [seconds, nanos] = process.hrtime(this.startTime);\n nanoDuration = seconds * NS_PER_S + nanos;\n } else if (typeof this.startTime === 'bigint' && _.isFunction(process.hrtime.bigint)) {\n // startTime was created using process.hrtime.bigint()\n const endTime = process.hrtime.bigint();\n // get the difference, and convert to number\n nanoDuration = Number(endTime - this.startTime);\n } else {\n throw new Error(`Unable to get duration. Start time '${this.startTime}' cannot be parsed`);\n }\n\n return new Duration(nanoDuration);\n }\n\n toString() {\n try {\n return this.getDuration().toString();\n } catch (err) {\n return `<err: ${err.message}>`;\n }\n }\n}\n\nexport {Timer, Duration};\nexport default Timer;\n"],"mappings":";;;;;;;;;AAAA;;;;AAEA,MAAMA,QAAQ,GAAG,GAAjB;AACA,MAAMC,SAAS,GAAG,GAAlB;;AAKA,MAAMC,QAAN,CAAe;EACbC,WAAW,CAACC,KAAD,EAAQ;IACjB,KAAKC,MAAL,GAAcD,KAAd;EACD;;EAEQ,IAALA,KAAK,GAAG;IACV,OAAO,KAAKC,MAAZ;EACD;;EAOgB,IAAbC,aAAa,GAAG;IAClB,OAAO,KAAKF,KAAZ;EACD;;EAOiB,IAAdG,cAAc,GAAG;IACnB,OAAO,KAAKH,KAAL,GAAaH,SAApB;EACD;;EAOY,IAATO,SAAS,GAAG;IACd,OAAO,KAAKJ,KAAL,GAAaJ,QAApB;EACD;;EAEDS,QAAQ,GAAG;IAET,OAAO,KAAKF,cAAL,CAAoBG,OAApB,CAA4B,CAA5B,CAAP;EACD;;AAvCY;;;;AA0Cf,MAAMC,KAAN,CAAY;EAIVR,WAAW,GAAG;IACZ,KAAKS,UAAL,GAAkB,IAAlB;EACD;;EAEY,IAATC,SAAS,GAAG;IACd,OAAO,KAAKD,UAAZ;EACD;;EAODE,KAAK,GAAG;IACN,IAAI,CAACC,eAAA,CAAEC,MAAF,CAAS,KAAKH,SAAd,CAAL,EAA+B;MAC7B,MAAM,IAAII,KAAJ,CAAU,iCAAV,CAAN;IACD;;IAED,KAAKL,UAAL,GAAkBG,eAAA,CAAEG,UAAF,CAAaC,OAAO,CAACC,MAAR,CAAeC,MAA5B,IACdF,OAAO,CAACC,MAAR,CAAeC,MAAf,EADc,GAEdF,OAAO,CAACC,MAAR,EAFJ;IAGA,OAAO,IAAP;EACD;;EAODE,WAAW,GAAG;IACZ,IAAIP,eAAA,CAAEC,MAAF,CAAS,KAAKH,SAAd,CAAJ,EAA8B;MAC5B,MAAM,IAAII,KAAJ,CAAW,+CAAX,CAAN;IACD;;IAED,IAAIM,YAAJ;;IACA,IAAIR,eAAA,CAAES,OAAF,CAAU,KAAKX,SAAf,CAAJ,EAA+B;MAE7B,MAAM,CAACY,OAAD,EAAUrB,KAAV,IAAmBe,OAAO,CAACC,MAAR,CAAe,KAAKP,SAApB,CAAzB;MACAU,YAAY,GAAGE,OAAO,GAAGzB,QAAV,GAAqBI,KAApC;IACD,CAJD,MAIO,IAAI,OAAO,KAAKS,SAAZ,KAA0B,QAA1B,IAAsCE,eAAA,CAAEG,UAAF,CAAaC,OAAO,CAACC,MAAR,CAAeC,MAA5B,CAA1C,EAA+E;MAEpF,MAAMK,OAAO,GAAGP,OAAO,CAACC,MAAR,CAAeC,MAAf,EAAhB;MAEAE,YAAY,GAAGI,MAAM,CAACD,OAAO,GAAG,KAAKb,SAAhB,CAArB;IACD,CALM,MAKA;MACL,MAAM,IAAII,KAAJ,CAAW,uCAAsC,KAAKJ,SAAU,oBAAhE,CAAN;IACD;;IAED,OAAO,IAAIX,QAAJ,CAAaqB,YAAb,CAAP;EACD;;EAEDd,QAAQ,GAAG;IACT,IAAI;MACF,OAAO,KAAKa,WAAL,GAAmBb,QAAnB,EAAP;IACD,CAFD,CAEE,OAAOmB,GAAP,EAAY;MACZ,OAAQ,SAAQA,GAAG,CAACC,OAAQ,GAA5B;IACD;EACF;;AA7DS;;;eAiEGlB,K"}
|