@yume-chan/adb 0.0.23 → 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 (135) hide show
  1. package/CHANGELOG.json +33 -0
  2. package/CHANGELOG.md +15 -1
  3. package/LICENSE +1 -1
  4. package/esm/adb.d.ts +2 -2
  5. package/esm/adb.d.ts.map +1 -1
  6. package/esm/adb.js +2 -2
  7. package/esm/adb.js.map +1 -1
  8. package/esm/commands/power.d.ts.map +1 -1
  9. package/esm/commands/power.js +6 -5
  10. package/esm/commands/power.js.map +1 -1
  11. package/esm/commands/reverse.d.ts.map +1 -1
  12. package/esm/commands/reverse.js +22 -10
  13. package/esm/commands/reverse.js.map +1 -1
  14. package/esm/commands/subprocess/command.js +3 -3
  15. package/esm/commands/subprocess/command.js.map +1 -1
  16. package/esm/commands/subprocess/protocols/none.d.ts +2 -2
  17. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
  18. package/esm/commands/subprocess/protocols/shell.d.ts +3 -3
  19. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -1
  20. package/esm/commands/subprocess/protocols/shell.js +5 -6
  21. package/esm/commands/subprocess/protocols/shell.js.map +1 -1
  22. package/esm/commands/subprocess/protocols/types.d.ts +2 -2
  23. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -1
  24. package/esm/commands/sync/list.d.ts +2 -5
  25. package/esm/commands/sync/list.d.ts.map +1 -1
  26. package/esm/commands/sync/list.js +2 -4
  27. package/esm/commands/sync/list.js.map +1 -1
  28. package/esm/commands/sync/pull.d.ts +1 -4
  29. package/esm/commands/sync/pull.d.ts.map +1 -1
  30. package/esm/commands/sync/pull.js +2 -2
  31. package/esm/commands/sync/pull.js.map +1 -1
  32. package/esm/commands/sync/push.d.ts +4 -7
  33. package/esm/commands/sync/push.d.ts.map +1 -1
  34. package/esm/commands/sync/push.js +3 -6
  35. package/esm/commands/sync/push.js.map +1 -1
  36. package/esm/commands/sync/request.d.ts +13 -18
  37. package/esm/commands/sync/request.d.ts.map +1 -1
  38. package/esm/commands/sync/request.js +23 -28
  39. package/esm/commands/sync/request.js.map +1 -1
  40. package/esm/commands/sync/response.d.ts +18 -12
  41. package/esm/commands/sync/response.d.ts.map +1 -1
  42. package/esm/commands/sync/response.js +39 -17
  43. package/esm/commands/sync/response.js.map +1 -1
  44. package/esm/commands/sync/socket.d.ts +2 -2
  45. package/esm/commands/sync/socket.d.ts.map +1 -1
  46. package/esm/commands/sync/socket.js +10 -5
  47. package/esm/commands/sync/socket.js.map +1 -1
  48. package/esm/commands/sync/stat.d.ts +0 -3
  49. package/esm/commands/sync/stat.d.ts.map +1 -1
  50. package/esm/commands/sync/stat.js +0 -2
  51. package/esm/commands/sync/stat.js.map +1 -1
  52. package/esm/commands/sync/sync.d.ts +4 -3
  53. package/esm/commands/sync/sync.d.ts.map +1 -1
  54. package/esm/commands/sync/sync.js +4 -1
  55. package/esm/commands/sync/sync.js.map +1 -1
  56. package/esm/commands/tcpip.js +1 -1
  57. package/esm/commands/tcpip.js.map +1 -1
  58. package/esm/daemon/auth.js +1 -1
  59. package/esm/daemon/auth.js.map +1 -1
  60. package/esm/daemon/crypto.d.ts +3 -2
  61. package/esm/daemon/crypto.d.ts.map +1 -1
  62. package/esm/daemon/crypto.js +56 -49
  63. package/esm/daemon/crypto.js.map +1 -1
  64. package/esm/daemon/dispatcher.d.ts +35 -10
  65. package/esm/daemon/dispatcher.d.ts.map +1 -1
  66. package/esm/daemon/dispatcher.js +44 -31
  67. package/esm/daemon/dispatcher.js.map +1 -1
  68. package/esm/daemon/packet.d.ts +2 -2
  69. package/esm/daemon/packet.d.ts.map +1 -1
  70. package/esm/daemon/packet.js +13 -12
  71. package/esm/daemon/packet.js.map +1 -1
  72. package/esm/daemon/socket.d.ts +10 -5
  73. package/esm/daemon/socket.d.ts.map +1 -1
  74. package/esm/daemon/socket.js +17 -15
  75. package/esm/daemon/socket.js.map +1 -1
  76. package/esm/daemon/transport.d.ts +55 -15
  77. package/esm/daemon/transport.d.ts.map +1 -1
  78. package/esm/daemon/transport.js +9 -10
  79. package/esm/daemon/transport.js.map +1 -1
  80. package/esm/server/client.d.ts +128 -50
  81. package/esm/server/client.d.ts.map +1 -1
  82. package/esm/server/client.js +325 -124
  83. package/esm/server/client.js.map +1 -1
  84. package/esm/server/transport.js +4 -4
  85. package/esm/server/transport.js.map +1 -1
  86. package/esm/utils/base64.d.ts.map +1 -1
  87. package/esm/utils/base64.js +33 -22
  88. package/esm/utils/base64.js.map +1 -1
  89. package/esm/utils/hex.d.ts +1 -1
  90. package/esm/utils/hex.d.ts.map +1 -1
  91. package/esm/utils/hex.js +12 -14
  92. package/esm/utils/hex.js.map +1 -1
  93. package/esm/utils/index.d.ts +1 -1
  94. package/esm/utils/index.d.ts.map +1 -1
  95. package/esm/utils/index.js +1 -1
  96. package/esm/utils/index.js.map +1 -1
  97. package/esm/utils/sequence-equal.d.ts +2 -0
  98. package/esm/utils/sequence-equal.d.ts.map +1 -0
  99. package/esm/utils/sequence-equal.js +12 -0
  100. package/esm/utils/sequence-equal.js.map +1 -0
  101. package/package.json +12 -14
  102. package/src/adb.ts +7 -4
  103. package/src/commands/power.ts +7 -5
  104. package/src/commands/reverse.ts +30 -17
  105. package/src/commands/subprocess/command.ts +3 -3
  106. package/src/commands/subprocess/protocols/none.ts +2 -2
  107. package/src/commands/subprocess/protocols/shell.ts +7 -11
  108. package/src/commands/subprocess/protocols/types.ts +2 -2
  109. package/src/commands/sync/list.ts +2 -4
  110. package/src/commands/sync/pull.ts +2 -2
  111. package/src/commands/sync/push.ts +7 -10
  112. package/src/commands/sync/request.ts +32 -32
  113. package/src/commands/sync/response.ts +47 -20
  114. package/src/commands/sync/socket.ts +13 -8
  115. package/src/commands/sync/stat.ts +0 -2
  116. package/src/commands/sync/sync.ts +8 -3
  117. package/src/commands/tcpip.ts +1 -1
  118. package/src/daemon/auth.ts +1 -1
  119. package/src/daemon/crypto.ts +64 -55
  120. package/src/daemon/dispatcher.ts +104 -42
  121. package/src/daemon/packet.ts +21 -14
  122. package/src/daemon/socket.ts +28 -25
  123. package/src/daemon/transport.ts +71 -24
  124. package/src/server/client.ts +420 -208
  125. package/src/server/transport.ts +4 -4
  126. package/src/utils/base64.ts +33 -22
  127. package/src/utils/hex.ts +16 -14
  128. package/src/utils/index.ts +1 -1
  129. package/src/utils/sequence-equal.ts +13 -0
  130. package/tsconfig.build.tsbuildinfo +1 -1
  131. package/esm/utils/conditional-variable.d.ts +0 -8
  132. package/esm/utils/conditional-variable.d.ts.map +0 -1
  133. package/esm/utils/conditional-variable.js +0 -34
  134. package/esm/utils/conditional-variable.js.map +0 -1
  135. package/src/utils/conditional-variable.ts +0 -45
