agent-device 0.14.2 → 0.14.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.
- package/README.md +3 -0
- package/android-snapshot-helper/dist/{agent-device-android-snapshot-helper-0.14.2.apk → agent-device-android-snapshot-helper-0.14.4.apk} +0 -0
- package/android-snapshot-helper/dist/agent-device-android-snapshot-helper-0.14.4.apk.sha256 +1 -0
- package/android-snapshot-helper/dist/{agent-device-android-snapshot-helper-0.14.2.manifest.json → agent-device-android-snapshot-helper-0.14.4.manifest.json} +6 -6
- package/dist/src/180.js +1 -0
- package/dist/src/2007.js +23 -30
- package/dist/src/221.js +4 -4
- package/dist/src/6642.js +1 -0
- package/dist/src/7599.js +3 -0
- package/dist/src/8809.js +8 -0
- package/dist/src/9542.js +2 -2
- package/dist/src/9639.js +2 -0
- package/dist/src/9818.js +1 -1
- package/dist/src/android-adb.d.ts +190 -0
- package/dist/src/android-adb.js +1 -0
- package/dist/src/android-snapshot-helper.d.ts +94 -7
- package/dist/src/internal/bin.js +54 -51
- package/dist/src/internal/companion-tunnel.js +1 -1
- package/dist/src/internal/daemon.js +22 -21
- package/package.json +5 -5
- package/android-snapshot-helper/dist/agent-device-android-snapshot-helper-0.14.2.apk.sha256 +0 -1
- package/dist/src/8161.js +0 -3
- package/dist/src/9366.js +0 -1
- package/dist/src/android-apps.d.ts +0 -12
- package/dist/src/android-apps.js +0 -1
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import type { Readable } from 'node:stream';
|
|
3
|
+
import { SpawnOptions } from 'node:child_process';
|
|
4
|
+
import type { Writable } from 'node:stream';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Runs device-scoped adb arguments after the device serial has already been selected.
|
|
8
|
+
* Implementations must be safe to call concurrently for one request.
|
|
9
|
+
*/
|
|
10
|
+
export declare type AndroidAdbExecutor = (args: string[], options?: AndroidAdbExecutorOptions) => Promise<AndroidAdbExecutorResult>;
|
|
11
|
+
|
|
12
|
+
export declare type AndroidAdbExecutorOptions = Pick<ExecOptions, 'allowFailure' | 'timeoutMs' | 'binaryStdout' | 'stdin' | 'signal'>;
|
|
13
|
+
|
|
14
|
+
export declare type AndroidAdbExecutorResult = Pick<ExecResult, 'exitCode' | 'stdout' | 'stderr' | 'stdoutBuffer'>;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Installs an APK path. Implementations are responsible for honoring semantic
|
|
18
|
+
* install options such as replace/test/downgrade/grant-permissions.
|
|
19
|
+
*/
|
|
20
|
+
export declare type AndroidAdbInstaller = (apkPath: string, options?: AndroidAdbInstallOptions) => Promise<AndroidAdbExecutorResult>;
|
|
21
|
+
|
|
22
|
+
export declare type AndroidAdbInstallOptions = AndroidAdbTransferOptions & {
|
|
23
|
+
replace?: boolean;
|
|
24
|
+
allowTestPackages?: boolean;
|
|
25
|
+
allowDowngrade?: boolean;
|
|
26
|
+
grantPermissions?: boolean;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export declare type AndroidAdbProcess = {
|
|
30
|
+
pid?: number;
|
|
31
|
+
stdin: Writable | null;
|
|
32
|
+
stdout: Readable | null;
|
|
33
|
+
stderr: Readable | null;
|
|
34
|
+
killed: boolean;
|
|
35
|
+
kill(signal?: NodeJS.Signals | number): boolean;
|
|
36
|
+
once(event: 'exit' | 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): unknown;
|
|
37
|
+
on(event: 'error', listener: (error: Error) => void): unknown;
|
|
38
|
+
on(event: 'exit' | 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): unknown;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export declare type AndroidAdbProvider = {
|
|
42
|
+
/**
|
|
43
|
+
* Fallback executor for device-scoped adb arguments. Providers may omit explicit
|
|
44
|
+
* methods to keep the legacy exec-shaped pull/install fallback.
|
|
45
|
+
*/
|
|
46
|
+
exec: AndroidAdbExecutor;
|
|
47
|
+
spawn?: AndroidAdbSpawner;
|
|
48
|
+
reverse?: AndroidPortReverseProvider;
|
|
49
|
+
pull?: AndroidAdbPuller;
|
|
50
|
+
install?: AndroidAdbInstaller;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export declare type AndroidAdbPuller = (remotePath: string, localPath: string, options?: AndroidAdbTransferOptions) => Promise<AndroidAdbExecutorResult>;
|
|
54
|
+
|
|
55
|
+
export declare type AndroidAdbSpawner = (args: string[], options?: SpawnOptions) => AndroidAdbProcess;
|
|
56
|
+
|
|
57
|
+
export declare type AndroidAdbTransferOptions = AndroidAdbExecutorOptions;
|
|
58
|
+
|
|
59
|
+
export declare type AndroidAppListFilter = 'user-installed' | 'all';
|
|
60
|
+
|
|
61
|
+
export declare type AndroidAppListOptions = {
|
|
62
|
+
filter?: AndroidAppListFilter;
|
|
63
|
+
target?: AndroidAppListTarget;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export declare type AndroidAppListTarget = 'mobile' | 'tv' | 'auto';
|
|
67
|
+
|
|
68
|
+
declare type AndroidForegroundApp = {
|
|
69
|
+
package?: string;
|
|
70
|
+
activity?: string;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export declare type AndroidKeyboardState = {
|
|
74
|
+
visible: boolean;
|
|
75
|
+
inputType?: string;
|
|
76
|
+
type?: AndroidKeyboardType;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
declare type AndroidKeyboardType = 'text' | 'number' | 'email' | 'phone' | 'password' | 'datetime' | 'unknown';
|
|
80
|
+
|
|
81
|
+
export declare type AndroidLogcatCaptureOptions = {
|
|
82
|
+
lines?: number;
|
|
83
|
+
timeoutMs?: number;
|
|
84
|
+
signal?: AbortSignal;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export declare type AndroidLogcatStreamOptions = {
|
|
88
|
+
pid?: string;
|
|
89
|
+
signal?: AbortSignal;
|
|
90
|
+
output?: fs.WriteStream;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export declare type AndroidOpenAppWithAdbOptions = {
|
|
94
|
+
activity?: string;
|
|
95
|
+
category?: string;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export declare type AndroidPortReverseEndpoint = `tcp:${number}` | `localabstract:${string}`;
|
|
99
|
+
|
|
100
|
+
export declare type AndroidPortReverseMapping = {
|
|
101
|
+
local: AndroidPortReverseEndpoint;
|
|
102
|
+
remote: AndroidPortReverseEndpoint;
|
|
103
|
+
ownerId?: string;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export declare type AndroidPortReverseOptions = {
|
|
107
|
+
signal?: AbortSignal;
|
|
108
|
+
timeoutMs?: number;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export declare type AndroidPortReverseProvider = {
|
|
112
|
+
ensure(mapping: AndroidPortReverseMapping, options?: AndroidPortReverseOptions): Promise<void>;
|
|
113
|
+
remove(local: AndroidPortReverseEndpoint, options?: AndroidPortReverseOptions): Promise<void>;
|
|
114
|
+
removeAllOwned(ownerId: string, options?: AndroidPortReverseOptions): Promise<void>;
|
|
115
|
+
list?(options?: AndroidPortReverseOptions): Promise<AndroidPortReverseMapping[]>;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
declare type ApplePlatform = 'ios' | 'macos';
|
|
119
|
+
|
|
120
|
+
export declare function captureAndroidLogcatWithAdb(adb: AndroidAdbExecutor, options?: AndroidLogcatCaptureOptions): Promise<string>;
|
|
121
|
+
|
|
122
|
+
export declare function createAndroidPortReverseManager(provider: AndroidAdbProvider | AndroidAdbExecutor): AndroidPortReverseProvider;
|
|
123
|
+
|
|
124
|
+
export declare function createLocalAndroidAdbProvider(device: DeviceInfo): AndroidAdbProvider;
|
|
125
|
+
|
|
126
|
+
declare type DeviceInfo = {
|
|
127
|
+
platform: Platform;
|
|
128
|
+
id: string;
|
|
129
|
+
name: string;
|
|
130
|
+
kind: DeviceKind;
|
|
131
|
+
target?: DeviceTarget;
|
|
132
|
+
booted?: boolean;
|
|
133
|
+
simulatorSetPath?: string;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
declare type DeviceKind = 'simulator' | 'emulator' | 'device';
|
|
137
|
+
|
|
138
|
+
declare type DeviceTarget = 'mobile' | 'tv' | 'desktop';
|
|
139
|
+
|
|
140
|
+
export declare function dismissAndroidKeyboardWithAdb(adb: AndroidAdbExecutor): Promise<{
|
|
141
|
+
attempts: number;
|
|
142
|
+
wasVisible: boolean;
|
|
143
|
+
dismissed: boolean;
|
|
144
|
+
visible: boolean;
|
|
145
|
+
inputType?: string;
|
|
146
|
+
type?: AndroidKeyboardType;
|
|
147
|
+
}>;
|
|
148
|
+
|
|
149
|
+
declare type ExecOptions = {
|
|
150
|
+
cwd?: string;
|
|
151
|
+
env?: NodeJS.ProcessEnv;
|
|
152
|
+
allowFailure?: boolean;
|
|
153
|
+
binaryStdout?: boolean;
|
|
154
|
+
stdin?: string | Buffer;
|
|
155
|
+
timeoutMs?: number;
|
|
156
|
+
detached?: boolean;
|
|
157
|
+
signal?: AbortSignal;
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
declare type ExecResult = {
|
|
161
|
+
stdout: string;
|
|
162
|
+
stderr: string;
|
|
163
|
+
exitCode: number;
|
|
164
|
+
stdoutBuffer?: Buffer;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export declare function forceStopAndroidAppWithAdb(adb: AndroidAdbExecutor, packageName: string): Promise<void>;
|
|
168
|
+
|
|
169
|
+
export declare function getAndroidAppStateWithAdb(adb: AndroidAdbExecutor): Promise<AndroidForegroundApp>;
|
|
170
|
+
|
|
171
|
+
export declare function getAndroidKeyboardStatusWithAdb(adb: AndroidAdbExecutor): Promise<AndroidKeyboardState>;
|
|
172
|
+
|
|
173
|
+
export declare function listAndroidAppsWithAdb(adb: AndroidAdbExecutor, options?: AndroidAppListOptions): Promise<Array<{
|
|
174
|
+
package: string;
|
|
175
|
+
name: string;
|
|
176
|
+
}>>;
|
|
177
|
+
|
|
178
|
+
export declare function openAndroidAppWithAdb(adb: AndroidAdbExecutor, packageName: string, options?: AndroidOpenAppWithAdbOptions): Promise<void>;
|
|
179
|
+
|
|
180
|
+
declare type Platform = ApplePlatform | 'android' | 'linux';
|
|
181
|
+
|
|
182
|
+
export declare function readAndroidClipboardWithAdb(adb: AndroidAdbExecutor): Promise<string>;
|
|
183
|
+
|
|
184
|
+
export declare function resolveAndroidLaunchComponentWithAdb(adb: AndroidAdbExecutor, packageName: string, categories?: string[]): Promise<string | null>;
|
|
185
|
+
|
|
186
|
+
export declare function streamAndroidLogcatWithAdb(provider: Pick<AndroidAdbProvider, 'spawn'>, options?: AndroidLogcatStreamOptions): AndroidAdbProcess;
|
|
187
|
+
|
|
188
|
+
export declare function writeAndroidClipboardWithAdb(adb: AndroidAdbExecutor, text: string): Promise<void>;
|
|
189
|
+
|
|
190
|
+
export { }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AppError as t}from"./9152.js";import{parseAndroidForegroundApp as e,parseAndroidLaunchablePackages as i,parseAndroidUserInstalledPackages as a,inferAndroidAppName as r,parseAndroidLaunchComponent as o,isAmStartError as n}from"./8809.js";let d="android.intent.category.LAUNCHER",l="android.intent.category.LEANBACK_LAUNCHER";async function s(t,e={}){let i=await u(t,e.target??"auto");return("user-installed"===e.filter?(await A(t)).filter(t=>i.has(t)):Array.from(i)).map(t=>({package:t,name:r(t)})).sort((t,e)=>t.package.localeCompare(e.package))}async function c(t){let e=await p(t,[["shell","dumpsys","window","windows"],["shell","dumpsys","window"]]);if(e)return e;let i=await p(t,[["shell","dumpsys","activity","activities"],["shell","dumpsys","activity"]]);return i||{}}async function u(t,e){return new Set((await Promise.all((function(t){switch(t){case"mobile":return[d];case"tv":return[l];default:return[d,l]}})(e).map(async e=>{var a;let r=await t(["shell","cmd","package","query-activities","--brief","-a","android.intent.action.MAIN","-c",e],{allowFailure:!0});return 0===r.exitCode?0===(a=r.stdout).trim().length?[]:i(a):[]}))).flat())}async function A(e){let i=await e(["shell","pm","list","packages","-3"],{allowFailure:!0});if(0!==i.exitCode)throw new t("COMMAND_FAILED","Failed to list Android user-installed apps",{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode});return a(i.stdout)}async function p(t,i){for(let a of i){let i=e((await t(a,{allowFailure:!0})).stdout??"");if(i)return i}return null}let f="android.intent.category.LAUNCHER",w="android.intent.category.DEFAULT";async function h(t,e){await t(["shell","am","force-stop",e])}async function m(t,e,i=[f]){for(let a of i){let i=await t(["shell","cmd","package","resolve-activity","--brief","-a","android.intent.action.MAIN","-c",a,e],{allowFailure:!0});if(0!==i.exitCode)continue;let r=o(i.stdout);if(r)return r}return null}async function C(e,i,a={}){let r=a.category??f;if(a.activity){var o,d;return void await e(["shell","am","start","-W","-a","android.intent.action.MAIN","-c",w,"-c",r,"-n",(o=i,(d=a.activity).includes("/")?d:`${o}/${d.startsWith(".")?d:`.${d}`}`)])}let l=await e(["shell","am","start","-W","-a","android.intent.action.MAIN","-c",w,"-c",r,"-p",i],{allowFailure:!0});if(0===l.exitCode&&!n(l.stdout,l.stderr))return;let s=await m(e,i,[r]);if(!s)throw new t("COMMAND_FAILED",`Failed to resolve Android launch component for ${i}`,{stdout:l.stdout,stderr:l.stderr,exitCode:l.exitCode});await e(["shell","am","start","-W","-a","android.intent.action.MAIN","-c",w,"-c",r,"-n",s])}export{captureAndroidLogcatWithAdb,streamAndroidLogcatWithAdb}from"./6642.js";export{createAndroidPortReverseManager,createLocalAndroidAdbProvider}from"./9639.js";export{dismissAndroidKeyboardWithAdb,getAndroidKeyboardStatusWithAdb,readAndroidClipboardWithAdb,writeAndroidClipboardWithAdb}from"./8809.js";export{h as forceStopAndroidAppWithAdb,c as getAndroidAppStateWithAdb,s as listAndroidAppsWithAdb,C as openAndroidAppWithAdb,m as resolveAndroidLaunchComponentWithAdb};
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import type { Readable } from 'node:stream';
|
|
2
|
+
import { SpawnOptions } from 'node:child_process';
|
|
3
|
+
import type { Writable } from 'node:stream';
|
|
4
|
+
|
|
1
5
|
export declare const ANDROID_SNAPSHOT_HELPER_NAME = "android-snapshot-helper";
|
|
2
6
|
|
|
3
7
|
export declare const ANDROID_SNAPSHOT_HELPER_OUTPUT_FORMAT = "uiautomator-xml";
|
|
@@ -10,14 +14,78 @@ export declare const ANDROID_SNAPSHOT_HELPER_RUNNER = "com.callstack.agentdevice
|
|
|
10
14
|
|
|
11
15
|
export declare const ANDROID_SNAPSHOT_HELPER_WAIT_FOR_IDLE_TIMEOUT_MS = 500;
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Runs device-scoped adb arguments after the device serial has already been selected.
|
|
19
|
+
* Implementations must be safe to call concurrently for one request.
|
|
20
|
+
*/
|
|
21
|
+
export declare type AndroidAdbExecutor = (args: string[], options?: AndroidAdbExecutorOptions) => Promise<AndroidAdbExecutorResult>;
|
|
22
|
+
|
|
23
|
+
declare type AndroidAdbExecutorOptions = Pick<ExecOptions, 'allowFailure' | 'timeoutMs' | 'binaryStdout' | 'stdin' | 'signal'>;
|
|
24
|
+
|
|
25
|
+
declare type AndroidAdbExecutorResult = Pick<ExecResult, 'exitCode' | 'stdout' | 'stderr' | 'stdoutBuffer'>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Installs an APK path. Implementations are responsible for honoring semantic
|
|
29
|
+
* install options such as replace/test/downgrade/grant-permissions.
|
|
30
|
+
*/
|
|
31
|
+
declare type AndroidAdbInstaller = (apkPath: string, options?: AndroidAdbInstallOptions) => Promise<AndroidAdbExecutorResult>;
|
|
32
|
+
|
|
33
|
+
declare type AndroidAdbInstallOptions = AndroidAdbTransferOptions & {
|
|
34
|
+
replace?: boolean;
|
|
35
|
+
allowTestPackages?: boolean;
|
|
36
|
+
allowDowngrade?: boolean;
|
|
37
|
+
grantPermissions?: boolean;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
declare type AndroidAdbProcess = {
|
|
41
|
+
pid?: number;
|
|
42
|
+
stdin: Writable | null;
|
|
43
|
+
stdout: Readable | null;
|
|
44
|
+
stderr: Readable | null;
|
|
45
|
+
killed: boolean;
|
|
46
|
+
kill(signal?: NodeJS.Signals | number): boolean;
|
|
47
|
+
once(event: 'exit' | 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): unknown;
|
|
48
|
+
on(event: 'error', listener: (error: Error) => void): unknown;
|
|
49
|
+
on(event: 'exit' | 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): unknown;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
declare type AndroidAdbProvider = {
|
|
53
|
+
/**
|
|
54
|
+
* Fallback executor for device-scoped adb arguments. Providers may omit explicit
|
|
55
|
+
* methods to keep the legacy exec-shaped pull/install fallback.
|
|
56
|
+
*/
|
|
57
|
+
exec: AndroidAdbExecutor;
|
|
58
|
+
spawn?: AndroidAdbSpawner;
|
|
59
|
+
reverse?: AndroidPortReverseProvider;
|
|
60
|
+
pull?: AndroidAdbPuller;
|
|
61
|
+
install?: AndroidAdbInstaller;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
declare type AndroidAdbPuller = (remotePath: string, localPath: string, options?: AndroidAdbTransferOptions) => Promise<AndroidAdbExecutorResult>;
|
|
65
|
+
|
|
66
|
+
declare type AndroidAdbSpawner = (args: string[], options?: SpawnOptions) => AndroidAdbProcess;
|
|
67
|
+
|
|
68
|
+
declare type AndroidAdbTransferOptions = AndroidAdbExecutorOptions;
|
|
69
|
+
|
|
70
|
+
declare type AndroidPortReverseEndpoint = `tcp:${number}` | `localabstract:${string}`;
|
|
71
|
+
|
|
72
|
+
declare type AndroidPortReverseMapping = {
|
|
73
|
+
local: AndroidPortReverseEndpoint;
|
|
74
|
+
remote: AndroidPortReverseEndpoint;
|
|
75
|
+
ownerId?: string;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
declare type AndroidPortReverseOptions = {
|
|
79
|
+
signal?: AbortSignal;
|
|
15
80
|
timeoutMs?: number;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
declare type AndroidPortReverseProvider = {
|
|
84
|
+
ensure(mapping: AndroidPortReverseMapping, options?: AndroidPortReverseOptions): Promise<void>;
|
|
85
|
+
remove(local: AndroidPortReverseEndpoint, options?: AndroidPortReverseOptions): Promise<void>;
|
|
86
|
+
removeAllOwned(ownerId: string, options?: AndroidPortReverseOptions): Promise<void>;
|
|
87
|
+
list?(options?: AndroidPortReverseOptions): Promise<AndroidPortReverseMapping[]>;
|
|
88
|
+
};
|
|
21
89
|
|
|
22
90
|
declare type AndroidSnapshotAnalysis = {
|
|
23
91
|
rawNodeCount: number;
|
|
@@ -121,12 +189,31 @@ export declare function captureAndroidSnapshotWithHelper(options: AndroidSnapsho
|
|
|
121
189
|
|
|
122
190
|
export declare function ensureAndroidSnapshotHelper(options: {
|
|
123
191
|
adb: AndroidAdbExecutor;
|
|
192
|
+
adbProvider?: AndroidAdbProvider | AndroidAdbExecutor;
|
|
124
193
|
artifact: AndroidSnapshotHelperArtifact;
|
|
125
194
|
deviceKey?: string;
|
|
126
195
|
installPolicy?: AndroidSnapshotHelperInstallPolicy;
|
|
127
196
|
timeoutMs?: number;
|
|
128
197
|
}): Promise<AndroidSnapshotHelperInstallResult>;
|
|
129
198
|
|
|
199
|
+
declare type ExecOptions = {
|
|
200
|
+
cwd?: string;
|
|
201
|
+
env?: NodeJS.ProcessEnv;
|
|
202
|
+
allowFailure?: boolean;
|
|
203
|
+
binaryStdout?: boolean;
|
|
204
|
+
stdin?: string | Buffer;
|
|
205
|
+
timeoutMs?: number;
|
|
206
|
+
detached?: boolean;
|
|
207
|
+
signal?: AbortSignal;
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
declare type ExecResult = {
|
|
211
|
+
stdout: string;
|
|
212
|
+
stderr: string;
|
|
213
|
+
exitCode: number;
|
|
214
|
+
stdoutBuffer?: Buffer;
|
|
215
|
+
};
|
|
216
|
+
|
|
130
217
|
export declare function parseAndroidSnapshotHelperManifest(value: unknown): AndroidSnapshotHelperManifest;
|
|
131
218
|
|
|
132
219
|
export declare function parseAndroidSnapshotHelperOutput(output: string): AndroidSnapshotHelperOutput;
|