farm-runner 1.1.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.
@@ -0,0 +1,539 @@
1
+ "use strict";
2
+ /**
3
+ * WebDriverAgent (WDA) Preparation Script
4
+ *
5
+ * This script builds, signs, and packages WebDriverAgent for iOS devices.
6
+ * It can be run as a CLI command: `node prepare-wda`
7
+ *
8
+ * Options:
9
+ * --mobile-provisioning-file, -m Path to the mobile provisioning file
10
+ * --wda-project-path, -p Path to WebDriverAgent xcode project
11
+ * --platform Platform type: ios, tvos, or both (default: ios)
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ var __importDefault = (this && this.__importDefault) || function (mod) {
47
+ return (mod && mod.__esModule) ? mod : { "default": mod };
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.prepareWda = prepareWda;
51
+ const child_process_1 = require("child_process");
52
+ const fs_1 = __importDefault(require("fs"));
53
+ const http_1 = __importDefault(require("http"));
54
+ const https_1 = __importDefault(require("https"));
55
+ const os_1 = __importDefault(require("os"));
56
+ const path_1 = __importDefault(require("path"));
57
+ const util_1 = __importDefault(require("util"));
58
+ const form_data_1 = __importDefault(require("form-data"));
59
+ const node_config_1 = require("../config/node.config");
60
+ const execAsync = util_1.default.promisify(child_process_1.exec);
61
+ const WDA_BUILD_PATH = '/appium_wda_ios/Build/Products/Debug-iphoneos';
62
+ let bundleIdName = null;
63
+ let freeBundleID = null;
64
+ let isFreeAccount = false;
65
+ let customOutputFileName = null;
66
+ let generatedIpaPath = null;
67
+ /**
68
+ * Get Xcode major version
69
+ */
70
+ async function getXcodeMajorVersion() {
71
+ const { stdout } = await execAsync('xcodebuild -version');
72
+ const match = stdout.match(/Xcode (\d+)\./);
73
+ if (!match) {
74
+ throw new Error('Unable to determine Xcode version');
75
+ }
76
+ return parseInt(match[1], 10);
77
+ }
78
+ /**
79
+ * Get provisioning profile path based on Xcode version
80
+ */
81
+ async function getProvisioningProfilePath() {
82
+ const xcodeVersion = await getXcodeMajorVersion();
83
+ if (xcodeVersion <= 15) {
84
+ return path_1.default.join(os_1.default.homedir(), 'Library/MobileDevice/Provisioning Profiles');
85
+ }
86
+ else {
87
+ return path_1.default.join(os_1.default.homedir(), 'Library/Developer/Xcode/UserData/Provisioning Profiles');
88
+ }
89
+ }
90
+ /**
91
+ * Load required modules dynamically
92
+ */
93
+ async function loadDependencies() {
94
+ try {
95
+ // Dynamic imports to handle optional dependencies
96
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
97
+ const Applesign = require('applesign');
98
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
99
+ const archiver = require('archiver');
100
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
101
+ const { provision } = require('ios-mobileprovision-finder');
102
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
103
+ const Listr = require('listr');
104
+ const { Observable } = await Promise.resolve().then(() => __importStar(require('rxjs')));
105
+ const { select, input } = await Promise.resolve().then(() => __importStar(require('@inquirer/prompts')));
106
+ return { Applesign, archiver, provision, Listr, Observable, select, input };
107
+ }
108
+ catch (error) {
109
+ console.error('โŒ Missing required dependencies for prepare-wda command.');
110
+ console.error('Please install them:');
111
+ console.error(' npm install applesign archiver ios-mobileprovision-finder listr rxjs @inquirer/prompts');
112
+ process.exit(1);
113
+ }
114
+ }
115
+ /**
116
+ * Get mobile provisioning file (interactive selection if not provided)
117
+ */
118
+ async function getMobileProvisioningFile(provision, select, mobileProvisioningFile) {
119
+ if (mobileProvisioningFile) {
120
+ if (!fs_1.default.existsSync(mobileProvisioningFile) || !fs_1.default.statSync(mobileProvisioningFile).isFile()) {
121
+ throw new Error(`Mobile provisioning file ${mobileProvisioningFile} does not exist`);
122
+ }
123
+ return mobileProvisioningFile;
124
+ }
125
+ const provisionFileDir = await getProvisioningProfilePath();
126
+ if (!fs_1.default.existsSync(provisionFileDir)) {
127
+ throw new Error(`Provisioning directory does not exist: ${provisionFileDir}`);
128
+ }
129
+ const files = fs_1.default
130
+ .readdirSync(provisionFileDir, { encoding: 'utf8' })
131
+ .filter(file => file.endsWith('.mobileprovision'));
132
+ const provisioningFiles = files.map(file => {
133
+ const fullPath = path_1.default.join(provisionFileDir, file);
134
+ const mp = provision.readFromFile(fullPath);
135
+ return { ...mp, _filePath: fullPath };
136
+ });
137
+ if (!provisioningFiles || !provisioningFiles.length) {
138
+ throw new Error('No mobileprovision file found on the machine');
139
+ }
140
+ const prompt = await select({
141
+ message: 'Select the mobileprovision to use for signing',
142
+ choices: provisioningFiles.map(file => ({
143
+ value: file.UUID,
144
+ name: `${file.Name.split(':')[1] || file.Name} (Team: ${file.TeamName}) (${file.UUID})`,
145
+ })),
146
+ });
147
+ isFreeAccount = await select({
148
+ message: 'Is this a free or enterprise account provisioning profile?',
149
+ choices: [
150
+ { value: true, name: 'Free Account' },
151
+ { value: false, name: 'Enterprise Account' },
152
+ ],
153
+ });
154
+ if (isFreeAccount) {
155
+ bundleIdName = provisioningFiles.map(file => ({
156
+ uuid: file.UUID,
157
+ name: `${file.Name.split(':')[1] || file.Name}`,
158
+ }));
159
+ }
160
+ freeBundleID = bundleIdName?.find(d => d.uuid === prompt) || null;
161
+ return path_1.default.join(await getProvisioningProfilePath(), `${prompt}.mobileprovision`);
162
+ }
163
+ /**
164
+ * Get WebDriverAgent project path
165
+ */
166
+ async function getWdaProject(wdaProjectPath) {
167
+ if (wdaProjectPath) {
168
+ if (!fs_1.default.existsSync(wdaProjectPath) || !fs_1.default.statSync(wdaProjectPath).isDirectory()) {
169
+ throw new Error(`Unable to find webdriver agent project in path ${wdaProjectPath}`);
170
+ }
171
+ return wdaProjectPath;
172
+ }
173
+ try {
174
+ const { stdout } = await execAsync('find $HOME/.appium -name WebDriverAgent.xcodeproj');
175
+ const projectPath = stdout.trim().split('\n')[0];
176
+ if (!projectPath) {
177
+ throw new Error('WebDriverAgent.xcodeproj not found');
178
+ }
179
+ return path_1.default.dirname(projectPath);
180
+ }
181
+ catch (err) {
182
+ throw new Error('Unable to find WebDriverAgent project');
183
+ }
184
+ }
185
+ /**
186
+ * Build WebDriverAgent
187
+ */
188
+ async function buildWebDriverAgent(projectDir, logger, _bundleId) {
189
+ try {
190
+ let buildCommand = 'xcodebuild clean build-for-testing -project WebDriverAgent.xcodeproj -derivedDataPath appium_wda_ios -scheme WebDriverAgentRunner -destination generic/platform=iOS CODE_SIGNING_ALLOWED=NO';
191
+ if (isFreeAccount && freeBundleID) {
192
+ buildCommand += ` PRODUCT_BUNDLE_IDENTIFIER=${freeBundleID.name.replace(/^\s+|\s+$/g, '')}`;
193
+ }
194
+ logger(buildCommand);
195
+ await execAsync(buildCommand, { cwd: projectDir, maxBuffer: 1024 * 1024 * 100 });
196
+ return `${projectDir}/${WDA_BUILD_PATH}/WebDriverAgentRunner-Runner.app`;
197
+ }
198
+ catch (error) {
199
+ console.error(error);
200
+ throw new Error(`โŒ Error building WebDriverAgent: ${error?.message}`);
201
+ }
202
+ }
203
+ /**
204
+ * Zip payload directory
205
+ */
206
+ async function zipPayloadDirectory(archiver, outputZipPath, folderPath, observer) {
207
+ return new Promise((resolve, reject) => {
208
+ const output = fs_1.default.createWriteStream(outputZipPath);
209
+ const archive = archiver('zip', { zlib: { level: 9 } });
210
+ output.on('close', () => {
211
+ observer.next(`Zipped ${archive.pointer()} total bytes`);
212
+ observer.next(`Archive has been written to ${outputZipPath}`);
213
+ resolve();
214
+ });
215
+ archive.on('error', (err) => {
216
+ reject(err);
217
+ });
218
+ archive.pipe(output);
219
+ archive.directory(folderPath, 'Payload');
220
+ archive.finalize();
221
+ });
222
+ }
223
+ /**
224
+ * Upload WDA IPA to hub
225
+ */
226
+ async function uploadWdaToHub(hubUrl, authHeader, ipaPath, bundleId, setAsDefault = false) {
227
+ return new Promise((resolve, reject) => {
228
+ const url = new URL('/api/wda/upload', hubUrl);
229
+ const client = url.protocol === 'https:' ? https_1.default : http_1.default;
230
+ const form = new form_data_1.default();
231
+ form.append('file', fs_1.default.createReadStream(ipaPath));
232
+ form.append('bundleId', bundleId);
233
+ form.append('setAsDefault', setAsDefault.toString());
234
+ const headers = {
235
+ ...form.getHeaders(),
236
+ Authorization: authHeader,
237
+ };
238
+ const req = client.request({
239
+ method: 'POST',
240
+ hostname: url.hostname,
241
+ port: url.port,
242
+ path: url.pathname,
243
+ headers,
244
+ }, res => {
245
+ let data = '';
246
+ res.on('data', chunk => (data += chunk));
247
+ res.on('end', () => {
248
+ if (res.statusCode === 200 || res.statusCode === 201) {
249
+ try {
250
+ const response = JSON.parse(data);
251
+ resolve({
252
+ success: true,
253
+ message: 'WDA uploaded successfully',
254
+ wdaId: response.wda?.id,
255
+ });
256
+ }
257
+ catch {
258
+ resolve({ success: true, message: 'WDA uploaded successfully' });
259
+ }
260
+ }
261
+ else {
262
+ resolve({ success: false, message: `Upload failed: HTTP ${res.statusCode}` });
263
+ }
264
+ });
265
+ });
266
+ req.on('error', error => {
267
+ reject(error);
268
+ });
269
+ form.pipe(req);
270
+ });
271
+ }
272
+ /**
273
+ * Check if hub server is running
274
+ */
275
+ async function isHubRunning(hubUrl) {
276
+ return new Promise(resolve => {
277
+ const url = new URL('/health', hubUrl);
278
+ const client = url.protocol === 'https:' ? https_1.default : http_1.default;
279
+ const req = client.get(url.href, { timeout: 3000 }, res => {
280
+ resolve(res.statusCode === 200);
281
+ });
282
+ req.on('error', () => resolve(false));
283
+ req.on('timeout', () => {
284
+ req.destroy();
285
+ resolve(false);
286
+ });
287
+ });
288
+ }
289
+ /**
290
+ * Main function to prepare WDA
291
+ */
292
+ async function prepareWda(options) {
293
+ console.log('๐ŸŽ Starting WebDriverAgent preparation...\n');
294
+ const { Applesign, archiver, provision, Listr, Observable, select, input } = await loadDependencies();
295
+ const mobileProvisioningFile = await getMobileProvisioningFile(provision, select, options.mobileProvisioningFile);
296
+ const platform = options.platform || 'ios';
297
+ // Ask user for custom output filename
298
+ const defaultFileName = platform === 'tvos' ? 'wda-resign_tvos' : 'wda-resign';
299
+ customOutputFileName = await input({
300
+ message: 'Enter output filename (without .ipa extension):',
301
+ default: defaultFileName,
302
+ });
303
+ const tasks = new Listr([
304
+ {
305
+ title: '๐Ÿ” Searching for WebDriverAgent.xcodeproj',
306
+ task: async (context, task) => {
307
+ context.wdaProjectPath = await getWdaProject(options.wdaProjectPath);
308
+ task.title = `Found WebDriverAgent.xcodeproj at: ${context.wdaProjectPath}`;
309
+ },
310
+ },
311
+ {
312
+ title: '๐Ÿ—๏ธ Building WebDriverAgent',
313
+ task: (context, task) => {
314
+ return new Observable((observer) => {
315
+ buildWebDriverAgent(context.wdaProjectPath, observer.next.bind(observer))
316
+ .then(wdaAppPath => {
317
+ context.wdaAppPath = wdaAppPath;
318
+ task.title = 'Successfully built WebDriverAgent';
319
+ observer.complete();
320
+ })
321
+ .catch((err) => {
322
+ observer.error(err);
323
+ });
324
+ });
325
+ },
326
+ },
327
+ {
328
+ title: '๐Ÿ“ฆ Preparing WebDriverAgent IPA',
329
+ task: (context) => {
330
+ return new Observable((observer) => {
331
+ const wdaBuildPath = path_1.default.join(context.wdaProjectPath, WDA_BUILD_PATH);
332
+ const payloadDirectory = path_1.default.join(wdaBuildPath, 'Payload');
333
+ observer.next('Removing framework directory');
334
+ const frameworksPath = `${context.wdaAppPath}/Frameworks`;
335
+ if (fs_1.default.existsSync(frameworksPath)) {
336
+ fs_1.default.readdirSync(frameworksPath).forEach(f => fs_1.default.rmSync(`${frameworksPath}/${f}`, { recursive: true }));
337
+ }
338
+ const infoPlistPath = path_1.default.join(context.wdaAppPath, 'Info.plist');
339
+ const bundleId = freeBundleID?.name.replace(/^\s+|\s+$/g, '') || '';
340
+ // Read and update Info.plist
341
+ if (fs_1.default.existsSync(infoPlistPath) && bundleId) {
342
+ let infoPlistContent = fs_1.default.readFileSync(infoPlistPath, 'utf8');
343
+ infoPlistContent = infoPlistContent.replace(/<key>CFBundleIdentifier<\/key>\n\s*<string>(.*?)<\/string>/, `<key>CFBundleIdentifier</key>\n<string>${bundleId}</string>`);
344
+ fs_1.default.writeFileSync(infoPlistPath, infoPlistContent, 'utf8');
345
+ }
346
+ observer.next('Creating Payload directory');
347
+ execAsync(`mkdir -p ${payloadDirectory}`)
348
+ .then(() => {
349
+ observer.next('Payload directory created successfully');
350
+ })
351
+ .then(() => {
352
+ observer.next('๐Ÿšš Moving .app file to Payload directory...');
353
+ return execAsync(`mv ${context.wdaAppPath} ${payloadDirectory}`);
354
+ })
355
+ .then(() => {
356
+ observer.next('Packing Payload directory...');
357
+ return zipPayloadDirectory(archiver, `${wdaBuildPath}/wda-resign.zip`, payloadDirectory, observer);
358
+ })
359
+ .then(() => observer.complete())
360
+ .catch((err) => {
361
+ observer.error(err);
362
+ });
363
+ });
364
+ },
365
+ },
366
+ {
367
+ title: 'โœ๏ธ Signing WebDriverAgent IPA',
368
+ task: async (context, task) => {
369
+ const wdaBuildPath = path_1.default.join(context.wdaProjectPath, WDA_BUILD_PATH);
370
+ if (platform === 'both') {
371
+ const platforms = ['ios', 'tvos'];
372
+ const results = [];
373
+ for (const p of platforms) {
374
+ const wdaFileName = p === 'tvos' ? `${customOutputFileName}_tvos.ipa` : `${customOutputFileName}.ipa`;
375
+ const ipaPath = `${wdaBuildPath}/${wdaFileName}`;
376
+ const appleOptions = {
377
+ mobileprovision: mobileProvisioningFile,
378
+ outfile: ipaPath,
379
+ };
380
+ if (freeBundleID) {
381
+ appleOptions.bundleId = freeBundleID.name.replace(/^\s+|\s+$/g, '');
382
+ }
383
+ const as = new Applesign(appleOptions);
384
+ await as.signIPA(path_1.default.join(wdaBuildPath, 'wda-resign.zip'));
385
+ results.push(`${p}: ${ipaPath}`);
386
+ // Store the iOS IPA path for deployment
387
+ if (p === 'ios') {
388
+ generatedIpaPath = ipaPath;
389
+ }
390
+ }
391
+ task.title = `Successfully signed WebDriverAgent files for both platforms: ${results.join(', ')}`;
392
+ }
393
+ else {
394
+ const wdaFileName = `${customOutputFileName}.ipa`;
395
+ const ipaPath = `${wdaBuildPath}/${wdaFileName}`;
396
+ const appleOptions = {
397
+ mobileprovision: mobileProvisioningFile,
398
+ outfile: ipaPath,
399
+ };
400
+ if (freeBundleID) {
401
+ appleOptions.bundleId = freeBundleID.name.replace(/^\s+|\s+$/g, '');
402
+ }
403
+ const as = new Applesign(appleOptions);
404
+ await as.signIPA(path_1.default.join(wdaBuildPath, 'wda-resign.zip'));
405
+ generatedIpaPath = ipaPath;
406
+ task.title = `Successfully signed WebDriverAgent file for ${platform}: ${ipaPath}`;
407
+ }
408
+ },
409
+ },
410
+ ], { exitOnError: true });
411
+ await tasks.run();
412
+ console.log('\nโœ… WebDriverAgent preparation complete!\n');
413
+ // Get hub URL and credentials from config
414
+ const config = (0, node_config_1.getMergedConfig)();
415
+ const hubUrl = config.hubUrl;
416
+ const accessKey = config.accessKey;
417
+ const secretToken = config.token;
418
+ if (!hubUrl || !accessKey || !secretToken) {
419
+ console.log('โš ๏ธ Hub URL or credentials not configured in node.config.json');
420
+ console.log(' Please configure hubUrl, accessKey, and token to upload WDA to hub.\n');
421
+ console.log(`๐Ÿ“ WDA IPA file created locally: ${generatedIpaPath}\n`);
422
+ }
423
+ else {
424
+ // Check if hub is running
425
+ const hubRunning = await isHubRunning(hubUrl);
426
+ if (!hubRunning) {
427
+ console.log('โš ๏ธ Hub server is not running or not reachable');
428
+ console.log(` Hub URL: ${hubUrl}\n`);
429
+ console.log(`๐Ÿ“ WDA IPA file created locally: ${generatedIpaPath}\n`);
430
+ }
431
+ else {
432
+ // Offer to upload to hub
433
+ console.log('โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”');
434
+ console.log('๐ŸŒ Hub server detected! Upload WDA to hub?');
435
+ console.log('โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n');
436
+ const shouldUpload = await select({
437
+ message: 'Would you like to upload WDA to the hub?',
438
+ choices: [
439
+ { value: true, name: 'Yes, upload to hub' },
440
+ { value: false, name: 'No, keep local only' },
441
+ ],
442
+ });
443
+ if (shouldUpload) {
444
+ // Ask if this should be the default WDA
445
+ const setAsDefault = await select({
446
+ message: 'Set this as the default WDA for the platform?',
447
+ choices: [
448
+ { value: true, name: 'Yes, set as default' },
449
+ { value: false, name: 'No, upload as alternative' },
450
+ ],
451
+ });
452
+ const basicAuth = Buffer.from(`${accessKey}:${secretToken}`).toString('base64');
453
+ const authHeader = `Basic ${basicAuth}`;
454
+ // Get bundle ID from free account or prompt
455
+ const bundleId = freeBundleID?.name.replace(/^\s+|\s+$/g, '') || 'com.facebook.WebDriverAgentRunner';
456
+ console.log('\n๐Ÿ“ค Uploading WDA to hub...');
457
+ console.log(` Hub URL: ${hubUrl}`);
458
+ console.log(` Bundle ID: ${bundleId}`);
459
+ console.log(` Set as default: ${setAsDefault ? 'Yes' : 'No'}\n`);
460
+ try {
461
+ if (!generatedIpaPath || !fs_1.default.existsSync(generatedIpaPath)) {
462
+ throw new Error('Generated IPA file not found');
463
+ }
464
+ const result = await uploadWdaToHub(hubUrl, authHeader, generatedIpaPath, bundleId, setAsDefault);
465
+ if (result.success) {
466
+ console.log('โœ… WDA uploaded successfully to hub!');
467
+ if (result.wdaId) {
468
+ console.log(` WDA ID: ${result.wdaId}`);
469
+ console.log(` Set as default: ${setAsDefault ? 'Yes' : 'No'}\n`);
470
+ // Store WDA ID for later use
471
+ generatedIpaPath = result.wdaId; // Reuse variable to pass WDA ID
472
+ }
473
+ }
474
+ else {
475
+ console.log(`โŒ Failed to upload WDA: ${result.message}\n`);
476
+ console.log(`๐Ÿ“ WDA IPA file is still available locally: ${generatedIpaPath}\n`);
477
+ }
478
+ }
479
+ catch (uploadError) {
480
+ console.log(`โŒ Upload error: ${uploadError.message}\n`);
481
+ console.log(`๐Ÿ“ WDA IPA file is still available locally: ${generatedIpaPath}\n`);
482
+ }
483
+ }
484
+ else {
485
+ console.log(`\n๐Ÿ“ WDA IPA file created locally: ${generatedIpaPath}\n`);
486
+ }
487
+ }
488
+ }
489
+ // Print post-installation instructions
490
+ console.log('โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”');
491
+ console.log('๐Ÿ“ฑ Next Steps: Install and Trust WebDriverAgent on your device');
492
+ console.log('โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n');
493
+ console.log('1๏ธโƒฃ Install the signed WDA IPA on your iOS device:');
494
+ console.log(' Using Xcode:');
495
+ console.log(' โ€ข Open Xcode โ†’ Window โ†’ Devices and Simulators');
496
+ console.log(' โ€ข Select your device โ†’ Click "+" under "Installed Apps"');
497
+ console.log(` โ€ข Select: ${generatedIpaPath}\n`);
498
+ console.log(' Using xcrun devicectl (recommended):');
499
+ console.log(' $ xcrun devicectl device install app --device <udid> <path-to-wda.ipa>\n');
500
+ console.log('2๏ธโƒฃ Trust the developer certificate on your iOS device:');
501
+ console.log(' โ€ข Go to Settings โ†’ General โ†’ VPN & Device Management');
502
+ console.log(' โ€ข Under "Developer App", tap on your developer/team name');
503
+ console.log(' โ€ข Tap "Trust <Developer Name>" and confirm\n');
504
+ console.log('3๏ธโƒฃ Verify WDA is installed:');
505
+ console.log(' โ€ข Look for "WebDriverAgentRunner" app on your device');
506
+ console.log(' โ€ข The app icon may be blank/white - this is normal\n');
507
+ // Check if WDA was uploaded to hub (generatedIpaPath will contain WDA ID if uploaded)
508
+ const isWdaId = generatedIpaPath && generatedIpaPath.length === 36 && generatedIpaPath.includes('-');
509
+ if (isWdaId) {
510
+ console.log('โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”');
511
+ console.log('๐Ÿงช Use WDA in Your Test Automation');
512
+ console.log('โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n');
513
+ console.log('Add this capability to your test configuration:\n');
514
+ console.log('JavaScript/WebdriverIO:');
515
+ console.log(' const capabilities = {');
516
+ console.log(" platformName: 'iOS',");
517
+ console.log(" 'appium:automationName': 'XCUITest',");
518
+ console.log(` 'df:wdaID': '${generatedIpaPath}',`);
519
+ console.log(" 'df:runsOn': 'real' // or 'simulated' for simulators");
520
+ console.log(' };\n');
521
+ console.log('Python:');
522
+ console.log(' desired_caps = {');
523
+ console.log(" 'platformName': 'iOS',");
524
+ console.log(" 'appium:automationName': 'XCUITest',");
525
+ console.log(` 'df:wdaID': '${generatedIpaPath}',`);
526
+ console.log(" 'df:runsOn': 'real' # or 'simulated' for simulators");
527
+ console.log(' }\n');
528
+ console.log('Java:');
529
+ console.log(' DesiredCapabilities capabilities = new DesiredCapabilities();');
530
+ console.log(' capabilities.setCapability("platformName", "iOS");');
531
+ console.log(' capabilities.setCapability("appium:automationName", "XCUITest");');
532
+ console.log(` capabilities.setCapability("df:wdaID", "${generatedIpaPath}");`);
533
+ console.log(' capabilities.setCapability("df:runsOn", "real"); // or "simulated"\n');
534
+ }
535
+ console.log('๐Ÿ’ก Tip: For free Apple Developer accounts, the certificate expires');
536
+ console.log(' after 7 days. You will need to re-sign and reinstall WDA.\n');
537
+ console.log('โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”');
538
+ }
539
+ //# sourceMappingURL=prepare-wda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-wda.js","sourceRoot":"","sources":["../../../src/scripts/prepare-wda.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuUH,gCAuUC;AA5oBD,iDAAqC;AACrC,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAC1B,4CAAoB;AACpB,gDAAwB;AACxB,gDAAwB;AAExB,0DAAiC;AAEjC,uDAAwD;AAQxD,MAAM,SAAS,GAAG,cAAI,CAAC,SAAS,CAAC,oBAAI,CAAC,CAAC;AACvC,MAAM,cAAc,GAAG,+CAA+C,CAAC;AAcvE,IAAI,YAAY,GAA0B,IAAI,CAAC;AAC/C,IAAI,YAAY,GAAwB,IAAI,CAAC;AAC7C,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,oBAAoB,GAAkB,IAAI,CAAC;AAC/C,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAE3C;;GAEG;AACH,KAAK,UAAU,oBAAoB;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,0BAA0B;IACvC,MAAM,YAAY,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAElD,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,4CAA4C,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,OAAO,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,wDAAwD,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB;IAS7B,IAAI,CAAC;QACH,kDAAkD;QAClD,8DAA8D;QAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,8DAA8D;QAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC5D,8DAA8D;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,MAAM,GAAC,CAAC;QAC5C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QAE5D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CACX,0FAA0F,CAC3F,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,yBAAyB,CACtC,SAAc,EACd,MAAW,EACX,sBAA+B;IAE/B,IAAI,sBAAsB,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,4BAA4B,sBAAsB,iBAAiB,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAE5D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,0CAA0C,gBAAgB,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,KAAK,GAAG,YAAE;SACb,WAAW,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;SACnD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAA0B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAChE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B,OAAO,EAAE,+CAA+C;QACxD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,IAAI,GAAG;SACxF,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,aAAa,GAAG,MAAM,MAAM,CAAC;QAC3B,OAAO,EAAE,4DAA4D;QACrE,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE;YACrC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAC7C;KACF,CAAC,CAAC;IAEH,IAAI,aAAa,EAAE,CAAC;QAClB,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;SAChD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,YAAY,GAAG,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;IAElE,OAAO,cAAI,CAAC,IAAI,CAAC,MAAM,0BAA0B,EAAE,EAAE,GAAG,MAAM,kBAAkB,CAAC,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,cAAuB;IAClD,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,YAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,kDAAkD,cAAc,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,mDAAmD,CAAC,CAAC;QACxF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,UAAkB,EAClB,MAA6B,EAC7B,SAAkB;IAElB,IAAI,CAAC;QACH,IAAI,YAAY,GACd,6LAA6L,CAAC;QAEhM,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;YAClC,YAAY,IAAI,8BAA8B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC;QAC9F,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,CAAC;QACrB,MAAM,SAAS,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;QACjF,OAAO,GAAG,UAAU,IAAI,cAAc,kCAAkC,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oCAAqC,KAAe,EAAE,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,QAAa,EACb,aAAqB,EACrB,UAAkB,EAClB,QAAyC;IAEzC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,YAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAExD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,QAAQ,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;YAC9D,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,MAAc,EACd,UAAkB,EAClB,OAAe,EACf,QAAgB,EAChB,eAAwB,KAAK;IAE7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,CAAC,CAAC,cAAI,CAAC;QAExD,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,YAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,aAAa,EAAE,UAAU;SAC1B,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CACxB;YACE,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,OAAO;SACR,EACD,GAAG,CAAC,EAAE;YACJ,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;YACzC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oBACrD,IAAI,CAAC;wBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAClC,OAAO,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,2BAA2B;4BACpC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE;yBACxB,CAAC,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;oBACnE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,MAAc;IACxC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,CAAC,CAAC,cAAI,CAAC;QAExD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE;YACxD,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAE3D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GACxE,MAAM,gBAAgB,EAAE,CAAC;IAC3B,MAAM,sBAAsB,GAAG,MAAM,yBAAyB,CAC5D,SAAS,EACT,MAAM,EACN,OAAO,CAAC,sBAAsB,CAC/B,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IAE3C,sCAAsC;IACtC,MAAM,eAAe,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/E,oBAAoB,GAAG,MAAM,KAAK,CAAC;QACjC,OAAO,EAAE,iDAAiD;QAC1D,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAOH,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB;QACE;YACE,KAAK,EAAE,2CAA2C;YAClD,IAAI,EAAE,KAAK,EAAE,OAAoB,EAAE,IAAuB,EAAE,EAAE;gBAC5D,OAAO,CAAC,cAAc,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBACrE,IAAI,CAAC,KAAK,GAAG,sCAAsC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC9E,CAAC;SACF;QACD;YACE,KAAK,EAAE,6BAA6B;YACpC,IAAI,EAAE,CAAC,OAAoB,EAAE,IAAuB,EAAE,EAAE;gBACtD,OAAO,IAAI,UAAU,CACnB,CAAC,QAIA,EAAE,EAAE;oBACH,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;yBACtE,IAAI,CAAC,UAAU,CAAC,EAAE;wBACjB,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;wBAChC,IAAI,CAAC,KAAK,GAAG,mCAAmC,CAAC;wBACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACtB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;wBACpB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC,CAAC,CAAC;gBACP,CAAC,CACF,CAAC;YACJ,CAAC;SACF;QACD;YACE,KAAK,EAAE,iCAAiC;YACxC,IAAI,EAAE,CAAC,OAAoB,EAAE,EAAE;gBAC7B,OAAO,IAAI,UAAU,CACnB,CAAC,QAIA,EAAE,EAAE;oBACH,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;oBACvE,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;oBAE5D,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;oBAC9C,MAAM,cAAc,GAAG,GAAG,OAAO,CAAC,UAAU,aAAa,CAAC;oBAC1D,IAAI,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;wBAClC,YAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CACzC,YAAE,CAAC,MAAM,CAAC,GAAG,cAAc,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACzD,CAAC;oBACJ,CAAC;oBAED,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;oBAClE,MAAM,QAAQ,GAAG,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;oBAEpE,6BAA6B;oBAC7B,IAAI,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,QAAQ,EAAE,CAAC;wBAC7C,IAAI,gBAAgB,GAAG,YAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;wBAC9D,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CACzC,4DAA4D,EAC5D,0CAA0C,QAAQ,WAAW,CAC9D,CAAC;wBACF,YAAE,CAAC,aAAa,CAAC,aAAa,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;oBAC5D,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;oBAC5C,SAAS,CAAC,YAAY,gBAAgB,EAAE,CAAC;yBACtC,IAAI,CAAC,GAAG,EAAE;wBACT,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;oBAC1D,CAAC,CAAC;yBACD,IAAI,CAAC,GAAG,EAAE;wBACT,QAAQ,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;wBAC7D,OAAO,SAAS,CAAC,MAAM,OAAO,CAAC,UAAU,IAAI,gBAAgB,EAAE,CAAC,CAAC;oBACnE,CAAC,CAAC;yBACD,IAAI,CAAC,GAAG,EAAE;wBACT,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;wBAC9C,OAAO,mBAAmB,CACxB,QAAQ,EACR,GAAG,YAAY,iBAAiB,EAChC,gBAAgB,EAChB,QAAQ,CACT,CAAC;oBACJ,CAAC,CAAC;yBACD,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;yBAC/B,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;wBACpB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC,CAAC,CAAC;gBACP,CAAC,CACF,CAAC;YACJ,CAAC;SACF;QACD;YACE,KAAK,EAAE,+BAA+B;YACtC,IAAI,EAAE,KAAK,EAAE,OAAoB,EAAE,IAAuB,EAAE,EAAE;gBAC5D,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;gBAEvE,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;oBACxB,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBAClC,MAAM,OAAO,GAAa,EAAE,CAAC;oBAE7B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;wBAC1B,MAAM,WAAW,GACf,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,oBAAoB,WAAW,CAAC,CAAC,CAAC,GAAG,oBAAoB,MAAM,CAAC;wBACpF,MAAM,OAAO,GAAG,GAAG,YAAY,IAAI,WAAW,EAAE,CAAC;wBAEjD,MAAM,YAAY,GAA2B;4BAC3C,eAAe,EAAE,sBAAsB;4BACvC,OAAO,EAAE,OAAO;yBACjB,CAAC;wBAEF,IAAI,YAAY,EAAE,CAAC;4BACjB,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;wBACtE,CAAC;wBAED,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;wBACvC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;wBAC5D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;wBAEjC,wCAAwC;wBACxC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;4BAChB,gBAAgB,GAAG,OAAO,CAAC;wBAC7B,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,KAAK,GAAG,gEAAgE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpG,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,GAAG,GAAG,oBAAoB,MAAM,CAAC;oBAClD,MAAM,OAAO,GAAG,GAAG,YAAY,IAAI,WAAW,EAAE,CAAC;oBAEjD,MAAM,YAAY,GAA2B;wBAC3C,eAAe,EAAE,sBAAsB;wBACvC,OAAO,EAAE,OAAO;qBACjB,CAAC;oBAEF,IAAI,YAAY,EAAE,CAAC;wBACjB,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;oBACtE,CAAC;oBAED,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;oBACvC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,gBAAgB,GAAG,OAAO,CAAC;oBAC3B,IAAI,CAAC,KAAK,GAAG,+CAA+C,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACrF,CAAC;YACH,CAAC;SACF;KACF,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CAAC;IAEF,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,MAAM,MAAM,GAAG,IAAA,6BAAe,GAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,oCAAoC,gBAAgB,IAAI,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,0BAA0B;QAC1B,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,oCAAoC,gBAAgB,IAAI,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,yBAAyB;YACzB,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;YAC1F,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;YAE5F,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC;gBAChC,OAAO,EAAE,0CAA0C;gBACnD,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE;oBAC3C,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE;iBAC9C;aACF,CAAC,CAAC;YAEH,IAAI,YAAY,EAAE,CAAC;gBACjB,wCAAwC;gBACxC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC;oBAChC,OAAO,EAAE,+CAA+C;oBACxD,OAAO,EAAE;wBACP,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,EAAE;wBAC5C,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE;qBACpD;iBACF,CAAC,CAAC;gBAEH,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChF,MAAM,UAAU,GAAG,SAAS,SAAS,EAAE,CAAC;gBAExC,4CAA4C;gBAC5C,MAAM,QAAQ,GACZ,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,mCAAmC,CAAC;gBAEtF,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBAEnE,IAAI,CAAC;oBACH,IAAI,CAAC,gBAAgB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBAC1D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAClD,CAAC;oBAED,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,YAAY,CACb,CAAC;oBAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;wBACnD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;4BACjB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;4BAC1C,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;4BAEnE,6BAA6B;4BAC7B,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,gCAAgC;wBACnE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;wBAC3D,OAAO,CAAC,GAAG,CAAC,+CAA+C,gBAAgB,IAAI,CAAC,CAAC;oBACnF,CAAC;gBACH,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,mBAAoB,WAAqB,CAAC,OAAO,IAAI,CAAC,CAAC;oBACnE,OAAO,CAAC,GAAG,CAAC,+CAA+C,gBAAgB,IAAI,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,gBAAgB,IAAI,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAE5F,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,iBAAiB,gBAAgB,IAAI,CAAC,CAAC;IAEnD,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAE5F,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAExE,sFAAsF;IACtF,MAAM,OAAO,GACX,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,EAAE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEvF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;QAE5F,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAEjE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,oBAAoB,gBAAgB,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,oBAAoB,gBAAgB,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,6CAA6C,gBAAgB,KAAK,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;AAC5F,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":""}