@yume-chan/adb 0.0.18 → 0.0.20
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 +54 -0
- package/CHANGELOG.md +25 -1
- package/README.md +220 -103
- package/esm/adb.d.ts +43 -60
- package/esm/adb.d.ts.map +1 -1
- package/esm/adb.js +68 -249
- package/esm/adb.js.map +1 -1
- package/esm/banner.d.ts +17 -0
- package/esm/banner.d.ts.map +1 -0
- package/esm/banner.js +67 -0
- package/esm/banner.js.map +1 -0
- package/esm/commands/base.d.ts +6 -6
- package/esm/commands/base.d.ts.map +1 -1
- package/esm/commands/base.js +8 -8
- package/esm/commands/framebuffer.d.ts +53 -53
- package/esm/commands/framebuffer.d.ts.map +1 -1
- package/esm/commands/framebuffer.js +46 -46
- package/esm/commands/framebuffer.js.map +1 -1
- package/esm/commands/index.d.ts +7 -8
- package/esm/commands/index.d.ts.map +1 -1
- package/esm/commands/index.js +7 -8
- package/esm/commands/index.js.map +1 -1
- package/esm/commands/power.d.ts +22 -22
- package/esm/commands/power.js +48 -48
- package/esm/commands/reverse.d.ts +40 -28
- package/esm/commands/reverse.d.ts.map +1 -1
- package/esm/commands/reverse.js +130 -100
- package/esm/commands/reverse.js.map +1 -1
- package/esm/commands/subprocess/command.d.ts +57 -51
- package/esm/commands/subprocess/command.d.ts.map +1 -1
- package/esm/commands/subprocess/command.js +86 -80
- package/esm/commands/subprocess/command.js.map +1 -1
- package/esm/commands/subprocess/index.d.ts +3 -3
- package/esm/commands/subprocess/index.js +3 -3
- package/esm/commands/subprocess/protocols/index.d.ts +3 -3
- package/esm/commands/subprocess/protocols/index.js +3 -3
- package/esm/commands/subprocess/protocols/none.d.ts +30 -35
- package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/none.js +65 -55
- package/esm/commands/subprocess/protocols/none.js.map +1 -1
- package/esm/commands/subprocess/protocols/shell.d.ts +33 -38
- package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/shell.js +172 -162
- package/esm/commands/subprocess/protocols/shell.js.map +1 -1
- package/esm/commands/subprocess/protocols/types.d.ts +48 -49
- package/esm/commands/subprocess/protocols/types.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/types.js +1 -1
- package/esm/commands/subprocess/utils.d.ts +1 -1
- package/esm/commands/subprocess/utils.js +18 -18
- package/esm/commands/sync/index.d.ts +8 -7
- package/esm/commands/sync/index.d.ts.map +1 -1
- package/esm/commands/sync/index.js +8 -7
- package/esm/commands/sync/index.js.map +1 -1
- package/esm/commands/sync/list.d.ts +42 -40
- package/esm/commands/sync/list.d.ts.map +1 -1
- package/esm/commands/sync/list.js +67 -47
- package/esm/commands/sync/list.js.map +1 -1
- package/esm/commands/sync/pull.d.ts +13 -11
- package/esm/commands/sync/pull.d.ts.map +1 -1
- package/esm/commands/sync/pull.js +35 -37
- package/esm/commands/sync/pull.js.map +1 -1
- package/esm/commands/sync/push.d.ts +57 -7
- package/esm/commands/sync/push.d.ts.map +1 -1
- package/esm/commands/sync/push.js +89 -22
- package/esm/commands/sync/push.js.map +1 -1
- package/esm/commands/sync/request.d.ts +26 -23
- package/esm/commands/sync/request.d.ts.map +1 -1
- package/esm/commands/sync/request.js +40 -42
- package/esm/commands/sync/request.js.map +1 -1
- package/esm/commands/sync/response.d.ts +19 -19
- package/esm/commands/sync/response.d.ts.map +1 -1
- package/esm/commands/sync/response.js +54 -54
- package/esm/commands/sync/response.js.map +1 -1
- package/esm/commands/sync/socket.d.ts +22 -0
- package/esm/commands/sync/socket.d.ts.map +1 -0
- package/esm/commands/sync/socket.js +69 -0
- package/esm/commands/sync/socket.js.map +1 -0
- package/esm/commands/sync/stat.d.ts +72 -72
- package/esm/commands/sync/stat.d.ts.map +1 -1
- package/esm/commands/sync/stat.js +116 -104
- package/esm/commands/sync/stat.js.map +1 -1
- package/esm/commands/sync/sync.d.ts +65 -60
- package/esm/commands/sync/sync.d.ts.map +1 -1
- package/esm/commands/sync/sync.js +123 -149
- package/esm/commands/sync/sync.js.map +1 -1
- package/esm/commands/tcpip.d.ts +5 -5
- package/esm/commands/tcpip.d.ts.map +1 -1
- package/esm/commands/tcpip.js +20 -18
- package/esm/commands/tcpip.js.map +1 -1
- package/esm/{auth.d.ts → daemon/auth.d.ts} +50 -51
- package/esm/daemon/auth.d.ts.map +1 -0
- package/esm/{auth.js → daemon/auth.js} +95 -96
- package/esm/daemon/auth.js.map +1 -0
- package/esm/daemon/connection.d.ts +11 -0
- package/esm/daemon/connection.d.ts.map +1 -0
- package/esm/daemon/connection.js +2 -0
- package/esm/daemon/connection.js.map +1 -0
- package/esm/{crypto.d.ts → daemon/crypto.d.ts} +36 -36
- package/esm/daemon/crypto.d.ts.map +1 -0
- package/esm/{crypto.js → daemon/crypto.js} +244 -248
- package/esm/daemon/crypto.js.map +1 -0
- package/esm/daemon/device.d.ts +9 -0
- package/esm/daemon/device.d.ts.map +1 -0
- package/esm/daemon/device.js +2 -0
- package/esm/daemon/device.js.map +1 -0
- package/esm/daemon/dispatcher.d.ts +42 -0
- package/esm/daemon/dispatcher.d.ts.map +1 -0
- package/esm/{socket → daemon}/dispatcher.js +225 -234
- package/esm/daemon/dispatcher.js.map +1 -0
- package/esm/daemon/index.d.ts +8 -0
- package/esm/daemon/index.d.ts.map +1 -0
- package/esm/daemon/index.js +8 -0
- package/esm/daemon/index.js.map +1 -0
- package/esm/{packet.d.ts → daemon/packet.d.ts} +45 -46
- package/esm/daemon/packet.d.ts.map +1 -0
- package/esm/{packet.js → daemon/packet.js} +43 -48
- package/esm/daemon/packet.js.map +1 -0
- package/esm/daemon/socket.d.ts +58 -0
- package/esm/daemon/socket.d.ts.map +1 -0
- package/esm/{socket → daemon}/socket.js +121 -118
- package/esm/daemon/socket.js.map +1 -0
- package/esm/daemon/transport.d.ts +45 -0
- package/esm/daemon/transport.d.ts.map +1 -0
- package/esm/daemon/transport.js +184 -0
- package/esm/daemon/transport.js.map +1 -0
- package/esm/features.d.ts +10 -7
- package/esm/features.d.ts.map +1 -1
- package/esm/features.js +13 -10
- package/esm/features.js.map +1 -1
- package/esm/index.d.ts +7 -9
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +7 -9
- package/esm/index.js.map +1 -1
- package/esm/server/client.d.ts +78 -0
- package/esm/server/client.d.ts.map +1 -0
- package/esm/server/client.js +329 -0
- package/esm/server/client.js.map +1 -0
- package/esm/server/index.d.ts +3 -0
- package/esm/server/index.d.ts.map +1 -0
- package/esm/server/index.js +3 -0
- package/esm/server/index.js.map +1 -0
- package/esm/server/transport.d.ts +19 -0
- package/esm/server/transport.d.ts.map +1 -0
- package/esm/server/transport.js +44 -0
- package/esm/server/transport.js.map +1 -0
- package/esm/utils/auto-reset-event.d.ts +8 -9
- package/esm/utils/auto-reset-event.d.ts.map +1 -1
- package/esm/utils/auto-reset-event.js +33 -33
- package/esm/utils/auto-reset-event.js.map +1 -1
- package/esm/utils/base64.d.ts +27 -27
- package/esm/utils/base64.js +246 -246
- package/esm/utils/base64.js.map +1 -1
- package/esm/utils/conditional-variable.d.ts +8 -0
- package/esm/utils/conditional-variable.d.ts.map +1 -0
- package/esm/utils/conditional-variable.js +34 -0
- package/esm/utils/conditional-variable.js.map +1 -0
- package/esm/utils/hex.d.ts +3 -0
- package/esm/utils/hex.d.ts.map +1 -0
- package/esm/utils/hex.js +55 -0
- package/esm/utils/hex.js.map +1 -0
- package/esm/utils/index.d.ts +6 -3
- package/esm/utils/index.d.ts.map +1 -1
- package/esm/utils/index.js +6 -3
- package/esm/utils/index.js.map +1 -1
- package/esm/utils/no-op.d.ts +7 -0
- package/esm/utils/no-op.d.ts.map +1 -0
- package/esm/utils/no-op.js +12 -0
- package/esm/utils/no-op.js.map +1 -0
- package/package.json +14 -12
- package/src/adb.ts +47 -248
- package/src/banner.ts +82 -0
- package/src/commands/base.ts +1 -1
- package/src/commands/framebuffer.ts +4 -4
- package/src/commands/index.ts +7 -8
- package/src/commands/power.ts +2 -2
- package/src/commands/reverse.ts +90 -70
- package/src/commands/subprocess/command.ts +12 -4
- package/src/commands/subprocess/index.ts +3 -3
- package/src/commands/subprocess/protocols/index.ts +3 -3
- package/src/commands/subprocess/protocols/none.ts +36 -23
- package/src/commands/subprocess/protocols/shell.ts +94 -74
- package/src/commands/subprocess/protocols/types.ts +7 -7
- package/src/commands/subprocess/utils.ts +1 -1
- package/src/commands/sync/index.ts +8 -7
- package/src/commands/sync/list.ts +44 -25
- package/src/commands/sync/pull.ts +40 -45
- package/src/commands/sync/push.ts +158 -39
- package/src/commands/sync/request.ts +21 -16
- package/src/commands/sync/response.ts +10 -9
- package/src/commands/sync/socket.ts +99 -0
- package/src/commands/sync/stat.ts +47 -42
- package/src/commands/sync/sync.ts +73 -116
- package/src/commands/tcpip.ts +9 -7
- package/src/{auth.ts → daemon/auth.ts} +24 -23
- package/src/{crypto.ts → daemon/crypto.ts} +25 -33
- package/src/daemon/device.ts +14 -0
- package/src/{socket → daemon}/dispatcher.ts +95 -117
- package/src/daemon/index.ts +7 -0
- package/src/daemon/packet.ts +75 -0
- package/src/{socket → daemon}/socket.ts +71 -56
- package/src/daemon/transport.ts +269 -0
- package/src/features.ts +9 -6
- package/src/index.ts +3 -5
- package/src/server/client.ts +476 -0
- package/src/server/index.ts +2 -0
- package/src/server/transport.ts +77 -0
- package/src/utils/auto-reset-event.ts +14 -15
- package/src/utils/conditional-variable.ts +45 -0
- package/src/utils/hex.ts +58 -0
- package/src/utils/index.ts +6 -3
- package/src/utils/no-op.ts +12 -0
- package/tsconfig.build.json +12 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/esm/auth.d.ts.map +0 -1
- package/esm/auth.js.map +0 -1
- package/esm/backend.d.ts +0 -9
- package/esm/backend.d.ts.map +0 -1
- package/esm/backend.js +0 -2
- package/esm/backend.js.map +0 -1
- package/esm/commands/install.d.ts +0 -4
- package/esm/commands/install.d.ts.map +0 -1
- package/esm/commands/install.js +0 -29
- package/esm/commands/install.js.map +0 -1
- package/esm/crypto.d.ts.map +0 -1
- package/esm/crypto.js.map +0 -1
- package/esm/packet.d.ts.map +0 -1
- package/esm/packet.js.map +0 -1
- package/esm/socket/dispatcher.d.ts +0 -60
- package/esm/socket/dispatcher.d.ts.map +0 -1
- package/esm/socket/dispatcher.js.map +0 -1
- package/esm/socket/index.d.ts +0 -3
- package/esm/socket/index.d.ts.map +0 -1
- package/esm/socket/index.js +0 -3
- package/esm/socket/index.js.map +0 -1
- package/esm/socket/socket.d.ts +0 -60
- package/esm/socket/socket.d.ts.map +0 -1
- package/esm/socket/socket.js.map +0 -1
- package/src/backend.ts +0 -14
- package/src/commands/install.ts +0 -40
- package/src/packet.ts +0 -90
- package/src/socket/index.ts +0 -2
package/esm/adb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACH,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,OAAO,EACP,eAAe,EAGlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,SACb,SAAQ,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAC5D,SAAS;IACb,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,wBAAwB,GAAG,CACnC,MAAM,EAAE,SAAS,KAChB,cAAc,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,SAAS;IACtB,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAE3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAEpD,gBAAgB,CACZ,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,MAAM,GACjB,cAAc,CAAC,MAAM,CAAC,CAAC;IAE1B,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAE3D,mBAAmB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,qBAAa,GAAI,YAAW,SAAS;IACjC,SAAgB,SAAS,EAAE,YAAY,CAAC;IAExC,IAAW,MAAM,WAEhB;IAED,IAAW,cAAc,WAExB;IAED,IAAW,MAAM,cAEhB;IAED,IAAW,YAAY,kBAEtB;IAED,SAAgB,UAAU,EAAE,aAAa,CAAC;IAC1C,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,OAAO,EAAE,iBAAiB,CAAC;IAC3C,SAAgB,KAAK,EAAE,eAAe,CAAC;gBAEpB,SAAS,EAAE,YAAY;IASnC,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAIvC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIjD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQrC,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAU3C,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAKxB,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
|
package/esm/adb.js
CHANGED
|
@@ -1,250 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
let banner;
|
|
71
|
-
try {
|
|
72
|
-
// https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
|
|
73
|
-
// There are some other feature constants, but some of them are only used by ADB server, not devices (daemons).
|
|
74
|
-
const features = [
|
|
75
|
-
AdbFeatures.ShellV2,
|
|
76
|
-
AdbFeatures.Cmd,
|
|
77
|
-
AdbFeatures.StatV2,
|
|
78
|
-
AdbFeatures.ListV2,
|
|
79
|
-
AdbFeatures.FixedPushMkdir,
|
|
80
|
-
"apex",
|
|
81
|
-
"abb",
|
|
82
|
-
// only tells the client the symlink timestamp issue in `adb push --sync` has been fixed.
|
|
83
|
-
// No special handling required.
|
|
84
|
-
"fixed_push_symlink_timestamp",
|
|
85
|
-
"abb_exec",
|
|
86
|
-
"remount_shell",
|
|
87
|
-
"track_app",
|
|
88
|
-
"sendrecv_v2",
|
|
89
|
-
"sendrecv_v2_brotli",
|
|
90
|
-
"sendrecv_v2_lz4",
|
|
91
|
-
"sendrecv_v2_zstd",
|
|
92
|
-
"sendrecv_v2_dry_run_send",
|
|
93
|
-
].join(",");
|
|
94
|
-
await sendPacket({
|
|
95
|
-
command: AdbCommand.Connect,
|
|
96
|
-
arg0: version,
|
|
97
|
-
arg1: maxPayloadSize,
|
|
98
|
-
// The terminating `;` is required in formal definition
|
|
99
|
-
// But ADB daemon (all versions) can still work without it
|
|
100
|
-
payload: encodeUtf8(`host::features=${features};`),
|
|
101
|
-
});
|
|
102
|
-
banner = await resolver.promise;
|
|
103
|
-
}
|
|
104
|
-
finally {
|
|
105
|
-
// When failed, release locks on `connection` so the caller can try again.
|
|
106
|
-
// When success, also release locks so `AdbPacketDispatcher` can use them.
|
|
107
|
-
abortController.abort();
|
|
108
|
-
writer.releaseLock();
|
|
109
|
-
// Wait until pipe stops (`ReadableStream` lock released)
|
|
110
|
-
await pipe;
|
|
111
|
-
}
|
|
112
|
-
return new Adb(connection, version, maxPayloadSize, banner);
|
|
113
|
-
}
|
|
114
|
-
dispatcher;
|
|
115
|
-
get disconnected() {
|
|
116
|
-
return this.dispatcher.disconnected;
|
|
117
|
-
}
|
|
118
|
-
_protocolVersion;
|
|
119
|
-
get protocolVersion() {
|
|
120
|
-
return this._protocolVersion;
|
|
121
|
-
}
|
|
122
|
-
_product;
|
|
123
|
-
get product() {
|
|
124
|
-
return this._product;
|
|
125
|
-
}
|
|
126
|
-
_model;
|
|
127
|
-
get model() {
|
|
128
|
-
return this._model;
|
|
129
|
-
}
|
|
130
|
-
_device;
|
|
131
|
-
get device() {
|
|
132
|
-
return this._device;
|
|
133
|
-
}
|
|
134
|
-
_features = [];
|
|
135
|
-
get features() {
|
|
136
|
-
return this._features;
|
|
137
|
-
}
|
|
138
|
-
subprocess;
|
|
139
|
-
power;
|
|
140
|
-
reverse;
|
|
141
|
-
tcpip;
|
|
142
|
-
constructor(connection, version, maxPayloadSize, banner) {
|
|
143
|
-
this.parseBanner(banner);
|
|
144
|
-
let calculateChecksum;
|
|
145
|
-
let appendNullToServiceString;
|
|
146
|
-
if (version >= VERSION_OMIT_CHECKSUM) {
|
|
147
|
-
calculateChecksum = false;
|
|
148
|
-
appendNullToServiceString = false;
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
calculateChecksum = true;
|
|
152
|
-
appendNullToServiceString = true;
|
|
153
|
-
}
|
|
154
|
-
this.dispatcher = new AdbPacketDispatcher(connection, {
|
|
155
|
-
calculateChecksum,
|
|
156
|
-
appendNullToServiceString,
|
|
157
|
-
maxPayloadSize,
|
|
158
|
-
});
|
|
159
|
-
this._protocolVersion = version;
|
|
160
|
-
this.subprocess = new AdbSubprocess(this);
|
|
161
|
-
this.power = new AdbPower(this);
|
|
162
|
-
this.reverse = new AdbReverseCommand(this);
|
|
163
|
-
this.tcpip = new AdbTcpIpCommand(this);
|
|
164
|
-
}
|
|
165
|
-
parseBanner(banner) {
|
|
166
|
-
const pieces = banner.split("::");
|
|
167
|
-
if (pieces.length > 1) {
|
|
168
|
-
const props = pieces[1];
|
|
169
|
-
for (const prop of props.split(";")) {
|
|
170
|
-
if (!prop) {
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
const keyValue = prop.split("=");
|
|
174
|
-
if (keyValue.length !== 2) {
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
const [key, value] = keyValue;
|
|
178
|
-
switch (key) {
|
|
179
|
-
case AdbPropKey.Product:
|
|
180
|
-
this._product = value;
|
|
181
|
-
break;
|
|
182
|
-
case AdbPropKey.Model:
|
|
183
|
-
this._model = value;
|
|
184
|
-
break;
|
|
185
|
-
case AdbPropKey.Device:
|
|
186
|
-
this._device = value;
|
|
187
|
-
break;
|
|
188
|
-
case AdbPropKey.Features:
|
|
189
|
-
this._features = value.split(",");
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Add a handler for incoming socket.
|
|
197
|
-
* @param handler A function to call with new incoming sockets. It must return `true` if it accepts the socket.
|
|
198
|
-
* @returns A function to remove the handler.
|
|
199
|
-
*/
|
|
200
|
-
onIncomingSocket(handler) {
|
|
201
|
-
return this.dispatcher.onIncomingSocket(handler);
|
|
202
|
-
}
|
|
203
|
-
async createSocket(service) {
|
|
204
|
-
return this.dispatcher.createSocket(service);
|
|
205
|
-
}
|
|
206
|
-
async createSocketAndWait(service) {
|
|
207
|
-
const socket = await this.createSocket(service);
|
|
208
|
-
const gatherStream = new GatherStringStream();
|
|
209
|
-
await socket.readable
|
|
210
|
-
.pipeThrough(new DecodeUtf8Stream())
|
|
211
|
-
.pipeTo(gatherStream);
|
|
212
|
-
return gatherStream.result;
|
|
213
|
-
}
|
|
214
|
-
async getProp(key) {
|
|
215
|
-
const stdout = await this.subprocess.spawnAndWaitLegacy([
|
|
216
|
-
"getprop",
|
|
217
|
-
key,
|
|
218
|
-
]);
|
|
219
|
-
return stdout.trim();
|
|
220
|
-
}
|
|
221
|
-
async rm(...filenames) {
|
|
222
|
-
const stdout = await this.subprocess.spawnAndWaitLegacy([
|
|
223
|
-
"rm",
|
|
224
|
-
"-rf",
|
|
225
|
-
...filenames.map((arg) => escapeArg(arg)),
|
|
226
|
-
]);
|
|
227
|
-
return stdout;
|
|
228
|
-
}
|
|
229
|
-
install() {
|
|
230
|
-
return install(this);
|
|
231
|
-
}
|
|
232
|
-
async sync() {
|
|
233
|
-
const socket = await this.createSocket("sync:");
|
|
234
|
-
return new AdbSync(this, socket);
|
|
235
|
-
}
|
|
236
|
-
async framebuffer() {
|
|
237
|
-
return framebuffer(this);
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Close the ADB connection.
|
|
241
|
-
*
|
|
242
|
-
* Note that it won't close the streams from backends.
|
|
243
|
-
* The streams are both physically and logically intact,
|
|
244
|
-
* and can be reused.
|
|
245
|
-
*/
|
|
246
|
-
async close() {
|
|
247
|
-
await this.dispatcher.close();
|
|
248
|
-
}
|
|
249
|
-
}
|
|
1
|
+
import { DecodeUtf8Stream, GatherStringStream } from "@yume-chan/stream-extra";
|
|
2
|
+
import { AdbPower, AdbReverseCommand, AdbSubprocess, AdbSync, AdbTcpIpCommand, escapeArg, framebuffer, } from "./commands/index.js";
|
|
3
|
+
export class Adb {
|
|
4
|
+
transport;
|
|
5
|
+
get serial() {
|
|
6
|
+
return this.transport.serial;
|
|
7
|
+
}
|
|
8
|
+
get maxPayloadSize() {
|
|
9
|
+
return this.transport.maxPayloadSize;
|
|
10
|
+
}
|
|
11
|
+
get banner() {
|
|
12
|
+
return this.transport.banner;
|
|
13
|
+
}
|
|
14
|
+
get disconnected() {
|
|
15
|
+
return this.transport.disconnected;
|
|
16
|
+
}
|
|
17
|
+
subprocess;
|
|
18
|
+
power;
|
|
19
|
+
reverse;
|
|
20
|
+
tcpip;
|
|
21
|
+
constructor(transport) {
|
|
22
|
+
this.transport = transport;
|
|
23
|
+
this.subprocess = new AdbSubprocess(this);
|
|
24
|
+
this.power = new AdbPower(this);
|
|
25
|
+
this.reverse = new AdbReverseCommand(this);
|
|
26
|
+
this.tcpip = new AdbTcpIpCommand(this);
|
|
27
|
+
}
|
|
28
|
+
supportsFeature(feature) {
|
|
29
|
+
return this.banner.features.includes(feature);
|
|
30
|
+
}
|
|
31
|
+
async createSocket(service) {
|
|
32
|
+
return this.transport.connect(service);
|
|
33
|
+
}
|
|
34
|
+
async createSocketAndWait(service) {
|
|
35
|
+
const socket = await this.createSocket(service);
|
|
36
|
+
const gatherStream = new GatherStringStream();
|
|
37
|
+
await socket.readable
|
|
38
|
+
.pipeThrough(new DecodeUtf8Stream())
|
|
39
|
+
.pipeTo(gatherStream);
|
|
40
|
+
return gatherStream.result;
|
|
41
|
+
}
|
|
42
|
+
async getProp(key) {
|
|
43
|
+
const stdout = await this.subprocess.spawnAndWaitLegacy([
|
|
44
|
+
"getprop",
|
|
45
|
+
key,
|
|
46
|
+
]);
|
|
47
|
+
return stdout.trim();
|
|
48
|
+
}
|
|
49
|
+
async rm(...filenames) {
|
|
50
|
+
// https://android.googlesource.com/platform/packages/modules/adb/+/1a0fb8846d4e6b671c8aa7f137a8c21d7b248716/client/adb_install.cpp#984
|
|
51
|
+
const stdout = await this.subprocess.spawnAndWaitLegacy([
|
|
52
|
+
"rm",
|
|
53
|
+
...filenames.map((arg) => escapeArg(arg)),
|
|
54
|
+
"</dev/null",
|
|
55
|
+
]);
|
|
56
|
+
return stdout;
|
|
57
|
+
}
|
|
58
|
+
async sync() {
|
|
59
|
+
const socket = await this.createSocket("sync:");
|
|
60
|
+
return new AdbSync(this, socket);
|
|
61
|
+
}
|
|
62
|
+
async framebuffer() {
|
|
63
|
+
return framebuffer(this);
|
|
64
|
+
}
|
|
65
|
+
async close() {
|
|
66
|
+
await this.transport.close();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
250
69
|
//# sourceMappingURL=adb.js.map
|
package/esm/adb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb.js","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adb.js","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"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"}
|
package/esm/banner.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AdbFeature } from "./features.js";
|
|
2
|
+
export declare enum AdbBannerKey {
|
|
3
|
+
Product = "ro.product.name",
|
|
4
|
+
Model = "ro.product.model",
|
|
5
|
+
Device = "ro.product.device",
|
|
6
|
+
Features = "features"
|
|
7
|
+
}
|
|
8
|
+
export declare class AdbBanner {
|
|
9
|
+
#private;
|
|
10
|
+
static parse(banner: string): AdbBanner;
|
|
11
|
+
get product(): string | undefined;
|
|
12
|
+
get model(): string | undefined;
|
|
13
|
+
get device(): string | undefined;
|
|
14
|
+
get features(): AdbFeature[];
|
|
15
|
+
constructor(product: string | undefined, model: string | undefined, device: string | undefined, features: AdbFeature[]);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=banner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,oBAAY,YAAY;IACpB,OAAO,oBAAoB;IAC3B,KAAK,qBAAqB;IAC1B,MAAM,sBAAsB;IAC5B,QAAQ,aAAa;CACxB;AAED,qBAAa,SAAS;;WACJ,KAAK,CAAC,MAAM,EAAE,MAAM;IAyClC,IAAW,OAAO,uBAEjB;IAGD,IAAW,KAAK,uBAEf;IAGD,IAAW,MAAM,uBAEhB;IAGD,IAAW,QAAQ,iBAElB;gBAGG,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,UAAU,EAAE;CAO7B"}
|
package/esm/banner.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export var AdbBannerKey;
|
|
2
|
+
(function (AdbBannerKey) {
|
|
3
|
+
AdbBannerKey["Product"] = "ro.product.name";
|
|
4
|
+
AdbBannerKey["Model"] = "ro.product.model";
|
|
5
|
+
AdbBannerKey["Device"] = "ro.product.device";
|
|
6
|
+
AdbBannerKey["Features"] = "features";
|
|
7
|
+
})(AdbBannerKey = AdbBannerKey || (AdbBannerKey = {}));
|
|
8
|
+
export class AdbBanner {
|
|
9
|
+
static parse(banner) {
|
|
10
|
+
let product;
|
|
11
|
+
let model;
|
|
12
|
+
let device;
|
|
13
|
+
let features = [];
|
|
14
|
+
const pieces = banner.split("::");
|
|
15
|
+
if (pieces.length > 1) {
|
|
16
|
+
const props = pieces[1];
|
|
17
|
+
for (const prop of props.split(";")) {
|
|
18
|
+
if (!prop) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const keyValue = prop.split("=");
|
|
22
|
+
if (keyValue.length !== 2) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const [key, value] = keyValue;
|
|
26
|
+
switch (key) {
|
|
27
|
+
case AdbBannerKey.Product:
|
|
28
|
+
product = value;
|
|
29
|
+
break;
|
|
30
|
+
case AdbBannerKey.Model:
|
|
31
|
+
model = value;
|
|
32
|
+
break;
|
|
33
|
+
case AdbBannerKey.Device:
|
|
34
|
+
device = value;
|
|
35
|
+
break;
|
|
36
|
+
case AdbBannerKey.Features:
|
|
37
|
+
features = value.split(",");
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return new AdbBanner(product, model, device, features);
|
|
43
|
+
}
|
|
44
|
+
#product;
|
|
45
|
+
get product() {
|
|
46
|
+
return this.#product;
|
|
47
|
+
}
|
|
48
|
+
#model;
|
|
49
|
+
get model() {
|
|
50
|
+
return this.#model;
|
|
51
|
+
}
|
|
52
|
+
#device;
|
|
53
|
+
get device() {
|
|
54
|
+
return this.#device;
|
|
55
|
+
}
|
|
56
|
+
#features = [];
|
|
57
|
+
get features() {
|
|
58
|
+
return this.#features;
|
|
59
|
+
}
|
|
60
|
+
constructor(product, model, device, features) {
|
|
61
|
+
this.#product = product;
|
|
62
|
+
this.#model = model;
|
|
63
|
+
this.#device = device;
|
|
64
|
+
this.#features = features;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACpB,2CAA2B,CAAA;IAC3B,0CAA0B,CAAA;IAC1B,4CAA4B,CAAA;IAC5B,qCAAqB,CAAA;AACzB,CAAC,EALW,YAAY,GAAZ,YAAY,KAAZ,YAAY,QAKvB;AAED,MAAM,OAAO,SAAS;IACX,MAAM,CAAC,KAAK,CAAC,MAAc;QAC9B,IAAI,OAA2B,CAAC;QAChC,IAAI,KAAyB,CAAC;QAC9B,IAAI,MAA0B,CAAC;QAC/B,IAAI,QAAQ,GAAiB,EAAE,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACjC,IAAI,CAAC,IAAI,EAAE;oBACP,SAAS;iBACZ;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvB,SAAS;iBACZ;gBAED,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC;gBAC9B,QAAQ,GAAG,EAAE;oBACT,KAAK,YAAY,CAAC,OAAO;wBACrB,OAAO,GAAG,KAAK,CAAC;wBAChB,MAAM;oBACV,KAAK,YAAY,CAAC,KAAK;wBACnB,KAAK,GAAG,KAAK,CAAC;wBACd,MAAM;oBACV,KAAK,YAAY,CAAC,MAAM;wBACpB,MAAM,GAAG,KAAK,CAAC;wBACf,MAAM;oBACV,KAAK,YAAY,CAAC,QAAQ;wBACtB,QAAQ,GAAG,KAAM,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;wBAC7C,MAAM;iBACb;aACJ;SACJ;QAED,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED,QAAQ,CAAqB;IAC7B,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,MAAM,CAAqB;IAC3B,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,CAAqB;IAC5B,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,SAAS,GAAiB,EAAE,CAAC;IAC7B,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,YACI,OAA2B,EAC3B,KAAyB,EACzB,MAA0B,EAC1B,QAAsB;QAEtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;CACJ"}
|
package/esm/commands/base.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AutoDisposable } from "@yume-chan/event";
|
|
2
|
-
import {
|
|
3
|
-
export declare class AdbCommandBase extends AutoDisposable {
|
|
4
|
-
protected adb: Adb;
|
|
5
|
-
constructor(adb: Adb);
|
|
6
|
-
}
|
|
1
|
+
import { AutoDisposable } from "@yume-chan/event";
|
|
2
|
+
import type { Adb } from "../adb.js";
|
|
3
|
+
export declare class AdbCommandBase extends AutoDisposable {
|
|
4
|
+
protected adb: Adb;
|
|
5
|
+
constructor(adb: Adb);
|
|
6
|
+
}
|
|
7
7
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/commands/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/commands/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,cAAe,SAAQ,cAAc;IAC9C,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;gBAEA,GAAG,EAAE,GAAG;CAI9B"}
|
package/esm/commands/base.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AutoDisposable } from "@yume-chan/event";
|
|
2
|
-
export class AdbCommandBase extends AutoDisposable {
|
|
3
|
-
adb;
|
|
4
|
-
constructor(adb) {
|
|
5
|
-
super();
|
|
6
|
-
this.adb = adb;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
1
|
+
import { AutoDisposable } from "@yume-chan/event";
|
|
2
|
+
export class AdbCommandBase extends AutoDisposable {
|
|
3
|
+
adb;
|
|
4
|
+
constructor(adb) {
|
|
5
|
+
super();
|
|
6
|
+
this.adb = adb;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
9
|
//# sourceMappingURL=base.js.map
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import Struct from "@yume-chan/struct";
|
|
2
|
-
import {
|
|
3
|
-
export declare const AdbFrameBufferV1: Struct<{
|
|
4
|
-
bpp: number;
|
|
5
|
-
size: number;
|
|
6
|
-
width: number;
|
|
7
|
-
height: number;
|
|
8
|
-
red_offset: number;
|
|
9
|
-
red_length: number;
|
|
10
|
-
blue_offset: number;
|
|
11
|
-
blue_length: number;
|
|
12
|
-
green_offset: number;
|
|
13
|
-
green_length: number;
|
|
14
|
-
alpha_offset: number;
|
|
15
|
-
alpha_length: number;
|
|
16
|
-
data: Uint8Array;
|
|
17
|
-
}, "size", Record<never, never>, undefined>;
|
|
18
|
-
export type AdbFrameBufferV1 = typeof AdbFrameBufferV1["TDeserializeResult"];
|
|
19
|
-
export declare const AdbFrameBufferV2: Struct<{
|
|
20
|
-
bpp: number;
|
|
21
|
-
colorSpace: number;
|
|
22
|
-
size: number;
|
|
23
|
-
width: number;
|
|
24
|
-
height: number;
|
|
25
|
-
red_offset: number;
|
|
26
|
-
red_length: number;
|
|
27
|
-
blue_offset: number;
|
|
28
|
-
blue_length: number;
|
|
29
|
-
green_offset: number;
|
|
30
|
-
green_length: number;
|
|
31
|
-
alpha_offset: number;
|
|
32
|
-
alpha_length: number;
|
|
33
|
-
data: Uint8Array;
|
|
34
|
-
}, "size", Record<never, never>, undefined>;
|
|
35
|
-
export type AdbFrameBufferV2 = typeof AdbFrameBufferV2["TDeserializeResult"];
|
|
36
|
-
/**
|
|
37
|
-
* ADB uses 8 int32 fields to describe bit depths
|
|
38
|
-
*
|
|
39
|
-
* The only combination I have seen is RGBA8888, which is
|
|
40
|
-
*
|
|
41
|
-
* red_offset: 0
|
|
42
|
-
* red_length: 8
|
|
43
|
-
* blue_offset: 16
|
|
44
|
-
* blue_length: 8
|
|
45
|
-
* green_offset: 8
|
|
46
|
-
* green_length: 8
|
|
47
|
-
* alpha_offset: 24
|
|
48
|
-
* alpha_length: 8
|
|
49
|
-
*
|
|
50
|
-
* But it doesn't mean that other combinations are not possible.
|
|
51
|
-
*/
|
|
52
|
-
export type AdbFrameBuffer = AdbFrameBufferV1 | AdbFrameBufferV2;
|
|
53
|
-
export declare function framebuffer(adb: Adb): Promise<AdbFrameBuffer>;
|
|
1
|
+
import Struct from "@yume-chan/struct";
|
|
2
|
+
import type { Adb } from "../adb.js";
|
|
3
|
+
export declare const AdbFrameBufferV1: Struct<{
|
|
4
|
+
bpp: number;
|
|
5
|
+
size: number;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
red_offset: number;
|
|
9
|
+
red_length: number;
|
|
10
|
+
blue_offset: number;
|
|
11
|
+
blue_length: number;
|
|
12
|
+
green_offset: number;
|
|
13
|
+
green_length: number;
|
|
14
|
+
alpha_offset: number;
|
|
15
|
+
alpha_length: number;
|
|
16
|
+
data: Uint8Array;
|
|
17
|
+
}, "size", Record<never, never>, undefined>;
|
|
18
|
+
export type AdbFrameBufferV1 = (typeof AdbFrameBufferV1)["TDeserializeResult"];
|
|
19
|
+
export declare const AdbFrameBufferV2: Struct<{
|
|
20
|
+
bpp: number;
|
|
21
|
+
colorSpace: number;
|
|
22
|
+
size: number;
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
red_offset: number;
|
|
26
|
+
red_length: number;
|
|
27
|
+
blue_offset: number;
|
|
28
|
+
blue_length: number;
|
|
29
|
+
green_offset: number;
|
|
30
|
+
green_length: number;
|
|
31
|
+
alpha_offset: number;
|
|
32
|
+
alpha_length: number;
|
|
33
|
+
data: Uint8Array;
|
|
34
|
+
}, "size", Record<never, never>, undefined>;
|
|
35
|
+
export type AdbFrameBufferV2 = (typeof AdbFrameBufferV2)["TDeserializeResult"];
|
|
36
|
+
/**
|
|
37
|
+
* ADB uses 8 int32 fields to describe bit depths
|
|
38
|
+
*
|
|
39
|
+
* The only combination I have seen is RGBA8888, which is
|
|
40
|
+
*
|
|
41
|
+
* red_offset: 0
|
|
42
|
+
* red_length: 8
|
|
43
|
+
* blue_offset: 16
|
|
44
|
+
* blue_length: 8
|
|
45
|
+
* green_offset: 8
|
|
46
|
+
* green_length: 8
|
|
47
|
+
* alpha_offset: 24
|
|
48
|
+
* alpha_length: 8
|
|
49
|
+
*
|
|
50
|
+
* But it doesn't mean that other combinations are not possible.
|
|
51
|
+
*/
|
|
52
|
+
export type AdbFrameBuffer = AdbFrameBufferV1 | AdbFrameBufferV2;
|
|
53
|
+
export declare function framebuffer(adb: Adb): Promise<AdbFrameBuffer>;
|
|
54
54
|
//# sourceMappingURL=framebuffer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framebuffer.d.ts","sourceRoot":"","sources":["../../src/commands/framebuffer.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"framebuffer.d.ts","sourceRoot":"","sources":["../../src/commands/framebuffer.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;2CAamB,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAE/E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;2CAcmB,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAE/E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEjE,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAanE"}
|