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.
- package/CHANGELOG.md +6 -0
- package/WebDriverAgentMac/IntegrationTests/AMSessionTests.m +14 -0
- package/WebDriverAgentMac/WebDriverAgentLib/Commands/FBSessionCommands.m +17 -5
- package/WebDriverAgentMac/WebDriverAgentLib/Routing/FBSession.m +5 -1
- package/build/lib/driver.d.ts +3 -0
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +52 -32
- package/build/lib/driver.js.map +1 -1
- package/build/lib/session-claim-handler.d.ts +41 -0
- package/build/lib/session-claim-handler.d.ts.map +1 -0
- package/build/lib/session-claim-handler.js +236 -0
- package/build/lib/session-claim-handler.js.map +1 -0
- package/build/lib/wda-mac.d.ts +6 -2
- package/build/lib/wda-mac.d.ts.map +1 -1
- package/build/lib/wda-mac.js +39 -9
- package/build/lib/wda-mac.js.map +1 -1
- package/lib/driver.ts +55 -31
- package/lib/session-claim-handler.ts +306 -0
- package/lib/wda-mac.ts +41 -10
- package/node_modules/appium-xcode/CHANGELOG.md +7 -0
- package/node_modules/appium-xcode/package.json +4 -4
- package/node_modules/async-lock/AUTHORS +21 -0
- package/node_modules/async-lock/History.md +132 -0
- package/node_modules/async-lock/LICENSE +22 -0
- package/node_modules/async-lock/README.md +177 -0
- package/node_modules/async-lock/index.js +2 -0
- package/node_modules/async-lock/lib/index.js +312 -0
- package/node_modules/async-lock/package.json +48 -0
- package/node_modules/bare-fs/binding.c +1 -1
- package/node_modules/bare-fs/index.js +30 -6
- package/node_modules/bare-fs/package.json +1 -1
- package/node_modules/bare-fs/prebuilds/android-arm/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/android-arm64/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/android-ia32/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/android-x64/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/darwin-arm64/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/darwin-x64/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/ios-arm64/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/ios-arm64-simulator/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/ios-x64-simulator/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/linux-arm64/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/linux-x64/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/win32-arm64/bare-fs.bare +0 -0
- package/node_modules/bare-fs/prebuilds/win32-x64/bare-fs.bare +0 -0
- package/node_modules/readable-stream/lib/internal/shims/process.js +19 -0
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +1 -1
- package/node_modules/readable-stream/lib/internal/streams/duplexify.js +1 -1
- package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +1 -1
- package/node_modules/readable-stream/lib/internal/streams/from.js +1 -1
- package/node_modules/readable-stream/lib/internal/streams/legacy.js +6 -1
- package/node_modules/readable-stream/lib/internal/streams/pipeline.js +1 -1
- package/node_modules/readable-stream/lib/internal/streams/readable.js +1 -1
- package/node_modules/readable-stream/lib/internal/streams/writable.js +1 -1
- package/node_modules/readable-stream/package.json +3 -2
- package/node_modules/tar-stream/package.json +7 -7
- 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
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
|
@@ -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 (
|
|
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
|
{
|
|
2
2
|
"name": "readable-stream",
|
|
3
|
-
"version": "4.
|
|
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": "
|
|
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.
|
|
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.
|
|
41
|
-
"bare-fs": "^4.
|
|
42
|
-
"fast-fifo": "^1.2
|
|
43
|
-
"streamx": "^2.
|
|
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": "^
|
|
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
|
+
"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.
|
|
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",
|