@yume-chan/adb 0.0.19 → 0.0.21

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 (197) hide show
  1. package/CHANGELOG.json +57 -0
  2. package/CHANGELOG.md +26 -1
  3. package/README.md +222 -103
  4. package/esm/adb.d.ts +28 -45
  5. package/esm/adb.d.ts.map +1 -1
  6. package/esm/adb.js +34 -213
  7. package/esm/adb.js.map +1 -1
  8. package/esm/banner.d.ts +17 -0
  9. package/esm/banner.d.ts.map +1 -0
  10. package/esm/banner.js +67 -0
  11. package/esm/banner.js.map +1 -0
  12. package/esm/commands/base.d.ts.map +1 -1
  13. package/esm/commands/base.js.map +1 -1
  14. package/esm/commands/framebuffer.d.ts +9 -0
  15. package/esm/commands/framebuffer.d.ts.map +1 -1
  16. package/esm/commands/framebuffer.js +27 -3
  17. package/esm/commands/framebuffer.js.map +1 -1
  18. package/esm/commands/power.d.ts +1 -1
  19. package/esm/commands/power.d.ts.map +1 -1
  20. package/esm/commands/power.js +2 -2
  21. package/esm/commands/power.js.map +1 -1
  22. package/esm/commands/reverse.d.ts +17 -18
  23. package/esm/commands/reverse.d.ts.map +1 -1
  24. package/esm/commands/reverse.js +53 -48
  25. package/esm/commands/reverse.js.map +1 -1
  26. package/esm/commands/subprocess/command.d.ts +1 -1
  27. package/esm/commands/subprocess/command.d.ts.map +1 -1
  28. package/esm/commands/subprocess/command.js +15 -13
  29. package/esm/commands/subprocess/command.js.map +1 -1
  30. package/esm/commands/subprocess/protocols/none.d.ts +3 -8
  31. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
  32. package/esm/commands/subprocess/protocols/none.js +16 -16
  33. package/esm/commands/subprocess/protocols/none.js.map +1 -1
  34. package/esm/commands/subprocess/protocols/shell.d.ts +3 -9
  35. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -1
  36. package/esm/commands/subprocess/protocols/shell.js +63 -57
  37. package/esm/commands/subprocess/protocols/shell.js.map +1 -1
  38. package/esm/commands/subprocess/protocols/types.d.ts +1 -2
  39. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -1
  40. package/esm/commands/sync/list.js +2 -2
  41. package/esm/commands/sync/push.d.ts +14 -3
  42. package/esm/commands/sync/push.d.ts.map +1 -1
  43. package/esm/commands/sync/push.js +9 -9
  44. package/esm/commands/sync/push.js.map +1 -1
  45. package/esm/commands/sync/request.js +2 -2
  46. package/esm/commands/sync/request.js.map +1 -1
  47. package/esm/commands/sync/response.d.ts +5 -3
  48. package/esm/commands/sync/response.d.ts.map +1 -1
  49. package/esm/commands/sync/response.js +7 -5
  50. package/esm/commands/sync/response.js.map +1 -1
  51. package/esm/commands/sync/socket.d.ts +8 -14
  52. package/esm/commands/sync/socket.d.ts.map +1 -1
  53. package/esm/commands/sync/socket.js +35 -32
  54. package/esm/commands/sync/socket.js.map +1 -1
  55. package/esm/commands/sync/stat.js +4 -4
  56. package/esm/commands/sync/stat.js.map +1 -1
  57. package/esm/commands/sync/sync.d.ts +26 -18
  58. package/esm/commands/sync/sync.d.ts.map +1 -1
  59. package/esm/commands/sync/sync.js +36 -25
  60. package/esm/commands/sync/sync.js.map +1 -1
  61. package/esm/commands/tcpip.d.ts +2 -2
  62. package/esm/commands/tcpip.d.ts.map +1 -1
  63. package/esm/commands/tcpip.js +4 -2
  64. package/esm/commands/tcpip.js.map +1 -1
  65. package/esm/{auth.d.ts → daemon/auth.d.ts} +12 -11
  66. package/esm/daemon/auth.d.ts.map +1 -0
  67. package/esm/{auth.js → daemon/auth.js} +31 -22
  68. package/esm/daemon/auth.js.map +1 -0
  69. package/esm/{crypto.d.ts → daemon/crypto.d.ts} +5 -5
  70. package/esm/daemon/crypto.d.ts.map +1 -0
  71. package/esm/{crypto.js → daemon/crypto.js} +24 -28
  72. package/esm/daemon/crypto.js.map +1 -0
  73. package/esm/{backend.d.ts → daemon/device.d.ts} +2 -2
  74. package/esm/daemon/device.d.ts.map +1 -0
  75. package/esm/daemon/device.js +2 -0
  76. package/esm/daemon/device.js.map +1 -0
  77. package/esm/{socket → daemon}/dispatcher.d.ts +12 -30
  78. package/esm/daemon/dispatcher.d.ts.map +1 -0
  79. package/esm/{socket → daemon}/dispatcher.js +80 -78
  80. package/esm/daemon/dispatcher.js.map +1 -0
  81. package/esm/daemon/index.d.ts +8 -0
  82. package/esm/daemon/index.d.ts.map +1 -0
  83. package/esm/daemon/index.js +8 -0
  84. package/esm/daemon/index.js.map +1 -0
  85. package/esm/{packet.d.ts → daemon/packet.d.ts} +4 -4
  86. package/esm/daemon/packet.d.ts.map +1 -0
  87. package/esm/{packet.js → daemon/packet.js} +2 -2
  88. package/esm/{packet.js.map → daemon/packet.js.map} +1 -1
  89. package/esm/{socket → daemon}/socket.d.ts +15 -19
  90. package/esm/daemon/socket.d.ts.map +1 -0
  91. package/esm/{socket → daemon}/socket.js +49 -42
  92. package/esm/daemon/socket.js.map +1 -0
  93. package/esm/daemon/transport.d.ts +53 -0
  94. package/esm/daemon/transport.d.ts.map +1 -0
  95. package/esm/daemon/transport.js +186 -0
  96. package/esm/daemon/transport.js.map +1 -0
  97. package/esm/features.js +1 -1
  98. package/esm/features.js.map +1 -1
  99. package/esm/index.d.ts +3 -5
  100. package/esm/index.d.ts.map +1 -1
  101. package/esm/index.js +3 -5
  102. package/esm/index.js.map +1 -1
  103. package/esm/server/client.d.ts +78 -0
  104. package/esm/server/client.d.ts.map +1 -0
  105. package/esm/server/client.js +328 -0
  106. package/esm/server/client.js.map +1 -0
  107. package/esm/server/index.d.ts +3 -0
  108. package/esm/server/index.d.ts.map +1 -0
  109. package/esm/server/index.js +3 -0
  110. package/esm/server/index.js.map +1 -0
  111. package/esm/server/transport.d.ts +19 -0
  112. package/esm/server/transport.d.ts.map +1 -0
  113. package/esm/server/transport.js +44 -0
  114. package/esm/server/transport.js.map +1 -0
  115. package/esm/utils/auto-reset-event.d.ts +1 -2
  116. package/esm/utils/auto-reset-event.d.ts.map +1 -1
  117. package/esm/utils/auto-reset-event.js +12 -12
  118. package/esm/utils/auto-reset-event.js.map +1 -1
  119. package/esm/utils/base64.js +5 -5
  120. package/esm/utils/base64.js.map +1 -1
  121. package/esm/utils/conditional-variable.d.ts +1 -2
  122. package/esm/utils/conditional-variable.d.ts.map +1 -1
  123. package/esm/utils/conditional-variable.js +10 -10
  124. package/esm/utils/conditional-variable.js.map +1 -1
  125. package/esm/utils/hex.d.ts +3 -0
  126. package/esm/utils/hex.d.ts.map +1 -0
  127. package/esm/utils/hex.js +55 -0
  128. package/esm/utils/hex.js.map +1 -0
  129. package/esm/utils/index.d.ts +2 -0
  130. package/esm/utils/index.d.ts.map +1 -1
  131. package/esm/utils/index.js +2 -0
  132. package/esm/utils/index.js.map +1 -1
  133. package/esm/utils/no-op.d.ts +7 -0
  134. package/esm/utils/no-op.d.ts.map +1 -0
  135. package/esm/utils/no-op.js +12 -0
  136. package/esm/utils/no-op.js.map +1 -0
  137. package/package.json +12 -12
  138. package/src/adb.ts +75 -274
  139. package/src/banner.ts +82 -0
  140. package/src/commands/base.ts +1 -1
  141. package/src/commands/framebuffer.ts +31 -3
  142. package/src/commands/power.ts +10 -10
  143. package/src/commands/reverse.ts +77 -82
  144. package/src/commands/subprocess/command.ts +24 -25
  145. package/src/commands/subprocess/protocols/none.ts +29 -30
  146. package/src/commands/subprocess/protocols/shell.ts +87 -89
  147. package/src/commands/subprocess/protocols/types.ts +1 -2
  148. package/src/commands/sync/list.ts +7 -7
  149. package/src/commands/sync/pull.ts +4 -4
  150. package/src/commands/sync/push.ts +28 -16
  151. package/src/commands/sync/request.ts +4 -4
  152. package/src/commands/sync/response.ts +13 -11
  153. package/src/commands/sync/socket.ts +48 -46
  154. package/src/commands/sync/stat.ts +5 -5
  155. package/src/commands/sync/sync.ts +55 -43
  156. package/src/commands/tcpip.ts +6 -4
  157. package/src/{auth.ts → daemon/auth.ts} +62 -43
  158. package/src/{crypto.ts → daemon/crypto.ts} +33 -41
  159. package/src/{backend.ts → daemon/device.ts} +1 -1
  160. package/src/{socket → daemon}/dispatcher.ts +103 -109
  161. package/src/daemon/index.ts +7 -0
  162. package/src/{packet.ts → daemon/packet.ts} +6 -6
  163. package/src/{socket → daemon}/socket.ts +77 -67
  164. package/src/daemon/transport.ts +281 -0
  165. package/src/index.ts +3 -5
  166. package/src/server/client.ts +473 -0
  167. package/src/server/index.ts +2 -0
  168. package/src/server/transport.ts +77 -0
  169. package/src/utils/auto-reset-event.ts +16 -16
  170. package/src/utils/base64.ts +5 -5
  171. package/src/utils/conditional-variable.ts +14 -14
  172. package/src/utils/hex.ts +58 -0
  173. package/src/utils/index.ts +2 -0
  174. package/src/utils/no-op.ts +12 -0
  175. package/tsconfig.build.json +12 -1
  176. package/tsconfig.build.tsbuildinfo +1 -1
  177. package/esm/auth.d.ts.map +0 -1
  178. package/esm/auth.js.map +0 -1
  179. package/esm/backend.d.ts.map +0 -1
  180. package/esm/backend.js +0 -2
  181. package/esm/backend.js.map +0 -1
  182. package/esm/commands/install.d.ts +0 -10
  183. package/esm/commands/install.d.ts.map +0 -1
  184. package/esm/commands/install.js +0 -29
  185. package/esm/commands/install.js.map +0 -1
  186. package/esm/crypto.d.ts.map +0 -1
  187. package/esm/crypto.js.map +0 -1
  188. package/esm/packet.d.ts.map +0 -1
  189. package/esm/socket/dispatcher.d.ts.map +0 -1
  190. package/esm/socket/dispatcher.js.map +0 -1
  191. package/esm/socket/index.d.ts +0 -3
  192. package/esm/socket/index.d.ts.map +0 -1
  193. package/esm/socket/index.js +0 -3
  194. package/esm/socket/index.js.map +0 -1
  195. package/esm/socket/socket.d.ts.map +0 -1
  196. package/esm/socket/socket.js.map +0 -1
  197. package/src/socket/index.ts +0 -2
