@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.
Files changed (130) hide show
  1. package/CHANGELOG.json +18 -0
  2. package/CHANGELOG.md +10 -1
  3. package/README.md +24 -17
  4. package/esm/adb.d.ts +6 -6
  5. package/esm/adb.d.ts.map +1 -1
  6. package/esm/adb.js +77 -59
  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 +2 -2
  17. package/esm/commands/subprocess/index.d.ts +19 -20
  18. package/esm/commands/subprocess/index.d.ts.map +1 -1
  19. package/esm/commands/subprocess/index.js +36 -31
  20. package/esm/commands/subprocess/index.js.map +1 -1
  21. package/esm/commands/subprocess/legacy.d.ts +14 -7
  22. package/esm/commands/subprocess/legacy.d.ts.map +1 -1
  23. package/esm/commands/subprocess/legacy.js +14 -5
  24. package/esm/commands/subprocess/legacy.js.map +1 -1
  25. package/esm/commands/subprocess/protocol.d.ts +3 -2
  26. package/esm/commands/subprocess/protocol.d.ts.map +1 -1
  27. package/esm/commands/subprocess/protocol.js +6 -4
  28. package/esm/commands/subprocess/protocol.js.map +1 -1
  29. package/esm/commands/subprocess/protocols/index.d.ts +4 -0
  30. package/esm/commands/subprocess/protocols/index.d.ts.map +1 -0
  31. package/esm/commands/subprocess/protocols/index.js +4 -0
  32. package/esm/commands/subprocess/protocols/index.js.map +1 -0
  33. package/esm/commands/subprocess/protocols/none.d.ts +35 -0
  34. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -0
  35. package/esm/commands/subprocess/protocols/none.js +53 -0
  36. package/esm/commands/subprocess/protocols/none.js.map +1 -0
  37. package/esm/commands/subprocess/protocols/shell.d.ts +39 -0
  38. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -0
  39. package/esm/commands/subprocess/protocols/shell.js +155 -0
  40. package/esm/commands/subprocess/protocols/shell.js.map +1 -0
  41. package/esm/commands/subprocess/protocols/types.d.ts +50 -0
  42. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -0
  43. package/esm/commands/subprocess/protocols/types.js +2 -0
  44. package/esm/commands/subprocess/protocols/types.js.map +1 -0
  45. package/esm/commands/subprocess/types.d.ts +9 -6
  46. package/esm/commands/subprocess/types.d.ts.map +1 -1
  47. package/esm/commands/sync/list.d.ts +25 -1
  48. package/esm/commands/sync/list.d.ts.map +1 -1
  49. package/esm/commands/sync/list.js +40 -5
  50. package/esm/commands/sync/list.js.map +1 -1
  51. package/esm/commands/sync/request.d.ts +1 -0
  52. package/esm/commands/sync/request.d.ts.map +1 -1
  53. package/esm/commands/sync/request.js +1 -0
  54. package/esm/commands/sync/request.js.map +1 -1
  55. package/esm/commands/sync/response.d.ts +2 -1
  56. package/esm/commands/sync/response.d.ts.map +1 -1
  57. package/esm/commands/sync/response.js +2 -1
  58. package/esm/commands/sync/response.js.map +1 -1
  59. package/esm/commands/sync/stat.d.ts +13 -1
  60. package/esm/commands/sync/stat.d.ts.map +1 -1
  61. package/esm/commands/sync/stat.js +20 -7
  62. package/esm/commands/sync/stat.js.map +1 -1
  63. package/esm/commands/sync/sync.d.ts +13 -35
  64. package/esm/commands/sync/sync.d.ts.map +1 -1
  65. package/esm/commands/sync/sync.js +39 -9
  66. package/esm/commands/sync/sync.js.map +1 -1
  67. package/esm/crypto.d.ts +23 -10
  68. package/esm/crypto.d.ts.map +1 -1
  69. package/esm/crypto.js +64 -46
  70. package/esm/crypto.js.map +1 -1
  71. package/esm/features.d.ts +4 -2
  72. package/esm/features.d.ts.map +1 -1
  73. package/esm/features.js +6 -2
  74. package/esm/features.js.map +1 -1
  75. package/esm/packet.d.ts +21 -2
  76. package/esm/packet.d.ts.map +1 -1
  77. package/esm/packet.js +2 -2
  78. package/esm/packet.js.map +1 -1
  79. package/esm/socket/dispatcher.d.ts +15 -11
  80. package/esm/socket/dispatcher.d.ts.map +1 -1
  81. package/esm/socket/dispatcher.js +16 -19
  82. package/esm/socket/dispatcher.js.map +1 -1
  83. package/esm/socket/socket.d.ts +19 -7
  84. package/esm/socket/socket.d.ts.map +1 -1
  85. package/esm/socket/socket.js +20 -11
  86. package/esm/socket/socket.js.map +1 -1
  87. package/esm/stream/detect.d.ts +1 -17
  88. package/esm/stream/detect.d.ts.map +1 -1
  89. package/esm/stream/detect.js +4 -5
  90. package/esm/stream/detect.js.map +1 -1
  91. package/esm/stream/detect.polyfill.d.ts.map +1 -1
  92. package/esm/stream/detect.polyfill.js +4 -1
  93. package/esm/stream/detect.polyfill.js.map +1 -1
  94. package/esm/stream/transform.d.ts +23 -23
  95. package/esm/stream/transform.d.ts.map +1 -1
  96. package/esm/stream/transform.js +74 -24
  97. package/esm/stream/transform.js.map +1 -1
  98. package/esm/utils/encoding.d.ts.map +1 -1
  99. package/esm/utils/encoding.js.map +1 -1
  100. package/esm/utils/index.d.ts +1 -1
  101. package/esm/utils/index.d.ts.map +1 -1
  102. package/esm/utils/index.js +1 -1
  103. package/esm/utils/index.js.map +1 -1
  104. package/package.json +6 -6
  105. package/src/adb.ts +93 -70
  106. package/src/auth.ts +21 -18
  107. package/src/backend.ts +2 -2
  108. package/src/commands/install.ts +7 -9
  109. package/src/commands/reverse.ts +2 -2
  110. package/src/commands/subprocess/index.ts +57 -42
  111. package/src/commands/subprocess/protocols/index.ts +3 -0
  112. package/src/commands/subprocess/{legacy.ts → protocols/none.ts} +18 -8
  113. package/src/commands/subprocess/{protocol.ts → protocols/shell.ts} +22 -17
  114. package/src/commands/subprocess/{types.ts → protocols/types.ts} +13 -9
  115. package/src/commands/sync/list.ts +51 -5
  116. package/src/commands/sync/request.ts +1 -0
  117. package/src/commands/sync/response.ts +8 -2
  118. package/src/commands/sync/stat.ts +36 -9
  119. package/src/commands/sync/sync.ts +55 -19
  120. package/src/crypto.ts +72 -56
  121. package/src/features.ts +6 -2
  122. package/src/packet.ts +17 -6
  123. package/src/socket/dispatcher.ts +43 -29
  124. package/src/socket/socket.ts +29 -22
  125. package/src/stream/detect.polyfill.ts +4 -1
  126. package/src/stream/detect.ts +4 -24
  127. package/src/stream/transform.ts +96 -40
  128. package/src/utils/index.ts +1 -1
  129. package/tsconfig.build.tsbuildinfo +1 -1
  130. package/src/utils/encoding.ts +0 -13
