appium-mac2-driver 4.3.6 → 4.4.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/WebDriverAgentMac/IntegrationTests/AMSessionTests.m +14 -0
  3. package/WebDriverAgentMac/WebDriverAgentLib/Commands/FBSessionCommands.m +17 -5
  4. package/WebDriverAgentMac/WebDriverAgentLib/Routing/FBSession.m +5 -1
  5. package/build/lib/driver.d.ts +3 -0
  6. package/build/lib/driver.d.ts.map +1 -1
  7. package/build/lib/driver.js +52 -32
  8. package/build/lib/driver.js.map +1 -1
  9. package/build/lib/session-claim-handler.d.ts +41 -0
  10. package/build/lib/session-claim-handler.d.ts.map +1 -0
  11. package/build/lib/session-claim-handler.js +236 -0
  12. package/build/lib/session-claim-handler.js.map +1 -0
  13. package/build/lib/wda-mac.d.ts +6 -2
  14. package/build/lib/wda-mac.d.ts.map +1 -1
  15. package/build/lib/wda-mac.js +39 -9
  16. package/build/lib/wda-mac.js.map +1 -1
  17. package/lib/driver.ts +55 -31
  18. package/lib/session-claim-handler.ts +306 -0
  19. package/lib/wda-mac.ts +41 -10
  20. package/node_modules/appium-xcode/CHANGELOG.md +7 -0
  21. package/node_modules/appium-xcode/package.json +4 -4
  22. package/node_modules/async-lock/AUTHORS +21 -0
  23. package/node_modules/async-lock/History.md +132 -0
  24. package/node_modules/async-lock/LICENSE +22 -0
  25. package/node_modules/async-lock/README.md +177 -0
  26. package/node_modules/async-lock/index.js +2 -0
  27. package/node_modules/async-lock/lib/index.js +312 -0
  28. package/node_modules/async-lock/package.json +48 -0
  29. package/node_modules/bare-fs/binding.c +1 -1
  30. package/node_modules/bare-fs/index.js +30 -6
  31. package/node_modules/bare-fs/package.json +1 -1
  32. package/node_modules/bare-fs/prebuilds/android-arm/bare-fs.bare +0 -0
  33. package/node_modules/bare-fs/prebuilds/android-arm64/bare-fs.bare +0 -0
  34. package/node_modules/bare-fs/prebuilds/android-ia32/bare-fs.bare +0 -0
  35. package/node_modules/bare-fs/prebuilds/android-x64/bare-fs.bare +0 -0
  36. package/node_modules/bare-fs/prebuilds/darwin-arm64/bare-fs.bare +0 -0
  37. package/node_modules/bare-fs/prebuilds/darwin-x64/bare-fs.bare +0 -0
  38. package/node_modules/bare-fs/prebuilds/ios-arm64/bare-fs.bare +0 -0
  39. package/node_modules/bare-fs/prebuilds/ios-arm64-simulator/bare-fs.bare +0 -0
  40. package/node_modules/bare-fs/prebuilds/ios-x64-simulator/bare-fs.bare +0 -0
  41. package/node_modules/bare-fs/prebuilds/linux-arm64/bare-fs.bare +0 -0
  42. package/node_modules/bare-fs/prebuilds/linux-x64/bare-fs.bare +0 -0
  43. package/node_modules/bare-fs/prebuilds/win32-arm64/bare-fs.bare +0 -0
  44. package/node_modules/bare-fs/prebuilds/win32-x64/bare-fs.bare +0 -0
  45. package/node_modules/readable-stream/lib/internal/shims/process.js +19 -0
  46. package/node_modules/readable-stream/lib/internal/streams/destroy.js +1 -1
  47. package/node_modules/readable-stream/lib/internal/streams/duplexify.js +1 -1
  48. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +1 -1
  49. package/node_modules/readable-stream/lib/internal/streams/from.js +1 -1
  50. package/node_modules/readable-stream/lib/internal/streams/legacy.js +6 -1
  51. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +1 -1
  52. package/node_modules/readable-stream/lib/internal/streams/readable.js +1 -1
  53. package/node_modules/readable-stream/lib/internal/streams/writable.js +1 -1
  54. package/node_modules/readable-stream/package.json +3 -2
  55. package/node_modules/tar-stream/package.json +7 -7
  56. package/package.json +4 -2
