appium 3.2.1 → 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.
Files changed (122) hide show
  1. package/build/lib/cli/args.d.ts +16 -12
  2. package/build/lib/cli/args.d.ts.map +1 -1
  3. package/build/lib/cli/args.js +15 -35
  4. package/build/lib/cli/args.js.map +1 -1
  5. package/build/lib/cli/driver-command.d.ts +51 -93
  6. package/build/lib/cli/driver-command.d.ts.map +1 -1
  7. package/build/lib/cli/driver-command.js +11 -66
  8. package/build/lib/cli/driver-command.js.map +1 -1
  9. package/build/lib/cli/extension-command.d.ts +211 -415
  10. package/build/lib/cli/extension-command.d.ts.map +1 -1
  11. package/build/lib/cli/extension-command.js +384 -653
  12. package/build/lib/cli/extension-command.js.map +1 -1
  13. package/build/lib/cli/extension.d.ts +11 -16
  14. package/build/lib/cli/extension.d.ts.map +1 -1
  15. package/build/lib/cli/extension.js +10 -28
  16. package/build/lib/cli/extension.js.map +1 -1
  17. package/build/lib/cli/parser.d.ts +40 -69
  18. package/build/lib/cli/parser.d.ts.map +1 -1
  19. package/build/lib/cli/parser.js +24 -59
  20. package/build/lib/cli/parser.js.map +1 -1
  21. package/build/lib/cli/plugin-command.d.ts +50 -90
  22. package/build/lib/cli/plugin-command.d.ts.map +1 -1
  23. package/build/lib/cli/plugin-command.js +11 -63
  24. package/build/lib/cli/plugin-command.js.map +1 -1
  25. package/build/lib/cli/setup-command.d.ts +21 -26
  26. package/build/lib/cli/setup-command.d.ts.map +1 -1
  27. package/build/lib/cli/setup-command.js +13 -55
  28. package/build/lib/cli/setup-command.js.map +1 -1
  29. package/build/lib/cli/utils.d.ts +27 -29
  30. package/build/lib/cli/utils.d.ts.map +1 -1
  31. package/build/lib/cli/utils.js +29 -31
  32. package/build/lib/cli/utils.js.map +1 -1
  33. package/build/lib/config-file.d.ts +24 -67
  34. package/build/lib/config-file.d.ts.map +1 -1
  35. package/build/lib/config-file.js +56 -115
  36. package/build/lib/config-file.js.map +1 -1
  37. package/build/lib/config.d.ts +42 -44
  38. package/build/lib/config.d.ts.map +1 -1
  39. package/build/lib/config.js +75 -107
  40. package/build/lib/config.js.map +1 -1
  41. package/build/lib/constants.d.ts +23 -23
  42. package/build/lib/constants.d.ts.map +1 -1
  43. package/build/lib/constants.js +10 -15
  44. package/build/lib/constants.js.map +1 -1
  45. package/build/lib/doctor/doctor.d.ts +40 -57
  46. package/build/lib/doctor/doctor.d.ts.map +1 -1
  47. package/build/lib/doctor/doctor.js +29 -60
  48. package/build/lib/doctor/doctor.js.map +1 -1
  49. package/build/lib/grid-register.d.ts +32 -7
  50. package/build/lib/grid-register.d.ts.map +1 -1
  51. package/build/lib/grid-register.js +84 -48
  52. package/build/lib/grid-register.js.map +1 -1
  53. package/build/lib/logsink.d.ts +13 -22
  54. package/build/lib/logsink.d.ts.map +1 -1
  55. package/build/lib/logsink.js +48 -103
  56. package/build/lib/logsink.js.map +1 -1
  57. package/build/lib/main.js +1 -1
  58. package/build/lib/main.js.map +1 -1
  59. package/build/lib/schema/arg-spec.d.ts +32 -107
  60. package/build/lib/schema/arg-spec.d.ts.map +1 -1
  61. package/build/lib/schema/arg-spec.js +11 -107
  62. package/build/lib/schema/arg-spec.js.map +1 -1
  63. package/build/lib/schema/cli-args.d.ts +3 -15
  64. package/build/lib/schema/cli-args.d.ts.map +1 -1
  65. package/build/lib/schema/cli-args.js +15 -105
  66. package/build/lib/schema/cli-args.js.map +1 -1
  67. package/build/lib/schema/cli-transformers.d.ts +15 -12
  68. package/build/lib/schema/cli-transformers.d.ts.map +1 -1
  69. package/build/lib/schema/cli-transformers.js +15 -45
  70. package/build/lib/schema/cli-transformers.js.map +1 -1
  71. package/build/lib/schema/index.d.ts +2 -2
  72. package/build/lib/schema/index.d.ts.map +1 -1
  73. package/build/lib/schema/index.js.map +1 -1
  74. package/build/lib/schema/keywords.d.ts +12 -20
  75. package/build/lib/schema/keywords.d.ts.map +1 -1
  76. package/build/lib/schema/keywords.js +6 -51
  77. package/build/lib/schema/keywords.js.map +1 -1
  78. package/build/lib/schema/schema.d.ts +106 -231
  79. package/build/lib/schema/schema.d.ts.map +1 -1
  80. package/build/lib/schema/schema.js +75 -345
  81. package/build/lib/schema/schema.js.map +1 -1
  82. package/build/lib/utils.d.ts +59 -238
  83. package/build/lib/utils.d.ts.map +1 -1
  84. package/build/lib/utils.js +55 -207
  85. package/build/lib/utils.js.map +1 -1
  86. package/lib/cli/{args.js → args.ts} +40 -51
  87. package/lib/cli/driver-command.ts +122 -0
  88. package/lib/cli/{extension-command.js → extension-command.ts} +610 -689
  89. package/lib/cli/extension.ts +65 -0
  90. package/lib/cli/{parser.js → parser.ts} +48 -71
  91. package/lib/cli/plugin-command.ts +117 -0
  92. package/lib/cli/{setup-command.js → setup-command.ts} +57 -72
  93. package/lib/cli/utils.ts +97 -0
  94. package/lib/config-file.ts +212 -0
  95. package/lib/{config.js → config.ts} +129 -141
  96. package/lib/{constants.js → constants.ts} +30 -41
  97. package/lib/doctor/{doctor.js → doctor.ts} +81 -91
  98. package/lib/grid-register.ts +250 -0
  99. package/lib/{logsink.js → logsink.ts} +91 -137
  100. package/lib/main.js +1 -1
  101. package/lib/schema/arg-spec.ts +131 -0
  102. package/lib/schema/cli-args.ts +171 -0
  103. package/lib/schema/cli-transformers.ts +83 -0
  104. package/lib/schema/keywords.ts +96 -0
  105. package/lib/schema/schema.ts +449 -0
  106. package/lib/utils.ts +404 -0
  107. package/package.json +19 -20
  108. package/tsconfig.json +1 -1
  109. package/build/package.json +0 -99
  110. package/lib/cli/driver-command.js +0 -174
  111. package/lib/cli/extension.js +0 -74
  112. package/lib/cli/plugin-command.js +0 -164
  113. package/lib/cli/utils.js +0 -91
  114. package/lib/config-file.js +0 -228
  115. package/lib/grid-register.js +0 -146
  116. package/lib/schema/arg-spec.js +0 -229
  117. package/lib/schema/cli-args.js +0 -254
  118. package/lib/schema/cli-transformers.js +0 -113
  119. package/lib/schema/keywords.js +0 -136
  120. package/lib/schema/schema.js +0 -725
  121. package/lib/utils.js +0 -512
  122. /package/lib/schema/{index.js → index.ts} +0 -0
