appium-safari-driver 3.2.2 → 3.2.4

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.
Files changed (43) hide show
  1. package/.eslintignore +1 -1
  2. package/.eslintrc.json +10 -0
  3. package/.github/workflows/functional-test.yml +55 -0
  4. package/.github/workflows/pr-title.yml +15 -0
  5. package/.github/workflows/publish.js.yml +4 -6
  6. package/.github/workflows/unit-test.yml +43 -0
  7. package/.mocharc.js +4 -0
  8. package/.releaserc +6 -4
  9. package/CHANGELOG.md +1 -0
  10. package/README.md +8 -3
  11. package/babel.config.json +25 -0
  12. package/build/index.js +2 -8
  13. package/build/index.js.map +1 -0
  14. package/build/lib/commands/cookies.js +2 -8
  15. package/build/lib/commands/cookies.js.map +1 -0
  16. package/build/lib/commands/find.js +3 -9
  17. package/build/lib/commands/find.js.map +1 -0
  18. package/build/lib/commands/index.js +4 -11
  19. package/build/lib/commands/index.js.map +1 -0
  20. package/build/lib/commands/record-screen.js +2 -64
  21. package/build/lib/commands/record-screen.js.map +1 -0
  22. package/build/lib/desired-caps.js +2 -6
  23. package/build/lib/desired-caps.js.map +1 -0
  24. package/build/lib/driver.js +4 -27
  25. package/build/lib/driver.js.map +1 -0
  26. package/build/lib/logger.js +2 -8
  27. package/build/lib/logger.js.map +1 -0
  28. package/build/lib/safari.js +2 -43
  29. package/build/lib/safari.js.map +1 -0
  30. package/build/lib/utils.js +2 -11
  31. package/build/lib/utils.js.map +1 -0
  32. package/npm-shrinkwrap.json +2091 -1153
  33. package/package.json +40 -22
  34. package/test/unit/driver-specs.js +1 -1
  35. package/.azure-pipelines.yml +0 -53
  36. package/.eslintrc +0 -3
  37. package/azure-templates/node_setup_steps.yml +0 -6
  38. package/build/test/functional/desktop-driver-e2e-specs.js +0 -48
  39. package/build/test/functional/mobile-driver-e2e-specs.js +0 -76
  40. package/build/test/unit/driver-specs.js +0 -20
  41. package/build/test/unit/utils-specs.js +0 -51
  42. package/build/test/utils.js +0 -18
  43. package/gulpfile.js +0 -13
@@ -1,85 +1,61 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  require("source-map-support/register");
11
-
12
9
  var _os = _interopRequireDefault(require("os"));
13
-
14
10
  var _path = _interopRequireDefault(require("path"));
15
-
16
11
  var _driver = require("appium/driver");
17
-
18
12
  var _support = require("appium/support");
19
-
20
13
  var _teen_process = require("teen_process");
21
-
22
14
  var _asyncbox = require("asyncbox");
23
-
24
15
  var _portscanner = require("portscanner");
25
-
26
16
  var _child_process = require("child_process");
27
-
28
17
  const SD_BINARY = 'safaridriver';
29
18
  const STARTUP_TIMEOUT = 10000;
30
19
  const SAFARI_PORT_RANGE = [5100, 5200];
31
-
32
20
  const SAFARI_SERVER_GUARD = _support.util.getLockFileGuard(_path.default.resolve(_os.default.tmpdir(), 'safari_server_guard.lock'), {
33
21
  timeout: 5,
34
22
  tryRecovery: true
35
23
  });
36
-
37
24
  class SafariProxy extends _driver.JWProxy {
38
25
  async proxyCommand(url, method, body = null) {
39
26
  if (this.didProcessExit) {
40
27
  throw new _driver.errors.InvalidContextError(`'${method} ${url}' cannot be proxied to Safari Driver server because ` + 'the process is not running (probably crashed). Check the server log for more details');
41
28
  }
42
-
43
29
  return await super.proxyCommand(url, method, body);
44
30
  }
45
-
46
31
  }