@@ -0,0 +1,312 @@
1
+ 'use strict';
2
+
3
+ var AsyncLock = function (opts) {
4
+ opts = opts || {};
5
+
6
+ this.Promise = opts.Promise || Promise;
7
+
8
+ // format: {key : [fn, fn]}
9
+ // queues[key] = null indicates no job running for key
10
+ this.queues = Object.create(null);
11
+
12
+ // lock is reentrant for same domain
13
+ this.domainReentrant = opts.domainReentrant || false;
14
+ if (this.domainReentrant) {
15
+ if (typeof process === 'undefined' || typeof process.domain === 'undefined') {
16
+ throw new Error(
17
+ 'Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, ' +
18
+ 'use a NodeJS version that still implements Domain, or install a browser polyfill.');
19
+ }
20
+ // domain of current running func {key : fn}
21
+ this.domains = Object.create(null);
22
+ }
23
+
24
+ this.timeout = opts.timeout || AsyncLock.DEFAULT_TIMEOUT;
25
+ this.maxOccupationTime = opts.maxOccupationTime || AsyncLock.DEFAULT_MAX_OCCUPATION_TIME;
26
+ this.maxExecutionTime = opts.maxExecutionTime || AsyncLock.DEFAULT_MAX_EXECUTION_TIME;
27
+ if (opts.maxPending === Infinity || (Number.isInteger(opts.maxPending) && opts.maxPending >= 0)) {
28
+ this.maxPending = opts.maxPending;
29
+ } else {
30
+ this.maxPending = AsyncLock.DEFAULT_MAX_PENDING;
31
+ }
32
+ };
33
+
34
+ AsyncLock.DEFAULT_TIMEOUT = 0; //Never
35
+ AsyncLock.DEFAULT_MAX_OCCUPATION_TIME = 0; //Never
36
+ AsyncLock.DEFAULT_MAX_EXECUTION_TIME = 0; //Never
37
+ AsyncLock.DEFAULT_MAX_PENDING = 1000;
38
+
39
+ /**
40
+ * Acquire Locks
41
+ *
42
+ * @param {String|Array} key resource key or keys to lock
43
+ * @param {function} fn async function
44
+ * @param {function} cb callback function, otherwise will return a promise
45
+ * @param {Object} opts options
46
+ */
47
+ AsyncLock.prototype.acquire = function (key, fn, cb, opts) {
48
+ if (Array.isArray(key)) {
49
+ return this._acquireBatch(key, fn, cb, opts);
50
+ }
51
+
52
+ if (typeof (fn) !== 'function') {
53
+ throw new Error('You must pass a function to execute');
54
+ }
55
+
56
+ // faux-deferred promise using new Promise() (as Promise.defer is deprecated)
57
+ var deferredResolve = null;
58
+ var deferredReject = null;
59
+ var deferred = null;
60
+
61
+ if (typeof (cb) !== 'function') {
62
+ opts = cb;
63
+ cb = null;
64
+
65
+ // will return a promise
66
+ deferred = new this.Promise(function(resolve, reject) {
67
+ deferredResolve = resolve;
68
+ deferredReject = reject;
69
+ });
70
+ }
71
+
72
+ opts = opts || {};
73
+
74
+ var resolved = false;
75
+ var timer = null;
76
+ var occupationTimer = null;
77
+ var executionTimer = null;
78
+ var self = this;
79
+
80
+ var done = function (locked, err, ret) {
81
+
82
+ if (occupationTimer) {
83
+ clearTimeout(occupationTimer);
84
+ occupationTimer = null;
85
+ }
86
+
87
+ if (executionTimer) {
88
+ clearTimeout(executionTimer);
89
+ executionTimer = null;
90
+ }
91
+
92
+ if (locked) {
93
+ if (!!self.queues[key] && self.queues[key].length === 0) {
94
+ delete self.queues[key];
95
+ }
96
+ if (self.domainReentrant) {
97
+ delete self.domains[key];
98
+ }
99
+ }
100
+
101
+ if (!resolved) {
102
+ if (!deferred) {
103
+ if (typeof (cb) === 'function') {
104
+ cb(err, ret);
105
+ }
106
+ }
107
+ else {
108
+ //promise mode
109
+ if (err) {
110
+ deferredReject(err);
111
+ }
112
+ else {
113
+ deferredResolve(ret);
114
+ }
115
+ }
116
+ resolved = true;
117
+ }
118
+
119
+ if (locked) {
120
+ //run next func
121
+ if (!!self.queues[key] && self.queues[key].length > 0) {
122
+ self.queues[key].shift()();
123
+ }
124
+ }
125
+ };
126
+
127
+ var exec = function (locked) {
128
+ if (resolved) { // may due to timed out
129
+ return done(locked);
130
+ }
131
+
132
+ if (timer) {
133
+ clearTimeout(timer);
134
+ timer = null;
135
+ }
136
+
137
+ if (self.domainReentrant && locked) {
138
+ self.domains[key] = process.domain;
139
+ }
140
+
141
+ var maxExecutionTime = opts.maxExecutionTime || self.maxExecutionTime;
142
+ if (maxExecutionTime) {
143
+ executionTimer = setTimeout(function () {
144
+ if (!!self.queues[key]) {
145
+ done(locked, new Error('Maximum execution time is exceeded ' + key));
146
+ }
147
+ }, maxExecutionTime);
148
+ }
149
+
150
+ // Callback mode
151
+ if (fn.length === 1) {
152
+ var called = false;
153
+ try {
154
+ fn(function (err, ret) {
155
+ if (!called) {
156
+ called = true;
157
+ done(locked, err, ret);
158
+ }
159
+ });
160
+ } catch (err) {
161
+ // catching error thrown in user function fn
162
+ if (!called) {
163
+ called = true;
164
+ done(locked, err);
165
+ }
166
+ }
167
+ }
168
+ else {
169
+ // Promise mode
170
+ self._promiseTry(function () {
171
+ return fn();
172
+ })
173
+ .then(function(ret){
174
+ done(locked, undefined, ret);
175
+ }, function(error){
176
+ done(locked, error);
177
+ });
178
+ }
179
+ };
180
+
181
+ if (self.domainReentrant && !!process.domain) {
182
+ exec = process.domain.bind(exec);
183
+ }
184
+
185
+ var maxPending = opts.maxPending || self.maxPending;
186
+
187
+ if (!self.queues[key]) {
188
+ self.queues[key] = [];
189
+ exec(true);
190
+ }
191
+ else if (self.domainReentrant && !!process.domain && process.domain === self.domains[key]) {
192
+ // If code is in the same domain of current running task, run it directly
193
+ // Since lock is re-enterable
194
+ exec(false);
195
+ }
196
+ else if (self.queues[key].length >= maxPending) {
197
+ done(false, new Error('Too many pending tasks in queue ' + key));
198
+ }
199
+ else {
200
+ var taskFn = function () {
201
+ exec(true);
202
+ };
203
+ if (opts.skipQueue) {
204
+ self.queues[key].unshift(taskFn);
205
+ } else {
206
+ self.queues[key].push(taskFn);
207
+ }
208
+
209
+ var timeout = opts.timeout || self.timeout;
210
+ if (timeout) {
211
+ timer = setTimeout(function () {
212
+ timer = null;
213
+ done(false, new Error('async-lock timed out in queue ' + key));
214
+ }, timeout);
215
+ }
216
+ }
217
+
218
+ var maxOccupationTime = opts.maxOccupationTime || self.maxOccupationTime;
219
+ if (maxOccupationTime) {
220
+ occupationTimer = setTimeout(function () {
221
+ if (!!self.queues[key]) {
222
+ done(false, new Error('Maximum occupation time is exceeded in queue ' + key));
223
+ }
224
+ }, maxOccupationTime);
225
+ }
226
+
227
+ if (deferred) {
228
+ return deferred;
229
+ }
230
+ };
231
+
232
+ /*
233
+ * Below is how this function works:
234
+ *
235
+ * Equivalent code:
236
+ * self.acquire(key1, function(cb){
237
+ * self.acquire(key2, function(cb){
238
+ * self.acquire(key3, fn, cb);
239
+ * }, cb);
240
+ * }, cb);
241
+ *
242
+ * Equivalent code:
243
+ * var fn3 = getFn(key3, fn);
244
+ * var fn2 = getFn(key2, fn3);
245
+ * var fn1 = getFn(key1, fn2);
246
+ * fn1(cb);
247
+ */
248
+ AsyncLock.prototype._acquireBatch = function (keys, fn, cb, opts) {
249
+ if (typeof (cb) !== 'function') {
250
+ opts = cb;
251
+ cb = null;
252
+ }
253
+
254
+ var self = this;
255
+ var getFn = function (key, fn) {
256
+ return function (cb) {
257
+ self.acquire(key, fn, cb, opts);
258
+ };
259
+ };
260
+
261
+ var fnx = keys.reduceRight(function (prev, key) {
262
+ return getFn(key, prev);
263
+ }, fn);
264
+
265
+ if (typeof (cb) === 'function') {
266
+ fnx(cb);
267
+ }
268
+ else {
269
+ return new this.Promise(function (resolve, reject) {
270
+ // check for promise mode in case keys is empty array
271
+ if (fnx.length === 1) {
272
+ fnx(function (err, ret) {
273
+ if (err) {
274
+ reject(err);
275
+ }
276
+ else {
277
+ resolve(ret);
278
+ }
279
+ });
280
+ } else {
281
+ resolve(fnx());
282
+ }
283
+ });
284
+ }
285
+ };
286
+
287
+ /*
288
+ * Whether there is any running or pending asyncFunc
289
+ *
290
+ * @param {String} key
291
+ */
292
+ AsyncLock.prototype.isBusy = function (key) {
293
+ if (!key) {
294
+ return Object.keys(this.queues).length > 0;
295
+ }
296
+ else {
297
+ return !!this.queues[key];
298
+ }
299
+ };
300
+
301
+ /**
302
+ * Promise.try() implementation to become independent of Q-specific methods
303
+ */
304
+ AsyncLock.prototype._promiseTry = function(fn) {
305
+ try {
306
+ return this.Promise.resolve(fn());
307
+ } catch (e) {
308
+ return this.Promise.reject(e);
309
+ }
310
+ };
311
+
312
+ module.exports = AsyncLock;
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "async-lock",
3
+ "description": "Lock on asynchronous code",
4
+ "version": "1.4.1",
5
+ "author": {
6
+ "name": "Rogier Schouten",
7
+ "url": "https://github.com/rogierschouten/",
8
+ "email": "github@workingcode.ninja"
9
+ },
10
+ "private": false,
11
+ "homepage": "https://github.com/rogierschouten/async-lock",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/rogierschouten/async-lock.git"
15
+ },
16
+ "bugs": {
17
+ "url": "https://github.com/rogierschouten/async-lock/issues"
18
+ },
19
+ "license": "MIT",
20
+ "keywords": [
21
+ "lock",
22
+ "async",
23
+ "concurrency",
24
+ "critical",
25
+ "section",
26
+ "mutex"
27
+ ],
28
+ "engines": {},
29
+ "scripts": {
30
+ "start": "grunt",
31
+ "test": "grunt test"
32
+ },
33
+ "devDependencies": {
34
+ "bluebird": "^3.5.1",
35
+ "grunt": "^1.0.4",
36
+ "grunt-cli": "^1.2.0",
37
+ "grunt-contrib-clean": "^1.1.0",
38
+ "grunt-contrib-jshint": "^3.2.0",
39
+ "grunt-contrib-watch": "^1.1.0",
40
+ "grunt-env": "^1.0.1",
41
+ "grunt-mocha-test": "^0.13.3",
42
+ "load-grunt-tasks": "^4.0.0",
43
+ "lodash": "^4.17.20",
44
+ "mocha": "^10.2.0",
45
+ "q": "^1.5.1",
46
+ "should": "^13.2.1"
47
+ }
48
+ }
@@ -294,7 +294,7 @@ bare_fs_request_result_stat(js_env_t *env, js_callback_info_t *info) {
294
294
  uv_timespec_t time = req->handle.statbuf.st_##property; \
295
295
  \
296
296
  js_value_t *value; \
297
- err = js_create_int64(env, time.tv_sec * 1000 + time.tv_nsec / 1000000, &value); \
297
+ err = js_create_int64(env, (int64_t) time.tv_sec * 1000 + time.tv_nsec / 1000000, &value); \
298
298
  assert(err == 0); \
299
299
  \
300
300
  err = js_set_element(env, result, i++, value); \
@@ -1469,6 +1469,20 @@ async function cp(src, dst, opts, cb) {
1469
1469
  } else if (st.isFile()) {
1470
1470
  await copyFile(src, dst)
1471
1471
  await chmod(dst, st.mode)
1472
+ } else if (st.isSymbolicLink()) {
1473
+ try {
1474
+ if (!(await lstat(dst)).isDirectory()) await unlink(dst)
1475
+ } catch (e) {
1476
+ if (e.code !== 'ENOENT') throw e
1477
+ }
1478
+
1479
+ await symlink(await readlink(src), dst)
1480
+ } else {
1481
+ throw new FileError('cannot copy a special file', {
1482
+ operation: 'cp',
1483
+ code: 'ENOTSUP',
1484
+ path: src
1485
+ })
1472
1486
  }
1473
1487
  } catch (e) {
1474
1488
  err = e
@@ -1503,6 +1517,20 @@ function cpSync(src, dst, opts = {}) {
1503
1517
  } else if (st.isFile()) {
1504
1518
  copyFileSync(src, dst)
1505
1519
  chmodSync(dst, st.mode)
1520
+ } else if (st.isSymbolicLink()) {
1521
+ try {
1522
+ if (!lstatSync(dst).isDirectory()) unlinkSync(dst)
1523
+ } catch (e) {
1524
+ if (e.code !== 'ENOENT') throw e
1525
+ }
1526
+
1527
+ symlinkSync(readlinkSync(src), dst)
1528
+ } else {
1529
+ throw new FileError('cannot copy a special file', {
1530
+ operation: 'cp',
1531
+ code: 'ENOTSUP',
1532
+ path: src
1533
+ })
1506
1534
  }
1507
1535
  }
