appium 3.2.2 → 3.3.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/build/lib/cli/args.d.ts +16 -12
- package/build/lib/cli/args.d.ts.map +1 -1
- package/build/lib/cli/args.js +15 -35
- package/build/lib/cli/args.js.map +1 -1
- package/build/lib/cli/driver-command.d.ts +51 -93
- package/build/lib/cli/driver-command.d.ts.map +1 -1
- package/build/lib/cli/driver-command.js +11 -66
- package/build/lib/cli/driver-command.js.map +1 -1
- package/build/lib/cli/extension-command.d.ts +211 -415
- package/build/lib/cli/extension-command.d.ts.map +1 -1
- package/build/lib/cli/extension-command.js +384 -653
- package/build/lib/cli/extension-command.js.map +1 -1
- package/build/lib/cli/extension.d.ts +11 -16
- package/build/lib/cli/extension.d.ts.map +1 -1
- package/build/lib/cli/extension.js +10 -28
- package/build/lib/cli/extension.js.map +1 -1
- package/build/lib/cli/parser.d.ts +40 -69
- package/build/lib/cli/parser.d.ts.map +1 -1
- package/build/lib/cli/parser.js +24 -59
- package/build/lib/cli/parser.js.map +1 -1
- package/build/lib/cli/plugin-command.d.ts +50 -90
- package/build/lib/cli/plugin-command.d.ts.map +1 -1
- package/build/lib/cli/plugin-command.js +11 -63
- package/build/lib/cli/plugin-command.js.map +1 -1
- package/build/lib/cli/setup-command.d.ts +21 -26
- package/build/lib/cli/setup-command.d.ts.map +1 -1
- package/build/lib/cli/setup-command.js +13 -55
- package/build/lib/cli/setup-command.js.map +1 -1
- package/build/lib/cli/utils.d.ts +27 -29
- package/build/lib/cli/utils.d.ts.map +1 -1
- package/build/lib/cli/utils.js +29 -31
- package/build/lib/cli/utils.js.map +1 -1
- package/build/lib/config-file.d.ts +24 -67
- package/build/lib/config-file.d.ts.map +1 -1
- package/build/lib/config-file.js +56 -115
- package/build/lib/config-file.js.map +1 -1
- package/build/lib/config.d.ts +42 -44
- package/build/lib/config.d.ts.map +1 -1
- package/build/lib/config.js +75 -107
- package/build/lib/config.js.map +1 -1
- package/build/lib/constants.d.ts +23 -23
- package/build/lib/constants.d.ts.map +1 -1
- package/build/lib/constants.js +10 -15
- package/build/lib/constants.js.map +1 -1
- package/build/lib/doctor/doctor.d.ts +40 -57
- package/build/lib/doctor/doctor.d.ts.map +1 -1
- package/build/lib/doctor/doctor.js +29 -60
- package/build/lib/doctor/doctor.js.map +1 -1
- package/build/lib/grid-register.d.ts +32 -7
- package/build/lib/grid-register.d.ts.map +1 -1
- package/build/lib/grid-register.js +84 -48
- package/build/lib/grid-register.js.map +1 -1
- package/build/lib/logsink.d.ts +13 -22
- package/build/lib/logsink.d.ts.map +1 -1
- package/build/lib/logsink.js +48 -103
- package/build/lib/logsink.js.map +1 -1
- package/build/lib/main.js +1 -1
- package/build/lib/main.js.map +1 -1
- package/build/lib/schema/arg-spec.d.ts +32 -107
- package/build/lib/schema/arg-spec.d.ts.map +1 -1
- package/build/lib/schema/arg-spec.js +11 -107
- package/build/lib/schema/arg-spec.js.map +1 -1
- package/build/lib/schema/cli-args.d.ts +3 -15
- package/build/lib/schema/cli-args.d.ts.map +1 -1
- package/build/lib/schema/cli-args.js +15 -105
- package/build/lib/schema/cli-args.js.map +1 -1
- package/build/lib/schema/cli-transformers.d.ts +15 -12
- package/build/lib/schema/cli-transformers.d.ts.map +1 -1
- package/build/lib/schema/cli-transformers.js +15 -45
- package/build/lib/schema/cli-transformers.js.map +1 -1
- package/build/lib/schema/index.d.ts +2 -2
- package/build/lib/schema/index.d.ts.map +1 -1
- package/build/lib/schema/index.js.map +1 -1
- package/build/lib/schema/keywords.d.ts +12 -20
- package/build/lib/schema/keywords.d.ts.map +1 -1
- package/build/lib/schema/keywords.js +6 -51
- package/build/lib/schema/keywords.js.map +1 -1
- package/build/lib/schema/schema.d.ts +106 -231
- package/build/lib/schema/schema.d.ts.map +1 -1
- package/build/lib/schema/schema.js +75 -345
- package/build/lib/schema/schema.js.map +1 -1
- package/build/lib/utils.d.ts +59 -238
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +55 -207
- package/build/lib/utils.js.map +1 -1
- package/lib/cli/{args.js → args.ts} +40 -51
- package/lib/cli/driver-command.ts +122 -0
- package/lib/cli/{extension-command.js → extension-command.ts} +610 -689
- package/lib/cli/extension.ts +65 -0
- package/lib/cli/{parser.js → parser.ts} +48 -71
- package/lib/cli/plugin-command.ts +117 -0
- package/lib/cli/{setup-command.js → setup-command.ts} +57 -72
- package/lib/cli/utils.ts +97 -0
- package/lib/config-file.ts +212 -0
- package/lib/{config.js → config.ts} +129 -141
- package/lib/{constants.js → constants.ts} +30 -41
- package/lib/doctor/{doctor.js → doctor.ts} +81 -91
- package/lib/grid-register.ts +250 -0
- package/lib/{logsink.js → logsink.ts} +91 -137
- package/lib/main.js +1 -1
- package/lib/schema/arg-spec.ts +131 -0
- package/lib/schema/cli-args.ts +171 -0
- package/lib/schema/cli-transformers.ts +83 -0
- package/lib/schema/keywords.ts +96 -0
- package/lib/schema/schema.ts +449 -0
- package/lib/utils.ts +404 -0
- package/package.json +16 -16
- package/lib/cli/driver-command.js +0 -174
- package/lib/cli/extension.js +0 -74
- package/lib/cli/plugin-command.js +0 -164
- package/lib/cli/utils.js +0 -91
- package/lib/config-file.js +0 -228
- package/lib/grid-register.js +0 -146
- package/lib/schema/arg-spec.js +0 -229
- package/lib/schema/cli-args.js +0 -254
- package/lib/schema/cli-transformers.js +0 -113
- package/lib/schema/keywords.js +0 -136
- package/lib/schema/schema.js +0 -725
- package/lib/utils.js +0 -512
- /package/lib/schema/{index.js → index.ts} +0 -0
package/build/lib/utils.js
CHANGED
|
@@ -8,7 +8,6 @@ exports.makeNonW3cCapsError = makeNonW3cCapsError;
|
|
|
8
8
|
exports.parseCapsForInnerDriver = parseCapsForInnerDriver;
|
|
9
9
|
exports.insertAppiumPrefixes = insertAppiumPrefixes;
|
|
10
10
|
exports.removeAppiumPrefixes = removeAppiumPrefixes;
|
|
11
|
-
exports.getPackageVersion = getPackageVersion;
|
|
12
11
|
exports.adjustNodePath = adjustNodePath;
|
|
13
12
|
exports.pullSettings = pullSettings;
|
|
14
13
|
exports.isServerCommandArgs = isServerCommandArgs;
|
|
@@ -32,58 +31,42 @@ const STANDARD_CAPS_LOWERCASE = new Set([...base_driver_1.STANDARD_CAPS].map((ca
|
|
|
32
31
|
exports.V4_BROADCAST_IP = '0.0.0.0';
|
|
33
32
|
exports.V6_BROADCAST_IP = '::';
|
|
34
33
|
exports.npmPackage = support_1.fs.readPackageJsonFrom(__dirname);
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
-
* If `stdout` is a TTY, this is `true`.
|
|
38
|
-
*
|
|
39
|
-
* Used for tighter control over log output.
|
|
40
|
-
* @type {boolean}
|
|
41
|
-
*/
|
|
34
|
+
/** If stdout is a TTY; used for tighter control over log output. */
|
|
42
35
|
const isStdoutTTY = process.stdout.isTTY;
|
|
43
36
|
/**
|
|
44
|
-
* Creates an error
|
|
45
|
-
*
|
|
46
|
-
* @returns {Error}
|
|
37
|
+
* Creates an error when a session receives non-W3C capabilities.
|
|
47
38
|
*/
|
|
48
39
|
function makeNonW3cCapsError() {
|
|
49
40
|
return new base_driver_1.errors.SessionNotCreatedError('Session capabilities format must comply to the W3C standard. Make sure your client is up to date. ' +
|
|
50
41
|
'See https://www.w3.org/TR/webdriver/#new-session for more details.');
|
|
51
42
|
}
|
|
52
43
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* @todo May want to force color to be `false` if {@link isStdoutTTY} is `false`.
|
|
44
|
+
* Logs a value to the console using the info logger (with util.inspect formatting).
|
|
56
45
|
*/
|
|
57
|
-
exports.inspect = lodash_1.default.flow(lodash_1.default.partialRight(
|
|
58
|
-
|
|
46
|
+
exports.inspect = lodash_1.default.flow(lodash_1.default.partialRight(node_util_1.inspect, {
|
|
47
|
+
colors: true,
|
|
48
|
+
depth: null,
|
|
49
|
+
compact: !isStdoutTTY,
|
|
50
|
+
}), (...args) => {
|
|
59
51
|
logger_1.default.info(...args);
|
|
60
52
|
});
|
|
61
53
|
/**
|
|
62
|
-
*
|
|
63
|
-
* into caps that can be used by the inner drivers.
|
|
54
|
+
* Parses W3C capabilities for the inner driver and applies defaults.
|
|
64
55
|
*
|
|
65
|
-
* @
|
|
66
|
-
* @param {W3CCapabilities<C>} w3cCapabilities
|
|
67
|
-
* @param {C} constraints
|
|
68
|
-
* @param {NSCapabilities<C>} [defaultCapabilities]
|
|
69
|
-
* @returns {ParsedDriverCaps<C>|InvalidCaps<C>}
|
|
56
|
+
* @returns Parsed caps or an invalid result with an error.
|
|
70
57
|
*/
|
|
71
|
-
function parseCapsForInnerDriver(w3cCapabilities, constraints =
|
|
58
|
+
function parseCapsForInnerDriver(w3cCapabilities, constraints = {}, defaultCapabilities = {}) {
|
|
72
59
|
if (!(0, base_driver_1.isW3cCaps)(w3cCapabilities)) {
|
|
73
|
-
return
|
|
74
|
-
error: makeNonW3cCapsError(),
|
|
75
|
-
});
|
|
60
|
+
return { error: makeNonW3cCapsError() };
|
|
76
61
|
}
|
|
77
|
-
let desiredCaps =
|
|
78
|
-
|
|
62
|
+
let desiredCaps = {};
|
|
63
|
+
// eslint-disable-next-line prefer-const -- assigned in success path after try
|
|
79
64
|
let processedW3CCapabilities;
|
|
80
|
-
// Make sure we don't mutate the original arguments
|
|
81
65
|
w3cCapabilities = lodash_1.default.cloneDeep(w3cCapabilities);
|
|
82
66
|
defaultCapabilities = lodash_1.default.cloneDeep(defaultCapabilities);
|
|
83
67
|
if (!lodash_1.default.isEmpty(defaultCapabilities)) {
|
|
84
68
|
for (const [defaultCapKey, defaultCapValue] of lodash_1.default.toPairs(defaultCapabilities)) {
|
|
85
69
|
let isCapAlreadySet = false;
|
|
86
|
-
// Check if the key is already present in firstMatch entries
|
|
87
70
|
for (const firstMatchEntry of w3cCapabilities.firstMatch ?? []) {
|
|
88
71
|
if (lodash_1.default.isPlainObject(firstMatchEntry) &&
|
|
89
72
|
lodash_1.default.has(removeAppiumPrefixes(firstMatchEntry), removeAppiumPrefix(defaultCapKey))) {
|
|
@@ -91,90 +74,59 @@ function parseCapsForInnerDriver(w3cCapabilities, constraints = /** @type {C} */
|
|
|
91
74
|
break;
|
|
92
75
|
}
|
|
93
76
|
}
|
|
94
|
-
// Check if the key is already present in alwaysMatch entries
|
|
95
77
|
isCapAlreadySet =
|
|
96
78
|
isCapAlreadySet ||
|
|
97
79
|
(lodash_1.default.isPlainObject(w3cCapabilities.alwaysMatch) &&
|
|
98
80
|
lodash_1.default.has(removeAppiumPrefixes(w3cCapabilities.alwaysMatch), removeAppiumPrefix(defaultCapKey)));
|
|
99
81
|
if (isCapAlreadySet) {
|
|
100
|
-
// Skip if the key is already present in the provided caps
|
|
101
82
|
continue;
|
|
102
83
|
}
|
|
103
|
-
// Only add the default capability if it is not overridden
|
|
104
84
|
if (lodash_1.default.isEmpty(w3cCapabilities.firstMatch)) {
|
|
105
|
-
w3cCapabilities.firstMatch =
|
|
106
|
-
{ [defaultCapKey]: defaultCapValue },
|
|
107
|
-
]);
|
|
85
|
+
w3cCapabilities.firstMatch = [{ [defaultCapKey]: defaultCapValue }];
|
|
108
86
|
}
|
|
109
87
|
else {
|
|
110
88
|
w3cCapabilities.firstMatch[0][defaultCapKey] = defaultCapValue;
|
|
111
89
|
}
|
|
112
90
|
}
|
|
113
91
|
}
|
|
114
|
-
// Call the process capabilities algorithm to find matching caps on the W3C
|
|
115
|
-
// (see: https://github.com/jlipps/simple-wd-spec#processing-capabilities)
|
|
116
92
|
try {
|
|
117
93
|
desiredCaps = (0, base_driver_1.processCapabilities)(w3cCapabilities, constraints, true);
|
|
118
94
|
}
|
|
119
95
|
catch (error) {
|
|
120
96
|
logger_1.default.info(`Could not parse W3C capabilities: ${error.message}`);
|
|
121
|
-
return
|
|
97
|
+
return {
|
|
122
98
|
desiredCaps,
|
|
123
99
|
processedW3CCapabilities,
|
|
124
|
-
error,
|
|
125
|
-
}
|
|
100
|
+
error: error,
|
|
101
|
+
};
|
|
126
102
|
}
|
|
127
|
-
// Create a new w3c capabilities payload that contains only the matching caps in `alwaysMatch`
|
|
128
103
|
processedW3CCapabilities = {
|
|
129
104
|
alwaysMatch: { ...insertAppiumPrefixes(desiredCaps) },
|
|
130
105
|
firstMatch: [{}],
|
|
131
106
|
};
|
|
132
|
-
return
|
|
107
|
+
return {
|
|
133
108
|
desiredCaps,
|
|
134
109
|
processedW3CCapabilities,
|
|
135
|
-
}
|
|
110
|
+
};
|
|
136
111
|
}
|
|
137
112
|
/**
|
|
138
|
-
*
|
|
139
|
-
* @template {Constraints} [C={}]
|
|
140
|
-
* @param {Capabilities<C>} caps - Desired capabilities object
|
|
141
|
-
* @returns {NSCapabilities<C>}
|
|
113
|
+
* Prefixes capability keys with `appium:` where appropriate.
|
|
142
114
|
*/
|
|
143
115
|
function insertAppiumPrefixes(caps) {
|
|
144
|
-
return
|
|
116
|
+
return lodash_1.default.mapKeys(caps, (_, key) => STANDARD_CAPS_LOWERCASE.has(key.toLowerCase()) || key.includes(':')
|
|
145
117
|
? key
|
|
146
|
-
: `${W3C_APPIUM_PREFIX}:${key}`)
|
|
118
|
+
: `${W3C_APPIUM_PREFIX}:${key}`);
|
|
147
119
|
}
|
|
148
120
|
/**
|
|
149
|
-
*
|
|
150
|
-
* @param {NSCapabilities<C>} caps
|
|
151
|
-
* @returns {Capabilities<C>}
|
|
121
|
+
* Removes `appium:` prefix from capability keys.
|
|
152
122
|
*/
|
|
153
123
|
function removeAppiumPrefixes(caps) {
|
|
154
|
-
return
|
|
124
|
+
return lodash_1.default.mapKeys(caps, (_, key) => removeAppiumPrefix(key));
|
|
155
125
|
}
|
|
156
126
|
/**
|
|
157
|
-
*
|
|
158
|
-
* @returns {string}
|
|
159
|
-
*/
|
|
160
|
-
function removeAppiumPrefix(key) {
|
|
161
|
-
const prefix = `${W3C_APPIUM_PREFIX}:`;
|
|
162
|
-
return lodash_1.default.startsWith(key, prefix) ? key.substring(prefix.length) : key;
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
*
|
|
166
|
-
* @param {string} pkgName
|
|
167
|
-
* @returns {string|undefined}
|
|
168
|
-
*/
|
|
169
|
-
function getPackageVersion(pkgName) {
|
|
170
|
-
const pkgInfo = require(`${pkgName}/package.json`) || {};
|
|
171
|
-
return pkgInfo.version;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Returns the root directory of the Appium module.
|
|
127
|
+
* Returns the root directory of the Appium module (memoized).
|
|
175
128
|
*
|
|
176
|
-
* @
|
|
177
|
-
* @throws {Error} - If the Appium module root cannot be determined.
|
|
129
|
+
* @throws {Error} If the appium module root cannot be determined.
|
|
178
130
|
*/
|
|
179
131
|
exports.getAppiumModuleRoot = lodash_1.default.memoize(function getAppiumModuleRoot() {
|
|
180
132
|
const selfRoot = support_1.node.getModuleRootSync('appium', __filename);
|
|
@@ -184,13 +136,7 @@ exports.getAppiumModuleRoot = lodash_1.default.memoize(function getAppiumModuleR
|
|
|
184
136
|
return selfRoot;
|
|
185
137
|
});
|
|
186
138
|
/**
|
|
187
|
-
* Adjusts NODE_PATH
|
|
188
|
-
* so CJS drivers and plugins could load their peer dependencies.
|
|
189
|
-
* Read https://nodejs.org/api/modules.html#loading-from-the-global-folders
|
|
190
|
-
* for more details.
|
|
191
|
-
*
|
|
192
|
-
* Unfortunately this hack does not work with ESM modules,
|
|
193
|
-
* @returns {void}
|
|
139
|
+
* Adjusts NODE_PATH so CJS drivers/plugins can load peer deps. Does not work with ESM.
|
|
194
140
|
*/
|
|
195
141
|
function adjustNodePath() {
|
|
196
142
|
let appiumModuleSearchRoot;
|
|
@@ -203,11 +149,7 @@ function adjustNodePath() {
|
|
|
203
149
|
}
|
|
204
150
|
const refreshRequirePaths = () => {
|
|
205
151
|
try {
|
|
206
|
-
//
|
|
207
|
-
// ! statements in client modules. It uses a private API though,
|
|
208
|
-
// ! so it could break (maybe, eventually).
|
|
209
|
-
// See https://gist.github.com/branneman/8048520#7-the-hack
|
|
210
|
-
// @ts-ignore see above comment
|
|
152
|
+
// Private API; see https://gist.github.com/branneman/8048520#7-the-hack
|
|
211
153
|
require('node:module').Module._initPaths();
|
|
212
154
|
return true;
|
|
213
155
|
}
|
|
@@ -240,27 +182,10 @@ function adjustNodePath() {
|
|
|
240
182
|
}
|
|
241
183
|
}
|
|
242
184
|
/**
|
|
243
|
-
* Pulls
|
|
244
|
-
*
|
|
245
|
-
* `settings[setting_name]: setting_value`
|
|
246
|
-
* or
|
|
247
|
-
* ```
|
|
248
|
-
* settings = {
|
|
249
|
-
* setting_name1: 'setting_value1',
|
|
250
|
-
* setting_name2: 'setting_value2',
|
|
251
|
-
* }
|
|
252
|
-
* ```
|
|
253
|
-
* The capabilities argument itself gets mutated, so it does not contain parsed
|
|
254
|
-
* settings anymore to avoid further parsing issues.
|
|
255
|
-
* Check
|
|
256
|
-
* https://appium.io/docs/en/latest/guides/settings/
|
|
257
|
-
* for more details on the available settings.
|
|
185
|
+
* Pulls Appium settings from capabilities (mutates caps). Supports
|
|
186
|
+
* `settings[key]: value` and `settings: { key: value }`.
|
|
258
187
|
*
|
|
259
|
-
* @
|
|
260
|
-
* one or more settings have been pulled from it
|
|
261
|
-
* @return {Object} - An empty dictionary if the given caps contains no
|
|
262
|
-
* setting items or a dictionary containing parsed Appium setting names along with
|
|
263
|
-
* their values.
|
|
188
|
+
* @returns Parsed settings object; empty if none found.
|
|
264
189
|
*/
|
|
265
190
|
function pullSettings(caps) {
|
|
266
191
|
if (!lodash_1.default.isPlainObject(caps) || lodash_1.default.isEmpty(caps)) {
|
|
@@ -285,82 +210,59 @@ function pullSettings(caps) {
|
|
|
285
210
|
return result;
|
|
286
211
|
}
|
|
287
212
|
/**
|
|
288
|
-
*
|
|
289
|
-
* @template {CliExtensionSubcommand|void} [SubCmd=void]
|
|
290
|
-
* @param {Args<Cmd, SubCmd>} args
|
|
291
|
-
* @returns {args is Args<ServerCommand>}
|
|
213
|
+
* Type guard: args are for the server command.
|
|
292
214
|
*/
|
|
293
215
|
function isServerCommandArgs(args) {
|
|
294
216
|
return args.subcommand === constants_1.SERVER_SUBCOMMAND;
|
|
295
217
|
}
|
|
296
218
|
/**
|
|
297
|
-
*
|
|
298
|
-
* @template {CliExtensionSubcommand|CliCommandSetupSubcommand|void} [SubCmd=void]
|
|
299
|
-
* @param {Args<Cmd, SubCmd>} args
|
|
300
|
-
* @returns {args is Args<SetupCommand>}
|
|
219
|
+
* Type guard: args are for the setup command.
|
|
301
220
|
*/
|
|
302
221
|
function isSetupCommandArgs(args) {
|
|
303
222
|
return args.subcommand === constants_1.SETUP_SUBCOMMAND;
|
|
304
223
|
}
|
|
305
224
|
/**
|
|
306
|
-
*
|
|
307
|
-
* @template {CliExtensionSubcommand|void} [SubCmd=void]
|
|
308
|
-
* @param {Args<Cmd, SubCmd>} args
|
|
309
|
-
* @returns {args is Args<CliExtensionCommand, SubCmd>}
|
|
225
|
+
* Type guard: args are for an extension command (driver or plugin).
|
|
310
226
|
*/
|
|
311
227
|
function isExtensionCommandArgs(args) {
|
|
312
228
|
return args.subcommand === constants_1.DRIVER_TYPE || args.subcommand === constants_1.PLUGIN_TYPE;
|
|
313
229
|
}
|
|
314
230
|
/**
|
|
315
|
-
*
|
|
316
|
-
* @template {CliExtensionSubcommand} SubCmd
|
|
317
|
-
* @param {Args<Cmd, SubCmd>} args
|
|
318
|
-
* @returns {args is Args<DriverCommand, SubCmd>}
|
|
231
|
+
* Type guard: args are for a driver extension command.
|
|
319
232
|
*/
|
|
320
233
|
function isDriverCommandArgs(args) {
|
|
321
234
|
return args.subcommand === constants_1.DRIVER_TYPE;
|
|
322
235
|
}
|
|
323
236
|
/**
|
|
324
|
-
*
|
|
325
|
-
* @template {CliExtensionSubcommand} SubCmd
|
|
326
|
-
* @param {Args<Cmd, SubCmd>} args
|
|
327
|
-
* @returns {args is Args<PluginCommand, SubCmd>}
|
|
237
|
+
* Type guard: args are for a plugin extension command.
|
|
328
238
|
*/
|
|
329
239
|
function isPluginCommandArgs(args) {
|
|
330
240
|
return args.subcommand === constants_1.PLUGIN_TYPE;
|
|
331
241
|
}
|
|
332
242
|
/**
|
|
333
|
-
*
|
|
243
|
+
* Returns network interfaces for the given IP family.
|
|
334
244
|
*
|
|
335
|
-
* @param
|
|
336
|
-
* 6 to include ipv6 addresses only, or null to include all of them
|
|
337
|
-
* @returns {os.NetworkInterfaceInfo[]} The list of matched interfaces
|
|
245
|
+
* @param family - 4 for IPv4, 6 for IPv6, or null for all.
|
|
338
246
|
*/
|
|
339
247
|
function fetchInterfaces(family = null) {
|
|
340
248
|
let familyValue = null;
|
|
341
|
-
// 'IPv4' is in Node <= 17, from 18 it's a number 4 or 6
|
|
342
249
|
if (family === 4) {
|
|
343
250
|
familyValue = [4, 'IPv4'];
|
|
344
251
|
}
|
|
345
252
|
else if (family === 6) {
|
|
346
253
|
familyValue = [6, 'IPv6'];
|
|
347
254
|
}
|
|
348
|
-
|
|
349
|
-
return lodash_1.default.flatMap(
|
|
350
|
-
// @ts-ignore The linter does not understand the above filter
|
|
351
|
-
.filter(({ family }) => !familyValue || familyValue && familyValue.includes(family));
|
|
255
|
+
const ifaces = lodash_1.default.values(node_os_1.default.networkInterfaces()).filter(Boolean);
|
|
256
|
+
return lodash_1.default.flatMap(ifaces).filter((info) => !familyValue || familyValue.includes(info.family));
|
|
352
257
|
}
|
|
353
258
|
/**
|
|
354
|
-
* https://github.com/SheetJS/js-adler32
|
|
355
|
-
*
|
|
356
|
-
* @param {string} str
|
|
357
|
-
* @param {number?} [seed]
|
|
358
|
-
* @returns {number}
|
|
259
|
+
* Adler-32 checksum (see https://github.com/SheetJS/js-adler32).
|
|
359
260
|
*/
|
|
360
261
|
function adler32(str, seed = null) {
|
|
361
|
-
let a = 1, b = 0,
|
|
262
|
+
let a = 1, b = 0, M = 0, c = 0, d = 0;
|
|
263
|
+
const L = str.length;
|
|
362
264
|
if (typeof seed === 'number') {
|
|
363
|
-
a = seed &
|
|
265
|
+
a = seed & 0xffff;
|
|
364
266
|
b = seed >>> 16;
|
|
365
267
|
}
|
|
366
268
|
for (let i = 0; i < L;) {
|
|
@@ -376,7 +278,7 @@ function adler32(str, seed = null) {
|
|
|
376
278
|
--M;
|
|
377
279
|
a += 128 | (c & 63);
|
|
378
280
|
}
|
|
379
|
-
else if (c >=
|
|
281
|
+
else if (c >= 0xd800 && c < 0xe000) {
|
|
380
282
|
c = (c & 1023) + 64;
|
|
381
283
|
d = str.charCodeAt(i++) & 1023;
|
|
382
284
|
a += 240 | ((c >> 8) & 7);
|
|
@@ -402,75 +304,21 @@ function adler32(str, seed = null) {
|
|
|
402
304
|
b += a;
|
|
403
305
|
--M;
|
|
404
306
|
}
|
|
405
|
-
a =
|
|
406
|
-
b =
|
|
307
|
+
a = 15 * (a >>> 16) + (a & 65535);
|
|
308
|
+
b = 15 * (b >>> 16) + (b & 65535);
|
|
407
309
|
}
|
|
408
310
|
return ((b % 65521) << 16) | (a % 65521);
|
|
409
311
|
}
|
|
410
312
|
/**
|
|
411
|
-
*
|
|
412
|
-
*
|
|
413
|
-
* @param {string} address
|
|
414
|
-
* @returns {boolean}
|
|
313
|
+
* Returns true if the address is a broadcast IP (0.0.0.0 or ::).
|
|
415
314
|
*/
|
|
416
315
|
function isBroadcastIp(address) {
|
|
417
316
|
return [exports.V4_BROADCAST_IP, exports.V6_BROADCAST_IP, `[${exports.V6_BROADCAST_IP}]`].includes(address);
|
|
418
317
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
* @typedef ParsedDriverCaps
|
|
426
|
-
* @property {Capabilities<C>} desiredCaps
|
|
427
|
-
* @property {W3CCapabilities<C>} processedW3CCapabilities
|
|
428
|
-
*/
|
|
429
|
-
/**
|
|
430
|
-
* @todo protocol is more specific
|
|
431
|
-
* @template {Constraints} [C=BaseDriverCapConstraints]
|
|
432
|
-
* @typedef InvalidCaps
|
|
433
|
-
* @property {Error} error
|
|
434
|
-
* @property {Capabilities<C>} [desiredCaps]
|
|
435
|
-
* @property {W3CCapabilities<C>} [processedW3CCapabilities]
|
|
436
|
-
*/
|
|
437
|
-
/**
|
|
438
|
-
* @template {Constraints} C
|
|
439
|
-
* @typedef {import('@appium/types').Capabilities<C>} Capabilities
|
|
440
|
-
*/
|
|
441
|
-
/**
|
|
442
|
-
* @template {Constraints} C
|
|
443
|
-
* @typedef {import('@appium/types').W3CCapabilities<C>} W3CCapabilities
|
|
444
|
-
*/
|
|
445
|
-
/**
|
|
446
|
-
* @template {Constraints} C
|
|
447
|
-
* @typedef {import('@appium/types').NSCapabilities<C>} NSCapabilities
|
|
448
|
-
*/
|
|
449
|
-
/**
|
|
450
|
-
* @template {Constraints} C
|
|
451
|
-
* @typedef {import('@appium/types').ConstraintsToCaps<C>} ConstraintsToCaps
|
|
452
|
-
*/
|
|
453
|
-
/**
|
|
454
|
-
* @typedef {import('@appium/types').Constraints} Constraints
|
|
455
|
-
*/
|
|
456
|
-
/**
|
|
457
|
-
* @typedef {import('appium/types').CliCommand} CliCommand
|
|
458
|
-
* @typedef {import('appium/types').CliExtensionSubcommand} CliExtensionSubcommand
|
|
459
|
-
* @typedef {import('appium/types').CliExtensionCommand} CliExtensionCommand
|
|
460
|
-
* @typedef {import('appium/types').CliCommandSetupSubcommand} CliCommandSetupSubcommand
|
|
461
|
-
* @typedef {import('appium/types').CliCommandServer} ServerCommand
|
|
462
|
-
* @typedef {import('appium/types').CliCommandDriver} DriverCommand
|
|
463
|
-
* @typedef {import('appium/types').CliCommandPlugin} PluginCommand
|
|
464
|
-
* @typedef {import('appium/types').CliCommandSetup} SetupCommand
|
|
465
|
-
*/
|
|
466
|
-
/**
|
|
467
|
-
* @template {CliCommand} [Cmd=ServerCommand]
|
|
468
|
-
* @template {CliExtensionSubcommand|CliCommandSetupSubcommand|void} [SubCmd=void]
|
|
469
|
-
* @typedef {import('appium/types').Args<Cmd, SubCmd>} Args
|
|
470
|
-
*/
|
|
471
|
-
/**
|
|
472
|
-
* @template {CliCommand} [Cmd=ServerCommand]
|
|
473
|
-
* @template {CliExtensionSubcommand|CliCommandSetupSubcommand|void} [SubCmd=void]
|
|
474
|
-
* @typedef {import('appium/types').ParsedArgs<Cmd, SubCmd>} ParsedArgs
|
|
475
|
-
*/
|
|
318
|
+
// #region private helpers
|
|
319
|
+
function removeAppiumPrefix(key) {
|
|
320
|
+
const prefix = `${W3C_APPIUM_PREFIX}:`;
|
|
321
|
+
return lodash_1.default.startsWith(key, prefix) ? key.substring(prefix.length) : key;
|
|
322
|
+
}
|
|
323
|
+
// #endregion
|
|
476
324
|
//# sourceMappingURL=utils.js.map
|
package/build/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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"}
|