@yume-chan/adb 0.0.22 → 0.0.24

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 (149) hide show
  1. package/CHANGELOG.json +51 -0
  2. package/CHANGELOG.md +24 -1
  3. package/LICENSE +1 -1
  4. package/esm/adb.d.ts +6 -3
  5. package/esm/adb.d.ts.map +1 -1
  6. package/esm/adb.js +11 -4
  7. package/esm/adb.js.map +1 -1
  8. package/esm/banner.d.ts.map +1 -1
  9. package/esm/banner.js +1 -0
  10. package/esm/banner.js.map +1 -1
  11. package/esm/commands/power.d.ts.map +1 -1
  12. package/esm/commands/power.js +6 -5
  13. package/esm/commands/power.js.map +1 -1
  14. package/esm/commands/reverse.d.ts.map +1 -1
  15. package/esm/commands/reverse.js +23 -11
  16. package/esm/commands/reverse.js.map +1 -1
  17. package/esm/commands/subprocess/command.js +3 -3
  18. package/esm/commands/subprocess/command.js.map +1 -1
  19. package/esm/commands/subprocess/protocols/none.d.ts +2 -2
  20. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
  21. package/esm/commands/subprocess/protocols/shell.d.ts +3 -3
  22. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -1
  23. package/esm/commands/subprocess/protocols/shell.js +14 -69
  24. package/esm/commands/subprocess/protocols/shell.js.map +1 -1
  25. package/esm/commands/subprocess/protocols/types.d.ts +2 -2
  26. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -1
  27. package/esm/commands/subprocess/utils.js +1 -1
  28. package/esm/commands/subprocess/utils.js.map +1 -1
  29. package/esm/commands/sync/list.d.ts +2 -5
  30. package/esm/commands/sync/list.d.ts.map +1 -1
  31. package/esm/commands/sync/list.js +2 -4
  32. package/esm/commands/sync/list.js.map +1 -1
  33. package/esm/commands/sync/pull.d.ts +1 -4
  34. package/esm/commands/sync/pull.d.ts.map +1 -1
  35. package/esm/commands/sync/pull.js +2 -2
  36. package/esm/commands/sync/pull.js.map +1 -1
  37. package/esm/commands/sync/push.d.ts +4 -7
  38. package/esm/commands/sync/push.d.ts.map +1 -1
  39. package/esm/commands/sync/push.js +3 -6
  40. package/esm/commands/sync/push.js.map +1 -1
  41. package/esm/commands/sync/request.d.ts +13 -18
  42. package/esm/commands/sync/request.d.ts.map +1 -1
  43. package/esm/commands/sync/request.js +23 -28
  44. package/esm/commands/sync/request.js.map +1 -1
  45. package/esm/commands/sync/response.d.ts +18 -12
  46. package/esm/commands/sync/response.d.ts.map +1 -1
  47. package/esm/commands/sync/response.js +39 -17
  48. package/esm/commands/sync/response.js.map +1 -1
  49. package/esm/commands/sync/socket.d.ts +2 -2
  50. package/esm/commands/sync/socket.d.ts.map +1 -1
  51. package/esm/commands/sync/socket.js +10 -5
  52. package/esm/commands/sync/socket.js.map +1 -1
  53. package/esm/commands/sync/stat.d.ts +0 -3
  54. package/esm/commands/sync/stat.d.ts.map +1 -1
  55. package/esm/commands/sync/stat.js +0 -2
  56. package/esm/commands/sync/stat.js.map +1 -1
  57. package/esm/commands/sync/sync.d.ts +4 -3
  58. package/esm/commands/sync/sync.d.ts.map +1 -1
  59. package/esm/commands/sync/sync.js +9 -7
  60. package/esm/commands/sync/sync.js.map +1 -1
  61. package/esm/commands/tcpip.js +1 -1
  62. package/esm/commands/tcpip.js.map +1 -1
  63. package/esm/daemon/auth.js +1 -1
  64. package/esm/daemon/auth.js.map +1 -1
  65. package/esm/daemon/crypto.d.ts +3 -2
  66. package/esm/daemon/crypto.d.ts.map +1 -1
  67. package/esm/daemon/crypto.js +56 -49
  68. package/esm/daemon/crypto.js.map +1 -1
  69. package/esm/daemon/dispatcher.d.ts +38 -6
  70. package/esm/daemon/dispatcher.d.ts.map +1 -1
  71. package/esm/daemon/dispatcher.js +86 -28
  72. package/esm/daemon/dispatcher.js.map +1 -1
  73. package/esm/daemon/packet.d.ts +2 -2
  74. package/esm/daemon/packet.d.ts.map +1 -1
  75. package/esm/daemon/packet.js +13 -12
  76. package/esm/daemon/packet.js.map +1 -1
  77. package/esm/daemon/socket.d.ts +11 -6
  78. package/esm/daemon/socket.d.ts.map +1 -1
  79. package/esm/daemon/socket.js +42 -12
  80. package/esm/daemon/socket.js.map +1 -1
  81. package/esm/daemon/transport.d.ts +75 -11
  82. package/esm/daemon/transport.d.ts.map +1 -1
  83. package/esm/daemon/transport.js +60 -33
  84. package/esm/daemon/transport.js.map +1 -1
  85. package/esm/features.d.ts +2 -1
  86. package/esm/features.d.ts.map +1 -1
  87. package/esm/features.js +2 -1
  88. package/esm/features.js.map +1 -1
  89. package/esm/server/client.d.ts +128 -48
  90. package/esm/server/client.d.ts.map +1 -1
  91. package/esm/server/client.js +378 -145
  92. package/esm/server/client.js.map +1 -1
  93. package/esm/server/transport.d.ts +3 -0
  94. package/esm/server/transport.d.ts.map +1 -1
  95. package/esm/server/transport.js +30 -4
  96. package/esm/server/transport.js.map +1 -1
  97. package/esm/utils/base64.d.ts.map +1 -1
  98. package/esm/utils/base64.js +33 -22
  99. package/esm/utils/base64.js.map +1 -1
  100. package/esm/utils/hex.d.ts +1 -1
  101. package/esm/utils/hex.d.ts.map +1 -1
  102. package/esm/utils/hex.js +12 -14
  103. package/esm/utils/hex.js.map +1 -1
  104. package/esm/utils/index.d.ts +1 -1
  105. package/esm/utils/index.d.ts.map +1 -1
  106. package/esm/utils/index.js +1 -1
  107. package/esm/utils/index.js.map +1 -1
  108. package/esm/utils/sequence-equal.d.ts +2 -0
  109. package/esm/utils/sequence-equal.d.ts.map +1 -0
  110. package/esm/utils/sequence-equal.js +12 -0
  111. package/esm/utils/sequence-equal.js.map +1 -0
  112. package/package.json +13 -15
  113. package/src/adb.ts +22 -6
  114. package/src/banner.ts +1 -0
  115. package/src/commands/power.ts +7 -5
  116. package/src/commands/reverse.ts +31 -18
  117. package/src/commands/subprocess/command.ts +3 -3
  118. package/src/commands/subprocess/protocols/none.ts +2 -2
  119. package/src/commands/subprocess/protocols/shell.ts +21 -100
  120. package/src/commands/subprocess/protocols/types.ts +2 -2
  121. package/src/commands/subprocess/utils.ts +1 -1
  122. package/src/commands/sync/list.ts +2 -4
  123. package/src/commands/sync/pull.ts +2 -2
  124. package/src/commands/sync/push.ts +7 -10
  125. package/src/commands/sync/request.ts +32 -32
  126. package/src/commands/sync/response.ts +47 -20
  127. package/src/commands/sync/socket.ts +13 -8
  128. package/src/commands/sync/stat.ts +0 -2
  129. package/src/commands/sync/sync.ts +13 -9
  130. package/src/commands/tcpip.ts +1 -1
  131. package/src/daemon/auth.ts +1 -1
  132. package/src/daemon/crypto.ts +64 -55
  133. package/src/daemon/dispatcher.ts +175 -37
  134. package/src/daemon/packet.ts +21 -14
  135. package/src/daemon/socket.ts +62 -28
  136. package/src/daemon/transport.ts +145 -40
  137. package/src/features.ts +2 -1
  138. package/src/server/client.ts +472 -224
  139. package/src/server/transport.ts +32 -4
  140. package/src/utils/base64.ts +33 -22
  141. package/src/utils/hex.ts +16 -14
  142. package/src/utils/index.ts +1 -1
  143. package/src/utils/sequence-equal.ts +13 -0
  144. package/tsconfig.build.tsbuildinfo +1 -1
  145. package/esm/utils/conditional-variable.d.ts +0 -8
  146. package/esm/utils/conditional-variable.d.ts.map +0 -1
  147. package/esm/utils/conditional-variable.js +0 -34
  148. package/esm/utils/conditional-variable.js.map +0 -1
  149. package/src/utils/conditional-variable.ts +0 -45
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/daemon/transport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAMhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EACR,wBAAwB,EACxB,SAAS,EACT,YAAY,EACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAMtE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGhE,eAAO,MAAM,gCAAgC,WAAa,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAClD,aAAa,EACb,UAAU,CAAC,aAAa,CAAC,CAC5B,CAAC;AAEF,UAAU,8BAA8B;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,eAAe,EAAE,kBAAkB,CAAC;IACpC,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC;AAED,UAAU,2CAA2C;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC;AAED,qBAAa,kBAAmB,YAAW,YAAY;;IACnD;;;;;;;OAOG;WACU,YAAY,CAAC,EACtB,MAAM,EACN,UAAU,EACV,eAAe,EACf,cAA2C,EAC3C,GAAG,OAAO,EACb,EAAE,8BAA8B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgI/D,IAAI,UAAU,wBAEb;IAKD,IAAI,MAAM,WAET;IAGD,IAAI,eAAe,WAElB;IAED,IAAI,cAAc,WAEjB;IAGD,IAAI,MAAM,cAET;IAED,IAAI,YAAY,kBAEf;gBAEW,EACR,MAAM,EACN,UAAU,EACV,OAAO,EACP,MAAM,EACN,GAAG,OAAO,EACb,EAAE,2CAA2C;IAwB9C,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC;IAInD,gBAAgB,CACZ,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,MAAM,GACjB,MAAM;IAST,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1C,mBAAmB,IAAI,IAAI;IAI3B,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC;CAGhC"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/daemon/transport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAEH,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EACR,wBAAwB,EACxB,SAAS,EACT,YAAY,EACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAMtE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGhE,eAAO,MAAM,gCAAgC,WAAa,CAAC;AAG3D,eAAO,MAAM,2BAA2B,cAoBvB,CAAC;AAClB,eAAO,MAAM,uCAAuC,QAAmB,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAClD,aAAa,EACb,UAAU,CAAC,aAAa,CAAC,CAC5B,CAAC;AAEF,MAAM,WAAW,8BAA8B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,eAAe,EAAE,kBAAkB,CAAC;IACpC,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAEjC;;;;;;;;;;;;OAYG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,UAAU,2CAA2C;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAEjC;;;;;;;;;OASG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,qBAAa,kBAAmB,YAAW,YAAY;;IACnD;;;;;;;OAOG;WACU,YAAY,CAAC,EACtB,MAAM,EACN,UAAU,EACV,eAAe,EACf,cAA2C,EAC3C,QAAsC,EACtC,sBAAgE,EAChE,GAAG,OAAO,EACb,EAAE,8BAA8B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuH/D,IAAI,UAAU,wBAEb;IAKD,IAAI,MAAM,WAET;IAGD,IAAI,eAAe,WAElB;IAED,IAAI,cAAc,WAEjB;IAGD,IAAI,MAAM,cAET;IAED,IAAI,YAAY,kBAEf;IAGD,IAAI,cAAc,0BAEjB;gBAEW,EACR,MAAM,EACN,UAAU,EACV,OAAO,EACP,MAAM,EACN,QAAsC,EACtC,sBAAsB,EACtB,GAAG,OAAO,EACb,EAAE,2CAA2C;IAwC9C,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC;IAInD,gBAAgB,CACZ,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,MAAM,GACjB,MAAM;IAST,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1C,mBAAmB,IAAI,IAAI;IAI3B,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC;CAGhC"}
@@ -1,5 +1,5 @@
1
1
  import { PromiseResolver } from "@yume-chan/async";
