appium-webdriveragent 10.5.4 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/Scripts/{build-webdriveragent.js → build-webdriveragent.mjs} +13 -7
  3. package/Scripts/{fetch-prebuilt-wda.js → fetch-prebuilt-wda.mjs} +17 -9
  4. package/Scripts/update-wda-version.mjs +42 -0
  5. package/WebDriverAgentLib/Info.plist +2 -2
  6. package/build/index.d.ts +1 -1
  7. package/build/index.d.ts.map +1 -1
  8. package/build/index.js +1 -2
  9. package/build/index.js.map +1 -1
  10. package/build/lib/check-dependencies.d.ts +2 -7
  11. package/build/lib/check-dependencies.d.ts.map +1 -1
  12. package/build/lib/check-dependencies.js +0 -11
  13. package/build/lib/check-dependencies.js.map +1 -1
  14. package/build/lib/constants.d.ts +12 -12
  15. package/build/lib/constants.d.ts.map +1 -1
  16. package/build/lib/constants.js +14 -26
  17. package/build/lib/constants.js.map +1 -1
  18. package/build/lib/logger.d.ts +1 -2
  19. package/build/lib/logger.d.ts.map +1 -1
  20. package/build/lib/logger.js +2 -2
  21. package/build/lib/logger.js.map +1 -1
  22. package/build/lib/no-session-proxy.d.ts +5 -5
  23. package/build/lib/no-session-proxy.d.ts.map +1 -1
  24. package/build/lib/no-session-proxy.js +0 -1
  25. package/build/lib/no-session-proxy.js.map +1 -1
  26. package/build/lib/utils.d.ts +53 -96
  27. package/build/lib/utils.d.ts.map +1 -1
  28. package/build/lib/utils.js +124 -110
  29. package/build/lib/utils.js.map +1 -1
  30. package/build/lib/webdriveragent.d.ts +123 -170
  31. package/build/lib/webdriveragent.d.ts.map +1 -1
  32. package/build/lib/webdriveragent.js +319 -349
  33. package/build/lib/webdriveragent.js.map +1 -1
  34. package/build/lib/xcodebuild.d.ts +66 -77
  35. package/build/lib/xcodebuild.d.ts.map +1 -1
  36. package/build/lib/xcodebuild.js +123 -92
  37. package/build/lib/xcodebuild.js.map +1 -1
  38. package/build/test/functional/desired.d.ts +3 -0
  39. package/build/test/functional/desired.d.ts.map +1 -0
  40. package/build/test/functional/desired.js +9 -0
  41. package/build/test/functional/desired.js.map +1 -0
  42. package/build/test/functional/helpers/simulator.d.ts +5 -0
  43. package/build/test/functional/helpers/simulator.d.ts.map +1 -0
  44. package/build/test/functional/helpers/simulator.js +39 -0
  45. package/build/test/functional/helpers/simulator.js.map +1 -0
  46. package/build/test/functional/webdriveragent-e2e-specs.d.ts +2 -0
  47. package/build/test/functional/webdriveragent-e2e-specs.d.ts.map +1 -0
  48. package/build/test/functional/webdriveragent-e2e-specs.js +133 -0
  49. package/build/test/functional/webdriveragent-e2e-specs.js.map +1 -0
  50. package/build/test/unit/utils-specs.d.ts +2 -0
  51. package/build/test/unit/utils-specs.d.ts.map +1 -0
  52. package/build/test/unit/utils-specs.js +161 -0
  53. package/build/test/unit/utils-specs.js.map +1 -0
  54. package/build/test/unit/webdriveragent-specs.d.ts +2 -0
  55. package/build/test/unit/webdriveragent-specs.d.ts.map +1 -0
  56. package/build/test/unit/webdriveragent-specs.js +424 -0
  57. package/build/test/unit/webdriveragent-specs.js.map +1 -0
  58. package/build/tsconfig.tsbuildinfo +1 -0
  59. package/index.ts +1 -1
  60. package/lib/{check-dependencies.js → check-dependencies.ts} +4 -13
  61. package/lib/constants.ts +18 -0
  62. package/lib/logger.ts +3 -0
  63. package/lib/{no-session-proxy.js → no-session-proxy.ts} +4 -5
  64. package/lib/{utils.js → utils.ts} +101 -111
  65. package/lib/{webdriveragent.js → webdriveragent.ts} +353 -390
  66. package/lib/{xcodebuild.js → xcodebuild.ts} +145 -114
  67. package/package.json +7 -9
  68. package/lib/constants.js +0 -24
  69. package/lib/logger.js +0 -5
