appium-geckodriver 1.0.2 → 1.0.5
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/.releaserc +7 -1
- package/build/index.js +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/index.js +1 -1
- package/build/lib/constants.js +1 -1
- package/build/lib/desired-caps.js +1 -1
- package/build/lib/driver.js +3 -6
- package/build/lib/gecko.js +23 -20
- package/build/lib/logger.js +1 -1
- package/build/lib/server.js +1 -1
- package/build/lib/utils.js +1 -1
- package/build/test/functional/desktop-driver-e2e-specs.js +1 -1
- package/build/test/functional/mobile-driver-e2e-specs.js +1 -1
- package/build/test/unit/driver-specs.js +1 -1
- package/build/test/unit/utils-specs.js +1 -1
- package/build/test/utils.js +1 -1
- package/lib/driver.js +2 -3
- package/lib/gecko.js +24 -19
- package/npm-shrinkwrap.json +630 -296
- package/package.json +6 -9
package/.releaserc
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"plugins": [
|
|
3
|
-
"@semantic-release/commit-analyzer",
|
|
3
|
+
["@semantic-release/commit-analyzer", {
|
|
4
|
+
"preset": "angular",
|
|
5
|
+
"releaseRules": [
|
|
6
|
+
{"type": "chore", "release": "patch"}
|
|
7
|
+
|
|
8
|
+
]
|
|
9
|
+
}],
|
|
4
10
|
"@semantic-release/npm",
|
|
5
11
|
"@semantic-release/release-notes-generator",
|
|
6
12
|
["@semantic-release/git", {
|
package/build/index.js
CHANGED
|
@@ -49,4 +49,4 @@ var _default = _driver.default;
|
|
|
49
49
|
exports.default = _default;require('source-map-support').install();
|
|
50
50
|
|
|
51
51
|
|
|
52
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJERUZBVUxUX0hPU1QiLCJERUZBVUxUX1BPUlQiLCJtYWluIiwiZ2V0QXJnVmFsdWUiLCJhcmdOYW1lIiwiYXJnSW5kZXgiLCJwcm9jZXNzIiwiYXJndiIsImluZGV4T2YiLCJwb3J0IiwicGFyc2VJbnQiLCJob3N0IiwicmVxdWlyZSIsIm1vZHVsZSIsIkdlY2tvRHJpdmVyIl0sInNvdXJjZVJvb3QiOiIuLiIsInNvdXJjZXMiOlsiaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdlY2tvRHJpdmVyIGZyb20gJy4vbGliL2RyaXZlcic7XG5pbXBvcnQgeyBzdGFydFNlcnZlciB9IGZyb20gJy4vbGliL3NlcnZlcic7XG5pbXBvcnQgeyBhc3luY2lmeSB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgREVGQVVMVF9IT1NUID0gJ2xvY2FsaG9zdCc7XG5jb25zdCBERUZBVUxUX1BPUlQgPSA0Nzk3O1xuXG5hc3luYyBmdW5jdGlvbiBtYWluICgpIHtcbiAgY29uc3QgZ2V0QXJnVmFsdWUgPSAoYXJnTmFtZSkgPT4ge1xuICAgIGNvbnN0IGFyZ0luZGV4ID0gcHJvY2Vzcy5hcmd2LmluZGV4T2YoYXJnTmFtZSk7XG4gICAgcmV0dXJuIGFyZ0luZGV4ID4gMCA/IHByb2Nlc3MuYXJndlthcmdJbmRleCArIDFdIDogbnVsbDtcbiAgfTtcbiAgY29uc3QgcG9ydCA9IHBhcnNlSW50KGdldEFyZ1ZhbHVlKCctLXBvcnQnKSwgMTApIHx8IERFRkFVTFRfUE9SVDtcbiAgY29uc3QgaG9zdCA9IGdldEFyZ1ZhbHVlKCctLWhvc3QnKSB8fCBERUZBVUxUX0hPU1Q7XG4gIHJldHVybiBhd2FpdCBzdGFydFNlcnZlcihwb3J0LCBob3N0KTtcbn1cblxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGFzeW5jaWZ5KG1haW4pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBHZWNrb0RyaXZlcjtcbmV4cG9ydCB7IEdlY2tvRHJpdmVyLCBzdGFydFNlcnZlciB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFlBQVksR0FBRyxXQUFyQjtBQUNBLE1BQU1DLFlBQVksR0FBRyxJQUFyQjs7QUFFQSxlQUFlQyxJQUFmLEdBQXVCO0VBQ3JCLE1BQU1DLFdBQVcsR0FBSUMsT0FBRCxJQUFhO0lBQy9CLE1BQU1DLFFBQVEsR0FBR0MsT0FBTyxDQUFDQyxJQUFSLENBQWFDLE9BQWIsQ0FBcUJKLE9BQXJCLENBQWpCO0lBQ0EsT0FBT0MsUUFBUSxHQUFHLENBQVgsR0FBZUMsT0FBTyxDQUFDQyxJQUFSLENBQWFGLFFBQVEsR0FBRyxDQUF4QixDQUFmLEdBQTRDLElBQW5EO0VBQ0QsQ0FIRDs7RUFJQSxNQUFNSSxJQUFJLEdBQUdDLFFBQVEsQ0FBQ1AsV0FBVyxDQUFDLFFBQUQsQ0FBWixFQUF3QixFQUF4QixDQUFSLElBQXVDRixZQUFwRDtFQUNBLE1BQU1VLElBQUksR0FBR1IsV0FBVyxDQUFDLFFBQUQsQ0FBWCxJQUF5QkgsWUFBdEM7RUFDQSxPQUFPLE1BQU0seUJBQVlTLElBQVosRUFBa0JFLElBQWxCLENBQWI7QUFDRDs7QUFFRCxJQUFJQyxPQUFPLENBQUNWLElBQVIsS0FBaUJXLE1BQXJCLEVBQTZCO0VBQzNCLHdCQUFTWCxJQUFUO0FBQ0Q7O2VBRWNZLGUifQ==
|
|
@@ -25,4 +25,4 @@ var _default = commands;
|
|
|
25
25
|
exports.default = _default;require('source-map-support').install();
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbmQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImZpbmRFbE9yRWxzIiwic3RyYXRlZ3kiLCJzZWxlY3RvciIsIm11bHQiLCJjb250ZXh0IiwidXRpbCIsInVud3JhcEVsZW1lbnQiLCJlbmRwb2ludCIsImdlY2tvIiwicHJveHkiLCJjb21tYW5kIiwidXNpbmciLCJ2YWx1ZSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9maW5kLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8vIFRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgbG9va3VwIGJ5IGltYWdlIHdvcmtpbmdcbmNvbW1hbmRzLmZpbmRFbE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gZmluZEVsT3JFbHMgKHN0cmF0ZWd5LCBzZWxlY3RvciwgbXVsdCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gdXRpbC51bndyYXBFbGVtZW50KGNvbnRleHQpO1xuICBjb25zdCBlbmRwb2ludCA9IGAvZWxlbWVudCR7Y29udGV4dCA/IGAvJHtjb250ZXh0fS9lbGVtZW50YCA6ICcnfSR7bXVsdCA/ICdzJyA6ICcnfWA7XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2Vja28ucHJveHkuY29tbWFuZChlbmRwb2ludCwgJ1BPU1QnLCB7XG4gICAgdXNpbmc6IHN0cmF0ZWd5LFxuICAgIHZhbHVlOiBzZWxlY3RvcixcbiAgfSk7XG59O1xuXG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOzs7QUFHQUEsUUFBUSxDQUFDQyxXQUFULEdBQXVCLGVBQWVBLFdBQWYsQ0FBNEJDLFFBQTVCLEVBQXNDQyxRQUF0QyxFQUFnREMsSUFBaEQsRUFBc0RDLE9BQXRELEVBQStEO0VBQ3BGQSxPQUFPLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLE9BQW5CLENBQVY7RUFDQSxNQUFNRyxRQUFRLEdBQUksV0FBVUgsT0FBTyxHQUFJLElBQUdBLE9BQVEsVUFBZixHQUEyQixFQUFHLEdBQUVELElBQUksR0FBRyxHQUFILEdBQVMsRUFBRyxFQUFuRjtFQUVBLE9BQU8sTUFBTSxLQUFLSyxLQUFMLENBQVdDLEtBQVgsQ0FBaUJDLE9BQWpCLENBQXlCSCxRQUF6QixFQUFtQyxNQUFuQyxFQUEyQztJQUN0REksS0FBSyxFQUFFVixRQUQrQztJQUV0RFcsS0FBSyxFQUFFVjtFQUYrQyxDQUEzQyxDQUFiO0FBSUQsQ0FSRDs7ZUFZZUgsUSJ9
|
|
@@ -18,4 +18,4 @@ var _default = commands;
|
|
|
18
18
|
exports.default = _default;require('source-map-support').install();
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2luZGV4LmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJmaW5kQ21kcyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmluZENtZHMgZnJvbSAnLi9maW5kJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcbk9iamVjdC5hc3NpZ24oXG4gIGNvbW1hbmRzLFxuICBmaW5kQ21kcyxcbiAgLy8gYWRkIG90aGVyIGNvbW1hbmQgdHlwZXMgaGVyZVxuKTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7QUFDQUMsTUFBTSxDQUFDQyxNQUFQLENBQ0VGLFFBREYsRUFFRUcsYUFGRjtlQU9lSCxRIn0=
|
package/build/lib/constants.js
CHANGED
|
@@ -14,4 +14,4 @@ const VERBOSITY = {
|
|
|
14
14
|
exports.VERBOSITY = VERBOSITY;require('source-map-support').install();
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbnN0YW50cy5qcyIsIm5hbWVzIjpbIlZFUkJPU0lUWSIsIkRFQlVHIiwiVFJBQ0UiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvY29uc3RhbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFZFUkJPU0lUWSA9IHtcbiAgREVCVUc6ICdkZWJ1ZycsXG4gIFRSQUNFOiAndHJhY2UnLFxufTtcblxuZXhwb3J0IHsgVkVSQk9TSVRZIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE1BQU1BLFNBQVMsR0FBRztFQUNoQkMsS0FBSyxFQUFFLE9BRFM7RUFFaEJDLEtBQUssRUFBRTtBQUZTLENBQWxCIn0=
|
|
@@ -55,4 +55,4 @@ const desiredCapConstraints = {
|
|
|
55
55
|
exports.desiredCapConstraints = desiredCapConstraints;require('source-map-support').install();
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Rlc2lyZWQtY2Fwcy5qcyIsIm5hbWVzIjpbImRlc2lyZWRDYXBDb25zdHJhaW50cyIsImJyb3dzZXJOYW1lIiwiaXNTdHJpbmciLCJicm93c2VyVmVyc2lvbiIsImFjY2VwdEluc2VjdXJlQ2VydHMiLCJpc0Jvb2xlYW4iLCJwYWdlTG9hZFN0cmF0ZWd5IiwicHJveHkiLCJpc09iamVjdCIsInNldFdpbmRvd1JlY3QiLCJ0aW1lb3V0cyIsInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIiwic3lzdGVtUG9ydCIsImlzTnVtYmVyIiwibWFyaW9uZXR0ZVBvcnQiLCJ2ZXJib3NpdHkiLCJpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmUiLCJPYmplY3QiLCJ2YWx1ZXMiLCJWRVJCT1NJVFkiLCJhbmRyb2lkU3RvcmFnZSJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9kZXNpcmVkLWNhcHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkVSQk9TSVRZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gIGJyb3dzZXJOYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYnJvd3NlclZlcnNpb246IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhY2NlcHRJbnNlY3VyZUNlcnRzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHBhZ2VMb2FkU3RyYXRlZ3k6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBwcm94eToge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIHNldFdpbmRvd1JlY3Q6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdGltZW91dHM6IHtcbiAgICBpc09iamVjdDogdHJ1ZVxuICB9LFxuICB1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHN5c3RlbVBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBtYXJpb25ldHRlUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHZlcmJvc2l0eToge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogT2JqZWN0LnZhbHVlcyhWRVJCT1NJVFkpXG4gIH0sXG4gIGFuZHJvaWRTdG9yYWdlOiB7XG4gICAgaXNTdHJpbmc6IHRydWUsXG4gICAgaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlOiBbJ2F1dG8nLCAnYXBwJywgJ2ludGVybmFsJywgJ3NkY2FyZCddXG4gIH0sXG4gICdtb3o6ZmlyZWZveE9wdGlvbnMnOiB7XG4gICAgaXNPYmplY3Q6IHRydWVcbiAgfVxufTtcblxuZXhwb3J0IHsgZGVzaXJlZENhcENvbnN0cmFpbnRzIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLHFCQUFxQixHQUFHO0VBQzVCQyxXQUFXLEVBQUU7SUFDWEMsUUFBUSxFQUFFO0VBREMsQ0FEZTtFQUk1QkMsY0FBYyxFQUFFO0lBQ2RELFFBQVEsRUFBRTtFQURJLENBSlk7RUFPNUJFLG1CQUFtQixFQUFFO0lBQ25CQyxTQUFTLEVBQUU7RUFEUSxDQVBPO0VBVTVCQyxnQkFBZ0IsRUFBRTtJQUNoQkosUUFBUSxFQUFFO0VBRE0sQ0FWVTtFQWE1QkssS0FBSyxFQUFFO0lBQ0xDLFFBQVEsRUFBRTtFQURMLENBYnFCO0VBZ0I1QkMsYUFBYSxFQUFFO0lBQ2JKLFNBQVMsRUFBRTtFQURFLENBaEJhO0VBbUI1QkssUUFBUSxFQUFFO0lBQ1JGLFFBQVEsRUFBRTtFQURGLENBbkJrQjtFQXNCNUJHLHVCQUF1QixFQUFFO0lBQ3ZCVCxRQUFRLEVBQUU7RUFEYSxDQXRCRztFQXlCNUJVLFVBQVUsRUFBRTtJQUNWQyxRQUFRLEVBQUU7RUFEQSxDQXpCZ0I7RUE0QjVCQyxjQUFjLEVBQUU7SUFDZEQsUUFBUSxFQUFFO0VBREksQ0E1Qlk7RUErQjVCRSxTQUFTLEVBQUU7SUFDVGIsUUFBUSxFQUFFLElBREQ7SUFFVGMsd0JBQXdCLEVBQUVDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjQyxvQkFBZDtFQUZqQixDQS9CaUI7RUFtQzVCQyxjQUFjLEVBQUU7SUFDZGxCLFFBQVEsRUFBRSxJQURJO0lBRWRjLHdCQUF3QixFQUFFLENBQUMsTUFBRCxFQUFTLEtBQVQsRUFBZ0IsVUFBaEIsRUFBNEIsUUFBNUI7RUFGWixDQW5DWTtFQXVDNUIsc0JBQXNCO0lBQ3BCUixRQUFRLEVBQUU7RUFEVTtBQXZDTSxDQUE5QiJ9
|
package/build/lib/driver.js
CHANGED
|
@@ -13,8 +13,6 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
13
13
|
|
|
14
14
|
var _baseDriver = require("@appium/base-driver");
|
|
15
15
|
|
|
16
|
-
var _logger = _interopRequireDefault(require("./logger"));
|
|
17
|
-
|
|
18
16
|
var _gecko = _interopRequireDefault(require("./gecko"));
|
|
19
17
|
|
|
20
18
|
var _desiredCaps = require("./desired-caps");
|
|
@@ -57,7 +55,7 @@ class GeckoDriver extends _baseDriver.BaseDriver {
|
|
|
57
55
|
|
|
58
56
|
async createSession(...args) {
|
|
59
57
|
const [sessionId, caps] = await super.createSession(...args);
|
|
60
|
-
this.gecko = new _gecko.default(caps);
|
|
58
|
+
this.gecko = new _gecko.default(this.log, caps);
|
|
61
59
|
|
|
62
60
|
try {
|
|
63
61
|
await this.gecko.start((0, _utils.formatCapsForServer)(caps));
|
|
@@ -72,8 +70,7 @@ class GeckoDriver extends _baseDriver.BaseDriver {
|
|
|
72
70
|
}
|
|
73
71
|
|
|
74
72
|
async deleteSession() {
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
this.log.info('Ending Gecko Driver session');
|
|
77
74
|
await this.gecko.stop();
|
|
78
75
|
this.resetState();
|
|
79
76
|
await super.deleteSession();
|
|
@@ -85,4 +82,4 @@ var _default = GeckoDriver;
|
|
|
85
82
|
exports.default = _default;require('source-map-support').install();
|
|
86
83
|
|
|
87
84
|
|
|
88
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RyaXZlci5qcyIsIm5hbWVzIjpbIk5PX1BST1hZIiwiUmVnRXhwIiwiR2Vja29Ecml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwibG9jYXRvclN0cmF0ZWdpZXMiLCJyZXNldFN0YXRlIiwiY21kIiwiZm4iLCJfIiwidG9QYWlycyIsImNvbW1hbmRzIiwicHJvdG90eXBlIiwiZ2Vja28iLCJwcm94eVJlcVJlcyIsImlzUHJveHlBY3RpdmUiLCJwcm94eUFjdGl2ZSIsImdldFByb3h5QXZvaWRMaXN0IiwiY2FuUHJveHkiLCJjcmVhdGVTZXNzaW9uIiwiYXJncyIsInNlc3Npb25JZCIsImNhcHMiLCJHZWNrb0RyaXZlclNlcnZlciIsImxvZyIsInN0YXJ0IiwiZSIsImRlbGV0ZVNlc3Npb24iLCJwcm94eSIsImJpbmQiLCJpbmZvIiwic3RvcCJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBHZWNrb0RyaXZlclNlcnZlciBmcm9tICcuL2dlY2tvJztcbmltcG9ydCB7IGRlc2lyZWRDYXBDb25zdHJhaW50cyB9IGZyb20gJy4vZGVzaXJlZC1jYXBzJztcbmltcG9ydCBjb21tYW5kcyBmcm9tICcuL2NvbW1hbmRzL2luZGV4JztcbmltcG9ydCB7IGZvcm1hdENhcHNGb3JTZXJ2ZXIgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTk9fUFJPWFkgPSBbXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvZWxlbWVudHM/JCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnRzPyQnKV0sXG5dO1xuXG5jbGFzcyBHZWNrb0RyaXZlciBleHRlbmRzIEJhc2VEcml2ZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG4gICAgdGhpcy5sb2NhdG9yU3RyYXRlZ2llcyA9IFtcbiAgICAgICd4cGF0aCcsXG4gICAgICAndGFnIG5hbWUnLFxuICAgICAgJ2xpbmsgdGV4dCcsXG4gICAgICAncGFydGlhbCBsaW5rIHRleHQnLFxuICAgICAgJ2NzcyBzZWxlY3RvcicsXG4gICAgICAvLyBMZXQgdGhlc2UgdHdvIHJlYWNoIEdlY2tvIERyaXZlciBhbmQgZmFpbCB0aGVyZSB3aXRoIGEgcHJvcGVyIGVycm9yIG1lc3NhZ2VcbiAgICAgICdpZCcsXG4gICAgICAnbmFtZScsXG4gICAgXTtcbiAgICB0aGlzLnJlc2V0U3RhdGUoKTtcblxuICAgIGZvciAoY29uc3QgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhjb21tYW5kcykpIHtcbiAgICAgIEdlY2tvRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG4gICAgfVxuICB9XG5cbiAgcmVzZXRTdGF0ZSAoKSB7XG4gICAgdGhpcy5nZWNrbyA9IG51bGw7XG4gICAgdGhpcy5wcm94eVJlcVJlcyA9IG51bGw7XG4gICAgdGhpcy5pc1Byb3h5QWN0aXZlID0gZmFsc2U7XG4gIH1cblxuICBwcm94eUFjdGl2ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNQcm94eUFjdGl2ZTtcbiAgfVxuXG4gIGdldFByb3h5QXZvaWRMaXN0ICgpIHtcbiAgICByZXR1cm4gTk9fUFJPWFk7XG4gIH1cblxuICBjYW5Qcm94eSAoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uICguLi5hcmdzKSB7XG4gICAgY29uc3QgW3Nlc3Npb25JZCwgY2Fwc10gPSBhd2FpdCBzdXBlci5jcmVhdGVTZXNzaW9uKC4uLmFyZ3MpO1xuICAgIHRoaXMuZ2Vja28gPSBuZXcgR2Vja29Ecml2ZXJTZXJ2ZXIodGhpcy5sb2csIGNhcHMpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmdlY2tvLnN0YXJ0KGZvcm1hdENhcHNGb3JTZXJ2ZXIoY2FwcykpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuZ2Vja28ucHJveHkucHJveHlSZXFSZXMuYmluZCh0aGlzLmdlY2tvLnByb3h5KTtcbiAgICB0aGlzLmlzUHJveHlBY3RpdmUgPSB0cnVlO1xuICAgIHJldHVybiBbc2Vzc2lvbklkLCBjYXBzXTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmluZm8oJ0VuZGluZyBHZWNrbyBEcml2ZXIgc2Vzc2lvbicpO1xuICAgIGF3YWl0IHRoaXMuZ2Vja28uc3RvcCgpO1xuICAgIHRoaXMucmVzZXRTdGF0ZSgpO1xuXG4gICAgYXdhaXQgc3VwZXIuZGVsZXRlU2Vzc2lvbigpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdlY2tvRHJpdmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxDQUNmLENBQUMsS0FBRCxFQUFRLElBQUlDLE1BQUosQ0FBVyx3QkFBWCxDQUFSLENBRGUsRUFFZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsd0JBQVgsQ0FBVCxDQUZlLEVBR2YsQ0FBQyxNQUFELEVBQVMsSUFBSUEsTUFBSixDQUFXLDBDQUFYLENBQVQsQ0FIZSxFQUlmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw0QkFBWCxDQUFULENBSmUsQ0FBakI7O0FBT0EsTUFBTUMsV0FBTixTQUEwQkMsc0JBQTFCLENBQXFDO0VBQ25DQyxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7SUFDdEIsTUFBTUEsSUFBTjtJQUNBLEtBQUtDLHFCQUFMLEdBQTZCQSxrQ0FBN0I7SUFDQSxLQUFLQyxpQkFBTCxHQUF5QixDQUN2QixPQUR1QixFQUV2QixVQUZ1QixFQUd2QixXQUh1QixFQUl2QixtQkFKdUIsRUFLdkIsY0FMdUIsRUFPdkIsSUFQdUIsRUFRdkIsTUFSdUIsQ0FBekI7SUFVQSxLQUFLQyxVQUFMOztJQUVBLEtBQUssTUFBTSxDQUFDQyxHQUFELEVBQU1DLEVBQU4sQ0FBWCxJQUF3QkMsZ0JBQUVDLE9BQUYsQ0FBVUMsY0FBVixDQUF4QixFQUE2QztNQUMzQ1gsV0FBVyxDQUFDWSxTQUFaLENBQXNCTCxHQUF0QixJQUE2QkMsRUFBN0I7SUFDRDtFQUNGOztFQUVERixVQUFVLEdBQUk7SUFDWixLQUFLTyxLQUFMLEdBQWEsSUFBYjtJQUNBLEtBQUtDLFdBQUwsR0FBbUIsSUFBbkI7SUFDQSxLQUFLQyxhQUFMLEdBQXFCLEtBQXJCO0VBQ0Q7O0VBRURDLFdBQVcsR0FBSTtJQUNiLE9BQU8sS0FBS0QsYUFBWjtFQUNEOztFQUVERSxpQkFBaUIsR0FBSTtJQUNuQixPQUFPbkIsUUFBUDtFQUNEOztFQUVEb0IsUUFBUSxHQUFJO0lBQ1YsT0FBTyxJQUFQO0VBQ0Q7O0VBRWtCLE1BQWJDLGFBQWEsQ0FBRSxHQUFHQyxJQUFMLEVBQVc7SUFDNUIsTUFBTSxDQUFDQyxTQUFELEVBQVlDLElBQVosSUFBb0IsTUFBTSxNQUFNSCxhQUFOLENBQW9CLEdBQUdDLElBQXZCLENBQWhDO0lBQ0EsS0FBS1AsS0FBTCxHQUFhLElBQUlVLGNBQUosQ0FBc0IsS0FBS0MsR0FBM0IsRUFBZ0NGLElBQWhDLENBQWI7O0lBQ0EsSUFBSTtNQUNGLE1BQU0sS0FBS1QsS0FBTCxDQUFXWSxLQUFYLENBQWlCLGdDQUFvQkgsSUFBcEIsQ0FBakIsQ0FBTjtJQUNELENBRkQsQ0FFRSxPQUFPSSxDQUFQLEVBQVU7TUFDVixNQUFNLEtBQUtDLGFBQUwsRUFBTjtNQUNBLE1BQU1ELENBQU47SUFDRDs7SUFDRCxLQUFLWixXQUFMLEdBQW1CLEtBQUtELEtBQUwsQ0FBV2UsS0FBWCxDQUFpQmQsV0FBakIsQ0FBNkJlLElBQTdCLENBQWtDLEtBQUtoQixLQUFMLENBQVdlLEtBQTdDLENBQW5CO0lBQ0EsS0FBS2IsYUFBTCxHQUFxQixJQUFyQjtJQUNBLE9BQU8sQ0FBQ00sU0FBRCxFQUFZQyxJQUFaLENBQVA7RUFDRDs7RUFFa0IsTUFBYkssYUFBYSxHQUFJO0lBQ3JCLEtBQUtILEdBQUwsQ0FBU00sSUFBVCxDQUFjLDZCQUFkO0lBQ0EsTUFBTSxLQUFLakIsS0FBTCxDQUFXa0IsSUFBWCxFQUFOO0lBQ0EsS0FBS3pCLFVBQUw7SUFFQSxNQUFNLE1BQU1xQixhQUFOLEVBQU47RUFDRDs7QUEzRGtDOztlQThEdEIzQixXIn0=
|
package/build/lib/gecko.js
CHANGED
|
@@ -29,8 +29,6 @@ var _child_process = require("child_process");
|
|
|
29
29
|
|
|
30
30
|
var _constants = require("./constants");
|
|
31
31
|
|
|
32
|
-
const log = _support.logger.getLogger('GeckoDriverServer');
|
|
33
|
-
|
|
34
32
|
const GD_BINARY = `geckodriver${_support.system.isWindows() ? '.exe' : ''}`;
|
|
35
33
|
const STARTUP_TIMEOUT_MS = 10000;
|
|
36
34
|
const GECKO_PORT_RANGE = [5200, 5300];
|
|
@@ -61,11 +59,12 @@ class GeckoProxy extends _baseDriver.JWProxy {
|
|
|
61
59
|
}
|
|
62
60
|
|
|
63
61
|
class GeckoDriverProcess {
|
|
64
|
-
constructor(opts = {}) {
|
|
62
|
+
constructor(log, opts = {}) {
|
|
65
63
|
for (const [optName, propName] of _lodash.default.toPairs(PROCESS_SPECIFIC_OPTION_NAMES_MAP)) {
|
|
66
64
|
this[propName] = opts[optName];
|
|
67
65
|
}
|
|
68
66
|
|
|
67
|
+
this.log = log;
|
|
69
68
|
this.proc = null;
|
|
70
69
|
}
|
|
71
70
|
|
|
@@ -118,8 +117,8 @@ class GeckoDriverProcess {
|
|
|
118
117
|
args.push('--connect-existing');
|
|
119
118
|
|
|
120
119
|
if (_lodash.default.isNil(this.marionettePort)) {
|
|
121
|
-
log.info(`'marionettePort' capability value is not provided while 'noReset' is enabled`);
|
|
122
|
-
log.info(`Assigning 'marionettePort' to the default value (${DEFAULT_MARIONETTE_PORT})`);
|
|
120
|
+
this.log.info(`'marionettePort' capability value is not provided while 'noReset' is enabled`);
|
|
121
|
+
this.log.info(`Assigning 'marionettePort' to the default value (${DEFAULT_MARIONETTE_PORT})`);
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
args.push('--marionette-port', (_this$marionettePort = this.marionettePort) !== null && _this$marionettePort !== void 0 ? _this$marionettePort : DEFAULT_MARIONETTE_PORT);
|
|
@@ -138,13 +137,13 @@ class GeckoDriverProcess {
|
|
|
138
137
|
const line = _lodash.default.trim(stdout || stderr);
|
|
139
138
|
|
|
140
139
|
if (line) {
|
|
141
|
-
log.debug(`[${GD_BINARY}] ${line}`);
|
|
140
|
+
this.log.debug(`[${GD_BINARY}] ${line}`);
|
|
142
141
|
}
|
|
143
142
|
});
|
|
144
143
|
this.proc.on('exit', (code, signal) => {
|
|
145
|
-
log.info(`${GD_BINARY} has exited with code ${code}, signal ${signal}`);
|
|
144
|
+
this.log.info(`${GD_BINARY} has exited with code ${code}, signal ${signal}`);
|
|
146
145
|
});
|
|
147
|
-
log.info(`Starting '${driverBin}' with args ${JSON.stringify(args)}`);
|
|
146
|
+
this.log.info(`Starting '${driverBin}' with args ${JSON.stringify(args)}`);
|
|
148
147
|
await this.proc.start(0);
|
|
149
148
|
}
|
|
150
149
|
|
|
@@ -166,18 +165,21 @@ class GeckoDriverProcess {
|
|
|
166
165
|
|
|
167
166
|
const RUNNING_PROCESS_IDS = [];
|
|
168
167
|
process.once('exit', () => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
try {
|
|
173
|
-
(0, _child_process.execSync)(command);
|
|
174
|
-
} catch (ign) {}
|
|
168
|
+
if (_lodash.default.isEmpty(RUNNING_PROCESS_IDS)) {
|
|
169
|
+
return;
|
|
175
170
|
}
|
|
171
|
+
|
|
172
|
+
const command = _support.system.isWindows() ? 'taskkill.exe ' + RUNNING_PROCESS_IDS.map(pid => `/PID ${pid}`).join(' ') : `kill ${RUNNING_PROCESS_IDS.join(' ')}`;
|
|
173
|
+
|
|
174
|
+
try {
|
|
175
|
+
(0, _child_process.execSync)(command);
|
|
176
|
+
} catch (ign) {}
|
|
176
177
|
});
|
|
177
178
|
|
|
178
179
|
class GeckoDriverServer {
|
|
179
|
-
constructor(caps) {
|
|
180
|
-
this.process = new GeckoDriverProcess(caps);
|
|
180
|
+
constructor(log, caps) {
|
|
181
|
+
this.process = new GeckoDriverProcess(log, caps);
|
|
182
|
+
this.log = log;
|
|
181
183
|
this.proxy = null;
|
|
182
184
|
}
|
|
183
185
|
|
|
@@ -192,6 +194,7 @@ class GeckoDriverServer {
|
|
|
192
194
|
this.proxy = new GeckoProxy({
|
|
193
195
|
server: '127.0.0.1',
|
|
194
196
|
port: this.process.port,
|
|
197
|
+
log: this.log,
|
|
195
198
|
base: '',
|
|
196
199
|
keepAlive: true
|
|
197
200
|
});
|
|
@@ -243,7 +246,7 @@ class GeckoDriverServer {
|
|
|
243
246
|
var _this$proxy;
|
|
244
247
|
|
|
245
248
|
if (!this.isRunning) {
|
|
246
|
-
log.info(`Gecko Driver session cannot be stopped, because the server is not running`);
|
|
249
|
+
this.log.info(`Gecko Driver session cannot be stopped, because the server is not running`);
|
|
247
250
|
return;
|
|
248
251
|
}
|
|
249
252
|
|
|
@@ -251,14 +254,14 @@ class GeckoDriverServer {
|
|
|
251
254
|
try {
|
|
252
255
|
await this.proxy.command(`/session/${this.proxy.sessionId}`, 'DELETE');
|
|
253
256
|
} catch (e) {
|
|
254
|
-
log.info(`Gecko Driver session cannot be deleted. Original error: ${e.message}`);
|
|
257
|
+
this.log.info(`Gecko Driver session cannot be deleted. Original error: ${e.message}`);
|
|
255
258
|
}
|
|
256
259
|
}
|
|
257
260
|
|
|
258
261
|
try {
|
|
259
262
|
await this.process.stop();
|
|
260
263
|
} catch (e) {
|
|
261
|
-
log.warn(`Gecko Driver process cannot be stopped (${e.message}). Killing it forcefully`);
|
|
264
|
+
this.log.warn(`Gecko Driver process cannot be stopped (${e.message}). Killing it forcefully`);
|
|
262
265
|
await this.process.kill();
|
|
263
266
|
}
|
|
264
267
|
}
|
|
@@ -269,4 +272,4 @@ var _default = GeckoDriverServer;
|
|
|
269
272
|
exports.default = _default;require('source-map-support').install();
|
|
270
273
|
|
|
271
274
|
|
|
272
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9nZWNrby5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJHRF9CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJTVEFSVFVQX1RJTUVPVVRfTVMiLCJHRUNLT19QT1JUX1JBTkdFIiwiR0VDS09fU0VSVkVSX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiREVGQVVMVF9NQVJJT05FVFRFX1BPUlQiLCJQUk9DRVNTX1NQRUNJRklDX09QVElPTl9OQU1FU19NQVAiLCJPYmplY3QiLCJmcmVlemUiLCJub1Jlc2V0IiwidmVyYm9zaXR5IiwiYW5kcm9pZFN0b3JhZ2UiLCJtYXJpb25ldHRlUG9ydCIsInN5c3RlbVBvcnQiLCJHZWNrb1Byb3h5IiwiSldQcm94eSIsInByb3h5Q29tbWFuZCIsInVybCIsIm1ldGhvZCIsImJvZHkiLCJkaWRQcm9jZXNzRXhpdCIsImVycm9ycyIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJHZWNrb0RyaXZlclByb2Nlc3MiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJvcHROYW1lIiwicHJvcE5hbWUiLCJfIiwidG9QYWlycyIsInByb2MiLCJpc1J1bm5pbmciLCJpbml0IiwicG9ydCIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJlIiwiRXJyb3IiLCJkcml2ZXJCaW4iLCJmcyIsIndoaWNoIiwiYXJncyIsInRvTG93ZXIiLCJWRVJCT1NJVFkiLCJERUJVRyIsInB1c2giLCJUUkFDRSIsImlzTmlsIiwiaW5mbyIsIlN1YlByb2Nlc3MiLCJvbiIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJ0cmltIiwiZGVidWciLCJjb2RlIiwic2lnbmFsIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0Iiwic3RvcCIsImtpbGwiLCJpZ24iLCJSVU5OSU5HX1BST0NFU1NfSURTIiwicHJvY2VzcyIsIm9uY2UiLCJwaWQiLCJjb21tYW5kIiwiR2Vja29Ecml2ZXJTZXJ2ZXIiLCJjYXBzIiwicHJveHkiLCJnZWNrb0NhcHMiLCJzZXJ2ZXIiLCJiYXNlIiwia2VlcEFsaXZlIiwiZXJyIiwibWVzc2FnZSIsIndhaXRNcyIsImludGVydmFsTXMiLCJ0ZXN0IiwicHVsbCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInNlc3Npb25JZCIsIndhcm4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxnQkFBT0MsU0FBUCxDQUFpQixtQkFBakIsQ0FBWjs7QUFFQSxNQUFNQyxTQUFTLEdBQUksY0FBYUMsZ0JBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUFqRTtBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUF6Qjs7QUFDQSxNQUFNQyxrQkFBa0IsR0FBR0MsY0FBS0MsZ0JBQUwsQ0FDekJDLGNBQUtDLE9BQUwsQ0FBYUMsWUFBR0MsTUFBSCxFQUFiLEVBQTBCLHlCQUExQixDQUR5QixFQUV6QjtBQUFDQyxFQUFBQSxPQUFPLEVBQUUsQ0FBVjtBQUFhQyxFQUFBQSxXQUFXLEVBQUU7QUFBMUIsQ0FGeUIsQ0FBM0I7O0FBSUEsTUFBTUMsdUJBQXVCLEdBQUcsSUFBaEM7QUFDQSxNQUFNQyxpQ0FBaUMsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWM7QUFDdERDLEVBQUFBLE9BQU8sRUFBRSxTQUQ2QztBQUV0REMsRUFBQUEsU0FBUyxFQUFFLFdBRjJDO0FBR3REQyxFQUFBQSxjQUFjLEVBQUUsZ0JBSHNDO0FBSXREQyxFQUFBQSxjQUFjLEVBQUUsZ0JBSnNDO0FBS3REQyxFQUFBQSxVQUFVLEVBQUU7QUFMMEMsQ0FBZCxDQUExQzs7QUFTQSxN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OztBQWxGcUI7O2VBcUZUTyxpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBKV1Byb3h5LCBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCB7IGZzLCBsb2dnZXIsIHV0aWwsIHN5c3RlbSB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBmaW5kQVBvcnROb3RJblVzZSB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBWRVJCT1NJVFkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0dlY2tvRHJpdmVyU2VydmVyJyk7XG5cbmNvbnN0IEdEX0JJTkFSWSA9IGBnZWNrb2RyaXZlciR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcbmNvbnN0IFNUQVJUVVBfVElNRU9VVF9NUyA9IDEwMDAwOyAvLyAxMCBzZWNvbmRzXG5jb25zdCBHRUNLT19QT1JUX1JBTkdFID0gWzUyMDAsIDUzMDBdO1xuY29uc3QgR0VDS09fU0VSVkVSX0dVQVJEID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKFxuICBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksICdnZWNrb19zZXJ2ZXJfZ3VhcmQubG9jaycpLFxuICB7dGltZW91dDogNSwgdHJ5UmVjb3Zlcnk6IHRydWV9XG4pO1xuY29uc3QgREVGQVVMVF9NQVJJT05FVFRFX1BPUlQgPSAyODI4O1xuY29uc3QgUFJPQ0VTU19TUEVDSUZJQ19PUFRJT05fTkFNRVNfTUFQID0gT2JqZWN0LmZyZWV6ZSh7XG4gIG5vUmVzZXQ6ICdub1Jlc2V0JyxcbiAgdmVyYm9zaXR5OiAndmVyYm9zaXR5JyxcbiAgYW5kcm9pZFN0b3JhZ2U6ICdhbmRyb2lkU3RvcmFnZScsXG4gIG1hcmlvbmV0dGVQb3J0OiAnbWFyaW9uZXR0ZVBvcnQnLFxuICBzeXN0ZW1Qb3J0OiAncG9ydCcsXG59KTtcblxuXG5jbGFzcyBHZWNrb1Byb3h5IGV4dGVuZHMgSldQcm94eSB7XG4gIGFzeW5jIHByb3h5Q29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZENvbnRleHRFcnJvcihcbiAgICAgICAgYCcke21ldGhvZH0gJHt1cmx9JyBjYW5ub3QgYmUgcHJveGllZCB0byBHZWNrbyBEcml2ZXIgc2VydmVyIGJlY2F1c2UgYCArXG4gICAgICAgICdpdHMgcHJvY2VzcyBpcyBub3QgcnVubmluZyAocHJvYmFibHkgY3Jhc2hlZCkuIENoZWNrIHRoZSBBcHBpdW0gbG9nIGZvciBtb3JlIGRldGFpbHMnKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLnByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cbn1cblxuY2xhc3MgR2Vja29Ecml2ZXJQcm9jZXNzIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIGZvciAoY29uc3QgW29wdE5hbWUsIHByb3BOYW1lXSBvZiBfLnRvUGFpcnMoUFJPQ0VTU19TUEVDSUZJQ19PUFRJT05fTkFNRVNfTUFQKSkge1xuICAgICAgdGhpc1twcm9wTmFtZV0gPSBvcHRzW29wdE5hbWVdO1xuICAgIH1cbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvYz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGluaXQgKCkge1xuICAgIGlmICh0aGlzLmlzUnVubmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wb3J0KSB7XG4gICAgICBhd2FpdCBHRUNLT19TRVJWRVJfR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBbc3RhcnRQb3J0LCBlbmRQb3J0XSA9IEdFQ0tPX1BPUlRfUkFOR0U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5wb3J0ID0gYXdhaXQgZmluZEFQb3J0Tm90SW5Vc2Uoc3RhcnRQb3J0LCBlbmRQb3J0KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3QgZmluZCBhbnkgZnJlZSBwb3J0IGluIHJhbmdlICR7c3RhcnRQb3J0fS4uJHtlbmRQb3J0fS4gYCArXG4gICAgICAgICAgICBgRG91YmxlIGNoZWNrIHRoZSBwcm9jZXNzZXMgdGhhdCBhcmUgbG9ja2luZyBwb3J0cyB3aXRoaW4gdGhpcyByYW5nZSBhbmQgdGVybWluYXRlIGAgK1xuICAgICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmUgb3Igc2V0IGFueSBmcmVlIHBvcnQgbnVtYmVyIHRvIHRoZSAnc3lzdGVtUG9ydCcgY2FwYWJpbGl0eWApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgZHJpdmVyQmluO1xuICAgIHRyeSB7XG4gICAgICBkcml2ZXJCaW4gPSBhd2FpdCBmcy53aGljaChHRF9CSU5BUlkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtHRF9CSU5BUll9IGJpbmFyeSBjYW5ub3QgYmUgZm91bmQgaW4gUEFUSC4gYCArXG4gICAgICAgIGBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIHByZXNlbnQgb24geW91ciBzeXN0ZW1gKTtcbiAgICB9XG4gICAgY29uc3QgYXJncyA9IFtdO1xuICAgIC8qICNyZWdpb24gT3B0aW9ucyAqL1xuICAgIHN3aXRjaCAoXy50b0xvd2VyKHRoaXMudmVyYm9zaXR5KSkge1xuICAgICAgY2FzZSBWRVJCT1NJVFkuREVCVUc6XG4gICAgICAgIGFyZ3MucHVzaCgnLXYnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZFUkJPU0lUWS5UUkFDRTpcbiAgICAgICAgYXJncy5wdXNoKCctdnYnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLm5vUmVzZXQpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1jb25uZWN0LWV4aXN0aW5nJyk7XG4gICAgICAvLyBodHRwczovL2ZpcmVmb3gtc291cmNlLWRvY3MubW96aWxsYS5vcmcvdGVzdGluZy9nZWNrb2RyaXZlci9GbGFncy5odG1sI2NvZGUtY29ubmVjdC1leGlzdGluZy1jb2RlXG4gICAgICBpZiAoXy5pc05pbCh0aGlzLm1hcmlvbmV0dGVQb3J0KSkge1xuICAgICAgICBsb2cuaW5mbyhgJ21hcmlvbmV0dGVQb3J0JyBjYXBhYmlsaXR5IHZhbHVlIGlzIG5vdCBwcm92aWRlZCB3aGlsZSAnbm9SZXNldCcgaXMgZW5hYmxlZGApO1xuICAgICAgICBsb2cuaW5mbyhgQXNzaWduaW5nICdtYXJpb25ldHRlUG9ydCcgdG8gdGhlIGRlZmF1bHQgdmFsdWUgKCR7REVGQVVMVF9NQVJJT05FVFRFX1BPUlR9KWApO1xuICAgICAgfVxuICAgICAgYXJncy5wdXNoKCctLW1hcmlvbmV0dGUtcG9ydCcsIHRoaXMubWFyaW9uZXR0ZVBvcnQgPz8gREVGQVVMVF9NQVJJT05FVFRFX1BPUlQpO1xuICAgIH0gZWxzZSBpZiAoIV8uaXNOaWwodGhpcy5tYXJpb25ldHRlUG9ydCkpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1tYXJpb25ldHRlLXBvcnQnLCB0aGlzLm1hcmlvbmV0dGVQb3J0KTtcbiAgICB9XG4gICAgLyogI2VuZHJlZ2lvbiAqL1xuXG4gICAgYXJncy5wdXNoKCctcCcsIHRoaXMucG9ydCk7XG4gICAgaWYgKHRoaXMuYW5kcm9pZFN0b3JhZ2UpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1hbmRyb2lkLXN0b3JhZ2UnLCB0aGlzLmFuZHJvaWRTdG9yYWdlKTtcbiAgICB9XG4gICAgdGhpcy5wcm9jID0gbmV3IFN1YlByb2Nlc3MoZHJpdmVyQmluLCBhcmdzKTtcbiAgICB0aGlzLnByb2Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IF8udHJpbShzdGRvdXQgfHwgc3RkZXJyKTtcbiAgICAgIGlmIChsaW5lKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgWyR7R0RfQklOQVJZfV0gJHtsaW5lfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucHJvYy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIGxvZy5pbmZvKGAke0dEX0JJTkFSWX0gaGFzIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWApO1xuICAgIH0pO1xuICAgIGxvZy5pbmZvKGBTdGFydGluZyAnJHtkcml2ZXJCaW59JyB3aXRoIGFyZ3MgJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gIH1cblxuICBhc3luYyBzdG9wICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdURVJNJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMga2lsbCAoKSB7XG4gICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Muc3RvcCgnU0lHS0lMTCcpO1xuICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBSVU5OSU5HX1BST0NFU1NfSURTID0gW107XG5wcm9jZXNzLm9uY2UoJ2V4aXQnLCAoKSA9PiB7XG4gIGZvciAoY29uc3QgcGlkIG9mIFJVTk5JTkdfUFJPQ0VTU19JRFMpIHtcbiAgICBjb25zdCBjb21tYW5kID0gc3lzdGVtLmlzV2luZG93cygpID8gYHRhc2traWxsLmV4ZSAvUElEICR7cGlkfWAgOiBga2lsbCAke3BpZH1gO1xuICAgIHRyeSB7XG4gICAgICBleGVjU3luYyhjb21tYW5kKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbn0pO1xuXG5jbGFzcyBHZWNrb0RyaXZlclNlcnZlciB7XG4gIGNvbnN0cnVjdG9yIChjYXBzKSB7XG4gICAgdGhpcy5wcm9jZXNzID0gbmV3IEdlY2tvRHJpdmVyUHJvY2VzcyhjYXBzKTtcbiAgICB0aGlzLnByb3h5ID0gbnVsbDtcbiAgfVxuXG4gIGdldCBpc1J1bm5pbmcgKCkge1xuICAgIHJldHVybiAhISh0aGlzLnByb2Nlc3M/LmlzUnVubmluZyk7XG4gIH1cblxuICBhc3luYyBzdGFydCAoZ2Vja29DYXBzKSB7XG4gICAgYXdhaXQgdGhpcy5wcm9jZXNzLmluaXQoKTtcblxuICAgIHRoaXMucHJveHkgPSBuZXcgR2Vja29Qcm94eSh7XG4gICAgICBzZXJ2ZXI6ICcxMjcuMC4wLjEnLFxuICAgICAgcG9ydDogdGhpcy5wcm9jZXNzLnBvcnQsXG4gICAgICBiYXNlOiAnJyxcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gZmFsc2U7XG4gICAgdGhpcy5wcm9jZXNzLnByb2Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gICAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgd2FpdE1zOiBTVEFSVFVQX1RJTUVPVVRfTVMsXG4gICAgICAgIGludGVydmFsTXM6IDEwMDAsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAodGhpcy5wcm9jZXNzLmlzUnVubmluZykge1xuICAgICAgICAvLyBhdm9pZCBcImZyb3plblwiIHByb2Nlc3NlcyxcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzLmtpbGwoKTtcbiAgICAgIH1cbiAgICAgIGlmICgvQ29uZGl0aW9uIHVubWV0Ly50ZXN0KGUubWVzc2FnZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHZWNrbyBEcml2ZXIgc2VydmVyIGlzIG5vdCBsaXN0ZW5pbmcgd2l0aGluICR7U1RBUlRVUF9USU1FT1VUX01TfW1zIHRpbWVvdXQuIGAgK1xuICAgICAgICAgIGBNYWtlIHN1cmUgaXQgY291bGQgYmUgc3RhcnRlZCBtYW51YWxseSBmcm9tIGEgdGVybWluYWxgKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIGNvbnN0IHBpZCA9IHRoaXMucHJvY2Vzcy5wcm9jLnBpZDtcbiAgICBSVU5OSU5HX1BST0NFU1NfSURTLnB1c2gocGlkKTtcbiAgICB0aGlzLnByb2Nlc3MucHJvYy5vbignZXhpdCcsICgpID0+IHZvaWQgXy5wdWxsKFJVTk5JTkdfUFJPQ0VTU19JRFMsIHBpZCkpO1xuXG4gICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKCcvc2Vzc2lvbicsICdQT1NUJywge1xuICAgICAgY2FwYWJpbGl0aWVzOiB7XG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICAgIGFsd2F5c01hdGNoOiBnZWNrb0NhcHMsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdG9wICgpIHtcbiAgICBpZiAoIXRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICBsb2cuaW5mbyhgR2Vja28gRHJpdmVyIHNlc3Npb24gY2Fubm90IGJlIHN0b3BwZWQsIGJlY2F1c2UgdGhlIHNlcnZlciBpcyBub3QgcnVubmluZ2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3h5Py5zZXNzaW9uSWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZChgL3Nlc3Npb24vJHt0aGlzLnByb3h5LnNlc3Npb25JZH1gLCAnREVMRVRFJyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZy5pbmZvKGBHZWNrbyBEcml2ZXIgc2Vzc2lvbiBjYW5ub3QgYmUgZGVsZXRlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3Muc3RvcCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGBHZWNrbyBEcml2ZXIgcHJvY2VzcyBjYW5ub3QgYmUgc3RvcHBlZCAoJHtlLm1lc3NhZ2V9KS4gS2lsbGluZyBpdCBmb3JjZWZ1bGx5YCk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3Mua2lsbCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHZWNrb0RyaXZlclNlcnZlcjtcbiJdLCJmaWxlIjoibGliL2dlY2tvLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
275
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2dlY2tvLmpzIiwibmFtZXMiOlsiR0RfQklOQVJZIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiU1RBUlRVUF9USU1FT1VUX01TIiwiR0VDS09fUE9SVF9SQU5HRSIsIkdFQ0tPX1NFUlZFUl9HVUFSRCIsInV0aWwiLCJnZXRMb2NrRmlsZUd1YXJkIiwicGF0aCIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInRpbWVvdXQiLCJ0cnlSZWNvdmVyeSIsIkRFRkFVTFRfTUFSSU9ORVRURV9QT1JUIiwiUFJPQ0VTU19TUEVDSUZJQ19PUFRJT05fTkFNRVNfTUFQIiwiT2JqZWN0IiwiZnJlZXplIiwibm9SZXNldCIsInZlcmJvc2l0eSIsImFuZHJvaWRTdG9yYWdlIiwibWFyaW9uZXR0ZVBvcnQiLCJzeXN0ZW1Qb3J0IiwiR2Vja29Qcm94eSIsIkpXUHJveHkiLCJwcm94eUNvbW1hbmQiLCJ1cmwiLCJtZXRob2QiLCJib2R5IiwiZGlkUHJvY2Vzc0V4aXQiLCJlcnJvcnMiLCJJbnZhbGlkQ29udGV4dEVycm9yIiwiR2Vja29Ecml2ZXJQcm9jZXNzIiwiY29uc3RydWN0b3IiLCJsb2ciLCJvcHRzIiwib3B0TmFtZSIsInByb3BOYW1lIiwiXyIsInRvUGFpcnMiLCJwcm9jIiwiaXNSdW5uaW5nIiwiaW5pdCIsInBvcnQiLCJzdGFydFBvcnQiLCJlbmRQb3J0IiwiZSIsIkVycm9yIiwiZHJpdmVyQmluIiwiZnMiLCJ3aGljaCIsImFyZ3MiLCJ0b0xvd2VyIiwiVkVSQk9TSVRZIiwiREVCVUciLCJwdXNoIiwiVFJBQ0UiLCJpc05pbCIsImluZm8iLCJTdWJQcm9jZXNzIiwib24iLCJzdGRvdXQiLCJzdGRlcnIiLCJsaW5lIiwidHJpbSIsImRlYnVnIiwiY29kZSIsInNpZ25hbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydCIsInN0b3AiLCJraWxsIiwiaWduIiwiUlVOTklOR19QUk9DRVNTX0lEUyIsInByb2Nlc3MiLCJvbmNlIiwiaXNFbXB0eSIsImNvbW1hbmQiLCJtYXAiLCJwaWQiLCJqb2luIiwiR2Vja29Ecml2ZXJTZXJ2ZXIiLCJjYXBzIiwicHJveHkiLCJnZWNrb0NhcHMiLCJzZXJ2ZXIiLCJiYXNlIiwia2VlcEFsaXZlIiwiZXJyIiwibWVzc2FnZSIsIndhaXRNcyIsImludGVydmFsTXMiLCJ0ZXN0IiwicHVsbCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInNlc3Npb25JZCIsIndhcm4iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvZ2Vja28uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEpXUHJveHksIGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgZnMsIHV0aWwsIHN5c3RlbSB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBmaW5kQVBvcnROb3RJblVzZSB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBWRVJCT1NJVFkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IEdEX0JJTkFSWSA9IGBnZWNrb2RyaXZlciR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcbmNvbnN0IFNUQVJUVVBfVElNRU9VVF9NUyA9IDEwMDAwOyAvLyAxMCBzZWNvbmRzXG5jb25zdCBHRUNLT19QT1JUX1JBTkdFID0gWzUyMDAsIDUzMDBdO1xuY29uc3QgR0VDS09fU0VSVkVSX0dVQVJEID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKFxuICBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksICdnZWNrb19zZXJ2ZXJfZ3VhcmQubG9jaycpLFxuICB7dGltZW91dDogNSwgdHJ5UmVjb3Zlcnk6IHRydWV9XG4pO1xuY29uc3QgREVGQVVMVF9NQVJJT05FVFRFX1BPUlQgPSAyODI4O1xuY29uc3QgUFJPQ0VTU19TUEVDSUZJQ19PUFRJT05fTkFNRVNfTUFQID0gT2JqZWN0LmZyZWV6ZSh7XG4gIG5vUmVzZXQ6ICdub1Jlc2V0JyxcbiAgdmVyYm9zaXR5OiAndmVyYm9zaXR5JyxcbiAgYW5kcm9pZFN0b3JhZ2U6ICdhbmRyb2lkU3RvcmFnZScsXG4gIG1hcmlvbmV0dGVQb3J0OiAnbWFyaW9uZXR0ZVBvcnQnLFxuICBzeXN0ZW1Qb3J0OiAncG9ydCcsXG59KTtcblxuXG5jbGFzcyBHZWNrb1Byb3h5IGV4dGVuZHMgSldQcm94eSB7XG4gIGFzeW5jIHByb3h5Q29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZENvbnRleHRFcnJvcihcbiAgICAgICAgYCcke21ldGhvZH0gJHt1cmx9JyBjYW5ub3QgYmUgcHJveGllZCB0byBHZWNrbyBEcml2ZXIgc2VydmVyIGJlY2F1c2UgYCArXG4gICAgICAgICdpdHMgcHJvY2VzcyBpcyBub3QgcnVubmluZyAocHJvYmFibHkgY3Jhc2hlZCkuIENoZWNrIHRoZSBBcHBpdW0gbG9nIGZvciBtb3JlIGRldGFpbHMnKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLnByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cbn1cblxuY2xhc3MgR2Vja29Ecml2ZXJQcm9jZXNzIHtcbiAgY29uc3RydWN0b3IgKGxvZywgb3B0cyA9IHt9KSB7XG4gICAgZm9yIChjb25zdCBbb3B0TmFtZSwgcHJvcE5hbWVdIG9mIF8udG9QYWlycyhQUk9DRVNTX1NQRUNJRklDX09QVElPTl9OQU1FU19NQVApKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IG9wdHNbb3B0TmFtZV07XG4gICAgfVxuICAgIHRoaXMubG9nID0gbG9nO1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5wcm9jPy5pc1J1bm5pbmcpO1xuICB9XG5cbiAgYXN5bmMgaW5pdCAoKSB7XG4gICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBvcnQpIHtcbiAgICAgIGF3YWl0IEdFQ0tPX1NFUlZFUl9HVUFSRChhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IFtzdGFydFBvcnQsIGVuZFBvcnRdID0gR0VDS09fUE9SVF9SQU5HRTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLnBvcnQgPSBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShzdGFydFBvcnQsIGVuZFBvcnQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCBmaW5kIGFueSBmcmVlIHBvcnQgaW4gcmFuZ2UgJHtzdGFydFBvcnR9Li4ke2VuZFBvcnR9LiBgICtcbiAgICAgICAgICAgIGBEb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgICBgdGhlc2Ugd2hpY2ggYXJlIG5vdCBuZWVkZWQgYW55bW9yZSBvciBzZXQgYW55IGZyZWUgcG9ydCBudW1iZXIgdG8gdGhlICdzeXN0ZW1Qb3J0JyBjYXBhYmlsaXR5YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBkcml2ZXJCaW47XG4gICAgdHJ5IHtcbiAgICAgIGRyaXZlckJpbiA9IGF3YWl0IGZzLndoaWNoKEdEX0JJTkFSWSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke0dEX0JJTkFSWX0gYmluYXJ5IGNhbm5vdCBiZSBmb3VuZCBpbiBQQVRILiBgICtcbiAgICAgICAgYFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgcHJlc2VudCBvbiB5b3VyIHN5c3RlbWApO1xuICAgIH1cbiAgICBjb25zdCBhcmdzID0gW107XG4gICAgLyogI3JlZ2lvbiBPcHRpb25zICovXG4gICAgc3dpdGNoIChfLnRvTG93ZXIodGhpcy52ZXJib3NpdHkpKSB7XG4gICAgICBjYXNlIFZFUkJPU0lUWS5ERUJVRzpcbiAgICAgICAgYXJncy5wdXNoKCctdicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVkVSQk9TSVRZLlRSQUNFOlxuICAgICAgICBhcmdzLnB1c2goJy12dicpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMubm9SZXNldCkge1xuICAgICAgYXJncy5wdXNoKCctLWNvbm5lY3QtZXhpc3RpbmcnKTtcbiAgICAgIC8vIGh0dHBzOi8vZmlyZWZveC1zb3VyY2UtZG9jcy5tb3ppbGxhLm9yZy90ZXN0aW5nL2dlY2tvZHJpdmVyL0ZsYWdzLmh0bWwjY29kZS1jb25uZWN0LWV4aXN0aW5nLWNvZGVcbiAgICAgIGlmIChfLmlzTmlsKHRoaXMubWFyaW9uZXR0ZVBvcnQpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYCdtYXJpb25ldHRlUG9ydCcgY2FwYWJpbGl0eSB2YWx1ZSBpcyBub3QgcHJvdmlkZWQgd2hpbGUgJ25vUmVzZXQnIGlzIGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgQXNzaWduaW5nICdtYXJpb25ldHRlUG9ydCcgdG8gdGhlIGRlZmF1bHQgdmFsdWUgKCR7REVGQVVMVF9NQVJJT05FVFRFX1BPUlR9KWApO1xuICAgICAgfVxuICAgICAgYXJncy5wdXNoKCctLW1hcmlvbmV0dGUtcG9ydCcsIHRoaXMubWFyaW9uZXR0ZVBvcnQgPz8gREVGQVVMVF9NQVJJT05FVFRFX1BPUlQpO1xuICAgIH0gZWxzZSBpZiAoIV8uaXNOaWwodGhpcy5tYXJpb25ldHRlUG9ydCkpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1tYXJpb25ldHRlLXBvcnQnLCB0aGlzLm1hcmlvbmV0dGVQb3J0KTtcbiAgICB9XG4gICAgLyogI2VuZHJlZ2lvbiAqL1xuXG4gICAgYXJncy5wdXNoKCctcCcsIHRoaXMucG9ydCk7XG4gICAgaWYgKHRoaXMuYW5kcm9pZFN0b3JhZ2UpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1hbmRyb2lkLXN0b3JhZ2UnLCB0aGlzLmFuZHJvaWRTdG9yYWdlKTtcbiAgICB9XG4gICAgdGhpcy5wcm9jID0gbmV3IFN1YlByb2Nlc3MoZHJpdmVyQmluLCBhcmdzKTtcbiAgICB0aGlzLnByb2Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IF8udHJpbShzdGRvdXQgfHwgc3RkZXJyKTtcbiAgICAgIGlmIChsaW5lKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBbJHtHRF9CSU5BUll9XSAke2xpbmV9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgJHtHRF9CSU5BUll9IGhhcyBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICB9KTtcbiAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyAnJHtkcml2ZXJCaW59JyB3aXRoIGFyZ3MgJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gIH1cblxuICBhc3luYyBzdG9wICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdURVJNJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMga2lsbCAoKSB7XG4gICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Muc3RvcCgnU0lHS0lMTCcpO1xuICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBSVU5OSU5HX1BST0NFU1NfSURTID0gW107XG5wcm9jZXNzLm9uY2UoJ2V4aXQnLCAoKSA9PiB7XG4gIGlmIChfLmlzRW1wdHkoUlVOTklOR19QUk9DRVNTX0lEUykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb21tYW5kID0gc3lzdGVtLmlzV2luZG93cygpXG4gICAgPyAoJ3Rhc2traWxsLmV4ZSAnICsgUlVOTklOR19QUk9DRVNTX0lEUy5tYXAoKHBpZCkgPT4gYC9QSUQgJHtwaWR9YCkuam9pbignICcpKVxuICAgIDogYGtpbGwgJHtSVU5OSU5HX1BST0NFU1NfSURTLmpvaW4oJyAnKX1gO1xuICB0cnkge1xuICAgIGV4ZWNTeW5jKGNvbW1hbmQpO1xuICB9IGNhdGNoIChpZ24pIHt9XG59KTtcblxuY2xhc3MgR2Vja29Ecml2ZXJTZXJ2ZXIge1xuICBjb25zdHJ1Y3RvciAobG9nLCBjYXBzKSB7XG4gICAgdGhpcy5wcm9jZXNzID0gbmV3IEdlY2tvRHJpdmVyUHJvY2Vzcyhsb2csIGNhcHMpO1xuICAgIHRoaXMubG9nID0gbG9nO1xuICAgIHRoaXMucHJveHkgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvY2Vzcz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0IChnZWNrb0NhcHMpIHtcbiAgICBhd2FpdCB0aGlzLnByb2Nlc3MuaW5pdCgpO1xuXG4gICAgdGhpcy5wcm94eSA9IG5ldyBHZWNrb1Byb3h5KHtcbiAgICAgIHNlcnZlcjogJzEyNy4wLjAuMScsXG4gICAgICBwb3J0OiB0aGlzLnByb2Nlc3MucG9ydCxcbiAgICAgIGxvZzogdGhpcy5sb2csXG4gICAgICBiYXNlOiAnJyxcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gZmFsc2U7XG4gICAgdGhpcy5wcm9jZXNzLnByb2Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gICAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgd2FpdE1zOiBTVEFSVFVQX1RJTUVPVVRfTVMsXG4gICAgICAgIGludGVydmFsTXM6IDEwMDAsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAodGhpcy5wcm9jZXNzLmlzUnVubmluZykge1xuICAgICAgICAvLyBhdm9pZCBcImZyb3plblwiIHByb2Nlc3NlcyxcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzLmtpbGwoKTtcbiAgICAgIH1cbiAgICAgIGlmICgvQ29uZGl0aW9uIHVubWV0Ly50ZXN0KGUubWVzc2FnZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHZWNrbyBEcml2ZXIgc2VydmVyIGlzIG5vdCBsaXN0ZW5pbmcgd2l0aGluICR7U1RBUlRVUF9USU1FT1VUX01TfW1zIHRpbWVvdXQuIGAgK1xuICAgICAgICAgIGBNYWtlIHN1cmUgaXQgY291bGQgYmUgc3RhcnRlZCBtYW51YWxseSBmcm9tIGEgdGVybWluYWxgKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIGNvbnN0IHBpZCA9IHRoaXMucHJvY2Vzcy5wcm9jLnBpZDtcbiAgICBSVU5OSU5HX1BST0NFU1NfSURTLnB1c2gocGlkKTtcbiAgICB0aGlzLnByb2Nlc3MucHJvYy5vbignZXhpdCcsICgpID0+IHZvaWQgXy5wdWxsKFJVTk5JTkdfUFJPQ0VTU19JRFMsIHBpZCkpO1xuXG4gICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKCcvc2Vzc2lvbicsICdQT1NUJywge1xuICAgICAgY2FwYWJpbGl0aWVzOiB7XG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICAgIGFsd2F5c01hdGNoOiBnZWNrb0NhcHMsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdG9wICgpIHtcbiAgICBpZiAoIXRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBHZWNrbyBEcml2ZXIgc2Vzc2lvbiBjYW5ub3QgYmUgc3RvcHBlZCwgYmVjYXVzZSB0aGUgc2VydmVyIGlzIG5vdCBydW5uaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJveHk/LnNlc3Npb25JZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKGAvc2Vzc2lvbi8ke3RoaXMucHJveHkuc2Vzc2lvbklkfWAsICdERUxFVEUnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgR2Vja28gRHJpdmVyIHNlc3Npb24gY2Fubm90IGJlIGRlbGV0ZWQuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzLnN0b3AoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKGBHZWNrbyBEcml2ZXIgcHJvY2VzcyBjYW5ub3QgYmUgc3RvcHBlZCAoJHtlLm1lc3NhZ2V9KS4gS2lsbGluZyBpdCBmb3JjZWZ1bGx5YCk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3Mua2lsbCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHZWNrb0RyaXZlclNlcnZlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUksY0FBYUMsZ0JBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUFqRTtBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUF6Qjs7QUFDQSxNQUFNQyxrQkFBa0IsR0FBR0MsY0FBS0MsZ0JBQUwsQ0FDekJDLGNBQUtDLE9BQUwsQ0FBYUMsWUFBR0MsTUFBSCxFQUFiLEVBQTBCLHlCQUExQixDQUR5QixFQUV6QjtFQUFDQyxPQUFPLEVBQUUsQ0FBVjtFQUFhQyxXQUFXLEVBQUU7QUFBMUIsQ0FGeUIsQ0FBM0I7O0FBSUEsTUFBTUMsdUJBQXVCLEdBQUcsSUFBaEM7QUFDQSxNQUFNQyxpQ0FBaUMsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWM7RUFDdERDLE9BQU8sRUFBRSxTQUQ2QztFQUV0REMsU0FBUyxFQUFFLFdBRjJDO0VBR3REQyxjQUFjLEVBQUUsZ0JBSHNDO0VBSXREQyxjQUFjLEVBQUUsZ0JBSnNDO0VBS3REQyxVQUFVLEVBQUU7QUFMMEMsQ0FBZCxDQUExQzs7QUFTQSxNQUFNQyxVQUFOLFNBQXlCQyxtQkFBekIsQ0FBaUM7RUFDYixNQUFaQyxZQUFZLENBQUVDLEdBQUYsRUFBT0MsTUFBUCxFQUFlQyxJQUFJLEdBQUcsSUFBdEIsRUFBNEI7SUFDNUMsSUFBSSxLQUFLQyxjQUFULEVBQXlCO01B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
|
package/build/lib/logger.js
CHANGED
|
@@ -15,4 +15,4 @@ var _default = log;
|
|
|
15
15
|
exports.default = _default;require('source-map-support').install();
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignR2Vja29Ecml2ZXInKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLGFBQWpCLENBQVo7O2VBRWVGLEcifQ==
|
package/build/lib/server.js
CHANGED
|
@@ -33,4 +33,4 @@ async function startServer(port, address) {
|
|
|
33
33
|
}require('source-map-support').install();
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3NlcnZlci5qcyIsIm5hbWVzIjpbInN0YXJ0U2VydmVyIiwicG9ydCIsImFkZHJlc3MiLCJkIiwiR2Vja29Ecml2ZXIiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJzZXJ2ZXIiLCJob3N0bmFtZSIsImxvZyIsImluZm8iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvc2VydmVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHtcbiAgc2VydmVyIGFzIGJhc2VTZXJ2ZXIsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiBhcyBtYWtlUm91dGVyXG59IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IEdlY2tvRHJpdmVyIGZyb20gJy4vZHJpdmVyJztcblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2ZXIgKHBvcnQsIGFkZHJlc3MpIHtcbiAgbGV0IGQgPSBuZXcgR2Vja29Ecml2ZXIoe3BvcnQsIGFkZHJlc3N9KTtcbiAgbGV0IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiA9IG1ha2VSb3V0ZXIoZCk7XG4gIGxldCBzZXJ2ZXIgPSBhd2FpdCBiYXNlU2VydmVyKHtyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sIHBvcnQsIGhvc3RuYW1lOiBhZGRyZXNzfSk7XG4gIGxvZy5pbmZvKGBHZWNrbyBEcml2ZXIgc2VydmVyIGxpc3RlbmluZyBvbiBodHRwOi8vJHthZGRyZXNzfToke3BvcnR9YCk7XG4gIHJldHVybiBzZXJ2ZXI7XG59XG5cbmV4cG9ydCB7IHN0YXJ0U2VydmVyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBRUEsZUFBZUEsV0FBZixDQUE0QkMsSUFBNUIsRUFBa0NDLE9BQWxDLEVBQTJDO0VBQ3pDLElBQUlDLENBQUMsR0FBRyxJQUFJQyxlQUFKLENBQWdCO0lBQUNILElBQUQ7SUFBT0M7RUFBUCxDQUFoQixDQUFSO0VBQ0EsSUFBSUcsd0JBQXdCLEdBQUcsMENBQVdGLENBQVgsQ0FBL0I7RUFDQSxJQUFJRyxNQUFNLEdBQUcsTUFBTSx3QkFBVztJQUFDRCx3QkFBRDtJQUEyQkosSUFBM0I7SUFBaUNNLFFBQVEsRUFBRUw7RUFBM0MsQ0FBWCxDQUFuQjs7RUFDQU0sZ0JBQUlDLElBQUosQ0FBVSwyQ0FBMENQLE9BQVEsSUFBR0QsSUFBSyxFQUFwRTs7RUFDQSxPQUFPSyxNQUFQO0FBQ0QifQ==
|
package/build/lib/utils.js
CHANGED
|
@@ -35,4 +35,4 @@ function formatCapsForServer(caps) {
|
|
|
35
35
|
}require('source-map-support').install();
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3V0aWxzLmpzIiwibmFtZXMiOlsiR0VDS09fQ0FQX1BSRUZJWEVTIiwiU1RBTkRBUkRfQ0FQUyIsImZvcm1hdENhcHNGb3JTZXJ2ZXIiLCJjYXBzIiwicmVzdWx0IiwiYnJvd3Nlck5hbWUiLCJuYW1lIiwidmFsdWUiLCJfIiwidG9QYWlycyIsInNvbWUiLCJwcmVmaXgiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJwbGF0Zm9ybU5hbWUiLCJ0b0xvd2VyIl0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IEdFQ0tPX0NBUF9QUkVGSVhFUyA9IFsnbW96OiddO1xuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jY2FwYWJpbGl0aWVzXG5jb25zdCBTVEFOREFSRF9DQVBTID0gW1xuICAnYnJvd3NlclZlcnNpb24nLFxuICAncGxhdGZvcm1OYW1lJyxcbiAgJ2FjY2VwdEluc2VjdXJlQ2VydHMnLFxuICAncGFnZUxvYWRTdHJhdGVneScsXG4gICdwcm94eScsXG4gICdzZXRXaW5kb3dSZWN0JyxcbiAgJ3RpbWVvdXRzJyxcbiAgJ3VuaGFuZGxlZFByb21wdEJlaGF2aW9yJyxcbl07XG5cbmZ1bmN0aW9uIGZvcm1hdENhcHNGb3JTZXJ2ZXIgKGNhcHMpIHtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGlmIChjYXBzLmJyb3dzZXJOYW1lKSB7XG4gICAgcmVzdWx0LmJyb3dzZXJOYW1lID0gJ2ZpcmVmb3gnO1xuICB9XG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBfLnRvUGFpcnMoY2FwcykpIHtcbiAgICBpZiAoR0VDS09fQ0FQX1BSRUZJWEVTLnNvbWUoKHByZWZpeCkgPT4gbmFtZS5zdGFydHNXaXRoKHByZWZpeCkpIHx8IFNUQU5EQVJEX0NBUFMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIHJlc3VsdFtuYW1lXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBpZiAocmVzdWx0LnBsYXRmb3JtTmFtZSkge1xuICAgIC8vIEdlY2tvZHJpdmVyIG9ubHkgc3VwcG9ydHMgbG93ZXJjYXNlIHBsYXRmb3JtIG5hbWVzXG4gICAgcmVzdWx0LnBsYXRmb3JtTmFtZSA9IF8udG9Mb3dlcihyZXN1bHQucGxhdGZvcm1OYW1lKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgeyBmb3JtYXRDYXBzRm9yU2VydmVyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsa0JBQWtCLEdBQUcsQ0FBQyxNQUFELENBQTNCO0FBRUEsTUFBTUMsYUFBYSxHQUFHLENBQ3BCLGdCQURvQixFQUVwQixjQUZvQixFQUdwQixxQkFIb0IsRUFJcEIsa0JBSm9CLEVBS3BCLE9BTG9CLEVBTXBCLGVBTm9CLEVBT3BCLFVBUG9CLEVBUXBCLHlCQVJvQixDQUF0Qjs7QUFXQSxTQUFTQyxtQkFBVCxDQUE4QkMsSUFBOUIsRUFBb0M7RUFDbEMsTUFBTUMsTUFBTSxHQUFHLEVBQWY7O0VBQ0EsSUFBSUQsSUFBSSxDQUFDRSxXQUFULEVBQXNCO0lBQ3BCRCxNQUFNLENBQUNDLFdBQVAsR0FBcUIsU0FBckI7RUFDRDs7RUFDRCxLQUFLLE1BQU0sQ0FBQ0MsSUFBRCxFQUFPQyxLQUFQLENBQVgsSUFBNEJDLGdCQUFFQyxPQUFGLENBQVVOLElBQVYsQ0FBNUIsRUFBNkM7SUFDM0MsSUFBSUgsa0JBQWtCLENBQUNVLElBQW5CLENBQXlCQyxNQUFELElBQVlMLElBQUksQ0FBQ00sVUFBTCxDQUFnQkQsTUFBaEIsQ0FBcEMsS0FBZ0VWLGFBQWEsQ0FBQ1ksUUFBZCxDQUF1QlAsSUFBdkIsQ0FBcEUsRUFBa0c7TUFDaEdGLE1BQU0sQ0FBQ0UsSUFBRCxDQUFOLEdBQWVDLEtBQWY7SUFDRDtFQUNGOztFQUNELElBQUlILE1BQU0sQ0FBQ1UsWUFBWCxFQUF5QjtJQUV2QlYsTUFBTSxDQUFDVSxZQUFQLEdBQXNCTixnQkFBRU8sT0FBRixDQUFVWCxNQUFNLENBQUNVLFlBQWpCLENBQXRCO0VBQ0Q7O0VBQ0QsT0FBT1YsTUFBUDtBQUNEIn0=
|
|
@@ -56,4 +56,4 @@ describe('Desktop Gecko Driver', function () {
|
|
|
56
56
|
});require('source-map-support').install();
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC9mdW5jdGlvbmFsL2Rlc2t0b3AtZHJpdmVyLWUyZS1zcGVjcy5qcyIsIm5hbWVzIjpbImNoYWkiLCJzaG91bGQiLCJ1c2UiLCJjaGFpQXNQcm9taXNlZCIsIkNBUFMiLCJicm93c2VyTmFtZSIsInBsYXRmb3JtTmFtZSIsImRlc2NyaWJlIiwidGltZW91dCIsIk1PQ0hBX1RJTUVPVVQiLCJzZXJ2ZXIiLCJkcml2ZXIiLCJiZWZvcmUiLCJQT1JUIiwiSE9TVCIsImFmdGVyIiwiY2xvc2UiLCJiZWZvcmVFYWNoIiwiaG9zdG5hbWUiLCJwb3J0IiwiY2FwYWJpbGl0aWVzIiwiYWZ0ZXJFYWNoIiwiZGVsZXRlU2Vzc2lvbiIsIml0IiwidXJsIiwiYnV0dG9uIiwiJCIsImdldFRleHQiLCJldmVudHVhbGx5IiwiZXFsIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsidGVzdC9mdW5jdGlvbmFsL2Rlc2t0b3AtZHJpdmVyLWUyZS1zcGVjcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW1vdGUgfSBmcm9tICd3ZWJkcml2ZXJpbyc7XG5pbXBvcnQgeyBzdGFydFNlcnZlciB9IGZyb20gJy4uLy4uJztcbmltcG9ydCBjaGFpQXNQcm9taXNlZCBmcm9tICdjaGFpLWFzLXByb21pc2VkJztcbmltcG9ydCBjaGFpIGZyb20gJ2NoYWknO1xuaW1wb3J0IHsgSE9TVCwgUE9SVCwgTU9DSEFfVElNRU9VVCB9IGZyb20gJy4uL3V0aWxzJztcblxuY2hhaS5zaG91bGQoKTtcbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkKTtcblxuY29uc3QgQ0FQUyA9IHtcbiAgYnJvd3Nlck5hbWU6ICdNb3ppbGxhRmlyZWZveCcsXG4gIHBsYXRmb3JtTmFtZTogJ2xpbnV4Jyxcbn07XG5cbmRlc2NyaWJlKCdEZXNrdG9wIEdlY2tvIERyaXZlcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy50aW1lb3V0KE1PQ0hBX1RJTUVPVVQpO1xuXG4gIGxldCBzZXJ2ZXI7XG4gIGxldCBkcml2ZXI7XG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoUE9SVCwgSE9TVCk7XG4gIH0pO1xuICBhZnRlcihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNlcnZlcikge1xuICAgICAgYXdhaXQgc2VydmVyLmNsb3NlKCk7XG4gICAgICBzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgfSk7XG4gIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGRyaXZlciA9IGF3YWl0IHJlbW90ZSh7XG4gICAgICBob3N0bmFtZTogSE9TVCxcbiAgICAgIHBvcnQ6IFBPUlQsXG4gICAgICBjYXBhYmlsaXRpZXM6IENBUFMsXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChkcml2ZXIpIHtcbiAgICAgIGF3YWl0IGRyaXZlci5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBkcml2ZXIgPSBudWxsO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdGFydCBhbmQgc3RvcCBhIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZHJpdmVyLnVybCgnaHR0cHM6Ly9hcHBpdW0uaW8vJyk7XG4gICAgY29uc3QgYnV0dG9uID0gYXdhaXQgZHJpdmVyLiQoJyNkb3dubG9hZExpbmsnKTtcbiAgICBhd2FpdCBidXR0b24uZ2V0VGV4dCgpLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnRG93bmxvYWQgQXBwaXVtJyk7XG4gIH0pO1xufSk7XG5cblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQUEsY0FBS0MsTUFBTDs7QUFDQUQsY0FBS0UsR0FBTCxDQUFTQyx1QkFBVDs7QUFFQSxNQUFNQyxJQUFJLEdBQUc7RUFDWEMsV0FBVyxFQUFFLGdCQURGO0VBRVhDLFlBQVksRUFBRTtBQUZILENBQWI7QUFLQUMsUUFBUSxDQUFDLHNCQUFELEVBQXlCLFlBQVk7RUFDM0MsS0FBS0MsT0FBTCxDQUFhQyxvQkFBYjtFQUVBLElBQUlDLE1BQUo7RUFDQSxJQUFJQyxNQUFKO0VBQ0FDLE1BQU0sQ0FBQyxrQkFBa0I7SUFDdkJGLE1BQU0sR0FBRyxNQUFNLG1CQUFZRyxXQUFaLEVBQWtCQyxXQUFsQixDQUFmO0VBQ0QsQ0FGSyxDQUFOO0VBR0FDLEtBQUssQ0FBQyxrQkFBa0I7SUFDdEIsSUFBSUwsTUFBSixFQUFZO01BQ1YsTUFBTUEsTUFBTSxDQUFDTSxLQUFQLEVBQU47TUFDQU4sTUFBTSxHQUFHLElBQVQ7SUFDRDtFQUNGLENBTEksQ0FBTDtFQU1BTyxVQUFVLENBQUMsa0JBQWtCO0lBQzNCTixNQUFNLEdBQUcsTUFBTSx5QkFBTztNQUNwQk8sUUFBUSxFQUFFSixXQURVO01BRXBCSyxJQUFJLEVBQUVOLFdBRmM7TUFHcEJPLFlBQVksRUFBRWhCO0lBSE0sQ0FBUCxDQUFmO0VBS0QsQ0FOUyxDQUFWO0VBT0FpQixTQUFTLENBQUMsa0JBQWtCO0lBQzFCLElBQUlWLE1BQUosRUFBWTtNQUNWLE1BQU1BLE1BQU0sQ0FBQ1csYUFBUCxFQUFOO01BQ0FYLE1BQU0sR0FBRyxJQUFUO0lBQ0Q7RUFDRixDQUxRLENBQVQ7RUFPQVksRUFBRSxDQUFDLGlDQUFELEVBQW9DLGtCQUFrQjtJQUN0RCxNQUFNWixNQUFNLENBQUNhLEdBQVAsQ0FBVyxvQkFBWCxDQUFOO0lBQ0EsTUFBTUMsTUFBTSxHQUFHLE1BQU1kLE1BQU0sQ0FBQ2UsQ0FBUCxDQUFTLGVBQVQsQ0FBckI7SUFDQSxNQUFNRCxNQUFNLENBQUNFLE9BQVAsR0FBaUIxQixNQUFqQixDQUF3QjJCLFVBQXhCLENBQW1DQyxHQUFuQyxDQUF1QyxpQkFBdkMsQ0FBTjtFQUNELENBSkMsQ0FBRjtBQUtELENBakNPLENBQVIifQ==
|
|
@@ -66,4 +66,4 @@ describe('Mobile GeckoDriver', function () {
|
|
|
66
66
|
});require('source-map-support').install();
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC9mdW5jdGlvbmFsL21vYmlsZS1kcml2ZXItZTJlLXNwZWNzLmpzIiwibmFtZXMiOlsiY2hhaSIsInNob3VsZCIsInVzZSIsImNoYWlBc1Byb21pc2VkIiwiREVWSUNFX05BTUUiLCJwcm9jZXNzIiwiZW52IiwiQ0FQUyIsInBsYXRmb3JtTmFtZSIsInZlcmJvc2l0eSIsImFuZHJvaWREZXZpY2VTZXJpYWwiLCJhbmRyb2lkUGFja2FnZSIsImFuZHJvaWRTdG9yYWdlIiwiZGVzY3JpYmUiLCJ0aW1lb3V0IiwiTU9DSEFfVElNRU9VVCIsInNlcnZlciIsImRyaXZlciIsImJlZm9yZSIsIkNJIiwic2tpcCIsIlBPUlQiLCJIT1NUIiwiYWZ0ZXIiLCJjbG9zZSIsImJlZm9yZUVhY2giLCJob3N0bmFtZSIsInBvcnQiLCJjYXBhYmlsaXRpZXMiLCJhZnRlckVhY2giLCJkZWxldGVTZXNzaW9uIiwiaXQiLCJ1cmwiLCJidXR0b24iLCIkIiwiZ2V0VGV4dCIsImV2ZW50dWFsbHkiLCJlcWwiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJ0ZXN0L2Z1bmN0aW9uYWwvbW9iaWxlLWRyaXZlci1lMmUtc3BlY3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVtb3RlIH0gZnJvbSAnd2ViZHJpdmVyaW8nO1xuaW1wb3J0IHsgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCc7XG5pbXBvcnQgY2hhaSBmcm9tICdjaGFpJztcbmltcG9ydCB7IEhPU1QsIFBPUlQsIE1PQ0hBX1RJTUVPVVQgfSBmcm9tICcuLi91dGlscyc7XG5cbmNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cbmNvbnN0IERFVklDRV9OQU1FID0gcHJvY2Vzcy5lbnYuREVWSUNFX05BTUUgfHwgJ2VtdWxhdG9yLTU1NTQnO1xuLy8gVGhlIEZpcmVmb3ggYmluYXJ5IGNvdWxkIGJlIHJldHJpZXZlZCBmcm9tIGh0dHBzOi8vd3d3Lm1vemlsbGEub3JnL2VuLUdCL2ZpcmVmb3gvYWxsLyNwcm9kdWN0LWFuZHJvaWQtcmVsZWFzZVxuY29uc3QgQ0FQUyA9IHtcbiAgcGxhdGZvcm1OYW1lOiAnbGludXgnLFxuICAvLyBwbGF0Zm9ybU5hbWU6ICdtYWMnLFxuICB2ZXJib3NpdHk6ICd0cmFjZScsXG4gICdtb3o6ZmlyZWZveE9wdGlvbnMnOiB7XG4gICAgYW5kcm9pZERldmljZVNlcmlhbDogREVWSUNFX05BTUUsXG4gICAgYW5kcm9pZFBhY2thZ2U6ICdvcmcubW96aWxsYS5maXJlZm94JyxcbiAgfSxcbiAgYW5kcm9pZFN0b3JhZ2U6ICdpbnRlcm5hbCcsXG59O1xuXG5kZXNjcmliZSgnTW9iaWxlIEdlY2tvRHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnRpbWVvdXQoTU9DSEFfVElNRU9VVCk7XG5cbiAgbGV0IHNlcnZlcjtcbiAgbGV0IGRyaXZlcjtcbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuQ0kpIHtcbiAgICAgIC8vIEZpZ3VyZSBvdXQgYSB3YXkgdG8gcnVuIHRoaXMgb24gQXp1cmVcbiAgICAgIHJldHVybiB0aGlzLnNraXAoKTtcbiAgICB9XG4gICAgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoUE9SVCwgSE9TVCk7XG4gIH0pO1xuICBhZnRlcihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNlcnZlcikge1xuICAgICAgYXdhaXQgc2VydmVyLmNsb3NlKCk7XG4gICAgICBzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgfSk7XG4gIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGRyaXZlciA9IGF3YWl0IHJlbW90ZSh7XG4gICAgICBob3N0bmFtZTogSE9TVCxcbiAgICAgIHBvcnQ6IFBPUlQsXG4gICAgICBjYXBhYmlsaXRpZXM6IENBUFMsXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChkcml2ZXIpIHtcbiAgICAgIGF3YWl0IGRyaXZlci5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBkcml2ZXIgPSBudWxsO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdGFydCBhbmQgc3RvcCBhIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZHJpdmVyLnVybCgnaHR0cHM6Ly9hcHBpdW0uaW8vJyk7XG4gICAgY29uc3QgYnV0dG9uID0gYXdhaXQgZHJpdmVyLiQoJyNkb3dubG9hZExpbmsnKTtcbiAgICBhd2FpdCBidXR0b24uZ2V0VGV4dCgpLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnRG93bmxvYWQgQXBwaXVtJyk7XG4gIH0pO1xufSk7XG5cblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQUEsY0FBS0MsTUFBTDs7QUFDQUQsY0FBS0UsR0FBTCxDQUFTQyx1QkFBVDs7QUFFQSxNQUFNQyxXQUFXLEdBQUdDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZRixXQUFaLElBQTJCLGVBQS9DO0FBRUEsTUFBTUcsSUFBSSxHQUFHO0VBQ1hDLFlBQVksRUFBRSxPQURIO0VBR1hDLFNBQVMsRUFBRSxPQUhBO0VBSVgsc0JBQXNCO0lBQ3BCQyxtQkFBbUIsRUFBRU4sV0FERDtJQUVwQk8sY0FBYyxFQUFFO0VBRkksQ0FKWDtFQVFYQyxjQUFjLEVBQUU7QUFSTCxDQUFiO0FBV0FDLFFBQVEsQ0FBQyxvQkFBRCxFQUF1QixZQUFZO0VBQ3pDLEtBQUtDLE9BQUwsQ0FBYUMsb0JBQWI7RUFFQSxJQUFJQyxNQUFKO0VBQ0EsSUFBSUMsTUFBSjtFQUNBQyxNQUFNLENBQUMsa0JBQWtCO0lBQ3ZCLElBQUliLE9BQU8sQ0FBQ0MsR0FBUixDQUFZYSxFQUFoQixFQUFvQjtNQUVsQixPQUFPLEtBQUtDLElBQUwsRUFBUDtJQUNEOztJQUNESixNQUFNLEdBQUcsTUFBTSxtQkFBWUssV0FBWixFQUFrQkMsV0FBbEIsQ0FBZjtFQUNELENBTkssQ0FBTjtFQU9BQyxLQUFLLENBQUMsa0JBQWtCO0lBQ3RCLElBQUlQLE1BQUosRUFBWTtNQUNWLE1BQU1BLE1BQU0sQ0FBQ1EsS0FBUCxFQUFOO01BQ0FSLE1BQU0sR0FBRyxJQUFUO0lBQ0Q7RUFDRixDQUxJLENBQUw7RUFNQVMsVUFBVSxDQUFDLGtCQUFrQjtJQUMzQlIsTUFBTSxHQUFHLE1BQU0seUJBQU87TUFDcEJTLFFBQVEsRUFBRUosV0FEVTtNQUVwQkssSUFBSSxFQUFFTixXQUZjO01BR3BCTyxZQUFZLEVBQUVyQjtJQUhNLENBQVAsQ0FBZjtFQUtELENBTlMsQ0FBVjtFQU9Bc0IsU0FBUyxDQUFDLGtCQUFrQjtJQUMxQixJQUFJWixNQUFKLEVBQVk7TUFDVixNQUFNQSxNQUFNLENBQUNhLGFBQVAsRUFBTjtNQUNBYixNQUFNLEdBQUcsSUFBVDtJQUNEO0VBQ0YsQ0FMUSxDQUFUO0VBT0FjLEVBQUUsQ0FBQyxpQ0FBRCxFQUFvQyxrQkFBa0I7SUFDdEQsTUFBTWQsTUFBTSxDQUFDZSxHQUFQLENBQVcsb0JBQVgsQ0FBTjtJQUNBLE1BQU1DLE1BQU0sR0FBRyxNQUFNaEIsTUFBTSxDQUFDaUIsQ0FBUCxDQUFTLGVBQVQsQ0FBckI7SUFDQSxNQUFNRCxNQUFNLENBQUNFLE9BQVAsR0FBaUJsQyxNQUFqQixDQUF3Qm1DLFVBQXhCLENBQW1DQyxHQUFuQyxDQUF1QyxpQkFBdkMsQ0FBTjtFQUNELENBSkMsQ0FBRjtBQUtELENBckNPLENBQVIifQ==
|
|
@@ -17,4 +17,4 @@ describe('GeckoDriver', function () {
|
|
|
17
17
|
});require('source-map-support').install();
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC91bml0L2RyaXZlci1zcGVjcy5qcyIsIm5hbWVzIjpbInNob3VsZCIsImNoYWkiLCJkZXNjcmliZSIsIml0IiwiZXhpc3QiLCJHZWNrb0RyaXZlciJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbInRlc3QvdW5pdC9kcml2ZXItc3BlY3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdlY2tvRHJpdmVyIGZyb20gJy4uLy4uJztcbmltcG9ydCBjaGFpIGZyb20gJ2NoYWknO1xuY29uc3Qgc2hvdWxkID0gY2hhaS5zaG91bGQoKTtcblxuZGVzY3JpYmUoJ0dlY2tvRHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGV4aXN0JywgZnVuY3Rpb24gKCkge1xuICAgIHNob3VsZC5leGlzdChHZWNrb0RyaXZlcik7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBLE1BQU1BLE1BQU0sR0FBR0MsY0FBS0QsTUFBTCxFQUFmOztBQUVBRSxRQUFRLENBQUMsYUFBRCxFQUFnQixZQUFZO0VBQ2xDQyxFQUFFLENBQUMsY0FBRCxFQUFpQixZQUFZO0lBQzdCSCxNQUFNLENBQUNJLEtBQVAsQ0FBYUMsU0FBYjtFQUNELENBRkMsQ0FBRjtBQUdELENBSk8sQ0FBUiJ9
|
|
@@ -43,4 +43,4 @@ describe('formatCapsForServer', function () {
|
|
|
43
43
|
});require('source-map-support').install();
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC91bml0L3V0aWxzLXNwZWNzLmpzIiwibmFtZXMiOlsiY2hhaSIsInNob3VsZCIsImRlc2NyaWJlIiwiaXQiLCJyZXN1bHQiLCJlcWwiLCJicm93c2VyTmFtZSIsImJyb3dzZXJWZXJzaW9uIiwicGxhdGZvcm1OYW1lIiwiYmFyIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsidGVzdC91bml0L3V0aWxzLXNwZWNzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdENhcHNGb3JTZXJ2ZXIgfSBmcm9tICcuLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5cbmNoYWkuc2hvdWxkKCk7XG5cbmRlc2NyaWJlKCdmb3JtYXRDYXBzRm9yU2VydmVyJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGZvcm1hdCBlbXB0eSBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdENhcHNGb3JTZXJ2ZXIoe30pO1xuICAgIHJlc3VsdC5zaG91bGQuZXFsKHt9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhc3NpZ24gZGVmYXVsdCBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdENhcHNGb3JTZXJ2ZXIoe1xuICAgICAgYnJvd3Nlck5hbWU6ICd5b2xvJyxcbiAgICAgIGJyb3dzZXJWZXJzaW9uOiAnNTInLFxuICAgICAgcGxhdGZvcm1OYW1lOiAnTWFjJyxcbiAgICB9KTtcbiAgICByZXN1bHQuc2hvdWxkLmVxbCh7XG4gICAgICBicm93c2VyTmFtZTogJ2ZpcmVmb3gnLFxuICAgICAgYnJvd3NlclZlcnNpb246ICc1MicsXG4gICAgICBwbGF0Zm9ybU5hbWU6ICdtYWMnLFxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG9ubHkgcGFzcyBjYXBzIHdpdGggc3VwcG9ydGVkIHByZWZpeGVzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdENhcHNGb3JTZXJ2ZXIoe1xuICAgICAgYnJvd3NlclZlcnNpb246ICc1MicsXG4gICAgICBiYXI6ICc2NycsXG4gICAgICAnbW96OmZvbyc6ICcxMjM0JyxcbiAgICAgICd3ZWJraXQ6eW9sbyc6ICc1NjcnLFxuICAgICAgJ2FwcGl1bTpiYXInOiAnNzg5JyxcbiAgICB9KTtcbiAgICByZXN1bHQuc2hvdWxkLmVxbCh7XG4gICAgICBicm93c2VyVmVyc2lvbjogJzUyJyxcbiAgICAgICdtb3o6Zm9vJzogJzEyMzQnLFxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQUEsY0FBS0MsTUFBTDs7QUFFQUMsUUFBUSxDQUFDLHFCQUFELEVBQXdCLFlBQVk7RUFDMUNDLEVBQUUsQ0FBQywwQkFBRCxFQUE2QixZQUFZO0lBQ3pDLE1BQU1DLE1BQU0sR0FBRyxnQ0FBb0IsRUFBcEIsQ0FBZjtJQUNBQSxNQUFNLENBQUNILE1BQVAsQ0FBY0ksR0FBZCxDQUFrQixFQUFsQjtFQUNELENBSEMsQ0FBRjtFQUtBRixFQUFFLENBQUMsNEJBQUQsRUFBK0IsWUFBWTtJQUMzQyxNQUFNQyxNQUFNLEdBQUcsZ0NBQW9CO01BQ2pDRSxXQUFXLEVBQUUsTUFEb0I7TUFFakNDLGNBQWMsRUFBRSxJQUZpQjtNQUdqQ0MsWUFBWSxFQUFFO0lBSG1CLENBQXBCLENBQWY7SUFLQUosTUFBTSxDQUFDSCxNQUFQLENBQWNJLEdBQWQsQ0FBa0I7TUFDaEJDLFdBQVcsRUFBRSxTQURHO01BRWhCQyxjQUFjLEVBQUUsSUFGQTtNQUdoQkMsWUFBWSxFQUFFO0lBSEUsQ0FBbEI7RUFLRCxDQVhDLENBQUY7RUFhQUwsRUFBRSxDQUFDLCtDQUFELEVBQWtELFlBQVk7SUFDOUQsTUFBTUMsTUFBTSxHQUFHLGdDQUFvQjtNQUNqQ0csY0FBYyxFQUFFLElBRGlCO01BRWpDRSxHQUFHLEVBQUUsSUFGNEI7TUFHakMsV0FBVyxNQUhzQjtNQUlqQyxlQUFlLEtBSmtCO01BS2pDLGNBQWM7SUFMbUIsQ0FBcEIsQ0FBZjtJQU9BTCxNQUFNLENBQUNILE1BQVAsQ0FBY0ksR0FBZCxDQUFrQjtNQUNoQkUsY0FBYyxFQUFFLElBREE7TUFFaEIsV0FBVztJQUZLLENBQWxCO0VBSUQsQ0FaQyxDQUFGO0FBYUQsQ0FoQ08sQ0FBUiJ9
|
package/build/test/utils.js
CHANGED
|
@@ -15,4 +15,4 @@ const MOCHA_TIMEOUT = 240000;
|
|
|
15
15
|
exports.MOCHA_TIMEOUT = MOCHA_TIMEOUT;require('source-map-support').install();
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC91dGlscy5qcyIsIm5hbWVzIjpbIkhPU1QiLCJQT1JUIiwiTU9DSEFfVElNRU9VVCJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbInRlc3QvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSE9TVCA9ICcxMjcuMC4wLjEnO1xuY29uc3QgUE9SVCA9IDQ1Njc7XG5jb25zdCBNT0NIQV9USU1FT1VUID0gMjQwMDAwO1xuXG5leHBvcnQgeyBIT1NULCBQT1JULCBNT0NIQV9USU1FT1VUIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE1BQU1BLElBQUksR0FBRyxXQUFiOztBQUNBLE1BQU1DLElBQUksR0FBRyxJQUFiOztBQUNBLE1BQU1DLGFBQWEsR0FBRyxNQUF0QiJ9
|
package/lib/driver.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import { BaseDriver } from '@appium/base-driver';
|
|
3
|
-
import log from './logger';
|
|
4
3
|
import GeckoDriverServer from './gecko';
|
|
5
4
|
import { desiredCapConstraints } from './desired-caps';
|
|
6
5
|
import commands from './commands/index';
|
|
@@ -54,7 +53,7 @@ class GeckoDriver extends BaseDriver {
|
|
|
54
53
|
|
|
55
54
|
async createSession (...args) {
|
|
56
55
|
const [sessionId, caps] = await super.createSession(...args);
|
|
57
|
-
this.gecko = new GeckoDriverServer(caps);
|
|
56
|
+
this.gecko = new GeckoDriverServer(this.log, caps);
|
|
58
57
|
try {
|
|
59
58
|
await this.gecko.start(formatCapsForServer(caps));
|
|
60
59
|
} catch (e) {
|
|
@@ -67,7 +66,7 @@ class GeckoDriver extends BaseDriver {
|
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
async deleteSession () {
|
|
70
|
-
log.info('Ending Gecko Driver session');
|
|
69
|
+
this.log.info('Ending Gecko Driver session');
|
|
71
70
|
await this.gecko.stop();
|
|
72
71
|
this.resetState();
|
|
73
72
|
|
package/lib/gecko.js
CHANGED
|
@@ -2,15 +2,13 @@ import _ from 'lodash';
|
|
|
2
2
|
import os from 'os';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import { JWProxy, errors } from '@appium/base-driver';
|
|
5
|
-
import { fs,
|
|
5
|
+
import { fs, util, system } from '@appium/support';
|
|
6
6
|
import { SubProcess } from 'teen_process';
|
|
7
7
|
import { waitForCondition } from 'asyncbox';
|
|
8
8
|
import { findAPortNotInUse } from 'portscanner';
|
|
9
9
|
import { execSync } from 'child_process';
|
|
10
10
|
import { VERBOSITY } from './constants';
|
|
11
11
|
|
|
12
|
-
const log = logger.getLogger('GeckoDriverServer');
|
|
13
|
-
|
|
14
12
|
const GD_BINARY = `geckodriver${system.isWindows() ? '.exe' : ''}`;
|
|
15
13
|
const STARTUP_TIMEOUT_MS = 10000; // 10 seconds
|
|
16
14
|
const GECKO_PORT_RANGE = [5200, 5300];
|
|
@@ -40,10 +38,11 @@ class GeckoProxy extends JWProxy {
|
|
|
40
38
|
}
|
|
41
39
|
|
|
42
40
|
class GeckoDriverProcess {
|
|
43
|
-
constructor (opts = {}) {
|
|
41
|
+
constructor (log, opts = {}) {
|
|
44
42
|
for (const [optName, propName] of _.toPairs(PROCESS_SPECIFIC_OPTION_NAMES_MAP)) {
|
|
45
43
|
this[propName] = opts[optName];
|
|
46
44
|
}
|
|
45
|
+
this.log = log;
|
|
47
46
|
this.proc = null;
|
|
48
47
|
}
|
|
49
48
|
|
|
@@ -91,8 +90,8 @@ class GeckoDriverProcess {
|
|
|
91
90
|
args.push('--connect-existing');
|
|
92
91
|
// https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-connect-existing-code
|
|
93
92
|
if (_.isNil(this.marionettePort)) {
|
|
94
|
-
log.info(`'marionettePort' capability value is not provided while 'noReset' is enabled`);
|
|
95
|
-
log.info(`Assigning 'marionettePort' to the default value (${DEFAULT_MARIONETTE_PORT})`);
|
|
93
|
+
this.log.info(`'marionettePort' capability value is not provided while 'noReset' is enabled`);
|
|
94
|
+
this.log.info(`Assigning 'marionettePort' to the default value (${DEFAULT_MARIONETTE_PORT})`);
|
|
96
95
|
}
|
|
97
96
|
args.push('--marionette-port', this.marionettePort ?? DEFAULT_MARIONETTE_PORT);
|
|
98
97
|
} else if (!_.isNil(this.marionettePort)) {
|
|
@@ -108,13 +107,13 @@ class GeckoDriverProcess {
|
|
|
108
107
|
this.proc.on('output', (stdout, stderr) => {
|
|
109
108
|
const line = _.trim(stdout || stderr);
|
|
110
109
|
if (line) {
|
|
111
|
-
log.debug(`[${GD_BINARY}] ${line}`);
|
|
110
|
+
this.log.debug(`[${GD_BINARY}] ${line}`);
|
|
112
111
|
}
|
|
113
112
|
});
|
|
114
113
|
this.proc.on('exit', (code, signal) => {
|
|
115
|
-
log.info(`${GD_BINARY} has exited with code ${code}, signal ${signal}`);
|
|
114
|
+
this.log.info(`${GD_BINARY} has exited with code ${code}, signal ${signal}`);
|
|
116
115
|
});
|
|
117
|
-
log.info(`Starting '${driverBin}' with args ${JSON.stringify(args)}`);
|
|
116
|
+
this.log.info(`Starting '${driverBin}' with args ${JSON.stringify(args)}`);
|
|
118
117
|
await this.proc.start(0);
|
|
119
118
|
}
|
|
120
119
|
|
|
@@ -135,17 +134,22 @@ class GeckoDriverProcess {
|
|
|
135
134
|
|
|
136
135
|
const RUNNING_PROCESS_IDS = [];
|
|
137
136
|
process.once('exit', () => {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
try {
|
|
141
|
-
execSync(command);
|
|
142
|
-
} catch (ign) {}
|
|
137
|
+
if (_.isEmpty(RUNNING_PROCESS_IDS)) {
|
|
138
|
+
return;
|
|
143
139
|
}
|
|
140
|
+
|
|
141
|
+
const command = system.isWindows()
|
|
142
|
+
? ('taskkill.exe ' + RUNNING_PROCESS_IDS.map((pid) => `/PID ${pid}`).join(' '))
|
|
143
|
+
: `kill ${RUNNING_PROCESS_IDS.join(' ')}`;
|
|
144
|
+
try {
|
|
145
|
+
execSync(command);
|
|
146
|
+
} catch (ign) {}
|
|
144
147
|
});
|
|
145
148
|
|
|
146
149
|
class GeckoDriverServer {
|
|
147
|
-
constructor (caps) {
|
|
148
|
-
this.process = new GeckoDriverProcess(caps);
|
|
150
|
+
constructor (log, caps) {
|
|
151
|
+
this.process = new GeckoDriverProcess(log, caps);
|
|
152
|
+
this.log = log;
|
|
149
153
|
this.proxy = null;
|
|
150
154
|
}
|
|
151
155
|
|
|
@@ -159,6 +163,7 @@ class GeckoDriverServer {
|
|
|
159
163
|
this.proxy = new GeckoProxy({
|
|
160
164
|
server: '127.0.0.1',
|
|
161
165
|
port: this.process.port,
|
|
166
|
+
log: this.log,
|
|
162
167
|
base: '',
|
|
163
168
|
keepAlive: true,
|
|
164
169
|
});
|
|
@@ -207,7 +212,7 @@ class GeckoDriverServer {
|
|
|
207
212
|
|
|
208
213
|
async stop () {
|
|
209
214
|
if (!this.isRunning) {
|
|
210
|
-
log.info(`Gecko Driver session cannot be stopped, because the server is not running`);
|
|
215
|
+
this.log.info(`Gecko Driver session cannot be stopped, because the server is not running`);
|
|
211
216
|
return;
|
|
212
217
|
}
|
|
213
218
|
|
|
@@ -215,14 +220,14 @@ class GeckoDriverServer {
|
|
|
215
220
|
try {
|
|
216
221
|
await this.proxy.command(`/session/${this.proxy.sessionId}`, 'DELETE');
|
|
217
222
|
} catch (e) {
|
|
218
|
-
log.info(`Gecko Driver session cannot be deleted. Original error: ${e.message}`);
|
|
223
|
+
this.log.info(`Gecko Driver session cannot be deleted. Original error: ${e.message}`);
|
|
219
224
|
}
|
|
220
225
|
}
|
|
221
226
|
|
|
222
227
|
try {
|
|
223
228
|
await this.process.stop();
|
|
224
229
|
} catch (e) {
|
|
225
|
-
log.warn(`Gecko Driver process cannot be stopped (${e.message}). Killing it forcefully`);
|
|
230
|
+
this.log.warn(`Gecko Driver process cannot be stopped (${e.message}). Killing it forcefully`);
|
|
226
231
|
await this.process.kill();
|
|
227
232
|
}
|
|
228
233
|
}
|