appium-xcuitest-driver 7.15.0 → 7.15.2

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 CHANGED
@@ -1,3 +1,17 @@
1
+ ## [7.15.2](https://github.com/appium/appium-xcuitest-driver/compare/v7.15.1...v7.15.2) (2024-05-07)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * 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))
7
+
8
+ ## [7.15.1](https://github.com/appium/appium-xcuitest-driver/compare/v7.15.0...v7.15.1) (2024-04-27)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * Update caching logic for extracted app bundles ([#2389](https://github.com/appium/appium-xcuitest-driver/issues/2389)) ([0424193](https://github.com/appium/appium-xcuitest-driver/commit/04241937414ee6fa986be8719fbb690046b63a56))
14
+
1
15
  ## [7.15.0](https://github.com/appium/appium-xcuitest-driver/compare/v7.14.0...v7.15.0) (2024-04-26)
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} appPath
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(appPath: string, propertyName: string): Promise<any>;
13
+ extractManifestProperty(bundlePath: string, propertyName: string): Promise<any>;
14
14
  /**
15
15
  *
16
- * @param {string} appPath
16
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
17
17
  * @returns {Promise<string>}
18
18
  */
19
- extractBundleId(appPath: string): Promise<string>;
19
+ extractBundleId(bundlePath: string): Promise<string>;
20
20
  /**
21
21
  *
22
- * @param {string} appPath
22
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
23
23
  * @returns {Promise<string>}
24
24
  */
25
- extractBundleVersion(appPath: string): Promise<string>;
25
+ extractBundleVersion(bundlePath: string): Promise<string>;
26
26
  /**
27
27
  *
28
- * @param {string} appPath
28
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
29
29
  * @returns {Promise<string[]>}
30
30
  */
31
- extractAppPlatforms(appPath: string): Promise<string[]>;
31
+ extractAppPlatforms(bundlePath: string): Promise<string[]>;
32
32
  /**
33
33
  *
34
- * @param {string} appPath
34
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
35
35
  * @returns {Promise<string>}
36
36
  */
37
- extractExecutableName(appPath: string): Promise<string>;
37
+ extractExecutableName(bundlePath: string): Promise<string>;
38
38
  /**
39
39
  *
40
- * @param {string} appPath Full path to the .ipa or .app bundle
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(appPath: string): Promise<import('@appium/types').StringRecord>;
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":"AAcA;IACE;;OAEG;IACH,iBAFW,OAAO,eAAe,EAAE,YAAY,EAI9C;IADC,0CAAc;IAGhB;;;;;OAKG;IACH,iCAJW,MAAM,gBACN,MAAM,GACJ,QAAQ,GAAG,CAAC,CAMxB;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAI3B;IAED;;;;OAIG;IACH,8BAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAI3B;IAED;;;;OAIG;IACH,6BAHW,MAAM,GACJ,QAAQ,MAAM,EAAE,CAAC,CAQ7B;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAI3B;IAED;;;;;OAKG;IACH,aAJW,MAAM,GACJ,QAAQ,OAAO,eAAe,EAAE,YAAY,CAAC,CAgFzD;CACF"}
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} appPath
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(appPath, propertyName) {
33
- const result = (await this.put(appPath))[propertyName];
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} appPath
40
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
40
41
  * @returns {Promise<string>}
41
42
  */
