appium-xcuitest-driver 7.21.2 → 7.22.1

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 (68) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/lib/commands/context.js +2 -2
  3. package/build/lib/commands/context.js.map +1 -1
  4. package/build/lib/commands/log.d.ts.map +1 -1
  5. package/build/lib/commands/log.js +27 -14
  6. package/build/lib/commands/log.js.map +1 -1
  7. package/build/lib/commands/pcap.d.ts.map +1 -1
  8. package/build/lib/commands/pcap.js +1 -5
  9. package/build/lib/commands/pcap.js.map +1 -1
  10. package/build/lib/commands/performance.d.ts.map +1 -1
  11. package/build/lib/commands/performance.js +3 -5
  12. package/build/lib/commands/performance.js.map +1 -1
  13. package/build/lib/commands/recordscreen.d.ts.map +1 -1
  14. package/build/lib/commands/recordscreen.js +8 -9
  15. package/build/lib/commands/recordscreen.js.map +1 -1
  16. package/build/lib/device-log/helpers.d.ts +4 -1
  17. package/build/lib/device-log/helpers.d.ts.map +1 -1
  18. package/build/lib/device-log/helpers.js +6 -2
  19. package/build/lib/device-log/helpers.js.map +1 -1
  20. package/build/lib/device-log/ios-crash-log.d.ts +0 -4
  21. package/build/lib/device-log/ios-crash-log.d.ts.map +1 -1
  22. package/build/lib/device-log/ios-crash-log.js +0 -8
  23. package/build/lib/device-log/ios-crash-log.js.map +1 -1
  24. package/build/lib/device-log/ios-device-log.d.ts +3 -3
  25. package/build/lib/device-log/ios-device-log.d.ts.map +1 -1
  26. package/build/lib/device-log/ios-log.d.ts +1 -3
  27. package/build/lib/device-log/ios-log.d.ts.map +1 -1
  28. package/build/lib/device-log/ios-log.js +12 -27
  29. package/build/lib/device-log/ios-log.js.map +1 -1
  30. package/build/lib/device-log/ios-performance-log.d.ts +4 -8
  31. package/build/lib/device-log/ios-performance-log.d.ts.map +1 -1
  32. package/build/lib/device-log/ios-performance-log.js +9 -16
  33. package/build/lib/device-log/ios-performance-log.js.map +1 -1
  34. package/build/lib/device-log/ios-simulator-log.d.ts +4 -4
  35. package/build/lib/device-log/ios-simulator-log.d.ts.map +1 -1
  36. package/build/lib/device-log/ios-simulator-log.js +4 -6
  37. package/build/lib/device-log/ios-simulator-log.js.map +1 -1
  38. package/build/lib/device-log/safari-console-log.d.ts +65 -6
  39. package/build/lib/device-log/safari-console-log.d.ts.map +1 -1
  40. package/build/lib/device-log/safari-console-log.js +61 -81
  41. package/build/lib/device-log/safari-console-log.js.map +1 -1
  42. package/build/lib/device-log/safari-network-log.d.ts +36 -8
  43. package/build/lib/device-log/safari-network-log.d.ts.map +1 -1
  44. package/build/lib/device-log/safari-network-log.js +28 -151
  45. package/build/lib/device-log/safari-network-log.js.map +1 -1
  46. package/build/lib/driver.d.ts.map +1 -1
  47. package/lib/commands/context.js +2 -2
  48. package/lib/commands/log.js +32 -14
  49. package/lib/commands/pcap.js +1 -5
  50. package/lib/commands/performance.js +3 -5
  51. package/lib/commands/recordscreen.js +7 -8
  52. package/lib/device-log/helpers.ts +6 -2
  53. package/lib/device-log/ios-crash-log.js +0 -9
  54. package/lib/device-log/ios-device-log.ts +3 -3
  55. package/lib/device-log/ios-log.ts +16 -33
  56. package/lib/device-log/ios-performance-log.ts +11 -22
  57. package/lib/device-log/ios-simulator-log.ts +9 -11
  58. package/lib/device-log/safari-console-log.ts +112 -0
  59. package/lib/device-log/safari-network-log.ts +80 -0
  60. package/npm-shrinkwrap.json +69 -24
  61. package/package.json +2 -2
  62. package/build/lib/device-log/rotating-log.d.ts +0 -21
  63. package/build/lib/device-log/rotating-log.d.ts.map +0 -1
  64. package/build/lib/device-log/rotating-log.js +0 -61
  65. package/build/lib/device-log/rotating-log.js.map +0 -1
  66. package/lib/device-log/rotating-log.js +0 -65
  67. package/lib/device-log/safari-console-log.js +0 -96
  68. package/lib/device-log/safari-network-log.js +0 -193
