@yume-chan/adb 0.0.12 → 0.0.13
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 +18 -0
- package/CHANGELOG.md +10 -1
- package/README.md +24 -17
- package/esm/adb.d.ts +6 -6
- package/esm/adb.d.ts.map +1 -1
- package/esm/adb.js +77 -59
- 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 +2 -2
- 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/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 +15 -11
- package/esm/socket/dispatcher.d.ts.map +1 -1
- package/esm/socket/dispatcher.js +16 -19
- package/esm/socket/dispatcher.js.map +1 -1
- package/esm/socket/socket.d.ts +19 -7
- package/esm/socket/socket.d.ts.map +1 -1
- package/esm/socket/socket.js +20 -11
- 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 +23 -23
- package/esm/stream/transform.d.ts.map +1 -1
- package/esm/stream/transform.js +74 -24
- 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 +93 -70
- package/src/auth.ts +21 -18
- package/src/backend.ts +2 -2
- package/src/commands/install.ts +7 -9
- package/src/commands/reverse.ts +2 -2
- 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} +18 -8
- 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/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 +43 -29
- package/src/socket/socket.ts +29 -22
- package/src/stream/detect.polyfill.ts +4 -1
- package/src/stream/detect.ts +4 -24
- package/src/stream/transform.ts +96 -40
- package/src/utils/index.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/src/utils/encoding.ts +0 -13
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { PromiseResolver } from "@yume-chan/async";
|
|
2
|
+
import Struct, { placeholder } from "@yume-chan/struct";
|
|
3
|
+
import { AdbFeatures } from "../../../features.js";
|
|
4
|
+
import { pipeFrom, PushReadableStream, StructDeserializeStream, StructSerializeStream, TransformStream, WritableStream } from "../../../stream/index.js";
|
|
5
|
+
import { encodeUtf8 } from "../../../utils/index.js";
|
|
6
|
+
export var AdbShellProtocolId;
|
|
7
|
+
(function (AdbShellProtocolId) {
|
|
8
|
+
AdbShellProtocolId[AdbShellProtocolId["Stdin"] = 0] = "Stdin";
|
|
9
|
+
AdbShellProtocolId[AdbShellProtocolId["Stdout"] = 1] = "Stdout";
|
|
10
|
+
AdbShellProtocolId[AdbShellProtocolId["Stderr"] = 2] = "Stderr";
|
|
11
|
+
AdbShellProtocolId[AdbShellProtocolId["Exit"] = 3] = "Exit";
|
|
12
|
+
AdbShellProtocolId[AdbShellProtocolId["CloseStdin"] = 4] = "CloseStdin";
|
|
13
|
+
AdbShellProtocolId[AdbShellProtocolId["WindowSizeChange"] = 5] = "WindowSizeChange";
|
|
14
|
+
})(AdbShellProtocolId = AdbShellProtocolId || (AdbShellProtocolId = {}));
|
|
15
|
+
// This packet format is used in both direction.
|
|
16
|
+
const AdbShellProtocolPacket = new Struct({ littleEndian: true })
|
|
17
|
+
.uint8('id', placeholder())
|
|
18
|
+
.uint32('length')
|
|
19
|
+
.uint8Array('data', { lengthField: 'length' });
|
|
20
|
+
class StdinSerializeStream extends TransformStream {
|
|
21
|
+
constructor() {
|
|
22
|
+
super({
|
|
23
|
+
transform(chunk, controller) {
|
|
24
|
+
controller.enqueue({
|
|
25
|
+
id: AdbShellProtocolId.Stdin,
|
|
26
|
+
data: chunk,
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
flush() {
|
|
30
|
+
// TODO: AdbShellSubprocessProtocol: support closing stdin
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
class StdoutDeserializeStream extends TransformStream {
|
|
36
|
+
constructor(type) {
|
|
37
|
+
super({
|
|
38
|
+
transform(chunk, controller) {
|
|
39
|
+
if (chunk.id === type) {
|
|
40
|
+
controller.enqueue(chunk.data);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
class MultiplexStream {
|
|
47
|
+
_readable;
|
|
48
|
+
_readableController;
|
|
49
|
+
get readable() { return this._readable; }
|
|
50
|
+
_activeCount = 0;
|
|
51
|
+
constructor() {
|
|
52
|
+
this._readable = new PushReadableStream(controller => {
|
|
53
|
+
this._readableController = controller;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
createWriteable() {
|
|
57
|
+
return new WritableStream({
|
|
58
|
+
start: () => {
|
|
59
|
+
this._activeCount += 1;
|
|
60
|
+
},
|
|
61
|
+
write: async (chunk) => {
|
|
62
|
+
await this._readableController.enqueue(chunk);
|
|
63
|
+
},
|
|
64
|
+
abort: async (e) => {
|
|
65
|
+
this._activeCount -= 1;
|
|
66
|
+
if (this._activeCount === 0) {
|
|
67
|
+
this._readableController.close();
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
close: async () => {
|
|
71
|
+
this._activeCount -= 1;
|
|
72
|
+
if (this._activeCount === 0) {
|
|
73
|
+
this._readableController.close();
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Shell v2 a.k.a Shell Protocol
|
|
81
|
+
*
|
|
82
|
+
* Features:
|
|
83
|
+
* * `stderr`: Yes
|
|
84
|
+
* * `exit` exit code: Yes
|
|
85
|
+
* * `resize`: Yes
|
|
86
|
+
*/
|
|
87
|
+
export class AdbSubprocessShellProtocol {
|
|
88
|
+
static isSupported(adb) {
|
|
89
|
+
return adb.features.includes(AdbFeatures.ShellV2);
|
|
90
|
+
}
|
|
91
|
+
static async pty(adb, command) {
|
|
92
|
+
// TODO: AdbShellSubprocessProtocol: Support setting `XTERM` environment variable
|
|
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}`));
|
|
97
|
+
}
|
|
98
|
+
_socket;
|
|
99
|
+
_socketWriter;
|
|
100
|
+
_stdin;
|
|
101
|
+
get stdin() { return this._stdin; }
|
|
102
|
+
_stdout;
|
|
103
|
+
get stdout() { return this._stdout; }
|
|
104
|
+
_stderr;
|
|
105
|
+
get stderr() { return this._stderr; }
|
|
106
|
+
_exit = new PromiseResolver();
|
|
107
|
+
get exit() { return this._exit.promise; }
|
|
108
|
+
constructor(socket) {
|
|
109
|
+
this._socket = socket;
|
|
110
|
+
// Check this image to help you understand the stream graph
|
|
111
|
+
// cspell: disable-next-line
|
|
112
|
+
// https://www.plantuml.com/plantuml/png/bL91QiCm4Bpx5SAdv90lb1JISmiw5XzaQKf5PIkiLZIqzEyLSg8ks13gYtOykpFhiOw93N6UGjVDqK7rZsxKqNw0U_NTgVAy4empOy2mm4_olC0VEVEE47GUpnGjKdgXoD76q4GIEpyFhOwP_m28hW0NNzxNUig1_JdW0bA7muFIJDco1daJ_1SAX9bgvoPJPyIkSekhNYctvIGXrCH6tIsPL5fs-s6J5yc9BpWXhKtNdF2LgVYPGM_6GlMwfhWUsIt4lbScANrwlgVVUifPSVi__t44qStnwPvZwobdSmHHlL57p2vFuHS0
|
|
113
|
+
// TODO: AdbShellSubprocessProtocol: Optimize stream graph
|
|
114
|
+
const [stdout, stderr] = socket.readable
|
|
115
|
+
.pipeThrough(new StructDeserializeStream(AdbShellProtocolPacket))
|
|
116
|
+
.pipeThrough(new TransformStream({
|
|
117
|
+
transform: (chunk, controller) => {
|
|
118
|
+
if (chunk.id === AdbShellProtocolId.Exit) {
|
|
119
|
+
this._exit.resolve(new Uint8Array(chunk.data)[0]);
|
|
120
|
+
// We can let `StdoutDeserializeStream` to process `AdbShellProtocolId.Exit`,
|
|
121
|
+
// but since we need this `TransformStream` to capture the exit code anyway,
|
|
122
|
+
// terminating child streams here is killing two birds with one stone.
|
|
123
|
+
controller.terminate();
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
controller.enqueue(chunk);
|
|
127
|
+
}
|
|
128
|
+
}))
|
|
129
|
+
.tee();
|
|
130
|
+
this._stdout = stdout
|
|
131
|
+
.pipeThrough(new StdoutDeserializeStream(AdbShellProtocolId.Stdout));
|
|
132
|
+
this._stderr = stderr
|
|
133
|
+
.pipeThrough(new StdoutDeserializeStream(AdbShellProtocolId.Stderr));
|
|
134
|
+
const multiplexer = new MultiplexStream();
|
|
135
|
+
multiplexer.readable
|
|
136
|
+
.pipeThrough(new StructSerializeStream(AdbShellProtocolPacket))
|
|
137
|
+
.pipeTo(socket.writable);
|
|
138
|
+
this._stdin = pipeFrom(multiplexer.createWriteable(), new StdinSerializeStream());
|
|
139
|
+
this._socketWriter = multiplexer.createWriteable().getWriter();
|
|
140
|
+
}
|
|
141
|
+
async resize(rows, cols) {
|
|
142
|
+
await this._socketWriter.write({
|
|
143
|
+
id: AdbShellProtocolId.WindowSizeChange,
|
|
144
|
+
data: encodeUtf8(
|
|
145
|
+
// The "correct" format is `${rows}x${cols},${x_pixels}x${y_pixels}`
|
|
146
|
+
// However, according to https://linux.die.net/man/4/tty_ioctl
|
|
147
|
+
// `x_pixels` and `y_pixels` are not used, so always passing `0` is fine.
|
|
148
|
+
`${rows}x${cols},0x0\0`),
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
kill() {
|
|
152
|
+
return this._socket.close();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ValueOrPromise } from "@yume-chan/struct";
|
|
2
|
+
import type { Adb } from "../../../adb.js";
|
|
3
|
+
import type { AdbSocket } from "../../../socket/index.js";
|
|
4
|
+
import type { ReadableStream, WritableStream } from "../../../stream/index.js";
|
|
5
|
+
export interface AdbSubprocessProtocol {
|
|
6
|
+
/**
|
|
7
|
+
* A WritableStream that writes to the `stdin` pipe.
|
|
8
|
+
*/
|
|
9
|
+
readonly stdin: WritableStream<Uint8Array>;
|
|
10
|
+
/**
|
|
11
|
+
* The `stdout` pipe of the process.
|
|
12
|
+
*/
|
|
13
|
+
readonly stdout: ReadableStream<Uint8Array>;
|
|
14
|
+
/**
|
|
15
|
+
* The `stderr` pipe of the process.
|
|
16
|
+
*
|
|
17
|
+
* Note: Some `AdbSubprocessProtocol` doesn't separate `stdout` and `stderr`,
|
|
18
|
+
* All output will be sent to `stdout`.
|
|
19
|
+
*/
|
|
20
|
+
readonly stderr: ReadableStream<Uint8Array>;
|
|
21
|
+
/**
|
|
22
|
+
* A `Promise` that resolves to the exit code of the process.
|
|
23
|
+
*
|
|
24
|
+
* Note: Some `AdbSubprocessProtocol` doesn't support exit code,
|
|
25
|
+
* They will always resolve it with `0`.
|
|
26
|
+
*/
|
|
27
|
+
readonly exit: Promise<number>;
|
|
28
|
+
/**
|
|
29
|
+
* Resizes the current shell.
|
|
30
|
+
*
|
|
31
|
+
* Some `AdbSubprocessProtocol`s may not support resizing
|
|
32
|
+
* and will ignore calls to this method.
|
|
33
|
+
*/
|
|
34
|
+
resize(rows: number, cols: number): ValueOrPromise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Kills the current process.
|
|
37
|
+
*/
|
|
38
|
+
kill(): ValueOrPromise<void>;
|
|
39
|
+
}
|
|
40
|
+
export interface AdbSubprocessProtocolConstructor {
|
|
41
|
+
/** Returns `true` if the `adb` instance supports this shell */
|
|
42
|
+
isSupported(adb: Adb): ValueOrPromise<boolean>;
|
|
43
|
+
/** Spawns an executable in PTY (interactive) mode. */
|
|
44
|
+
pty(adb: Adb, command: string): ValueOrPromise<AdbSubprocessProtocol>;
|
|
45
|
+
/** Spawns an executable and pipe the output. */
|
|
46
|
+
raw(adb: Adb, command: string): ValueOrPromise<AdbSubprocessProtocol>;
|
|
47
|
+
/** Creates a new `AdbShell` by attaching to an exist `AdbSocket` */
|
|
48
|
+
new (socket: AdbSocket): AdbSubprocessProtocol;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/E,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/B;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEzD;;OAEG;IACH,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gCAAgC;IAC7C,+DAA+D;IAC/D,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAE/C,sDAAsD;IACtD,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAEtE,gDAAgD;IAChD,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAEtE,oEAAoE;IACpE,KAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,CAAC;CACjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/types.ts"],"names":[],"mappings":""}
|
|
@@ -14,21 +14,22 @@ export interface AdbSubprocessProtocol {
|
|
|
14
14
|
/**
|
|
15
15
|
* The `stderr` pipe of the process.
|
|
16
16
|
*
|
|
17
|
-
* Note: Some `
|
|
17
|
+
* Note: Some `AdbSubprocessProtocol` doesn't separate `stdout` and `stderr`,
|
|
18
18
|
* All output will be sent to `stdout`.
|
|
19
19
|
*/
|
|
20
20
|
readonly stderr: ReadableStream<Uint8Array>;
|
|
21
21
|
/**
|
|
22
22
|
* A `Promise` that resolves to the exit code of the process.
|
|
23
23
|
*
|
|
24
|
-
* Note: Some `
|
|
25
|
-
* They will always resolve with `0`.
|
|
24
|
+
* Note: Some `AdbSubprocessProtocol` doesn't support exit code,
|
|
25
|
+
* They will always resolve it with `0`.
|
|
26
26
|
*/
|
|
27
27
|
readonly exit: Promise<number>;
|
|
28
28
|
/**
|
|
29
29
|
* Resizes the current shell.
|
|
30
30
|
*
|
|
31
|
-
* Some `
|
|
31
|
+
* Some `AdbSubprocessProtocol`s may not support resizing
|
|
32
|
+
* and will ignore calls to this method.
|
|
32
33
|
*/
|
|
33
34
|
resize(rows: number, cols: number): ValueOrPromise<void>;
|
|
34
35
|
/**
|
|
@@ -39,8 +40,10 @@ export interface AdbSubprocessProtocol {
|
|
|
39
40
|
export interface AdbSubprocessProtocolConstructor {
|
|
40
41
|
/** Returns `true` if the `adb` instance supports this shell */
|
|
41
42
|
isSupported(adb: Adb): ValueOrPromise<boolean>;
|
|
42
|
-
/**
|
|
43
|
-
|
|
43
|
+
/** Spawns an executable in PTY (interactive) mode. */
|
|
44
|
+
pty(adb: Adb, command: string): ValueOrPromise<AdbSubprocessProtocol>;
|
|
45
|
+
/** Spawns an executable and pipe the output. */
|
|
46
|
+
raw(adb: Adb, command: string): ValueOrPromise<AdbSubprocessProtocol>;
|
|
44
47
|
/** Creates a new `AdbShell` by attaching to an exist `AdbSocket` */
|
|
45
48
|
new (socket: AdbSocket): AdbSubprocessProtocol;
|
|
46
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/B
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/B;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEzD;;OAEG;IACH,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gCAAgC;IAC7C,+DAA+D;IAC/D,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAE/C,sDAAsD;IACtD,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAEtE,gDAAgD;IAChD,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAEtE,oEAAoE;IACpE,KAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,CAAC;CACjD"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import Struct from '@yume-chan/struct';
|
|
2
2
|
import type { AdbBufferedStream, WritableStreamDefaultWriter } from '../../stream/index.js';
|
|
3
3
|
import { AdbSyncResponseId } from './response.js';
|
|
4
|
+
import { type AdbSyncStat } from './stat.js';
|
|
5
|
+
export interface AdbSyncEntry extends AdbSyncStat {
|
|
6
|
+
name: string;
|
|
7
|
+
}
|
|
4
8
|
export declare const AdbSyncEntryResponse: Struct<{
|
|
5
9
|
mode: number;
|
|
6
10
|
size: number;
|
|
@@ -13,5 +17,25 @@ export declare const AdbSyncEntryResponse: Struct<{
|
|
|
13
17
|
id: AdbSyncResponseId.Entry;
|
|
14
18
|
}, undefined>;
|
|
15
19
|
export declare type AdbSyncEntryResponse = typeof AdbSyncEntryResponse['TDeserializeResult'];
|
|
16
|
-
export declare
|
|
20
|
+
export declare const AdbSyncEntry2Response: Struct<{
|
|
21
|
+
error: import("./stat.js").AdbSyncStatErrorCode;
|
|
22
|
+
dev: bigint;
|
|
23
|
+
ino: bigint;
|
|
24
|
+
mode: number;
|
|
25
|
+
nlink: number;
|
|
26
|
+
uid: number;
|
|
27
|
+
gid: number;
|
|
28
|
+
size: bigint;
|
|
29
|
+
atime: bigint;
|
|
30
|
+
mtime: bigint;
|
|
31
|
+
ctime: bigint;
|
|
32
|
+
nameLength: number;
|
|
33
|
+
name: string;
|
|
34
|
+
}, "nameLength", {
|
|
35
|
+
readonly type: import("./stat.js").LinuxFileType;
|
|
36
|
+
readonly permission: number;
|
|
37
|
+
id: AdbSyncResponseId.Entry2;
|
|
38
|
+
}, undefined>;
|
|
39
|
+
export declare type AdbSyncEntry2Response = typeof AdbSyncEntry2Response['TDeserializeResult'];
|
|
40
|
+
export declare function adbSyncOpenDir(stream: AdbBufferedStream, writer: WritableStreamDefaultWriter<Uint8Array>, path: string, v2: boolean): AsyncGenerator<AdbSyncEntry, void, void>;
|
|
17
41
|
//# sourceMappingURL=list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/list.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAE5F,OAAO,EAA4C,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/list.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAE5F,OAAO,EAA4C,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAA6C,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAExF,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC7C,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;aAKuB,CAAC;AAEzD,oBAAY,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAErF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;aAKuB,CAAC;AAE1D,oBAAY,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;AAYvF,wBAAuB,cAAc,CACjC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,OAAO,GACZ,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CA0C1C"}
|
|
@@ -1,22 +1,57 @@
|
|
|
1
1
|
import Struct from '@yume-chan/struct';
|
|
2
2
|
import { AdbSyncRequestId, adbSyncWriteRequest } from './request.js';
|
|
3
3
|
import { AdbSyncDoneResponse, adbSyncReadResponse, AdbSyncResponseId } from './response.js';
|
|
4
|
-
import { AdbSyncLstatResponse } from './stat.js';
|
|
4
|
+
import { AdbSyncLstatResponse, AdbSyncStatResponse } from './stat.js';
|
|
5
5
|
export const AdbSyncEntryResponse = new Struct({ littleEndian: true })
|
|
6
6
|
.fields(AdbSyncLstatResponse)
|
|
7
7
|
.uint32('nameLength')
|
|
8
8
|
.string('name', { lengthField: 'nameLength' })
|
|
9
9
|
.extra({ id: AdbSyncResponseId.Entry });
|
|
10
|
-
const
|
|
10
|
+
export const AdbSyncEntry2Response = new Struct({ littleEndian: true })
|
|
11
|
+
.fields(AdbSyncStatResponse)
|
|
12
|
+
.uint32('nameLength')
|
|
13
|
+
.string('name', { lengthField: 'nameLength' })
|
|
14
|
+
.extra({ id: AdbSyncResponseId.Entry2 });
|
|
15
|
+
const LIST_V1_RESPONSE_TYPES = {
|
|
11
16
|
[AdbSyncResponseId.Entry]: AdbSyncEntryResponse,
|
|
12
17
|
[AdbSyncResponseId.Done]: new AdbSyncDoneResponse(AdbSyncEntryResponse.size),
|
|
13
18
|
};
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
const LIST_V2_RESPONSE_TYPES = {
|
|
20
|
+
[AdbSyncResponseId.Entry2]: AdbSyncEntry2Response,
|
|
21
|
+
[AdbSyncResponseId.Done]: new AdbSyncDoneResponse(AdbSyncEntry2Response.size),
|
|
22
|
+
};
|
|
23
|
+
export async function* adbSyncOpenDir(stream, writer, path, v2) {
|
|
24
|
+
let requestId;
|
|
25
|
+
let responseType;
|
|
26
|
+
if (v2) {
|
|
27
|
+
requestId = AdbSyncRequestId.List2;
|
|
28
|
+
responseType = LIST_V2_RESPONSE_TYPES;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
requestId = AdbSyncRequestId.List;
|
|
32
|
+
responseType = LIST_V1_RESPONSE_TYPES;
|
|
33
|
+
}
|
|
34
|
+
await adbSyncWriteRequest(writer, requestId, path);
|
|
16
35
|
while (true) {
|
|
17
|
-
const response = await adbSyncReadResponse(stream,
|
|
36
|
+
const response = await adbSyncReadResponse(stream, responseType);
|
|
18
37
|
switch (response.id) {
|
|
19
38
|
case AdbSyncResponseId.Entry:
|
|
39
|
+
yield {
|
|
40
|
+
mode: response.mode,
|
|
41
|
+
size: BigInt(response.size),
|
|
42
|
+
mtime: BigInt(response.mtime),
|
|
43
|
+
get type() { return response.type; },
|
|
44
|
+
get permission() { return response.permission; },
|
|
45
|
+
name: response.name,
|
|
46
|
+
};
|
|
47
|
+
break;
|
|
48
|
+
case AdbSyncResponseId.Entry2:
|
|
49
|
+
// `LST2` can return error codes for failed `lstat` calls.
|
|
50
|
+
// `LIST` just ignores them.
|
|
51
|
+
// But they only contain `name` so still pretty useless.
|
|
52
|
+
if (response.error !== 0) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
20
55
|
yield response;
|
|
21
56
|
break;
|
|
22
57
|
case AdbSyncResponseId.Done:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/sync/list.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/sync/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,oBAAY,gBAAgB;IACxB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,SAAS;IACd,IAAI,SAAS;IACb,MAAM,SAAS;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,SAAS;CACnB;AAED,eAAO,MAAM,oBAAoB;;;wBAGX,CAAC;AAEvB,eAAO,MAAM,kBAAkB;;;;wBAGoB,CAAC;AAEpD,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,EAAE,EAAE,gBAAgB,GAAG,MAAM,EAC7B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GACpC,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,oBAAY,gBAAgB;IACxB,IAAI,SAAS;IACb,KAAK,SAAS;IACd,IAAI,SAAS;IACb,KAAK,SAAS;IACd,IAAI,SAAS;IACb,MAAM,SAAS;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,SAAS;CACnB;AAED,eAAO,MAAM,oBAAoB;;;wBAGX,CAAC;AAEvB,eAAO,MAAM,kBAAkB;;;;wBAGoB,CAAC;AAEpD,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,EAAE,EAAE,gBAAgB,GAAG,MAAM,EAC7B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GACpC,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
@@ -3,6 +3,7 @@ import { encodeUtf8 } from "../../utils/index.js";
|
|
|
3
3
|
export var AdbSyncRequestId;
|
|
4
4
|
(function (AdbSyncRequestId) {
|
|
5
5
|
AdbSyncRequestId["List"] = "LIST";
|
|
6
|
+
AdbSyncRequestId["List2"] = "LIS2";
|
|
6
7
|
AdbSyncRequestId["Send"] = "SEND";
|
|
7
8
|
AdbSyncRequestId["Lstat"] = "STAT";
|
|
8
9
|
AdbSyncRequestId["Stat"] = "STA2";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAN,IAAY,gBAUX;AAVD,WAAY,gBAAgB;IACxB,iCAAa,CAAA;IACb,kCAAc,CAAA;IACd,iCAAa,CAAA;IACb,kCAAc,CAAA;IACd,iCAAa,CAAA;IACb,mCAAe,CAAA;IACf,iCAAa,CAAA;IACb,iCAAa,CAAA;IACb,oCAAgB,CAAA;AACpB,CAAC,EAVW,gBAAgB,GAAhB,gBAAgB,KAAhB,gBAAgB,QAU3B;AAED,MAAM,CAAC,MAAM,oBAAoB,GAC7B,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvB,MAAM,CAAC,MAAM,kBAAkB,GAC3B,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,oBAAoB,CAAC;KAC5B,UAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAA+C,EAC/C,EAA6B,EAC7B,KAAmC;IAEnC,IAAI,MAAkB,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC;YACpC,EAAE;YACF,GAAG,EAAE,KAAK;SACb,CAAC,CAAC;KACN;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAClC,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC;YAClC,EAAE;YACF,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;SAC1B,CAAC,CAAC;KACN;SAAM;QACH,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC;YAClC,EAAE;YACF,IAAI,EAAE,KAAK;SACd,CAAC,CAAC;KACN;IACD,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -2,6 +2,7 @@ import Struct, { type StructAsyncDeserializeStream, type StructLike, type Struct
|
|
|
2
2
|
import type { AdbBufferedStream } from '../../stream/index.js';
|
|
3
3
|
export declare enum AdbSyncResponseId {
|
|
4
4
|
Entry = "DENT",
|
|
5
|
+
Entry2 = "DNT2",
|
|
5
6
|
Lstat = "STAT",
|
|
6
7
|
Stat = "STA2",
|
|
7
8
|
Lstat2 = "LST2",
|
|
@@ -20,5 +21,5 @@ export declare const AdbSyncFailResponse: Struct<{
|
|
|
20
21
|
messageLength: number;
|
|
21
22
|
message: string;
|
|
22
23
|
}, "messageLength", {}, never>;
|
|
23
|
-
export declare function adbSyncReadResponse<T extends Record<string, StructLike<any>>>(stream: AdbBufferedStream, types: T): Promise<StructValueType<T[keyof T]>>;
|
|
24
|
+
export declare function adbSyncReadResponse<T extends Record<string, StructLike<any>>>(stream: AdbBufferedStream, types: T): Promise<StructValueType<T extends unknown ? T[keyof T] : never>>;
|
|
24
25
|
//# sourceMappingURL=response.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/response.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,4BAA4B,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,oBAAY,iBAAiB;IACzB,KAAK,SAAS;IACd,KAAK,SAAS;IACd,IAAI,SAAS;IACb,MAAM,SAAS;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,EAAE,SAAS;IACX,IAAI,SAAS;CAChB;AAMD,qBAAa,mBAAoB,YAAW,UAAU,CAAC,mBAAmB,CAAC;IACvE,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAgB,EAAE,0BAA0B;gBAEzB,MAAM,EAAE,MAAM;IAIpB,WAAW,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;CAIhF;AAED,eAAO,MAAM,mBAAmB;;;8BAMtB,CAAC;AAEX,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAC/E,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/response.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,4BAA4B,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,oBAAY,iBAAiB;IACzB,KAAK,SAAS;IACd,MAAM,SAAS;IACf,KAAK,SAAS;IACd,IAAI,SAAS;IACb,MAAM,SAAS;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,EAAE,SAAS;IACX,IAAI,SAAS;CAChB;AAMD,qBAAa,mBAAoB,YAAW,UAAU,CAAC,mBAAmB,CAAC;IACvE,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAgB,EAAE,0BAA0B;gBAEzB,MAAM,EAAE,MAAM;IAIpB,WAAW,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;CAIhF;AAED,eAAO,MAAM,mBAAmB;;;8BAMtB,CAAC;AAEX,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAC/E,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,CAAC,GAMT,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAYlE"}
|
|
@@ -3,6 +3,7 @@ import { decodeUtf8 } from "../../utils/index.js";
|
|
|
3
3
|
export var AdbSyncResponseId;
|
|
4
4
|
(function (AdbSyncResponseId) {
|
|
5
5
|
AdbSyncResponseId["Entry"] = "DENT";
|
|
6
|
+
AdbSyncResponseId["Entry2"] = "DNT2";
|
|
6
7
|
AdbSyncResponseId["Lstat"] = "STAT";
|
|
7
8
|
AdbSyncResponseId["Stat"] = "STA2";
|
|
8
9
|
AdbSyncResponseId["Lstat2"] = "LST2";
|
|
@@ -40,6 +41,6 @@ export async function adbSyncReadResponse(stream, types) {
|
|
|
40
41
|
if (types[id]) {
|
|
41
42
|
return types[id].deserialize(stream);
|
|
42
43
|
}
|
|
43
|
-
throw new Error('
|
|
44
|
+
throw new Error(`Expected '${Object.keys(types).join(', ')}', but got '${id}'`);
|
|
44
45
|
}
|
|
45
46
|
//# sourceMappingURL=response.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/commands/sync/response.ts"],"names":[],"mappings":"AAAA,OAAO,MAAoF,MAAM,mBAAmB,CAAC;AAErH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/commands/sync/response.ts"],"names":[],"mappings":"AAAA,OAAO,MAAoF,MAAM,mBAAmB,CAAC;AAErH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAN,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IACzB,mCAAc,CAAA;IACd,oCAAe,CAAA;IACf,mCAAc,CAAA;IACd,kCAAa,CAAA;IACb,oCAAe,CAAA;IACf,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,gCAAW,CAAA;IACX,kCAAa,CAAA;AACjB,CAAC,EAVW,iBAAiB,GAAjB,iBAAiB,KAAjB,iBAAiB,QAU5B;AAED,yEAAyE;AACzE,sFAAsF;AACtF,6EAA6E;AAC7E,iDAAiD;AACjD,MAAM,OAAO,mBAAmB;IACpB,MAAM,CAAS;IAEP,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC;IAE5C,YAAmB,MAAc;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,MAAoC;QACzD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,mBAAmB,GAC5B,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,eAAe,CAAC;KACvB,MAAM,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;KACnD,eAAe,CAAC,MAAM,CAAC,EAAE;IACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAyB,EACzB,KAAQ;IAOR,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,EAAE,KAAK,iBAAiB,CAAC,IAAI,EAAE;QAC/B,MAAM,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACjD;IAED,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;QACX,OAAO,KAAK,CAAC,EAAE,CAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACzC;IAED,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -6,6 +6,17 @@ export declare enum LinuxFileType {
|
|
|
6
6
|
File = 8,
|
|
7
7
|
Link = 10
|
|
8
8
|
}
|
|
9
|
+
export interface AdbSyncStat {
|
|
10
|
+
mode: number;
|
|
11
|
+
size: bigint;
|
|
12
|
+
mtime: bigint;
|
|
13
|
+
get type(): LinuxFileType;
|
|
14
|
+
get permission(): number;
|
|
15
|
+
uid?: number;
|
|
16
|
+
gid?: number;
|
|
17
|
+
atime?: bigint;
|
|
18
|
+
ctime?: bigint;
|
|
19
|
+
}
|
|
9
20
|
export declare const AdbSyncLstatResponse: Struct<{
|
|
10
21
|
mode: number;
|
|
11
22
|
size: number;
|
|
@@ -17,6 +28,7 @@ export declare const AdbSyncLstatResponse: Struct<{
|
|
|
17
28
|
}, undefined>;
|
|
18
29
|
export declare type AdbSyncLstatResponse = typeof AdbSyncLstatResponse['TDeserializeResult'];
|
|
19
30
|
export declare enum AdbSyncStatErrorCode {
|
|
31
|
+
SUCCESS = 0,
|
|
20
32
|
EACCES = 13,
|
|
21
33
|
EEXIST = 17,
|
|
22
34
|
EFAULT = 14,
|
|
@@ -56,6 +68,6 @@ export declare const AdbSyncStatResponse: Struct<{
|
|
|
56
68
|
readonly permission: number;
|
|
57
69
|
}, undefined>;
|
|
58
70
|
export declare type AdbSyncStatResponse = typeof AdbSyncStatResponse['TDeserializeResult'];
|
|
59
|
-
export declare function adbSyncLstat(stream: AdbBufferedStream, writer: WritableStreamDefaultWriter<Uint8Array>, path: string, v2: boolean): Promise<
|
|
71
|
+
export declare function adbSyncLstat(stream: AdbBufferedStream, writer: WritableStreamDefaultWriter<Uint8Array>, path: string, v2: boolean): Promise<AdbSyncStat>;
|
|
60
72
|
export declare function adbSyncStat(stream: AdbBufferedStream, writer: WritableStreamDefaultWriter<Uint8Array>, path: string): Promise<AdbSyncStatResponse>;
|
|
61
73
|
//# sourceMappingURL=stat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"AAAA,OAAO,MAAuB,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAE5F,OAAO,EAAuB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvE,oBAAY,aAAa;IACrB,SAAS,IAAO;IAChB,IAAI,IAAO;IACX,IAAI,KAAO;CACd;AAED,eAAO,MAAM,oBAAoB;;;;;;;;aAiBvB,CAAC;AAEX,oBAAY,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAErF,oBAAY,oBAAoB;IAC5B,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,KAAK,KAAK;IACV,KAAK,IAAI;IACT,MAAM,KAAK;IACX,GAAG,IAAI;IACP,MAAM,KAAK;IACX,KAAK,KAAK;IACV,MAAM,KAAK;IACX,YAAY,KAAK;IACjB,MAAM,KAAK;IACX,MAAM,IAAI;IACV,MAAM,KAAK;IACX,MAAM,KAAK;IACX,OAAO,KAAK;IACZ,SAAS,KAAK;IACd,KAAK,IAAI;IACT,KAAK,KAAK;IACV,OAAO,KAAK;CACf;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;aAsBtB,CAAC;AAEX,oBAAY,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;AAcnF,wBAAsB,YAAY,CAC9B,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,OAAO,GACZ,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"AAAA,OAAO,MAAuB,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAE5F,OAAO,EAAuB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvE,oBAAY,aAAa;IACrB,SAAS,IAAO;IAChB,IAAI,IAAO;IACX,IAAI,KAAO;CACd;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,IAAI,IAAI,aAAa,CAAC;IAC1B,IAAI,UAAU,IAAI,MAAM,CAAC;IAEzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB;;;;;;;;aAiBvB,CAAC;AAEX,oBAAY,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAErF,oBAAY,oBAAoB;IAC5B,OAAO,IAAI;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,KAAK,KAAK;IACV,KAAK,IAAI;IACT,MAAM,KAAK;IACX,GAAG,IAAI;IACP,MAAM,KAAK;IACX,KAAK,KAAK;IACV,MAAM,KAAK;IACX,YAAY,KAAK;IACjB,MAAM,KAAK;IACX,MAAM,IAAI;IACV,MAAM,KAAK;IACX,MAAM,KAAK;IACX,OAAO,KAAK;IACZ,SAAS,KAAK;IACd,KAAK,IAAI;IACT,KAAK,KAAK;IACV,OAAO,KAAK;CACf;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;aAsBtB,CAAC;AAEX,oBAAY,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;AAcnF,wBAAsB,YAAY,CAC9B,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,OAAO,GACZ,OAAO,CAAC,WAAW,CAAC,CA2BtB;AAED,wBAAsB,WAAW,CAC7B,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}
|
|
@@ -26,6 +26,7 @@ export const AdbSyncLstatResponse = new Struct({ littleEndian: true })
|
|
|
26
26
|
});
|
|
27
27
|
export var AdbSyncStatErrorCode;
|
|
28
28
|
(function (AdbSyncStatErrorCode) {
|
|
29
|
+
AdbSyncStatErrorCode[AdbSyncStatErrorCode["SUCCESS"] = 0] = "SUCCESS";
|
|
29
30
|
AdbSyncStatErrorCode[AdbSyncStatErrorCode["EACCES"] = 13] = "EACCES";
|
|
30
31
|
AdbSyncStatErrorCode[AdbSyncStatErrorCode["EEXIST"] = 17] = "EEXIST";
|
|
31
32
|
AdbSyncStatErrorCode[AdbSyncStatErrorCode["EFAULT"] = 14] = "EFAULT";
|
|
@@ -69,13 +70,13 @@ export const AdbSyncStatResponse = new Struct({ littleEndian: true })
|
|
|
69
70
|
throw new Error(AdbSyncStatErrorCode[object.error]);
|
|
70
71
|
}
|
|
71
72
|
});
|
|
72
|
-
const
|
|
73
|
+
const STAT_RESPONSE_TYPES = {
|
|
73
74
|
[AdbSyncResponseId.Stat]: AdbSyncStatResponse,
|
|
74
75
|
};
|
|
75
|
-
const
|
|
76
|
+
const LSTAT_RESPONSE_TYPES = {
|
|
76
77
|
[AdbSyncResponseId.Lstat]: AdbSyncLstatResponse,
|
|
77
78
|
};
|
|
78
|
-
const
|
|
79
|
+
const LSTAT_V2_RESPONSE_TYPES = {
|
|
79
80
|
[AdbSyncResponseId.Lstat2]: AdbSyncStatResponse,
|
|
80
81
|
};
|
|
81
82
|
export async function adbSyncLstat(stream, writer, path, v2) {
|
|
@@ -83,17 +84,29 @@ export async function adbSyncLstat(stream, writer, path, v2) {
|
|
|
83
84
|
let responseType;
|
|
84
85
|
if (v2) {
|
|
85
86
|
requestId = AdbSyncRequestId.Lstat2;
|
|
86
|
-
responseType =
|
|
87
|
+
responseType = LSTAT_V2_RESPONSE_TYPES;
|
|
87
88
|
}
|
|
88
89
|
else {
|
|
89
90
|
requestId = AdbSyncRequestId.Lstat;
|
|
90
|
-
responseType =
|
|
91
|
+
responseType = LSTAT_RESPONSE_TYPES;
|
|
91
92
|
}
|
|
92
93
|
await adbSyncWriteRequest(writer, requestId, path);
|
|
93
|
-
|
|
94
|
+
const response = await adbSyncReadResponse(stream, responseType);
|
|
95
|
+
switch (response.id) {
|
|
96
|
+
case AdbSyncResponseId.Lstat:
|
|
97
|
+
return {
|
|
98
|
+
mode: response.mode,
|
|
99
|
+
size: BigInt(response.size),
|
|
100
|
+
mtime: BigInt(response.mtime),
|
|
101
|
+
get type() { return response.type; },
|
|
102
|
+
get permission() { return response.permission; },
|
|
103
|
+
};
|
|
104
|
+
default:
|
|
105
|
+
return response;
|
|
106
|
+
}
|
|
94
107
|
}
|
|
95
108
|
export async function adbSyncStat(stream, writer, path) {
|
|
96
109
|
await adbSyncWriteRequest(writer, AdbSyncRequestId.Stat, path);
|
|
97
|
-
return await adbSyncReadResponse(stream,
|
|
110
|
+
return await adbSyncReadResponse(stream, STAT_RESPONSE_TYPES);
|
|
98
111
|
}
|
|
99
112
|
//# sourceMappingURL=stat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvE,kGAAkG;AAClG,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,2DAAgB,CAAA;IAChB,iDAAW,CAAA;IACX,kDAAW,CAAA;AACf,CAAC,EAJW,aAAa,GAAb,aAAa,KAAb,aAAa,QAIxB;
|
|
1
|
+
{"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"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"}
|