@@ -1,25 +1,24 @@
1
1
  // cspell: ignore killforward
2
2
  import { AutoDisposable } from "@yume-chan/event";
3
- import { BufferedReadableStream, BufferedReadableStreamEndedError, } from "@yume-chan/stream-extra";
4
- import Struct from "@yume-chan/struct";
5
- import { decodeUtf8 } from "../utils/index.js";
3
+ import { BufferedReadableStream } from "@yume-chan/stream-extra";
4
+ import Struct, { ExactReadableEndedError } from "@yume-chan/struct";
5
+ import { decodeUtf8, hexToNumber } from "../utils/index.js";
6
6
  const AdbReverseStringResponse = new Struct()
7
7
  .string("length", { length: 4 })
8
8
  .string("content", { lengthField: "length", lengthFieldRadix: 16 });
9
9
  export class AdbReverseError extends Error {
10
10
  constructor(message) {
11
11
  super(message);
12
- Object.setPrototypeOf(this, AdbReverseError.prototype);
12
+ Object.setPrototypeOf(this, new.target.prototype);
13
13
  }
14
14
  }
15
- export class AdbReverseNotSupportedError extends Error {
15
+ export class AdbReverseNotSupportedError extends AdbReverseError {
16
16
  constructor() {
17
17
  super("ADB reverse tunnel is not supported on this device when connected wirelessly.");
18
- Object.setPrototypeOf(this, AdbReverseNotSupportedError.prototype);
19
18
  }
20
19
  }
21
20
  const AdbReverseErrorResponse = new Struct()
22
- .fields(AdbReverseStringResponse)
21
+ .concat(AdbReverseStringResponse)
23
22
  .postDeserialize((value) => {
24
23
  // https://issuetracker.google.com/issues/37066218
25
24
  // ADB on Android <9 can't create reverse tunnels when connected wirelessly (ADB over WiFi),
@@ -31,29 +30,24 @@ const AdbReverseErrorResponse = new Struct()
31
30
  throw new AdbReverseError(value.content);
32
31
  }
33
32
  });
