craftdriver 0.0.3 → 0.1.0
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/README.md +67 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/bidi/connection.d.ts +62 -0
- package/dist/lib/bidi/connection.d.ts.map +1 -0
- package/dist/lib/bidi/connection.js +227 -0
- package/dist/lib/bidi/connection.js.map +1 -0
- package/dist/lib/bidi/index.d.ts +76 -0
- package/dist/lib/bidi/index.d.ts.map +1 -0
- package/dist/lib/bidi/index.js +114 -0
- package/dist/lib/bidi/index.js.map +1 -0
- package/dist/lib/bidi/logs.d.ts +104 -0
- package/dist/lib/bidi/logs.d.ts.map +1 -0
- package/dist/lib/bidi/logs.js +273 -0
- package/dist/lib/bidi/logs.js.map +1 -0
- package/dist/lib/bidi/network.d.ts +92 -0
- package/dist/lib/bidi/network.d.ts.map +1 -0
- package/dist/lib/bidi/network.js +259 -0
- package/dist/lib/bidi/network.js.map +1 -0
- package/dist/lib/bidi/storage.d.ts +81 -0
- package/dist/lib/bidi/storage.d.ts.map +1 -0
- package/dist/lib/bidi/storage.js +292 -0
- package/dist/lib/bidi/storage.js.map +1 -0
- package/dist/lib/bidi/types.d.ts +302 -0
- package/dist/lib/bidi/types.d.ts.map +1 -0
- package/dist/lib/bidi/types.js +6 -0
- package/dist/lib/bidi/types.js.map +1 -0
- package/dist/lib/browser.d.ts +142 -0
- package/dist/lib/browser.d.ts.map +1 -1
- package/dist/lib/browser.js +162 -11
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/driver.d.ts +2 -0
- package/dist/lib/driver.d.ts.map +1 -1
- package/dist/lib/driver.js +9 -1
- package/dist/lib/driver.js.map +1 -1
- package/dist/lib/elementHandle.d.ts +3 -0
- package/dist/lib/elementHandle.d.ts.map +1 -1
- package/dist/lib/elementHandle.js +33 -0
- package/dist/lib/elementHandle.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BiDi Log Monitor
|
|
3
|
+
* Real-time console and JavaScript error monitoring
|
|
4
|
+
*/
|
|
5
|
+
import type { BiDiConnection } from './connection.js';
|
|
6
|
+
import type { BrowsingContext, LogLevel } from './types.js';
|
|
7
|
+
export interface ConsoleMessage {
|
|
8
|
+
type: 'console';
|
|
9
|
+
level: LogLevel;
|
|
10
|
+
text: string;
|
|
11
|
+
timestamp: Date;
|
|
12
|
+
method: string;
|
|
13
|
+
args: unknown[];
|
|
14
|
+
stackTrace?: StackFrame[];
|
|
15
|
+
context?: BrowsingContext;
|
|
16
|
+
}
|
|
17
|
+
export interface JavaScriptError {
|
|
18
|
+
type: 'javascript';
|
|
19
|
+
level: 'error';
|
|
20
|
+
text: string;
|
|
21
|
+
timestamp: Date;
|
|
22
|
+
stackTrace?: StackFrame[];
|
|
23
|
+
context?: BrowsingContext;
|
|
24
|
+
}
|
|
25
|
+
export interface StackFrame {
|
|
26
|
+
functionName: string;
|
|
27
|
+
url: string;
|
|
28
|
+
lineNumber: number;
|
|
29
|
+
columnNumber: number;
|
|
30
|
+
}
|
|
31
|
+
export type LogMessage = ConsoleMessage | JavaScriptError;
|
|
32
|
+
export type LogHandler = (message: LogMessage) => void;
|
|
33
|
+
export type ConsoleHandler = (message: ConsoleMessage) => void;
|
|
34
|
+
export type ErrorHandler = (error: JavaScriptError) => void;
|
|
35
|
+
export declare class LogMonitor {
|
|
36
|
+
private connection;
|
|
37
|
+
private subscribed;
|
|
38
|
+
private context?;
|
|
39
|
+
private allHandlers;
|
|
40
|
+
private levelHandlers;
|
|
41
|
+
private consoleHandlers;
|
|
42
|
+
private errorHandlers;
|
|
43
|
+
private logs;
|
|
44
|
+
private maxLogs;
|
|
45
|
+
constructor(connection: BiDiConnection, context?: BrowsingContext);
|
|
46
|
+
/**
|
|
47
|
+
* Initialize log event subscriptions
|
|
48
|
+
*/
|
|
49
|
+
initialize(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Listen to all log messages
|
|
52
|
+
*/
|
|
53
|
+
onLog(handler: LogHandler): () => void;
|
|
54
|
+
/**
|
|
55
|
+
* Listen to console messages only
|
|
56
|
+
*/
|
|
57
|
+
onConsole(handler: ConsoleHandler): () => void;
|
|
58
|
+
/**
|
|
59
|
+
* Listen to JavaScript errors only
|
|
60
|
+
*/
|
|
61
|
+
onError(handler: ErrorHandler): () => void;
|
|
62
|
+
/**
|
|
63
|
+
* Listen to specific log levels
|
|
64
|
+
*/
|
|
65
|
+
on(level: LogLevel, handler: LogHandler): () => void;
|
|
66
|
+
/**
|
|
67
|
+
* Get all captured logs
|
|
68
|
+
*/
|
|
69
|
+
getLogs(): LogMessage[];
|
|
70
|
+
/**
|
|
71
|
+
* Get logs filtered by level
|
|
72
|
+
*/
|
|
73
|
+
getLogsByLevel(level: LogLevel): LogMessage[];
|
|
74
|
+
/**
|
|
75
|
+
* Get all console messages
|
|
76
|
+
*/
|
|
77
|
+
getConsoleLogs(): ConsoleMessage[];
|
|
78
|
+
/**
|
|
79
|
+
* Get all JavaScript errors
|
|
80
|
+
*/
|
|
81
|
+
getErrors(): JavaScriptError[];
|
|
82
|
+
/**
|
|
83
|
+
* Clear captured logs
|
|
84
|
+
*/
|
|
85
|
+
clearLogs(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Wait for a console message matching predicate
|
|
88
|
+
*/
|
|
89
|
+
waitForConsole(predicate: (msg: ConsoleMessage) => boolean, timeout?: number): Promise<ConsoleMessage>;
|
|
90
|
+
/**
|
|
91
|
+
* Wait for a JavaScript error
|
|
92
|
+
*/
|
|
93
|
+
waitForError(predicate?: (err: JavaScriptError) => boolean, timeout?: number): Promise<JavaScriptError>;
|
|
94
|
+
/**
|
|
95
|
+
* Assert no JavaScript errors occurred
|
|
96
|
+
*/
|
|
97
|
+
assertNoErrors(): void;
|
|
98
|
+
private handleLogEntry;
|
|
99
|
+
private convertLogEntry;
|
|
100
|
+
private convertStackTrace;
|
|
101
|
+
private deserializeValue;
|
|
102
|
+
private notifyHandlers;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BiDi Log Monitor
|
|
3
|
+
* Real-time console and JavaScript error monitoring
|
|
4
|
+
*/
|
|
5
|
+
export class LogMonitor {
|
|
6
|
+
connection;
|
|
7
|
+
subscribed = false;
|
|
8
|
+
context;
|
|
9
|
+
allHandlers = new Set();
|
|
10
|
+
levelHandlers = new Map();
|
|
11
|
+
consoleHandlers = new Set();
|
|
12
|
+
errorHandlers = new Set();
|
|
13
|
+
logs = [];
|
|
14
|
+
maxLogs = 1000;
|
|
15
|
+
constructor(connection, context) {
|
|
16
|
+
this.connection = connection;
|
|
17
|
+
this.context = context;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Initialize log event subscriptions
|
|
21
|
+
*/
|
|
22
|
+
async initialize() {
|
|
23
|
+
if (this.subscribed)
|
|
24
|
+
return;
|
|
25
|
+
await this.connection.subscribe(['log.entryAdded'], this.context ? [this.context] : undefined);
|
|
26
|
+
this.connection.on('log.entryAdded', (params) => {
|
|
27
|
+
this.handleLogEntry(params);
|
|
28
|
+
});
|
|
29
|
+
this.subscribed = true;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Listen to all log messages
|
|
33
|
+
*/
|
|
34
|
+
onLog(handler) {
|
|
35
|
+
this.allHandlers.add(handler);
|
|
36
|
+
return () => this.allHandlers.delete(handler);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Listen to console messages only
|
|
40
|
+
*/
|
|
41
|
+
onConsole(handler) {
|
|
42
|
+
this.consoleHandlers.add(handler);
|
|
43
|
+
return () => this.consoleHandlers.delete(handler);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Listen to JavaScript errors only
|
|
47
|
+
*/
|
|
48
|
+
onError(handler) {
|
|
49
|
+
this.errorHandlers.add(handler);
|
|
50
|
+
return () => this.errorHandlers.delete(handler);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Listen to specific log levels
|
|
54
|
+
*/
|
|
55
|
+
on(level, handler) {
|
|
56
|
+
if (!this.levelHandlers.has(level)) {
|
|
57
|
+
this.levelHandlers.set(level, new Set());
|
|
58
|
+
}
|
|
59
|
+
this.levelHandlers.get(level).add(handler);
|
|
60
|
+
return () => this.levelHandlers.get(level)?.delete(handler);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get all captured logs
|
|
64
|
+
*/
|
|
65
|
+
getLogs() {
|
|
66
|
+
return [...this.logs];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get logs filtered by level
|
|
70
|
+
*/
|
|
71
|
+
getLogsByLevel(level) {
|
|
72
|
+
return this.logs.filter((log) => log.level === level);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get all console messages
|
|
76
|
+
*/
|
|
77
|
+
getConsoleLogs() {
|
|
78
|
+
return this.logs.filter((log) => log.type === 'console');
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get all JavaScript errors
|
|
82
|
+
*/
|
|
83
|
+
getErrors() {
|
|
84
|
+
return this.logs.filter((log) => log.type === 'javascript');
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Clear captured logs
|
|
88
|
+
*/
|
|
89
|
+
clearLogs() {
|
|
90
|
+
this.logs = [];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Wait for a console message matching predicate
|
|
94
|
+
*/
|
|
95
|
+
waitForConsole(predicate, timeout = 30000) {
|
|
96
|
+
return new Promise((resolve, reject) => {
|
|
97
|
+
const timeoutId = setTimeout(() => {
|
|
98
|
+
unsubscribe();
|
|
99
|
+
reject(new Error('Timeout waiting for console message'));
|
|
100
|
+
}, timeout);
|
|
101
|
+
const unsubscribe = this.onConsole((msg) => {
|
|
102
|
+
if (predicate(msg)) {
|
|
103
|
+
clearTimeout(timeoutId);
|
|
104
|
+
unsubscribe();
|
|
105
|
+
resolve(msg);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Wait for a JavaScript error
|
|
112
|
+
*/
|
|
113
|
+
waitForError(predicate, timeout = 30000) {
|
|
114
|
+
return new Promise((resolve, reject) => {
|
|
115
|
+
const timeoutId = setTimeout(() => {
|
|
116
|
+
unsubscribe();
|
|
117
|
+
reject(new Error('Timeout waiting for JavaScript error'));
|
|
118
|
+
}, timeout);
|
|
119
|
+
const unsubscribe = this.onError((err) => {
|
|
120
|
+
if (!predicate || predicate(err)) {
|
|
121
|
+
clearTimeout(timeoutId);
|
|
122
|
+
unsubscribe();
|
|
123
|
+
resolve(err);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Assert no JavaScript errors occurred
|
|
130
|
+
*/
|
|
131
|
+
assertNoErrors() {
|
|
132
|
+
const errors = this.getErrors();
|
|
133
|
+
if (errors.length > 0) {
|
|
134
|
+
const errorMessages = errors.map((e) => e.text).join('\n');
|
|
135
|
+
throw new Error(`JavaScript errors detected:\n${errorMessages}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
handleLogEntry(entry) {
|
|
139
|
+
const message = this.convertLogEntry(entry);
|
|
140
|
+
// Store log
|
|
141
|
+
this.logs.push(message);
|
|
142
|
+
if (this.logs.length > this.maxLogs) {
|
|
143
|
+
this.logs.shift();
|
|
144
|
+
}
|
|
145
|
+
// Notify handlers
|
|
146
|
+
this.notifyHandlers(message);
|
|
147
|
+
}
|
|
148
|
+
convertLogEntry(entry) {
|
|
149
|
+
const stackTrace = entry.stackTrace
|
|
150
|
+
? this.convertStackTrace(entry.stackTrace)
|
|
151
|
+
: undefined;
|
|
152
|
+
if (entry.type === 'javascript') {
|
|
153
|
+
const error = {
|
|
154
|
+
type: 'javascript',
|
|
155
|
+
level: 'error',
|
|
156
|
+
text: entry.text,
|
|
157
|
+
timestamp: new Date(entry.timestamp),
|
|
158
|
+
stackTrace,
|
|
159
|
+
context: entry.source.context,
|
|
160
|
+
};
|
|
161
|
+
return error;
|
|
162
|
+
}
|
|
163
|
+
const consoleMsg = {
|
|
164
|
+
type: 'console',
|
|
165
|
+
level: entry.level,
|
|
166
|
+
text: entry.text,
|
|
167
|
+
timestamp: new Date(entry.timestamp),
|
|
168
|
+
method: entry.method || entry.level,
|
|
169
|
+
args: entry.args ? entry.args.map((arg) => this.deserializeValue(arg)) : [],
|
|
170
|
+
stackTrace,
|
|
171
|
+
context: entry.source.context,
|
|
172
|
+
};
|
|
173
|
+
return consoleMsg;
|
|
174
|
+
}
|
|
175
|
+
convertStackTrace(trace) {
|
|
176
|
+
return trace.callFrames.map((frame) => ({
|
|
177
|
+
functionName: frame.functionName,
|
|
178
|
+
url: frame.url,
|
|
179
|
+
lineNumber: frame.lineNumber,
|
|
180
|
+
columnNumber: frame.columnNumber,
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
deserializeValue(value) {
|
|
184
|
+
switch (value.type) {
|
|
185
|
+
case 'undefined':
|
|
186
|
+
return undefined;
|
|
187
|
+
case 'null':
|
|
188
|
+
return null;
|
|
189
|
+
case 'string':
|
|
190
|
+
return value.value;
|
|
191
|
+
case 'number':
|
|
192
|
+
if (value.value === 'NaN')
|
|
193
|
+
return NaN;
|
|
194
|
+
if (value.value === 'Infinity')
|
|
195
|
+
return Infinity;
|
|
196
|
+
if (value.value === '-Infinity')
|
|
197
|
+
return -Infinity;
|
|
198
|
+
if (value.value === '-0')
|
|
199
|
+
return -0;
|
|
200
|
+
return value.value;
|
|
201
|
+
case 'boolean':
|
|
202
|
+
return value.value;
|
|
203
|
+
case 'bigint':
|
|
204
|
+
return BigInt(value.value);
|
|
205
|
+
case 'array':
|
|
206
|
+
return value.value?.map((v) => this.deserializeValue(v)) ?? [];
|
|
207
|
+
case 'object':
|
|
208
|
+
if (!value.value)
|
|
209
|
+
return {};
|
|
210
|
+
return Object.fromEntries(value.value.map(([k, v]) => [
|
|
211
|
+
typeof k === 'string' ? k : this.deserializeValue(k),
|
|
212
|
+
this.deserializeValue(v),
|
|
213
|
+
]));
|
|
214
|
+
case 'regexp':
|
|
215
|
+
return new RegExp(value.value.pattern, value.value.flags);
|
|
216
|
+
case 'date':
|
|
217
|
+
return new Date(value.value);
|
|
218
|
+
case 'function':
|
|
219
|
+
return '[Function]';
|
|
220
|
+
case 'node':
|
|
221
|
+
return `[${value.value.nodeName || 'Node'}]`;
|
|
222
|
+
case 'window':
|
|
223
|
+
return `[Window: ${value.value.context}]`;
|
|
224
|
+
default:
|
|
225
|
+
return '[Unknown]';
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
notifyHandlers(message) {
|
|
229
|
+
// All handlers
|
|
230
|
+
for (const handler of this.allHandlers) {
|
|
231
|
+
try {
|
|
232
|
+
handler(message);
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
console.error('Error in log handler:', err);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// Level-specific handlers
|
|
239
|
+
const levelHandlers = this.levelHandlers.get(message.level);
|
|
240
|
+
if (levelHandlers) {
|
|
241
|
+
for (const handler of levelHandlers) {
|
|
242
|
+
try {
|
|
243
|
+
handler(message);
|
|
244
|
+
}
|
|
245
|
+
catch (err) {
|
|
246
|
+
console.error('Error in level log handler:', err);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Type-specific handlers
|
|
251
|
+
if (message.type === 'console') {
|
|
252
|
+
for (const handler of this.consoleHandlers) {
|
|
253
|
+
try {
|
|
254
|
+
handler(message);
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
console.error('Error in console handler:', err);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
else if (message.type === 'javascript') {
|
|
262
|
+
for (const handler of this.errorHandlers) {
|
|
263
|
+
try {
|
|
264
|
+
handler(message);
|
|
265
|
+
}
|
|
266
|
+
catch (err) {
|
|
267
|
+
console.error('Error in error handler:', err);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/lib/bidi/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BiDi Network Interceptor
|
|
3
|
+
* Provides request interception, mocking, and modification capabilities
|
|
4
|
+
*/
|
|
5
|
+
import type { BiDiConnection } from './connection.js';
|
|
6
|
+
import type { BrowsingContext, InterceptPhase, NetworkIntercept, UrlPattern } from './types.js';
|
|
7
|
+
export interface MockResponse {
|
|
8
|
+
status?: number;
|
|
9
|
+
statusText?: string;
|
|
10
|
+
headers?: Record<string, string>;
|
|
11
|
+
body?: string | Buffer | object;
|
|
12
|
+
}
|
|
13
|
+
export interface RequestHandler {
|
|
14
|
+
(request: InterceptedRequest): MockResponse | void | Promise<MockResponse | void>;
|
|
15
|
+
}
|
|
16
|
+
export interface InterceptedRequest {
|
|
17
|
+
id: string;
|
|
18
|
+
url: string;
|
|
19
|
+
method: string;
|
|
20
|
+
headers: Record<string, string>;
|
|
21
|
+
postData?: string;
|
|
22
|
+
resourceType?: string;
|
|
23
|
+
isBlocked: boolean;
|
|
24
|
+
context: BrowsingContext | null;
|
|
25
|
+
}
|
|
26
|
+
export interface InterceptRule {
|
|
27
|
+
id: NetworkIntercept;
|
|
28
|
+
patterns: UrlPattern[];
|
|
29
|
+
phases: InterceptPhase[];
|
|
30
|
+
handler?: RequestHandler;
|
|
31
|
+
}
|
|
32
|
+
export declare class NetworkInterceptor {
|
|
33
|
+
private connection;
|
|
34
|
+
private intercepts;
|
|
35
|
+
private handlers;
|
|
36
|
+
private subscribed;
|
|
37
|
+
private context?;
|
|
38
|
+
constructor(connection: BiDiConnection, context?: BrowsingContext);
|
|
39
|
+
/**
|
|
40
|
+
* Initialize network event subscriptions
|
|
41
|
+
*/
|
|
42
|
+
initialize(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Add a network intercept for specific URL patterns
|
|
45
|
+
*/
|
|
46
|
+
intercept(patterns: string | string[] | UrlPattern | UrlPattern[], handler: RequestHandler, phases?: InterceptPhase[]): Promise<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Mock all requests matching pattern with a fixed response
|
|
49
|
+
*/
|
|
50
|
+
mock(pattern: string | string[] | UrlPattern | UrlPattern[], response: MockResponse | ((req: InterceptedRequest) => MockResponse)): Promise<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Block all requests matching pattern
|
|
53
|
+
*/
|
|
54
|
+
block(pattern: string | string[]): Promise<string>;
|
|
55
|
+
/**
|
|
56
|
+
* Modify request headers for matching patterns
|
|
57
|
+
*/
|
|
58
|
+
setExtraHeaders(headers: Record<string, string>, contexts?: BrowsingContext[]): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Continue a blocked request (optionally with modifications)
|
|
61
|
+
*/
|
|
62
|
+
continueRequest(requestId: string, options?: {
|
|
63
|
+
url?: string;
|
|
64
|
+
method?: string;
|
|
65
|
+
headers?: Record<string, string>;
|
|
66
|
+
body?: string;
|
|
67
|
+
}): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Provide a custom response for a blocked request
|
|
70
|
+
*/
|
|
71
|
+
provideResponse(requestId: string, response: MockResponse): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Fail a blocked request
|
|
74
|
+
*/
|
|
75
|
+
failRequest(requestId: string): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Remove an intercept
|
|
78
|
+
*/
|
|
79
|
+
removeIntercept(interceptId: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Remove all intercepts
|
|
82
|
+
*/
|
|
83
|
+
removeAllIntercepts(): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Set cache behavior
|
|
86
|
+
*/
|
|
87
|
+
setCacheBehavior(behavior: 'default' | 'bypass', contexts?: BrowsingContext[]): Promise<void>;
|
|
88
|
+
private handleBeforeRequestSent;
|
|
89
|
+
private normalizePatterns;
|
|
90
|
+
private headersToObject;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/network.ts"],"names":[],"mappings":"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"}
|