@yume-chan/adb 0.0.23 → 1.0.0
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.md +51 -2
- package/LICENSE +1 -1
- package/README.md +4 -1
- package/esm/adb.d.ts +15 -9
- package/esm/adb.d.ts.map +1 -1
- package/esm/adb.js +5 -2
- package/esm/adb.js.map +1 -1
- package/esm/banner.d.ts +7 -6
- package/esm/banner.d.ts.map +1 -1
- package/esm/banner.js +6 -7
- package/esm/banner.js.map +1 -1
- package/esm/commands/framebuffer.d.ts +63 -34
- package/esm/commands/framebuffer.d.ts.map +1 -1
- package/esm/commands/framebuffer.js +35 -33
- package/esm/commands/framebuffer.js.map +1 -1
- package/esm/commands/power.d.ts.map +1 -1
- package/esm/commands/power.js +6 -5
- package/esm/commands/power.js.map +1 -1
- package/esm/commands/reverse.d.ts +12 -12
- package/esm/commands/reverse.d.ts.map +1 -1
- package/esm/commands/reverse.js +60 -39
- package/esm/commands/reverse.js.map +1 -1
- package/esm/commands/subprocess/command.js +3 -3
- package/esm/commands/subprocess/command.js.map +1 -1
- package/esm/commands/subprocess/protocols/none.d.ts +2 -2
- package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/none.js +3 -5
- package/esm/commands/subprocess/protocols/none.js.map +1 -1
- package/esm/commands/subprocess/protocols/shell.d.ts +22 -14
- package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/shell.js +21 -27
- package/esm/commands/subprocess/protocols/shell.js.map +1 -1
- package/esm/commands/subprocess/protocols/types.d.ts +8 -8
- package/esm/commands/subprocess/protocols/types.d.ts.map +1 -1
- package/esm/commands/sync/list.d.ts +49 -30
- package/esm/commands/sync/list.d.ts.map +1 -1
- package/esm/commands/sync/list.js +9 -11
- package/esm/commands/sync/list.js.map +1 -1
- package/esm/commands/sync/pull.d.ts +7 -9
- package/esm/commands/sync/pull.d.ts.map +1 -1
- package/esm/commands/sync/pull.js +4 -6
- package/esm/commands/sync/pull.js.map +1 -1
- package/esm/commands/sync/push.d.ts +25 -22
- package/esm/commands/sync/push.d.ts.map +1 -1
- package/esm/commands/sync/push.js +14 -21
- package/esm/commands/sync/push.js.map +1 -1
- package/esm/commands/sync/request.d.ts +20 -23
- package/esm/commands/sync/request.d.ts.map +1 -1
- package/esm/commands/sync/request.js +26 -35
- package/esm/commands/sync/request.js.map +1 -1
- package/esm/commands/sync/response.d.ts +25 -19
- package/esm/commands/sync/response.d.ts.map +1 -1
- package/esm/commands/sync/response.js +49 -26
- package/esm/commands/sync/response.js.map +1 -1
- package/esm/commands/sync/socket.d.ts +3 -3
- package/esm/commands/sync/socket.d.ts.map +1 -1
- package/esm/commands/sync/socket.js +10 -5
- package/esm/commands/sync/socket.js.map +1 -1
- package/esm/commands/sync/stat.d.ts +75 -54
- package/esm/commands/sync/stat.d.ts.map +1 -1
- package/esm/commands/sync/stat.js +73 -69
- package/esm/commands/sync/stat.js.map +1 -1
- package/esm/commands/sync/sync.d.ts +18 -17
- package/esm/commands/sync/sync.d.ts.map +1 -1
- package/esm/commands/sync/sync.js +8 -8
- package/esm/commands/sync/sync.js.map +1 -1
- package/esm/commands/tcpip.d.ts +0 -1
- package/esm/commands/tcpip.d.ts.map +1 -1
- package/esm/commands/tcpip.js +9 -9
- package/esm/commands/tcpip.js.map +1 -1
- package/esm/daemon/auth.d.ts +8 -7
- package/esm/daemon/auth.d.ts.map +1 -1
- package/esm/daemon/auth.js +8 -9
- package/esm/daemon/auth.js.map +1 -1
- package/esm/daemon/crypto.d.ts +4 -3
- package/esm/daemon/crypto.d.ts.map +1 -1
- package/esm/daemon/crypto.js +57 -49
- package/esm/daemon/crypto.js.map +1 -1
- package/esm/daemon/device.d.ts +2 -2
- package/esm/daemon/device.d.ts.map +1 -1
- package/esm/daemon/dispatcher.d.ts +35 -10
- package/esm/daemon/dispatcher.d.ts.map +1 -1
- package/esm/daemon/dispatcher.js +46 -33
- package/esm/daemon/dispatcher.js.map +1 -1
- package/esm/daemon/packet.d.ts +48 -32
- package/esm/daemon/packet.d.ts.map +1 -1
- package/esm/daemon/packet.js +36 -32
- package/esm/daemon/packet.js.map +1 -1
- package/esm/daemon/socket.d.ts +11 -11
- package/esm/daemon/socket.d.ts.map +1 -1
- package/esm/daemon/socket.js +19 -40
- package/esm/daemon/socket.js.map +1 -1
- package/esm/daemon/transport.d.ts +60 -20
- package/esm/daemon/transport.d.ts.map +1 -1
- package/esm/daemon/transport.js +12 -15
- package/esm/daemon/transport.js.map +1 -1
- package/esm/device-observer.d.ts +10 -0
- package/esm/device-observer.d.ts.map +1 -0
- package/esm/device-observer.js +2 -0
- package/esm/device-observer.js.map +1 -0
- package/esm/features.d.ts +12 -11
- package/esm/features.d.ts.map +1 -1
- package/esm/features.js +11 -12
- package/esm/features.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/server/client.d.ts +140 -50
- package/esm/server/client.d.ts.map +1 -1
- package/esm/server/client.js +396 -180
- package/esm/server/client.js.map +1 -1
- package/esm/server/transport.d.ts +2 -2
- package/esm/server/transport.d.ts.map +1 -1
- package/esm/server/transport.js +4 -6
- package/esm/server/transport.js.map +1 -1
- package/esm/utils/base64.d.ts.map +1 -1
- package/esm/utils/base64.js +52 -38
- package/esm/utils/base64.js.map +1 -1
- package/esm/utils/hex.d.ts +1 -1
- package/esm/utils/hex.d.ts.map +1 -1
- package/esm/utils/hex.js +12 -14
- package/esm/utils/hex.js.map +1 -1
- package/esm/utils/index.d.ts +1 -1
- package/esm/utils/index.d.ts.map +1 -1
- package/esm/utils/index.js +1 -1
- package/esm/utils/index.js.map +1 -1
- package/esm/utils/no-op.d.ts.map +1 -1
- package/esm/utils/no-op.js +1 -0
- package/esm/utils/no-op.js.map +1 -1
- package/esm/utils/sequence-equal.d.ts +2 -0
- package/esm/utils/sequence-equal.d.ts.map +1 -0
- package/esm/utils/sequence-equal.js +12 -0
- package/esm/utils/sequence-equal.js.map +1 -0
- package/package.json +14 -19
- package/src/adb.ts +20 -11
- package/src/banner.ts +8 -6
- package/src/commands/framebuffer.ts +44 -35
- package/src/commands/power.ts +7 -5
- package/src/commands/reverse.ts +78 -47
- package/src/commands/subprocess/command.ts +3 -3
- package/src/commands/subprocess/protocols/none.ts +5 -7
- package/src/commands/subprocess/protocols/shell.ts +33 -35
- package/src/commands/subprocess/protocols/types.ts +8 -8
- package/src/commands/sync/list.ts +20 -15
- package/src/commands/sync/pull.ts +9 -8
- package/src/commands/sync/push.ts +25 -24
- package/src/commands/sync/request.ts +37 -38
- package/src/commands/sync/response.ts +63 -37
- package/src/commands/sync/socket.ts +13 -8
- package/src/commands/sync/stat.ts +93 -73
- package/src/commands/sync/sync.ts +12 -11
- package/src/commands/tcpip.ts +9 -9
- package/src/daemon/auth.ts +12 -10
- package/src/daemon/crypto.ts +66 -55
- package/src/daemon/device.ts +2 -2
- package/src/daemon/dispatcher.ts +106 -44
- package/src/daemon/packet.ts +57 -38
- package/src/daemon/socket.ts +30 -50
- package/src/daemon/transport.ts +98 -50
- package/src/device-observer.ts +10 -0
- package/src/features.ts +13 -11
- package/src/index.ts +1 -0
- package/src/server/client.ts +505 -268
- package/src/server/transport.ts +7 -9
- package/src/utils/base64.ts +59 -40
- package/src/utils/hex.ts +16 -14
- package/src/utils/index.ts +1 -1
- package/src/utils/no-op.ts +1 -0
- package/src/utils/sequence-equal.ts +13 -0
- package/tsconfig.build.json +1 -12
- package/tsconfig.build.tsbuildinfo +1 -1
- package/CHANGELOG.json +0 -265
- package/esm/utils/conditional-variable.d.ts +0 -8
- package/esm/utils/conditional-variable.d.ts.map +0 -1
- package/esm/utils/conditional-variable.js +0 -34
- package/esm/utils/conditional-variable.js.map +0 -1
- package/src/utils/conditional-variable.ts +0 -45
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { string, struct, u32 } from "@yume-chan/struct";
|
|
2
2
|
import { AdbSyncRequestId, adbSyncWriteRequest } from "./request.js";
|
|
3
3
|
import { AdbSyncResponseId, adbSyncReadResponses } from "./response.js";
|
|
4
4
|
import { AdbSyncLstatResponse, AdbSyncStatErrorCode, AdbSyncStatResponse, } from "./stat.js";
|
|
5
|
-
export const AdbSyncEntryResponse =
|
|
6
|
-
.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
.string("name", { lengthField: "nameLength" })
|
|
14
|
-
.extra({ id: AdbSyncResponseId.Entry2 });
|
|
5
|
+
export const AdbSyncEntryResponse = /* #__PURE__ */ (() => struct({
|
|
6
|
+
...AdbSyncLstatResponse.fields,
|
|
7
|
+
name: string(u32),
|
|
8
|
+
}, { littleEndian: true, extra: AdbSyncLstatResponse.extra }))();
|
|
9
|
+
export const AdbSyncEntry2Response = /* #__PURE__ */ (() => struct({
|
|
10
|
+
...AdbSyncStatResponse.fields,
|
|
11
|
+
name: string(u32),
|
|
12
|
+
}, { littleEndian: true, extra: AdbSyncStatResponse.extra }))();
|
|
15
13
|
export async function* adbSyncOpenDirV2(socket, path) {
|
|
16
14
|
const locked = await socket.lock();
|
|
17
15
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/sync/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/sync/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import type { ReadableStream } from "@yume-chan/stream-extra";
|
|
2
|
-
import
|
|
3
|
-
import { AdbSyncResponseId } from "./response.js";
|
|
2
|
+
import type { StructValue } from "@yume-chan/struct";
|
|
4
3
|
import type { AdbSyncSocket } from "./socket.js";
|
|
5
|
-
export declare const AdbSyncDataResponse: Struct<{
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export type AdbSyncDataResponse = (typeof AdbSyncDataResponse)["TDeserializeResult"];
|
|
4
|
+
export declare const AdbSyncDataResponse: import("@yume-chan/struct").Struct<{
|
|
5
|
+
data: import("@yume-chan/struct").Field<Uint8Array<ArrayBufferLike>, never, never>;
|
|
6
|
+
}, {}, import("@yume-chan/struct").FieldsType<{
|
|
7
|
+
data: import("@yume-chan/struct").Field<Uint8Array<ArrayBufferLike>, never, never>;
|
|
8
|
+
}>>;
|
|
9
|
+
export type AdbSyncDataResponse = StructValue<typeof AdbSyncDataResponse>;
|
|
12
10
|
export declare function adbSyncPullGenerator(socket: AdbSyncSocket, path: string): AsyncGenerator<Uint8Array, void, void>;
|
|
13
11
|
export declare function adbSyncPull(socket: AdbSyncSocket, path: string): ReadableStream<Uint8Array>;
|
|
14
12
|
//# sourceMappingURL=pull.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/pull.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/pull.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,mBAAmB;;;;GAG/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE1E,wBAAuB,oBAAoB,CACvC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACb,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CA6BxC;AAED,wBAAgB,WAAW,CACvB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACb,cAAc,CAAC,UAAU,CAAC,CAO5B"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { PushReadableStream } from "@yume-chan/stream-extra";
|
|
2
|
-
import
|
|
2
|
+
import { buffer, struct, u32 } from "@yume-chan/struct";
|
|
3
3
|
import { AdbSyncRequestId, adbSyncWriteRequest } from "./request.js";
|
|
4
|
-
import {
|
|
5
|
-
export const AdbSyncDataResponse =
|
|
6
|
-
.uint32("dataLength")
|
|
7
|
-
.uint8Array("data", { lengthField: "dataLength" })
|
|
8
|
-
.extra({ id: AdbSyncResponseId.Data });
|
|
4
|
+
import { adbSyncReadResponses, AdbSyncResponseId } from "./response.js";
|
|
5
|
+
export const AdbSyncDataResponse = struct({ data: buffer(u32) }, { littleEndian: true });
|
|
9
6
|
export async function* adbSyncPullGenerator(socket, path) {
|
|
10
7
|
const locked = await socket.lock();
|
|
11
8
|
let done = false;
|
|
@@ -31,6 +28,7 @@ export async function* adbSyncPullGenerator(socket, path) {
|
|
|
31
28
|
}
|
|
32
29
|
}
|
|
33
30
|
export function adbSyncPull(socket, path) {
|
|
31
|
+
// TODO: use `ReadableStream.from` when it's supported
|
|
34
32
|
return new PushReadableStream(async (controller) => {
|
|
35
33
|
for await (const data of adbSyncPullGenerator(socket, path)) {
|
|
36
34
|
await controller.enqueue(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/commands/sync/pull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/commands/sync/pull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CACrC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EACrB,EAAE,YAAY,EAAE,IAAI,EAAE,CACzB,CAAC;AAIF,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,oBAAoB,CACvC,MAAqB,EACrB,IAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,CAAC;QACD,MAAM,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,oBAAoB,CAC3C,MAAM,EACN,iBAAiB,CAAC,IAAI,EACtB,mBAAmB,CACtB,EAAE,CAAC;YACA,MAAM,MAAM,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,IAAI,GAAG,IAAI,CAAC;QACZ,MAAM,CAAC,CAAC;IACZ,CAAC;YAAS,CAAC;QACP,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,4DAA4D;YAC5D,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,oBAAoB,CAC3C,MAAM,EACN,iBAAiB,CAAC,IAAI,EACtB,mBAAmB,CACtB,EAAE,CAAC;gBACA,KAAK,MAAM,CAAC;YAChB,CAAC;QACL,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CACvB,MAAqB,EACrB,IAAY;IAEZ,sDAAsD;IACtD,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QAC/C,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,38 +1,37 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
import { AdbSyncRequestId } from "./request.js";
|
|
1
|
+
import type { ReadableStream } from "@yume-chan/stream-extra";
|
|
2
|
+
import { MaybeConsumable } from "@yume-chan/stream-extra";
|
|
4
3
|
import type { AdbSyncSocket } from "./socket.js";
|
|
5
4
|
import { LinuxFileType } from "./stat.js";
|
|
6
5
|
export declare const ADB_SYNC_MAX_PACKET_SIZE: number;
|
|
7
6
|
export interface AdbSyncPushV1Options {
|
|
8
7
|
socket: AdbSyncSocket;
|
|
9
8
|
filename: string;
|
|
10
|
-
file: ReadableStream<
|
|
9
|
+
file: ReadableStream<MaybeConsumable<Uint8Array>>;
|
|
11
10
|
type?: LinuxFileType;
|
|
12
11
|
permission?: number;
|
|
13
12
|
mtime?: number;
|
|
14
13
|
packetSize?: number;
|
|
15
14
|
}
|
|
16
|
-
export declare const AdbSyncOkResponse: Struct<{
|
|
17
|
-
unused: number
|
|
18
|
-
},
|
|
15
|
+
export declare const AdbSyncOkResponse: import("@yume-chan/struct").Struct<{
|
|
16
|
+
unused: import("@yume-chan/struct").NumberField<number>;
|
|
17
|
+
}, {}, import("@yume-chan/struct").FieldsType<{
|
|
18
|
+
unused: import("@yume-chan/struct").NumberField<number>;
|
|
19
|
+
}>>;
|
|
19
20
|
export declare function adbSyncPushV1({ socket, filename, file, type, permission, mtime, packetSize, }: AdbSyncPushV1Options): Promise<void>;
|
|
20
|
-
export declare
|
|
21
|
-
None
|
|
22
|
-
Brotli
|
|
21
|
+
export declare const AdbSyncSendV2Flags: {
|
|
22
|
+
readonly None: 0;
|
|
23
|
+
readonly Brotli: 1;
|
|
23
24
|
/**
|
|
24
25
|
* 2
|
|
25
26
|
*/
|
|
26
|
-
Lz4
|
|
27
|
+
readonly Lz4: number;
|
|
27
28
|
/**
|
|
28
29
|
* 4
|
|
29
30
|
*/
|
|
30
|
-
Zstd
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
DryRun = 2147483648
|
|
35
|
-
}
|
|
31
|
+
readonly Zstd: number;
|
|
32
|
+
readonly DryRun: 2147483648;
|
|
33
|
+
};
|
|
34
|
+
export type AdbSyncSendV2Flags = (typeof AdbSyncSendV2Flags)[keyof typeof AdbSyncSendV2Flags];
|
|
36
35
|
export interface AdbSyncPushV2Options extends AdbSyncPushV1Options {
|
|
37
36
|
/**
|
|
38
37
|
* Don't write the file to disk. Requires the `sendrecv_v2` feature.
|
|
@@ -42,11 +41,15 @@ export interface AdbSyncPushV2Options extends AdbSyncPushV1Options {
|
|
|
42
41
|
*/
|
|
43
42
|
dryRun?: boolean;
|
|
44
43
|
}
|
|
45
|
-
export declare const AdbSyncSendV2Request: Struct<{
|
|
46
|
-
id:
|
|
47
|
-
mode: number
|
|
48
|
-
flags:
|
|
49
|
-
},
|
|
44
|
+
export declare const AdbSyncSendV2Request: import("@yume-chan/struct").Struct<{
|
|
45
|
+
id: import("@yume-chan/struct").NumberField<number>;
|
|
46
|
+
mode: import("@yume-chan/struct").NumberField<number>;
|
|
47
|
+
flags: import("@yume-chan/struct").Field<number, never, never>;
|
|
48
|
+
}, {}, import("@yume-chan/struct").FieldsType<{
|
|
49
|
+
id: import("@yume-chan/struct").NumberField<number>;
|
|
50
|
+
mode: import("@yume-chan/struct").NumberField<number>;
|
|
51
|
+
flags: import("@yume-chan/struct").Field<number, never, never>;
|
|
52
|
+
}>>;
|
|
50
53
|
export declare function adbSyncPushV2({ socket, filename, file, type, permission, mtime, packetSize, dryRun, }: AdbSyncPushV2Options): Promise<void>;
|
|
51
54
|
export interface AdbSyncPushOptions extends AdbSyncPushV2Options {
|
|
52
55
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAGH,eAAe,EAClB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,eAAO,MAAM,wBAAwB,QAAY,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB;;;;GAG7B,CAAC;AAuCF,wBAAsB,aAAa,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,IAAyB,EACzB,UAAkB,EAClB,KAA+B,EAC/B,UAAqC,GACxC,EAAE,oBAAoB,iBAUtB;AAED,eAAO,MAAM,kBAAkB;;;IAG3B;;OAEG;;IAEH;;OAEG;;;CAGG,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAC1B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAEjE,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAC9D;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,oBAAoB;;;;;;;;GAGhC,CAAC;AAEF,wBAAsB,aAAa,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,IAAyB,EACzB,UAAkB,EAClB,KAA+B,EAC/B,UAAqC,EACrC,MAAc,GACjB,EAAE,oBAAoB,iBAsBtB;AAED,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC5D;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,iBAUtD"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { AbortController,
|
|
2
|
-
import
|
|
1
|
+
import { AbortController, DistributionStream, MaybeConsumable, } from "@yume-chan/stream-extra";
|
|
2
|
+
import { struct, u32 } from "@yume-chan/struct";
|
|
3
3
|
import { NOOP } from "../../utils/index.js";
|
|
4
4
|
import { AdbSyncRequestId, adbSyncWriteRequest } from "./request.js";
|
|
5
5
|
import { AdbSyncResponseId, adbSyncReadResponse } from "./response.js";
|
|
6
6
|
import { LinuxFileType } from "./stat.js";
|
|
7
7
|
export const ADB_SYNC_MAX_PACKET_SIZE = 64 * 1024;
|
|
8
|
-
export const AdbSyncOkResponse =
|
|
8
|
+
export const AdbSyncOkResponse = struct({ unused: u32 }, { littleEndian: true });
|
|
9
9
|
async function pipeFileData(locked, file, packetSize, mtime) {
|
|
10
10
|
// Read and write in parallel,
|
|
11
11
|
// allow error response to abort the write.
|
|
12
12
|
const abortController = new AbortController();
|
|
13
13
|
file.pipeThrough(new DistributionStream(packetSize, true))
|
|
14
|
-
.pipeTo(new
|
|
15
|
-
write
|
|
16
|
-
|
|
14
|
+
.pipeTo(new MaybeConsumable.WritableStream({
|
|
15
|
+
write(chunk) {
|
|
16
|
+
return adbSyncWriteRequest(locked, AdbSyncRequestId.Data, chunk);
|
|
17
17
|
},
|
|
18
18
|
}), { signal: abortController.signal })
|
|
19
19
|
.then(async () => {
|
|
@@ -37,27 +37,20 @@ export async function adbSyncPushV1({ socket, filename, file, type = LinuxFileTy
|
|
|
37
37
|
locked.release();
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
export
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
AdbSyncSendV2Flags[AdbSyncSendV2Flags["Brotli"] = 1] = "Brotli";
|
|
40
|
+
export const AdbSyncSendV2Flags = {
|
|
41
|
+
None: 0,
|
|
42
|
+
Brotli: 1,
|
|
44
43
|
/**
|
|
45
44
|
* 2
|
|
46
45
|
*/
|
|
47
|
-
|
|
46
|
+
Lz4: 1 << 1,
|
|
48
47
|
/**
|
|
49
48
|
* 4
|
|
50
49
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
AdbSyncSendV2Flags[AdbSyncSendV2Flags["DryRun"] = 2147483648] = "DryRun";
|
|
56
|
-
})(AdbSyncSendV2Flags || (AdbSyncSendV2Flags = {}));
|
|
57
|
-
export const AdbSyncSendV2Request = new Struct({ littleEndian: true })
|
|
58
|
-
.uint32("id", placeholder())
|
|
59
|
-
.uint32("mode")
|
|
60
|
-
.uint32("flags", placeholder());
|
|
50
|
+
Zstd: 1 << 2,
|
|
51
|
+
DryRun: 0x80000000,
|
|
52
|
+
};
|
|
53
|
+
export const AdbSyncSendV2Request = struct({ id: u32, mode: u32, flags: u32() }, { littleEndian: true });
|
|
61
54
|
export async function adbSyncPushV2({ socket, filename, file, type = LinuxFileType.File, permission = 0o666, mtime = (Date.now() / 1000) | 0, packetSize = ADB_SYNC_MAX_PACKET_SIZE, dryRun = false, }) {
|
|
62
55
|
const locked = await socket.lock();
|
|
63
56
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/commands/sync/push.ts"],"names":[],"mappings":"AACA,OAAO,EACH,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/commands/sync/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
arg: number;
|
|
21
|
-
data: Uint8Array;
|
|
22
|
-
}, "arg", Record<never, never>, undefined>;
|
|
1
|
+
export declare const AdbSyncRequestId: {
|
|
2
|
+
readonly List: number;
|
|
3
|
+
readonly ListV2: number;
|
|
4
|
+
readonly Send: number;
|
|
5
|
+
readonly SendV2: number;
|
|
6
|
+
readonly Lstat: number;
|
|
7
|
+
readonly Stat: number;
|
|
8
|
+
readonly LstatV2: number;
|
|
9
|
+
readonly Data: number;
|
|
10
|
+
readonly Done: number;
|
|
11
|
+
readonly Receive: number;
|
|
12
|
+
};
|
|
13
|
+
export declare const AdbSyncNumberRequest: import("@yume-chan/struct").Struct<{
|
|
14
|
+
id: import("@yume-chan/struct").NumberField<number>;
|
|
15
|
+
arg: import("@yume-chan/struct").NumberField<number>;
|
|
16
|
+
}, {}, import("@yume-chan/struct").FieldsType<{
|
|
17
|
+
id: import("@yume-chan/struct").NumberField<number>;
|
|
18
|
+
arg: import("@yume-chan/struct").NumberField<number>;
|
|
19
|
+
}>>;
|
|
23
20
|
export interface AdbSyncWritable {
|
|
24
21
|
write(buffer: Uint8Array): Promise<void>;
|
|
25
22
|
}
|
|
26
|
-
export declare function adbSyncWriteRequest(writable: AdbSyncWritable, id:
|
|
23
|
+
export declare function adbSyncWriteRequest(writable: AdbSyncWritable, id: number | string, value: number | string | Uint8Array): Promise<void>;
|
|
27
24
|
//# sourceMappingURL=request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB;;;;;;;;;;;CAWnB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;GAGhC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC5B,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,eAAe,EACzB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GACpC,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -1,41 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export const AdbSyncNumberRequest = new Struct({ littleEndian: true })
|
|
17
|
-
.string("id", { length: 4 })
|
|
18
|
-
.uint32("arg");
|
|
19
|
-
export const AdbSyncDataRequest = new Struct({ littleEndian: true })
|
|
20
|
-
.concat(AdbSyncNumberRequest)
|
|
21
|
-
.uint8Array("data", { lengthField: "arg" });
|
|
1
|
+
import { encodeUtf8, struct, u32 } from "@yume-chan/struct";
|
|
2
|
+
import { adbSyncEncodeId } from "./response.js";
|
|
3
|
+
export const AdbSyncRequestId = {
|
|
4
|
+
List: adbSyncEncodeId("LIST"),
|
|
5
|
+
ListV2: adbSyncEncodeId("LIS2"),
|
|
6
|
+
Send: adbSyncEncodeId("SEND"),
|
|
7
|
+
SendV2: adbSyncEncodeId("SND2"),
|
|
8
|
+
Lstat: adbSyncEncodeId("STAT"),
|
|
9
|
+
Stat: adbSyncEncodeId("STA2"),
|
|
10
|
+
LstatV2: adbSyncEncodeId("LST2"),
|
|
11
|
+
Data: adbSyncEncodeId("DATA"),
|
|
12
|
+
Done: adbSyncEncodeId("DONE"),
|
|
13
|
+
Receive: adbSyncEncodeId("RECV"),
|
|
14
|
+
};
|
|
15
|
+
export const AdbSyncNumberRequest = struct({ id: u32, arg: u32 }, { littleEndian: true });
|
|
22
16
|
export async function adbSyncWriteRequest(writable, id, value) {
|
|
23
|
-
if (typeof
|
|
24
|
-
|
|
25
|
-
id,
|
|
26
|
-
arg: value,
|
|
27
|
-
});
|
|
28
|
-
await writable.write(buffer);
|
|
17
|
+
if (typeof id === "string") {
|
|
18
|
+
id = adbSyncEncodeId(id);
|
|
29
19
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
await writable.write(AdbSyncNumberRequest.serialize({ id, arg: buffer.byteLength }));
|
|
34
|
-
await writable.write(buffer);
|
|
20
|
+
if (typeof value === "number") {
|
|
21
|
+
await writable.write(AdbSyncNumberRequest.serialize({ id, arg: value }));
|
|
22
|
+
return;
|
|
35
23
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
await writable.write(value);
|
|
24
|
+
if (typeof value === "string") {
|
|
25
|
+
value = encodeUtf8(value);
|
|
39
26
|
}
|
|
27
|
+
// `writable` is buffered, it copies inputs to an internal buffer,
|
|
28
|
+
// so don't concatenate headers and data here, that will be an unnecessary copy.
|
|
29
|
+
await writable.write(AdbSyncNumberRequest.serialize({ id, arg: value.length }));
|
|
30
|
+
await writable.write(value);
|
|
40
31
|
}
|
|
41
32
|
//# sourceMappingURL=request.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CACtC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EACrB,EAAE,YAAY,EAAE,IAAI,EAAE,CACzB,CAAC;AAMF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,QAAyB,EACzB,EAAmB,EACnB,KAAmC;IAEnC,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACzB,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,KAAK,CAChB,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CACrD,CAAC;QACF,OAAO;IACX,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,kEAAkE;IAClE,gFAAgF;IAChF,MAAM,QAAQ,CAAC,KAAK,CAChB,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAC5D,CAAC;IACF,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1,22 +1,28 @@
|
|
|
1
|
-
import type { AsyncExactReadable, StructLike
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import type { AsyncExactReadable, StructLike } from "@yume-chan/struct";
|
|
2
|
+
/**
|
|
3
|
+
* Encode ID to numbers for faster comparison
|
|
4
|
+
* @param value A 4-character string
|
|
5
|
+
* @returns A 32-bit integer by encoding the string as little-endian
|
|
6
|
+
*
|
|
7
|
+
* #__NO_SIDE_EFFECTS__
|
|
8
|
+
*/
|
|
9
|
+
export declare function adbSyncEncodeId(value: string): number;
|
|
10
|
+
export declare const AdbSyncResponseId: {
|
|
11
|
+
Entry: number;
|
|
12
|
+
Entry2: number;
|
|
13
|
+
Lstat: number;
|
|
14
|
+
Stat: number;
|
|
15
|
+
Lstat2: number;
|
|
16
|
+
Done: number;
|
|
17
|
+
Data: number;
|
|
18
|
+
Ok: number;
|
|
19
|
+
Fail: number;
|
|
20
|
+
};
|
|
14
21
|
export declare class AdbSyncError extends Error {
|
|
15
22
|
}
|
|
16
|
-
export declare const AdbSyncFailResponse: Struct<{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function adbSyncReadResponses<T extends Struct<object, PropertyKey, object, unknown>>(stream: AsyncExactReadable, id: AdbSyncResponseId, type: T): AsyncGenerator<StructValueType<T>, void, void>;
|
|
23
|
+
export declare const AdbSyncFailResponse: import("@yume-chan/struct").Struct<{
|
|
24
|
+
message: import("@yume-chan/struct").Field<string, never, never>;
|
|
25
|
+
}, {}, never>;
|
|
26
|
+
export declare function adbSyncReadResponse<T>(stream: AsyncExactReadable, id: number | string, type: StructLike<T>): Promise<T>;
|
|
27
|
+
export declare function adbSyncReadResponses<T>(stream: AsyncExactReadable, id: number | string, type: StructLike<T>): AsyncGenerator<T, void, void>;
|
|
22
28
|
//# sourceMappingURL=response.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/response.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/response.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAWxE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;CAU7B,CAAC;AAEF,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C,eAAO,MAAM,mBAAmB;;aAQ/B,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,CAAC,EACvC,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED,wBAAuB,oBAAoB,CAAC,CAAC,EACzC,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CA2B/B"}
|
|
@@ -1,41 +1,64 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { decodeUtf8 } from "
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { getUint32LittleEndian } from "@yume-chan/no-data-view";
|
|
2
|
+
import { decodeUtf8, string, struct, u32 } from "@yume-chan/struct";
|
|
3
|
+
function encodeAsciiUnchecked(value) {
|
|
4
|
+
const result = new Uint8Array(value.length);
|
|
5
|
+
for (let i = 0; i < value.length; i += 1) {
|
|
6
|
+
result[i] = value.charCodeAt(i);
|
|
7
|
+
}
|
|
8
|
+
return result;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Encode ID to numbers for faster comparison
|
|
12
|
+
* @param value A 4-character string
|
|
13
|
+
* @returns A 32-bit integer by encoding the string as little-endian
|
|
14
|
+
*
|
|
15
|
+
* #__NO_SIDE_EFFECTS__
|
|
16
|
+
*/
|
|
17
|
+
export function adbSyncEncodeId(value) {
|
|
18
|
+
const buffer = encodeAsciiUnchecked(value);
|
|
19
|
+
return getUint32LittleEndian(buffer, 0);
|
|
20
|
+
}
|
|
21
|
+
export const AdbSyncResponseId = {
|
|
22
|
+
Entry: adbSyncEncodeId("DENT"),
|
|
23
|
+
Entry2: adbSyncEncodeId("DNT2"),
|
|
24
|
+
Lstat: adbSyncEncodeId("STAT"),
|
|
25
|
+
Stat: adbSyncEncodeId("STA2"),
|
|
26
|
+
Lstat2: adbSyncEncodeId("LST2"),
|
|
27
|
+
Done: adbSyncEncodeId("DONE"),
|
|
28
|
+
Data: adbSyncEncodeId("DATA"),
|
|
29
|
+
Ok: adbSyncEncodeId("OKAY"),
|
|
30
|
+
Fail: adbSyncEncodeId("FAIL"),
|
|
31
|
+
};
|
|
15
32
|
export class AdbSyncError extends Error {
|
|
16
33
|
}
|
|
17
|
-
export const AdbSyncFailResponse =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
34
|
+
export const AdbSyncFailResponse = struct({ message: string(u32) }, {
|
|
35
|
+
littleEndian: true,
|
|
36
|
+
postDeserialize(value) {
|
|
37
|
+
throw new AdbSyncError(value.message);
|
|
38
|
+
},
|
|
22
39
|
});
|
|
23
40
|
export async function adbSyncReadResponse(stream, id, type) {
|
|
24
|
-
|
|
25
|
-
|
|
41
|
+
if (typeof id === "string") {
|
|
42
|
+
id = adbSyncEncodeId(id);
|
|
43
|
+
}
|
|
44
|
+
const buffer = await stream.readExactly(4);
|
|
45
|
+
switch (getUint32LittleEndian(buffer, 0)) {
|
|
26
46
|
case AdbSyncResponseId.Fail:
|
|
27
47
|
await AdbSyncFailResponse.deserialize(stream);
|
|
28
48
|
throw new Error("Unreachable");
|
|
29
49
|
case id:
|
|
30
50
|
return await type.deserialize(stream);
|
|
31
51
|
default:
|
|
32
|
-
throw new Error(`Expected '${id}', but got '${
|
|
52
|
+
throw new Error(`Expected '${id}', but got '${decodeUtf8(buffer)}'`);
|
|
33
53
|
}
|
|
34
54
|
}
|
|
35
55
|
export async function* adbSyncReadResponses(stream, id, type) {
|
|
56
|
+
if (typeof id === "string") {
|
|
57
|
+
id = adbSyncEncodeId(id);
|
|
58
|
+
}
|
|
36
59
|
while (true) {
|
|
37
|
-
const
|
|
38
|
-
switch (
|
|
60
|
+
const buffer = await stream.readExactly(4);
|
|
61
|
+
switch (getUint32LittleEndian(buffer, 0)) {
|
|
39
62
|
case AdbSyncResponseId.Fail:
|
|
40
63
|
await AdbSyncFailResponse.deserialize(stream);
|
|
41
64
|
throw new Error("Unreachable");
|
|
@@ -47,10 +70,10 @@ export async function* adbSyncReadResponses(stream, id, type) {
|
|
|
47
70
|
await stream.readExactly(type.size);
|
|
48
71
|
return;
|
|
49
72
|
case id:
|
|
50
|
-
yield
|
|
73
|
+
yield await type.deserialize(stream);
|
|
51
74
|
break;
|
|
52
75
|
default:
|
|
53
|
-
throw new Error(`Expected '${id}' or '${AdbSyncResponseId.Done}', but got '${
|
|
76
|
+
throw new Error(`Expected '${id}' or '${AdbSyncResponseId.Done}', but got '${decodeUtf8(buffer)}'`);
|
|
54
77
|
}
|
|
55
78
|
}
|
|
56
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/commands/sync/response.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/commands/sync/response.ts"],"names":[],"mappings":"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"}
|