@yume-chan/android-bin 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.
Files changed (51) hide show
  1. package/CHANGELOG.json +21 -0
  2. package/CHANGELOG.md +14 -1
  3. package/esm/bu.d.ts +14 -14
  4. package/esm/bu.js +13 -13
  5. package/esm/bug-report.d.ts +37 -37
  6. package/esm/bug-report.d.ts.map +1 -1
  7. package/esm/bug-report.js +136 -135
  8. package/esm/bug-report.js.map +1 -1
  9. package/esm/cmd.d.ts +15 -0
  10. package/esm/cmd.d.ts.map +1 -0
  11. package/esm/cmd.js +54 -0
  12. package/esm/cmd.js.map +1 -0
  13. package/esm/demo-mode.d.ts +43 -42
  14. package/esm/demo-mode.d.ts.map +1 -1
  15. package/esm/demo-mode.js +179 -178
  16. package/esm/demo-mode.js.map +1 -1
  17. package/esm/dumpsys.d.ts +4 -0
  18. package/esm/dumpsys.d.ts.map +1 -0
  19. package/esm/dumpsys.js +4 -0
  20. package/esm/dumpsys.js.map +1 -0
  21. package/esm/index.d.ts +6 -4
  22. package/esm/index.d.ts.map +1 -1
  23. package/esm/index.js +7 -5
  24. package/esm/index.js.map +1 -1
  25. package/esm/logcat.d.ts +91 -89
  26. package/esm/logcat.d.ts.map +1 -1
  27. package/esm/logcat.js +296 -200
  28. package/esm/logcat.js.map +1 -1
  29. package/esm/overlay-display.d.ts +21 -0
  30. package/esm/overlay-display.d.ts.map +1 -0
  31. package/esm/overlay-display.js +78 -0
  32. package/esm/overlay-display.js.map +1 -0
  33. package/esm/pm.d.ts +139 -0
  34. package/esm/pm.d.ts.map +1 -0
  35. package/esm/pm.js +125 -0
  36. package/esm/pm.js.map +1 -0
  37. package/esm/settings.d.ts +12 -12
  38. package/esm/settings.d.ts.map +1 -1
  39. package/esm/settings.js +40 -24
  40. package/esm/settings.js.map +1 -1
  41. package/package.json +11 -10
  42. package/src/bug-report.ts +3 -3
  43. package/src/cmd.ts +67 -0
  44. package/src/demo-mode.ts +4 -3
  45. package/src/index.ts +6 -4
  46. package/src/logcat.ts +224 -25
  47. package/src/overlay-display.ts +115 -0
  48. package/src/pm.ts +281 -0
  49. package/src/settings.ts +54 -26
  50. package/tsconfig.build.json +11 -0
  51. package/tsconfig.build.tsbuildinfo +1 -1