33
+ async function readString(stream, length) {
34
+ const buffer = await stream.readExactly(length);
35
+ return decodeUtf8(buffer);
36
+ }
34
37
  export class AdbReverseCommand extends AutoDisposable {
35
- localAddressToHandler = new Map();
36
- deviceAddressToLocalAddress = new Map();
37
38
  adb;
38
- listening = false;
39
+ #deviceAddressToLocalAddress = new Map();
39
40
  constructor(adb) {
40
41
  super();
41
42
  this.adb = adb;
42
- this.addDisposable(this.adb.onIncomingSocket(this.handleIncomingSocket));
43
43
  }
44
- handleIncomingSocket = async (socket) => {
45
- let address = socket.serviceString;
46
- // ADB daemon appends `\0` to the service string
47
- address = address.replace(/\0/g, "");
48
- return !!(await this.localAddressToHandler.get(address)?.(socket));
49
- };
50
44
  async createBufferedStream(service) {
51
45
  const socket = await this.adb.createSocket(service);
52
46
  return new BufferedReadableStream(socket.readable);
53
47
  }
54
48
  async sendRequest(service) {
55
49
  const stream = await this.createBufferedStream(service);
56
- const success = decodeUtf8(await stream.read(4)) === "OKAY";
50
+ const success = (await readString(stream, 4)) === "OKAY";
57
51
  if (!success) {
58
52
  await AdbReverseErrorResponse.deserialize(stream);
59
53
  }
@@ -69,57 +63,68 @@ export class AdbReverseCommand extends AutoDisposable {
69
63
  // No need to close the stream, device will close it
70
64
  }
71
65
  /**
72
- * @param deviceAddress
73
- * The address to be listened on device by ADB daemon. Or `tcp:0` to choose an available TCP port.
74
- * @param localAddress
75
- * An identifier for the reverse tunnel.
76
- *
77
- * When a socket wants to connect to {@link deviceAddress}, native ADB client will forward that connection to {@link localAddress}.
78
- * However in this library, the {@link handler} is invoked instead. So this parameter is only used to identify the reverse tunnel.
79
- * @param handler A callback to handle incoming connections. It must return `true` if it accepts the connection.
66
+ * Add an already existing reverse tunnel. Depends on the transport type, this may not do anything.
67
+ * @param deviceAddress The address to be listened on device by ADB daemon. Or `tcp:0` to choose an available TCP port.
68
+ * @param localAddress The address that listens on the local machine.
80
69
  * @returns `tcp:{ACTUAL_LISTENING_PORT}`, If `deviceAddress` is `tcp:0`; otherwise, `deviceAddress`.
81
- * @throws {AdbReverseNotSupportedError} If ADB reverse tunnel is not supported on this device when connected wirelessly.
82
- * @throws {AdbReverseError} If ADB daemon returns an error.
83
70
  */
84
- async add(deviceAddress, localAddress, handler) {
71
+ async addExternal(deviceAddress, localAddress) {
85
72
  const stream = await this.sendRequest(`reverse:forward:${deviceAddress};${localAddress}`);
86
73
  // `tcp:0` tells the device to pick an available port.
87
74
  // On Android >=8, device will respond with the selected port for all `tcp:` requests.
88
75
  if (deviceAddress.startsWith("tcp:")) {
89
- let length;
76
+ const position = stream.position;
90
77
  try {
91
- length = Number.parseInt(decodeUtf8(await stream.read(4)), 16);
78
+ const length = hexToNumber(await stream.readExactly(4));
79
+ const port = await readString(stream, length);
80
+ deviceAddress = `tcp:${Number.parseInt(port, 10)}`;
92
81
  }
93
82
  catch (e) {
94
- if (!(e instanceof BufferedReadableStreamEndedError)) {
83
+ if (e instanceof ExactReadableEndedError &&
84
+ stream.position === position) {
85
+ // Android <8 doesn't have this response.
86
+ // (the stream is closed now)
87
+ // Can be safely ignored.
88
+ }
89
+ else {
95
90
  throw e;
96
91
  }
97
- // Android <8 doesn't have this response.
98
- // (the stream is closed now)
99
- // Can be safely ignored.
100
- }
101
- if (length !== undefined) {
102
- const port = decodeUtf8(await stream.read(length));
103
- deviceAddress = `tcp:${Number.parseInt(port, 10)}`;
104
92
  }
105
93
  }
106
- this.localAddressToHandler.set(localAddress, handler);
107
- this.deviceAddressToLocalAddress.set(deviceAddress, localAddress);
108
94
  return deviceAddress;
109
- // No need to close the stream, device will close it
95
+ }
96
+ /**
97
+ * @param deviceAddress The address to be listened on device by ADB daemon. Or `tcp:0` to choose an available TCP port.
98
+ * @param handler A callback to handle incoming connections.
99
+ * @param localAddressThe The address that listens on the local machine. May be `undefined` to let the transport choose an appropriate one.
100
+ * @returns `tcp:{ACTUAL_LISTENING_PORT}`, If `deviceAddress` is `tcp:0`; otherwise, `deviceAddress`.
101
+ * @throws {AdbReverseNotSupportedError} If ADB reverse tunnel is not supported on this device when connected wirelessly.
102
+ * @throws {AdbReverseError} If ADB daemon returns an error.
103
+ */
104
+ async add(deviceAddress, handler, localAddress) {
105
+ localAddress = await this.adb.transport.addReverseTunnel(handler, localAddress);
106
+ try {
107
+ deviceAddress = await this.addExternal(deviceAddress, localAddress);
108
+ this.#deviceAddressToLocalAddress.set(deviceAddress, localAddress);
109
+ return deviceAddress;
110
+ }
111
+ catch (e) {
112
+ await this.adb.transport.removeReverseTunnel(localAddress);
113
+ throw e;
114
+ }
110
115
  }
111
116
  async remove(deviceAddress) {
112
- await this.sendRequest(`reverse:killforward:${deviceAddress}`);
113
- if (this.deviceAddressToLocalAddress.has(deviceAddress)) {
114
- this.localAddressToHandler.delete(this.deviceAddressToLocalAddress.get(deviceAddress));
115
- this.deviceAddressToLocalAddress.delete(deviceAddress);
117
+ const localAddress = this.#deviceAddressToLocalAddress.get(deviceAddress);
118
+ if (localAddress) {
119
+ await this.adb.transport.removeReverseTunnel(localAddress);
116
120
  }
121
+ await this.sendRequest(`reverse:killforward:${deviceAddress}`);
117
122
  // No need to close the stream, device will close it
118
123
  }
119
124
  async removeAll() {
125
+ await this.adb.transport.clearReverseTunnels();
126
+ this.#deviceAddressToLocalAddress.clear();
120
127
  await this.sendRequest(`reverse:killforward-all`);
121
- this.deviceAddressToLocalAddress.clear();
122
- this.localAddressToHandler.clear();
123
128
  // No need to close the stream, device will close it
124
129
  }
125
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export interface AdbSubprocessWaitResult {
20
20
  exitCode: number;
21
21
  }
22
22
  export declare class AdbSubprocess extends AdbCommandBase {
23
- private createProtocol;
23
+ #private;
24
24
  /**
25
25
  * Spawns an executable in PTY mode.
26
26
  *
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EACR,qBAAqB,EACrB,gCAAgC,EACnC,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,oBAAoB;IACjC;;;;;;;;;;OAUG;IACH,SAAS,EAAE,gCAAgC,EAAE,CAAC;CACjD;AAMD,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAc,SAAQ,cAAc;YAC/B,cAAc;IA6B5B;;;;;;;;OAQG;IACI,KAAK,CACR,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,qBAAqB,CAAC;IAIjC;;;;;;;;OAQG;IACI,KAAK,CACR,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,qBAAqB,CAAC;IAIjC;;;;;OAKG;IACU,YAAY,CACrB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,uBAAuB,CAAC;IAmBnC;;;;OAIG;IACU,kBAAkB,CAC3B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC;CAMrB"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/commands/subprocess/command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EACR,qBAAqB,EACrB,gCAAgC,EACnC,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,oBAAoB;IACjC;;;;;;;;;;OAUG;IACH,SAAS,EAAE,gCAAgC,EAAE,CAAC;CACjD;AAMD,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAc,SAAQ,cAAc;;IA8B7C;;;;;;;;OAQG;IACH,KAAK,CACD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,qBAAqB,CAAC;IAIjC;;;;;;;;OAQG;IACH,KAAK,CACD,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,qBAAqB,CAAC;IAIjC;;;;;OAKG;IACG,YAAY,CACd,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,uBAAuB,CAAC;IAoBnC;;;;OAIG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAMxE"}
@@ -1,11 +1,11 @@
1
- import { DecodeUtf8Stream, GatherStringStream } from "@yume-chan/stream-extra";
1
+ import { ConcatStringStream, DecodeUtf8Stream } from "@yume-chan/stream-extra";
2
2
  import { AdbCommandBase } from "../base.js";
3
3
  import { AdbSubprocessNoneProtocol, AdbSubprocessShellProtocol, } from "./protocols/index.js";
4
4
  const DEFAULT_OPTIONS = {
5
5
  protocols: [AdbSubprocessShellProtocol, AdbSubprocessNoneProtocol],
6
6
  };
7
7
  export class AdbSubprocess extends AdbCommandBase {
8
- async createProtocol(mode, command, options) {
8
+ async #createProtocol(mode, command, options) {
9
9
  const { protocols } = { ...DEFAULT_OPTIONS, ...options };
10
10
  let Constructor;
11
11
  for (const item of protocols) {
@@ -37,7 +37,7 @@ export class AdbSubprocess extends AdbCommandBase {
37
37
  * @returns A new `AdbSubprocessProtocol` instance connecting to the spawned process.
38
38
  */
39
39
  shell(command, options) {
40
- return this.createProtocol("pty", command, options);
40
+ return this.#createProtocol("pty", command, options);
41
41
  }
42
42
  /**
43
43
  * Spawns an executable and redirect the standard input/output stream.
@@ -49,7 +49,7 @@ export class AdbSubprocess extends AdbCommandBase {
49
49
  * @returns A new `AdbSubprocessProtocol` instance connecting to the spawned process.
50
50
  */
51
51
  spawn(command, options) {
52
- return this.createProtocol("raw", command, options);
52
+ return this.#createProtocol("raw", command, options);
53
53
  }
54
54
  /**
55
55
  * Spawns a new process, waits until it exits, and returns the entire output.
@@ -58,17 +58,19 @@ export class AdbSubprocess extends AdbCommandBase {
58
58
  * @returns The entire output of the command
59
59
  */
60
60
  async spawnAndWait(command, options) {
61
- const shell = await this.spawn(command, options);
62
- const stdout = new GatherStringStream();
63
- const stderr = new GatherStringStream();
64
- const [, , exitCode] = await Promise.all([
65
- shell.stdout.pipeThrough(new DecodeUtf8Stream()).pipeTo(stdout),
66
- shell.stderr.pipeThrough(new DecodeUtf8Stream()).pipeTo(stderr),
67
- shell.exit,
61
+ const process = await this.spawn(command, options);
62
+ const [stdout, stderr, exitCode] = await Promise.all([
63
+ process.stdout
64
+ .pipeThrough(new DecodeUtf8Stream())
65
+ .pipeThrough(new ConcatStringStream()),
66
+ process.stderr
67
+ .pipeThrough(new DecodeUtf8Stream())
68
+ .pipeThrough(new ConcatStringStream()),
69
+ process.exit,
68
70
  ]);
69
71
  return {
70
- stdout: stdout.result,
71
- stderr: stderr.result,
72
+ stdout,
73
+ stderr,
72
74
  exitCode,
73
75
  };
74
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/subprocess/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM5C,OAAO,EACH,yBAAyB,EACzB,0BAA0B,GAC7B,MAAM,sBAAsB,CAAC;AAiB9B,MAAM,eAAe,GAAyB;IAC1C,SAAS,EAAE,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;CACrE,CAAC;AAQF,MAAM,OAAO,aAAc,SAAQ,cAAc;IACrC,KAAK,CAAC,cAAc,CACxB,IAAmB,EACnB,OAA2B,EAC3B,OAAuC;QAEvC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;QAEzD,IAAI,WAAyD,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC1B,uCAAuC;YACvC,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAClC,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;aACT;SACJ;QAED,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACxB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE;YAC9B,0BAA0B;YAC1B,OAAO,GAAG,EAAE,CAAC;SAChB;QACD,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CACR,OAA2B,EAC3B,OAAuC;QAEvC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CACR,OAA0B,EAC1B,OAAuC;QAEvC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CACrB,OAA0B,EAC1B,OAAuC;QAEvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAExC,MAAM,CAAC,EAAE,AAAD,EAAG,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/D,KAAK,CAAC,IAAI;SACb,CAAC,CAAC;QAEH,OAAO;YACH,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ;SACX,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,kBAAkB,CAC3B,OAA0B;QAE1B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAChD,SAAS,EAAE,CAAC,yBAAyB,CAAC;SACzC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/subprocess/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM5C,OAAO,EACH,yBAAyB,EACzB,0BAA0B,GAC7B,MAAM,sBAAsB,CAAC;AAiB9B,MAAM,eAAe,GAAyB;IAC1C,SAAS,EAAE,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;CACrE,CAAC;AAQF,MAAM,OAAO,aAAc,SAAQ,cAAc;IAC7C,KAAK,CAAC,eAAe,CACjB,IAAmB,EACnB,OAA2B,EAC3B,OAAuC;QAEvC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;QAEzD,IAAI,WAAyD,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC1B,uCAAuC;YACvC,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAClC,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;aACT;SACJ;QAED,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACxB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE;YAC9B,0BAA0B;YAC1B,OAAO,GAAG,EAAE,CAAC;SAChB;QACD,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CACD,OAA2B,EAC3B,OAAuC;QAEvC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CACD,OAA0B,EAC1B,OAAuC;QAEvC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CACd,OAA0B,EAC1B,OAAuC;QAEvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEnD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,OAAO,CAAC,MAAM;iBACT,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC;iBACnC,WAAW,CAAC,IAAI,kBAAkB,EAAE,CAAC;YAC1C,OAAO,CAAC,MAAM;iBACT,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC;iBACnC,WAAW,CAAC,IAAI,kBAAkB,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI;SACf,CAAC,CAAC;QAEH,OAAO;YACH,MAAM;YACN,MAAM;YACN,QAAQ;SACX,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAA0B;QAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAChD,SAAS,EAAE,CAAC,yBAAyB,CAAC;SACzC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
@@ -1,6 +1,5 @@
1
1
  import { ReadableStream } from "@yume-chan/stream-extra";
2
- import type { Adb } from "../../../adb.js";
3
- import type { AdbSocket } from "../../../socket/index.js";
2
+ import type { Adb, AdbSocket } from "../../../adb.js";
4
3
  import type { AdbSubprocessProtocol } from "./types.js";
5
4
  /**
6
5
  * The legacy shell
@@ -11,23 +10,19 @@ import type { AdbSubprocessProtocol } from "./types.js";
11
10
  * * `resize`: No
12
11
  */
13
12
  export declare class AdbSubprocessNoneProtocol implements AdbSubprocessProtocol {
13
+ #private;
14
14
  static isSupported(): boolean;
15
15
  static pty(adb: Adb, command: string): Promise<AdbSubprocessNoneProtocol>;
16
16
  static raw(adb: Adb, command: string): Promise<AdbSubprocessNoneProtocol>;
17
- private readonly socket;
18
- private readonly duplex;
19
- get stdin(): import("@yume-chan/stream-extra").WritableStream<import("@yume-chan/stream-extra").Consumable<Uint8Array>>;
20
- private _stdout;
17
+ get stdin(): import("web-streams-polyfill").WritableStream<import("@yume-chan/stream-extra").Consumable<Uint8Array>>;
21
18
  /**
22
19
  * Legacy shell mixes stdout and stderr.
23
20
  */
24
21
  get stdout(): ReadableStream<Uint8Array>;
25
- private _stderr;
26
22
  /**
27
23
  * `stderr` will always be empty.
28
24
  */
29
25
  get stderr(): ReadableStream<Uint8Array>;
30
- private _exit;
31
26
  get exit(): Promise<number>;
32
27
  constructor(socket: AdbSocket);
33
28
  resize(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"none.d.ts","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;WACrD,WAAW;WAIL,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAM7B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAQjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;IAGrE,IAAW,KAAK,+GAEf;IAED,OAAO,CAAC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,+BAEhB;IAED,OAAO,CAAC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,+BAEhB;IAED,OAAO,CAAC,KAAK,CAAkB;IAC/B,IAAW,IAAI,oBAEd;gBAEkB,MAAM,EAAE,SAAS;IAgB7B,MAAM;IAIN,IAAI;CAGd"}
1
+ {"version":3,"file":"none.d.ts","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9E,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;;IACnE,MAAM,CAAC,WAAW;WAIL,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAM7B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAa1C,IAAI,KAAK,4GAER;IAGD;;OAEG;IACH,IAAI,MAAM,+BAET;IAGD;;OAEG;IACH,IAAI,MAAM,+BAET;IAGD,IAAI,IAAI,oBAEP;gBAEW,MAAM,EAAE,SAAS;IAgB7B,MAAM;IAIN,IAAI;CAGP"}
@@ -19,48 +19,48 @@ export class AdbSubprocessNoneProtocol {
19
19
  // But is not supported on Android version <7.
20
20
  return new AdbSubprocessNoneProtocol(await adb.createSocket(`exec:${command}`));
21
21
  }
22
- socket;
23
- duplex;
22
+ #socket;
23
+ #duplex;
24
24
  // Legacy shell forwards all data to stdin.
25
25
  get stdin() {
26
- return this.socket.writable;
26
+ return this.#socket.writable;
27
27
  }
28
- _stdout;
28
+ #stdout;
29
29
  /**
30
30
  * Legacy shell mixes stdout and stderr.
31
31
  */
32
32
  get stdout() {
33
- return this._stdout;
33
+ return this.#stdout;
34
34
  }
35
- _stderr;
35
+ #stderr;
36
36
  /**
37
37
  * `stderr` will always be empty.
38
38
  */
39
39
  get stderr() {
40
- return this._stderr;
40
+ return this.#stderr;
41
41
  }
42
- _exit;
42
+ #exit;
43
43
  get exit() {
44
- return this._exit;
44
+ return this.#exit;
45
45
  }
46
46
  constructor(socket) {
47
- this.socket = socket;
47
+ this.#socket = socket;
48
48
  // Link `stdout`, `stderr` and `stdin` together,
49
49
  // so closing any of them will close the others.
50
- this.duplex = new DuplexStreamFactory({
50
+ this.#duplex = new DuplexStreamFactory({
51
51
  close: async () => {
52
- await this.socket.close();
52
+ await this.#socket.close();
53
53
  },
54
54
  });
55
- this._stdout = this.duplex.wrapReadable(this.socket.readable);
56
- this._stderr = this.duplex.wrapReadable(new ReadableStream());
57
- this._exit = this.duplex.closed.then(() => 0);
55
+ this.#stdout = this.#duplex.wrapReadable(this.#socket.readable);
56
+ this.#stderr = this.#duplex.wrapReadable(new ReadableStream());
57
+ this.#exit = this.#duplex.closed.then(() => 0);
58
58
  }
59
59
  resize() {
60
60
  // Not supported, but don't throw.
61
61
  }
62
62
  kill() {
63
- return this.duplex.close();
63
+ return this.#duplex.close();
64
64
  }
65
65
  }
66
66
  //# sourceMappingURL=none.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"none.js","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAO9E;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IAC3B,MAAM,CAAC,WAAW;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QAC7C,OAAO,IAAI,yBAAyB,CAChC,MAAM,GAAG,CAAC,YAAY,CAAC,SAAS,OAAO,EAAE,CAAC,CAC7C,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QAC7C,iDAAiD;QACjD,8CAA8C;QAC9C,OAAO,IAAI,yBAAyB,CAChC,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,OAAO,EAAE,CAAC,CAC5C,CAAC;IACN,CAAC;IAEgB,MAAM,CAAY;IAElB,MAAM,CAA8C;IAErE,2CAA2C;IAC3C,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEO,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEO,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEO,KAAK,CAAkB;IAC/B,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,YAAmB,MAAiB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,gDAAgD;QAChD,gDAAgD;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAmB,CAAyB;YAC1D,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM;QACT,kCAAkC;IACtC,CAAC;IAEM,IAAI;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACJ"}
1
+ {"version":3,"file":"none.js","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM9E;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IAClC,MAAM,CAAC,WAAW;QACd,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QACtC,OAAO,IAAI,yBAAyB,CAChC,MAAM,GAAG,CAAC,YAAY,CAAC,SAAS,OAAO,EAAE,CAAC,CAC7C,CAAC;IACN,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QACtC,iDAAiD;QACjD,8CAA8C;QAC9C,OAAO,IAAI,yBAAyB,CAChC,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,OAAO,EAAE,CAAC,CAC5C,CAAC;IACN,CAAC;IAEQ,OAAO,CAAY;IAEnB,OAAO,CAA8C;IAE9D,2CAA2C;IAC3C,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,OAAO,CAA6B;IACpC;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,OAAO,CAA6B;IACpC;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,KAAK,CAAkB;IACvB,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,YAAY,MAAiB;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,gDAAgD;QAChD,gDAAgD;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAyB;YAC3D,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM;QACF,kCAAkC;IACtC,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACJ"}
@@ -1,7 +1,6 @@
1
1
  import type { Consumable, ReadableStream } from "@yume-chan/stream-extra";
2
2
  import { WritableStream } from "@yume-chan/stream-extra";
3
- import type { Adb } from "../../../adb.js";
4
- import type { AdbSocket } from "../../../socket/index.js";
3
+ import type { Adb, AdbSocket } from "../../../adb.js";
5
4
  import type { AdbSubprocessProtocol } from "./types.js";
6
5
  export declare enum AdbShellProtocolId {
7
6
  Stdin = 0,
@@ -20,21 +19,16 @@ export declare enum AdbShellProtocolId {
20
19
  * * `resize`: Yes
21
20
  */
22
21
  export declare class AdbSubprocessShellProtocol implements AdbSubprocessProtocol {
22
+ #private;
23
23
  static isSupported(adb: Adb): boolean;
24
24
  static pty(adb: Adb, command: string): Promise<AdbSubprocessShellProtocol>;
25
25
  static raw(adb: Adb, command: string): Promise<AdbSubprocessShellProtocol>;
26
- private readonly _socket;
27
- private _socketWriter;
28
- private _stdin;
29
26
  get stdin(): WritableStream<Consumable<Uint8Array>>;
30
- private _stdout;
31
27
  get stdout(): ReadableStream<Uint8Array>;
32
- private _stderr;
33
28
  get stderr(): ReadableStream<Uint8Array>;
34
- private readonly _exit;
35
29
  get exit(): Promise<number>;
36
30
  constructor(socket: AdbSocket);
37
31
  resize(rows: number, cols: number): Promise<void>;
38
- kill(): Promise<void>;
32
+ kill(): import("@yume-chan/struct").ValueOrPromise<void>;
39
33
  }
40
34
  //# sourceMappingURL=shell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,UAAU,EAEV,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAMH,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,oBAAY,kBAAkB;IAC1B,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,UAAU,IAAA;IACV,gBAAgB,IAAA;CACnB;AAqFD;;;;;;;GAOG;AACH,qBAAa,0BAA2B,YAAW,qBAAqB;WACtD,WAAW,CAAC,GAAG,EAAE,GAAG;WAId,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAO7B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAMjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,aAAa,CAEnB;IAEF,OAAO,CAAC,MAAM,CAAyC;IACvD,IAAW,KAAK,2CAEf;IAED,OAAO,CAAC,OAAO,CAA6B;IAC5C,IAAW,MAAM,+BAEhB;IAED,OAAO,CAAC,OAAO,CAA6B;IAC5C,IAAW,MAAM,+BAEhB;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,IAAW,IAAI,oBAEd;gBAEkB,MAAM,EAAE,SAAS;IA4DvB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAYvC,IAAI;CAGd"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,UAAU,EAEV,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAKH,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAItD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,oBAAY,kBAAkB;IAC1B,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,UAAU,IAAA;IACV,gBAAgB,IAAA;CACnB;AAsED;;;;;;;GAOG;AACH,qBAAa,0BAA2B,YAAW,qBAAqB;;IACpE,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG;WAId,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAO7B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAY1C,IAAI,KAAK,2CAER;IAGD,IAAI,MAAM,+BAET;IAGD,IAAI,MAAM,+BAET;IAGD,IAAI,IAAI,oBAEP;gBAEW,MAAM,EAAE,SAAS;IA2EvB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAYvC,IAAI;CAGP"}