@yume-chan/adb 0.0.11 → 0.0.14
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/CHANGELOG.json +39 -0
- package/CHANGELOG.md +23 -1
- package/README.md +24 -17
- package/esm/adb.d.ts +10 -9
- package/esm/adb.d.ts.map +1 -1
- package/esm/adb.js +87 -64
- package/esm/adb.js.map +1 -1
- package/esm/auth.d.ts +6 -6
- package/esm/auth.d.ts.map +1 -1
- package/esm/auth.js +8 -6
- package/esm/auth.js.map +1 -1
- package/esm/backend.d.ts +2 -2
- package/esm/commands/install.d.ts.map +1 -1
- package/esm/commands/install.js +5 -7
- package/esm/commands/install.js.map +1 -1
- package/esm/commands/reverse.d.ts +7 -10
- package/esm/commands/reverse.d.ts.map +1 -1
- package/esm/commands/reverse.js +9 -15
- package/esm/commands/reverse.js.map +1 -1
- package/esm/commands/subprocess/index.d.ts +19 -20
- package/esm/commands/subprocess/index.d.ts.map +1 -1
- package/esm/commands/subprocess/index.js +36 -31
- package/esm/commands/subprocess/index.js.map +1 -1
- package/esm/commands/subprocess/legacy.d.ts +14 -7
- package/esm/commands/subprocess/legacy.d.ts.map +1 -1
- package/esm/commands/subprocess/legacy.js +14 -5
- package/esm/commands/subprocess/legacy.js.map +1 -1
- package/esm/commands/subprocess/protocol.d.ts +3 -2
- package/esm/commands/subprocess/protocol.d.ts.map +1 -1
- package/esm/commands/subprocess/protocol.js +6 -4
- package/esm/commands/subprocess/protocol.js.map +1 -1
- package/esm/commands/subprocess/protocols/index.d.ts +4 -0
- package/esm/commands/subprocess/protocols/index.d.ts.map +1 -0
- package/esm/commands/subprocess/protocols/index.js +4 -0
- package/esm/commands/subprocess/protocols/index.js.map +1 -0
- package/esm/commands/subprocess/protocols/none.d.ts +35 -0
- package/esm/commands/subprocess/protocols/none.d.ts.map +1 -0
- package/esm/commands/subprocess/protocols/none.js +53 -0
- package/esm/commands/subprocess/protocols/none.js.map +1 -0
- package/esm/commands/subprocess/protocols/shell.d.ts +39 -0
- package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -0
- package/esm/commands/subprocess/protocols/shell.js +155 -0
- package/esm/commands/subprocess/protocols/shell.js.map +1 -0
- package/esm/commands/subprocess/protocols/types.d.ts +50 -0
- package/esm/commands/subprocess/protocols/types.d.ts.map +1 -0
- package/esm/commands/subprocess/protocols/types.js +2 -0
- package/esm/commands/subprocess/protocols/types.js.map +1 -0
- package/esm/commands/subprocess/types.d.ts +9 -6
- package/esm/commands/subprocess/types.d.ts.map +1 -1
- package/esm/commands/sync/list.d.ts +25 -1
- package/esm/commands/sync/list.d.ts.map +1 -1
- package/esm/commands/sync/list.js +40 -5
- package/esm/commands/sync/list.js.map +1 -1
- package/esm/commands/sync/pull.d.ts.map +1 -1
- package/esm/commands/sync/pull.js +6 -3
- package/esm/commands/sync/pull.js.map +1 -1
- package/esm/commands/sync/request.d.ts +1 -0
- package/esm/commands/sync/request.d.ts.map +1 -1
- package/esm/commands/sync/request.js +1 -0
- package/esm/commands/sync/request.js.map +1 -1
- package/esm/commands/sync/response.d.ts +2 -1
- package/esm/commands/sync/response.d.ts.map +1 -1
- package/esm/commands/sync/response.js +2 -1
- package/esm/commands/sync/response.js.map +1 -1
- package/esm/commands/sync/stat.d.ts +13 -1
- package/esm/commands/sync/stat.d.ts.map +1 -1
- package/esm/commands/sync/stat.js +20 -7
- package/esm/commands/sync/stat.js.map +1 -1
- package/esm/commands/sync/sync.d.ts +13 -35
- package/esm/commands/sync/sync.d.ts.map +1 -1
- package/esm/commands/sync/sync.js +39 -9
- package/esm/commands/sync/sync.js.map +1 -1
- package/esm/crypto.d.ts +23 -10
- package/esm/crypto.d.ts.map +1 -1
- package/esm/crypto.js +64 -46
- package/esm/crypto.js.map +1 -1
- package/esm/features.d.ts +4 -2
- package/esm/features.d.ts.map +1 -1
- package/esm/features.js +6 -2
- package/esm/features.js.map +1 -1
- package/esm/packet.d.ts +21 -2
- package/esm/packet.d.ts.map +1 -1
- package/esm/packet.js +2 -2
- package/esm/packet.js.map +1 -1
- package/esm/socket/dispatcher.d.ts +34 -23
- package/esm/socket/dispatcher.d.ts.map +1 -1
- package/esm/socket/dispatcher.js +92 -70
- package/esm/socket/dispatcher.js.map +1 -1
- package/esm/socket/socket.d.ts +29 -8
- package/esm/socket/socket.d.ts.map +1 -1
- package/esm/socket/socket.js +41 -27
- package/esm/socket/socket.js.map +1 -1
- package/esm/stream/detect.d.ts +1 -17
- package/esm/stream/detect.d.ts.map +1 -1
- package/esm/stream/detect.js +4 -5
- package/esm/stream/detect.js.map +1 -1
- package/esm/stream/detect.polyfill.d.ts.map +1 -1
- package/esm/stream/detect.polyfill.js +4 -1
- package/esm/stream/detect.polyfill.js.map +1 -1
- package/esm/stream/transform.d.ts +37 -32
- package/esm/stream/transform.d.ts.map +1 -1
- package/esm/stream/transform.js +106 -92
- package/esm/stream/transform.js.map +1 -1
- package/esm/utils/encoding.d.ts.map +1 -1
- package/esm/utils/encoding.js.map +1 -1
- package/esm/utils/index.d.ts +1 -1
- package/esm/utils/index.d.ts.map +1 -1
- package/esm/utils/index.js +1 -1
- package/esm/utils/index.js.map +1 -1
- package/package.json +6 -6
- package/src/adb.ts +105 -76
- package/src/auth.ts +21 -18
- package/src/backend.ts +2 -2
- package/src/commands/install.ts +7 -9
- package/src/commands/reverse.ts +13 -24
- package/src/commands/subprocess/index.ts +57 -42
- package/src/commands/subprocess/protocols/index.ts +3 -0
- package/src/commands/subprocess/{legacy.ts → protocols/none.ts} +20 -10
- package/src/commands/subprocess/{protocol.ts → protocols/shell.ts} +22 -17
- package/src/commands/subprocess/{types.ts → protocols/types.ts} +13 -9
- package/src/commands/sync/list.ts +51 -5
- package/src/commands/sync/pull.ts +6 -3
- package/src/commands/sync/request.ts +1 -0
- package/src/commands/sync/response.ts +8 -2
- package/src/commands/sync/stat.ts +36 -9
- package/src/commands/sync/sync.ts +55 -19
- package/src/crypto.ts +72 -56
- package/src/features.ts +6 -2
- package/src/packet.ts +17 -6
- package/src/socket/dispatcher.ts +133 -88
- package/src/socket/socket.ts +61 -48
- package/src/stream/detect.polyfill.ts +4 -1
- package/src/stream/detect.ts +4 -24
- package/src/stream/transform.ts +133 -116
- package/src/utils/index.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/src/utils/encoding.ts +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAkB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,MAAM,UAAU,OAAO,CACnB,GAAQ;IAER,MAAM,QAAQ,GAAG,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhF,OAAO,IAAI,kBAAkB,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAkB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,MAAM,UAAU,OAAO,CACnB,GAAQ;IAER,MAAM,QAAQ,GAAG,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhF,IAAI,IAAc,CAAC;IACnB,OAAO,IAAI,kBAAkB,CAAa;QACtC,KAAK,CAAC,KAAK;YACP,qEAAqE;YAErE,gCAAgC;YAChC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,CAAC,KAAK;YACP,IAAI,CAAC,OAAO,EAAE,CAAC;YAEf,oCAAoC;YACpC,MAAM,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEhF,uBAAuB;YACvB,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import { AutoDisposable } from '@yume-chan/event';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
export interface AdbReverseHandler {
|
|
5
|
-
onSocket(packet: AdbPacketCore, socket: AdbSocket): void;
|
|
6
|
-
}
|
|
2
|
+
import type { Adb } from "../adb.js";
|
|
3
|
+
import type { AdbIncomingSocketHandler, AdbSocket } from '../socket/index.js';
|
|
7
4
|
export interface AdbForwardListener {
|
|
8
5
|
deviceSerial: string;
|
|
9
6
|
localName: string;
|
|
10
7
|
remoteName: string;
|
|
11
8
|
}
|
|
12
9
|
export declare class AdbReverseCommand extends AutoDisposable {
|
|
13
|
-
protected localPortToHandler: Map<number,
|
|
10
|
+
protected localPortToHandler: Map<number, AdbIncomingSocketHandler>;
|
|
14
11
|
protected deviceAddressToLocalPort: Map<string, number>;
|
|
15
|
-
protected
|
|
12
|
+
protected adb: Adb;
|
|
16
13
|
protected listening: boolean;
|
|
17
|
-
constructor(
|
|
18
|
-
protected handleIncomingSocket(
|
|
14
|
+
constructor(adb: Adb);
|
|
15
|
+
protected handleIncomingSocket: (socket: AdbSocket) => Promise<boolean>;
|
|
19
16
|
private createBufferedStream;
|
|
20
17
|
private sendRequest;
|
|
21
18
|
list(): Promise<AdbForwardListener[]>;
|
|
@@ -25,7 +22,7 @@ export declare class AdbReverseCommand extends AutoDisposable {
|
|
|
25
22
|
* @param handler A callback to handle incoming connections
|
|
26
23
|
* @returns If `deviceAddress` is `tcp:0`, return `tcp:{ACTUAL_LISTENING_PORT}`; otherwise, return `deviceAddress`.
|
|
27
24
|
*/
|
|
28
|
-
add(deviceAddress: string, localPort: number, handler:
|
|
25
|
+
add(deviceAddress: string, localPort: number, handler: AdbIncomingSocketHandler): Promise<string>;
|
|
29
26
|
remove(deviceAddress: string): Promise<void>;
|
|
30
27
|
removeAll(): Promise<void>;
|
|
31
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI9E,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,EAAE,MAAM,CAAC;CACtB;AAcD,qBAAa,iBAAkB,SAAQ,cAAc;IACjD,SAAS,CAAC,kBAAkB,wCAA+C;IAE3E,SAAS,CAAC,wBAAwB,sBAA6B;IAE/D,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,SAAS,CAAC,SAAS,UAAS;gBAET,GAAG,EAAE,GAAG;IAO3B,SAAS,CAAC,oBAAoB,WAAkB,SAAS,sBAKvD;YAEY,oBAAoB;YAKpB,WAAW;IASZ,IAAI,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAYlD;;;;;OAKG;IACU,GAAG,CACZ,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,MAAM,CAAC;IAiBL,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ1C"}
|
package/esm/commands/reverse.js
CHANGED
|
@@ -14,27 +14,21 @@ const AdbReverseErrorResponse = new Struct({ littleEndian: true })
|
|
|
14
14
|
export class AdbReverseCommand extends AutoDisposable {
|
|
15
15
|
localPortToHandler = new Map();
|
|
16
16
|
deviceAddressToLocalPort = new Map();
|
|
17
|
-
|
|
17
|
+
adb;
|
|
18
18
|
listening = false;
|
|
19
|
-
constructor(
|
|
19
|
+
constructor(adb) {
|
|
20
20
|
super();
|
|
21
|
-
this.
|
|
22
|
-
this.addDisposable(this.
|
|
21
|
+
this.adb = adb;
|
|
22
|
+
this.addDisposable(this.adb.addIncomingSocketHandler(this.handleIncomingSocket));
|
|
23
23
|
}
|
|
24
|
-
handleIncomingSocket(
|
|
25
|
-
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const address = decodeUtf8(e.packet.payload);
|
|
24
|
+
handleIncomingSocket = async (socket) => {
|
|
25
|
+
const address = socket.serviceString;
|
|
29
26
|
// Address format: `tcp:12345\0`
|
|
30
27
|
const port = Number.parseInt(address.substring(4));
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
e.handled = true;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
28
|
+
return !!(await this.localPortToHandler.get(port)?.(socket));
|
|
29
|
+
};
|
|
36
30
|
async createBufferedStream(service) {
|
|
37
|
-
const socket = await this.
|
|
31
|
+
const socket = await this.adb.createSocket(service);
|
|
38
32
|
return new AdbBufferedStream(socket);
|
|
39
33
|
}
|
|
40
34
|
async sendRequest(service) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
import type { Adb } from '../../adb.js';
|
|
2
|
-
import type
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './protocol.js';
|
|
5
|
-
export * from './types.js';
|
|
2
|
+
import { type AdbSubprocessProtocol, type AdbSubprocessProtocolConstructor } from './protocols/index.js';
|
|
3
|
+
export * from './protocols/index.js';
|
|
6
4
|
export * from './utils.js';
|
|
7
5
|
export interface AdbSubprocessOptions {
|
|
8
6
|
/**
|
|
9
|
-
* A list of `
|
|
7
|
+
* A list of `AdbSubprocessProtocolConstructor`s to be used.
|
|
10
8
|
*
|
|
11
|
-
* Different `
|
|
12
|
-
* Check
|
|
9
|
+
* Different `AdbSubprocessProtocol` has different capabilities, thus requires specific adaptations.
|
|
10
|
+
* Check their documentations for details.
|
|
13
11
|
*
|
|
14
|
-
* The first
|
|
15
|
-
* If no `
|
|
12
|
+
* The first protocol whose `isSupported` returns `true` will be used.
|
|
13
|
+
* If no `AdbSubprocessProtocol` is supported, an error will be thrown.
|
|
16
14
|
*
|
|
17
|
-
*
|
|
15
|
+
* @default [AdbSubprocessShellProtocol, AdbSubprocessNoneProtocol]
|
|
18
16
|
*/
|
|
19
17
|
protocols: AdbSubprocessProtocolConstructor[];
|
|
20
18
|
}
|
|
21
|
-
export interface
|
|
19
|
+
export interface AdbSubprocessWaitResult {
|
|
22
20
|
stdout: string;
|
|
23
21
|
stderr: string;
|
|
24
22
|
exitCode: number;
|
|
@@ -28,25 +26,26 @@ export declare class AdbSubprocess {
|
|
|
28
26
|
constructor(adb: Adb);
|
|
29
27
|
private createProtocol;
|
|
30
28
|
/**
|
|
31
|
-
* Spawns
|
|
32
|
-
* @param
|
|
33
|
-
* @
|
|
29
|
+
* Spawns an executable in PTY (interactive) mode.
|
|
30
|
+
* @param command The command to run. If omitted, the default shell will be spawned.
|
|
31
|
+
* @param options The options for creating the `AdbSubprocessProtocol`
|
|
32
|
+
* @returns A new `AdbSubprocessProtocol` instance connecting to the spawned process.
|
|
34
33
|
*/
|
|
35
|
-
shell(options?: Partial<AdbSubprocessOptions>): Promise<AdbSubprocessProtocol>;
|
|
34
|
+
shell(command?: string | string[], options?: Partial<AdbSubprocessOptions>): Promise<AdbSubprocessProtocol>;
|
|
36
35
|
/**
|
|
37
|
-
* Spawns
|
|
36
|
+
* Spawns an executable and pipe the output.
|
|
38
37
|
* @param command The command to run, or an array of strings containing both command and args.
|
|
39
|
-
* @param options The options for creating the `
|
|
40
|
-
* @returns A new `
|
|
38
|
+
* @param options The options for creating the `AdbSubprocessProtocol`
|
|
39
|
+
* @returns A new `AdbSubprocessProtocol` instance connecting to the spawned process.
|
|
41
40
|
*/
|
|
42
41
|
spawn(command: string | string[], options?: Partial<AdbSubprocessOptions>): Promise<AdbSubprocessProtocol>;
|
|
43
42
|
/**
|
|
44
43
|
* Spawns a new process, waits until it exits, and returns the entire output.
|
|
45
44
|
* @param command The command to run
|
|
46
|
-
* @param options The options for creating the `
|
|
45
|
+
* @param options The options for creating the `AdbSubprocessProtocol`
|
|
47
46
|
* @returns The entire output of the command
|
|
48
47
|
*/
|
|
49
|
-
spawnAndWait(command: string | string[], options?: Partial<AdbSubprocessOptions>): Promise<
|
|
48
|
+
spawnAndWait(command: string | string[], options?: Partial<AdbSubprocessOptions>): Promise<AdbSubprocessWaitResult>;
|
|
50
49
|
/**
|
|
51
50
|
* Spawns a new process, waits until it exits, and returns the entire output.
|
|
52
51
|
* @param command The command to run
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAyD,KAAK,qBAAqB,EAAE,KAAK,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAEhK,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACjC;;;;;;;;;;OAUG;IACH,SAAS,EAAE,gCAAgC,EAAE,CAAC;CACjD;AAMD,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IACtB,SAAgB,GAAG,EAAE,GAAG,CAAC;gBAEN,GAAG,EAAE,GAAG;YAIb,cAAc;IA6B5B;;;;;OAKG;IACI,KAAK,CACR,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,qBAAqB,CAAC;IAIjC;;;;;OAKG;IACI,KAAK,CACR,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,qBAAqB,CAAC;IAIjC;;;;;OAKG;IACU,YAAY,CACrB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,uBAAuB,CAAC;IAuBnC;;;;OAIG;IACU,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAO/E"}
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import { DecodeUtf8Stream, GatherStringStream } from "../../stream/index.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export * from './legacy.js';
|
|
5
|
-
export * from './protocol.js';
|
|
6
|
-
export * from './types.js';
|
|
2
|
+
import { AdbSubprocessNoneProtocol, AdbSubprocessShellProtocol } from './protocols/index.js';
|
|
3
|
+
export * from './protocols/index.js';
|
|
7
4
|
export * from './utils.js';
|
|
8
|
-
const
|
|
9
|
-
protocols: [
|
|
5
|
+
const DEFAULT_OPTIONS = {
|
|
6
|
+
protocols: [AdbSubprocessShellProtocol, AdbSubprocessNoneProtocol],
|
|
10
7
|
};
|
|
11
8
|
export class AdbSubprocess {
|
|
12
9
|
adb;
|
|
13
10
|
constructor(adb) {
|
|
14
11
|
this.adb = adb;
|
|
15
12
|
}
|
|
16
|
-
async createProtocol(command, options) {
|
|
17
|
-
|
|
13
|
+
async createProtocol(mode, command, options) {
|
|
14
|
+
const { protocols } = { ...DEFAULT_OPTIONS, ...options };
|
|
18
15
|
let Constructor;
|
|
19
16
|
for (const item of protocols) {
|
|
17
|
+
// It's async so can't use `Array#find`
|
|
20
18
|
if (await item.isSupported(this.adb)) {
|
|
21
19
|
Constructor = item;
|
|
22
20
|
break;
|
|
@@ -25,45 +23,52 @@ export class AdbSubprocess {
|
|
|
25
23
|
if (!Constructor) {
|
|
26
24
|
throw new Error('No specified protocol is supported by the device');
|
|
27
25
|
}
|
|
28
|
-
|
|
26
|
+
if (Array.isArray(command)) {
|
|
27
|
+
command = command.join(' ');
|
|
28
|
+
}
|
|
29
|
+
else if (command === undefined) {
|
|
30
|
+
// spawn the default shell
|
|
31
|
+
command = '';
|
|
32
|
+
}
|
|
33
|
+
return await Constructor[mode](this.adb, command);
|
|
29
34
|
}
|
|
30
35
|
/**
|
|
31
|
-
* Spawns
|
|
32
|
-
* @param
|
|
33
|
-
* @
|
|
36
|
+
* Spawns an executable in PTY (interactive) mode.
|
|
37
|
+
* @param command The command to run. If omitted, the default shell will be spawned.
|
|
38
|
+
* @param options The options for creating the `AdbSubprocessProtocol`
|
|
39
|
+
* @returns A new `AdbSubprocessProtocol` instance connecting to the spawned process.
|
|
34
40
|
*/
|
|
35
|
-
shell(options) {
|
|
36
|
-
return this.createProtocol('', options);
|
|
41
|
+
shell(command, options) {
|
|
42
|
+
return this.createProtocol('pty', command, options);
|
|
37
43
|
}
|
|
38
44
|
/**
|
|
39
|
-
* Spawns
|
|
45
|
+
* Spawns an executable and pipe the output.
|
|
40
46
|
* @param command The command to run, or an array of strings containing both command and args.
|
|
41
|
-
* @param options The options for creating the `
|
|
42
|
-
* @returns A new `
|
|
47
|
+
* @param options The options for creating the `AdbSubprocessProtocol`
|
|
48
|
+
* @returns A new `AdbSubprocessProtocol` instance connecting to the spawned process.
|
|
43
49
|
*/
|
|
44
50
|
spawn(command, options) {
|
|
45
|
-
|
|
46
|
-
command = command.join(' ');
|
|
47
|
-
}
|
|
48
|
-
return this.createProtocol(command, options);
|
|
51
|
+
return this.createProtocol('raw', command, options);
|
|
49
52
|
}
|
|
50
53
|
/**
|
|
51
54
|
* Spawns a new process, waits until it exits, and returns the entire output.
|
|
52
55
|
* @param command The command to run
|
|
53
|
-
* @param options The options for creating the `
|
|
56
|
+
* @param options The options for creating the `AdbSubprocessProtocol`
|
|
54
57
|
* @returns The entire output of the command
|
|
55
58
|
*/
|
|
56
59
|
async spawnAndWait(command, options) {
|
|
57
60
|
const shell = await this.spawn(command, options);
|
|
58
61
|
const stdout = new GatherStringStream();
|
|
59
|
-
shell.stdout
|
|
60
|
-
.pipeThrough(new DecodeUtf8Stream())
|
|
61
|
-
.pipeThrough(stdout);
|
|
62
62
|
const stderr = new GatherStringStream();
|
|
63
|
-
|
|
64
|
-
.
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
const [, , exitCode] = await Promise.all([
|
|
64
|
+
shell.stdout
|
|
65
|
+
.pipeThrough(new DecodeUtf8Stream())
|
|
66
|
+
.pipeTo(stdout),
|
|
67
|
+
shell.stderr
|
|
68
|
+
.pipeThrough(new DecodeUtf8Stream())
|
|
69
|
+
.pipeTo(stderr),
|
|
70
|
+
shell.exit
|
|
71
|
+
]);
|
|
67
72
|
return {
|
|
68
73
|
stdout: stdout.result,
|
|
69
74
|
stderr: stderr.result,
|
|
@@ -76,7 +81,7 @@ export class AdbSubprocess {
|
|
|
76
81
|
* @returns The entire output of the command
|
|
77
82
|
*/
|
|
78
83
|
async spawnAndWaitLegacy(command) {
|
|
79
|
-
const { stdout } = await this.spawnAndWait(command, { protocols: [
|
|
84
|
+
const { stdout } = await this.spawnAndWait(command, { protocols: [AdbSubprocessNoneProtocol] });
|
|
80
85
|
return stdout;
|
|
81
86
|
}
|
|
82
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/subprocess/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/subprocess/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Adb } from "
|
|
2
|
-
import type { AdbSocket } from "
|
|
3
|
-
import { type ReadableStream } from "
|
|
4
|
-
import type { AdbSubprocessProtocol } from "
|
|
1
|
+
import type { Adb } from "../../../../src/adb.js";
|
|
2
|
+
import type { AdbSocket } from "../../../../src/socket/index.js";
|
|
3
|
+
import { type ReadableStream } from "../../../../src/stream/index.js";
|
|
4
|
+
import type { AdbSubprocessProtocol } from "../../../../src/commands/subprocess/types.js";
|
|
5
5
|
/**
|
|
6
6
|
* The legacy shell
|
|
7
7
|
*
|
|
@@ -10,14 +10,21 @@ import type { AdbSubprocessProtocol } from "./types.js";
|
|
|
10
10
|
* * `exit` exit code: No
|
|
11
11
|
* * `resize`: No
|
|
12
12
|
*/
|
|
13
|
-
export declare class
|
|
13
|
+
export declare class AdbSubprocessNoneProtocol implements AdbSubprocessProtocol {
|
|
14
14
|
static isSupported(): boolean;
|
|
15
|
-
static
|
|
15
|
+
static pty(adb: Adb, command: string): Promise<AdbSubprocessNoneProtocol>;
|
|
16
|
+
static raw(adb: Adb, command: string): Promise<AdbSubprocessNoneProtocol>;
|
|
16
17
|
private readonly socket;
|
|
17
18
|
get stdin(): import("web-streams-polyfill").WritableStream<Uint8Array>;
|
|
18
19
|
private _stdout;
|
|
20
|
+
/**
|
|
21
|
+
* Legacy shell mixes stdout and stderr.
|
|
22
|
+
*/
|
|
19
23
|
get stdout(): ReadableStream<Uint8Array>;
|
|
20
24
|
private _stderr;
|
|
25
|
+
/**
|
|
26
|
+
* `stderr` will always be empty.
|
|
27
|
+
*/
|
|
21
28
|
get stderr(): ReadableStream<Uint8Array>;
|
|
22
29
|
private _exit;
|
|
23
30
|
get exit(): Promise<number>;
|
|
@@ -25,4 +32,4 @@ export declare class AdbNoneSubprocessProtocol implements AdbSubprocessProtocol
|
|
|
25
32
|
resize(): void;
|
|
26
33
|
kill(): Promise<void>;
|
|
27
34
|
}
|
|
28
|
-
//# sourceMappingURL=legacy.d.ts.map
|
|
35
|
+
//# sourceMappingURL=legacy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/legacy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;WACrD,WAAW;WAEL,
|
|
1
|
+
{"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/legacy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;WACrD,WAAW;WAEL,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAI7B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAMjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAGnC,IAAW,KAAK,8DAAmC;IAEnD,OAAO,CAAC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,+BAA2B;IAE5C,OAAO,CAAC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,+BAA2B;IAE5C,OAAO,CAAC,KAAK,CAAkB;IAC/B,IAAW,IAAI,oBAAyB;gBAErB,MAAM,EAAE,SAAS;IAc7B,MAAM;IAIN,IAAI;CAGd"}
|
|
@@ -7,19 +7,28 @@ import { DuplexStreamFactory } from "../../stream/index.js";
|
|
|
7
7
|
* * `exit` exit code: No
|
|
8
8
|
* * `resize`: No
|
|
9
9
|
*/
|
|
10
|
-
export class
|
|
10
|
+
export class AdbSubprocessNoneProtocol {
|
|
11
11
|
static isSupported() { return true; }
|
|
12
|
-
static async
|
|
13
|
-
return new
|
|
12
|
+
static async pty(adb, command) {
|
|
13
|
+
return new AdbSubprocessNoneProtocol(await adb.createSocket(`shell:${command}`));
|
|
14
|
+
}
|
|
15
|
+
static async raw(adb, command) {
|
|
16
|
+
// Native ADB client doesn't allow none protocol + raw mode,
|
|
17
|
+
// But ADB daemon supports it.
|
|
18
|
+
return new AdbSubprocessNoneProtocol(await adb.createSocket(`shell,raw:${command}`));
|
|
14
19
|
}
|
|
15
20
|
socket;
|
|
16
21
|
// Legacy shell forwards all data to stdin.
|
|
17
22
|
get stdin() { return this.socket.writable; }
|
|
18
23
|
_stdout;
|
|
19
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Legacy shell mixes stdout and stderr.
|
|
26
|
+
*/
|
|
20
27
|
get stdout() { return this._stdout; }
|
|
21
|
-
// `stderr` of Legacy shell is always empty.
|
|
22
28
|
_stderr;
|
|
29
|
+
/**
|
|
30
|
+
* `stderr` will always be empty.
|
|
31
|
+
*/
|
|
23
32
|
get stderr() { return this._stderr; }
|
|
24
33
|
_exit;
|
|
25
34
|
get exit() { return this._exit; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../../src/commands/subprocess/legacy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,uBAAuB,CAAC;AAGjF;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IAC3B,MAAM,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAErC,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../../src/commands/subprocess/legacy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,uBAAuB,CAAC;AAGjF;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IAC3B,MAAM,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAErC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QAC7C,OAAO,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QAC7C,4DAA4D;QAC5D,8BAA8B;QAC9B,OAAO,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;IAEgB,MAAM,CAAY;IAEnC,2CAA2C;IAC3C,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE3C,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpC,KAAK,CAAkB;IAC/B,IAAW,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAExC,YAAmB,MAAiB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAyB;YAC5D,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEM,MAAM;QACT,gBAAgB;IACpB,CAAC;IAEM,IAAI;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACJ"}
|
|
@@ -18,9 +18,10 @@ export declare enum AdbShellProtocolId {
|
|
|
18
18
|
* * `exit` exit code: Yes
|
|
19
19
|
* * `resize`: Yes
|
|
20
20
|
*/
|
|
21
|
-
export declare class
|
|
21
|
+
export declare class AdbSubprocessShellProtocol implements AdbSubprocessProtocol {
|
|
22
22
|
static isSupported(adb: Adb): boolean;
|
|
23
|
-
static
|
|
23
|
+
static pty(adb: Adb, command: string): Promise<AdbSubprocessShellProtocol>;
|
|
24
|
+
static raw(adb: Adb, command: string): Promise<AdbSubprocessShellProtocol>;
|
|
24
25
|
private readonly _socket;
|
|
25
26
|
private _socketWriter;
|
|
26
27
|
private _stdin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/protocol.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAsB,cAAc,EAAmE,cAAc,EAAkE,MAAM,uBAAuB,CAAC;AAE5N,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,oBAAY,kBAAkB;IAC1B,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,UAAU,IAAA;IACV,gBAAgB,IAAA;CACnB;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/protocol.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAsB,cAAc,EAAmE,cAAc,EAAkE,MAAM,uBAAuB,CAAC;AAE5N,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,oBAAY,kBAAkB;IAC1B,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,UAAU,IAAA;IACV,gBAAgB,IAAA;CACnB;AA8ED;;;;;;;GAOG;AACH,qBAAa,0BAA2B,YAAW,qBAAqB;WACtD,WAAW,CAAC,GAAG,EAAE,GAAG;WAId,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAK7B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAIjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,aAAa,CAA0D;IAE/E,OAAO,CAAC,MAAM,CAA6B;IAC3C,IAAW,KAAK,+BAA0B;IAE1C,OAAO,CAAC,OAAO,CAA6B;IAC5C,IAAW,MAAM,+BAA2B;IAE5C,OAAO,CAAC,OAAO,CAA6B;IAC5C,IAAW,MAAM,+BAA2B;IAE5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,IAAW,IAAI,oBAAiC;gBAE7B,MAAM,EAAE,SAAS;IA0CvB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAYvC,IAAI;CAGd"}
|
|
@@ -84,14 +84,16 @@ class MultiplexStream {
|
|
|
84
84
|
* * `exit` exit code: Yes
|
|
85
85
|
* * `resize`: Yes
|
|
86
86
|
*/
|
|
87
|
-
export class
|
|
87
|
+
export class AdbSubprocessShellProtocol {
|
|
88
88
|
static isSupported(adb) {
|
|
89
89
|
return adb.features.includes(AdbFeatures.ShellV2);
|
|
90
90
|
}
|
|
91
|
-
static async
|
|
92
|
-
// TODO: AdbShellSubprocessProtocol: Support raw mode
|
|
91
|
+
static async pty(adb, command) {
|
|
93
92
|
// TODO: AdbShellSubprocessProtocol: Support setting `XTERM` environment variable
|
|
94
|
-
return new
|
|
93
|
+
return new AdbSubprocessShellProtocol(await adb.createSocket(`shell,v2,pty:${command}`));
|
|
94
|
+
}
|
|
95
|
+
static async raw(adb, command) {
|
|
96
|
+
return new AdbSubprocessShellProtocol(await adb.createSocket(`shell,v2,raw:${command}`));
|
|
95
97
|
}
|
|
96
98
|
_socket;
|
|
97
99
|
_socketWriter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/commands/subprocess/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,MAAM,EAAE,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAkB,uBAAuB,EAAE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAkE,MAAM,uBAAuB,CAAC;AAC5N,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,MAAM,CAAN,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC1B,6DAAK,CAAA;IACL,+DAAM,CAAA;IACN,+DAAM,CAAA;IACN,2DAAI,CAAA;IACJ,uEAAU,CAAA;IACV,mFAAgB,CAAA;AACpB,CAAC,EAPW,kBAAkB,GAAlB,kBAAkB,KAAlB,kBAAkB,QAO7B;AAED,gDAAgD;AAChD,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/commands/subprocess/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Adb } from "../../../adb.js";
|
|
2
|
+
import type { AdbSocket } from "../../../socket/index.js";
|
|
3
|
+
import { ReadableStream } from "../../../stream/index.js";
|
|
4
|
+
import type { AdbSubprocessProtocol } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* The legacy shell
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* * `stderr`: No
|
|
10
|
+
* * `exit` exit code: No
|
|
11
|
+
* * `resize`: No
|
|
12
|
+
*/
|
|
13
|
+
export declare class AdbSubprocessNoneProtocol implements AdbSubprocessProtocol {
|
|
14
|
+
static isSupported(): boolean;
|
|
15
|
+
static pty(adb: Adb, command: string): Promise<AdbSubprocessNoneProtocol>;
|
|
16
|
+
static raw(adb: Adb, command: string): Promise<AdbSubprocessNoneProtocol>;
|
|
17
|
+
private readonly socket;
|
|
18
|
+
get stdin(): import("web-streams-polyfill").WritableStream<Uint8Array>;
|
|
19
|
+
private _stdout;
|
|
20
|
+
/**
|
|
21
|
+
* Legacy shell mixes stdout and stderr.
|
|
22
|
+
*/
|
|
23
|
+
get stdout(): ReadableStream<Uint8Array>;
|
|
24
|
+
private _stderr;
|
|
25
|
+
/**
|
|
26
|
+
* `stderr` will always be empty.
|
|
27
|
+
*/
|
|
28
|
+
get stderr(): ReadableStream<Uint8Array>;
|
|
29
|
+
private _exit;
|
|
30
|
+
get exit(): Promise<number>;
|
|
31
|
+
constructor(socket: AdbSocket);
|
|
32
|
+
resize(): void;
|
|
33
|
+
kill(): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=none.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"none.d.ts","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAuB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;WACrD,WAAW;WAEL,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAI7B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAMjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAGnC,IAAW,KAAK,8DAAmC;IAEnD,OAAO,CAAC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,+BAA2B;IAE5C,OAAO,CAAC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,+BAA2B;IAE5C,OAAO,CAAC,KAAK,CAAkB;IAC/B,IAAW,IAAI,oBAAyB;gBAErB,MAAM,EAAE,SAAS;IAc7B,MAAM;IAIN,IAAI;CAGd"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { DuplexStreamFactory, ReadableStream } from "../../../stream/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* The legacy shell
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* * `stderr`: No
|
|
7
|
+
* * `exit` exit code: No
|
|
8
|
+
* * `resize`: No
|
|
9
|
+
*/
|
|
10
|
+
export class AdbSubprocessNoneProtocol {
|
|
11
|
+
static isSupported() { return true; }
|
|
12
|
+
static async pty(adb, command) {
|
|
13
|
+
return new AdbSubprocessNoneProtocol(await adb.createSocket(`shell:${command}`));
|
|
14
|
+
}
|
|
15
|
+
static async raw(adb, command) {
|
|
16
|
+
// `shell,raw:${command}` also triggers raw mode,
|
|
17
|
+
// But is not supported before Android 7.
|
|
18
|
+
return new AdbSubprocessNoneProtocol(await adb.createSocket(`exec:${command}`));
|
|
19
|
+
}
|
|
20
|
+
socket;
|
|
21
|
+
// Legacy shell forwards all data to stdin.
|
|
22
|
+
get stdin() { return this.socket.writable; }
|
|
23
|
+
_stdout;
|
|
24
|
+
/**
|
|
25
|
+
* Legacy shell mixes stdout and stderr.
|
|
26
|
+
*/
|
|
27
|
+
get stdout() { return this._stdout; }
|
|
28
|
+
_stderr;
|
|
29
|
+
/**
|
|
30
|
+
* `stderr` will always be empty.
|
|
31
|
+
*/
|
|
32
|
+
get stderr() { return this._stderr; }
|
|
33
|
+
_exit;
|
|
34
|
+
get exit() { return this._exit; }
|
|
35
|
+
constructor(socket) {
|
|
36
|
+
this.socket = socket;
|
|
37
|
+
const factory = new DuplexStreamFactory({
|
|
38
|
+
close: async () => {
|
|
39
|
+
await this.socket.close();
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
this._stdout = factory.wrapReadable(this.socket.readable);
|
|
43
|
+
this._stderr = factory.wrapReadable(new ReadableStream());
|
|
44
|
+
this._exit = factory.closed.then(() => 0);
|
|
45
|
+
}
|
|
46
|
+
resize() {
|
|
47
|
+
// Not supported
|
|
48
|
+
}
|
|
49
|
+
kill() {
|
|
50
|
+
return this.socket.close();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=none.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"none.js","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/E;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IAC3B,MAAM,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAErC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QAC7C,OAAO,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QAC7C,iDAAiD;QACjD,yCAAyC;QACzC,OAAO,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IAEgB,MAAM,CAAY;IAEnC,2CAA2C;IAC3C,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE3C,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpC,KAAK,CAAkB;IAC/B,IAAW,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAExC,YAAmB,MAAiB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAyB;YAC5D,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEM,MAAM;QACT,gBAAgB;IACpB,CAAC;IAEM,IAAI;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACJ"}
|