@yume-chan/android-bin 2.1.0 → 3.0.0-beta.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/LICENSE +1 -1
- package/README.md +4 -1
- package/esm/am.d.ts +20 -15
- package/esm/am.d.ts.map +1 -1
- package/esm/am.js +60 -13
- package/esm/am.js.map +1 -1
- package/esm/bu.d.ts +22 -18
- package/esm/bu.d.ts.map +1 -1
- package/esm/bu.js +10 -4
- package/esm/bu.js.map +1 -1
- package/esm/bug-report.d.ts +21 -20
- package/esm/bug-report.d.ts.map +1 -1
- package/esm/bug-report.js +15 -21
- package/esm/bug-report.js.map +1 -1
- package/esm/cmd/index.d.ts +2 -0
- package/esm/cmd/index.d.ts.map +1 -0
- package/esm/cmd/index.js +2 -0
- package/esm/cmd/index.js.map +1 -0
- package/esm/cmd/none.d.ts +5 -0
- package/esm/cmd/none.d.ts.map +1 -0
- package/esm/cmd/none.js +39 -0
- package/esm/cmd/none.js.map +1 -0
- package/esm/cmd/service.d.ts +29 -0
- package/esm/cmd/service.d.ts.map +1 -0
- package/esm/cmd/service.js +24 -0
- package/esm/cmd/service.js.map +1 -0
- package/esm/cmd/shell.d.ts +5 -0
- package/esm/cmd/shell.d.ts.map +1 -0
- package/esm/cmd/shell.js +43 -0
- package/esm/cmd/shell.js.map +1 -0
- package/esm/cmd/utils.d.ts +5 -0
- package/esm/cmd/utils.d.ts.map +1 -0
- package/esm/cmd/utils.js +24 -0
- package/esm/cmd/utils.js.map +1 -0
- package/esm/demo-mode.d.ts +3 -4
- package/esm/demo-mode.d.ts.map +1 -1
- package/esm/demo-mode.js +13 -21
- package/esm/demo-mode.js.map +1 -1
- package/esm/dumpsys.d.ts +4 -2
- package/esm/dumpsys.d.ts.map +1 -1
- package/esm/dumpsys.js +13 -10
- package/esm/dumpsys.js.map +1 -1
- package/esm/index.d.ts +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/index.js.map +1 -1
- package/esm/intent.d.ts +37 -9
- package/esm/intent.d.ts.map +1 -1
- package/esm/intent.js +116 -53
- package/esm/intent.js.map +1 -1
- package/esm/logcat.d.ts +4 -2
- package/esm/logcat.d.ts.map +1 -1
- package/esm/logcat.js +9 -6
- package/esm/logcat.js.map +1 -1
- package/esm/overlay-display.d.ts +17 -14
- package/esm/overlay-display.d.ts.map +1 -1
- package/esm/overlay-display.js +2 -4
- package/esm/overlay-display.js.map +1 -1
- package/esm/pm.d.ts +131 -168
- package/esm/pm.d.ts.map +1 -1
- package/esm/pm.js +229 -112
- package/esm/pm.js.map +1 -1
- package/esm/settings.d.ts +1 -2
- package/esm/settings.d.ts.map +1 -1
- package/esm/settings.js +9 -9
- package/esm/settings.js.map +1 -1
- package/esm/utils.d.ts +4 -1
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +24 -13
- package/esm/utils.js.map +1 -1
- package/package.json +9 -9
- package/src/am.ts +94 -34
- package/src/bu.ts +31 -20
- package/src/bug-report.ts +42 -42
- package/src/cmd/index.ts +1 -0
- package/src/cmd/none.ts +62 -0
- package/src/cmd/service.ts +54 -0
- package/src/cmd/shell.ts +67 -0
- package/src/cmd/utils.ts +35 -0
- package/src/demo-mode.ts +13 -24
- package/src/dumpsys.ts +16 -10
- package/src/index.ts +1 -1
- package/src/intent.ts +187 -49
- package/src/logcat.ts +12 -6
- package/src/overlay-display.ts +21 -19
- package/src/pm.ts +374 -301
- package/src/settings.ts +11 -10
- package/src/utils.ts +30 -13
- package/tsconfig.build.json +0 -11
- package/CHANGELOG.md +0 -181
- package/esm/cmd.d.ts +0 -23
- package/esm/cmd.d.ts.map +0 -1
- package/esm/cmd.js +0 -104
- package/esm/cmd.js.map +0 -1
- package/src/cmd.ts +0 -166
- package/tsconfig.build.tsbuildinfo +0 -1
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -24,6 +24,9 @@
|
|
|
24
24
|
<a href="https://tangoadb.dev/discord">
|
|
25
25
|
<img alt="Discord" src="https://img.shields.io/discord/1120215514732564502?logo=discord&logoColor=%23ffffff&label=Discord">
|
|
26
26
|
</a>
|
|
27
|
+
<a href="https://tangoadb.dev/wechat">
|
|
28
|
+
<img alt="WeChat Group" src="https://img.shields.io/badge/WeChat-Group-%2307C160?logo=wechat&logoColor=white">
|
|
29
|
+
</a>
|
|
27
30
|
</p>
|
|
28
31
|
|
|
29
32
|
This package is part of [Tango ADB](https://github.com/yume-chan/ya-webadb). Generally you need multiple packages to build a complete ADB client that can run on Web browsers and Node.js. Read the documentation for more information.
|
|
@@ -34,7 +37,7 @@ Check the latest documentation at https://tango-adb.github.io/docs/
|
|
|
34
37
|
|
|
35
38
|
## Sponsors
|
|
36
39
|
|
|
37
|
-
[Become a backer](https://opencollective.com/ya-webadb) and get your image on our README on
|
|
40
|
+
[Become a backer](https://opencollective.com/ya-webadb) and get your image on our README on GitHub with a link to your site.
|
|
38
41
|
|
|
39
42
|
<a href="https://opencollective.com/ya-webadb/backer/0/website?requireActive=false" target="_blank"><img src="https://opencollective.com/ya-webadb/backer/0/avatar.svg?requireActive=false"></a>
|
|
40
43
|
<a href="https://opencollective.com/ya-webadb/backer/1/website?requireActive=false" target="_blank"><img src="https://opencollective.com/ya-webadb/backer/1/avatar.svg?requireActive=false"></a>
|
package/esm/am.d.ts
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import type { Adb } from "@yume-chan/adb";
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
export interface ActivityManagerStartActivityOptions {
|
|
6
|
-
displayId?: number;
|
|
7
|
-
windowingMode?: number;
|
|
8
|
-
forceStop?: boolean;
|
|
9
|
-
user?: SingleUser;
|
|
10
|
-
intent: IntentBuilder;
|
|
11
|
-
}
|
|
12
|
-
export declare class ActivityManager extends AdbServiceBase {
|
|
2
|
+
import type { Intent } from "./intent.js";
|
|
3
|
+
import type { SingleUser, SingleUserOrAll } from "./utils.js";
|
|
4
|
+
export declare class ActivityManager {
|
|
13
5
|
#private;
|
|
14
|
-
static ServiceName
|
|
15
|
-
static CommandName
|
|
16
|
-
constructor(adb: Adb);
|
|
17
|
-
startActivity(options:
|
|
6
|
+
static readonly ServiceName = "activity";
|
|
7
|
+
static readonly CommandName = "am";
|
|
8
|
+
constructor(adb: Adb, apiLevel?: number);
|
|
9
|
+
startActivity(options: ActivityManager.StartActivityOptions): Promise<void>;
|
|
10
|
+
broadcast(intent: Intent, options?: {
|
|
11
|
+
user?: SingleUserOrAll;
|
|
12
|
+
receiverPermission?: string;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export declare namespace ActivityManager {
|
|
16
|
+
interface StartActivityOptions {
|
|
17
|
+
displayId?: number;
|
|
18
|
+
windowingMode?: number;
|
|
19
|
+
forceStop?: boolean;
|
|
20
|
+
user?: SingleUser;
|
|
21
|
+
intent: Intent;
|
|
22
|
+
}
|
|
18
23
|
}
|
|
19
24
|
//# sourceMappingURL=am.d.ts.map
|
package/esm/am.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"am.d.ts","sourceRoot":"","sources":["../src/am.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"am.d.ts","sourceRoot":"","sources":["../src/am.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAA0B,MAAM,gBAAgB,CAAC;AAKlE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAY9D,qBAAa,eAAe;;IACxB,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAc;IACzC,MAAM,CAAC,QAAQ,CAAC,WAAW,QAAQ;gBAOvB,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM;IAMjC,aAAa,CACf,OAAO,EAAE,eAAe,CAAC,oBAAoB,GAC9C,OAAO,CAAC,IAAI,CAAC;IA6CV,SAAS,CACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,eAAe,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE;CA8BxE;AAED,yBAAiB,eAAe,CAAC;IAC7B,UAAiB,oBAAoB;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAClB;CACJ"}
|
package/esm/am.js
CHANGED
|
@@ -1,34 +1,81 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { escapeArg } from "@yume-chan/adb";
|
|
2
|
+
import { SplitStringStream, TextDecoderStream } from "@yume-chan/stream-extra";
|
|
3
|
+
import { Cmd } from "./cmd/index.js";
|
|
4
|
+
import { serializeIntent } from "./intent.js";
|
|
5
|
+
import { buildCommand } from "./utils.js";
|
|
4
6
|
const START_ACTIVITY_OPTIONS_MAP = {
|
|
5
7
|
displayId: "--display",
|
|
6
8
|
windowingMode: "--windowingMode",
|
|
7
9
|
forceStop: "-S",
|
|
8
10
|
user: "--user",
|
|
9
11
|
};
|
|
10
|
-
export class ActivityManager
|
|
12
|
+
export class ActivityManager {
|
|
11
13
|
static ServiceName = "activity";
|
|
12
14
|
static CommandName = "am";
|
|
15
|
+
#adb;
|
|
16
|
+
#apiLevel;
|
|
13
17
|
#cmd;
|
|
14
|
-
constructor(adb) {
|
|
15
|
-
|
|
16
|
-
this.#
|
|
18
|
+
constructor(adb, apiLevel) {
|
|
19
|
+
this.#adb = adb;
|
|
20
|
+
this.#apiLevel = apiLevel;
|
|
21
|
+
this.#cmd = Cmd.createNoneProtocol(adb, ActivityManager.CommandName);
|
|
17
22
|
}
|
|
18
23
|
async startActivity(options) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
.
|
|
24
|
-
|
|
24
|
+
// Android 8 added "start-activity" alias to "start"
|
|
25
|
+
// but we want to use the most compatible one.
|
|
26
|
+
const command = buildCommand([ActivityManager.ServiceName, "start", "-W"], options, START_ACTIVITY_OPTIONS_MAP);
|
|
27
|
+
for (const arg of serializeIntent(options.intent)) {
|
|
28
|
+
command.push(arg);
|
|
29
|
+
}
|
|
30
|
+
// Android 7 supports `cmd activity` but not `cmd activity start` command
|
|
31
|
+
let process;
|
|
32
|
+
if (this.#apiLevel !== undefined && this.#apiLevel <= 25) {
|
|
33
|
+
command[0] = ActivityManager.CommandName;
|
|
34
|
+
process = await this.#adb.subprocess.noneProtocol.spawn(command.map(escapeArg));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
process = await this.#cmd.spawn(command);
|
|
38
|
+
}
|
|
39
|
+
const lines = process.output
|
|
40
|
+
.pipeThrough(new TextDecoderStream())
|
|
41
|
+
.pipeThrough(new SplitStringStream("\n", { trim: true }));
|
|
42
|
+
for await (const line of lines) {
|
|
25
43
|
if (line.startsWith("Error:")) {
|
|
44
|
+
// Exit from the `for await` loop will cancel `lines`,
|
|
45
|
+
// and subsequently, `process`, which is fine, as the work is already done
|
|
26
46
|
throw new Error(line.substring("Error:".length).trim());
|
|
27
47
|
}
|
|
28
48
|
if (line === "Complete") {
|
|
49
|
+
// Same as above
|
|
29
50
|
return;
|
|
30
51
|
}
|
|
31
52
|
}
|
|
53
|
+
// Ensure the subprocess exits before returning
|
|
54
|
+
await process.exited;
|
|
55
|
+
}
|
|
56
|
+
async broadcast(intent, options) {
|
|
57
|
+
const command = [ActivityManager.ServiceName, "broadcast"];
|
|
58
|
+
if (options) {
|
|
59
|
+
if (options.user !== undefined) {
|
|
60
|
+
command.push("--user", options.user.toString());
|
|
61
|
+
}
|
|
62
|
+
if (options.receiverPermission) {
|
|
63
|
+
command.push("--receiver-permission", options.receiverPermission);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const arg of serializeIntent(intent)) {
|
|
67
|
+
command.push(arg);
|
|
68
|
+
}
|
|
69
|
+
// Android 7 supports `cmd activity` but not `cmd activity broadcast` command
|
|
70
|
+
if (this.#apiLevel !== undefined && this.#apiLevel <= 25) {
|
|
71
|
+
command[0] = ActivityManager.CommandName;
|
|
72
|
+
await this.#adb.subprocess.noneProtocol
|
|
73
|
+
.spawn(command.map(escapeArg))
|
|
74
|
+
.wait();
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
await this.#cmd.spawn(command).wait();
|
|
78
|
+
}
|
|
32
79
|
}
|
|
33
80
|
}
|
|
34
81
|
//# sourceMappingURL=am.js.map
|
package/esm/am.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"am.js","sourceRoot":"","sources":["../src/am.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"am.js","sourceRoot":"","sources":["../src/am.ts"],"names":[],"mappings":"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"}
|
package/esm/bu.d.ts
CHANGED
|
@@ -1,28 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Adb } from "@yume-chan/adb";
|
|
2
2
|
import type { MaybeConsumable, ReadableStream } from "@yume-chan/stream-extra";
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
saveWidgets?: boolean;
|
|
7
|
-
packages: readonly string[] | "user" | "all";
|
|
8
|
-
savePackageApk: boolean;
|
|
9
|
-
savePackageObb: boolean;
|
|
10
|
-
savePackageKeyValue: boolean;
|
|
11
|
-
compress: boolean;
|
|
12
|
-
}
|
|
13
|
-
export interface AdbRestoreOptions {
|
|
14
|
-
user: number;
|
|
15
|
-
file: ReadableStream<MaybeConsumable<Uint8Array>>;
|
|
16
|
-
}
|
|
17
|
-
export declare class AdbBackup extends AdbServiceBase {
|
|
3
|
+
export declare class AdbBackup {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(adb: Adb);
|
|
18
6
|
/**
|
|
19
7
|
* User must confirm backup on device within 60 seconds.
|
|
20
8
|
*/
|
|
21
|
-
backup(options:
|
|
9
|
+
backup(options: AdbBackup.BackupOptions): Promise<ReadableStream<Uint8Array>>;
|
|
22
10
|
/**
|
|
23
11
|
* User must enter the password (if any) and
|
|
24
12
|
* confirm restore on device within 60 seconds.
|
|
25
13
|
*/
|
|
26
|
-
restore(options:
|
|
14
|
+
restore(options: AdbBackup.RestoreOptions): Promise<string>;
|
|
15
|
+
}
|
|
16
|
+
export declare namespace AdbBackup {
|
|
17
|
+
interface BackupOptions {
|
|
18
|
+
user?: number | undefined;
|
|
19
|
+
saveSharedStorage?: boolean | undefined;
|
|
20
|
+
saveWidgets?: boolean | undefined;
|
|
21
|
+
packages: readonly string[] | "user" | "all";
|
|
22
|
+
savePackageApk: boolean;
|
|
23
|
+
savePackageObb: boolean;
|
|
24
|
+
savePackageKeyValue: boolean;
|
|
25
|
+
compress: boolean;
|
|
26
|
+
}
|
|
27
|
+
interface RestoreOptions {
|
|
28
|
+
user?: number | undefined;
|
|
29
|
+
file: ReadableStream<MaybeConsumable<Uint8Array>>;
|
|
30
|
+
}
|
|
27
31
|
}
|
|
28
32
|
//# sourceMappingURL=bu.d.ts.map
|
package/esm/bu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bu.d.ts","sourceRoot":"","sources":["../src/bu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bu.d.ts","sourceRoot":"","sources":["../src/bu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,qBAAa,SAAS;;gBAGN,GAAG,EAAE,GAAG;IAIpB;;OAEG;IACG,MAAM,CACR,OAAO,EAAE,SAAS,CAAC,aAAa,GACjC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAmCtC;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAU9D;AAED,yBAAiB,SAAS,CAAC;IACvB,UAAiB,aAAa;QAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACxC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAClC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;QAC7C,cAAc,EAAE,OAAO,CAAC;QACxB,cAAc,EAAE,OAAO,CAAC;QACxB,mBAAmB,EAAE,OAAO,CAAC;QAC7B,QAAQ,EAAE,OAAO,CAAC;KACrB;IAED,UAAiB,cAAc;QAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,IAAI,EAAE,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;KACrD;CACJ"}
|
package/esm/bu.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export class AdbBackup {
|
|
2
|
+
#adb;
|
|
3
|
+
constructor(adb) {
|
|
4
|
+
this.#adb = adb;
|
|
5
|
+
}
|
|
3
6
|
/**
|
|
4
7
|
* User must confirm backup on device within 60 seconds.
|
|
5
8
|
*/
|
|
@@ -27,7 +30,7 @@ export class AdbBackup extends AdbServiceBase {
|
|
|
27
30
|
else {
|
|
28
31
|
args.push(...options.packages);
|
|
29
32
|
}
|
|
30
|
-
const process = await this
|
|
33
|
+
const process = await this.#adb.subprocess.noneProtocol.spawn(args);
|
|
31
34
|
return process.output;
|
|
32
35
|
}
|
|
33
36
|
/**
|
|
@@ -39,7 +42,10 @@ export class AdbBackup extends AdbServiceBase {
|
|
|
39
42
|
if (options.user !== undefined) {
|
|
40
43
|
args.push("--user", options.user.toString());
|
|
41
44
|
}
|
|
42
|
-
return this
|
|
45
|
+
return this.#adb.subprocess.noneProtocol
|
|
46
|
+
.spawn(args)
|
|
47
|
+
.wait({ stdin: options.file })
|
|
48
|
+
.toString();
|
|
43
49
|
}
|
|
44
50
|
}
|
|
45
51
|
//# sourceMappingURL=bu.js.map
|
package/esm/bu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bu.js","sourceRoot":"","sources":["../src/bu.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bu.js","sourceRoot":"","sources":["../src/bu.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,SAAS;IACT,IAAI,CAAM;IAEnB,YAAY,GAAQ;QAChB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACR,OAAgC;QAEhC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE9B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAE9D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CACL,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CACjE,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAE7D,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACvC,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACvB,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;oBAClC,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;oBAC/B,MAAM;YACd,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,OAAiC;QACrC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY;aACnC,KAAK,CAAC,IAAI,CAAC;aACX,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;aAC7B,QAAQ,EAAE,CAAC;IACpB,CAAC;CACJ"}
|
package/esm/bug-report.d.ts
CHANGED
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
import type { Adb } from "@yume-chan/adb";
|
|
2
|
-
import { AdbServiceBase } from "@yume-chan/adb";
|
|
3
2
|
import type { AbortSignal, ReadableStream } from "@yume-chan/stream-extra";
|
|
4
|
-
export
|
|
5
|
-
supportsBugReport: boolean;
|
|
6
|
-
bugReportZVersion?: string | undefined;
|
|
7
|
-
supportsBugReportZ: boolean;
|
|
8
|
-
supportsBugReportZProgress: boolean;
|
|
9
|
-
supportsBugReportZStream: boolean;
|
|
10
|
-
}
|
|
11
|
-
export interface BugReportZOptions {
|
|
12
|
-
signal?: AbortSignal;
|
|
13
|
-
/**
|
|
14
|
-
* A callback that will be called when progress is updated.
|
|
15
|
-
*
|
|
16
|
-
* Specify `onProgress` when `supportsBugReportZProgress` is `false` will throw an error.
|
|
17
|
-
*/
|
|
18
|
-
onProgress?: ((completed: string, total: string) => void) | undefined;
|
|
19
|
-
}
|
|
20
|
-
export declare class BugReport extends AdbServiceBase {
|
|
3
|
+
export declare class BugReport {
|
|
21
4
|
#private;
|
|
22
5
|
static VERSION_REGEX: RegExp;
|
|
23
6
|
static BEGIN_REGEX: RegExp;
|
|
@@ -58,7 +41,7 @@ export declare class BugReport extends AdbServiceBase {
|
|
|
58
41
|
* Should be `true` for Android version >= 12.
|
|
59
42
|
*/
|
|
60
43
|
get supportsBugReportZStream(): boolean;
|
|
61
|
-
constructor(adb: Adb, capabilities:
|
|
44
|
+
constructor(adb: Adb, capabilities: BugReport.Capabilities);
|
|
62
45
|
/**
|
|
63
46
|
* Creates a legacy, non-zipped bugreport file, or throws an error if `supportsBugReport` is `false`.
|
|
64
47
|
*
|
|
@@ -73,7 +56,7 @@ export declare class BugReport extends AdbServiceBase {
|
|
|
73
56
|
*
|
|
74
57
|
* @returns The path to the generated bugreport file on device filesystem.
|
|
75
58
|
*/
|
|
76
|
-
bugReportZ(options?: BugReportZOptions): Promise<string>;
|
|
59
|
+
bugReportZ(options?: BugReport.BugReportZOptions): Promise<string>;
|
|
77
60
|
/**
|
|
78
61
|
* Creates a zipped bugreport file, or throws an error if `supportsBugReportZStream` is `false`.
|
|
79
62
|
*
|
|
@@ -96,4 +79,22 @@ export declare class BugReport extends AdbServiceBase {
|
|
|
96
79
|
stream: ReadableStream<Uint8Array>;
|
|
97
80
|
};
|
|
98
81
|
}
|
|
82
|
+
export declare namespace BugReport {
|
|
83
|
+
interface Capabilities {
|
|
84
|
+
supportsBugReport: boolean;
|
|
85
|
+
bugReportZVersion?: string | undefined;
|
|
86
|
+
supportsBugReportZ: boolean;
|
|
87
|
+
supportsBugReportZProgress: boolean;
|
|
88
|
+
supportsBugReportZStream: boolean;
|
|
89
|
+
}
|
|
90
|
+
interface BugReportZOptions {
|
|
91
|
+
signal?: AbortSignal;
|
|
92
|
+
/**
|
|
93
|
+
* A callback that will be called when progress is updated.
|
|
94
|
+
*
|
|
95
|
+
* Specify `onProgress` when `supportsBugReportZProgress` is `false` will throw an error.
|
|
96
|
+
*/
|
|
97
|
+
onProgress?: ((completed: string, total: string) => void) | undefined;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
99
100
|
//# sourceMappingURL=bug-report.d.ts.map
|
package/esm/bug-report.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bug-report.d.ts","sourceRoot":"","sources":["../src/bug-report.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"bug-report.d.ts","sourceRoot":"","sources":["../src/bug-report.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAU3E,qBAAa,SAAS;;IAClB,MAAM,CAAC,aAAa,EAAE,MAAM,CAAkB;IAE9C,MAAM,CAAC,WAAW,EAAE,MAAM,CAAgB;IAE1C,MAAM,CAAC,cAAc,EAAE,MAAM,CAAyB;IAEtD,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAa;IAEpC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAe;IAExC;;OAEG;WACU,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAqD5D;;;;OAIG;IACH,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAGD;;;;OAIG;IACH,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAE1C;IAGD;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAGD;;;;OAIG;IACH,IAAI,0BAA0B,IAAI,OAAO,CAExC;IAGD;;;;OAIG;IACH,IAAI,wBAAwB,IAAI,OAAO,CAEtC;gBAEW,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY;IAW1D;;;;OAIG;IACH,SAAS,IAAI,cAAc,CAAC,UAAU,CAAC;IAevC;;;;;;;OAOG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAmExE;;;;OAIG;IACH,gBAAgB,IAAI,cAAc,CAAC,UAAU,CAAC;IAiC9C;;;;;;;;;;OAUG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;QAChE,IAAI,EAAE,WAAW,GAAG,YAAY,CAAC;QACjC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;KACtC;CAmCJ;AAED,yBAAiB,SAAS,CAAC;IACvB,UAAiB,YAAY;QACzB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvC,kBAAkB,EAAE,OAAO,CAAC;QAC5B,0BAA0B,EAAE,OAAO,CAAC;QACpC,wBAAwB,EAAE,OAAO,CAAC;KACrC;IAED,UAAiB,iBAAiB;QAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB;;;;WAIG;QACH,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;KACzE;CACJ"}
|
package/esm/bug-report.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// cspell: ignore bugreport
|
|
2
2
|
// cspell: ignore bugreportz
|
|
3
|
-
import { AdbServiceBase } from "@yume-chan/adb";
|
|
4
3
|
import { AbortController, PushReadableStream, SplitStringStream, TextDecoderStream, WrapReadableStream, WritableStream, } from "@yume-chan/stream-extra";
|
|
5
|
-
export class BugReport
|
|
4
|
+
export class BugReport {
|
|
6
5
|
static VERSION_REGEX = /(\d+)\.(\d+)/;
|
|
7
6
|
static BEGIN_REGEX = /BEGIN:(.*)/;
|
|
8
7
|
static PROGRESS_REGEX = /PROGRESS:(.*)\/(.*)/;
|
|
@@ -22,10 +21,10 @@ export class BugReport extends AdbServiceBase {
|
|
|
22
21
|
supportsBugReportZStream: false,
|
|
23
22
|
});
|
|
24
23
|
}
|
|
25
|
-
const result = await adb.subprocess.shellProtocol
|
|
26
|
-
"bugreportz",
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
const result = await adb.subprocess.shellProtocol
|
|
25
|
+
.spawn(["bugreportz", "-v"])
|
|
26
|
+
.wait()
|
|
27
|
+
.toString();
|
|
29
28
|
if (result.exitCode !== 0 || result.stderr === "") {
|
|
30
29
|
return new BugReport(adb, {
|
|
31
30
|
supportsBugReport: true,
|
|
@@ -57,6 +56,7 @@ export class BugReport extends AdbServiceBase {
|
|
|
57
56
|
supportsBugReportZStream: major > 1 || minor >= 2,
|
|
58
57
|
});
|
|
59
58
|
}
|
|
59
|
+
#adb;
|
|
60
60
|
#supportsBugReport;
|
|
61
61
|
/**
|
|
62
62
|
* Gets whether the device supports flat (text file, non-zipped) bugreport.
|
|
@@ -103,7 +103,7 @@ export class BugReport extends AdbServiceBase {
|
|
|
103
103
|
return this.#supportsBugReportZStream;
|
|
104
104
|
}
|
|
105
105
|
constructor(adb, capabilities) {
|
|
106
|
-
|
|
106
|
+
this.#adb = adb;
|
|
107
107
|
this.#supportsBugReport = capabilities.supportsBugReport;
|
|
108
108
|
this.#bugReportZVersion = capabilities.bugReportZVersion;
|
|
109
109
|
this.#supportsBugReportZ = capabilities.supportsBugReportZ;
|
|
@@ -122,7 +122,7 @@ export class BugReport extends AdbServiceBase {
|
|
|
122
122
|
}
|
|
123
123
|
return new WrapReadableStream(async () => {
|
|
124
124
|
// https://cs.android.com/android/platform/superproject/+/master:frameworks/native/cmds/bugreport/bugreport.cpp;drc=9b73bf07d73dbab5b792632e1e233edbad77f5fd;bpv=0;bpt=0
|
|
125
|
-
const process = await this
|
|
125
|
+
const process = await this.#adb.subprocess.noneProtocol.spawn("bugreport");
|
|
126
126
|
return process.output;
|
|
127
127
|
});
|
|
128
128
|
}
|
|
@@ -149,16 +149,16 @@ export class BugReport extends AdbServiceBase {
|
|
|
149
149
|
args.push("-p");
|
|
150
150
|
}
|
|
151
151
|
// `subprocess.shellProtocol` must be defined when `this.#supportsBugReportZ` is `true`
|
|
152
|
-
const process = await this
|
|
152
|
+
const process = await this.#adb.subprocess.shellProtocol.spawn(args);
|
|
153
153
|
options?.signal?.addEventListener("abort", () => {
|
|
154
154
|
void process.kill();
|
|
155
155
|
});
|
|
156
156
|
let filename;
|
|
157
157
|
let error;
|
|
158
|
-
|
|
158
|
+
const lines = process.stdout
|
|
159
159
|
.pipeThrough(new TextDecoderStream())
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
.pipeThrough(new SplitStringStream("\n", { trim: true }));
|
|
161
|
+
for await (const line of lines) {
|
|
162
162
|
// `BEGIN:` and `PROGRESS:` only appear when `-p` is specified.
|
|
163
163
|
let match = line.match(BugReport.PROGRESS_REGEX);
|
|
164
164
|
if (match) {
|
|
@@ -195,10 +195,7 @@ export class BugReport extends AdbServiceBase {
|
|
|
195
195
|
*/
|
|
196
196
|
bugReportZStream() {
|
|
197
197
|
return new PushReadableStream(async (controller) => {
|
|
198
|
-
const process = await this
|
|
199
|
-
"bugreportz",
|
|
200
|
-
"-s",
|
|
201
|
-
]);
|
|
198
|
+
const process = await this.#adb.subprocess.shellProtocol.spawn(["bugreportz", "-s"], controller.abortSignal);
|
|
202
199
|
process.stdout
|
|
203
200
|
.pipeTo(new WritableStream({
|
|
204
201
|
async write(chunk) {
|
|
@@ -238,13 +235,11 @@ export class BugReport extends AdbServiceBase {
|
|
|
238
235
|
}
|
|
239
236
|
if (this.#supportsBugReportZ) {
|
|
240
237
|
let path;
|
|
241
|
-
let sync;
|
|
242
238
|
const controller = new AbortController();
|
|
243
239
|
const cleanup = async () => {
|
|
244
240
|
controller.abort();
|
|
245
|
-
await sync?.dispose();
|
|
246
241
|
if (path) {
|
|
247
|
-
await this
|
|
242
|
+
await this.#adb.rm(path);
|
|
248
243
|
}
|
|
249
244
|
};
|
|
250
245
|
return {
|
|
@@ -257,8 +252,7 @@ export class BugReport extends AdbServiceBase {
|
|
|
257
252
|
? onProgress
|
|
258
253
|
: undefined,
|
|
259
254
|
});
|
|
260
|
-
|
|
261
|
-
return sync.read(path);
|
|
255
|
+
return this.#adb.sync.read(path);
|
|
262
256
|
},
|
|
263
257
|
cancel: cleanup,
|
|
264
258
|
close: cleanup,
|
package/esm/bug-report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bug-report.js","sourceRoot":"","sources":["../src/bug-report.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,4BAA4B;
|
|
1
|
+
{"version":3,"file":"bug-report.js","sourceRoot":"","sources":["../src/bug-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cmd/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
package/esm/cmd/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cmd/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Adb } from "@yume-chan/adb";
|
|
2
|
+
import { Cmd } from "./service.js";
|
|
3
|
+
export declare function createNoneProtocol(adb: Adb, fallback: NonNullable<Cmd.Fallback>): Cmd.NoneProtocolService;
|
|
4
|
+
export declare function createNoneProtocol(adb: Adb, fallback?: Cmd.Fallback): Cmd.NoneProtocolService | undefined;
|
|
5
|
+
//# sourceMappingURL=none.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"none.d.ts","sourceRoot":"","sources":["../../src/cmd/none.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAQ1C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,wBAAgB,kBAAkB,CAC9B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,GACpC,GAAG,CAAC,mBAAmB,CAAC;AAC3B,wBAAgB,kBAAkB,CAC9B,GAAG,EAAE,GAAG,EACR,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,GACxB,GAAG,CAAC,mBAAmB,GAAG,SAAS,CAAC"}
|
package/esm/cmd/none.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AdbFeature, AdbNoneProtocolProcessImpl, adbNoneProtocolSpawner, escapeArg, } from "@yume-chan/adb";
|
|
2
|
+
import { Cmd } from "./service.js";
|
|
3
|
+
import { checkCommand, resolveFallback, serializeAbbService } from "./utils.js";
|
|
4
|
+
export function createNoneProtocol(adb, fallback) {
|
|
5
|
+
if (adb.canUseFeature(AdbFeature.AbbExec)) {
|
|
6
|
+
return {
|
|
7
|
+
mode: Cmd.Mode.Abb,
|
|
8
|
+
spawn: adbNoneProtocolSpawner(async (command, signal) => {
|
|
9
|
+
const service = serializeAbbService("abb_exec", command);
|
|
10
|
+
const socket = await adb.createSocket(service);
|
|
11
|
+
return new AdbNoneProtocolProcessImpl(socket, signal);
|
|
12
|
+
}),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
if (adb.canUseFeature(AdbFeature.Cmd)) {
|
|
16
|
+
return {
|
|
17
|
+
mode: Cmd.Mode.Cmd,
|
|
18
|
+
spawn: adbNoneProtocolSpawner(async (command, signal) => {
|
|
19
|
+
checkCommand(command);
|
|
20
|
+
const newCommand = command.map(escapeArg);
|
|
21
|
+
newCommand.unshift("cmd");
|
|
22
|
+
return adb.subprocess.noneProtocol.spawn(newCommand, signal);
|
|
23
|
+
}),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if (fallback) {
|
|
27
|
+
return {
|
|
28
|
+
mode: Cmd.Mode.Fallback,
|
|
29
|
+
spawn: adbNoneProtocolSpawner(async (command, signal) => {
|
|
30
|
+
checkCommand(command);
|
|
31
|
+
const newCommand = command.map(escapeArg);
|
|
32
|
+
newCommand[0] = resolveFallback(fallback, command[0]);
|
|
33
|
+
return adb.subprocess.noneProtocol.spawn(newCommand, signal);
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=none.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"none.js","sourceRoot":"","sources":["../../src/cmd/none.ts"],"names":[],"mappings":"AACA,OAAO,EACH,UAAU,EACV,0BAA0B,EAC1B,sBAAsB,EACtB,SAAS,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAUhF,MAAM,UAAU,kBAAkB,CAC9B,GAAQ,EACR,QAAuB;IAEvB,IAAI,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO;YACH,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG;YAClB,KAAK,EAAE,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBACpD,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACzD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC/C,OAAO,IAAI,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1D,CAAC,CAAC;SACL,CAAC;IACN,CAAC;IAED,IAAI,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO;YACH,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG;YAClB,KAAK,EAAE,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBACpD,YAAY,CAAC,OAAO,CAAC,CAAC;gBAEtB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC1C,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1B,OAAO,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACjE,CAAC,CAAC;SACL,CAAC;IACN,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO;YACH,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBACpD,YAAY,CAAC,OAAO,CAAC,CAAC;gBAEtB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC1C,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;gBACvD,OAAO,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACjE,CAAC,CAAC;SACL,CAAC;IACN,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Adb, AdbNoneProtocolSpawner, AdbShellProtocolSpawner } from "@yume-chan/adb";
|
|
2
|
+
import { createNoneProtocol } from "./none.js";
|
|
3
|
+
import { createShellProtocol } from "./shell.js";
|
|
4
|
+
export declare class Cmd {
|
|
5
|
+
#private;
|
|
6
|
+
static readonly Mode: {
|
|
7
|
+
readonly Abb: 0;
|
|
8
|
+
readonly Cmd: 1;
|
|
9
|
+
readonly Fallback: 2;
|
|
10
|
+
};
|
|
11
|
+
static readonly createNoneProtocol: typeof createNoneProtocol;
|
|
12
|
+
static readonly createShellProtocol: typeof createShellProtocol;
|
|
13
|
+
get noneProtocol(): Cmd.NoneProtocolService | undefined;
|
|
14
|
+
get shellProtocol(): Cmd.ShellProtocolService | undefined;
|
|
15
|
+
constructor(adb: Adb, fallback?: Cmd.Fallback);
|
|
16
|
+
}
|
|
17
|
+
export declare namespace Cmd {
|
|
18
|
+
type Fallback = string | Record<string, string> | ((service: string) => string) | undefined;
|
|
19
|
+
type Mode = (typeof Cmd.Mode)[keyof typeof Cmd.Mode];
|
|
20
|
+
interface NoneProtocolService {
|
|
21
|
+
mode: Mode;
|
|
22
|
+
spawn: AdbNoneProtocolSpawner;
|
|
23
|
+
}
|
|
24
|
+
interface ShellProtocolService {
|
|
25
|
+
mode: Mode;
|
|
26
|
+
spawn: AdbShellProtocolSpawner;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cmd/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,GAAG,EACH,sBAAsB,EACtB,uBAAuB,EAC1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,GAAG;;IACZ,MAAM,CAAC,QAAQ,CAAC,IAAI;;;;MAIT;IAEX,MAAM,CAAC,QAAQ,CAAC,kBAAkB,4BAAsB;IACxD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,6BAAuB;IAG1D,IAAI,YAAY,wCAEf;IAGD,IAAI,aAAa,yCAEhB;gBAEW,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ;CAIhD;AAED,yBAAiB,GAAG,CAAC;IACjB,KAAY,QAAQ,GACd,MAAM,GACN,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,GAC7B,SAAS,CAAC;IAEhB,KAAY,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;IAE5D,UAAiB,mBAAmB;QAChC,IAAI,EAAE,IAAI,CAAC;QACX,KAAK,EAAE,sBAAsB,CAAC;KACjC;IAED,UAAiB,oBAAoB;QACjC,IAAI,EAAE,IAAI,CAAC;QACX,KAAK,EAAE,uBAAuB,CAAC;KAClC;CACJ"}
|