@@ -13,15 +13,25 @@ class IOSLog extends events_1.EventEmitter {
13
13
  this.logs = new lru_cache_1.LRUCache({
14
14
  max: this.maxBufferSize,
15
15
  });
16
- this.logIndexSinceLastRequest = null;
17
16
  this._log = opts.log ?? support_1.logger.getLogger(this.constructor.name);
18
17
  }
19
18
  get log() {
20
19
  return this._log;
21
20
  }
21
+ getLogs() {
22
+ const result = [];
23
+ for (const value of this.logs.rvalues()) {
24
+ result.push(this._deserializeEntry(value));
25
+ }
26
+ this._clearEntries();
27
+ return result;
28
+ }
29
+ _clearEntries() {
30
+ this.logs.clear();
31
+ }
22
32
  broadcast(entry) {
23
33
  let recentIndex = -1;
24
- for (const key of this.logs.rkeys()) {
34
+ for (const key of this.logs.keys()) {
25
35
  recentIndex = key;
26
36
  break;
27
37
  }
@@ -31,31 +41,6 @@ class IOSLog extends events_1.EventEmitter {
31
41
  this.emit('output', this._deserializeEntry(serializedEntry));
32
42
  }
33
43
  }
34
- getLogs() {
35
- const result = [];
36
- let recentLogIndex = null;
37
- for (const [index, value] of this.logs.entries()) {
38
- if (this.logIndexSinceLastRequest && index > this.logIndexSinceLastRequest
39
- || !this.logIndexSinceLastRequest) {
40
- recentLogIndex = index;
41
- result.push(this._deserializeEntry(value));
42
- }
43
- }
44
- if (recentLogIndex !== null) {
45
- this.logIndexSinceLastRequest = recentLogIndex;
46
- }
47
- return result;
48
- }
49
- getAllLogs() {
50
- const result = [];
51
- for (const value of this.logs.values()) {
52
- result.push(this._deserializeEntry(value));
53
- }
54
- return result;
55
- }
56
- _clearEntries() {
57
- this.logs.clear();
58
- }
59
44
  }
60
45
  exports.IOSLog = IOSLog;
61
46
  exports.default = IOSLog;
