@aiscene/aiserver 2.0.2 → 2.0.4

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 (41) hide show
  1. package/dist/api/device-api.d.ts.map +1 -1
  2. package/dist/api/device-api.js +2 -0
  3. package/dist/api/device-api.js.map +1 -1
  4. package/dist/core/types.d.ts +6 -0
  5. package/dist/core/types.d.ts.map +1 -1
  6. package/dist/debug/websocket-server.d.ts.map +1 -1
  7. package/dist/debug/websocket-server.js +35 -23
  8. package/dist/debug/websocket-server.js.map +1 -1
  9. package/dist/device/detector.d.ts +2 -0
  10. package/dist/device/detector.d.ts.map +1 -1
  11. package/dist/device/detector.js +70 -3
  12. package/dist/device/detector.js.map +1 -1
  13. package/dist/device/heartbeat.d.ts.map +1 -1
  14. package/dist/device/heartbeat.js +14 -2
  15. package/dist/device/heartbeat.js.map +1 -1
  16. package/dist/device/types.d.ts +3 -0
  17. package/dist/device/types.d.ts.map +1 -1
  18. package/dist/executor/ios-executor.d.ts.map +1 -1
  19. package/dist/executor/ios-executor.js +29 -15
  20. package/dist/executor/ios-executor.js.map +1 -1
  21. package/dist/executor/ios-wda-manager.d.ts +21 -0
  22. package/dist/executor/ios-wda-manager.d.ts.map +1 -0
  23. package/dist/executor/ios-wda-manager.js +333 -0
  24. package/dist/executor/ios-wda-manager.js.map +1 -0
  25. package/dist/scrcpy/preview-status.js +2 -2
  26. package/dist/scrcpy/preview-status.js.map +1 -1
  27. package/dist/scrcpy/server.d.ts +14 -0
  28. package/dist/scrcpy/server.d.ts.map +1 -1
  29. package/dist/scrcpy/server.js +472 -15
  30. package/dist/scrcpy/server.js.map +1 -1
  31. package/dist/storage/repositories/device-repo.d.ts.map +1 -1
  32. package/dist/storage/repositories/device-repo.js +1 -0
  33. package/dist/storage/repositories/device-repo.js.map +1 -1
  34. package/dist/task/guada-online-batch-poller.d.ts +10 -0
  35. package/dist/task/guada-online-batch-poller.d.ts.map +1 -1
  36. package/dist/task/guada-online-batch-poller.js +137 -8
  37. package/dist/task/guada-online-batch-poller.js.map +1 -1
  38. package/dist/task/scheduler.d.ts.map +1 -1
  39. package/dist/task/scheduler.js +11 -6
  40. package/dist/task/scheduler.js.map +1 -1
  41. package/package.json +1 -1
