@yume-chan/adb 0.0.23 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -2
- package/LICENSE +1 -1
- package/README.md +4 -1
- package/esm/adb.d.ts +15 -9
- package/esm/adb.d.ts.map +1 -1
- package/esm/adb.js +5 -2
- package/esm/adb.js.map +1 -1
- package/esm/banner.d.ts +7 -6
- package/esm/banner.d.ts.map +1 -1
- package/esm/banner.js +6 -7
- package/esm/banner.js.map +1 -1
- package/esm/commands/framebuffer.d.ts +63 -34
- package/esm/commands/framebuffer.d.ts.map +1 -1
- package/esm/commands/framebuffer.js +35 -33
- package/esm/commands/framebuffer.js.map +1 -1
- package/esm/commands/power.d.ts.map +1 -1
- package/esm/commands/power.js +6 -5
- package/esm/commands/power.js.map +1 -1
- package/esm/commands/reverse.d.ts +12 -12
- package/esm/commands/reverse.d.ts.map +1 -1
- package/esm/commands/reverse.js +60 -39
- package/esm/commands/reverse.js.map +1 -1
- package/esm/commands/subprocess/command.js +3 -3
- package/esm/commands/subprocess/command.js.map +1 -1
- package/esm/commands/subprocess/protocols/none.d.ts +2 -2
- package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/none.js +3 -5
- package/esm/commands/subprocess/protocols/none.js.map +1 -1
- package/esm/commands/subprocess/protocols/shell.d.ts +22 -14
- package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/shell.js +21 -27
- package/esm/commands/subprocess/protocols/shell.js.map +1 -1
- package/esm/commands/subprocess/protocols/types.d.ts +8 -8
- package/esm/commands/subprocess/protocols/types.d.ts.map +1 -1
- package/esm/commands/sync/list.d.ts +49 -30
- package/esm/commands/sync/list.d.ts.map +1 -1
- package/esm/commands/sync/list.js +9 -11
- package/esm/commands/sync/list.js.map +1 -1
- package/esm/commands/sync/pull.d.ts +7 -9
- package/esm/commands/sync/pull.d.ts.map +1 -1
- package/esm/commands/sync/pull.js +4 -6
- package/esm/commands/sync/pull.js.map +1 -1
- package/esm/commands/sync/push.d.ts +25 -22
- package/esm/commands/sync/push.d.ts.map +1 -1
- package/esm/commands/sync/push.js +14 -21
- package/esm/commands/sync/push.js.map +1 -1
- package/esm/commands/sync/request.d.ts +20 -23
- package/esm/commands/sync/request.d.ts.map +1 -1
- package/esm/commands/sync/request.js +26 -35
- package/esm/commands/sync/request.js.map +1 -1
- package/esm/commands/sync/response.d.ts +25 -19
- package/esm/commands/sync/response.d.ts.map +1 -1
- package/esm/commands/sync/response.js +49 -26
- package/esm/commands/sync/response.js.map +1 -1
- package/esm/commands/sync/socket.d.ts +3 -3
- package/esm/commands/sync/socket.d.ts.map +1 -1
- package/esm/commands/sync/socket.js +10 -5
- package/esm/commands/sync/socket.js.map +1 -1
- package/esm/commands/sync/stat.d.ts +75 -54
- package/esm/commands/sync/stat.d.ts.map +1 -1
- package/esm/commands/sync/stat.js +73 -69
- package/esm/commands/sync/stat.js.map +1 -1
- package/esm/commands/sync/sync.d.ts +18 -17
- package/esm/commands/sync/sync.d.ts.map +1 -1
- package/esm/commands/sync/sync.js +8 -8
- package/esm/commands/sync/sync.js.map +1 -1
- package/esm/commands/tcpip.d.ts +0 -1
- package/esm/commands/tcpip.d.ts.map +1 -1
- package/esm/commands/tcpip.js +9 -9
- package/esm/commands/tcpip.js.map +1 -1
- package/esm/daemon/auth.d.ts +8 -7
- package/esm/daemon/auth.d.ts.map +1 -1
- package/esm/daemon/auth.js +8 -9
- package/esm/daemon/auth.js.map +1 -1
- package/esm/daemon/crypto.d.ts +4 -3
- package/esm/daemon/crypto.d.ts.map +1 -1
- package/esm/daemon/crypto.js +57 -49
- package/esm/daemon/crypto.js.map +1 -1
- package/esm/daemon/device.d.ts +2 -2
- package/esm/daemon/device.d.ts.map +1 -1
- package/esm/daemon/dispatcher.d.ts +35 -10
- package/esm/daemon/dispatcher.d.ts.map +1 -1
- package/esm/daemon/dispatcher.js +46 -33
- package/esm/daemon/dispatcher.js.map +1 -1
- package/esm/daemon/packet.d.ts +48 -32
- package/esm/daemon/packet.d.ts.map +1 -1
- package/esm/daemon/packet.js +36 -32
- package/esm/daemon/packet.js.map +1 -1
- package/esm/daemon/socket.d.ts +11 -11
- package/esm/daemon/socket.d.ts.map +1 -1
- package/esm/daemon/socket.js +19 -40
- package/esm/daemon/socket.js.map +1 -1
- package/esm/daemon/transport.d.ts +60 -20
- package/esm/daemon/transport.d.ts.map +1 -1
- package/esm/daemon/transport.js +12 -15
- package/esm/daemon/transport.js.map +1 -1
- package/esm/device-observer.d.ts +10 -0
- package/esm/device-observer.d.ts.map +1 -0
- package/esm/device-observer.js +2 -0
- package/esm/device-observer.js.map +1 -0
- package/esm/features.d.ts +12 -11
- package/esm/features.d.ts.map +1 -1
- package/esm/features.js +11 -12
- package/esm/features.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/server/client.d.ts +140 -50
- package/esm/server/client.d.ts.map +1 -1
- package/esm/server/client.js +396 -180
- package/esm/server/client.js.map +1 -1
- package/esm/server/transport.d.ts +2 -2
- package/esm/server/transport.d.ts.map +1 -1
- package/esm/server/transport.js +4 -6
- package/esm/server/transport.js.map +1 -1
- package/esm/utils/base64.d.ts.map +1 -1
- package/esm/utils/base64.js +52 -38
- package/esm/utils/base64.js.map +1 -1
- package/esm/utils/hex.d.ts +1 -1
- package/esm/utils/hex.d.ts.map +1 -1
- package/esm/utils/hex.js +12 -14
- package/esm/utils/hex.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/esm/utils/no-op.d.ts.map +1 -1
- package/esm/utils/no-op.js +1 -0
- package/esm/utils/no-op.js.map +1 -1
- package/esm/utils/sequence-equal.d.ts +2 -0
- package/esm/utils/sequence-equal.d.ts.map +1 -0
- package/esm/utils/sequence-equal.js +12 -0
- package/esm/utils/sequence-equal.js.map +1 -0
- package/package.json +14 -19
- package/src/adb.ts +20 -11
- package/src/banner.ts +8 -6
- package/src/commands/framebuffer.ts +44 -35
- package/src/commands/power.ts +7 -5
- package/src/commands/reverse.ts +78 -47
- package/src/commands/subprocess/command.ts +3 -3
- package/src/commands/subprocess/protocols/none.ts +5 -7
- package/src/commands/subprocess/protocols/shell.ts +33 -35
- package/src/commands/subprocess/protocols/types.ts +8 -8
- package/src/commands/sync/list.ts +20 -15
- package/src/commands/sync/pull.ts +9 -8
- package/src/commands/sync/push.ts +25 -24
- package/src/commands/sync/request.ts +37 -38
- package/src/commands/sync/response.ts +63 -37
- package/src/commands/sync/socket.ts +13 -8
- package/src/commands/sync/stat.ts +93 -73
- package/src/commands/sync/sync.ts +12 -11
- package/src/commands/tcpip.ts +9 -9
- package/src/daemon/auth.ts +12 -10
- package/src/daemon/crypto.ts +66 -55
- package/src/daemon/device.ts +2 -2
- package/src/daemon/dispatcher.ts +106 -44
- package/src/daemon/packet.ts +57 -38
- package/src/daemon/socket.ts +30 -50
- package/src/daemon/transport.ts +98 -50
- package/src/device-observer.ts +10 -0
- package/src/features.ts +13 -11
- package/src/index.ts +1 -0
- package/src/server/client.ts +505 -268
- package/src/server/transport.ts +7 -9
- package/src/utils/base64.ts +59 -40
- package/src/utils/hex.ts +16 -14
- package/src/utils/index.ts +1 -1
- package/src/utils/no-op.ts +1 -0
- package/src/utils/sequence-equal.ts +13 -0
- package/tsconfig.build.json +1 -12
- package/tsconfig.build.tsbuildinfo +1 -1
- package/CHANGELOG.json +0 -265
- package/esm/utils/conditional-variable.d.ts +0 -8
- package/esm/utils/conditional-variable.d.ts.map +0 -1
- package/esm/utils/conditional-variable.js +0 -34
- package/esm/utils/conditional-variable.js.map +0 -1
- package/src/utils/conditional-variable.ts +0 -45
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MaybeConsumable, WritableStreamDefaultWriter } from "@yume-chan/stream-extra";
|
|
2
2
|
import { BufferedReadableStream } from "@yume-chan/stream-extra";
|
|
3
3
|
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
4
4
|
import type { AdbSocket } from "../../adb.js";
|
|
@@ -6,10 +6,10 @@ import { AutoResetEvent } from "../../utils/index.js";
|
|
|
6
6
|
export declare class AdbSyncSocketLocked implements AsyncExactReadable {
|
|
7
7
|
#private;
|
|
8
8
|
get position(): number;
|
|
9
|
-
constructor(writer: WritableStreamDefaultWriter<
|
|
9
|
+
constructor(writer: WritableStreamDefaultWriter<MaybeConsumable<Uint8Array>>, readable: BufferedReadableStream, bufferSize: number, lock: AutoResetEvent);
|
|
10
10
|
flush(): Promise<void>;
|
|
11
11
|
write(data: Uint8Array): Promise<void>;
|
|
12
|
-
readExactly(length: number): Promise<Uint8Array
|
|
12
|
+
readExactly(length: number): Promise<Uint8Array<ArrayBufferLike>>;
|
|
13
13
|
release(): void;
|
|
14
14
|
close(): Promise<void>;
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,2BAA2B,EAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEH,sBAAsB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,mBAAoB,YAAW,kBAAkB;;IAO1D,IAAI,QAAQ,WAEX;gBAGG,MAAM,EAAE,2BAA2B,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAChE,QAAQ,EAAE,sBAAsB,EAChC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc;IAalB,KAAK;IAYL,KAAK,CAAC,IAAI,EAAE,UAAU;IAWtB,WAAW,CAAC,MAAM,EAAE,MAAM;IAOhC,OAAO,IAAI,IAAI;IAOT,KAAK;CAGd;AAED,qBAAa,aAAa;;gBAKV,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM;IAU3C,IAAI;IAKJ,KAAK;CAId"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BufferCombiner, BufferedReadableStream,
|
|
1
|
+
import { BufferCombiner, BufferedReadableStream, Consumable, } from "@yume-chan/stream-extra";
|
|
2
2
|
import { AutoResetEvent } from "../../utils/index.js";
|
|
3
3
|
export class AdbSyncSocketLocked {
|
|
4
4
|
#writer;
|
|
@@ -15,15 +15,16 @@ export class AdbSyncSocketLocked {
|
|
|
15
15
|
this.#socketLock = lock;
|
|
16
16
|
this.#combiner = new BufferCombiner(bufferSize);
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
#write(buffer) {
|
|
19
|
+
// `#combiner` will reuse the buffer, so we need to use the Consumable pattern
|
|
20
|
+
return Consumable.WritableStream.write(this.#writer, buffer);
|
|
20
21
|
}
|
|
21
22
|
async flush() {
|
|
22
23
|
try {
|
|
23
24
|
await this.#writeLock.wait();
|
|
24
25
|
const buffer = this.#combiner.flush();
|
|
25
26
|
if (buffer) {
|
|
26
|
-
await this.#
|
|
27
|
+
await this.#write(buffer);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
finally {
|
|
@@ -34,7 +35,7 @@ export class AdbSyncSocketLocked {
|
|
|
34
35
|
try {
|
|
35
36
|
await this.#writeLock.wait();
|
|
36
37
|
for (const buffer of this.#combiner.push(data)) {
|
|
37
|
-
await this.#
|
|
38
|
+
await this.#write(buffer);
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
41
|
finally {
|
|
@@ -42,10 +43,14 @@ export class AdbSyncSocketLocked {
|
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
async readExactly(length) {
|
|
46
|
+
// The request may still be in the internal buffer.
|
|
47
|
+
// Call `flush` to send it before starting reading
|
|
45
48
|
await this.flush();
|
|
46
49
|
return await this.#readable.readExactly(length);
|
|
47
50
|
}
|
|
48
51
|
release() {
|
|
52
|
+
// In theory, the writer shouldn't leave anything in the buffer,
|
|
53
|
+
// but to be safe, call `flush` to throw away any remaining data.
|
|
49
54
|
this.#combiner.flush();
|
|
50
55
|
this.#socketLock.notifyOne();
|
|
51
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/commands/sync/socket.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,cAAc,EACd,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/commands/sync/socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { AdbSyncResponseId } from "./response.js";
|
|
1
|
+
import type { StructValue } from "@yume-chan/struct";
|
|
3
2
|
import type { AdbSyncSocket } from "./socket.js";
|
|
4
|
-
export declare
|
|
5
|
-
Directory
|
|
6
|
-
File
|
|
7
|
-
Link
|
|
8
|
-
}
|
|
3
|
+
export declare const LinuxFileType: {
|
|
4
|
+
readonly Directory: 4;
|
|
5
|
+
readonly File: 8;
|
|
6
|
+
readonly Link: 10;
|
|
7
|
+
};
|
|
8
|
+
export type LinuxFileType = (typeof LinuxFileType)[keyof typeof LinuxFileType];
|
|
9
9
|
export interface AdbSyncStat {
|
|
10
10
|
mode: number;
|
|
11
11
|
size: bigint;
|
|
@@ -17,57 +17,78 @@ export interface AdbSyncStat {
|
|
|
17
17
|
atime?: bigint;
|
|
18
18
|
ctime?: bigint;
|
|
19
19
|
}
|
|
20
|
-
export declare const AdbSyncLstatResponse: Struct<{
|
|
21
|
-
mode: number
|
|
22
|
-
size: number
|
|
23
|
-
mtime: number
|
|
24
|
-
},
|
|
25
|
-
id: AdbSyncResponseId.Lstat;
|
|
20
|
+
export declare const AdbSyncLstatResponse: import("@yume-chan/struct").Struct<{
|
|
21
|
+
mode: import("@yume-chan/struct").NumberField<number>;
|
|
22
|
+
size: import("@yume-chan/struct").NumberField<number>;
|
|
23
|
+
mtime: import("@yume-chan/struct").NumberField<number>;
|
|
24
|
+
}, {
|
|
26
25
|
readonly type: LinuxFileType;
|
|
27
26
|
readonly permission: number;
|
|
28
|
-
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
27
|
+
}, import("@yume-chan/struct").FieldsType<{
|
|
28
|
+
mode: import("@yume-chan/struct").NumberField<number>;
|
|
29
|
+
size: import("@yume-chan/struct").NumberField<number>;
|
|
30
|
+
mtime: import("@yume-chan/struct").NumberField<number>;
|
|
31
|
+
}> & {
|
|
32
|
+
readonly type: LinuxFileType;
|
|
33
|
+
readonly permission: number;
|
|
34
|
+
}>;
|
|
35
|
+
export type AdbSyncLstatResponse = StructValue<typeof AdbSyncLstatResponse>;
|
|
36
|
+
export declare const AdbSyncStatErrorCode: {
|
|
37
|
+
readonly SUCCESS: 0;
|
|
38
|
+
readonly EACCES: 13;
|
|
39
|
+
readonly EEXIST: 17;
|
|
40
|
+
readonly EFAULT: 14;
|
|
41
|
+
readonly EFBIG: 27;
|
|
42
|
+
readonly EINTR: 4;
|
|
43
|
+
readonly EINVAL: 22;
|
|
44
|
+
readonly EIO: 5;
|
|
45
|
+
readonly EISDIR: 21;
|
|
46
|
+
readonly ELOOP: 40;
|
|
47
|
+
readonly EMFILE: 24;
|
|
48
|
+
readonly ENAMETOOLONG: 36;
|
|
49
|
+
readonly ENFILE: 23;
|
|
50
|
+
readonly ENOENT: 2;
|
|
51
|
+
readonly ENOMEM: 12;
|
|
52
|
+
readonly ENOSPC: 28;
|
|
53
|
+
readonly ENOTDIR: 20;
|
|
54
|
+
readonly EOVERFLOW: 75;
|
|
55
|
+
readonly EPERM: 1;
|
|
56
|
+
readonly EROFS: 30;
|
|
57
|
+
readonly ETXTBSY: 26;
|
|
58
|
+
};
|
|
59
|
+
export type AdbSyncStatErrorCode = (typeof AdbSyncStatErrorCode)[keyof typeof AdbSyncStatErrorCode];
|
|
60
|
+
export declare const AdbSyncStatResponse: import("@yume-chan/struct").Struct<{
|
|
61
|
+
error: import("@yume-chan/struct").Field<AdbSyncStatErrorCode, never, never>;
|
|
62
|
+
dev: import("@yume-chan/struct").NumberField<bigint>;
|
|
63
|
+
ino: import("@yume-chan/struct").NumberField<bigint>;
|
|
64
|
+
mode: import("@yume-chan/struct").NumberField<number>;
|
|
65
|
+
nlink: import("@yume-chan/struct").NumberField<number>;
|
|
66
|
+
uid: import("@yume-chan/struct").NumberField<number>;
|
|
67
|
+
gid: import("@yume-chan/struct").NumberField<number>;
|
|
68
|
+
size: import("@yume-chan/struct").NumberField<bigint>;
|
|
69
|
+
atime: import("@yume-chan/struct").NumberField<bigint>;
|
|
70
|
+
mtime: import("@yume-chan/struct").NumberField<bigint>;
|
|
71
|
+
ctime: import("@yume-chan/struct").NumberField<bigint>;
|
|
72
|
+
}, {
|
|
73
|
+
readonly type: LinuxFileType;
|
|
74
|
+
readonly permission: number;
|
|
75
|
+
}, import("@yume-chan/struct").FieldsType<{
|
|
76
|
+
error: import("@yume-chan/struct").Field<AdbSyncStatErrorCode, never, never>;
|
|
77
|
+
dev: import("@yume-chan/struct").NumberField<bigint>;
|
|
78
|
+
ino: import("@yume-chan/struct").NumberField<bigint>;
|
|
79
|
+
mode: import("@yume-chan/struct").NumberField<number>;
|
|
80
|
+
nlink: import("@yume-chan/struct").NumberField<number>;
|
|
81
|
+
uid: import("@yume-chan/struct").NumberField<number>;
|
|
82
|
+
gid: import("@yume-chan/struct").NumberField<number>;
|
|
83
|
+
size: import("@yume-chan/struct").NumberField<bigint>;
|
|
84
|
+
atime: import("@yume-chan/struct").NumberField<bigint>;
|
|
85
|
+
mtime: import("@yume-chan/struct").NumberField<bigint>;
|
|
86
|
+
ctime: import("@yume-chan/struct").NumberField<bigint>;
|
|
87
|
+
}> & {
|
|
67
88
|
readonly type: LinuxFileType;
|
|
68
89
|
readonly permission: number;
|
|
69
|
-
}
|
|
70
|
-
export type AdbSyncStatResponse =
|
|
90
|
+
}>;
|
|
91
|
+
export type AdbSyncStatResponse = StructValue<typeof AdbSyncStatResponse>;
|
|
71
92
|
export declare function adbSyncLstat(socket: AdbSyncSocket, path: string, v2: boolean): Promise<AdbSyncStat>;
|
|
72
93
|
export declare function adbSyncStat(socket: AdbSyncSocket, path: string): Promise<AdbSyncStatResponse>;
|
|
73
94
|
//# 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,
|
|
1
|
+
{"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE/E,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;;;;;mBAKT,aAAa;yBAGP,MAAM;;;;;;mBAHZ,aAAa;yBAGP,MAAM;EAWnC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;CAsBvB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAC5B,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAUrE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;mBAiBR,aAAa;yBAGP,MAAM;;;;;;;;;;;;;;mBAHZ,aAAa;yBAGP,MAAM;EAWnC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE1E,wBAAsB,YAAY,CAC9B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,OAAO,GACZ,OAAO,CAAC,WAAW,CAAC,CAiCtB;AAED,wBAAsB,WAAW,CAC7B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC,CAY9B"}
|
|
@@ -1,80 +1,84 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { struct, u32, u64 } from "@yume-chan/struct";
|
|
2
2
|
import { AdbSyncRequestId, adbSyncWriteRequest } from "./request.js";
|
|
3
3
|
import { AdbSyncResponseId, adbSyncReadResponse } from "./response.js";
|
|
4
4
|
// https://github.com/python/cpython/blob/4e581d64b8aff3e2eda99b12f080c877bb78dfca/Lib/stat.py#L36
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
export const LinuxFileType = {
|
|
6
|
+
Directory: 0o04,
|
|
7
|
+
File: 0o10,
|
|
8
|
+
Link: 0o12,
|
|
9
|
+
};
|
|
10
|
+
export const AdbSyncLstatResponse = struct({ mode: u32, size: u32, mtime: u32 }, {
|
|
11
|
+
littleEndian: true,
|
|
12
|
+
extra: {
|
|
13
|
+
get type() {
|
|
14
|
+
return (this.mode >> 12);
|
|
15
|
+
},
|
|
16
|
+
get permission() {
|
|
17
|
+
return this.mode & 0b00001111_11111111;
|
|
18
|
+
},
|
|
19
19
|
},
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
postDeserialize(value) {
|
|
21
|
+
if (value.mode === 0 && value.size === 0 && value.mtime === 0) {
|
|
22
|
+
throw new Error("lstat error");
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
22
25
|
},
|
|
23
|
-
})
|
|
24
|
-
.postDeserialize((object) => {
|
|
25
|
-
if (object.mode === 0 && object.size === 0 && object.mtime === 0) {
|
|
26
|
-
throw new Error("lstat error");
|
|
27
|
-
}
|
|
28
26
|
});
|
|
29
|
-
export
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
27
|
+
export const AdbSyncStatErrorCode = {
|
|
28
|
+
SUCCESS: 0,
|
|
29
|
+
EACCES: 13,
|
|
30
|
+
EEXIST: 17,
|
|
31
|
+
EFAULT: 14,
|
|
32
|
+
EFBIG: 27,
|
|
33
|
+
EINTR: 4,
|
|
34
|
+
EINVAL: 22,
|
|
35
|
+
EIO: 5,
|
|
36
|
+
EISDIR: 21,
|
|
37
|
+
ELOOP: 40,
|
|
38
|
+
EMFILE: 24,
|
|
39
|
+
ENAMETOOLONG: 36,
|
|
40
|
+
ENFILE: 23,
|
|
41
|
+
ENOENT: 2,
|
|
42
|
+
ENOMEM: 12,
|
|
43
|
+
ENOSPC: 28,
|
|
44
|
+
ENOTDIR: 20,
|
|
45
|
+
EOVERFLOW: 75,
|
|
46
|
+
EPERM: 1,
|
|
47
|
+
EROFS: 30,
|
|
48
|
+
ETXTBSY: 26,
|
|
49
|
+
};
|
|
50
|
+
const AdbSyncStatErrorName = /* #__PURE__ */ (() => Object.fromEntries(Object.entries(AdbSyncStatErrorCode).map(([key, value]) => [
|
|
51
|
+
value,
|
|
52
|
+
key,
|
|
53
|
+
])))();
|
|
54
|
+
export const AdbSyncStatResponse = struct({
|
|
55
|
+
error: u32(),
|
|
56
|
+
dev: u64,
|
|
57
|
+
ino: u64,
|
|
58
|
+
mode: u32,
|
|
59
|
+
nlink: u32,
|
|
60
|
+
uid: u32,
|
|
61
|
+
gid: u32,
|
|
62
|
+
size: u64,
|
|
63
|
+
atime: u64,
|
|
64
|
+
mtime: u64,
|
|
65
|
+
ctime: u64,
|
|
66
|
+
}, {
|
|
67
|
+
littleEndian: true,
|
|
68
|
+
extra: {
|
|
69
|
+
get type() {
|
|
70
|
+
return (this.mode >> 12);
|
|
71
|
+
},
|
|
72
|
+
get permission() {
|
|
73
|
+
return this.mode & 0b00001111_11111111;
|
|
74
|
+
},
|
|
69
75
|
},
|
|
70
|
-
|
|
71
|
-
|
|
76
|
+
postDeserialize(value) {
|
|
77
|
+
if (value.error) {
|
|
78
|
+
throw new Error(AdbSyncStatErrorName[value.error]);
|
|
79
|
+
}
|
|
80
|
+
return value;
|
|
72
81
|
},
|
|
73
|
-
})
|
|
74
|
-
.postDeserialize((object) => {
|
|
75
|
-
if (object.error) {
|
|
76
|
-
throw new Error(AdbSyncStatErrorCode[object.error]);
|
|
77
|
-
}
|
|
78
82
|
});
|
|
79
83
|
export async function adbSyncLstat(socket, path, v2) {
|
|
80
84
|
const locked = await socket.lock();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { Consumable, ReadableStream } from "@yume-chan/stream-extra";
|
|
1
|
+
import type { MaybeConsumable, ReadableStream } from "@yume-chan/stream-extra";
|
|
3
2
|
import type { Adb, AdbSocket } from "../../adb.js";
|
|
4
3
|
import type { AdbSyncEntry } from "./list.js";
|
|
4
|
+
import type { AdbSyncSocketLocked } from "./socket.js";
|
|
5
5
|
import { AdbSyncSocket } from "./socket.js";
|
|
6
6
|
import type { AdbSyncStat, LinuxFileType } from "./stat.js";
|
|
7
7
|
/**
|
|
@@ -12,13 +12,13 @@ import type { AdbSyncStat, LinuxFileType } from "./stat.js";
|
|
|
12
12
|
export declare function dirname(path: string): string;
|
|
13
13
|
export interface AdbSyncWriteOptions {
|
|
14
14
|
filename: string;
|
|
15
|
-
file: ReadableStream<
|
|
15
|
+
file: ReadableStream<MaybeConsumable<Uint8Array>>;
|
|
16
16
|
type?: LinuxFileType;
|
|
17
17
|
permission?: number;
|
|
18
18
|
mtime?: number;
|
|
19
19
|
dryRun?: boolean;
|
|
20
20
|
}
|
|
21
|
-
export declare class AdbSync
|
|
21
|
+
export declare class AdbSync {
|
|
22
22
|
#private;
|
|
23
23
|
protected _adb: Adb;
|
|
24
24
|
protected _socket: AdbSyncSocket;
|
|
@@ -39,21 +39,21 @@ export declare class AdbSync extends AutoDisposable {
|
|
|
39
39
|
*
|
|
40
40
|
* If `path` points to a symbolic link, it will be resolved and the returned information is about the target (with `type` being `LinuxFileType.File` or `LinuxFileType.Directory`).
|
|
41
41
|
*/
|
|
42
|
-
stat(path: string): Promise<{
|
|
43
|
-
|
|
42
|
+
stat(path: string): Promise<import("@yume-chan/struct").FieldsType<{
|
|
43
|
+
error: import("@yume-chan/struct").Field<import("./stat.js").AdbSyncStatErrorCode, never, never>;
|
|
44
|
+
dev: import("@yume-chan/struct").NumberField<bigint>;
|
|
45
|
+
ino: import("@yume-chan/struct").NumberField<bigint>;
|
|
46
|
+
mode: import("@yume-chan/struct").NumberField<number>;
|
|
47
|
+
nlink: import("@yume-chan/struct").NumberField<number>;
|
|
48
|
+
uid: import("@yume-chan/struct").NumberField<number>;
|
|
49
|
+
gid: import("@yume-chan/struct").NumberField<number>;
|
|
50
|
+
size: import("@yume-chan/struct").NumberField<bigint>;
|
|
51
|
+
atime: import("@yume-chan/struct").NumberField<bigint>;
|
|
52
|
+
mtime: import("@yume-chan/struct").NumberField<bigint>;
|
|
53
|
+
ctime: import("@yume-chan/struct").NumberField<bigint>;
|
|
54
|
+
}> & {
|
|
44
55
|
readonly type: LinuxFileType;
|
|
45
56
|
readonly permission: number;
|
|
46
|
-
error: import("./stat.js").AdbSyncStatErrorCode;
|
|
47
|
-
dev: bigint;
|
|
48
|
-
ino: bigint;
|
|
49
|
-
mode: number;
|
|
50
|
-
nlink: number;
|
|
51
|
-
uid: number;
|
|
52
|
-
gid: number;
|
|
53
|
-
size: bigint;
|
|
54
|
-
atime: bigint;
|
|
55
|
-
mtime: bigint;
|
|
56
|
-
ctime: bigint;
|
|
57
57
|
}>;
|
|
58
58
|
/**
|
|
59
59
|
* Checks if `path` is a directory, or a symbolic link to a directory.
|
|
@@ -76,6 +76,7 @@ export declare class AdbSync extends AutoDisposable {
|
|
|
76
76
|
* @param options The content and options of the file to write.
|
|
77
77
|
*/
|
|
78
78
|
write(options: AdbSyncWriteOptions): Promise<void>;
|
|
79
|
+
lockSocket(): Promise<AdbSyncSocketLocked>;
|
|
79
80
|
dispose(): Promise<void>;
|
|
80
81
|
}
|
|
81
82
|
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAI9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG5D;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS5C;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,OAAO;;IAChB,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;IAQjC,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,qBAAqB,IAAI,OAAO,CAEnC;IAED,IAAI,uBAAuB,IAAI,OAAO,CAErC;gBAEW,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS;IAevC;;;;OAIG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C;;;;OAIG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;IAQvB;;;;OAIG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASjD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;IAIzD,OAAO,CAAC,IAAI,EAAE,MAAM;IAQ1B;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;IAIlD;;;;OAIG;IACG,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxD,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI1C,OAAO;CAGV"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { AutoDisposable } from "@yume-chan/event";
|
|
2
1
|
import { AdbFeature } from "../../features.js";
|
|
3
2
|
import { escapeArg } from "../subprocess/index.js";
|
|
4
3
|
import { adbSyncOpenDir } from "./list.js";
|
|
@@ -21,7 +20,7 @@ export function dirname(path) {
|
|
|
21
20
|
}
|
|
22
21
|
return path.substring(0, end);
|
|
23
22
|
}
|
|
24
|
-
export class AdbSync
|
|
23
|
+
export class AdbSync {
|
|
25
24
|
_adb;
|
|
26
25
|
_socket;
|
|
27
26
|
#supportsStat;
|
|
@@ -45,7 +44,6 @@ export class AdbSync extends AutoDisposable {
|
|
|
45
44
|
return this.#needPushMkdirWorkaround;
|
|
46
45
|
}
|
|
47
46
|
constructor(adb, socket) {
|
|
48
|
-
super();
|
|
49
47
|
this._adb = adb;
|
|
50
48
|
this._socket = new AdbSyncSocket(socket, adb.maxPayloadSize);
|
|
51
49
|
this.#supportsStat = adb.canUseFeature(AdbFeature.StatV2);
|
|
@@ -85,7 +83,7 @@ export class AdbSync extends AutoDisposable {
|
|
|
85
83
|
await this.lstat(path + "/");
|
|
86
84
|
return true;
|
|
87
85
|
}
|
|
88
|
-
catch
|
|
86
|
+
catch {
|
|
89
87
|
return false;
|
|
90
88
|
}
|
|
91
89
|
}
|
|
@@ -115,7 +113,7 @@ export class AdbSync extends AutoDisposable {
|
|
|
115
113
|
*/
|
|
116
114
|
async write(options) {
|
|
117
115
|
if (this.needPushMkdirWorkaround) {
|
|
118
|
-
// It may fail if
|
|
116
|
+
// It may fail if `filename` already exists.
|
|
119
117
|
// Ignore the result.
|
|
120
118
|
// TODO: sync: test push mkdir workaround (need an Android 8 device)
|
|
121
119
|
await this._adb.subprocess.spawnAndWait([
|
|
@@ -130,9 +128,11 @@ export class AdbSync extends AutoDisposable {
|
|
|
130
128
|
...options,
|
|
131
129
|
});
|
|
132
130
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
131
|
+
lockSocket() {
|
|
132
|
+
return this._socket.lock();
|
|
133
|
+
}
|
|
134
|
+
dispose() {
|
|
135
|
+
return this._socket.close();
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
//# sourceMappingURL=sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"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"}
|
package/esm/commands/tcpip.d.ts
CHANGED
|
@@ -19,7 +19,6 @@ export interface AdbTcpIpListenAddresses {
|
|
|
19
19
|
persistPort: number | undefined;
|
|
20
20
|
}
|
|
21
21
|
export declare class AdbTcpIpCommand extends AdbCommandBase {
|
|
22
|
-
#private;
|
|
23
22
|
getListenAddresses(): Promise<AdbTcpIpListenAddresses>;
|
|
24
23
|
setPort(port: number): Promise<string>;
|
|
25
24
|
disable(): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcpip.d.ts","sourceRoot":"","sources":["../../src/commands/tcpip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,uBAAuB;IACpC,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;
|
|
1
|
+
{"version":3,"file":"tcpip.d.ts","sourceRoot":"","sources":["../../src/commands/tcpip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,uBAAuB;IACpC,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AASD,qBAAa,eAAgB,SAAQ,cAAc;IACzC,kBAAkB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAiBtD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAOnC"}
|
package/esm/commands/tcpip.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AdbCommandBase } from "./base.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
return undefined;
|
|
6
|
-
}
|
|
7
|
-
return Number.parseInt(value, 10);
|
|
2
|
+
function parsePort(value) {
|
|
3
|
+
if (!value || value === "0") {
|
|
4
|
+
return undefined;
|
|
8
5
|
}
|
|
6
|
+
return Number.parseInt(value, 10);
|
|
7
|
+
}
|
|
8
|
+
export class AdbTcpIpCommand extends AdbCommandBase {
|
|
9
9
|
async getListenAddresses() {
|
|
10
10
|
const serviceListenAddresses = await this.adb.getProp("service.adb.listen_addrs");
|
|
11
11
|
const servicePort = await this.adb.getProp("service.adb.tcp.port");
|
|
@@ -14,13 +14,13 @@ export class AdbTcpIpCommand extends AdbCommandBase {
|
|
|
14
14
|
serviceListenAddresses: serviceListenAddresses != ""
|
|
15
15
|
? serviceListenAddresses.split(",")
|
|
16
16
|
: [],
|
|
17
|
-
servicePort:
|
|
18
|
-
persistPort:
|
|
17
|
+
servicePort: parsePort(servicePort),
|
|
18
|
+
persistPort: parsePort(persistPort),
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
async setPort(port) {
|
|
22
22
|
if (port <= 0) {
|
|
23
|
-
throw new
|
|
23
|
+
throw new TypeError(`Invalid port ${port}`);
|
|
24
24
|
}
|
|
25
25
|
const output = await this.adb.createSocketAndWait(`tcpip:${port}`);
|
|
26
26
|
if (output !== `restarting in TCP mode port: ${port}\n`) {
|