@@ -1 +1 @@
1
- {"version":3,"file":"ios-log.js","sourceRoot":"","sources":["../../../lib/device-log/ios-log.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,yCAAqC;AAGrC,4CAAsC;AAEtC,wEAAwE;AACxE,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAOpC,MAAsB,MAGpB,SAAQ,qBAAY;IAMpB,YAAY,OAAsB,EAAE;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,qBAAqB,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAQ,CAAC;YACvB,GAAG,EAAE,IAAI,CAAC,aAAa;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,gBAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAMD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,KAAgB;QACxB,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,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,IAAI,cAAc,GAAkB,IAAI,CAAC;QACzC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,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,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,wBAAwB,GAAG,cAAc,CAAC;QACjD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU;QACR,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAKS,aAAa;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;CACF;AAtED,wBAsEC;AAED,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"ios-log.js","sourceRoot":"","sources":["../../../lib/device-log/ios-log.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,yCAAqC;AAGrC,4CAAsC;AAEtC,wEAAwE;AACxE,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAOpC,MAAsB,MAGpB,SAAQ,qBAAY;IAKpB,YAAY,OAAsB,EAAE;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,qBAAqB,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAQ,CAAC;YACvB,GAAG,EAAE,IAAI,CAAC,aAAa;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,gBAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAMD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAyB,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;IAKS,aAAa;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAES,SAAS,CAAC,KAAgB;QAClC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,WAAW,GAAG,GAAG,CAAC;YAClB,MAAM;QACR,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF;AArDD,wBAqDC;AAED,kBAAe,MAAM,CAAC"}
@@ -1,21 +1,17 @@
1
- import { IOSLog } from './ios-log';
2
- import type { LogEntry } from '../commands/types';
3
1
  import type { AppiumLogger } from '@appium/types';
4
- type PerformanceLogEntry = object;
2
+ import { LineConsumingLog } from './line-consuming-log';
5
3
  export interface IOSPerformanceLogOptions {
6
4
  remoteDebugger: any;
7
5
  maxEvents?: number;
8
- log?: AppiumLogger;
6
+ log: AppiumLogger;
9
7
  }
10
- export declare class IOSPerformanceLog extends IOSLog<PerformanceLogEntry, PerformanceLogEntry> {
11
- private remoteDebugger;
8
+ export declare class IOSPerformanceLog extends LineConsumingLog {
9
+ private readonly remoteDebugger;
12
10
  private _started;
13
11
  constructor(opts: IOSPerformanceLogOptions);
14
12
  startCapture(): Promise<void>;
15
13
  stopCapture(): Promise<void>;
16
14
  get isCapturing(): boolean;
17
- protected _serializeEntry(value: PerformanceLogEntry): PerformanceLogEntry;
18
- protected _deserializeEntry(value: PerformanceLogEntry): LogEntry;
19
15
  private onTimelineEvent;
20
16
  }
21
17
  export default IOSPerformanceLog;
@@ -1 +1 @@
1
- {"version":3,"file":"ios-performance-log.d.ts","sourceRoot":"","sources":["../../../lib/device-log/ios-performance-log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,KAAK,mBAAmB,GAAG,MAAM,CAAC;AAClC,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB;AAED,qBAAa,iBAAkB,SAAQ,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IACrF,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,QAAQ,CAAU;gBAEd,IAAI,EAAE,wBAAwB;IAS3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3C,IAAa,WAAW,IAAI,OAAO,CAElC;cAEkB,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB;cAIhE,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,QAAQ;IAI1E,OAAO,CAAC,eAAe;CAIxB;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"ios-performance-log.d.ts","sourceRoot":"","sources":["../../../lib/device-log/ios-performance-log.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,YAAY,CAAC;CACnB;AAED,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAM;IACrC,OAAO,CAAC,QAAQ,CAAU;gBAEd,IAAI,EAAE,wBAAwB;IAS3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3C,IAAa,WAAW,IAAI,OAAO,CAElC;IAED,OAAO,CAAC,eAAe;CAKxB;AAED,eAAe,iBAAiB,CAAC"}
@@ -5,12 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.IOSPerformanceLog = void 0;
7
7
  const lodash_1 = __importDefault(require("lodash"));
8
- const ios_log_1 = require("./ios-log");
9
- const MAX_EVENTS = 5000;
10
- class IOSPerformanceLog extends ios_log_1.IOSLog {
8
+ const helpers_1 = require("./helpers");
9
+ const line_consuming_log_1 = require("./line-consuming-log");
10
+ class IOSPerformanceLog extends line_consuming_log_1.LineConsumingLog {
11
11
  constructor(opts) {
12
12
  super({
13
- maxBufferSize: opts.maxEvents ?? MAX_EVENTS,
13
+ maxBufferSize: opts.maxEvents ?? helpers_1.MAX_BUFFERED_EVENTS_COUNT,
14
14
  log: opts.log,
15
15
  });
16
16
  this.remoteDebugger = opts.remoteDebugger;
@@ -19,28 +19,21 @@ class IOSPerformanceLog extends ios_log_1.IOSLog {
19
19
  async startCapture() {
20
20
  this.log.debug('Starting performance (Timeline) log capture');
21
21
  this._clearEntries();
22
- const result = await this.remoteDebugger.startTimeline(this.onTimelineEvent.bind(this));
22
+ await this.remoteDebugger.startTimeline(this.onTimelineEvent.bind(this));
23
23
  this._started = true;
24
- return result;
25
24
  }
26
25
  async stopCapture() {
27
26
  this.log.debug('Stopping performance (Timeline) log capture');
28
- const result = await this.remoteDebugger.stopTimeline();
27
+ await this.remoteDebugger.stopTimeline();
29
28
  this._started = false;
30
- return result;
31
29
  }
32
30
  get isCapturing() {
33
31
  return this._started;
34
32
  }
35
- _serializeEntry(value) {
36
- return value;
37
- }
38
- _deserializeEntry(value) {
39
- return value;
40
- }
41
33
  onTimelineEvent(event) {
42
- this.log.debug(`Received Timeline event: ${lodash_1.default.truncate(JSON.stringify(event))}`);
43
- this.broadcast(event);
34
+ const serializedEntry = JSON.stringify(event);
35
+ this.broadcast(serializedEntry);
36
+ this.log.debug(`Received Timeline event: ${lodash_1.default.truncate(serializedEntry, { length: helpers_1.MAX_JSON_LOG_LENGTH })}`);
44
37
  }
45
38
  }
46
39
  exports.IOSPerformanceLog = IOSPerformanceLog;
@@ -1 +1 @@
1
- {"version":3,"file":"ios-performance-log.js","sourceRoot":"","sources":["../../../lib/device-log/ios-performance-log.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,uCAAmC;AAInC,MAAM,UAAU,GAAG,IAAI,CAAC;AASxB,MAAa,iBAAkB,SAAQ,gBAAgD;IAIrF,YAAY,IAA8B;QACxC,KAAK,CAAC;YACJ,aAAa,EAAE,IAAI,CAAC,SAAS,IAAI,UAAU;YAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAEQ,KAAK,CAAC,YAAY;QACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEQ,KAAK,CAAC,WAAW;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAa,WAAW;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEkB,eAAe,CAAC,KAA0B;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IAEkB,iBAAiB,CAAC,KAA0B;QAC7D,OAAO,KAAiB,CAAC;IAC3B,CAAC;IAEO,eAAe,CAAC,KAA0B;QAChD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;CACF;AA5CD,8CA4CC;AAED,kBAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"ios-performance-log.js","sourceRoot":"","sources":["../../../lib/device-log/ios-performance-log.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAEvB,uCAA2E;AAC3E,6DAAwD;AASxD,MAAa,iBAAkB,SAAQ,qCAAgB;IAIrD,YAAY,IAA8B;QACxC,KAAK,CAAC;YACJ,aAAa,EAAE,IAAI,CAAC,SAAS,IAAI,mCAAyB;YAC1D,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAEQ,KAAK,CAAC,YAAY;QACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEQ,KAAK,CAAC,WAAW;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,IAAa,WAAW;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,eAAe,CAAC,KAA0B;QAChD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,gBAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAC,MAAM,EAAE,6BAAmB,EAAC,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;CACF;AAnCD,8CAmCC;AAED,kBAAe,iBAAiB,CAAC"}
@@ -5,12 +5,12 @@ export interface IOSSimulatorLogOptions {
5
5
  sim: Simulator;
6
6
  showLogs?: boolean;
7
7
  iosSimulatorLogsPredicate?: string;
8
- log?: AppiumLogger;
8
+ log: AppiumLogger;
9
9
  }
10
10
  export declare class IOSSimulatorLog extends LineConsumingLog {
11
- private sim;
12
- private showLogs;
13
- private predicate?;
11
+ private readonly sim;
12
+ private readonly showLogs;
13
+ private readonly predicate?;
14
14
  private proc;
15
15
  constructor(opts: IOSSimulatorLogOptions);
16
16
  startCapture(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ios-simulator-log.d.ts","sourceRoot":"","sources":["../../../lib/device-log/ios-simulator-log.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB;AAED,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAoB;gBAEpB,IAAI,EAAE,sBAAsB;IAQzB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3C,IAAa,WAAW,IAAI,OAAO,CAElC;IAED,OAAO,CAAC,QAAQ;YAQF,iBAAiB;YAiBjB,wBAAwB;CAqBvC;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"ios-simulator-log.d.ts","sourceRoot":"","sources":["../../../lib/device-log/ios-simulator-log.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,GAAG,EAAE,YAAY,CAAC;CACnB;AAED,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,IAAI,CAAoB;gBAEpB,IAAI,EAAE,sBAAsB;IAQzB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3C,IAAa,WAAW,IAAI,OAAO,CAElC;IAED,OAAO,CAAC,QAAQ;YAQF,iBAAiB;YAiBjB,wBAAwB;CAmBvC;AAED,eAAe,eAAe,CAAC"}
@@ -80,17 +80,15 @@ class IOSSimulatorLog extends line_consuming_log_1.LineConsumingLog {
80
80
  throw this.log.errorWithException('Could not capture simulator log');
81
81
  }
82
82
  for (const streamName of ['stdout', 'stderr']) {
83
- this.proc.on(`lines-${streamName}`, (/** @type {string[]} */ lines) => {
84
- for (const line of lines) {
85
- this.onOutput(line, ...(streamName === 'stderr' ? ['STDERR'] : []));
86
- }
83
+ this.proc.on(`line-${streamName}`, (line) => {
84
+ this.onOutput(line, ...(streamName === 'stderr' ? ['STDERR'] : []));
87
85
  });
88
86
  }
89
- const startDetector = (/** @type {string} */ stdout, /** @type {string} */ stderr) => {
87
+ const startDetector = (stdout, stderr) => {
90
88
  if (EXECVP_ERROR_PATTERN.test(stderr)) {
91
89
  throw new Error('iOS log capture process failed to start');
92
90
  }
93
- return stdout || stderr;
91
+ return Boolean(stdout || stderr);
94
92
  };
95
93
  await this.proc.start(startDetector, START_TIMEOUT);
96
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ios-simulator-log.js","sourceRoot":"","sources":["../../../lib/device-log/ios-simulator-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ios-simulator-log.js","sourceRoot":"","sources":["../../../lib/device-log/ios-simulator-log.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,+CAA8C;AAC9C,6DAAwD;AAIxD,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAE1C,MAAM,aAAa,GAAG,KAAK,CAAC;AAS5B,MAAa,eAAgB,SAAQ,qCAAgB;IAMnD,YAAY,IAA4B;QACtC,KAAK,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEQ,KAAK,CAAC,YAAY;QACzB,IAAI,gBAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,qDAAqD,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,cAAc,CACxF,CAAC;QACF,IAAI,CAAC;YACH,sFAAsF;YACtF,MAAM,IAAA,mBAAI,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC,CAAA,CAAC;QAChB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,WAAW;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAa,WAAW;QACtB,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,QAAQ,CAAC,MAAc,EAAE,SAAiB,EAAE;QAClD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,KAAK,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,UAAU,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE;gBAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE;YACvD,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;CACF;AAjGD,0CAiGC;AAED,kBAAe,eAAe,CAAC"}
@@ -1,8 +1,67 @@
1
- export default SafariConsoleLog;
2
- export class SafariConsoleLog extends RotatingLog {
3
- constructor(showLogs: any);
4
- addLogLine(err: any, out: any): void;
5
- _previousOutput: any;
1
+ import type { AppiumLogger } from '@appium/types';
2
+ import IOSLog from './ios-log';
3
+ import type { LogEntry } from '../commands/types';
4
+ export interface SafariConsoleLogOptions {
5
+ showLogs: boolean;
6
+ log: AppiumLogger;
7
+ }
8
+ export interface SafariConsoleStacktraceEntry {
9
+ functionName: string;
10
+ url: string;
11
+ scriptId: number;
12
+ lineNumber: number;
13
+ columnNumber: number;
14
+ }
15
+ export interface SafariConsoleEntry {
16
+ source: string;
17
+ level: string;
18
+ text: string;
19
+ type: string;
20
+ line: number;
21
+ column: number;
22
+ url?: string;
23
+ repeatCount: number;
24
+ stackTrace: SafariConsoleStacktraceEntry[];
6
25
  }
7
- import { RotatingLog } from './rotating-log';
26
+ type TSerializedEntry = [SafariConsoleEntry, number];
27
+ export declare class SafariConsoleLog extends IOSLog<SafariConsoleEntry, TSerializedEntry> {
28
+ private readonly _showLogs;
29
+ constructor(opts: SafariConsoleLogOptions);
30
+ startCapture(): Promise<void>;
31
+ stopCapture(): Promise<void>;
32
+ get isCapturing(): boolean;
33
+ /**
34
+ *
35
+ * @param err
36
+ * @param entry The output will be like:
37
+ * {
38
+ * "source": "javascript",
39
+ * "level":"error",
40
+ * "text":"ReferenceError: Can't find variable: s_account",
41
+ * "type":"log",
42
+ * "line":2,
43
+ * "column":21,
44
+ * "url":"https://assets.adobedtm.com/b46e318d845250834eda10c5a20827c045a4d76f/scripts/satellite-57866f8b64746d53a8000104-staging.js",
45
+ * "repeatCount":1,
46
+ * "stackTrace":[{
47
+ * "functionName":"global code",
48
+ * "url":"https://assets.adobedtm.com/b46e318d845250834eda10c5a20827c045a4d76f/scripts/satellite-57866f8b64746d53a8000104-staging.js",
49
+ * "scriptId":"6",
50
+ * "lineNumber":2,
51
+ * "columnNumber":21
52
+ * }]
53
+ * }
54
+ *
55
+ * we need, at least, `level` (in accordance with Java levels
56
+ * (https://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html)),
57
+ * `timestamp`, and `message` to satisfy the java client. In order to
58
+ * provide all the information to the client, `message` is the full
59
+ * object, stringified.
60
+ *
61
+ */
62
+ onConsoleLogEvent(err: object | null, entry: SafariConsoleEntry): void;
63
+ protected _serializeEntry(value: SafariConsoleEntry): TSerializedEntry;
64
+ protected _deserializeEntry(value: TSerializedEntry): LogEntry;
65
+ }
66
+ export default SafariConsoleLog;
8
67
  //# sourceMappingURL=safari-console-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"safari-console-log.d.ts","sourceRoot":"","sources":["../../../lib/device-log/safari-console-log.js"],"names":[],"mappings":";AAIA;IACE,2BASC;IAED,qCA2EC;IAhBG,qBAA0B;CAiB/B;4BA5FgD,gBAAgB"}
1
+ {"version":3,"file":"safari-console-log.d.ts","sourceRoot":"","sources":["../../../lib/device-log/safari-console-log.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAOlD,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAQlD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,4BAA4B,EAAE,CAAC;CAC5C;AAED,KAAK,gBAAgB,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAErD,qBAAa,gBAAiB,SAAQ,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAChF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;gBAExB,IAAI,EAAE,uBAAuB;IAQ1B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAC7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3C,IAAa,WAAW,IAAI,OAAO,CAElC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;cAOnD,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,gBAAgB;cAI5D,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,QAAQ;CAIxE;AAMD,eAAe,gBAAgB,CAAC"}
@@ -4,93 +4,73 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SafariConsoleLog = void 0;
7
- const rotating_log_1 = require("./rotating-log");
8
7
  const lodash_1 = __importDefault(require("lodash"));
9
- const support_1 = require("appium/support");
10
- class SafariConsoleLog extends rotating_log_1.RotatingLog {
11
- constructor(showLogs) {
12
- super(showLogs, 'SafariConsole');
13
- // js console has `warning` level, so map to `warn`
14
- this.log = new Proxy(this.log, {
15
- get(target, prop, receiver) {
16
- return Reflect.get(target, prop === 'warning' ? 'warn' : prop, receiver);
17
- },
8
+ const helpers_1 = require("./helpers");
9
+ const ios_log_1 = __importDefault(require("./ios-log"));
10
+ const LOG_LEVELS_MAP = {
11
+ error: 'SEVERE',
12
+ warning: 'WARNING',
13
+ log: 'FINE',
14
+ };
15
+ class SafariConsoleLog extends ios_log_1.default {
16
+ constructor(opts) {
17
+ super({
18
+ log: opts.log,
19
+ maxBufferSize: helpers_1.MAX_BUFFERED_EVENTS_COUNT,
18
20
  });
21
+ this._showLogs = opts.showLogs;
19
22
  }
20
- addLogLine(err, out) {
21
- if (this.isCapturing) {
22
- this.logs = this.logs || [];
23
- while (this.logs.length >= rotating_log_1.MAX_LOG_ENTRIES_COUNT) {
24
- this.logs.shift();
25
- if (this.logIdxSinceLastRequest > 0) {
26
- this.logIdxSinceLastRequest--;
27
- }
28
- }
29
- /*
30
- * The output will be like:
31
- * {
32
- * "source": "javascript",
33
- * "level":"error",
34
- * "text":"ReferenceError: Can't find variable: s_account",
35
- * "type":"log",
36
- * "line":2,
37
- * "column":21,
38
- * "url":"https://assets.adobedtm.com/b46e318d845250834eda10c5a20827c045a4d76f/scripts/satellite-57866f8b64746d53a8000104-staging.js",
39
- * "repeatCount":1,
40
- * "stackTrace":[{
41
- * "functionName":"global code",
42
- * "url":"https://assets.adobedtm.com/b46e318d845250834eda10c5a20827c045a4d76f/scripts/satellite-57866f8b64746d53a8000104-staging.js",
43
- * "scriptId":"6",
44
- * "lineNumber":2,
45
- * "columnNumber":21
46
- * }]
47
- * }
48
- *
49
- * we need, at least, `level` (in accordance with Java levels
50
- * (https://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html)),
51
- * `timestamp`, and `message` to satisfy the java client. In order to
52
- * provide all the information to the client, `message` is the full
53
- * object, stringified.
54
- */
55
- const entry = {
56
- level: {
57
- error: 'SEVERE',
58
- warning: 'WARNING',
59
- log: 'FINE',
60
- }[out.level] || 'INFO',
61
- timestamp: Date.now(),
62
- message: JSON.stringify(out),
63
- };
64
- this.logs.push(entry);
65
- }
66
- if (lodash_1.default.has(out, 'count')) {
67
- // this is a notification of the previous message being repeated
68
- // this should _never_ be the first message, so the previous one ought to
69
- // be populated. If it is not, nothing will break, it will just look odd
70
- // in the output below (no url or line numbers)
71
- const count = out.count;
72
- out = this._previousOutput || {};
73
- out.text = `Previous message repeated ${support_1.util.pluralize('time', count, true)}`;
74
- }
75
- else {
76
- // save the most recent output
77
- this._previousOutput = out;
78
- }
79
- // format output like
80
- // SafariConsole [WARNING][http://appium.io 2:13] Log something to warn
81
- if (this.showLogs) {
82
- let level = 'debug';
83
- if (out.level === 'warning' || out.level === 'error') {
84
- level = out.level;
85
- }
86
- for (const line of out.text.split('\n')) {
87
- // url is optional, so get formatting here
88
- const url = out.url ? `${out.url} ` : '';
89
- this.log[level](`[${level.toUpperCase()}][${url}${out.line}:${out.column}] ${line}`);
90
- }
23
+ async startCapture() { }
24
+ async stopCapture() { }
25
+ get isCapturing() {
26
+ return true;
27
+ }
28
+ /**
29
+ *
30
+ * @param err
31
+ * @param entry The output will be like:
32
+ * {
33
+ * "source": "javascript",
34
+ * "level":"error",
35
+ * "text":"ReferenceError: Can't find variable: s_account",
36
+ * "type":"log",
37
+ * "line":2,
38
+ * "column":21,
39
+ * "url":"https://assets.adobedtm.com/b46e318d845250834eda10c5a20827c045a4d76f/scripts/satellite-57866f8b64746d53a8000104-staging.js",
40
+ * "repeatCount":1,
41
+ * "stackTrace":[{
42
+ * "functionName":"global code",
43
+ * "url":"https://assets.adobedtm.com/b46e318d845250834eda10c5a20827c045a4d76f/scripts/satellite-57866f8b64746d53a8000104-staging.js",
44
+ * "scriptId":"6",
45
+ * "lineNumber":2,
46
+ * "columnNumber":21
47
+ * }]
48
+ * }
49
+ *
50
+ * we need, at least, `level` (in accordance with Java levels
51
+ * (https://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html)),
52
+ * `timestamp`, and `message` to satisfy the java client. In order to
53
+ * provide all the information to the client, `message` is the full
54
+ * object, stringified.
55
+ *
56
+ */
57
+ onConsoleLogEvent(err, entry) {
58
+ this.broadcast(entry);
59
+ if (this._showLogs) {
60
+ this.log.info(`[SafariConsole] ${lodash_1.default.truncate(JSON.stringify(entry), { length: helpers_1.MAX_JSON_LOG_LENGTH })}`);
91
61
  }
92
62
  }
63
+ _serializeEntry(value) {
64
+ return [value, Date.now()];
65
+ }
66
+ _deserializeEntry(value) {
67
+ const [entry, timestamp] = value;
68
+ return (0, helpers_1.toLogEntry)(JSON.stringify(entry), timestamp, mapLogLevel(entry.level));
69
+ }
93
70
  }
94
71
  exports.SafariConsoleLog = SafariConsoleLog;
72
+ function mapLogLevel(originalLevel) {
73
+ return LOG_LEVELS_MAP[originalLevel] ?? helpers_1.DEFAULT_LOG_LEVEL;
74
+ }
95
75
  exports.default = SafariConsoleLog;
96
76
  //# sourceMappingURL=safari-console-log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"safari-console-log.js","sourceRoot":"","sources":["../../../lib/device-log/safari-console-log.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safari-console-log.js","sourceRoot":"","sources":["../../../lib/device-log/safari-console-log.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAEvB,uCAKmB;AACnB,wDAA+B;AAG/B,MAAM,cAAc,GAAG;IACrB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,MAAM;CACZ,CAAC;AA6BF,MAAa,gBAAiB,SAAQ,iBAA4C;IAGhF,YAAY,IAA6B;QACvC,KAAK,CAAC;YACJ,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,aAAa,EAAE,mCAAyB;SACzC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjC,CAAC;IAEQ,KAAK,CAAC,YAAY,KAAmB,CAAC;IACtC,KAAK,CAAC,WAAW,KAAmB,CAAC;IAC9C,IAAa,WAAW;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,iBAAiB,CAAC,GAAkB,EAAE,KAAyB;QAC7D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAC,MAAM,EAAE,6BAAmB,EAAC,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAEkB,eAAe,CAAC,KAAyB;QAC1D,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,CAAC;IAEkB,iBAAiB,CAAC,KAAuB;QAC1D,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;QACjC,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,CAAC;CACF;AA7DD,4CA6DC;AAED,SAAS,WAAW,CAAC,aAAqB;IACxC,OAAO,cAAc,CAAC,aAAa,CAAC,IAAI,2BAAiB,CAAC;AAC5D,CAAC;AAED,kBAAe,gBAAgB,CAAC"}
@@ -1,10 +1,38 @@
1
+ import { LineConsumingLog } from './line-consuming-log';
2
+ import type { AppiumLogger } from '@appium/types';
3
+ export interface SafariConsoleLogOptions {
4
+ showLogs: boolean;
5
+ log: AppiumLogger;
6
+ }
7
+ export interface SafariNetworkResponseTiming {
8
+ responseStart: number;
9
+ receiveHeadersEnd: number;
10
+ }
11
+ export interface SafariNetworkResponse {
12
+ url: string;
13
+ status: number;
14
+ timing: SafariNetworkResponseTiming;
15
+ source: string;
16
+ }
17
+ export interface SafariNetworkLogEntryMetrics {
18
+ responseBodyBytesReceived: number;
19
+ }
20
+ export interface SafariNetworkLogEntry {
21
+ requestId: string;
22
+ response?: SafariNetworkResponse;
23
+ type?: string;
24
+ initiator?: string;
25
+ metrics?: SafariNetworkLogEntryMetrics;
26
+ errorText?: string;
27
+ canceled?: boolean;
28
+ }
29
+ export declare class SafariNetworkLog extends LineConsumingLog {
30
+ private readonly _showLogs;
31
+ constructor(opts: SafariConsoleLogOptions);
32
+ startCapture(): Promise<void>;
33
+ stopCapture(): Promise<void>;
34
+ get isCapturing(): boolean;
35
+ onNetworkEvent(method: string, entry: SafariNetworkLogEntry): void;
36
+ }
1
37
  export default SafariNetworkLog;
2
- export class SafariNetworkLog extends RotatingLog {
3
- constructor(showLogs: any);
4
- getEntry(requestId: any): any;
5
- addLogLine(method: any, out: any): void;
6
- getLogDetails(outputEntry: any): any;
7
- printLogLine(outputEntry: any): void;
8
- }
9
- import { RotatingLog } from './rotating-log';
10
38
  //# sourceMappingURL=safari-network-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"safari-network-log.d.ts","sourceRoot":"","sources":["../../../lib/device-log/safari-network-log.js"],"names":[],"mappings":";AAKA;IACE,2BAEC;IAED,8BA6CC;IAED,wCAmCC;IAED,qCAsCC;IAED,qCAwCC;CAeF;4BA1LgD,gBAAgB"}
1
+ {"version":3,"file":"safari-network-log.d.ts","sourceRoot":"","sources":["../../../lib/device-log/safari-network-log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAYlD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,2BAA2B,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IAC3C,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,4BAA4B,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;gBAExB,IAAI,EAAE,uBAAuB;IAQ1B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAC7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3C,IAAa,WAAW,IAAI,OAAO,CAElC;IAED,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI;CAWnE;AAED,eAAe,gBAAgB,CAAC"}