2
- import { AbortController, ConsumableWritableStream, WritableStream, } from "@yume-chan/stream-extra";
2
+ import { AbortController, Consumable, WritableStream, } from "@yume-chan/stream-extra";
3
3
  import { decodeUtf8, encodeUtf8 } from "@yume-chan/struct";
4
4
  import { AdbBanner } from "../banner.js";
5
5
  import { AdbFeature } from "../features.js";
@@ -7,16 +7,40 @@ import { ADB_DEFAULT_AUTHENTICATORS, AdbAuthenticationProcessor, } from "./auth.
7
7
  import { AdbPacketDispatcher } from "./dispatcher.js";
8
8
  import { AdbCommand, calculateChecksum } from "./packet.js";
9
9
  export const ADB_DAEMON_VERSION_OMIT_CHECKSUM = 0x01000001;
10
+ // https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
11
+ // There are some other feature constants, but some of them are only used by ADB server, not devices (daemons).
12
+ export const ADB_DAEMON_DEFAULT_FEATURES = [
13
+ AdbFeature.ShellV2,
14
+ AdbFeature.Cmd,
15
+ AdbFeature.StatV2,
16
+ AdbFeature.ListV2,
17
+ AdbFeature.FixedPushMkdir,
18
+ "apex",
19
+ AdbFeature.Abb,
20
+ // only tells the client the symlink timestamp issue in `adb push --sync` has been fixed.
21
+ // No special handling required.
22
+ "fixed_push_symlink_timestamp",
23
+ AdbFeature.AbbExec,
24
+ "remount_shell",
25
+ "track_app",
26
+ AdbFeature.SendReceiveV2,
27
+ "sendrecv_v2_brotli",
28
+ "sendrecv_v2_lz4",
29
+ "sendrecv_v2_zstd",
30
+ "sendrecv_v2_dry_run_send",
31
+ AdbFeature.DelayedAck,
32
+ ];
33
+ export const ADB_DAEMON_DEFAULT_INITIAL_PAYLOAD_SIZE = 32 * 1024 * 1024;
10
34
  export class AdbDaemonTransport {
11
35
  /**
12
36
  * Authenticates the connection and creates an `AdbDaemonTransport` instance
13
37
  * that can be used by `Adb` class.
14
38
  *
15
- * If an authentication process failed, it's possible to call `authenticate` again
16
- * on the same connection. Because every time the device receives a `CNXN` packet,
17
- * it resets all internal state, and starts a new authentication process.
39
+ * If an authentication process failed,
40
+ * no matter which value the `preserveConnection` option has,
41
+ * the `connection` is always kept open, so it can be used in another `authenticate` call.
18
42
  */
19
- static async authenticate({ serial, connection, credentialStore, authenticators = ADB_DEFAULT_AUTHENTICATORS, ...options }) {
43
+ static async authenticate({ serial, connection, credentialStore, authenticators = ADB_DEFAULT_AUTHENTICATORS, features = ADB_DAEMON_DEFAULT_FEATURES, initialDelayedAckBytes = ADB_DAEMON_DEFAULT_INITIAL_PAYLOAD_SIZE, ...options }) {
20
44
  // Initially, set to highest-supported version and payload size.
21
45
  let version = 0x01000001;
22
46
  // Android 4: 4K, Android 7: 256K, Android 9: 1M
@@ -55,9 +79,8 @@ export class AdbDaemonTransport {
55
79
  signal: abortController.signal,
56
80
  })
57
81
  .then(() => {
58
- if (resolver.state === "running") {
59
- resolver.reject(new Error("Connection closed unexpectedly"));
60
- }
82
+ // If `resolver` is already settled, call `reject` won't do anything.
83
+ resolver.reject(new Error("Connection closed unexpectedly"));
61
84
  }, (e) => {
62
85
  resolver.reject(e);
63
86
  });
@@ -67,39 +90,24 @@ export class AdbDaemonTransport {
67
90
  // Because we don't know if the device needs it or not.
68
91
  init.checksum = calculateChecksum(init.payload);
69
92
  init.magic = init.command ^ 0xffffffff;
70
- await ConsumableWritableStream.write(writer, init);
93
+ await Consumable.WritableStream.write(writer, init);
94
+ }
95
+ const actualFeatures = features.slice();
96
+ if (initialDelayedAckBytes <= 0) {
97
+ const index = features.indexOf(AdbFeature.DelayedAck);
98
+ if (index !== -1) {
99
+ actualFeatures.splice(index, 1);
100
+ }
71
101
  }
72
102
  let banner;
73
103
  try {
74
- // https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
75
- // There are some other feature constants, but some of them are only used by ADB server, not devices (daemons).
76
- const features = [
77
- AdbFeature.ShellV2,
78
- AdbFeature.Cmd,
79
- AdbFeature.StatV2,
80
- AdbFeature.ListV2,
81
- AdbFeature.FixedPushMkdir,
82
- "apex",
83
- AdbFeature.Abb,
84
- // only tells the client the symlink timestamp issue in `adb push --sync` has been fixed.
85
- // No special handling required.
86
- "fixed_push_symlink_timestamp",
87
- AdbFeature.AbbExec,
88
- "remount_shell",
89
- "track_app",
90
- AdbFeature.SendReceiveV2,
91
- "sendrecv_v2_brotli",
92
- "sendrecv_v2_lz4",
93
- "sendrecv_v2_zstd",
94
- "sendrecv_v2_dry_run_send",
95
- ].join(",");
96
104
  await sendPacket({
97
105
  command: AdbCommand.Connect,
98
106
  arg0: version,
99
107
  arg1: maxPayloadSize,
100
108
  // The terminating `;` is required in formal definition
101
109
  // But ADB daemon (all versions) can still work without it
102
- payload: encodeUtf8(`host::features=${features}`),
110
+ payload: encodeUtf8(`host::features=${actualFeatures.join(",")}`),
103
111
  });
104
112
  banner = await resolver.promise;
105
113
  }
@@ -117,6 +125,8 @@ export class AdbDaemonTransport {
117
125
  version,
118
126
  maxPayloadSize,
119
127
  banner,
128
+ features: actualFeatures,
129
+ initialDelayedAckBytes,
120
130
  ...options,
121
131
  });
122
132
  }