@@ -1,34 +1,73 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.BOOTSTRAP_PATH = void 0;
40
+ exports.killAppUsingPattern = killAppUsingPattern;
41
+ exports.isTvOS = isTvOS;
7
42
  exports.updateProjectFile = updateProjectFile;
8
43
  exports.resetProjectFile = resetProjectFile;
9
44
  exports.setRealDeviceSecurity = setRealDeviceSecurity;
10
- exports.getAdditionalRunContent = getAdditionalRunContent;
11
- exports.getXctestrunFileName = getXctestrunFileName;
12
45
  exports.setXctestrunFile = setXctestrunFile;
46
+ exports.getAdditionalRunContent = getAdditionalRunContent;
13
47
  exports.getXctestrunFilePath = getXctestrunFilePath;
48
+ exports.getXctestrunFileName = getXctestrunFileName;
14
49
  exports.killProcess = killProcess;
15
50
  exports.randomInt = randomInt;
16
51
  exports.getWDAUpgradeTimestamp = getWDAUpgradeTimestamp;
17
52
  exports.resetTestProcesses = resetTestProcesses;
18
53
  exports.getPIDsListeningOnPort = getPIDsListeningOnPort;
19
- exports.killAppUsingPattern = killAppUsingPattern;
20
- exports.isTvOS = isTvOS;
21
54
  const support_1 = require("@appium/support");
22
55
  const teen_process_1 = require("teen_process");
23
- const path_1 = __importDefault(require("path"));
24
- const logger_1 = __importDefault(require("./logger"));
56
+ const node_path_1 = __importStar(require("node:path"));
57
+ const node_url_1 = require("node:url");
58
+ const logger_1 = require("./logger");
25
59
  const lodash_1 = __importDefault(require("lodash"));
26
60
  const constants_1 = require("./constants");
27
61
  const bluebird_1 = __importDefault(require("bluebird"));
28
- const fs_1 = __importDefault(require("fs"));
62
+ const node_fs_1 = __importDefault(require("node:fs"));
29
63
  const asyncbox_1 = require("asyncbox");
30
- const os_1 = require("os");
64
+ const node_os_1 = require("node:os");
31
65
  const PROJECT_FILE = 'project.pbxproj';
66
+ // Get current filename - works in both CommonJS and ESM
67
+ const currentFilename = typeof __filename !== 'undefined'
68
+ ? __filename
69
+ : (0, node_url_1.fileURLToPath)(new Function('return import.meta.url')());
70
+ const currentDirname = (0, node_path_1.dirname)(currentFilename);
32
71
  /**
33
72
  * Calculates the path to the current module's root folder
34
73
  *
@@ -36,40 +75,23 @@ const PROJECT_FILE = 'project.pbxproj';
36
75
  * @throws {Error} If the current module root folder cannot be determined
37
76
  */