1508
1536
 
@@ -1736,9 +1764,7 @@ async function symlink(target, filepath, type, cb) {
1736
1764
  target = path.resolve(filepath, '..', target)
1737
1765
 
1738
1766
  try {
1739
- type = (await stat(target)).isDirectory()
1740
- ? constants.UV_FS_SYMLINK_DIR
1741
- : constants.UV_FS_SYMLINK_JUNCTION
1767
+ type = (await stat(target)).isDirectory() ? constants.UV_FS_SYMLINK_DIR : 0
1742
1768
  } catch {
1743
1769
  type = 0
1744
1770
  }
@@ -1791,9 +1817,7 @@ function symlinkSync(target, filepath, type) {
1791
1817
  target = path.resolve(filepath, '..', target)
1792
1818
 
1793
1819
  try {
1794
- type = statSync(target).isDirectory()
1795
- ? constants.UV_FS_SYMLINK_DIR
1796
- : constants.UV_FS_SYMLINK_JUNCTION
1820
+ type = statSync(target).isDirectory() ? constants.UV_FS_SYMLINK_DIR : 0
1797
1821
  } catch {
1798
1822
  type = 0
1799
1823
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bare-fs",
3
- "version": "4.8.2",
3
+ "version": "4.8.4",
4
4
  "description": "Native file system operations for Bare",
5
5
  "exports": {
6
6
  "./package": "./package.json",
@@ -0,0 +1,19 @@
1
+ 'use strict'
2
+
3
+ /* wraps the internal process module, circumventing issues with some polyfills (see #539) */
4
+ const process = ((base, esmKey, keys, isValid) => {
5
+ if (esmKey in base && base[esmKey] === true) {
6
+ let candidate
7
+ for (const key of keys) {
8
+ if (!(key in base)) {
9
+ continue
10
+ }
11
+ candidate = base[key]
12
+ if (isValid(candidate)) {
13
+ return candidate
14
+ }
15
+ }
16
+ }
17
+ return base
18
+ })(require('process/'), '__esModule', ['default', 'process'], (candidate) => 'nextTick' in candidate)
19
+ module.exports = process
@@ -2,7 +2,7 @@
2
2
 
3
3
  /* replacement start */
4
4
 
5
- const process = require('process/')
5
+ const process = require('../shims/process')
6
6
 
7
7
  /* replacement end */
8
8
 
@@ -1,6 +1,6 @@
1
1
  /* replacement start */
2
2
 
3
- const process = require('process/')
3
+ const process = require('../shims/process')
4
4
 
5
5
  /* replacement end */
6
6
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  /* replacement start */
7
7
 
8
- const process = require('process/')
8
+ const process = require('../shims/process')
9
9
 
10
10
  /* replacement end */
11
11
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  /* replacement start */
4
4
 
5
- const process = require('process/')
5
+ const process = require('../shims/process')
6
6
 
7
7
  /* replacement end */
8
8
 
@@ -42,8 +42,13 @@ Stream.prototype.pipe = function (dest, options) {
42
42
 
43
43
  // Don't leave dangling pipes when there are errors.
44
44
  function onerror(er) {
45
+ var _this$listenerCount
45
46
  cleanup()
46
- if (EE.listenerCount(this, 'error') === 0) {
47
+ if (
48
+ ((_this$listenerCount = this.listenerCount) === null || _this$listenerCount === undefined
49
+ ? undefined
50
+ : _this$listenerCount.call(this, 'error')) === 0
51
+ ) {
47
52
  this.emit('error', er)
48
53
  }
49
54
  }
@@ -1,6 +1,6 @@
1
1
  /* replacement start */
2
2
 
3
- const process = require('process/')
3
+ const process = require('../shims/process')
4
4
 
5
5
  /* replacement end */
6
6
  // Ported from https://github.com/mafintosh/pump with
@@ -23,7 +23,7 @@
23
23
 
24
24
  /* replacement start */
25
25
 
26
- const process = require('process/')
26
+ const process = require('../shims/process')
27
27
 
28
28
  /* replacement end */
29
29
 
@@ -27,7 +27,7 @@
27
27
 
28
28
  /* replacement start */
29
29
 
30
- const process = require('process/')
30
+ const process = require('../shims/process')
31
31
 
32
32
  /* replacement end */
33
33
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "readable-stream",
3
- "version": "4.7.0",
3
+ "version": "4.8.0",
4
4
  "description": "Node.js Streams, a user-land copy of the stream library from Node.js",
5
5
  "homepage": "https://github.com/nodejs/readable-stream",
6
6
  "license": "MIT",
@@ -17,7 +17,7 @@
17
17
  ],
18
18
  "repository": {
19
19
  "type": "git",
20
- "url": "git://github.com/nodejs/readable-stream"
20
+ "url": "https://github.com/nodejs/readable-stream"
21
21
  },
22
22
  "bugs": {
23
23
  "url": "https://github.com/nodejs/readable-stream/issues"
@@ -61,6 +61,7 @@
61
61
  "@rollup/plugin-inject": "^4.0.4",
62
62
  "@rollup/plugin-node-resolve": "^13.3.0",
63
63
  "@sinonjs/fake-timers": "^9.1.2",
64
+ "ajv": "^8.20.0",
64
65
  "browserify": "^17.0.0",
65
66
  "c8": "^7.11.2",
66
67
  "esbuild": "^0.19.9",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tar-stream",
3
- "version": "3.2.1",
3
+ "version": "3.2.2",
4
4
  "description": "tar-stream is a streaming tar parser and generator and nothing else. It operates purely using streams which means you can easily extract/parse tarballs without ever hitting the file system.",
5
5
  "main": "index.js",
6
6
  "exports": {
@@ -24,7 +24,7 @@
24
24
  }
25
25
  },
26
26
  "scripts": {
27
- "test": "standard && brittle test/*.js"
27
+ "test": "standard && brittle-node test/*.js"
28
28
  },
29
29
  "repository": {
30
30
  "type": "git",
@@ -37,13 +37,13 @@
37
37
  },
38
38
  "homepage": "https://github.com/mafintosh/tar-stream",
39
39
  "dependencies": {
40
- "b4a": "^1.6.4",
41
- "bare-fs": "^4.5.5",
42
- "fast-fifo": "^1.2.0",
43
- "streamx": "^2.15.0"
40
+ "b4a": "^1.9.0",
41
+ "bare-fs": "^4.8.2",
42
+ "fast-fifo": "^1.3.2",
43
+ "streamx": "^2.28.1"
44
44
  },
45
45
  "devDependencies": {
46
- "brittle": "^3.3.2",
46
+ "brittle": "^4.3.0",
47
47
  "concat-stream": "^2.0.0",
48
48
  "standard": "^17.0.1"
49
49
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-mac2-driver",
3
- "version": "4.3.6",
3
+ "version": "4.4.0",
4
4
  "description": "XCTest-based Appium driver for macOS apps automation",
5
5
  "keywords": [
6
6
  "XCTest",
@@ -47,7 +47,8 @@
47
47
  "dependencies": {
48
48
  "@appium/strongbox": "2.0.1",
49
49
  "@colors/colors": "1.6.1",
50
- "appium-xcode": "7.2.2",
50
+ "appium-xcode": "7.2.3",
51
+ "async-lock": "1.4.1",
51
52
  "asyncbox": "6.4.3",
52
53
  "axios": "1.20.0",
53
54
  "portscanner": "2.2.0",
@@ -81,6 +82,7 @@
81
82
  "@appium/strongbox",
82
83
  "@colors/colors",
83
84
  "appium-xcode",
85
+ "async-lock",
84
86
  "asyncbox",
85
87
  "axios",
86
88
  "portscanner",