@ddqd/droid-mcp 2.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.
package/dist/adb.js ADDED
@@ -0,0 +1,579 @@
1
+ import { exec, spawn } from "child_process";
2
+ import { promisify } from "util";
3
+ import { readFile, mkdir, writeFile, readdir, stat, rm } from "fs/promises";
4
+ import { join, resolve } from "path";
5
+ import sharp from "sharp";
6
+ const execAsync = promisify(exec);
7
+ // Debug logging utility
8
+ const DEBUG = process.env.DROID_MCP_DEBUG === "true" || process.env.DEBUG === "1";
9
+ function debugLog(message, data) {
10
+ if (DEBUG) {
11
+ const timestamp = new Date().toISOString();
12
+ const dataStr = data ? JSON.stringify(data, null, 2) : "";
13
+ console.error(`[${timestamp}] [ADB DEBUG] ${message}${dataStr ? "\n" + dataStr : ""}`);
14
+ }
15
+ }
16
+ export class AdbError extends Error {
17
+ code;
18
+ stderr;
19
+ constructor(message, code, stderr) {
20
+ super(message);
21
+ this.code = code;
22
+ this.stderr = stderr;
23
+ this.name = "AdbError";
24
+ }
25
+ }
26
+ /**
27
+ * Execute an ADB command
28
+ * @param command - Array of command arguments (e.g., ["logcat", "-d", "-t", "200"])
29
+ * @returns Promise with stdout and stderr
30
+ * @throws AdbError if command fails
31
+ */
32
+ export async function execAdb(command) {
33
+ const fullCommand = `adb ${command.join(" ")}`;
34
+ debugLog("Executing ADB command", { command: fullCommand });
35
+ try {
36
+ const startTime = Date.now();
37
+ const { stdout, stderr } = await execAsync(fullCommand, {
38
+ maxBuffer: 10 * 1024 * 1024, // 10MB buffer for large log outputs
39
+ });
40
+ const duration = Date.now() - startTime;
41
+ debugLog("ADB command completed", {
42
+ command: fullCommand,
43
+ duration: `${duration}ms`,
44
+ stdoutLength: stdout?.length || 0,
45
+ stderrLength: stderr?.length || 0
46
+ });
47
+ return { stdout, stderr };
48
+ }
49
+ catch (error) {
50
+ debugLog("ADB command failed", {
51
+ command: fullCommand,
52
+ error: error instanceof Error ? error.message : String(error),
53
+ errorCode: error && typeof error === "object" && "code" in error ? error.code : undefined
54
+ });
55
+ if (error && typeof error === "object" && "code" in error) {
56
+ const execError = error;
57
+ throw new AdbError(`ADB command failed: ${fullCommand}`, execError.code, execError.stderr || "");
58
+ }
59
+ throw new AdbError(`ADB command failed: ${fullCommand}`, null, error instanceof Error ? error.message : String(error));
60
+ }
61
+ }
62
+ /**
63
+ * Получает PID процесса по package ID
64
+ * @param packageId - Package ID приложения (например, "com.example.app")
65
+ * @returns PID процесса или null, если приложение не запущено
66
+ */
67
+ export async function getPidForPackage(packageId) {
68
+ try {
69
+ const { stdout } = await execAdb(["shell", "pidof", "-s", packageId]);
70
+ const pid = stdout.trim();
71
+ return pid && pid.length > 0 ? pid : null;
72
+ }
73
+ catch (error) {
74
+ // Если пакет не найден или не запущен, возвращаем null
75
+ return null;
76
+ }
77
+ }
78
+ /**
79
+ * Получает PID для списка package ID
80
+ * @param packageIds - Массив package ID
81
+ * @returns Массив PID для запущенных процессов (только те, что найдены)
82
+ */
83
+ export async function getPidsForPackages(packageIds) {
84
+ const pids = [];
85
+ for (const packageId of packageIds) {
86
+ const pid = await getPidForPackage(packageId);
87
+ if (pid) {
88
+ pids.push(pid);
89
+ }
90
+ }
91
+ return pids;
92
+ }
93
+ /**
94
+ * Получает список установленных сторонних приложений (User installed)
95
+ * @returns Массив package ID установленных приложений
96
+ */
97
+ export async function listThirdPartyPackages() {
98
+ try {
99
+ const { stdout } = await execAdb(["shell", "pm", "list", "packages", "-3"]);
100
+ return stdout
101
+ .split(/\r?\n/)
102
+ .filter((line) => line.trim().startsWith("package:"))
103
+ .map((line) => line.trim().replace("package:", ""));
104
+ }
105
+ catch (error) {
106
+ return [];
107
+ }
108
+ }
109
+ /**
110
+ * Пытается найти applicationId в build.gradle файлах проекта
111
+ * @param rootDir - Корневая директория проекта (по умолчанию process.cwd())
112
+ * @returns Найденный applicationId или null
113
+ */
114
+ export async function scanGradleForPackageId(rootDir = process.cwd()) {
115
+ // Проверяем список возможных путей
116
+ const candidates = [
117
+ "app/build.gradle",
118
+ "app/build.gradle.kts",
119
+ "build.gradle",
120
+ "build.gradle.kts"
121
+ ];
122
+ for (const relPath of candidates) {
123
+ try {
124
+ const content = await readFile(join(rootDir, relPath), "utf-8");
125
+ // Ищем applicationId "com.example" или applicationId = "com.example"
126
+ const match = content.match(/applicationId\s+[=]?\s*["']([^"']+)["']/);
127
+ if (match && match[1]) {
128
+ return match[1];
129
+ }
130
+ }
131
+ catch (e) {
132
+ // Файл не найден, идем дальше
133
+ }
134
+ }
135
+ return null;
136
+ }
137
+ /**
138
+ * Запускает logcat и слушает вывод до появления stopPattern или истечения таймаута
139
+ * @param options - Параметры захвата логов
140
+ * @returns Promise с накопленными логами
141
+ * @throws AdbError если команда не может быть выполнена
142
+ */
143
+ export function captureLogcatUntil(options) {
144
+ const { stopPattern, timeoutMs, clearBuffer, tag, priority, buffer, pids } = options;
145
+ debugLog("captureLogcatUntil started", { stopPattern, timeoutMs, clearBuffer, tag, priority, buffer, pids });
146
+ // Валидация regex pattern
147
+ let regex;
148
+ try {
149
+ regex = new RegExp(stopPattern, "i"); // Case-insensitive
150
+ debugLog("Regex pattern validated", { stopPattern });
151
+ }
152
+ catch (error) {
153
+ debugLog("Invalid regex pattern", { stopPattern, error: error instanceof Error ? error.message : String(error) });
154
+ throw new AdbError(`Invalid regex pattern: ${stopPattern}`, null, error instanceof Error ? error.message : String(error));
155
+ }
156
+ return new Promise(async (resolve, reject) => {
157
+ // Очистка буфера перед началом, если требуется
158
+ if (clearBuffer) {
159
+ debugLog("Clearing logcat buffer");
160
+ try {
161
+ await execAdb(["logcat", "-c"]);
162
+ debugLog("Logcat buffer cleared");
163
+ }
164
+ catch (error) {
165
+ debugLog("Failed to clear logcat buffer", { error: error instanceof Error ? error.message : String(error) });
166
+ reject(new AdbError("Failed to clear logcat buffer", null, error instanceof AdbError ? error.stderr : String(error)));
167
+ return;
168
+ }
169
+ }
170
+ // Построение команды adb logcat
171
+ const command = ["logcat"];
172
+ // Формат вывода
173
+ command.push("-v", "threadtime");
174
+ // Выбор буфера
175
+ if (buffer) {
176
+ command.push("-b", buffer);
177
+ }
178
+ // Фильтры по PID (множественные --pid поддерживаются)
179
+ if (pids && pids.length > 0) {
180
+ for (const pid of pids) {
181
+ command.push(`--pid=${pid}`);
182
+ }
183
+ }
184
+ // Фильтры по tag и priority
185
+ if (tag && priority) {
186
+ command.push(`${tag}:${priority}`);
187
+ }
188
+ else if (tag) {
189
+ command.push(`${tag}:*`);
190
+ }
191
+ else if (priority) {
192
+ command.push(`*:${priority}`);
193
+ }
194
+ debugLog("Spawning adb logcat process", { command: `adb ${command.join(" ")}` });
195
+ // Запуск процесса
196
+ const child = spawn("adb", command);
197
+ let logBuffer = "";
198
+ const MAX_BUFFER_SIZE = 10 * 1024 * 1024; // 10MB limit
199
+ // Таймаут безопасности
200
+ const timeout = setTimeout(() => {
201
+ debugLog("Capture timeout reached", { timeoutMs, stopPattern, bufferSize: logBuffer.length });
202
+ cleanup();
203
+ resolve(logBuffer +
204
+ `\n\n[MCP] Timeout reached (${timeoutMs}ms). Stop pattern "${stopPattern}" not found.`);
205
+ }, timeoutMs);
206
+ function cleanup() {
207
+ clearTimeout(timeout);
208
+ if (child && !child.killed) {
209
+ child.kill();
210
+ }
211
+ }
212
+ // Обработка stdout
213
+ child.stdout.on("data", (data) => {
214
+ const chunk = data.toString("utf8");
215
+ // Проверка размера буфера
216
+ if (logBuffer.length + chunk.length > MAX_BUFFER_SIZE) {
217
+ debugLog("Buffer size limit reached", { bufferSize: logBuffer.length, maxSize: MAX_BUFFER_SIZE });
218
+ cleanup();
219
+ resolve(logBuffer +
220
+ `\n\n[MCP] Buffer size limit (10MB) reached. Stopping capture.`);
221
+ return;
222
+ }
223
+ logBuffer += chunk;
224
+ debugLog("Received log chunk", { chunkLength: chunk.length, totalBufferSize: logBuffer.length });
225
+ // Проверка на стоп-слово
226
+ if (regex.test(chunk)) {
227
+ debugLog("Stop pattern matched", { stopPattern, matchedChunk: chunk.substring(0, 200) });
228
+ cleanup();
229
+ resolve(logBuffer);
230
+ }
231
+ });
232
+ // Обработка stderr
233
+ child.stderr.on("data", (data) => {
234
+ const errorChunk = data.toString("utf8");
235
+ // Логируем ошибки adb, но не прерываем процесс
236
+ // (adb может писать в stderr даже при нормальной работе)
237
+ if (errorChunk.includes("error") || errorChunk.includes("Error")) {
238
+ logBuffer += `\n[ADB stderr]: ${errorChunk}`;
239
+ }
240
+ });
241
+ // Обработка ошибок запуска процесса
242
+ child.on("error", (err) => {
243
+ cleanup();
244
+ reject(new AdbError(`Failed to spawn adb process: ${err.message}`, null, err.message));
245
+ });
246
+ // Обработка завершения процесса (неожиданное)
247
+ child.on("exit", (code, signal) => {
248
+ cleanup();
249
+ if (code !== null && code !== 0) {
250
+ reject(new AdbError(`adb logcat process exited with code ${code}`, code, `Process terminated with signal: ${signal || "unknown"}`));
251
+ }
252
+ else {
253
+ // Процесс завершился нормально (редкий случай)
254
+ resolve(logBuffer + `\n\n[MCP] Process exited normally before stop pattern was found.`);
255
+ }
256
+ });
257
+ });
258
+ }
259
+ /**
260
+ * Выполняет uiautomator dump и возвращает XML
261
+ * @returns XML строка с иерархией View
262
+ * @throws AdbError если команда не может быть выполнена
263
+ */
264
+ export async function dumpViewHierarchy() {
265
+ debugLog("dumpViewHierarchy started");
266
+ // Сначала дампим на устройство (надежнее, чем exec-out для больших деревьев)
267
+ const dumpPath = "/sdcard/window_dump.xml";
268
+ try {
269
+ // Выполняем dump на устройстве
270
+ await execAdb(["shell", "uiautomator", "dump", dumpPath]);
271
+ debugLog("uiautomator dump completed on device");
272
+ // Читаем результат через cat
273
+ const result = await execAdb(["shell", "cat", dumpPath]);
274
+ debugLog("dumpViewHierarchy completed", { outputLength: result.stdout?.length || 0 });
275
+ return result.stdout;
276
+ }
277
+ catch (error) {
278
+ debugLog("dumpViewHierarchy failed", { error: error instanceof Error ? error.message : String(error) });
279
+ if (error instanceof AdbError) {
280
+ throw error;
281
+ }
282
+ throw new AdbError("Failed to dump view hierarchy", null, error instanceof Error ? error.message : String(error));
283
+ }
284
+ }
285
+ /**
286
+ * Простой парсер XML для uiautomator dump
287
+ * Парсит XML в дерево узлов без использования внешних библиотек
288
+ */
289
+ function parseSimpleXml(xml) {
290
+ debugLog("parseSimpleXml started", { xmlLength: xml.length });
291
+ // Удаляем XML декларацию и комментарии
292
+ let cleaned = xml.replace(/<\?xml[^?]*\?>/g, "");
293
+ cleaned = cleaned.replace(/<!--[\s\S]*?-->/g, "");
294
+ // Находим корневой элемент
295
+ const rootMatch = cleaned.match(/<hierarchy[^>]*>([\s\S]*)<\/hierarchy>/);
296
+ if (!rootMatch) {
297
+ throw new AdbError("Invalid uiautomator dump XML: missing root hierarchy element", null, "");
298
+ }
299
+ const rootContent = rootMatch[1];
300
+ function parseNode(content, depth = 0) {
301
+ const nodes = [];
302
+ let pos = 0;
303
+ while (pos < content.length) {
304
+ // Пропускаем пробелы и переводы строк
305
+ const wsMatch = content.slice(pos).match(/^\s*/);
306
+ if (wsMatch) {
307
+ pos += wsMatch[0].length;
308
+ }
309
+ if (pos >= content.length) {
310
+ break;
311
+ }
312
+ // Ищем открывающий тег
313
+ const openTagMatch = content.slice(pos).match(/^<(\w+)([^>]*)>/);
314
+ if (!openTagMatch) {
315
+ // Если тег не найден, пропускаем остаток
316
+ break;
317
+ }
318
+ const fullMatch = openTagMatch[0];
319
+ const tagName = openTagMatch[1];
320
+ const attrsStr = openTagMatch[2];
321
+ const tagStart = pos;
322
+ pos += fullMatch.length;
323
+ // Парсим атрибуты
324
+ const attributes = {};
325
+ const attrRegex = /(\w+)=["']([^"']*)["']/g;
326
+ let attrMatch;
327
+ while ((attrMatch = attrRegex.exec(attrsStr)) !== null) {
328
+ attributes[attrMatch[1]] = attrMatch[2];
329
+ }
330
+ // Находим закрывающий тег
331
+ const closeTag = `</${tagName}>`;
332
+ const closeTagPos = content.indexOf(closeTag, pos);
333
+ if (closeTagPos === -1) {
334
+ // Самозакрывающийся тег или ошибка
335
+ nodes.push({ name: tagName, attributes, children: [] });
336
+ continue;
337
+ }
338
+ // Извлекаем содержимое между тегами
339
+ const innerContent = content.slice(pos, closeTagPos);
340
+ // Рекурсивно парсим дочерние узлы
341
+ const children = parseNode(innerContent, depth + 1);
342
+ nodes.push({ name: tagName, attributes, children });
343
+ pos = closeTagPos + closeTag.length;
344
+ }
345
+ return nodes;
346
+ }
347
+ const parsedRoots = parseNode(rootContent);
348
+ if (parsedRoots.length === 0) {
349
+ throw new AdbError("Invalid uiautomator dump XML: empty hierarchy", null, "");
350
+ }
351
+ // Возвращаем первый корневой узел
352
+ debugLog("parseSimpleXml completed", { rootCount: parsedRoots.length });
353
+ return parsedRoots[0];
354
+ }
355
+ /**
356
+ * Парсит XML иерархии View в оптимизированное для AI дерево
357
+ * @param xml - XML строка от uiautomator dump
358
+ * @param options - Опции парсинга
359
+ * @returns Оптимизированное дерево View
360
+ */
361
+ export function parseViewHierarchyXml(xml, options) {
362
+ debugLog("parseViewHierarchyXml started", { includeInvisible: options.includeInvisible, compact: options.compact });
363
+ const rootNode = parseSimpleXml(xml);
364
+ function shouldKeepNode(node) {
365
+ const attrs = node.attributes;
366
+ // В компактном режиме фильтруем пустые контейнеры
367
+ if (options.compact && !options.includeInvisible) {
368
+ return !!(attrs.text ||
369
+ attrs["content-desc"] ||
370
+ attrs["resource-id"] ||
371
+ attrs.clickable === "true");
372
+ }
373
+ return true;
374
+ }
375
+ function parseNode(node) {
376
+ if (!shouldKeepNode(node)) {
377
+ // В компактном режиме проверяем, есть ли полезные дочерние узлы
378
+ if (options.compact) {
379
+ for (const child of node.children) {
380
+ if (shouldKeepNode(child)) {
381
+ // Есть полезный дочерний элемент, сохраняем контейнер
382
+ break;
383
+ }
384
+ }
385
+ // Если все потомки пустые, пропускаем этот узел
386
+ let hasUsefulChild = false;
387
+ for (const child of node.children) {
388
+ if (parseNode(child)) {
389
+ hasUsefulChild = true;
390
+ break;
391
+ }
392
+ }
393
+ if (!hasUsefulChild) {
394
+ return null;
395
+ }
396
+ }
397
+ else {
398
+ // В non-compact режиме сохраняем всё
399
+ }
400
+ }
401
+ const attrs = node.attributes;
402
+ // Берём имя класса из атрибута или из имени узла
403
+ const fullClassName = attrs.class || node.name || "View";
404
+ const result = {
405
+ class: fullClassName.split(".").pop() || "View",
406
+ };
407
+ // Добавляем bounds (полезно для понимания позиций)
408
+ if (attrs.bounds) {
409
+ result.bounds = attrs.bounds;
410
+ }
411
+ // Добавляем resource-id (только имя, без пакета)
412
+ if (attrs["resource-id"]) {
413
+ const idParts = attrs["resource-id"].split("/");
414
+ result.id = idParts[idParts.length - 1];
415
+ }
416
+ // Добавляем текст
417
+ if (attrs.text) {
418
+ result.text = attrs.text;
419
+ }
420
+ // Добавляем content-desc
421
+ if (attrs["content-desc"]) {
422
+ result.desc = attrs["content-desc"];
423
+ }
424
+ // Добавляем clickable флаг
425
+ if (attrs.clickable === "true") {
426
+ result.clickable = true;
427
+ }
428
+ // Рекурсивно обрабатываем дочерние узлы
429
+ const children = [];
430
+ for (const child of node.children) {
431
+ const parsedChild = parseNode(child);
432
+ if (parsedChild) {
433
+ children.push(parsedChild);
434
+ }
435
+ }
436
+ if (children.length > 0) {
437
+ result.children = children;
438
+ }
439
+ return result;
440
+ }
441
+ const parsed = parseNode(rootNode);
442
+ if (!parsed) {
443
+ // Если всё отфильтровано, возвращаем минимальный узел
444
+ return {
445
+ class: "Root",
446
+ children: []
447
+ };
448
+ }
449
+ debugLog("parseViewHierarchyXml completed");
450
+ return parsed;
451
+ }
452
+ // ============================================================================
453
+ // Screenshot Capture
454
+ // ============================================================================
455
+ let OUTPUT_DIR = null;
456
+ export function setOutputDir(dir) {
457
+ OUTPUT_DIR = dir;
458
+ }
459
+ export function getOutputDir() {
460
+ if (OUTPUT_DIR) {
461
+ return OUTPUT_DIR;
462
+ }
463
+ // Дефолт: .droid-mcp/screenshots внутри проекта
464
+ const defaultDir = join(process.cwd(), ".droid-mcp", "screenshots");
465
+ // Логируем warning если используется дефолт
466
+ console.error(`[MCP] Warning: No output directory configured. Using default: ${defaultDir}`);
467
+ console.error(`[MCP] To set output directory, pass --output-dir argument or DROID_MCP_OUTPUT_DIR env var`);
468
+ return defaultDir;
469
+ }
470
+ async function ensureOutputDir() {
471
+ const dir = getOutputDir();
472
+ await mkdir(dir, { recursive: true });
473
+ return dir;
474
+ }
475
+ async function cleanupOldScreenshots() {
476
+ try {
477
+ const dir = getOutputDir();
478
+ const files = await readdir(dir).catch(() => []);
479
+ const now = Date.now();
480
+ const maxAge = 60 * 60 * 1000; // 1 час
481
+ for (const file of files) {
482
+ if (!file.startsWith("screenshot_"))
483
+ continue;
484
+ const filePath = join(dir, file);
485
+ const stats = await stat(filePath).catch(() => null);
486
+ if (!stats)
487
+ continue;
488
+ if (now - stats.mtimeMs > maxAge) {
489
+ await rm(filePath);
490
+ debugLog("Cleaned up old screenshot", { file });
491
+ }
492
+ }
493
+ }
494
+ catch (error) {
495
+ // Ignore cleanup errors
496
+ debugLog("Cleanup failed (non-critical)", { error });
497
+ }
498
+ }
499
+ export async function captureScreenshot(options) {
500
+ debugLog("captureScreenshot started", { format: options.format, scale: options.scale, output: options.output });
501
+ try {
502
+ // 1. Получаем raw PNG через ADB
503
+ const pngBuffer = await captureScreenshotRaw();
504
+ debugLog("Raw screenshot captured", { size: pngBuffer.length });
505
+ // 2. Получаем метаданные и масштабируем
506
+ const metadata = await sharp(pngBuffer).metadata();
507
+ const originalWidth = metadata.width || 1080;
508
+ const originalHeight = metadata.height || 1920;
509
+ const targetWidth = Math.round(originalWidth * options.scale);
510
+ const targetHeight = Math.round(originalHeight * options.scale);
511
+ debugLog("Processing image", {
512
+ original: `${originalWidth}x${originalHeight}`,
513
+ target: `${targetWidth}x${targetHeight}`
514
+ });
515
+ // 3. Конвертируем через sharp
516
+ let pipeline = sharp(pngBuffer).resize(targetWidth, targetHeight);
517
+ if (options.format === "webp") {
518
+ pipeline = pipeline.webp({ quality: options.quality });
519
+ }
520
+ const processedBuffer = await pipeline.toBuffer();
521
+ debugLog("Screenshot processed", { size: processedBuffer.length, format: options.format });
522
+ // 4. Базовый результат
523
+ const baseResult = {
524
+ format: options.format,
525
+ size: processedBuffer.length,
526
+ sizeKb: Math.round(processedBuffer.length / 1024),
527
+ width: targetWidth,
528
+ height: targetHeight,
529
+ originalWidth,
530
+ originalHeight,
531
+ scaled: targetWidth !== originalWidth,
532
+ };
533
+ // 5. Возвращаем в зависимости от output режима
534
+ if (options.output === "base64") {
535
+ const base64 = processedBuffer.toString("base64");
536
+ return {
537
+ ...baseResult,
538
+ data: base64,
539
+ };
540
+ }
541
+ // 6. Сохраняем в файл
542
+ await ensureOutputDir();
543
+ await cleanupOldScreenshots();
544
+ const timestamp = new Date().toISOString()
545
+ .replace(/[:.]/g, "-")
546
+ .replace("T", "_")
547
+ .slice(0, 19);
548
+ const filename = `screenshot_${timestamp}.${options.format}`;
549
+ const filePath = resolve(await ensureOutputDir(), filename);
550
+ await writeFile(filePath, processedBuffer);
551
+ debugLog("Screenshot saved", { filePath });
552
+ return {
553
+ ...baseResult,
554
+ filePath, // абсолютный путь
555
+ relativePath: filename, // для удобства
556
+ };
557
+ }
558
+ catch (error) {
559
+ debugLog("captureScreenshot failed", { error: error instanceof Error ? error.message : String(error) });
560
+ throw new AdbError(`Failed to capture screenshot: ${error instanceof Error ? error.message : String(error)}`, null, "");
561
+ }
562
+ }
563
+ async function captureScreenshotRaw() {
564
+ debugLog("Capturing raw screenshot via ADB");
565
+ try {
566
+ const { stdout } = await execAsync("adb exec-out screencap -p", {
567
+ maxBuffer: 20 * 1024 * 1024,
568
+ encoding: null,
569
+ });
570
+ // Исправляем \r\n на Windows
571
+ const fixedBuffer = Buffer.from(stdout.toString().replace(/\r\n/g, "\n"), "binary");
572
+ debugLog("Raw screenshot captured", { size: fixedBuffer.length });
573
+ return fixedBuffer;
574
+ }
575
+ catch (error) {
576
+ throw new AdbError("Failed to capture screenshot via ADB", null, error instanceof Error ? error.message : String(error));
577
+ }
578
+ }
579
+ //# sourceMappingURL=adb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adb.js","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}