@yume-chan/adb 0.0.17 → 0.0.18
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.
- package/CHANGELOG.json +6 -0
- package/CHANGELOG.md +6 -1
- package/LICENSE +1 -1
- package/esm/adb.d.ts +6 -6
- package/esm/adb.d.ts.map +1 -1
- package/esm/adb.js +55 -35
- package/esm/adb.js.map +1 -1
- package/esm/auth.d.ts +4 -4
- package/esm/auth.d.ts.map +1 -1
- package/esm/auth.js +6 -6
- package/esm/auth.js.map +1 -1
- package/esm/backend.d.ts +3 -3
- package/esm/backend.d.ts.map +1 -1
- package/esm/commands/base.d.ts +2 -2
- package/esm/commands/base.d.ts.map +1 -1
- package/esm/commands/base.js +1 -1
- package/esm/commands/framebuffer.d.ts +7 -7
- package/esm/commands/framebuffer.d.ts.map +1 -1
- package/esm/commands/framebuffer.js +32 -33
- package/esm/commands/framebuffer.js.map +1 -1
- package/esm/commands/install.d.ts +2 -2
- package/esm/commands/install.d.ts.map +1 -1
- package/esm/commands/install.js +12 -6
- package/esm/commands/install.js.map +1 -1
- package/esm/commands/power.d.ts +1 -1
- package/esm/commands/power.d.ts.map +1 -1
- package/esm/commands/power.js +14 -10
- package/esm/commands/power.js.map +1 -1
- package/esm/commands/reverse.d.ts +3 -3
- package/esm/commands/reverse.d.ts.map +1 -1
- package/esm/commands/reverse.js +14 -12
- package/esm/commands/reverse.js.map +1 -1
- package/esm/commands/subprocess/command.d.ts +2 -2
- package/esm/commands/subprocess/command.d.ts.map +1 -1
- package/esm/commands/subprocess/command.js +14 -16
- package/esm/commands/subprocess/command.js.map +1 -1
- package/esm/commands/subprocess/protocols/none.d.ts +4 -4
- package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/none.js.map +1 -1
- package/esm/commands/subprocess/protocols/shell.d.ts +4 -4
- package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/shell.js +23 -15
- package/esm/commands/subprocess/protocols/shell.js.map +1 -1
- package/esm/commands/subprocess/protocols/types.d.ts +4 -4
- package/esm/commands/subprocess/protocols/types.d.ts.map +1 -1
- package/esm/commands/sync/list.d.ts +6 -6
- package/esm/commands/sync/list.d.ts.map +1 -1
- package/esm/commands/sync/list.js +23 -11
- package/esm/commands/sync/list.js.map +1 -1
- package/esm/commands/sync/pull.d.ts +4 -4
- package/esm/commands/sync/pull.d.ts.map +1 -1
- package/esm/commands/sync/pull.js +12 -11
- package/esm/commands/sync/pull.js.map +1 -1
- package/esm/commands/sync/push.d.ts +3 -3
- package/esm/commands/sync/push.d.ts.map +1 -1
- package/esm/commands/sync/push.js +6 -7
- package/esm/commands/sync/push.js.map +1 -1
- package/esm/commands/sync/request.d.ts +4 -4
- package/esm/commands/sync/request.d.ts.map +1 -1
- package/esm/commands/sync/request.js +7 -7
- package/esm/commands/sync/request.js.map +1 -1
- package/esm/commands/sync/response.d.ts +4 -4
- package/esm/commands/sync/response.d.ts.map +1 -1
- package/esm/commands/sync/response.js +7 -7
- package/esm/commands/sync/response.js.map +1 -1
- package/esm/commands/sync/stat.d.ts +5 -5
- package/esm/commands/sync/stat.d.ts.map +1 -1
- package/esm/commands/sync/stat.js +37 -27
- package/esm/commands/sync/stat.js.map +1 -1
- package/esm/commands/sync/sync.d.ts +6 -6
- package/esm/commands/sync/sync.d.ts.map +1 -1
- package/esm/commands/sync/sync.js +20 -19
- package/esm/commands/sync/sync.js.map +1 -1
- package/esm/crypto.d.ts.map +1 -1
- package/esm/crypto.js +25 -15
- package/esm/crypto.js.map +1 -1
- package/esm/index.d.ts +9 -9
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +9 -9
- package/esm/index.js.map +1 -1
- package/esm/packet.d.ts +8 -8
- package/esm/packet.d.ts.map +1 -1
- package/esm/packet.js +14 -12
- package/esm/packet.js.map +1 -1
- package/esm/socket/dispatcher.d.ts +6 -6
- package/esm/socket/dispatcher.d.ts.map +1 -1
- package/esm/socket/dispatcher.js +22 -19
- package/esm/socket/dispatcher.js.map +1 -1
- package/esm/socket/socket.d.ts +4 -4
- package/esm/socket/socket.d.ts.map +1 -1
- package/esm/socket/socket.js +37 -17
- package/esm/socket/socket.js.map +1 -1
- package/esm/utils/auto-reset-event.d.ts +1 -1
- package/esm/utils/auto-reset-event.d.ts.map +1 -1
- package/esm/utils/auto-reset-event.js +2 -2
- package/esm/utils/base64.d.ts.map +1 -1
- package/esm/utils/base64.js +30 -29
- package/esm/utils/base64.js.map +1 -1
- package/package.json +16 -13
- package/src/adb.ts +133 -84
- package/src/auth.ts +27 -19
- package/src/backend.ts +6 -4
- package/src/commands/base.ts +2 -2
- package/src/commands/framebuffer.ts +37 -41
- package/src/commands/install.ts +19 -11
- package/src/commands/power.ts +15 -11
- package/src/commands/reverse.ts +48 -29
- package/src/commands/subprocess/command.ts +24 -21
- package/src/commands/subprocess/protocols/none.ts +4 -3
- package/src/commands/subprocess/protocols/shell.ts +65 -33
- package/src/commands/subprocess/protocols/types.ts +8 -5
- package/src/commands/sync/list.ts +51 -24
- package/src/commands/sync/pull.ts +51 -34
- package/src/commands/sync/push.ts +25 -11
- package/src/commands/sync/request.ts +20 -22
- package/src/commands/sync/response.ts +31 -25
- package/src/commands/sync/stat.ts +78 -55
- package/src/commands/sync/sync.ts +47 -26
- package/src/crypto.ts +60 -32
- package/src/index.ts +9 -10
- package/src/packet.ts +40 -30
- package/src/socket/dispatcher.ts +115 -78
- package/src/socket/socket.ts +68 -27
- package/src/utils/auto-reset-event.ts +3 -3
- package/src/utils/base64.ts +51 -41
- package/tsconfig.build.json +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
package/esm/crypto.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getBigUint64, setBigUint64 } from
|
|
1
|
+
import { getBigUint64, setBigUint64, } from "@yume-chan/dataview-bigint-polyfill/esm/fallback.js";
|
|
2
2
|
const BigInt0 = BigInt(0);
|
|
3
3
|
const BigInt1 = BigInt(1);
|
|
4
4
|
const BigInt2 = BigInt(2);
|
|
@@ -84,7 +84,7 @@ export function parsePrivateKey(key) {
|
|
|
84
84
|
// I can't understand, but it does work
|
|
85
85
|
// Only used with numbers smaller than 2^32 so doesn't need BigInt
|
|
86
86
|
export function modInverse(a, m) {
|
|
87
|
-
a = (a % m + m) % m;
|
|
87
|
+
a = ((a % m) + m) % m;
|
|
88
88
|
if (!a || m < 2) {
|
|
89
89
|
return NaN; // invalid input
|
|
90
90
|
}
|
|
@@ -101,10 +101,10 @@ export function modInverse(a, m) {
|
|
|
101
101
|
// find the inverse
|
|
102
102
|
let x = 1;
|
|
103
103
|
let y = 0;
|
|
104
|
-
for (let i = s.length - 2; i >= 0;
|
|
104
|
+
for (let i = s.length - 2; i >= 0; i -= 1) {
|
|
105
105
|
[x, y] = [y, x - y * Math.floor(s[i].a / s[i].b)];
|
|
106
106
|
}
|
|
107
|
-
return (y % m + m) % m;
|
|
107
|
+
return ((y % m) + m) % m;
|
|
108
108
|
}
|
|
109
109
|
export function calculatePublicKeyLength() {
|
|
110
110
|
return 4 + 4 + 2048 / 8 + 2048 / 8 + 4;
|
|
@@ -131,13 +131,13 @@ export function calculatePublicKey(privateKey, output) {
|
|
|
131
131
|
const outputLength = calculatePublicKeyLength();
|
|
132
132
|
if (!output) {
|
|
133
133
|
output = new Uint8Array(outputLength);
|
|
134
|
-
outputType =
|
|
134
|
+
outputType = "Uint8Array";
|
|
135
135
|
}
|
|
136
136
|
else {
|
|
137
137
|
if (output.byteLength < outputLength) {
|
|
138
|
-
throw new Error(
|
|
138
|
+
throw new Error("output buffer is too small");
|
|
139
139
|
}
|
|
140
|
-
outputType =
|
|
140
|
+
outputType = "number";
|
|
141
141
|
}
|
|
142
142
|
const outputView = new DataView(output.buffer, output.byteOffset, output.byteLength);
|
|
143
143
|
let outputOffset = 0;
|
|
@@ -154,12 +154,12 @@ export function calculatePublicKey(privateKey, output) {
|
|
|
154
154
|
setBigUint(outputView, outputOffset, n, true);
|
|
155
155
|
outputOffset += 256;
|
|
156
156
|
// Calculate rr = (2^(rsa_size)) ^ 2 mod n
|
|
157
|
-
|
|
157
|
+
const rr = BigInt(2) ** BigInt(4096) % n;
|
|
158
158
|
outputOffset += setBigUint(outputView, outputOffset, rr, true);
|
|
159
159
|
// exponent
|
|
160
160
|
outputView.setUint32(outputOffset, 65537, true);
|
|
161
161
|
outputOffset += 4;
|
|
162
|
-
if (outputType ===
|
|
162
|
+
if (outputType === "Uint8Array") {
|
|
163
163
|
return output;
|
|
164
164
|
}
|
|
165
165
|
else {
|
|
@@ -181,7 +181,7 @@ export function powMod(base, exponent, modulus) {
|
|
|
181
181
|
base = base % modulus;
|
|
182
182
|
while (exponent > BigInt0) {
|
|
183
183
|
if (BigInt.asUintN(1, exponent) === BigInt1) {
|
|
184
|
-
r = r * base % modulus;
|
|
184
|
+
r = (r * base) % modulus;
|
|
185
185
|
}
|
|
186
186
|
exponent >>= BigInt1;
|
|
187
187
|
base = base ** BigInt2 % modulus;
|
|
@@ -195,12 +195,22 @@ export const ASN1_NULL = 0x05;
|
|
|
195
195
|
export const ASN1_OID = 0x06;
|
|
196
196
|
// PKCS#1 SHA-1 hash digest info
|
|
197
197
|
export const SHA1_DIGEST_INFO = new Uint8Array([
|
|
198
|
-
ASN1_SEQUENCE,
|
|
199
|
-
|
|
198
|
+
ASN1_SEQUENCE,
|
|
199
|
+
0x0d + SHA1_DIGEST_LENGTH,
|
|
200
|
+
ASN1_SEQUENCE,
|
|
201
|
+
0x09,
|
|
200
202
|
// SHA-1 (1 3 14 3 2 26)
|
|
201
|
-
ASN1_OID,
|
|
202
|
-
|
|
203
|
-
|
|
203
|
+
ASN1_OID,
|
|
204
|
+
0x05,
|
|
205
|
+
1 * 40 + 3,
|
|
206
|
+
14,
|
|
207
|
+
3,
|
|
208
|
+
2,
|
|
209
|
+
26,
|
|
210
|
+
ASN1_NULL,
|
|
211
|
+
0x00,
|
|
212
|
+
ASN1_OCTET_STRING,
|
|
213
|
+
SHA1_DIGEST_LENGTH,
|
|
204
214
|
]);
|
|
205
215
|
// SubtleCrypto.sign() will hash the given data and sign the hash
|
|
206
216
|
// But we don't need the hashing step
|
package/esm/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,GACf,MAAM,qDAAqD,CAAC;AAE7D,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACtB,QAAkB,EAClB,UAAkB,EAClB,MAAc;IAEd,IAAI,MAAM,GAAG,OAAO,CAAC;IAErB,mDAAmD;IACnD,mDAAmD;IAEnD,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACtD,MAAM,KAAK,QAAQ,CAAC;QACpB,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC;KACnB;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACtB,QAAkB,EAClB,UAAkB,EAClB,KAAa,EACb,YAAsB;IAEtB,MAAM,KAAK,GAAG,UAAU,CAAC;IAEzB,IAAI,YAAY,EAAE;QACd,OAAO,KAAK,GAAG,OAAO,EAAE;YACpB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAChD,UAAU,IAAI,CAAC,CAAC;YAChB,KAAK,KAAK,QAAQ,CAAC;SACtB;KACJ;SAAM;QACH,2DAA2D;QAC3D,4CAA4C;QAC5C,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,OAAO,KAAK,GAAG,OAAO,EAAE;YACpB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YAC5C,KAAK,KAAK,QAAQ,CAAC;SACtB;QAED,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACjD,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC;YAC3D,UAAU,IAAI,CAAC,CAAC;SACnB;KACJ;IAED,OAAO,UAAU,GAAG,KAAK,CAAC;AAC9B,CAAC;AAED,mCAAmC;AACnC,6BAA6B;AAC7B,+BAA+B;AAC/B,iDAAiD;AAEjD,+BAA+B;AAC/B,oCAAoC;AAEpC,cAAc;AACd,EAAE;AACF,uDAAuD;AACvD,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,4BAA4B;AAC5B,2CAA2C;AAC3C,6BAA6B;AAC7B,EAAE;AACF,oDAAoD;AACpD,+DAA+D;AAE/D,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC;AACtC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC;AAEtC,MAAM,UAAU,eAAe,CAAC,GAAe;IAC3C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;IACvE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,kDAAkD;AAClD,uCAAuC;AACvC,kEAAkE;AAClE,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAS;IAC3C,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACb,OAAO,GAAG,CAAC,CAAC,gBAAgB;KAC/B;IACD,eAAe;IACf,MAAM,CAAC,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,EAAE;QACN,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACpB;IACD,IAAI,CAAC,KAAK,CAAC,EAAE;QACT,OAAO,GAAG,CAAC,CAAC,0BAA0B;KACzC;IACD,mBAAmB;IACnB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QACvC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACvD;IACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,wBAAwB;IACpC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAOD,MAAM,UAAU,kBAAkB,CAC9B,UAAsB,EACtB,MAAmB;IAEnB,sDAAsD;IACtD,kJAAkJ;IAElJ,gCAAgC;IAChC,EAAE;IACF,IAAI;IACJ,2FAA2F;IAC3F,mFAAmF;IACnF,uFAAuF;IACvF,+BAA+B;IAC/B,sDAAsD;IACtD,2DAA2D;IAC3D,IAAI;IACJ,EAAE;IACF,yBAAyB;IACzB,iJAAiJ;IAEjJ,+BAA+B;IAC/B,MAAM,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAExC,IAAI,UAAmC,CAAC;IACxC,MAAM,YAAY,GAAG,wBAAwB,EAAE,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE;QACT,MAAM,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;QACtC,UAAU,GAAG,YAAY,CAAC;KAC7B;SAAM;QACH,IAAI,MAAM,CAAC,UAAU,GAAG,YAAY,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACjD;QAED,UAAU,GAAG,QAAQ,CAAC;KACzB;IAED,MAAM,UAAU,GAAG,IAAI,QAAQ,CAC3B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,CACpB,CAAC;IACF,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,uBAAuB;IACvB,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,YAAY,IAAI,CAAC,CAAC;IAElB,oBAAoB;IACpB,qCAAqC;IACrC,mCAAmC;IACnC,MAAM,KAAK,GAAG,UAAU,CACpB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1C,CAAC,IAAI,EAAE,CACV,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,YAAY,IAAI,CAAC,CAAC;IAElB,UAAU;IACV,UAAU,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9C,YAAY,IAAI,GAAG,CAAC;IAEpB,0CAA0C;IAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,YAAY,IAAI,UAAU,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAE/D,WAAW;IACX,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,YAAY,IAAI,CAAC,CAAC;IAElB,IAAI,UAAU,KAAK,YAAY,EAAE;QAC7B,OAAO,MAAM,CAAC;KACjB;SAAM;QACH,OAAO,YAAY,CAAC;KACvB;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAClB,IAAY,EACZ,QAAgB,EAChB,OAAe;IAEf,IAAI,OAAO,KAAK,OAAO,EAAE;QACrB,OAAO,OAAO,CAAC;KAClB;IAED,IAAI,CAAC,GAAG,OAAO,CAAC;IAChB,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC;IAEtB,OAAO,QAAQ,GAAG,OAAO,EAAE;QACvB,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,OAAO,EAAE;YACzC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;SAC5B;QAED,QAAQ,KAAK,OAAO,CAAC;QACrB,IAAI,GAAG,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC;KACpC;IAED,OAAO,CAAC,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAC9B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAE7B,gCAAgC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC;IAC3C,aAAa;IACb,IAAI,GAAG,kBAAkB;IACzB,aAAa;IACb,IAAI;IACJ,wBAAwB;IACxB,QAAQ;IACR,IAAI;IACJ,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,EAAE;IACF,CAAC;IACD,CAAC;IACD,EAAE;IACF,SAAS;IACT,IAAI;IACJ,iBAAiB;IACjB,kBAAkB;CACrB,CAAC,CAAC;AAEH,iEAAiE;AACjE,qCAAqC;AACrC,oDAAoD;AACpD,+CAA+C;AAC/C,+EAA+E;AAC/E,oDAAoD;AACpD,MAAM,UAAU,IAAI,CAAC,UAAsB,EAAE,IAAgB;IACzD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAE3C,iBAAiB;IACjB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,CAAC;IAEX,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,CAAC;IAEX,MAAM,UAAU,GACZ,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9D,OAAO,KAAK,GAAG,UAAU,EAAE;QACvB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC;KACd;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,CAAC;IAEX,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACpC,KAAK,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAEjC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAExB,aAAa;IACb,8BAA8B;IAC9B,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAErE,gCAAgC;IAChC,wCAAwC;IACxC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
package/esm/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
1
|
+
export * from "./adb.js";
|
|
2
|
+
export * from "./auth.js";
|
|
3
|
+
export * from "./backend.js";
|
|
4
|
+
export * from "./commands/index.js";
|
|
5
|
+
export * from "./crypto.js";
|
|
6
|
+
export * from "./features.js";
|
|
7
|
+
export * from "./packet.js";
|
|
8
|
+
export * from "./socket/index.js";
|
|
9
|
+
export * from "./utils/index.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
1
|
+
export * from "./adb.js";
|
|
2
|
+
export * from "./auth.js";
|
|
3
|
+
export * from "./backend.js";
|
|
4
|
+
export * from "./commands/index.js";
|
|
5
|
+
export * from "./crypto.js";
|
|
6
|
+
export * from "./features.js";
|
|
7
|
+
export * from "./packet.js";
|
|
8
|
+
export * from "./socket/index.js";
|
|
9
|
+
export * from "./utils/index.js";
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
package/esm/packet.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TransformStream } from
|
|
2
|
-
import Struct from
|
|
1
|
+
import { TransformStream } from "@yume-chan/stream-extra";
|
|
2
|
+
import Struct from "@yume-chan/struct";
|
|
3
3
|
export declare enum AdbCommand {
|
|
4
4
|
Auth = 1213486401,
|
|
5
5
|
Close = 1163086915,
|
|
@@ -15,8 +15,8 @@ export declare const AdbPacketHeader: Struct<{
|
|
|
15
15
|
payloadLength: number;
|
|
16
16
|
checksum: number;
|
|
17
17
|
magic: number;
|
|
18
|
-
}, never,
|
|
19
|
-
export
|
|
18
|
+
}, never, Record<never, never>, undefined>;
|
|
19
|
+
export type AdbPacketHeader = typeof AdbPacketHeader["TDeserializeResult"];
|
|
20
20
|
export declare const AdbPacket: Struct<{
|
|
21
21
|
command: number;
|
|
22
22
|
arg0: number;
|
|
@@ -25,8 +25,8 @@ export declare const AdbPacket: Struct<{
|
|
|
25
25
|
checksum: number;
|
|
26
26
|
magic: number;
|
|
27
27
|
payload: Uint8Array;
|
|
28
|
-
}, "payloadLength",
|
|
29
|
-
export
|
|
28
|
+
}, "payloadLength", Record<never, never>, undefined>;
|
|
29
|
+
export type AdbPacket = typeof AdbPacket["TDeserializeResult"];
|
|
30
30
|
/**
|
|
31
31
|
* `AdbPacketData` contains all the useful fields of `AdbPacket`.
|
|
32
32
|
*
|
|
@@ -37,8 +37,8 @@ export declare type AdbPacket = typeof AdbPacket['TDeserializeResult'];
|
|
|
37
37
|
* however, `AdbPacketDispatcher` will transform `AdbPacketData` to `AdbPacketInit` for you,
|
|
38
38
|
* so `AdbSocket#writable#write` only needs `AdbPacketData`.
|
|
39
39
|
*/
|
|
40
|
-
export
|
|
41
|
-
export
|
|
40
|
+
export type AdbPacketData = Omit<typeof AdbPacket["TInit"], "checksum" | "magic">;
|
|
41
|
+
export type AdbPacketInit = Omit<typeof AdbPacket["TInit"], "magic">;
|
|
42
42
|
export declare function calculateChecksum(payload: Uint8Array): number;
|
|
43
43
|
export declare function calculateChecksum(init: AdbPacketData): AdbPacketInit;
|
|
44
44
|
export declare class AdbPacketSerializeStream extends TransformStream<AdbPacketInit, Uint8Array> {
|
package/esm/packet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,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;;;;;;;
|
|
1
|
+
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,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;;;;;;;0CAMT,CAAC;AAEpB,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,oBAAoB,CAAC,CAAC;AAI3E,eAAO,MAAM,SAAS;;;;;;;;oDAEsC,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAE/D;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC5B,OAAO,SAAS,CAAC,OAAO,CAAC,EACzB,UAAU,GAAG,OAAO,CACvB,CAAC;AAGF,MAAM,MAAM,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;AActE,qBAAa,wBAAyB,SAAQ,eAAe,CACzD,aAAa,EACb,UAAU,CACb;;CAuBA"}
|
package/esm/packet.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TransformStream } from
|
|
2
|
-
import Struct from
|
|
1
|
+
import { TransformStream } from "@yume-chan/stream-extra";
|
|
2
|
+
import Struct from "@yume-chan/struct";
|
|
3
3
|
export var AdbCommand;
|
|
4
4
|
(function (AdbCommand) {
|
|
5
5
|
AdbCommand[AdbCommand["Auth"] = 1213486401] = "Auth";
|
|
@@ -10,15 +10,15 @@ export var AdbCommand;
|
|
|
10
10
|
AdbCommand[AdbCommand["Write"] = 1163154007] = "Write";
|
|
11
11
|
})(AdbCommand = AdbCommand || (AdbCommand = {}));
|
|
12
12
|
export const AdbPacketHeader = new Struct({ littleEndian: true })
|
|
13
|
-
.uint32(
|
|
14
|
-
.uint32(
|
|
15
|
-
.uint32(
|
|
16
|
-
.uint32(
|
|
17
|
-
.uint32(
|
|
18
|
-
.int32(
|
|
13
|
+
.uint32("command")
|
|
14
|
+
.uint32("arg0")
|
|
15
|
+
.uint32("arg1")
|
|
16
|
+
.uint32("payloadLength")
|
|
17
|
+
.uint32("checksum")
|
|
18
|
+
.int32("magic");
|
|
19
19
|
export const AdbPacket = new Struct({ littleEndian: true })
|
|
20
20
|
.fields(AdbPacketHeader)
|
|
21
|
-
.uint8Array(
|
|
21
|
+
.uint8Array("payload", { lengthField: "payloadLength" });
|
|
22
22
|
export function calculateChecksum(payload) {
|
|
23
23
|
if (payload instanceof Uint8Array) {
|
|
24
24
|
return payload.reduce((result, item) => result + item, 0);
|
|
@@ -31,10 +31,12 @@ export function calculateChecksum(payload) {
|
|
|
31
31
|
export class AdbPacketSerializeStream extends TransformStream {
|
|
32
32
|
constructor() {
|
|
33
33
|
super({
|
|
34
|
-
transform:
|
|
34
|
+
transform: (init, controller) => {
|
|
35
35
|
// This syntax is ugly, but I don't want to create a new object.
|
|
36
|
-
init.magic =
|
|
37
|
-
|
|
36
|
+
init.magic =
|
|
37
|
+
init.command ^ 0xffffffff;
|
|
38
|
+
init.payloadLength =
|
|
39
|
+
init.payload.byteLength;
|
|
38
40
|
controller.enqueue(AdbPacketHeader.serialize(init));
|
|
39
41
|
if (init.payload.byteLength) {
|
|
40
42
|
// Enqueue payload separately to avoid copying
|
package/esm/packet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,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,
|
|
1
|
+
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,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,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;AAwB7D,MAAM,UAAU,iBAAiB,CAC7B,OAAmC;IAEnC,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,CACnD,OAAO,CAAC,OAAO,CAClB,CAAC;QACF,OAAO,OAAwB,CAAC;KACnC;AACL,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,eAG7C;IACG;QACI,KAAK,CAAC;YACF,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;gBAC5B,gEAAgE;gBAC/D,IAAuC,CAAC,KAAK;oBAC1C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;gBAC7B,IAAuC,CAAC,aAAa;oBAClD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAE5B,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,8 +1,8 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type ReadableWritablePair } from
|
|
3
|
-
import { type ValueOrPromise } from
|
|
4
|
-
import { AdbCommand, type AdbPacketData, type AdbPacketInit } from
|
|
5
|
-
import { AdbSocket } from
|
|
1
|
+
import { type RemoveEventListener } from "@yume-chan/event";
|
|
2
|
+
import { type ReadableWritablePair } from "@yume-chan/stream-extra";
|
|
3
|
+
import { type ValueOrPromise } from "@yume-chan/struct";
|
|
4
|
+
import { AdbCommand, type AdbPacketData, type AdbPacketInit } from "../packet.js";
|
|
5
|
+
import { type AdbSocket } from "./socket.js";
|
|
6
6
|
export interface AdbPacketDispatcherOptions {
|
|
7
7
|
calculateChecksum: boolean;
|
|
8
8
|
/**
|
|
@@ -14,7 +14,7 @@ export interface AdbPacketDispatcherOptions {
|
|
|
14
14
|
appendNullToServiceString: boolean;
|
|
15
15
|
maxPayloadSize: number;
|
|
16
16
|
}
|
|
17
|
-
export
|
|
17
|
+
export type AdbIncomingSocketHandler = (socket: AdbSocket) => ValueOrPromise<boolean>;
|
|
18
18
|
export interface Closeable {
|
|
19
19
|
close(): ValueOrPromise<void>;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAGH,KAAK,oBAAoB,EAE5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EACH,UAAU,EAEV,KAAK,aAAa,EAClB,KAAK,aAAa,EACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,0BAA0B;IACvC,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,wBAAwB,GAAG,CACnC,MAAM,EAAE,SAAS,KAChB,cAAc,CAAC,OAAO,CAAC,CAAC;AAE7B,MAAM,WAAW,SAAS;IACtB,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,YAAW,SAAS;IAGjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAElE,OAAO,CAAC,OAAO,CAA8C;IAE7D,SAAgB,OAAO,EAAE,0BAA0B,CAAC;IAEpD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAA+B;IACpD,IAAW,YAAY,kBAEtB;IAED,OAAO,CAAC,uBAAuB,CAA4C;IAE3E,OAAO,CAAC,gBAAgB,CAAyB;gBAG7C,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,OAAO,EAAE,0BAA0B;IAuEvC,OAAO,CAAC,QAAQ;YAkBF,WAAW;IA6CzB;;;;OAIG;IACI,gBAAgB,CACnB,OAAO,EAAE,wBAAwB,GAClC,mBAAmB;YASR,UAAU;IA4BX,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsB7D,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;IAwCH,KAAK;IAgBlB,OAAO,CAAC,OAAO;CASlB"}
|
package/esm/socket/dispatcher.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AsyncOperationManager, PromiseResolver } from
|
|
2
|
-
import { AbortController, WritableStream } from
|
|
3
|
-
import { EMPTY_UINT8_ARRAY } from
|
|
4
|
-
import { AdbCommand, calculateChecksum } from
|
|
5
|
-
import { decodeUtf8, encodeUtf8 } from
|
|
6
|
-
import { AdbSocketController } from
|
|
1
|
+
import { AsyncOperationManager, PromiseResolver } from "@yume-chan/async";
|
|
2
|
+
import { AbortController, WritableStream, } from "@yume-chan/stream-extra";
|
|
3
|
+
import { EMPTY_UINT8_ARRAY } from "@yume-chan/struct";
|
|
4
|
+
import { AdbCommand, calculateChecksum, } from "../packet.js";
|
|
5
|
+
import { decodeUtf8, encodeUtf8 } from "../utils/index.js";
|
|
6
|
+
import { AdbSocketController } from "./socket.js";
|
|
7
7
|
/**
|
|
8
8
|
* The dispatcher is the "dumb" part of the connection handling logic.
|
|
9
9
|
*
|
|
@@ -26,7 +26,9 @@ export class AdbPacketDispatcher {
|
|
|
26
26
|
options;
|
|
27
27
|
_closed = false;
|
|
28
28
|
_disconnected = new PromiseResolver();
|
|
29
|
-
get disconnected() {
|
|
29
|
+
get disconnected() {
|
|
30
|
+
return this._disconnected.promise;
|
|
31
|
+
}
|
|
30
32
|
_incomingSocketHandlers = new Set();
|
|
31
33
|
_abortController = new AbortController();
|
|
32
34
|
constructor(connection, options) {
|
|
@@ -43,7 +45,9 @@ export class AdbPacketDispatcher {
|
|
|
43
45
|
break;
|
|
44
46
|
case AdbCommand.Write:
|
|
45
47
|
if (this.sockets.has(packet.arg1)) {
|
|
46
|
-
await this.sockets
|
|
48
|
+
await this.sockets
|
|
49
|
+
.get(packet.arg1)
|
|
50
|
+
.enqueue(packet.payload);
|
|
47
51
|
await this.sendPacket(AdbCommand.OK, packet.arg1, packet.arg0);
|
|
48
52
|
break;
|
|
49
53
|
}
|
|
@@ -71,9 +75,6 @@ export class AdbPacketDispatcher {
|
|
|
71
75
|
.then(() => {
|
|
72
76
|
this.dispose();
|
|
73
77
|
}, (e) => {
|
|
74
|
-
// https://github.com/MattiasBuelens/web-streams-polyfill/issues/115
|
|
75
|
-
// `e` is always `AbortError` (instead of what I give in `abortController.abort()`)
|
|
76
|
-
// so we can't check if `e` is a real error.
|
|
77
78
|
if (!this._closed) {
|
|
78
79
|
this._disconnected.reject(e);
|
|
79
80
|
}
|
|
@@ -94,12 +95,12 @@ export class AdbPacketDispatcher {
|
|
|
94
95
|
}
|
|
95
96
|
// Maybe the device is responding to a packet of last connection
|
|
96
97
|
// Tell the device to close the socket
|
|
97
|
-
this.sendPacket(AdbCommand.Close, packet.arg1, packet.arg0);
|
|
98
|
+
void this.sendPacket(AdbCommand.Close, packet.arg1, packet.arg0);
|
|
98
99
|
}
|
|
99
100
|
async handleClose(packet) {
|
|
100
101
|
// If the socket is still pending
|
|
101
102
|
if (packet.arg0 === 0 &&
|
|
102
|
-
this.initializers.reject(packet.arg1, new Error(
|
|
103
|
+
this.initializers.reject(packet.arg1, new Error("Socket open failed"))) {
|
|
103
104
|
// Device failed to create the socket
|
|
104
105
|
// (unknown service string, failed to execute command, etc.)
|
|
105
106
|
// it doesn't break the connection,
|
|
@@ -120,7 +121,7 @@ export class AdbPacketDispatcher {
|
|
|
120
121
|
if (!socket.closed) {
|
|
121
122
|
await this.sendPacket(AdbCommand.Close, packet.arg1, packet.arg0);
|
|
122
123
|
}
|
|
123
|
-
socket.dispose();
|
|
124
|
+
await socket.dispose();
|
|
124
125
|
this.sockets.delete(packet.arg1);
|
|
125
126
|
return;
|
|
126
127
|
}
|
|
@@ -166,7 +167,7 @@ export class AdbPacketDispatcher {
|
|
|
166
167
|
}
|
|
167
168
|
async createSocket(serviceString) {
|
|
168
169
|
if (this.options.appendNullToServiceString) {
|
|
169
|
-
serviceString +=
|
|
170
|
+
serviceString += "\0";
|
|
170
171
|
}
|
|
171
172
|
const [localId, initializer] = this.initializers.add();
|
|
172
173
|
await this.sendPacket(AdbCommand.Open, localId, 0, serviceString);
|
|
@@ -188,7 +189,7 @@ export class AdbPacketDispatcher {
|
|
|
188
189
|
init = packetOrCommand;
|
|
189
190
|
}
|
|
190
191
|
else {
|
|
191
|
-
if (typeof payload ===
|
|
192
|
+
if (typeof payload === "string") {
|
|
192
193
|
payload = encodeUtf8(payload);
|
|
193
194
|
}
|
|
194
195
|
init = {
|
|
@@ -200,7 +201,7 @@ export class AdbPacketDispatcher {
|
|
|
200
201
|
}
|
|
201
202
|
if (init.payload &&
|
|
202
203
|
init.payload.byteLength > this.options.maxPayloadSize) {
|
|
203
|
-
throw new Error(
|
|
204
|
+
throw new Error("payload too large");
|
|
204
205
|
}
|
|
205
206
|
if (this.options.calculateChecksum) {
|
|
206
207
|
calculateChecksum(init);
|
|
@@ -213,7 +214,7 @@ export class AdbPacketDispatcher {
|
|
|
213
214
|
}
|
|
214
215
|
async close() {
|
|
215
216
|
// Send `CLSE` packets for all sockets
|
|
216
|
-
await Promise.all(Array.from(this.sockets.values(), socket => socket.close()));
|
|
217
|
+
await Promise.all(Array.from(this.sockets.values(), (socket) => socket.close()));
|
|
217
218
|
// Stop receiving
|
|
218
219
|
// It's possible that we haven't received all `CLSE` confirm packets,
|
|
219
220
|
// but it doesn't matter, the next connection can cope with them.
|
|
@@ -224,7 +225,9 @@ export class AdbPacketDispatcher {
|
|
|
224
225
|
}
|
|
225
226
|
dispose() {
|
|
226
227
|
for (const socket of this.sockets.values()) {
|
|
227
|
-
socket.dispose()
|
|
228
|
+
socket.dispose().catch((e) => {
|
|
229
|
+
void e;
|
|
230
|
+
});
|
|
228
231
|
}
|
|
229
232
|
this._disconnected.resolve();
|
|
230
233
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"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"}
|
package/esm/socket/socket.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { WritableStream, type ReadableStream, type ReadableWritablePair } from
|
|
3
|
-
import type
|
|
1
|
+
import { type Disposable } from "@yume-chan/event";
|
|
2
|
+
import { WritableStream, type ReadableStream, type ReadableWritablePair } from "@yume-chan/stream-extra";
|
|
3
|
+
import { type AdbPacketDispatcher, type Closeable } from "./dispatcher.js";
|
|
4
4
|
export interface AdbSocketInfo {
|
|
5
5
|
localId: number;
|
|
6
6
|
remoteId: number;
|
|
@@ -36,7 +36,7 @@ export declare class AdbSocketController implements AdbSocketInfo, ReadableWrita
|
|
|
36
36
|
enqueue(packet: Uint8Array): Promise<void>;
|
|
37
37
|
ack(): void;
|
|
38
38
|
close(): Promise<void>;
|
|
39
|
-
dispose(): void
|
|
39
|
+
dispose(): Promise<void>;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
42
|
* A duplex stream representing a socket to ADB daemon.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAIH,cAAc,EAGd,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC5B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,4BAA6B,SAAQ,aAAa;IAC/D,UAAU,EAAE,mBAAmB,CAAC;IAEhC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,qBAAa,mBACT,YACI,aAAa,EACb,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,EAC5C,SAAS,EACT,UAAU;IAEd,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD,SAAgB,OAAO,EAAG,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAG,MAAM,CAAC;IAClC,SAAgB,YAAY,EAAG,OAAO,CAAC;IACvC,SAAgB,aAAa,EAAG,MAAM,CAAC;IAEvC,OAAO,CAAC,OAAO,CAA8C;IAE7D,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,mBAAmB,CAA4C;IACvE,IAAW,QAAQ,+BAElB;IAED,OAAO,CAAC,aAAa,CAAoC;IACzD,SAAgB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAErD,OAAO,CAAC,OAAO,CAAS;IACxB;;;;OAIG;IACH,IAAW,MAAM,YAEhB;IAED,OAAO,CAAC,OAAO,CAAY;IAC3B,IAAW,MAAM,cAEhB;gBAEkB,OAAO,EAAE,4BAA4B;IA8D3C,OAAO,CAAC,MAAM,EAAE,UAAU;IAUhC,GAAG;IAIG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO;CAGjB;AAED;;;;;;;GAOG;AACH,qBAAa,SACT,YAAW,aAAa,EAAE,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC;IAEtE,OAAO,CAAC,WAAW,CAAsB;IAEzC,IAAW,OAAO,IAAI,MAAM,CAE3B;IACD,IAAW,QAAQ,IAAI,MAAM,CAE5B;IACD,IAAW,YAAY,IAAI,OAAO,CAEjC;IACD,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEhD;IACD,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEhD;gBAEkB,UAAU,EAAE,mBAAmB;IAI3C,KAAK;CAGf"}
|
package/esm/socket/socket.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PromiseResolver } from
|
|
2
|
-
import { ChunkStream, DuplexStreamFactory,
|
|
3
|
-
import { AdbCommand } from
|
|
1
|
+
import { PromiseResolver } from "@yume-chan/async";
|
|
2
|
+
import { ChunkStream, DuplexStreamFactory, PushReadableStream, WritableStream, pipeFrom, } from "@yume-chan/stream-extra";
|
|
3
|
+
import { AdbCommand } from "../packet.js";
|
|
4
4
|
export class AdbSocketController {
|
|
5
5
|
dispatcher;
|
|
6
6
|
localId;
|
|
@@ -10,7 +10,9 @@ export class AdbSocketController {
|
|
|
10
10
|
_duplex;
|
|
11
11
|
_readable;
|
|
12
12
|
_readableController;
|
|
13
|
-
get readable() {
|
|
13
|
+
get readable() {
|
|
14
|
+
return this._readable;
|
|
15
|
+
}
|
|
14
16
|
_writePromise;
|
|
15
17
|
writable;
|
|
16
18
|
_closed = false;
|
|
@@ -19,9 +21,13 @@ export class AdbSocketController {
|
|
|
19
21
|
*
|
|
20
22
|
* It's only used by dispatcher to avoid sending another `CLSE` packet to remote.
|
|
21
23
|
*/
|
|
22
|
-
get closed() {
|
|
24
|
+
get closed() {
|
|
25
|
+
return this._closed;
|
|
26
|
+
}
|
|
23
27
|
_socket;
|
|
24
|
-
get socket() {
|
|
28
|
+
get socket() {
|
|
29
|
+
return this._socket;
|
|
30
|
+
}
|
|
25
31
|
constructor(options) {
|
|
26
32
|
Object.assign(this, options);
|
|
27
33
|
// Check this image to help you understand the stream graph
|
|
@@ -36,14 +42,16 @@ export class AdbSocketController {
|
|
|
36
42
|
},
|
|
37
43
|
dispose: () => {
|
|
38
44
|
// Error out the pending writes
|
|
39
|
-
this._writePromise?.reject(new Error(
|
|
45
|
+
this._writePromise?.reject(new Error("Socket closed"));
|
|
40
46
|
},
|
|
41
47
|
});
|
|
42
|
-
this._readable = this._duplex.wrapReadable(new PushReadableStream(controller => {
|
|
48
|
+
this._readable = this._duplex.wrapReadable(new PushReadableStream((controller) => {
|
|
43
49
|
this._readableController = controller;
|
|
44
50
|
}, {
|
|
45
51
|
highWaterMark: options.highWaterMark ?? 16 * 1024,
|
|
46
|
-
size(chunk) {
|
|
52
|
+
size(chunk) {
|
|
53
|
+
return chunk.byteLength;
|
|
54
|
+
},
|
|
47
55
|
}));
|
|
48
56
|
this.writable = pipeFrom(this._duplex.createWritable(new WritableStream({
|
|
49
57
|
write: async (chunk) => {
|
|
@@ -51,7 +59,7 @@ export class AdbSocketController {
|
|
|
51
59
|
this._writePromise = new PromiseResolver();
|
|
52
60
|
await this.dispatcher.sendPacket(AdbCommand.Write, this.localId, this.remoteId, chunk);
|
|
53
61
|
await this._writePromise.promise;
|
|
54
|
-
}
|
|
62
|
+
},
|
|
55
63
|
})), new ChunkStream(this.dispatcher.options.maxPayloadSize));
|
|
56
64
|
this._socket = new AdbSocket(this);
|
|
57
65
|
}
|
|
@@ -70,7 +78,7 @@ export class AdbSocketController {
|
|
|
70
78
|
await this._duplex.close();
|
|
71
79
|
}
|
|
72
80
|
dispose() {
|
|
73
|
-
this._duplex.dispose();
|
|
81
|
+
return this._duplex.dispose();
|
|
74
82
|
}
|
|
75
83
|
}
|
|
76
84
|
/**
|
|
@@ -83,12 +91,24 @@ export class AdbSocketController {
|
|
|
83
91
|
*/
|
|
84
92
|
export class AdbSocket {
|
|
85
93
|
_controller;
|
|
86
|
-
get localId() {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
get
|
|
90
|
-
|
|
91
|
-
|
|
94
|
+
get localId() {
|
|
95
|
+
return this._controller.localId;
|
|
96
|
+
}
|
|
97
|
+
get remoteId() {
|
|
98
|
+
return this._controller.remoteId;
|
|
99
|
+
}
|
|
100
|
+
get localCreated() {
|
|
101
|
+
return this._controller.localCreated;
|
|
102
|
+
}
|
|
103
|
+
get serviceString() {
|
|
104
|
+
return this._controller.serviceString;
|
|
105
|
+
}
|
|
106
|
+
get readable() {
|
|
107
|
+
return this._controller.readable;
|
|
108
|
+
}
|
|
109
|
+
get writable() {
|
|
110
|
+
return this._controller.writable;
|
|
111
|
+
}
|
|
92
112
|
constructor(controller) {
|
|
93
113
|
this._controller = controller;
|
|
94
114
|
}
|