@@ -0,0 +1,333 @@
1
+ import { spawn } from 'child_process';
2
+ import fs from 'fs';
3
+ import net from 'net';
4
+ import os from 'os';
5
+ import path from 'path';
6
+ import { setTimeout as sleep } from 'timers/promises';
7
+ const DEFAULT_WDA_PORT = 8100;
8
+ const DEFAULT_LOCAL_WDA_PORT_END = 8199;
9
+ const DEFAULT_WDA_MJPEG_PORT = 9100;
10
+ const DEFAULT_LOCAL_WDA_MJPEG_PORT_END = 9199;
11
+ const DEFAULT_STARTUP_TIMEOUT_MS = 120_000;
12
+ const managers = new Map();
13
+ const allocatedLocalPorts = new Map();
14
+ const allocatedLocalMjpegPorts = new Map();
15
+ export async function ensureIOSWda(options = {}) {
16
+ const udid = await resolveIOSUdid(options.udid);
17
+ const host = options.host || 'localhost';
18
+ const port = options.port || await resolveLocalWdaPort(udid, host);
19
+ const mjpegPort = options.mjpegPort || await resolveLocalWdaMjpegPort(udid, host);
20
+ const key = `${udid}:${host}:${port}:${mjpegPort}`;
21
+ let manager = managers.get(key);
22
+ if (!manager) {
23
+ manager = new IOSWdaRuntime({ ...options, udid, host, port, mjpegPort });
24
+ managers.set(key, manager);
25
+ }
26
+ return manager.ensure();
27
+ }
28
+ async function resolveLocalWdaPort(udid, host) {
29
+ if (isLocalHost(host) && await isWdaReachable(host, DEFAULT_WDA_PORT)) {
30
+ return DEFAULT_WDA_PORT;
31
+ }
32
+ return allocateLocalWdaPort(udid, host);
33
+ }
34
+ async function resolveLocalWdaMjpegPort(udid, host) {
35
+ if (isLocalHost(host) && await isMjpegReachable(host, DEFAULT_WDA_MJPEG_PORT)) {
36
+ return DEFAULT_WDA_MJPEG_PORT;
37
+ }
38
+ return allocateLocalWdaMjpegPort(udid, host);
39
+ }
40
+ async function resolveIOSUdid(requested) {
41
+ const usbUdids = await listUsbIOSUdids();
42
+ if (requested && usbUdids.includes(requested))
43
+ return requested;
44
+ if (requested && usbUdids.length !== 1)
45
+ return requested;
46
+ if (usbUdids.length === 1)
47
+ return usbUdids[0];
48
+ if (requested)
49
+ return requested;
50
+ throw new Error('No iOS devices connected. Please connect an iPhone by USB first.');
51
+ }
52
+ async function listUsbIOSUdids() {
53
+ try {
54
+ const { stdout } = await execFileText(findExecutable('idevice_id'), ['-l'], 10_000);
55
+ return stdout
56
+ .split(/\r?\n/)
57
+ .map((line) => line.trim())
58
+ .filter(Boolean);
59
+ }
60
+ catch {
61
+ return [];
62
+ }
63
+ }
64
+ async function allocateLocalWdaPort(udid, host) {
65
+ const allocationKey = `${host}:${udid}`;
66
+ const existing = allocatedLocalPorts.get(allocationKey);
67
+ if (existing)
68
+ return existing;
69
+ for (let port = DEFAULT_WDA_PORT; port <= DEFAULT_LOCAL_WDA_PORT_END; port += 1) {
70
+ const usedByRuntime = Array.from(allocatedLocalPorts.values()).includes(port);
71
+ if (usedByRuntime)
72
+ continue;
73
+ if (await isTcpPortAvailable(host, port)) {
74
+ allocatedLocalPorts.set(allocationKey, port);
75
+ return port;
76
+ }
77
+ }
78
+ throw new Error(`No available local WDA port in range ${DEFAULT_WDA_PORT}-${DEFAULT_LOCAL_WDA_PORT_END}`);
79
+ }
80
+ async function allocateLocalWdaMjpegPort(udid, host) {
81
+ const allocationKey = `${host}:${udid}`;
82
+ const existing = allocatedLocalMjpegPorts.get(allocationKey);
83
+ if (existing)
84
+ return existing;
85
+ for (let port = DEFAULT_WDA_MJPEG_PORT; port <= DEFAULT_LOCAL_WDA_MJPEG_PORT_END; port += 1) {
86
+ const usedByRuntime = Array.from(allocatedLocalMjpegPorts.values()).includes(port);
87
+ if (usedByRuntime)
88
+ continue;
89
+ if (await isTcpPortAvailable(host, port)) {
90
+ allocatedLocalMjpegPorts.set(allocationKey, port);
91
+ return port;
92
+ }
93
+ }
94
+ throw new Error(`No available local WDA MJPEG port in range ${DEFAULT_WDA_MJPEG_PORT}-${DEFAULT_LOCAL_WDA_MJPEG_PORT_END}`);
95
+ }
96
+ class IOSWdaRuntime {
97
+ udid;
98
+ host;
99
+ port;
100
+ mjpegPort;
101
+ projectPath;
102
+ startupTimeoutMs;
103
+ useXcodebuild;
104
+ log;
105
+ logFile;
106
+ iproxyProcess;
107
+ mjpegIproxyProcess;
108
+ xcodebuildProcess;
109
+ ensurePromise;
110
+ constructor(options) {
111
+ this.udid = options.udid;
112
+ this.host = options.host;
113
+ this.port = options.port;
114
+ this.mjpegPort = options.mjpegPort;
115
+ this.projectPath = resolveWdaProjectPath(options.projectPath);
116
+ this.startupTimeoutMs = options.startupTimeoutMs || DEFAULT_STARTUP_TIMEOUT_MS;
117
+ this.useXcodebuild = options.useXcodebuild === true;
118
+ this.log = options.log || (() => undefined);
119
+ const logDir = path.join(process.cwd(), 'logs');
120
+ fs.mkdirSync(logDir, { recursive: true });
121
+ this.logFile = path.join(logDir, `wda-${this.udid.replace(/[^a-zA-Z0-9_-]/g, '_')}-${this.port}.log`);
122
+ }
123
+ ensure() {
124
+ this.ensurePromise ??= this.ensureInternal().finally(() => {
125
+ this.ensurePromise = undefined;
126
+ });
127
+ return this.ensurePromise;
128
+ }
129
+ async ensureInternal() {
130
+ if (await isWdaReachable(this.host, this.port)) {
131
+ this.log(`WDA already reachable: http://${this.host}:${this.port}/status`);
132
+ this.ensureMjpegProxy();
133
+ return this.connection();
134
+ }
135
+ if (!isLocalHost(this.host)) {
136
+ throw new Error(`WDA is not reachable at ${this.host}:${this.port}. AIServer can only auto-start local WDA.`);
137
+ }
138
+ this.log(`WDA not reachable, preparing local iOS port forwarding for device ${this.udid}`);
139
+ this.startIproxy();
140
+ this.ensureMjpegProxy();
141
+ if (this.useXcodebuild) {
142
+ this.startXcodebuild();
143
+ }
144
+ else {
145
+ this.log('WDA xcodebuild auto-start disabled; waiting for an existing WebDriverAgent on device port 8100');
146
+ }
147
+ await this.waitForWda();
148
+ return this.connection();
149
+ }
150
+ connection() {
151
+ return {
152
+ udid: this.udid,
153
+ host: this.host,
154
+ port: this.port,
155
+ mjpegPort: this.mjpegPort,
156
+ logFile: this.logFile,
157
+ };
158
+ }
159
+ startIproxy() {
160
+ if (this.iproxyProcess && !this.iproxyProcess.killed)
161
+ return;
162
+ this.iproxyProcess = this.startIproxyProcess(this.port, DEFAULT_WDA_PORT, 'iproxy');
163
+ }
164
+ ensureMjpegProxy() {
165
+ if (!isLocalHost(this.host))
166
+ return;
167
+ if (this.mjpegIproxyProcess && !this.mjpegIproxyProcess.killed)
168
+ return;
169
+ void isMjpegReachable(this.host, this.mjpegPort).then((reachable) => {
170
+ if (reachable || (this.mjpegIproxyProcess && !this.mjpegIproxyProcess.killed)) {
171
+ return;
172
+ }
173
+ this.mjpegIproxyProcess = this.startIproxyProcess(this.mjpegPort, DEFAULT_WDA_MJPEG_PORT, 'mjpeg-iproxy');
174
+ });
175
+ }
176
+ startIproxyProcess(localPort, devicePort, label) {
177
+ const iproxy = findExecutable('iproxy');
178
+ this.log(`Starting ${label} for iOS device ${this.udid}: localhost:${localPort}->device:${devicePort}`);
179
+ const child = spawn(iproxy, ['-u', this.udid, `${localPort}:${devicePort}`], {
180
+ stdio: ['pipe', 'pipe', 'pipe'],
181
+ });
182
+ child.stdin.end();
183
+ this.pipeProcessLogs(child, label);
184
+ return child;
185
+ }
186
+ startXcodebuild() {
187
+ if (this.xcodebuildProcess && !this.xcodebuildProcess.killed)
188
+ return;
189
+ if (!fs.existsSync(this.projectPath)) {
190
+ throw new Error(`WebDriverAgent project not found: ${this.projectPath}`);
191
+ }
192
+ const args = [
193
+ '-project',
194
+ this.projectPath,
195
+ '-scheme',
196
+ 'WebDriverAgentRunner',
197
+ '-destination',
198
+ `id=${this.udid}`,
199
+ 'test',
200
+ ];
201
+ this.log(`Starting WebDriverAgentRunner by xcodebuild, log: ${this.logFile}`);
202
+ const child = spawn('xcodebuild', args, {
203
+ stdio: ['pipe', 'pipe', 'pipe'],
204
+ env: {
205
+ ...process.env,
206
+ IDEPackageSupportUseBuiltinSCM: 'YES',
207
+ },
208
+ });
209
+ child.stdin.end();
210
+ this.xcodebuildProcess = child;
211
+ this.pipeProcessLogs(child, 'xcodebuild');
212
+ }
213
+ pipeProcessLogs(child, label) {
214
+ const stream = fs.createWriteStream(this.logFile, { flags: 'a' });
215
+ stream.write(`\n[${new Date().toISOString()}] ${label} started pid=${child.pid}\n`);
216
+ child.stdout.on('data', (chunk) => stream.write(`[${label}] ${chunk.toString()}`));
217
+ child.stderr.on('data', (chunk) => stream.write(`[${label}:err] ${chunk.toString()}`));
218
+ child.on('exit', (code, signal) => {
219
+ stream.write(`[${new Date().toISOString()}] ${label} exited code=${code ?? '-'} signal=${signal ?? '-'}\n`);
220
+ stream.end();
221
+ if (label === 'xcodebuild')
222
+ this.xcodebuildProcess = undefined;
223
+ if (label === 'iproxy')
224
+ this.iproxyProcess = undefined;
225
+ if (label === 'mjpeg-iproxy')
226
+ this.mjpegIproxyProcess = undefined;
227
+ });
228
+ child.on('error', (error) => {
229
+ stream.write(`[${new Date().toISOString()}] ${label} error ${error.message}\n`);
230
+ this.log(`${label} failed: ${error.message}`);
231
+ });
232
+ }
233
+ async waitForWda() {
234
+ const startedAt = Date.now();
235
+ while (Date.now() - startedAt < this.startupTimeoutMs) {
236
+ if (await isWdaReachable(this.host, this.port)) {
237
+ this.log(`WDA reachable: http://${this.host}:${this.port}/status`);
238
+ return;
239
+ }
240
+ await sleep(1000);
241
+ }
242
+ throw new Error(`WDA did not become reachable within ${this.startupTimeoutMs}ms. See log: ${this.logFile}`);
243
+ }
244
+ }
245
+ async function isWdaReachable(host, port) {
246
+ const controller = new AbortController();
247
+ const timer = setTimeout(() => controller.abort(), 2000);
248
+ try {
249
+ const response = await fetch(`http://${host}:${port}/status`, { signal: controller.signal });
250
+ if (!response.ok)
251
+ return false;
252
+ const body = await response.text();
253
+ return body.includes('sessionId') || body.includes('WebDriverAgent') || body.includes('"ready"');
254
+ }
255
+ catch {
256
+ return false;
257
+ }
258
+ finally {
259
+ clearTimeout(timer);
260
+ }
261
+ }
262
+ async function isMjpegReachable(host, port) {
263
+ const controller = new AbortController();
264
+ const timer = setTimeout(() => controller.abort(), 1000);
265
+ try {
266
+ const response = await fetch(`http://${host}:${port}`, { signal: controller.signal });
267
+ await response.body?.cancel();
268
+ return response.ok && String(response.headers.get('content-type') || '').includes('multipart');
269
+ }
270
+ catch {
271
+ return false;
272
+ }
273
+ finally {
274
+ clearTimeout(timer);
275
+ }
276
+ }
277
+ function isTcpPortAvailable(host, port) {
278
+ return new Promise((resolve) => {
279
+ const server = net.createServer();
280
+ server.once('error', () => resolve(false));
281
+ server.once('listening', () => {
282
+ server.close(() => resolve(true));
283
+ });
284
+ server.listen(port, host);
285
+ });
286
+ }
287
+ function resolveWdaProjectPath(projectPath) {
288
+ const raw = projectPath ||
289
+ process.env.APPIUM_WDA_PROJECT_PATH ||
290
+ path.join(os.homedir(), '.appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj');
291
+ return raw.endsWith('.xcodeproj') ? raw : path.join(raw, 'WebDriverAgent.xcodeproj');
292
+ }
293
+ function isLocalHost(host) {
294
+ return host === 'localhost' || host === '127.0.0.1' || host === '::1';
295
+ }
296
+ function findExecutable(name) {
297
+ const candidates = [
298
+ name,
299
+ `/opt/homebrew/bin/${name}`,
300
+ `/usr/local/bin/${name}`,
301
+ `/usr/bin/${name}`,
302
+ ];
303
+ return candidates.find((candidate) => candidate === name || fs.existsSync(candidate)) || name;
304
+ }
305
+ function execFileText(file, args, timeout) {
306
+ return new Promise((resolve, reject) => {
307
+ const child = spawn(file, args, { stdio: ['ignore', 'pipe', 'pipe'] });
308
+ let stdout = '';
309
+ let stderr = '';
310
+ const timer = setTimeout(() => {
311
+ child.kill('SIGTERM');
312
+ reject(new Error(`${file} ${args.join(' ')} timed out`));
313
+ }, timeout);
314
+ child.stdout.on('data', (chunk) => {
315
+ stdout += chunk.toString();
316
+ });
317
+ child.stderr.on('data', (chunk) => {
318
+ stderr += chunk.toString();
319
+ });
320
+ child.on('error', (error) => {
321
+ clearTimeout(timer);
322
+ reject(error);
323
+ });
324
+ child.on('exit', (code) => {
325
+ clearTimeout(timer);
326
+ if (code === 0)
327
+ resolve({ stdout, stderr });
328
+ else
329
+ reject(new Error(`${file} exited with code ${code ?? '-'}: ${stderr}`));
330
+ });
331
+ });
332
+ }
333
+ //# sourceMappingURL=ios-wda-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios-wda-manager.js","sourceRoot":"","sources":["../../src/executor/ios-wda-manager.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,11 @@
7
7
  export function getScrcpyPreviewStatusMessage(phase) {
8
8
  switch (phase) {
9
9
  case 'connecting-device':
10
- return 'Preparing Android device connection…';
10
+ return 'Preparing device connection…';
11
11
  case 'pushing-server':
12
12
  return 'Uploading scrcpy runtime to device…';
13
13
  case 'starting-service':
14
- return 'Starting scrcpy service…';
14
+ return 'Starting projection service…';
15
15
  case 'waiting-for-video':
16
16
  return 'Waiting for first video frame…';
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"preview-status.js","sourceRoot":"","sources":["../../src/scrcpy/preview-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,MAAM,UAAU,6BAA6B,CAC3C,KAAyB;IAEzB,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,mBAAmB;YACtB,OAAO,sCAAsC,CAAC;QAChD,KAAK,gBAAgB;YACnB,OAAO,qCAAqC,CAAC;QAC/C,KAAK,kBAAkB;YACrB,OAAO,0BAA0B,CAAC;QACpC,KAAK,mBAAmB;YACtB,OAAO,gCAAgC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAAyB;IAEzB,OAAO;QACL,KAAK;QACL,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;KAC9C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"preview-status.js","sourceRoot":"","sources":["../../src/scrcpy/preview-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,MAAM,UAAU,6BAA6B,CAC3C,KAAyB;IAEzB,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,mBAAmB;YACtB,OAAO,8BAA8B,CAAC;QACxC,KAAK,gBAAgB;YACnB,OAAO,qCAAqC,CAAC;QAC/C,KAAK,kBAAkB;YACrB,OAAO,8BAA8B,CAAC;QACxC,KAAK,mBAAmB;YACtB,OAAO,gCAAgC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAAyB;IAEzB,OAAO;QACL,KAAK;QACL,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;KAC9C,CAAC;AACJ,CAAC"}
@@ -57,6 +57,7 @@ export interface ScrcpyListedDevice {
57
57
  id: string;
58
58
  name: string;
59
59
  status: string;
60
+ platform?: 'android' | 'ios';
60
61
  }
61
62
  export declare class ScrcpyServer {
62
63
  private httpServer;
@@ -80,6 +81,7 @@ export declare class ScrcpyServer {
80
81
  private handleHttpRequest;
81
82
  private getAdbClient;
82
83
  private loadDevicesListFromAdb;
84
+ private loadDevicesList;
83
85
  private getDevicesList;
84
86
  private selectAvailableDeviceId;
85
87
  private isSessionOpen;
@@ -97,6 +99,18 @@ export declare class ScrcpyServer {
97
99
  private sendDevicesListTo;
98
100
  /** 释放 session 持有的 scrcpy 资源(reader + client),用于断开/切换 */
99
101
  private releaseSession;
102
+ private connectIOSDeviceForSession;
103
+ private sendIOSImageFrame;
104
+ private createIOSWdaSession;
105
+ private configureIOSWdaSession;
106
+ private getIOSWdaWindowSize;
107
+ private extractIOSWdaSessionId;
108
+ private iosWdaRequest;
109
+ private deleteIOSWdaSession;
110
+ private startIOSWdaScreenshotLoop;
111
+ private startIOSNativeMjpegStream;
112
+ private captureIOSWdaScreenshot;
113
+ private readPngSize;
100
114
  private connectDeviceForSession;
101
115
  private attachSocketHandlers;
102
116
  private startDeviceMonitoring;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/scrcpy/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAsBxD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAmGD,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,kBAAkB,CAA8C;IACxE,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,wBAAwB,CAAkC;IAClE,iCAAiC;IACjC,OAAO,CAAC,QAAQ,CAAiD;gBAErD,MAAM,EAAE,YAAY;YAoBlB,iBAAiB;YA6CjB,YAAY;YA2BZ,sBAAsB;YAuBtB,cAAc;IA4B5B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,2BAA2B;YAOrB,MAAM;YAoCN,gBAAgB;YA2BhB,WAAW;IAwEzB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,4BAA4B;YA0BtB,0BAA0B;YAoB1B,kBAAkB;IAShC,OAAO,CAAC,sBAAsB;YA2BhB,iBAAiB;IAoB/B,wDAAwD;YAC1C,cAAc;YAqBd,uBAAuB;IAyOrC,OAAO,CAAC,oBAAoB;IA0iB5B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,YAAY;YAuBN,sBAAsB;IAgC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;IAIV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAqC7B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/scrcpy/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAkBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAwBxD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;CAC9B;AA6HD,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,kBAAkB,CAA8C;IACxE,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,wBAAwB,CAAkC;IAClE,iCAAiC;IACjC,OAAO,CAAC,QAAQ,CAAiD;gBAErD,MAAM,EAAE,YAAY;YAoBlB,iBAAiB;YA6CjB,YAAY;YA2BZ,sBAAsB;YAwBtB,eAAe;YAiBf,cAAc;IA4B5B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,2BAA2B;YAOrB,MAAM;YAoCN,gBAAgB;YA2BhB,WAAW;IAwEzB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,4BAA4B;YA0BtB,0BAA0B;YAoB1B,kBAAkB;IAShC,OAAO,CAAC,sBAAsB;YA6BhB,iBAAiB;IAoB/B,wDAAwD;YAC1C,cAAc;YAiCd,0BAA0B;IAmExC,OAAO,CAAC,iBAAiB;YAIX,mBAAmB;YAoCnB,sBAAsB;YActB,mBAAmB;IAejC,OAAO,CAAC,sBAAsB;YAUhB,aAAa;YA2Bb,mBAAmB;YAcnB,yBAAyB;IA+BvC,OAAO,CAAC,yBAAyB;YA0GnB,uBAAuB;IAmBrC,OAAO,CAAC,WAAW;YAaL,uBAAuB;IAiPrC,OAAO,CAAC,oBAAoB;IAmsB5B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,YAAY;YAuBN,sBAAsB;IAgC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;IAIV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAqC7B"}