@yume-chan/adb 0.0.11 → 0.0.14

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 (137) hide show
  1. package/CHANGELOG.json +39 -0
  2. package/CHANGELOG.md +23 -1
  3. package/README.md +24 -17
  4. package/esm/adb.d.ts +10 -9
  5. package/esm/adb.d.ts.map +1 -1
  6. package/esm/adb.js +87 -64
  7. package/esm/adb.js.map +1 -1
  8. package/esm/auth.d.ts +6 -6
  9. package/esm/auth.d.ts.map +1 -1
  10. package/esm/auth.js +8 -6
  11. package/esm/auth.js.map +1 -1
  12. package/esm/backend.d.ts +2 -2
  13. package/esm/commands/install.d.ts.map +1 -1
  14. package/esm/commands/install.js +5 -7
  15. package/esm/commands/install.js.map +1 -1
  16. package/esm/commands/reverse.d.ts +7 -10
  17. package/esm/commands/reverse.d.ts.map +1 -1
  18. package/esm/commands/reverse.js +9 -15
  19. package/esm/commands/reverse.js.map +1 -1
  20. package/esm/commands/subprocess/index.d.ts +19 -20
  21. package/esm/commands/subprocess/index.d.ts.map +1 -1
  22. package/esm/commands/subprocess/index.js +36 -31
  23. package/esm/commands/subprocess/index.js.map +1 -1
  24. package/esm/commands/subprocess/legacy.d.ts +14 -7
  25. package/esm/commands/subprocess/legacy.d.ts.map +1 -1
  26. package/esm/commands/subprocess/legacy.js +14 -5
  27. package/esm/commands/subprocess/legacy.js.map +1 -1
  28. package/esm/commands/subprocess/protocol.d.ts +3 -2
  29. package/esm/commands/subprocess/protocol.d.ts.map +1 -1
  30. package/esm/commands/subprocess/protocol.js +6 -4
  31. package/esm/commands/subprocess/protocol.js.map +1 -1
  32. package/esm/commands/subprocess/protocols/index.d.ts +4 -0
  33. package/esm/commands/subprocess/protocols/index.d.ts.map +1 -0
  34. package/esm/commands/subprocess/protocols/index.js +4 -0
  35. package/esm/commands/subprocess/protocols/index.js.map +1 -0
  36. package/esm/commands/subprocess/protocols/none.d.ts +35 -0
  37. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -0
  38. package/esm/commands/subprocess/protocols/none.js +53 -0
  39. package/esm/commands/subprocess/protocols/none.js.map +1 -0
  40. package/esm/commands/subprocess/protocols/shell.d.ts +39 -0
  41. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -0
  42. package/esm/commands/subprocess/protocols/shell.js +155 -0
  43. package/esm/commands/subprocess/protocols/shell.js.map +1 -0
  44. package/esm/commands/subprocess/protocols/types.d.ts +50 -0
  45. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -0
  46. package/esm/commands/subprocess/protocols/types.js +2 -0
  47. package/esm/commands/subprocess/protocols/types.js.map +1 -0
  48. package/esm/commands/subprocess/types.d.ts +9 -6
  49. package/esm/commands/subprocess/types.d.ts.map +1 -1
  50. package/esm/commands/sync/list.d.ts +25 -1
  51. package/esm/commands/sync/list.d.ts.map +1 -1
  52. package/esm/commands/sync/list.js +40 -5
  53. package/esm/commands/sync/list.js.map +1 -1
  54. package/esm/commands/sync/pull.d.ts.map +1 -1
  55. package/esm/commands/sync/pull.js +6 -3
  56. package/esm/commands/sync/pull.js.map +1 -1
  57. package/esm/commands/sync/request.d.ts +1 -0
  58. package/esm/commands/sync/request.d.ts.map +1 -1
  59. package/esm/commands/sync/request.js +1 -0
  60. package/esm/commands/sync/request.js.map +1 -1
  61. package/esm/commands/sync/response.d.ts +2 -1
  62. package/esm/commands/sync/response.d.ts.map +1 -1
  63. package/esm/commands/sync/response.js +2 -1
  64. package/esm/commands/sync/response.js.map +1 -1
  65. package/esm/commands/sync/stat.d.ts +13 -1
  66. package/esm/commands/sync/stat.d.ts.map +1 -1
  67. package/esm/commands/sync/stat.js +20 -7
  68. package/esm/commands/sync/stat.js.map +1 -1
  69. package/esm/commands/sync/sync.d.ts +13 -35
  70. package/esm/commands/sync/sync.d.ts.map +1 -1
  71. package/esm/commands/sync/sync.js +39 -9
  72. package/esm/commands/sync/sync.js.map +1 -1
  73. package/esm/crypto.d.ts +23 -10
  74. package/esm/crypto.d.ts.map +1 -1
  75. package/esm/crypto.js +64 -46
  76. package/esm/crypto.js.map +1 -1
  77. package/esm/features.d.ts +4 -2
  78. package/esm/features.d.ts.map +1 -1
  79. package/esm/features.js +6 -2
  80. package/esm/features.js.map +1 -1
  81. package/esm/packet.d.ts +21 -2
  82. package/esm/packet.d.ts.map +1 -1
  83. package/esm/packet.js +2 -2
  84. package/esm/packet.js.map +1 -1
  85. package/esm/socket/dispatcher.d.ts +34 -23
  86. package/esm/socket/dispatcher.d.ts.map +1 -1
  87. package/esm/socket/dispatcher.js +92 -70
  88. package/esm/socket/dispatcher.js.map +1 -1
  89. package/esm/socket/socket.d.ts +29 -8
  90. package/esm/socket/socket.d.ts.map +1 -1
  91. package/esm/socket/socket.js +41 -27
  92. package/esm/socket/socket.js.map +1 -1
  93. package/esm/stream/detect.d.ts +1 -17
  94. package/esm/stream/detect.d.ts.map +1 -1
  95. package/esm/stream/detect.js +4 -5
  96. package/esm/stream/detect.js.map +1 -1
  97. package/esm/stream/detect.polyfill.d.ts.map +1 -1
  98. package/esm/stream/detect.polyfill.js +4 -1
  99. package/esm/stream/detect.polyfill.js.map +1 -1
  100. package/esm/stream/transform.d.ts +37 -32
  101. package/esm/stream/transform.d.ts.map +1 -1
  102. package/esm/stream/transform.js +106 -92
  103. package/esm/stream/transform.js.map +1 -1
  104. package/esm/utils/encoding.d.ts.map +1 -1
  105. package/esm/utils/encoding.js.map +1 -1
  106. package/esm/utils/index.d.ts +1 -1
  107. package/esm/utils/index.d.ts.map +1 -1
  108. package/esm/utils/index.js +1 -1
  109. package/esm/utils/index.js.map +1 -1
  110. package/package.json +6 -6
  111. package/src/adb.ts +105 -76
  112. package/src/auth.ts +21 -18
  113. package/src/backend.ts +2 -2
  114. package/src/commands/install.ts +7 -9
  115. package/src/commands/reverse.ts +13 -24
  116. package/src/commands/subprocess/index.ts +57 -42
  117. package/src/commands/subprocess/protocols/index.ts +3 -0
  118. package/src/commands/subprocess/{legacy.ts → protocols/none.ts} +20 -10
  119. package/src/commands/subprocess/{protocol.ts → protocols/shell.ts} +22 -17
  120. package/src/commands/subprocess/{types.ts → protocols/types.ts} +13 -9
  121. package/src/commands/sync/list.ts +51 -5
  122. package/src/commands/sync/pull.ts +6 -3
  123. package/src/commands/sync/request.ts +1 -0
  124. package/src/commands/sync/response.ts +8 -2
  125. package/src/commands/sync/stat.ts +36 -9
  126. package/src/commands/sync/sync.ts +55 -19
  127. package/src/crypto.ts +72 -56
  128. package/src/features.ts +6 -2
  129. package/src/packet.ts +17 -6
  130. package/src/socket/dispatcher.ts +133 -88
  131. package/src/socket/socket.ts +61 -48
  132. package/src/stream/detect.polyfill.ts +4 -1
  133. package/src/stream/detect.ts +4 -24
  134. package/src/stream/transform.ts +133 -116
  135. package/src/utils/index.ts +1 -1
  136. package/tsconfig.build.tsbuildinfo +1 -1
  137. package/src/utils/encoding.ts +0 -13