package/CHANGELOG.json CHANGED
@@ -1,6 +1,24 @@
1
1
  {
2
2
  "name": "@yume-chan/adb",
3
3
  "entries": [
4
+ {
5
+ "version": "0.0.13",
6
+ "tag": "@yume-chan/adb_v0.0.13",
7
+ "date": "Thu, 28 Apr 2022 01:23:53 GMT",
8
+ "comments": {
9
+ "none": [
10
+ {
11
+ "comment": "Add support for raw shell mode"
12
+ },
13
+ {
14
+ "comment": "Add support for LIS2 command in Sync protocol"
15
+ },
16
+ {
17
+ "comment": "Add workaround for the push_mkdir issue in Android 9"
18
+ }
19
+ ]
20
+ }
21
+ },
4
22
  {
5
23
  "version": "0.0.12",
6
24
  "tag": "@yume-chan/adb_v0.0.12",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,15 @@
1
1
  # Change Log - @yume-chan/adb
2
2
 
3
- This log was last generated on Sun, 03 Apr 2022 11:18:47 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 28 Apr 2022 01:23:53 GMT and should not be manually modified.
4
+
5
+ ## 0.0.13
6
+ Thu, 28 Apr 2022 01:23:53 GMT
7
+
8
+ ### Updates
9
+
10
+ - Add support for raw shell mode
11
+ - Add support for LIS2 command in Sync protocol
12
+ - Add workaround for the push_mkdir issue in Android 9
4
13
 
5
14
  ## 0.0.12
6
15
  Sun, 03 Apr 2022 11:18:47 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 { type AdbSocket } 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",
@@ -17,7 +17,7 @@ export declare class Adb {
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>;
20
+ static authenticate(connection: ReadableWritablePair<AdbPacketData, AdbPacketInit>, credentialStore: AdbCredentialStore, authenticators?: import("./auth.js").AdbAuthenticator[]): Promise<Adb>;
21
21
  private readonly packetDispatcher;
22
22
  get disconnected(): Promise<void>;
23
23
  private _protocolVersion;
@@ -34,15 +34,15 @@ 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
+ createSocket(service: string): Promise<AdbSocket>;
40
+ createSocketAndWait(service: string): Promise<string>;
39
41
  getProp(key: string): Promise<string>;
40
42
  rm(...filenames: string[]): Promise<string>;
41
43
  install(): WritableStream<Uint8Array>;
42
44
  sync(): Promise<AdbSync>;
43
45
  framebuffer(): Promise<AdbFrameBuffer>;
44
- createSocket(service: string): Promise<AdbSocket>;
45
- createSocketAndWait(service: string): Promise<string>;
46
46
  dispose(): Promise<void>;
47
47
  }
48
48
  //# 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,EAAuB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxE,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,yCAA6B,GAC5C,OAAO,CAAC,GAAG,CAAC;IAsGf,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;IA+BlB,OAAO,CAAC,WAAW;IAmCN,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,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxC"}
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,48 +40,73 @@ 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 session 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.
71
+ const features = [
72
+ AdbFeatures.ShellV2,
73
+ AdbFeatures.Cmd,
74
+ AdbFeatures.StatV2,
75
+ AdbFeatures.ListV2,
76
+ 'fixed_push_mkdir',
77
+ 'apex',
78
+ 'abb',
79
+ 'fixed_push_symlink_timestamp',
80
+ 'abb_exec',
81
+ 'remount_shell',
82
+ 'track_app',
83
+ 'sendrecv_v2',
84
+ 'sendrecv_v2_brotli',
85
+ 'sendrecv_v2_lz4',
86
+ 'sendrecv_v2_zstd',
87
+ 'sendrecv_v2_dry_run_send',
88
+ ].join(',');
89
+ await sendPacket({
90
+ command: AdbCommand.Connect,
91
+ arg0: version,
92
+ arg1: maxPayloadSize,
93
+ // The terminating `;` is required in formal definition
94
+ // But ADB daemon (all versions) can still work without it
95
+ payload: encodeUtf8(`host::features=${features};`),
96
+ });
88
97
  const banner = await resolver.promise;
89
- // Stop piping before creating Adb object
90
- // Because AdbPacketDispatcher will try to lock the streams when initializing
98
+ // Stop piping before creating `Adb` object
99
+ // Because `AdbPacketDispatcher` will lock the streams when initializing
91
100
  abortController.abort();
92
- await pipe;
93
101
  writer.releaseLock();
102
+ // Wait until pipe stops (`ReadableStream` lock released)
103
+ await pipe;
94
104
  return new Adb(connection, version, maxPayloadSize, banner);
95
105
  }
96
- finally {
106
+ catch (e) {
97
107
  abortController.abort();
98
108
  writer.releaseLock();
109
+ throw e;
99
110
  }
100
111
  }
101
112
  packetDispatcher;
@@ -116,15 +127,22 @@ export class Adb {
116
127
  tcpip;
117
128
  constructor(connection, version, maxPayloadSize, banner) {
118
129
  this.parseBanner(banner);
119
- this.packetDispatcher = new AdbPacketDispatcher(connection);
120
- this._protocolVersion = version;
130
+ let calculateChecksum;
131
+ let appendNullToServiceString;
121
132
  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;
133
+ calculateChecksum = false;
134
+ appendNullToServiceString = false;
135
+ }
136
+ else {
137
+ calculateChecksum = true;
138
+ appendNullToServiceString = true;
126
139
  }
127
- this.packetDispatcher.maxPayloadSize = maxPayloadSize;
140
+ this.packetDispatcher = new AdbPacketDispatcher(connection, {
141
+ calculateChecksum,
142
+ appendNullToServiceString,
143
+ maxPayloadSize,
144
+ });
145
+ this._protocolVersion = version;
128
146
  this.subprocess = new AdbSubprocess(this);
129
147
  this.power = new AdbPower(this);
130
148
  this.reverse = new AdbReverseCommand(this.packetDispatcher);
@@ -161,6 +179,17 @@ export class Adb {
161
179
  }
162
180
  }
163
181
  }
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);
191
+ return gatherStream.result;
192
+ }
164
193
  async getProp(key) {
165
194
  const stdout = await this.subprocess.spawnAndWaitLegacy(['getprop', key]);
166
195
  return stdout.trim();
@@ -179,17 +208,6 @@ export class Adb {
179
208
  async framebuffer() {
180
209
  return framebuffer(this);
181
210
  }
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
211
  async dispose() {
194
212
  this.packetDispatcher.dispose();
195
213
  }
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)]);
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAkB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,MAAM,UAAU,OAAO,CACnB,GAAQ;IAER,MAAM,QAAQ,GAAG,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhF,OAAO,IAAI,kBAAkB,CAAkD;QAC3E,KAAK,CAAC,KAAK;YACP,gCAAgC;YAChC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAE5D,OAAO;gBACH,QAAQ;gBACR,KAAK,EAAE,IAAI;aACd,CAAC;QACN,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,IAAI;YACZ,IAAI,CAAC,OAAO,EAAE,CAAC;YAEf,oCAAoC;YACpC,MAAM,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEhF,uBAAuB;YACvB,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAkB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,MAAM,UAAU,OAAO,CACnB,GAAQ;IAER,MAAM,QAAQ,GAAG,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhF,IAAI,IAAc,CAAC;IACnB,OAAO,IAAI,kBAAkB,CAAa;QACtC,KAAK,CAAC,KAAK;YACP,qEAAqE;YAErE,gCAAgC;YAChC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,CAAC,KAAK;YACP,IAAI,CAAC,OAAO,EAAE,CAAC;YAEf,oCAAoC;YACpC,MAAM,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEhF,uBAAuB;YACvB,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { AutoDisposable } from '@yume-chan/event';
2
- import type { AdbPacketCore } from '../packet.js';
2
+ import type { AdbPacketData } from '../packet.js';
3
3
  import type { AdbIncomingSocketEventArgs, AdbPacketDispatcher, AdbSocket } from '../socket/index.js';
4
4
  export interface AdbReverseHandler {
5
- onSocket(packet: AdbPacketCore, socket: AdbSocket): void;
5
+ onSocket(packet: AdbPacketData, socket: AdbSocket): void;
6
6
  }
7
7
  export interface AdbForwardListener {
8
8
  deviceSerial: string;