package/esm/logcat.js CHANGED
@@ -1,201 +1,297 @@
1
- // cspell: ignore logcat
2
- import { AdbCommandBase, AdbSubprocessNoneProtocol } from "@yume-chan/adb";
3
- import { BufferedTransformStream, DecodeUtf8Stream, SplitStringStream, WrapReadableStream, WritableStream, } from "@yume-chan/stream-extra";
4
- import Struct, { decodeUtf8, } from "@yume-chan/struct";
5
- // `adb logcat` is an alias to `adb shell logcat`
6
- // so instead of adding to core library, it's implemented here
7
- // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/include/android/log.h;l=141;drc=82b5738732161dbaafb2e2f25cce19cd26b9157d
8
- export var LogId;
9
- (function (LogId) {
10
- LogId[LogId["All"] = -1] = "All";
11
- LogId[LogId["Main"] = 0] = "Main";
12
- LogId[LogId["Radio"] = 1] = "Radio";
13
- LogId[LogId["Events"] = 2] = "Events";
14
- LogId[LogId["System"] = 3] = "System";
15
- LogId[LogId["Crash"] = 4] = "Crash";
16
- LogId[LogId["Stats"] = 5] = "Stats";
17
- LogId[LogId["Security"] = 6] = "Security";
18
- LogId[LogId["Kernel"] = 7] = "Kernel";
19
- })(LogId = LogId || (LogId = {}));
20
- // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/include/android/log.h;l=73;drc=82b5738732161dbaafb2e2f25cce19cd26b9157d
21
- export var AndroidLogPriority;
22
- (function (AndroidLogPriority) {
23
- AndroidLogPriority[AndroidLogPriority["Unknown"] = 0] = "Unknown";
24
- AndroidLogPriority[AndroidLogPriority["Default"] = 1] = "Default";
25
- AndroidLogPriority[AndroidLogPriority["Verbose"] = 2] = "Verbose";
26
- AndroidLogPriority[AndroidLogPriority["Debug"] = 3] = "Debug";
27
- AndroidLogPriority[AndroidLogPriority["Info"] = 4] = "Info";
28
- AndroidLogPriority[AndroidLogPriority["Warn"] = 5] = "Warn";
29
- AndroidLogPriority[AndroidLogPriority["Error"] = 6] = "Error";
30
- AndroidLogPriority[AndroidLogPriority["Fatal"] = 7] = "Fatal";
31
- AndroidLogPriority[AndroidLogPriority["Silent"] = 8] = "Silent";
32
- })(AndroidLogPriority = AndroidLogPriority || (AndroidLogPriority = {}));
33
- // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/logprint.cpp;l=140;drc=8dbf3b2bb6b6d1652d9797e477b9abd03278bb79
34
- export const AndroidLogPriorityToCharacter = {
35
- [AndroidLogPriority.Unknown]: "?",
36
- [AndroidLogPriority.Default]: "?",
37
- [AndroidLogPriority.Verbose]: "V",
38
- [AndroidLogPriority.Debug]: "D",
39
- [AndroidLogPriority.Info]: "I",
40
- [AndroidLogPriority.Warn]: "W",
41
- [AndroidLogPriority.Error]: "E",
42
- [AndroidLogPriority.Fatal]: "F",
43
- [AndroidLogPriority.Silent]: "S",
44
- };
45
- export var LogcatFormat;
46
- (function (LogcatFormat) {
47
- LogcatFormat[LogcatFormat["Brief"] = 0] = "Brief";
48
- LogcatFormat[LogcatFormat["Process"] = 1] = "Process";
49
- LogcatFormat[LogcatFormat["Tag"] = 2] = "Tag";
50
- LogcatFormat[LogcatFormat["Thread"] = 3] = "Thread";
51
- LogcatFormat[LogcatFormat["Raw"] = 4] = "Raw";
52
- LogcatFormat[LogcatFormat["Time"] = 5] = "Time";
53
- LogcatFormat[LogcatFormat["ThreadTime"] = 6] = "ThreadTime";
54
- LogcatFormat[LogcatFormat["Long"] = 7] = "Long";
55
- })(LogcatFormat = LogcatFormat || (LogcatFormat = {}));
56
- const NANOSECONDS_PER_SECOND = BigInt(1e9);
57
- // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/include/log/log_read.h;l=39;drc=82b5738732161dbaafb2e2f25cce19cd26b9157d
58
- export const LoggerEntry = new Struct({ littleEndian: true })
59
- .uint16("payloadSize")
60
- .uint16("headerSize")
61
- .int32("pid")
62
- .uint32("tid")
63
- .uint32("second")
64
- .uint32("nanoseconds")
65
- .uint32("logId")
66
- .uint32("uid")
67
- .extra({
68
- get timestamp() {
69
- return (BigInt(this.second) * NANOSECONDS_PER_SECOND +
70
- BigInt(this.nanoseconds));
71
- },
72
- });
73
- // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/logprint.cpp;l=1415;drc=8dbf3b2bb6b6d1652d9797e477b9abd03278bb79
74
- export function formatAndroidLogEntry(entry, format = LogcatFormat.Brief, modifier) {
75
- const uid = modifier?.uid ? `${entry.uid.toString().padStart(5)}:` : "";
76
- switch (format) {
77
- // TODO: implement other formats
78
- default:
79
- return `${AndroidLogPriorityToCharacter[entry.priority]}/${entry.tag.padEnd(8)}(${uid}${entry.pid
80
- .toString()
81
- .padStart(5)}): ${entry.message}`;
82
- }
83
- }
84
- function findTagEnd(payload) {
85
- for (const separator of [0, " ".charCodeAt(0), ":".charCodeAt(0)]) {
86
- const index = payload.indexOf(separator);
87
- if (index !== -1) {
88
- return index;
89
- }
90
- }
91
- const index = payload.findIndex((x) => x >= 0x7f);
92
- if (index !== -1) {
93
- return index;
94
- }
95
- return payload.length;
96
- }
97
- export async function deserializeAndroidLogEntry(stream) {
98
- const entry = (await LoggerEntry.deserialize(stream));
99
- if (entry.headerSize !== LoggerEntry.size) {
100
- await stream.read(entry.headerSize - LoggerEntry.size);
101
- }
102
- let payload = await stream.read(entry.payloadSize);
103
- // https://cs.android.com/android/platform/superproject/+/master:system/logging/logcat/logcat.cpp;l=193-194;drc=bbe77d66e7bee8bd1f0bc7e5492b5376b0207ef6
104
- // TODO: payload for some log IDs are in binary format.
105
- entry.priority = payload[0];
106
- payload = payload.subarray(1);
107
- const tagEnd = findTagEnd(payload);
108
- entry.tag = decodeUtf8(payload.subarray(0, tagEnd));
109
- entry.message =
110
- tagEnd < payload.length - 1
111
- ? decodeUtf8(payload.subarray(tagEnd + 1))
112
- : "";
113
- return entry;
114
- }
115
- export class Logcat extends AdbCommandBase {
116
- static logIdToName(id) {
117
- return LogId[id];
118
- }
119
- static logNameToId(name) {
120
- const key = name[0].toUpperCase() + name.substring(1);
121
- return LogId[key];
122
- }
123
- static joinLogId(ids) {
124
- return ids.map((id) => Logcat.logIdToName(id)).join(",");
125
- }
126
- static parseSize(value, multiplier) {
127
- const MULTIPLIERS = ["", "Ki", "Mi", "Gi"];
128
- return value * 1024 ** (MULTIPLIERS.indexOf(multiplier) || 0);
129
- }
130
- // TODO: logcat: Support output format before Android 10
131
- // ref https://android-review.googlesource.com/c/platform/system/core/+/748128
132
- static LOG_SIZE_REGEX_10 = /(.*): ring buffer is (.*) (.*)B \((.*) (.*)B consumed\), max entry is (.*) B, max payload is (.*) B/;
133
- // Android 11 added `readable` part
134
- // ref https://android-review.googlesource.com/c/platform/system/core/+/1390940
135
- static LOG_SIZE_REGEX_11 = /(.*): ring buffer is (.*) (.*)B \((.*) (.*)B consumed, (.*) (.*)B readable\), max entry is (.*) B, max payload is (.*) B/;
136
- async getLogSize(ids) {
137
- const { stdout } = await this.adb.subprocess.spawn([
138
- "logcat",
139
- "-g",
140
- ...(ids ? ["-b", Logcat.joinLogId(ids)] : []),
141
- ]);
142
- const result = [];
143
- await stdout
144
- .pipeThrough(new DecodeUtf8Stream())
145
- .pipeThrough(new SplitStringStream("\n"))
146
- .pipeTo(new WritableStream({
147
- write(chunk) {
148
- let match = chunk.match(Logcat.LOG_SIZE_REGEX_11);
149
- if (match) {
150
- result.push({
151
- id: Logcat.logNameToId(match[1]),
152
- size: Logcat.parseSize(Number.parseInt(match[2], 10), match[3]),
153
- readable: Logcat.parseSize(Number.parseInt(match[6], 10), match[7]),
154
- consumed: Logcat.parseSize(Number.parseInt(match[4], 10), match[5]),
155
- maxEntrySize: parseInt(match[8], 10),
156
- maxPayloadSize: parseInt(match[9], 10),
157
- });
158
- }
159
- match = chunk.match(Logcat.LOG_SIZE_REGEX_10);
160
- if (match) {
161
- result.push({
162
- id: Logcat.logNameToId(match[1]),
163
- size: Logcat.parseSize(Number.parseInt(match[2], 10), match[3]),
164
- consumed: Logcat.parseSize(Number.parseInt(match[4], 10), match[5]),
165
- maxEntrySize: parseInt(match[6], 10),
166
- maxPayloadSize: parseInt(match[7], 10),
167
- });
168
- }
169
- },
170
- }));
171
- return result;
172
- }
173
- async clear(ids) {
174
- await this.adb.subprocess.spawnAndWait([
175
- "logcat",
176
- "-c",
177
- ...(ids ? ["-b", Logcat.joinLogId(ids)] : []),
178
- ]);
179
- }
180
- binary(options) {
181
- return new WrapReadableStream(async () => {
182
- // TODO: make `spawn` return synchronously with streams pending
183
- // so it's easier to chain them.
184
- const { stdout } = await this.adb.subprocess.spawn([
185
- "logcat",
186
- "-B",
187
- ...(options?.pid ? ["--pid", options.pid.toString()] : []),
188
- ...(options?.ids
189
- ? ["-b", Logcat.joinLogId(options.ids)]
190
- : []),
191
- ], {
192
- // PERF: None protocol is 150% faster then Shell protocol
193
- protocols: [AdbSubprocessNoneProtocol],
194
- });
195
- return stdout;
196
- }).pipeThrough(new BufferedTransformStream((stream) => {
197
- return deserializeAndroidLogEntry(stream);
198
- }));
199
- }
200
- }
1
+ // cspell: ignore logcat
2
+ // cspell: ignore usec
3
+ import { AdbCommandBase, AdbSubprocessNoneProtocol } from "@yume-chan/adb";
4
+ import { BufferedTransformStream, DecodeUtf8Stream, SplitStringStream, WrapReadableStream, WritableStream, } from "@yume-chan/stream-extra";
5
+ import Struct, { decodeUtf8 } from "@yume-chan/struct";
6
+ // `adb logcat` is an alias to `adb shell logcat`
7
+ // so instead of adding to core library, it's implemented here
8
+ // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/include/android/log.h;l=141;drc=82b5738732161dbaafb2e2f25cce19cd26b9157d
9
+ export var LogId;
10
+ (function (LogId) {
11
+ LogId[LogId["All"] = -1] = "All";
12
+ LogId[LogId["Main"] = 0] = "Main";
13
+ LogId[LogId["Radio"] = 1] = "Radio";
14
+ LogId[LogId["Events"] = 2] = "Events";
15
+ LogId[LogId["System"] = 3] = "System";
16
+ LogId[LogId["Crash"] = 4] = "Crash";
17
+ LogId[LogId["Stats"] = 5] = "Stats";
18
+ LogId[LogId["Security"] = 6] = "Security";
19
+ LogId[LogId["Kernel"] = 7] = "Kernel";
20
+ })(LogId = LogId || (LogId = {}));
21
+ // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/include/android/log.h;l=73;drc=82b5738732161dbaafb2e2f25cce19cd26b9157d
22
+ export var AndroidLogPriority;
23
+ (function (AndroidLogPriority) {
24
+ AndroidLogPriority[AndroidLogPriority["Unknown"] = 0] = "Unknown";
25
+ AndroidLogPriority[AndroidLogPriority["Default"] = 1] = "Default";
26
+ AndroidLogPriority[AndroidLogPriority["Verbose"] = 2] = "Verbose";
27
+ AndroidLogPriority[AndroidLogPriority["Debug"] = 3] = "Debug";
28
+ AndroidLogPriority[AndroidLogPriority["Info"] = 4] = "Info";
29
+ AndroidLogPriority[AndroidLogPriority["Warn"] = 5] = "Warn";
30
+ AndroidLogPriority[AndroidLogPriority["Error"] = 6] = "Error";
31
+ AndroidLogPriority[AndroidLogPriority["Fatal"] = 7] = "Fatal";
32
+ AndroidLogPriority[AndroidLogPriority["Silent"] = 8] = "Silent";
33
+ })(AndroidLogPriority = AndroidLogPriority || (AndroidLogPriority = {}));
34
+ // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/logprint.cpp;l=140;drc=8dbf3b2bb6b6d1652d9797e477b9abd03278bb79
35
+ export const AndroidLogPriorityToCharacter = {
36
+ [AndroidLogPriority.Unknown]: "?",
37
+ [AndroidLogPriority.Default]: "?",
38
+ [AndroidLogPriority.Verbose]: "V",
39
+ [AndroidLogPriority.Debug]: "D",
40
+ [AndroidLogPriority.Info]: "I",
41
+ [AndroidLogPriority.Warn]: "W",
42
+ [AndroidLogPriority.Error]: "E",
43
+ [AndroidLogPriority.Fatal]: "F",
44
+ [AndroidLogPriority.Silent]: "S",
45
+ };
46
+ export var LogcatFormat;
47
+ (function (LogcatFormat) {
48
+ LogcatFormat[LogcatFormat["Brief"] = 0] = "Brief";
49
+ LogcatFormat[LogcatFormat["Process"] = 1] = "Process";
50
+ LogcatFormat[LogcatFormat["Tag"] = 2] = "Tag";
51
+ LogcatFormat[LogcatFormat["Thread"] = 3] = "Thread";
52
+ LogcatFormat[LogcatFormat["Raw"] = 4] = "Raw";
53
+ LogcatFormat[LogcatFormat["Time"] = 5] = "Time";
54
+ LogcatFormat[LogcatFormat["ThreadTime"] = 6] = "ThreadTime";
55
+ LogcatFormat[LogcatFormat["Long"] = 7] = "Long";
56
+ })(LogcatFormat = LogcatFormat || (LogcatFormat = {}));
57
+ const NANOSECONDS_PER_SECOND = BigInt(1e9);
58
+ // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/include/log/log_read.h;l=39;drc=82b5738732161dbaafb2e2f25cce19cd26b9157d
59
+ export const LoggerEntry = new Struct({ littleEndian: true })
60
+ .uint16("payloadSize")
61
+ .uint16("headerSize")
62
+ .int32("pid")
63
+ .uint32("tid")
64
+ .uint32("seconds")
65
+ .uint32("nanoseconds")
66
+ .uint32("logId")
67
+ .uint32("uid")
68
+ .extra({
69
+ get timestamp() {
70
+ return (BigInt(this.seconds) * NANOSECONDS_PER_SECOND +
71
+ BigInt(this.nanoseconds));
72
+ },
73
+ });
74
+ function padZero(number, length) {
75
+ return number.toString().padStart(length, "0");
76
+ }
77
+ function formatSeconds(seconds, modifiers) {
78
+ if (modifiers.monotonic) {
79
+ return padZero(seconds, 6);
80
+ }
81
+ if (modifiers.epoch) {
82
+ return padZero(seconds, 19);
83
+ }
84
+ const date = new Date(seconds * 1000);
85
+ const month = padZero(date.getMonth() + 1, 2);
86
+ const day = padZero(date.getDate(), 2);
87
+ const hour = padZero(date.getHours(), 2);
88
+ const minute = padZero(date.getMinutes(), 2);
89
+ const second = padZero(date.getSeconds(), 2);
90
+ const result = `${month}-${day} ${hour}:${minute}:${second}`;
91
+ if (modifiers.year) {
92
+ const year = padZero(date.getFullYear(), 4);
93
+ return `${year}-${result}`;
94
+ }
95
+ return result;
96
+ }
97
+ function formatNanoseconds(nanoseconds, modifiers) {
98
+ if (modifiers.nanoseconds) {
99
+ return padZero(nanoseconds, 9);
100
+ }
101
+ if (modifiers.microseconds) {
102
+ return padZero(nanoseconds / 1000, 6);
103
+ }
104
+ return padZero(nanoseconds / 1000000, 3);
105
+ }
106
+ function formatTimezone(seconds, modifiers) {
107
+ if (!modifiers.timezone || modifiers.monotonic || modifiers.epoch) {
108
+ return "";
109
+ }
110
+ const date = new Date(seconds * 1000);
111
+ const offset = date.getTimezoneOffset();
112
+ const sign = offset <= 0 ? "+" : "-";
113
+ const absolute = Math.abs(offset);
114
+ const hours = (absolute / 60) | 0;
115
+ const minutes = absolute % 60;
116
+ // prettier-ignore
117
+ return ` ${sign}${hours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")}`;
118
+ }
119
+ function formatTime(seconds, nanoseconds, modifiers) {
120
+ const secondsString = formatSeconds(seconds, modifiers);
121
+ const nanosecondsString = formatNanoseconds(nanoseconds, modifiers);
122
+ const zoneString = formatTimezone(seconds, modifiers);
123
+ return `${secondsString}.${nanosecondsString}${zoneString}`;
124
+ }
125
+ function formatUid(uid, modifiers, suffix) {
126
+ return modifiers.uid ? `${uid.toString().padStart(5)}${suffix}` : "";
127
+ }
128
+ function getFormatPrefix(entry, format, modifiers) {
129
+ // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/logprint.cpp;l=1415;drc=8dbf3b2bb6b6d1652d9797e477b9abd03278bb79
130
+ switch (format) {
131
+ // TODO: implement other formats
132
+ case LogcatFormat.Tag:
133
+ // prettier-ignore
134
+ return `${AndroidLogPriorityToCharacter[entry.priority]}/${entry.tag.padEnd(8)}: `;
135
+ case LogcatFormat.Process:
136
+ // prettier-ignore
137
+ return `${AndroidLogPriorityToCharacter[entry.priority]}(${formatUid(entry.uid, modifiers, ":")}${entry.pid.toString().padStart(5)}) `;
138
+ case LogcatFormat.Thread:
139
+ // prettier-ignore
140
+ return `${AndroidLogPriorityToCharacter[entry.priority]}(${formatUid(entry.uid, modifiers, ":")}${entry.pid.toString().padStart(5)}:${entry.tid.toString().padStart(5)}) `;
141
+ case LogcatFormat.Raw:
142
+ return "";
143
+ case LogcatFormat.Time:
144
+ // prettier-ignore
145
+ return `${formatTime(entry.seconds, entry.nanoseconds, modifiers)} ${AndroidLogPriorityToCharacter[entry.priority]}/${entry.tag.padEnd(8)}(${formatUid(entry.uid, modifiers, ":")}${entry.pid.toString().padStart(5)}): `;
146
+ case LogcatFormat.ThreadTime:
147
+ // prettier-ignore
148
+ return `${formatTime(entry.seconds, entry.nanoseconds, modifiers)} ${formatUid(entry.uid, modifiers, " ")}${entry.pid.toString().padStart(5)} ${entry.tid.toString().padStart(5)} ${AndroidLogPriorityToCharacter[entry.priority]} ${entry.tag.toString().padEnd(8)}: `;
149
+ case LogcatFormat.Brief:
150
+ default:
151
+ // prettier-ignore
152
+ return `${AndroidLogPriorityToCharacter[entry.priority]}/${entry.tag.padEnd(8)}(${formatUid(entry.uid, modifiers, ":")}${entry.pid.toString().padStart(5)}): `;
153
+ }
154
+ }
155
+ function getFormatSuffix(entry, format) {
156
+ switch (format) {
157
+ case LogcatFormat.Process:
158
+ return ` (${entry.tag})`;
159
+ default:
160
+ return "";
161
+ }
162
+ }
163
+ function formatEntryWrapLine(entry, format, modifiers) {
164
+ const prefix = getFormatPrefix(entry, format, modifiers);
165
+ const suffix = getFormatSuffix(entry, format);
166
+ return (prefix + entry.message.replaceAll("\n", suffix + "\n" + prefix) + suffix);
167
+ }
168
+ function AndroidLogEntryToString(format = LogcatFormat.ThreadTime, modifiers = {}) {
169
+ switch (format) {
170
+ case LogcatFormat.Long:
171
+ // prettier-ignore
172
+ return `[ ${formatTime(this.seconds, this.nanoseconds, modifiers)} ${formatUid(this.uid, modifiers, ":")}${this.pid.toString().padStart(5)}:${this.tid.toString().padStart(5)} ${AndroidLogPriorityToCharacter[this.priority]}/${this.tag.padEnd(8)} ]\n${this.message}\n`;
173
+ default:
174
+ return formatEntryWrapLine(this, format, modifiers);
175
+ }
176
+ }
177
+ function findTagEnd(payload) {
178
+ for (const separator of [0, " ".charCodeAt(0), ":".charCodeAt(0)]) {
179
+ const index = payload.indexOf(separator);
180
+ if (index !== -1) {
181
+ return index;
182
+ }
183
+ }
184
+ const index = payload.findIndex((x) => x >= 0x7f);
185
+ if (index !== -1) {
186
+ return index;
187
+ }
188
+ return payload.length;
189
+ }
190
+ export async function deserializeAndroidLogEntry(stream) {
191
+ const entry = (await LoggerEntry.deserialize(stream));
192
+ if (entry.headerSize !== LoggerEntry.size) {
193
+ await stream.readExactly(entry.headerSize - LoggerEntry.size);
194
+ }
195
+ let payload = await stream.readExactly(entry.payloadSize);
196
+ // https://cs.android.com/android/platform/superproject/+/master:system/logging/logcat/logcat.cpp;l=193-194;drc=bbe77d66e7bee8bd1f0bc7e5492b5376b0207ef6
197
+ // TODO: payload for some log IDs are in binary format.
198
+ entry.priority = payload[0];
199
+ payload = payload.subarray(1);
200
+ const tagEnd = findTagEnd(payload);
201
+ entry.tag = decodeUtf8(payload.subarray(0, tagEnd));
202
+ entry.message =
203
+ tagEnd < payload.length - 1
204
+ ? decodeUtf8(payload.subarray(tagEnd + 1))
205
+ : "";
206
+ entry.toString = AndroidLogEntryToString;
207
+ return entry;
208
+ }
209
+ class Logcat extends AdbCommandBase {
210
+ static logIdToName(id) {
211
+ return LogId[id];
212
+ }
213
+ static logNameToId(name) {
214
+ const key = name[0].toUpperCase() + name.substring(1);
215
+ return LogId[key];
216
+ }
217
+ static joinLogId(ids) {
218
+ return ids.map((id) => Logcat.logIdToName(id)).join(",");
219
+ }
220
+ static parseSize(value, multiplier) {
221
+ const MULTIPLIERS = ["", "Ki", "Mi", "Gi"];
222
+ return value * 1024 ** (MULTIPLIERS.indexOf(multiplier) || 0);
223
+ }
224
+ // TODO: logcat: Support output format before Android 10
225
+ // ref https://android-review.googlesource.com/c/platform/system/core/+/748128
226
+ static LOG_SIZE_REGEX_10 = /(.*): ring buffer is (.*) (.*)B \((.*) (.*)B consumed\), max entry is (.*) B, max payload is (.*) B/;
227
+ // Android 11 added `readable` part
228
+ // ref https://android-review.googlesource.com/c/platform/system/core/+/1390940
229
+ static LOG_SIZE_REGEX_11 = /(.*): ring buffer is (.*) (.*)B \((.*) (.*)B consumed, (.*) (.*)B readable\), max entry is (.*) B, max payload is (.*) B/;
230
+ async getLogSize(ids) {
231
+ const { stdout } = await this.adb.subprocess.spawn([
232
+ "logcat",
233
+ "-g",
234
+ ...(ids ? ["-b", Logcat.joinLogId(ids)] : []),
235
+ ]);
236
+ const result = [];
237
+ await stdout
238
+ .pipeThrough(new DecodeUtf8Stream())
239
+ .pipeThrough(new SplitStringStream("\n"))
240
+ .pipeTo(new WritableStream({
241
+ write(chunk) {
242
+ let match = chunk.match(Logcat.LOG_SIZE_REGEX_11);
243
+ if (match) {
244
+ result.push({
245
+ id: Logcat.logNameToId(match[1]),
246
+ size: Logcat.parseSize(Number.parseInt(match[2], 10), match[3]),
247
+ readable: Logcat.parseSize(Number.parseInt(match[6], 10), match[7]),
248
+ consumed: Logcat.parseSize(Number.parseInt(match[4], 10), match[5]),
249
+ maxEntrySize: parseInt(match[8], 10),
250
+ maxPayloadSize: parseInt(match[9], 10),
251
+ });
252
+ return;
253
+ }
254
+ match = chunk.match(Logcat.LOG_SIZE_REGEX_10);
255
+ if (match) {
256
+ result.push({
257
+ id: Logcat.logNameToId(match[1]),
258
+ size: Logcat.parseSize(Number.parseInt(match[2], 10), match[3]),
259
+ consumed: Logcat.parseSize(Number.parseInt(match[4], 10), match[5]),
260
+ maxEntrySize: parseInt(match[6], 10),
261
+ maxPayloadSize: parseInt(match[7], 10),
262
+ });
263
+ }
264
+ },
265
+ }));
266
+ return result;
267
+ }
268
+ async clear(ids) {
269
+ await this.adb.subprocess.spawnAndWait([
270
+ "logcat",
271
+ "-c",
272
+ ...(ids ? ["-b", Logcat.joinLogId(ids)] : []),
273
+ ]);
274
+ }
275
+ binary(options) {
276
+ return new WrapReadableStream(async () => {
277
+ // TODO: make `spawn` return synchronously with streams pending
278
+ // so it's easier to chain them.
279
+ const { stdout } = await this.adb.subprocess.spawn([
280
+ "logcat",
281
+ "-B",
282
+ ...(options?.pid ? ["--pid", options.pid.toString()] : []),
283
+ ...(options?.ids
284
+ ? ["-b", Logcat.joinLogId(options.ids)]
285
+ : []),
286
+ ], {
287
+ // PERF: None protocol is 150% faster then Shell protocol
288
+ protocols: [AdbSubprocessNoneProtocol],
289
+ });
290
+ return stdout;
291
+ }).pipeThrough(new BufferedTransformStream((stream) => {
292
+ return deserializeAndroidLogEntry(stream);
293
+ }));
294
+ }
295
+ }
296
+ export { Logcat };
201
297
  //# sourceMappingURL=logcat.js.map
