appium-adb 12.4.4 → 12.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [12.4.6](https://github.com/appium/appium-adb/compare/v12.4.5...v12.4.6) (2024-06-30)
2
+
3
+ ### Bug Fixes
4
+
5
+ * Prefer indexes over timestamps as logcat keys ([#752](https://github.com/appium/appium-adb/issues/752)) ([f499875](https://github.com/appium/appium-adb/commit/f49987590e9a4935e8fac07bdc1d237c4aec5cd1))
6
+
7
+ ## [12.4.5](https://github.com/appium/appium-adb/compare/v12.4.4...v12.4.5) (2024-06-30)
8
+
9
+ ### Miscellaneous Chores
10
+
11
+ * Optimize logcat callbacks handling ([#751](https://github.com/appium/appium-adb/issues/751)) ([5496a24](https://github.com/appium/appium-adb/commit/5496a2445f5f39b587fe081ff7bae819eadd2d5b))
12
+
1
13
  ## [12.4.4](https://github.com/appium/appium-adb/compare/v12.4.3...v12.4.4) (2024-06-21)
2
14
 
3
15
  ### Miscellaneous Chores
@@ -24,6 +24,11 @@ export type LogcatOpts = {
24
24
  */
25
25
  filterSpecs?: string[] | undefined;
26
26
  };
27
+ export type LogEntry = {
28
+ timestamp: number;
29
+ level: "ALL";
30
+ message: string;
31
+ };
27
32
  declare class Logcat extends EventEmitter<[never]> {
28
33
  constructor(opts?: {});
29
34
  adb: any;
@@ -31,16 +36,38 @@ declare class Logcat extends EventEmitter<[never]> {
31
36
  debug: any;
32
37
  debugTrace: any;
33
38
  maxBufferSize: any;
34
- logs: any[];
35
- logIdxSinceLastRequest: number;
39
+ /** @type {LRUCache<number, [string, number]>} */
40
+ logs: LRUCache<number, [string, number]>;
41
+ /** @type {number?} */
42
+ logIndexSinceLastRequest: number | null;
36
43
  startCapture(opts?: {}): Promise<any>;
37
44
  proc: SubProcess | null | undefined;
38
- outputHandler(output: any, prefix?: string): void;
45
+ /**
46
+ *
47
+ * @param {string} logLine
48
+ * @param {string} [prefix='']
49
+ * @returns {void}
50
+ */
51
+ outputHandler(logLine: string, prefix?: string | undefined): void;
52
+ /**
53
+ *
54
+ * @returns {Promise<void>}
55
+ */
39
56
  stopCapture(): Promise<void>;
40
- getLogs(): any[];
41
- getAllLogs(): any[];
57
+ /**
58
+ * @returns {LogEntry[]}
59
+ */
60
+ getLogs(): LogEntry[];
61
+ /**
62
+ * @returns {LogEntry[]}
63
+ */
64
+ getAllLogs(): LogEntry[];
65
+ /**
66
+ * @returns {Promise<void>}
67
+ */
42
68
  clear(): Promise<void>;
43
69
  }
44
70
  import { EventEmitter } from 'node:events';
71
+ import { LRUCache } from 'lru-cache';
45
72
  import { SubProcess } from 'teen_process';
46
73
  //# sourceMappingURL=logcat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logcat.d.ts","sourceRoot":"","sources":["../../lib/logcat.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2EA;IACE,uBASC;IAPC,SAAmB;IACnB,eAAqD;IACrD,WAAuB;IACvB,gBAAiC;IACjC,mBAA0D;IAC1D,YAAc;IACd,+BAA+B;IAGjC,sCAwDC;IA7BG,oCAA8C;IA+BlD,kDAsBC;IAED,6BAUC;IAED,iBAOC;IAED,oBAEC;IAED,uBAQC;CACF;6BAxM4B,aAAa;2BACT,cAAc"}
1
+ {"version":3,"file":"logcat.d.ts","sourceRoot":"","sources":["../../lib/logcat.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;eAkDc,MAAM;WACN,KAAK;aACL,MAAM;;AAyDpB;IACE,uBAaC;IAXC,SAAmB;IACnB,eAAqD;IACrD,WAAuB;IACvB,gBAAiC;IACjC,mBAA0D;IAC1D,iDAAiD;IACjD,MADW,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAG3C;IACF,sBAAsB;IACtB,0BADW,MAAM,OAAC,CACkB;IAGtC,sCAwDC;IA7BG,oCAA8C;IA+BlD;;;;;OAKG;IACH,uBAJW,MAAM,gCAEJ,IAAI,CAiBhB;IAED;;;OAGG;IACH,eAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;OAEG;IACH,WAFa,QAAQ,EAAE,CAkBtB;IAED;;OAEG;IACH,cAFa,QAAQ,EAAE,CAStB;IAED;;OAEG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAUzB;CACF;6BAxQ4B,aAAa;yBAEjB,WAAW;2BADH,cAAc"}
@@ -8,6 +8,7 @@ const bluebird_1 = __importDefault(require("bluebird"));
8
8
  const lodash_1 = __importDefault(require("lodash"));
9
9
  const node_events_1 = require("node:events");
10
10
  const teen_process_1 = require("teen_process");
11
+ const lru_cache_1 = require("lru-cache");
11
12
  const log = support_1.logger.getLogger('Logcat');
12
13
  const MAX_BUFFER_SIZE = 10000;
13
14
  const LOGCAT_PROC_STARTUP_TIMEOUT = 10000;
@@ -16,6 +17,8 @@ const SUPPORTED_PRIORITIES = ['v', 'd', 'i', 'w', 'e', 'f', 's'];
16
17
  const DEFAULT_PRIORITY = 'v';
17
18
  const DEFAULT_TAG = '*';
18
19
  const DEFAULT_FORMAT = 'threadtime';
20
+ const TRACE_PATTERN = /W\/Trace/;
21
+ const EXECVP_ERR_PATTERN = /execvp\(\)/;
19
22
  /**
20
23
  * @typedef {Object} LogcatOpts
21
24
  * @property {string} [format] The log print format, where <format> is one of:
@@ -44,6 +47,30 @@ function requireFormat(format) {
44
47
  }
45
48
  return format;
46
49
  }
50
+ /**
51
+ * @typedef {Object} LogEntry
52
+ * @property {number} timestamp
53
+ * @property {'ALL'} level
54
+ * @property {string} message
55
+ */
56
+ /**
57
+ *
58
+ * @param {string} message
59
+ * @param {number} timestamp
60
+ * @returns {LogEntry}
61
+ */
62
+ function toLogEntry(message, timestamp) {
63
+ return {
64
+ timestamp,
65
+ level: 'ALL',
66
+ message,
67
+ };
68
+ }
69
+ /**
70
+ *
71
+ * @param {string} spec
72
+ * @returns {string}
73
+ */
47
74
  function requireSpec(spec) {
48
75
  const [tag, priority] = spec.split(':');
49
76
  let resultTag = tag;
@@ -63,6 +90,11 @@ function requireSpec(spec) {
63
90
  }
64
91
  return spec;
65
92
  }
93
+ /**
94
+ *
95
+ * @param {string|string[]} filterSpecs
96
+ * @returns {string[]}
97
+ */
66
98
  function formatFilterSpecs(filterSpecs) {
67
99
  if (!lodash_1.default.isArray(filterSpecs)) {
68
100
  filterSpecs = [filterSpecs];
@@ -79,8 +111,12 @@ class Logcat extends node_events_1.EventEmitter {
79
111
  this.debug = opts.debug;
80
112
  this.debugTrace = opts.debugTrace;
81
113
  this.maxBufferSize = opts.maxBufferSize || MAX_BUFFER_SIZE;
82
- this.logs = [];
83
- this.logIdxSinceLastRequest = 0;
114
+ /** @type {LRUCache<number, [string, number]>} */
115
+ this.logs = new lru_cache_1.LRUCache({
116
+ max: this.maxBufferSize,
117
+ });
118
+ /** @type {number?} */
119
+ this.logIndexSinceLastRequest = null;
84
120
  }
85
121
  async startCapture(opts = {}) {
86
122
  let started = false;
@@ -114,19 +150,19 @@ class Logcat extends node_events_1.EventEmitter {
114
150
  }
115
151
  });
116
152
  this.proc.on('lines-stderr', (lines) => {
117
- for (let line of lines) {
118
- if (/execvp\(\)/.test(line)) {
153
+ for (const line of lines) {
154
+ if (!started && EXECVP_ERR_PATTERN.test(line)) {
119
155
  log.error('Logcat process failed to start');
120
- reject(new Error(`Logcat process failed to start. stderr: ${line}`));
156
+ return reject(new Error(`Logcat process failed to start. stderr: ${line}`));
121
157
  }
122
- this.outputHandler(lodash_1.default.trim(line), 'STDERR: ');
158
+ this.outputHandler(line, 'STDERR: ');
123
159
  }
124
160
  resolve();
125
161
  });
126
162
  this.proc.on('lines-stdout', (lines) => {
127
163
  resolve();
128
- for (let line of lines) {
129
- this.outputHandler(lodash_1.default.trim(line));
164
+ for (const line of lines) {
165
+ this.outputHandler(line);
130
166
  }
131
167
  });
132
168
  await this.proc.start(0);
@@ -134,28 +170,32 @@ class Logcat extends node_events_1.EventEmitter {
134
170
  setTimeout(resolve, LOGCAT_PROC_STARTUP_TIMEOUT);
135
171
  });
136
172
  }
137
- outputHandler(output, prefix = '') {
138
- if (!output) {
139
- return;
173
+ /**
174
+ *
175
+ * @param {string} logLine
176
+ * @param {string} [prefix='']
177
+ * @returns {void}
178
+ */
179
+ outputHandler(logLine, prefix = '') {
180
+ const timestamp = Date.now();
181
+ /** @type {number} */
182
+ let recentIndex = -1;
183
+ for (const key of this.logs.rkeys()) {
184
+ recentIndex = key;
185
+ break;
140
186
  }
141
- if (this.logs.length >= this.maxBufferSize) {
142
- this.logs.shift();
143
- if (this.logIdxSinceLastRequest > 0) {
144
- --this.logIdxSinceLastRequest;
145
- }
187
+ this.logs.set(++recentIndex, [logLine, timestamp]);
188
+ if (this.listenerCount('output')) {
189
+ this.emit('output', toLogEntry(logLine, timestamp));
146
190
  }
147
- const outputObj = {
148
- timestamp: Date.now(),
149
- level: 'ALL',
150
- message: output,
151
- };
152
- this.logs.push(outputObj);
153
- this.emit('output', outputObj);
154
- const isTrace = /W\/Trace/.test(output);
155
- if (this.debug && (!isTrace || this.debugTrace)) {
156
- log.debug(prefix + output);
191
+ if (this.debug && (this.debugTrace || !TRACE_PATTERN.test(logLine))) {
192
+ log.debug(prefix + logLine);
157
193
  }
158
194
  }
195
+ /**
196
+ *
197
+ * @returns {Promise<void>}
198
+ */
159
199
  async stopCapture() {
160
200
  log.debug('Stopping logcat capture');
161
201
  if (!this.proc || !this.proc.isRunning) {
@@ -167,17 +207,40 @@ class Logcat extends node_events_1.EventEmitter {
167
207
  await this.proc.stop();
168
208
  this.proc = null;
169
209
  }
210
+ /**
211
+ * @returns {LogEntry[]}
212
+ */
170
213
  getLogs() {
171
- if (this.logIdxSinceLastRequest < this.logs.length) {
172
- const result = this.logs.slice(this.logIdxSinceLastRequest);
173
- this.logIdxSinceLastRequest = this.logs.length;
174
- return result;
214
+ /** @type {LogEntry[]} */
215
+ const result = [];
216
+ /** @type {number?} */
217
+ let recentLogIndex = null;
218
+ for (const [index, [message, timestamp]] of this.logs.entries()) {
219
+ if (this.logIndexSinceLastRequest && index > this.logIndexSinceLastRequest
220
+ || !this.logIndexSinceLastRequest) {
221
+ recentLogIndex = index;
222
+ result.push(toLogEntry(message, timestamp));
223
+ }
175
224
  }
176
- return [];
225
+ if (lodash_1.default.isInteger(recentLogIndex)) {
226
+ this.logIndexSinceLastRequest = recentLogIndex;
227
+ }
228
+ return result;
177
229
  }
230
+ /**
231
+ * @returns {LogEntry[]}
232
+ */
178
233
  getAllLogs() {
179
- return this.logs;
234
+ /** @type {LogEntry[]} */
235
+ const result = [];
236
+ for (const [message, timestamp] of this.logs.values()) {
237
+ result.push(toLogEntry(message, timestamp));
238
+ }
239
+ return result;
180
240
  }
241
+ /**
242
+ * @returns {Promise<void>}
243
+ */
181
244
  async clear() {
182
245
  log.debug('Clearing logcat logs from device');
183
246
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"logcat.js","sourceRoot":"","sources":["../../lib/logcat.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logcat.js","sourceRoot":"","sources":["../../lib/logcat.js"],"names":[],"mappings":";;;;;AAAA,6CAA+C;AAC/C,wDAAyB;AACzB,oDAAuB;AACvB,6CAA2C;AAC3C,+CAAgD;AAChD,yCAAqC;AAErC,MAAM,GAAG,GAAG,gBAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACvC,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAC1C,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACrG,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjE,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,MAAM,aAAa,GAAG,UAAU,CAAC;AACjC,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAExC;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,SAAS,aAAa,CAAE,MAAM;IAC5B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,qBAAqB,MAAM,uCAAuC,iBAAiB,EAAE,CAAC,CAAC;QAChG,GAAG,CAAC,IAAI,CAAC,kBAAkB,cAAc,GAAG,CAAC,CAAC;QAC9C,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AAEH;;;;;GAKG;AACH,SAAS,UAAU,CAAC,OAAO,EAAE,SAAS;IACpC,OAAO;QACL,SAAS;QACT,KAAK,EAAE,KAAK;QACZ,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAE,IAAI;IACxB,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,SAAS,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,0BAA0B,IAAI,mBAAmB,CAAC,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,kBAAkB,WAAW,GAAG,CAAC,CAAC;QAC3C,SAAS,GAAG,WAAW,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,+BAA+B,IAAI,sCAAsC,gBAAgB,GAAG,CAAC,CAAC;QACvG,OAAO,GAAG,SAAS,IAAI,gBAAgB,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,gBAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,+BAA+B,IAAI,uCAAuC,oBAAoB,EAAE,CAAC,CAAC;QAC3G,GAAG,CAAC,IAAI,CAAC,0BAA0B,gBAAgB,GAAG,CAAC,CAAC;QACxD,OAAO,GAAG,SAAS,IAAI,gBAAgB,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAE,WAAW;IACrC,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,WAAW;SACf,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACnE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAGD,MAAM,MAAO,SAAQ,0BAAY;IAC/B,YAAa,IAAI,GAAG,EAAE;QACpB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,eAAe,CAAC;QAC3D,iDAAiD;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAQ,CAAC;YACvB,GAAG,EAAE,IAAI,CAAC,aAAa;SACxB,CAAC,CAAC;QACH,sBAAsB;QACtB,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,IAAI,GAAG,EAAE;QAC3B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,OAAO,MAAM,IAAI,kBAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,UAAU,GAAG,IAAI;gBAC/B,OAAO,GAAG,IAAI,CAAC;gBACf,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YACpB,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI;gBAC9B,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YACnB,CAAC,CAAC;YAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;YAED,MAAM,EACJ,MAAM,GAAG,cAAc,EACvB,WAAW,GAAG,EAAE,GACjB,GAAG,IAAI,CAAC;YACT,MAAM,GAAG,GAAG;gBACV,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW;gBACvB,QAAQ;gBACR,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;gBAC3B,GAAG,iBAAiB,CAAC,WAAW,CAAC;aAClC,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,uCAAuC,cAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,GAAG,IAAI,yBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBACpC,GAAG,CAAC,KAAK,CAAC,+BAA+B,IAAI,YAAY,MAAM,EAAE,CAAC,CAAC;gBACnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;oBAC3C,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC9C,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBAC5C,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC9E,CAAC;oBACD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACvC,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrC,OAAO,EAAE,CAAC;gBACV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,0DAA0D;YAC1D,UAAU,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAE,OAAO,EAAE,MAAM,GAAG,EAAE;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,qBAAqB;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACpC,WAAW,GAAG,GAAG,CAAC;YAClB,MAAM;QACR,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,yBAAyB;QACzB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,sBAAsB;QACtB,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAChE,IAAI,IAAI,CAAC,wBAAwB,IAAI,KAAK,GAAG,IAAI,CAAC,wBAAwB;mBACnE,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBACtC,cAAc,GAAG,KAAK,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,IAAI,gBAAC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,wBAAwB,GAAG,cAAc,CAAC;QACjD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,yBAAyB;QACzB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,IAAA,mBAAI,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,gCAAgC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF;AAED,kBAAe,MAAM,CAAC"}
@@ -652,10 +652,10 @@ declare namespace methods {
652
652
  * The logcat process should be executed by {2link #startLogcat} method.
653
653
  *
654
654
  * @this {import('../adb.js').ADB}
655
- * @return {string[]} The collected logcat output.
655
+ * @return {import('../logcat').LogEntry[]} The collected logcat output.
656
656
  * @throws {Error} If logcat process is not running.
657
657
  */
658
- function getLogcatLogs(this: import("../adb.js").ADB): string[];
658
+ function getLogcatLogs(this: import("../adb.js").ADB): import("../logcat").LogEntry[];
659
659
  /**
660
660
  * Listener function, which accepts one argument.
661
661
  *
@@ -1 +1 @@
1
- {"version":3,"file":"adb-commands.d.ts","sourceRoot":"","sources":["../../../lib/tools/adb-commands.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adb-commands.d.ts","sourceRoot":"","sources":["../../../lib/tools/adb-commands.js"],"names":[],"mappings":"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"}
@@ -1156,12 +1156,12 @@ methods.stopLogcat = async function stopLogcat() {
1156
1156
  * The logcat process should be executed by {2link #startLogcat} method.
1157
1157
  *
1158
1158
  * @this {import('../adb.js').ADB}
1159
- * @return {string[]} The collected logcat output.
1159
+ * @return {import('../logcat').LogEntry[]} The collected logcat output.
1160
1160
  * @throws {Error} If logcat process is not running.
1161
1161
  */
1162
1162
  methods.getLogcatLogs = function getLogcatLogs() {
1163
1163
  if (lodash_1.default.isEmpty(this.logcat)) {
1164
- throw new Error("Can't get logcat logs since logcat hasn't started");
1164
+ throw new Error(`Can't get logcat logs since logcat hasn't started`);
1165
1165
  }
1166
1166
  return this.logcat.getLogs();
1167
1167
  };
package/lib/logcat.js CHANGED
@@ -3,6 +3,7 @@ import B from 'bluebird';
3
3
  import _ from 'lodash';
4
4
  import { EventEmitter } from 'node:events';
5
5
  import { SubProcess, exec } from 'teen_process';
6
+ import { LRUCache } from 'lru-cache';
6
7
 
7
8
  const log = logger.getLogger('Logcat');
8
9
  const MAX_BUFFER_SIZE = 10000;
@@ -12,6 +13,8 @@ const SUPPORTED_PRIORITIES = ['v', 'd', 'i', 'w', 'e', 'f', 's'];
12
13
  const DEFAULT_PRIORITY = 'v';
13
14
  const DEFAULT_TAG = '*';
14
15
  const DEFAULT_FORMAT = 'threadtime';
16
+ const TRACE_PATTERN = /W\/Trace/;
17
+ const EXECVP_ERR_PATTERN = /execvp\(\)/;
15
18
 
16
19
  /**
17
20
  * @typedef {Object} LogcatOpts
@@ -43,6 +46,32 @@ function requireFormat (format) {
43
46
  return format;
44
47
  }
45
48
 
49
+ /**
50
+ * @typedef {Object} LogEntry
51
+ * @property {number} timestamp
52
+ * @property {'ALL'} level
53
+ * @property {string} message
54
+ */
55
+
56
+ /**
57
+ *
58
+ * @param {string} message
59
+ * @param {number} timestamp
60
+ * @returns {LogEntry}
61
+ */
62
+ function toLogEntry(message, timestamp) {
63
+ return {
64
+ timestamp,
65
+ level: 'ALL',
66
+ message,
67
+ };
68
+ }
69
+
70
+ /**
71
+ *
72
+ * @param {string} spec
73
+ * @returns {string}
74
+ */
46
75
  function requireSpec (spec) {
47
76
  const [tag, priority] = spec.split(':');
48
77
  let resultTag = tag;
@@ -63,6 +92,11 @@ function requireSpec (spec) {
63
92
  return spec;
64
93
  }
65
94
 
95
+ /**
96
+ *
97
+ * @param {string|string[]} filterSpecs
98
+ * @returns {string[]}
99
+ */
66
100
  function formatFilterSpecs (filterSpecs) {
67
101
  if (!_.isArray(filterSpecs)) {
68
102
  filterSpecs = [filterSpecs];
@@ -81,8 +115,12 @@ class Logcat extends EventEmitter {
81
115
  this.debug = opts.debug;
82
116
  this.debugTrace = opts.debugTrace;
83
117
  this.maxBufferSize = opts.maxBufferSize || MAX_BUFFER_SIZE;
84
- this.logs = [];
85
- this.logIdxSinceLastRequest = 0;
118
+ /** @type {LRUCache<number, [string, number]>} */
119
+ this.logs = new LRUCache({
120
+ max: this.maxBufferSize,
121
+ });
122
+ /** @type {number?} */
123
+ this.logIndexSinceLastRequest = null;
86
124
  }
87
125
 
88
126
  async startCapture (opts = {}) {
@@ -122,19 +160,19 @@ class Logcat extends EventEmitter {
122
160
  }
123
161
  });
124
162
  this.proc.on('lines-stderr', (lines) => {
125
- for (let line of lines) {
126
- if (/execvp\(\)/.test(line)) {
163
+ for (const line of lines) {
164
+ if (!started && EXECVP_ERR_PATTERN.test(line)) {
127
165
  log.error('Logcat process failed to start');
128
- reject(new Error(`Logcat process failed to start. stderr: ${line}`));
166
+ return reject(new Error(`Logcat process failed to start. stderr: ${line}`));
129
167
  }
130
- this.outputHandler(_.trim(line), 'STDERR: ');
168
+ this.outputHandler(line, 'STDERR: ');
131
169
  }
132
170
  resolve();
133
171
  });
134
172
  this.proc.on('lines-stdout', (lines) => {
135
173
  resolve();
136
- for (let line of lines) {
137
- this.outputHandler(_.trim(line));
174
+ for (const line of lines) {
175
+ this.outputHandler(line);
138
176
  }
139
177
  });
140
178
  await this.proc.start(0);
@@ -143,30 +181,33 @@ class Logcat extends EventEmitter {
143
181
  });
144
182
  }
145
183
 
146
- outputHandler (output, prefix = '') {
147
- if (!output) {
148
- return;
184
+ /**
185
+ *
186
+ * @param {string} logLine
187
+ * @param {string} [prefix='']
188
+ * @returns {void}
189
+ */
190
+ outputHandler (logLine, prefix = '') {
191
+ const timestamp = Date.now();
192
+ /** @type {number} */
193
+ let recentIndex = -1;
194
+ for (const key of this.logs.rkeys()) {
195
+ recentIndex = key;
196
+ break;
149
197
  }
150
-
151
- if (this.logs.length >= this.maxBufferSize) {
152
- this.logs.shift();
153
- if (this.logIdxSinceLastRequest > 0) {
154
- --this.logIdxSinceLastRequest;
155
- }
198
+ this.logs.set(++recentIndex, [logLine, timestamp]);
199
+ if (this.listenerCount('output')) {
200
+ this.emit('output', toLogEntry(logLine, timestamp));
156
201
  }
157
- const outputObj = {
158
- timestamp: Date.now(),
159
- level: 'ALL',
160
- message: output,
161
- };
162
- this.logs.push(outputObj);
163
- this.emit('output', outputObj);
164
- const isTrace = /W\/Trace/.test(output);
165
- if (this.debug && (!isTrace || this.debugTrace)) {
166
- log.debug(prefix + output);
202
+ if (this.debug && (this.debugTrace || !TRACE_PATTERN.test(logLine))) {
203
+ log.debug(prefix + logLine);
167
204
  }
168
205
  }
169
206
 
207
+ /**
208
+ *
209
+ * @returns {Promise<void>}
210
+ */
170
211
  async stopCapture () {
171
212
  log.debug('Stopping logcat capture');
172
213
  if (!this.proc || !this.proc.isRunning) {
@@ -179,19 +220,42 @@ class Logcat extends EventEmitter {
179
220
  this.proc = null;
180
221
  }
181
222
 
223
+ /**
224
+ * @returns {LogEntry[]}
225
+ */
182
226
  getLogs () {
183
- if (this.logIdxSinceLastRequest < this.logs.length) {
184
- const result = this.logs.slice(this.logIdxSinceLastRequest);
185
- this.logIdxSinceLastRequest = this.logs.length;
186
- return result;
227
+ /** @type {LogEntry[]} */
228
+ const result = [];
229
+ /** @type {number?} */
230
+ let recentLogIndex = null;
231
+ for (const [index, [message, timestamp]] of this.logs.entries()) {
232
+ if (this.logIndexSinceLastRequest && index > this.logIndexSinceLastRequest
233
+ || !this.logIndexSinceLastRequest) {
234
+ recentLogIndex = index;
235
+ result.push(toLogEntry(message, timestamp));
236
+ }
187
237
  }
188
- return [];
238
+ if (_.isInteger(recentLogIndex)) {
239
+ this.logIndexSinceLastRequest = recentLogIndex;
240
+ }
241
+ return result;
189
242
  }
190
243
 
244
+ /**
245
+ * @returns {LogEntry[]}
246
+ */
191
247
  getAllLogs () {
192
- return this.logs;
248
+ /** @type {LogEntry[]} */
249
+ const result = [];
250
+ for (const [message, timestamp] of this.logs.values()) {
251
+ result.push(toLogEntry(message, timestamp));
252
+ }
253
+ return result;
193
254
  }
194
255
 
256
+ /**
257
+ * @returns {Promise<void>}
258
+ */
195
259
  async clear () {
196
260
  log.debug('Clearing logcat logs from device');
197
261
  try {
@@ -1223,12 +1223,12 @@ methods.stopLogcat = async function stopLogcat () {
1223
1223
  * The logcat process should be executed by {2link #startLogcat} method.
1224
1224
  *
1225
1225
  * @this {import('../adb.js').ADB}
1226
- * @return {string[]} The collected logcat output.
1226
+ * @return {import('../logcat').LogEntry[]} The collected logcat output.
1227
1227
  * @throws {Error} If logcat process is not running.
1228
1228
  */
1229
1229
  methods.getLogcatLogs = function getLogcatLogs () {
1230
1230
  if (_.isEmpty(this.logcat)) {
1231
- throw new Error("Can't get logcat logs since logcat hasn't started");
1231
+ throw new Error(`Can't get logcat logs since logcat hasn't started`);
1232
1232
  }
1233
1233
  return this.logcat.getLogs();
1234
1234
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-adb",
3
- "version": "12.4.4",
3
+ "version": "12.4.6",
4
4
  "description": "Android Debug Bridge interface",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
@@ -57,10 +57,9 @@
57
57
  "lru-cache": "^10.0.0",
58
58
  "semver": "^7.0.0",
59
59
  "source-map-support": "^0.x",
60
- "teen_process": "^2.0.1"
60
+ "teen_process": "^2.1.10"
61
61
  },
62
62
  "devDependencies": {
63
- "@appium/eslint-config-appium": "^8.0.0",
64
63
  "@appium/eslint-config-appium-ts": "^0.x",
65
64
  "@appium/test-support": "^3.0.1",
66
65
  "@appium/types": "^0.x",