47
-
48
32
  class SafariDriverProcess {
49
33
  constructor() {
50
34
  this.log = _support.logger.getLogger('SafariDriverProcess');
51
35
  this.port = null;
52
36
  this.proc = null;
53
37
  }
54
-
55
38
  get isRunning() {
56
39
  var _this$proc;
57
-
58
40
  return !!((_this$proc = this.proc) !== null && _this$proc !== void 0 && _this$proc.isRunning);
59
41
  }
60
-
61
42
  async init() {
62
43
  await SAFARI_SERVER_GUARD(async () => {
63
44
  if (this.isRunning) {
64
45
  return;
65
46
  }
66
-
67
47
  const [startPort, endPort] = SAFARI_PORT_RANGE;
68
-
69
48
  try {
70
49
  this.port = await (0, _portscanner.findAPortNotInUse)(startPort, endPort);
71
50
  } catch (e) {
72
51
  throw new Error(`Cannot find any free port in range ${startPort}..${endPort}. ` + `Double check the processes that are locking ports within this range and terminate ` + `these which are not needed anymore`);
73
52
  }
74
-
75
53
  let safariBin;
76
-
77
54
  try {
78
55
  safariBin = await _support.fs.which(SD_BINARY);
79
56
  } catch (e) {
80
57
  throw new Error(`${SD_BINARY} binary cannot be found in PATH. ` + `Please make sure it is present on your system`);
81
58
  }
82
-
83
59
  this.proc = new _teen_process.SubProcess(safariBin, ['-p', this.port, '--diagnose']);
84
60
  this.proc.on('output', (stdout, stderr) => {
85
61
  const line = stdout || stderr;
@@ -92,7 +68,6 @@ class SafariDriverProcess {
92
68
  await this.proc.start(0);
93
69
  });
94
70
  }
95
-
96
71
  async kill() {
97
72
  if (this.isRunning) {
98
73
  try {
@@ -100,7 +75,6 @@ class SafariDriverProcess {
100
75
  } catch (ign) {}
101
76
  }
102
77
  }
103
-
104
78
  }
105
79
 
106
80
  const SAFARI_DRIVER_PROCESS = new SafariDriverProcess();
@@ -111,17 +85,14 @@ process.once('exit', () => {
111
85
  } catch (ign) {}
112
86
  }
113
87
  });
114
-
115
88
  class SafariDriverServer {
116
89
  constructor(log) {
117
90
  this.log = log;
118
91
  this.proxy = null;
119
92
  }
120
-
121
93
  get isRunning() {
122
94
  return !!SAFARI_DRIVER_PROCESS.isRunning;
123
95
  }
124
-
125
96
  async start(caps) {
126
97
  await SAFARI_DRIVER_PROCESS.init();
127
98
  this.proxy = new SafariProxy({
@@ -135,7 +106,6 @@ class SafariDriverServer {
135
106
  SAFARI_DRIVER_PROCESS.proc.on('exit', () => {
136
107
  this.proxy.didProcessExit = true;
137
108
  });
138
-
139
109
  try {
140
110
  await (0, _asyncbox.waitForCondition)(async () => {
141
111
  try {
@@ -145,7 +115,6 @@ class SafariDriverServer {
145
115
  if (this.proxy.didProcessExit) {
146
116
  throw new Error(err.message);
147
117
  }
148
-
149
118
  return false;
150
119
  }
151
120
  }, {
@@ -157,13 +126,10 @@ class SafariDriverServer {
157
126
  if (SAFARI_DRIVER_PROCESS.isRunning) {
158
127
  await SAFARI_DRIVER_PROCESS.kill();
159
128
  }
160
-
161
129
  throw new Error(`Safari Driver server is not listening within ${STARTUP_TIMEOUT}ms timeout. ` + `Make sure it has been executed manually at least once with '--enable' command line argument. ` + `Check the server log for more details`);
162
130
  }
163
-
164
131
  throw e;
165
132
  }
166
-
167
133
  await this.proxy.command('/session', 'POST', {
168
134
  capabilities: {
169
135
  firstMatch: [{}],
@@ -171,15 +137,12 @@ class SafariDriverServer {
171
137
  }
172
138
  });
173
139
  }
174
-
175
140
  async stop() {
176
141
  var _this$proxy;
177
-
178
142
  if (!this.isRunning) {
179
143
  this.log.info(`${SD_BINARY} session cannot be stopped, because the server is not running`);
180
144
  return;
181
145
  }
182
-
183
146
  if ((_this$proxy = this.proxy) !== null && _this$proxy !== void 0 && _this$proxy.sessionId) {
184
147
  try {
185
148
  await this.proxy.command(`/session/${this.proxy.sessionId}`, 'DELETE');
@@ -188,11 +151,7 @@ class SafariDriverServer {
188
151
  }
189
152
  }
190
153
  }
191
-
192
154
  }
193
-
194
155
  var _default = SafariDriverServer;
195
- exports.default = _default;require('source-map-support').install();
196
-
197
-
198
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3NhZmFyaS5qcyIsIm5hbWVzIjpbIlNEX0JJTkFSWSIsIlNUQVJUVVBfVElNRU9VVCIsIlNBRkFSSV9QT1JUX1JBTkdFIiwiU0FGQVJJX1NFUlZFUl9HVUFSRCIsInV0aWwiLCJnZXRMb2NrRmlsZUd1YXJkIiwicGF0aCIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInRpbWVvdXQiLCJ0cnlSZWNvdmVyeSIsIlNhZmFyaVByb3h5IiwiSldQcm94eSIsInByb3h5Q29tbWFuZCIsInVybCIsIm1ldGhvZCIsImJvZHkiLCJkaWRQcm9jZXNzRXhpdCIsImVycm9ycyIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJTYWZhcmlEcml2ZXJQcm9jZXNzIiwiY29uc3RydWN0b3IiLCJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJwb3J0IiwicHJvYyIsImlzUnVubmluZyIsImluaXQiLCJzdGFydFBvcnQiLCJlbmRQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJlIiwiRXJyb3IiLCJzYWZhcmlCaW4iLCJmcyIsIndoaWNoIiwiU3ViUHJvY2VzcyIsIm9uIiwic3Rkb3V0Iiwic3RkZXJyIiwibGluZSIsImRlYnVnIiwiY29kZSIsInNpZ25hbCIsImluZm8iLCJzdGFydCIsImtpbGwiLCJzdG9wIiwiaWduIiwiU0FGQVJJX0RSSVZFUl9QUk9DRVNTIiwicHJvY2VzcyIsIm9uY2UiLCJleGVjU3luYyIsInBpZCIsIlNhZmFyaURyaXZlclNlcnZlciIsInByb3h5IiwiY2FwcyIsInNlcnZlciIsImJhc2UiLCJrZWVwQWxpdmUiLCJ3YWl0Rm9yQ29uZGl0aW9uIiwiY29tbWFuZCIsImVyciIsIm1lc3NhZ2UiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwidGVzdCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInNlc3Npb25JZCJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9zYWZhcmkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyBmcywgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgU3ViUHJvY2VzcyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UgfSBmcm9tICdwb3J0c2Nhbm5lcic7XG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuXG5jb25zdCBTRF9CSU5BUlkgPSAnc2FmYXJpZHJpdmVyJztcbmNvbnN0IFNUQVJUVVBfVElNRU9VVCA9IDEwMDAwOyAvLyBzZWNvbmRzXG5jb25zdCBTQUZBUklfUE9SVF9SQU5HRSA9IFs1MTAwLCA1MjAwXTtcbi8vIFRoaXMgZ3VhcmQgaXMgbmVlZGVkIHRvIG1ha2Ugc3VyZVxuLy8gd2UgbmV2ZXIgcnVuIG11bHRpcGxlIFNhZmFyaSBkcml2ZXIgcHJvY2Vzc2VzIGZvciB0aGUgc2FtZSBBcHBpdW0gcHJvY2Vzc1xuY29uc3QgU0FGQVJJX1NFUlZFUl9HVUFSRCA9IHV0aWwuZ2V0TG9ja0ZpbGVHdWFyZChcbiAgcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCAnc2FmYXJpX3NlcnZlcl9ndWFyZC5sb2NrJyksXG4gIHt0aW1lb3V0OiA1LCB0cnlSZWNvdmVyeTogdHJ1ZX1cbik7XG5cblxuY2xhc3MgU2FmYXJpUHJveHkgZXh0ZW5kcyBKV1Byb3h5IHtcbiAgYXN5bmMgcHJveHlDb21tYW5kICh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBpZiAodGhpcy5kaWRQcm9jZXNzRXhpdCkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQ29udGV4dEVycm9yKFxuICAgICAgICBgJyR7bWV0aG9kfSAke3VybH0nIGNhbm5vdCBiZSBwcm94aWVkIHRvIFNhZmFyaSBEcml2ZXIgc2VydmVyIGJlY2F1c2UgYCArXG4gICAgICAgICd0aGUgcHJvY2VzcyBpcyBub3QgcnVubmluZyAocHJvYmFibHkgY3Jhc2hlZCkuIENoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHMnKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLnByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cbn1cblxuY2xhc3MgU2FmYXJpRHJpdmVyUHJvY2VzcyB7XG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICB0aGlzLmxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1NhZmFyaURyaXZlclByb2Nlc3MnKTtcbiAgICB0aGlzLnBvcnQgPSBudWxsO1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5wcm9jPy5pc1J1bm5pbmcpO1xuICB9XG5cbiAgYXN5bmMgaW5pdCAoKSB7XG4gICAgYXdhaXQgU0FGQVJJX1NFUlZFUl9HVUFSRChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBbc3RhcnRQb3J0LCBlbmRQb3J0XSA9IFNBRkFSSV9QT1JUX1JBTkdFO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5wb3J0ID0gYXdhaXQgZmluZEFQb3J0Tm90SW5Vc2Uoc3RhcnRQb3J0LCBlbmRQb3J0KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDYW5ub3QgZmluZCBhbnkgZnJlZSBwb3J0IGluIHJhbmdlICR7c3RhcnRQb3J0fS4uJHtlbmRQb3J0fS4gYCArXG4gICAgICAgICAgYERvdWJsZSBjaGVjayB0aGUgcHJvY2Vzc2VzIHRoYXQgYXJlIGxvY2tpbmcgcG9ydHMgd2l0aGluIHRoaXMgcmFuZ2UgYW5kIHRlcm1pbmF0ZSBgICtcbiAgICAgICAgICBgdGhlc2Ugd2hpY2ggYXJlIG5vdCBuZWVkZWQgYW55bW9yZWApO1xuICAgICAgfVxuXG4gICAgICBsZXQgc2FmYXJpQmluO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2FmYXJpQmluID0gYXdhaXQgZnMud2hpY2goU0RfQklOQVJZKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke1NEX0JJTkFSWX0gYmluYXJ5IGNhbm5vdCBiZSBmb3VuZCBpbiBQQVRILiBgICtcbiAgICAgICAgICBgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBwcmVzZW50IG9uIHlvdXIgc3lzdGVtYCk7XG4gICAgICB9XG4gICAgICB0aGlzLnByb2MgPSBuZXcgU3ViUHJvY2VzcyhzYWZhcmlCaW4sIFsnLXAnLCB0aGlzLnBvcnQsICctLWRpYWdub3NlJ10pO1xuICAgICAgdGhpcy5wcm9jLm9uKCdvdXRwdXQnLCAoc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgICAgY29uc3QgbGluZSA9IHN0ZG91dCB8fCBzdGRlcnI7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBbJHtTRF9CSU5BUll9XSAke2xpbmV9YCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvYy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgJHtTRF9CSU5BUll9IGhhcyBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgJyR7c2FmYXJpQmlufScgb24gcG9ydCAke3RoaXMucG9ydH1gKTtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdGFydCgwKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGtpbGwgKCkge1xuICAgIGlmICh0aGlzLmlzUnVubmluZykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9jLnN0b3AoJ1NJR0tJTEwnKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9XG4gIH1cbn1cblxuLy8gU2luZ2xlIHNlcnZlciBwcm9jZXNzIHBlciBBcHBpdW0gaW5zdGFuY2VcbmNvbnN0IFNBRkFSSV9EUklWRVJfUFJPQ0VTUyA9IG5ldyBTYWZhcmlEcml2ZXJQcm9jZXNzKCk7XG5wcm9jZXNzLm9uY2UoJ2V4aXQnLCAoKSA9PiB7XG4gIGlmIChTQUZBUklfRFJJVkVSX1BST0NFU1MuaXNSdW5uaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWNTeW5jKGBraWxsICR7U0FGQVJJX0RSSVZFUl9QUk9DRVNTLnByb2MucGlkfWApO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxufSk7XG5cbmNsYXNzIFNhZmFyaURyaXZlclNlcnZlciB7XG4gIGNvbnN0cnVjdG9yIChsb2cpIHtcbiAgICB0aGlzLmxvZyA9IGxvZztcbiAgICB0aGlzLnByb3h5ID0gbnVsbDtcbiAgfVxuXG4gIGdldCBpc1J1bm5pbmcgKCkge1xuICAgIHJldHVybiAhIShTQUZBUklfRFJJVkVSX1BST0NFU1MuaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0IChjYXBzKSB7XG4gICAgYXdhaXQgU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmluaXQoKTtcblxuICAgIHRoaXMucHJveHkgPSBuZXcgU2FmYXJpUHJveHkoe1xuICAgICAgc2VydmVyOiAnMTI3LjAuMC4xJyxcbiAgICAgIHBvcnQ6IFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5wb3J0LFxuICAgICAgYmFzZTogJycsXG4gICAgICBsb2c6IHRoaXMubG9nLFxuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSBmYWxzZTtcbiAgICBTQUZBUklfRFJJVkVSX1BST0NFU1MucHJvYy5vbignZXhpdCcsICgpID0+IHtcbiAgICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IFNUQVJUVVBfVElNRU9VVCxcbiAgICAgICAgaW50ZXJ2YWxNczogMTAwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICgvQ29uZGl0aW9uIHVubWV0Ly50ZXN0KGUubWVzc2FnZSkpIHtcbiAgICAgICAgaWYgKFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5pc1J1bm5pbmcpIHtcbiAgICAgICAgICAvLyBhdm9pZCBcImZyb3plblwiIHByb2Nlc3NlcyxcbiAgICAgICAgICBhd2FpdCBTQUZBUklfRFJJVkVSX1BST0NFU1Mua2lsbCgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2FmYXJpIERyaXZlciBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyB3aXRoaW4gJHtTVEFSVFVQX1RJTUVPVVR9bXMgdGltZW91dC4gYCArXG4gICAgICAgICAgYE1ha2Ugc3VyZSBpdCBoYXMgYmVlbiBleGVjdXRlZCBtYW51YWxseSBhdCBsZWFzdCBvbmNlIHdpdGggJy0tZW5hYmxlJyBjb21tYW5kIGxpbmUgYXJndW1lbnQuIGAgK1xuICAgICAgICAgIGBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZCgnL3Nlc3Npb24nLCAnUE9TVCcsIHtcbiAgICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgICBhbHdheXNNYXRjaDogY2FwcyxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AgKCkge1xuICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYCR7U0RfQklOQVJZfSBzZXNzaW9uIGNhbm5vdCBiZSBzdG9wcGVkLCBiZWNhdXNlIHRoZSBzZXJ2ZXIgaXMgbm90IHJ1bm5pbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm94eT8uc2Vzc2lvbklkKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNvbW1hbmQoYC9zZXNzaW9uLyR7dGhpcy5wcm94eS5zZXNzaW9uSWR9YCwgJ0RFTEVURScpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGAke1NEX0JJTkFSWX0gc2Vzc2lvbiBjYW5ub3QgYmUgZGVsZXRlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTYWZhcmlEcml2ZXJTZXJ2ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsU0FBUyxHQUFHLGNBQWxCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLEtBQXhCO0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUExQjs7QUFHQSxNQUFNQyxtQkFBbUIsR0FBR0MsYUFBQSxDQUFL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
156
+ exports.default = _default;
157
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRF9CSU5BUlkiLCJTVEFSVFVQX1RJTUVPVVQiLCJTQUZBUklfUE9SVF9SQU5HRSIsIlNBRkFSSV9TRVJWRVJfR1VBUkQiLCJ1dGlsIiwiZ2V0TG9ja0ZpbGVHdWFyZCIsInBhdGgiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ0aW1lb3V0IiwidHJ5UmVjb3ZlcnkiLCJTYWZhcmlQcm94eSIsIkpXUHJveHkiLCJwcm94eUNvbW1hbmQiLCJ1cmwiLCJtZXRob2QiLCJib2R5IiwiZGlkUHJvY2Vzc0V4aXQiLCJlcnJvcnMiLCJJbnZhbGlkQ29udGV4dEVycm9yIiwiU2FmYXJpRHJpdmVyUHJvY2VzcyIsImNvbnN0cnVjdG9yIiwibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwicG9ydCIsInByb2MiLCJpc1J1bm5pbmciLCJpbml0Iiwic3RhcnRQb3J0IiwiZW5kUG9ydCIsImZpbmRBUG9ydE5vdEluVXNlIiwiZSIsIkVycm9yIiwic2FmYXJpQmluIiwiZnMiLCJ3aGljaCIsIlN1YlByb2Nlc3MiLCJvbiIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJkZWJ1ZyIsImNvZGUiLCJzaWduYWwiLCJpbmZvIiwic3RhcnQiLCJraWxsIiwic3RvcCIsImlnbiIsIlNBRkFSSV9EUklWRVJfUFJPQ0VTUyIsInByb2Nlc3MiLCJvbmNlIiwiZXhlY1N5bmMiLCJwaWQiLCJTYWZhcmlEcml2ZXJTZXJ2ZXIiLCJwcm94eSIsImNhcHMiLCJzZXJ2ZXIiLCJiYXNlIiwia2VlcEFsaXZlIiwid2FpdEZvckNvbmRpdGlvbiIsImNvbW1hbmQiLCJlcnIiLCJtZXNzYWdlIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsInRlc3QiLCJjYXBhYmlsaXRpZXMiLCJmaXJzdE1hdGNoIiwiYWx3YXlzTWF0Y2giLCJzZXNzaW9uSWQiXSwic291cmNlcyI6WyIuLi8uLi9saWIvc2FmYXJpLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEpXUHJveHksIGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuaW1wb3J0IHsgZnMsIGxvZ2dlciwgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcblxuY29uc3QgU0RfQklOQVJZID0gJ3NhZmFyaWRyaXZlcic7XG5jb25zdCBTVEFSVFVQX1RJTUVPVVQgPSAxMDAwMDsgLy8gc2Vjb25kc1xuY29uc3QgU0FGQVJJX1BPUlRfUkFOR0UgPSBbNTEwMCwgNTIwMF07XG4vLyBUaGlzIGd1YXJkIGlzIG5lZWRlZCB0byBtYWtlIHN1cmVcbi8vIHdlIG5ldmVyIHJ1biBtdWx0aXBsZSBTYWZhcmkgZHJpdmVyIHByb2Nlc3NlcyBmb3IgdGhlIHNhbWUgQXBwaXVtIHByb2Nlc3NcbmNvbnN0IFNBRkFSSV9TRVJWRVJfR1VBUkQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQoXG4gIHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgJ3NhZmFyaV9zZXJ2ZXJfZ3VhcmQubG9jaycpLFxuICB7dGltZW91dDogNSwgdHJ5UmVjb3Zlcnk6IHRydWV9XG4pO1xuXG5cbmNsYXNzIFNhZmFyaVByb3h5IGV4dGVuZHMgSldQcm94eSB7XG4gIGFzeW5jIHByb3h5Q29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZENvbnRleHRFcnJvcihcbiAgICAgICAgYCcke21ldGhvZH0gJHt1cmx9JyBjYW5ub3QgYmUgcHJveGllZCB0byBTYWZhcmkgRHJpdmVyIHNlcnZlciBiZWNhdXNlIGAgK1xuICAgICAgICAndGhlIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmcgKHByb2JhYmx5IGNyYXNoZWQpLiBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzJyk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBzdXBlci5wcm94eUNvbW1hbmQodXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG59XG5cbmNsYXNzIFNhZmFyaURyaXZlclByb2Nlc3Mge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5sb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdTYWZhcmlEcml2ZXJQcm9jZXNzJyk7XG4gICAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvYz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGluaXQgKCkge1xuICAgIGF3YWl0IFNBRkFSSV9TRVJWRVJfR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBTQUZBUklfUE9SVF9SQU5HRTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKHN0YXJ0UG9ydCwgZW5kUG9ydCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IGZpbmQgYW55IGZyZWUgcG9ydCBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH0uIGAgK1xuICAgICAgICAgIGBEb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmVgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNhZmFyaUJpbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNhZmFyaUJpbiA9IGF3YWl0IGZzLndoaWNoKFNEX0JJTkFSWSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtTRF9CSU5BUll9IGJpbmFyeSBjYW5ub3QgYmUgZm91bmQgaW4gUEFUSC4gYCArXG4gICAgICAgICAgYFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgcHJlc2VudCBvbiB5b3VyIHN5c3RlbWApO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9jID0gbmV3IFN1YlByb2Nlc3Moc2FmYXJpQmluLCBbJy1wJywgdGhpcy5wb3J0LCAnLS1kaWFnbm9zZSddKTtcbiAgICAgIHRoaXMucHJvYy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBzdGRvdXQgfHwgc3RkZXJyO1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgWyR7U0RfQklOQVJZfV0gJHtsaW5lfWApO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2Mub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYCR7U0RfQklOQVJZfSBoYXMgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nICcke3NhZmFyaUJpbn0nIG9uIHBvcnQgJHt0aGlzLnBvcnR9YCk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBraWxsICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfVxuICB9XG59XG5cbi8vIFNpbmdsZSBzZXJ2ZXIgcHJvY2VzcyBwZXIgQXBwaXVtIGluc3RhbmNlXG5jb25zdCBTQUZBUklfRFJJVkVSX1BST0NFU1MgPSBuZXcgU2FmYXJpRHJpdmVyUHJvY2VzcygpO1xucHJvY2Vzcy5vbmNlKCdleGl0JywgKCkgPT4ge1xuICBpZiAoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZykge1xuICAgIHRyeSB7XG4gICAgICBleGVjU3luYyhga2lsbCAke1NBRkFSSV9EUklWRVJfUFJPQ0VTUy5wcm9jLnBpZH1gKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbn0pO1xuXG5jbGFzcyBTYWZhcmlEcml2ZXJTZXJ2ZXIge1xuICBjb25zdHJ1Y3RvciAobG9nKSB7XG4gICAgdGhpcy5sb2cgPSBsb2c7XG4gICAgdGhpcy5wcm94eSA9IG51bGw7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZyk7XG4gIH1cblxuICBhc3luYyBzdGFydCAoY2Fwcykge1xuICAgIGF3YWl0IFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5pbml0KCk7XG5cbiAgICB0aGlzLnByb3h5ID0gbmV3IFNhZmFyaVByb3h5KHtcbiAgICAgIHNlcnZlcjogJzEyNy4wLjAuMScsXG4gICAgICBwb3J0OiBTQUZBUklfRFJJVkVSX1BST0NFU1MucG9ydCxcbiAgICAgIGJhc2U6ICcnLFxuICAgICAgbG9nOiB0aGlzLmxvZyxcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gZmFsc2U7XG4gICAgU0FGQVJJX0RSSVZFUl9QUk9DRVNTLnByb2Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gICAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgd2FpdE1zOiBTVEFSVFVQX1RJTUVPVVQsXG4gICAgICAgIGludGVydmFsTXM6IDEwMDAsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoL0NvbmRpdGlvbiB1bm1ldC8udGVzdChlLm1lc3NhZ2UpKSB7XG4gICAgICAgIGlmIChTQUZBUklfRFJJVkVSX1BST0NFU1MuaXNSdW5uaW5nKSB7XG4gICAgICAgICAgLy8gYXZvaWQgXCJmcm96ZW5cIiBwcm9jZXNzZXMsXG4gICAgICAgICAgYXdhaXQgU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmtpbGwoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNhZmFyaSBEcml2ZXIgc2VydmVyIGlzIG5vdCBsaXN0ZW5pbmcgd2l0aGluICR7U1RBUlRVUF9USU1FT1VUfW1zIHRpbWVvdXQuIGAgK1xuICAgICAgICAgIGBNYWtlIHN1cmUgaXQgaGFzIGJlZW4gZXhlY3V0ZWQgbWFudWFsbHkgYXQgbGVhc3Qgb25jZSB3aXRoICctLWVuYWJsZScgY29tbWFuZCBsaW5lIGFyZ3VtZW50LiBgICtcbiAgICAgICAgICBgQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnByb3h5LmNvbW1hbmQoJy9zZXNzaW9uJywgJ1BPU1QnLCB7XG4gICAgICBjYXBhYmlsaXRpZXM6IHtcbiAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgICAgYWx3YXlzTWF0Y2g6IGNhcHMsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdG9wICgpIHtcbiAgICBpZiAoIXRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGAke1NEX0JJTkFSWX0gc2Vzc2lvbiBjYW5ub3QgYmUgc3RvcHBlZCwgYmVjYXVzZSB0aGUgc2VydmVyIGlzIG5vdCBydW5uaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJveHk/LnNlc3Npb25JZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKGAvc2Vzc2lvbi8ke3RoaXMucHJveHkuc2Vzc2lvbklkfWAsICdERUxFVEUnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgJHtTRF9CSU5BUll9IHNlc3Npb24gY2Fubm90IGJlIGRlbGV0ZWQuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2FmYXJpRHJpdmVyU2VydmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxTQUFTLEdBQUcsY0FBYztBQUNoQyxNQUFNQyxlQUFlLEdBQUcsS0FBSztBQUM3QixNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFHdEMsTUFBTUMsbUJBQW1CLEdBQUdDLGFBQUksQ0FBQ0MsZ0JBQWdCLENBQy9DQyxhQUFJLENBQUNDLE9BQU8sQ0FBQ0MsV0FBRSxDQUFDQyxN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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safari.js","names":["SD_BINARY","STARTUP_TIMEOUT","SAFARI_PORT_RANGE","SAFARI_SERVER_GUARD","util","getLockFileGuard","path","resolve","os","tmpdir","timeout","tryRecovery","SafariProxy","JWProxy","proxyCommand","url","method","body","didProcessExit","errors","InvalidContextError","SafariDriverProcess","constructor","log","logger","getLogger","port","proc","isRunning","init","startPort","endPort","findAPortNotInUse","e","Error","safariBin","fs","which","SubProcess","on","stdout","stderr","line","debug","code","signal","info","start","kill","stop","ign","SAFARI_DRIVER_PROCESS","process","once","execSync","pid","SafariDriverServer","proxy","caps","server","base","keepAlive","waitForCondition","command","err","message","waitMs","intervalMs","test","capabilities","firstMatch","alwaysMatch","sessionId"],"sources":["../../lib/safari.js"],"sourcesContent":["import os from 'os';\nimport path from 'path';\nimport { JWProxy, errors } from 'appium/driver';\nimport { fs, logger, util } from 'appium/support';\nimport { SubProcess } from 'teen_process';\nimport { waitForCondition } from 'asyncbox';\nimport { findAPortNotInUse } from 'portscanner';\nimport { execSync } from 'child_process';\n\nconst SD_BINARY = 'safaridriver';\nconst STARTUP_TIMEOUT = 10000; // seconds\nconst SAFARI_PORT_RANGE = [5100, 5200];\n// This guard is needed to make sure\n// we never run multiple Safari driver processes for the same Appium process\nconst SAFARI_SERVER_GUARD = util.getLockFileGuard(\n path.resolve(os.tmpdir(), 'safari_server_guard.lock'),\n {timeout: 5, tryRecovery: true}\n);\n\n\nclass SafariProxy extends JWProxy {\n async proxyCommand (url, method, body = null) {\n if (this.didProcessExit) {\n throw new errors.InvalidContextError(\n `'${method} ${url}' cannot be proxied to Safari Driver server because ` +\n 'the process is not running (probably crashed). Check the server log for more details');\n }\n return await super.proxyCommand(url, method, body);\n }\n}\n\nclass SafariDriverProcess {\n constructor () {\n this.log = logger.getLogger('SafariDriverProcess');\n this.port = null;\n this.proc = null;\n }\n\n get isRunning () {\n return !!(this.proc?.isRunning);\n }\n\n async init () {\n await SAFARI_SERVER_GUARD(async () => {\n if (this.isRunning) {\n return;\n }\n\n const [startPort, endPort] = SAFARI_PORT_RANGE;\n try {\n this.port = await findAPortNotInUse(startPort, endPort);\n } catch (e) {\n throw new Error(\n `Cannot find any free port in range ${startPort}..${endPort}. ` +\n `Double check the processes that are locking ports within this range and terminate ` +\n `these which are not needed anymore`);\n }\n\n let safariBin;\n try {\n safariBin = await fs.which(SD_BINARY);\n } catch (e) {\n throw new Error(`${SD_BINARY} binary cannot be found in PATH. ` +\n `Please make sure it is present on your system`);\n }\n this.proc = new SubProcess(safariBin, ['-p', this.port, '--diagnose']);\n this.proc.on('output', (stdout, stderr) => {\n const line = stdout || stderr;\n this.log.debug(`[${SD_BINARY}] ${line}`);\n });\n this.proc.on('exit', (code, signal) => {\n this.log.info(`${SD_BINARY} has exited with code ${code}, signal ${signal}`);\n });\n this.log.info(`Starting '${safariBin}' on port ${this.port}`);\n await this.proc.start(0);\n });\n }\n\n async kill () {\n if (this.isRunning) {\n try {\n await this.proc.stop('SIGKILL');\n } catch (ign) {}\n }\n }\n}\n\n// Single server process per Appium instance\nconst SAFARI_DRIVER_PROCESS = new SafariDriverProcess();\nprocess.once('exit', () => {\n if (SAFARI_DRIVER_PROCESS.isRunning) {\n try {\n execSync(`kill ${SAFARI_DRIVER_PROCESS.proc.pid}`);\n } catch (ign) {}\n }\n});\n\nclass SafariDriverServer {\n constructor (log) {\n this.log = log;\n this.proxy = null;\n }\n\n get isRunning () {\n return !!(SAFARI_DRIVER_PROCESS.isRunning);\n }\n\n async start (caps) {\n await SAFARI_DRIVER_PROCESS.init();\n\n this.proxy = new SafariProxy({\n server: '127.0.0.1',\n port: SAFARI_DRIVER_PROCESS.port,\n base: '',\n log: this.log,\n keepAlive: true,\n });\n this.proxy.didProcessExit = false;\n SAFARI_DRIVER_PROCESS.proc.on('exit', () => {\n this.proxy.didProcessExit = true;\n });\n\n try {\n await waitForCondition(async () => {\n try {\n await this.proxy.command('/status', 'GET');\n return true;\n } catch (err) {\n if (this.proxy.didProcessExit) {\n throw new Error(err.message);\n }\n return false;\n }\n }, {\n waitMs: STARTUP_TIMEOUT,\n intervalMs: 1000,\n });\n } catch (e) {\n if (/Condition unmet/.test(e.message)) {\n if (SAFARI_DRIVER_PROCESS.isRunning) {\n // avoid \"frozen\" processes,\n await SAFARI_DRIVER_PROCESS.kill();\n }\n throw new Error(`Safari Driver server is not listening within ${STARTUP_TIMEOUT}ms timeout. ` +\n `Make sure it has been executed manually at least once with '--enable' command line argument. ` +\n `Check the server log for more details`);\n }\n throw e;\n }\n\n await this.proxy.command('/session', 'POST', {\n capabilities: {\n firstMatch: [{}],\n alwaysMatch: caps,\n }\n });\n }\n\n async stop () {\n if (!this.isRunning) {\n this.log.info(`${SD_BINARY} session cannot be stopped, because the server is not running`);\n return;\n }\n\n if (this.proxy?.sessionId) {\n try {\n await this.proxy.command(`/session/${this.proxy.sessionId}`, 'DELETE');\n } catch (e) {\n this.log.info(`${SD_BINARY} session cannot be deleted. Original error: ${e.message}`);\n }\n }\n }\n}\n\nexport default SafariDriverServer;\n"],"mappings":"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"}
@@ -1,33 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.formatCapsForServer = formatCapsForServer;
9
-
10
8
  require("source-map-support/register");
11
-
12
9
  var _lodash = _interopRequireDefault(require("lodash"));
13
-
14
10
  const SAFARI_CAP_PREFIXES = ['safari:', 'webkit:'];
15
-
16
11
  function formatCapsForServer(caps) {
17
12
  const result = {
18
13
  browserName: 'Safari',
19
14
  browserVersion: caps.browserVersion,
20
15
  platformName: caps.platformName || 'iOS'
21
16
  };
22
-
23
17
  for (const [name, value] of _lodash.default.toPairs(caps)) {
24
18
  if (SAFARI_CAP_PREFIXES.some(prefix => name.startsWith(prefix))) {
25
19
  result[name] = value;
26
20
  }
27
21
  }
28
-
29
22
  return result;
30
- }require('source-map-support').install();
31
-
32
-
33
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3V0aWxzLmpzIiwibmFtZXMiOlsiU0FGQVJJX0NBUF9QUkVGSVhFUyIsImZvcm1hdENhcHNGb3JTZXJ2ZXIiLCJjYXBzIiwicmVzdWx0IiwiYnJvd3Nlck5hbWUiLCJicm93c2VyVmVyc2lvbiIsInBsYXRmb3JtTmFtZSIsIm5hbWUiLCJ2YWx1ZSIsIl8iLCJ0b1BhaXJzIiwic29tZSIsInByZWZpeCIsInN0YXJ0c1dpdGgiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgU0FGQVJJX0NBUF9QUkVGSVhFUyA9IFsnc2FmYXJpOicsICd3ZWJraXQ6J107XG5cbmZ1bmN0aW9uIGZvcm1hdENhcHNGb3JTZXJ2ZXIgKGNhcHMpIHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIGJyb3dzZXJOYW1lOiAnU2FmYXJpJyxcbiAgICBicm93c2VyVmVyc2lvbjogY2Fwcy5icm93c2VyVmVyc2lvbixcbiAgICBwbGF0Zm9ybU5hbWU6IGNhcHMucGxhdGZvcm1OYW1lIHx8ICdpT1MnLFxuICB9O1xuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgXy50b1BhaXJzKGNhcHMpKSB7XG4gICAgaWYgKFNBRkFSSV9DQVBfUFJFRklYRVMuc29tZSgocHJlZml4KSA9PiBuYW1lLnN0YXJ0c1dpdGgocHJlZml4KSkpIHtcbiAgICAgIHJlc3VsdFtuYW1lXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgeyBmb3JtYXRDYXBzRm9yU2VydmVyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsbUJBQW1CLEdBQUcsQ0FBQyxTQUFELEVBQVksU0FBWixDQUE1Qjs7QUFFQSxTQUFTQyxtQkFBVCxDQUE4QkMsSUFBOUIsRUFBb0M7RUFDbEMsTUFBTUMsTUFBTSxHQUFHO0lBQ2JDLFdBQVcsRUFBRSxRQURBO0lBRWJDLGNBQWMsRUFBRUgsSUFBSSxDQUFDRyxjQUZSO0lBR2JDLFlBQVksRUFBRUosSUFBSSxDQUFDSSxZQUFMLElBQXFCO0VBSHRCLENBQWY7O0VBS0EsS0FBSyxNQUFNLENBQUNDLElBQUQsRUFBT0MsS0FBUCxDQUFYLElBQTRCQyxlQUFBLENBQUVDLE9BQUYsQ0FBVVIsSUFBVixDQUE1QixFQUE2QztJQUMzQyxJQUFJRixtQkFBbUIsQ0FBQ1csSUFBcEIsQ0FBMEJDLE1BQUQsSUFBWUwsSUFBSSxDQUFDTSxVQUFMLENBQWdCRCxNQUFoQixDQUFyQyxDQUFKLEVBQW1FO01BQ2pFVCxNQUFNLENBQUNJLElBQUQsQ0FBTixHQUFlQyxLQUFmO0lBQ0Q7RUFDRjs7RUFDRCxPQUFPTCxNQUFQO0FBQ0QifQ==
23
+ }
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTQUZBUklfQ0FQX1BSRUZJWEVTIiwiZm9ybWF0Q2Fwc0ZvclNlcnZlciIsImNhcHMiLCJyZXN1bHQiLCJicm93c2VyTmFtZSIsImJyb3dzZXJWZXJzaW9uIiwicGxhdGZvcm1OYW1lIiwibmFtZSIsInZhbHVlIiwiXyIsInRvUGFpcnMiLCJzb21lIiwicHJlZml4Iiwic3RhcnRzV2l0aCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBTQUZBUklfQ0FQX1BSRUZJWEVTID0gWydzYWZhcmk6JywgJ3dlYmtpdDonXTtcblxuZnVuY3Rpb24gZm9ybWF0Q2Fwc0ZvclNlcnZlciAoY2Fwcykge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgYnJvd3Nlck5hbWU6ICdTYWZhcmknLFxuICAgIGJyb3dzZXJWZXJzaW9uOiBjYXBzLmJyb3dzZXJWZXJzaW9uLFxuICAgIHBsYXRmb3JtTmFtZTogY2Fwcy5wbGF0Zm9ybU5hbWUgfHwgJ2lPUycsXG4gIH07XG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBfLnRvUGFpcnMoY2FwcykpIHtcbiAgICBpZiAoU0FGQVJJX0NBUF9QUkVGSVhFUy5zb21lKChwcmVmaXgpID0+IG5hbWUuc3RhcnRzV2l0aChwcmVmaXgpKSkge1xuICAgICAgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCB7IGZvcm1hdENhcHNGb3JTZXJ2ZXIgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBLE1BQU1BLG1CQUFtQixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztBQUVsRCxTQUFTQyxtQkFBbUIsQ0FBRUMsSUFBSSxFQUFFO0VBQ2xDLE1BQU1DLE1BQU0sR0FBRztJQUNiQyxXQUFXLEVBQUUsUUFBUTtJQUNyQkMsY0FBYyxFQUFFSCxJQUFJLENBQUNHLGNBQWM7SUFDbkNDLFlBQVksRUFBRUosSUFBSSxDQUFDSSxZQUFZLElBQUk7RUFDckMsQ0FBQztFQUNELEtBQUssTUFBTSxDQUFDQyxJQUFJLEVBQUVDLEtBQUssQ0FBQyxJQUFJQyxlQUFDLENBQUNDLE9BQU8sQ0FBQ1IsSUFBSSxDQUFDLEVBQUU7SUFDM0MsSUFBSUYsbUJBQW1CLENBQUNXLElBQUksQ0FBRUMsTUFBTSxJQUFLTCxJQUFJLENBQUNNLFVBQVUsQ0FBQ0QsTUFBTSxDQUFDLENBQUMsRUFBRTtNQUNqRVQsTUFBTSxDQUFDSSxJQUFJLENBQUMsR0FBR0MsS0FBSztJQUN0QjtFQUNGO0VBQ0EsT0FBT0wsTUFBTTtBQUNmIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["SAFARI_CAP_PREFIXES","formatCapsForServer","caps","result","browserName","browserVersion","platformName","name","value","_","toPairs","some","prefix","startsWith"],"sources":["../../lib/utils.js"],"sourcesContent":["import _ from 'lodash';\n\nconst SAFARI_CAP_PREFIXES = ['safari:', 'webkit:'];\n\nfunction formatCapsForServer (caps) {\n const result = {\n browserName: 'Safari',\n browserVersion: caps.browserVersion,\n platformName: caps.platformName || 'iOS',\n };\n for (const [name, value] of _.toPairs(caps)) {\n if (SAFARI_CAP_PREFIXES.some((prefix) => name.startsWith(prefix))) {\n result[name] = value;\n }\n }\n return result;\n}\n\nexport { formatCapsForServer };\n"],"mappings":";;;;;;;;AAAA;AAEA,MAAMA,mBAAmB,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;AAElD,SAASC,mBAAmB,CAAEC,IAAI,EAAE;EAClC,MAAMC,MAAM,GAAG;IACbC,WAAW,EAAE,QAAQ;IACrBC,cAAc,EAAEH,IAAI,CAACG,cAAc;IACnCC,YAAY,EAAEJ,IAAI,CAACI,YAAY,IAAI;EACrC,CAAC;EACD,KAAK,MAAM,CAACC,IAAI,EAAEC,KAAK,CAAC,IAAIC,eAAC,CAACC,OAAO,CAACR,IAAI,CAAC,EAAE;IAC3C,IAAIF,mBAAmB,CAACW,IAAI,CAAEC,MAAM,IAAKL,IAAI,CAACM,UAAU,CAACD,MAAM,CAAC,CAAC,EAAE;MACjET,MAAM,CAACI,IAAI,CAAC,GAAGC,KAAK;IACtB;EACF;EACA,OAAOL,MAAM;AACf"}