package/esm/logcat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logcat.js","sourceRoot":"","sources":["../src/logcat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logcat.js","sourceRoot":"","sources":["../src/logcat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { Adb } from "@yume-chan/adb";
2
+ import { AdbCommandBase } from "@yume-chan/adb";
3
+ export interface OverlayDisplayDeviceMode {
4
+ width: number;
5
+ height: number;
6
+ density: number;
7
+ }
8
+ export interface OverlayDisplayDevice {
9
+ modes: OverlayDisplayDeviceMode[];
10
+ secure: boolean;
11
+ ownContentOnly: boolean;
12
+ showSystemDecorations: boolean;
13
+ }
14
+ export declare class OverlayDisplay extends AdbCommandBase {
15
+ private settings;
16
+ static readonly OVERLAY_DISPLAY_DEVICES_KEY = "overlay_display_devices";
17
+ constructor(adb: Adb);
18
+ get(): Promise<OverlayDisplayDevice[]>;
19
+ set(devices: OverlayDisplayDevice[]): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=overlay-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay-display.d.ts","sourceRoot":"","sources":["../src/overlay-display.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIhD,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;CAClC;AAED,qBAAa,cAAe,SAAQ,cAAc;IAC9C,OAAO,CAAC,QAAQ,CAAW;IAE3B,gBAAuB,2BAA2B,6BACpB;gBAElB,GAAG,EAAE,GAAG;IAKP,GAAG;IAuDH,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE;CA8BnD"}