appium-geckodriver 0.3.0 → 1.0.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/.eslintrc CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "extends": "appium"
2
+ "extends": "@appium/eslint-config-appium"
3
3
  }
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- appium-geckodriver
1
+ Appium Geckodriver
2
2
  ====
3
3
 
4
4
  This is Appium driver for automating Firefox on different platforms, including Android.
@@ -14,22 +14,25 @@ Then you need to decide where the automated test is going to be executed. Gecko
14
14
  - macOS
15
15
  - Windows
16
16
  - Linux
17
- - Android
17
+ - Android (note that `android` *cannot* be passed as a value to `platformName` capability; it should always equal to the *host* platform name)
18
18
 
19
19
  In order to run your automated tests on Android it is necessary to have [Android SDK](https://developer.android.com/studio) installed, so the destination device is marked as `online` in the `adb devices -l` command output.
20
20
 
21
+ Since the version 1.0.0 this driver is only compatible with Appium 2. Use the `appium driver install gecko` CLI command to add it to your server dist.
22
+
21
23
  Gecko driver allows to define multiple criterions for platform selection and also to fine-tune your automation session properties. This could be done via the following session capabilities:
22
24
 
23
25
  Capability Name | Description
24
26
  --- | ---
25
- platformName | Gecko Driver supports the following platforms: `mac`, `linux`, `windows`, `android`. Values of platformName are compared case-sensitively.
27
+ platformName | Gecko Driver supports the following platforms: `mac`, `linux`, `windows`. The fact your test must be executed on Android is detected based on `moz:firefoxOptions` entry values. Values of platformName are compared case-insensitively.
26
28
  browserName | Any value passed to this capability will be changed to 'firefox'.
27
29
  browserVersion | Provide the version number of the browser to automate if there are multiple versions installed on the same machine where the driver is running.
28
- automationName | Must always be set to `Gecko`.
29
- noReset | Being set to `true` adds the `--connect-existing` argument to the server, that allows to connect to an existing browser instance instead of starting a new browser instance on session startup.
30
- systemPort | The number of the port for the driver to listen on. Must be unique for each session. If not provided then Appium will try to detect it automatically.
31
- verbosity | The verbosity level of driver logging. By default minimum verbosity is applied. Possible values are `debug` or `trace`.
32
- androidStorage | See https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-android-storage-var-android-storage-var-code
30
+ appium:automationName | Must always be set to `Gecko`.
31
+ appium:noReset | Being set to `true` adds the `--connect-existing` argument to the server, that allows to connect to an existing browser instance instead of starting a new browser instance on session startup.
32
+ appium:marionettePort | Selects the port for Geckodriver’s connection to the Marionette remote protocol. The existing Firefox instance must have Marionette enabled. To enable the remote protocol in Firefox, you can pass the `-marionette` flag. Unless the `marionette.port` preference has been user-set, Marionette will listen on port `2828`, which is the default value for this capability.
33
+ appium:systemPort | The number of the port for the driver to listen on. Must be unique for each session. If not provided then Appium will try to detect it automatically.
34
+ appium:verbosity | The verbosity level of driver logging. By default minimum verbosity is applied. Possible values are `debug` or `trace`.
35
+ appium:androidStorage | See https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-android-storage-var-android-storage-var-code
33
36
  moz:firefoxOptions | See https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions
34
37
  acceptInsecureCerts | See https://www.w3.org/TR/webdriver/#capabilities
35
38
  pageLoadStrategy | See https://www.w3.org/TR/webdriver/#capabilities
@@ -57,10 +60,11 @@ def generate_caps():
57
60
  'browserName': 'MozillaFirefox',
58
61
  # automationName capability presence is mandatory for this Gecko Driver to be selected
59
62
  'automationName': 'Gecko',
63
+ # Should have the name of the host platform, where the geckodriver binary is deployed
64
+ 'platformName': 'mac',
60
65
  }
61
66
  android_caps = {
62
67
  **common_caps,
63
- 'platformName': 'Android',
64
68
  'moz:firefoxOptions': {
65
69
  'androidDeviceSerial': '<device/emulator serial>',
66
70
  # These capabilities depend on what you are going to automate
@@ -70,7 +74,6 @@ def generate_caps():
70
74
  }
71
75
  desktop_browser_caps = {
72
76
  **common_caps,
73
- 'platformName': 'Mac',
74
77
  }
75
78
  return [android_caps, desktop_browser_caps]
76
79
 
package/build/index.js CHANGED
@@ -11,13 +11,13 @@ Object.defineProperty(exports, "GeckoDriver", {
11
11
  return _driver.default;
12
12
  }
13
13
  });
14
+ exports.default = void 0;
14
15
  Object.defineProperty(exports, "startServer", {
15
16
  enumerable: true,
16
17
  get: function () {
17
18
  return _server.startServer;
18
19
  }
19
20
  });
20
- exports.default = void 0;
21
21
 
22
22
  require("source-map-support/register");
23
23
 
@@ -25,16 +25,19 @@ var _driver = _interopRequireDefault(require("./lib/driver"));
25
25
 
26
26
  var _server = require("./lib/server");
27
27
 
28
- var _yargs = _interopRequireDefault(require("yargs"));
29
-
30
28
  var _asyncbox = require("asyncbox");
31
29
 
32
30
  const DEFAULT_HOST = 'localhost';
33
31
  const DEFAULT_PORT = 4797;
34
32
 
35
33
  async function main() {
36
- let port = _yargs.default.argv.port || _yargs.default.argv.p || DEFAULT_PORT;
37
- let host = _yargs.default.argv.host || _yargs.default.argv.h || DEFAULT_HOST;
34
+ const getArgValue = argName => {
35
+ const argIndex = process.argv.indexOf(argName);
36
+ return argIndex > 0 ? process.argv[argIndex + 1] : null;
37
+ };
38
+
39
+ const port = parseInt(getArgValue('--port'), 10) || DEFAULT_PORT;
40
+ const host = getArgValue('--host') || DEFAULT_HOST;
38
41
  return await (0, _server.startServer)(port, host);
39
42
  }
40
43
 
@@ -46,4 +49,4 @@ var _default = _driver.default;
46
49
  exports.default = _default;require('source-map-support').install();
47
50
 
48
51
 
49
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfSE9TVCIsIkRFRkFVTFRfUE9SVCIsIm1haW4iLCJwb3J0IiwieWFyZ3MiLCJhcmd2IiwicCIsImhvc3QiLCJoIiwicmVxdWlyZSIsIm1vZHVsZSIsIkdlY2tvRHJpdmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFlBQVksR0FBRyxXQUFyQjtBQUNBLE1BQU1DLFlBQVksR0FBRyxJQUFyQjs7QUFFQSxlQUFlQyxJQUFmLEdBQXVCO0FBQ3JCLE1BQUlDLElBQUksR0FBR0MsZUFBTUMsSUFBTixDQUFXRixJQUFYLElBQW1CQyxlQUFNQyxJQUFOLENBQVdDLENBQTlCLElBQW1DTCxZQUE5QztBQUNBLE1BQUlNLElBQUksR0FBR0gsZUFBTUMsSUFBTixDQUFXRSxJQUFYLElBQW1CSCxlQUFNQyxJQUFOLENBQVdHLENBQTlCLElBQW1DUixZQUE5QztBQUNBLFNBQU8sTUFBTSx5QkFBWUcsSUFBWixFQUFrQkksSUFBbEIsQ0FBYjtBQUNEOztBQUVELElBQUlFLE9BQU8sQ0FBQ1AsSUFBUixLQUFpQlEsTUFBckIsRUFBNkI7QUFDM0IsMEJBQVNSLElBQVQ7QUFDRDs7ZUFFY1MsZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHZWNrb0RyaXZlciBmcm9tICcuL2xpYi9kcml2ZXInO1xuaW1wb3J0IHsgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuL2xpYi9zZXJ2ZXInO1xuaW1wb3J0IHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IGFzeW5jaWZ5IH0gZnJvbSAnYXN5bmNib3gnO1xuXG5jb25zdCBERUZBVUxUX0hPU1QgPSAnbG9jYWxob3N0JztcbmNvbnN0IERFRkFVTFRfUE9SVCA9IDQ3OTc7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4gKCkge1xuICBsZXQgcG9ydCA9IHlhcmdzLmFyZ3YucG9ydCB8fCB5YXJncy5hcmd2LnAgfHwgREVGQVVMVF9QT1JUO1xuICBsZXQgaG9zdCA9IHlhcmdzLmFyZ3YuaG9zdCB8fCB5YXJncy5hcmd2LmggfHwgREVGQVVMVF9IT1NUO1xuICByZXR1cm4gYXdhaXQgc3RhcnRTZXJ2ZXIocG9ydCwgaG9zdCk7XG59XG5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBhc3luY2lmeShtYWluKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgR2Vja29Ecml2ZXI7XG5leHBvcnQgeyBHZWNrb0RyaXZlciwgc3RhcnRTZXJ2ZXIgfTtcbiJdLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4ifQ==
52
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfSE9TVCIsIkRFRkFVTFRfUE9SVCIsIm1haW4iLCJnZXRBcmdWYWx1ZSIsImFyZ05hbWUiLCJhcmdJbmRleCIsInByb2Nlc3MiLCJhcmd2IiwiaW5kZXhPZiIsInBvcnQiLCJwYXJzZUludCIsImhvc3QiLCJyZXF1aXJlIiwibW9kdWxlIiwiR2Vja29Ecml2ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsWUFBWSxHQUFHLFdBQXJCO0FBQ0EsTUFBTUMsWUFBWSxHQUFHLElBQXJCOztBQUVBLGVBQWVDLElBQWYsR0FBdUI7QUFDckIsUUFBTUMsV0FBVyxHQUFJQyxPQUFELElBQWE7QUFDL0IsVUFBTUMsUUFBUSxHQUFHQyxPQUFPLENBQUNDLElBQVIsQ0FBYUMsT0FBYixDQUFxQkosT0FBckIsQ0FBakI7QUFDQSxXQUFPQyxRQUFRLEdBQUcsQ0FBWCxHQUFlQyxPQUFPLENBQUNDLElBQVIsQ0FBYUYsUUFBUSxHQUFHLENBQXhCLENBQWYsR0FBNEMsSUFBbkQ7QUFDRCxHQUhEOztBQUlBLFFBQU1JLElBQUksR0FBR0MsUUFBUSxDQUFDUCxXQUFXLENBQUMsUUFBRCxDQUFaLEVBQXdCLEVBQXhCLENBQVIsSUFBdUNGLFlBQXBEO0FBQ0EsUUFBTVUsSUFBSSxHQUFHUixXQUFXLENBQUMsUUFBRCxDQUFYLElBQXlCSCxZQUF0QztBQUNBLFNBQU8sTUFBTSx5QkFBWVMsSUFBWixFQUFrQkUsSUFBbEIsQ0FBYjtBQUNEOztBQUVELElBQUlDLE9BQU8sQ0FBQ1YsSUFBUixLQUFpQlcsTUFBckIsRUFBNkI7QUFDM0IsMEJBQVNYLElBQVQ7QUFDRDs7ZUFFY1ksZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHZWNrb0RyaXZlciBmcm9tICcuL2xpYi9kcml2ZXInO1xuaW1wb3J0IHsgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuL2xpYi9zZXJ2ZXInO1xuaW1wb3J0IHsgYXN5bmNpZnkgfSBmcm9tICdhc3luY2JveCc7XG5cbmNvbnN0IERFRkFVTFRfSE9TVCA9ICdsb2NhbGhvc3QnO1xuY29uc3QgREVGQVVMVF9QT1JUID0gNDc5NztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbiAoKSB7XG4gIGNvbnN0IGdldEFyZ1ZhbHVlID0gKGFyZ05hbWUpID0+IHtcbiAgICBjb25zdCBhcmdJbmRleCA9IHByb2Nlc3MuYXJndi5pbmRleE9mKGFyZ05hbWUpO1xuICAgIHJldHVybiBhcmdJbmRleCA+IDAgPyBwcm9jZXNzLmFyZ3ZbYXJnSW5kZXggKyAxXSA6IG51bGw7XG4gIH07XG4gIGNvbnN0IHBvcnQgPSBwYXJzZUludChnZXRBcmdWYWx1ZSgnLS1wb3J0JyksIDEwKSB8fCBERUZBVUxUX1BPUlQ7XG4gIGNvbnN0IGhvc3QgPSBnZXRBcmdWYWx1ZSgnLS1ob3N0JykgfHwgREVGQVVMVF9IT1NUO1xuICByZXR1cm4gYXdhaXQgc3RhcnRTZXJ2ZXIocG9ydCwgaG9zdCk7XG59XG5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBhc3luY2lmeShtYWluKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgR2Vja29Ecml2ZXI7XG5leHBvcnQgeyBHZWNrb0RyaXZlciwgc3RhcnRTZXJ2ZXIgfTtcbiJdLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4ifQ==
@@ -7,13 +7,13 @@ exports.default = exports.commands = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _appiumSupport = require("appium-support");
10
+ var _support = require("@appium/support");
11
11
 
12
12
  const commands = {};
13
13
  exports.commands = commands;
14
14
 
