@yume-chan/android-bin 0.0.18 → 0.0.19

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 (46) hide show
  1. package/CHANGELOG.json +15 -0
  2. package/CHANGELOG.md +9 -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/index.d.ts +6 -4
  18. package/esm/index.d.ts.map +1 -1
  19. package/esm/index.js +7 -5
  20. package/esm/index.js.map +1 -1
  21. package/esm/logcat.d.ts +91 -89
  22. package/esm/logcat.d.ts.map +1 -1
  23. package/esm/logcat.js +288 -200
  24. package/esm/logcat.js.map +1 -1
  25. package/esm/overlay-display.d.ts +21 -0
  26. package/esm/overlay-display.d.ts.map +1 -0
  27. package/esm/overlay-display.js +78 -0
  28. package/esm/overlay-display.js.map +1 -0
  29. package/esm/pm.d.ts +139 -0
  30. package/esm/pm.d.ts.map +1 -0
  31. package/esm/pm.js +125 -0
  32. package/esm/pm.js.map +1 -0
  33. package/esm/settings.d.ts +12 -12
  34. package/esm/settings.d.ts.map +1 -1
  35. package/esm/settings.js +29 -24
  36. package/esm/settings.js.map +1 -1
  37. package/package.json +10 -9
  38. package/src/bug-report.ts +1 -1
  39. package/src/cmd.ts +67 -0
  40. package/src/demo-mode.ts +4 -3
  41. package/src/index.ts +6 -4
  42. package/src/logcat.ts +231 -19
  43. package/src/overlay-display.ts +115 -0
  44. package/src/pm.ts +281 -0
  45. package/src/settings.ts +45 -16
  46. package/tsconfig.build.tsbuildinfo +1 -1
