appium-uiautomator2-driver 7.3.0 → 7.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/build/lib/commands/app-management.d.ts.map +1 -1
- package/build/lib/commands/app-management.js +1 -5
- package/build/lib/commands/app-management.js.map +1 -1
- package/build/lib/commands/element.d.ts.map +1 -1
- package/build/lib/commands/element.js +2 -6
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/gestures.d.ts.map +1 -1
- package/build/lib/commands/gestures.js +2 -6
- package/build/lib/commands/gestures.js.map +1 -1
- package/build/lib/commands/keyboard.d.ts.map +1 -1
- package/build/lib/commands/keyboard.js +0 -8
- package/build/lib/commands/keyboard.js.map +1 -1
- package/build/lib/commands/screenshot.js +7 -8
- package/build/lib/commands/screenshot.js.map +1 -1
- package/build/lib/css-converter.js +9 -12
- package/build/lib/css-converter.js.map +1 -1
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +9 -10
- package/build/lib/driver.js.map +1 -1
- package/build/lib/uiautomator2.d.ts.map +1 -1
- package/build/lib/uiautomator2.js +1 -2
- package/build/lib/uiautomator2.js.map +1 -1
- package/build/lib/{helpers.d.ts → utils/app.d.ts} +1 -1
- package/build/lib/utils/app.d.ts.map +1 -0
- package/build/lib/{helpers.js → utils/app.js} +1 -1
- package/build/lib/utils/app.js.map +1 -0
- package/build/lib/utils/index.d.ts +5 -0
- package/build/lib/utils/index.d.ts.map +1 -0
- package/build/lib/utils/index.js +21 -0
- package/build/lib/utils/index.js.map +1 -0
- package/build/lib/utils/lang.d.ts +15 -0
- package/build/lib/utils/lang.d.ts.map +1 -0
- package/build/lib/utils/lang.js +37 -0
- package/build/lib/utils/lang.js.map +1 -0
- package/build/lib/utils/memoize.d.ts +11 -0
- package/build/lib/utils/memoize.d.ts.map +1 -0
- package/build/lib/utils/memoize.js +26 -0
- package/build/lib/utils/memoize.js.map +1 -0
- package/build/lib/utils/object.d.ts +6 -0
- package/build/lib/utils/object.d.ts.map +1 -0
- package/build/lib/utils/object.js +15 -0
- package/build/lib/utils/object.js.map +1 -0
- package/lib/commands/app-management.ts +1 -2
- package/lib/commands/element.ts +2 -3
- package/lib/commands/gestures.ts +2 -3
- package/lib/commands/keyboard.ts +0 -5
- package/lib/commands/screenshot.ts +7 -7
- package/lib/css-converter.ts +9 -9
- package/lib/driver.ts +8 -9
- package/lib/uiautomator2.ts +1 -2
- package/lib/utils/index.ts +4 -0
- package/lib/utils/lang.ts +34 -0
- package/lib/utils/memoize.ts +26 -0
- package/lib/utils/object.ts +14 -0
- package/npm-shrinkwrap.json +78 -15
- package/package.json +1 -3
- package/build/lib/helpers.d.ts.map +0 -1
- package/build/lib/helpers.js.map +0 -1
- /package/lib/{helpers.ts → utils/app.ts} +0 -0
package/lib/css-converter.ts
CHANGED
|
@@ -8,9 +8,9 @@ import type {
|
|
|
8
8
|
AstSelector,
|
|
9
9
|
AstTagName,
|
|
10
10
|
} from 'css-selector-parser';
|
|
11
|
-
import _ from 'lodash';
|
|
12
11
|
import {errors} from 'appium/driver';
|
|
13
12
|
import {log} from './logger';
|
|
13
|
+
import {escapeRegExp, isEmpty} from './utils';
|
|
14
14
|
|
|
15
15
|
const parseCssSelector = createParser({
|
|
16
16
|
syntax: {
|
|
@@ -100,7 +100,7 @@ export class CssConverter {
|
|
|
100
100
|
private parseAttr(cssAttr: AstAttribute): string {
|
|
101
101
|
const attrValueNode = cssAttr.value as {value?: string} | undefined;
|
|
102
102
|
const attrValue = attrValueNode?.value;
|
|
103
|
-
if (
|
|
103
|
+
if (typeof attrValue !== 'string' && !isEmpty(attrValue)) {
|
|
104
104
|
throw new Error(
|
|
105
105
|
`'${cssAttr.name}=${attrValue}' is an invalid attribute. Only 'string' and empty attribute types are supported. Found '${attrValue}'`,
|
|
106
106
|
);
|
|
@@ -136,14 +136,14 @@ export class CssConverter {
|
|
|
136
136
|
if (['description', 'text'].includes(attrName)) {
|
|
137
137
|
return `.${methodName}Contains("${value}")`;
|
|
138
138
|
}
|
|
139
|
-
return `.${methodName}Matches("${
|
|
139
|
+
return `.${methodName}Matches("${escapeRegExp(value)}")`;
|
|
140
140
|
case '^=':
|
|
141
141
|
if (['description', 'text'].includes(attrName)) {
|
|
142
142
|
return `.${methodName}StartsWith("${value}")`;
|
|
143
143
|
}
|
|
144
|
-
return `.${methodName}Matches("^${
|
|
144
|
+
return `.${methodName}Matches("^${escapeRegExp(value)}")`;
|
|
145
145
|
case '$=':
|
|
146
|
-
return `.${methodName}Matches("${
|
|
146
|
+
return `.${methodName}Matches("${escapeRegExp(value)}$")`;
|
|
147
147
|
case '~=':
|
|
148
148
|
return `.${methodName}Matches("${getWordMatcherRegex(value)}")`;
|
|
149
149
|
default:
|
|
@@ -155,7 +155,7 @@ export class CssConverter {
|
|
|
155
155
|
|
|
156
156
|
private parsePseudo(cssPseudo: AstPseudoClass): string | undefined {
|
|
157
157
|
const argValue = (cssPseudo.argument as {value?: string} | undefined)?.value;
|
|
158
|
-
if (
|
|
158
|
+
if (typeof argValue !== 'string' && !isEmpty(argValue)) {
|
|
159
159
|
throw new Error(
|
|
160
160
|
`'${cssPseudo.name}=${argValue}'. Unsupported css pseudo class value: '${argValue}'. Only 'string' type or empty is supported.`,
|
|
161
161
|
);
|
|
@@ -226,7 +226,7 @@ export class CssConverter {
|
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
private parseCssObject(css: AstSelector): string {
|
|
229
|
-
if (!
|
|
229
|
+
if (!isEmpty(css.rules)) {
|
|
230
230
|
return this.parseCssRule(css.rules[0] as AstRule);
|
|
231
231
|
}
|
|
232
232
|
|
|
@@ -247,7 +247,7 @@ function toSnakeCase(str?: string | null): string {
|
|
|
247
247
|
|
|
248
248
|
function requireBoolean(css: AstAttribute | AstPseudoClass): 'true' | 'false' {
|
|
249
249
|
const rawValue = (css as any).value?.value ?? (css as any).argument?.value;
|
|
250
|
-
const value =
|
|
250
|
+
const value = String(rawValue ?? 'true').toLowerCase();
|
|
251
251
|
if (value === 'true') {
|
|
252
252
|
return 'true';
|
|
253
253
|
}
|
|
@@ -275,5 +275,5 @@ function requireEntityName(cssEntity: AstAttribute | AstPseudoClass): string {
|
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
function getWordMatcherRegex(word: string): string {
|
|
278
|
-
return `\\b(\\w*${
|
|
278
|
+
return `\\b(\\w*${escapeRegExp(word)}\\w*)\\b`;
|
|
279
279
|
}
|
package/lib/driver.ts
CHANGED
|
@@ -15,7 +15,6 @@ import {SETTINGS_HELPER_ID} from 'io.appium.settings';
|
|
|
15
15
|
import {BaseDriver, DeviceSettings} from 'appium/driver';
|
|
16
16
|
import {fs, mjpeg, util} from 'appium/support';
|
|
17
17
|
import {retryInterval} from 'asyncbox';
|
|
18
|
-
import _ from 'lodash';
|
|
19
18
|
import os from 'node:os';
|
|
20
19
|
import path from 'node:path';
|
|
21
20
|
import {checkPortStatus, findAPortNotInUse} from 'portscanner';
|
|
@@ -23,7 +22,7 @@ import type {ExecError} from 'teen_process';
|
|
|
23
22
|
import UIAUTOMATOR2_CONSTRAINTS, {type Uiautomator2Constraints} from './constraints';
|
|
24
23
|
import {APKS_EXTENSION, APK_EXTENSION} from './extensions';
|
|
25
24
|
import {newMethodMap} from './method-map';
|
|
26
|
-
import {signApp} from './
|
|
25
|
+
import {assignDefaults, memoize, signApp} from './utils';
|
|
27
26
|
import type {
|
|
28
27
|
Uiautomator2Settings,
|
|
29
28
|
Uiautomator2DeviceDetails,
|
|
@@ -360,7 +359,7 @@ class AndroidUiautomator2Driver
|
|
|
360
359
|
'css selector',
|
|
361
360
|
'-android uiautomator',
|
|
362
361
|
];
|
|
363
|
-
this.desiredCapConstraints =
|
|
362
|
+
this.desiredCapConstraints = structuredClone(UIAUTOMATOR2_CONSTRAINTS);
|
|
364
363
|
this.jwpProxyActive = false;
|
|
365
364
|
this.jwpProxyAvoid = NO_PROXY;
|
|
366
365
|
this._originalIme = null;
|
|
@@ -375,8 +374,8 @@ class AndroidUiautomator2Driver
|
|
|
375
374
|
this.caps = {} as Uiautomator2DriverCaps;
|
|
376
375
|
this.opts = opts as Uiautomator2DriverOpts;
|
|
377
376
|
// memoize functions here, so that they are done on a per-instance basis
|
|
378
|
-
this.getStatusBarHeight =
|
|
379
|
-
this.getDevicePixelRatio =
|
|
377
|
+
this.getStatusBarHeight = memoize(this.getStatusBarHeight);
|
|
378
|
+
this.getDevicePixelRatio = memoize(this.getDevicePixelRatio);
|
|
380
379
|
}
|
|
381
380
|
|
|
382
381
|
override get driverData() {
|
|
@@ -423,7 +422,7 @@ class AndroidUiautomator2Driver
|
|
|
423
422
|
adbPort: DEFAULT_ADB_PORT,
|
|
424
423
|
androidInstallTimeout: 90000,
|
|
425
424
|
};
|
|
426
|
-
|
|
425
|
+
assignDefaults(this.opts as Record<string, unknown>, defaultOpts);
|
|
427
426
|
|
|
428
427
|
this.opts.adbPort = this.opts.adbPort || DEFAULT_ADB_PORT;
|
|
429
428
|
// get device udid for this session
|
|
@@ -500,7 +499,7 @@ class AndroidUiautomator2Driver
|
|
|
500
499
|
pixelRatio,
|
|
501
500
|
statBarHeight,
|
|
502
501
|
viewportRect,
|
|
503
|
-
deviceApiLevel:
|
|
502
|
+
deviceApiLevel: Number.parseInt(String(apiVersion), 10),
|
|
504
503
|
platformVersion,
|
|
505
504
|
deviceManufacturer: manufacturer,
|
|
506
505
|
deviceModel: model,
|
|
@@ -921,7 +920,7 @@ class AndroidUiautomator2Driver
|
|
|
921
920
|
|
|
922
921
|
const screenRecordingStopTasks = [
|
|
923
922
|
async () => {
|
|
924
|
-
if (
|
|
923
|
+
if (this._screenRecordingProperties) {
|
|
925
924
|
await this.stopRecordingScreen();
|
|
926
925
|
}
|
|
927
926
|
},
|
|
@@ -931,7 +930,7 @@ class AndroidUiautomator2Driver
|
|
|
931
930
|
}
|
|
932
931
|
},
|
|
933
932
|
async () => {
|
|
934
|
-
if (
|
|
933
|
+
if (this._screenStreamingProps) {
|
|
935
934
|
await this.mobileStopScreenStreaming();
|
|
936
935
|
}
|
|
937
936
|
},
|
package/lib/uiautomator2.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
1
|
import {JWProxy, errors} from 'appium/driver';
|
|
3
2
|
import {sleep, waitForCondition} from 'asyncbox';
|
|
4
3
|
import {
|
|
@@ -409,7 +408,7 @@ export class UiAutomator2Server {
|
|
|
409
408
|
if (this.disableWindowAnimation) {
|
|
410
409
|
cmd.push('--no-window-animation');
|
|
411
410
|
}
|
|
412
|
-
if (
|
|
411
|
+
if (typeof this.disableSuppressAccessibilityService === 'boolean') {
|
|
413
412
|
cmd.push(
|
|
414
413
|
'-e',
|
|
415
414
|
'DISABLE_SUPPRESS_ACCESSIBILITY_SERVICES',
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// TODO(appium server 3.4.1+): Replace local `isEmpty` / `escapeRegExp` with imports from `appium/support`
|
|
2
|
+
// once this driver declares that minimum server version.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns true when the value has no elements/properties.
|
|
6
|
+
*
|
|
7
|
+
* @param value - Value to check
|
|
8
|
+
* @returns `true` if the value is empty
|
|
9
|
+
*/
|
|
10
|
+
export function isEmpty(value: unknown): boolean {
|
|
11
|
+
if (value == null) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === 'string' || Array.isArray(value) || Buffer.isBuffer(value)) {
|
|
15
|
+
return value.length === 0;
|
|
16
|
+
}
|
|
17
|
+
if (value instanceof Map || value instanceof Set) {
|
|
18
|
+
return value.size === 0;
|
|
19
|
+
}
|
|
20
|
+
if (typeof value === 'object' || typeof value === 'function') {
|
|
21
|
+
return Object.keys(value).length === 0;
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Escapes RegExp special characters in a string.
|
|
28
|
+
*
|
|
29
|
+
* @param value - Input string
|
|
30
|
+
* @returns Escaped string safe for RegExp source
|
|
31
|
+
*/
|
|
32
|
+
export function escapeRegExp(value: string): string {
|
|
33
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
34
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// TODO(appium server 3.4.1+): Replace local `memoize` with imports from `appium/support`
|
|
2
|
+
// once this driver declares that minimum server version.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Creates a memoized version of a function.
|
|
6
|
+
*
|
|
7
|
+
* @param fn - Function to memoize
|
|
8
|
+
* @param resolver - Optional cache key resolver. If omitted, the first argument is used as the cache key.
|
|
9
|
+
* @returns Memoized function with a mutable `.cache` map (compatible with lodash-style cache resets in tests).
|
|
10
|
+
*/
|
|
11
|
+
export function memoize<Fn extends (...args: any[]) => any>(
|
|
12
|
+
fn: Fn,
|
|
13
|
+
resolver?: (...args: Parameters<Fn>) => unknown,
|
|
14
|
+
): Fn & {cache: Map<unknown, ReturnType<Fn>>} {
|
|
15
|
+
const memoizedFn = function (this: unknown, ...args: Parameters<Fn>) {
|
|
16
|
+
const key = resolver ? resolver.apply(this, args) : args[0];
|
|
17
|
+
if (memoizedFn.cache.has(key)) {
|
|
18
|
+
return memoizedFn.cache.get(key) as ReturnType<Fn>;
|
|
19
|
+
}
|
|
20
|
+
const result = fn.apply(this, args);
|
|
21
|
+
memoizedFn.cache.set(key, result);
|
|
22
|
+
return result;
|
|
23
|
+
} as unknown as Fn & {cache: Map<unknown, ReturnType<Fn>>};
|
|
24
|
+
memoizedFn.cache = new Map<unknown, ReturnType<Fn>>();
|
|
25
|
+
return memoizedFn;
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assigns own enumerable properties of `source` onto `target` only where `target[key] === undefined`
|
|
3
|
+
* (lodash `defaults` semantics).
|
|
4
|
+
*/
|
|
5
|
+
export function assignDefaults<T extends Record<string, unknown>>(
|
|
6
|
+
target: T,
|
|
7
|
+
source: Record<string, unknown>,
|
|
8
|
+
): void {
|
|
9
|
+
for (const key of Object.keys(source)) {
|
|
10
|
+
if (target[key] === undefined) {
|
|
11
|
+
(target as Record<string, unknown>)[key] = source[key];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-uiautomator2-driver",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.4.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "appium-uiautomator2-driver",
|
|
9
|
-
"version": "7.
|
|
9
|
+
"version": "7.4.0",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"appium-adb": "^14.0.0",
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
"axios": "^1.16.0",
|
|
17
17
|
"css-selector-parser": "^3.0.0",
|
|
18
18
|
"io.appium.settings": "^7.0.1",
|
|
19
|
-
"lodash": "^4.17.4",
|
|
20
19
|
"portscanner": "^2.2.0",
|
|
21
20
|
"teen_process": "^4.0.4"
|
|
22
21
|
},
|
|
@@ -30,7 +29,6 @@
|
|
|
30
29
|
"@semantic-release/git": "^10.0.1",
|
|
31
30
|
"@types/chai": "^5.2.3",
|
|
32
31
|
"@types/chai-as-promised": "^8.0.2",
|
|
33
|
-
"@types/lodash": "^4.14.194",
|
|
34
32
|
"@types/mocha": "^10.0.1",
|
|
35
33
|
"@types/node": "^25.0.3",
|
|
36
34
|
"@types/portscanner": "^2.1.1",
|
|
@@ -107,6 +105,17 @@
|
|
|
107
105
|
"npm": ">=10"
|
|
108
106
|
}
|
|
109
107
|
},
|
|
108
|
+
"node_modules/@appium/base-driver/node_modules/axios": {
|
|
109
|
+
"version": "1.16.0",
|
|
110
|
+
"resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz",
|
|
111
|
+
"integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==",
|
|
112
|
+
"license": "MIT",
|
|
113
|
+
"dependencies": {
|
|
114
|
+
"follow-redirects": "^1.16.0",
|
|
115
|
+
"form-data": "^4.0.5",
|
|
116
|
+
"proxy-from-env": "^2.1.0"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
110
119
|
"node_modules/@appium/docutils": {
|
|
111
120
|
"version": "2.4.2",
|
|
112
121
|
"resolved": "https://registry.npmjs.org/@appium/docutils/-/docutils-2.4.2.tgz",
|
|
@@ -224,6 +233,17 @@
|
|
|
224
233
|
"npm": ">=10"
|
|
225
234
|
}
|
|
226
235
|
},
|
|
236
|
+
"node_modules/@appium/support/node_modules/axios": {
|
|
237
|
+
"version": "1.16.0",
|
|
238
|
+
"resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz",
|
|
239
|
+
"integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==",
|
|
240
|
+
"license": "MIT",
|
|
241
|
+
"dependencies": {
|
|
242
|
+
"follow-redirects": "^1.16.0",
|
|
243
|
+
"form-data": "^4.0.5",
|
|
244
|
+
"proxy-from-env": "^2.1.0"
|
|
245
|
+
}
|
|
246
|
+
},
|
|
227
247
|
"node_modules/@appium/tsconfig": {
|
|
228
248
|
"version": "1.1.2",
|
|
229
249
|
"resolved": "https://registry.npmjs.org/@appium/tsconfig/-/tsconfig-1.1.2.tgz",
|
|
@@ -495,6 +515,18 @@
|
|
|
495
515
|
"node": ">= 0.6"
|
|
496
516
|
}
|
|
497
517
|
},
|
|
518
|
+
"node_modules/agent-base": {
|
|
519
|
+
"version": "6.0.2",
|
|
520
|
+
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
|
521
|
+
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
|
|
522
|
+
"license": "MIT",
|
|
523
|
+
"dependencies": {
|
|
524
|
+
"debug": "4"
|
|
525
|
+
},
|
|
526
|
+
"engines": {
|
|
527
|
+
"node": ">= 6.0.0"
|
|
528
|
+
}
|
|
529
|
+
},
|
|
498
530
|
"node_modules/ansi-regex": {
|
|
499
531
|
"version": "6.2.2",
|
|
500
532
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
|
|
@@ -751,13 +783,14 @@
|
|
|
751
783
|
"license": "MIT"
|
|
752
784
|
},
|
|
753
785
|
"node_modules/axios": {
|
|
754
|
-
"version": "1.16.
|
|
755
|
-
"resolved": "https://registry.npmjs.org/axios/-/axios-1.16.
|
|
756
|
-
"integrity": "sha512-
|
|
786
|
+
"version": "1.16.1",
|
|
787
|
+
"resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz",
|
|
788
|
+
"integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==",
|
|
757
789
|
"license": "MIT",
|
|
758
790
|
"dependencies": {
|
|
759
791
|
"follow-redirects": "^1.16.0",
|
|
760
792
|
"form-data": "^4.0.5",
|
|
793
|
+
"https-proxy-agent": "^5.0.1",
|
|
761
794
|
"proxy-from-env": "^2.1.0"
|
|
762
795
|
}
|
|
763
796
|
},
|
|
@@ -785,9 +818,9 @@
|
|
|
785
818
|
}
|
|
786
819
|
},
|
|
787
820
|
"node_modules/bare-events": {
|
|
788
|
-
"version": "2.8.
|
|
789
|
-
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.
|
|
790
|
-
"integrity": "sha512-
|
|
821
|
+
"version": "2.8.3",
|
|
822
|
+
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.3.tgz",
|
|
823
|
+
"integrity": "sha512-HdUm8EMQBLaJvGUdidNNbqpA1kYkwNcb+MYxkxCLAPJGQzlv9J0C24h8V65Z4c5GLd/JEALDvpFCQgpLJqc0zw==",
|
|
791
824
|
"license": "Apache-2.0",
|
|
792
825
|
"peerDependencies": {
|
|
793
826
|
"bare-abort-controller": "*"
|
|
@@ -2006,6 +2039,19 @@
|
|
|
2006
2039
|
"integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==",
|
|
2007
2040
|
"license": "MIT"
|
|
2008
2041
|
},
|
|
2042
|
+
"node_modules/https-proxy-agent": {
|
|
2043
|
+
"version": "5.0.1",
|
|
2044
|
+
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
|
|
2045
|
+
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
|
|
2046
|
+
"license": "MIT",
|
|
2047
|
+
"dependencies": {
|
|
2048
|
+
"agent-base": "6",
|
|
2049
|
+
"debug": "4"
|
|
2050
|
+
},
|
|
2051
|
+
"engines": {
|
|
2052
|
+
"node": ">= 6"
|
|
2053
|
+
}
|
|
2054
|
+
},
|
|
2009
2055
|
"node_modules/iconv-lite": {
|
|
2010
2056
|
"version": "0.7.2",
|
|
2011
2057
|
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
|
|
@@ -3625,17 +3671,34 @@
|
|
|
3625
3671
|
}
|
|
3626
3672
|
},
|
|
3627
3673
|
"node_modules/type-is": {
|
|
3628
|
-
"version": "2.0
|
|
3629
|
-
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.
|
|
3630
|
-
"integrity": "sha512-
|
|
3674
|
+
"version": "2.1.0",
|
|
3675
|
+
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz",
|
|
3676
|
+
"integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==",
|
|
3631
3677
|
"license": "MIT",
|
|
3632
3678
|
"dependencies": {
|
|
3633
|
-
"content-type": "^
|
|
3679
|
+
"content-type": "^2.0.0",
|
|
3634
3680
|
"media-typer": "^1.1.0",
|
|
3635
3681
|
"mime-types": "^3.0.0"
|
|
3636
3682
|
},
|
|
3637
3683
|
"engines": {
|
|
3638
|
-
"node": ">=
|
|
3684
|
+
"node": ">= 18"
|
|
3685
|
+
},
|
|
3686
|
+
"funding": {
|
|
3687
|
+
"type": "opencollective",
|
|
3688
|
+
"url": "https://opencollective.com/express"
|
|
3689
|
+
}
|
|
3690
|
+
},
|
|
3691
|
+
"node_modules/type-is/node_modules/content-type": {
|
|
3692
|
+
"version": "2.0.0",
|
|
3693
|
+
"resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
|
|
3694
|
+
"integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
|
|
3695
|
+
"license": "MIT",
|
|
3696
|
+
"engines": {
|
|
3697
|
+
"node": ">=18"
|
|
3698
|
+
},
|
|
3699
|
+
"funding": {
|
|
3700
|
+
"type": "opencollective",
|
|
3701
|
+
"url": "https://opencollective.com/express"
|
|
3639
3702
|
}
|
|
3640
3703
|
},
|
|
3641
3704
|
"node_modules/unicorn-magic": {
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"automated testing",
|
|
8
8
|
"android"
|
|
9
9
|
],
|
|
10
|
-
"version": "7.
|
|
10
|
+
"version": "7.4.0",
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/appium/appium-uiautomator2-driver/issues"
|
|
13
13
|
},
|
|
@@ -63,7 +63,6 @@
|
|
|
63
63
|
"axios": "^1.16.0",
|
|
64
64
|
"css-selector-parser": "^3.0.0",
|
|
65
65
|
"io.appium.settings": "^7.0.1",
|
|
66
|
-
"lodash": "^4.17.4",
|
|
67
66
|
"portscanner": "^2.2.0",
|
|
68
67
|
"teen_process": "^4.0.4"
|
|
69
68
|
},
|
|
@@ -77,7 +76,6 @@
|
|
|
77
76
|
"@semantic-release/git": "^10.0.1",
|
|
78
77
|
"@types/chai": "^5.2.3",
|
|
79
78
|
"@types/chai-as-promised": "^8.0.2",
|
|
80
|
-
"@types/lodash": "^4.14.194",
|
|
81
79
|
"@types/mocha": "^10.0.1",
|
|
82
80
|
"@types/node": "^25.0.3",
|
|
83
81
|
"@types/portscanner": "^2.1.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../lib/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC;;;GAGG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAcpE;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAStE"}
|
package/build/lib/helpers.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../lib/helpers.ts"],"names":[],"mappings":";;;;;AAQA,kCAcC;AAQD,0BASC;AAvCD,0DAA6B;AAE7B,4CAA0C;AAE1C;;;GAGG;AACI,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,YAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,gBAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YACvB,0DAA0D;YAC1D,6DAA6D;YAC7D,8EAA8E;YAC9E,mBAAmB;YACnB,MAAM,YAAE,CAAC,KAAK,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,OAAO,CAAC,GAAQ,EAAE,OAAe;IACrD,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,uBAAuB,OAAO,sBAAsB;YAClD,wEAAwE,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;YACjG,0DAA0D,CAC7D,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC"}
|
|
File without changes
|