@yume-chan/adb 0.0.10 → 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.
- package/CHANGELOG.json +50 -0
- package/CHANGELOG.md +29 -1
- package/LICENSE +1 -1
- package/README.md +71 -51
- package/esm/adb.d.ts +48 -0
- package/esm/adb.d.ts.map +1 -0
- package/esm/adb.js +149 -136
- package/esm/adb.js.map +1 -1
- package/{dts → esm}/auth.d.ts +11 -11
- package/esm/auth.d.ts.map +1 -0
- package/esm/auth.js +72 -110
- package/esm/auth.js.map +1 -1
- package/esm/backend.d.ts +9 -0
- package/esm/backend.d.ts.map +1 -0
- package/{dts → esm}/commands/base.d.ts +1 -1
- package/esm/commands/base.d.ts.map +1 -0
- package/esm/commands/base.js +1 -0
- package/esm/commands/base.js.map +1 -1
- package/{dts → esm}/commands/framebuffer.d.ts +3 -3
- package/esm/commands/framebuffer.d.ts.map +1 -0
- package/esm/commands/framebuffer.js +15 -18
- package/esm/commands/framebuffer.js.map +1 -1
- package/esm/commands/index.d.ts +9 -0
- package/esm/commands/index.d.ts.map +1 -0
- package/esm/commands/index.js +8 -8
- package/esm/commands/index.js.map +1 -1
- package/esm/commands/install.d.ts +4 -0
- package/esm/commands/install.d.ts.map +1 -0
- package/esm/commands/install.js +19 -13
- package/esm/commands/install.js.map +1 -1
- package/esm/commands/power.d.ts +23 -0
- package/esm/commands/power.d.ts.map +1 -0
- package/esm/commands/power.js +45 -0
- package/esm/commands/power.js.map +1 -0
- package/{dts → esm}/commands/reverse.d.ts +3 -3
- package/esm/commands/reverse.d.ts.map +1 -0
- package/esm/commands/reverse.js +49 -60
- package/esm/commands/reverse.js.map +1 -1
- package/esm/commands/subprocess/index.d.ts +56 -0
- package/esm/commands/subprocess/index.d.ts.map +1 -0
- package/esm/commands/subprocess/index.js +88 -0
- package/esm/commands/subprocess/index.js.map +1 -0
- package/esm/commands/subprocess/legacy.d.ts +35 -0
- package/esm/commands/subprocess/legacy.d.ts.map +1 -0
- package/esm/commands/subprocess/legacy.js +53 -0
- package/esm/commands/subprocess/legacy.js.map +1 -0
- package/esm/commands/subprocess/protocol.d.ts +39 -0
- package/esm/commands/subprocess/protocol.d.ts.map +1 -0
- package/esm/commands/subprocess/protocol.js +157 -0
- package/esm/commands/subprocess/protocol.js.map +1 -0
- package/esm/commands/subprocess/protocols/index.d.ts +4 -0
- package/esm/commands/subprocess/protocols/index.d.ts.map +1 -0
- package/esm/commands/subprocess/protocols/index.js +4 -0
- package/esm/commands/subprocess/protocols/index.js.map +1 -0
- package/esm/commands/subprocess/protocols/none.d.ts +35 -0
- package/esm/commands/subprocess/protocols/none.d.ts.map +1 -0
- package/esm/commands/subprocess/protocols/none.js +53 -0
- package/esm/commands/subprocess/protocols/none.js.map +1 -0
- package/esm/commands/subprocess/protocols/shell.d.ts +39 -0
- package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -0
- package/esm/commands/subprocess/protocols/shell.js +155 -0
- package/esm/commands/subprocess/protocols/shell.js.map +1 -0
- package/esm/commands/subprocess/protocols/types.d.ts +50 -0
- package/esm/commands/subprocess/protocols/types.d.ts.map +1 -0
- package/esm/commands/{shell → subprocess/protocols}/types.js +0 -0
- package/esm/commands/subprocess/protocols/types.js.map +1 -0
- package/esm/commands/subprocess/types.d.ts +50 -0
- package/esm/commands/subprocess/types.d.ts.map +1 -0
- package/esm/commands/subprocess/types.js +2 -0
- package/esm/commands/{shell → subprocess}/types.js.map +1 -1
- package/{dts/commands/shell → esm/commands/subprocess}/utils.d.ts +0 -0
- package/esm/commands/subprocess/utils.d.ts.map +1 -0
- package/esm/commands/{shell → subprocess}/utils.js +0 -0
- package/esm/commands/subprocess/utils.js.map +1 -0
- package/esm/commands/sync/index.d.ts +8 -0
- package/esm/commands/sync/index.d.ts.map +1 -0
- package/esm/commands/sync/index.js +7 -7
- package/esm/commands/sync/index.js.map +1 -1
- package/esm/commands/sync/list.d.ts +41 -0
- package/esm/commands/sync/list.d.ts.map +1 -0
- package/esm/commands/sync/list.js +52 -20
- package/esm/commands/sync/list.js.map +1 -1
- package/esm/commands/sync/pull.d.ts +11 -0
- package/esm/commands/sync/pull.d.ts.map +1 -0
- package/esm/commands/sync/pull.js +17 -11
- package/esm/commands/sync/pull.js.map +1 -1
- package/esm/commands/sync/push.d.ts +8 -0
- package/esm/commands/sync/push.d.ts.map +1 -0
- package/esm/commands/sync/push.js +19 -37
- package/esm/commands/sync/push.js.map +1 -1
- package/{dts → esm}/commands/sync/request.d.ts +4 -3
- package/esm/commands/sync/request.d.ts.map +1 -0
- package/esm/commands/sync/request.js +25 -27
- package/esm/commands/sync/request.js.map +1 -1
- package/{dts → esm}/commands/sync/response.d.ts +4 -3
- package/esm/commands/sync/response.d.ts.map +1 -0
- package/esm/commands/sync/response.js +17 -20
- package/esm/commands/sync/response.js.map +1 -1
- package/{dts → esm}/commands/sync/stat.d.ts +16 -4
- package/esm/commands/sync/stat.d.ts.map +1 -0
- package/esm/commands/sync/stat.js +38 -30
- package/esm/commands/sync/stat.js.map +1 -1
- package/esm/commands/sync/sync.d.ts +61 -0
- package/esm/commands/sync/sync.d.ts.map +1 -0
- package/esm/commands/sync/sync.js +122 -89
- package/esm/commands/sync/sync.js.map +1 -1
- package/{dts → esm}/commands/tcpip.d.ts +1 -1
- package/{dts → esm}/commands/tcpip.d.ts.map +1 -1
- package/esm/commands/tcpip.js +14 -19
- package/esm/commands/tcpip.js.map +1 -1
- package/esm/crypto.d.ts +37 -0
- package/esm/crypto.d.ts.map +1 -0
- package/esm/crypto.js +77 -62
- package/esm/crypto.js.map +1 -1
- package/esm/features.d.ts +8 -0
- package/esm/features.d.ts.map +1 -0
- package/esm/features.js +7 -3
- package/esm/features.js.map +1 -1
- package/esm/index.d.ts +11 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +10 -10
- package/esm/index.js.map +1 -1
- package/esm/packet.d.ts +47 -0
- package/esm/packet.d.ts.map +1 -0
- package/esm/packet.js +27 -52
- package/esm/packet.js.map +1 -1
- package/esm/socket/controller.d.ts +37 -0
- package/esm/socket/controller.d.ts.map +1 -0
- package/esm/socket/controller.js +52 -66
- package/esm/socket/controller.js.map +1 -1
- package/esm/socket/dispatcher.d.ts +44 -0
- package/esm/socket/dispatcher.d.ts.map +1 -0
- package/esm/socket/dispatcher.js +146 -165
- package/esm/socket/dispatcher.js.map +1 -1
- package/esm/socket/index.d.ts +3 -0
- package/esm/socket/index.d.ts.map +1 -0
- package/esm/socket/index.js +2 -6
- package/esm/socket/index.js.map +1 -1
- package/esm/socket/socket.d.ts +46 -0
- package/esm/socket/socket.d.ts.map +1 -0
- package/esm/socket/socket.js +77 -13
- package/esm/socket/socket.js.map +1 -1
- package/esm/stream/buffered.d.ts +35 -0
- package/esm/stream/buffered.d.ts.map +1 -0
- package/esm/stream/buffered.js +123 -0
- package/esm/stream/buffered.js.map +1 -0
- package/esm/stream/detect.bak.d.ts +240 -0
- package/esm/stream/detect.bak.d.ts.map +1 -0
- package/esm/stream/detect.bak.js +60 -0
- package/esm/stream/detect.bak.js.map +1 -0
- package/esm/stream/detect.d.ts +2 -0
- package/esm/stream/detect.d.ts.map +1 -0
- package/esm/stream/detect.js +5 -0
- package/esm/stream/detect.js.map +1 -0
- package/esm/stream/detect.native.d.ts +240 -0
- package/esm/stream/detect.native.d.ts.map +1 -0
- package/esm/stream/detect.native.js +60 -0
- package/esm/stream/detect.native.js.map +1 -0
- package/esm/stream/detect.polyfill.d.ts +18 -0
- package/esm/stream/detect.polyfill.d.ts.map +1 -0
- package/esm/stream/detect.polyfill.js +9 -0
- package/esm/stream/detect.polyfill.js.map +1 -0
- package/esm/stream/index.d.ts +4 -0
- package/esm/stream/index.d.ts.map +1 -0
- package/esm/stream/index.js +3 -2
- package/esm/stream/index.js.map +1 -1
- package/esm/stream/transform.d.ts +98 -0
- package/esm/stream/transform.d.ts.map +1 -0
- package/esm/stream/transform.js +402 -0
- package/esm/stream/transform.js.map +1 -0
- package/{dts → esm}/utils/auto-reset-event.d.ts +1 -1
- package/esm/utils/auto-reset-event.d.ts.map +1 -0
- package/esm/utils/auto-reset-event.js +2 -1
- package/esm/utils/auto-reset-event.js.map +1 -1
- package/esm/utils/base64.d.ts +5 -0
- package/esm/utils/base64.d.ts.map +1 -0
- package/esm/utils/base64.js +116 -80
- package/esm/utils/base64.js.map +1 -1
- package/esm/utils/encoding.d.ts +3 -0
- package/esm/utils/encoding.d.ts.map +1 -0
- package/esm/utils/encoding.js +1 -1
- package/esm/utils/encoding.js.map +1 -1
- package/esm/utils/index.d.ts +4 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/esm/utils/index.js +3 -5
- package/esm/utils/index.js.map +1 -1
- package/package.json +50 -44
- package/src/adb.ts +177 -150
- package/src/auth.ts +37 -30
- package/src/backend.ts +3 -12
- package/src/commands/base.ts +1 -1
- package/src/commands/framebuffer.ts +4 -4
- package/src/commands/index.ts +8 -8
- package/src/commands/install.ts +24 -15
- package/src/commands/power.ts +54 -0
- package/src/commands/reverse.ts +10 -8
- package/src/commands/subprocess/index.ts +139 -0
- package/src/commands/subprocess/protocols/index.ts +3 -0
- package/src/commands/subprocess/protocols/none.ts +68 -0
- package/src/commands/subprocess/protocols/shell.ts +190 -0
- package/src/commands/subprocess/protocols/types.ts +59 -0
- package/src/commands/{shell → subprocess}/utils.ts +0 -0
- package/src/commands/sync/index.ts +7 -7
- package/src/commands/sync/list.ts +56 -9
- package/src/commands/sync/pull.ts +27 -18
- package/src/commands/sync/push.ts +25 -30
- package/src/commands/sync/request.ts +8 -7
- package/src/commands/sync/response.ts +12 -6
- package/src/commands/sync/stat.ts +43 -14
- package/src/commands/sync/sync.ts +102 -34
- package/src/commands/tcpip.ts +3 -3
- package/src/crypto.ts +95 -84
- package/src/features.ts +6 -2
- package/src/index.ts +11 -10
- package/src/packet.ts +49 -53
- package/src/socket/dispatcher.ts +110 -109
- package/src/socket/index.ts +2 -6
- package/src/socket/socket.ts +125 -17
- package/src/stream/buffered.ts +147 -0
- package/src/stream/detect.native.ts +362 -0
- package/src/stream/detect.polyfill.ts +28 -0
- package/src/stream/detect.ts +5 -0
- package/src/stream/index.ts +3 -2
- package/src/stream/transform.ts +483 -0
- package/src/utils/auto-reset-event.ts +1 -1
- package/src/utils/base64.ts +161 -129
- package/src/utils/index.ts +3 -5
- package/tsconfig.build.json +3 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.test.json +10 -0
- package/dts/adb.d.ts +0 -46
- package/dts/adb.d.ts.map +0 -1
- package/dts/auth.d.ts.map +0 -1
- package/dts/backend.d.ts +0 -13
- package/dts/backend.d.ts.map +0 -1
- package/dts/commands/base.d.ts.map +0 -1
- package/dts/commands/demo-mode.d.ts +0 -41
- package/dts/commands/demo-mode.d.ts.map +0 -1
- package/dts/commands/framebuffer.d.ts.map +0 -1
- package/dts/commands/index.d.ts +0 -9
- package/dts/commands/index.d.ts.map +0 -1
- package/dts/commands/install.d.ts +0 -3
- package/dts/commands/install.d.ts.map +0 -1
- package/dts/commands/reverse.d.ts.map +0 -1
- package/dts/commands/shell/index.d.ts +0 -46
- package/dts/commands/shell/index.d.ts.map +0 -1
- package/dts/commands/shell/legacy.d.ts +0 -38
- package/dts/commands/shell/legacy.d.ts.map +0 -1
- package/dts/commands/shell/protocol.d.ts +0 -45
- package/dts/commands/shell/protocol.d.ts.map +0 -1
- package/dts/commands/shell/types.d.ts +0 -47
- package/dts/commands/shell/types.d.ts.map +0 -1
- package/dts/commands/shell/utils.d.ts.map +0 -1
- package/dts/commands/sync/index.d.ts +0 -8
- package/dts/commands/sync/index.d.ts.map +0 -1
- package/dts/commands/sync/list.d.ts +0 -17
- package/dts/commands/sync/list.d.ts.map +0 -1
- package/dts/commands/sync/pull.d.ts +0 -11
- package/dts/commands/sync/pull.d.ts.map +0 -1
- package/dts/commands/sync/push.d.ts +0 -8
- package/dts/commands/sync/push.d.ts.map +0 -1
- package/dts/commands/sync/request.d.ts.map +0 -1
- package/dts/commands/sync/response.d.ts.map +0 -1
- package/dts/commands/sync/stat.d.ts.map +0 -1
- package/dts/commands/sync/sync.d.ts +0 -68
- package/dts/commands/sync/sync.d.ts.map +0 -1
- package/dts/crypto.d.ts +0 -24
- package/dts/crypto.d.ts.map +0 -1
- package/dts/features.d.ts +0 -6
- package/dts/features.d.ts.map +0 -1
- package/dts/index.d.ts +0 -11
- package/dts/index.d.ts.map +0 -1
- package/dts/packet.d.ts +0 -27
- package/dts/packet.d.ts.map +0 -1
- package/dts/socket/close-event-emitter.d.ts +0 -8
- package/dts/socket/close-event-emitter.d.ts.map +0 -1
- package/dts/socket/controller.d.ts +0 -43
- package/dts/socket/controller.d.ts.map +0 -1
- package/dts/socket/data-event-emitter.d.ts +0 -10
- package/dts/socket/data-event-emitter.d.ts.map +0 -1
- package/dts/socket/dispatcher.d.ts +0 -53
- package/dts/socket/dispatcher.d.ts.map +0 -1
- package/dts/socket/index.d.ts +0 -7
- package/dts/socket/index.d.ts.map +0 -1
- package/dts/socket/logger.d.ts +0 -9
- package/dts/socket/logger.d.ts.map +0 -1
- package/dts/socket/socket.d.ts +0 -22
- package/dts/socket/socket.d.ts.map +0 -1
- package/dts/stream/buffered-stream.d.ts +0 -28
- package/dts/stream/buffered-stream.d.ts.map +0 -1
- package/dts/stream/index.d.ts +0 -3
- package/dts/stream/index.d.ts.map +0 -1
- package/dts/stream/stream.d.ts +0 -15
- package/dts/stream/stream.d.ts.map +0 -1
- package/dts/utils/auto-reset-event.d.ts.map +0 -1
- package/dts/utils/base64.d.ts +0 -7
- package/dts/utils/base64.d.ts.map +0 -1
- package/dts/utils/chunk.d.ts +0 -3
- package/dts/utils/chunk.d.ts.map +0 -1
- package/dts/utils/encoding.d.ts +0 -3
- package/dts/utils/encoding.d.ts.map +0 -1
- package/dts/utils/event-queue.d.ts +0 -35
- package/dts/utils/event-queue.d.ts.map +0 -1
- package/dts/utils/index.d.ts +0 -6
- package/dts/utils/index.d.ts.map +0 -1
- package/esm/commands/demo-mode.js +0 -170
- package/esm/commands/demo-mode.js.map +0 -1
- package/esm/commands/shell/index.js +0 -62
- package/esm/commands/shell/index.js.map +0 -1
- package/esm/commands/shell/legacy.js +0 -49
- package/esm/commands/shell/legacy.js.map +0 -1
- package/esm/commands/shell/protocol.js +0 -106
- package/esm/commands/shell/protocol.js.map +0 -1
- package/esm/commands/shell/utils.js.map +0 -1
- package/esm/socket/close-event-emitter.js +0 -28
- package/esm/socket/close-event-emitter.js.map +0 -1
- package/esm/socket/data-event-emitter.js +0 -25
- package/esm/socket/data-event-emitter.js.map +0 -1
- package/esm/socket/logger.js +0 -2
- package/esm/socket/logger.js.map +0 -1
- package/esm/stream/buffered-stream.js +0 -67
- package/esm/stream/buffered-stream.js.map +0 -1
- package/esm/stream/stream.js +0 -41
- package/esm/stream/stream.js.map +0 -1
- package/esm/utils/chunk.js +0 -70
- package/esm/utils/chunk.js.map +0 -1
- package/esm/utils/event-queue.js +0 -104
- package/esm/utils/event-queue.js.map +0 -1
- package/src/commands/demo-mode.ts +0 -160
- package/src/commands/shell/index.ts +0 -87
- package/src/commands/shell/legacy.ts +0 -59
- package/src/commands/shell/protocol.ts +0 -121
- package/src/commands/shell/types.ts +0 -55
- package/src/socket/close-event-emitter.ts +0 -28
- package/src/socket/controller.ts +0 -105
- package/src/socket/data-event-emitter.ts +0 -27
- package/src/socket/logger.ts +0 -12
- package/src/stream/buffered-stream.ts +0 -92
- package/src/stream/stream.ts +0 -50
- package/src/utils/chunk.ts +0 -70
- package/src/utils/encoding.ts +0 -13
- package/src/utils/event-queue.ts +0 -145
|
@@ -1,45 +1,27 @@
|
|
|
1
|
-
import { __asyncValues, __awaiter } from "tslib";
|
|
2
1
|
import Struct from '@yume-chan/struct';
|
|
3
|
-
import {
|
|
4
|
-
import { AdbSyncRequestId, adbSyncWriteRequest } from './request';
|
|
5
|
-
import { adbSyncReadResponse, AdbSyncResponseId } from './response';
|
|
6
|
-
import { LinuxFileType } from './stat';
|
|
2
|
+
import { ChunkStream, pipeFrom, WritableStream } from '../../stream/index.js';
|
|
3
|
+
import { AdbSyncRequestId, adbSyncWriteRequest } from './request.js';
|
|
4
|
+
import { adbSyncReadResponse, AdbSyncResponseId } from './response.js';
|
|
5
|
+
import { LinuxFileType } from './stat.js';
|
|
7
6
|
export const AdbSyncOkResponse = new Struct({ littleEndian: true })
|
|
8
7
|
.uint32('unused');
|
|
9
8
|
const ResponseTypes = {
|
|
10
9
|
[AdbSyncResponseId.Ok]: AdbSyncOkResponse,
|
|
11
10
|
};
|
|
12
|
-
export const
|
|
13
|
-
export function adbSyncPush(stream,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
for (var chunkReader_1 = __asyncValues(chunkReader), chunkReader_1_1; chunkReader_1_1 = yield chunkReader_1.next(), !chunkReader_1_1.done;) {
|
|
28
|
-
const buffer = chunkReader_1_1.value;
|
|
29
|
-
yield adbSyncWriteRequest(stream, AdbSyncRequestId.Data, buffer);
|
|
30
|
-
uploaded += buffer.byteLength;
|
|
31
|
-
onProgress === null || onProgress === void 0 ? void 0 : onProgress(uploaded);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
35
|
-
finally {
|
|
36
|
-
try {
|
|
37
|
-
if (chunkReader_1_1 && !chunkReader_1_1.done && (_a = chunkReader_1.return)) yield _a.call(chunkReader_1);
|
|
38
|
-
}
|
|
39
|
-
finally { if (e_1) throw e_1.error; }
|
|
40
|
-
}
|
|
41
|
-
yield adbSyncWriteRequest(stream, AdbSyncRequestId.Done, mtime);
|
|
42
|
-
yield adbSyncReadResponse(stream, ResponseTypes);
|
|
43
|
-
});
|
|
11
|
+
export const ADB_SYNC_MAX_PACKET_SIZE = 64 * 1024;
|
|
12
|
+
export function adbSyncPush(stream, writer, filename, mode = (LinuxFileType.File << 12) | 0o666, mtime = (Date.now() / 1000) | 0, packetSize = ADB_SYNC_MAX_PACKET_SIZE) {
|
|
13
|
+
return pipeFrom(new WritableStream({
|
|
14
|
+
async start() {
|
|
15
|
+
const pathAndMode = `${filename},${mode.toString()}`;
|
|
16
|
+
await adbSyncWriteRequest(writer, AdbSyncRequestId.Send, pathAndMode);
|
|
17
|
+
},
|
|
18
|
+
async write(chunk) {
|
|
19
|
+
await adbSyncWriteRequest(writer, AdbSyncRequestId.Data, chunk);
|
|
20
|
+
},
|
|
21
|
+
async close() {
|
|
22
|
+
await adbSyncWriteRequest(writer, AdbSyncRequestId.Done, mtime);
|
|
23
|
+
await adbSyncReadResponse(stream, ResponseTypes);
|
|
24
|
+
},
|
|
25
|
+
}), new ChunkStream(packetSize));
|
|
44
26
|
}
|
|
45
27
|
//# sourceMappingURL=push.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/commands/sync/push.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/commands/sync/push.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAqB,WAAW,EAAE,QAAQ,EAAE,cAAc,EAA+B,MAAM,uBAAuB,CAAC;AAC9H,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAC1B,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE1B,MAAM,aAAa,GAAG;IAClB,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,iBAAiB;CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD,MAAM,UAAU,WAAW,CACvB,MAAyB,EACzB,MAA+C,EAC/C,QAAgB,EAChB,OAAe,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,EACjD,QAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EACvC,aAAqB,wBAAwB;IAE7C,OAAO,QAAQ,CACX,IAAI,cAAc,CAAa;QAC3B,KAAK,CAAC,KAAK;YACP,MAAM,WAAW,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrD,MAAM,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,KAAK;YACb,MAAM,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,CAAC,KAAK;YACP,MAAM,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChE,MAAM,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACrD,CAAC;KACJ,CAAC,EACF,IAAI,WAAW,CAAC,UAAU,CAAC,CAC9B,CAAC;AACN,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import Struct from '@yume-chan/struct';
|
|
2
|
-
import type {
|
|
2
|
+
import type { WritableStreamDefaultWriter } from "../../stream/index.js";
|
|
3
3
|
export declare enum AdbSyncRequestId {
|
|
4
4
|
List = "LIST",
|
|
5
|
+
List2 = "LIS2",
|
|
5
6
|
Send = "SEND",
|
|
6
7
|
Lstat = "STAT",
|
|
7
8
|
Stat = "STA2",
|
|
@@ -17,7 +18,7 @@ export declare const AdbSyncNumberRequest: Struct<{
|
|
|
17
18
|
export declare const AdbSyncDataRequest: Struct<{
|
|
18
19
|
id: string;
|
|
19
20
|
arg: number;
|
|
20
|
-
data:
|
|
21
|
+
data: Uint8Array;
|
|
21
22
|
}, "arg", {}, undefined>;
|
|
22
|
-
export declare function adbSyncWriteRequest(
|
|
23
|
+
export declare function adbSyncWriteRequest(writer: WritableStreamDefaultWriter<Uint8Array>, id: AdbSyncRequestId | string, value: number | string | Uint8Array): Promise<void>;
|
|
23
24
|
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,oBAAY,gBAAgB;IACxB,IAAI,SAAS;IACb,KAAK,SAAS;IACd,IAAI,SAAS;IACb,KAAK,SAAS;IACd,IAAI,SAAS;IACb,MAAM,SAAS;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,SAAS;CACnB;AAED,eAAO,MAAM,oBAAoB;;;wBAGX,CAAC;AAEvB,eAAO,MAAM,kBAAkB;;;;wBAGoB,CAAC;AAEpD,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,EAAE,EAAE,gBAAgB,GAAG,MAAM,EAC7B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GACpC,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
1
|
import Struct from '@yume-chan/struct';
|
|
3
|
-
import { encodeUtf8 } from "../../utils";
|
|
2
|
+
import { encodeUtf8 } from "../../utils/index.js";
|
|
4
3
|
export var AdbSyncRequestId;
|
|
5
4
|
(function (AdbSyncRequestId) {
|
|
6
5
|
AdbSyncRequestId["List"] = "LIST";
|
|
6
|
+
AdbSyncRequestId["List2"] = "LIS2";
|
|
7
7
|
AdbSyncRequestId["Send"] = "SEND";
|
|
8
8
|
AdbSyncRequestId["Lstat"] = "STAT";
|
|
9
9
|
AdbSyncRequestId["Stat"] = "STA2";
|
|
@@ -11,35 +11,33 @@ export var AdbSyncRequestId;
|
|
|
11
11
|
AdbSyncRequestId["Data"] = "DATA";
|
|
12
12
|
AdbSyncRequestId["Done"] = "DONE";
|
|
13
13
|
AdbSyncRequestId["Receive"] = "RECV";
|
|
14
|
-
})(AdbSyncRequestId || (AdbSyncRequestId = {}));
|
|
14
|
+
})(AdbSyncRequestId = AdbSyncRequestId || (AdbSyncRequestId = {}));
|
|
15
15
|
export const AdbSyncNumberRequest = new Struct({ littleEndian: true })
|
|
16
16
|
.string('id', { length: 4 })
|
|
17
17
|
.uint32('arg');
|
|
18
18
|
export const AdbSyncDataRequest = new Struct({ littleEndian: true })
|
|
19
19
|
.fields(AdbSyncNumberRequest)
|
|
20
|
-
.
|
|
21
|
-
export function adbSyncWriteRequest(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
yield stream.write(buffer);
|
|
43
|
-
});
|
|
20
|
+
.uint8Array('data', { lengthField: 'arg' });
|
|
21
|
+
export async function adbSyncWriteRequest(writer, id, value) {
|
|
22
|
+
let buffer;
|
|
23
|
+
if (typeof value === 'number') {
|
|
24
|
+
buffer = AdbSyncNumberRequest.serialize({
|
|
25
|
+
id,
|
|
26
|
+
arg: value,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else if (typeof value === 'string') {
|
|
30
|
+
buffer = AdbSyncDataRequest.serialize({
|
|
31
|
+
id,
|
|
32
|
+
data: encodeUtf8(value),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
buffer = AdbSyncDataRequest.serialize({
|
|
37
|
+
id,
|
|
38
|
+
data: value,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
await writer.write(buffer);
|
|
44
42
|
}
|
|
45
43
|
//# sourceMappingURL=request.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/commands/sync/request.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAN,IAAY,gBAUX;AAVD,WAAY,gBAAgB;IACxB,iCAAa,CAAA;IACb,kCAAc,CAAA;IACd,iCAAa,CAAA;IACb,kCAAc,CAAA;IACd,iCAAa,CAAA;IACb,mCAAe,CAAA;IACf,iCAAa,CAAA;IACb,iCAAa,CAAA;IACb,oCAAgB,CAAA;AACpB,CAAC,EAVW,gBAAgB,GAAhB,gBAAgB,KAAhB,gBAAgB,QAU3B;AAED,MAAM,CAAC,MAAM,oBAAoB,GAC7B,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvB,MAAM,CAAC,MAAM,kBAAkB,GAC3B,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,oBAAoB,CAAC;KAC5B,UAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAA+C,EAC/C,EAA6B,EAC7B,KAAmC;IAEnC,IAAI,MAAkB,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC;YACpC,EAAE;YACF,GAAG,EAAE,KAAK;SACb,CAAC,CAAC;KACN;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAClC,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC;YAClC,EAAE;YACF,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;SAC1B,CAAC,CAAC;KACN;SAAM;QACH,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC;YAClC,EAAE;YACF,IAAI,EAAE,KAAK;SACd,CAAC,CAAC;KACN;IACD,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import Struct, { StructAsyncDeserializeStream, StructLike, StructValueType } from '@yume-chan/struct';
|
|
2
|
-
import { AdbBufferedStream } from '../../stream';
|
|
1
|
+
import Struct, { type StructAsyncDeserializeStream, type StructLike, type StructValueType } from '@yume-chan/struct';
|
|
2
|
+
import type { AdbBufferedStream } from '../../stream/index.js';
|
|
3
3
|
export declare enum AdbSyncResponseId {
|
|
4
4
|
Entry = "DENT",
|
|
5
|
+
Entry2 = "DNT2",
|
|
5
6
|
Lstat = "STAT",
|
|
6
7
|
Stat = "STA2",
|
|
7
8
|
Lstat2 = "LST2",
|
|
@@ -20,5 +21,5 @@ export declare const AdbSyncFailResponse: Struct<{
|
|
|
20
21
|
messageLength: number;
|
|
21
22
|
message: string;
|
|
22
23
|
}, "messageLength", {}, never>;
|
|
23
|
-
export declare function adbSyncReadResponse<T extends Record<string, StructLike<any>>>(stream: AdbBufferedStream, types: T): Promise<StructValueType<T[keyof T]>>;
|
|
24
|
+
export declare function adbSyncReadResponse<T extends Record<string, StructLike<any>>>(stream: AdbBufferedStream, types: T): Promise<StructValueType<T extends unknown ? T[keyof T] : never>>;
|
|
24
25
|
//# sourceMappingURL=response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/response.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,4BAA4B,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,oBAAY,iBAAiB;IACzB,KAAK,SAAS;IACd,MAAM,SAAS;IACf,KAAK,SAAS;IACd,IAAI,SAAS;IACb,MAAM,SAAS;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,EAAE,SAAS;IACX,IAAI,SAAS;CAChB;AAMD,qBAAa,mBAAoB,YAAW,UAAU,CAAC,mBAAmB,CAAC;IACvE,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAgB,EAAE,0BAA0B;gBAEzB,MAAM,EAAE,MAAM;IAIpB,WAAW,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;CAIhF;AAED,eAAO,MAAM,mBAAmB;;;8BAMtB,CAAC;AAEX,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAC/E,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,CAAC,GAMT,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAYlE"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
1
|
import Struct from '@yume-chan/struct';
|
|
3
|
-
import { decodeUtf8 } from "../../utils";
|
|
2
|
+
import { decodeUtf8 } from "../../utils/index.js";
|
|
4
3
|
export var AdbSyncResponseId;
|
|
5
4
|
(function (AdbSyncResponseId) {
|
|
6
5
|
AdbSyncResponseId["Entry"] = "DENT";
|
|
6
|
+
AdbSyncResponseId["Entry2"] = "DNT2";
|
|
7
7
|
AdbSyncResponseId["Lstat"] = "STAT";
|
|
8
8
|
AdbSyncResponseId["Stat"] = "STA2";
|
|
9
9
|
AdbSyncResponseId["Lstat2"] = "LST2";
|
|
@@ -11,21 +11,20 @@ export var AdbSyncResponseId;
|
|
|
11
11
|
AdbSyncResponseId["Data"] = "DATA";
|
|
12
12
|
AdbSyncResponseId["Ok"] = "OKAY";
|
|
13
13
|
AdbSyncResponseId["Fail"] = "FAIL";
|
|
14
|
-
})(AdbSyncResponseId || (AdbSyncResponseId = {}));
|
|
14
|
+
})(AdbSyncResponseId = AdbSyncResponseId || (AdbSyncResponseId = {}));
|
|
15
15
|
// DONE responses' size are always same as the request's normal response.
|
|
16
16
|
// For example DONE responses for LIST requests are 16 bytes (same as DENT responses),
|
|
17
17
|
// but DONE responses for STAT requests are 12 bytes (same as STAT responses)
|
|
18
18
|
// So we need to know responses' size in advance.
|
|
19
19
|
export class AdbSyncDoneResponse {
|
|
20
|
+
length;
|
|
21
|
+
id = AdbSyncResponseId.Done;
|
|
20
22
|
constructor(length) {
|
|
21
|
-
this.id = AdbSyncResponseId.Done;
|
|
22
23
|
this.length = length;
|
|
23
24
|
}
|
|
24
|
-
deserialize(stream) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return this;
|
|
28
|
-
});
|
|
25
|
+
async deserialize(stream) {
|
|
26
|
+
await stream.read(this.length);
|
|
27
|
+
return this;
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
export const AdbSyncFailResponse = new Struct({ littleEndian: true })
|
|
@@ -34,16 +33,14 @@ export const AdbSyncFailResponse = new Struct({ littleEndian: true })
|
|
|
34
33
|
.postDeserialize(object => {
|
|
35
34
|
throw new Error(object.message);
|
|
36
35
|
});
|
|
37
|
-
export function adbSyncReadResponse(stream, types) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
throw new Error('Unexpected response id');
|
|
47
|
-
});
|
|
36
|
+
export async function adbSyncReadResponse(stream, types) {
|
|
37
|
+
const id = decodeUtf8(await stream.read(4));
|
|
38
|
+
if (id === AdbSyncResponseId.Fail) {
|
|
39
|
+
await AdbSyncFailResponse.deserialize(stream);
|
|
40
|
+
}
|
|
41
|
+
if (types[id]) {
|
|
42
|
+
return types[id].deserialize(stream);
|
|
43
|
+
}
|
|
44
|
+
throw new Error(`Expected '${Object.keys(types).join(', ')}', but got '${id}'`);
|
|
48
45
|
}
|
|
49
46
|
//# sourceMappingURL=response.js.map
|
|
@@ -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":"AAAA,OAAO,MAAoF,MAAM,mBAAmB,CAAC;AAErH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAN,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IACzB,mCAAc,CAAA;IACd,oCAAe,CAAA;IACf,mCAAc,CAAA;IACd,kCAAa,CAAA;IACb,oCAAe,CAAA;IACf,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,gCAAW,CAAA;IACX,kCAAa,CAAA;AACjB,CAAC,EAVW,iBAAiB,GAAjB,iBAAiB,KAAjB,iBAAiB,QAU5B;AAED,yEAAyE;AACzE,sFAAsF;AACtF,6EAA6E;AAC7E,iDAAiD;AACjD,MAAM,OAAO,mBAAmB;IACpB,MAAM,CAAS;IAEP,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC;IAE5C,YAAmB,MAAc;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,MAAoC;QACzD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,mBAAmB,GAC5B,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,eAAe,CAAC;KACvB,MAAM,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;KACnD,eAAe,CAAC,MAAM,CAAC,EAAE;IACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAyB,EACzB,KAAQ;IAOR,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,EAAE,KAAK,iBAAiB,CAAC,IAAI,EAAE;QAC/B,MAAM,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACjD;IAED,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;QACX,OAAO,KAAK,CAAC,EAAE,CAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACzC;IAED,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
import Struct from '@yume-chan/struct';
|
|
2
|
-
import { AdbBufferedStream } from '../../stream';
|
|
3
|
-
import { AdbSyncResponseId } from './response';
|
|
2
|
+
import type { AdbBufferedStream, WritableStreamDefaultWriter } from '../../stream/index.js';
|
|
3
|
+
import { AdbSyncResponseId } from './response.js';
|
|
4
4
|
export declare enum LinuxFileType {
|
|
5
5
|
Directory = 4,
|
|
6
6
|
File = 8,
|
|
7
7
|
Link = 10
|
|
8
8
|
}
|
|
9
|
+
export interface AdbSyncStat {
|
|
10
|
+
mode: number;
|
|
11
|
+
size: bigint;
|
|
12
|
+
mtime: bigint;
|
|
13
|
+
get type(): LinuxFileType;
|
|
14
|
+
get permission(): number;
|
|
15
|
+
uid?: number;
|
|
16
|
+
gid?: number;
|
|
17
|
+
atime?: bigint;
|
|
18
|
+
ctime?: bigint;
|
|
19
|
+
}
|
|
9
20
|
export declare const AdbSyncLstatResponse: Struct<{
|
|
10
21
|
mode: number;
|
|
11
22
|
size: number;
|
|
@@ -17,6 +28,7 @@ export declare const AdbSyncLstatResponse: Struct<{
|
|
|
17
28
|
}, undefined>;
|
|
18
29
|
export declare type AdbSyncLstatResponse = typeof AdbSyncLstatResponse['TDeserializeResult'];
|
|
19
30
|
export declare enum AdbSyncStatErrorCode {
|
|
31
|
+
SUCCESS = 0,
|
|
20
32
|
EACCES = 13,
|
|
21
33
|
EEXIST = 17,
|
|
22
34
|
EFAULT = 14,
|
|
@@ -56,6 +68,6 @@ export declare const AdbSyncStatResponse: Struct<{
|
|
|
56
68
|
readonly permission: number;
|
|
57
69
|
}, undefined>;
|
|
58
70
|
export declare type AdbSyncStatResponse = typeof AdbSyncStatResponse['TDeserializeResult'];
|
|
59
|
-
export declare function adbSyncLstat(stream: AdbBufferedStream, path: string, v2: boolean): Promise<
|
|
60
|
-
export declare function adbSyncStat(stream: AdbBufferedStream, path: string): Promise<AdbSyncStatResponse>;
|
|
71
|
+
export declare function adbSyncLstat(stream: AdbBufferedStream, writer: WritableStreamDefaultWriter<Uint8Array>, path: string, v2: boolean): Promise<AdbSyncStat>;
|
|
72
|
+
export declare function adbSyncStat(stream: AdbBufferedStream, writer: WritableStreamDefaultWriter<Uint8Array>, path: string): Promise<AdbSyncStatResponse>;
|
|
61
73
|
//# sourceMappingURL=stat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"AAAA,OAAO,MAAuB,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAE5F,OAAO,EAAuB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvE,oBAAY,aAAa;IACrB,SAAS,IAAO;IAChB,IAAI,IAAO;IACX,IAAI,KAAO;CACd;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,IAAI,IAAI,aAAa,CAAC;IAC1B,IAAI,UAAU,IAAI,MAAM,CAAC;IAEzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB;;;;;;;;aAiBvB,CAAC;AAEX,oBAAY,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAErF,oBAAY,oBAAoB;IAC5B,OAAO,IAAI;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,KAAK,KAAK;IACV,KAAK,IAAI;IACT,MAAM,KAAK;IACX,GAAG,IAAI;IACP,MAAM,KAAK;IACX,KAAK,KAAK;IACV,MAAM,KAAK;IACX,YAAY,KAAK;IACjB,MAAM,KAAK;IACX,MAAM,IAAI;IACV,MAAM,KAAK;IACX,MAAM,KAAK;IACX,OAAO,KAAK;IACZ,SAAS,KAAK;IACd,KAAK,IAAI;IACT,KAAK,KAAK;IACV,OAAO,KAAK;CACf;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;aAsBtB,CAAC;AAEX,oBAAY,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;AAcnF,wBAAsB,YAAY,CAC9B,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,OAAO,GACZ,OAAO,CAAC,WAAW,CAAC,CA2BtB;AAED,wBAAsB,WAAW,CAC7B,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
1
|
import Struct, { placeholder } from '@yume-chan/struct';
|
|
3
|
-
import { AdbSyncRequestId, adbSyncWriteRequest } from './request';
|
|
4
|
-
import { adbSyncReadResponse, AdbSyncResponseId } from './response';
|
|
2
|
+
import { AdbSyncRequestId, adbSyncWriteRequest } from './request.js';
|
|
3
|
+
import { adbSyncReadResponse, AdbSyncResponseId } from './response.js';
|
|
5
4
|
// https://github.com/python/cpython/blob/4e581d64b8aff3e2eda99b12f080c877bb78dfca/Lib/stat.py#L36
|
|
6
5
|
export var LinuxFileType;
|
|
7
6
|
(function (LinuxFileType) {
|
|
8
7
|
LinuxFileType[LinuxFileType["Directory"] = 4] = "Directory";
|
|
9
8
|
LinuxFileType[LinuxFileType["File"] = 8] = "File";
|
|
10
9
|
LinuxFileType[LinuxFileType["Link"] = 10] = "Link";
|
|
11
|
-
})(LinuxFileType || (LinuxFileType = {}));
|
|
10
|
+
})(LinuxFileType = LinuxFileType || (LinuxFileType = {}));
|
|
12
11
|
export const AdbSyncLstatResponse = new Struct({ littleEndian: true })
|
|
13
12
|
.int32('mode')
|
|
14
13
|
.int32('size')
|
|
@@ -16,7 +15,7 @@ export const AdbSyncLstatResponse = new Struct({ littleEndian: true })
|
|
|
16
15
|
.extra({
|
|
17
16
|
id: AdbSyncResponseId.Lstat,
|
|
18
17
|
get type() { return this.mode >> 12; },
|
|
19
|
-
get permission() { return this.mode &
|
|
18
|
+
get permission() { return this.mode & 0b00001111_11111111; },
|
|
20
19
|
})
|
|
21
20
|
.postDeserialize((object) => {
|
|
22
21
|
if (object.mode === 0 &&
|
|
@@ -27,6 +26,7 @@ export const AdbSyncLstatResponse = new Struct({ littleEndian: true })
|
|
|
27
26
|
});
|
|
28
27
|
export var AdbSyncStatErrorCode;
|
|
29
28
|
(function (AdbSyncStatErrorCode) {
|
|
29
|
+
AdbSyncStatErrorCode[AdbSyncStatErrorCode["SUCCESS"] = 0] = "SUCCESS";
|
|
30
30
|
AdbSyncStatErrorCode[AdbSyncStatErrorCode["EACCES"] = 13] = "EACCES";
|
|
31
31
|
AdbSyncStatErrorCode[AdbSyncStatErrorCode["EEXIST"] = 17] = "EEXIST";
|
|
32
32
|
AdbSyncStatErrorCode[AdbSyncStatErrorCode["EFAULT"] = 14] = "EFAULT";
|
|
@@ -47,7 +47,7 @@ export var AdbSyncStatErrorCode;
|
|
|
47
47
|
AdbSyncStatErrorCode[AdbSyncStatErrorCode["EPERM"] = 1] = "EPERM";
|
|
48
48
|
AdbSyncStatErrorCode[AdbSyncStatErrorCode["EROFS"] = 30] = "EROFS";
|
|
49
49
|
AdbSyncStatErrorCode[AdbSyncStatErrorCode["ETXTBSY"] = 26] = "ETXTBSY";
|
|
50
|
-
})(AdbSyncStatErrorCode || (AdbSyncStatErrorCode = {}));
|
|
50
|
+
})(AdbSyncStatErrorCode = AdbSyncStatErrorCode || (AdbSyncStatErrorCode = {}));
|
|
51
51
|
export const AdbSyncStatResponse = new Struct({ littleEndian: true })
|
|
52
52
|
.uint32('error', placeholder())
|
|
53
53
|
.uint64('dev')
|
|
@@ -63,42 +63,50 @@ export const AdbSyncStatResponse = new Struct({ littleEndian: true })
|
|
|
63
63
|
.extra({
|
|
64
64
|
id: AdbSyncResponseId.Stat,
|
|
65
65
|
get type() { return this.mode >> 12; },
|
|
66
|
-
get permission() { return this.mode &
|
|
66
|
+
get permission() { return this.mode & 0b00001111_11111111; },
|
|
67
67
|
})
|
|
68
68
|
.postDeserialize((object) => {
|
|
69
69
|
if (object.error) {
|
|
70
70
|
throw new Error(AdbSyncStatErrorCode[object.error]);
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
|
-
const
|
|
73
|
+
const STAT_RESPONSE_TYPES = {
|
|
74
74
|
[AdbSyncResponseId.Stat]: AdbSyncStatResponse,
|
|
75
75
|
};
|
|
76
|
-
const
|
|
76
|
+
const LSTAT_RESPONSE_TYPES = {
|
|
77
77
|
[AdbSyncResponseId.Lstat]: AdbSyncLstatResponse,
|
|
78
78
|
};
|
|
79
|
-
const
|
|
79
|
+
const LSTAT_V2_RESPONSE_TYPES = {
|
|
80
80
|
[AdbSyncResponseId.Lstat2]: AdbSyncStatResponse,
|
|
81
81
|
};
|
|
82
|
-
export function adbSyncLstat(stream, path, v2) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
82
|
+
export async function adbSyncLstat(stream, writer, path, v2) {
|
|
83
|
+
let requestId;
|
|
84
|
+
let responseType;
|
|
85
|
+
if (v2) {
|
|
86
|
+
requestId = AdbSyncRequestId.Lstat2;
|
|
87
|
+
responseType = LSTAT_V2_RESPONSE_TYPES;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
requestId = AdbSyncRequestId.Lstat;
|
|
91
|
+
responseType = LSTAT_RESPONSE_TYPES;
|
|
92
|
+
}
|
|
93
|
+
await adbSyncWriteRequest(writer, requestId, path);
|
|
94
|
+
const response = await adbSyncReadResponse(stream, responseType);
|
|
95
|
+
switch (response.id) {
|
|
96
|
+
case AdbSyncResponseId.Lstat:
|
|
97
|
+
return {
|
|
98
|
+
mode: response.mode,
|
|
99
|
+
size: BigInt(response.size),
|
|
100
|
+
mtime: BigInt(response.mtime),
|
|
101
|
+
get type() { return response.type; },
|
|
102
|
+
get permission() { return response.permission; },
|
|
103
|
+
};
|
|
104
|
+
default:
|
|
105
|
+
return response;
|
|
106
|
+
}
|
|
97
107
|
}
|
|
98
|
-
export function adbSyncStat(stream, path) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
return adbSyncReadResponse(stream, StatResponseType);
|
|
102
|
-
});
|
|
108
|
+
export async function adbSyncStat(stream, writer, path) {
|
|
109
|
+
await adbSyncWriteRequest(writer, AdbSyncRequestId.Stat, path);
|
|
110
|
+
return await adbSyncReadResponse(stream, STAT_RESPONSE_TYPES);
|
|
103
111
|
}
|
|
104
112
|
//# sourceMappingURL=stat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/commands/sync/stat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { AutoDisposable } from '@yume-chan/event';
|
|
2
|
+
import type { Adb } from '../../adb.js';
|
|
3
|
+
import type { AdbSocket } from '../../socket/index.js';
|
|
4
|
+
import { AdbBufferedStream, ReadableStream, WritableStream, WritableStreamDefaultWriter } from '../../stream/index.js';
|
|
5
|
+
import { AutoResetEvent } from '../../utils/index.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;
|
|
13
|
+
export declare class AdbSync extends AutoDisposable {
|
|
14
|
+
protected adb: Adb;
|
|
15
|
+
protected stream: AdbBufferedStream;
|
|
16
|
+
protected writer: WritableStreamDefaultWriter<Uint8Array>;
|
|
17
|
+
protected sendLock: AutoResetEvent;
|
|
18
|
+
get supportsStat(): boolean;
|
|
19
|
+
get supportsList2(): boolean;
|
|
20
|
+
get fixedPushMkdir(): boolean;
|
|
21
|
+
get needPushMkdirWorkaround(): boolean;
|
|
22
|
+
constructor(adb: Adb, socket: AdbSocket);
|
|
23
|
+
lstat(path: string): Promise<import("./stat.js").AdbSyncStat>;
|
|
24
|
+
stat(path: string): Promise<{
|
|
25
|
+
id: import("./response.js").AdbSyncResponseId.Stat;
|
|
26
|
+
readonly type: import("./stat.js").LinuxFileType;
|
|
27
|
+
readonly permission: number;
|
|
28
|
+
error: import("./stat.js").AdbSyncStatErrorCode;
|
|
29
|
+
dev: bigint;
|
|
30
|
+
ino: bigint;
|
|
31
|
+
mode: number;
|
|
32
|
+
nlink: number;
|
|
33
|
+
uid: number;
|
|
34
|
+
gid: number;
|
|
35
|
+
size: bigint;
|
|
36
|
+
atime: bigint;
|
|
37
|
+
mtime: bigint;
|
|
38
|
+
ctime: bigint;
|
|
39
|
+
}>;
|
|
40
|
+
isDirectory(path: string): Promise<boolean>;
|
|
41
|
+
opendir(path: string): AsyncGenerator<AdbSyncEntry, void, void>;
|
|
42
|
+
readdir(path: string): Promise<AdbSyncEntry[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Read the content of a file on device.
|
|
45
|
+
*
|
|
46
|
+
* @param filename The full path of the file on device to read.
|
|
47
|
+
* @returns A `ReadableStream` that reads from the file.
|
|
48
|
+
*/
|
|
49
|
+
read(filename: string): ReadableStream<Uint8Array>;
|
|
50
|
+
/**
|
|
51
|
+
* Write (or overwrite) a file on device.
|
|
52
|
+
*
|
|
53
|
+
* @param filename The full path of the file on device to write.
|
|
54
|
+
* @param mode The unix permissions of the file.
|
|
55
|
+
* @param mtime The modified time of the file.
|
|
56
|
+
* @returns A `WritableStream` that writes to the file.
|
|
57
|
+
*/
|
|
58
|
+
write(filename: string, mode?: number, mtime?: number): WritableStream<Uint8Array>;
|
|
59
|
+
dispose(): Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +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;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"}
|