@limrun/appium-xcuitest-driver 10.4.3-lim.1 → 10.10.1-lim.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.
- package/CHANGELOG.md +84 -0
- package/build/lib/app-utils.d.ts +2 -2
- package/build/lib/app-utils.d.ts.map +1 -1
- package/build/lib/app-utils.js +4 -1
- package/build/lib/app-utils.js.map +1 -1
- package/build/lib/commands/app-management.js +2 -2
- package/build/lib/commands/app-management.js.map +1 -1
- package/build/lib/commands/appearance.js +2 -2
- package/build/lib/commands/appearance.js.map +1 -1
- package/build/lib/commands/bidi/models.d.ts.map +1 -1
- package/build/lib/commands/bidi/models.js +1 -0
- package/build/lib/commands/bidi/models.js.map +1 -1
- package/build/lib/commands/bidi/types.d.ts +1 -0
- package/build/lib/commands/bidi/types.d.ts.map +1 -1
- package/build/lib/commands/biometric.js +3 -3
- package/build/lib/commands/biometric.js.map +1 -1
- package/build/lib/commands/certificate.d.ts.map +1 -1
- package/build/lib/commands/certificate.js +9 -3
- package/build/lib/commands/certificate.js.map +1 -1
- package/build/lib/commands/condition.d.ts +2 -0
- package/build/lib/commands/condition.d.ts.map +1 -1
- package/build/lib/commands/condition.js +75 -2
- package/build/lib/commands/condition.js.map +1 -1
- package/build/lib/commands/context.d.ts +5 -5
- package/build/lib/commands/context.d.ts.map +1 -1
- package/build/lib/commands/context.js +6 -6
- package/build/lib/commands/context.js.map +1 -1
- package/build/lib/commands/file-movement.d.ts.map +1 -1
- package/build/lib/commands/file-movement.js +7 -7
- package/build/lib/commands/file-movement.js.map +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/gesture.js +1 -1
- package/build/lib/commands/gesture.js.map +1 -1
- package/build/lib/commands/keychains.js +1 -1
- package/build/lib/commands/keychains.js.map +1 -1
- package/build/lib/commands/localization.js +1 -1
- package/build/lib/commands/localization.js.map +1 -1
- package/build/lib/commands/location.d.ts +3 -2
- package/build/lib/commands/location.d.ts.map +1 -1
- package/build/lib/commands/location.js +10 -4
- package/build/lib/commands/location.js.map +1 -1
- package/build/lib/commands/log.js +9 -9
- package/build/lib/commands/log.js.map +1 -1
- package/build/lib/commands/memory.js +1 -1
- package/build/lib/commands/memory.js.map +1 -1
- package/build/lib/commands/notifications.js +1 -1
- package/build/lib/commands/notifications.js.map +1 -1
- package/build/lib/commands/pasteboard.js +2 -2
- package/build/lib/commands/pasteboard.js.map +1 -1
- package/build/lib/commands/pcap.js +1 -1
- package/build/lib/commands/pcap.js.map +1 -1
- package/build/lib/commands/performance.d.ts.map +1 -1
- package/build/lib/commands/performance.js +13 -4
- package/build/lib/commands/performance.js.map +1 -1
- package/build/lib/commands/permissions.js +2 -2
- package/build/lib/commands/permissions.js.map +1 -1
- package/build/lib/commands/proxy-helper.d.ts.map +1 -1
- package/build/lib/commands/proxy-helper.js +0 -3
- package/build/lib/commands/proxy-helper.js.map +1 -1
- package/build/lib/commands/screenshots.js +1 -1
- package/build/lib/commands/screenshots.js.map +1 -1
- package/build/lib/commands/simctl.d.ts +1 -1
- package/build/lib/commands/simctl.d.ts.map +1 -1
- package/build/lib/commands/simctl.js +1 -1
- package/build/lib/commands/simctl.js.map +1 -1
- package/build/lib/commands/web.js +1 -1
- package/build/lib/commands/web.js.map +1 -1
- package/build/lib/commands/xctest-record-screen.js +2 -2
- package/build/lib/commands/xctest-record-screen.js.map +1 -1
- package/build/lib/desired-caps.d.ts +392 -505
- package/build/lib/desired-caps.d.ts.map +1 -1
- package/build/lib/desired-caps.js +19 -10
- package/build/lib/desired-caps.js.map +1 -1
- package/build/lib/device/clients/base-device-client.d.ts +22 -0
- package/build/lib/device/clients/base-device-client.d.ts.map +1 -0
- package/build/lib/device/clients/base-device-client.js +14 -0
- package/build/lib/device/clients/base-device-client.js.map +1 -0
- package/build/lib/device/clients/py-ios-device-client.d.ts +21 -0
- package/build/lib/device/clients/py-ios-device-client.d.ts.map +1 -0
- package/build/lib/device/clients/py-ios-device-client.js +125 -0
- package/build/lib/device/clients/py-ios-device-client.js.map +1 -0
- package/build/lib/device/device-connections-factory.d.ts +18 -0
- package/build/lib/device/device-connections-factory.d.ts.map +1 -0
- package/build/lib/device/device-connections-factory.js +260 -0
- package/build/lib/device/device-connections-factory.js.map +1 -0
- package/build/lib/device/log/helpers.d.ts +10 -0
- package/build/lib/device/log/helpers.d.ts.map +1 -0
- package/build/lib/device/log/helpers.js +37 -0
- package/build/lib/device/log/helpers.js.map +1 -0
- package/build/lib/device/log/ios-crash-log.d.ts +34 -0
- package/build/lib/device/log/ios-crash-log.d.ts.map +1 -0
- package/build/lib/device/log/ios-crash-log.js +141 -0
- package/build/lib/device/log/ios-crash-log.js.map +1 -0
- package/build/lib/device/log/ios-device-log.d.ts +19 -0
- package/build/lib/device/log/ios-device-log.d.ts.map +1 -0
- package/build/lib/device/log/ios-device-log.js +42 -0
- package/build/lib/device/log/ios-device-log.js.map +1 -0
- package/build/lib/device/log/ios-log.d.ts +24 -0
- package/build/lib/device/log/ios-log.d.ts.map +1 -0
- package/build/lib/device/log/ios-log.js +50 -0
- package/build/lib/device/log/ios-log.js.map +1 -0
- package/build/lib/device/log/ios-performance-log.d.ts +18 -0
- package/build/lib/device/log/ios-performance-log.d.ts.map +1 -0
- package/build/lib/device/log/ios-performance-log.js +43 -0
- package/build/lib/device/log/ios-performance-log.js.map +1 -0
- package/build/lib/device/log/ios-simulator-log.d.ts +38 -0
- package/build/lib/device/log/ios-simulator-log.d.ts.map +1 -0
- package/build/lib/device/log/ios-simulator-log.js +184 -0
- package/build/lib/device/log/ios-simulator-log.js.map +1 -0
- package/build/lib/device/log/line-consuming-log.d.ts +9 -0
- package/build/lib/device/log/line-consuming-log.d.ts.map +1 -0
- package/build/lib/device/log/line-consuming-log.js +16 -0
- package/build/lib/device/log/line-consuming-log.js.map +1 -0
- package/build/lib/device/log/safari-console-log.d.ts +67 -0
- package/build/lib/device/log/safari-console-log.d.ts.map +1 -0
- package/build/lib/device/log/safari-console-log.js +81 -0
- package/build/lib/device/log/safari-console-log.js.map +1 -0
- package/build/lib/device/log/safari-network-log.d.ts +75 -0
- package/build/lib/device/log/safari-network-log.d.ts.map +1 -0
- package/build/lib/device/log/safari-network-log.js +47 -0
- package/build/lib/device/log/safari-network-log.js.map +1 -0
- package/build/lib/device/real-device-management.d.ts +146 -0
- package/build/lib/device/real-device-management.d.ts.map +1 -0
- package/build/lib/device/real-device-management.js +740 -0
- package/build/lib/device/real-device-management.js.map +1 -0
- package/build/lib/device/simulator-management.d.ts +65 -0
- package/build/lib/device/simulator-management.d.ts.map +1 -0
- package/build/lib/device/simulator-management.js +261 -0
- package/build/lib/device/simulator-management.js.map +1 -0
- package/build/lib/device-log/ios-crash-log.d.ts +1 -1
- package/build/lib/device-log/ios-crash-log.d.ts.map +1 -1
- package/build/lib/device-log/ios-simulator-log.d.ts +1 -1
- package/build/lib/device-log/ios-simulator-log.d.ts.map +1 -1
- package/build/lib/doctor/required-checks.js +1 -1
- package/build/lib/doctor/required-checks.js.map +1 -1
- package/build/lib/driver.d.ts +129 -1377
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +461 -573
- package/build/lib/driver.js.map +1 -1
- package/build/lib/method-map.d.ts +1 -1
- package/build/lib/method-map.d.ts.map +1 -1
- package/build/lib/method-map.js +2 -2
- package/build/lib/method-map.js.map +1 -1
- package/build/lib/simulator-management.d.ts +10 -0
- package/build/lib/simulator-management.d.ts.map +1 -1
- package/build/lib/simulator-management.js +9 -5
- package/build/lib/simulator-management.js.map +1 -1
- package/build/lib/utils.d.ts +2 -9
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +3 -47
- package/build/lib/utils.js.map +1 -1
- package/lib/app-utils.js +5 -1
- package/lib/commands/app-management.js +2 -2
- package/lib/commands/appearance.js +2 -2
- package/lib/commands/bidi/models.ts +1 -0
- package/lib/commands/bidi/types.ts +1 -0
- package/lib/commands/biometric.js +3 -3
- package/lib/commands/certificate.js +9 -3
- package/lib/commands/condition.js +85 -2
- package/lib/commands/context.js +6 -6
- package/lib/commands/file-movement.js +11 -7
- package/lib/commands/general.js +1 -1
- package/lib/commands/gesture.js +1 -1
- package/lib/commands/keychains.js +1 -1
- package/lib/commands/localization.js +1 -1
- package/lib/commands/location.js +11 -4
- package/lib/commands/log.js +9 -9
- package/lib/commands/memory.js +1 -1
- package/lib/commands/notifications.js +1 -1
- package/lib/commands/pasteboard.js +2 -2
- package/lib/commands/pcap.js +1 -1
- package/lib/commands/performance.js +12 -1
- package/lib/commands/permissions.js +2 -2
- package/lib/commands/proxy-helper.js +0 -3
- package/lib/commands/screenshots.js +1 -1
- package/lib/commands/simctl.js +1 -1
- package/lib/commands/web.js +1 -1
- package/lib/commands/xctest-record-screen.js +2 -2
- package/lib/{desired-caps.js → desired-caps.ts} +20 -6
- package/lib/{real-device-clients → device/clients}/py-ios-device-client.ts +1 -1
- package/lib/{device-connections-factory.js → device/device-connections-factory.ts} +96 -60
- package/lib/{device-log → device/log}/helpers.ts +1 -1
- package/lib/{device-log → device/log}/ios-crash-log.ts +4 -4
- package/lib/{device-log → device/log}/ios-log.ts +1 -1
- package/lib/{device-log → device/log}/ios-simulator-log.ts +1 -1
- package/lib/{device-log → device/log}/line-consuming-log.ts +1 -1
- package/lib/{device-log → device/log}/safari-console-log.ts +1 -1
- package/lib/device/real-device-management.ts +831 -0
- package/lib/{simulator-management.js → device/simulator-management.ts} +75 -64
- package/lib/doctor/required-checks.ts +1 -1
- package/lib/{driver.js → driver.ts} +623 -707
- package/lib/{method-map.js → method-map.ts} +5 -2
- package/lib/utils.js +3 -54
- package/package.json +17 -19
- package/scripts/build-wda.js +3 -3
- package/lib/ios-fs-helpers.js +0 -355
- package/lib/ios-generic-simulators.js +0 -11
- package/lib/real-device-management.js +0 -133
- package/lib/real-device.js +0 -347
- package/lib/xcrun.js +0 -16
- /package/lib/{real-device-clients → device/clients}/base-device-client.ts +0 -0
- /package/lib/{device-log → device/log}/ios-device-log.ts +0 -0
- /package/lib/{device-log → device/log}/ios-performance-log.ts +0 -0
- /package/lib/{device-log → device/log}/safari-network-log.ts +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.IOSSimulatorLog = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const teen_process_1 = require("teen_process");
|
|
9
|
+
const support_1 = require("appium/support");
|
|
10
|
+
const line_consuming_log_1 = require("./line-consuming-log");
|
|
11
|
+
const winston_1 = require("winston");
|
|
12
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
13
|
+
const EXECVP_ERROR_PATTERN = /execvp\(\)/;
|
|
14
|
+
const LOG_STREAMING_PROCESS_NAME_PATTERN = /^com\.apple\.xpc\.launchd\.oneshot\.0x[0-f]+\.log$/;
|
|
15
|
+
const START_TIMEOUT = 10000;
|
|
16
|
+
class IOSSimulatorLog extends line_consuming_log_1.LineConsumingLog {
|
|
17
|
+
sim;
|
|
18
|
+
showLogs;
|
|
19
|
+
predicate;
|
|
20
|
+
logLevel;
|
|
21
|
+
proc;
|
|
22
|
+
iosSyslogFile;
|
|
23
|
+
syslogLogger;
|
|
24
|
+
constructor(opts) {
|
|
25
|
+
super({ log: opts.log });
|
|
26
|
+
this.sim = opts.sim;
|
|
27
|
+
this.showLogs = !!opts.showLogs;
|
|
28
|
+
this.predicate = opts.iosSimulatorLogsPredicate;
|
|
29
|
+
this.logLevel = opts.simulatorLogLevel;
|
|
30
|
+
this.proc = null;
|
|
31
|
+
this.iosSyslogFile = opts.iosSyslogFile;
|
|
32
|
+
this.syslogLogger = null;
|
|
33
|
+
}
|
|
34
|
+
async startCapture() {
|
|
35
|
+
if (lodash_1.default.isUndefined(this.sim.udid)) {
|
|
36
|
+
throw new Error(`Log capture requires a sim udid`);
|
|
37
|
+
}
|
|
38
|
+
if (!(await this.sim.isRunning())) {
|
|
39
|
+
throw new Error(`iOS Simulator with udid '${this.sim.udid}' is not running`);
|
|
40
|
+
}
|
|
41
|
+
if (this.iosSyslogFile && this.showLogs) {
|
|
42
|
+
await this.clearExistingSyslog();
|
|
43
|
+
try {
|
|
44
|
+
this.syslogLogger = (0, winston_1.createLogger)({
|
|
45
|
+
level: 'info',
|
|
46
|
+
format: winston_1.format.combine(winston_1.format.timestamp(), winston_1.format.simple()),
|
|
47
|
+
transports: [new winston_1.transports.File({ filename: this.iosSyslogFile })],
|
|
48
|
+
exitOnError: false
|
|
49
|
+
});
|
|
50
|
+
this.log.debug(`iOS syslog will be written to: '${this.iosSyslogFile}'`);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
this.log.warn(`Could not set up iOS syslog logger for '${this.iosSyslogFile}': ${e.message}`);
|
|
54
|
+
this.syslogLogger = null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const spawnArgs = ['log', 'stream', '--style', 'compact'];
|
|
58
|
+
if (this.predicate) {
|
|
59
|
+
spawnArgs.push('--predicate', this.predicate);
|
|
60
|
+
}
|
|
61
|
+
if (this.logLevel) {
|
|
62
|
+
spawnArgs.push('--level', this.logLevel);
|
|
63
|
+
}
|
|
64
|
+
this.log.debug(`Starting log capture for iOS Simulator with udid '${this.sim.udid}' ` +
|
|
65
|
+
`via simctl using the following arguments '${support_1.util.quote(spawnArgs)}'`);
|
|
66
|
+
await this.cleanupObsoleteLogStreams();
|
|
67
|
+
try {
|
|
68
|
+
this.proc = await this.sim.simctl.spawnSubProcess(spawnArgs);
|
|
69
|
+
await this.finishStartingLogCapture();
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
this.shutdownSyslogger();
|
|
73
|
+
throw new Error(`Simulator log capture failed. Original error: ${e.message}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async stopCapture() {
|
|
77
|
+
if (!this.proc) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
await this.killLogSubProcess();
|
|
81
|
+
this.proc = null;
|
|
82
|
+
this.shutdownSyslogger();
|
|
83
|
+
}
|
|
84
|
+
get isCapturing() {
|
|
85
|
+
return Boolean(this.proc?.isRunning);
|
|
86
|
+
}
|
|
87
|
+
async clearExistingSyslog() {
|
|
88
|
+
if (this.iosSyslogFile === undefined) {
|
|
89
|
+
this.log.debug('iOS Syslog file path is not defined, skipping deletion.');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
await promises_1.default.unlink(this.iosSyslogFile);
|
|
94
|
+
this.log.debug(`Existing iOS Syslog file: '${this.iosSyslogFile}' deleted.`);
|
|
95
|
+
}
|
|
96
|
+
catch (unlinkErr) {
|
|
97
|
+
if (unlinkErr.code !== 'ENOENT') {
|
|
98
|
+
this.log.warn(`Could not delete existing syslog file '${this.iosSyslogFile}': ${unlinkErr.message}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
shutdownSyslogger() {
|
|
103
|
+
if (this.syslogLogger) {
|
|
104
|
+
this.log.debug(`Closing iOS syslog file: '${this.iosSyslogFile}'`);
|
|
105
|
+
const fileTransport = this.syslogLogger.transports.find((t) => (t instanceof winston_1.transports.File) && (t.filename === this.iosSyslogFile));
|
|
106
|
+
if (fileTransport) {
|
|
107
|
+
fileTransport.end?.();
|
|
108
|
+
this.syslogLogger.remove(fileTransport);
|
|
109
|
+
}
|
|
110
|
+
this.syslogLogger = null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
onOutput(logRow, prefix = '') {
|
|
114
|
+
this.broadcast(logRow);
|
|
115
|
+
const space = prefix.length > 0 ? ' ' : '';
|
|
116
|
+
if (this.showLogs && !this.iosSyslogFile) {
|
|
117
|
+
this.log.info(`[IOS_SYSLOG_ROW${space}${prefix}] ${logRow}`);
|
|
118
|
+
}
|
|
119
|
+
else if (this.iosSyslogFile && this.showLogs) {
|
|
120
|
+
this.writeToSyslogFile(`[IOS_SYSLOG_ROW${space}${prefix}] ${logRow}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Writes the given log row to the dedicated iOS syslog file if the logger is active.
|
|
125
|
+
* @param {string} logRow - The log line to write.
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
writeToSyslogFile(logRow) {
|
|
129
|
+
if (this.syslogLogger && this.showLogs) {
|
|
130
|
+
this.syslogLogger.info(logRow);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async killLogSubProcess() {
|
|
134
|
+
if (!this.proc?.isRunning) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
this.log.debug('Stopping iOS log capture');
|
|
138
|
+
try {
|
|
139
|
+
await this.proc.stop('SIGTERM', 1000);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
if (!this.proc.isRunning) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
this.log.warn('Cannot stop log capture process. Sending SIGKILL');
|
|
146
|
+
await this.proc.stop('SIGKILL');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async finishStartingLogCapture() {
|
|
150
|
+
if (!this.proc) {
|
|
151
|
+
throw this.log.errorWithException('Could not capture simulator log');
|
|
152
|
+
}
|
|
153
|
+
for (const streamName of ['stdout', 'stderr']) {
|
|
154
|
+
this.proc.on(`line-${streamName}`, (line) => {
|
|
155
|
+
this.onOutput(line, ...(streamName === 'stderr' ? ['STDERR'] : []));
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
const startDetector = (stdout, stderr) => {
|
|
159
|
+
if (EXECVP_ERROR_PATTERN.test(stderr)) {
|
|
160
|
+
throw new Error('iOS log capture process failed to start');
|
|
161
|
+
}
|
|
162
|
+
return Boolean(stdout || stderr);
|
|
163
|
+
};
|
|
164
|
+
await this.proc.start(startDetector, START_TIMEOUT);
|
|
165
|
+
}
|
|
166
|
+
async cleanupObsoleteLogStreams() {
|
|
167
|
+
const processes = await this.sim.ps();
|
|
168
|
+
const pids = processes
|
|
169
|
+
.filter(({ name }) => LOG_STREAMING_PROCESS_NAME_PATTERN.test(name))
|
|
170
|
+
.map(({ pid }) => pid);
|
|
171
|
+
if (lodash_1.default.isEmpty(pids)) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
await (0, teen_process_1.exec)('kill', pids.map(String));
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
this.log.warn(`Could not terminate one or more obsolete log streams: ${e.stderr || e.message}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
exports.IOSSimulatorLog = IOSSimulatorLog;
|
|
183
|
+
exports.default = IOSSimulatorLog;
|
|
184
|
+
//# sourceMappingURL=ios-simulator-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ios-simulator-log.js","sourceRoot":"","sources":["../../../../lib/device/log/ios-simulator-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IOSLog } from './ios-log';
|
|
2
|
+
import type { LogEntry } from '../../commands/types';
|
|
3
|
+
type TSerializedEntry = [string, number];
|
|
4
|
+
export declare abstract class LineConsumingLog extends IOSLog<string, TSerializedEntry> {
|
|
5
|
+
protected _serializeEntry(value: string): TSerializedEntry;
|
|
6
|
+
protected _deserializeEntry(value: TSerializedEntry): LogEntry;
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=line-consuming-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-consuming-log.d.ts","sourceRoot":"","sources":["../../../../lib/device/log/line-consuming-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzC,8BAAsB,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;cAC1D,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB;cAIhD,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,QAAQ;CAIxE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LineConsumingLog = void 0;
|
|
4
|
+
const ios_log_1 = require("./ios-log");
|
|
5
|
+
const helpers_1 = require("./helpers");
|
|
6
|
+
class LineConsumingLog extends ios_log_1.IOSLog {
|
|
7
|
+
_serializeEntry(value) {
|
|
8
|
+
return [value, Date.now()];
|
|
9
|
+
}
|
|
10
|
+
_deserializeEntry(value) {
|
|
11
|
+
const [message, timestamp] = value;
|
|
12
|
+
return (0, helpers_1.toLogEntry)(message, timestamp);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.LineConsumingLog = LineConsumingLog;
|
|
16
|
+
//# sourceMappingURL=line-consuming-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-consuming-log.js","sourceRoot":"","sources":["../../../../lib/device/log/line-consuming-log.ts"],"names":[],"mappings":";;;AAAA,uCAAiC;AACjC,uCAAuC;AAKvC,MAAsB,gBAAiB,SAAQ,gBAAgC;IAC1D,eAAe,CAAC,KAAa;QAC9C,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,CAAC;IAEkB,iBAAiB,CAAC,KAAuB;QAC1D,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;QACnC,OAAO,IAAA,oBAAU,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;CACF;AATD,4CASC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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[];
|
|
25
|
+
}
|
|
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?: Error, entry?: SafariConsoleEntry): void;
|
|
63
|
+
protected _serializeEntry(value: SafariConsoleEntry): TSerializedEntry;
|
|
64
|
+
protected _deserializeEntry(value: TSerializedEntry): LogEntry;
|
|
65
|
+
}
|
|
66
|
+
export default SafariConsoleLog;
|
|
67
|
+
//# sourceMappingURL=safari-console-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQrD,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,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,kBAAkB,GAAG,IAAI;cAY7C,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,gBAAgB;cAI5D,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,QAAQ;CAIxE;AAMD,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SafariConsoleLog = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const helpers_1 = require("./helpers");
|
|
9
|
+
const ios_log_1 = 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.IOSLog {
|
|
16
|
+
_showLogs;
|
|
17
|
+
constructor(opts) {
|
|
18
|
+
super({
|
|
19
|
+
log: opts.log,
|
|
20
|
+
maxBufferSize: helpers_1.MAX_BUFFERED_EVENTS_COUNT,
|
|
21
|
+
});
|
|
22
|
+
this._showLogs = opts.showLogs;
|
|
23
|
+
}
|
|
24
|
+
async startCapture() { }
|
|
25
|
+
async stopCapture() { }
|
|
26
|
+
get isCapturing() {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @param err
|
|
32
|
+
* @param entry The output will be like:
|
|
33
|
+
* {
|
|
34
|
+
* "source": "javascript",
|
|
35
|
+
* "level":"error",
|
|
36
|
+
* "text":"ReferenceError: Can't find variable: s_account",
|
|
37
|
+
* "type":"log",
|
|
38
|
+
* "line":2,
|
|
39
|
+
* "column":21,
|
|
40
|
+
* "url":"https://assets.adobedtm.com/b46e318d845250834eda10c5a20827c045a4d76f/scripts/satellite-57866f8b64746d53a8000104-staging.js",
|
|
41
|
+
* "repeatCount":1,
|
|
42
|
+
* "stackTrace":[{
|
|
43
|
+
* "functionName":"global code",
|
|
44
|
+
* "url":"https://assets.adobedtm.com/b46e318d845250834eda10c5a20827c045a4d76f/scripts/satellite-57866f8b64746d53a8000104-staging.js",
|
|
45
|
+
* "scriptId":"6",
|
|
46
|
+
* "lineNumber":2,
|
|
47
|
+
* "columnNumber":21
|
|
48
|
+
* }]
|
|
49
|
+
* }
|
|
50
|
+
*
|
|
51
|
+
* we need, at least, `level` (in accordance with Java levels
|
|
52
|
+
* (https://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html)),
|
|
53
|
+
* `timestamp`, and `message` to satisfy the java client. In order to
|
|
54
|
+
* provide all the information to the client, `message` is the full
|
|
55
|
+
* object, stringified.
|
|
56
|
+
*
|
|
57
|
+
*/
|
|
58
|
+
onConsoleLogEvent(err, entry) {
|
|
59
|
+
if (!entry) {
|
|
60
|
+
this.log.debug(`[SafariConsole] Ignoring empty console log entry: ${err?.message}`);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this.broadcast(entry);
|
|
64
|
+
if (this._showLogs) {
|
|
65
|
+
this.log.info(`[SafariConsole] ${lodash_1.default.truncate(JSON.stringify(entry), { length: helpers_1.MAX_JSON_LOG_LENGTH })}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
_serializeEntry(value) {
|
|
69
|
+
return [value, Date.now()];
|
|
70
|
+
}
|
|
71
|
+
_deserializeEntry(value) {
|
|
72
|
+
const [entry, timestamp] = value;
|
|
73
|
+
return (0, helpers_1.toLogEntry)(JSON.stringify(entry), timestamp, mapLogLevel(entry.level));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.SafariConsoleLog = SafariConsoleLog;
|
|
77
|
+
function mapLogLevel(originalLevel) {
|
|
78
|
+
return LOG_LEVELS_MAP[originalLevel] ?? helpers_1.DEFAULT_LOG_LEVEL;
|
|
79
|
+
}
|
|
80
|
+
exports.default = SafariConsoleLog;
|
|
81
|
+
//# sourceMappingURL=safari-console-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safari-console-log.js","sourceRoot":"","sources":["../../../../lib/device/log/safari-console-log.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAEvB,uCAKmB;AACnB,uCAAmC;AAGnC,MAAM,cAAc,GAAG;IACrB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,MAAM;CACZ,CAAC;AA6BF,MAAa,gBAAiB,SAAQ,gBAA4C;IAC/D,SAAS,CAAU;IAEpC,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,GAAW,EAAE,KAA0B;QACvD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qDAAqD,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,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;AAlED,4CAkEC;AAED,SAAS,WAAW,CAAC,aAAqB;IACxC,OAAO,cAAc,CAAC,aAAa,CAAC,IAAI,2BAAiB,CAAC;AAC5D,CAAC;AAED,kBAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { LineConsumingLog } from './line-consuming-log';
|
|
2
|
+
import type { AppiumLogger, StringRecord } from '@appium/types';
|
|
3
|
+
export interface SafariConsoleLogOptions {
|
|
4
|
+
showLogs: boolean;
|
|
5
|
+
log: AppiumLogger;
|
|
6
|
+
}
|
|
7
|
+
export interface SafariNetworkResponseTiming {
|
|
8
|
+
startTime: number;
|
|
9
|
+
redirectStart: number;
|
|
10
|
+
redirectEnd: number;
|
|
11
|
+
fetchStart: number;
|
|
12
|
+
domainLookupStart: number;
|
|
13
|
+
domainLookupEnd: number;
|
|
14
|
+
connectStart: number;
|
|
15
|
+
connectEnd: number;
|
|
16
|
+
secureConnectionStart: number;
|
|
17
|
+
requestStart: number;
|
|
18
|
+
responseStart: number;
|
|
19
|
+
responseEnd: number;
|
|
20
|
+
}
|
|
21
|
+
export interface SafariNetworkResponse {
|
|
22
|
+
url: string;
|
|
23
|
+
status: number;
|
|
24
|
+
statusText: string;
|
|
25
|
+
headers: Record<string, string>;
|
|
26
|
+
mimeType: string;
|
|
27
|
+
timing: SafariNetworkResponseTiming;
|
|
28
|
+
source: string;
|
|
29
|
+
security: StringRecord;
|
|
30
|
+
}
|
|
31
|
+
export interface SafariNetworkLogEntryMetrics {
|
|
32
|
+
requestHeaderBytesSent: number;
|
|
33
|
+
requestBodyBytesSent: number;
|
|
34
|
+
responseHeaderBytesReceived: number;
|
|
35
|
+
isProxyConnection: boolean;
|
|
36
|
+
responseBodyBytesReceived: number;
|
|
37
|
+
responseBodyDecodedSize: number;
|
|
38
|
+
securityConnection: StringRecord;
|
|
39
|
+
}
|
|
40
|
+
export interface SafariNetworkRequest {
|
|
41
|
+
url: string;
|
|
42
|
+
method: string;
|
|
43
|
+
headers: Record<string, string>;
|
|
44
|
+
rereferrerPolicy: string;
|
|
45
|
+
}
|
|
46
|
+
export interface SafariNetworkRequestInitiator {
|
|
47
|
+
type: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SafariNetworkLogEntry {
|
|
50
|
+
requestId: string;
|
|
51
|
+
frameId?: string;
|
|
52
|
+
loaderId?: string;
|
|
53
|
+
documentURL?: string;
|
|
54
|
+
request?: SafariNetworkRequest;
|
|
55
|
+
timestamp?: number;
|
|
56
|
+
walltime?: number;
|
|
57
|
+
inititator?: SafariNetworkRequestInitiator;
|
|
58
|
+
response?: SafariNetworkResponse;
|
|
59
|
+
type?: string;
|
|
60
|
+
initiator?: string;
|
|
61
|
+
metrics?: SafariNetworkLogEntryMetrics;
|
|
62
|
+
errorText?: string;
|
|
63
|
+
canceled?: boolean;
|
|
64
|
+
[key: string]: any;
|
|
65
|
+
}
|
|
66
|
+
export declare class SafariNetworkLog extends LineConsumingLog {
|
|
67
|
+
private readonly _showLogs;
|
|
68
|
+
constructor(opts: SafariConsoleLogOptions);
|
|
69
|
+
startCapture(): Promise<void>;
|
|
70
|
+
stopCapture(): Promise<void>;
|
|
71
|
+
get isCapturing(): boolean;
|
|
72
|
+
onNetworkEvent(err?: Error, entry?: SafariNetworkLogEntry, method?: string): void;
|
|
73
|
+
}
|
|
74
|
+
export default SafariNetworkLog;
|
|
75
|
+
//# sourceMappingURL=safari-network-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safari-network-log.d.ts","sourceRoot":"","sources":["../../../../lib/device/log/safari-network-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SafariNetworkLog = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const line_consuming_log_1 = require("./line-consuming-log");
|
|
9
|
+
const helpers_1 = require("./helpers");
|
|
10
|
+
const EVENTS_TO_LOG = [
|
|
11
|
+
'Network.loadingFinished',
|
|
12
|
+
'Network.loadingFailed',
|
|
13
|
+
];
|
|
14
|
+
const MONITORED_EVENTS = [
|
|
15
|
+
'Network.requestWillBeSent',
|
|
16
|
+
'Network.responseReceived',
|
|
17
|
+
...EVENTS_TO_LOG,
|
|
18
|
+
];
|
|
19
|
+
class SafariNetworkLog extends line_consuming_log_1.LineConsumingLog {
|
|
20
|
+
_showLogs;
|
|
21
|
+
constructor(opts) {
|
|
22
|
+
super({
|
|
23
|
+
log: opts.log,
|
|
24
|
+
maxBufferSize: helpers_1.MAX_BUFFERED_EVENTS_COUNT,
|
|
25
|
+
});
|
|
26
|
+
this._showLogs = opts.showLogs;
|
|
27
|
+
}
|
|
28
|
+
async startCapture() { }
|
|
29
|
+
async stopCapture() { }
|
|
30
|
+
get isCapturing() {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
onNetworkEvent(err, entry, method) {
|
|
34
|
+
if (!lodash_1.default.includes(MONITORED_EVENTS, method)) {
|
|
35
|
+
this.log.debug(`[SafariNetwork] Ignoring unmonitored event: ${method}`);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const serializedEntry = JSON.stringify({ method, event: entry });
|
|
39
|
+
this.broadcast(serializedEntry);
|
|
40
|
+
if (this._showLogs && lodash_1.default.includes(EVENTS_TO_LOG, method)) {
|
|
41
|
+
this.log.info(`[SafariNetwork] ${lodash_1.default.truncate(serializedEntry, { length: helpers_1.MAX_JSON_LOG_LENGTH })}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.SafariNetworkLog = SafariNetworkLog;
|
|
46
|
+
exports.default = SafariNetworkLog;
|
|
47
|
+
//# sourceMappingURL=safari-network-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safari-network-log.js","sourceRoot":"","sources":["../../../../lib/device/log/safari-network-log.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,6DAAwD;AACxD,uCAA2E;AAG3E,MAAM,aAAa,GAAG;IACpB,yBAAyB;IACzB,uBAAuB;CACxB,CAAC;AACF,MAAM,gBAAgB,GAAG;IACvB,2BAA2B;IAC3B,0BAA0B;IAC1B,GAAG,aAAa;CACjB,CAAC;AA2EF,MAAa,gBAAiB,SAAQ,qCAAgB;IACnC,SAAS,CAAU;IAEpC,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,cAAc,CAAC,GAAW,EAAE,KAA6B,EAAE,MAAe;QACxE,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,MAAM,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,SAAS,IAAI,gBAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,gBAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAC,MAAM,EAAE,6BAAmB,EAAC,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;CACF;AA7BD,4CA6BC;AAED,kBAAe,gBAAgB,CAAC"}
|