@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
|
@@ -3,37 +3,24 @@ import type { Adb } from '../../adb.js';
|
|
|
3
3
|
import type { AdbSocket } from '../../socket/index.js';
|
|
4
4
|
import { AdbBufferedStream, ReadableStream, WritableStream, WritableStreamDefaultWriter } from '../../stream/index.js';
|
|
5
5
|
import { AutoResetEvent } from '../../utils/index.js';
|
|
6
|
-
import {
|
|
6
|
+
import { type AdbSyncEntry } from './list.js';
|
|
7
|
+
/**
|
|
8
|
+
* A simplified `dirname` function that only handles absolute unix paths.
|
|
9
|
+
* @param path an absolute unix path
|
|
10
|
+
* @returns the directory name of the input path
|
|
11
|
+
*/
|
|
12
|
+
export declare function dirname(path: string): string;
|
|
7
13
|
export declare class AdbSync extends AutoDisposable {
|
|
8
14
|
protected adb: Adb;
|
|
9
15
|
protected stream: AdbBufferedStream;
|
|
10
16
|
protected writer: WritableStreamDefaultWriter<Uint8Array>;
|
|
11
17
|
protected sendLock: AutoResetEvent;
|
|
12
18
|
get supportsStat(): boolean;
|
|
19
|
+
get supportsList2(): boolean;
|
|
20
|
+
get fixedPushMkdir(): boolean;
|
|
21
|
+
get needPushMkdirWorkaround(): boolean;
|
|
13
22
|
constructor(adb: Adb, socket: AdbSocket);
|
|
14
|
-
lstat(path: string): Promise<
|
|
15
|
-
id: import("./response.js").AdbSyncResponseId.Lstat;
|
|
16
|
-
readonly type: import("./stat.js").LinuxFileType;
|
|
17
|
-
readonly permission: number;
|
|
18
|
-
mode: number;
|
|
19
|
-
size: number;
|
|
20
|
-
mtime: number;
|
|
21
|
-
} | {
|
|
22
|
-
id: import("./response.js").AdbSyncResponseId.Stat;
|
|
23
|
-
readonly type: import("./stat.js").LinuxFileType;
|
|
24
|
-
readonly permission: number;
|
|
25
|
-
error: import("./stat.js").AdbSyncStatErrorCode;
|
|
26
|
-
dev: bigint;
|
|
27
|
-
ino: bigint;
|
|
28
|
-
mode: number;
|
|
29
|
-
nlink: number;
|
|
30
|
-
uid: number;
|
|
31
|
-
gid: number;
|
|
32
|
-
size: bigint;
|
|
33
|
-
atime: bigint;
|
|
34
|
-
mtime: bigint;
|
|
35
|
-
ctime: bigint;
|
|
36
|
-
}>;
|
|
23
|
+
lstat(path: string): Promise<import("./stat.js").AdbSyncStat>;
|
|
37
24
|
stat(path: string): Promise<{
|
|
38
25
|
id: import("./response.js").AdbSyncResponseId.Stat;
|
|
39
26
|
readonly type: import("./stat.js").LinuxFileType;
|
|
@@ -51,17 +38,8 @@ export declare class AdbSync extends AutoDisposable {
|
|
|
51
38
|
ctime: bigint;
|
|
52
39
|
}>;
|
|
53
40
|
isDirectory(path: string): Promise<boolean>;
|
|
54
|
-
opendir(path: string): AsyncGenerator<
|
|
55
|
-
readdir(path: string): Promise<
|
|
56
|
-
id: import("./response.js").AdbSyncResponseId.Entry;
|
|
57
|
-
readonly type: import("./stat.js").LinuxFileType;
|
|
58
|
-
readonly permission: number;
|
|
59
|
-
mode: number;
|
|
60
|
-
size: number;
|
|
61
|
-
mtime: number;
|
|
62
|
-
nameLength: number;
|
|
63
|
-
name: string;
|
|
64
|
-
}[]>;
|
|
41
|
+
opendir(path: string): AsyncGenerator<AdbSyncEntry, void, void>;
|
|
42
|
+
readdir(path: string): Promise<AdbSyncEntry[]>;
|
|
65
43
|
/**
|
|
66
44
|
* Read the content of a file on device.
|
|
67
45
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAA0C,cAAc,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC/J,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAA0C,cAAc,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC/J,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAK9D;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS5C;AAED,qBAAa,OAAQ,SAAQ,cAAc;IACvC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEpC,SAAS,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAE1D,SAAS,CAAC,QAAQ,iBAA4C;IAE9D,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,IAAW,aAAa,IAAI,OAAO,CAElC;IAED,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED,IAAW,uBAAuB,IAAI,OAAO,CAG5C;gBAEkB,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS;IAQjC,KAAK,CAAC,IAAI,EAAE,MAAM;IAUlB,IAAI,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;IAcjB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1C,OAAO,CACjB,IAAI,EAAE,MAAM,GACb,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;IAU9B,OAAO,CAAC,IAAI,EAAE,MAAM;IAQjC;;;;;OAKG;IACI,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;IAYzD;;;;;;;OAOG;IACI,KAAK,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACf,cAAc,CAAC,UAAU,CAAC;IA8BP,OAAO;CAKhC"}
|
|
@@ -2,10 +2,26 @@ import { AutoDisposable } from '@yume-chan/event';
|
|
|
2
2
|
import { AdbFeatures } from '../../features.js';
|
|
3
3
|
import { AdbBufferedStream, WrapReadableStream, WrapWritableStream } from '../../stream/index.js';
|
|
4
4
|
import { AutoResetEvent } from '../../utils/index.js';
|
|
5
|
+
import { escapeArg } from "../index.js";
|
|
5
6
|
import { adbSyncOpenDir } from './list.js';
|
|
6
7
|
import { adbSyncPull } from './pull.js';
|
|
7
8
|
import { adbSyncPush } from './push.js';
|
|
8
9
|
import { adbSyncLstat, adbSyncStat } from './stat.js';
|
|
10
|
+
/**
|
|
11
|
+
* A simplified `dirname` function that only handles absolute unix paths.
|
|
12
|
+
* @param path an absolute unix path
|
|
13
|
+
* @returns the directory name of the input path
|
|
14
|
+
*/
|
|
15
|
+
export function dirname(path) {
|
|
16
|
+
const end = path.lastIndexOf('/');
|
|
17
|
+
if (end === -1) {
|
|
18
|
+
throw new Error(`Invalid path`);
|
|
19
|
+
}
|
|
20
|
+
if (end === 0) {
|
|
21
|
+
return '/';
|
|
22
|
+
}
|
|
23
|
+
return path.substring(0, end);
|
|
24
|
+
}
|
|
9
25
|
export class AdbSync extends AutoDisposable {
|
|
10
26
|
adb;
|
|
11
27
|
stream;
|
|
@@ -14,6 +30,16 @@ export class AdbSync extends AutoDisposable {
|
|
|
14
30
|
get supportsStat() {
|
|
15
31
|
return this.adb.features.includes(AdbFeatures.StatV2);
|
|
16
32
|
}
|
|
33
|
+
get supportsList2() {
|
|
34
|
+
return this.adb.features.includes(AdbFeatures.ListV2);
|
|
35
|
+
}
|
|
36
|
+
get fixedPushMkdir() {
|
|
37
|
+
return this.adb.features.includes(AdbFeatures.FixedPushMkdir);
|
|
38
|
+
}
|
|
39
|
+
get needPushMkdirWorkaround() {
|
|
40
|
+
// https://android.googlesource.com/platform/packages/modules/adb/+/91768a57b7138166e0a3d11f79cd55909dda7014/client/file_sync_client.cpp#1361
|
|
41
|
+
return this.adb.features.includes(AdbFeatures.ShellV2) && !this.fixedPushMkdir;
|
|
42
|
+
}
|
|
17
43
|
constructor(adb, socket) {
|
|
18
44
|
super();
|
|
19
45
|
this.adb = adb;
|
|
@@ -53,7 +79,7 @@ export class AdbSync extends AutoDisposable {
|
|
|
53
79
|
async *opendir(path) {
|
|
54
80
|
await this.sendLock.wait();
|
|
55
81
|
try {
|
|
56
|
-
yield* adbSyncOpenDir(this.stream, this.writer, path);
|
|
82
|
+
yield* adbSyncOpenDir(this.stream, this.writer, path, this.supportsList2);
|
|
57
83
|
}
|
|
58
84
|
finally {
|
|
59
85
|
this.sendLock.notify();
|
|
@@ -76,10 +102,7 @@ export class AdbSync extends AutoDisposable {
|
|
|
76
102
|
return new WrapReadableStream({
|
|
77
103
|
start: async () => {
|
|
78
104
|
await this.sendLock.wait();
|
|
79
|
-
return
|
|
80
|
-
readable: adbSyncPull(this.stream, this.writer, filename),
|
|
81
|
-
state: undefined,
|
|
82
|
-
};
|
|
105
|
+
return adbSyncPull(this.stream, this.writer, filename);
|
|
83
106
|
},
|
|
84
107
|
close: async () => {
|
|
85
108
|
this.sendLock.notify();
|
|
@@ -98,10 +121,17 @@ export class AdbSync extends AutoDisposable {
|
|
|
98
121
|
return new WrapWritableStream({
|
|
99
122
|
start: async () => {
|
|
100
123
|
await this.sendLock.wait();
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
124
|
+
if (this.needPushMkdirWorkaround) {
|
|
125
|
+
// It may fail if the path is already existed.
|
|
126
|
+
// Ignore the result.
|
|
127
|
+
// TODO: sync: test this
|
|
128
|
+
await this.adb.subprocess.spawnAndWait([
|
|
129
|
+
'mkdir',
|
|
130
|
+
'-p',
|
|
131
|
+
escapeArg(dirname(filename)),
|
|
132
|
+
]);
|
|
133
|
+
}
|
|
134
|
+
return adbSyncPush(this.stream, this.writer, filename, mode, mtime);
|
|
105
135
|
},
|
|
106
136
|
close: async () => {
|
|
107
137
|
this.sendLock.notify();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAkB,kBAAkB,EAAE,kBAAkB,EAA+C,MAAM,uBAAuB,CAAC;AAC/J,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"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"}
|
package/esm/crypto.d.ts
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Gets the `BigInt` value at the specified byte offset and length from the start of the view. There is
|
|
3
|
+
* no alignment constraint; multi-byte values may be fetched from any offset.
|
|
4
|
+
*
|
|
5
|
+
* Only supports Big-Endian, because that's what ADB uses.
|
|
6
|
+
* @param byteOffset The place in the buffer at which the value should be retrieved.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getBigUint(dataView: DataView, byteOffset: number, length: number): bigint;
|
|
9
|
+
/**
|
|
10
|
+
* Stores an arbitrary-precision positive `BigInt` value at the specified byte offset from the start of the view.
|
|
11
|
+
* @param byteOffset The place in the buffer at which the value should be set.
|
|
12
|
+
* @param value The value to set.
|
|
13
|
+
* @param littleEndian If `false` or `undefined`, a big-endian value should be written,
|
|
14
|
+
* otherwise a little-endian value should be written.
|
|
15
|
+
*/
|
|
16
|
+
export declare function setBigUint(dataView: DataView, byteOffset: number, value: bigint, littleEndian?: boolean): number;
|
|
4
17
|
export declare function parsePrivateKey(key: Uint8Array): [n: bigint, d: bigint];
|
|
5
18
|
export declare function modInverse(a: number, m: number): number;
|
|
6
19
|
export declare function calculatePublicKeyLength(): number;
|
|
@@ -14,11 +27,11 @@ export declare function calculatePublicKey(privateKey: Uint8Array, output: Uint8
|
|
|
14
27
|
* See https://en.wikipedia.org/wiki/Modular_exponentiation#Implementation_in_Lua
|
|
15
28
|
*/
|
|
16
29
|
export declare function powMod(base: bigint, exponent: bigint, modulus: bigint): bigint;
|
|
17
|
-
export declare const
|
|
18
|
-
export declare const
|
|
19
|
-
export declare const
|
|
20
|
-
export declare const
|
|
21
|
-
export declare const
|
|
22
|
-
export declare const
|
|
23
|
-
export declare function sign(privateKey: Uint8Array, data: Uint8Array):
|
|
30
|
+
export declare const SHA1_DIGEST_LENGTH = 20;
|
|
31
|
+
export declare const ASN1_SEQUENCE = 48;
|
|
32
|
+
export declare const ASN1_OCTET_STRING = 4;
|
|
33
|
+
export declare const ASN1_NULL = 5;
|
|
34
|
+
export declare const ASN1_OID = 6;
|
|
35
|
+
export declare const SHA1_DIGEST_INFO: Uint8Array;
|
|
36
|
+
export declare function sign(privateKey: Uint8Array, data: Uint8Array): Uint8Array;
|
|
24
37
|
//# sourceMappingURL=crypto.d.ts.map
|
package/esm/crypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAOA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAazF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,UAyBvG;AA4BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAKvE;AAKD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAsB9C;AAED,wBAAgB,wBAAwB,WAEvC;AAED,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,UAAU,GACvB,UAAU,CAAC;AACd,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,UAAU,GACnB,MAAM,CAAC;AAuEV;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAkB9E;AAED,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,aAAa,KAAO,CAAC;AAClC,eAAO,MAAM,iBAAiB,IAAO,CAAC;AACtC,eAAO,MAAM,SAAS,IAAO,CAAC;AAC9B,eAAO,MAAM,QAAQ,IAAO,CAAC;AAG7B,eAAO,MAAM,gBAAgB,YAO3B,CAAC;AAQH,wBAAgB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAyCzE"}
|
package/esm/crypto.js
CHANGED
|
@@ -3,37 +3,54 @@ const BigInt0 = BigInt(0);
|
|
|
3
3
|
const BigInt1 = BigInt(1);
|
|
4
4
|
const BigInt2 = BigInt(2);
|
|
5
5
|
const BigInt64 = BigInt(64);
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Gets the `BigInt` value at the specified byte offset and length from the start of the view. There is
|
|
8
|
+
* no alignment constraint; multi-byte values may be fetched from any offset.
|
|
9
|
+
*
|
|
10
|
+
* Only supports Big-Endian, because that's what ADB uses.
|
|
11
|
+
* @param byteOffset The place in the buffer at which the value should be retrieved.
|
|
12
|
+
*/
|
|
13
|
+
export function getBigUint(dataView, byteOffset, length) {
|
|
8
14
|
let result = BigInt0;
|
|
9
15
|
// Currently `length` must be a multiplication of 8
|
|
10
16
|
// Support for arbitrary length can be easily added
|
|
11
|
-
for (let i =
|
|
17
|
+
for (let i = byteOffset; i < byteOffset + length; i += 8) {
|
|
12
18
|
result <<= BigInt64;
|
|
13
|
-
const value = getBigUint64(
|
|
19
|
+
const value = getBigUint64(dataView, i, false);
|
|
14
20
|
result += value;
|
|
15
21
|
}
|
|
16
22
|
return result;
|
|
17
23
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Stores an arbitrary-precision positive `BigInt` value at the specified byte offset from the start of the view.
|
|
26
|
+
* @param byteOffset The place in the buffer at which the value should be set.
|
|
27
|
+
* @param value The value to set.
|
|
28
|
+
* @param littleEndian If `false` or `undefined`, a big-endian value should be written,
|
|
29
|
+
* otherwise a little-endian value should be written.
|
|
30
|
+
*/
|
|
31
|
+
export function setBigUint(dataView, byteOffset, value, littleEndian) {
|
|
32
|
+
const start = byteOffset;
|
|
33
|
+
if (littleEndian) {
|
|
34
|
+
while (value > BigInt0) {
|
|
35
|
+
setBigUint64(dataView, byteOffset, value, true);
|
|
36
|
+
byteOffset += 8;
|
|
37
|
+
value >>= BigInt64;
|
|
38
|
+
}
|
|
28
39
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
else {
|
|
41
|
+
// Because we don't know how long (in bits) the `value` is,
|
|
42
|
+
// Convert it to an array of `uint64` first.
|
|
43
|
+
const uint64Array = [];
|
|
44
|
+
while (value > BigInt0) {
|
|
45
|
+
uint64Array.push(BigInt.asUintN(64, value));
|
|
46
|
+
value >>= BigInt64;
|
|
47
|
+
}
|
|
48
|
+
for (let i = uint64Array.length - 1; i >= 0; i -= 1) {
|
|
49
|
+
setBigUint64(dataView, byteOffset, uint64Array[i], false);
|
|
50
|
+
byteOffset += 8;
|
|
51
|
+
}
|
|
36
52
|
}
|
|
53
|
+
return byteOffset - start;
|
|
37
54
|
}
|
|
38
55
|
// These values are correct only if
|
|
39
56
|
// modulus length is 2048 and
|
|
@@ -58,8 +75,9 @@ const RsaPrivateKeyNLength = 2048 / 8;
|
|
|
58
75
|
const RsaPrivateKeyDOffset = 303;
|
|
59
76
|
const RsaPrivateKeyDLength = 2048 / 8;
|
|
60
77
|
export function parsePrivateKey(key) {
|
|
61
|
-
|
|
62
|
-
|
|
78
|
+
const view = new DataView(key.buffer, key.byteOffset, key.byteLength);
|
|
79
|
+
const n = getBigUint(view, RsaPrivateKeyNOffset, RsaPrivateKeyNLength);
|
|
80
|
+
const d = getBigUint(view, RsaPrivateKeyDOffset, RsaPrivateKeyDLength);
|
|
63
81
|
return [n, d];
|
|
64
82
|
}
|
|
65
83
|
// Taken from https://stackoverflow.com/a/51562038
|
|
@@ -99,7 +117,7 @@ export function calculatePublicKey(privateKey, output) {
|
|
|
99
117
|
// [
|
|
100
118
|
// modulusLengthInWords, // 32-bit integer, a "word" is 32-bit so it must be 2048 / 8 / 4
|
|
101
119
|
// // Actually the comment in Android source code was wrong
|
|
102
|
-
// n0inv, // 32-bit integer, the modular inverse of (
|
|
120
|
+
// n0inv, // 32-bit integer, the modular inverse of (low 32 bits of n)
|
|
103
121
|
// modulus, // n
|
|
104
122
|
// rr, // Montgomery parameter R^2
|
|
105
123
|
// exponent, // 32-bit integer, must be 65537
|
|
@@ -133,12 +151,11 @@ export function calculatePublicKey(privateKey, output) {
|
|
|
133
151
|
outputView.setUint32(outputOffset, n0inv, true);
|
|
134
152
|
outputOffset += 4;
|
|
135
153
|
// Write n
|
|
136
|
-
|
|
154
|
+
setBigUint(outputView, outputOffset, n, true);
|
|
137
155
|
outputOffset += 256;
|
|
138
156
|
// Calculate rr = (2^(rsa_size)) ^ 2 mod n
|
|
139
157
|
let rr = BigInt(2) ** BigInt(4096) % n;
|
|
140
|
-
|
|
141
|
-
outputOffset += 256;
|
|
158
|
+
outputOffset += setBigUint(outputView, outputOffset, rr, true);
|
|
142
159
|
// exponent
|
|
143
160
|
outputView.setUint32(outputOffset, 65537, true);
|
|
144
161
|
outputOffset += 4;
|
|
@@ -171,19 +188,19 @@ export function powMod(base, exponent, modulus) {
|
|
|
171
188
|
}
|
|
172
189
|
return r;
|
|
173
190
|
}
|
|
174
|
-
export const
|
|
175
|
-
export const
|
|
176
|
-
export const
|
|
177
|
-
export const
|
|
178
|
-
export const
|
|
191
|
+
export const SHA1_DIGEST_LENGTH = 20;
|
|
192
|
+
export const ASN1_SEQUENCE = 0x30;
|
|
193
|
+
export const ASN1_OCTET_STRING = 0x04;
|
|
194
|
+
export const ASN1_NULL = 0x05;
|
|
195
|
+
export const ASN1_OID = 0x06;
|
|
179
196
|
// PKCS#1 SHA-1 hash digest info
|
|
180
|
-
export const
|
|
181
|
-
|
|
182
|
-
|
|
197
|
+
export const SHA1_DIGEST_INFO = new Uint8Array([
|
|
198
|
+
ASN1_SEQUENCE, 0x0d + SHA1_DIGEST_LENGTH,
|
|
199
|
+
ASN1_SEQUENCE, 0x09,
|
|
183
200
|
// SHA-1 (1 3 14 3 2 26)
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
201
|
+
ASN1_OID, 0x05, 1 * 40 + 3, 14, 3, 2, 26,
|
|
202
|
+
ASN1_NULL, 0x00,
|
|
203
|
+
ASN1_OCTET_STRING, SHA1_DIGEST_LENGTH
|
|
187
204
|
]);
|
|
188
205
|
// SubtleCrypto.sign() will hash the given data and sign the hash
|
|
189
206
|
// But we don't need the hashing step
|
|
@@ -200,22 +217,23 @@ export function sign(privateKey, data) {
|
|
|
200
217
|
index += 1;
|
|
201
218
|
padded[index] = 1;
|
|
202
219
|
index += 1;
|
|
203
|
-
const fillLength = padded.length -
|
|
220
|
+
const fillLength = padded.length - SHA1_DIGEST_INFO.length - data.length - 1;
|
|
204
221
|
while (index < fillLength) {
|
|
205
222
|
padded[index] = 0xff;
|
|
206
223
|
index += 1;
|
|
207
224
|
}
|
|
208
225
|
padded[index] = 0;
|
|
209
226
|
index += 1;
|
|
210
|
-
padded.set(
|
|
211
|
-
index +=
|
|
227
|
+
padded.set(SHA1_DIGEST_INFO, index);
|
|
228
|
+
index += SHA1_DIGEST_INFO.length;
|
|
212
229
|
padded.set(data, index);
|
|
213
230
|
// Encryption
|
|
214
231
|
// signature = padded ** d % n
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
232
|
+
const view = new DataView(padded.buffer);
|
|
233
|
+
const signature = powMod(getBigUint(view, 0, view.byteLength), d, n);
|
|
234
|
+
// `padded` is not used anymore,
|
|
235
|
+
// re-use the buffer to store the result
|
|
236
|
+
setBigUint(view, 0, signature, false);
|
|
237
|
+
return padded;
|
|
220
238
|
}
|
|
221
239
|
//# sourceMappingURL=crypto.js.map
|
package/esm/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAEjG,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5B,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/esm/features.d.ts
CHANGED
package/esm/features.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAEA,oBAAY,WAAW;IACnB,OAAO,aAAa;IACpB,GAAG,QAAQ;IACX,MAAM,YAAY;IAClB,MAAM,UAAU;IAChB,cAAc,qBAAqB;CACtC"}
|
package/esm/features.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
// The order follows
|
|
2
|
+
// https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
|
|
1
3
|
export var AdbFeatures;
|
|
2
4
|
(function (AdbFeatures) {
|
|
3
|
-
AdbFeatures["StatV2"] = "stat_v2";
|
|
4
|
-
AdbFeatures["Cmd"] = "cmd";
|
|
5
5
|
AdbFeatures["ShellV2"] = "shell_v2";
|
|
6
|
+
AdbFeatures["Cmd"] = "cmd";
|
|
7
|
+
AdbFeatures["StatV2"] = "stat_v2";
|
|
8
|
+
AdbFeatures["ListV2"] = "ls_v2";
|
|
9
|
+
AdbFeatures["FixedPushMkdir"] = "fixed_push_mkdir";
|
|
6
10
|
})(AdbFeatures = AdbFeatures || (AdbFeatures = {}));
|
|
7
11
|
//# sourceMappingURL=features.js.map
|
package/esm/features.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,+HAA+H;AAC/H,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACnB,mCAAoB,CAAA;IACpB,0BAAW,CAAA;IACX,iCAAkB,CAAA;IAClB,+BAAgB,CAAA;IAChB,kDAAmC,CAAA;AACvC,CAAC,EANW,WAAW,GAAX,WAAW,KAAX,WAAW,QAMtB"}
|
package/esm/packet.d.ts
CHANGED
|
@@ -8,6 +8,15 @@ export declare enum AdbCommand {
|
|
|
8
8
|
Open = 1313165391,
|
|
9
9
|
Write = 1163154007
|
|
10
10
|
}
|
|
11
|
+
export declare const AdbPacketHeader: Struct<{
|
|
12
|
+
command: number;
|
|
13
|
+
arg0: number;
|
|
14
|
+
arg1: number;
|
|
15
|
+
payloadLength: number;
|
|
16
|
+
checksum: number;
|
|
17
|
+
magic: number;
|
|
18
|
+
}, never, {}, undefined>;
|
|
19
|
+
export declare type AdbPacketHeader = typeof AdbPacketHeader['TDeserializeResult'];
|
|
11
20
|
export declare const AdbPacket: Struct<{
|
|
12
21
|
command: number;
|
|
13
22
|
arg0: number;
|
|
@@ -18,10 +27,20 @@ export declare const AdbPacket: Struct<{
|
|
|
18
27
|
payload: Uint8Array;
|
|
19
28
|
}, "payloadLength", {}, undefined>;
|
|
20
29
|
export declare type AdbPacket = typeof AdbPacket['TDeserializeResult'];
|
|
21
|
-
|
|
30
|
+
/**
|
|
31
|
+
* `AdbPacketData` contains all the useful fields of `AdbPacket`.
|
|
32
|
+
*
|
|
33
|
+
* `AdbBackend#connect` will return a `ReadableStream<AdbPacketData>`,
|
|
34
|
+
* so each backend can encode `AdbPacket` in different ways.
|
|
35
|
+
*
|
|
36
|
+
* `AdbBackend#connect` will return a `WritableStream<AdbPacketInit>`,
|
|
37
|
+
* however, `AdbPacketDispatcher` will transform `AdbPacketData` to `AdbPacketInit` for you,
|
|
38
|
+
* so `AdbSocket#writable#write` only needs `AdbPacketData`.
|
|
39
|
+
*/
|
|
40
|
+
export declare type AdbPacketData = Omit<typeof AdbPacket['TInit'], 'checksum' | 'magic'>;
|
|
22
41
|
export declare type AdbPacketInit = Omit<typeof AdbPacket['TInit'], 'magic'>;
|
|
23
42
|
export declare function calculateChecksum(payload: Uint8Array): number;
|
|
24
|
-
export declare function calculateChecksum(init:
|
|
43
|
+
export declare function calculateChecksum(init: AdbPacketData): AdbPacketInit;
|
|
25
44
|
export declare class AdbPacketSerializeStream extends TransformStream<AdbPacketInit, Uint8Array> {
|
|
26
45
|
constructor();
|
|
27
46
|
}
|
package/esm/packet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,oBAAY,UAAU;IAClB,IAAI,aAAa;IACjB,KAAK,aAAa;IAClB,OAAO,aAAa;IACpB,EAAE,aAAa;IACf,IAAI,aAAa;IACjB,KAAK,aAAa;CACrB;
|
|
1
|
+
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,oBAAY,UAAU;IAClB,IAAI,aAAa;IACjB,KAAK,aAAa;IAClB,OAAO,aAAa;IACpB,EAAE,aAAa;IACf,IAAI,aAAa;IACjB,KAAK,aAAa;CACrB;AAED,eAAO,MAAM,eAAe;;;;;;;wBAOL,CAAC;AAExB,oBAAY,eAAe,GAAG,OAAO,eAAe,CAAC,oBAAoB,CAAC,CAAC;AAI3E,eAAO,MAAM,SAAS;;;;;;;;kCAG0C,CAAC;AAEjE,oBAAY,SAAS,GAAG,OAAO,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAE/D;;;;;;;;;GASG;AACH,oBAAY,aAAa,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;AAGlF,oBAAY,aAAa,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAErE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CAAC;AAUtE,qBAAa,wBAAyB,SAAQ,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC;;CAqBvF"}
|
package/esm/packet.js
CHANGED
|
@@ -9,7 +9,7 @@ export var AdbCommand;
|
|
|
9
9
|
AdbCommand[AdbCommand["Open"] = 1313165391] = "Open";
|
|
10
10
|
AdbCommand[AdbCommand["Write"] = 1163154007] = "Write";
|
|
11
11
|
})(AdbCommand = AdbCommand || (AdbCommand = {}));
|
|
12
|
-
const AdbPacketHeader = new Struct({ littleEndian: true })
|
|
12
|
+
export const AdbPacketHeader = new Struct({ littleEndian: true })
|
|
13
13
|
.uint32('command')
|
|
14
14
|
.uint32('arg0')
|
|
15
15
|
.uint32('arg1')
|
|
@@ -32,7 +32,7 @@ export class AdbPacketSerializeStream extends TransformStream {
|
|
|
32
32
|
constructor() {
|
|
33
33
|
super({
|
|
34
34
|
transform: async (init, controller) => {
|
|
35
|
-
// This syntax is ugly, but I don't want to create
|
|
35
|
+
// This syntax is ugly, but I don't want to create a new object.
|
|
36
36
|
init.magic = init.command ^ 0xFFFFFFFF;
|
|
37
37
|
init.payloadLength = init.payload.byteLength;
|
|
38
38
|
controller.enqueue(AdbPacketHeader.serialize(init));
|
package/esm/packet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;IAClB,0DAAoB,CAAA;IACpB,gDAAe,CAAA;IACf,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;AACtB,CAAC,EAPW,UAAU,GAAV,UAAU,KAAV,UAAU,QAOrB;AAED,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;IAClB,0DAAoB,CAAA;IACpB,gDAAe,CAAA;IACf,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;AACtB,CAAC,EAPW,UAAU,GAAV,UAAU,KAAV,UAAU,QAOrB;AAED,MAAM,CAAC,MAAM,eAAe,GACxB,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,SAAS,CAAC;KACjB,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,eAAe,CAAC;KACvB,MAAM,CAAC,UAAU,CAAC;KAClB,KAAK,CAAC,OAAO,CAAC,CAAC;AAMxB,MAAM,CAAC,MAAM,SAAS,GAClB,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,eAAe,CAAC;KACvB,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;AAqBjE,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IACjE,IAAI,OAAO,YAAY,UAAU,EAAE;QAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;KAC7D;SAAM;QACF,OAAyB,CAAC,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzE,OAAO,OAAwB,CAAC;KACnC;AACL,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,eAA0C;IACpF;QACI,KAAK,CAAC;YACF,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;gBAClC,gEAAgE;gBAC/D,IAAuC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;gBAC1E,IAAuC,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAEjF,UAAU,CAAC,OAAO,CACd,eAAe,CAAC,SAAS,CACrB,IAAsC,CACzC,CACJ,CAAC;gBAEF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBACzB,8CAA8C;oBAC9C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
import { AutoDisposable } from '@yume-chan/event';
|
|
2
|
-
import { AdbCommand, type
|
|
2
|
+
import { AdbCommand, type AdbPacketData, type AdbPacketInit } from '../packet.js';
|
|
3
3
|
import { type ReadableWritablePair } from '../stream/index.js';
|
|
4
4
|
import { AdbSocket } from './socket.js';
|
|
5
5
|
export interface AdbIncomingSocketEventArgs {
|
|
6
6
|
handled: boolean;
|
|
7
|
-
packet:
|
|
7
|
+
packet: AdbPacketData;
|
|
8
8
|
serviceString: string;
|
|
9
9
|
socket: AdbSocket;
|
|
10
10
|
}
|
|
11
|
+
export interface AdbPacketDispatcherOptions {
|
|
12
|
+
calculateChecksum: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Before Android 9.0, ADB uses `char*` to parse service string,
|
|
15
|
+
* thus requires a null character to terminate.
|
|
16
|
+
*
|
|
17
|
+
* Usually it should have the same value as `calculateChecksum`.
|
|
18
|
+
*/
|
|
19
|
+
appendNullToServiceString: boolean;
|
|
20
|
+
maxPayloadSize: number;
|
|
21
|
+
}
|
|
11
22
|
export declare class AdbPacketDispatcher extends AutoDisposable {
|
|
12
23
|
private readonly initializers;
|
|
13
24
|
private readonly sockets;
|
|
14
25
|
private _writer;
|
|
15
|
-
|
|
16
|
-
calculateChecksum: boolean;
|
|
17
|
-
appendNullToServiceString: boolean;
|
|
26
|
+
readonly options: AdbPacketDispatcherOptions;
|
|
18
27
|
private _disconnected;
|
|
19
28
|
get disconnected(): Promise<void>;
|
|
20
29
|
private readonly incomingSocketEvent;
|
|
@@ -22,13 +31,8 @@ export declare class AdbPacketDispatcher extends AutoDisposable {
|
|
|
22
31
|
(listener: import("@yume-chan/event").EventListener<AdbIncomingSocketEventArgs, unknown, [], unknown>): import("@yume-chan/event").RemoveEventListener;
|
|
23
32
|
<TThis, TArgs extends unknown[]>(listener: import("@yume-chan/event").EventListener<AdbIncomingSocketEventArgs, TThis, TArgs, unknown>, thisArg: TThis, ...args: TArgs): import("@yume-chan/event").RemoveEventListener;
|
|
24
33
|
};
|
|
25
|
-
private readonly errorEvent;
|
|
26
|
-
get onError(): {
|
|
27
|
-
(listener: import("@yume-chan/event").EventListener<Error, unknown, [], unknown>): import("@yume-chan/event").RemoveEventListener;
|
|
28
|
-
<TThis, TArgs extends unknown[]>(listener: import("@yume-chan/event").EventListener<Error, TThis, TArgs, unknown>, thisArg: TThis, ...args: TArgs): import("@yume-chan/event").RemoveEventListener;
|
|
29
|
-
};
|
|
30
34
|
private _abortController;
|
|
31
|
-
constructor(connection: ReadableWritablePair<
|
|
35
|
+
constructor(connection: ReadableWritablePair<AdbPacketData, AdbPacketInit>, options: AdbPacketDispatcherOptions);
|
|
32
36
|
private handleOk;
|
|
33
37
|
private handleClose;
|
|
34
38
|
private handleOpen;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAqB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAgE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7H,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAqB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAgE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7H,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAC;AAE7D,MAAM,WAAW,0BAA0B;IACvC,OAAO,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,aAAa,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;IAEtB,MAAM,EAAE,SAAS,CAAC;CACrB;AAID,MAAM,WAAW,0BAA0B;IACvC,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IAGnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAElE,OAAO,CAAC,OAAO,CAA8C;IAE7D,SAAgB,OAAO,EAAE,0BAA0B,CAAC;IAEpD,OAAO,CAAC,aAAa,CAA+B;IACpD,IAAW,YAAY,kBAAyC;IAEhE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsE;IAC1G,IAAW,gBAAgB;;;MAA6C;IAExE,OAAO,CAAC,gBAAgB,CAAyB;gBAG7C,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,OAAO,EAAE,0BAA0B;IAkDvC,OAAO,CAAC,QAAQ;YAkBF,WAAW;YA8BX,UAAU;IAiCX,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA2B7D,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAChD,UAAU,CACb,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC;IAqCA,OAAO;CAiB1B"}
|