@@ -143,10 +153,26 @@ export class AdbDaemonTransport {
143
153
  get disconnected() {
144
154
  return this.#dispatcher.disconnected;
145
155
  }
146
- constructor({ serial, connection, version, banner, ...options }) {
156
+ #clientFeatures;
157
+ get clientFeatures() {
158
+ return this.#clientFeatures;
159
+ }
160
+ constructor({ serial, connection, version, banner, features = ADB_DAEMON_DEFAULT_FEATURES, initialDelayedAckBytes, ...options }) {
147
161
  this.#serial = serial;
148
162
  this.#connection = connection;
149
163
  this.#banner = AdbBanner.parse(banner);
164
+ this.#clientFeatures = features;
165
+ if (features.includes(AdbFeature.DelayedAck)) {
166
+ if (initialDelayedAckBytes <= 0) {
167
+ throw new TypeError("`initialDelayedAckBytes` must be greater than 0 when DelayedAck feature is enabled.");
168
+ }
169
+ if (!this.#banner.features.includes(AdbFeature.DelayedAck)) {
170
+ initialDelayedAckBytes = 0;
171
+ }
172
+ }
173
+ else {
174
+ initialDelayedAckBytes = 0;
175
+ }
150
176
  let calculateChecksum;
151
177
  let appendNullToServiceString;
152
178
  if (version >= ADB_DAEMON_VERSION_OMIT_CHECKSUM) {
@@ -160,6 +186,7 @@ export class AdbDaemonTransport {
160
186
  this.#dispatcher = new AdbPacketDispatcher(connection, {
161
187
  calculateChecksum,
162
188
  appendNullToServiceString,
189
+ initialDelayedAckBytes,
163
190
  ...options,
164
191
  });
165
192
  this.#protocolVersion = version;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/daemon/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/daemon/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACH,eAAe,EACf,UAAU,EACV,cAAc,GACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EACH,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,CAAC,MAAM,gCAAgC,GAAG,UAAU,CAAC;AAC3D,+HAA+H;AAC/H,+GAA+G;AAC/G,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACvC,UAAU,CAAC,OAAO;IAClB,UAAU,CAAC,GAAG;IACd,UAAU,CAAC,MAAM;IACjB,UAAU,CAAC,MAAM;IACjB,UAAU,CAAC,cAAc;IACzB,MAAM;IACN,UAAU,CAAC,GAAG;IACd,yFAAyF;IACzF,gCAAgC;IAChC,8BAA8B;IAC9B,UAAU,CAAC,OAAO;IAClB,eAAe;IACf,WAAW;IACX,UAAU,CAAC,aAAa;IACxB,oBAAoB;IACpB,iBAAiB;IACjB,kBAAkB;IAClB,0BAA0B;IAC1B,UAAU,CAAC,UAAU;CACR,CAAC;AAClB,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAiGxE,MAAM,OAAO,kBAAkB;IAC3B;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EACtB,MAAM,EACN,UAAU,EACV,eAAe,EACf,cAAc,GAAG,0BAA0B,EAC3C,QAAQ,GAAG,2BAA2B,EACtC,sBAAsB,GAAG,uCAAuC,EAChE,GAAG,OAAO,EACmB;QAC7B,gEAAgE;QAChE,IAAI,OAAO,GAAG,UAAU,CAAC;QACzB,gDAAgD;QAChD,IAAI,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;QAEjC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAU,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAI,0BAA0B,CAChD,cAAc,EACd,eAAe,CAClB,CAAC;QAEF,4CAA4C;QAC5C,0EAA0E;QAC1E,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ;aAC3B,MAAM,CACH,IAAI,cAAc,CAAC;YACf,KAAK,CAAC,KAAK,CAAC,MAAM;gBACd,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;oBACrB,KAAK,UAAU,CAAC,OAAO;wBACnB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;wBACzC,cAAc,GAAG,IAAI,CAAC,GAAG,CACrB,cAAc,EACd,MAAM,CAAC,IAAI,CACd,CAAC;wBACF,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC7C,MAAM;oBACV,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;wBACnB,MAAM,QAAQ,GACV,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBACxC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;wBAC3B,MAAM;oBACV,CAAC;oBACD;wBACI,oEAAoE;wBACpE,mDAAmD;wBACnD,oBAAoB;wBACpB,oDAAoD;wBACpD,kEAAkE;wBAClE,MAAM;gBACd,CAAC;YACL,CAAC;SACJ,CAAC,EACF;YACI,+DAA+D;YAC/D,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,eAAe,CAAC,MAAM;SACjC,CACJ;aACA,IAAI,CACD,GAAG,EAAE;YACD,qEAAqE;YACrE,QAAQ,CAAC,MAAM,CACX,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAC9C,CAAC;QACN,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;YACF,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CACJ,CAAC;QAEN,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC/C,KAAK,UAAU,UAAU,CAAC,IAAmB;YACzC,qCAAqC;YACrC,uDAAuD;YACtD,IAAsB,CAAC,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClE,IAAsB,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;YAC1D,MAAM,UAAU,CAAC,cAAc,CAAC,KAAK,CACjC,MAAM,EACN,IAAqB,CACxB,CAAC;QACN,CAAC;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,sBAAsB,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACD,MAAM,UAAU,CAAC;gBACb,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,uDAAuD;gBACvD,0DAA0D;gBAC1D,OAAO,EAAE,UAAU,CACf,kBAAkB,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC/C;aACJ,CAAC,CAAC;YAEH,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACpC,CAAC;gBAAS,CAAC;YACP,0EAA0E;YAC1E,0EAA0E;YAC1E,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,WAAW,EAAE,CAAC;YAErB,yDAAyD;YACzD,MAAM,IAAI,CAAC;QACf,CAAC;QAED,OAAO,IAAI,kBAAkB,CAAC;YAC1B,MAAM;YACN,UAAU;YACV,OAAO;YACP,cAAc;YACd,MAAM;YACN,QAAQ,EAAE,cAAc;YACxB,sBAAsB;YACtB,GAAG,OAAO;SACb,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAsB;IACjC,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAEQ,WAAW,CAAsB;IAE1C,OAAO,CAAS;IAChB,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,gBAAgB,CAAS;IACzB,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;IACnD,CAAC;IAED,OAAO,CAAY;IACnB,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IACzC,CAAC;IAED,eAAe,CAAwB;IACvC,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,YAAY,EACR,MAAM,EACN,UAAU,EACV,OAAO,EACP,MAAM,EACN,QAAQ,GAAG,2BAA2B,EACtC,sBAAsB,EACtB,GAAG,OAAO,EACgC;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAEhC,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,IAAI,sBAAsB,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,SAAS,CACf,qFAAqF,CACxF,CAAC;YACN,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzD,sBAAsB,GAAG,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,sBAAsB,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,iBAA0B,CAAC;QAC/B,IAAI,yBAAkC,CAAC;QACvC,IAAI,OAAO,IAAI,gCAAgC,EAAE,CAAC;YAC9C,iBAAiB,GAAG,KAAK,CAAC;YAC1B,yBAAyB,GAAG,KAAK,CAAC;QACtC,CAAC;aAAM,CAAC;YACJ,iBAAiB,GAAG,IAAI,CAAC;YACzB,yBAAyB,GAAG,IAAI,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,mBAAmB,CAAC,UAAU,EAAE;YACnD,iBAAiB;YACjB,yBAAyB;YACzB,sBAAsB;YACtB,GAAG,OAAO;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,gBAAgB,CACZ,OAAiC,EACjC,OAAgB;QAEhB,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO,GAAG,yBAAyB,EAAE,EAAE,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,mBAAmB,CAAC,OAAe;QAC/B,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,mBAAmB;QACf,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;CACJ"}
package/esm/features.d.ts CHANGED
@@ -6,6 +6,7 @@ export declare enum AdbFeature {
6
6
  FixedPushMkdir = "fixed_push_mkdir",
7
7
  Abb = "abb",
8
8
  AbbExec = "abb_exec",
9
- SendReceiveV2 = "sendrecv_v2"
9
+ SendReceiveV2 = "sendrecv_v2",
10
+ DelayedAck = "delayed_ack"
10
11
  }
11
12
  //# sourceMappingURL=features.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAEA,oBAAY,UAAU;IAClB,OAAO,aAAa;IACpB,GAAG,QAAQ;IACX,MAAM,YAAY;IAClB,MAAM,UAAU;IAChB,cAAc,qBAAqB;IACnC,GAAG,QAAQ;IACX,OAAO,aAAa;IACpB,aAAa,gBAAgB;CAChC"}
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAEA,oBAAY,UAAU;IAClB,OAAO,aAAa;IACpB,GAAG,QAAQ;IACX,MAAM,YAAY;IAClB,MAAM,UAAU;IAChB,cAAc,qBAAqB;IACnC,GAAG,QAAQ;IACX,OAAO,aAAa;IACpB,aAAa,gBAAgB;IAC7B,UAAU,gBAAgB;CAC7B"}
package/esm/features.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // The order follows
2
- // https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
2
+ // https://cs.android.com/android/platform/superproject/+/master:packages/modules/adb/transport.cpp;l=77;drc=6d14d35d0241f6fee145f8e54ffd77252e8d29fd
3
3
  export var AdbFeature;
4
4
  (function (AdbFeature) {
5
5
  AdbFeature["ShellV2"] = "shell_v2";
@@ -10,5 +10,6 @@ export var AdbFeature;
10
10
  AdbFeature["Abb"] = "abb";
11
11
  AdbFeature["AbbExec"] = "abb_exec";
12
12
  AdbFeature["SendReceiveV2"] = "sendrecv_v2";
13
+ AdbFeature["DelayedAck"] = "delayed_ack";
13
14
  })(AdbFeature || (AdbFeature = {}));
14
15
  //# sourceMappingURL=features.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,+HAA+H;AAC/H,MAAM,CAAN,IAAY,UASX;AATD,WAAY,UAAU;IAClB,kCAAoB,CAAA;IACpB,yBAAW,CAAA;IACX,gCAAkB,CAAA;IAClB,8BAAgB,CAAA;IAChB,iDAAmC,CAAA;IACnC,yBAAW,CAAA;IACX,kCAAoB,CAAA;IACpB,2CAA6B,CAAA;AACjC,CAAC,EATW,UAAU,KAAV,UAAU,QASrB"}
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,qJAAqJ;AACrJ,MAAM,CAAN,IAAY,UAUX;AAVD,WAAY,UAAU;IAClB,kCAAoB,CAAA;IACpB,yBAAW,CAAA;IACX,gCAAkB,CAAA;IAClB,8BAAgB,CAAA;IAChB,iDAAmC,CAAA;IACnC,yBAAW,CAAA;IACX,kCAAoB,CAAA;IACpB,2CAA6B,CAAA;IAC7B,wCAA0B,CAAA;AAC9B,CAAC,EAVW,UAAU,KAAV,UAAU,QAUrB"}
@@ -1,55 +1,61 @@
1
- import type { AbortSignal, ReadableWritablePair, WritableStreamDefaultWriter } from "@yume-chan/stream-extra";
2
- import type { AsyncExactReadable, ExactReadable, ValueOrPromise } from "@yume-chan/struct";
1
+ import type { AbortSignal, ReadableWritablePair } from "@yume-chan/stream-extra";
2
+ import type { ValueOrPromise } from "@yume-chan/struct";
3
3
  import type { AdbIncomingSocketHandler, AdbSocket, Closeable } from "../adb.js";
4
4
  import type { AdbFeature } from "../features.js";
5
5
  import { AdbServerTransport } from "./transport.js";
6
- export interface AdbServerConnectionOptions {
7
- unref?: boolean | undefined;
8
- signal?: AbortSignal | undefined;
9
- }
10
- export interface AdbServerConnection extends ReadableWritablePair<Uint8Array, Uint8Array>, Closeable {
11
- get closed(): Promise<void>;
12
- }
13
- export interface AdbServerConnector {
14
- connect(options?: AdbServerConnectionOptions): ValueOrPromise<AdbServerConnection>;
15
- addReverseTunnel(handler: AdbIncomingSocketHandler, address?: string): ValueOrPromise<string>;
16
- removeReverseTunnel(address: string): ValueOrPromise<void>;
17
- clearReverseTunnels(): ValueOrPromise<void>;
18
- }
19
- export interface AdbServerSocket extends AdbSocket {
20
- transportId: bigint;
21
- }
22
- export type AdbServerDeviceSelector = {
23
- transportId: bigint;
24
- } | {
25
- serial: string;
26
- } | {
27
- usb: true;
28
- } | {
29
- tcp: true;
30
- } | undefined;
31
- export interface AdbServerDevice {
32
- serial: string;
33
- product?: string | undefined;
34
- model?: string | undefined;
35
- device?: string | undefined;
36
- transportId: bigint;
6
+ declare class AdbServerStream {
7
+ #private;
8
+ constructor(connection: AdbServerClient.ServerConnection);
9
+ readExactly(length: number): ValueOrPromise<Uint8Array>;
10
+ readString(): string | PromiseLike<string>;
11
+ writeString(value: string): Promise<void>;
12
+ readOkay(): Promise<void>;
13
+ release(): {
14
+ readable: import("@yume-chan/stream-extra").ReadableStream<Uint8Array>;
15
+ writable: import("@yume-chan/stream-extra/esm/types.js").WritableStream<Uint8Array>;
16
+ closed: Promise<void>;
17
+ close: () => ValueOrPromise<void>;
18
+ };
19
+ dispose(): Promise<void>;
37
20
  }
38
21
  export declare class AdbServerClient {
39
22
  static readonly VERSION = 41;
40
- readonly connection: AdbServerConnector;
41
- constructor(connection: AdbServerConnector);
42
- static readString(stream: ExactReadable): string;
43
- static readString(stream: AsyncExactReadable): PromiseLike<string>;
44
- static writeString(writer: WritableStreamDefaultWriter<Uint8Array>, value: string): Promise<void>;
45
- static readOkay(stream: ExactReadable | AsyncExactReadable): Promise<void>;
46
- connect(request: string, options?: AdbServerConnectionOptions): Promise<AdbServerConnection>;
23
+ readonly connector: AdbServerClient.ServerConnector;
24
+ readonly wireless: AdbServerClient.WirelessCommands;
25
+ readonly mDns: AdbServerClient.MDnsCommands;
26
+ constructor(connection: AdbServerClient.ServerConnector);
27
+ createConnection(request: string, options?: AdbServerClient.ServerConnectionOptions): Promise<AdbServerStream>;
28
+ /**
29
+ * `adb version`
30
+ */
47
31
  getVersion(): Promise<number>;
48
32
  validateVersion(): Promise<void>;
33
+ /**
34
+ * `adb kill-server`
35
+ */
49
36
  killServer(): Promise<void>;
37
+ /**
38
+ * `adb host-features`
39
+ */
50
40
  getServerFeatures(): Promise<AdbFeature[]>;
51
- getDevices(): Promise<AdbServerDevice[]>;
52
- formatDeviceService(device: AdbServerDeviceSelector, command: string): string;
41
+ parseDeviceList(value: string): AdbServerClient.Device[];
42
+ /**
43
+ * `adb devices -l`
44
+ */
45
+ getDevices(): Promise<AdbServerClient.Device[]>;
46
+ /**
47
+ * Track the device list.
48
+ *
49
+ * @param signal An optional `AbortSignal` to stop tracking
50
+ *
51
+ * When `signal` is aborted, `trackDevices` will return normally, instead of throwing `signal.reason`.
52
+ */
53
+ trackDevices(signal?: AbortSignal): AsyncGenerator<AdbServerClient.Device[], void, void>;
54
+ formatDeviceService(device: AdbServerClient.DeviceSelector, command: string): string;
55
+ /**
56
+ * `adb -s <device> reconnect` or `adb reconnect offline`
57
+ */
58
+ reconnectDevice(device: AdbServerClient.DeviceSelector | "offline"): Promise<void>;
53
59
  /**
54
60
  * Gets the features supported by the device.
55
61
  * The transport ID of the selected device is also returned,
@@ -57,7 +63,7 @@ export declare class AdbServerClient {
57
63
  * @param device The device selector
58
64
  * @returns The transport ID of the selected device, and the features supported by the device.
59
65
  */
60
- getDeviceFeatures(device: AdbServerDeviceSelector): Promise<{
66
+ getDeviceFeatures(device: AdbServerClient.DeviceSelector): Promise<{
61
67
  transportId: bigint;
62
68
  features: AdbFeature[];
63
69
  }>;
@@ -65,18 +71,92 @@ export declare class AdbServerClient {
65
71
  * Creates a connection that will forward the service to device.
66
72
  * @param device The device selector
67
73
  * @param service The service to forward
68
- * @returns An `AdbServerSocket` that can be used to communicate with the service
74
+ * @returns An `AdbServerClient.Socket` that can be used to communicate with the service
69
75
  */
70
- connectDevice(device: AdbServerDeviceSelector, service: string): Promise<AdbServerSocket>;
76
+ createDeviceConnection(device: AdbServerClient.DeviceSelector, service: string): Promise<AdbServerClient.Socket>;
71
77
  /**
72
78
  * Wait for a device to be connected or disconnected.
79
+ *
80
+ * `adb wait-for-<state>`
81
+ *
73
82
  * @param device The device selector
74
83
  * @param state The state to wait for
75
84
  * @param options The options
76
85
  * @returns A promise that resolves when the condition is met.
77
86
  */
78
- waitFor(device: AdbServerDeviceSelector, state: "device" | "disconnect", options?: AdbServerConnectionOptions): Promise<void>;
79
- createTransport(device: AdbServerDeviceSelector): Promise<AdbServerTransport>;
87
+ waitFor(device: AdbServerClient.DeviceSelector, state: "device" | "disconnect", options?: AdbServerClient.ServerConnectionOptions): Promise<void>;
88
+ createTransport(device: AdbServerClient.DeviceSelector): Promise<AdbServerTransport>;
89
+ }
90
+ export declare function raceSignal<T>(callback: () => PromiseLike<T>, ...signals: (AbortSignal | undefined)[]): Promise<T>;
91
+ export declare namespace AdbServerClient {
92
+ interface ServerConnectionOptions {
93
+ unref?: boolean | undefined;
94
+ signal?: AbortSignal | undefined;
95
+ }
96
+ interface ServerConnection extends ReadableWritablePair<Uint8Array, Uint8Array>, Closeable {
97
+ get closed(): Promise<void>;
98
+ }
99
+ interface ServerConnector {
100
+ connect(options?: ServerConnectionOptions): ValueOrPromise<ServerConnection>;
101
+ addReverseTunnel(handler: AdbIncomingSocketHandler, address?: string): ValueOrPromise<string>;
102
+ removeReverseTunnel(address: string): ValueOrPromise<void>;
103
+ clearReverseTunnels(): ValueOrPromise<void>;
104
+ }
105
+ interface Socket extends AdbSocket {
106
+ transportId: bigint;
107
+ }
108
+ type DeviceSelector = {
109
+ transportId: bigint;
110
+ } | {
111
+ serial: string;
112
+ } | {
113
+ usb: true;
114
+ } | {
115
+ tcp: true;
116
+ } | undefined;
117
+ interface Device {
118
+ serial: string;
119
+ authenticating: boolean;
120
+ product?: string | undefined;
121
+ model?: string | undefined;
122
+ device?: string | undefined;
123
+ transportId: bigint;
124
+ }
125
+ class NetworkError extends Error {
126
+ constructor(message: string);
127
+ }
128
+ class UnauthorizedError extends Error {
129
+ constructor(message: string);
130
+ }
131
+ class AlreadyConnectedError extends Error {
132
+ constructor(message: string);
133
+ }
134
+ class WirelessCommands {
135
+ #private;
136
+ constructor(client: AdbServerClient);
137
+ /**
138
+ * `adb pair <password> <address>`
139
+ */
140
+ pair(address: string, password: string): Promise<void>;
141
+ /**
142
+ * `adb connect <address>`
143
+ */
144
+ connect(address: string): Promise<void>;
145
+ /**
146
+ * `adb disconnect <address>`
147
+ */
148
+ disconnect(address: string): Promise<void>;
149
+ }
150
+ class MDnsCommands {
151
+ #private;
152
+ constructor(client: AdbServerClient);
153
+ check(): Promise<boolean>;
154
+ getServices(): Promise<{
155
+ name: string;
156
+ service: string;
157
+ address: string;
158
+ }[]>;
159
+ }
80
160
  }
81
- export declare function raceSignal<T>(callback: () => Promise<T>, ...signals: (AbortSignal | undefined)[]): Promise<T>;
161
+ export {};
82
162
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,WAAW,EACX,oBAAoB,EACpB,2BAA2B,EAC9B,MAAM,yBAAyB,CAAC;AAMjC,OAAO,KAAK,EACR,kBAAkB,EAClB,aAAa,EACb,cAAc,EACjB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,WAAW,0BAA0B;IACvC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,mBACb,SAAQ,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,EAChD,SAAS;IACb,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,CACH,OAAO,CAAC,EAAE,0BAA0B,GACrC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAEvC,gBAAgB,CACZ,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,MAAM,GACjB,cAAc,CAAC,MAAM,CAAC,CAAC;IAE1B,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAE3D,mBAAmB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAC9C,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,uBAAuB,GAC7B;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GACb;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GACb,SAAS,CAAC;AAEhB,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IACxB,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAM;IAE7B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;gBAE5B,UAAU,EAAE,kBAAkB;IAI1C,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IAChD,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC;WAerD,WAAW,CACpB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;WAQH,QAAQ,CACjB,MAAM,EAAE,aAAa,GAAG,kBAAkB,GAC3C,OAAO,CAAC,IAAI,CAAC;IAcV,OAAO,CACT,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,0BAA0B,GACrC,OAAO,CAAC,mBAAmB,CAAC;IAuCzB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAa7B,eAAe;IASf,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAY1C,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAyD9C,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM;IAmBpE;;;;;;OAMG;IACG,iBAAiB,CACnB,MAAM,EAAE,uBAAuB,GAChC,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAmB3D;;;;;OAKG;IACG,aAAa,CACf,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC;IAoE3B;;;;;;OAMG;IACG,OAAO,CACT,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE,QAAQ,GAAG,YAAY,EAC9B,OAAO,CAAC,EAAE,0BAA0B,GACrC,OAAO,CAAC,IAAI,CAAC;IA4BV,eAAe,CACjB,MAAM,EAAE,uBAAuB,GAChC,OAAO,CAAC,kBAAkB,CAAC;CAsBjC;AAED,wBAAsB,UAAU,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,GAAG,OAAO,EAAE,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,GACxC,OAAO,CAAC,CAAC,CAAC,CA0BZ"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"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"}