15
15
  commands.findElOrEls = async function findElOrEls(strategy, selector, mult, context) {
16
- context = _appiumSupport.util.unwrapElement(context);
16
+ context = _support.util.unwrapElement(context);
17
17
  const endpoint = `/element${context ? `/${context}/element` : ''}${mult ? 's' : ''}`;
18
18
  return await this.gecko.proxy.command(endpoint, 'POST', {
19
19
  using: strategy,
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9maW5kLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiZmluZEVsT3JFbHMiLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibXVsdCIsImNvbnRleHQiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsImVuZHBvaW50IiwiZ2Vja28iLCJwcm94eSIsImNvbW1hbmQiLCJ1c2luZyIsInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7OztBQUdBQSxRQUFRLENBQUNDLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixDQUE0QkMsUUFBNUIsRUFBc0NDLFFBQXRDLEVBQWdEQyxJQUFoRCxFQUFzREMsT0FBdEQsRUFBK0Q7QUFDcEZBLEVBQUFBLE9BQU8sR0FBR0Msb0JBQUtDLGFBQUwsQ0FBbUJGLE9BQW5CLENBQVY7QUFDQSxRQUFNRyxRQUFRLEdBQUksV0FBVUgsT0FBTyxHQUFJLElBQUdBLE9BQVEsVUFBZixHQUEyQixFQUFHLEdBQUVELElBQUksR0FBRyxHQUFILEdBQVMsRUFBRyxFQUFuRjtBQUVBLFNBQU8sTUFBTSxLQUFLSyxLQUFMLENBQVdDLEtBQVgsQ0FBaUJDLE9BQWpCLENBQXlCSCxRQUF6QixFQUFtQyxNQUFuQyxFQUEyQztBQUN0REksSUFBQUEsS0FBSyxFQUFFVixRQUQrQztBQUV0RFcsSUFBQUEsS0FBSyxFQUFFVjtBQUYrQyxHQUEzQyxDQUFiO0FBSUQsQ0FSRDs7ZUFZZUgsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLy8gVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSBsb29rdXAgYnkgaW1hZ2Ugd29ya2luZ1xuY29tbWFuZHMuZmluZEVsT3JFbHMgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxPckVscyAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBtdWx0LCBjb250ZXh0KSB7XG4gIGNvbnRleHQgPSB1dGlsLnVud3JhcEVsZW1lbnQoY29udGV4dCk7XG4gIGNvbnN0IGVuZHBvaW50ID0gYC9lbGVtZW50JHtjb250ZXh0ID8gYC8ke2NvbnRleHR9L2VsZW1lbnRgIDogJyd9JHttdWx0ID8gJ3MnIDogJyd9YDtcblxuICByZXR1cm4gYXdhaXQgdGhpcy5nZWNrby5wcm94eS5jb21tYW5kKGVuZHBvaW50LCAnUE9TVCcsIHtcbiAgICB1c2luZzogc3RyYXRlZ3ksXG4gICAgdmFsdWU6IHNlbGVjdG9yLFxuICB9KTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvZmluZC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
28
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9maW5kLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiZmluZEVsT3JFbHMiLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibXVsdCIsImNvbnRleHQiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsImVuZHBvaW50IiwiZ2Vja28iLCJwcm94eSIsImNvbW1hbmQiLCJ1c2luZyIsInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7OztBQUdBQSxRQUFRLENBQUNDLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixDQUE0QkMsUUFBNUIsRUFBc0NDLFFBQXRDLEVBQWdEQyxJQUFoRCxFQUFzREMsT0FBdEQsRUFBK0Q7QUFDcEZBLEVBQUFBLE9BQU8sR0FBR0MsY0FBS0MsYUFBTCxDQUFtQkYsT0FBbkIsQ0FBVjtBQUNBLFFBQU1HLFFBQVEsR0FBSSxXQUFVSCxPQUFPLEdBQUksSUFBR0EsT0FBUSxVQUFmLEdBQTJCLEVBQUcsR0FBRUQsSUFBSSxHQUFHLEdBQUgsR0FBUyxFQUFHLEVBQW5GO0FBRUEsU0FBTyxNQUFNLEtBQUtLLEtBQUwsQ0FBV0MsS0FBWCxDQUFpQkMsT0FBakIsQ0FBeUJILFFBQXpCLEVBQW1DLE1BQW5DLEVBQTJDO0FBQ3RESSxJQUFBQSxLQUFLLEVBQUVWLFFBRCtDO0FBRXREVyxJQUFBQSxLQUFLLEVBQUVWO0FBRitDLEdBQTNDLENBQWI7QUFJRCxDQVJEOztlQVllSCxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLy8gVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSBsb29rdXAgYnkgaW1hZ2Ugd29ya2luZ1xuY29tbWFuZHMuZmluZEVsT3JFbHMgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxPckVscyAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBtdWx0LCBjb250ZXh0KSB7XG4gIGNvbnRleHQgPSB1dGlsLnVud3JhcEVsZW1lbnQoY29udGV4dCk7XG4gIGNvbnN0IGVuZHBvaW50ID0gYC9lbGVtZW50JHtjb250ZXh0ID8gYC8ke2NvbnRleHR9L2VsZW1lbnRgIDogJyd9JHttdWx0ID8gJ3MnIDogJyd9YDtcblxuICByZXR1cm4gYXdhaXQgdGhpcy5nZWNrby5wcm94eS5jb21tYW5kKGVuZHBvaW50LCAnUE9TVCcsIHtcbiAgICB1c2luZzogc3RyYXRlZ3ksXG4gICAgdmFsdWU6IHNlbGVjdG9yLFxuICB9KTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvZmluZC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -37,6 +37,9 @@ const desiredCapConstraints = {
37
37
  systemPort: {
38
38
  isNumber: true
39
39
  },
40
+ marionettePort: {
41
+ isNumber: true
42
+ },
40
43
  verbosity: {
41
44
  isString: true,
42
45
  inclusionCaseInsensitive: Object.values(_constants.VERBOSITY)
@@ -52,4 +55,4 @@ const desiredCapConstraints = {
52
55
  exports.desiredCapConstraints = desiredCapConstraints;require('source-map-support').install();
53
56
 
54
57
 
55
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNpcmVkLWNhcHMuanMiXSwibmFtZXMiOlsiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiYnJvd3Nlck5hbWUiLCJpc1N0cmluZyIsImJyb3dzZXJWZXJzaW9uIiwiYWNjZXB0SW5zZWN1cmVDZXJ0cyIsImlzQm9vbGVhbiIsInBhZ2VMb2FkU3RyYXRlZ3kiLCJwcm94eSIsImlzT2JqZWN0Iiwic2V0V2luZG93UmVjdCIsInRpbWVvdXRzIiwidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiLCJzeXN0ZW1Qb3J0IiwiaXNOdW1iZXIiLCJ2ZXJib3NpdHkiLCJpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmUiLCJPYmplY3QiLCJ2YWx1ZXMiLCJWRVJCT1NJVFkiLCJhbmRyb2lkU3RvcmFnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUc7QUFDNUJDLEVBQUFBLFdBQVcsRUFBRTtBQUNYQyxJQUFBQSxRQUFRLEVBQUU7QUFEQyxHQURlO0FBSTVCQyxFQUFBQSxjQUFjLEVBQUU7QUFDZEQsSUFBQUEsUUFBUSxFQUFFO0FBREksR0FKWTtBQU81QkUsRUFBQUEsbUJBQW1CLEVBQUU7QUFDbkJDLElBQUFBLFNBQVMsRUFBRTtBQURRLEdBUE87QUFVNUJDLEVBQUFBLGdCQUFnQixFQUFFO0FBQ2hCSixJQUFBQSxRQUFRLEVBQUU7QUFETSxHQVZVO0FBYTVCSyxFQUFBQSxLQUFLLEVBQUU7QUFDTEMsSUFBQUEsUUFBUSxFQUFFO0FBREwsR0FicUI7QUFnQjVCQyxFQUFBQSxhQUFhLEVBQUU7QUFDYkosSUFBQUEsU0FBUyxFQUFFO0FBREUsR0FoQmE7QUFtQjVCSyxFQUFBQSxRQUFRLEVBQUU7QUFDUkYsSUFBQUEsUUFBUSxFQUFFO0FBREYsR0FuQmtCO0FBc0I1QkcsRUFBQUEsdUJBQXVCLEVBQUU7QUFDdkJULElBQUFBLFFBQVEsRUFBRTtBQURhLEdBdEJHO0FBeUI1QlUsRUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLElBQUFBLFFBQVEsRUFBRTtBQURBLEdBekJnQjtBQTRCNUJDLEVBQUFBLFNBQVMsRUFBRTtBQUNUWixJQUFBQSxRQUFRLEVBQUUsSUFERDtBQUVUYSxJQUFBQSx3QkFBd0IsRUFBRUMsTUFBTSxDQUFDQyxNQUFQLENBQWNDLG9CQUFkO0FBRmpCLEdBNUJpQjtBQWdDNUJDLEVBQUFBLGNBQWMsRUFBRTtBQUNkakIsSUFBQUEsUUFBUSxFQUFFLElBREk7QUFFZGEsSUFBQUEsd0JBQXdCLEVBQUUsQ0FBQyxNQUFELEVBQVMsS0FBVCxFQUFnQixVQUFoQixFQUE0QixRQUE1QjtBQUZaLEdBaENZO0FBb0M1Qix3QkFBc0I7QUFDcEJQLElBQUFBLFFBQVEsRUFBRTtBQURVO0FBcENNLENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkVSQk9TSVRZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gIGJyb3dzZXJOYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYnJvd3NlclZlcnNpb246IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhY2NlcHRJbnNlY3VyZUNlcnRzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHBhZ2VMb2FkU3RyYXRlZ3k6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBwcm94eToge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIHNldFdpbmRvd1JlY3Q6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdGltZW91dHM6IHtcbiAgICBpc09iamVjdDogdHJ1ZVxuICB9LFxuICB1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHN5c3RlbVBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB2ZXJib3NpdHk6IHtcbiAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICBpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmU6IE9iamVjdC52YWx1ZXMoVkVSQk9TSVRZKVxuICB9LFxuICBhbmRyb2lkU3RvcmFnZToge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogWydhdXRvJywgJ2FwcCcsICdpbnRlcm5hbCcsICdzZGNhcmQnXVxuICB9LFxuICAnbW96OmZpcmVmb3hPcHRpb25zJzoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH1cbn07XG5cbmV4cG9ydCB7IGRlc2lyZWRDYXBDb25zdHJhaW50cyB9O1xuIl0sImZpbGUiOiJsaWIvZGVzaXJlZC1jYXBzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
58
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNpcmVkLWNhcHMuanMiXSwibmFtZXMiOlsiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiYnJvd3Nlck5hbWUiLCJpc1N0cmluZyIsImJyb3dzZXJWZXJzaW9uIiwiYWNjZXB0SW5zZWN1cmVDZXJ0cyIsImlzQm9vbGVhbiIsInBhZ2VMb2FkU3RyYXRlZ3kiLCJwcm94eSIsImlzT2JqZWN0Iiwic2V0V2luZG93UmVjdCIsInRpbWVvdXRzIiwidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiLCJzeXN0ZW1Qb3J0IiwiaXNOdW1iZXIiLCJtYXJpb25ldHRlUG9ydCIsInZlcmJvc2l0eSIsImluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZSIsIk9iamVjdCIsInZhbHVlcyIsIlZFUkJPU0lUWSIsImFuZHJvaWRTdG9yYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxxQkFBcUIsR0FBRztBQUM1QkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1hDLElBQUFBLFFBQVEsRUFBRTtBQURDLEdBRGU7QUFJNUJDLEVBQUFBLGNBQWMsRUFBRTtBQUNkRCxJQUFBQSxRQUFRLEVBQUU7QUFESSxHQUpZO0FBTzVCRSxFQUFBQSxtQkFBbUIsRUFBRTtBQUNuQkMsSUFBQUEsU0FBUyxFQUFFO0FBRFEsR0FQTztBQVU1QkMsRUFBQUEsZ0JBQWdCLEVBQUU7QUFDaEJKLElBQUFBLFFBQVEsRUFBRTtBQURNLEdBVlU7QUFhNUJLLEVBQUFBLEtBQUssRUFBRTtBQUNMQyxJQUFBQSxRQUFRLEVBQUU7QUFETCxHQWJxQjtBQWdCNUJDLEVBQUFBLGFBQWEsRUFBRTtBQUNiSixJQUFBQSxTQUFTLEVBQUU7QUFERSxHQWhCYTtBQW1CNUJLLEVBQUFBLFFBQVEsRUFBRTtBQUNSRixJQUFBQSxRQUFRLEVBQUU7QUFERixHQW5Ca0I7QUFzQjVCRyxFQUFBQSx1QkFBdUIsRUFBRTtBQUN2QlQsSUFBQUEsUUFBUSxFQUFFO0FBRGEsR0F0Qkc7QUF5QjVCVSxFQUFBQSxVQUFVLEVBQUU7QUFDVkMsSUFBQUEsUUFBUSxFQUFFO0FBREEsR0F6QmdCO0FBNEI1QkMsRUFBQUEsY0FBYyxFQUFFO0FBQ2RELElBQUFBLFFBQVEsRUFBRTtBQURJLEdBNUJZO0FBK0I1QkUsRUFBQUEsU0FBUyxFQUFFO0FBQ1RiLElBQUFBLFFBQVEsRUFBRSxJQUREO0FBRVRjLElBQUFBLHdCQUF3QixFQUFFQyxNQUFNLENBQUNDLE1BQVAsQ0FBY0Msb0JBQWQ7QUFGakIsR0EvQmlCO0FBbUM1QkMsRUFBQUEsY0FBYyxFQUFFO0FBQ2RsQixJQUFBQSxRQUFRLEVBQUUsSUFESTtBQUVkYyxJQUFBQSx3QkFBd0IsRUFBRSxDQUFDLE1BQUQsRUFBUyxLQUFULEVBQWdCLFVBQWhCLEVBQTRCLFFBQTVCO0FBRlosR0FuQ1k7QUF1QzVCLHdCQUFzQjtBQUNwQlIsSUFBQUEsUUFBUSxFQUFFO0FBRFU7QUF2Q00sQ0FBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWRVJCT1NJVFkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IGRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgYnJvd3Nlck5hbWU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBicm93c2VyVmVyc2lvbjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFjY2VwdEluc2VjdXJlQ2VydHM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcGFnZUxvYWRTdHJhdGVneToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHByb3h5OiB7XG4gICAgaXNPYmplY3Q6IHRydWVcbiAgfSxcbiAgc2V0V2luZG93UmVjdDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB0aW1lb3V0czoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIHVuaGFuZGxlZFByb21wdEJlaGF2aW9yOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc3lzdGVtUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG1hcmlvbmV0dGVQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgdmVyYm9zaXR5OiB7XG4gICAgaXNTdHJpbmc6IHRydWUsXG4gICAgaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlOiBPYmplY3QudmFsdWVzKFZFUkJPU0lUWSlcbiAgfSxcbiAgYW5kcm9pZFN0b3JhZ2U6IHtcbiAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICBpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmU6IFsnYXV0bycsICdhcHAnLCAnaW50ZXJuYWwnLCAnc2RjYXJkJ11cbiAgfSxcbiAgJ21vejpmaXJlZm94T3B0aW9ucyc6IHtcbiAgICBpc09iamVjdDogdHJ1ZVxuICB9XG59O1xuXG5leHBvcnQgeyBkZXNpcmVkQ2FwQ29uc3RyYWludHMgfTtcbiJdLCJmaWxlIjoibGliL2Rlc2lyZWQtY2Fwcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -11,7 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
- var _appiumBaseDriver = require("appium-base-driver");
14
+ var _baseDriver = require("@appium/base-driver");
15
15
 
16
16
  var _logger = _interopRequireDefault(require("./logger"));
17
17
 
@@ -25,7 +25,7 @@ var _utils = require("./utils");
25
25
 
26
26
  const NO_PROXY = [['GET', new RegExp('^/session/[^/]+/appium')], ['POST', new RegExp('^/session/[^/]+/appium')], ['POST', new RegExp('^/session/[^/]+/element/[^/]+/elements?$')], ['POST', new RegExp('^/session/[^/]+/elements?$')]];
27
27
 
28
- class GeckoDriver extends _appiumBaseDriver.BaseDriver {
28
+ class GeckoDriver extends _baseDriver.BaseDriver {
29
29
  constructor(opts = {}) {
30
30
  super(opts);
31
31
  this.desiredCapConstraints = _desiredCaps.desiredCapConstraints;
@@ -85,4 +85,4 @@ var _default = GeckoDriver;
85
85
  exports.default = _default;require('source-map-support').install();
86
86
 
87
87
 
88
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwibmFtZXMiOlsiTk9fUFJPWFkiLCJSZWdFeHAiLCJHZWNrb0RyaXZlciIsIkJhc2VEcml2ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJsb2NhdG9yU3RyYXRlZ2llcyIsInJlc2V0U3RhdGUiLCJjbWQiLCJmbiIsIl8iLCJ0b1BhaXJzIiwiY29tbWFuZHMiLCJwcm90b3R5cGUiLCJnZWNrbyIsInByb3h5UmVxUmVzIiwiaXNQcm94eUFjdGl2ZSIsInByb3h5QWN0aXZlIiwiZ2V0UHJveHlBdm9pZExpc3QiLCJjYW5Qcm94eSIsImNyZWF0ZVNlc3Npb24iLCJhcmdzIiwic2Vzc2lvbklkIiwiY2FwcyIsIkdlY2tvRHJpdmVyU2VydmVyIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInByb3h5IiwiYmluZCIsImxvZyIsImluZm8iLCJzdG9wIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxDQUNmLENBQUMsS0FBRCxFQUFRLElBQUlDLE1BQUosQ0FBVyx3QkFBWCxDQUFSLENBRGUsRUFFZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsd0JBQVgsQ0FBVCxDQUZlLEVBR2YsQ0FBQyxNQUFELEVBQVMsSUFBSUEsTUFBSixDQUFXLDBDQUFYLENBQVQsQ0FIZSxFQUlmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw0QkFBWCxDQUFULENBSmUsQ0FBakI7O0FBT0EsTUFBTUMsV0FBTixTQUEwQkMsNEJBQTFCLENBQXFDO0FBQ25DQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsVUFBTUEsSUFBTjtBQUNBLFNBQUtDLHFCQUFMLEdBQTZCQSxrQ0FBN0I7QUFDQSxTQUFLQyxpQkFBTCxHQUF5QixDQUN2QixPQUR1QixFQUV2QixVQUZ1QixFQUd2QixXQUh1QixFQUl2QixtQkFKdUIsRUFLdkIsY0FMdUIsRUFPdkIsSUFQdUIsRUFRdkIsTUFSdUIsQ0FBekI7QUFVQSxTQUFLQyxVQUFMOztBQUVBLFNBQUssTUFBTSxDQUFDQyxHQUFELEVBQU1DLEVBQU4sQ0FBWCxJQUF3QkMsZ0JBQUVDLE9BQUYsQ0FBVUMsY0FBVixDQUF4QixFQUE2QztBQUMzQ1gsTUFBQUEsV0FBVyxDQUFDWSxTQUFaLENBQXNCTCxHQUF0QixJQUE2QkMsRUFBN0I7QUFDRDtBQUNGOztBQUVERixFQUFBQSxVQUFVLEdBQUk7QUFDWixTQUFLTyxLQUFMLEdBQWEsSUFBYjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsSUFBbkI7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLEtBQXJCO0FBQ0Q7O0FBRURDLEVBQUFBLFdBQVcsR0FBSTtBQUNiLFdBQU8sS0FBS0QsYUFBWjtBQUNEOztBQUVERSxFQUFBQSxpQkFBaUIsR0FBSTtBQUNuQixXQUFPbkIsUUFBUDtBQUNEOztBQUVEb0IsRUFBQUEsUUFBUSxHQUFJO0FBQ1YsV0FBTyxJQUFQO0FBQ0Q7O0FBRUQsUUFBTUMsYUFBTixDQUFxQixHQUFHQyxJQUF4QixFQUE4QjtBQUM1QixVQUFNLENBQUNDLFNBQUQsRUFBWUMsSUFBWixJQUFvQixNQUFNLE1BQU1ILGFBQU4sQ0FBb0IsR0FBR0MsSUFBdkIsQ0FBaEM7QUFDQSxTQUFLUCxLQUFMLEdBQWEsSUFBSVUsY0FBSixDQUFzQkQsSUFBdEIsQ0FBYjs7QUFDQSxRQUFJO0FBQ0YsWUFBTSxLQUFLVCxLQUFMLENBQVdXLEtBQVgsQ0FBaUIsZ0NBQW9CRixJQUFwQixDQUFqQixDQUFOO0FBQ0QsS0FGRCxDQUVFLE9BQU9HLENBQVAsRUFBVTtBQUNWLFlBQU0sS0FBS0MsYUFBTCxFQUFOO0FBQ0EsWUFBTUQsQ0FBTjtBQUNEOztBQUNELFNBQUtYLFdBQUwsR0FBbUIsS0FBS0QsS0FBTCxDQUFXYyxLQUFYLENBQWlCYixXQUFqQixDQUE2QmMsSUFBN0IsQ0FBa0MsS0FBS2YsS0FBTCxDQUFXYyxLQUE3QyxDQUFuQjtBQUNBLFNBQUtaLGFBQUwsR0FBcUIsSUFBckI7QUFDQSxXQUFPLENBQUNNLFNBQUQsRUFBWUMsSUFBWixDQUFQO0FBQ0Q7O0FBRUQsUUFBTUksYUFBTixHQUF1QjtBQUNyQkcsb0JBQUlDLElBQUosQ0FBUyw2QkFBVDs7QUFDQSxVQUFNLEtBQUtqQixLQUFMLENBQVdrQixJQUFYLEVBQU47QUFDQSxTQUFLekIsVUFBTDtBQUVBLFVBQU0sTUFBTW9CLGFBQU4sRUFBTjtBQUNEOztBQTNEa0M7O2VBOER0QjFCLFciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZURyaXZlciB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBHZWNrb0RyaXZlclNlcnZlciBmcm9tICcuL2dlY2tvJztcbmltcG9ydCB7IGRlc2lyZWRDYXBDb25zdHJhaW50cyB9IGZyb20gJy4vZGVzaXJlZC1jYXBzJztcbmltcG9ydCBjb21tYW5kcyBmcm9tICcuL2NvbW1hbmRzL2luZGV4JztcbmltcG9ydCB7IGZvcm1hdENhcHNGb3JTZXJ2ZXIgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTk9fUFJPWFkgPSBbXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvZWxlbWVudHM/JCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnRzPyQnKV0sXG5dO1xuXG5jbGFzcyBHZWNrb0RyaXZlciBleHRlbmRzIEJhc2VEcml2ZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG4gICAgdGhpcy5sb2NhdG9yU3RyYXRlZ2llcyA9IFtcbiAgICAgICd4cGF0aCcsXG4gICAgICAndGFnIG5hbWUnLFxuICAgICAgJ2xpbmsgdGV4dCcsXG4gICAgICAncGFydGlhbCBsaW5rIHRleHQnLFxuICAgICAgJ2NzcyBzZWxlY3RvcicsXG4gICAgICAvLyBMZXQgdGhlc2UgdHdvIHJlYWNoIEdlY2tvIERyaXZlciBhbmQgZmFpbCB0aGVyZSB3aXRoIGEgcHJvcGVyIGVycm9yIG1lc3NhZ2VcbiAgICAgICdpZCcsXG4gICAgICAnbmFtZScsXG4gICAgXTtcbiAgICB0aGlzLnJlc2V0U3RhdGUoKTtcblxuICAgIGZvciAoY29uc3QgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhjb21tYW5kcykpIHtcbiAgICAgIEdlY2tvRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG4gICAgfVxuICB9XG5cbiAgcmVzZXRTdGF0ZSAoKSB7XG4gICAgdGhpcy5nZWNrbyA9IG51bGw7XG4gICAgdGhpcy5wcm94eVJlcVJlcyA9IG51bGw7XG4gICAgdGhpcy5pc1Byb3h5QWN0aXZlID0gZmFsc2U7XG4gIH1cblxuICBwcm94eUFjdGl2ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNQcm94eUFjdGl2ZTtcbiAgfVxuXG4gIGdldFByb3h5QXZvaWRMaXN0ICgpIHtcbiAgICByZXR1cm4gTk9fUFJPWFk7XG4gIH1cblxuICBjYW5Qcm94eSAoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uICguLi5hcmdzKSB7XG4gICAgY29uc3QgW3Nlc3Npb25JZCwgY2Fwc10gPSBhd2FpdCBzdXBlci5jcmVhdGVTZXNzaW9uKC4uLmFyZ3MpO1xuICAgIHRoaXMuZ2Vja28gPSBuZXcgR2Vja29Ecml2ZXJTZXJ2ZXIoY2Fwcyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZ2Vja28uc3RhcnQoZm9ybWF0Q2Fwc0ZvclNlcnZlcihjYXBzKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5nZWNrby5wcm94eS5wcm94eVJlcVJlcy5iaW5kKHRoaXMuZ2Vja28ucHJveHkpO1xuICAgIHRoaXMuaXNQcm94eUFjdGl2ZSA9IHRydWU7XG4gICAgcmV0dXJuIFtzZXNzaW9uSWQsIGNhcHNdO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgbG9nLmluZm8oJ0VuZGluZyBHZWNrbyBEcml2ZXIgc2Vzc2lvbicpO1xuICAgIGF3YWl0IHRoaXMuZ2Vja28uc3RvcCgpO1xuICAgIHRoaXMucmVzZXRTdGF0ZSgpO1xuXG4gICAgYXdhaXQgc3VwZXIuZGVsZXRlU2Vzc2lvbigpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdlY2tvRHJpdmVyO1xuIl0sImZpbGUiOiJsaWIvZHJpdmVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
88
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwibmFtZXMiOlsiTk9fUFJPWFkiLCJSZWdFeHAiLCJHZWNrb0RyaXZlciIsIkJhc2VEcml2ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJsb2NhdG9yU3RyYXRlZ2llcyIsInJlc2V0U3RhdGUiLCJjbWQiLCJmbiIsIl8iLCJ0b1BhaXJzIiwiY29tbWFuZHMiLCJwcm90b3R5cGUiLCJnZWNrbyIsInByb3h5UmVxUmVzIiwiaXNQcm94eUFjdGl2ZSIsInByb3h5QWN0aXZlIiwiZ2V0UHJveHlBdm9pZExpc3QiLCJjYW5Qcm94eSIsImNyZWF0ZVNlc3Npb24iLCJhcmdzIiwic2Vzc2lvbklkIiwiY2FwcyIsIkdlY2tvRHJpdmVyU2VydmVyIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInByb3h5IiwiYmluZCIsImxvZyIsImluZm8iLCJzdG9wIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxDQUNmLENBQUMsS0FBRCxFQUFRLElBQUlDLE1BQUosQ0FBVyx3QkFBWCxDQUFSLENBRGUsRUFFZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsd0JBQVgsQ0FBVCxDQUZlLEVBR2YsQ0FBQyxNQUFELEVBQVMsSUFBSUEsTUFBSixDQUFXLDBDQUFYLENBQVQsQ0FIZSxFQUlmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw0QkFBWCxDQUFULENBSmUsQ0FBakI7O0FBT0EsTUFBTUMsV0FBTixTQUEwQkMsc0JBQTFCLENBQXFDO0FBQ25DQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsVUFBTUEsSUFBTjtBQUNBLFNBQUtDLHFCQUFMLEdBQTZCQSxrQ0FBN0I7QUFDQSxTQUFLQyxpQkFBTCxHQUF5QixDQUN2QixPQUR1QixFQUV2QixVQUZ1QixFQUd2QixXQUh1QixFQUl2QixtQkFKdUIsRUFLdkIsY0FMdUIsRUFPdkIsSUFQdUIsRUFRdkIsTUFSdUIsQ0FBekI7QUFVQSxTQUFLQyxVQUFMOztBQUVBLFNBQUssTUFBTSxDQUFDQyxHQUFELEVBQU1DLEVBQU4sQ0FBWCxJQUF3QkMsZ0JBQUVDLE9BQUYsQ0FBVUMsY0FBVixDQUF4QixFQUE2QztBQUMzQ1gsTUFBQUEsV0FBVyxDQUFDWSxTQUFaLENBQXNCTCxHQUF0QixJQUE2QkMsRUFBN0I7QUFDRDtBQUNGOztBQUVERixFQUFBQSxVQUFVLEdBQUk7QUFDWixTQUFLTyxLQUFMLEdBQWEsSUFBYjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsSUFBbkI7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLEtBQXJCO0FBQ0Q7O0FBRURDLEVBQUFBLFdBQVcsR0FBSTtBQUNiLFdBQU8sS0FBS0QsYUFBWjtBQUNEOztBQUVERSxFQUFBQSxpQkFBaUIsR0FBSTtBQUNuQixXQUFPbkIsUUFBUDtBQUNEOztBQUVEb0IsRUFBQUEsUUFBUSxHQUFJO0FBQ1YsV0FBTyxJQUFQO0FBQ0Q7O0FBRWtCLFFBQWJDLGFBQWEsQ0FBRSxHQUFHQyxJQUFMLEVBQVc7QUFDNUIsVUFBTSxDQUFDQyxTQUFELEVBQVlDLElBQVosSUFBb0IsTUFBTSxNQUFNSCxhQUFOLENBQW9CLEdBQUdDLElBQXZCLENBQWhDO0FBQ0EsU0FBS1AsS0FBTCxHQUFhLElBQUlVLGNBQUosQ0FBc0JELElBQXRCLENBQWI7O0FBQ0EsUUFBSTtBQUNGLFlBQU0sS0FBS1QsS0FBTCxDQUFXVyxLQUFYLENBQWlCLGdDQUFvQkYsSUFBcEIsQ0FBakIsQ0FBTjtBQUNELEtBRkQsQ0FFRSxPQUFPRyxDQUFQLEVBQVU7QUFDVixZQUFNLEtBQUtDLGFBQUwsRUFBTjtBQUNBLFlBQU1ELENBQU47QUFDRDs7QUFDRCxTQUFLWCxXQUFMLEdBQW1CLEtBQUtELEtBQUwsQ0FBV2MsS0FBWCxDQUFpQmIsV0FBakIsQ0FBNkJjLElBQTdCLENBQWtDLEtBQUtmLEtBQUwsQ0FBV2MsS0FBN0MsQ0FBbkI7QUFDQSxTQUFLWixhQUFMLEdBQXFCLElBQXJCO0FBQ0EsV0FBTyxDQUFDTSxTQUFELEVBQVlDLElBQVosQ0FBUDtBQUNEOztBQUVrQixRQUFiSSxhQUFhLEdBQUk7QUFDckJHLG9CQUFJQyxJQUFKLENBQVMsNkJBQVQ7O0FBQ0EsVUFBTSxLQUFLakIsS0FBTCxDQUFXa0IsSUFBWCxFQUFOO0FBQ0EsU0FBS3pCLFVBQUw7QUFFQSxVQUFNLE1BQU1vQixhQUFOLEVBQU47QUFDRDs7QUEzRGtDOztlQThEdEIxQixXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IEdlY2tvRHJpdmVyU2VydmVyIGZyb20gJy4vZ2Vja28nO1xuaW1wb3J0IHsgZGVzaXJlZENhcENvbnN0cmFpbnRzIH0gZnJvbSAnLi9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IGNvbW1hbmRzIGZyb20gJy4vY29tbWFuZHMvaW5kZXgnO1xuaW1wb3J0IHsgZm9ybWF0Q2Fwc0ZvclNlcnZlciB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBOT19QUk9YWSA9IFtcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9lbGVtZW50cz8kJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudHM/JCcpXSxcbl07XG5cbmNsYXNzIEdlY2tvRHJpdmVyIGV4dGVuZHMgQmFzZURyaXZlciB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiAgICB0aGlzLmxvY2F0b3JTdHJhdGVnaWVzID0gW1xuICAgICAgJ3hwYXRoJyxcbiAgICAgICd0YWcgbmFtZScsXG4gICAgICAnbGluayB0ZXh0JyxcbiAgICAgICdwYXJ0aWFsIGxpbmsgdGV4dCcsXG4gICAgICAnY3NzIHNlbGVjdG9yJyxcbiAgICAgIC8vIExldCB0aGVzZSB0d28gcmVhY2ggR2Vja28gRHJpdmVyIGFuZCBmYWlsIHRoZXJlIHdpdGggYSBwcm9wZXIgZXJyb3IgbWVzc2FnZVxuICAgICAgJ2lkJyxcbiAgICAgICduYW1lJyxcbiAgICBdO1xuICAgIHRoaXMucmVzZXRTdGF0ZSgpO1xuXG4gICAgZm9yIChjb25zdCBbY21kLCBmbl0gb2YgXy50b1BhaXJzKGNvbW1hbmRzKSkge1xuICAgICAgR2Vja29Ecml2ZXIucHJvdG90eXBlW2NtZF0gPSBmbjtcbiAgICB9XG4gIH1cblxuICByZXNldFN0YXRlICgpIHtcbiAgICB0aGlzLmdlY2tvID0gbnVsbDtcbiAgICB0aGlzLnByb3h5UmVxUmVzID0gbnVsbDtcbiAgICB0aGlzLmlzUHJveHlBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIHByb3h5QWN0aXZlICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1Byb3h5QWN0aXZlO1xuICB9XG5cbiAgZ2V0UHJveHlBdm9pZExpc3QgKCkge1xuICAgIHJldHVybiBOT19QUk9YWTtcbiAgfVxuXG4gIGNhblByb3h5ICgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG4gICAgdGhpcy5nZWNrbyA9IG5ldyBHZWNrb0RyaXZlclNlcnZlcihjYXBzKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5nZWNrby5zdGFydChmb3JtYXRDYXBzRm9yU2VydmVyKGNhcHMpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLmdlY2tvLnByb3h5LnByb3h5UmVxUmVzLmJpbmQodGhpcy5nZWNrby5wcm94eSk7XG4gICAgdGhpcy5pc1Byb3h5QWN0aXZlID0gdHJ1ZTtcbiAgICByZXR1cm4gW3Nlc3Npb25JZCwgY2Fwc107XG4gIH1cblxuICBhc3luYyBkZWxldGVTZXNzaW9uICgpIHtcbiAgICBsb2cuaW5mbygnRW5kaW5nIEdlY2tvIERyaXZlciBzZXNzaW9uJyk7XG4gICAgYXdhaXQgdGhpcy5nZWNrby5zdG9wKCk7XG4gICAgdGhpcy5yZXNldFN0YXRlKCk7XG5cbiAgICBhd2FpdCBzdXBlci5kZWxldGVTZXNzaW9uKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR2Vja29Ecml2ZXI7XG4iXSwiZmlsZSI6ImxpYi9kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -15,9 +15,9 @@ var _os = _interopRequireDefault(require("os"));
15
15
 
16
16
  var _path = _interopRequireDefault(require("path"));
17
17
 
18
- var _appiumBaseDriver = require("appium-base-driver");
18
+ var _baseDriver = require("@appium/base-driver");
19
19
 
20
- var _appiumSupport = require("appium-support");
20
+ var _support = require("@appium/support");
21
21
 
22
22
  var _teen_process = require("teen_process");
23
23
 
@@ -29,21 +29,30 @@ var _child_process = require("child_process");
29
29
 
30
30
  var _constants = require("./constants");
31
31
 
32
- const log = _appiumSupport.logger.getLogger('GeckoDriverServer');
32
+ const log = _support.logger.getLogger('GeckoDriverServer');
33
33
 
34
- const GD_BINARY = `geckodriver${_appiumSupport.system.isWindows() ? '.exe' : ''}`;
34
+ const GD_BINARY = `geckodriver${_support.system.isWindows() ? '.exe' : ''}`;
35
35
  const STARTUP_TIMEOUT_MS = 10000;
36
36
  const GECKO_PORT_RANGE = [5200, 5300];
37
37
 
38
- const GECKO_SERVER_GUARD = _appiumSupport.util.getLockFileGuard(_path.default.resolve(_os.default.tmpdir(), 'gecko_server_guard.lock'), {
38
+ const GECKO_SERVER_GUARD = _support.util.getLockFileGuard(_path.default.resolve(_os.default.tmpdir(), 'gecko_server_guard.lock'), {
39
39
  timeout: 5,
40
40
  tryRecovery: true
41
41
  });
42
42
 
43
- class GeckoProxy extends _appiumBaseDriver.JWProxy {
43
+ const DEFAULT_MARIONETTE_PORT = 2828;
44
+ const PROCESS_SPECIFIC_OPTION_NAMES_MAP = Object.freeze({
45
+ noReset: 'noReset',
46
+ verbosity: 'verbosity',
47
+ androidStorage: 'androidStorage',
48
+ marionettePort: 'marionettePort',
49
+ systemPort: 'port'
50
+ });
51
+
52
+ class GeckoProxy extends _baseDriver.JWProxy {
44
53
  async proxyCommand(url, method, body = null) {
45
54
  if (this.didProcessExit) {
46
- throw new _appiumBaseDriver.errors.InvalidContextError(`'${method} ${url}' cannot be proxied to Gecko Driver server because ` + 'its process is not running (probably crashed). Check the Appium log for more details');
55
+ throw new _baseDriver.errors.InvalidContextError(`'${method} ${url}' cannot be proxied to Gecko Driver server because ` + 'its process is not running (probably crashed). Check the Appium log for more details');
47
56
  }
48
57
 
49
58
  return await super.proxyCommand(url, method, body);
@@ -53,18 +62,17 @@ class GeckoProxy extends _appiumBaseDriver.JWProxy {
53
62
 
54
63
  class GeckoDriverProcess {
55
64
  constructor(opts = {}) {
56
- for (const optName of ['noReset', 'verbosity', 'androidStorage']) {
57
- this[optName] = opts[optName];
65
+ for (const [optName, propName] of _lodash.default.toPairs(PROCESS_SPECIFIC_OPTION_NAMES_MAP)) {
66
+ this[propName] = opts[optName];
58
67
  }
59
68
 
60
- this.port = opts.systemPort;
61
69
  this.proc = null;
62
70
  }
63
71
 
64
72
  get isRunning() {
65
73
  var _this$proc;
66
74
 
67
- return !!((_this$proc = this.proc) === null || _this$proc === void 0 ? void 0 : _this$proc.isRunning);
75
+ return !!((_this$proc = this.proc) !== null && _this$proc !== void 0 && _this$proc.isRunning);
68
76
  }
69
77
 
70
78
  async init() {
@@ -87,12 +95,12 @@ class GeckoDriverProcess {
87
95
  let driverBin;
88
96
 
89
97
  try {
90
- driverBin = await _appiumSupport.fs.which(GD_BINARY);
98
+ driverBin = await _support.fs.which(GD_BINARY);
91
99
  } catch (e) {
92
100
  throw new Error(`${GD_BINARY} binary cannot be found in PATH. ` + `Please make sure it is present on your system`);
93
101
  }
94
102
 
95
- const args = ['-p', this.port];
103
+ const args = [];
96
104
 
97
105
  switch (_lodash.default.toLower(this.verbosity)) {
98
106
  case _constants.VERBOSITY.DEBUG:
@@ -105,11 +113,24 @@ class GeckoDriverProcess {
105
113
  }
106
114
 
107
115
  if (this.noReset) {
116
+ var _this$marionettePort;
117
+
108
118
  args.push('--connect-existing');
119
+
120
+ 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})`);
123
+ }
124
+
125
+ args.push('--marionette-port', (_this$marionettePort = this.marionettePort) !== null && _this$marionettePort !== void 0 ? _this$marionettePort : DEFAULT_MARIONETTE_PORT);
126
+ } else if (!_lodash.default.isNil(this.marionettePort)) {
127
+ args.push('--marionette-port', this.marionettePort);
109
128
  }
110
129
 
130
+ args.push('-p', this.port);
131
+
111
132
  if (this.androidStorage) {
112
- args.push('–-android-storage', this.androidStorage);
133
+ args.push('--android-storage', this.androidStorage);
113
134
  }
114
135
 
115
136
  this.proc = new _teen_process.SubProcess(driverBin, args);
@@ -146,7 +167,7 @@ class GeckoDriverProcess {
146
167
  const RUNNING_PROCESS_IDS = [];
147
168
  process.once('exit', () => {
148
169
  for (const pid of RUNNING_PROCESS_IDS) {
149
- const command = _appiumSupport.system.isWindows() ? `taskkill.exe /PID ${pid}` : `kill ${pid}`;
170
+ const command = _support.system.isWindows() ? `taskkill.exe /PID ${pid}` : `kill ${pid}`;
150
171
 
151
172
  try {
152
173
  (0, _child_process.execSync)(command);
@@ -163,7 +184,7 @@ class GeckoDriverServer {
163
184
  get isRunning() {
164
185
  var _this$process;
165
186
 
166
- return !!((_this$process = this.process) === null || _this$process === void 0 ? void 0 : _this$process.isRunning);
187
+ return !!((_this$process = this.process) !== null && _this$process !== void 0 && _this$process.isRunning);
167
188
  }
168
189
 
169
190
  async start(geckoCaps) {
@@ -226,7 +247,7 @@ class GeckoDriverServer {
226
247
  return;
227
248
  }
228
249
 
229
- if ((_this$proxy = this.proxy) === null || _this$proxy === void 0 ? void 0 : _this$proxy.sessionId) {
250
+ if ((_this$proxy = this.proxy) !== null && _this$proxy !== void 0 && _this$proxy.sessionId) {
230
251
  try {
231
252
  await this.proxy.command(`/session/${this.proxy.sessionId}`, 'DELETE');
232
253
  } catch (e) {
@@ -248,4 +269,4 @@ var _default = GeckoDriverServer;
248
269
  exports.default = _default;require('source-map-support').install();
249
270
 
250
271
 
251
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9nZWNrby5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJHRF9CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJTVEFSVFVQX1RJTUVPVVRfTVMiLCJHRUNLT19QT1JUX1JBTkdFIiwiR0VDS09fU0VSVkVSX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiR2Vja29Qcm94eSIsIkpXUHJveHkiLCJwcm94eUNvbW1hbmQiLCJ1cmwiLCJtZXRob2QiLCJib2R5IiwiZGlkUHJvY2Vzc0V4aXQiLCJlcnJvcnMiLCJJbnZhbGlkQ29udGV4dEVycm9yIiwiR2Vja29Ecml2ZXJQcm9jZXNzIiwiY29uc3RydWN0b3IiLCJvcHRzIiwib3B0TmFtZSIsInBvcnQiLCJzeXN0ZW1Qb3J0IiwicHJvYyIsImlzUnVubmluZyIsImluaXQiLCJzdGFydFBvcnQiLCJlbmRQb3J0IiwiZSIsIkVycm9yIiwiZHJpdmVyQmluIiwiZnMiLCJ3aGljaCIsImFyZ3MiLCJfIiwidG9Mb3dlciIsInZlcmJvc2l0eSIsIlZFUkJPU0lUWSIsIkRFQlVHIiwicHVzaCIsIlRSQUNFIiwibm9SZXNldCIsImFuZHJvaWRTdG9yYWdlIiwiU3ViUHJvY2VzcyIsIm9uIiwic3Rkb3V0Iiwic3RkZXJyIiwibGluZSIsInRyaW0iLCJkZWJ1ZyIsImNvZGUiLCJzaWduYWwiLCJpbmZvIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0Iiwic3RvcCIsImtpbGwiLCJpZ24iLCJSVU5OSU5HX1BST0NFU1NfSURTIiwicHJvY2VzcyIsIm9uY2UiLCJwaWQiLCJjb21tYW5kIiwiR2Vja29Ecml2ZXJTZXJ2ZXIiLCJjYXBzIiwicHJveHkiLCJnZWNrb0NhcHMiLCJzZXJ2ZXIiLCJiYXNlIiwia2VlcEFsaXZlIiwiZXJyIiwibWVzc2FnZSIsIndhaXRNcyIsImludGVydmFsTXMiLCJ0ZXN0IiwicHVsbCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInNlc3Npb25JZCIsIndhcm4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxzQkFBT0MsU0FBUCxDQUFpQixtQkFBakIsQ0FBWjs7QUFFQSxNQUFNQyxTQUFTLEdBQUksY0FBYUMsc0JBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUFqRTtBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUF6Qjs7QUFDQSxNQUFNQyxrQkFBa0IsR0FBR0Msb0JBQUtDLGdCQUFMLENBQ3pCQyxjQUFLQyxPQUFMLENBQWFDLFlBQUdDLE1BQUgsRUFBYixFQUEwQix5QkFBMUIsQ0FEeUIsRUFFekI7QUFBQ0MsRUFBQUEsT0FBTyxFQUFFLENBQVY7QUFBYUMsRUFBQUEsV0FBVyxFQUFFO0FBQTFCLENBRnlCLENBQTNCOztBQU1BLE1BQU1DLFVBQU4sU0FBeUJDLHlCQUF6QixDQUFpQztBQUMvQixRQUFNQyxZQUFOLENBQW9CQyxHQUFwQixFQUF5QkMsTUFBekIsRUFBaUNDLElBQUksR0FBRyxJQUF4QyxFQUE4QztBQUM1QyxRQUFJLEtBQUtDLGNBQVQsRUFBeUI7QUFDdkIsWUFBTSxJQUFJQyx5QkFBT0MsbUJBQVgsQ0FDSCxJQUFHSixNQUFPLElBQUdELEdBQUkscURBQWxCLEdBQ0Esc0ZBRkksQ0FBTjtBQUdEOztBQUNELFdBQU8sTUFBTSxNQUFNRCxZQUFOLENBQW1CQyxHQUFuQixFQUF3QkMsTUFBeEIsRUFBZ0NDLElBQWhDLENBQWI7QUFDRDs7QUFSOEI7O0FBV2pDLE1BQU1JLGtCQUFOLENBQXlCO0FBQ3ZCQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxF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QUFMLENBQWFKLElBQWIsRUFBTjtBQUNELEtBRkQsQ0FFRSxPQUFPNUIsQ0FBUCxFQUFVO0FBQ1ZyQyxNQUFBQSxHQUFHLENBQUMwRixJQUFKLENBQVUsMkNBQTBDckQsQ0FBQyxDQUFDNEMsT0FBUSwwQkFBOUQ7QUFDQSxZQUFNLEtBQUtaLE9BQUwsQ0FBYUgsSUFBYixFQUFOO0FBQ0Q7QUFDRjs7QUFsRnFCOztlQXFGVE8saUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCB7IGZzLCBsb2dnZXIsIHV0aWwsIHN5c3RlbSB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCB7IFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IFZFUkJPU0lUWSB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignR2Vja29Ecml2ZXJTZXJ2ZXInKTtcblxuY29uc3QgR0RfQklOQVJZID0gYGdlY2tvZHJpdmVyJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuY29uc3QgU1RBUlRVUF9USU1FT1VUX01TID0gMTAwMDA7IC8vIDEwIHNlY29uZHNcbmNvbnN0IEdFQ0tPX1BPUlRfUkFOR0UgPSBbNTIwMCwgNTMwMF07XG5jb25zdCBHRUNLT19TRVJWRVJfR1VBUkQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQoXG4gIHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgJ2dlY2tvX3NlcnZlcl9ndWFyZC5sb2NrJyksXG4gIHt0aW1lb3V0OiA1LCB0cnlSZWNvdmVyeTogdHJ1ZX1cbik7XG5cblxuY2xhc3MgR2Vja29Qcm94eSBleHRlbmRzIEpXUHJveHkge1xuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGlmICh0aGlzLmRpZFByb2Nlc3NFeGl0KSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRDb250ZXh0RXJyb3IoXG4gICAgICAgIGAnJHttZXRob2R9ICR7dXJsfScgY2Fubm90IGJlIHByb3hpZWQgdG8gR2Vja28gRHJpdmVyIHNlcnZlciBiZWNhdXNlIGAgK1xuICAgICAgICAnaXRzIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmcgKHByb2JhYmx5IGNyYXNoZWQpLiBDaGVjayB0aGUgQXBwaXVtIGxvZyBmb3IgbW9yZSBkZXRhaWxzJyk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBzdXBlci5wcm94eUNvbW1hbmQodXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG59XG5cbmNsYXNzIEdlY2tvRHJpdmVyUHJvY2VzcyB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBmb3IgKGNvbnN0IG9wdE5hbWUgb2YgWydub1Jlc2V0JywgJ3ZlcmJvc2l0eScsICdhbmRyb2lkU3RvcmFnZSddKSB7XG4gICAgICB0aGlzW29wdE5hbWVdID0gb3B0c1tvcHROYW1lXTtcbiAgICB9XG4gICAgdGhpcy5wb3J0ID0gb3B0cy5zeXN0ZW1Qb3J0O1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5wcm9jPy5pc1J1bm5pbmcpO1xuICB9XG5cbiAgYXN5bmMgaW5pdCAoKSB7XG4gICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBvcnQpIHtcbiAgICAgIGF3YWl0IEdFQ0tPX1NFUlZFUl9HVUFSRChhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IFtzdGFydFBvcnQsIGVuZFBvcnRdID0gR0VDS09fUE9SVF9SQU5HRTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLnBvcnQgPSBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShzdGFydFBvcnQsIGVuZFBvcnQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCBmaW5kIGFueSBmcmVlIHBvcnQgaW4gcmFuZ2UgJHtzdGFydFBvcnR9Li4ke2VuZFBvcnR9LiBgICtcbiAgICAgICAgICAgIGBEb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgICBgdGhlc2Ugd2hpY2ggYXJlIG5vdCBuZWVkZWQgYW55bW9yZSBvciBzZXQgYW55IGZyZWUgcG9ydCBudW1iZXIgdG8gdGhlICdzeXN0ZW1Qb3J0JyBjYXBhYmlsaXR5YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBkcml2ZXJCaW47XG4gICAgdHJ5IHtcbiAgICAgIGRyaXZlckJpbiA9IGF3YWl0IGZzLndoaWNoKEdEX0JJTkFSWSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke0dEX0JJTkFSWX0gYmluYXJ5IGNhbm5vdCBiZSBmb3VuZCBpbiBQQVRILiBgICtcbiAgICAgICAgYFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgcHJlc2VudCBvbiB5b3VyIHN5c3RlbWApO1xuICAgIH1cbiAgICBjb25zdCBhcmdzID0gW1xuICAgICAgJy1wJywgdGhpcy5wb3J0LFxuICAgIF07XG4gICAgc3dpdGNoIChfLnRvTG93ZXIodGhpcy52ZXJib3NpdHkpKSB7XG4gICAgICBjYXNlIFZFUkJPU0lUWS5ERUJVRzpcbiAgICAgICAgYXJncy5wdXNoKCctdicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVkVSQk9TSVRZLlRSQUNFOlxuICAgICAgICBhcmdzLnB1c2goJy12dicpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMubm9SZXNldCkge1xuICAgICAgYXJncy5wdXNoKCctLWNvbm5lY3QtZXhpc3RpbmcnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYW5kcm9pZFN0b3JhZ2UpIHtcbiAgICAgIGFyZ3MucHVzaCgn4oCTLWFuZHJvaWQtc3RvcmFnZScsIHRoaXMuYW5kcm9pZFN0b3JhZ2UpO1xuICAgIH1cbiAgICB0aGlzLnByb2MgPSBuZXcgU3ViUHJvY2Vzcyhkcml2ZXJCaW4sIGFyZ3MpO1xuICAgIHRoaXMucHJvYy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICBjb25zdCBsaW5lID0gXy50cmltKHN0ZG91dCB8fCBzdGRlcnIpO1xuICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgbG9nLmRlYnVnKGBbJHtHRF9CSU5BUll9XSAke2xpbmV9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgbG9nLmluZm8oYCR7R0RfQklOQVJZfSBoYXMgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gICAgfSk7XG4gICAgbG9nLmluZm8oYFN0YXJ0aW5nICcke2RyaXZlckJpbn0nIHdpdGggYXJncyAke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWApO1xuICAgIGF3YWl0IHRoaXMucHJvYy5zdGFydCgwKTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AgKCkge1xuICAgIGlmICh0aGlzLmlzUnVubmluZykge1xuICAgICAgYXdhaXQgdGhpcy5wcm9jLnN0b3AoJ1NJR1RFUk0nKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBraWxsICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IFJVTk5JTkdfUFJPQ0VTU19JRFMgPSBbXTtcbnByb2Nlc3Mub25jZSgnZXhpdCcsICgpID0+IHtcbiAgZm9yIChjb25zdCBwaWQgb2YgUlVOTklOR19QUk9DRVNTX0lEUykge1xuICAgIGNvbnN0IGNvbW1hbmQgPSBzeXN0ZW0uaXNXaW5kb3dzKCkgPyBgdGFza2tpbGwuZXhlIC9QSUQgJHtwaWR9YCA6IGBraWxsICR7cGlkfWA7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWNTeW5jKGNvbW1hbmQpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxufSk7XG5cbmNsYXNzIEdlY2tvRHJpdmVyU2VydmVyIHtcbiAgY29uc3RydWN0b3IgKGNhcHMpIHtcbiAgICB0aGlzLnByb2Nlc3MgPSBuZXcgR2Vja29Ecml2ZXJQcm9jZXNzKGNhcHMpO1xuICAgIHRoaXMucHJveHkgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvY2Vzcz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0IChnZWNrb0NhcHMpIHtcbiAgICBhd2FpdCB0aGlzLnByb2Nlc3MuaW5pdCgpO1xuXG4gICAgdGhpcy5wcm94eSA9IG5ldyBHZWNrb1Byb3h5KHtcbiAgICAgIHNlcnZlcjogJzEyNy4wLjAuMScsXG4gICAgICBwb3J0OiB0aGlzLnByb2Nlc3MucG9ydCxcbiAgICAgIGJhc2U6ICcnLFxuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSBmYWxzZTtcbiAgICB0aGlzLnByb2Nlc3MucHJvYy5vbignZXhpdCcsICgpID0+IHtcbiAgICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IFNUQVJUVVBfVElNRU9VVF9NUyxcbiAgICAgICAgaW50ZXJ2YWxNczogMTAwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICh0aGlzLnByb2Nlc3MuaXNSdW5uaW5nKSB7XG4gICAgICAgIC8vIGF2b2lkIFwiZnJvemVuXCIgcHJvY2Vzc2VzLFxuICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3Mua2lsbCgpO1xuICAgICAgfVxuICAgICAgaWYgKC9Db25kaXRpb24gdW5tZXQvLnRlc3QoZS5tZXNzYWdlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdlY2tvIERyaXZlciBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyB3aXRoaW4gJHtTVEFSVFVQX1RJTUVPVVRfTVN9bXMgdGltZW91dC4gYCArXG4gICAgICAgICAgYE1ha2Ugc3VyZSBpdCBjb3VsZCBiZSBzdGFydGVkIG1hbnVhbGx5IGZyb20gYSB0ZXJtaW5hbGApO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgY29uc3QgcGlkID0gdGhpcy5wcm9jZXNzLnByb2MucGlkO1xuICAgIFJVTk5JTkdfUFJPQ0VTU19JRFMucHVzaChwaWQpO1xuICAgIHRoaXMucHJvY2Vzcy5wcm9jLm9uKCdleGl0JywgKCkgPT4gdm9pZCBfLnB1bGwoUlVOTklOR19QUk9DRVNTX0lEUywgcGlkKSk7XG5cbiAgICBhd2FpdCB0aGlzLnByb3h5LmNvbW1hbmQoJy9zZXNzaW9uJywgJ1BPU1QnLCB7XG4gICAgICBjYXBhYmlsaXRpZXM6IHtcbiAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgICAgYWx3YXlzTWF0Y2g6IGdlY2tvQ2FwcyxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AgKCkge1xuICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGxvZy5pbmZvKGBHZWNrbyBEcml2ZXIgc2Vzc2lvbiBjYW5ub3QgYmUgc3RvcHBlZCwgYmVjYXVzZSB0aGUgc2VydmVyIGlzIG5vdCBydW5uaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJveHk/LnNlc3Npb25JZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKGAvc2Vzc2lvbi8ke3RoaXMucHJveHkuc2Vzc2lvbklkfWAsICdERUxFVEUnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nLmluZm8oYEdlY2tvIERyaXZlciBzZXNzaW9uIGNhbm5vdCBiZSBkZWxldGVkLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucHJvY2Vzcy5zdG9wKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nLndhcm4oYEdlY2tvIERyaXZlciBwcm9jZXNzIGNhbm5vdCBiZSBzdG9wcGVkICgke2UubWVzc2FnZX0pLiBLaWxsaW5nIGl0IGZvcmNlZnVsbHlgKTtcbiAgICAgIGF3YWl0IHRoaXMucHJvY2Vzcy5raWxsKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdlY2tvRHJpdmVyU2VydmVyO1xuIl0sImZpbGUiOiJsaWIvZ2Vja28uanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
272
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9nZWNrby5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJHRF9CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJTVEFSVFVQX1RJTUVPVVRfTVMiLCJHRUNLT19QT1JUX1JBTkdFIiwiR0VDS09fU0VSVkVSX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiREVGQVVMVF9NQVJJT05FVFRFX1BPUlQiLCJQUk9DRVNTX1NQRUNJRklDX09QVElPTl9OQU1FU19NQVAiLCJPYmplY3QiLCJmcmVlemUiLCJub1Jlc2V0IiwidmVyYm9zaXR5IiwiYW5kcm9pZFN0b3JhZ2UiLCJtYXJpb25ldHRlUG9ydCIsInN5c3RlbVBvcnQiLCJHZWNrb1Byb3h5IiwiSldQcm94eSIsInByb3h5Q29tbWFuZCIsInVybCIsIm1ldGhvZCIsImJvZHkiLCJkaWRQcm9jZXNzRXhpdCIsImVycm9ycyIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJHZWNrb0RyaXZlclByb2Nlc3MiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJvcHROYW1lIiwicHJvcE5hbWUiLCJfIiwidG9QYWlycyIsInByb2MiLCJpc1J1bm5pbmciLCJpbml0IiwicG9ydCIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJlIiwiRXJyb3IiLCJkcml2ZXJCaW4iLCJmcyIsIndoaWNoIiwiYXJncyIsInRvTG93ZXIiLCJWRVJCT1NJVFkiLCJERUJVRyIsInB1c2giLCJUUkFDRSIsImlzTmlsIiwiaW5mbyIsIlN1YlByb2Nlc3MiLCJvbiIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJ0cmltIiwiZGVidWciLCJjb2RlIiwic2lnbmFsIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0Iiwic3RvcCIsImtpbGwiLCJpZ24iLCJSVU5OSU5HX1BST0NFU1NfSURTIiwicHJvY2VzcyIsIm9uY2UiLCJwaWQiLCJjb21tYW5kIiwiR2Vja29Ecml2ZXJTZXJ2ZXIiLCJjYXBzIiwicHJveHkiLCJnZWNrb0NhcHMiLCJzZXJ2ZXIiLCJiYXNlIiwia2VlcEFsaXZlIiwiZXJyIiwibWVzc2FnZSIsIndhaXRNcyIsImludGVydmFsTXMiLCJ0ZXN0IiwicHVsbCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInNlc3Npb25JZCIsIndhcm4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxnQkFBT0MsU0FBUCxDQUFpQixtQkFBakIsQ0FBWjs7QUFFQSxNQUFNQyxTQUFTLEdBQUksY0FBYUMsZ0JBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUFqRTtBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUF6Qjs7QUFDQSxNQUFNQyxrQkFBa0IsR0FBR0MsY0FBS0MsZ0JBQUwsQ0FDekJDLGNBQUtDLE9BQUwsQ0FBYUMsWUFBR0MsTUFBSCxFQUFiLEVBQTBCLHlCQUExQixDQUR5QixFQUV6QjtBQUFDQyxFQUFBQSxPQUFPLEVBQUUsQ0FBVjtBQUFhQyxFQUFBQSxXQUFXLEVBQUU7QUFBMUIsQ0FGeUIsQ0FBM0I7O0FBSUEsTUFBTUMsdUJBQXVCLEdBQUcsSUFBaEM7QUFDQSxNQUFNQyxpQ0FBaUMsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWM7QUFDdERDLEVBQUFBLE9BQU8sRUFBRSxTQUQ2QztBQUV0REMsRUFBQUEsU0FBUyxFQUFFLFdBRjJDO0FBR3REQyxFQUFBQSxjQUFjLEVBQUUsZ0JBSHNDO0FBSXREQyxFQUFBQSxjQUFjLEVBQUUsZ0JBSnNDO0FBS3REQyxFQUFBQSxVQUFVLEVBQUU7QUFMMEMsQ0FBZCxDQUExQzs7QUFTQSxN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OztBQWxGcUI7O2VBcUZUTyxpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBKV1Byb3h5LCBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCB7IGZzLCBsb2dnZXIsIHV0aWwsIHN5c3RlbSB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBmaW5kQVBvcnROb3RJblVzZSB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBWRVJCT1NJVFkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0dlY2tvRHJpdmVyU2VydmVyJyk7XG5cbmNvbnN0IEdEX0JJTkFSWSA9IGBnZWNrb2RyaXZlciR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcbmNvbnN0IFNUQVJUVVBfVElNRU9VVF9NUyA9IDEwMDAwOyAvLyAxMCBzZWNvbmRzXG5jb25zdCBHRUNLT19QT1JUX1JBTkdFID0gWzUyMDAsIDUzMDBdO1xuY29uc3QgR0VDS09fU0VSVkVSX0dVQVJEID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKFxuICBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksICdnZWNrb19zZXJ2ZXJfZ3VhcmQubG9jaycpLFxuICB7dGltZW91dDogNSwgdHJ5UmVjb3Zlcnk6IHRydWV9XG4pO1xuY29uc3QgREVGQVVMVF9NQVJJT05FVFRFX1BPUlQgPSAyODI4O1xuY29uc3QgUFJPQ0VTU19TUEVDSUZJQ19PUFRJT05fTkFNRVNfTUFQID0gT2JqZWN0LmZyZWV6ZSh7XG4gIG5vUmVzZXQ6ICdub1Jlc2V0JyxcbiAgdmVyYm9zaXR5OiAndmVyYm9zaXR5JyxcbiAgYW5kcm9pZFN0b3JhZ2U6ICdhbmRyb2lkU3RvcmFnZScsXG4gIG1hcmlvbmV0dGVQb3J0OiAnbWFyaW9uZXR0ZVBvcnQnLFxuICBzeXN0ZW1Qb3J0OiAncG9ydCcsXG59KTtcblxuXG5jbGFzcyBHZWNrb1Byb3h5IGV4dGVuZHMgSldQcm94eSB7XG4gIGFzeW5jIHByb3h5Q29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZENvbnRleHRFcnJvcihcbiAgICAgICAgYCcke21ldGhvZH0gJHt1cmx9JyBjYW5ub3QgYmUgcHJveGllZCB0byBHZWNrbyBEcml2ZXIgc2VydmVyIGJlY2F1c2UgYCArXG4gICAgICAgICdpdHMgcHJvY2VzcyBpcyBub3QgcnVubmluZyAocHJvYmFibHkgY3Jhc2hlZCkuIENoZWNrIHRoZSBBcHBpdW0gbG9nIGZvciBtb3JlIGRldGFpbHMnKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLnByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cbn1cblxuY2xhc3MgR2Vja29Ecml2ZXJQcm9jZXNzIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIGZvciAoY29uc3QgW29wdE5hbWUsIHByb3BOYW1lXSBvZiBfLnRvUGFpcnMoUFJPQ0VTU19TUEVDSUZJQ19PUFRJT05fTkFNRVNfTUFQKSkge1xuICAgICAgdGhpc1twcm9wTmFtZV0gPSBvcHRzW29wdE5hbWVdO1xuICAgIH1cbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvYz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGluaXQgKCkge1xuICAgIGlmICh0aGlzLmlzUnVubmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wb3J0KSB7XG4gICAgICBhd2FpdCBHRUNLT19TRVJWRVJfR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBbc3RhcnRQb3J0LCBlbmRQb3J0XSA9IEdFQ0tPX1BPUlRfUkFOR0U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5wb3J0ID0gYXdhaXQgZmluZEFQb3J0Tm90SW5Vc2Uoc3RhcnRQb3J0LCBlbmRQb3J0KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3QgZmluZCBhbnkgZnJlZSBwb3J0IGluIHJhbmdlICR7c3RhcnRQb3J0fS4uJHtlbmRQb3J0fS4gYCArXG4gICAgICAgICAgICBgRG91YmxlIGNoZWNrIHRoZSBwcm9jZXNzZXMgdGhhdCBhcmUgbG9ja2luZyBwb3J0cyB3aXRoaW4gdGhpcyByYW5nZSBhbmQgdGVybWluYXRlIGAgK1xuICAgICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmUgb3Igc2V0IGFueSBmcmVlIHBvcnQgbnVtYmVyIHRvIHRoZSAnc3lzdGVtUG9ydCcgY2FwYWJpbGl0eWApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgZHJpdmVyQmluO1xuICAgIHRyeSB7XG4gICAgICBkcml2ZXJCaW4gPSBhd2FpdCBmcy53aGljaChHRF9CSU5BUlkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtHRF9CSU5BUll9IGJpbmFyeSBjYW5ub3QgYmUgZm91bmQgaW4gUEFUSC4gYCArXG4gICAgICAgIGBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIHByZXNlbnQgb24geW91ciBzeXN0ZW1gKTtcbiAgICB9XG4gICAgY29uc3QgYXJncyA9IFtdO1xuICAgIC8qICNyZWdpb24gT3B0aW9ucyAqL1xuICAgIHN3aXRjaCAoXy50b0xvd2VyKHRoaXMudmVyYm9zaXR5KSkge1xuICAgICAgY2FzZSBWRVJCT1NJVFkuREVCVUc6XG4gICAgICAgIGFyZ3MucHVzaCgnLXYnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZFUkJPU0lUWS5UUkFDRTpcbiAgICAgICAgYXJncy5wdXNoKCctdnYnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLm5vUmVzZXQpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1jb25uZWN0LWV4aXN0aW5nJyk7XG4gICAgICAvLyBodHRwczovL2ZpcmVmb3gtc291cmNlLWRvY3MubW96aWxsYS5vcmcvdGVzdGluZy9nZWNrb2RyaXZlci9GbGFncy5odG1sI2NvZGUtY29ubmVjdC1leGlzdGluZy1jb2RlXG4gICAgICBpZiAoXy5pc05pbCh0aGlzLm1hcmlvbmV0dGVQb3J0KSkge1xuICAgICAgICBsb2cuaW5mbyhgJ21hcmlvbmV0dGVQb3J0JyBjYXBhYmlsaXR5IHZhbHVlIGlzIG5vdCBwcm92aWRlZCB3aGlsZSAnbm9SZXNldCcgaXMgZW5hYmxlZGApO1xuICAgICAgICBsb2cuaW5mbyhgQXNzaWduaW5nICdtYXJpb25ldHRlUG9ydCcgdG8gdGhlIGRlZmF1bHQgdmFsdWUgKCR7REVGQVVMVF9NQVJJT05FVFRFX1BPUlR9KWApO1xuICAgICAgfVxuICAgICAgYXJncy5wdXNoKCctLW1hcmlvbmV0dGUtcG9ydCcsIHRoaXMubWFyaW9uZXR0ZVBvcnQgPz8gREVGQVVMVF9NQVJJT05FVFRFX1BPUlQpO1xuICAgIH0gZWxzZSBpZiAoIV8uaXNOaWwodGhpcy5tYXJpb25ldHRlUG9ydCkpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1tYXJpb25ldHRlLXBvcnQnLCB0aGlzLm1hcmlvbmV0dGVQb3J0KTtcbiAgICB9XG4gICAgLyogI2VuZHJlZ2lvbiAqL1xuXG4gICAgYXJncy5wdXNoKCctcCcsIHRoaXMucG9ydCk7XG4gICAgaWYgKHRoaXMuYW5kcm9pZFN0b3JhZ2UpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1hbmRyb2lkLXN0b3JhZ2UnLCB0aGlzLmFuZHJvaWRTdG9yYWdlKTtcbiAgICB9XG4gICAgdGhpcy5wcm9jID0gbmV3IFN1YlByb2Nlc3MoZHJpdmVyQmluLCBhcmdzKTtcbiAgICB0aGlzLnByb2Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IF8udHJpbShzdGRvdXQgfHwgc3RkZXJyKTtcbiAgICAgIGlmIChsaW5lKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgWyR7R0RfQklOQVJZfV0gJHtsaW5lfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucHJvYy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIGxvZy5pbmZvKGAke0dEX0JJTkFSWX0gaGFzIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWApO1xuICAgIH0pO1xuICAgIGxvZy5pbmZvKGBTdGFydGluZyAnJHtkcml2ZXJCaW59JyB3aXRoIGFyZ3MgJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gIH1cblxuICBhc3luYyBzdG9wICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdURVJNJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMga2lsbCAoKSB7XG4gICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Muc3RvcCgnU0lHS0lMTCcpO1xuICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBSVU5OSU5HX1BST0NFU1NfSURTID0gW107XG5wcm9jZXNzLm9uY2UoJ2V4aXQnLCAoKSA9PiB7XG4gIGZvciAoY29uc3QgcGlkIG9mIFJVTk5JTkdfUFJPQ0VTU19JRFMpIHtcbiAgICBjb25zdCBjb21tYW5kID0gc3lzdGVtLmlzV2luZG93cygpID8gYHRhc2traWxsLmV4ZSAvUElEICR7cGlkfWAgOiBga2lsbCAke3BpZH1gO1xuICAgIHRyeSB7XG4gICAgICBleGVjU3luYyhjb21tYW5kKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbn0pO1xuXG5jbGFzcyBHZWNrb0RyaXZlclNlcnZlciB7XG4gIGNvbnN0cnVjdG9yIChjYXBzKSB7XG4gICAgdGhpcy5wcm9jZXNzID0gbmV3IEdlY2tvRHJpdmVyUHJvY2VzcyhjYXBzKTtcbiAgICB0aGlzLnByb3h5ID0gbnVsbDtcbiAgfVxuXG4gIGdldCBpc1J1bm5pbmcgKCkge1xuICAgIHJldHVybiAhISh0aGlzLnByb2Nlc3M/LmlzUnVubmluZyk7XG4gIH1cblxuICBhc3luYyBzdGFydCAoZ2Vja29DYXBzKSB7XG4gICAgYXdhaXQgdGhpcy5wcm9jZXNzLmluaXQoKTtcblxuICAgIHRoaXMucHJveHkgPSBuZXcgR2Vja29Qcm94eSh7XG4gICAgICBzZXJ2ZXI6ICcxMjcuMC4wLjEnLFxuICAgICAgcG9ydDogdGhpcy5wcm9jZXNzLnBvcnQsXG4gICAgICBiYXNlOiAnJyxcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gZmFsc2U7XG4gICAgdGhpcy5wcm9jZXNzLnByb2Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gICAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgd2FpdE1zOiBTVEFSVFVQX1RJTUVPVVRfTVMsXG4gICAgICAgIGludGVydmFsTXM6IDEwMDAsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAodGhpcy5wcm9jZXNzLmlzUnVubmluZykge1xuICAgICAgICAvLyBhdm9pZCBcImZyb3plblwiIHByb2Nlc3NlcyxcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzLmtpbGwoKTtcbiAgICAgIH1cbiAgICAgIGlmICgvQ29uZGl0aW9uIHVubWV0Ly50ZXN0KGUubWVzc2FnZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHZWNrbyBEcml2ZXIgc2VydmVyIGlzIG5vdCBsaXN0ZW5pbmcgd2l0aGluICR7U1RBUlRVUF9USU1FT1VUX01TfW1zIHRpbWVvdXQuIGAgK1xuICAgICAgICAgIGBNYWtlIHN1cmUgaXQgY291bGQgYmUgc3RhcnRlZCBtYW51YWxseSBmcm9tIGEgdGVybWluYWxgKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIGNvbnN0IHBpZCA9IHRoaXMucHJvY2Vzcy5wcm9jLnBpZDtcbiAgICBSVU5OSU5HX1BST0NFU1NfSURTLnB1c2gocGlkKTtcbiAgICB0aGlzLnByb2Nlc3MucHJvYy5vbignZXhpdCcsICgpID0+IHZvaWQgXy5wdWxsKFJVTk5JTkdfUFJPQ0VTU19JRFMsIHBpZCkpO1xuXG4gICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKCcvc2Vzc2lvbicsICdQT1NUJywge1xuICAgICAgY2FwYWJpbGl0aWVzOiB7XG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICAgIGFsd2F5c01hdGNoOiBnZWNrb0NhcHMsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdG9wICgpIHtcbiAgICBpZiAoIXRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICBsb2cuaW5mbyhgR2Vja28gRHJpdmVyIHNlc3Npb24gY2Fubm90IGJlIHN0b3BwZWQsIGJlY2F1c2UgdGhlIHNlcnZlciBpcyBub3QgcnVubmluZ2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3h5Py5zZXNzaW9uSWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZChgL3Nlc3Npb24vJHt0aGlzLnByb3h5LnNlc3Npb25JZH1gLCAnREVMRVRFJyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZy5pbmZvKGBHZWNrbyBEcml2ZXIgc2Vzc2lvbiBjYW5ub3QgYmUgZGVsZXRlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3Muc3RvcCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGBHZWNrbyBEcml2ZXIgcHJvY2VzcyBjYW5ub3QgYmUgc3RvcHBlZCAoJHtlLm1lc3NhZ2V9KS4gS2lsbGluZyBpdCBmb3JjZWZ1bGx5YCk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3Mua2lsbCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHZWNrb0RyaXZlclNlcnZlcjtcbiJdLCJmaWxlIjoibGliL2dlY2tvLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -7,12 +7,12 @@ exports.default = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _appiumSupport = require("appium-support");
10
+ var _support = require("@appium/support");
11
11
 
12
- const log = _appiumSupport.logger.getLogger('GeckoDriver');
12
+ const log = _support.logger.getLogger('GeckoDriver');
13
13
 
14
14
  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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLHNCQUFPQyxTQUFQLENBQWlCLGFBQWpCLENBQVo7O2VBRWVGLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0dlY2tvRHJpdmVyJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
18
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLGFBQWpCLENBQVo7O2VBRWVGLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdHZWNrb0RyaXZlcicpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwiZmlsZSI6ImxpYi9sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -11,7 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _logger = _interopRequireDefault(require("./logger"));
13
13
 
14
- var _appiumBaseDriver = require("appium-base-driver");
14
+ var _baseDriver = require("@appium/base-driver");
15
15
 
16
16
  var _driver = _interopRequireDefault(require("./driver"));
17
17
 
@@ -20,8 +20,8 @@ async function startServer(port, address) {
20
20
  port,
21
21
  address
22
22
  });
23
- let routeConfiguringFunction = (0, _appiumBaseDriver.routeConfiguringFunction)(d);
24
- let server = await (0, _appiumBaseDriver.server)({
23
+ let routeConfiguringFunction = (0, _baseDriver.routeConfiguringFunction)(d);
24
+ let server = await (0, _baseDriver.server)({
25
25
  routeConfiguringFunction,
26
26
  port,
27
27
  hostname: address
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXIuanMiXSwibmFtZXMiOlsic3RhcnRTZXJ2ZXIiLCJwb3J0IiwiYWRkcmVzcyIsImQiLCJHZWNrb0RyaXZlciIsInJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiIsInNlcnZlciIsImhvc3RuYW1lIiwibG9nIiwiaW5mbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxlQUFlQSxXQUFmLENBQTRCQyxJQUE1QixFQUFrQ0MsT0FBbEMsRUFBMkM7QUFDekMsTUFBSUMsQ0FBQyxHQUFHLElBQUlDLGVBQUosQ0FBZ0I7QUFBQ0gsSUFBQUEsSUFBRDtBQUFPQyxJQUFBQTtBQUFQLEdBQWhCLENBQVI7QUFDQSxNQUFJRyx3QkFBd0IsR0FBRyxnREFBV0YsQ0FBWCxDQUEvQjtBQUNBLE1BQUlHLE1BQU0sR0FBRyxNQUFNLDhCQUFXO0FBQUNELElBQUFBLHdCQUFEO0FBQTJCSixJQUFBQSxJQUEzQjtBQUFpQ00sSUFBQUEsUUFBUSxFQUFFTDtBQUEzQyxHQUFYLENBQW5COztBQUNBTSxrQkFBSUMsSUFBSixDQUFVLDJDQUEwQ1AsT0FBUSxJQUFHRCxJQUFLLEVBQXBFOztBQUNBLFNBQU9LLE1BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgc2VydmVyIGFzIGJhc2VTZXJ2ZXIsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiBhcyBtYWtlUm91dGVyIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCBHZWNrb0RyaXZlciBmcm9tICcuL2RyaXZlcic7XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0U2VydmVyIChwb3J0LCBhZGRyZXNzKSB7XG4gIGxldCBkID0gbmV3IEdlY2tvRHJpdmVyKHtwb3J0LCBhZGRyZXNzfSk7XG4gIGxldCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gPSBtYWtlUm91dGVyKGQpO1xuICBsZXQgc2VydmVyID0gYXdhaXQgYmFzZVNlcnZlcih7cm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBwb3J0LCBob3N0bmFtZTogYWRkcmVzc30pO1xuICBsb2cuaW5mbyhgR2Vja28gRHJpdmVyIHNlcnZlciBsaXN0ZW5pbmcgb24gaHR0cDovLyR7YWRkcmVzc306JHtwb3J0fWApO1xuICByZXR1cm4gc2VydmVyO1xufVxuXG5leHBvcnQgeyBzdGFydFNlcnZlciB9O1xuIl0sImZpbGUiOiJsaWIvc2VydmVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
36
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXIuanMiXSwibmFtZXMiOlsic3RhcnRTZXJ2ZXIiLCJwb3J0IiwiYWRkcmVzcyIsImQiLCJHZWNrb0RyaXZlciIsInJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiIsInNlcnZlciIsImhvc3RuYW1lIiwibG9nIiwiaW5mbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7QUFFQSxlQUFlQSxXQUFmLENBQTRCQyxJQUE1QixFQUFrQ0MsT0FBbEMsRUFBMkM7QUFDekMsTUFBSUMsQ0FBQyxHQUFHLElBQUlDLGVBQUosQ0FBZ0I7QUFBQ0gsSUFBQUEsSUFBRDtBQUFPQyxJQUFBQTtBQUFQLEdBQWhCLENBQVI7QUFDQSxNQUFJRyx3QkFBd0IsR0FBRywwQ0FBV0YsQ0FBWCxDQUEvQjtBQUNBLE1BQUlHLE1BQU0sR0FBRyxNQUFNLHdCQUFXO0FBQUNELElBQUFBLHdCQUFEO0FBQTJCSixJQUFBQSxJQUEzQjtBQUFpQ00sSUFBQUEsUUFBUSxFQUFFTDtBQUEzQyxHQUFYLENBQW5COztBQUNBTSxrQkFBSUMsSUFBSixDQUFVLDJDQUEwQ1AsT0FBUSxJQUFHRCxJQUFLLEVBQXBFOztBQUNBLFNBQU9LLE1BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHtcbiAgc2VydmVyIGFzIGJhc2VTZXJ2ZXIsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiBhcyBtYWtlUm91dGVyXG59IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IEdlY2tvRHJpdmVyIGZyb20gJy4vZHJpdmVyJztcblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2ZXIgKHBvcnQsIGFkZHJlc3MpIHtcbiAgbGV0IGQgPSBuZXcgR2Vja29Ecml2ZXIoe3BvcnQsIGFkZHJlc3N9KTtcbiAgbGV0IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiA9IG1ha2VSb3V0ZXIoZCk7XG4gIGxldCBzZXJ2ZXIgPSBhd2FpdCBiYXNlU2VydmVyKHtyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sIHBvcnQsIGhvc3RuYW1lOiBhZGRyZXNzfSk7XG4gIGxvZy5pbmZvKGBHZWNrbyBEcml2ZXIgc2VydmVyIGxpc3RlbmluZyBvbiBodHRwOi8vJHthZGRyZXNzfToke3BvcnR9YCk7XG4gIHJldHVybiBzZXJ2ZXI7XG59XG5cbmV4cG9ydCB7IHN0YXJ0U2VydmVyIH07XG4iXSwiZmlsZSI6ImxpYi9zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -27,8 +27,12 @@ function formatCapsForServer(caps) {
27
27
  }
28
28
  }
29
29
 
30
+ if (result.platformName) {
31
+ result.platformName = _lodash.default.toLower(result.platformName);
32
+ }
33
+
30
34
  return result;
31
35
  }require('source-map-support').install();
32
36
 
33
37
 
34
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlscy5qcyJdLCJuYW1lcyI6WyJHRUNLT19DQVBfUFJFRklYRVMiLCJTVEFOREFSRF9DQVBTIiwiZm9ybWF0Q2Fwc0ZvclNlcnZlciIsImNhcHMiLCJyZXN1bHQiLCJicm93c2VyTmFtZSIsIm5hbWUiLCJ2YWx1ZSIsIl8iLCJ0b1BhaXJzIiwic29tZSIsInByZWZpeCIsInN0YXJ0c1dpdGgiLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxrQkFBa0IsR0FBRyxDQUFDLE1BQUQsQ0FBM0I7QUFFQSxNQUFNQyxhQUFhLEdBQUcsQ0FDcEIsZ0JBRG9CLEVBRXBCLGNBRm9CLEVBR3BCLHFCQUhvQixFQUlwQixrQkFKb0IsRUFLcEIsT0FMb0IsRUFNcEIsZUFOb0IsRUFPcEIsVUFQb0IsRUFRcEIseUJBUm9CLENBQXRCOztBQVdBLFNBQVNDLG1CQUFULENBQThCQyxJQUE5QixFQUFvQztBQUNsQyxRQUFNQyxNQUFNLEdBQUcsRUFBZjs7QUFDQSxNQUFJRCxJQUFJLENBQUNFLFdBQVQsRUFBc0I7QUFDcEJELElBQUFBLE1BQU0sQ0FBQ0MsV0FBUCxHQUFxQixTQUFyQjtBQUNEOztBQUNELE9BQUssTUFBTSxDQUFDQyxJQUFELEVBQU9DLEtBQVAsQ0FBWCxJQUE0QkMsZ0JBQUVDLE9BQUYsQ0FBVU4sSUFBVixDQUE1QixFQUE2QztBQUMzQyxRQUFJSCxrQkFBa0IsQ0FBQ1UsSUFBbkIsQ0FBeUJDLE1BQUQsSUFBWUwsSUFBSSxDQUFDTSxVQUFMLENBQWdCRCxNQUFoQixDQUFwQyxLQUFnRVYsYUFBYSxDQUFDWSxRQUFkLENBQXVCUCxJQUF2QixDQUFwRSxFQUFrRztBQUNoR0YsTUFBQUEsTUFBTSxDQUFDRSxJQUFELENBQU4sR0FBZUMsS0FBZjtBQUNEO0FBQ0Y7O0FBQ0QsU0FBT0gsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgR0VDS09fQ0FQX1BSRUZJWEVTID0gWydtb3o6J107XG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNjYXBhYmlsaXRpZXNcbmNvbnN0IFNUQU5EQVJEX0NBUFMgPSBbXG4gICdicm93c2VyVmVyc2lvbicsXG4gICdwbGF0Zm9ybU5hbWUnLFxuICAnYWNjZXB0SW5zZWN1cmVDZXJ0cycsXG4gICdwYWdlTG9hZFN0cmF0ZWd5JyxcbiAgJ3Byb3h5JyxcbiAgJ3NldFdpbmRvd1JlY3QnLFxuICAndGltZW91dHMnLFxuICAndW5oYW5kbGVkUHJvbXB0QmVoYXZpb3InLFxuXTtcblxuZnVuY3Rpb24gZm9ybWF0Q2Fwc0ZvclNlcnZlciAoY2Fwcykge1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgaWYgKGNhcHMuYnJvd3Nlck5hbWUpIHtcbiAgICByZXN1bHQuYnJvd3Nlck5hbWUgPSAnZmlyZWZveCc7XG4gIH1cbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIF8udG9QYWlycyhjYXBzKSkge1xuICAgIGlmIChHRUNLT19DQVBfUFJFRklYRVMuc29tZSgocHJlZml4KSA9PiBuYW1lLnN0YXJ0c1dpdGgocHJlZml4KSkgfHwgU1RBTkRBUkRfQ0FQUy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCB7IGZvcm1hdENhcHNGb3JTZXJ2ZXIgfTtcbiJdLCJmaWxlIjoibGliL3V0aWxzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
38
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlscy5qcyJdLCJuYW1lcyI6WyJHRUNLT19DQVBfUFJFRklYRVMiLCJTVEFOREFSRF9DQVBTIiwiZm9ybWF0Q2Fwc0ZvclNlcnZlciIsImNhcHMiLCJyZXN1bHQiLCJicm93c2VyTmFtZSIsIm5hbWUiLCJ2YWx1ZSIsIl8iLCJ0b1BhaXJzIiwic29tZSIsInByZWZpeCIsInN0YXJ0c1dpdGgiLCJpbmNsdWRlcyIsInBsYXRmb3JtTmFtZSIsInRvTG93ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsa0JBQWtCLEdBQUcsQ0FBQyxNQUFELENBQTNCO0FBRUEsTUFBTUMsYUFBYSxHQUFHLENBQ3BCLGdCQURvQixFQUVwQixjQUZvQixFQUdwQixxQkFIb0IsRUFJcEIsa0JBSm9CLEVBS3BCLE9BTG9CLEVBTXBCLGVBTm9CLEVBT3BCLFVBUG9CLEVBUXBCLHlCQVJvQixDQUF0Qjs7QUFXQSxTQUFTQyxtQkFBVCxDQUE4QkMsSUFBOUIsRUFBb0M7QUFDbEMsUUFBTUMsTUFBTSxHQUFHLEVBQWY7O0FBQ0EsTUFBSUQsSUFBSSxDQUFDRSxXQUFULEVBQXNCO0FBQ3BCRCxJQUFBQSxNQUFNLENBQUNDLFdBQVAsR0FBcUIsU0FBckI7QUFDRDs7QUFDRCxPQUFLLE1BQU0sQ0FBQ0MsSUFBRCxFQUFPQyxLQUFQLENBQVgsSUFBNEJDLGdCQUFFQyxPQUFGLENBQVVOLElBQVYsQ0FBNUIsRUFBNkM7QUFDM0MsUUFBSUgsa0JBQWtCLENBQUNVLElBQW5CLENBQXlCQyxNQUFELElBQVlMLElBQUksQ0FBQ00sVUFBTCxDQUFnQkQsTUFBaEIsQ0FBcEMsS0FBZ0VWLGFBQWEsQ0FBQ1ksUUFBZCxDQUF1QlAsSUFBdkIsQ0FBcEUsRUFBa0c7QUFDaEdGLE1BQUFBLE1BQU0sQ0FBQ0UsSUFBRCxDQUFOLEdBQWVDLEtBQWY7QUFDRDtBQUNGOztBQUNELE1BQUlILE1BQU0sQ0FBQ1UsWUFBWCxFQUF5QjtBQUV2QlYsSUFBQUEsTUFBTSxDQUFDVSxZQUFQLEdBQXNCTixnQkFBRU8sT0FBRixDQUFVWCxNQUFNLENBQUNVLFlBQWpCLENBQXRCO0FBQ0Q7O0FBQ0QsU0FBT1YsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgR0VDS09fQ0FQX1BSRUZJWEVTID0gWydtb3o6J107XG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNjYXBhYmlsaXRpZXNcbmNvbnN0IFNUQU5EQVJEX0NBUFMgPSBbXG4gICdicm93c2VyVmVyc2lvbicsXG4gICdwbGF0Zm9ybU5hbWUnLFxuICAnYWNjZXB0SW5zZWN1cmVDZXJ0cycsXG4gICdwYWdlTG9hZFN0cmF0ZWd5JyxcbiAgJ3Byb3h5JyxcbiAgJ3NldFdpbmRvd1JlY3QnLFxuICAndGltZW91dHMnLFxuICAndW5oYW5kbGVkUHJvbXB0QmVoYXZpb3InLFxuXTtcblxuZnVuY3Rpb24gZm9ybWF0Q2Fwc0ZvclNlcnZlciAoY2Fwcykge1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgaWYgKGNhcHMuYnJvd3Nlck5hbWUpIHtcbiAgICByZXN1bHQuYnJvd3Nlck5hbWUgPSAnZmlyZWZveCc7XG4gIH1cbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIF8udG9QYWlycyhjYXBzKSkge1xuICAgIGlmIChHRUNLT19DQVBfUFJFRklYRVMuc29tZSgocHJlZml4KSA9PiBuYW1lLnN0YXJ0c1dpdGgocHJlZml4KSkgfHwgU1RBTkRBUkRfQ0FQUy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIGlmIChyZXN1bHQucGxhdGZvcm1OYW1lKSB7XG4gICAgLy8gR2Vja29kcml2ZXIgb25seSBzdXBwb3J0cyBsb3dlcmNhc2UgcGxhdGZvcm0gbmFtZXNcbiAgICByZXN1bHQucGxhdGZvcm1OYW1lID0gXy50b0xvd2VyKHJlc3VsdC5wbGF0Zm9ybU5hbWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCB7IGZvcm1hdENhcHNGb3JTZXJ2ZXIgfTtcbiJdLCJmaWxlIjoibGliL3V0aWxzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  require("source-map-support/register");
6
6
 
7
- var _wd = _interopRequireDefault(require("wd"));
7
+ var _webdriverio = require("webdriverio");
8
8
 
9
9
  var _ = require("../..");
10
10
 
@@ -36,21 +36,24 @@ describe('Desktop Gecko Driver', function () {
36
36
  }
37
37
  });
38
38
  beforeEach(async function () {
39
- driver = _wd.default.promiseChainRemote(_utils.HOST, _utils.PORT);
40
- await driver.init(CAPS);
39
+ driver = await (0, _webdriverio.remote)({
40
+ hostname: _utils.HOST,
41
+ port: _utils.PORT,
42
+ capabilities: CAPS
43
+ });
41
44
  });
42
45
  afterEach(async function () {
43
46
  if (driver) {
44
- await driver.quit();
47
+ await driver.deleteSession();
45
48
  driver = null;
46
49
  }
47
50
  });
48
51
  it('should start and stop a session', async function () {
49
- await driver.get('https://appium.io/');
50
- const button = await driver.elementByCss('#downloadLink');
51
- await button.text().should.eventually.eql('Download Appium');
52
+ await driver.url('https://appium.io/');
53
+ const button = await driver.$('#downloadLink');
54
+ await button.getText().should.eventually.eql('Download Appium');
52
55
  });
53
56
  });require('source-map-support').install();
54
57
 
55
58
 
56
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZnVuY3Rpb25hbC9kZXNrdG9wLWRyaXZlci1lMmUtc3BlY3MuanMiXSwibmFtZXMiOlsiY2hhaSIsInNob3VsZCIsInVzZSIsImNoYWlBc1Byb21pc2VkIiwiQ0FQUyIsImJyb3dzZXJOYW1lIiwicGxhdGZvcm1OYW1lIiwiZGVzY3JpYmUiLCJ0aW1lb3V0IiwiTU9DSEFfVElNRU9VVCIsInNlcnZlciIsImRyaXZlciIsImJlZm9yZSIsIlBPUlQiLCJIT1NUIiwiYWZ0ZXIiLCJjbG9zZSIsImJlZm9yZUVhY2giLCJ3ZCIsInByb21pc2VDaGFpblJlbW90ZSIsImluaXQiLCJhZnRlckVhY2giLCJxdWl0IiwiaXQiLCJnZXQiLCJidXR0b24iLCJlbGVtZW50QnlDc3MiLCJ0ZXh0IiwiZXZlbnR1YWxseSIsImVxbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUFBLGNBQUtDLE1BQUw7O0FBQ0FELGNBQUtFLEdBQUwsQ0FBU0MsdUJBQVQ7O0FBRUEsTUFBTUMsSUFBSSxHQUFHO0FBQ1hDLEVBQUFBLFdBQVcsRUFBRSxnQkFERjtBQUVYQyxFQUFBQSxZQUFZLEVBQUU7QUFGSCxDQUFiO0FBS0FDLFFBQVEsQ0FBQyxzQkFBRCxFQUF5QixZQUFZO0FBQzNDLE9BQUtDLE9BQUwsQ0FBYUMsb0JBQWI7QUFFQSxNQUFJQyxNQUFKO0FBQ0EsTUFBSUMsTUFBSjtBQUNBQyxFQUFBQSxNQUFNLENBQUMsa0JBQWtCO0FBQ3ZCRixJQUFBQSxNQUFNLEdBQUcsTUFBTSxtQkFBWUcsV0FBWixFQUFrQkMsV0FBbEIsQ0FBZjtBQUNELEdBRkssQ0FBTjtBQUdBQyxFQUFBQSxLQUFLLENBQUMsa0JBQWtCO0FBQ3RCLFFBQUlMLE1BQUosRUFBWTtBQUNWLFlBQU1BLE1BQU0sQ0FBQ00sS0FBUCxFQUFOO0FBQ0FOLE1BQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0Q7QUFDRixHQUxJLENBQUw7QUFNQU8sRUFBQUEsVUFBVSxDQUFDLGtCQUFrQjtBQUMzQk4sSUFBQUEsTUFBTSxHQUFHTyxZQUFHQyxrQkFBSCxDQUFzQkwsV0FBdEIsRUFBNEJELFdBQTVCLENBQVQ7QUFDQSxVQUFNRixNQUFNLENBQUNTLElBQVAsQ0FBWWhCLElBQVosQ0FBTjtBQUNELEdBSFMsQ0FBVjtBQUlBaUIsRUFBQUEsU0FBUyxDQUFDLGtCQUFrQjtBQUMxQixRQUFJVixNQUFKLEVBQVk7QUFDVixZQUFNQSxNQUFNLENBQUNXLElBQVAsRUFBTjtBQUNBWCxNQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNEO0FBQ0YsR0FMUSxDQUFUO0FBT0FZLEVBQUFBLEVBQUUsQ0FBQyxpQ0FBRCxFQUFvQyxrQkFBa0I7QUFDdEQsVUFBTVosTUFBTSxDQUFDYSxHQUFQLENBQVcsb0JBQVgsQ0FBTjtBQUNBLFVBQU1DLE1BQU0sR0FBRyxNQUFNZCxNQUFNLENBQUNlLFlBQVAsQ0FBb0IsZUFBcEIsQ0FBckI7QUFDQSxVQUFNRCxNQUFNLENBQUNFLElBQVAsR0FBYzFCLE1BQWQsQ0FBcUIyQixVQUFyQixDQUFnQ0MsR0FBaEMsQ0FBb0MsaUJBQXBDLENBQU47QUFDRCxHQUpDLENBQUY7QUFLRCxDQTlCTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHdkIGZyb20gJ3dkJztcbmltcG9ydCB7IHN0YXJ0U2VydmVyIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5pbXBvcnQgeyBIT1NULCBQT1JULCBNT0NIQV9USU1FT1VUIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jaGFpLnNob3VsZCgpO1xuY2hhaS51c2UoY2hhaUFzUHJvbWlzZWQpO1xuXG5jb25zdCBDQVBTID0ge1xuICBicm93c2VyTmFtZTogJ01vemlsbGFGaXJlZm94JyxcbiAgcGxhdGZvcm1OYW1lOiAnbGludXgnLFxufTtcblxuZGVzY3JpYmUoJ0Rlc2t0b3AgR2Vja28gRHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnRpbWVvdXQoTU9DSEFfVElNRU9VVCk7XG5cbiAgbGV0IHNlcnZlcjtcbiAgbGV0IGRyaXZlcjtcbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcihQT1JULCBIT1NUKTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2VydmVyKSB7XG4gICAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgIHNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gd2QucHJvbWlzZUNoYWluUmVtb3RlKEhPU1QsIFBPUlQpO1xuICAgIGF3YWl0IGRyaXZlci5pbml0KENBUFMpO1xuICB9KTtcbiAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZHJpdmVyKSB7XG4gICAgICBhd2FpdCBkcml2ZXIucXVpdCgpO1xuICAgICAgZHJpdmVyID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc3RhcnQgYW5kIHN0b3AgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGRyaXZlci5nZXQoJ2h0dHBzOi8vYXBwaXVtLmlvLycpO1xuICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IGRyaXZlci5lbGVtZW50QnlDc3MoJyNkb3dubG9hZExpbmsnKTtcbiAgICBhd2FpdCBidXR0b24udGV4dCgpLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnRG93bmxvYWQgQXBwaXVtJyk7XG4gIH0pO1xufSk7XG5cblxuIl0sImZpbGUiOiJ0ZXN0L2Z1bmN0aW9uYWwvZGVza3RvcC1kcml2ZXItZTJlLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
59
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZnVuY3Rpb25hbC9kZXNrdG9wLWRyaXZlci1lMmUtc3BlY3MuanMiXSwibmFtZXMiOlsiY2hhaSIsInNob3VsZCIsInVzZSIsImNoYWlBc1Byb21pc2VkIiwiQ0FQUyIsImJyb3dzZXJOYW1lIiwicGxhdGZvcm1OYW1lIiwiZGVzY3JpYmUiLCJ0aW1lb3V0IiwiTU9DSEFfVElNRU9VVCIsInNlcnZlciIsImRyaXZlciIsImJlZm9yZSIsIlBPUlQiLCJIT1NUIiwiYWZ0ZXIiLCJjbG9zZSIsImJlZm9yZUVhY2giLCJob3N0bmFtZSIsInBvcnQiLCJjYXBhYmlsaXRpZXMiLCJhZnRlckVhY2giLCJkZWxldGVTZXNzaW9uIiwiaXQiLCJ1cmwiLCJidXR0b24iLCIkIiwiZ2V0VGV4dCIsImV2ZW50dWFsbHkiLCJlcWwiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBQSxjQUFLQyxNQUFMOztBQUNBRCxjQUFLRSxHQUFMLENBQVNDLHVCQUFUOztBQUVBLE1BQU1DLElBQUksR0FBRztBQUNYQyxFQUFBQSxXQUFXLEVBQUUsZ0JBREY7QUFFWEMsRUFBQUEsWUFBWSxFQUFFO0FBRkgsQ0FBYjtBQUtBQyxRQUFRLENBQUMsc0JBQUQsRUFBeUIsWUFBWTtBQUMzQyxPQUFLQyxPQUFMLENBQWFDLG9CQUFiO0FBRUEsTUFBSUMsTUFBSjtBQUNBLE1BQUlDLE1BQUo7QUFDQUMsRUFBQUEsTUFBTSxDQUFDLGtCQUFrQjtBQUN2QkYsSUFBQUEsTUFBTSxHQUFHLE1BQU0sbUJBQVlHLFdBQVosRUFBa0JDLFdBQWxCLENBQWY7QUFDRCxHQUZLLENBQU47QUFHQUMsRUFBQUEsS0FBSyxDQUFDLGtCQUFrQjtBQUN0QixRQUFJTCxNQUFKLEVBQVk7QUFDVixZQUFNQSxNQUFNLENBQUNNLEtBQVAsRUFBTjtBQUNBTixNQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNEO0FBQ0YsR0FMSSxDQUFMO0FBTUFPLEVBQUFBLFVBQVUsQ0FBQyxrQkFBa0I7QUFDM0JOLElBQUFBLE1BQU0sR0FBRyxNQUFNLHlCQUFPO0FBQ3BCTyxNQUFBQSxRQUFRLEVBQUVKLFdBRFU7QUFFcEJLLE1BQUFBLElBQUksRUFBRU4sV0FGYztBQUdwQk8sTUFBQUEsWUFBWSxFQUFFaEI7QUFITSxLQUFQLENBQWY7QUFLRCxHQU5TLENBQVY7QUFPQWlCLEVBQUFBLFNBQVMsQ0FBQyxrQkFBa0I7QUFDMUIsUUFBSVYsTUFBSixFQUFZO0FBQ1YsWUFBTUEsTUFBTSxDQUFDVyxhQUFQLEVBQU47QUFDQVgsTUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDRDtBQUNGLEdBTFEsQ0FBVDtBQU9BWSxFQUFBQSxFQUFFLENBQUMsaUNBQUQsRUFBb0Msa0JBQWtCO0FBQ3RELFVBQU1aLE1BQU0sQ0FBQ2EsR0FBUCxDQUFXLG9CQUFYLENBQU47QUFDQSxVQUFNQyxNQUFNLEdBQUcsTUFBTWQsTUFBTSxDQUFDZSxDQUFQLENBQVMsZUFBVCxDQUFyQjtBQUNBLFVBQU1ELE1BQU0sQ0FBQ0UsT0FBUCxHQUFpQjFCLE1BQWpCLENBQXdCMkIsVUFBeEIsQ0FBbUNDLEdBQW5DLENBQXVDLGlCQUF2QyxDQUFOO0FBQ0QsR0FKQyxDQUFGO0FBS0QsQ0FqQ08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbW90ZSB9IGZyb20gJ3dlYmRyaXZlcmlvJztcbmltcG9ydCB7IHN0YXJ0U2VydmVyIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5pbXBvcnQgeyBIT1NULCBQT1JULCBNT0NIQV9USU1FT1VUIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jaGFpLnNob3VsZCgpO1xuY2hhaS51c2UoY2hhaUFzUHJvbWlzZWQpO1xuXG5jb25zdCBDQVBTID0ge1xuICBicm93c2VyTmFtZTogJ01vemlsbGFGaXJlZm94JyxcbiAgcGxhdGZvcm1OYW1lOiAnbGludXgnLFxufTtcblxuZGVzY3JpYmUoJ0Rlc2t0b3AgR2Vja28gRHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnRpbWVvdXQoTU9DSEFfVElNRU9VVCk7XG5cbiAgbGV0IHNlcnZlcjtcbiAgbGV0IGRyaXZlcjtcbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcihQT1JULCBIT1NUKTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2VydmVyKSB7XG4gICAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgIHNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gYXdhaXQgcmVtb3RlKHtcbiAgICAgIGhvc3RuYW1lOiBIT1NULFxuICAgICAgcG9ydDogUE9SVCxcbiAgICAgIGNhcGFiaWxpdGllczogQ0FQUyxcbiAgICB9KTtcbiAgfSk7XG4gIGFmdGVyRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGRyaXZlcikge1xuICAgICAgYXdhaXQgZHJpdmVyLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIGRyaXZlciA9IG51bGw7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHN0YXJ0IGFuZCBzdG9wIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBkcml2ZXIudXJsKCdodHRwczovL2FwcGl1bS5pby8nKTtcbiAgICBjb25zdCBidXR0b24gPSBhd2FpdCBkcml2ZXIuJCgnI2Rvd25sb2FkTGluaycpO1xuICAgIGF3YWl0IGJ1dHRvbi5nZXRUZXh0KCkuc2hvdWxkLmV2ZW50dWFsbHkuZXFsKCdEb3dubG9hZCBBcHBpdW0nKTtcbiAgfSk7XG59KTtcblxuXG4iXSwiZmlsZSI6InRlc3QvZnVuY3Rpb25hbC9kZXNrdG9wLWRyaXZlci1lMmUtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  require("source-map-support/register");
6
6
 
7
- var _wd = _interopRequireDefault(require("wd"));
7
+ var _webdriverio = require("webdriverio");
8
8
 
9
9
  var _ = require("../..");
10
10
 
@@ -20,12 +20,13 @@ _chai.default.use(_chaiAsPromised.default);
20
20
 
21
21
  const DEVICE_NAME = process.env.DEVICE_NAME || 'emulator-5554';
22
22
  const CAPS = {
23
- platformName: 'android',
23
+ platformName: 'linux',
24
24
  verbosity: 'trace',
25
25
  'moz:firefoxOptions': {
26
26
  androidDeviceSerial: DEVICE_NAME,
27
27
  androidPackage: 'org.mozilla.firefox'
28
- }
28
+ },
29
+ androidStorage: 'internal'
29
30
  };
30
31
  describe('Mobile GeckoDriver', function () {
31
32
  this.timeout(_utils.MOCHA_TIMEOUT);
@@ -45,21 +46,24 @@ describe('Mobile GeckoDriver', function () {
45
46
  }
46
47
  });
47
48
  beforeEach(async function () {
48
- driver = _wd.default.promiseChainRemote(_utils.HOST, _utils.PORT);
49
- await driver.init(CAPS);
49
+ driver = await (0, _webdriverio.remote)({
50
+ hostname: _utils.HOST,
51
+ port: _utils.PORT,
52
+ capabilities: CAPS
53
+ });
50
54
  });
51
55
  afterEach(async function () {
52
56
  if (driver) {
53
- await driver.quit();
57
+ await driver.deleteSession();
54
58
  driver = null;
55
59
  }
56
60
  });
57
61
  it('should start and stop a session', async function () {
58
- await driver.get('https://appium.io/');
59
- const button = await driver.elementByCss('#downloadLink');
60
- await button.text().should.eventually.eql('Download Appium');
62
+ await driver.url('https://appium.io/');
63
+ const button = await driver.$('#downloadLink');
64
+ await button.getText().should.eventually.eql('Download Appium');
61
65
  });
62
66
  });require('source-map-support').install();
63
67
 
64
68
 
65
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZnVuY3Rpb25hbC9tb2JpbGUtZHJpdmVyLWUyZS1zcGVjcy5qcyJdLCJuYW1lcyI6WyJjaGFpIiwic2hvdWxkIiwidXNlIiwiY2hhaUFzUHJvbWlzZWQiLCJERVZJQ0VfTkFNRSIsInByb2Nlc3MiLCJlbnYiLCJDQVBTIiwicGxhdGZvcm1OYW1lIiwidmVyYm9zaXR5IiwiYW5kcm9pZERldmljZVNlcmlhbCIsImFuZHJvaWRQYWNrYWdlIiwiZGVzY3JpYmUiLCJ0aW1lb3V0IiwiTU9DSEFfVElNRU9VVCIsInNlcnZlciIsImRyaXZlciIsImJlZm9yZSIsIkNJIiwic2tpcCIsIlBPUlQiLCJIT1NUIiwiYWZ0ZXIiLCJjbG9zZSIsImJlZm9yZUVhY2giLCJ3ZCIsInByb21pc2VDaGFpblJlbW90ZSIsImluaXQiLCJhZnRlckVhY2giLCJxdWl0IiwiaXQiLCJnZXQiLCJidXR0b24iLCJlbGVtZW50QnlDc3MiLCJ0ZXh0IiwiZXZlbnR1YWxseSIsImVxbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUFBLGNBQUtDLE1BQUw7O0FBQ0FELGNBQUtFLEdBQUwsQ0FBU0MsdUJBQVQ7O0FBRUEsTUFBTUMsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUYsV0FBWixJQUEyQixlQUEvQztBQUVBLE1BQU1HLElBQUksR0FBRztBQUNYQyxFQUFBQSxZQUFZLEVBQUUsU0FESDtBQUVYQyxFQUFBQSxTQUFTLEVBQUUsT0FGQTtBQUdYLHdCQUFzQjtBQUNwQkMsSUFBQUEsbUJBQW1CLEVBQUVOLFdBREQ7QUFFcEJPLElBQUFBLGNBQWMsRUFBRTtBQUZJO0FBSFgsQ0FBYjtBQVNBQyxRQUFRLENBQUMsb0JBQUQsRUFBdUIsWUFBWTtBQUN6QyxPQUFLQyxPQUFMLENBQWFDLG9CQUFiO0FBRUEsTUFBSUMsTUFBSjtBQUNBLE1BQUlDLE1BQUo7QUFDQUMsRUFBQUEsTUFBTSxDQUFDLGtCQUFrQjtBQUN2QixRQUFJWixPQUFPLENBQUNDLEdBQVIsQ0FBWVksRUFBaEIsRUFBb0I7QUFFbEIsYUFBTyxLQUFLQyxJQUFMLEVBQVA7QUFDRDs7QUFDREosSUFBQUEsTUFBTSxHQUFHLE1BQU0sbUJBQVlLLFdBQVosRUFBa0JDLFdBQWxCLENBQWY7QUFDRCxHQU5LLENBQU47QUFPQUMsRUFBQUEsS0FBSyxDQUFDLGtCQUFrQjtBQUN0QixRQUFJUCxNQUFKLEVBQVk7QUFDVixZQUFNQSxNQUFNLENBQUNRLEtBQVAsRUFBTjtBQUNBUixNQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNEO0FBQ0YsR0FMSSxDQUFMO0FBTUFTLEVBQUFBLFVBQVUsQ0FBQyxrQkFBa0I7QUFDM0JSLElBQUFBLE1BQU0sR0FBR1MsWUFBR0Msa0JBQUgsQ0FBc0JMLFdBQXRCLEVBQTRCRCxXQUE1QixDQUFUO0FBQ0EsVUFBTUosTUFBTSxDQUFDVyxJQUFQLENBQVlwQixJQUFaLENBQU47QUFDRCxHQUhTLENBQVY7QUFJQXFCLEVBQUFBLFNBQVMsQ0FBQyxrQkFBa0I7QUFDMUIsUUFBSVosTUFBSixFQUFZO0FBQ1YsWUFBTUEsTUFBTSxDQUFDYSxJQUFQLEVBQU47QUFDQWIsTUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDRDtBQUNGLEdBTFEsQ0FBVDtBQU9BYyxFQUFBQSxFQUFFLENBQUMsaUNBQUQsRUFBb0Msa0JBQWtCO0FBQ3RELFVBQU1kLE1BQU0sQ0FBQ2UsR0FBUCxDQUFXLG9CQUFYLENBQU47QUFDQSxVQUFNQyxNQUFNLEdBQUcsTUFBTWhCLE1BQU0sQ0FBQ2lCLFlBQVAsQ0FBb0IsZUFBcEIsQ0FBckI7QUFDQSxVQUFNRCxNQUFNLENBQUNFLElBQVAsR0FBY2pDLE1BQWQsQ0FBcUJrQyxVQUFyQixDQUFnQ0MsR0FBaEMsQ0FBb0MsaUJBQXBDLENBQU47QUFDRCxHQUpDLENBQUY7QUFLRCxDQWxDTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHdkIGZyb20gJ3dkJztcbmltcG9ydCB7IHN0YXJ0U2VydmVyIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5pbXBvcnQgeyBIT1NULCBQT1JULCBNT0NIQV9USU1FT1VUIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jaGFpLnNob3VsZCgpO1xuY2hhaS51c2UoY2hhaUFzUHJvbWlzZWQpO1xuXG5jb25zdCBERVZJQ0VfTkFNRSA9IHByb2Nlc3MuZW52LkRFVklDRV9OQU1FIHx8ICdlbXVsYXRvci01NTU0Jztcbi8vIFRoZSBGaXJlZm94IGJpbmFyeSBjb3VsZCBiZSByZXRyaWV2ZWQgZnJvbSBodHRwczovL3d3dy5tb3ppbGxhLm9yZy9lbi1HQi9maXJlZm94L2FsbC8jcHJvZHVjdC1hbmRyb2lkLXJlbGVhc2VcbmNvbnN0IENBUFMgPSB7XG4gIHBsYXRmb3JtTmFtZTogJ2FuZHJvaWQnLFxuICB2ZXJib3NpdHk6ICd0cmFjZScsXG4gICdtb3o6ZmlyZWZveE9wdGlvbnMnOiB7XG4gICAgYW5kcm9pZERldmljZVNlcmlhbDogREVWSUNFX05BTUUsXG4gICAgYW5kcm9pZFBhY2thZ2U6ICdvcmcubW96aWxsYS5maXJlZm94JyxcbiAgfSxcbn07XG5cbmRlc2NyaWJlKCdNb2JpbGUgR2Vja29Ecml2ZXInLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMudGltZW91dChNT0NIQV9USU1FT1VUKTtcblxuICBsZXQgc2VydmVyO1xuICBsZXQgZHJpdmVyO1xuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5DSSkge1xuICAgICAgLy8gRmlndXJlIG91dCBhIHdheSB0byBydW4gdGhpcyBvbiBBenVyZVxuICAgICAgcmV0dXJuIHRoaXMuc2tpcCgpO1xuICAgIH1cbiAgICBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcihQT1JULCBIT1NUKTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2VydmVyKSB7XG4gICAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgIHNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gd2QucHJvbWlzZUNoYWluUmVtb3RlKEhPU1QsIFBPUlQpO1xuICAgIGF3YWl0IGRyaXZlci5pbml0KENBUFMpO1xuICB9KTtcbiAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZHJpdmVyKSB7XG4gICAgICBhd2FpdCBkcml2ZXIucXVpdCgpO1xuICAgICAgZHJpdmVyID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc3RhcnQgYW5kIHN0b3AgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGRyaXZlci5nZXQoJ2h0dHBzOi8vYXBwaXVtLmlvLycpO1xuICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IGRyaXZlci5lbGVtZW50QnlDc3MoJyNkb3dubG9hZExpbmsnKTtcbiAgICBhd2FpdCBidXR0b24udGV4dCgpLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnRG93bmxvYWQgQXBwaXVtJyk7XG4gIH0pO1xufSk7XG5cblxuIl0sImZpbGUiOiJ0ZXN0L2Z1bmN0aW9uYWwvbW9iaWxlLWRyaXZlci1lMmUtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
69
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZnVuY3Rpb25hbC9tb2JpbGUtZHJpdmVyLWUyZS1zcGVjcy5qcyJdLCJuYW1lcyI6WyJjaGFpIiwic2hvdWxkIiwidXNlIiwiY2hhaUFzUHJvbWlzZWQiLCJERVZJQ0VfTkFNRSIsInByb2Nlc3MiLCJlbnYiLCJDQVBTIiwicGxhdGZvcm1OYW1lIiwidmVyYm9zaXR5IiwiYW5kcm9pZERldmljZVNlcmlhbCIsImFuZHJvaWRQYWNrYWdlIiwiYW5kcm9pZFN0b3JhZ2UiLCJkZXNjcmliZSIsInRpbWVvdXQiLCJNT0NIQV9USU1FT1VUIiwic2VydmVyIiwiZHJpdmVyIiwiYmVmb3JlIiwiQ0kiLCJza2lwIiwiUE9SVCIsIkhPU1QiLCJhZnRlciIsImNsb3NlIiwiYmVmb3JlRWFjaCIsImhvc3RuYW1lIiwicG9ydCIsImNhcGFiaWxpdGllcyIsImFmdGVyRWFjaCIsImRlbGV0ZVNlc3Npb24iLCJpdCIsInVybCIsImJ1dHRvbiIsIiQiLCJnZXRUZXh0IiwiZXZlbnR1YWxseSIsImVxbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUFBLGNBQUtDLE1BQUw7O0FBQ0FELGNBQUtFLEdBQUwsQ0FBU0MsdUJBQVQ7O0FBRUEsTUFBTUMsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUYsV0FBWixJQUEyQixlQUEvQztBQUVBLE1BQU1HLElBQUksR0FBRztBQUNYQyxFQUFBQSxZQUFZLEVBQUUsT0FESDtBQUdYQyxFQUFBQSxTQUFTLEVBQUUsT0FIQTtBQUlYLHdCQUFzQjtBQUNwQkMsSUFBQUEsbUJBQW1CLEVBQUVOLFdBREQ7QUFFcEJPLElBQUFBLGNBQWMsRUFBRTtBQUZJLEdBSlg7QUFRWEMsRUFBQUEsY0FBYyxFQUFFO0FBUkwsQ0FBYjtBQVdBQyxRQUFRLENBQUMsb0JBQUQsRUFBdUIsWUFBWTtBQUN6QyxPQUFLQyxPQUFMLENBQWFDLG9CQUFiO0FBRUEsTUFBSUMsTUFBSjtBQUNBLE1BQUlDLE1BQUo7QUFDQUMsRUFBQUEsTUFBTSxDQUFDLGtCQUFrQjtBQUN2QixRQUFJYixPQUFPLENBQUNDLEdBQVIsQ0FBWWEsRUFBaEIsRUFBb0I7QUFFbEIsYUFBTyxLQUFLQyxJQUFMLEVBQVA7QUFDRDs7QUFDREosSUFBQUEsTUFBTSxHQUFHLE1BQU0sbUJBQVlLLFdBQVosRUFBa0JDLFdBQWxCLENBQWY7QUFDRCxHQU5LLENBQU47QUFPQUMsRUFBQUEsS0FBSyxDQUFDLGtCQUFrQjtBQUN0QixRQUFJUCxNQUFKLEVBQVk7QUFDVixZQUFNQSxNQUFNLENBQUNRLEtBQVAsRUFBTjtBQUNBUixNQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNEO0FBQ0YsR0FMSSxDQUFMO0FBTUFTLEVBQUFBLFVBQVUsQ0FBQyxrQkFBa0I7QUFDM0JSLElBQUFBLE1BQU0sR0FBRyxNQUFNLHlCQUFPO0FBQ3BCUyxNQUFBQSxRQUFRLEVBQUVKLFdBRFU7QUFFcEJLLE1BQUFBLElBQUksRUFBRU4sV0FGYztBQUdwQk8sTUFBQUEsWUFBWSxFQUFFckI7QUFITSxLQUFQLENBQWY7QUFLRCxHQU5TLENBQVY7QUFPQXNCLEVBQUFBLFNBQVMsQ0FBQyxrQkFBa0I7QUFDMUIsUUFBSVosTUFBSixFQUFZO0FBQ1YsWUFBTUEsTUFBTSxDQUFDYSxhQUFQLEVBQU47QUFDQWIsTUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDRDtBQUNGLEdBTFEsQ0FBVDtBQU9BYyxFQUFBQSxFQUFFLENBQUMsaUNBQUQsRUFBb0Msa0JBQWtCO0FBQ3RELFVBQU1kLE1BQU0sQ0FBQ2UsR0FBUCxDQUFXLG9CQUFYLENBQU47QUFDQSxVQUFNQyxNQUFNLEdBQUcsTUFBTWhCLE1BQU0sQ0FBQ2lCLENBQVAsQ0FBUyxlQUFULENBQXJCO0FBQ0EsVUFBTUQsTUFBTSxDQUFDRSxPQUFQLEdBQWlCbEMsTUFBakIsQ0FBd0JtQyxVQUF4QixDQUFtQ0MsR0FBbkMsQ0FBdUMsaUJBQXZDLENBQU47QUFDRCxHQUpDLENBQUY7QUFLRCxDQXJDTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVtb3RlIH0gZnJvbSAnd2ViZHJpdmVyaW8nO1xuaW1wb3J0IHsgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCc7XG5pbXBvcnQgY2hhaSBmcm9tICdjaGFpJztcbmltcG9ydCB7IEhPU1QsIFBPUlQsIE1PQ0hBX1RJTUVPVVQgfSBmcm9tICcuLi91dGlscyc7XG5cbmNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cbmNvbnN0IERFVklDRV9OQU1FID0gcHJvY2Vzcy5lbnYuREVWSUNFX05BTUUgfHwgJ2VtdWxhdG9yLTU1NTQnO1xuLy8gVGhlIEZpcmVmb3ggYmluYXJ5IGNvdWxkIGJlIHJldHJpZXZlZCBmcm9tIGh0dHBzOi8vd3d3Lm1vemlsbGEub3JnL2VuLUdCL2ZpcmVmb3gvYWxsLyNwcm9kdWN0LWFuZHJvaWQtcmVsZWFzZVxuY29uc3QgQ0FQUyA9IHtcbiAgcGxhdGZvcm1OYW1lOiAnbGludXgnLFxuICAvLyBwbGF0Zm9ybU5hbWU6ICdtYWMnLFxuICB2ZXJib3NpdHk6ICd0cmFjZScsXG4gICdtb3o6ZmlyZWZveE9wdGlvbnMnOiB7XG4gICAgYW5kcm9pZERldmljZVNlcmlhbDogREVWSUNFX05BTUUsXG4gICAgYW5kcm9pZFBhY2thZ2U6ICdvcmcubW96aWxsYS5maXJlZm94JyxcbiAgfSxcbiAgYW5kcm9pZFN0b3JhZ2U6ICdpbnRlcm5hbCcsXG59O1xuXG5kZXNjcmliZSgnTW9iaWxlIEdlY2tvRHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnRpbWVvdXQoTU9DSEFfVElNRU9VVCk7XG5cbiAgbGV0IHNlcnZlcjtcbiAgbGV0IGRyaXZlcjtcbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuQ0kpIHtcbiAgICAgIC8vIEZpZ3VyZSBvdXQgYSB3YXkgdG8gcnVuIHRoaXMgb24gQXp1cmVcbiAgICAgIHJldHVybiB0aGlzLnNraXAoKTtcbiAgICB9XG4gICAgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoUE9SVCwgSE9TVCk7XG4gIH0pO1xuICBhZnRlcihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNlcnZlcikge1xuICAgICAgYXdhaXQgc2VydmVyLmNsb3NlKCk7XG4gICAgICBzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgfSk7XG4gIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGRyaXZlciA9IGF3YWl0IHJlbW90ZSh7XG4gICAgICBob3N0bmFtZTogSE9TVCxcbiAgICAgIHBvcnQ6IFBPUlQsXG4gICAgICBjYXBhYmlsaXRpZXM6IENBUFMsXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChkcml2ZXIpIHtcbiAgICAgIGF3YWl0IGRyaXZlci5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBkcml2ZXIgPSBudWxsO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdGFydCBhbmQgc3RvcCBhIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZHJpdmVyLnVybCgnaHR0cHM6Ly9hcHBpdW0uaW8vJyk7XG4gICAgY29uc3QgYnV0dG9uID0gYXdhaXQgZHJpdmVyLiQoJyNkb3dubG9hZExpbmsnKTtcbiAgICBhd2FpdCBidXR0b24uZ2V0VGV4dCgpLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnRG93bmxvYWQgQXBwaXVtJyk7XG4gIH0pO1xufSk7XG5cblxuIl0sImZpbGUiOiJ0ZXN0L2Z1bmN0aW9uYWwvbW9iaWxlLWRyaXZlci1lMmUtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -19,7 +19,7 @@ describe('formatCapsForServer', function () {
19
19
  const result = (0, _utils.formatCapsForServer)({
20
20
  browserName: 'yolo',
21
21
  browserVersion: '52',
22
- platformName: 'mac'
22
+ platformName: 'Mac'
23
23
  });
24
24
  result.should.eql({
25
25
  browserName: 'firefox',
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdW5pdC91dGlscy1zcGVjcy5qcyJdLCJuYW1lcyI6WyJjaGFpIiwic2hvdWxkIiwiZGVzY3JpYmUiLCJpdCIsInJlc3VsdCIsImVxbCIsImJyb3dzZXJOYW1lIiwiYnJvd3NlclZlcnNpb24iLCJwbGF0Zm9ybU5hbWUiLCJiYXIiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUVBQSxjQUFLQyxNQUFMOztBQUVBQyxRQUFRLENBQUMscUJBQUQsRUFBd0IsWUFBWTtBQUMxQ0MsRUFBQUEsRUFBRSxDQUFDLDBCQUFELEVBQTZCLFlBQVk7QUFDekMsVUFBTUMsTUFBTSxHQUFHLGdDQUFvQixFQUFwQixDQUFmO0FBQ0FBLElBQUFBLE1BQU0sQ0FBQ0gsTUFBUCxDQUFjSSxHQUFkLENBQWtCLEVBQWxCO0FBQ0QsR0FIQyxDQUFGO0FBS0FGLEVBQUFBLEVBQUUsQ0FBQyw0QkFBRCxFQUErQixZQUFZO0FBQzNDLFVBQU1DLE1BQU0sR0FBRyxnQ0FBb0I7QUFDakNFLE1BQUFBLFdBQVcsRUFBRSxNQURvQjtBQUVqQ0MsTUFBQUEsY0FBYyxFQUFFLElBRmlCO0FBR2pDQyxNQUFBQSxZQUFZLEVBQUU7QUFIbUIsS0FBcEIsQ0FBZjtBQUtBSixJQUFBQSxNQUFNLENBQUNILE1BQVAsQ0FBY0ksR0FBZCxDQUFrQjtBQUNoQkMsTUFBQUEsV0FBVyxFQUFFLFNBREc7QUFFaEJDLE1BQUFBLGNBQWMsRUFBRSxJQUZBO0FBR2hCQyxNQUFBQSxZQUFZLEVBQUU7QUFIRSxLQUFsQjtBQUtELEdBWEMsQ0FBRjtBQWFBTCxFQUFBQSxFQUFFLENBQUMsK0NBQUQsRUFBa0QsWUFBWTtBQUM5RCxVQUFNQyxNQUFNLEdBQUcsZ0NBQW9CO0FBQ2pDRyxNQUFBQSxjQUFjLEVBQUUsSUFEaUI7QUFFakNFLE1BQUFBLEdBQUcsRUFBRSxJQUY0QjtBQUdqQyxpQkFBVyxNQUhzQjtBQUlqQyxxQkFBZSxLQUprQjtBQUtqQyxvQkFBYztBQUxtQixLQUFwQixDQUFmO0FBT0FMLElBQUFBLE1BQU0sQ0FBQ0gsTUFBUCxDQUFjSSxHQUFkLENBQWtCO0FBQ2hCRSxNQUFBQSxjQUFjLEVBQUUsSUFEQTtBQUVoQixpQkFBVztBQUZLLEtBQWxCO0FBSUQsR0FaQyxDQUFGO0FBYUQsQ0FoQ08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdENhcHNGb3JTZXJ2ZXIgfSBmcm9tICcuLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5cbmNoYWkuc2hvdWxkKCk7XG5cbmRlc2NyaWJlKCdmb3JtYXRDYXBzRm9yU2VydmVyJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGZvcm1hdCBlbXB0eSBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdENhcHNGb3JTZXJ2ZXIoe30pO1xuICAgIHJlc3VsdC5zaG91bGQuZXFsKHt9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhc3NpZ24gZGVmYXVsdCBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdENhcHNGb3JTZXJ2ZXIoe1xuICAgICAgYnJvd3Nlck5hbWU6ICd5b2xvJyxcbiAgICAgIGJyb3dzZXJWZXJzaW9uOiAnNTInLFxuICAgICAgcGxhdGZvcm1OYW1lOiAnbWFjJyxcbiAgICB9KTtcbiAgICByZXN1bHQuc2hvdWxkLmVxbCh7XG4gICAgICBicm93c2VyTmFtZTogJ2ZpcmVmb3gnLFxuICAgICAgYnJvd3NlclZlcnNpb246ICc1MicsXG4gICAgICBwbGF0Zm9ybU5hbWU6ICdtYWMnLFxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG9ubHkgcGFzcyBjYXBzIHdpdGggc3VwcG9ydGVkIHByZWZpeGVzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdENhcHNGb3JTZXJ2ZXIoe1xuICAgICAgYnJvd3NlclZlcnNpb246ICc1MicsXG4gICAgICBiYXI6ICc2NycsXG4gICAgICAnbW96OmZvbyc6ICcxMjM0JyxcbiAgICAgICd3ZWJraXQ6eW9sbyc6ICc1NjcnLFxuICAgICAgJ2FwcGl1bTpiYXInOiAnNzg5JyxcbiAgICB9KTtcbiAgICByZXN1bHQuc2hvdWxkLmVxbCh7XG4gICAgICBicm93c2VyVmVyc2lvbjogJzUyJyxcbiAgICAgICdtb3o6Zm9vJzogJzEyMzQnLFxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sImZpbGUiOiJ0ZXN0L3VuaXQvdXRpbHMtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
46
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdW5pdC91dGlscy1zcGVjcy5qcyJdLCJuYW1lcyI6WyJjaGFpIiwic2hvdWxkIiwiZGVzY3JpYmUiLCJpdCIsInJlc3VsdCIsImVxbCIsImJyb3dzZXJOYW1lIiwiYnJvd3NlclZlcnNpb24iLCJwbGF0Zm9ybU5hbWUiLCJiYXIiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUVBQSxjQUFLQyxNQUFMOztBQUVBQyxRQUFRLENBQUMscUJBQUQsRUFBd0IsWUFBWTtBQUMxQ0MsRUFBQUEsRUFBRSxDQUFDLDBCQUFELEVBQTZCLFlBQVk7QUFDekMsVUFBTUMsTUFBTSxHQUFHLGdDQUFvQixFQUFwQixDQUFmO0FBQ0FBLElBQUFBLE1BQU0sQ0FBQ0gsTUFBUCxDQUFjSSxHQUFkLENBQWtCLEVBQWxCO0FBQ0QsR0FIQyxDQUFGO0FBS0FGLEVBQUFBLEVBQUUsQ0FBQyw0QkFBRCxFQUErQixZQUFZO0FBQzNDLFVBQU1DLE1BQU0sR0FBRyxnQ0FBb0I7QUFDakNFLE1BQUFBLFdBQVcsRUFBRSxNQURvQjtBQUVqQ0MsTUFBQUEsY0FBYyxFQUFFLElBRmlCO0FBR2pDQyxNQUFBQSxZQUFZLEVBQUU7QUFIbUIsS0FBcEIsQ0FBZjtBQUtBSixJQUFBQSxNQUFNLENBQUNILE1BQVAsQ0FBY0ksR0FBZCxDQUFrQjtBQUNoQkMsTUFBQUEsV0FBVyxFQUFFLFNBREc7QUFFaEJDLE1BQUFBLGNBQWMsRUFBRSxJQUZBO0FBR2hCQyxNQUFBQSxZQUFZLEVBQUU7QUFIRSxLQUFsQjtBQUtELEdBWEMsQ0FBRjtBQWFBTCxFQUFBQSxFQUFFLENBQUMsK0NBQUQsRUFBa0QsWUFBWTtBQUM5RCxVQUFNQyxNQUFNLEdBQUcsZ0NBQW9CO0FBQ2pDRyxNQUFBQSxjQUFjLEVBQUUsSUFEaUI7QUFFakNFLE1BQUFBLEdBQUcsRUFBRSxJQUY0QjtBQUdqQyxpQkFBVyxNQUhzQjtBQUlqQyxxQkFBZSxLQUprQjtBQUtqQyxvQkFBYztBQUxtQixLQUFwQixDQUFmO0FBT0FMLElBQUFBLE1BQU0sQ0FBQ0gsTUFBUCxDQUFjSSxHQUFkLENBQWtCO0FBQ2hCRSxNQUFBQSxjQUFjLEVBQUUsSUFEQTtBQUVoQixpQkFBVztBQUZLLEtBQWxCO0FBSUQsR0FaQyxDQUFGO0FBYUQsQ0FoQ08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdENhcHNGb3JTZXJ2ZXIgfSBmcm9tICcuLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5cbmNoYWkuc2hvdWxkKCk7XG5cbmRlc2NyaWJlKCdmb3JtYXRDYXBzRm9yU2VydmVyJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGZvcm1hdCBlbXB0eSBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdENhcHNGb3JTZXJ2ZXIoe30pO1xuICAgIHJlc3VsdC5zaG91bGQuZXFsKHt9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhc3NpZ24gZGVmYXVsdCBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdENhcHNGb3JTZXJ2ZXIoe1xuICAgICAgYnJvd3Nlck5hbWU6ICd5b2xvJyxcbiAgICAgIGJyb3dzZXJWZXJzaW9uOiAnNTInLFxuICAgICAgcGxhdGZvcm1OYW1lOiAnTWFjJyxcbiAgICB9KTtcbiAgICByZXN1bHQuc2hvdWxkLmVxbCh7XG4gICAgICBicm93c2VyTmFtZTogJ2ZpcmVmb3gnLFxuICAgICAgYnJvd3NlclZlcnNpb246ICc1MicsXG4gICAgICBwbGF0Zm9ybU5hbWU6ICdtYWMnLFxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG9ubHkgcGFzcyBjYXBzIHdpdGggc3VwcG9ydGVkIHByZWZpeGVzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdENhcHNGb3JTZXJ2ZXIoe1xuICAgICAgYnJvd3NlclZlcnNpb246ICc1MicsXG4gICAgICBiYXI6ICc2NycsXG4gICAgICAnbW96OmZvbyc6ICcxMjM0JyxcbiAgICAgICd3ZWJraXQ6eW9sbyc6ICc1NjcnLFxuICAgICAgJ2FwcGl1bTpiYXInOiAnNzg5JyxcbiAgICB9KTtcbiAgICByZXN1bHQuc2hvdWxkLmVxbCh7XG4gICAgICBicm93c2VyVmVyc2lvbjogJzUyJyxcbiAgICAgICdtb3o6Zm9vJzogJzEyMzQnLFxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sImZpbGUiOiJ0ZXN0L3VuaXQvdXRpbHMtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.MOCHA_TIMEOUT = exports.PORT = exports.HOST = void 0;
6
+ exports.PORT = exports.MOCHA_TIMEOUT = exports.HOST = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
package/gulpfile.js CHANGED
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  let gulp = require('gulp');
4
- let boilerplate = require('appium-gulp-plugins').boilerplate.use(gulp);
4
+ let boilerplate = require('@appium/gulp-plugins').boilerplate.use(gulp);
5
5
 
6
6
  boilerplate({
7
7
  build: 'appium-geckodriver',
8
+ files: ['index.js', 'lib/**/*.js', 'test/**/*.js', '!gulpfile.js'],
8
9
  coverage: {
9
10
  files: ['./test/unit/**/*-specs.js', '!./test/functional/**'],
10
11
  verbose: true
package/index.js CHANGED
@@ -1,14 +1,17 @@
1
1
  import GeckoDriver from './lib/driver';
2
2
  import { startServer } from './lib/server';
3
- import yargs from 'yargs';
4
3
  import { asyncify } from 'asyncbox';
5
4
 
6
5
  const DEFAULT_HOST = 'localhost';
7
6
  const DEFAULT_PORT = 4797;
8
7
 
9
8
  async function main () {
10
- let port = yargs.argv.port || yargs.argv.p || DEFAULT_PORT;
11
- let host = yargs.argv.host || yargs.argv.h || DEFAULT_HOST;
9
+ const getArgValue = (argName) => {
10
+ const argIndex = process.argv.indexOf(argName);
11
+ return argIndex > 0 ? process.argv[argIndex + 1] : null;
12
+ };
13
+ const port = parseInt(getArgValue('--port'), 10) || DEFAULT_PORT;
14
+ const host = getArgValue('--host') || DEFAULT_HOST;
12
15
  return await startServer(port, host);
13
16
  }
14
17
 
@@ -1,4 +1,4 @@
1
- import { util } from 'appium-support';
1
+ import { util } from '@appium/support';
2
2
 
3
3
 
4
4
  const commands = {};
@@ -28,6 +28,9 @@ const desiredCapConstraints = {
28
28
  systemPort: {
29
29
  isNumber: true
30
30
  },
31
+ marionettePort: {
32
+ isNumber: true
33
+ },
31
34
  verbosity: {
32
35
  isString: true,
33
36
  inclusionCaseInsensitive: Object.values(VERBOSITY)
package/lib/driver.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import _ from 'lodash';
2
- import { BaseDriver } from 'appium-base-driver';
2
+ import { BaseDriver } from '@appium/base-driver';
3
3
  import log from './logger';
4
4
  import GeckoDriverServer from './gecko';
5
5
  import { desiredCapConstraints } from './desired-caps';
package/lib/gecko.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import _ from 'lodash';
2
2
  import os from 'os';
3
3
  import path from 'path';
4
- import { JWProxy, errors } from 'appium-base-driver';
5
- import { fs, logger, util, system } from 'appium-support';
4
+ import { JWProxy, errors } from '@appium/base-driver';
5
+ import { fs, logger, util, system } from '@appium/support';
6
6
  import { SubProcess } from 'teen_process';
7
7
  import { waitForCondition } from 'asyncbox';
8
8
  import { findAPortNotInUse } from 'portscanner';
@@ -18,6 +18,14 @@ const GECKO_SERVER_GUARD = util.getLockFileGuard(
18
18
  path.resolve(os.tmpdir(), 'gecko_server_guard.lock'),
19
19
  {timeout: 5, tryRecovery: true}
20
20
  );
21
+ const DEFAULT_MARIONETTE_PORT = 2828;
22
+ const PROCESS_SPECIFIC_OPTION_NAMES_MAP = Object.freeze({
23
+ noReset: 'noReset',
24
+ verbosity: 'verbosity',
25
+ androidStorage: 'androidStorage',
26
+ marionettePort: 'marionettePort',
27
+ systemPort: 'port',
28
+ });
21
29
 
22
30
 
23
31
  class GeckoProxy extends JWProxy {
@@ -33,10 +41,9 @@ class GeckoProxy extends JWProxy {
33
41
 
34
42
  class GeckoDriverProcess {
35
43
  constructor (opts = {}) {
36
- for (const optName of ['noReset', 'verbosity', 'androidStorage']) {
37
- this[optName] = opts[optName];
44
+ for (const [optName, propName] of _.toPairs(PROCESS_SPECIFIC_OPTION_NAMES_MAP)) {
45
+ this[propName] = opts[optName];
38
46
  }
39
- this.port = opts.systemPort;
40
47
  this.proc = null;
41
48
  }
42
49
 
@@ -70,9 +77,8 @@ class GeckoDriverProcess {
70
77
  throw new Error(`${GD_BINARY} binary cannot be found in PATH. ` +
71
78
  `Please make sure it is present on your system`);
72
79
  }
73
- const args = [
74
- '-p', this.port,
75
- ];
80
+ const args = [];
81
+ /* #region Options */
76
82
  switch (_.toLower(this.verbosity)) {
77
83
  case VERBOSITY.DEBUG:
78
84
  args.push('-v');
@@ -83,9 +89,20 @@ class GeckoDriverProcess {
83
89
  }
84
90
  if (this.noReset) {
85
91
  args.push('--connect-existing');
92
+ // https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-connect-existing-code
93
+ 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})`);
96
+ }
97
+ args.push('--marionette-port', this.marionettePort ?? DEFAULT_MARIONETTE_PORT);
98
+ } else if (!_.isNil(this.marionettePort)) {
99
+ args.push('--marionette-port', this.marionettePort);
86
100
  }
101
+ /* #endregion */
102
+
103
+ args.push('-p', this.port);
87
104
  if (this.androidStorage) {
88
- args.push('–-android-storage', this.androidStorage);
105
+ args.push('--android-storage', this.androidStorage);
89
106
  }
90
107
  this.proc = new SubProcess(driverBin, args);
91
108
  this.proc.on('output', (stdout, stderr) => {
package/lib/logger.js CHANGED
@@ -1,4 +1,4 @@
1
- import { logger } from 'appium-support';
1
+ import { logger } from '@appium/support';
2
2
 
3
3
  const log = logger.getLogger('GeckoDriver');
4
4
 
package/lib/server.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import log from './logger';
2
- import { server as baseServer, routeConfiguringFunction as makeRouter } from 'appium-base-driver';
2
+ import {
3
+ server as baseServer, routeConfiguringFunction as makeRouter
4
+ } from '@appium/base-driver';
3
5
  import GeckoDriver from './driver';
4
6
 
5
7
  async function startServer (port, address) {
package/lib/utils.js CHANGED
@@ -23,6 +23,10 @@ function formatCapsForServer (caps) {
23
23
  result[name] = value;
24
24
  }
25
25
  }
26
+ if (result.platformName) {
27
+ // Geckodriver only supports lowercase platform names
28
+ result.platformName = _.toLower(result.platformName);
29
+ }
26
30
  return result;
27
31
  }
28
32
 
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "seamonkey",
8
8
  "firefox"
9
9
  ],
10
- "version": "0.3.0",
10
+ "version": "1.0.0",
11
11
  "author": "appium",
12
12
  "license": "Apache-2.0",
13
13
  "repository": {
@@ -37,16 +37,15 @@
37
37
  "lib": "lib"
38
38
  },
39
39
  "dependencies": {
40
+ "@appium/base-driver": "^8.2.3",
41
+ "@appium/support": "^2.55.3",
40
42
  "@babel/runtime": "^7.0.0",
41
- "appium-base-driver": "^7.1.0",
42
- "appium-support": "^2.46.0",
43
43
  "asyncbox": "^2.0.2",
44
44
  "bluebird": "^3.5.1",
45
45
  "lodash": "^4.17.4",
46
46
  "portscanner": "2.2.0",
47
- "source-map-support": "^0.5.5",
48
- "teen_process": "^1.15.0",
49
- "yargs": "^16.1.0"
47
+ "source-map-support": "^0.x",
48
+ "teen_process": "^1.15.0"
50
49
  },
51
50
  "scripts": {
52
51
  "build": "gulp transpile",
@@ -67,14 +66,20 @@
67
66
  "precommit-test"
68
67
  ],
69
68
  "devDependencies": {
70
- "appium-gulp-plugins": "^5.4.0",
69
+ "@appium/gulp-plugins": "^6.0.0",
70
+ "@appium/eslint-config-appium": "^5.0.0",
71
+ "@babel/core": "^7.16.0",
72
+ "@babel/eslint-parser": "^7.16.3",
71
73
  "chai": "^4.1.2",
72
74
  "chai-as-promised": "^7.1.1",
73
- "eslint-config-appium": "^4.0.1",
75
+ "eslint": "^7.32.0",
76
+ "eslint-plugin-import": "^2.25.3",
77
+ "eslint-plugin-mocha": "^9.0.0",
78
+ "eslint-plugin-promise": "^6.0.0",
74
79
  "gulp": "^4.0.0",
75
- "mocha": "^8.0.1",
80
+ "mocha": "^9.0.0",
76
81
  "pre-commit": "^1.1.3",
77
- "sinon": "^9.0.0",
78
- "wd": "^1.5.0"
82
+ "sinon": "^12.0.0",
83
+ "webdriverio": "^7.0.0"
79
84
  }
80
85
  }
@@ -1,4 +1,4 @@
1
- import wd from 'wd';
1
+ import { remote } from 'webdriverio';
2
2
  import { startServer } from '../..';
3
3
  import chaiAsPromised from 'chai-as-promised';
4
4
  import chai from 'chai';
@@ -27,20 +27,23 @@ describe('Desktop Gecko Driver', function () {
27
27
  }
28
28
  });
29
29
  beforeEach(async function () {
30
- driver = wd.promiseChainRemote(HOST, PORT);
31
- await driver.init(CAPS);
30
+ driver = await remote({
31
+ hostname: HOST,
32
+ port: PORT,
33
+ capabilities: CAPS,
34
+ });
32
35
  });
33
36
  afterEach(async function () {
34
37
  if (driver) {
35
- await driver.quit();
38
+ await driver.deleteSession();
36
39
  driver = null;
37
40
  }
38
41
  });
39
42
 
40
43
  it('should start and stop a session', async function () {
41
- await driver.get('https://appium.io/');
42
- const button = await driver.elementByCss('#downloadLink');
43
- await button.text().should.eventually.eql('Download Appium');
44
+ await driver.url('https://appium.io/');
45
+ const button = await driver.$('#downloadLink');
46
+ await button.getText().should.eventually.eql('Download Appium');
44
47
  });
45
48
  });
46
49
 
@@ -1,4 +1,4 @@
1
- import wd from 'wd';
1
+ import { remote } from 'webdriverio';
2
2
  import { startServer } from '../..';
3
3
  import chaiAsPromised from 'chai-as-promised';
4
4
  import chai from 'chai';
@@ -10,12 +10,14 @@ chai.use(chaiAsPromised);
10
10
  const DEVICE_NAME = process.env.DEVICE_NAME || 'emulator-5554';
11
11
  // The Firefox binary could be retrieved from https://www.mozilla.org/en-GB/firefox/all/#product-android-release
12
12
  const CAPS = {
13
- platformName: 'android',
13
+ platformName: 'linux',
14
+ // platformName: 'mac',
14
15
  verbosity: 'trace',
15
16
  'moz:firefoxOptions': {
16
17
  androidDeviceSerial: DEVICE_NAME,
17
18
  androidPackage: 'org.mozilla.firefox',
18
19
  },
20
+ androidStorage: 'internal',
19
21
  };
20
22
 
21
23
  describe('Mobile GeckoDriver', function () {
@@ -37,20 +39,23 @@ describe('Mobile GeckoDriver', function () {
37
39
  }
38
40
  });
39
41
  beforeEach(async function () {
40
- driver = wd.promiseChainRemote(HOST, PORT);
41
- await driver.init(CAPS);
42
+ driver = await remote({
43
+ hostname: HOST,
44
+ port: PORT,
45
+ capabilities: CAPS,
46
+ });
42
47
  });
43
48
  afterEach(async function () {
44
49
  if (driver) {
45
- await driver.quit();
50
+ await driver.deleteSession();
46
51
  driver = null;
47
52
  }
48
53
  });
49
54
 
50
55
  it('should start and stop a session', async function () {
51
- await driver.get('https://appium.io/');
52
- const button = await driver.elementByCss('#downloadLink');
53
- await button.text().should.eventually.eql('Download Appium');
56
+ await driver.url('https://appium.io/');
57
+ const button = await driver.$('#downloadLink');
58
+ await button.getText().should.eventually.eql('Download Appium');
54
59
  });
55
60
  });
56
61
 
@@ -13,7 +13,7 @@ describe('formatCapsForServer', function () {
13
13
  const result = formatCapsForServer({
14
14
  browserName: 'yolo',
15
15
  browserVersion: '52',
16
- platformName: 'mac',
16
+ platformName: 'Mac',
17
17
  });
18
18
  result.should.eql({
19
19
  browserName: 'firefox',