@yume-chan/adb 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/CHANGELOG.json +18 -0
  2. package/CHANGELOG.md +10 -1
  3. package/README.md +24 -17
  4. package/esm/adb.d.ts +6 -6
  5. package/esm/adb.d.ts.map +1 -1
  6. package/esm/adb.js +77 -59
  7. package/esm/adb.js.map +1 -1
  8. package/esm/auth.d.ts +6 -6
  9. package/esm/auth.d.ts.map +1 -1
  10. package/esm/auth.js +8 -6
  11. package/esm/auth.js.map +1 -1
  12. package/esm/backend.d.ts +2 -2
  13. package/esm/commands/install.d.ts.map +1 -1
  14. package/esm/commands/install.js +5 -7
  15. package/esm/commands/install.js.map +1 -1
  16. package/esm/commands/reverse.d.ts +2 -2
  17. package/esm/commands/subprocess/index.d.ts +19 -20
  18. package/esm/commands/subprocess/index.d.ts.map +1 -1
  19. package/esm/commands/subprocess/index.js +36 -31
  20. package/esm/commands/subprocess/index.js.map +1 -1
  21. package/esm/commands/subprocess/legacy.d.ts +14 -7
  22. package/esm/commands/subprocess/legacy.d.ts.map +1 -1
  23. package/esm/commands/subprocess/legacy.js +14 -5
  24. package/esm/commands/subprocess/legacy.js.map +1 -1
  25. package/esm/commands/subprocess/protocol.d.ts +3 -2
  26. package/esm/commands/subprocess/protocol.d.ts.map +1 -1
  27. package/esm/commands/subprocess/protocol.js +6 -4
  28. package/esm/commands/subprocess/protocol.js.map +1 -1
  29. package/esm/commands/subprocess/protocols/index.d.ts +4 -0
  30. package/esm/commands/subprocess/protocols/index.d.ts.map +1 -0
  31. package/esm/commands/subprocess/protocols/index.js +4 -0
  32. package/esm/commands/subprocess/protocols/index.js.map +1 -0
  33. package/esm/commands/subprocess/protocols/none.d.ts +35 -0
  34. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -0
  35. package/esm/commands/subprocess/protocols/none.js +53 -0
  36. package/esm/commands/subprocess/protocols/none.js.map +1 -0
  37. package/esm/commands/subprocess/protocols/shell.d.ts +39 -0
  38. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -0
  39. package/esm/commands/subprocess/protocols/shell.js +155 -0
  40. package/esm/commands/subprocess/protocols/shell.js.map +1 -0
  41. package/esm/commands/subprocess/protocols/types.d.ts +50 -0
  42. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -0
  43. package/esm/commands/subprocess/protocols/types.js +2 -0
  44. package/esm/commands/subprocess/protocols/types.js.map +1 -0
  45. package/esm/commands/subprocess/types.d.ts +9 -6
  46. package/esm/commands/subprocess/types.d.ts.map +1 -1
  47. package/esm/commands/sync/list.d.ts +25 -1
  48. package/esm/commands/sync/list.d.ts.map +1 -1
  49. package/esm/commands/sync/list.js +40 -5
  50. package/esm/commands/sync/list.js.map +1 -1
  51. package/esm/commands/sync/request.d.ts +1 -0
  52. package/esm/commands/sync/request.d.ts.map +1 -1
  53. package/esm/commands/sync/request.js +1 -0
  54. package/esm/commands/sync/request.js.map +1 -1
  55. package/esm/commands/sync/response.d.ts +2 -1
  56. package/esm/commands/sync/response.d.ts.map +1 -1
  57. package/esm/commands/sync/response.js +2 -1
  58. package/esm/commands/sync/response.js.map +1 -1
  59. package/esm/commands/sync/stat.d.ts +13 -1
  60. package/esm/commands/sync/stat.d.ts.map +1 -1
  61. package/esm/commands/sync/stat.js +20 -7
  62. package/esm/commands/sync/stat.js.map +1 -1
  63. package/esm/commands/sync/sync.d.ts +13 -35
  64. package/esm/commands/sync/sync.d.ts.map +1 -1
  65. package/esm/commands/sync/sync.js +39 -9
  66. package/esm/commands/sync/sync.js.map +1 -1
  67. package/esm/crypto.d.ts +23 -10
  68. package/esm/crypto.d.ts.map +1 -1
  69. package/esm/crypto.js +64 -46
  70. package/esm/crypto.js.map +1 -1
  71. package/esm/features.d.ts +4 -2
  72. package/esm/features.d.ts.map +1 -1
  73. package/esm/features.js +6 -2
  74. package/esm/features.js.map +1 -1
  75. package/esm/packet.d.ts +21 -2
  76. package/esm/packet.d.ts.map +1 -1
  77. package/esm/packet.js +2 -2
  78. package/esm/packet.js.map +1 -1
  79. package/esm/socket/dispatcher.d.ts +15 -11
  80. package/esm/socket/dispatcher.d.ts.map +1 -1
  81. package/esm/socket/dispatcher.js +16 -19
  82. package/esm/socket/dispatcher.js.map +1 -1
  83. package/esm/socket/socket.d.ts +19 -7
  84. package/esm/socket/socket.d.ts.map +1 -1
  85. package/esm/socket/socket.js +20 -11
  86. package/esm/socket/socket.js.map +1 -1
  87. package/esm/stream/detect.d.ts +1 -17
  88. package/esm/stream/detect.d.ts.map +1 -1
  89. package/esm/stream/detect.js +4 -5
  90. package/esm/stream/detect.js.map +1 -1
  91. package/esm/stream/detect.polyfill.d.ts.map +1 -1
  92. package/esm/stream/detect.polyfill.js +4 -1
  93. package/esm/stream/detect.polyfill.js.map +1 -1
  94. package/esm/stream/transform.d.ts +23 -23
  95. package/esm/stream/transform.d.ts.map +1 -1
  96. package/esm/stream/transform.js +74 -24
  97. package/esm/stream/transform.js.map +1 -1
  98. package/esm/utils/encoding.d.ts.map +1 -1
  99. package/esm/utils/encoding.js.map +1 -1
  100. package/esm/utils/index.d.ts +1 -1
  101. package/esm/utils/index.d.ts.map +1 -1
  102. package/esm/utils/index.js +1 -1
  103. package/esm/utils/index.js.map +1 -1
  104. package/package.json +6 -6
  105. package/src/adb.ts +93 -70
  106. package/src/auth.ts +21 -18
  107. package/src/backend.ts +2 -2
  108. package/src/commands/install.ts +7 -9
  109. package/src/commands/reverse.ts +2 -2
  110. package/src/commands/subprocess/index.ts +57 -42
  111. package/src/commands/subprocess/protocols/index.ts +3 -0
  112. package/src/commands/subprocess/{legacy.ts → protocols/none.ts} +18 -8
  113. package/src/commands/subprocess/{protocol.ts → protocols/shell.ts} +22 -17
  114. package/src/commands/subprocess/{types.ts → protocols/types.ts} +13 -9
  115. package/src/commands/sync/list.ts +51 -5
  116. package/src/commands/sync/request.ts +1 -0
  117. package/src/commands/sync/response.ts +8 -2
  118. package/src/commands/sync/stat.ts +36 -9
  119. package/src/commands/sync/sync.ts +55 -19
  120. package/src/crypto.ts +72 -56
  121. package/src/features.ts +6 -2
  122. package/src/packet.ts +17 -6
  123. package/src/socket/dispatcher.ts +43 -29
  124. package/src/socket/socket.ts +29 -22
  125. package/src/stream/detect.polyfill.ts +4 -1
  126. package/src/stream/detect.ts +4 -24
  127. package/src/stream/transform.ts +96 -40
  128. package/src/utils/index.ts +1 -1
  129. package/tsconfig.build.tsbuildinfo +1 -1
  130. package/src/utils/encoding.ts +0 -13
