@yume-chan/adb 0.0.12 → 0.0.15
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 +54 -0
- package/CHANGELOG.md +28 -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 +88 -67
- 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 +9 -12
- package/esm/commands/reverse.d.ts.map +1 -1
- package/esm/commands/reverse.js +44 -36
- 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 +22 -9
- 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 +40 -10
- 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 +35 -23
- package/esm/socket/dispatcher.d.ts.map +1 -1
- package/esm/socket/dispatcher.js +97 -72
- 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 +43 -29
- package/esm/socket/socket.js.map +1 -1
- package/esm/stream/buffered.d.ts +1 -1
- package/esm/stream/buffered.d.ts.map +1 -1
- package/esm/stream/buffered.js +2 -2
- package/esm/stream/buffered.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 +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 +39 -33
- package/esm/stream/transform.d.ts.map +1 -1
- package/esm/stream/transform.js +121 -100
- package/esm/stream/transform.js.map +1 -1
- package/esm/utils/base64.js +5 -5
- package/esm/utils/base64.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 +7 -7
- package/src/adb.ts +112 -86
- package/src/auth.ts +21 -18
- package/src/backend.ts +2 -2
- package/src/commands/install.ts +7 -9
- package/src/commands/reverse.ts +48 -44
- 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 +56 -20
- package/src/crypto.ts +72 -56
- package/src/features.ts +6 -2
- package/src/packet.ts +17 -6
- package/src/socket/dispatcher.ts +139 -91
- package/src/socket/socket.ts +76 -61
- package/src/stream/buffered.ts +2 -2
- package/src/stream/detect.polyfill.ts +5 -2
- package/src/stream/detect.ts +4 -24
- package/src/stream/transform.ts +144 -124
- package/src/utils/index.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/src/utils/encoding.ts +0 -13
package/esm/commands/install.js
CHANGED
|
@@ -2,17 +2,15 @@ import { WrapWritableStream } from "../stream/index.js";
|
|
|
2
2
|
import { escapeArg } from "./subprocess/index.js";
|
|
3
3
|
export function install(adb) {
|
|
4
4
|
const filename = `/data/local/tmp/${Math.random().toString().substring(2)}.apk`;
|
|
5
|
+
let sync;
|
|
5
6
|
return new WrapWritableStream({
|
|
6
7
|
async start() {
|
|
8
|
+
// TODO: install: support other install apk methods (streaming, etc.)
|
|
7
9
|
// Upload apk file to tmp folder
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return {
|
|
11
|
-
writable,
|
|
12
|
-
state: sync,
|
|
13
|
-
};
|
|
10
|
+
sync = await adb.sync();
|
|
11
|
+
return sync.write(filename, undefined, undefined);
|
|
14
12
|
},
|
|
15
|
-
async close(
|
|
13
|
+
async close() {
|
|
16
14
|
sync.dispose();
|
|
17
15
|
// Invoke `pm install` to install it
|
|
18
16
|
await adb.subprocess.spawnAndWaitLegacy(['pm', 'install', escapeArg(filename)]);
|
|
@@ -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,31 +1,28 @@
|
|
|
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
|
|
14
|
-
protected
|
|
15
|
-
protected
|
|
10
|
+
protected localAddressToHandler: Map<string, AdbIncomingSocketHandler>;
|
|
11
|
+
protected deviceAddressToLocalAddress: Map<string, string>;
|
|
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[]>;
|
|
22
19
|
/**
|
|
23
20
|
* @param deviceAddress The address adbd on device is listening on. Can be `tcp:0` to let adbd choose an available TCP port by itself.
|
|
24
|
-
* @param
|
|
21
|
+
* @param localAddress Native ADB client will open a connection to this address when reverse connection received. In WebADB, it's only used to uniquely identify a reverse tunnel registry, `handler` will be called to handle the connection.
|
|
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,
|
|
25
|
+
add(deviceAddress: string, localAddress: string, 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,qBAAqB,wCAA+C;IAE9E,SAAS,CAAC,2BAA2B,sBAA6B;IAElE,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,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,MAAM,CAAC;IAgCL,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ1C"}
|
package/esm/commands/reverse.js
CHANGED
|
@@ -1,40 +1,34 @@
|
|
|
1
1
|
// cspell: ignore killforward
|
|
2
2
|
import { AutoDisposable } from '@yume-chan/event';
|
|
3
3
|
import Struct from '@yume-chan/struct';
|
|
4
|
-
import { AdbBufferedStream } from '../stream/index.js';
|
|
4
|
+
import { AdbBufferedStream, BufferedStreamEndedError } from '../stream/index.js';
|
|
5
5
|
import { decodeUtf8 } from "../utils/index.js";
|
|
6
|
-
const AdbReverseStringResponse = new Struct(
|
|
6
|
+
const AdbReverseStringResponse = new Struct()
|
|
7
7
|
.string('length', { length: 4 })
|
|
8
|
-
.string('content', { lengthField: 'length',
|
|
9
|
-
const AdbReverseErrorResponse = new Struct(
|
|
8
|
+
.string('content', { lengthField: 'length', lengthFieldRadix: 16 });
|
|
9
|
+
const AdbReverseErrorResponse = new Struct()
|
|
10
10
|
.fields(AdbReverseStringResponse)
|
|
11
11
|
.postDeserialize((value) => {
|
|
12
12
|
throw new Error(value.content);
|
|
13
13
|
});
|
|
14
14
|
export class AdbReverseCommand extends AutoDisposable {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
localAddressToHandler = new Map();
|
|
16
|
+
deviceAddressToLocalAddress = new Map();
|
|
17
|
+
adb;
|
|
18
18
|
listening = false;
|
|
19
|
-
constructor(
|
|
19
|
+
constructor(adb) {
|
|
20
20
|
super();
|
|
21
|
-
this.
|
|
22
|
-
this.addDisposable(this.
|
|
23
|
-
}
|
|
24
|
-
handleIncomingSocket(e) {
|
|
25
|
-
if (e.handled) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const address = decodeUtf8(e.packet.payload);
|
|
29
|
-
// Address format: `tcp:12345\0`
|
|
30
|
-
const port = Number.parseInt(address.substring(4));
|
|
31
|
-
if (this.localPortToHandler.has(port)) {
|
|
32
|
-
this.localPortToHandler.get(port).onSocket(e.packet, e.socket);
|
|
33
|
-
e.handled = true;
|
|
34
|
-
}
|
|
21
|
+
this.adb = adb;
|
|
22
|
+
this.addDisposable(this.adb.addIncomingSocketHandler(this.handleIncomingSocket));
|
|
35
23
|
}
|
|
24
|
+
handleIncomingSocket = async (socket) => {
|
|
25
|
+
let address = socket.serviceString;
|
|
26
|
+
// ADB daemon appends `\0` to the service string
|
|
27
|
+
address = address.replace(/\0/g, '');
|
|
28
|
+
return !!(await this.localAddressToHandler.get(address)?.(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) {
|
|
@@ -56,35 +50,49 @@ export class AdbReverseCommand extends AutoDisposable {
|
|
|
56
50
|
}
|
|
57
51
|
/**
|
|
58
52
|
* @param deviceAddress The address adbd on device is listening on. Can be `tcp:0` to let adbd choose an available TCP port by itself.
|
|
59
|
-
* @param
|
|
53
|
+
* @param localAddress Native ADB client will open a connection to this address when reverse connection received. In WebADB, it's only used to uniquely identify a reverse tunnel registry, `handler` will be called to handle the connection.
|
|
60
54
|
* @param handler A callback to handle incoming connections
|
|
61
55
|
* @returns If `deviceAddress` is `tcp:0`, return `tcp:{ACTUAL_LISTENING_PORT}`; otherwise, return `deviceAddress`.
|
|
62
56
|
*/
|
|
63
|
-
async add(deviceAddress,
|
|
64
|
-
const stream = await this.sendRequest(`reverse:forward:${deviceAddress}
|
|
57
|
+
async add(deviceAddress, localAddress, handler) {
|
|
58
|
+
const stream = await this.sendRequest(`reverse:forward:${deviceAddress};${localAddress}`);
|
|
65
59
|
// `tcp:0` tells the device to pick an available port.
|
|
66
|
-
//
|
|
60
|
+
// Begin with Android 8, device will respond with the selected port for all `tcp:` requests.
|
|
67
61
|
if (deviceAddress.startsWith('tcp:')) {
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
let length;
|
|
63
|
+
try {
|
|
64
|
+
length = Number.parseInt(decodeUtf8(await stream.read(4)), 16);
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
if (!(e instanceof BufferedStreamEndedError)) {
|
|
68
|
+
throw e;
|
|
69
|
+
}
|
|
70
|
+
// Device before Android 8 doesn't have this response.
|
|
71
|
+
// (the stream is closed now)
|
|
72
|
+
// Can be safely ignored.
|
|
73
|
+
}
|
|
74
|
+
if (length !== undefined) {
|
|
75
|
+
const port = decodeUtf8(await stream.read(length));
|
|
76
|
+
deviceAddress = `tcp:${Number.parseInt(port, 10)}`;
|
|
77
|
+
}
|
|
70
78
|
}
|
|
71
|
-
this.
|
|
72
|
-
this.
|
|
79
|
+
this.localAddressToHandler.set(localAddress, handler);
|
|
80
|
+
this.deviceAddressToLocalAddress.set(deviceAddress, localAddress);
|
|
73
81
|
return deviceAddress;
|
|
74
82
|
// No need to close the stream, device will close it
|
|
75
83
|
}
|
|
76
84
|
async remove(deviceAddress) {
|
|
77
85
|
await this.sendRequest(`reverse:killforward:${deviceAddress}`);
|
|
78
|
-
if (this.
|
|
79
|
-
this.
|
|
80
|
-
this.
|
|
86
|
+
if (this.deviceAddressToLocalAddress.has(deviceAddress)) {
|
|
87
|
+
this.localAddressToHandler.delete(this.deviceAddressToLocalAddress.get(deviceAddress));
|
|
88
|
+
this.deviceAddressToLocalAddress.delete(deviceAddress);
|
|
81
89
|
}
|
|
82
90
|
// No need to close the stream, device will close it
|
|
83
91
|
}
|
|
84
92
|
async removeAll() {
|
|
85
93
|
await this.sendRequest(`reverse:killforward-all`);
|
|
86
|
-
this.
|
|
87
|
-
this.
|
|
94
|
+
this.deviceAddressToLocalAddress.clear();
|
|
95
|
+
this.localAddressToHandler.clear();
|
|
88
96
|
// No need to close the stream, device will close it
|
|
89
97
|
}
|
|
90
98
|
}
|
|
@@ -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;
|
|
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":"AACA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAqE,MAAM,sBAAsB,CAAC;AAEhK,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAiB3B,MAAM,eAAe,GAAyB;IAC1C,SAAS,EAAE,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;CACrE,CAAC;AAQF,MAAM,OAAO,aAAa;IACN,GAAG,CAAM;IAEzB,YAAmB,GAAQ;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,cAAc,CACxB,IAAmB,EACnB,OAA2B,EAC3B,OAAuC;QAEvC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;QAEzD,IAAI,WAAyD,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC1B,uCAAuC;YACvC,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAClC,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;aACT;SACJ;QAED,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACxB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE;YAC9B,0BAA0B;YAC1B,OAAO,GAAG,EAAE,CAAC;SAChB;QACD,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CACR,OAA2B,EAC3B,OAAuC;QAEvC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CACR,OAA0B,EAC1B,OAAuC;QAEvC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CACrB,OAA0B,EAC1B,OAAuC;QAEvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAExC,MAAM,CAAC,EAAE,AAAD,EAAG,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrC,KAAK,CAAC,MAAM;iBACP,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC;iBACnC,MAAM,CAAC,MAAM,CAAC;YACnB,KAAK,CAAC,MAAM;iBACP,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC;iBACnC,MAAM,CAAC,MAAM,CAAC;YACnB,KAAK,CAAC,IAAI;SACb,CAAC,CAAC;QAEH,OAAO;YACH,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ;SACX,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,kBAAkB,CAAC,OAA0B;QACtD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CACtC,OAAO,EACP,EAAE,SAAS,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAC7C,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
|
|
@@ -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"}
|