@yume-chan/adb 0.0.9 → 0.0.10
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 +23 -0
- package/CHANGELOG.md +16 -0
- package/LICENSE +21 -21
- package/README.md +227 -257
- package/dts/adb.d.ts.map +1 -1
- package/dts/auth.d.ts +11 -1
- package/dts/auth.d.ts.map +1 -1
- package/dts/backend.d.ts +3 -5
- package/dts/backend.d.ts.map +1 -1
- package/dts/commands/demo-mode.d.ts +3 -3
- package/dts/commands/demo-mode.d.ts.map +1 -1
- package/dts/commands/reverse.d.ts +2 -2
- package/dts/commands/reverse.d.ts.map +1 -1
- package/dts/commands/shell/index.d.ts +31 -5
- package/dts/commands/shell/index.d.ts.map +1 -1
- package/dts/commands/shell/legacy.d.ts +13 -2
- package/dts/commands/shell/legacy.d.ts.map +1 -1
- package/dts/commands/shell/protocol.d.ts +11 -3
- package/dts/commands/shell/protocol.d.ts.map +1 -1
- package/dts/commands/shell/types.d.ts +35 -3
- package/dts/commands/shell/types.d.ts.map +1 -1
- package/dts/commands/sync/request.d.ts +1 -1
- package/dts/commands/sync/request.d.ts.map +1 -1
- package/dts/commands/sync/response.d.ts +2 -2
- package/dts/commands/sync/response.d.ts.map +1 -1
- package/dts/commands/sync/sync.d.ts.map +1 -1
- package/dts/crypto.d.ts +7 -0
- package/dts/crypto.d.ts.map +1 -1
- package/dts/packet.d.ts.map +1 -1
- package/dts/socket/close-event-emitter.d.ts.map +1 -1
- package/dts/socket/controller.d.ts.map +1 -1
- package/dts/socket/data-event-emitter.d.ts.map +1 -1
- package/dts/socket/dispatcher.d.ts.map +1 -1
- package/dts/stream/buffered-stream.d.ts +2 -4
- package/dts/stream/buffered-stream.d.ts.map +1 -1
- package/dts/utils/encoding.d.ts +3 -0
- package/dts/utils/encoding.d.ts.map +1 -0
- package/dts/utils/index.d.ts +1 -0
- package/dts/utils/index.d.ts.map +1 -1
- package/esm/adb.js +3 -2
- package/esm/adb.js.map +1 -1
- package/esm/auth.js +2 -2
- package/esm/auth.js.map +1 -1
- package/esm/commands/demo-mode.js +9 -9
- package/esm/commands/demo-mode.js.map +1 -1
- package/esm/commands/reverse.js +3 -2
- package/esm/commands/reverse.js.map +1 -1
- package/esm/commands/shell/index.js +28 -18
- package/esm/commands/shell/index.js.map +1 -1
- package/esm/commands/shell/legacy.js +16 -0
- package/esm/commands/shell/legacy.js.map +1 -1
- package/esm/commands/shell/protocol.js +36 -9
- package/esm/commands/shell/protocol.js.map +1 -1
- package/esm/commands/sync/request.js +5 -4
- package/esm/commands/sync/request.js.map +1 -1
- package/esm/commands/sync/response.js +4 -3
- package/esm/commands/sync/response.js.map +1 -1
- package/esm/commands/sync/sync.js.map +1 -1
- package/esm/crypto.js +7 -2
- package/esm/crypto.js.map +1 -1
- package/esm/packet.js +12 -14
- package/esm/packet.js.map +1 -1
- package/esm/socket/close-event-emitter.js.map +1 -1
- package/esm/socket/controller.js.map +1 -1
- package/esm/socket/data-event-emitter.js.map +1 -1
- package/esm/socket/dispatcher.js +7 -7
- package/esm/socket/dispatcher.js.map +1 -1
- package/esm/stream/buffered-stream.js +0 -6
- package/esm/stream/buffered-stream.js.map +1 -1
- package/esm/utils/encoding.js +11 -0
- package/esm/utils/encoding.js.map +1 -0
- package/esm/utils/index.js +1 -0
- package/esm/utils/index.js.map +1 -1
- package/package.json +44 -51
- package/src/adb.ts +243 -242
- package/src/auth.ts +166 -156
- package/src/backend.ts +20 -24
- package/src/commands/base.ts +11 -11
- package/src/commands/demo-mode.ts +160 -160
- package/src/commands/framebuffer.ts +73 -73
- package/src/commands/index.ts +8 -8
- package/src/commands/install.ts +21 -21
- package/src/commands/reverse.ts +134 -133
- package/src/commands/shell/index.ts +87 -68
- package/src/commands/shell/legacy.ts +59 -42
- package/src/commands/shell/protocol.ts +121 -94
- package/src/commands/shell/types.ts +55 -21
- package/src/commands/shell/utils.ts +20 -20
- package/src/commands/sync/index.ts +7 -7
- package/src/commands/sync/list.ts +39 -39
- package/src/commands/sync/pull.ts +34 -34
- package/src/commands/sync/push.ts +46 -46
- package/src/commands/sync/request.ts +49 -48
- package/src/commands/sync/response.ts +58 -57
- package/src/commands/sync/stat.ts +121 -121
- package/src/commands/sync/sync.ts +113 -113
- package/src/commands/tcpip.ts +21 -21
- package/src/crypto.ts +285 -280
- package/src/features.ts +5 -5
- package/src/index.ts +10 -10
- package/src/packet.ts +84 -89
- package/src/socket/close-event-emitter.ts +28 -28
- package/src/socket/controller.ts +105 -105
- package/src/socket/data-event-emitter.ts +27 -27
- package/src/socket/dispatcher.ts +269 -269
- package/src/socket/index.ts +6 -6
- package/src/socket/logger.ts +12 -12
- package/src/socket/socket.ts +28 -28
- package/src/stream/buffered-stream.ts +92 -100
- package/src/stream/index.ts +2 -2
- package/src/stream/stream.ts +50 -50
- package/src/utils/auto-reset-event.ts +41 -41
- package/src/utils/base64.ts +274 -274
- package/src/utils/chunk.ts +70 -70
- package/src/utils/encoding.ts +13 -0
- package/src/utils/event-queue.ts +145 -145
- package/src/utils/index.ts +5 -4
- package/cjs/adb.js +0 -205
- package/cjs/adb.js.map +0 -1
- package/cjs/auth.js +0 -141
- package/cjs/auth.js.map +0 -1
- package/cjs/backend.js +0 -3
- package/cjs/backend.js.map +0 -1
- package/cjs/commands/base.js +0 -12
- package/cjs/commands/base.js.map +0 -1
- package/cjs/commands/demo-mode.js +0 -174
- package/cjs/commands/demo-mode.js.map +0 -1
- package/cjs/commands/framebuffer.js +0 -66
- package/cjs/commands/framebuffer.js.map +0 -1
- package/cjs/commands/index.js +0 -12
- package/cjs/commands/index.js.map +0 -1
- package/cjs/commands/install.js +0 -20
- package/cjs/commands/install.js.map +0 -1
- package/cjs/commands/reverse.js +0 -105
- package/cjs/commands/reverse.js.map +0 -1
- package/cjs/commands/shell/index.js +0 -56
- package/cjs/commands/shell/index.js.map +0 -1
- package/cjs/commands/shell/legacy.js +0 -37
- package/cjs/commands/shell/legacy.js.map +0 -1
- package/cjs/commands/shell/protocol.js +0 -83
- package/cjs/commands/shell/protocol.js.map +0 -1
- package/cjs/commands/shell/types.js +0 -3
- package/cjs/commands/shell/types.js.map +0 -1
- package/cjs/commands/shell/utils.js +0 -23
- package/cjs/commands/shell/utils.js.map +0 -1
- package/cjs/commands/sync/index.js +0 -11
- package/cjs/commands/sync/index.js.map +0 -1
- package/cjs/commands/sync/list.js +0 -36
- package/cjs/commands/sync/list.js.map +0 -1
- package/cjs/commands/sync/pull.js +0 -34
- package/cjs/commands/sync/pull.js.map +0 -1
- package/cjs/commands/sync/push.js +0 -49
- package/cjs/commands/sync/push.js.map +0 -1
- package/cjs/commands/sync/request.js +0 -48
- package/cjs/commands/sync/request.js.map +0 -1
- package/cjs/commands/sync/response.js +0 -53
- package/cjs/commands/sync/response.js.map +0 -1
- package/cjs/commands/sync/stat.js +0 -109
- package/cjs/commands/sync/stat.js.map +0 -1
- package/cjs/commands/sync/sync.js +0 -118
- package/cjs/commands/sync/sync.js.map +0 -1
- package/cjs/commands/tcpip.js +0 -28
- package/cjs/commands/tcpip.js.map +0 -1
- package/cjs/crypto.js +0 -231
- package/cjs/crypto.js.map +0 -1
- package/cjs/features.js +0 -10
- package/cjs/features.js.map +0 -1
- package/cjs/index.js +0 -14
- package/cjs/index.js.map +0 -1
- package/cjs/packet.js +0 -77
- package/cjs/packet.js.map +0 -1
- package/cjs/socket/close-event-emitter.js +0 -32
- package/cjs/socket/close-event-emitter.js.map +0 -1
- package/cjs/socket/controller.js +0 -84
- package/cjs/socket/controller.js.map +0 -1
- package/cjs/socket/data-event-emitter.js +0 -29
- package/cjs/socket/data-event-emitter.js.map +0 -1
- package/cjs/socket/dispatcher.js +0 -219
- package/cjs/socket/dispatcher.js.map +0 -1
- package/cjs/socket/index.js +0 -10
- package/cjs/socket/index.js.map +0 -1
- package/cjs/socket/logger.js +0 -3
- package/cjs/socket/logger.js.map +0 -1
- package/cjs/socket/socket.js +0 -24
- package/cjs/socket/socket.js.map +0 -1
- package/cjs/stream/buffered-stream.js +0 -78
- package/cjs/stream/buffered-stream.js.map +0 -1
- package/cjs/stream/index.js +0 -6
- package/cjs/stream/index.js.map +0 -1
- package/cjs/stream/stream.js +0 -45
- package/cjs/stream/stream.js.map +0 -1
- package/cjs/utils/auto-reset-event.js +0 -37
- package/cjs/utils/auto-reset-event.js.map +0 -1
- package/cjs/utils/base64.js +0 -210
- package/cjs/utils/base64.js.map +0 -1
- package/cjs/utils/chunk.js +0 -75
- package/cjs/utils/chunk.js.map +0 -1
- package/cjs/utils/event-queue.js +0 -108
- package/cjs/utils/event-queue.js.map +0 -1
- package/cjs/utils/index.js +0 -8
- package/cjs/utils/index.js.map +0 -1
- package/tsconfig.cjs.json +0 -11
- package/tsconfig.esm.json +0 -28
- package/tsconfig.esm.tsbuildinfo +0 -1305
- package/tsconfig.json +0 -18
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
import { AutoDisposable } from '@yume-chan/event';
|
|
2
|
-
import { Adb } from '../../adb';
|
|
3
|
-
import { AdbFeatures } from '../../features';
|
|
4
|
-
import { AdbSocket } from '../../socket';
|
|
5
|
-
import { AdbBufferedStream } from '../../stream';
|
|
6
|
-
import { AutoResetEvent } from '../../utils';
|
|
7
|
-
import { AdbSyncEntryResponse, adbSyncOpenDir } from './list';
|
|
8
|
-
import { adbSyncPull } from './pull';
|
|
9
|
-
import { adbSyncPush } from './push';
|
|
10
|
-
import { adbSyncLstat, adbSyncStat } from './stat';
|
|
11
|
-
|
|
12
|
-
export class AdbSync extends AutoDisposable {
|
|
13
|
-
protected adb: Adb;
|
|
14
|
-
|
|
15
|
-
protected stream: AdbBufferedStream;
|
|
16
|
-
|
|
17
|
-
protected sendLock = this.addDisposable(new AutoResetEvent());
|
|
18
|
-
|
|
19
|
-
public get supportsStat(): boolean {
|
|
20
|
-
return this.adb.features!.includes(AdbFeatures.StatV2);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
public constructor(adb: Adb, socket: AdbSocket) {
|
|
24
|
-
super();
|
|
25
|
-
|
|
26
|
-
this.adb = adb;
|
|
27
|
-
this.stream = new AdbBufferedStream(socket);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
public async lstat(path: string) {
|
|
31
|
-
await this.sendLock.wait();
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
return adbSyncLstat(this.stream, path, this.supportsStat);
|
|
35
|
-
} finally {
|
|
36
|
-
this.sendLock.notify();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public async stat(path: string) {
|
|
41
|
-
if (!this.supportsStat) {
|
|
42
|
-
throw new Error('Not supported');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
await this.sendLock.wait();
|
|
46
|
-
|
|
47
|
-
try {
|
|
48
|
-
return adbSyncStat(this.stream, path);
|
|
49
|
-
} finally {
|
|
50
|
-
this.sendLock.notify();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public async isDirectory(path: string): Promise<boolean> {
|
|
55
|
-
try {
|
|
56
|
-
await this.lstat(path + '/');
|
|
57
|
-
return true;
|
|
58
|
-
} catch (e) {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public async *opendir(
|
|
64
|
-
path: string
|
|
65
|
-
): AsyncGenerator<AdbSyncEntryResponse, void, void> {
|
|
66
|
-
await this.sendLock.wait();
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
yield* adbSyncOpenDir(this.stream, path);
|
|
70
|
-
} finally {
|
|
71
|
-
this.sendLock.notify();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
public async readdir(path: string) {
|
|
76
|
-
const results: AdbSyncEntryResponse[] = [];
|
|
77
|
-
for await (const entry of this.opendir(path)) {
|
|
78
|
-
results.push(entry);
|
|
79
|
-
}
|
|
80
|
-
return results;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
public async *read(filename: string): AsyncGenerator<ArrayBuffer, void, void> {
|
|
84
|
-
await this.sendLock.wait();
|
|
85
|
-
|
|
86
|
-
try {
|
|
87
|
-
yield* adbSyncPull(this.stream, filename);
|
|
88
|
-
} finally {
|
|
89
|
-
this.sendLock.notify();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public async write(
|
|
94
|
-
filename: string,
|
|
95
|
-
content: ArrayLike<number> | ArrayBufferLike | AsyncIterable<ArrayBuffer>,
|
|
96
|
-
mode?: number,
|
|
97
|
-
mtime?: number,
|
|
98
|
-
onProgress?: (uploaded: number) => void,
|
|
99
|
-
): Promise<void> {
|
|
100
|
-
await this.sendLock.wait();
|
|
101
|
-
|
|
102
|
-
try {
|
|
103
|
-
await adbSyncPush(this.stream, filename, content, mode, mtime, undefined, onProgress);
|
|
104
|
-
} finally {
|
|
105
|
-
this.sendLock.notify();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
public dispose() {
|
|
110
|
-
super.dispose();
|
|
111
|
-
this.stream.close();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
1
|
+
import { AutoDisposable } from '@yume-chan/event';
|
|
2
|
+
import { Adb } from '../../adb';
|
|
3
|
+
import { AdbFeatures } from '../../features';
|
|
4
|
+
import { AdbSocket } from '../../socket';
|
|
5
|
+
import { AdbBufferedStream } from '../../stream';
|
|
6
|
+
import { AutoResetEvent } from '../../utils';
|
|
7
|
+
import { AdbSyncEntryResponse, adbSyncOpenDir } from './list';
|
|
8
|
+
import { adbSyncPull } from './pull';
|
|
9
|
+
import { adbSyncPush } from './push';
|
|
10
|
+
import { adbSyncLstat, adbSyncStat } from './stat';
|
|
11
|
+
|
|
12
|
+
export class AdbSync extends AutoDisposable {
|
|
13
|
+
protected adb: Adb;
|
|
14
|
+
|
|
15
|
+
protected stream: AdbBufferedStream;
|
|
16
|
+
|
|
17
|
+
protected sendLock = this.addDisposable(new AutoResetEvent());
|
|
18
|
+
|
|
19
|
+
public get supportsStat(): boolean {
|
|
20
|
+
return this.adb.features!.includes(AdbFeatures.StatV2);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public constructor(adb: Adb, socket: AdbSocket) {
|
|
24
|
+
super();
|
|
25
|
+
|
|
26
|
+
this.adb = adb;
|
|
27
|
+
this.stream = new AdbBufferedStream(socket);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public async lstat(path: string) {
|
|
31
|
+
await this.sendLock.wait();
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
return adbSyncLstat(this.stream, path, this.supportsStat);
|
|
35
|
+
} finally {
|
|
36
|
+
this.sendLock.notify();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public async stat(path: string) {
|
|
41
|
+
if (!this.supportsStat) {
|
|
42
|
+
throw new Error('Not supported');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
await this.sendLock.wait();
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
return adbSyncStat(this.stream, path);
|
|
49
|
+
} finally {
|
|
50
|
+
this.sendLock.notify();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public async isDirectory(path: string): Promise<boolean> {
|
|
55
|
+
try {
|
|
56
|
+
await this.lstat(path + '/');
|
|
57
|
+
return true;
|
|
58
|
+
} catch (e) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public async *opendir(
|
|
64
|
+
path: string
|
|
65
|
+
): AsyncGenerator<AdbSyncEntryResponse, void, void> {
|
|
66
|
+
await this.sendLock.wait();
|
|
67
|
+
|
|
68
|
+
try {
|
|
69
|
+
yield* adbSyncOpenDir(this.stream, path);
|
|
70
|
+
} finally {
|
|
71
|
+
this.sendLock.notify();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public async readdir(path: string) {
|
|
76
|
+
const results: AdbSyncEntryResponse[] = [];
|
|
77
|
+
for await (const entry of this.opendir(path)) {
|
|
78
|
+
results.push(entry);
|
|
79
|
+
}
|
|
80
|
+
return results;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public async *read(filename: string): AsyncGenerator<ArrayBuffer, void, void> {
|
|
84
|
+
await this.sendLock.wait();
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
yield* adbSyncPull(this.stream, filename);
|
|
88
|
+
} finally {
|
|
89
|
+
this.sendLock.notify();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
public async write(
|
|
94
|
+
filename: string,
|
|
95
|
+
content: ArrayLike<number> | ArrayBufferLike | AsyncIterable<ArrayBuffer>,
|
|
96
|
+
mode?: number,
|
|
97
|
+
mtime?: number,
|
|
98
|
+
onProgress?: (uploaded: number) => void,
|
|
99
|
+
): Promise<void> {
|
|
100
|
+
await this.sendLock.wait();
|
|
101
|
+
|
|
102
|
+
try {
|
|
103
|
+
await adbSyncPush(this.stream, filename, content, mode, mtime, undefined, onProgress);
|
|
104
|
+
} finally {
|
|
105
|
+
this.sendLock.notify();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
public override dispose() {
|
|
110
|
+
super.dispose();
|
|
111
|
+
this.stream.close();
|
|
112
|
+
}
|
|
113
|
+
}
|
package/src/commands/tcpip.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { AdbCommandBase } from './base';
|
|
2
|
-
|
|
3
|
-
export class AdbTcpIpCommand extends AdbCommandBase {
|
|
4
|
-
public async setPort(port: number): Promise<void> {
|
|
5
|
-
if (port <= 0) {
|
|
6
|
-
throw new Error(`Invalid port ${port}`);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const output = await this.adb.createSocketAndReadAll(`tcpip:${port}`);
|
|
10
|
-
if (output !== `restarting in TCP mode port: ${port}\n`) {
|
|
11
|
-
throw new Error('Invalid response');
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
public async disable(): Promise<void> {
|
|
16
|
-
const output = await this.adb.createSocketAndReadAll('usb:');
|
|
17
|
-
if (output !== 'restarting in USB mode\n') {
|
|
18
|
-
throw new Error('Invalid response');
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
1
|
+
import { AdbCommandBase } from './base';
|
|
2
|
+
|
|
3
|
+
export class AdbTcpIpCommand extends AdbCommandBase {
|
|
4
|
+
public async setPort(port: number): Promise<void> {
|
|
5
|
+
if (port <= 0) {
|
|
6
|
+
throw new Error(`Invalid port ${port}`);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const output = await this.adb.createSocketAndReadAll(`tcpip:${port}`);
|
|
10
|
+
if (output !== `restarting in TCP mode port: ${port}\n`) {
|
|
11
|
+
throw new Error('Invalid response');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public async disable(): Promise<void> {
|
|
16
|
+
const output = await this.adb.createSocketAndReadAll('usb:');
|
|
17
|
+
if (output !== 'restarting in USB mode\n') {
|
|
18
|
+
throw new Error('Invalid response');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|