@@ -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 object in case a session gets incompatible capabilities as the input.
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
- * Dumps to value to the console using `info` logger.
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
- /** @type {(object: any, options: import('util').InspectOptions) => string} */ (node_util_1.inspect), { colors: true, depth: null, compact: !isStdoutTTY }), (...args) => {
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
- * Takes the caps that were provided in the request and translates them
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
- * @template {Constraints} C
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 = /** @type {C} */ ({}), defaultCapabilities = {}) {
58
+ function parseCapsForInnerDriver(w3cCapabilities, constraints = {}, defaultCapabilities = {}) {
72
59
  if (!(0, base_driver_1.isW3cCaps)(w3cCapabilities)) {
73
- return /** @type {InvalidCaps<C>} */ ({
74
- error: makeNonW3cCapsError(),
75
- });
60
+ return { error: makeNonW3cCapsError() };
76
61
  }
77
- let desiredCaps = /** @type {ParsedDriverCaps<C>['desiredCaps']} */ ({});
78
- /** @type {ParsedDriverCaps<C>['processedW3CCapabilities'] | undefined} */
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 = /** @type {W3CCapabilities<C>['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 /** @type {InvalidCaps<C>} */ ({
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 /** @type {ParsedDriverCaps<C>} */ ({
107
+ return {
133
108
  desiredCaps,
134
109
  processedW3CCapabilities,
135
- });
110
+ };
136
111
  }
137
112
  /**
138
- * Takes a capabilities objects and prefixes capabilities with `appium:`
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 /** @type {NSCapabilities<C>} */ (lodash_1.default.mapKeys(caps, (_, key) => STANDARD_CAPS_LOWERCASE.has(key.toLowerCase()) || key.includes(':')
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
- * @template {Constraints} [C={}]
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 /** @type {Capabilities<C>} */ (lodash_1.default.mapKeys(caps, (_, key) => removeAppiumPrefix(key)));
124
+ return lodash_1.default.mapKeys(caps, (_, key) => removeAppiumPrefix(key));
155
125
  }
156
126
  /**
157
- * @param {string} key
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
- * @returns {string} - The absolute path to the Appium module root directory.
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 environment variable,
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
- // ! This hack allows us to avoid modification of import
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 the initial values of Appium settings from the given capabilities argument.
244
- * Each setting item must satisfy the following format:
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
- * @param {?Object} caps - Capabilities dictionary. It is mutated if
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
- * @template {CliCommand} [Cmd=ServerCommand]
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
- * @template {CliCommand} Cmd
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
- * @template {CliCommand} [Cmd=ServerCommand]
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
- * @template {CliCommand} Cmd
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
- * @template {CliCommand} Cmd
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
- * Fetches the list of matched network interfaces of the current host.
243
+ * Returns network interfaces for the given IP family.
334
244
  *
335
- * @param {4|6|null} family Either 4 to include ipv4 addresses only,
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
- // @ts-ignore The linter does not understand the below filter
349
- return lodash_1.default.flatMap(lodash_1.default.values(node_os_1.default.networkInterfaces()).filter(Boolean))
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, L = str.length, M = 0, c = 0, d = 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 & 0xFFFF;
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 >= 0xD800 && c < 0xE000) {
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 = (15 * (a >>> 16) + (a & 65535));
406
- b = (15 * (b >>> 16) + (b & 65535));
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
- * Checks if the provided address is a broadcast one.
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
- * @typedef {import('@appium/types').StringRecord} StringRecord
421
- * @typedef {import('@appium/types').BaseDriverCapConstraints} BaseDriverCapConstraints
422
- */
423
- /**
424
- * @template {Constraints} [C=BaseDriverCapConstraints]
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
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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"}