@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.
Files changed (205) hide show
  1. package/CHANGELOG.json +23 -0
  2. package/CHANGELOG.md +16 -0
  3. package/LICENSE +21 -21
  4. package/README.md +227 -257
  5. package/dts/adb.d.ts.map +1 -1
  6. package/dts/auth.d.ts +11 -1
  7. package/dts/auth.d.ts.map +1 -1
  8. package/dts/backend.d.ts +3 -5
  9. package/dts/backend.d.ts.map +1 -1
  10. package/dts/commands/demo-mode.d.ts +3 -3
  11. package/dts/commands/demo-mode.d.ts.map +1 -1
  12. package/dts/commands/reverse.d.ts +2 -2
  13. package/dts/commands/reverse.d.ts.map +1 -1
  14. package/dts/commands/shell/index.d.ts +31 -5
  15. package/dts/commands/shell/index.d.ts.map +1 -1
  16. package/dts/commands/shell/legacy.d.ts +13 -2
  17. package/dts/commands/shell/legacy.d.ts.map +1 -1
  18. package/dts/commands/shell/protocol.d.ts +11 -3
  19. package/dts/commands/shell/protocol.d.ts.map +1 -1
  20. package/dts/commands/shell/types.d.ts +35 -3
  21. package/dts/commands/shell/types.d.ts.map +1 -1
  22. package/dts/commands/sync/request.d.ts +1 -1
  23. package/dts/commands/sync/request.d.ts.map +1 -1
  24. package/dts/commands/sync/response.d.ts +2 -2
  25. package/dts/commands/sync/response.d.ts.map +1 -1
  26. package/dts/commands/sync/sync.d.ts.map +1 -1
  27. package/dts/crypto.d.ts +7 -0
  28. package/dts/crypto.d.ts.map +1 -1
  29. package/dts/packet.d.ts.map +1 -1
  30. package/dts/socket/close-event-emitter.d.ts.map +1 -1
  31. package/dts/socket/controller.d.ts.map +1 -1
  32. package/dts/socket/data-event-emitter.d.ts.map +1 -1
  33. package/dts/socket/dispatcher.d.ts.map +1 -1
  34. package/dts/stream/buffered-stream.d.ts +2 -4
  35. package/dts/stream/buffered-stream.d.ts.map +1 -1
  36. package/dts/utils/encoding.d.ts +3 -0
  37. package/dts/utils/encoding.d.ts.map +1 -0
  38. package/dts/utils/index.d.ts +1 -0
  39. package/dts/utils/index.d.ts.map +1 -1
  40. package/esm/adb.js +3 -2
  41. package/esm/adb.js.map +1 -1
  42. package/esm/auth.js +2 -2
  43. package/esm/auth.js.map +1 -1
  44. package/esm/commands/demo-mode.js +9 -9
  45. package/esm/commands/demo-mode.js.map +1 -1
  46. package/esm/commands/reverse.js +3 -2
  47. package/esm/commands/reverse.js.map +1 -1
  48. package/esm/commands/shell/index.js +28 -18
  49. package/esm/commands/shell/index.js.map +1 -1
  50. package/esm/commands/shell/legacy.js +16 -0
  51. package/esm/commands/shell/legacy.js.map +1 -1
  52. package/esm/commands/shell/protocol.js +36 -9
  53. package/esm/commands/shell/protocol.js.map +1 -1
  54. package/esm/commands/sync/request.js +5 -4
  55. package/esm/commands/sync/request.js.map +1 -1
  56. package/esm/commands/sync/response.js +4 -3
  57. package/esm/commands/sync/response.js.map +1 -1
  58. package/esm/commands/sync/sync.js.map +1 -1
  59. package/esm/crypto.js +7 -2
  60. package/esm/crypto.js.map +1 -1
  61. package/esm/packet.js +12 -14
  62. package/esm/packet.js.map +1 -1
  63. package/esm/socket/close-event-emitter.js.map +1 -1
  64. package/esm/socket/controller.js.map +1 -1
  65. package/esm/socket/data-event-emitter.js.map +1 -1
  66. package/esm/socket/dispatcher.js +7 -7
  67. package/esm/socket/dispatcher.js.map +1 -1
  68. package/esm/stream/buffered-stream.js +0 -6
  69. package/esm/stream/buffered-stream.js.map +1 -1
  70. package/esm/utils/encoding.js +11 -0
  71. package/esm/utils/encoding.js.map +1 -0
  72. package/esm/utils/index.js +1 -0
  73. package/esm/utils/index.js.map +1 -1
  74. package/package.json +44 -51
  75. package/src/adb.ts +243 -242
  76. package/src/auth.ts +166 -156
  77. package/src/backend.ts +20 -24
  78. package/src/commands/base.ts +11 -11
  79. package/src/commands/demo-mode.ts +160 -160
  80. package/src/commands/framebuffer.ts +73 -73
  81. package/src/commands/index.ts +8 -8
  82. package/src/commands/install.ts +21 -21
  83. package/src/commands/reverse.ts +134 -133
  84. package/src/commands/shell/index.ts +87 -68
  85. package/src/commands/shell/legacy.ts +59 -42
  86. package/src/commands/shell/protocol.ts +121 -94
  87. package/src/commands/shell/types.ts +55 -21
  88. package/src/commands/shell/utils.ts +20 -20
  89. package/src/commands/sync/index.ts +7 -7
  90. package/src/commands/sync/list.ts +39 -39
  91. package/src/commands/sync/pull.ts +34 -34
  92. package/src/commands/sync/push.ts +46 -46
  93. package/src/commands/sync/request.ts +49 -48
  94. package/src/commands/sync/response.ts +58 -57
  95. package/src/commands/sync/stat.ts +121 -121
  96. package/src/commands/sync/sync.ts +113 -113
  97. package/src/commands/tcpip.ts +21 -21
  98. package/src/crypto.ts +285 -280
  99. package/src/features.ts +5 -5
  100. package/src/index.ts +10 -10
  101. package/src/packet.ts +84 -89
  102. package/src/socket/close-event-emitter.ts +28 -28
  103. package/src/socket/controller.ts +105 -105
  104. package/src/socket/data-event-emitter.ts +27 -27
  105. package/src/socket/dispatcher.ts +269 -269
  106. package/src/socket/index.ts +6 -6
  107. package/src/socket/logger.ts +12 -12
  108. package/src/socket/socket.ts +28 -28
  109. package/src/stream/buffered-stream.ts +92 -100
  110. package/src/stream/index.ts +2 -2
  111. package/src/stream/stream.ts +50 -50
  112. package/src/utils/auto-reset-event.ts +41 -41
  113. package/src/utils/base64.ts +274 -274
  114. package/src/utils/chunk.ts +70 -70
  115. package/src/utils/encoding.ts +13 -0
  116. package/src/utils/event-queue.ts +145 -145
  117. package/src/utils/index.ts +5 -4
  118. package/cjs/adb.js +0 -205
  119. package/cjs/adb.js.map +0 -1
  120. package/cjs/auth.js +0 -141
  121. package/cjs/auth.js.map +0 -1
  122. package/cjs/backend.js +0 -3
  123. package/cjs/backend.js.map +0 -1
  124. package/cjs/commands/base.js +0 -12
  125. package/cjs/commands/base.js.map +0 -1
  126. package/cjs/commands/demo-mode.js +0 -174
  127. package/cjs/commands/demo-mode.js.map +0 -1
  128. package/cjs/commands/framebuffer.js +0 -66
  129. package/cjs/commands/framebuffer.js.map +0 -1
  130. package/cjs/commands/index.js +0 -12
  131. package/cjs/commands/index.js.map +0 -1
  132. package/cjs/commands/install.js +0 -20
  133. package/cjs/commands/install.js.map +0 -1
  134. package/cjs/commands/reverse.js +0 -105
  135. package/cjs/commands/reverse.js.map +0 -1
  136. package/cjs/commands/shell/index.js +0 -56
  137. package/cjs/commands/shell/index.js.map +0 -1
  138. package/cjs/commands/shell/legacy.js +0 -37
  139. package/cjs/commands/shell/legacy.js.map +0 -1
  140. package/cjs/commands/shell/protocol.js +0 -83
  141. package/cjs/commands/shell/protocol.js.map +0 -1
  142. package/cjs/commands/shell/types.js +0 -3
  143. package/cjs/commands/shell/types.js.map +0 -1
  144. package/cjs/commands/shell/utils.js +0 -23
  145. package/cjs/commands/shell/utils.js.map +0 -1
  146. package/cjs/commands/sync/index.js +0 -11
  147. package/cjs/commands/sync/index.js.map +0 -1
  148. package/cjs/commands/sync/list.js +0 -36
  149. package/cjs/commands/sync/list.js.map +0 -1
  150. package/cjs/commands/sync/pull.js +0 -34
  151. package/cjs/commands/sync/pull.js.map +0 -1
  152. package/cjs/commands/sync/push.js +0 -49
  153. package/cjs/commands/sync/push.js.map +0 -1
  154. package/cjs/commands/sync/request.js +0 -48
  155. package/cjs/commands/sync/request.js.map +0 -1
  156. package/cjs/commands/sync/response.js +0 -53
  157. package/cjs/commands/sync/response.js.map +0 -1
  158. package/cjs/commands/sync/stat.js +0 -109
  159. package/cjs/commands/sync/stat.js.map +0 -1
  160. package/cjs/commands/sync/sync.js +0 -118
  161. package/cjs/commands/sync/sync.js.map +0 -1
  162. package/cjs/commands/tcpip.js +0 -28
  163. package/cjs/commands/tcpip.js.map +0 -1
  164. package/cjs/crypto.js +0 -231
  165. package/cjs/crypto.js.map +0 -1
  166. package/cjs/features.js +0 -10
  167. package/cjs/features.js.map +0 -1
  168. package/cjs/index.js +0 -14
  169. package/cjs/index.js.map +0 -1
  170. package/cjs/packet.js +0 -77
  171. package/cjs/packet.js.map +0 -1
  172. package/cjs/socket/close-event-emitter.js +0 -32
  173. package/cjs/socket/close-event-emitter.js.map +0 -1
  174. package/cjs/socket/controller.js +0 -84
  175. package/cjs/socket/controller.js.map +0 -1
  176. package/cjs/socket/data-event-emitter.js +0 -29
  177. package/cjs/socket/data-event-emitter.js.map +0 -1
  178. package/cjs/socket/dispatcher.js +0 -219
  179. package/cjs/socket/dispatcher.js.map +0 -1
  180. package/cjs/socket/index.js +0 -10
  181. package/cjs/socket/index.js.map +0 -1
  182. package/cjs/socket/logger.js +0 -3
  183. package/cjs/socket/logger.js.map +0 -1
  184. package/cjs/socket/socket.js +0 -24
  185. package/cjs/socket/socket.js.map +0 -1
  186. package/cjs/stream/buffered-stream.js +0 -78
  187. package/cjs/stream/buffered-stream.js.map +0 -1
  188. package/cjs/stream/index.js +0 -6
  189. package/cjs/stream/index.js.map +0 -1
  190. package/cjs/stream/stream.js +0 -45
  191. package/cjs/stream/stream.js.map +0 -1
  192. package/cjs/utils/auto-reset-event.js +0 -37
  193. package/cjs/utils/auto-reset-event.js.map +0 -1
  194. package/cjs/utils/base64.js +0 -210
  195. package/cjs/utils/base64.js.map +0 -1
  196. package/cjs/utils/chunk.js +0 -75
  197. package/cjs/utils/chunk.js.map +0 -1
  198. package/cjs/utils/event-queue.js +0 -108
  199. package/cjs/utils/event-queue.js.map +0 -1
  200. package/cjs/utils/index.js +0 -8
  201. package/cjs/utils/index.js.map +0 -1
  202. package/tsconfig.cjs.json +0 -11
  203. package/tsconfig.esm.json +0 -28
  204. package/tsconfig.esm.tsbuildinfo +0 -1305
  205. package/tsconfig.json +0 -18