42
- async extractBundleId(appPath) {
43
- return await this.extractManifestProperty(appPath, 'CFBundleIdentifier');
43
+ async extractBundleId(bundlePath) {
44
+ return await this.extractManifestProperty(bundlePath, 'CFBundleIdentifier');
44
45
  }
45
46
  /**
46
47
  *
47
- * @param {string} appPath
48
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
48
49
  * @returns {Promise<string>}
49
50
  */
50
- async extractBundleVersion(appPath) {
51
- return await this.extractManifestProperty(appPath, 'CFBundleVersion');
51
+ async extractBundleVersion(bundlePath) {
52
+ return await this.extractManifestProperty(bundlePath, 'CFBundleVersion');
52
53
  }
53
54
  /**
54
55
  *
55
- * @param {string} appPath
56
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
56
57
  * @returns {Promise<string[]>}
57
58
  */
58
- async extractAppPlatforms(appPath) {
59
- const result = await this.extractManifestProperty(appPath, 'CFBundleSupportedPlatforms');
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(appPath)}': CFBundleSupportedPlatforms is not a valid list`);
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} appPath
68
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
68
69
  * @returns {Promise<string>}
69
70
  */
70
- async extractExecutableName(appPath) {
71
- return await this.extractManifestProperty(appPath, 'CFBundleExecutable');
71
+ async extractExecutableName(bundlePath) {
72
+ return await this.extractManifestProperty(bundlePath, 'CFBundleExecutable');
72
73
  }
73
74
  /**
74
75
  *
75
- * @param {string} appPath Full path to the .ipa or .app bundle
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(appPath) {
80
- const readPlist = async (/** @type {string} */ plistPath) => {
81
- try {
82
- return await support_1.plist.parsePlistFile(plistPath);
83
- }
84
- catch (e) {
85
- this.log.debug(e.stack);
86
- throw new Error(`Cannot parse ${MANIFEST_FILE_NAME} of '${appPath}'. Is it a valid application bundle?`);
87
- }
88
- };
89
- if ((await support_1.fs.stat(appPath)).isFile()) {
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(appPath, async ({ entry, extractEntryTo }) => {
96
- if (!lodash_1.default.endsWith(entry.fileName, `.app/${MANIFEST_FILE_NAME}`)) {
97
- return true;
98
- }
99
- const hash = `${entry.crc32}`;
100
- if (MANIFEST_CACHE.has(hash)) {
101
- manifestPayload = MANIFEST_CACHE.get(hash);
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
- throw new Error(errorMessage);
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
- return manifestPayload;
135
+ throw new Error(errorMessage);
137
136
  }
138
- // appPath points to a folder
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
- readPlist(manifestPath),
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,OAAO,EAAE,YAAY;QAClD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAE,OAAO;QAC5B,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAE,OAAO;QACjC,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAE,OAAO;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;QACzF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,GAAG,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CAAE,OAAO;QAClC,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAE,OAAO;QAChB,MAAM,SAAS,GAAG,KAAK,EAAE,qBAAqB,CAAC,SAAS,EAAE,EAAE;YAC1D,IAAI,CAAC;gBACH,OAAO,MAAM,eAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,gBAAgB,kBAAkB,QAAQ,OAAO,sCAAsC,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,6DAA6D;YAC7D,IAAI,eAAe,CAAC;YACpB,8BAA8B;YAC9B,IAAI,SAAS,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,aAAG,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,EAAC,KAAK,EAAE,cAAc,EAAC,EAAE,EAAE;oBAC/D,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,kBAAkB,EAAE,CAAC,EAAE,CAAC;wBAC9D,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;oBAC9B,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC7B,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC3C,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,iBAAO,CAAC,OAAO,EAAE,CAAC;oBACxC,IAAI,CAAC;wBACH,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;wBAC9B,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACxD,eAAe,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;wBAC7C,IAAI,KAAK,CAAC,gBAAgB,IAAI,iBAAiB,IAAI,gBAAC,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;4BACpF,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,4BAA4B,eAAe,EAAE,kBAAkB,OAAO;gCACtE,0CAA0C,IAAI,GAAG,CAClD,CAAC;4BACF,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;wBAC5C,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;wBACxB,SAAS,GAAG,CAAC,CAAC;oBAChB,CAAC;4BAAS,CAAC;wBACT,MAAM,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC3B,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,eAAe,kBAAkB,QAAQ,OAAO,sCAAsC,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,IAAI,YAAY,GAAG,kBAAkB,kBAAkB,UAAU,OAAO,sCAAsC,CAAC;gBAC/G,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,IAAI,oBAAoB,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1D,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,6BAA6B;QAC7B,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,YAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,mDAAmD,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,kBAAC,CAAC,GAAG,CAAC;YAClC,SAAS,CAAC,YAAY,CAAC;YACvB,YAAE,CAAC,IAAI,CAAC,YAAY,CAAC;SACtB,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI,IAAI,iBAAiB,IAAI,gBAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,4BAA4B,OAAO,CAAC,kBAAkB,0CAA0C,IAAI,GAAG,CACxG,CAAC;YACF,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAhJD,sCAgJC"}
1
+ {"version":3,"file":"app-infos-cache.js","sourceRoot":"","sources":["../../lib/app-infos-cache.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-utils.d.ts","sourceRoot":"","sources":["../../lib/app-utils.js"],"names":[],"mappings":"AA8BA;;;;;;;GAOG;AACH,oFAHa,QAAQ,IAAI,CAAC,CA4CzB;AAgBD;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,wFAHW,yBAAyB,GACvB,QAAQ,OAAO,eAAe,EAAE,YAAY,CAAC,CA6FzD;AA0BD;;;;GAIG;AAEH;;;;;GAKG;AACH,uCAHW,MAAM,GACJ,QAAQ,SAAS,CAAC,CAiB9B;AAED;;;;;;;;GAQG;AACH,uCAHW,OAAO,aAAa,EAAE,QAAQ,GAC5B,QAAQ,SAAS,CAAC,CAoD9B;AAoJD;;;;;GAKG;AACH,6CAHW,OAAO,UAAU,EAAE,kBAAkB,GACpC,QAAQ,OAAO,eAAe,EAAE,YAAY,CAAC,CAexD;AAyGD;;;;;;;;;;GAUG;AACH,4FAHW,OAAO,eAAe,EAAE,kBAAkB,GACxC,QAAQ,MAAM,CAAC,CAM3B;AAED;;;;GAIG;AACH,+GAHW,OAAO,eAAe,EAAE,kBAAkB,GACxC,QAAQ,OAAO,eAAe,EAAE,iBAAiB,GAAC,KAAK,CAAC,CA2CpE;AA9nBD,wDAAyD;AACzD,6BAA8B;AAC9B,6BAA8B;AAW9B,4CAAuD;;;;;;;;;aA4MzC,MAAM;iBACN,MAAM;;6BAuaP,OAAO,UAAU,EAAE,cAAc"}
1
+ {"version":3,"file":"app-utils.d.ts","sourceRoot":"","sources":["../../lib/app-utils.js"],"names":[],"mappings":"AA8BA;;;;;;;GAOG;AACH,oFAHa,QAAQ,IAAI,CAAC,CA4CzB;AAgBD;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,wFAHW,yBAAyB,GACvB,QAAQ,OAAO,eAAe,EAAE,YAAY,CAAC,CA6FzD;AA0BD;;;;GAIG;AAEH;;;;;GAKG;AACH,uCAHW,MAAM,GACJ,QAAQ,SAAS,CAAC,CAiB9B;AAED;;;;;;;;GAQG;AACH,uCAHW,OAAO,aAAa,EAAE,QAAQ,GAC5B,QAAQ,SAAS,CAAC,CAoD9B;AAoJD;;;;;GAKG;AACH,6CAHW,OAAO,UAAU,EAAE,kBAAkB,GACpC,QAAQ,OAAO,eAAe,EAAE,YAAY,CAAC,CAexD;AAyGD;;;;;;;;;;GAUG;AACH,4FAHW,OAAO,eAAe,EAAE,kBAAkB,GACxC,QAAQ,MAAM,CAAC,CAM3B;AAED;;;;GAIG;AACH,+GAHW,OAAO,eAAe,EAAE,kBAAkB,GACxC,QAAQ,OAAO,eAAe,EAAE,iBAAiB,GAAC,KAAK,CAAC,CA0DpE;AA7oBD,wDAAyD;AACzD,6BAA8B;AAC9B,6BAA8B;AAW9B,4CAAuD;;;;;;;;;aA4MzC,MAAM;iBACN,MAAM;;6BAsbP,OAAO,UAAU,EAAE,cAAc"}
@@ -573,18 +573,32 @@ async function onPostConfigureApp({ cachedAppInfo, isUrl, appPath }) {
573
573
  /** @type {import('@appium/types').CachedAppInfo|undefined} */
574
574
  const appInfo = lodash_1.default.isPlainObject(cachedAppInfo) ? cachedAppInfo : undefined;
575
575
  const cachedPath = appInfo ? /** @type {string} */ (appInfo.fullPath) : undefined;
576
- if (
577
- // If cache is present
578
- appInfo && cachedPath
579
- // And if the path exists
580
- && await support_1.fs.exists(cachedPath)
581
- // And if hash matches to the cached one if this is a file
582
- // Or count of files >= of the cached one if this is a folder
583
- && (((await support_1.fs.stat(cachedPath)).isFile()
584
- && await support_1.fs.hash(cachedPath) === /** @type {any} */ (appInfo.integrity)?.file)
585
- || (await support_1.fs.glob('**/*', { cwd: cachedPath })).length >= /** @type {any} */ (appInfo.integrity)?.folder)) {
576
+ const shouldUseCachedApp = async () => {
577
+ if (!appInfo || !cachedPath || !await support_1.fs.exists(cachedPath)) {
578
+ return false;
579
+ }
580
+ const isCachedPathAFile = (await support_1.fs.stat(cachedPath)).isFile();
581
+ if (isCachedPathAFile) {
582
+ return await support_1.fs.hash(cachedPath) === /** @type {any} */ (appInfo.integrity)?.file;
583
+ }
584
+ // If the cached path is a folder then it is expected to be previously extracted from
585
+ // an archive located under appPath whose hash is stored as `cachedAppInfo.packageHash`
586
+ if (!isCachedPathAFile
587
+ && cachedAppInfo?.packageHash
588
+ && await support_1.fs.exists(/** @type {string} */ (appPath))
589
+ && (await support_1.fs.stat(/** @type {string} */ (appPath))).isFile()
590
+ && cachedAppInfo.packageHash === await support_1.fs.hash(/** @type {string} */ (appPath))) {
591
+ /** @type {number|undefined} */
592
+ const nestedItemsCountInCache = /** @type {any} */ (appInfo.integrity)?.folder;
593
+ if (nestedItemsCountInCache !== undefined) {
594
+ return (await support_1.fs.glob('**/*', { cwd: cachedPath })).length >= nestedItemsCountInCache;
595
+ }
596
+ }
597
+ return false;
598
+ };
599
+ if (await shouldUseCachedApp()) {
586
600
  this.log.info(`Using '${cachedPath}' which was cached from '${appPath}'`);
587
- return { appPath: cachedPath };
601
+ return { appPath: /** @type {string} */ (cachedPath) };
588
602
  }
589
603
  const isLocalIpa = await isIpaBundle(/** @type {string} */ (appPath));
590
604
  const isLocalApp = !isLocalIpa && await isAppBundle(/** @type {string} */ (appPath));
@@ -1 +1 @@
1
- {"version":3,"file":"app-utils.js","sourceRoot":"","sources":["../../lib/app-utils.js"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,gDAAwB;AACxB,4CAAqE;AACrE,4DAA8B;AAC9B,sDAAyB;AACzB,+CAAkC;AAClC,wDAAyB;AACzB,2DAAyC;AACzC,8DAAiC;AACjC,yCAAoC;AAEpC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAC5C,MAAM,gBAAgB,GAAG,UAAU,CAAC;AACvB,QAAA,gBAAgB,GAAG,wBAAwB,CAAC;AAC5C,QAAA,OAAO,GAAG,MAAM,CAAC;AACjB,QAAA,OAAO,GAAG,MAAM,CAAC;AAC9B,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,CAAC;IACpD,iBAAiB,EAAE;QACjB,CAAC,6CAA6C,EAAE,uCAAuC,CAAC;QACxF,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC1B;IACD,wBAAwB,EAAE,CAAC,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,2BAA2B,EAAE,CAAC,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CACpF,CAAC,CAAC;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACpB,QAAA,oBAAoB,GAAG,CAAC,eAAO,EAAE,eAAO,CAAC,CAAC;AACvD,MAAM,qBAAqB,GAAG,UAAU,CAAC;AACzC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC;;;;;;;GAOG;AACI,KAAK,UAAU,yBAAyB;IAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAEjD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,IAAA,iBAAM,EAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,MAAM,WAAW,GAAG,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;IACzC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,GACE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aACrC,yCAAyC,IAAI,CAAC,IAAI,CAAC,QAAQ,gBAAgB;YACzE,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClH,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,kBAAC,CAAC,GAAG,CAAC;QACtC,IAAA,mBAAI,EAAC,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC;QAC9B,IAAA,mBAAI,EAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,gBAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,gBAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,iBAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5D,sEAAsE;IACtE,iDAAiD;IACjD,IACE,CAAC,gBAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,cAAc,IAAI,EAAE,CAAC;QACvD,CAAC,CAAC,cAAc,IAAI,gBAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,EAC1E,CAAC;QACD,MAAM,IAAI,KAAK,CACb,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,qCAAqC,IAAI,aAAa;YAC7E,kBAAkB,oBAAoB,MAAM;YAC5C,kDAAkD,IAAI,YAAY,CACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAzCD,8DAyCC;AAED;;;;GAIG;AACH,KAAK,UAAU,YAAY,CAAC,YAAY;IACtC,MAAM,IAAI,GAAG,MAAM,eAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AAEH;;;;;;GAMG;AACI,KAAK,UAAU,uBAAuB,CAAC,IAAI,GAAG,EAAE;IACrD,MAAM,EAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC;IACnF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,oEAAoE,CAAC;QACrF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,MAAM,SAAS,GAAG,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChD,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,GAAG,MAAM,iBAAO,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,oDAAoD,CAAC,CAAC;YACtF,MAAM,aAAG,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,CAAC,gBAAC,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,eAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,kBAAkB,GAAG,CAAC,CAAC;YACnD,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACtD,CAAC;QAED,+BAA+B;QAC/B,IAAI,SAAS,CAAC;QACd,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,QAAQ,QAAQ,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5F,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACxE,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,MAAM;YACR,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,SAAS,mCAAmC,CAAC;YACpE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qCAAqC,SAAS,GAAG,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;YAC5E,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,OAAO,OAAO,uCAAuC,GAAG,GAAG,CAAC;gBAC5E,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,gBAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,YAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,aAAa,GAAG,CAAC,MAAM,YAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;iBAChD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3F,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YAChD,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,cAAI,CAAC,SAAS,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC;QAEtG,IAAI,gBAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,CAAC,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC,cAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5G,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBAC9E,sBAAsB;gBACtB,MAAM,IAAI,KAAK,CAAC,IAAI,YAAY,sCAAsC,UAAU,GAAG,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;gBAC9C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,cAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,gBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,YAAY,GAAG,CAAC,CAAC;gBACvG,gBAAC,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,YAAY,+BAA+B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,cAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,gBAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,SAAS,GAAG,CAAC,CAAC;QAC/G,OAAO,aAAa,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AA3FD,0DA2FC;AAED;;;;;GAKG;AACH,KAAK,UAAU,WAAW,CAAC,OAAO;IAChC,OAAO,CACL,gBAAC,CAAC,QAAQ,CAAC,gBAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,eAAO,CAAC;QACvC,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE;QACtC,CAAC,MAAM,YAAE,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CACpD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,WAAW,CAAC,OAAO;IAChC,OAAO,gBAAC,CAAC,QAAQ,CAAC,gBAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,eAAO,CAAC,IAAI,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACtF,CAAC;AAED;;;;GAIG;AAEH;;;;;GAKG;AACI,KAAK,UAAU,SAAS,CAAC,WAAW;IACzC,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IACjE,MAAM,cAAc,GAClB,gBAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,gBAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,MAAM,iBAAO,CAAC,OAAO,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,aAAG,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,EAAC,cAAc,EAAC,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM,CAAC,CAAC;IACV,CAAC;IACD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;KAC/C,CAAC;AACJ,CAAC;AAfD,8BAeC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,WAAW,CAAC,SAAS;IACzC,MAAM,OAAO,GAAG,MAAM,iBAAO,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,aAAa,GAAG,IAAA,0BAAK,EAAC,MAAM,YAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpD,IAAI;QACJ,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,GAAG,qBAAqB,IAAI;QACzC,GAAG;KACJ,EAAE;QACD,GAAG,EAAE,OAAO;KACb,CAAC,CAAC;IACH,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,gBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACnB,mBAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7B,WAAW,IAAI,gBAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC1C,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACtC,mBAAG,CAAC,KAAK,CAAC,mCAAmC,IAAI,YAAY,MAAM,EAAE,CAAC,CAAC;gBACvE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;YAAS,CAAC;QACT,aAAa,CAAC,kBAAkB,EAAE,CAAC;QACnC,SAAS,CAAC,kBAAkB,EAAE,CAAC;IACjC,CAAC;IACD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,WAAW;KACZ,CAAC;AACJ,CAAC;AAlDD,kCAkDC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,OAAO;IAC5B,MAAM,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC1D,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACpF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,YAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,WAAW,CAAC,MAAM,EAAE,OAAO;IACxC,MAAM,KAAK,GAAG,IAAI,gBAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;IAEzC,MAAM,cAAc,GAAG,CAAC,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,MAAM,EAAE,EAAE;QACrH,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;QACrD,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,oBAAoB,cAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI;YAC3D,YAAY,MAAM,QAAQ,OAAO,QAAQ,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACtE,CAAC;QACF,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,cAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC;IACH,CAAC,CAAC;IAEF,gEAAgE;IAChE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,eAAO,EAAE,CAAC;IAC1F,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,EAAC,OAAO,EAAE,WAAW,EAAC,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QACzD,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,yBAAyB,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,eAAO,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,SAAS,cAAI,CAAC,SAAS,CAAC,GAAG,eAAO,eAAe,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnF,IAAI,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,YAAY,EAAE,CAC/C,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC5C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACzB,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,WAAW,GAAG,CAAC,CAAC;gBAChE,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,iBAAO,CAAC,OAAO,EAAE,EAAE,cAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;gBACpF,MAAM,YAAE,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBACvC,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,eAAO,eAAe,CAAC,CAAC;QAC3F,CAAC;gBAAS,CAAC;YACT,MAAM,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,iBAAO,CAAC,IAAI,CAAC;QACjC,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAO;KAChE,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpB,MAAM,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACzB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,YAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM,CAAC,CAAC;IACV,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,QAAQ,CAAC,OAAO,EAAE,aAAa;IAC5C,MAAM,WAAW,GAAG,UAAU,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9F,MAAM,iBAAiB,GAAG,CACxB,MAAM,YAAE,CAAC,IAAI,CAAC,WAAW,EAAE;QACzB,GAAG,EAAE,OAAO;KACb,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,UAAU,CAAC,OAAO;IAC/B,MAAM,WAAW,GAAG,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,iBAAO,CAAC,IAAI,CAAC;YACtC,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QACH,MAAM,YAAE,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;QACnD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,iBAAO,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,YAAE,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;IACnD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,IAAI;IACzC,MAAM,cAAc,GAAG,gBAAC,CAAC,SAAS,CAAC,IAAI,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAC;IAExE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,gBAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC,gBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,cAAc,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAbD,wDAaC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,QAAQ,CAAC,kBAAkB,EAAE,KAAK,GAAG,CAAC;IACnD,MAAM,MAAM,GAAG,yCAAyC,eAAO,OAAO,eAAO,GAAG;QAC9E,6FAA6F;QAC7F,yCAAyC,CAAC;IAC5C,IAAI,KAAK,GAAG,sBAAsB,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,gBAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;IACzC,qBAAqB;IACrB,IAAI,OAAO,CAAC;IACZ,qBAAqB;IACrB,IAAI,WAAW,CAAC;IAChB,IAAI,CAAC;QACH,IAAI,gBAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACnC,CAAC,EAAC,OAAO,EAAE,WAAW,EAAC,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,qBAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;YAC5E,CAAC;YACD,CAAC,EAAC,OAAO,EAAE,WAAW,EAAC,GAAG,MAAM,WAAW;YACzC,6CAA6C,CAAC,CAAC,kBAAkB,CAAC,CAAC,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAAC,CAAC,OAAO,EAAE,CAC3E,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,aAAa,cAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI;QACrD,YAAY,gBAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,0BAA0B,GAAG;QACxF,OAAO,OAAO,QAAQ,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACrD,CAAC;IACF,2EAA2E;IAC3E,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,cAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,+BAA+B,GAAG,KAAK,EAAE,qBAAqB,CAAC,OAAO,EAAE,EAAE;QAC9E,IAAI,SAAS,CAAC;QACd,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;YAC7E,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,IAAI,OAAO,uEAAuE;gBAClF,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CACxC,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,IAAI,OAAO,kEAAkE;gBAC7E,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CACxC,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,4BAAoB,CAAC,CAAC;IACnE,IAAI,gBAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,SAAS,cAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM;YAChE,IAAI,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,YAAY,EAAE,CACjD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACjD,IACE,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;mBAClF,MAAM,+BAA+B,CAAC,QAAQ,CAAC,EAClD,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,WAAW,GAAG,CAAC,CAAC;gBAChE,OAAO,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,aAAa,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC;IACnD,OAAO,IAAI,CAAC,YAAY,EAAE;QACxB,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;QAC/C,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAJD,sCAIC;AAED;;;;GAIG;AACI,KAAK,UAAU,kBAAkB,CAAC,EAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAC;IACtE,uEAAuE;IACvE,8DAA8D;IAC9D,MAAM,OAAO,GAAG,gBAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF;IACE,sBAAsB;IACtB,OAAO,IAAI,UAAU;QACrB,yBAAyB;WACtB,MAAM,YAAE,CAAC,MAAM,CAAC,UAAU,CAAC;QAC9B,0DAA0D;QAC1D,6DAA6D;WAC1D,CACD,CAAC,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE;eAChC,MAAM,YAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,kBAAkB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;eAC7E,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,MAAM,IAAI,kBAAkB,CAAC,CACzE,OAAO,CAAC,SAAS,CAClB,EAAE,MAAM,CACV,EACD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,UAAU,4BAA4B,OAAO,GAAG,CAAC,CAAC;QAC1E,OAAO,EAAC,OAAO,EAAE,UAAU,EAAC,CAAC;IAC/B,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,qBAAqB,CAAA,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,CAAC,UAAU,IAAI,MAAM,WAAW,CAAC,qBAAqB,CAAA,CAAC,OAAO,CAAC,CAAC,CAAC;IACpF,MAAM,wBAAwB,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,UAAU,CAAC,CAAC;IACnF,IAAI,wBAAwB,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,CAAA,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,kDAAkD;IAClD,0DAA0D;IAC1D,IAAI,CAAC,KAAK,IAAI,wBAAwB,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,wDAAwD;IACxD,OAAO;QACL,OAAO,EAAE,wBAAwB;YAC/B,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAA,CAAC,OAAO,CAAC,CAAC;KAC9D,CAAC;AACJ,CAAC;AAzCD,gDAyCC;AAED;;GAEG"}
1
+ {"version":3,"file":"app-utils.js","sourceRoot":"","sources":["../../lib/app-utils.js"],"names":[],"mappings":"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"}
@@ -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} appPath
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 (appPath, propertyName) {
30
- const result = (await this.put(appPath))[propertyName];
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} appPath
40
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
38
41
  * @returns {Promise<string>}
39
42
  */
40
- async extractBundleId (appPath) {
41
- return await this.extractManifestProperty(appPath, 'CFBundleIdentifier');
43
+ async extractBundleId (bundlePath) {
44
+ return await this.extractManifestProperty(bundlePath, 'CFBundleIdentifier');
42
45
  }
43
46
 
44
47
  /**
45
48
  *
46
- * @param {string} appPath
49
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
47
50
  * @returns {Promise<string>}
48
51
  */
49
- async extractBundleVersion (appPath) {
50
- return await this.extractManifestProperty(appPath, 'CFBundleVersion');
52
+ async extractBundleVersion (bundlePath) {
53
+ return await this.extractManifestProperty(bundlePath, 'CFBundleVersion');
51
54
  }
52
55
 
53
56
  /**
54
57
  *
55
- * @param {string} appPath
58
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
56
59
  * @returns {Promise<string[]>}
57
60
  */
58
- async extractAppPlatforms (appPath) {
59
- const result = await this.extractManifestProperty(appPath, 'CFBundleSupportedPlatforms');
61
+ async extractAppPlatforms (bundlePath) {
62
+ const result = await this.extractManifestProperty(bundlePath, 'CFBundleSupportedPlatforms');
60
63
  if (!Array.isArray(result)) {
61
- throw new Error(`${path.basename(appPath)}': CFBundleSupportedPlatforms is not a valid list`);
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} appPath
71
+ * @param {string} bundlePath Full path to the .ipa or .app bundle
69
72
  * @returns {Promise<string>}
70
73
  */
71
- async extractExecutableName (appPath) {
72
- return await this.extractManifestProperty(appPath, 'CFBundleExecutable');
74
+ async extractExecutableName (bundlePath) {
75
+ return await this.extractManifestProperty(bundlePath, 'CFBundleExecutable');
73
76
  }
74
77
 
75
78
  /**
76
79
  *
77
- * @param {string} appPath Full path to the .ipa or .app bundle
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 (appPath) {
82
- const readPlist = async (/** @type {string} */ plistPath) => {
83
- try {
84
- return await plist.parsePlistFile(plistPath);
85
- } catch (e) {
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
- if ((await fs.stat(appPath)).isFile()) {
92
- /** @type {import('@appium/types').StringRecord|undefined} */
93
- let manifestPayload;
94
- /** @type {Error|undefined} */
95
- let lastError;
96
- try {
97
- await zip.readEntries(appPath, async ({entry, extractEntryTo}) => {
98
- if (!_.endsWith(entry.fileName, `.app/${MANIFEST_FILE_NAME}`)) {
99
- return true;
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
- const hash = `${entry.crc32}`;
103
- if (MANIFEST_CACHE.has(hash)) {
104
- manifestPayload = MANIFEST_CACHE.get(hash);
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
- throw new Error(errorMessage);
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
- return manifestPayload;
140
+ throw new Error(errorMessage);
139
141
  }
142
+ return manifestPayload;
143
+ }
140
144
 
141
- // appPath points to a folder
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
- readPlist(manifestPath),
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/lib/app-utils.js CHANGED
@@ -613,23 +613,38 @@ export async function onPostConfigureApp({cachedAppInfo, isUrl, appPath}) {
613
613
  /** @type {import('@appium/types').CachedAppInfo|undefined} */
614
614
  const appInfo = _.isPlainObject(cachedAppInfo) ? cachedAppInfo : undefined;
615
615
  const cachedPath = appInfo ? /** @type {string} */ (appInfo.fullPath) : undefined;
616
- if (
617
- // If cache is present
618
- appInfo && cachedPath
619
- // And if the path exists
620
- && await fs.exists(cachedPath)
621
- // And if hash matches to the cached one if this is a file
622
- // Or count of files >= of the cached one if this is a folder
623
- && (
624
- ((await fs.stat(cachedPath)).isFile()
625
- && await fs.hash(cachedPath) === /** @type {any} */ (appInfo.integrity)?.file)
626
- || (await fs.glob('**/*', {cwd: cachedPath})).length >= /** @type {any} */ (
627
- appInfo.integrity
628
- )?.folder
629
- )
630
- ) {
616
+
617
+ const shouldUseCachedApp = async () => {
618
+ if (!appInfo || !cachedPath || !await fs.exists(cachedPath)) {
619
+ return false;
620
+ }
621
+
622
+ const isCachedPathAFile = (await fs.stat(cachedPath)).isFile();
623
+ if (isCachedPathAFile) {
624
+ return await fs.hash(cachedPath) === /** @type {any} */ (appInfo.integrity)?.file;
625
+ }
626
+ // If the cached path is a folder then it is expected to be previously extracted from
627
+ // an archive located under appPath whose hash is stored as `cachedAppInfo.packageHash`
628
+ if (
629
+ !isCachedPathAFile
630
+ && cachedAppInfo?.packageHash
631
+ && await fs.exists(/** @type {string} */ (appPath))
632
+ && (await fs.stat(/** @type {string} */ (appPath))).isFile()
633
+ && cachedAppInfo.packageHash === await fs.hash(/** @type {string} */ (appPath))
634
+ ) {
635
+ /** @type {number|undefined} */
636
+ const nestedItemsCountInCache = /** @type {any} */ (appInfo.integrity)?.folder;
637
+ if (nestedItemsCountInCache !== undefined) {
638
+ return (await fs.glob('**/*', {cwd: cachedPath})).length >= nestedItemsCountInCache;
639
+ }
640
+ }
641
+
642
+ return false;
643
+ };
644
+
645
+ if (await shouldUseCachedApp()) {
631
646
  this.log.info(`Using '${cachedPath}' which was cached from '${appPath}'`);
632
- return {appPath: cachedPath};
647
+ return {appPath: /** @type {string} */ (cachedPath)};
633
648
  }
634
649
 
635
650
  const isLocalIpa = await isIpaBundle(/** @type {string} */(appPath));
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "appium-xcuitest-driver",
3
- "version": "7.15.0",
3
+ "version": "7.15.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-xcuitest-driver",
9
- "version": "7.15.0",
9
+ "version": "7.15.2",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@colors/colors": "^1.6.0",
@@ -125,6 +125,11 @@
125
125
  "spdy": "4.0.2"
126
126
  }
127
127
  },
128
+ "node_modules/@appium/base-driver/node_modules/@types/lodash": {
129
+ "version": "4.17.0",
130
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz",
131
+ "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA=="
132
+ },
128
133
  "node_modules/@appium/base-driver/node_modules/lru-cache": {
129
134
  "version": "10.2.0",
130
135
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
@@ -347,19 +352,19 @@
347
352
  }
348
353
  },
349
354
  "node_modules/@babel/helper-validator-identifier": {
350
- "version": "7.22.20",
351
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
352
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
355
+ "version": "7.24.5",
356
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
357
+ "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
353
358
  "engines": {
354
359
  "node": ">=6.9.0"
355
360
  }
356
361
  },
357
362
  "node_modules/@babel/highlight": {
358
- "version": "7.24.2",
359
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz",
360
- "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==",
363
+ "version": "7.24.5",
364
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz",
365
+ "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
361
366
  "dependencies": {
362
- "@babel/helper-validator-identifier": "^7.22.20",
367
+ "@babel/helper-validator-identifier": "^7.24.5",
363
368
  "chalk": "^2.4.2",
364
369
  "js-tokens": "^4.0.0",
365
370
  "picocolors": "^1.0.0"
@@ -674,9 +679,9 @@
674
679
  "integrity": "sha512-Q8oFIHJHr+htLrTXN2FuZfg+WXVHQRwU/hC2GpUu+Q8e3FUM9EDkS2pE3R2AO1ZGu56f479ybdMCNF1DAu8cAQ=="
675
680
  },
676
681
  "node_modules/@types/lodash": {
677
- "version": "4.17.0",
678
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz",
679
- "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA=="
682
+ "version": "4.17.1",
683
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.1.tgz",
684
+ "integrity": "sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q=="
680
685
  },
681
686
  "node_modules/@types/method-override": {
682
687
  "version": "0.0.35",
@@ -705,9 +710,9 @@
705
710
  }
706
711
  },
707
712
  "node_modules/@types/node": {
708
- "version": "20.12.7",
709
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
710
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
713
+ "version": "20.12.10",
714
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz",
715
+ "integrity": "sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==",
711
716
  "dependencies": {
712
717
  "undici-types": "~5.26.4"
713
718
  }
@@ -1972,9 +1977,9 @@
1972
1977
  }
1973
1978
  },
1974
1979
  "node_modules/gauge": {
1975
- "version": "5.0.1",
1976
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz",
1977
- "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==",
1980
+ "version": "5.0.2",
1981
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.2.tgz",
1982
+ "integrity": "sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ==",
1978
1983
  "dependencies": {
1979
1984
  "aproba": "^1.0.3 || ^2.0.0",
1980
1985
  "color-support": "^1.1.3",
@@ -2540,9 +2545,9 @@
2540
2545
  }
2541
2546
  },
2542
2547
  "node_modules/lru-cache": {
2543
- "version": "10.2.1",
2544
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz",
2545
- "integrity": "sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==",
2548
+ "version": "10.2.2",
2549
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
2550
+ "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
2546
2551
  "engines": {
2547
2552
  "node": "14 || >=16.14"
2548
2553
  }
@@ -2657,9 +2662,9 @@
2657
2662
  }
2658
2663
  },
2659
2664
  "node_modules/minipass": {
2660
- "version": "7.0.4",
2661
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
2662
- "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
2665
+ "version": "7.1.0",
2666
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz",
2667
+ "integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==",
2663
2668
  "engines": {
2664
2669
  "node": ">=16 || 14 >=14.17"
2665
2670
  }
@@ -4130,9 +4135,9 @@
4130
4135
  "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
4131
4136
  },
4132
4137
  "node_modules/ws": {
4133
- "version": "8.16.0",
4134
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
4135
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
4138
+ "version": "8.17.0",
4139
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
4140
+ "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
4136
4141
  "engines": {
4137
4142
  "node": ">=10.0.0"
4138
4143
  },
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "xcuitest",
9
9
  "xctest"
10
10
  ],
11
- "version": "7.15.0",
11
+ "version": "7.15.2",
12
12
  "author": "Appium Contributors",
13
13
  "license": "Apache-2.0",
14
14
  "repository": {