38
77
  const getModuleRoot = lodash_1.default.memoize(function getModuleRoot() {
39
- let currentDir = path_1.default.dirname(path_1.default.resolve(__filename));
78
+ let currentDir = currentDirname;
40
79
  let isAtFsRoot = false;
41
80
  while (!isAtFsRoot) {
42
- const manifestPath = path_1.default.join(currentDir, 'package.json');
81
+ const manifestPath = node_path_1.default.join(currentDir, 'package.json');
43
82
  try {
44
- if (fs_1.default.existsSync(manifestPath) &&
45
- JSON.parse(fs_1.default.readFileSync(manifestPath, 'utf8')).name === 'appium-webdriveragent') {
83
+ if (node_fs_1.default.existsSync(manifestPath) &&
84
+ JSON.parse(node_fs_1.default.readFileSync(manifestPath, 'utf8')).name === 'appium-webdriveragent') {
46
85
  return currentDir;
47
86
  }
48
87
  }
49
88
  catch { }
50
- currentDir = path_1.default.dirname(currentDir);
51
- isAtFsRoot = currentDir.length <= path_1.default.dirname(currentDir).length;
89
+ currentDir = node_path_1.default.dirname(currentDir);
90
+ isAtFsRoot = currentDir.length <= node_path_1.default.dirname(currentDir).length;
52
91
  }
53
92
  throw new Error('Cannot find the root folder of the appium-webdriveragent Node.js module');
54
93
  });
55
94
  exports.BOOTSTRAP_PATH = getModuleRoot();
56
- async function getPIDsUsingPattern(pattern) {
57
- const args = [
58
- '-if', // case insensitive, full cmdline match
59
- pattern,
60
- ];
61
- try {
62
- const { stdout } = await (0, teen_process_1.exec)('pgrep', args);
63
- return stdout.split(/\s+/)
64
- .map((x) => parseInt(x, 10))
65
- .filter(lodash_1.default.isInteger)
66
- .map((x) => `${x}`);
67
- }
68
- catch (err) {
69
- logger_1.default.debug(`'pgrep ${args.join(' ')}' didn't detect any matching processes. Return code: ${err.code}`);
70
- return [];
71
- }
72
- }
73
95
  async function killAppUsingPattern(pgrepPattern) {
74
96
  const signals = [2, 15, 9];
75
97
  for (const signal of signals) {
@@ -82,7 +104,7 @@ async function killAppUsingPattern(pgrepPattern) {
82
104
  await (0, teen_process_1.exec)('kill', args);
83
105
  }
84
106
  catch (err) {
85
- logger_1.default.debug(`kill ${args.join(' ')} -> ${err.message}`);
107
+ logger_1.log.debug(`kill ${args.join(' ')} -> ${err.message}`);
86
108
  }
87
109
  if (signal === lodash_1.default.last(signals)) {
88
110
  // there is no need to wait after SIGKILL
@@ -111,79 +133,59 @@ async function killAppUsingPattern(pgrepPattern) {
111
133
  }
112
134
  /**
113
135
  * Return true if the platformName is tvOS
114
- * @param {string} platformName The name of the platorm
115
- * @returns {boolean} Return true if the platformName is tvOS
136
+ * @param platformName The name of the platorm
137
+ * @returns Return true if the platformName is tvOS
116
138
  */
117
139
  function isTvOS(platformName) {
118
140
  return lodash_1.default.toLower(platformName) === lodash_1.default.toLower(constants_1.PLATFORM_NAME_TVOS);
119
141
  }
120
- async function replaceInFile(file, find, replace) {
121
- let contents = await support_1.fs.readFile(file, 'utf8');
122
- let newContents = contents.replace(find, replace);
123
- if (newContents !== contents) {
124
- await support_1.fs.writeFile(file, newContents, 'utf8');
125
- }
126
- }
127
142
  /**
128
143
  * Update WebDriverAgentRunner project bundle ID with newBundleId.
129
144
  * This method assumes project file is in the correct state.
130
- * @param {string} agentPath - Path to the .xcodeproj directory.
131
- * @param {string} newBundleId the new bundle ID used to update.
145
+ * @param agentPath - Path to the .xcodeproj directory.
146
+ * @param newBundleId the new bundle ID used to update.
132
147
  */
133
148
  async function updateProjectFile(agentPath, newBundleId) {
134
- let projectFilePath = path_1.default.resolve(agentPath, PROJECT_FILE);
149
+ const projectFilePath = node_path_1.default.resolve(agentPath, PROJECT_FILE);
135
150
  try {
136
151
  // Assuming projectFilePath is in the correct state, create .old from projectFilePath
137
152
  await support_1.fs.copyFile(projectFilePath, `${projectFilePath}.old`);
138
153
  await replaceInFile(projectFilePath, new RegExp(lodash_1.default.escapeRegExp(constants_1.WDA_RUNNER_BUNDLE_ID), 'g'), newBundleId);
139
- logger_1.default.debug(`Successfully updated '${projectFilePath}' with bundle id '${newBundleId}'`);
154
+ logger_1.log.debug(`Successfully updated '${projectFilePath}' with bundle id '${newBundleId}'`);
140
155
  }
141
156
  catch (err) {
142
- logger_1.default.debug(`Error updating project file: ${err.message}`);
143
- logger_1.default.warn(`Unable to update project file '${projectFilePath}' with ` +
157
+ logger_1.log.debug(`Error updating project file: ${err.message}`);
158
+ logger_1.log.warn(`Unable to update project file '${projectFilePath}' with ` +
144
159
  `bundle id '${newBundleId}'. WebDriverAgent may not start`);
145
160
  }
146
161
  }
147
162
  /**
148
163
  * Reset WebDriverAgentRunner project bundle ID to correct state.
149
- * @param {string} agentPath - Path to the .xcodeproj directory.
164
+ * @param agentPath - Path to the .xcodeproj directory.
150
165
  */
151
166
  async function resetProjectFile(agentPath) {
152
- const projectFilePath = path_1.default.join(agentPath, PROJECT_FILE);
167
+ const projectFilePath = node_path_1.default.join(agentPath, PROJECT_FILE);
153
168
  try {
154
169
  // restore projectFilePath from .old file
155
170
  if (!await support_1.fs.exists(`${projectFilePath}.old`)) {
156
171
  return; // no need to reset
157
172
  }
158
173
  await support_1.fs.mv(`${projectFilePath}.old`, projectFilePath);
159
- logger_1.default.debug(`Successfully reset '${projectFilePath}' with bundle id '${constants_1.WDA_RUNNER_BUNDLE_ID}'`);
174
+ logger_1.log.debug(`Successfully reset '${projectFilePath}' with bundle id '${constants_1.WDA_RUNNER_BUNDLE_ID}'`);
160
175
  }
161
176
  catch (err) {
162
- logger_1.default.debug(`Error resetting project file: ${err.message}`);
163
- logger_1.default.warn(`Unable to reset project file '${projectFilePath}' with ` +
177
+ logger_1.log.debug(`Error resetting project file: ${err.message}`);
178
+ logger_1.log.warn(`Unable to reset project file '${projectFilePath}' with ` +
164
179
  `bundle id '${constants_1.WDA_RUNNER_BUNDLE_ID}'. WebDriverAgent has been ` +
165
180
  `modified and not returned to the original state.`);
166
181
  }
167
182
  }
168
183
  async function setRealDeviceSecurity(keychainPath, keychainPassword) {
169
- logger_1.default.debug('Setting security for iOS device');
184
+ logger_1.log.debug('Setting security for iOS device');
170
185
  await (0, teen_process_1.exec)('security', ['-v', 'list-keychains', '-s', keychainPath]);
171
186
  await (0, teen_process_1.exec)('security', ['-v', 'unlock-keychain', '-p', keychainPassword, keychainPath]);
172
187
  await (0, teen_process_1.exec)('security', ['set-keychain-settings', '-t', '3600', '-l', keychainPath]);
173
188
  }
174
- /**
175
- * Information of the device under test
176
- * @typedef {import('./types').DeviceInfo} DeviceInfo
177
- */
178
- /**
179
- * Arguments for setting xctestrun file
180
- * @typedef {Object} XctestrunFileArgs
181
- * @property {DeviceInfo} deviceInfo - Information of the device under test
182
- * @property {string} sdkVersion - The Xcode SDK version of OS.
183
- * @property {string} bootstrapPath - The folder path containing xctestrun file.
184
- * @property {number|string} wdaRemotePort - The remote port WDA is listening on.
185
- * @property {string} [wdaBindingIP] - The IP address to bind to. If not given, it binds to all interfaces.
186
- */
187
189
  /**
188
190
  * Creates xctestrun file per device & platform version.
189
191
  * We expects to have WebDriverAgentRunner_iphoneos${sdkVersion|platformVersion}-arm64.xctestrun for real device
@@ -192,8 +194,8 @@ async function setRealDeviceSecurity(keychainPath, keychainPassword) {
192
194
  * e.g. Xcode which has iOS SDK Version 12.2 on an intel Mac host machine generates WebDriverAgentRunner_iphonesimulator.2-x86_64.xctestrun
193
195
  * even if the cap has platform version 11.4
194
196
  *
195
- * @param {XctestrunFileArgs} args
196
- * @return {Promise<string>} returns xctestrunFilePath for given device
197
+ * @param args
198
+ * @return returns xctestrunFilePath for given device
197
199
  * @throws if WebDriverAgentRunner_iphoneos${sdkVersion|platformVersion}-arm64.xctestrun for real device
198
200
  * or WebDriverAgentRunner_iphonesimulator${sdkVersion|platformVersion}-x86_64.xctestrun for simulator is not found @bootstrapPath,
199
201
  * then it will throw a file not found exception
@@ -209,10 +211,10 @@ async function setXctestrunFile(args) {
209
211
  }
210
212
  /**
211
213
  * Return the WDA object which appends existing xctest runner content
212
- * @param {string} platformName - The name of the platform
213
- * @param {number|string} wdaRemotePort - The remote port number
214
- * @param {string} [wdaBindingIP] - The IP address to bind to. If not given, it binds to all interfaces.
215
- * @return {object} returns a runner object which has USE_PORT and optionally USE_IP
214
+ * @param platformName - The name of the platform
215
+ * @param wdaRemotePort - The remote port number
216
+ * @param wdaBindingIP - The IP address to bind to. If not given, it binds to all interfaces.
217
+ * @return returns a runner object which has USE_PORT and optionally USE_IP
216
218
  */
217
219
  function getAdditionalRunContent(platformName, wdaRemotePort, wdaBindingIP) {
218
220
  const runner = `WebDriverAgentRunner${isTvOS(platformName) ? '_tvOS' : ''}`;
@@ -228,65 +230,60 @@ function getAdditionalRunContent(platformName, wdaRemotePort, wdaBindingIP) {
228
230
  }
229
231
  /**
230
232
  * Return the path of xctestrun if it exists
231
- * @param {DeviceInfo} deviceInfo
232
- * @param {string} sdkVersion - The Xcode SDK version of OS.
233
- * @param {string} bootstrapPath - The folder path containing xctestrun file.
234
- * @returns {Promise<string>}
233
+ * @param deviceInfo
234
+ * @param sdkVersion - The Xcode SDK version of OS.
235
+ * @param bootstrapPath - The folder path containing xctestrun file.
235
236
  */
236
237
  async function getXctestrunFilePath(deviceInfo, sdkVersion, bootstrapPath) {
237
238
  // First try the SDK path, for Xcode 10 (at least)
238
239
  const sdkBased = [
239
- path_1.default.resolve(bootstrapPath, `${deviceInfo.udid}_${sdkVersion}.xctestrun`),
240
+ node_path_1.default.resolve(bootstrapPath, `${deviceInfo.udid}_${sdkVersion}.xctestrun`),
240
241
  sdkVersion,
241
242
  ];
242
243
  // Next try Platform path, for earlier Xcode versions
243
244
  const platformBased = [
244
- path_1.default.resolve(bootstrapPath, `${deviceInfo.udid}_${deviceInfo.platformVersion}.xctestrun`),
245
+ node_path_1.default.resolve(bootstrapPath, `${deviceInfo.udid}_${deviceInfo.platformVersion}.xctestrun`),
245
246
  deviceInfo.platformVersion,
246
247
  ];
247
248
  for (const [filePath, version] of [sdkBased, platformBased]) {
248
249
  if (await support_1.fs.exists(filePath)) {
249
- logger_1.default.info(`Using '${filePath}' as xctestrun file`);
250
+ logger_1.log.info(`Using '${filePath}' as xctestrun file`);
250
251
  return filePath;
251
252
  }
252
- const originalXctestrunFile = path_1.default.resolve(bootstrapPath, getXctestrunFileName(deviceInfo, version));
253
+ const originalXctestrunFile = node_path_1.default.resolve(bootstrapPath, getXctestrunFileName(deviceInfo, version));
253
254
  if (await support_1.fs.exists(originalXctestrunFile)) {
254
255
  // If this is first time run for given device, then first generate xctestrun file for device.
255
256
  // We need to have a xctestrun file **per device** because we cant not have same wda port for all devices.
256
257
  await support_1.fs.copyFile(originalXctestrunFile, filePath);
257
- logger_1.default.info(`Using '${filePath}' as xctestrun file copied by '${originalXctestrunFile}'`);
258
+ logger_1.log.info(`Using '${filePath}' as xctestrun file copied by '${originalXctestrunFile}'`);
258
259
  return filePath;
259
260
  }
260
261
  }
261
262
  throw new Error(`If you are using 'useXctestrunFile' capability then you ` +
262
263
  `need to have a xctestrun file (expected: ` +
263
- `'${path_1.default.resolve(bootstrapPath, getXctestrunFileName(deviceInfo, sdkVersion))}')`);
264
+ `'${node_path_1.default.resolve(bootstrapPath, getXctestrunFileName(deviceInfo, sdkVersion))}')`);
264
265
  }
265
266
  /**
266
267
  * Return the name of xctestrun file
267
- * @param {DeviceInfo} deviceInfo
268
- * @param {string} version - The Xcode SDK version of OS.
269
- * @return {string} returns xctestrunFilePath for given device
268
+ * @param deviceInfo
269
+ * @param version - The Xcode SDK version of OS.
270
+ * @return returns xctestrunFilePath for given device
270
271
  */
271
272
  function getXctestrunFileName(deviceInfo, version) {
272
273
  const archSuffix = deviceInfo.isRealDevice
273
274
  ? `os${version}-arm64`
274
- : `simulator${version}-${(0, os_1.arch)() === 'arm64' ? 'arm64' : 'x86_64'}`;
275
+ : `simulator${version}-${(0, node_os_1.arch)() === 'arm64' ? 'arm64' : 'x86_64'}`;
275
276
  return `WebDriverAgentRunner_${isTvOS(deviceInfo.platformName) ? 'tvOS_appletv' : 'iphone'}${archSuffix}.xctestrun`;
276
277
  }
277
278
  /**
278
279
  * Ensures the process is killed after the timeout
279
- *
280
- * @param {string} name
281
- * @param {import('teen_process').SubProcess} proc
282
- * @returns {Promise<void>}
283
280
  */
284
281
  async function killProcess(name, proc) {
285
282
  if (!proc || !proc.isRunning) {
286
283
  return;
287
284
  }
288
- logger_1.default.info(`Shutting down '${name}' process (pid '${proc.proc?.pid}')`);
289
- logger_1.default.info(`Sending 'SIGTERM'...`);
285
+ logger_1.log.info(`Shutting down '${name}' process (pid '${proc.proc?.pid}')`);
286
+ logger_1.log.info(`Sending 'SIGTERM'...`);
290
287
  try {
291
288
  await proc.stop('SIGTERM', 1000);
292
289
  return;
@@ -295,9 +292,9 @@ async function killProcess(name, proc) {
295
292
  if (!err.message.includes(`Process didn't end after`)) {
296
293
  throw err;
297
294
  }
298
- logger_1.default.debug(`${name} process did not end in a timely fashion: '${err.message}'.`);
295
+ logger_1.log.debug(`${name} process did not end in a timely fashion: '${err.message}'.`);
299
296
  }
300
- logger_1.default.info(`Sending 'SIGKILL'...`);
297
+ logger_1.log.info(`Sending 'SIGKILL'...`);
301
298
  try {
302
299
  await proc.stop('SIGKILL');
303
300
  }
@@ -310,21 +307,16 @@ async function killProcess(name, proc) {
310
307
  }
311
308
  }
312
309
  /**
313
- * Generate a random integer.
314
- *
315
- * @return {number} A random integer number in range [low, hight). `low`` is inclusive and `high` is exclusive.
310
+ * Generate a random integer in range [low, high). `low` is inclusive and `high` is exclusive.
316
311
  */
317
312
  function randomInt(low, high) {
318
313
  return Math.floor(Math.random() * (high - low) + low);
319
314
  }
320
315
  /**
321
- * Retrieves WDA upgrade timestamp
322
- *
323
- * @return {Promise<number?>} The UNIX timestamp of the package manifest. The manifest only gets modified on
324
- * package upgrade.
316
+ * Retrieves WDA upgrade timestamp. The manifest only gets modified on package upgrade.
325
317
  */
326
318
  async function getWDAUpgradeTimestamp() {
327
- const packageManifest = path_1.default.resolve(getModuleRoot(), 'package.json');
319
+ const packageManifest = node_path_1.default.resolve(getModuleRoot(), 'package.json');
328
320
  if (!await support_1.fs.exists(packageManifest)) {
329
321
  return null;
330
322
  }
@@ -333,9 +325,6 @@ async function getWDAUpgradeTimestamp() {
333
325
  }
334
326
  /**
335
327
  * Kills running XCTest processes for the particular device.
336
- *
337
- * @param {string} udid - The device UDID.
338
- * @param {boolean} isSimulator - Equals to true if the current device is a Simulator
339
328
  */
340
329
  async function resetTestProcesses(udid, isSimulator) {
341
330
  const processPatterns = [`xcodebuild.*${udid}`];
@@ -344,7 +333,7 @@ async function resetTestProcesses(udid, isSimulator) {
344
333
  // The pattern to find in case idb was used
345
334
  processPatterns.push(`xctest.*${udid}`);
346
335
  }
347
- logger_1.default.debug(`Killing running processes '${processPatterns.join(', ')}' for the device ${udid}...`);
336
+ logger_1.log.debug(`Killing running processes '${processPatterns.join(', ')}' for the device ${udid}...`);
348
337
  await bluebird_1.default.all(processPatterns.map(killAppUsingPattern));
349
338
  }
350
339
  /**
@@ -352,13 +341,13 @@ async function resetTestProcesses(udid, isSimulator) {
352
341
  * It is also possible to apply additional filtering based on the
353
342
  * process command line.
354
343
  *
355
- * @param {string|number} port - The port number.
356
- * @param {?Function} filteringFunc - Optional lambda function, which
344
+ * @param port - The port number.
345
+ * @param filteringFunc - Optional lambda function, which
357
346
  * receives command line string of the particular process
358
347
  * listening on given port, and is expected to return
359
348
  * either true or false to include/exclude the corresponding PID
360
349
  * from the resulting array.
361
- * @returns {Promise<string[]>} - the list of matched process ids.
350
+ * @returns - the list of matched process ids.
362
351
  */
363
352
  async function getPIDsListeningOnPort(port, filteringFunc = null) {
364
353
  const result = [];
@@ -370,7 +359,7 @@ async function getPIDsListeningOnPort(port, filteringFunc = null) {
370
359
  catch (e) {
371
360
  if (e.code !== 1) {
372
361
  // code 1 means no processes. Other errors need reporting
373
- logger_1.default.debug(`Error getting processes listening on port '${port}': ${e.stderr || e.message}`);
362
+ logger_1.log.debug(`Error getting processes listening on port '${port}': ${e.stderr || e.message}`);
374
363
  }
375
364
  return result;
376
365
  }
@@ -392,4 +381,29 @@ async function getPIDsListeningOnPort(port, filteringFunc = null) {
392
381
  return await filteringFunc(stdout);
393
382
  });
394
383
  }
384
+ // Private functions
385
+ async function getPIDsUsingPattern(pattern) {
386
+ const args = [
387
+ '-if', // case insensitive, full cmdline match
388
+ pattern,
389
+ ];
390
+ try {
391
+ const { stdout } = await (0, teen_process_1.exec)('pgrep', args);
392
+ return stdout.split(/\s+/)
393
+ .map((x) => parseInt(x, 10))
394
+ .filter(lodash_1.default.isInteger)
395
+ .map((x) => `${x}`);
396
+ }
397
+ catch (err) {
398
+ logger_1.log.debug(`'pgrep ${args.join(' ')}' didn't detect any matching processes. Return code: ${err.code}`);
399
+ return [];
400
+ }
401
+ }
402
+ async function replaceInFile(file, find, replace) {
403
+ const contents = await support_1.fs.readFile(file, 'utf8');
404
+ const newContents = contents.replace(find, replace);
405
+ if (newContents !== contents) {
406
+ await support_1.fs.writeFile(file, newContents, 'utf8');
407
+ }
408
+ }
395
409
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,kDAqCC;AAOD,wBAEC;AAQD,8CAYC;AAMD,4CAeC;AAED,sDAKC;AA2BD,4CASC;AASD,0DAWC;AAQD,oDAgCC;AASD,oDAKC;AAKD,kCA4BC;AAKD,8BAEC;AAKD,wDAOC;AAKD,gDASC;AAeD,wDA8BC;AA3WD,6CAA4C;AAC5C,+CAAgD;AAChD,uDAA0C;AAC1C,uCAAyC;AACzC,qCAA+B;AAC/B,oDAAuB;AACvB,2CAAuE;AACvE,wDAAyB;AACzB,sDAA0B;AAC1B,uCAA4C;AAC5C,qCAA+B;AAG/B,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,wDAAwD;AACxD,MAAM,eAAe,GACnB,OAAO,UAAU,KAAK,WAAW;IAC/B,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,IAAA,wBAAa,EAAC,IAAI,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;AAE9D,MAAM,cAAc,GAAG,IAAA,mBAAO,EAAC,eAAe,CAAC,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,aAAa,GAAG,gBAAC,CAAC,OAAO,CAAC,SAAS,aAAa;IACpD,IAAI,UAAU,GAAG,cAAc,CAAC;IAChC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,OAAO,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,IAAI,iBAAG,CAAC,UAAU,CAAC,YAAY,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,iBAAG,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBACxF,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,UAAU,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,UAAU,GAAG,UAAU,CAAC,MAAM,IAAI,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACpE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC7F,CAAC,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,aAAa,EAAE,CAAC;AAEvC,KAAK,UAAU,mBAAmB,CAAE,YAAoB;IAC7D,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,gBAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,IAAI,MAAM,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,IAAA,mBAAI,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,YAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,KAAK,gBAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,yCAAyC;YACzC,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAA,2BAAgB,EAAC,KAAK,IAAI,EAAE;gBAChC,MAAM,gBAAgB,GAAG,WAAW;qBACjC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,mBAAI,EAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACrC,6BAA6B;qBAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;oBAClB,sBAAsB;qBACrB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CACnB,CAAC;gBACJ,OAAO,CAAC,MAAM,kBAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;qBACnC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAC9B,CAAC,EAAE;gBACD,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,MAAM,CAAE,YAAoB;IAC1C,OAAO,gBAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,gBAAC,CAAC,OAAO,CAAC,8BAAkB,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,iBAAiB,CAAE,SAAiB,EAAE,WAAmB;IAC7E,MAAM,eAAe,GAAG,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,qFAAqF;QACrF,MAAM,YAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,eAAe,MAAM,CAAC,CAAC;QAC7D,MAAM,aAAa,CAAC,eAAe,EAAE,IAAI,MAAM,CAAC,gBAAC,CAAC,YAAY,CAAC,gCAAoB,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;QACzG,YAAG,CAAC,KAAK,CAAC,yBAAyB,eAAe,qBAAqB,WAAW,GAAG,CAAC,CAAC;IACzF,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,YAAG,CAAC,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,YAAG,CAAC,IAAI,CAAC,kCAAkC,eAAe,SAAS;YACjE,cAAc,WAAW,iCAAiC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CAAE,SAAiB;IACvD,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,yCAAyC;QACzC,IAAI,CAAC,MAAM,YAAE,CAAC,MAAM,CAAC,GAAG,eAAe,MAAM,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,mBAAmB;QAC7B,CAAC;QACD,MAAM,YAAE,CAAC,EAAE,CAAC,GAAG,eAAe,MAAM,EAAE,eAAe,CAAC,CAAC;QACvD,YAAG,CAAC,KAAK,CAAC,uBAAuB,eAAe,qBAAqB,gCAAoB,GAAG,CAAC,CAAC;IAChG,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,YAAG,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,YAAG,CAAC,IAAI,CAAC,iCAAiC,eAAe,SAAS;YAChE,cAAc,gCAAoB,6BAA6B;YAC/D,kDAAkD,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAE,YAAoB,EAAE,gBAAwB;IACzF,YAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC7C,MAAM,IAAA,mBAAI,EAAC,UAAU,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACrE,MAAM,IAAA,mBAAI,EAAC,UAAU,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC;IACxF,MAAM,IAAA,mBAAI,EAAC,UAAU,EAAE,CAAC,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AACtF,CAAC;AAaD;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,gBAAgB,CAAE,IAAuB;IAC7D,MAAM,EAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAC,GAAG,IAAI,CAAC;IAClF,MAAM,iBAAiB,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC5F,MAAM,gBAAgB,GAAG,MAAM,eAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,uBAAuB,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACpG,MAAM,mBAAmB,GAAG,gBAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IACrE,MAAM,eAAK,CAAC,eAAe,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAE1E,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAE,YAAoB,EAAE,aAA8B,EAAE,YAAqB;IAClH,MAAM,MAAM,GAAG,uBAAuB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5E,OAAO;QACL,CAAC,MAAM,CAAC,EAAE;YACR,oBAAoB,EAAE;gBACpB,4BAA4B;gBAC5B,QAAQ,EAAE,GAAG,aAAa,EAAE;gBAC5B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClD;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,oBAAoB,CAAE,UAAsB,EAAE,UAAkB,EAAE,aAAqB;IAC3G,kDAAkD;IAClD,MAAM,QAAQ,GAAqB;QACjC,mBAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,YAAY,CAAC;QACzE,UAAU;KACX,CAAC;IACF,qDAAqD;IACrD,MAAM,aAAa,GAAqB;QACtC,mBAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,eAAe,YAAY,CAAC;QACzF,UAAU,CAAC,eAAe;KAC3B,CAAC;IAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;QAC5D,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,YAAG,CAAC,IAAI,CAAC,UAAU,QAAQ,qBAAqB,CAAC,CAAC;YAClD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,qBAAqB,GAAG,mBAAI,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACrG,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC3C,6FAA6F;YAC7F,0GAA0G;YAC1G,MAAM,YAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;YACnD,YAAG,CAAC,IAAI,CAAC,UAAU,QAAQ,kCAAkC,qBAAqB,GAAG,CAAC,CAAC;YACvF,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,0DAA0D;QAC1D,2CAA2C;QAC3C,IAAI,mBAAI,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAClF,CAAC;AACJ,CAAC;AAGD;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAE,UAAsB,EAAE,OAAe;IAC3E,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY;QACxC,CAAC,CAAC,KAAK,OAAO,QAAQ;QACtB,CAAC,CAAC,YAAY,OAAO,IAAI,IAAA,cAAI,GAAE,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrE,OAAO,wBAAwB,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,YAAY,CAAC;AACtH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAAE,IAAY,EAAE,IAAmC;IAClF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,YAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,mBAAmB,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAEtE,YAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACtD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,YAAG,CAAC,KAAK,CAAC,GAAG,IAAI,8CAA8C,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,YAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAClD,6DAA6D;YAC7D,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAE,GAAW,EAAE,IAAY;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,sBAAsB;IAC1C,MAAM,eAAe,GAAG,mBAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,YAAE,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,YAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAE,IAAY,EAAE,WAAoB;IAC1E,MAAM,eAAe,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC,CAAC;QAC3C,2CAA2C;QAC3C,eAAe,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,YAAG,CAAC,KAAK,CAAC,8BAA8B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,CAAC;IACjG,MAAM,kBAAC,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,sBAAsB,CAAE,IAAqB,EAAE,gBAA0E,IAAI;IACjJ,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,4CAA4C;QAC5C,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAA,mBAAI,EAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjB,yDAAyD;YACzD,YAAG,CAAC,KAAK,CAAC,8CAA8C,IAAI,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,gBAAC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,kBAAC,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1C,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,CAAC,EAAC,MAAM,EAAC,GAAG,MAAM,IAAA,mBAAI,EAAC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACjB,gEAAgE;gBAChE,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oBAAoB;AAEpB,KAAK,UAAU,mBAAmB,CAAE,OAAe;IACjD,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,uCAAuC;QAC9C,OAAO;KACR,CAAC;IACF,IAAI,CAAC;QACH,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAA,mBAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC3B,MAAM,CAAC,gBAAC,CAAC,SAAS,CAAC;aACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,YAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,wDAAwD,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACtG,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAE,IAAY,EAAE,IAAqB,EAAE,OAAe;IAChF,MAAM,QAAQ,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,YAAE,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}