@@ -1,100 +1,92 @@
1
- import { StructDeserializationContext } from '@yume-chan/struct';
2
- import { AdbSocket, AdbSocketInfo } from '../socket';
3
- import { AdbSocketStream } from './stream';
4
-
5
- export interface Stream {
6
- /**
7
- * @param length A hint of how much data should be read.
8
- * @returns Data, which can be either more or less than `length`
9
- */
10
- read(length: number): ArrayBuffer | Promise<ArrayBuffer>;
11
-
12
- close?(): void;
13
- }
14
-
15
- export class BufferedStream<T extends Stream> {
16
- private buffer: Uint8Array | undefined;
17
-
18
- protected readonly stream: T;
19
-
20
- public constructor(stream: T) {
21
- this.stream = stream;
22
- }
23
-
24
- public async read(length: number): Promise<ArrayBuffer> {
25
- let array: Uint8Array;
26
- let index: number;
27
- if (this.buffer) {
28
- const buffer = this.buffer;
29
- if (buffer.byteLength > length) {
30
- this.buffer = buffer.subarray(length);
31
- return buffer.slice(0, length).buffer;
32
- }
33
-
34
- array = new Uint8Array(length);
35
- array.set(buffer);
36
- index = buffer.byteLength;
37
- this.buffer = undefined;
38
- } else {
39
- const buffer = await this.stream.read(length);
40
- if (buffer.byteLength === length) {
41
- return buffer;
42
- }
43
-
44
- if (buffer.byteLength > length) {
45
- this.buffer = new Uint8Array(buffer, length);
46
- return buffer.slice(0, length);
47
- }
48
-
49
- array = new Uint8Array(length);
50
- array.set(new Uint8Array(buffer), 0);
51
- index = buffer.byteLength;
52
- }
53
-
54
- while (index < length) {
55
- const left = length - index;
56
-
57
- const buffer = await this.stream.read(left);
58
- if (buffer.byteLength > left) {
59
- array.set(new Uint8Array(buffer, 0, left), index);
60
- this.buffer = new Uint8Array(buffer, left);
61
- return array.buffer;
62
- }
63
-
64
- array.set(new Uint8Array(buffer), index);
65
- index += buffer.byteLength;
66
- }
67
-
68
- return array.buffer;
69
- }
70
-
71
- public close() {
72
- this.stream.close?.();
73
- }
74
- }
75
-
76
- export class AdbBufferedStream
77
- extends BufferedStream<AdbSocketStream>
78
- implements AdbSocketInfo, StructDeserializationContext {
79
- public get backend() { return this.stream.backend; }
80
- public get localId() { return this.stream.localId; }
81
- public get remoteId() { return this.stream.remoteId; }
82
- public get localCreated() { return this.stream.localCreated; }
83
- public get serviceString() { return this.stream.serviceString; }
84
-
85
- public constructor(socket: AdbSocket) {
86
- super(new AdbSocketStream(socket));
87
- }
88
-
89
- public write(data: ArrayBuffer): Promise<void> {
90
- return this.stream.write(data);
91
- }
92
-
93
- public decodeUtf8(buffer: ArrayBuffer): string {
94
- return this.backend.decodeUtf8(buffer);
95
- }
96
-
97
- public encodeUtf8(input: string): ArrayBuffer {
98
- return this.backend.encodeUtf8(input);
99
- }
100
- }
1
+ import { StructAsyncDeserializeStream } from '@yume-chan/struct';
2
+ import { AdbSocket, AdbSocketInfo } from '../socket';
3
+ import { AdbSocketStream } from './stream';
4
+
5
+ export interface Stream {
6
+ /**
7
+ * @param length A hint of how much data should be read.
8
+ * @returns Data, which can be either more or less than `length`
9
+ */
10
+ read(length: number): ArrayBuffer | Promise<ArrayBuffer>;
11
+
12
+ close?(): void;
13
+ }
14
+
15
+ export class BufferedStream<T extends Stream> {
16
+ private buffer: Uint8Array | undefined;
17
+
18
+ protected readonly stream: T;
19
+
20
+ public constructor(stream: T) {
21
+ this.stream = stream;
22
+ }
23
+
24
+ public async read(length: number): Promise<ArrayBuffer> {
25
+ let array: Uint8Array;
26
+ let index: number;
27
+ if (this.buffer) {
28
+ const buffer = this.buffer;
29
+ if (buffer.byteLength > length) {
30
+ this.buffer = buffer.subarray(length);
31
+ return buffer.slice(0, length).buffer;
32
+ }
33
+
34
+ array = new Uint8Array(length);
35
+ array.set(buffer);
36
+ index = buffer.byteLength;
37
+ this.buffer = undefined;
38
+ } else {
39
+ const buffer = await this.stream.read(length);
40
+ if (buffer.byteLength === length) {
41
+ return buffer;
42
+ }
43
+
44
+ if (buffer.byteLength > length) {
45
+ this.buffer = new Uint8Array(buffer, length);
46
+ return buffer.slice(0, length);
47
+ }
48
+
49
+ array = new Uint8Array(length);
50
+ array.set(new Uint8Array(buffer), 0);
51
+ index = buffer.byteLength;
52
+ }
53
+
54
+ while (index < length) {
55
+ const left = length - index;
56
+
57
+ const buffer = await this.stream.read(left);
58
+ if (buffer.byteLength > left) {
59
+ array.set(new Uint8Array(buffer, 0, left), index);
60
+ this.buffer = new Uint8Array(buffer, left);
61
+ return array.buffer;
62
+ }
63
+
64
+ array.set(new Uint8Array(buffer), index);
65
+ index += buffer.byteLength;
66
+ }
67
+
68
+ return array.buffer;
69
+ }
70
+
71
+ public close() {
72
+ this.stream.close?.();
73
+ }
74
+ }
75
+
76
+ export class AdbBufferedStream
77
+ extends BufferedStream<AdbSocketStream>
78
+ implements AdbSocketInfo, StructAsyncDeserializeStream {
79
+ public get backend() { return this.stream.backend; }
80
+ public get localId() { return this.stream.localId; }
81
+ public get remoteId() { return this.stream.remoteId; }
82
+ public get localCreated() { return this.stream.localCreated; }
83
+ public get serviceString() { return this.stream.serviceString; }
84
+
85
+ public constructor(socket: AdbSocket) {
86
+ super(new AdbSocketStream(socket));
87
+ }
88
+
89
+ public write(data: ArrayBuffer): Promise<void> {
90
+ return this.stream.write(data);
91
+ }
92
+ }
@@ -1,2 +1,2 @@
1
- export * from './buffered-stream';
2
- export * from './stream';
1
+ export * from './buffered-stream';
2
+ export * from './stream';
@@ -1,50 +1,50 @@
1
- import { once } from '@yume-chan/event';
2
- import { ValueOrPromise } from '@yume-chan/struct';
3
- import { AdbSocket, AdbSocketInfo } from '../socket';
4
- import { EventQueue } from '../utils';
5
-
6
- export class AdbSocketStream implements AdbSocketInfo {
7
- private socket: AdbSocket;
8
-
9
- private queue: EventQueue<ArrayBuffer>;
10
-
11
- public get backend() { return this.socket.backend; }
12
- public get localId() { return this.socket.localId; }
13
- public get remoteId() { return this.socket.remoteId; }
14
- public get localCreated() { return this.socket.localCreated; }
15
- public get serviceString() { return this.socket.serviceString; }
16
-
17
- public constructor(socket: AdbSocket) {
18
- this.socket = socket;
19
-
20
- this.queue = new EventQueue<ArrayBuffer>({
21
- highWaterMark: 16 * 1024,
22
- });
23
-
24
- this.socket.onData((buffer): ValueOrPromise<void> => {
25
- if (!this.queue.enqueue(buffer, buffer.byteLength)) {
26
- return once(this.queue.onDrain);
27
- }
28
- });
29
-
30
- this.socket.onClose(() => {
31
- this.queue.end();
32
- });
33
- }
34
-
35
- public async read(): Promise<ArrayBuffer> {
36
- try {
37
- return await this.queue.dequeue();
38
- } catch {
39
- throw new Error('Can not read after AdbSocketStream has been closed');
40
- }
41
- }
42
-
43
- public write(data: ArrayBuffer): Promise<void> {
44
- return this.socket.write(data);
45
- }
46
-
47
- close(): void {
48
- this.socket.close();
49
- }
50
- }
1
+ import { once } from '@yume-chan/event';
2
+ import { ValueOrPromise } from '@yume-chan/struct';
3
+ import { AdbSocket, AdbSocketInfo } from '../socket';
4
+ import { EventQueue } from '../utils';
5
+
6
+ export class AdbSocketStream implements AdbSocketInfo {
7
+ private socket: AdbSocket;
8
+
9
+ private queue: EventQueue<ArrayBuffer>;
10
+
11
+ public get backend() { return this.socket.backend; }
12
+ public get localId() { return this.socket.localId; }
13
+ public get remoteId() { return this.socket.remoteId; }
14
+ public get localCreated() { return this.socket.localCreated; }
15
+ public get serviceString() { return this.socket.serviceString; }
16
+
17
+ public constructor(socket: AdbSocket) {
18
+ this.socket = socket;
19
+
20
+ this.queue = new EventQueue<ArrayBuffer>({
21
+ highWaterMark: 16 * 1024,
22
+ });
23
+
24
+ this.socket.onData((buffer): ValueOrPromise<void> => {
25
+ if (!this.queue.enqueue(buffer, buffer.byteLength)) {
26
+ return once(this.queue.onDrain);
27
+ }
28
+ });
29
+
30
+ this.socket.onClose(() => {
31
+ this.queue.end();
32
+ });
33
+ }
34
+
35
+ public async read(): Promise<ArrayBuffer> {
36
+ try {
37
+ return await this.queue.dequeue();
38
+ } catch {
39
+ throw new Error('Can not read after AdbSocketStream has been closed');
40
+ }
41
+ }
42
+
43
+ public write(data: ArrayBuffer): Promise<void> {
44
+ return this.socket.write(data);
45
+ }
46
+
47
+ close(): void {
48
+ this.socket.close();
49
+ }
50
+ }
@@ -1,41 +1,41 @@
1
- import { PromiseResolver } from '@yume-chan/async';
2
- import { Disposable } from '@yume-chan/event';
3
-
4
- export class AutoResetEvent implements Disposable {
5
- private readonly list: PromiseResolver<void>[] = [];
6
-
7
- private blocking: boolean;
8
-
9
- public constructor(initialSet = false) {
10
- this.blocking = initialSet;
11
- }
12
-
13
- public wait(): Promise<void> {
14
- if (!this.blocking) {
15
- this.blocking = true;
16
-
17
- if (this.list.length === 0) {
18
- return Promise.resolve();
19
- }
20
- }
21
-
22
- const resolver = new PromiseResolver<void>();
23
- this.list.push(resolver);
24
- return resolver.promise;
25
- }
26
-
27
- public notify() {
28
- if (this.list.length !== 0) {
29
- this.list.pop()!.resolve();
30
- } else {
31
- this.blocking = false;
32
- }
33
- }
34
-
35
- public dispose() {
36
- for (const item of this.list) {
37
- item.reject(new Error('The AutoResetEvent has been disposed'));
38
- }
39
- this.list.length = 0;
40
- }
41
- }
1
+ import { PromiseResolver } from '@yume-chan/async';
2
+ import { Disposable } from '@yume-chan/event';
3
+
4
+ export class AutoResetEvent implements Disposable {
5
+ private readonly list: PromiseResolver<void>[] = [];
6
+
7
+ private blocking: boolean;
8
+
9
+ public constructor(initialSet = false) {
10
+ this.blocking = initialSet;
11
+ }
12
+
13
+ public wait(): Promise<void> {
14
+ if (!this.blocking) {
15
+ this.blocking = true;
16
+
17
+ if (this.list.length === 0) {
18
+ return Promise.resolve();
19
+ }
20
+ }
21
+
22
+ const resolver = new PromiseResolver<void>();
23
+ this.list.push(resolver);
24
+ return resolver.promise;
25
+ }
26
+
27
+ public notify() {
28
+ if (this.list.length !== 0) {
29
+ this.list.pop()!.resolve();
30
+ } else {
31
+ this.blocking = false;
32
+ }
33
+ }
34
+
35
+ public dispose() {
36
+ for (const item of this.list) {
37
+ item.reject(new Error('The AutoResetEvent has been disposed'));
38
+ }
39
+ this.list.length = 0;
40
+ }
41
+ }