package/esm/logcat.js CHANGED
@@ -1,201 +1,289 @@
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 formatSeconds(seconds, modifiers) {
75
+ if (modifiers.monotonic) {
76
+ return seconds.toString().padStart(6);
77
+ }
78
+ if (modifiers.epoch) {
79
+ return seconds.toString().padStart(19);
80
+ }
81
+ const date = new Date(seconds * 1000);
82
+ if (modifiers.year) {
83
+ // prettier-ignore
84
+ return `${date.getFullYear().toString().padStart(4, "0")}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")} ${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}:${date.getSeconds().toString().padStart(2, "0")}`;
85
+ }
86
+ // prettier-ignore
87
+ return `${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")} ${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}:${date.getSeconds().toString().padStart(2, "0")}`;
88
+ }
89
+ function formatNanoseconds(nanoseconds, modifiers) {
90
+ if (modifiers.nanoseconds) {
91
+ return nanoseconds.toString().padStart(9, "0");
92
+ }
93
+ if (modifiers.microseconds) {
94
+ return ((nanoseconds / 1000) | 0).toString().padStart(6, "0");
95
+ }
96
+ return ((nanoseconds / 1000000) | 0).toString().padStart(3, "0");
97
+ }
98
+ function formatTimezone(seconds, modifiers) {
99
+ if (!modifiers.timezone || modifiers.monotonic || modifiers.epoch) {
100
+ return "";
101
+ }
102
+ const date = new Date(seconds * 1000);
103
+ const offset = date.getTimezoneOffset();
104
+ const sign = offset <= 0 ? "+" : "-";
105
+ const absolute = Math.abs(offset);
106
+ const hours = (absolute / 60) | 0;
107
+ const minutes = absolute % 60;
108
+ // prettier-ignore
109
+ return ` ${sign}${hours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")}`;
110
+ }
111
+ function formatTime(seconds, nanoseconds, modifiers) {
112
+ const secondsString = formatSeconds(seconds, modifiers);
113
+ const nanosecondsString = formatNanoseconds(nanoseconds, modifiers);
114
+ const zoneString = formatTimezone(seconds, modifiers);
115
+ return `${secondsString}.${nanosecondsString}${zoneString}`;
116
+ }
117
+ function formatUid(uid, modifiers, suffix) {
118
+ return modifiers.uid ? `${uid.toString().padStart(5)}${suffix}` : "";
119
+ }
120
+ function getFormatPrefix(entry, format, modifiers) {
121
+ // https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/logprint.cpp;l=1415;drc=8dbf3b2bb6b6d1652d9797e477b9abd03278bb79
122
+ switch (format) {
123
+ // TODO: implement other formats
124
+ case LogcatFormat.Tag:
125
+ // prettier-ignore
126
+ return `${AndroidLogPriorityToCharacter[entry.priority]}/${entry.tag.padEnd(8)}: `;
127
+ case LogcatFormat.Process:
128
+ // prettier-ignore
129
+ return `${AndroidLogPriorityToCharacter[entry.priority]}(${formatUid(entry.uid, modifiers, ":")}${entry.pid.toString().padStart(5)}) `;
130
+ case LogcatFormat.Thread:
131
+ // prettier-ignore
132
+ return `${AndroidLogPriorityToCharacter[entry.priority]}(${formatUid(entry.uid, modifiers, ":")}${entry.pid.toString().padStart(5)}:${entry.tid.toString().padStart(5)}) `;
133
+ case LogcatFormat.Raw:
134
+ return "";
135
+ case LogcatFormat.Time:
136
+ // prettier-ignore
137
+ return `${formatTime(entry.seconds, entry.nanoseconds, modifiers)} ${AndroidLogPriorityToCharacter[entry.priority]}/${entry.tag.padEnd(8)}(${formatUid(entry.uid, modifiers, ":")}${entry.pid.toString().padStart(5)}): `;
138
+ case LogcatFormat.ThreadTime:
139
+ // prettier-ignore
140
+ 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)}: `;
141
+ case LogcatFormat.Brief:
142
+ default:
143
+ // prettier-ignore
144
+ return `${AndroidLogPriorityToCharacter[entry.priority]}/${entry.tag.padEnd(8)}(${formatUid(entry.uid, modifiers, ":")}${entry.pid.toString().padStart(5)}): `;
145
+ }
146
+ }
147
+ function getFormatSuffix(entry, format) {
148
+ switch (format) {
149
+ case LogcatFormat.Process:
150
+ return ` (${entry.tag})`;
151
+ default:
152
+ return "";
153
+ }
154
+ }
155
+ function formatEntryWrapLine(entry, format, modifiers) {
156
+ const prefix = getFormatPrefix(entry, format, modifiers);
157
+ const suffix = getFormatSuffix(entry, format);
158
+ return (prefix + entry.message.replaceAll("\n", suffix + "\n" + prefix) + suffix);
159
+ }
160
+ function AndroidLogEntryToString(format = LogcatFormat.ThreadTime, modifiers = {}) {
161
+ switch (format) {
162
+ case LogcatFormat.Long:
163
+ // prettier-ignore
164
+ 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`;
165
+ default:
166
+ return formatEntryWrapLine(this, format, modifiers);
167
+ }
168
+ }
169
+ function findTagEnd(payload) {
170
+ for (const separator of [0, " ".charCodeAt(0), ":".charCodeAt(0)]) {
171
+ const index = payload.indexOf(separator);
172
+ if (index !== -1) {
173
+ return index;
174
+ }
175
+ }
176
+ const index = payload.findIndex((x) => x >= 0x7f);
177
+ if (index !== -1) {
178
+ return index;
179
+ }
180
+ return payload.length;
181
+ }
182
+ export async function deserializeAndroidLogEntry(stream) {
183
+ const entry = (await LoggerEntry.deserialize(stream));
184
+ if (entry.headerSize !== LoggerEntry.size) {
185
+ await stream.read(entry.headerSize - LoggerEntry.size);
186
+ }
187
+ let payload = await stream.read(entry.payloadSize);
188
+ // https://cs.android.com/android/platform/superproject/+/master:system/logging/logcat/logcat.cpp;l=193-194;drc=bbe77d66e7bee8bd1f0bc7e5492b5376b0207ef6
189
+ // TODO: payload for some log IDs are in binary format.
190
+ entry.priority = payload[0];
191
+ payload = payload.subarray(1);
192
+ const tagEnd = findTagEnd(payload);
193
+ entry.tag = decodeUtf8(payload.subarray(0, tagEnd));
194
+ entry.message =
195
+ tagEnd < payload.length - 1
196
+ ? decodeUtf8(payload.subarray(tagEnd + 1))
197
+ : "";
198
+ entry.toString = AndroidLogEntryToString;
199
+ return entry;
200
+ }
201
+ class Logcat extends AdbCommandBase {
202
+ static logIdToName(id) {
203
+ return LogId[id];
204
+ }
205
+ static logNameToId(name) {
206
+ const key = name[0].toUpperCase() + name.substring(1);
207
+ return LogId[key];
208
+ }
209
+ static joinLogId(ids) {
210
+ return ids.map((id) => Logcat.logIdToName(id)).join(",");
211
+ }
212
+ static parseSize(value, multiplier) {
213
+ const MULTIPLIERS = ["", "Ki", "Mi", "Gi"];
214
+ return value * 1024 ** (MULTIPLIERS.indexOf(multiplier) || 0);
215
+ }
216
+ // TODO: logcat: Support output format before Android 10
217
+ // ref https://android-review.googlesource.com/c/platform/system/core/+/748128
218
+ static LOG_SIZE_REGEX_10 = /(.*): ring buffer is (.*) (.*)B \((.*) (.*)B consumed\), max entry is (.*) B, max payload is (.*) B/;
219
+ // Android 11 added `readable` part
220
+ // ref https://android-review.googlesource.com/c/platform/system/core/+/1390940
221
+ static LOG_SIZE_REGEX_11 = /(.*): ring buffer is (.*) (.*)B \((.*) (.*)B consumed, (.*) (.*)B readable\), max entry is (.*) B, max payload is (.*) B/;
222
+ async getLogSize(ids) {
223
+ const { stdout } = await this.adb.subprocess.spawn([
224
+ "logcat",
225
+ "-g",
226
+ ...(ids ? ["-b", Logcat.joinLogId(ids)] : []),
227
+ ]);
228
+ const result = [];
229
+ await stdout
230
+ .pipeThrough(new DecodeUtf8Stream())
231
+ .pipeThrough(new SplitStringStream("\n"))
232
+ .pipeTo(new WritableStream({
233
+ write(chunk) {
234
+ let match = chunk.match(Logcat.LOG_SIZE_REGEX_11);
235
+ if (match) {
236
+ result.push({
237
+ id: Logcat.logNameToId(match[1]),
238
+ size: Logcat.parseSize(Number.parseInt(match[2], 10), match[3]),
239
+ readable: Logcat.parseSize(Number.parseInt(match[6], 10), match[7]),
240
+ consumed: Logcat.parseSize(Number.parseInt(match[4], 10), match[5]),
241
+ maxEntrySize: parseInt(match[8], 10),
242
+ maxPayloadSize: parseInt(match[9], 10),
243
+ });
244
+ return;
245
+ }
246
+ match = chunk.match(Logcat.LOG_SIZE_REGEX_10);
247
+ if (match) {
248
+ result.push({
249
+ id: Logcat.logNameToId(match[1]),
250
+ size: Logcat.parseSize(Number.parseInt(match[2], 10), match[3]),
251
+ consumed: Logcat.parseSize(Number.parseInt(match[4], 10), match[5]),
252
+ maxEntrySize: parseInt(match[6], 10),
253
+ maxPayloadSize: parseInt(match[7], 10),
254
+ });
255
+ }
256
+ },
257
+ }));
258
+ return result;
259
+ }
260
+ async clear(ids) {
261
+ await this.adb.subprocess.spawnAndWait([
262
+ "logcat",
263
+ "-c",
264
+ ...(ids ? ["-b", Logcat.joinLogId(ids)] : []),
265
+ ]);
266
+ }
267
+ binary(options) {
268
+ return new WrapReadableStream(async () => {
269
+ // TODO: make `spawn` return synchronously with streams pending
270
+ // so it's easier to chain them.
271
+ const { stdout } = await this.adb.subprocess.spawn([
272
+ "logcat",
273
+ "-B",
274
+ ...(options?.pid ? ["--pid", options.pid.toString()] : []),
275
+ ...(options?.ids
276
+ ? ["-b", Logcat.joinLogId(options.ids)]
277
+ : []),
278
+ ], {
279
+ // PERF: None protocol is 150% faster then Shell protocol
280
+ protocols: [AdbSubprocessNoneProtocol],
281
+ });
282
+ return stdout;
283
+ }).pipeThrough(new BufferedTransformStream((stream) => {
284
+ return deserializeAndroidLogEntry(stream);
285
+ }));
286
+ }
287
+ }
288
+ export { Logcat };
201
289
  //# 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"}