appium-xcuitest-driver 7.15.1 → 7.15.3
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 +14 -0
- package/build/lib/app-infos-cache.d.ts +28 -12
- package/build/lib/app-infos-cache.d.ts.map +1 -1
- package/build/lib/app-infos-cache.js +93 -74
- package/build/lib/app-infos-cache.js.map +1 -1
- package/lib/app-infos-cache.js +94 -72
- package/npm-shrinkwrap.json +203 -137
- package/package.json +1 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [7.15.3](https://github.com/appium/appium-xcuitest-driver/compare/v7.15.2...v7.15.3) (2024-05-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Miscellaneous Chores
|
|
5
|
+
|
|
6
|
+
* Update dev dependencies ([b6f02b9](https://github.com/appium/appium-xcuitest-driver/commit/b6f02b9caf3b7fd2bb89b5309234281368207cd5))
|
|
7
|
+
|
|
8
|
+
## [7.15.2](https://github.com/appium/appium-xcuitest-driver/compare/v7.15.1...v7.15.2) (2024-05-07)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* Properly cache manifests for .ipa bundles containing multiple apps ([#2394](https://github.com/appium/appium-xcuitest-driver/issues/2394)) ([ffd3bbb](https://github.com/appium/appium-xcuitest-driver/commit/ffd3bbbe8ef3e9ef80c2b9af327d88be6e0f367a))
|
|
14
|
+
|
|
1
15
|
## [7.15.1](https://github.com/appium/appium-xcuitest-driver/compare/v7.15.0...v7.15.1) (2024-04-27)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -6,41 +6,57 @@ export class AppInfosCache {
|
|
|
6
6
|
log: import("@appium/types").AppiumLogger;
|
|
7
7
|
/**
|
|
8
8
|
*
|
|
9
|
-
* @param {string}
|
|
9
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
10
10
|
* @param {string} propertyName
|
|
11
11
|
* @returns {Promise<any>}
|
|
12
12
|
*/
|
|
13
|
-
extractManifestProperty(
|
|
13
|
+
extractManifestProperty(bundlePath: string, propertyName: string): Promise<any>;
|
|
14
14
|
/**
|
|
15
15
|
*
|
|
16
|
-
* @param {string}
|
|
16
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
17
17
|
* @returns {Promise<string>}
|
|
18
18
|
*/
|
|
19
|
-
extractBundleId(
|
|
19
|
+
extractBundleId(bundlePath: string): Promise<string>;
|
|
20
20
|
/**
|
|
21
21
|
*
|
|
22
|
-
* @param {string}
|
|
22
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
23
23
|
* @returns {Promise<string>}
|
|
24
24
|
*/
|
|
25
|
-
extractBundleVersion(
|
|
25
|
+
extractBundleVersion(bundlePath: string): Promise<string>;
|
|
26
26
|
/**
|
|
27
27
|
*
|
|
28
|
-
* @param {string}
|
|
28
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
29
29
|
* @returns {Promise<string[]>}
|
|
30
30
|
*/
|
|
31
|
-
extractAppPlatforms(
|
|
31
|
+
extractAppPlatforms(bundlePath: string): Promise<string[]>;
|
|
32
32
|
/**
|
|
33
33
|
*
|
|
34
|
-
* @param {string}
|
|
34
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
35
35
|
* @returns {Promise<string>}
|
|
36
36
|
*/
|
|
37
|
-
extractExecutableName(
|
|
37
|
+
extractExecutableName(bundlePath: string): Promise<string>;
|
|
38
38
|
/**
|
|
39
39
|
*
|
|
40
|
-
* @param {string}
|
|
40
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
41
41
|
* @returns {Promise<import('@appium/types').StringRecord>} The payload of the manifest plist
|
|
42
42
|
* @throws {Error} If the given app is not a valid bundle
|
|
43
43
|
*/
|
|
44
|
-
put(
|
|
44
|
+
put(bundlePath: string): Promise<import('@appium/types').StringRecord>;
|
|
45
|
+
/**
|
|
46
|
+
* @param {string} ipaPath Fill path to the .ipa bundle
|
|
47
|
+
* @returns {Promise<import('@appium/types').StringRecord>} The payload of the manifest plist
|
|
48
|
+
*/
|
|
49
|
+
_putIpa(ipaPath: string): Promise<import('@appium/types').StringRecord>;
|
|
50
|
+
/**
|
|
51
|
+
* @param {string} appPath Fill path to the .app bundle
|
|
52
|
+
* @returns {Promise<import('@appium/types').StringRecord>} The payload of the manifest plist
|
|
53
|
+
*/
|
|
54
|
+
_putApp(appPath: string): Promise<import('@appium/types').StringRecord>;
|
|
55
|
+
/**
|
|
56
|
+
* @param {string} plistPath Full path to the plist
|
|
57
|
+
* @param {string} bundlePath Full path to .ipa or .app bundle
|
|
58
|
+
* @returns {Promise<any>} The payload of the plist file
|
|
59
|
+
*/
|
|
60
|
+
_readPlist(plistPath: string, bundlePath: string): Promise<any>;
|
|
45
61
|
}
|
|
46
62
|
//# sourceMappingURL=app-infos-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-infos-cache.d.ts","sourceRoot":"","sources":["../../lib/app-infos-cache.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-infos-cache.d.ts","sourceRoot":"","sources":["../../lib/app-infos-cache.js"],"names":[],"mappings":"AAiBA;IACE;;OAEG;IACH,iBAFW,OAAO,eAAe,EAAE,YAAY,EAI9C;IADC,0CAAc;IAGhB;;;;;OAKG;IACH,oCAJW,MAAM,gBACN,MAAM,GACJ,QAAQ,GAAG,CAAC,CAMxB;IAED;;;;OAIG;IACH,4BAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAI3B;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAI3B;IAED;;;;OAIG;IACH,gCAHW,MAAM,GACJ,QAAQ,MAAM,EAAE,CAAC,CAQ7B;IAED;;;;OAIG;IACH,kCAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAI3B;IAED;;;;;OAKG;IACH,gBAJW,MAAM,GACJ,QAAQ,OAAO,eAAe,EAAE,YAAY,CAAC,CAOzD;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,QAAQ,OAAO,eAAe,EAAE,YAAY,CAAC,CAmDzD;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,QAAQ,OAAO,eAAe,EAAE,YAAY,CAAC,CAmBzD;IAED;;;;OAIG;IACH,sBAJW,MAAM,cACN,MAAM,GACJ,QAAQ,GAAG,CAAC,CASxB;CACF"}
|
|
@@ -15,6 +15,7 @@ const MANIFEST_CACHE = new lru_cache_1.LRUCache({
|
|
|
15
15
|
updateAgeOnHas: true,
|
|
16
16
|
});
|
|
17
17
|
const MANIFEST_FILE_NAME = 'Info.plist';
|
|
18
|
+
const IPA_ROOT_PLIST_PATH_PATTERN = new RegExp(`^Payload/[^./]+\\.app/${lodash_1.default.escapeRegExp(MANIFEST_FILE_NAME)}$`);
|
|
18
19
|
const MAX_MANIFEST_SIZE = 1024 * 1024; // 1 MiB
|
|
19
20
|
class AppInfosCache {
|
|
20
21
|
/**
|
|
@@ -25,124 +26,128 @@ class AppInfosCache {
|
|
|
25
26
|
}
|
|
26
27
|
/**
|
|
27
28
|
*
|
|
28
|
-
* @param {string}
|
|
29
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
29
30
|
* @param {string} propertyName
|
|
30
31
|
* @returns {Promise<any>}
|
|
31
32
|
*/
|
|
32
|
-
async extractManifestProperty(
|
|
33
|
-
const result = (await this.put(
|
|
33
|
+
async extractManifestProperty(bundlePath, propertyName) {
|
|
34
|
+
const result = (await this.put(bundlePath))[propertyName];
|
|
34
35
|
this.log.debug(`${propertyName}: ${JSON.stringify(result)}`);
|
|
35
36
|
return result;
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
39
|
*
|
|
39
|
-
* @param {string}
|
|
40
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
40
41
|
* @returns {Promise<string>}
|
|
41
42
|
*/
|
|
42
|
-
async extractBundleId(
|
|
43
|
-
return await this.extractManifestProperty(
|
|
43
|
+
async extractBundleId(bundlePath) {
|
|
44
|
+
return await this.extractManifestProperty(bundlePath, 'CFBundleIdentifier');
|
|
44
45
|
}
|
|
45
46
|
/**
|
|
46
47
|
*
|
|
47
|
-
* @param {string}
|
|
48
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
48
49
|
* @returns {Promise<string>}
|
|
49
50
|
*/
|
|
50
|
-
async extractBundleVersion(
|
|
51
|
-
return await this.extractManifestProperty(
|
|
51
|
+
async extractBundleVersion(bundlePath) {
|
|
52
|
+
return await this.extractManifestProperty(bundlePath, 'CFBundleVersion');
|
|
52
53
|
}
|
|
53
54
|
/**
|
|
54
55
|
*
|
|
55
|
-
* @param {string}
|
|
56
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
56
57
|
* @returns {Promise<string[]>}
|
|
57
58
|
*/
|
|
58
|
-
async extractAppPlatforms(
|
|
59
|
-
const result = await this.extractManifestProperty(
|
|
59
|
+
async extractAppPlatforms(bundlePath) {
|
|
60
|
+
const result = await this.extractManifestProperty(bundlePath, 'CFBundleSupportedPlatforms');
|
|
60
61
|
if (!Array.isArray(result)) {
|
|
61
|
-
throw new Error(`${path_1.default.basename(
|
|
62
|
+
throw new Error(`${path_1.default.basename(bundlePath)}': CFBundleSupportedPlatforms is not a valid list`);
|
|
62
63
|
}
|
|
63
64
|
return result;
|
|
64
65
|
}
|
|
65
66
|
/**
|
|
66
67
|
*
|
|
67
|
-
* @param {string}
|
|
68
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
68
69
|
* @returns {Promise<string>}
|
|
69
70
|
*/
|
|
70
|
-
async extractExecutableName(
|
|
71
|
-
return await this.extractManifestProperty(
|
|
71
|
+
async extractExecutableName(bundlePath) {
|
|
72
|
+
return await this.extractManifestProperty(bundlePath, 'CFBundleExecutable');
|
|
72
73
|
}
|
|
73
74
|
/**
|
|
74
75
|
*
|
|
75
|
-
* @param {string}
|
|
76
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
76
77
|
* @returns {Promise<import('@appium/types').StringRecord>} The payload of the manifest plist
|
|
77
78
|
* @throws {Error} If the given app is not a valid bundle
|
|
78
79
|
*/
|
|
79
|
-
async put(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
const tmpRoot = await support_1.tempDir.openDir();
|
|
105
|
-
try {
|
|
106
|
-
await extractEntryTo(tmpRoot);
|
|
107
|
-
const plistPath = path_1.default.resolve(tmpRoot, entry.fileName);
|
|
108
|
-
manifestPayload = await readPlist(plistPath);
|
|
109
|
-
if (entry.uncompressedSize <= MAX_MANIFEST_SIZE && lodash_1.default.isPlainObject(manifestPayload)) {
|
|
110
|
-
this.log.debug(`Caching the manifest for ${manifestPayload?.CFBundleIdentifier} app ` +
|
|
111
|
-
`from an archived source using the key '${hash}'`);
|
|
112
|
-
MANIFEST_CACHE.set(hash, manifestPayload);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
catch (e) {
|
|
116
|
-
this.log.debug(e.stack);
|
|
117
|
-
lastError = e;
|
|
118
|
-
}
|
|
119
|
-
finally {
|
|
120
|
-
await support_1.fs.rimraf(tmpRoot);
|
|
121
|
-
}
|
|
80
|
+
async put(bundlePath) {
|
|
81
|
+
return (await support_1.fs.stat(bundlePath)).isFile()
|
|
82
|
+
? await this._putIpa(bundlePath)
|
|
83
|
+
: await this._putApp(bundlePath);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* @param {string} ipaPath Fill path to the .ipa bundle
|
|
87
|
+
* @returns {Promise<import('@appium/types').StringRecord>} The payload of the manifest plist
|
|
88
|
+
*/
|
|
89
|
+
async _putIpa(ipaPath) {
|
|
90
|
+
/** @type {import('@appium/types').StringRecord|undefined} */
|
|
91
|
+
let manifestPayload;
|
|
92
|
+
/** @type {Error|undefined} */
|
|
93
|
+
let lastError;
|
|
94
|
+
try {
|
|
95
|
+
await support_1.zip.readEntries(ipaPath, async ({ entry, extractEntryTo }) => {
|
|
96
|
+
// https://github.com/appium/appium/issues/20075
|
|
97
|
+
if (!IPA_ROOT_PLIST_PATH_PATTERN.test(entry.fileName)) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
const hash = `${entry.crc32}`;
|
|
101
|
+
if (MANIFEST_CACHE.has(hash)) {
|
|
102
|
+
manifestPayload = MANIFEST_CACHE.get(hash);
|
|
122
103
|
return false;
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
catch (e) {
|
|
126
|
-
this.log.debug(e.stack);
|
|
127
|
-
throw new Error(`Cannot find ${MANIFEST_FILE_NAME} in '${appPath}'. Is it a valid application bundle?`);
|
|
128
|
-
}
|
|
129
|
-
if (!manifestPayload) {
|
|
130
|
-
let errorMessage = `Cannot extract ${MANIFEST_FILE_NAME} from '${appPath}'. Is it a valid application bundle?`;
|
|
131
|
-
if (lastError) {
|
|
132
|
-
errorMessage += ` Original error: ${lastError.message}`;
|
|
133
104
|
}
|
|
134
|
-
|
|
105
|
+
const tmpRoot = await support_1.tempDir.openDir();
|
|
106
|
+
try {
|
|
107
|
+
await extractEntryTo(tmpRoot);
|
|
108
|
+
const plistPath = path_1.default.resolve(tmpRoot, entry.fileName);
|
|
109
|
+
manifestPayload = await this._readPlist(plistPath, ipaPath);
|
|
110
|
+
if (lodash_1.default.isPlainObject(manifestPayload) && entry.uncompressedSize <= MAX_MANIFEST_SIZE) {
|
|
111
|
+
this.log.debug(`Caching the manifest '${entry.fileName}' for ${manifestPayload?.CFBundleIdentifier} app ` +
|
|
112
|
+
`from the compressed source using the key '${hash}'`);
|
|
113
|
+
MANIFEST_CACHE.set(hash, manifestPayload);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
this.log.debug(e.stack);
|
|
118
|
+
lastError = e;
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
await support_1.fs.rimraf(tmpRoot);
|
|
122
|
+
}
|
|
123
|
+
return false;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
this.log.debug(e.stack);
|
|
128
|
+
throw new Error(`Cannot find ${MANIFEST_FILE_NAME} in '${ipaPath}'. Is it a valid application bundle?`);
|
|
129
|
+
}
|
|
130
|
+
if (!manifestPayload) {
|
|
131
|
+
let errorMessage = `Cannot extract ${MANIFEST_FILE_NAME} from '${ipaPath}'. Is it a valid application bundle?`;
|
|
132
|
+
if (lastError) {
|
|
133
|
+
errorMessage += ` Original error: ${lastError.message}`;
|
|
135
134
|
}
|
|
136
|
-
|
|
135
|
+
throw new Error(errorMessage);
|
|
137
136
|
}
|
|
138
|
-
|
|
137
|
+
return manifestPayload;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* @param {string} appPath Fill path to the .app bundle
|
|
141
|
+
* @returns {Promise<import('@appium/types').StringRecord>} The payload of the manifest plist
|
|
142
|
+
*/
|
|
143
|
+
async _putApp(appPath) {
|
|
139
144
|
const manifestPath = path_1.default.join(appPath, MANIFEST_FILE_NAME);
|
|
140
145
|
const hash = await support_1.fs.hash(manifestPath);
|
|
141
146
|
if (MANIFEST_CACHE.has(hash)) {
|
|
142
147
|
return /** @type {import('@appium/types').StringRecord} */ (MANIFEST_CACHE.get(hash));
|
|
143
148
|
}
|
|
144
149
|
const [payload, stat] = await bluebird_1.default.all([
|
|
145
|
-
|
|
150
|
+
this._readPlist(manifestPath, appPath),
|
|
146
151
|
support_1.fs.stat(manifestPath),
|
|
147
152
|
]);
|
|
148
153
|
if (stat.size <= MAX_MANIFEST_SIZE && lodash_1.default.isPlainObject(payload)) {
|
|
@@ -151,6 +156,20 @@ class AppInfosCache {
|
|
|
151
156
|
}
|
|
152
157
|
return payload;
|
|
153
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* @param {string} plistPath Full path to the plist
|
|
161
|
+
* @param {string} bundlePath Full path to .ipa or .app bundle
|
|
162
|
+
* @returns {Promise<any>} The payload of the plist file
|
|
163
|
+
*/
|
|
164
|
+
async _readPlist(plistPath, bundlePath) {
|
|
165
|
+
try {
|
|
166
|
+
return await support_1.plist.parsePlistFile(plistPath);
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
this.log.debug(e.stack);
|
|
170
|
+
throw new Error(`Cannot parse ${MANIFEST_FILE_NAME} of '${bundlePath}'. Is it a valid application bundle?`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
154
173
|
}
|
|
155
174
|
exports.AppInfosCache = AppInfosCache;
|
|
156
175
|
//# sourceMappingURL=app-infos-cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-infos-cache.js","sourceRoot":"","sources":["../../lib/app-infos-cache.js"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,gDAAwB;AACxB,4CAAuD;AACvD,yCAAmC;AACnC,wDAAyB;AAEzB,qEAAqE;AACrE,MAAM,cAAc,GAAG,IAAI,oBAAQ,CAAC;IAClC,GAAG,EAAE,EAAE;IACP,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC;AACH,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AAE/C,MAAa,aAAa;IACxB;;OAEG;IACH,YAAa,GAAG;QACd,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,uBAAuB,CAAE,
|
|
1
|
+
{"version":3,"file":"app-infos-cache.js","sourceRoot":"","sources":["../../lib/app-infos-cache.js"],"names":[],"mappings":"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"}
|
package/lib/app-infos-cache.js
CHANGED
|
@@ -10,6 +10,9 @@ const MANIFEST_CACHE = new LRUCache({
|
|
|
10
10
|
updateAgeOnHas: true,
|
|
11
11
|
});
|
|
12
12
|
const MANIFEST_FILE_NAME = 'Info.plist';
|
|
13
|
+
const IPA_ROOT_PLIST_PATH_PATTERN = new RegExp(
|
|
14
|
+
`^Payload/[^./]+\\.app/${_.escapeRegExp(MANIFEST_FILE_NAME)}$`
|
|
15
|
+
);
|
|
13
16
|
const MAX_MANIFEST_SIZE = 1024 * 1024; // 1 MiB
|
|
14
17
|
|
|
15
18
|
export class AppInfosCache {
|
|
@@ -22,130 +25,135 @@ export class AppInfosCache {
|
|
|
22
25
|
|
|
23
26
|
/**
|
|
24
27
|
*
|
|
25
|
-
* @param {string}
|
|
28
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
26
29
|
* @param {string} propertyName
|
|
27
30
|
* @returns {Promise<any>}
|
|
28
31
|
*/
|
|
29
|
-
async extractManifestProperty (
|
|
30
|
-
const result = (await this.put(
|
|
32
|
+
async extractManifestProperty (bundlePath, propertyName) {
|
|
33
|
+
const result = (await this.put(bundlePath))[propertyName];
|
|
31
34
|
this.log.debug(`${propertyName}: ${JSON.stringify(result)}`);
|
|
32
35
|
return result;
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
/**
|
|
36
39
|
*
|
|
37
|
-
* @param {string}
|
|
40
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
38
41
|
* @returns {Promise<string>}
|
|
39
42
|
*/
|
|
40
|
-
async extractBundleId (
|
|
41
|
-
return await this.extractManifestProperty(
|
|
43
|
+
async extractBundleId (bundlePath) {
|
|
44
|
+
return await this.extractManifestProperty(bundlePath, 'CFBundleIdentifier');
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
/**
|
|
45
48
|
*
|
|
46
|
-
* @param {string}
|
|
49
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
47
50
|
* @returns {Promise<string>}
|
|
48
51
|
*/
|
|
49
|
-
async extractBundleVersion (
|
|
50
|
-
return await this.extractManifestProperty(
|
|
52
|
+
async extractBundleVersion (bundlePath) {
|
|
53
|
+
return await this.extractManifestProperty(bundlePath, 'CFBundleVersion');
|
|
51
54
|
}
|
|
52
55
|
|
|
53
56
|
/**
|
|
54
57
|
*
|
|
55
|
-
* @param {string}
|
|
58
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
56
59
|
* @returns {Promise<string[]>}
|
|
57
60
|
*/
|
|
58
|
-
async extractAppPlatforms (
|
|
59
|
-
const result = await this.extractManifestProperty(
|
|
61
|
+
async extractAppPlatforms (bundlePath) {
|
|
62
|
+
const result = await this.extractManifestProperty(bundlePath, 'CFBundleSupportedPlatforms');
|
|
60
63
|
if (!Array.isArray(result)) {
|
|
61
|
-
throw new Error(`${path.basename(
|
|
64
|
+
throw new Error(`${path.basename(bundlePath)}': CFBundleSupportedPlatforms is not a valid list`);
|
|
62
65
|
}
|
|
63
66
|
return result;
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
/**
|
|
67
70
|
*
|
|
68
|
-
* @param {string}
|
|
71
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
69
72
|
* @returns {Promise<string>}
|
|
70
73
|
*/
|
|
71
|
-
async extractExecutableName (
|
|
72
|
-
return await this.extractManifestProperty(
|
|
74
|
+
async extractExecutableName (bundlePath) {
|
|
75
|
+
return await this.extractManifestProperty(bundlePath, 'CFBundleExecutable');
|
|
73
76
|
}
|
|
74
77
|
|
|
75
78
|
/**
|
|
76
79
|
*
|
|
77
|
-
* @param {string}
|
|
80
|
+
* @param {string} bundlePath Full path to the .ipa or .app bundle
|
|
78
81
|
* @returns {Promise<import('@appium/types').StringRecord>} The payload of the manifest plist
|
|
79
82
|
* @throws {Error} If the given app is not a valid bundle
|
|
80
83
|
*/
|
|
81
|
-
async put (
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this.log.debug(e.stack);
|
|
87
|
-
throw new Error(`Cannot parse ${MANIFEST_FILE_NAME} of '${appPath}'. Is it a valid application bundle?`);
|
|
88
|
-
}
|
|
89
|
-
};
|
|
84
|
+
async put (bundlePath) {
|
|
85
|
+
return (await fs.stat(bundlePath)).isFile()
|
|
86
|
+
? await this._putIpa(bundlePath)
|
|
87
|
+
: await this._putApp(bundlePath);
|
|
88
|
+
}
|
|
90
89
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
90
|
+
/**
|
|
91
|
+
* @param {string} ipaPath Fill path to the .ipa bundle
|
|
92
|
+
* @returns {Promise<import('@appium/types').StringRecord>} The payload of the manifest plist
|
|
93
|
+
*/
|
|
94
|
+
async _putIpa(ipaPath) {
|
|
95
|
+
/** @type {import('@appium/types').StringRecord|undefined} */
|
|
96
|
+
let manifestPayload;
|
|
97
|
+
/** @type {Error|undefined} */
|
|
98
|
+
let lastError;
|
|
99
|
+
try {
|
|
100
|
+
await zip.readEntries(ipaPath, async ({entry, extractEntryTo}) => {
|
|
101
|
+
// https://github.com/appium/appium/issues/20075
|
|
102
|
+
if (!IPA_ROOT_PLIST_PATH_PATTERN.test(entry.fileName)) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
101
105
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
const tmpRoot = await tempDir.openDir();
|
|
108
|
-
try {
|
|
109
|
-
await extractEntryTo(tmpRoot);
|
|
110
|
-
const plistPath = path.resolve(tmpRoot, entry.fileName);
|
|
111
|
-
manifestPayload = await readPlist(plistPath);
|
|
112
|
-
if (entry.uncompressedSize <= MAX_MANIFEST_SIZE && _.isPlainObject(manifestPayload)) {
|
|
113
|
-
this.log.debug(
|
|
114
|
-
`Caching the manifest for ${manifestPayload?.CFBundleIdentifier} app ` +
|
|
115
|
-
`from an archived source using the key '${hash}'`
|
|
116
|
-
);
|
|
117
|
-
MANIFEST_CACHE.set(hash, manifestPayload);
|
|
118
|
-
}
|
|
119
|
-
} catch (e) {
|
|
120
|
-
this.log.debug(e.stack);
|
|
121
|
-
lastError = e;
|
|
122
|
-
} finally {
|
|
123
|
-
await fs.rimraf(tmpRoot);
|
|
124
|
-
}
|
|
106
|
+
const hash = `${entry.crc32}`;
|
|
107
|
+
if (MANIFEST_CACHE.has(hash)) {
|
|
108
|
+
manifestPayload = MANIFEST_CACHE.get(hash);
|
|
125
109
|
return false;
|
|
126
|
-
});
|
|
127
|
-
} catch (e) {
|
|
128
|
-
this.log.debug(e.stack);
|
|
129
|
-
throw new Error(`Cannot find ${MANIFEST_FILE_NAME} in '${appPath}'. Is it a valid application bundle?`);
|
|
130
|
-
}
|
|
131
|
-
if (!manifestPayload) {
|
|
132
|
-
let errorMessage = `Cannot extract ${MANIFEST_FILE_NAME} from '${appPath}'. Is it a valid application bundle?`;
|
|
133
|
-
if (lastError) {
|
|
134
|
-
errorMessage += ` Original error: ${lastError.message}`;
|
|
135
110
|
}
|
|
136
|
-
|
|
111
|
+
const tmpRoot = await tempDir.openDir();
|
|
112
|
+
try {
|
|
113
|
+
await extractEntryTo(tmpRoot);
|
|
114
|
+
const plistPath = path.resolve(tmpRoot, entry.fileName);
|
|
115
|
+
manifestPayload = await this._readPlist(plistPath, ipaPath);
|
|
116
|
+
if (_.isPlainObject(manifestPayload) && entry.uncompressedSize <= MAX_MANIFEST_SIZE) {
|
|
117
|
+
this.log.debug(
|
|
118
|
+
`Caching the manifest '${entry.fileName}' for ${manifestPayload?.CFBundleIdentifier} app ` +
|
|
119
|
+
`from the compressed source using the key '${hash}'`
|
|
120
|
+
);
|
|
121
|
+
MANIFEST_CACHE.set(hash, manifestPayload);
|
|
122
|
+
}
|
|
123
|
+
} catch (e) {
|
|
124
|
+
this.log.debug(e.stack);
|
|
125
|
+
lastError = e;
|
|
126
|
+
} finally {
|
|
127
|
+
await fs.rimraf(tmpRoot);
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
});
|
|
131
|
+
} catch (e) {
|
|
132
|
+
this.log.debug(e.stack);
|
|
133
|
+
throw new Error(`Cannot find ${MANIFEST_FILE_NAME} in '${ipaPath}'. Is it a valid application bundle?`);
|
|
134
|
+
}
|
|
135
|
+
if (!manifestPayload) {
|
|
136
|
+
let errorMessage = `Cannot extract ${MANIFEST_FILE_NAME} from '${ipaPath}'. Is it a valid application bundle?`;
|
|
137
|
+
if (lastError) {
|
|
138
|
+
errorMessage += ` Original error: ${lastError.message}`;
|
|
137
139
|
}
|
|
138
|
-
|
|
140
|
+
throw new Error(errorMessage);
|
|
139
141
|
}
|
|
142
|
+
return manifestPayload;
|
|
143
|
+
}
|
|
140
144
|
|
|
141
|
-
|
|
145
|
+
/**
|
|
146
|
+
* @param {string} appPath Fill path to the .app bundle
|
|
147
|
+
* @returns {Promise<import('@appium/types').StringRecord>} The payload of the manifest plist
|
|
148
|
+
*/
|
|
149
|
+
async _putApp(appPath) {
|
|
142
150
|
const manifestPath = path.join(appPath, MANIFEST_FILE_NAME);
|
|
143
151
|
const hash = await fs.hash(manifestPath);
|
|
144
152
|
if (MANIFEST_CACHE.has(hash)) {
|
|
145
153
|
return /** @type {import('@appium/types').StringRecord} */ (MANIFEST_CACHE.get(hash));
|
|
146
154
|
}
|
|
147
155
|
const [payload, stat] = await B.all([
|
|
148
|
-
|
|
156
|
+
this._readPlist(manifestPath, appPath),
|
|
149
157
|
fs.stat(manifestPath),
|
|
150
158
|
]);
|
|
151
159
|
if (stat.size <= MAX_MANIFEST_SIZE && _.isPlainObject(payload)) {
|
|
@@ -156,4 +164,18 @@ export class AppInfosCache {
|
|
|
156
164
|
}
|
|
157
165
|
return payload;
|
|
158
166
|
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @param {string} plistPath Full path to the plist
|
|
170
|
+
* @param {string} bundlePath Full path to .ipa or .app bundle
|
|
171
|
+
* @returns {Promise<any>} The payload of the plist file
|
|
172
|
+
*/
|
|
173
|
+
async _readPlist(plistPath, bundlePath) {
|
|
174
|
+
try {
|
|
175
|
+
return await plist.parsePlistFile(plistPath);
|
|
176
|
+
} catch (e) {
|
|
177
|
+
this.log.debug(e.stack);
|
|
178
|
+
throw new Error(`Cannot parse ${MANIFEST_FILE_NAME} of '${bundlePath}'. Is it a valid application bundle?`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
159
181
|
}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-xcuitest-driver",
|
|
3
|
-
"version": "7.15.
|
|
3
|
+
"version": "7.15.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "appium-xcuitest-driver",
|
|
9
|
-
"version": "7.15.
|
|
9
|
+
"version": "7.15.3",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@colors/colors": "^1.6.0",
|
|
@@ -57,12 +57,6 @@
|
|
|
57
57
|
"chai-as-promised": "^7.1.1",
|
|
58
58
|
"chai-subset": "^1.6.0",
|
|
59
59
|
"conventional-changelog-conventionalcommits": "^7.0.1",
|
|
60
|
-
"eslint": "^8.46.0",
|
|
61
|
-
"eslint-config-prettier": "^9.0.0",
|
|
62
|
-
"eslint-import-resolver-typescript": "^3.5.5",
|
|
63
|
-
"eslint-plugin-import": "^2.28.0",
|
|
64
|
-
"eslint-plugin-mocha": "^10.1.0",
|
|
65
|
-
"eslint-plugin-promise": "^6.1.1",
|
|
66
60
|
"mocha": "^10.2.0",
|
|
67
61
|
"mocha-junit-reporter": "^2.2.1",
|
|
68
62
|
"mocha-multi-reporters": "^1.5.1",
|
|
@@ -125,6 +119,11 @@
|
|
|
125
119
|
"spdy": "4.0.2"
|
|
126
120
|
}
|
|
127
121
|
},
|
|
122
|
+
"node_modules/@appium/base-driver/node_modules/@types/lodash": {
|
|
123
|
+
"version": "4.17.0",
|
|
124
|
+
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz",
|
|
125
|
+
"integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA=="
|
|
126
|
+
},
|
|
128
127
|
"node_modules/@appium/base-driver/node_modules/lru-cache": {
|
|
129
128
|
"version": "10.2.0",
|
|
130
129
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
|
|
@@ -178,6 +177,31 @@
|
|
|
178
177
|
"npm": ">=8"
|
|
179
178
|
}
|
|
180
179
|
},
|
|
180
|
+
"node_modules/@appium/docutils/node_modules/lru-cache": {
|
|
181
|
+
"version": "6.0.0",
|
|
182
|
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
|
183
|
+
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
|
184
|
+
"dependencies": {
|
|
185
|
+
"yallist": "^4.0.0"
|
|
186
|
+
},
|
|
187
|
+
"engines": {
|
|
188
|
+
"node": ">=10"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"node_modules/@appium/docutils/node_modules/semver": {
|
|
192
|
+
"version": "7.6.0",
|
|
193
|
+
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
|
|
194
|
+
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
|
|
195
|
+
"dependencies": {
|
|
196
|
+
"lru-cache": "^6.0.0"
|
|
197
|
+
},
|
|
198
|
+
"bin": {
|
|
199
|
+
"semver": "bin/semver.js"
|
|
200
|
+
},
|
|
201
|
+
"engines": {
|
|
202
|
+
"node": ">=10"
|
|
203
|
+
}
|
|
204
|
+
},
|
|
181
205
|
"node_modules/@appium/docutils/node_modules/type-fest": {
|
|
182
206
|
"version": "4.10.1",
|
|
183
207
|
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.1.tgz",
|
|
@@ -283,6 +307,96 @@
|
|
|
283
307
|
"sharp": "0.33.3"
|
|
284
308
|
}
|
|
285
309
|
},
|
|
310
|
+
"node_modules/@appium/support/node_modules/@img/sharp-linux-x64": {
|
|
311
|
+
"version": "0.33.3",
|
|
312
|
+
"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.3.tgz",
|
|
313
|
+
"integrity": "sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==",
|
|
314
|
+
"cpu": [
|
|
315
|
+
"x64"
|
|
316
|
+
],
|
|
317
|
+
"optional": true,
|
|
318
|
+
"os": [
|
|
319
|
+
"linux"
|
|
320
|
+
],
|
|
321
|
+
"engines": {
|
|
322
|
+
"glibc": ">=2.26",
|
|
323
|
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
|
324
|
+
"npm": ">=9.6.5",
|
|
325
|
+
"pnpm": ">=7.1.0",
|
|
326
|
+
"yarn": ">=3.2.0"
|
|
327
|
+
},
|
|
328
|
+
"funding": {
|
|
329
|
+
"url": "https://opencollective.com/libvips"
|
|
330
|
+
},
|
|
331
|
+
"optionalDependencies": {
|
|
332
|
+
"@img/sharp-libvips-linux-x64": "1.0.2"
|
|
333
|
+
}
|
|
334
|
+
},
|
|
335
|
+
"node_modules/@appium/support/node_modules/lru-cache": {
|
|
336
|
+
"version": "6.0.0",
|
|
337
|
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
|
338
|
+
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
|
339
|
+
"dependencies": {
|
|
340
|
+
"yallist": "^4.0.0"
|
|
341
|
+
},
|
|
342
|
+
"engines": {
|
|
343
|
+
"node": ">=10"
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"node_modules/@appium/support/node_modules/semver": {
|
|
347
|
+
"version": "7.6.0",
|
|
348
|
+
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
|
|
349
|
+
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
|
|
350
|
+
"dependencies": {
|
|
351
|
+
"lru-cache": "^6.0.0"
|
|
352
|
+
},
|
|
353
|
+
"bin": {
|
|
354
|
+
"semver": "bin/semver.js"
|
|
355
|
+
},
|
|
356
|
+
"engines": {
|
|
357
|
+
"node": ">=10"
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
"node_modules/@appium/support/node_modules/sharp": {
|
|
361
|
+
"version": "0.33.3",
|
|
362
|
+
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.3.tgz",
|
|
363
|
+
"integrity": "sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==",
|
|
364
|
+
"hasInstallScript": true,
|
|
365
|
+
"optional": true,
|
|
366
|
+
"dependencies": {
|
|
367
|
+
"color": "^4.2.3",
|
|
368
|
+
"detect-libc": "^2.0.3",
|
|
369
|
+
"semver": "^7.6.0"
|
|
370
|
+
},
|
|
371
|
+
"engines": {
|
|
372
|
+
"libvips": ">=8.15.2",
|
|
373
|
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
374
|
+
},
|
|
375
|
+
"funding": {
|
|
376
|
+
"url": "https://opencollective.com/libvips"
|
|
377
|
+
},
|
|
378
|
+
"optionalDependencies": {
|
|
379
|
+
"@img/sharp-darwin-arm64": "0.33.3",
|
|
380
|
+
"@img/sharp-darwin-x64": "0.33.3",
|
|
381
|
+
"@img/sharp-libvips-darwin-arm64": "1.0.2",
|
|
382
|
+
"@img/sharp-libvips-darwin-x64": "1.0.2",
|
|
383
|
+
"@img/sharp-libvips-linux-arm": "1.0.2",
|
|
384
|
+
"@img/sharp-libvips-linux-arm64": "1.0.2",
|
|
385
|
+
"@img/sharp-libvips-linux-s390x": "1.0.2",
|
|
386
|
+
"@img/sharp-libvips-linux-x64": "1.0.2",
|
|
387
|
+
"@img/sharp-libvips-linuxmusl-arm64": "1.0.2",
|
|
388
|
+
"@img/sharp-libvips-linuxmusl-x64": "1.0.2",
|
|
389
|
+
"@img/sharp-linux-arm": "0.33.3",
|
|
390
|
+
"@img/sharp-linux-arm64": "0.33.3",
|
|
391
|
+
"@img/sharp-linux-s390x": "0.33.3",
|
|
392
|
+
"@img/sharp-linux-x64": "0.33.3",
|
|
393
|
+
"@img/sharp-linuxmusl-arm64": "0.33.3",
|
|
394
|
+
"@img/sharp-linuxmusl-x64": "0.33.3",
|
|
395
|
+
"@img/sharp-wasm32": "0.33.3",
|
|
396
|
+
"@img/sharp-win32-ia32": "0.33.3",
|
|
397
|
+
"@img/sharp-win32-x64": "0.33.3"
|
|
398
|
+
}
|
|
399
|
+
},
|
|
286
400
|
"node_modules/@appium/support/node_modules/type-fest": {
|
|
287
401
|
"version": "4.10.1",
|
|
288
402
|
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.1.tgz",
|
|
@@ -347,19 +461,19 @@
|
|
|
347
461
|
}
|
|
348
462
|
},
|
|
349
463
|
"node_modules/@babel/helper-validator-identifier": {
|
|
350
|
-
"version": "7.
|
|
351
|
-
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.
|
|
352
|
-
"integrity": "sha512-
|
|
464
|
+
"version": "7.24.5",
|
|
465
|
+
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
|
|
466
|
+
"integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
|
|
353
467
|
"engines": {
|
|
354
468
|
"node": ">=6.9.0"
|
|
355
469
|
}
|
|
356
470
|
},
|
|
357
471
|
"node_modules/@babel/highlight": {
|
|
358
|
-
"version": "7.24.
|
|
359
|
-
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.
|
|
360
|
-
"integrity": "sha512-
|
|
472
|
+
"version": "7.24.5",
|
|
473
|
+
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz",
|
|
474
|
+
"integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
|
|
361
475
|
"dependencies": {
|
|
362
|
-
"@babel/helper-validator-identifier": "^7.
|
|
476
|
+
"@babel/helper-validator-identifier": "^7.24.5",
|
|
363
477
|
"chalk": "^2.4.2",
|
|
364
478
|
"js-tokens": "^4.0.0",
|
|
365
479
|
"picocolors": "^1.0.0"
|
|
@@ -440,6 +554,36 @@
|
|
|
440
554
|
"node": ">=0.1.90"
|
|
441
555
|
}
|
|
442
556
|
},
|
|
557
|
+
"node_modules/@emnapi/runtime": {
|
|
558
|
+
"version": "1.1.1",
|
|
559
|
+
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.1.1.tgz",
|
|
560
|
+
"integrity": "sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==",
|
|
561
|
+
"extraneous": true,
|
|
562
|
+
"dependencies": {
|
|
563
|
+
"tslib": "^2.4.0"
|
|
564
|
+
}
|
|
565
|
+
},
|
|
566
|
+
"node_modules/@img/sharp-libvips-linux-x64": {
|
|
567
|
+
"version": "1.0.2",
|
|
568
|
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz",
|
|
569
|
+
"integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==",
|
|
570
|
+
"cpu": [
|
|
571
|
+
"x64"
|
|
572
|
+
],
|
|
573
|
+
"optional": true,
|
|
574
|
+
"os": [
|
|
575
|
+
"linux"
|
|
576
|
+
],
|
|
577
|
+
"engines": {
|
|
578
|
+
"glibc": ">=2.26",
|
|
579
|
+
"npm": ">=9.6.5",
|
|
580
|
+
"pnpm": ">=7.1.0",
|
|
581
|
+
"yarn": ">=3.2.0"
|
|
582
|
+
},
|
|
583
|
+
"funding": {
|
|
584
|
+
"url": "https://opencollective.com/libvips"
|
|
585
|
+
}
|
|
586
|
+
},
|
|
443
587
|
"node_modules/@isaacs/cliui": {
|
|
444
588
|
"version": "8.0.2",
|
|
445
589
|
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
|
|
@@ -674,9 +818,9 @@
|
|
|
674
818
|
"integrity": "sha512-Q8oFIHJHr+htLrTXN2FuZfg+WXVHQRwU/hC2GpUu+Q8e3FUM9EDkS2pE3R2AO1ZGu56f479ybdMCNF1DAu8cAQ=="
|
|
675
819
|
},
|
|
676
820
|
"node_modules/@types/lodash": {
|
|
677
|
-
"version": "4.17.
|
|
678
|
-
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.
|
|
679
|
-
"integrity": "sha512-
|
|
821
|
+
"version": "4.17.3",
|
|
822
|
+
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.3.tgz",
|
|
823
|
+
"integrity": "sha512-zmNrEJaBvNskZXQWaUQq6bktF4IDGVfDS78M+YEk5aCn9M/b94/mB/6WCyfH2/MjwBdc6QuOor95CIlKWYRL3A=="
|
|
680
824
|
},
|
|
681
825
|
"node_modules/@types/method-override": {
|
|
682
826
|
"version": "0.0.35",
|
|
@@ -705,9 +849,9 @@
|
|
|
705
849
|
}
|
|
706
850
|
},
|
|
707
851
|
"node_modules/@types/node": {
|
|
708
|
-
"version": "20.12.
|
|
709
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.
|
|
710
|
-
"integrity": "sha512-
|
|
852
|
+
"version": "20.12.12",
|
|
853
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz",
|
|
854
|
+
"integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
|
|
711
855
|
"dependencies": {
|
|
712
856
|
"undici-types": "~5.26.4"
|
|
713
857
|
}
|
|
@@ -908,9 +1052,9 @@
|
|
|
908
1052
|
}
|
|
909
1053
|
},
|
|
910
1054
|
"node_modules/appium-ios-simulator": {
|
|
911
|
-
"version": "6.1.
|
|
912
|
-
"resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-6.1.
|
|
913
|
-
"integrity": "sha512-
|
|
1055
|
+
"version": "6.1.5",
|
|
1056
|
+
"resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-6.1.5.tgz",
|
|
1057
|
+
"integrity": "sha512-fvCP/2+mY+fbJ6b+VsFpcE5T/15Lep3BTnANBtLYgmvJXpOLx/6gh+f0tZBVCtoDBQwkpW55VFT+plk9dPVtvA==",
|
|
914
1058
|
"dependencies": {
|
|
915
1059
|
"@appium/support": "^4.0.0",
|
|
916
1060
|
"@xmldom/xmldom": "^0.x",
|
|
@@ -930,9 +1074,9 @@
|
|
|
930
1074
|
}
|
|
931
1075
|
},
|
|
932
1076
|
"node_modules/appium-remote-debugger": {
|
|
933
|
-
"version": "11.1.
|
|
934
|
-
"resolved": "https://registry.npmjs.org/appium-remote-debugger/-/appium-remote-debugger-11.1.
|
|
935
|
-
"integrity": "sha512-
|
|
1077
|
+
"version": "11.1.3",
|
|
1078
|
+
"resolved": "https://registry.npmjs.org/appium-remote-debugger/-/appium-remote-debugger-11.1.3.tgz",
|
|
1079
|
+
"integrity": "sha512-EsAJqnOv/aII3N0bl6HNd/WYUzWdUB/vyIL8/bM69VAZ2svsxF2HRUb1ueXyB6XGjR+qeny9+QG3m4OvOQwFlg==",
|
|
936
1080
|
"dependencies": {
|
|
937
1081
|
"@appium/base-driver": "^9.0.0",
|
|
938
1082
|
"@appium/support": "^4.0.0",
|
|
@@ -1801,12 +1945,6 @@
|
|
|
1801
1945
|
"node": ">=10.13.0"
|
|
1802
1946
|
}
|
|
1803
1947
|
},
|
|
1804
|
-
"node_modules/fast-deep-equal": {
|
|
1805
|
-
"version": "3.1.3",
|
|
1806
|
-
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
|
1807
|
-
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
|
1808
|
-
"extraneous": true
|
|
1809
|
-
},
|
|
1810
1948
|
"node_modules/fast-fifo": {
|
|
1811
1949
|
"version": "1.3.2",
|
|
1812
1950
|
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
|
|
@@ -1972,9 +2110,9 @@
|
|
|
1972
2110
|
}
|
|
1973
2111
|
},
|
|
1974
2112
|
"node_modules/gauge": {
|
|
1975
|
-
"version": "5.0.
|
|
1976
|
-
"resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.
|
|
1977
|
-
"integrity": "sha512-
|
|
2113
|
+
"version": "5.0.2",
|
|
2114
|
+
"resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.2.tgz",
|
|
2115
|
+
"integrity": "sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ==",
|
|
1978
2116
|
"dependencies": {
|
|
1979
2117
|
"aproba": "^1.0.3 || ^2.0.0",
|
|
1980
2118
|
"color-support": "^1.1.3",
|
|
@@ -2540,9 +2678,9 @@
|
|
|
2540
2678
|
}
|
|
2541
2679
|
},
|
|
2542
2680
|
"node_modules/lru-cache": {
|
|
2543
|
-
"version": "10.2.
|
|
2544
|
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.
|
|
2545
|
-
"integrity": "sha512-
|
|
2681
|
+
"version": "10.2.2",
|
|
2682
|
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
|
|
2683
|
+
"integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
|
|
2546
2684
|
"engines": {
|
|
2547
2685
|
"node": "14 || >=16.14"
|
|
2548
2686
|
}
|
|
@@ -2657,9 +2795,9 @@
|
|
|
2657
2795
|
}
|
|
2658
2796
|
},
|
|
2659
2797
|
"node_modules/minipass": {
|
|
2660
|
-
"version": "7.
|
|
2661
|
-
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.
|
|
2662
|
-
"integrity": "sha512-
|
|
2798
|
+
"version": "7.1.1",
|
|
2799
|
+
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz",
|
|
2800
|
+
"integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==",
|
|
2663
2801
|
"engines": {
|
|
2664
2802
|
"node": ">=16 || 14 >=14.17"
|
|
2665
2803
|
}
|
|
@@ -2814,9 +2952,9 @@
|
|
|
2814
2952
|
}
|
|
2815
2953
|
},
|
|
2816
2954
|
"node_modules/node-simctl": {
|
|
2817
|
-
"version": "7.4.
|
|
2818
|
-
"resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-7.4.
|
|
2819
|
-
"integrity": "sha512-
|
|
2955
|
+
"version": "7.4.4",
|
|
2956
|
+
"resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-7.4.4.tgz",
|
|
2957
|
+
"integrity": "sha512-TmWGu9QD6GVvP6wg0uSgXRmy9cd3SGzI2SfN1kzf08x2iOfoW+DOeFNXYnHArifLWHctbo7GhtsbFGlSEcSiaQ==",
|
|
2820
2958
|
"dependencies": {
|
|
2821
2959
|
"asyncbox": "^3.0.0",
|
|
2822
2960
|
"bluebird": "^3.5.1",
|
|
@@ -3027,15 +3165,15 @@
|
|
|
3027
3165
|
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
|
|
3028
3166
|
},
|
|
3029
3167
|
"node_modules/path-scurry": {
|
|
3030
|
-
"version": "1.
|
|
3031
|
-
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.
|
|
3032
|
-
"integrity": "sha512-
|
|
3168
|
+
"version": "1.11.1",
|
|
3169
|
+
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
|
|
3170
|
+
"integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
|
|
3033
3171
|
"dependencies": {
|
|
3034
3172
|
"lru-cache": "^10.2.0",
|
|
3035
3173
|
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
|
|
3036
3174
|
},
|
|
3037
3175
|
"engines": {
|
|
3038
|
-
"node": ">=16 || 14 >=14.
|
|
3176
|
+
"node": ">=16 || 14 >=14.18"
|
|
3039
3177
|
},
|
|
3040
3178
|
"funding": {
|
|
3041
3179
|
"url": "https://github.com/sponsors/isaacs"
|
|
@@ -3052,9 +3190,9 @@
|
|
|
3052
3190
|
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
|
|
3053
3191
|
},
|
|
3054
3192
|
"node_modules/picocolors": {
|
|
3055
|
-
"version": "1.0.
|
|
3056
|
-
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.
|
|
3057
|
-
"integrity": "sha512-
|
|
3193
|
+
"version": "1.0.1",
|
|
3194
|
+
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
|
|
3195
|
+
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
|
|
3058
3196
|
},
|
|
3059
3197
|
"node_modules/pkg-dir": {
|
|
3060
3198
|
"version": "5.0.0",
|
|
@@ -3139,15 +3277,6 @@
|
|
|
3139
3277
|
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
|
3140
3278
|
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
|
|
3141
3279
|
},
|
|
3142
|
-
"node_modules/punycode": {
|
|
3143
|
-
"version": "2.3.1",
|
|
3144
|
-
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
|
3145
|
-
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
|
|
3146
|
-
"extraneous": true,
|
|
3147
|
-
"engines": {
|
|
3148
|
-
"node": ">=6"
|
|
3149
|
-
}
|
|
3150
|
-
},
|
|
3151
3280
|
"node_modules/qs": {
|
|
3152
3281
|
"version": "6.11.0",
|
|
3153
3282
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
|
|
@@ -3301,9 +3430,9 @@
|
|
|
3301
3430
|
}
|
|
3302
3431
|
},
|
|
3303
3432
|
"node_modules/rimraf": {
|
|
3304
|
-
"version": "5.0.
|
|
3305
|
-
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.
|
|
3306
|
-
"integrity": "sha512-
|
|
3433
|
+
"version": "5.0.7",
|
|
3434
|
+
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz",
|
|
3435
|
+
"integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==",
|
|
3307
3436
|
"dependencies": {
|
|
3308
3437
|
"glob": "^10.3.7"
|
|
3309
3438
|
},
|
|
@@ -3311,7 +3440,7 @@
|
|
|
3311
3440
|
"rimraf": "dist/esm/bin.mjs"
|
|
3312
3441
|
},
|
|
3313
3442
|
"engines": {
|
|
3314
|
-
"node": ">=14"
|
|
3443
|
+
"node": ">=14.18"
|
|
3315
3444
|
},
|
|
3316
3445
|
"funding": {
|
|
3317
3446
|
"url": "https://github.com/sponsors/isaacs"
|
|
@@ -3356,12 +3485,9 @@
|
|
|
3356
3485
|
"optional": true
|
|
3357
3486
|
},
|
|
3358
3487
|
"node_modules/semver": {
|
|
3359
|
-
"version": "7.6.
|
|
3360
|
-
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.
|
|
3361
|
-
"integrity": "sha512-
|
|
3362
|
-
"dependencies": {
|
|
3363
|
-
"lru-cache": "^6.0.0"
|
|
3364
|
-
},
|
|
3488
|
+
"version": "7.6.2",
|
|
3489
|
+
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
|
|
3490
|
+
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
|
|
3365
3491
|
"bin": {
|
|
3366
3492
|
"semver": "bin/semver.js"
|
|
3367
3493
|
},
|
|
@@ -3369,17 +3495,6 @@
|
|
|
3369
3495
|
"node": ">=10"
|
|
3370
3496
|
}
|
|
3371
3497
|
},
|
|
3372
|
-
"node_modules/semver/node_modules/lru-cache": {
|
|
3373
|
-
"version": "6.0.0",
|
|
3374
|
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
|
3375
|
-
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
|
3376
|
-
"dependencies": {
|
|
3377
|
-
"yallist": "^4.0.0"
|
|
3378
|
-
},
|
|
3379
|
-
"engines": {
|
|
3380
|
-
"node": ">=10"
|
|
3381
|
-
}
|
|
3382
|
-
},
|
|
3383
3498
|
"node_modules/send": {
|
|
3384
3499
|
"version": "0.18.0",
|
|
3385
3500
|
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
|
|
@@ -3497,46 +3612,6 @@
|
|
|
3497
3612
|
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
|
3498
3613
|
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
|
|
3499
3614
|
},
|
|
3500
|
-
"node_modules/sharp": {
|
|
3501
|
-
"version": "0.33.3",
|
|
3502
|
-
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.3.tgz",
|
|
3503
|
-
"integrity": "sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==",
|
|
3504
|
-
"devOptional": true,
|
|
3505
|
-
"hasInstallScript": true,
|
|
3506
|
-
"dependencies": {
|
|
3507
|
-
"color": "^4.2.3",
|
|
3508
|
-
"detect-libc": "^2.0.3",
|
|
3509
|
-
"semver": "^7.6.0"
|
|
3510
|
-
},
|
|
3511
|
-
"engines": {
|
|
3512
|
-
"libvips": ">=8.15.2",
|
|
3513
|
-
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
3514
|
-
},
|
|
3515
|
-
"funding": {
|
|
3516
|
-
"url": "https://opencollective.com/libvips"
|
|
3517
|
-
},
|
|
3518
|
-
"optionalDependencies": {
|
|
3519
|
-
"@img/sharp-darwin-arm64": "0.33.3",
|
|
3520
|
-
"@img/sharp-darwin-x64": "0.33.3",
|
|
3521
|
-
"@img/sharp-libvips-darwin-arm64": "1.0.2",
|
|
3522
|
-
"@img/sharp-libvips-darwin-x64": "1.0.2",
|
|
3523
|
-
"@img/sharp-libvips-linux-arm": "1.0.2",
|
|
3524
|
-
"@img/sharp-libvips-linux-arm64": "1.0.2",
|
|
3525
|
-
"@img/sharp-libvips-linux-s390x": "1.0.2",
|
|
3526
|
-
"@img/sharp-libvips-linux-x64": "1.0.2",
|
|
3527
|
-
"@img/sharp-libvips-linuxmusl-arm64": "1.0.2",
|
|
3528
|
-
"@img/sharp-libvips-linuxmusl-x64": "1.0.2",
|
|
3529
|
-
"@img/sharp-linux-arm": "0.33.3",
|
|
3530
|
-
"@img/sharp-linux-arm64": "0.33.3",
|
|
3531
|
-
"@img/sharp-linux-s390x": "0.33.3",
|
|
3532
|
-
"@img/sharp-linux-x64": "0.33.3",
|
|
3533
|
-
"@img/sharp-linuxmusl-arm64": "0.33.3",
|
|
3534
|
-
"@img/sharp-linuxmusl-x64": "0.33.3",
|
|
3535
|
-
"@img/sharp-wasm32": "0.33.3",
|
|
3536
|
-
"@img/sharp-win32-ia32": "0.33.3",
|
|
3537
|
-
"@img/sharp-win32-x64": "0.33.3"
|
|
3538
|
-
}
|
|
3539
|
-
},
|
|
3540
3615
|
"node_modules/shebang-command": {
|
|
3541
3616
|
"version": "2.0.0",
|
|
3542
3617
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
|
@@ -3945,19 +4020,10 @@
|
|
|
3945
4020
|
"node": ">= 0.8"
|
|
3946
4021
|
}
|
|
3947
4022
|
},
|
|
3948
|
-
"node_modules/uri-js": {
|
|
3949
|
-
"version": "4.4.1",
|
|
3950
|
-
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
|
3951
|
-
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
|
3952
|
-
"extraneous": true,
|
|
3953
|
-
"dependencies": {
|
|
3954
|
-
"punycode": "^2.1.0"
|
|
3955
|
-
}
|
|
3956
|
-
},
|
|
3957
4023
|
"node_modules/utf8-byte-length": {
|
|
3958
|
-
"version": "1.0.
|
|
3959
|
-
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.
|
|
3960
|
-
"integrity": "sha512-
|
|
4024
|
+
"version": "1.0.5",
|
|
4025
|
+
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz",
|
|
4026
|
+
"integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA=="
|
|
3961
4027
|
},
|
|
3962
4028
|
"node_modules/util-deprecate": {
|
|
3963
4029
|
"version": "1.0.2",
|
|
@@ -4130,9 +4196,9 @@
|
|
|
4130
4196
|
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
|
4131
4197
|
},
|
|
4132
4198
|
"node_modules/ws": {
|
|
4133
|
-
"version": "8.
|
|
4134
|
-
"resolved": "https://registry.npmjs.org/ws/-/ws-8.
|
|
4135
|
-
"integrity": "sha512-
|
|
4199
|
+
"version": "8.17.0",
|
|
4200
|
+
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
|
|
4201
|
+
"integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
|
|
4136
4202
|
"engines": {
|
|
4137
4203
|
"node": ">=10.0.0"
|
|
4138
4204
|
},
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"xcuitest",
|
|
9
9
|
"xctest"
|
|
10
10
|
],
|
|
11
|
-
"version": "7.15.
|
|
11
|
+
"version": "7.15.3",
|
|
12
12
|
"author": "Appium Contributors",
|
|
13
13
|
"license": "Apache-2.0",
|
|
14
14
|
"repository": {
|
|
@@ -157,12 +157,6 @@
|
|
|
157
157
|
"chai-as-promised": "^7.1.1",
|
|
158
158
|
"chai-subset": "^1.6.0",
|
|
159
159
|
"conventional-changelog-conventionalcommits": "^7.0.1",
|
|
160
|
-
"eslint": "^8.46.0",
|
|
161
|
-
"eslint-config-prettier": "^9.0.0",
|
|
162
|
-
"eslint-import-resolver-typescript": "^3.5.5",
|
|
163
|
-
"eslint-plugin-import": "^2.28.0",
|
|
164
|
-
"eslint-plugin-mocha": "^10.1.0",
|
|
165
|
-
"eslint-plugin-promise": "^6.1.1",
|
|
166
160
|
"mocha": "^10.2.0",
|
|
167
161
|
"mocha-junit-reporter": "^2.2.1",
|
|
168
162
|
"mocha-multi-reporters": "^1.5.1",
|