@@ -1,4 +1,4 @@
1
- import { ConsumableTransformStream } from "@yume-chan/stream-extra";
1
+ import { Consumable, TransformStream } from "@yume-chan/stream-extra";
2
2
  import Struct from "@yume-chan/struct";
3
3
  export var AdbCommand;
4
4
  (function (AdbCommand) {
@@ -22,21 +22,22 @@ export const AdbPacket = new Struct({ littleEndian: true })
22
22
  export function calculateChecksum(payload) {
23
23
  return payload.reduce((result, item) => result + item, 0);
24
24
  }
25
- export class AdbPacketSerializeStream extends ConsumableTransformStream {
25
+ export class AdbPacketSerializeStream extends TransformStream {
26
26
  constructor() {
27
27
  const headerBuffer = new Uint8Array(AdbPacketHeader.size);
28
28
  super({
29
29
  transform: async (chunk, controller) => {
30
- const init = chunk;
31
- init.payloadLength = init.payload.byteLength;
32
- AdbPacketHeader.serialize(init, headerBuffer);
33
- await controller.enqueue(headerBuffer);
34
- if (init.payload.byteLength) {
35
- // USB protocol preserves packet boundaries,
36
- // so we must write payload separately as native ADB does,
37
- // otherwise the read operation on device will fail.
38
- await controller.enqueue(init.payload);
39
- }
30
+ await chunk.tryConsume(async (chunk) => {
31
+ const init = chunk;
32
+ init.payloadLength = init.payload.length;
33
+ await Consumable.ReadableStream.enqueue(controller, AdbPacketHeader.serialize(init, headerBuffer));
34
+ if (init.payloadLength) {
35
+ // USB protocol preserves packet boundaries,
36
+ // so we must write payload separately as native ADB does,
37
+ // otherwise the read operation on device will fail.
38
+ await Consumable.ReadableStream.enqueue(controller, init.payload);
39
+ }
40
+ });
40
41
  },
41
42
  });
42
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"packet.js","sourceRoot":"","sources":["../../src/daemon/packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;IAClB,0DAAoB,CAAA;IACpB,oDAAiB,CAAA;IACjB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;AACtB,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC5D,MAAM,CAAC,SAAS,CAAC;KACjB,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,eAAe,CAAC;KACvB,MAAM,CAAC,UAAU,CAAC;KAClB,KAAK,CAAC,OAAO,CAAC,CAAC;AAMpB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KACtD,MAAM,CAAC,eAAe,CAAC;KACvB,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;AAqB7D,MAAM,UAAU,iBAAiB,CAAC,OAAmB;IACjD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,yBAG7C;IACG;QACI,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1D,KAAK,CAAC;YACF,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACnC,MAAM,IAAI,GAAG,KAA4C,CAAC;gBAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAE7C,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC9C,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAEvC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC1B,4CAA4C;oBAC5C,0DAA0D;oBAC1D,oDAAoD;oBACpD,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3C,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"packet.js","sourceRoot":"","sources":["../../src/daemon/packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;IAClB,0DAAoB,CAAA;IACpB,oDAAiB,CAAA;IACjB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;AACtB,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC5D,MAAM,CAAC,SAAS,CAAC;KACjB,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,eAAe,CAAC;KACvB,MAAM,CAAC,UAAU,CAAC;KAClB,KAAK,CAAC,OAAO,CAAC,CAAC;AAMpB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KACtD,MAAM,CAAC,eAAe,CAAC;KACvB,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;AAqB7D,MAAM,UAAU,iBAAiB,CAAC,OAAmB;IACjD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,eAG7C;IACG;QACI,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1D,KAAK,CAAC;YACF,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACnC,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBACnC,MAAM,IAAI,GAAG,KAA4C,CAAC;oBAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAEzC,MAAM,UAAU,CAAC,cAAc,CAAC,OAAO,CACnC,UAAU,EACV,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAChD,CAAC;oBAEF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,4CAA4C;wBAC5C,0DAA0D;wBAC1D,oDAAoD;wBACpD,MAAM,UAAU,CAAC,cAAc,CAAC,OAAO,CACnC,UAAU,EACV,IAAI,CAAC,OAAO,CACf,CAAC;oBACN,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,5 +1,6 @@
1
1
  import type { Disposable } from "@yume-chan/event";
2
- import type { Consumable, ReadableStream, WritableStream } from "@yume-chan/stream-extra";
2
+ import type { ReadableStream, WritableStream } from "@yume-chan/stream-extra";
3
+ import { MaybeConsumable } from "@yume-chan/stream-extra";
3
4
  import type { AdbSocket } from "../adb.js";
4
5
  import type { AdbPacketDispatcher } from "./dispatcher.js";
5
6
  export interface AdbDaemonSocketInfo {
@@ -8,9 +9,13 @@ export interface AdbDaemonSocketInfo {
8
9
  localCreated: boolean;
9
10
  service: string;
10
11
  }
11
- export interface AdbDaemonSocketConstructionOptions extends AdbDaemonSocketInfo {
12
+ export interface AdbDaemonSocketInit extends AdbDaemonSocketInfo {
12
13
  dispatcher: AdbPacketDispatcher;
13
14
  highWaterMark?: number | undefined;
15
+ /**
16
+ * The initial delayed ack byte count, or `Infinity` if delayed ack is disabled.
17
+ */
18
+ availableWriteBytes: number;
14
19
  }
15
20
  export declare class AdbDaemonSocketController implements AdbDaemonSocketInfo, AdbSocket, Disposable {
16
21
  #private;
@@ -19,10 +24,10 @@ export declare class AdbDaemonSocketController implements AdbDaemonSocketInfo, A
19
24
  readonly localCreated: boolean;
20
25
  readonly service: string;
21
26
  get readable(): ReadableStream<Uint8Array>;
22
- readonly writable: WritableStream<Consumable<Uint8Array>>;
27
+ readonly writable: WritableStream<MaybeConsumable<Uint8Array>>;
23
28
  get closed(): Promise<void>;
24
29
  get socket(): AdbDaemonSocket;
25
- constructor(options: AdbDaemonSocketConstructionOptions);
30
+ constructor(options: AdbDaemonSocketInit);
26
31
  enqueue(data: Uint8Array): Promise<void>;
27
32
  ack(bytes: number): void;
28
33
  close(): Promise<void>;
@@ -43,7 +48,7 @@ export declare class AdbDaemonSocket implements AdbDaemonSocketInfo, AdbSocket {
43
48
  get localCreated(): boolean;
44
49
  get service(): string;
45
50
  get readable(): ReadableStream<Uint8Array>;
46
- get writable(): WritableStream<Consumable<Uint8Array>>;
51
+ get writable(): WritableStream<MaybeConsumable<Uint8Array>>;
47
52
  get closed(): Promise<void>;
48
53
  constructor(controller: AdbDaemonSocketController);
49
54
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/daemon/socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAER,UAAU,EAEV,cAAc,EACd,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kCACb,SAAQ,mBAAmB;IAC3B,UAAU,EAAE,mBAAmB,CAAC;IAEhC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,qBAAa,yBACT,YAAW,mBAAmB,EAAE,SAAS,EAAE,UAAU;;IAIrD,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAI1B,IAAI,QAAQ,+BAEX;IAGD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAK1D,IAAI,MAAM,kBAET;IAGD,IAAI,MAAM,oBAET;gBAaW,OAAO,EAAE,kCAAkC;IA4DjD,OAAO,CAAC,IAAI,EAAE,UAAU;IAiBvB,GAAG,CAAC,KAAK,EAAE,MAAM;IAKlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,OAAO;CASV;AAED;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,mBAAmB,EAAE,SAAS;;IAGlE,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,YAAY,IAAI,OAAO,CAE1B;IACD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEzC;IACD,IAAI,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAErD;IAED,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;gBAEW,UAAU,EAAE,yBAAyB;IAIjD,KAAK;CAGR"}
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/daemon/socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAER,cAAc,EACd,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC5D,UAAU,EAAE,mBAAmB,CAAC;IAEhC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,yBACT,YAAW,mBAAmB,EAAE,SAAS,EAAE,UAAU;;IAIrD,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAI1B,IAAI,QAAQ,+BAEX;IAGD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAK/D,IAAI,MAAM,kBAET;IAGD,IAAI,MAAM,oBAET;gBAaW,OAAO,EAAE,mBAAmB;IA8DlC,OAAO,CAAC,IAAI,EAAE,UAAU;IAiBvB,GAAG,CAAC,KAAK,EAAE,MAAM;IAKlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B,OAAO;CASV;AAED;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,mBAAmB,EAAE,SAAS;;IAGlE,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,YAAY,IAAI,OAAO,CAE1B;IACD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEzC;IACD,IAAI,QAAQ,IAAI,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAE1D;IAED,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;gBAEW,UAAU,EAAE,yBAAyB;IAIjD,KAAK;CAGR"}
@@ -1,5 +1,6 @@
1
1
  import { PromiseResolver } from "@yume-chan/async";
2
- import { ConsumableWritableStream, PushReadableStream, } from "@yume-chan/stream-extra";
2
+ import { MaybeConsumable, PushReadableStream } from "@yume-chan/stream-extra";
3
+ import { EMPTY_UINT8_ARRAY } from "@yume-chan/struct";
3
4
  import { AdbCommand } from "./packet.js";
4
5
  export class AdbDaemonSocketController {
5
6
  #dispatcher;
@@ -25,12 +26,12 @@ export class AdbDaemonSocketController {
25
26
  }
26
27
  #availableWriteBytesChanged;
27
28
  /**
28
- * When delayed ack is disabled, can be `Infinity` if the socket is ready to write.
29
- * Exactly one packet can be written no matter how large it is. Or `-1` if the socket
30
- * is waiting for ack.
29
+ * When delayed ack is disabled, returns `Infinity` if the socket is ready to write
30
+ * (exactly one packet can be written no matter how large it is), or `-1` if the socket
31
+ * is waiting for ack message.
31
32
  *
32
- * When delayed ack is enabled, a non-negative finite number indicates the number of
33
- * bytes that can be written to the socket before receiving an ack.
33
+ * When delayed ack is enabled, returns a non-negative finite number indicates the number of
34
+ * bytes that can be written to the socket before waiting for ack message.
34
35
  */
35
36
  #availableWriteBytes = 0;
36
37
  constructor(options) {
@@ -42,30 +43,31 @@ export class AdbDaemonSocketController {
42
43
  this.#readable = new PushReadableStream((controller) => {
43
44
  this.#readableController = controller;
44
45
  });
45
- this.writable = new ConsumableWritableStream({
46
+ this.writable = new MaybeConsumable.WritableStream({
46
47
  start: (controller) => {
47
48
  this.#writableController = controller;
49
+ controller.signal.addEventListener("abort", () => {
50
+ this.#availableWriteBytesChanged?.reject(controller.signal.reason);
51
+ });
48
52
  },
49
- write: async (data, controller) => {
53
+ write: async (data) => {
50
54
  const size = data.length;
51
55
  const chunkSize = this.#dispatcher.options.maxPayloadSize;
52
56
  for (let start = 0, end = chunkSize; start < size; start = end, end += chunkSize) {
53
57
  const chunk = data.subarray(start, end);
54
- await this.#writeChunk(chunk, controller.signal);
58
+ await this.#writeChunk(chunk);
55
59
  }
56
60
  },
57
61
  });
58
62
  this.#socket = new AdbDaemonSocket(this);
63
+ this.#availableWriteBytes = options.availableWriteBytes;
59
64
  }
60
- async #writeChunk(data, signal) {
61
- const length = data.byteLength;
65
+ async #writeChunk(data) {
66
+ const length = data.length;
62
67
  while (this.#availableWriteBytes < length) {
63
68
  // Only one lock is required because Web Streams API guarantees
64
69
  // that `write` is not reentrant.
65
70
  const resolver = new PromiseResolver();
66
- signal.addEventListener("abort", () => {
67
- resolver.reject(signal.reason);
68
- });
69
71
  this.#availableWriteBytesChanged = resolver;
70
72
  await resolver.promise;
71
73
  }
@@ -109,7 +111,7 @@ export class AdbDaemonSocketController {
109
111
  catch {
110
112
  // ignore
111
113
  }
112
- await this.#dispatcher.sendPacket(AdbCommand.Close, this.localId, this.remoteId);
114
+ await this.#dispatcher.sendPacket(AdbCommand.Close, this.localId, this.remoteId, EMPTY_UINT8_ARRAY);
113
115
  }
114
116
  dispose() {
115
117
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/daemon/socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/daemon/socket.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { Consumable, ReadableWritablePair } from "@yume-chan/stream-extra";
1
+ import type { ReadableWritablePair } from "@yume-chan/stream-extra";
2
+ import { Consumable } from "@yume-chan/stream-extra";
2
3
  import type { ValueOrPromise } from "@yume-chan/struct";
3
4
  import type { AdbIncomingSocketHandler, AdbSocket, AdbTransport } from "../adb.js";
4
5
  import { AdbBanner } from "../banner.js";
@@ -9,7 +10,7 @@ export declare const ADB_DAEMON_VERSION_OMIT_CHECKSUM = 16777217;
9
10
  export declare const ADB_DAEMON_DEFAULT_FEATURES: AdbFeature[];
10
11
  export declare const ADB_DAEMON_DEFAULT_INITIAL_PAYLOAD_SIZE: number;
11
12
  export type AdbDaemonConnection = ReadableWritablePair<AdbPacketData, Consumable<AdbPacketInit>>;
12
- interface AdbDaemonAuthenticationOptions {
13
+ export interface AdbDaemonAuthenticationOptions {
13
14
  serial: string;
14
15
  connection: AdbDaemonConnection;
15
16
  credentialStore: AdbCredentialStore;
@@ -17,18 +18,41 @@ interface AdbDaemonAuthenticationOptions {
17
18
  features?: readonly AdbFeature[];
18
19
  /**
19
20
  * The number of bytes the device can send before receiving an ack packet.
21
+ * Using delayed ack can improve the throughput,
22
+ * especially when the device is connected over Wi-Fi (so the latency is higher).
20
23
  *
21
24
  * Set to 0 or any negative value to disable delayed ack in handshake.
22
25
  * Otherwise the value must be in the range of unsigned 32-bit integer.
23
26
  *
24
- * Delayed ack requires Android 14, this option is ignored on older versions.
27
+ * Delayed ack was added in Android 14,
28
+ * this option will be ignored when the device doesn't support it.
29
+ *
30
+ * @default ADB_DAEMON_DEFAULT_INITIAL_PAYLOAD_SIZE
25
31
  */
26
32
  initialDelayedAckBytes?: number;
27
33
  /**
28
- * Whether to preserve the connection open after the `AdbDaemonTransport` is closed.
34
+ * Whether to keep the `connection` open (don't call `writable.close` and `readable.cancel`)
35
+ * when `AdbDaemonTransport.close` is called.
36
+ *
37
+ * Note that when `authenticate` fails,
38
+ * no matter which value this option has,
39
+ * the `connection` is always kept open, so it can be used in another `authenticate` call.
40
+ *
41
+ * @default false
29
42
  */
30
43
  preserveConnection?: boolean | undefined;
31
- debugSlowRead?: boolean | undefined;
44
+ /**
45
+ * When set, the transport will throw an error when
46
+ * one of the socket readable stalls for this amount of milliseconds.
47
+ *
48
+ * Because ADB is a multiplexed protocol, blocking one socket will also block all other sockets.
49
+ * It's important to always read from all sockets to prevent stalling.
50
+ *
51
+ * This option is helpful to detect bugs in the client code.
52
+ *
53
+ * @default undefined
54
+ */
55
+ readTimeLimit?: number | undefined;
32
56
  }
33
57
  interface AdbDaemonSocketConnectorConstructionOptions {
34
58
  serial: string;
@@ -39,18 +63,34 @@ interface AdbDaemonSocketConnectorConstructionOptions {
39
63
  features?: readonly AdbFeature[];
40
64
  /**
41
65
  * The number of bytes the device can send before receiving an ack packet.
66
+ * Using delayed ack can improve the throughput,
67
+ * especially when the device is connected over Wi-Fi (so the latency is higher).
42
68
  *
43
- * Set to 0 or any negative value to disable delayed ack in handshake.
44
- * Otherwise the value must be in the range of unsigned 32-bit integer.
45
- *
46
- * Delayed ack requires Android 14, this option is ignored on older versions.
69
+ * When `features` doesn't include `AdbFeature.DelayedAck`, it must be set to 0. Otherwise,
70
+ * the value must be in the range of unsigned 32-bit integer. If the device enabled
71
+ * delayed ack but the client didn't, the device will throw an error when the client sends
72
+ * the first data packet. And vice versa.
47
73
  */
48
- initialDelayedAckBytes?: number;
74
+ initialDelayedAckBytes: number;
49
75
  /**
50
- * Whether to preserve the connection open after the `AdbDaemonTransport` is closed.
76
+ * Whether to keep the `connection` open (don't call `writable.close` and `readable.cancel`)
77
+ * when `AdbDaemonTransport.close` is called.
78
+ *
79
+ * @default false
51
80
  */
52
81
  preserveConnection?: boolean | undefined;
53
- debugSlowRead?: boolean | undefined;
82
+ /**
83
+ * When set, the transport will throw an error when
84
+ * one of the socket readable stalls for this amount of milliseconds.
85
+ *
86
+ * Because ADB is a multiplexed protocol, blocking one socket will also block all other sockets.
87
+ * It's important to always read from all sockets to prevent stalling.
88
+ *
89
+ * This option is helpful to detect bugs in the client code.
90
+ *
91
+ * @default undefined
92
+ */
93
+ readTimeLimit?: number | undefined;
54
94
  }
55
95
  export declare class AdbDaemonTransport implements AdbTransport {
56
96
  #private;
@@ -58,9 +98,9 @@ export declare class AdbDaemonTransport implements AdbTransport {
58
98
  * Authenticates the connection and creates an `AdbDaemonTransport` instance
59
99
  * that can be used by `Adb` class.
60
100
  *
61
- * If an authentication process failed, it's possible to call `authenticate` again
62
- * on the same connection. Because every time the device receives a `CNXN` packet,
63
- * it resets all internal state, and starts a new authentication process.
101
+ * If an authentication process failed,
102
+ * no matter which value the `preserveConnection` option has,
103
+ * the `connection` is always kept open, so it can be used in another `authenticate` call.
64
104
  */
65
105
  static authenticate({ serial, connection, credentialStore, authenticators, features, initialDelayedAckBytes, ...options }: AdbDaemonAuthenticationOptions): Promise<AdbDaemonTransport>;
66
106
  get connection(): AdbDaemonConnection;
@@ -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;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,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,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACjC;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;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,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACjC;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;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,QAAsC,EACtC,sBAAgE,EAChE,GAAG,OAAO,EACb,EAAE,8BAA8B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqH/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,sBAAgE,EAChE,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
+ {"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";
@@ -36,9 +36,9 @@ export class AdbDaemonTransport {
36
36
  * Authenticates the connection and creates an `AdbDaemonTransport` instance
37
37
  * that can be used by `Adb` class.
38
38
  *
39
- * If an authentication process failed, it's possible to call `authenticate` again
40
- * on the same connection. Because every time the device receives a `CNXN` packet,
41
- * 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.
42
42
  */
43
43
  static async authenticate({ serial, connection, credentialStore, authenticators = ADB_DEFAULT_AUTHENTICATORS, features = ADB_DAEMON_DEFAULT_FEATURES, initialDelayedAckBytes = ADB_DAEMON_DEFAULT_INITIAL_PAYLOAD_SIZE, ...options }) {
44
44
  // Initially, set to highest-supported version and payload size.
@@ -79,9 +79,8 @@ export class AdbDaemonTransport {
79
79
  signal: abortController.signal,
80
80
  })
81
81
  .then(() => {
82
- if (resolver.state === "running") {
83
- resolver.reject(new Error("Connection closed unexpectedly"));
84
- }
82
+ // If `resolver` is already settled, call `reject` won't do anything.
83
+ resolver.reject(new Error("Connection closed unexpectedly"));
85
84
  }, (e) => {
86
85
  resolver.reject(e);
87
86
  });
@@ -91,7 +90,7 @@ export class AdbDaemonTransport {
91
90
  // Because we don't know if the device needs it or not.
92
91
  init.checksum = calculateChecksum(init.payload);
93
92
  init.magic = init.command ^ 0xffffffff;
94
- await ConsumableWritableStream.write(writer, init);
93
+ await Consumable.WritableStream.write(writer, init);
95
94
  }
96
95
  const actualFeatures = features.slice();
97
96
  if (initialDelayedAckBytes <= 0) {
@@ -158,14 +157,14 @@ export class AdbDaemonTransport {
158
157
  get clientFeatures() {
159
158
  return this.#clientFeatures;
160
159
  }
161
- constructor({ serial, connection, version, banner, features = ADB_DAEMON_DEFAULT_FEATURES, initialDelayedAckBytes = ADB_DAEMON_DEFAULT_INITIAL_PAYLOAD_SIZE, ...options }) {
160
+ constructor({ serial, connection, version, banner, features = ADB_DAEMON_DEFAULT_FEATURES, initialDelayedAckBytes, ...options }) {
162
161
  this.#serial = serial;
163
162
  this.#connection = connection;
164
163
  this.#banner = AdbBanner.parse(banner);
165
164
  this.#clientFeatures = features;
166
165
  if (features.includes(AdbFeature.DelayedAck)) {
167
166
  if (initialDelayedAckBytes <= 0) {
168
- throw new Error("`initialDelayedAckBytes` must be greater than 0 when DelayedAck feature is enabled.");
167
+ throw new TypeError("`initialDelayedAckBytes` must be greater than 0 when DelayedAck feature is enabled.");
169
168
  }
170
169
  if (!this.#banner.features.includes(AdbFeature.DelayedAck)) {
171
170
  initialDelayedAckBytes = 0;
@@ -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"}
@@ -1,57 +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
- parseDeviceList(value: string): AdbServerDevice[];
52
- getDevices(): Promise<AdbServerDevice[]>;
53
- trackDevices(callback: (devices: AdbServerDevice[]) => void): Promise<() => void>;
54
- 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>;
55
59
  /**
56
60
  * Gets the features supported by the device.
57
61
  * The transport ID of the selected device is also returned,
@@ -59,7 +63,7 @@ export declare class AdbServerClient {
59
63
  * @param device The device selector
60
64
  * @returns The transport ID of the selected device, and the features supported by the device.
61
65
  */
62
- getDeviceFeatures(device: AdbServerDeviceSelector): Promise<{
66
+ getDeviceFeatures(device: AdbServerClient.DeviceSelector): Promise<{
63
67
  transportId: bigint;
64
68
  features: AdbFeature[];
65
69
  }>;
@@ -67,18 +71,92 @@ export declare class AdbServerClient {
67
71
  * Creates a connection that will forward the service to device.
68
72
  * @param device The device selector
69
73
  * @param service The service to forward
70
- * @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
71
75
  */
72
- connectDevice(device: AdbServerDeviceSelector, service: string): Promise<AdbServerSocket>;
76
+ createDeviceConnection(device: AdbServerClient.DeviceSelector, service: string): Promise<AdbServerClient.Socket>;
73
77
  /**
74
78
  * Wait for a device to be connected or disconnected.
79
+ *
80
+ * `adb wait-for-<state>`
81
+ *
75
82
  * @param device The device selector
76
83
  * @param state The state to wait for
77
84
  * @param options The options
78
85
  * @returns A promise that resolves when the condition is met.
79
86
  */
80
- waitFor(device: AdbServerDeviceSelector, state: "device" | "disconnect", options?: AdbServerConnectionOptions): Promise<void>;
81
- 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
+ }
82
160
  }
83
- export declare function raceSignal<T>(callback: () => Promise<T>, ...signals: (AbortSignal | undefined)[]): Promise<T>;
161
+ export {};
84
162
  //# sourceMappingURL=client.d.ts.map