@@ -3,37 +3,24 @@ import type { Adb } from '../../adb.js';
3
3
  import type { AdbSocket } from '../../socket/index.js';
4
4
  import { AdbBufferedStream, ReadableStream, WritableStream, WritableStreamDefaultWriter } from '../../stream/index.js';
5
5
  import { AutoResetEvent } from '../../utils/index.js';
6
- import { AdbSyncEntryResponse } from './list.js';
6
+ import { type AdbSyncEntry } from './list.js';
7
+ /**
8
+ * A simplified `dirname` function that only handles absolute unix paths.
9
+ * @param path an absolute unix path
10
+ * @returns the directory name of the input path
11
+ */
12
+ export declare function dirname(path: string): string;
7
13
  export declare class AdbSync extends AutoDisposable {
8
14
  protected adb: Adb;
9
15
  protected stream: AdbBufferedStream;
10
16
  protected writer: WritableStreamDefaultWriter<Uint8Array>;
11
17
  protected sendLock: AutoResetEvent;
12
18
  get supportsStat(): boolean;
19
+ get supportsList2(): boolean;
20
+ get fixedPushMkdir(): boolean;
21
+ get needPushMkdirWorkaround(): boolean;
13
22
  constructor(adb: Adb, socket: AdbSocket);
14
- lstat(path: string): Promise<{
15
- id: import("./response.js").AdbSyncResponseId.Lstat;
16
- readonly type: import("./stat.js").LinuxFileType;
17
- readonly permission: number;
18
- mode: number;
19
- size: number;
20
- mtime: number;
21
- } | {
22
- id: import("./response.js").AdbSyncResponseId.Stat;
23
- readonly type: import("./stat.js").LinuxFileType;
24
- readonly permission: number;
25
- error: import("./stat.js").AdbSyncStatErrorCode;
26
- dev: bigint;
27
- ino: bigint;
28
- mode: number;
29
- nlink: number;
30
- uid: number;
31
- gid: number;
32
- size: bigint;
33
- atime: bigint;
34
- mtime: bigint;
35
- ctime: bigint;
36
- }>;
23
+ lstat(path: string): Promise<import("./stat.js").AdbSyncStat>;
37
24
  stat(path: string): Promise<{
38
25
  id: import("./response.js").AdbSyncResponseId.Stat;
39
26
  readonly type: import("./stat.js").LinuxFileType;
@@ -51,17 +38,8 @@ export declare class AdbSync extends AutoDisposable {
51
38
  ctime: bigint;
52
39
  }>;
53
40
  isDirectory(path: string): Promise<boolean>;
54
- opendir(path: string): AsyncGenerator<AdbSyncEntryResponse, void, void>;
55
- readdir(path: string): Promise<{
56
- id: import("./response.js").AdbSyncResponseId.Entry;
57
- readonly type: import("./stat.js").LinuxFileType;
58
- readonly permission: number;
59
- mode: number;
60
- size: number;
61
- mtime: number;
62
- nameLength: number;
63
- name: string;
64
- }[]>;
41
+ opendir(path: string): AsyncGenerator<AdbSyncEntry, void, void>;
42
+ readdir(path: string): Promise<AdbSyncEntry[]>;
65
43
  /**
66
44
  * Read the content of a file on device.
67
45
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAA0C,cAAc,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC/J,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAkB,MAAM,WAAW,CAAC;AAKjE,qBAAa,OAAQ,SAAQ,cAAc;IACvC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEpC,SAAS,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAE1D,SAAS,CAAC,QAAQ,iBAA4C;IAE9D,IAAW,YAAY,IAAI,OAAO,CAEjC;gBAEkB,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS;IAQjC,KAAK,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;IAUlB,IAAI,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;IAcjB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1C,OAAO,CACjB,IAAI,EAAE,MAAM,GACb,cAAc,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC;IAUtC,OAAO,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;IAQjC;;;;;OAKG;IACI,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;IAezD;;;;;;;OAOG;IACI,KAAK,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACf,cAAc,CAAC,UAAU,CAAC;IAqBP,OAAO;CAKhC"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAA0C,cAAc,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC/J,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAK9D;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS5C;AAED,qBAAa,OAAQ,SAAQ,cAAc;IACvC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEpC,SAAS,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAE1D,SAAS,CAAC,QAAQ,iBAA4C;IAE9D,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,IAAW,aAAa,IAAI,OAAO,CAElC;IAED,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED,IAAW,uBAAuB,IAAI,OAAO,CAG5C;gBAEkB,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS;IAQjC,KAAK,CAAC,IAAI,EAAE,MAAM;IAUlB,IAAI,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;IAcjB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1C,OAAO,CACjB,IAAI,EAAE,MAAM,GACb,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;IAU9B,OAAO,CAAC,IAAI,EAAE,MAAM;IAQjC;;;;;OAKG;IACI,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;IAYzD;;;;;;;OAOG;IACI,KAAK,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACf,cAAc,CAAC,UAAU,CAAC;IA8BP,OAAO;CAKhC"}
@@ -2,10 +2,26 @@ import { AutoDisposable } from '@yume-chan/event';
2
2
  import { AdbFeatures } from '../../features.js';
3
3
  import { AdbBufferedStream, WrapReadableStream, WrapWritableStream } from '../../stream/index.js';
4
4
  import { AutoResetEvent } from '../../utils/index.js';
5
+ import { escapeArg } from "../index.js";
5
6
  import { adbSyncOpenDir } from './list.js';
6
7
  import { adbSyncPull } from './pull.js';
7
8
  import { adbSyncPush } from './push.js';
8
9
  import { adbSyncLstat, adbSyncStat } from './stat.js';
10
+ /**
11
+ * A simplified `dirname` function that only handles absolute unix paths.
12
+ * @param path an absolute unix path
13
+ * @returns the directory name of the input path
14
+ */
15
+ export function dirname(path) {
16
+ const end = path.lastIndexOf('/');
17
+ if (end === -1) {
18
+ throw new Error(`Invalid path`);
19
+ }
20
+ if (end === 0) {
21
+ return '/';
22
+ }
23
+ return path.substring(0, end);
24
+ }
9
25
  export class AdbSync extends AutoDisposable {
10
26
  adb;
11
27
  stream;
@@ -14,6 +30,16 @@ export class AdbSync extends AutoDisposable {
14
30
  get supportsStat() {
15
31
  return this.adb.features.includes(AdbFeatures.StatV2);
16
32
  }
33
+ get supportsList2() {
34
+ return this.adb.features.includes(AdbFeatures.ListV2);
35
+ }
36
+ get fixedPushMkdir() {
37
+ return this.adb.features.includes(AdbFeatures.FixedPushMkdir);
38
+ }
39
+ get needPushMkdirWorkaround() {
40
+ // https://android.googlesource.com/platform/packages/modules/adb/+/91768a57b7138166e0a3d11f79cd55909dda7014/client/file_sync_client.cpp#1361
41
+ return this.adb.features.includes(AdbFeatures.ShellV2) && !this.fixedPushMkdir;
42
+ }
17
43
  constructor(adb, socket) {
18
44
  super();
19
45
  this.adb = adb;
@@ -53,7 +79,7 @@ export class AdbSync extends AutoDisposable {
53
79
  async *opendir(path) {
54
80
  await this.sendLock.wait();
55
81
  try {
56
- yield* adbSyncOpenDir(this.stream, this.writer, path);
82
+ yield* adbSyncOpenDir(this.stream, this.writer, path, this.supportsList2);
57
83
  }
58
84
  finally {
59
85
  this.sendLock.notify();
@@ -76,10 +102,7 @@ export class AdbSync extends AutoDisposable {
76
102
  return new WrapReadableStream({
77
103
  start: async () => {
78
104
  await this.sendLock.wait();
79
- return {
80
- readable: adbSyncPull(this.stream, this.writer, filename),
81
- state: undefined,
82
- };
105
+ return adbSyncPull(this.stream, this.writer, filename);
83
106
  },
84
107
  close: async () => {
85
108
  this.sendLock.notify();
@@ -98,10 +121,17 @@ export class AdbSync extends AutoDisposable {
98
121
  return new WrapWritableStream({
99
122
  start: async () => {
100
123
  await this.sendLock.wait();
101
- return {
102
- writable: adbSyncPush(this.stream, this.writer, filename, mode, mtime),
103
- state: undefined,
104
- };
124
+ if (this.needPushMkdirWorkaround) {
125
+ // It may fail if the path is already existed.
126
+ // Ignore the result.
127
+ // TODO: sync: test this
128
+ await this.adb.subprocess.spawnAndWait([
129
+ 'mkdir',
130
+ '-p',
131
+ escapeArg(dirname(filename)),
132
+ ]);
133
+ }
134
+ return adbSyncPush(this.stream, this.writer, filename, mode, mtime);
105
135
  },
106
136
  close: async () => {
107
137
  this.sendLock.notify();
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"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"}
package/esm/crypto.d.ts CHANGED
@@ -1,6 +1,19 @@
1
- export declare function getBig(array: Uint8Array, offset?: number, length?: number): bigint;
2
- export declare function setBig(buffer: ArrayBuffer, value: bigint, offset?: number): void;
3
- export declare function setBigLE(array: Uint8Array, value: bigint, offset?: number): void;
1
+ /**
2
+ * Gets the `BigInt` value at the specified byte offset and length from the start of the view. There is
3
+ * no alignment constraint; multi-byte values may be fetched from any offset.
4
+ *
5
+ * Only supports Big-Endian, because that's what ADB uses.
6
+ * @param byteOffset The place in the buffer at which the value should be retrieved.
7
+ */
8
+ export declare function getBigUint(dataView: DataView, byteOffset: number, length: number): bigint;
9
+ /**
10
+ * Stores an arbitrary-precision positive `BigInt` value at the specified byte offset from the start of the view.
11
+ * @param byteOffset The place in the buffer at which the value should be set.
12
+ * @param value The value to set.
13
+ * @param littleEndian If `false` or `undefined`, a big-endian value should be written,
14
+ * otherwise a little-endian value should be written.
15
+ */
16
+ export declare function setBigUint(dataView: DataView, byteOffset: number, value: bigint, littleEndian?: boolean): number;
4
17
  export declare function parsePrivateKey(key: Uint8Array): [n: bigint, d: bigint];
5
18
  export declare function modInverse(a: number, m: number): number;
6
19
  export declare function calculatePublicKeyLength(): number;
@@ -14,11 +27,11 @@ export declare function calculatePublicKey(privateKey: Uint8Array, output: Uint8
14
27
  * See https://en.wikipedia.org/wiki/Modular_exponentiation#Implementation_in_Lua
15
28
  */
16
29
  export declare function powMod(base: bigint, exponent: bigint, modulus: bigint): bigint;
17
- export declare const Sha1DigestLength = 20;
18
- export declare const Asn1Sequence = 48;
19
- export declare const Asn1OctetString = 4;
20
- export declare const Asn1Null = 5;
21
- export declare const Asn1Oid = 6;
22
- export declare const Sha1DigestInfo: Uint8Array;
23
- export declare function sign(privateKey: Uint8Array, data: Uint8Array): ArrayBuffer;
30
+ export declare const SHA1_DIGEST_LENGTH = 20;
31
+ export declare const ASN1_SEQUENCE = 48;
32
+ export declare const ASN1_OCTET_STRING = 4;
33
+ export declare const ASN1_NULL = 5;
34
+ export declare const ASN1_OID = 6;
35
+ export declare const SHA1_DIGEST_INFO: Uint8Array;
36
+ export declare function sign(privateKey: Uint8Array, data: Uint8Array): Uint8Array;
24
37
  //# sourceMappingURL=crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAOA,wBAAgB,MAAM,CAClB,KAAK,EAAE,UAAU,EACjB,MAAM,SAAI,EACV,MAAM,SAA4B,GACnC,MAAM,CAeR;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,QAY5E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAI,QAOpE;AA4BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAKvE;AAKD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAsB9C;AAED,wBAAgB,wBAAwB,WAEvC;AAED,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,UAAU,GACvB,UAAU,CAAC;AACd,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,UAAU,GACnB,MAAM,CAAC;AAwEV;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAkB9E;AAED,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,eAAe,IAAO,CAAC;AACpC,eAAO,MAAM,QAAQ,IAAO,CAAC;AAC7B,eAAO,MAAM,OAAO,IAAO,CAAC;AAG5B,eAAO,MAAM,cAAc,YAOzB,CAAC;AAQH,wBAAgB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,CAoC1E"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAazF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,UAyBvG;AA4BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAKvE;AAKD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAsB9C;AAED,wBAAgB,wBAAwB,WAEvC;AAED,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,UAAU,GACvB,UAAU,CAAC;AACd,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,UAAU,GACnB,MAAM,CAAC;AAuEV;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAkB9E;AAED,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,aAAa,KAAO,CAAC;AAClC,eAAO,MAAM,iBAAiB,IAAO,CAAC;AACtC,eAAO,MAAM,SAAS,IAAO,CAAC;AAC9B,eAAO,MAAM,QAAQ,IAAO,CAAC;AAG7B,eAAO,MAAM,gBAAgB,YAO3B,CAAC;AAQH,wBAAgB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAyCzE"}
package/esm/crypto.js CHANGED
@@ -3,37 +3,54 @@ const BigInt0 = BigInt(0);
3
3
  const BigInt1 = BigInt(1);
4
4
  const BigInt2 = BigInt(2);
5
5
  const BigInt64 = BigInt(64);
6
- export function getBig(array, offset = 0, length = array.byteLength - offset) {
7
- const view = new DataView(array.buffer, array.byteOffset, array.byteLength);
6
+ /**
7
+ * Gets the `BigInt` value at the specified byte offset and length from the start of the view. There is
8
+ * no alignment constraint; multi-byte values may be fetched from any offset.
9
+ *
10
+ * Only supports Big-Endian, because that's what ADB uses.
11
+ * @param byteOffset The place in the buffer at which the value should be retrieved.
12
+ */
13
+ export function getBigUint(dataView, byteOffset, length) {
8
14
  let result = BigInt0;
9
15
  // Currently `length` must be a multiplication of 8
10
16
  // Support for arbitrary length can be easily added
11
- for (let i = offset; i < offset + length; i += 8) {
17
+ for (let i = byteOffset; i < byteOffset + length; i += 8) {
12
18
  result <<= BigInt64;
13
- const value = getBigUint64(view, i, false);
19
+ const value = getBigUint64(dataView, i, false);
14
20
  result += value;
15
21
  }
16
22
  return result;
17
23
  }
18
- export function setBig(buffer, value, offset = 0) {
19
- const uint64Array = [];
20
- while (value > BigInt0) {
21
- uint64Array.push(BigInt.asUintN(64, value));
22
- value >>= BigInt64;
23
- }
24
- const view = new DataView(buffer);
25
- for (let i = uint64Array.length - 1; i >= 0; i -= 1) {
26
- setBigUint64(view, offset, uint64Array[i], false);
27
- offset += 8;
24
+ /**
25
+ * Stores an arbitrary-precision positive `BigInt` value at the specified byte offset from the start of the view.
26
+ * @param byteOffset The place in the buffer at which the value should be set.
27
+ * @param value The value to set.
28
+ * @param littleEndian If `false` or `undefined`, a big-endian value should be written,
29
+ * otherwise a little-endian value should be written.
30
+ */
31
+ export function setBigUint(dataView, byteOffset, value, littleEndian) {
32
+ const start = byteOffset;
33
+ if (littleEndian) {
34
+ while (value > BigInt0) {
35
+ setBigUint64(dataView, byteOffset, value, true);
36
+ byteOffset += 8;
37
+ value >>= BigInt64;
38
+ }
28
39
  }
29
- }
30
- export function setBigLE(array, value, offset = 0) {
31
- const view = new DataView(array.buffer, array.byteOffset, array.byteLength);
32
- while (value > BigInt0) {
33
- setBigUint64(view, offset, value, true);
34
- offset += 8;
35
- value >>= BigInt64;
40
+ else {
41
+ // Because we don't know how long (in bits) the `value` is,
42
+ // Convert it to an array of `uint64` first.
43
+ const uint64Array = [];
44
+ while (value > BigInt0) {
45
+ uint64Array.push(BigInt.asUintN(64, value));
46
+ value >>= BigInt64;
47
+ }
48
+ for (let i = uint64Array.length - 1; i >= 0; i -= 1) {
49
+ setBigUint64(dataView, byteOffset, uint64Array[i], false);
50
+ byteOffset += 8;
51
+ }
36
52
  }
53
+ return byteOffset - start;
37
54
  }
38
55
  // These values are correct only if
39
56
  // modulus length is 2048 and
@@ -58,8 +75,9 @@ const RsaPrivateKeyNLength = 2048 / 8;
58
75
  const RsaPrivateKeyDOffset = 303;
59
76
  const RsaPrivateKeyDLength = 2048 / 8;
60
77
  export function parsePrivateKey(key) {
61
- let n = getBig(key, RsaPrivateKeyNOffset, RsaPrivateKeyNLength);
62
- let d = getBig(key, RsaPrivateKeyDOffset, RsaPrivateKeyDLength);
78
+ const view = new DataView(key.buffer, key.byteOffset, key.byteLength);
79
+ const n = getBigUint(view, RsaPrivateKeyNOffset, RsaPrivateKeyNLength);
80
+ const d = getBigUint(view, RsaPrivateKeyDOffset, RsaPrivateKeyDLength);
63
81
  return [n, d];
64
82
  }
65
83
  // Taken from https://stackoverflow.com/a/51562038
@@ -99,7 +117,7 @@ export function calculatePublicKey(privateKey, output) {
99
117
  // [
100
118
  // modulusLengthInWords, // 32-bit integer, a "word" is 32-bit so it must be 2048 / 8 / 4
101
119
  // // Actually the comment in Android source code was wrong
102
- // n0inv, // 32-bit integer, the modular inverse of (lower 32 bits of) n
120
+ // n0inv, // 32-bit integer, the modular inverse of (low 32 bits of n)
103
121
  // modulus, // n
104
122
  // rr, // Montgomery parameter R^2
105
123
  // exponent, // 32-bit integer, must be 65537
@@ -133,12 +151,11 @@ export function calculatePublicKey(privateKey, output) {
133
151
  outputView.setUint32(outputOffset, n0inv, true);
134
152
  outputOffset += 4;
135
153
  // Write n
136
- setBigLE(output, n, outputOffset);
154
+ setBigUint(outputView, outputOffset, n, true);
137
155
  outputOffset += 256;
138
156
  // Calculate rr = (2^(rsa_size)) ^ 2 mod n
139
157
  let rr = BigInt(2) ** BigInt(4096) % n;
140
- setBigLE(output, rr, outputOffset);
141
- outputOffset += 256;
158
+ outputOffset += setBigUint(outputView, outputOffset, rr, true);
142
159
  // exponent
143
160
  outputView.setUint32(outputOffset, 65537, true);
144
161
  outputOffset += 4;
@@ -171,19 +188,19 @@ export function powMod(base, exponent, modulus) {
171
188
  }
172
189
  return r;
173
190
  }
174
- export const Sha1DigestLength = 20;
175
- export const Asn1Sequence = 0x30;
176
- export const Asn1OctetString = 0x04;
177
- export const Asn1Null = 0x05;
178
- export const Asn1Oid = 0x06;
191
+ export const SHA1_DIGEST_LENGTH = 20;
192
+ export const ASN1_SEQUENCE = 0x30;
193
+ export const ASN1_OCTET_STRING = 0x04;
194
+ export const ASN1_NULL = 0x05;
195
+ export const ASN1_OID = 0x06;
179
196
  // PKCS#1 SHA-1 hash digest info
180
- export const Sha1DigestInfo = new Uint8Array([
181
- Asn1Sequence, 0x0d + Sha1DigestLength,
182
- Asn1Sequence, 0x09,
197
+ export const SHA1_DIGEST_INFO = new Uint8Array([
198
+ ASN1_SEQUENCE, 0x0d + SHA1_DIGEST_LENGTH,
199
+ ASN1_SEQUENCE, 0x09,
183
200
  // SHA-1 (1 3 14 3 2 26)
184
- Asn1Oid, 0x05, 1 * 40 + 3, 14, 3, 2, 26,
185
- Asn1Null, 0x00,
186
- Asn1OctetString, Sha1DigestLength
201
+ ASN1_OID, 0x05, 1 * 40 + 3, 14, 3, 2, 26,
202
+ ASN1_NULL, 0x00,
203
+ ASN1_OCTET_STRING, SHA1_DIGEST_LENGTH
187
204
  ]);
188
205
  // SubtleCrypto.sign() will hash the given data and sign the hash
189
206
  // But we don't need the hashing step
@@ -200,22 +217,23 @@ export function sign(privateKey, data) {
200
217
  index += 1;
201
218
  padded[index] = 1;
202
219
  index += 1;
203
- const fillLength = padded.length - Sha1DigestInfo.length - data.length - 1;
220
+ const fillLength = padded.length - SHA1_DIGEST_INFO.length - data.length - 1;
204
221
  while (index < fillLength) {
205
222
  padded[index] = 0xff;
206
223
  index += 1;
207
224
  }
208
225
  padded[index] = 0;
209
226
  index += 1;
210
- padded.set(Sha1DigestInfo, index);
211
- index += Sha1DigestInfo.length;
227
+ padded.set(SHA1_DIGEST_INFO, index);
228
+ index += SHA1_DIGEST_INFO.length;
212
229
  padded.set(data, index);
213
230
  // Encryption
214
231
  // signature = padded ** d % n
215
- let signature = powMod(getBig(padded), d, n);
216
- // Put into an ArrayBuffer
217
- const result = new ArrayBuffer(256);
218
- setBig(result, signature);
219
- return result;
232
+ const view = new DataView(padded.buffer);
233
+ const signature = powMod(getBigUint(view, 0, view.byteLength), d, n);
234
+ // `padded` is not used anymore,
235
+ // re-use the buffer to store the result
236
+ setBigUint(view, 0, signature, false);
237
+ return padded;
220
238
  }
221
239
  //# sourceMappingURL=crypto.js.map
package/esm/crypto.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
package/esm/features.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export declare enum AdbFeatures {
2
- StatV2 = "stat_v2",
2
+ ShellV2 = "shell_v2",
3
3
  Cmd = "cmd",
4
- ShellV2 = "shell_v2"
4
+ StatV2 = "stat_v2",
5
+ ListV2 = "ls_v2",
6
+ FixedPushMkdir = "fixed_push_mkdir"
5
7
  }
6
8
  //# sourceMappingURL=features.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACnB,MAAM,YAAY;IAClB,GAAG,QAAQ;IACX,OAAO,aAAa;CACvB"}
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAEA,oBAAY,WAAW;IACnB,OAAO,aAAa;IACpB,GAAG,QAAQ;IACX,MAAM,YAAY;IAClB,MAAM,UAAU;IAChB,cAAc,qBAAqB;CACtC"}
package/esm/features.js CHANGED
@@ -1,7 +1,11 @@
1
+ // The order follows
2
+ // https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
1
3
  export var AdbFeatures;
2
4
  (function (AdbFeatures) {
3
- AdbFeatures["StatV2"] = "stat_v2";
4
- AdbFeatures["Cmd"] = "cmd";
5
5
  AdbFeatures["ShellV2"] = "shell_v2";
6
+ AdbFeatures["Cmd"] = "cmd";
7
+ AdbFeatures["StatV2"] = "stat_v2";
8
+ AdbFeatures["ListV2"] = "ls_v2";
9
+ AdbFeatures["FixedPushMkdir"] = "fixed_push_mkdir";
6
10
  })(AdbFeatures = AdbFeatures || (AdbFeatures = {}));
7
11
  //# sourceMappingURL=features.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,iCAAkB,CAAA;IAClB,0BAAW,CAAA;IACX,mCAAoB,CAAA;AACxB,CAAC,EAJW,WAAW,GAAX,WAAW,KAAX,WAAW,QAItB"}
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,+HAA+H;AAC/H,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACnB,mCAAoB,CAAA;IACpB,0BAAW,CAAA;IACX,iCAAkB,CAAA;IAClB,+BAAgB,CAAA;IAChB,kDAAmC,CAAA;AACvC,CAAC,EANW,WAAW,GAAX,WAAW,KAAX,WAAW,QAMtB"}
package/esm/packet.d.ts CHANGED
@@ -8,6 +8,15 @@ export declare enum AdbCommand {
8
8
  Open = 1313165391,
9
9
  Write = 1163154007
10
10
  }
11
+ export declare const AdbPacketHeader: Struct<{
12
+ command: number;
13
+ arg0: number;
14
+ arg1: number;
15
+ payloadLength: number;
16
+ checksum: number;
17
+ magic: number;
18
+ }, never, {}, undefined>;
19
+ export declare type AdbPacketHeader = typeof AdbPacketHeader['TDeserializeResult'];
11
20
  export declare const AdbPacket: Struct<{
12
21
  command: number;
13
22
  arg0: number;
@@ -18,10 +27,20 @@ export declare const AdbPacket: Struct<{
18
27
  payload: Uint8Array;
19
28
  }, "payloadLength", {}, undefined>;
20
29
  export declare type AdbPacket = typeof AdbPacket['TDeserializeResult'];
21
- export declare type AdbPacketCore = Omit<typeof AdbPacket['TInit'], 'checksum' | 'magic'>;
30
+ /**
31
+ * `AdbPacketData` contains all the useful fields of `AdbPacket`.
32
+ *
33
+ * `AdbBackend#connect` will return a `ReadableStream<AdbPacketData>`,
34
+ * so each backend can encode `AdbPacket` in different ways.
35
+ *
36
+ * `AdbBackend#connect` will return a `WritableStream<AdbPacketInit>`,
37
+ * however, `AdbPacketDispatcher` will transform `AdbPacketData` to `AdbPacketInit` for you,
38
+ * so `AdbSocket#writable#write` only needs `AdbPacketData`.
39
+ */
40
+ export declare type AdbPacketData = Omit<typeof AdbPacket['TInit'], 'checksum' | 'magic'>;
22
41
  export declare type AdbPacketInit = Omit<typeof AdbPacket['TInit'], 'magic'>;
23
42
  export declare function calculateChecksum(payload: Uint8Array): number;
24
- export declare function calculateChecksum(init: AdbPacketCore): AdbPacketInit;
43
+ export declare function calculateChecksum(init: AdbPacketData): AdbPacketInit;
25
44
  export declare class AdbPacketSerializeStream extends TransformStream<AdbPacketInit, Uint8Array> {
26
45
  constructor();
27
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,oBAAY,UAAU;IAClB,IAAI,aAAa;IACjB,KAAK,aAAa;IAClB,OAAO,aAAa;IACpB,EAAE,aAAa;IACf,IAAI,aAAa;IACjB,KAAK,aAAa;CACrB;AAaD,eAAO,MAAM,SAAS;;;;;;;;kCAG0C,CAAC;AAEjE,oBAAY,SAAS,GAAG,OAAO,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAG/D,oBAAY,aAAa,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;AAGlF,oBAAY,aAAa,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAErE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CAAC;AAUtE,qBAAa,wBAAyB,SAAQ,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC;;CAqBvF"}
1
+ {"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,oBAAY,UAAU;IAClB,IAAI,aAAa;IACjB,KAAK,aAAa;IAClB,OAAO,aAAa;IACpB,EAAE,aAAa;IACf,IAAI,aAAa;IACjB,KAAK,aAAa;CACrB;AAED,eAAO,MAAM,eAAe;;;;;;;wBAOL,CAAC;AAExB,oBAAY,eAAe,GAAG,OAAO,eAAe,CAAC,oBAAoB,CAAC,CAAC;AAI3E,eAAO,MAAM,SAAS;;;;;;;;kCAG0C,CAAC;AAEjE,oBAAY,SAAS,GAAG,OAAO,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAE/D;;;;;;;;;GASG;AACH,oBAAY,aAAa,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;AAGlF,oBAAY,aAAa,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAErE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CAAC;AAUtE,qBAAa,wBAAyB,SAAQ,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC;;CAqBvF"}
package/esm/packet.js CHANGED
@@ -9,7 +9,7 @@ export var AdbCommand;
9
9
  AdbCommand[AdbCommand["Open"] = 1313165391] = "Open";
10
10
  AdbCommand[AdbCommand["Write"] = 1163154007] = "Write";
11
11
  })(AdbCommand = AdbCommand || (AdbCommand = {}));
12
- const AdbPacketHeader = new Struct({ littleEndian: true })
12
+ export const AdbPacketHeader = new Struct({ littleEndian: true })
13
13
  .uint32('command')
14
14
  .uint32('arg0')
15
15
  .uint32('arg1')
@@ -32,7 +32,7 @@ export class AdbPacketSerializeStream extends TransformStream {
32
32
  constructor() {
33
33
  super({
34
34
  transform: async (init, controller) => {
35
- // This syntax is ugly, but I don't want to create an new object.
35
+ // This syntax is ugly, but I don't want to create a new object.
36
36
  init.magic = init.command ^ 0xFFFFFFFF;
37
37
  init.payloadLength = init.payload.byteLength;
38
38
  controller.enqueue(AdbPacketHeader.serialize(init));
package/esm/packet.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;IAClB,0DAAoB,CAAA;IACpB,gDAAe,CAAA;IACf,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;AACtB,CAAC,EAPW,UAAU,GAAV,UAAU,KAAV,UAAU,QAOrB;AAED,MAAM,eAAe,GACjB,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,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;AAIxB,MAAM,CAAC,MAAM,SAAS,GAClB,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,eAAe,CAAC;KACvB,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;AAYjE,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IACjE,IAAI,OAAO,YAAY,UAAU,EAAE;QAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;KAC7D;SAAM;QACF,OAAyB,CAAC,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzE,OAAO,OAAwB,CAAC;KACnC;AACL,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,eAA0C;IACpF;QACI,KAAK,CAAC;YACF,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;gBAClC,iEAAiE;gBAChE,IAAuC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;gBAC1E,IAAuC,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAEjF,UAAU,CAAC,OAAO,CACd,eAAe,CAAC,SAAS,CACrB,IAAsC,CACzC,CACJ,CAAC;gBAEF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBACzB,8CAA8C;oBAC9C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;IAClB,0DAAoB,CAAA;IACpB,gDAAe,CAAA;IACf,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;AACtB,CAAC,EAPW,UAAU,GAAV,UAAU,KAAV,UAAU,QAOrB;AAED,MAAM,CAAC,MAAM,eAAe,GACxB,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,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;AAMxB,MAAM,CAAC,MAAM,SAAS,GAClB,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,eAAe,CAAC;KACvB,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;AAqBjE,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IACjE,IAAI,OAAO,YAAY,UAAU,EAAE;QAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;KAC7D;SAAM;QACF,OAAyB,CAAC,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzE,OAAO,OAAwB,CAAC;KACnC;AACL,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,eAA0C;IACpF;QACI,KAAK,CAAC;YACF,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;gBAClC,gEAAgE;gBAC/D,IAAuC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;gBAC1E,IAAuC,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAEjF,UAAU,CAAC,OAAO,CACd,eAAe,CAAC,SAAS,CACrB,IAAsC,CACzC,CACJ,CAAC;gBAEF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBACzB,8CAA8C;oBAC9C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,20 +1,29 @@
1
1
  import { AutoDisposable } from '@yume-chan/event';
2
- import { AdbCommand, type AdbPacketCore, type AdbPacketInit } from '../packet.js';
2
+ import { AdbCommand, type AdbPacketData, type AdbPacketInit } from '../packet.js';
3
3
  import { type ReadableWritablePair } from '../stream/index.js';
4
4
  import { AdbSocket } from './socket.js';
5
5
  export interface AdbIncomingSocketEventArgs {
6
6
  handled: boolean;
7
- packet: AdbPacketCore;
7
+ packet: AdbPacketData;
8
8
  serviceString: string;
9
9
  socket: AdbSocket;
10
10
  }
11
+ export interface AdbPacketDispatcherOptions {
12
+ calculateChecksum: boolean;
13
+ /**
14
+ * Before Android 9.0, ADB uses `char*` to parse service string,
15
+ * thus requires a null character to terminate.
16
+ *
17
+ * Usually it should have the same value as `calculateChecksum`.
18
+ */
19
+ appendNullToServiceString: boolean;
20
+ maxPayloadSize: number;
21
+ }
11
22
  export declare class AdbPacketDispatcher extends AutoDisposable {
12
23
  private readonly initializers;
13
24
  private readonly sockets;
14
25
  private _writer;
15
- maxPayloadSize: number;
16
- calculateChecksum: boolean;
17
- appendNullToServiceString: boolean;
26
+ readonly options: AdbPacketDispatcherOptions;
18
27
  private _disconnected;
19
28
  get disconnected(): Promise<void>;
20
29
  private readonly incomingSocketEvent;
@@ -22,13 +31,8 @@ export declare class AdbPacketDispatcher extends AutoDisposable {
22
31
  (listener: import("@yume-chan/event").EventListener<AdbIncomingSocketEventArgs, unknown, [], unknown>): import("@yume-chan/event").RemoveEventListener;
23
32
  <TThis, TArgs extends unknown[]>(listener: import("@yume-chan/event").EventListener<AdbIncomingSocketEventArgs, TThis, TArgs, unknown>, thisArg: TThis, ...args: TArgs): import("@yume-chan/event").RemoveEventListener;
24
33
  };
25
- private readonly errorEvent;
26
- get onError(): {
27
- (listener: import("@yume-chan/event").EventListener<Error, unknown, [], unknown>): import("@yume-chan/event").RemoveEventListener;
28
- <TThis, TArgs extends unknown[]>(listener: import("@yume-chan/event").EventListener<Error, TThis, TArgs, unknown>, thisArg: TThis, ...args: TArgs): import("@yume-chan/event").RemoveEventListener;
29
- };
30
34
  private _abortController;
31
- constructor(connection: ReadableWritablePair<AdbPacketCore, AdbPacketInit>);
35
+ constructor(connection: ReadableWritablePair<AdbPacketData, AdbPacketInit>, options: AdbPacketDispatcherOptions);
32
36
  private handleOk;
33
37
  private handleClose;
34
38
  private handleOpen;
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAqB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAgE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7H,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,0BAA0B;IACvC,OAAO,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,aAAa,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;IAEtB,MAAM,EAAE,SAAS,CAAC;CACrB;AAID,qBAAa,mBAAoB,SAAQ,cAAc;IAGnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAExD,OAAO,CAAC,OAAO,CAA8C;IAEtD,cAAc,SAAK;IACnB,iBAAiB,UAAQ;IACzB,yBAAyB,UAAQ;IAExC,OAAO,CAAC,aAAa,CAA+B;IACpD,IAAW,YAAY,kBAAyC;IAEhE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsE;IAC1G,IAAW,gBAAgB;;;MAA6C;IAExE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiD;IAC5E,IAAW,OAAO;;;MAAoC;IAEtD,OAAO,CAAC,gBAAgB,CAAyB;gBAG7C,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC;IAkDlE,OAAO,CAAC,QAAQ;YAkBF,WAAW;YA8BX,UAAU;IAiCX,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAqB7D,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAChD,UAAU,CACb,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC;IAqCA,OAAO;CAiB1B"}
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAqB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAgE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7H,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAC;AAE7D,MAAM,WAAW,0BAA0B;IACvC,OAAO,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,aAAa,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;IAEtB,MAAM,EAAE,SAAS,CAAC;CACrB;AAID,MAAM,WAAW,0BAA0B;IACvC,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IAGnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAElE,OAAO,CAAC,OAAO,CAA8C;IAE7D,SAAgB,OAAO,EAAE,0BAA0B,CAAC;IAEpD,OAAO,CAAC,aAAa,CAA+B;IACpD,IAAW,YAAY,kBAAyC;IAEhE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsE;IAC1G,IAAW,gBAAgB;;;MAA6C;IAExE,OAAO,CAAC,gBAAgB,CAAyB;gBAG7C,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,OAAO,EAAE,0BAA0B;IAkDvC,OAAO,CAAC,QAAQ;YAkBF,WAAW;YA8BX,UAAU;IAiCX,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA2B7D,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAChD,UAAU,CACb,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC;IAqCA,OAAO;CAiB1B"}