package/CHANGELOG.json CHANGED
@@ -1,6 +1,45 @@
1
1
  {
2
2
  "name": "@yume-chan/adb",
3
3
  "entries": [
4
+ {
5
+ "version": "0.0.14",
6
+ "tag": "@yume-chan/adb_v0.0.14",
7
+ "date": "Sat, 30 Apr 2022 14:05:48 GMT",
8
+ "comments": {
9
+ "none": [
10
+ {
11
+ "comment": "Fix an issue where `subprocess.spawn` doesn't work on Android 6"
12
+ },
13
+ {
14
+ "comment": "Add an `Adb#close()` method to gracefully shutdown a connection"
15
+ }
16
+ ]
17
+ }
18
+ },
19
+ {
20
+ "version": "0.0.13",
21
+ "tag": "@yume-chan/adb_v0.0.13",
22
+ "date": "Thu, 28 Apr 2022 01:23:53 GMT",
23
+ "comments": {
24
+ "none": [
25
+ {
26
+ "comment": "Add support for raw shell mode"
27
+ },
28
+ {
29
+ "comment": "Add support for LIS2 command in Sync protocol"
30
+ },
31
+ {
32
+ "comment": "Add workaround for the push_mkdir issue in Android 9"
33
+ }
34
+ ]
35
+ }
36
+ },
37
+ {
38
+ "version": "0.0.12",
39
+ "tag": "@yume-chan/adb_v0.0.12",
40
+ "date": "Sun, 03 Apr 2022 11:18:47 GMT",
41
+ "comments": {}
42
+ },
4
43
  {
5
44
  "version": "0.0.11",
6
45
  "tag": "@yume-chan/adb_v0.0.11",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,28 @@
1
1
  # Change Log - @yume-chan/adb
2
2
 
3
- This log was last generated on Sun, 03 Apr 2022 10:54:15 GMT and should not be manually modified.
3
+ This log was last generated on Sat, 30 Apr 2022 14:05:48 GMT and should not be manually modified.
4
+
5
+ ## 0.0.14
6
+ Sat, 30 Apr 2022 14:05:48 GMT
7
+
8
+ ### Updates
9
+
10
+ - Fix an issue where `subprocess.spawn` doesn't work on Android 6
11
+ - Add an `Adb#close()` method to gracefully shutdown a connection
12
+
13
+ ## 0.0.13
14
+ Thu, 28 Apr 2022 01:23:53 GMT
15
+
16
+ ### Updates
17
+
18
+ - Add support for raw shell mode
19
+ - Add support for LIS2 command in Sync protocol
20
+ - Add workaround for the push_mkdir issue in Android 9
21
+
22
+ ## 0.0.12
23
+ Sun, 03 Apr 2022 11:18:47 GMT
24
+
25
+ _Version update only_
4
26
 
5
27
  ## 0.0.11
6
28
  Sun, 03 Apr 2022 10:54:15 GMT
package/README.md CHANGED
@@ -18,9 +18,10 @@ TypeScript implementation of Android Debug Bridge (ADB) protocol.
18
18
  - [AdbAuthenticator](#adbauthenticator)
19
19
  - [`authenticate`](#authenticate)
20
20
  - [Stream multiplex](#stream-multiplex)
21
- - [Backend](#backend-1)
22
21
  - [Commands](#commands)
23
- - [childProcess](#childprocess)
22
+ - [subprocess](#subprocess)
23
+ - [raw mode](#raw-mode)
24
+ - [pty mode](#pty-mode)
24
25
  - [usb](#usb)
25
26
  - [tcpip](#tcpip)
26
27
  - [sync](#sync)
@@ -48,10 +49,9 @@ Each backend may have different requirements.
48
49
  | | Chrome | Edge | Firefox | Internet Explorer | Safari | Node.js |
49
50
  | ------------------------------- | ------ | ---- | ------- | ----------------- | ------ | ------------------- |
50
51
  | `@yume-chan/struct`<sup>1</sup> | 67 | 79 | 68 | No | 14 | 8.3<sup>2</sup>, 11 |
51
- | [Streams][MDN_Streams] | 67 | 79 | No | No | 14.1 | 16.5 |
52
52
  | *Overall* | 67 | 79 | No | No | 14.1 | 16.5 |
53
53
 
54
- <sup>1</sup> `uint64` and `string` used.
54
+ <sup>1</sup> `uint64` and `string` are used.
55
55
 
56
56
  <sup>2</sup> `TextEncoder` and `TextDecoder` are only available in `util` module. Need to be assigned to `globalThis`.
57
57
 
@@ -61,8 +61,6 @@ Each backend may have different requirements.
61
61
  | --------------- | ------ | ---- | ------- | ----------------- | ------ | ------- |
62
62
  | Top-level await | 89 | 89 | 89 | No | 15 | 14.8 |
63
63
 
64
- [MDN_Streams]: https://developer.mozilla.org/en-US/docs/Web/API/Streams_API
65
-
66
64
  ## Connection
67
65
 
68
66
  This library doesn't tie to a specific transportation method.
@@ -79,7 +77,7 @@ connect(): ValueOrPromise<ReadableWritablePair<AdbPacketCore, AdbPacketInit>>
79
77
 
80
78
  Connect to a device and create a pair of `AdbPacket` streams.
81
79
 
82
- The backend is responsible for serializing and deserializing the packets, because it's extreme slow for WebUSB backend (`@yume-chan/adb-backend-webusb`) to read packets with unknown size.
80
+ The backend, instead of the core library, is responsible for serializing and deserializing the packets. Because it's extreme slow for WebUSB backend (`@yume-chan/adb-backend-webusb`) to read packets with unknown size.
83
81
 
84
82
  ## Authentication
85
83
 
@@ -133,7 +131,7 @@ static async authenticate(
133
131
 
134
132
  Call this method to authenticate the connection and create an `Adb` instance.
135
133
 
136
- It's possible to call `authenticate` multiple times on a single connection, every time the device receives a `CNXN` packet, it resets its internal state, and starts a new authentication process.
134
+ If an authentication process failed, it's possible to call `authenticate` again on the same connection (`AdbPacket` stream pair). Every time the device receives a `CNXN` packet, it resets all internal state, and starts a new authentication process.
137
135
 
138
136
  ## Stream multiplex
139
137
 
@@ -144,27 +142,36 @@ ADB commands are all based on streams. Multiple streams can send and receive at
144
142
  3. Client and server read/write on the stream.
145
143
  4. Client/server sends a `CLSE` to close the stream.
146
144
 
147
- The `Backend` is responsible for reading and writing data from underlying source.
145
+ ## Commands
148
146
 
149
- ### Backend
147
+ ### subprocess
150
148
 
151
- ## Commands
149
+ ADB has two subprocess invocation modes and two data protocols (4 combinations).
152
150
 
153
- ### childProcess
151
+ #### raw mode
154
152
 
155
- Spawns child process on server. ADB has two shell modes:
153
+ In raw mode, Shell protocol transfers `stdout` and `stderr` separately. It also supports returning exit code.
156
154
 
157
- | | Legacy mode | Shell Protocol |
155
+ | | Legacy protocol | Shell Protocol |
158
156
  | --------------------------- | --------------------------- | ---------------------------- |
159
157
  | Feature flag | - | `shell_v2` |
160
158
  | Implementation | `AdbNoneSubprocessProtocol` | `AdbShellSubprocessProtocol` |
161
159
  | Splitting stdout and stderr | No | Yes |
162
160
  | Returning exit code | No | Yes |
163
- | Resizing window | No | Yes |
164
161
 
165
- The `Adb#childProcess#shell` and `Adb#childProcess#spawn` methods accepts a list of implementations, and will use the first supported one.
162
+ Use `spawn` method to create a subprocess in raw mode.
163
+
164
+ #### pty mode
165
+
166
+ In PTY mode, the subprocess has a pseudo-terminal, so it can send special control sequences like clear screen and set cursor position. The two protocols both send data in `stdout`, but Shell Protocol also supports resizing the terminal from client.
167
+
168
+ | | Legacy protocol | Shell Protocol |
169
+ | --------------------------- | --------------------------- | ---------------------------- |
170
+ | Feature flag | - | `shell_v2` |
171
+ | Implementation | `AdbNoneSubprocessProtocol` | `AdbShellSubprocessProtocol` |
172
+ | Resizing window | No | Yes |
166
173
 
167
- For simple command invocation, usually the `AdbNoneSubprocessProtocol` is enough.
174
+ Use `shell` method to create a subprocess in PTY mode.
168
175
 
169
176
  ### usb
170
177
 
package/esm/adb.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { type AdbCredentialStore } from './auth.js';
2
2
  import { AdbPower, AdbReverseCommand, AdbSubprocess, AdbSync, AdbTcpIpCommand, type AdbFrameBuffer } from './commands/index.js';
3
3
  import { AdbFeatures } from './features.js';
4
- import { type AdbPacketCore, type AdbPacketInit } from './packet.js';
5
- import { AdbSocket } from './socket/index.js';
4
+ import { type AdbPacketData, type AdbPacketInit } from './packet.js';
5
+ import { AdbIncomingSocketHandler, type AdbSocket, type Closeable } from './socket/index.js';
6
6
  import { WritableStream, type ReadableWritablePair } from "./stream/index.js";
7
7
  export declare enum AdbPropKey {
8
8
  Product = "ro.product.name",
@@ -11,14 +11,14 @@ export declare enum AdbPropKey {
11
11
  Features = "features"
12
12
  }
13
13
  export declare const VERSION_OMIT_CHECKSUM = 16777217;
14
- export declare class Adb {
14
+ export declare class Adb implements Closeable {
15
15
  /**
16
16
  * It's possible to call `authenticate` multiple times on a single connection,
17
17
  * every time the device receives a `CNXN` packet, it resets its internal state,
18
18
  * and starts a new authentication process.
19
19
  */
20
- static authenticate(connection: ReadableWritablePair<AdbPacketCore, AdbPacketCore>, credentialStore: AdbCredentialStore, authenticators?: import("./auth.js").AdbAuthenticator[]): Promise<Adb>;
21
- private readonly packetDispatcher;
20
+ static authenticate(connection: ReadableWritablePair<AdbPacketData, AdbPacketInit>, credentialStore: AdbCredentialStore, authenticators?: import("./auth.js").AdbAuthenticator[]): Promise<Adb>;
21
+ private readonly dispatcher;
22
22
  get disconnected(): Promise<void>;
23
23
  private _protocolVersion;
24
24
  get protocolVersion(): number | undefined;
@@ -34,15 +34,16 @@ export declare class Adb {
34
34
  readonly power: AdbPower;
35
35
  readonly reverse: AdbReverseCommand;
36
36
  readonly tcpip: AdbTcpIpCommand;
37
- constructor(connection: ReadableWritablePair<AdbPacketCore, AdbPacketInit>, version: number, maxPayloadSize: number, banner: string);
37
+ constructor(connection: ReadableWritablePair<AdbPacketData, AdbPacketInit>, version: number, maxPayloadSize: number, banner: string);
38
38
  private parseBanner;
39
+ addIncomingSocketHandler(handler: AdbIncomingSocketHandler): import("@yume-chan/event").RemoveEventListener;
40
+ createSocket(service: string): Promise<AdbSocket>;
41
+ createSocketAndWait(service: string): Promise<string>;
39
42
  getProp(key: string): Promise<string>;
40
43
  rm(...filenames: string[]): Promise<string>;
41
44
  install(): WritableStream<Uint8Array>;
42
45
  sync(): Promise<AdbSync>;
43
46
  framebuffer(): Promise<AdbFrameBuffer>;
44
- createSocket(service: string): Promise<AdbSocket>;
45
- createSocketAndWait(service: string): Promise<string>;
46
- dispose(): Promise<void>;
47
+ close(): Promise<void>;
47
48
  }
48
49
  //# sourceMappingURL=adb.d.ts.map
package/esm/adb.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"AACA,OAAO,EAAsD,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxG,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAmC,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjK,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAA4C,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/G,OAAO,EAAuB,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAyD,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGrI,oBAAY,UAAU;IAClB,OAAO,oBAAoB;IAC3B,KAAK,qBAAqB;IAC1B,MAAM,sBAAsB;IAC5B,QAAQ,aAAa;CACxB;AAED,eAAO,MAAM,qBAAqB,WAAa,CAAC;AAEhD,qBAAa,GAAG;IACZ;;;;OAIG;WACiB,YAAY,CAC5B,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,eAAe,EAAE,kBAAkB,EACnC,cAAc,yCAA2B,GAC1C,OAAO,CAAC,GAAG,CAAC;IA4Ff,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IAEvD,IAAW,YAAY,kBAAiD;IAExE,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,IAAW,eAAe,uBAAoC;IAE9D,OAAO,CAAC,QAAQ,CAAqB;IACrC,IAAW,OAAO,uBAA4B;IAE9C,OAAO,CAAC,MAAM,CAAqB;IACnC,IAAW,KAAK,uBAA0B;IAE1C,OAAO,CAAC,OAAO,CAAqB;IACpC,IAAW,MAAM,uBAA2B;IAE5C,OAAO,CAAC,SAAS,CAA4B;IAC7C,IAAW,QAAQ,8BAA6B;IAEhD,SAAgB,UAAU,EAAE,aAAa,CAAC;IAC1C,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,OAAO,EAAE,iBAAiB,CAAC;IAC3C,SAAgB,KAAK,EAAE,eAAe,CAAC;gBAGnC,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM;IAoBlB,OAAO,CAAC,WAAW;IAmCN,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrC,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAOjD,OAAO;IAID,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAKxB,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAItC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIjD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASrD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxC"}
1
+ {"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0D,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5G,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAmC,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjK,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAiC,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAuB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAyD,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGrI,oBAAY,UAAU;IAClB,OAAO,oBAAoB;IAC3B,KAAK,qBAAqB;IAC1B,MAAM,sBAAsB;IAC5B,QAAQ,aAAa;CACxB;AAED,eAAO,MAAM,qBAAqB,WAAa,CAAC;AAEhD,qBAAa,GAAI,YAAW,SAAS;IACjC;;;;OAIG;WACiB,YAAY,CAC5B,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,eAAe,EAAE,kBAAkB,EACnC,cAAc,yCAA6B,GAC5C,OAAO,CAAC,GAAG,CAAC;IAwGf,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAEjD,IAAW,YAAY,kBAA2C;IAElE,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,IAAW,eAAe,uBAAoC;IAE9D,OAAO,CAAC,QAAQ,CAAqB;IACrC,IAAW,OAAO,uBAA4B;IAE9C,OAAO,CAAC,MAAM,CAAqB;IACnC,IAAW,KAAK,uBAA0B;IAE1C,OAAO,CAAC,OAAO,CAAqB;IACpC,IAAW,MAAM,uBAA2B;IAE5C,OAAO,CAAC,SAAS,CAA4B;IAC7C,IAAW,QAAQ,8BAA6B;IAEhD,SAAgB,UAAU,EAAE,aAAa,CAAC;IAC1C,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,OAAO,EAAE,iBAAiB,CAAC;IAC3C,SAAgB,KAAK,EAAE,eAAe,CAAC;gBAGnC,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM;IA+BlB,OAAO,CAAC,WAAW;IAmCZ,wBAAwB,CAAC,OAAO,EAAE,wBAAwB;IAIpD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIjD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrC,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAOjD,OAAO;IAID,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAKxB,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
package/esm/adb.js CHANGED
@@ -1,5 +1,6 @@
1
+ // cspell: ignore libusb
1
2
  import { PromiseResolver } from '@yume-chan/async';
2
- import { AdbAuthenticationHandler, AdbDefaultAuthenticators } from './auth.js';
3
+ import { AdbAuthenticationProcessor, ADB_DEFAULT_AUTHENTICATORS } from './auth.js';
3
4
  import { AdbPower, AdbReverseCommand, AdbSubprocess, AdbSync, AdbTcpIpCommand, escapeArg, framebuffer, install } from './commands/index.js';
4
5
  import { AdbFeatures } from './features.js';
5
6
  import { AdbCommand, calculateChecksum } from './packet.js';
@@ -20,29 +21,14 @@ export class Adb {
20
21
  * every time the device receives a `CNXN` packet, it resets its internal state,
21
22
  * and starts a new authentication process.
22
23
  */
23
- static async authenticate(connection, credentialStore, authenticators = AdbDefaultAuthenticators) {
24
+ static async authenticate(connection, credentialStore, authenticators = ADB_DEFAULT_AUTHENTICATORS) {
25
+ // Initially, set to highest-supported version and payload size.
24
26
  let version = 0x01000001;
25
27
  let maxPayloadSize = 0x100000;
26
- const features = [
27
- 'shell_v2',
28
- 'cmd',
29
- AdbFeatures.StatV2,
30
- 'ls_v2',
31
- 'fixed_push_mkdir',
32
- 'apex',
33
- 'abb',
34
- 'fixed_push_symlink_timestamp',
35
- 'abb_exec',
36
- 'remount_shell',
37
- 'track_app',
38
- 'sendrecv_v2',
39
- 'sendrecv_v2_brotli',
40
- 'sendrecv_v2_lz4',
41
- 'sendrecv_v2_zstd',
42
- 'sendrecv_v2_dry_run_send',
43
- ].join(',');
44
28
  const resolver = new PromiseResolver();
45
- const authHandler = new AdbAuthenticationHandler(authenticators, credentialStore);
29
+ const authProcessor = new AdbAuthenticationProcessor(authenticators, credentialStore);
30
+ // Here is similar to `AdbPacketDispatcher`,
31
+ // But the received packet types and send packet processing are different.
46
32
  const abortController = new AbortController();
47
33
  const pipe = connection.readable
48
34
  .pipeTo(new WritableStream({
@@ -54,52 +40,79 @@ export class Adb {
54
40
  resolver.resolve(decodeUtf8(packet.payload));
55
41
  break;
56
42
  case AdbCommand.Auth:
57
- const response = await authHandler.handle(packet);
43
+ const response = await authProcessor.process(packet);
58
44
  await sendPacket(response);
59
45
  break;
60
- case AdbCommand.Close:
61
- // Last connection was interrupted
62
- // Ignore this packet, device will recover
63
- break;
64
46
  default:
65
- throw new Error('Device not in correct state. Reconnect your device and try again');
47
+ // Maybe the previous ADB client exited without reading all packets,
48
+ // so they are still waiting in OS internal buffer.
49
+ // Just ignore them.
50
+ // Because a `Connect` packet will reset the device,
51
+ // Eventually there will be `Connect` and `Auth` response packets.
52
+ break;
66
53
  }
67
54
  }
68
55
  }), {
69
56
  preventCancel: true,
70
57
  signal: abortController.signal,
71
58
  })
72
- .catch((e) => { resolver.reject(e); });
59
+ .catch((e) => {
60
+ resolver.reject(e);
61
+ });
73
62
  const writer = connection.writable.getWriter();
74
63
  async function sendPacket(init) {
75
64
  // Always send checksum in auth steps
76
- // Because we don't know if the device will ignore it yet.
65
+ // Because we don't know if the device needs it or not.
77
66
  await writer.write(calculateChecksum(init));
78
67
  }
79
- await sendPacket({
80
- command: AdbCommand.Connect,
81
- arg0: version,
82
- arg1: maxPayloadSize,
83
- // The terminating `;` is required in formal definition
84
- // But ADB daemon (all versions) can still work without it
85
- payload: encodeUtf8(`host::features=${features};`),
86
- });
87
68
  try {
69
+ // https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
70
+ // There are some other feature constants, but some of them are only used by ADB server, not devices (daemons).
71
+ const features = [
72
+ AdbFeatures.ShellV2,
73
+ AdbFeatures.Cmd,
74
+ AdbFeatures.StatV2,
75
+ AdbFeatures.ListV2,
76
+ AdbFeatures.FixedPushMkdir,
77
+ 'apex',
78
+ 'abb',
79
+ // only tells the client the symlink timestamp issue in `adb push --sync` has been fixed.
80
+ // No special handling required.
81
+ 'fixed_push_symlink_timestamp',
82
+ 'abb_exec',
83
+ 'remount_shell',
84
+ 'track_app',
85
+ 'sendrecv_v2',
86
+ 'sendrecv_v2_brotli',
87
+ 'sendrecv_v2_lz4',
88
+ 'sendrecv_v2_zstd',
89
+ 'sendrecv_v2_dry_run_send',
90
+ ].join(',');
91
+ await sendPacket({
92
+ command: AdbCommand.Connect,
93
+ arg0: version,
94
+ arg1: maxPayloadSize,
95
+ // The terminating `;` is required in formal definition
96
+ // But ADB daemon (all versions) can still work without it
97
+ payload: encodeUtf8(`host::features=${features};`),
98
+ });
88
99
  const banner = await resolver.promise;
89
- // Stop piping before creating Adb object
90
- // Because AdbPacketDispatcher will try to lock the streams when initializing
100
+ // Stop piping before creating `Adb` object
101
+ // Because `AdbPacketDispatcher` will lock the streams when initializing
91
102
  abortController.abort();
92
- await pipe;
93
103
  writer.releaseLock();
104
+ // Wait until pipe stops (`ReadableStream` lock released)
105
+ await pipe;
94
106
  return new Adb(connection, version, maxPayloadSize, banner);
95
107
  }
96
- finally {
108
+ catch (e) {
97
109
  abortController.abort();
98
110
  writer.releaseLock();
111
+ throw e;
99
112
  }
100
113
  }
101
- packetDispatcher;
102
- get disconnected() { return this.packetDispatcher.disconnected; }
114
+ dispatcher;
115
+ get disconnected() { return this.dispatcher.disconnected; }
103
116
  _protocolVersion;
104
117
  get protocolVersion() { return this._protocolVersion; }
105
118
  _product;
@@ -116,18 +129,25 @@ export class Adb {
116
129
  tcpip;
117
130
  constructor(connection, version, maxPayloadSize, banner) {
118
131
  this.parseBanner(banner);
119
- this.packetDispatcher = new AdbPacketDispatcher(connection);
120
- this._protocolVersion = version;
132
+ let calculateChecksum;
133
+ let appendNullToServiceString;
121
134
  if (version >= VERSION_OMIT_CHECKSUM) {
122
- this.packetDispatcher.calculateChecksum = false;
123
- // Android prior to 9.0.0 uses char* to parse service string
124
- // thus requires an extra null character
125
- this.packetDispatcher.appendNullToServiceString = false;
135
+ calculateChecksum = false;
136
+ appendNullToServiceString = false;
137
+ }
138
+ else {
139
+ calculateChecksum = true;
140
+ appendNullToServiceString = true;
126
141
  }
127
- this.packetDispatcher.maxPayloadSize = maxPayloadSize;
142
+ this.dispatcher = new AdbPacketDispatcher(connection, {
143
+ calculateChecksum,
144
+ appendNullToServiceString,
145
+ maxPayloadSize,
146
+ });
147
+ this._protocolVersion = version;
128
148
  this.subprocess = new AdbSubprocess(this);
129
149
  this.power = new AdbPower(this);
130
- this.reverse = new AdbReverseCommand(this.packetDispatcher);
150
+ this.reverse = new AdbReverseCommand(this);
131
151
  this.tcpip = new AdbTcpIpCommand(this);
132
152
  }
133
153
  parseBanner(banner) {
@@ -161,6 +181,20 @@ export class Adb {
161
181
  }
162
182
  }
163
183
  }
184
+ addIncomingSocketHandler(handler) {
185
+ return this.dispatcher.addIncomingSocketHandler(handler);
186
+ }
187
+ async createSocket(service) {
188
+ return this.dispatcher.createSocket(service);
189
+ }
190
+ async createSocketAndWait(service) {
191
+ const socket = await this.createSocket(service);
192
+ const gatherStream = new GatherStringStream();
193
+ await socket.readable
194
+ .pipeThrough(new DecodeUtf8Stream())
195
+ .pipeTo(gatherStream);
196
+ return gatherStream.result;
197
+ }
164
198
  async getProp(key) {
165
199
  const stdout = await this.subprocess.spawnAndWaitLegacy(['getprop', key]);
166
200
  return stdout.trim();
@@ -179,19 +213,8 @@ export class Adb {
179
213
  async framebuffer() {
180
214
  return framebuffer(this);
181
215
  }
182
- async createSocket(service) {
183
- return this.packetDispatcher.createSocket(service);
184
- }
185
- async createSocketAndWait(service) {
186
- const socket = await this.createSocket(service);
187
- const gatherStream = new GatherStringStream();
188
- await socket.readable
189
- .pipeThrough(new DecodeUtf8Stream())
190
- .pipeTo(gatherStream.writable);
191
- return gatherStream.result;
192
- }
193
- async dispose() {
194
- this.packetDispatcher.dispose();
216
+ async close() {
217
+ await this.dispatcher.close();
195
218
  }
196
219
  }
197
220
  //# sourceMappingURL=adb.js.map
package/esm/adb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"adb.js","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adb.js","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"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"}
package/esm/auth.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { Disposable } from '@yume-chan/event';
2
2
  import type { ValueOrPromise } from '@yume-chan/struct';
3
- import { AdbPacket, type AdbPacketCore } from './packet.js';
3
+ import { type AdbPacketData } from './packet.js';
4
4
  export declare type AdbKeyIterable = Iterable<Uint8Array> | AsyncIterable<Uint8Array>;
5
5
  export interface AdbCredentialStore {
6
6
  /**
@@ -33,20 +33,20 @@ export interface AdbAuthenticator {
33
33
  *
34
34
  * Calling `getNextRequest` multiple times without `yield` or `return` will always return the same request.
35
35
  */
36
- (credentialStore: AdbCredentialStore, getNextRequest: () => Promise<AdbPacket>): AsyncIterable<AdbPacketCore>;
36
+ (credentialStore: AdbCredentialStore, getNextRequest: () => Promise<AdbPacketData>): AsyncIterable<AdbPacketData>;
37
37
  }
38
38
  export declare const AdbSignatureAuthenticator: AdbAuthenticator;
39
39
  export declare const AdbPublicKeyAuthenticator: AdbAuthenticator;
40
- export declare const AdbDefaultAuthenticators: AdbAuthenticator[];
41
- export declare class AdbAuthenticationHandler implements Disposable {
40
+ export declare const ADB_DEFAULT_AUTHENTICATORS: AdbAuthenticator[];
41
+ export declare class AdbAuthenticationProcessor implements Disposable {
42
42
  readonly authenticators: readonly AdbAuthenticator[];
43
43
  private readonly credentialStore;
44
44
  private pendingRequest;
45
45
  private iterator;
46
46
  constructor(authenticators: readonly AdbAuthenticator[], credentialStore: AdbCredentialStore);
47
47
  private getNextRequest;
48
- private runAuthenticator;
49
- handle(packet: AdbPacket): Promise<AdbPacketCore>;
48
+ private invokeAuthenticator;
49
+ process(packet: AdbPacketData): Promise<AdbPacketData>;
50
50
  dispose(): void;
51
51
  }
52
52
  //# sourceMappingURL=auth.d.ts.map
package/esm/auth.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAc,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGxE,oBAAY,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IAC/B;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IAE1C;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC;CACjC;AAED,oBAAY,WAAW;IACnB,KAAK,IAAI;IACT,SAAS,IAAI;IACb,SAAS,IAAI;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;;;;;;;;OAUG;IACH,CACI,eAAe,EAAE,kBAAkB,EACnC,cAAc,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GACzC,aAAa,CAAC,aAAa,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAmBvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,gBAwCvC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAGtD,CAAC;AAEF,qBAAa,wBAAyB,YAAW,UAAU;IACvD,SAAgB,cAAc,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,OAAO,CAAC,cAAc,CAAoC;IAE1D,OAAO,CAAC,QAAQ,CAA2C;gBAGvD,cAAc,EAAE,SAAS,gBAAgB,EAAE,EAC3C,eAAe,EAAE,kBAAkB;IAMvC,OAAO,CAAC,cAAc,CAEpB;YAEa,gBAAgB;IAkBlB,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAUvD,OAAO;CAGjB"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAG7D,oBAAY,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IAC/B;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IAE1C;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC;CACjC;AAED,oBAAY,WAAW;IACnB,KAAK,IAAI;IACT,SAAS,IAAI;IACb,SAAS,IAAI;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;;;;;;;;OAUG;IACH,CACI,eAAe,EAAE,kBAAkB,EACnC,cAAc,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,GAC7C,aAAa,CAAC,aAAa,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAmBvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,gBAwCvC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAGxD,CAAC;AAEF,qBAAa,0BAA2B,YAAW,UAAU;IACzD,SAAgB,cAAc,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,QAAQ,CAAuD;gBAGnE,cAAc,EAAE,SAAS,gBAAgB,EAAE,EAC3C,eAAe,EAAE,kBAAkB;IAMvC,OAAO,CAAC,cAAc,CAEpB;YAEa,mBAAmB;IAgBrB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAe5D,OAAO;CAGjB"}
package/esm/auth.js CHANGED
@@ -50,11 +50,11 @@ export const AdbPublicKeyAuthenticator = async function* (credentialStore, getNe
50
50
  payload: publicKeyBuffer,
51
51
  };
52
52
  };
53
- export const AdbDefaultAuthenticators = [
53
+ export const ADB_DEFAULT_AUTHENTICATORS = [
54
54
  AdbSignatureAuthenticator,
55
55
  AdbPublicKeyAuthenticator,
56
56
  ];
57
- export class AdbAuthenticationHandler {
57
+ export class AdbAuthenticationProcessor {
58
58
  authenticators;
59
59
  credentialStore;
60
60
  pendingRequest = new PromiseResolver();
@@ -66,7 +66,7 @@ export class AdbAuthenticationHandler {
66
66
  getNextRequest = () => {
67
67
  return this.pendingRequest.promise;
68
68
  };
69
- async *runAuthenticator() {
69
+ async *invokeAuthenticator() {
70
70
  for (const authenticator of this.authenticators) {
71
71
  for await (const packet of authenticator(this.credentialStore, this.getNextRequest)) {
72
72
  // If the authenticator yielded a response
@@ -78,14 +78,16 @@ export class AdbAuthenticationHandler {
78
78
  // If the authenticator returned,
79
79
  // Next authenticator will be given the same `pendingRequest`
80
80
  }
81
- throw new Error('Cannot authenticate with device');
82
81
  }
83
- async handle(packet) {
82
+ async process(packet) {
84
83
  if (!this.iterator) {
85
- this.iterator = this.runAuthenticator();
84
+ this.iterator = this.invokeAuthenticator();
86
85
  }
87
86
  this.pendingRequest.resolve(packet);
88
87
  const result = await this.iterator.next();
88
+ if (result.done) {
89
+ throw new Error('No authenticator can handle the request');
90
+ }
89
91
  return result.value;
90
92
  }
91
93
  dispose() {
package/esm/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/esm/backend.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import type { ValueOrPromise } from '@yume-chan/struct';
2
- import type { AdbPacketCore, AdbPacketInit } from "./packet.js";
2
+ import type { AdbPacketData, AdbPacketInit } from "./packet.js";
3
3
  import type { ReadableWritablePair } from "./stream/index.js";
4
4
  export interface AdbBackend {
5
5
  readonly serial: string;
6
6
  readonly name: string | undefined;
7
- connect(): ValueOrPromise<ReadableWritablePair<AdbPacketCore, AdbPacketInit>>;
7
+ connect(): ValueOrPromise<ReadableWritablePair<AdbPacketData, AdbPacketInit>>;
8
8
  }
9
9
  //# sourceMappingURL=backend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAsB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIxE,wBAAgB,OAAO,CACnB,GAAG,EAAE,GAAG,GACT,cAAc,CAAC,UAAU,CAAC,CAwB5B"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAsB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIxE,wBAAgB,OAAO,CACnB,GAAG,EAAE,GAAG,GACT,cAAc,CAAC,UAAU,CAAC,CAsB5B"}
@@ -2,17 +2,15 @@ import { WrapWritableStream } from "../stream/index.js";
2
2
  import { escapeArg } from "./subprocess/index.js";
3
3
  export function install(adb) {
4
4
  const filename = `/data/local/tmp/${Math.random().toString().substring(2)}.apk`;
5
+ let sync;
5
6
  return new WrapWritableStream({
6
7
  async start() {
8
+ // TODO: install: support other install apk methods (streaming, etc.)
7
9
  // Upload apk file to tmp folder
8
- const sync = await adb.sync();
9
- const writable = sync.write(filename, undefined, undefined);
10
- return {
11
- writable,
12
- state: sync,
13
- };
10
+ sync = await adb.sync();
11
+ return sync.write(filename, undefined, undefined);
14
12
  },
15
- async close(sync) {
13
+ async close() {
16
14
  sync.dispose();
17
15
  // Invoke `pm install` to install it
18
16
  await adb.subprocess.spawnAndWaitLegacy(['pm', 'install', escapeArg(filename)]);