import type { BrowserUserContext } from './browser.js'; import type { BrowsingContextBrowsingContext, BrowsingContextNavigation } from './browsing_context.js'; import type { EmptyResult, Extensible, JsInt, JsUint } from './common.js'; import type { ScriptStackTrace } from './script.js'; export type NetworkCommand = NetworkAddDataCollector | NetworkAddIntercept | NetworkContinueRequest | NetworkContinueResponse | NetworkContinueWithAuth | NetworkDisownData | NetworkFailRequest | NetworkGetData | NetworkProvideResponse | NetworkRemoveDataCollector | NetworkRemoveIntercept | NetworkSetCacheBehavior | NetworkSetExtraHeaders; export type NetworkResult = NetworkAddDataCollectorResult | NetworkAddInterceptResult | NetworkContinueRequestResult | NetworkContinueResponseResult | NetworkContinueWithAuthResult | NetworkDisownDataResult | NetworkFailRequestResult | NetworkGetDataResult | NetworkProvideResponseResult | NetworkRemoveDataCollectorResult | NetworkRemoveInterceptResult | NetworkSetCacheBehaviorResult | NetworkSetExtraHeadersResult; export type NetworkEvent = NetworkAuthRequired | NetworkBeforeRequestSent | NetworkFetchError | NetworkResponseCompleted | NetworkResponseStarted; export interface NetworkAuthChallenge { scheme: string; realm: string; } export interface NetworkAuthCredentials { type: "password"; username: string; password: string; } export interface NetworkBaseParameters { context: BrowsingContextBrowsingContext | null; isBlocked: boolean; navigation: BrowsingContextNavigation | null; redirectCount: JsUint; request: NetworkRequestData; timestamp: JsUint; userContext?: BrowserUserContext | null; intercepts?: NetworkIntercept[]; } export type NetworkBytesValue = NetworkStringValue | NetworkBase64Value; export interface NetworkStringValue { type: "string"; value: string; } export interface NetworkBase64Value { type: "base64"; value: string; } export type NetworkCollector = string; export type NetworkCollectorType = "blob"; export type NetworkSameSite = "strict" | "lax" | "none" | "default"; export type NetworkCookie = Extensible & { name: string; value: NetworkBytesValue; domain: string; path: string; size: JsUint; httpOnly: boolean; secure: boolean; sameSite: NetworkSameSite; expiry?: JsUint; }; export interface NetworkCookieHeader { name: string; value: NetworkBytesValue; } export type NetworkDataType = "request" | "response"; export interface NetworkFetchTimingInfo { timeOrigin: number; requestTime: number; redirectStart: number; redirectEnd: number; fetchStart: number; dnsStart: number; dnsEnd: number; connectStart: number; connectEnd: number; tlsStart: number; requestStart: number; responseStart: number; responseEnd: number; } export interface NetworkHeader { name: string; value: NetworkBytesValue; } export interface NetworkInitiator { columnNumber?: JsUint; lineNumber?: JsUint; request?: NetworkRequest; stackTrace?: ScriptStackTrace; type?: "parser" | "script" | "preflight" | "other"; } export type NetworkIntercept = string; export type NetworkRequest = string; export interface NetworkRequestData { request: NetworkRequest; url: string; method: string; headers: NetworkHeader[]; cookies: NetworkCookie[]; headersSize: JsUint; bodySize: JsUint | null; destination: string; initiatorType: string | null; timings: NetworkFetchTimingInfo; } export interface NetworkResponseContent { size: JsUint; } export interface NetworkResponseData { url: string; protocol: string; status: JsUint; statusText: string; fromCache: boolean; headers: NetworkHeader[]; mimeType: string; bytesReceived: JsUint; headersSize: JsUint | null; bodySize: JsUint | null; content: NetworkResponseContent; authChallenges?: NetworkAuthChallenge[]; } export interface NetworkSetCookieHeader { name: string; value: NetworkBytesValue; domain?: string; httpOnly?: boolean; expiry?: string; maxAge?: JsInt; path?: string; sameSite?: NetworkSameSite; secure?: boolean; } export type NetworkUrlPattern = NetworkUrlPatternPattern | NetworkUrlPatternString; export interface NetworkUrlPatternPattern { type: "pattern"; protocol?: string; hostname?: string; port?: string; pathname?: string; search?: string; } export interface NetworkUrlPatternString { type: "string"; pattern: string; } export interface NetworkAddDataCollector { method: "network.addDataCollector"; params: NetworkAddDataCollectorParameters; } export interface NetworkAddDataCollectorParameters { dataTypes: NetworkDataType[]; maxEncodedDataSize: JsUint; /** * @default 'blob' */ collectorType?: NetworkCollectorType; contexts?: BrowsingContextBrowsingContext[]; userContexts?: BrowserUserContext[]; } export interface NetworkAddDataCollectorResult { collector: NetworkCollector; } export interface NetworkAddIntercept { method: "network.addIntercept"; params: NetworkAddInterceptParameters; } export interface NetworkAddInterceptParameters { phases: NetworkInterceptPhase[]; contexts?: BrowsingContextBrowsingContext[]; urlPatterns?: NetworkUrlPattern[]; } export type NetworkInterceptPhase = "beforeRequestSent" | "responseStarted" | "authRequired"; export interface NetworkAddInterceptResult { intercept: NetworkIntercept; } export interface NetworkContinueRequest { method: "network.continueRequest"; params: NetworkContinueRequestParameters; } export interface NetworkContinueRequestParameters { request: NetworkRequest; body?: NetworkBytesValue; cookies?: NetworkCookieHeader[]; headers?: NetworkHeader[]; method?: string; url?: string; } export type NetworkContinueRequestResult = EmptyResult; export interface NetworkContinueResponse { method: "network.continueResponse"; params: NetworkContinueResponseParameters; } export interface NetworkContinueResponseParameters { request: NetworkRequest; cookies?: NetworkSetCookieHeader[]; credentials?: NetworkAuthCredentials; headers?: NetworkHeader[]; reasonPhrase?: string; statusCode?: JsUint; } export type NetworkContinueResponseResult = EmptyResult; export interface NetworkContinueWithAuth { method: "network.continueWithAuth"; params: NetworkContinueWithAuthParameters; } export type NetworkContinueWithAuthParameters = (NetworkContinueWithAuthCredentials | NetworkContinueWithAuthNoCredentials) & { request: NetworkRequest; }; export interface NetworkContinueWithAuthCredentials { action: "provideCredentials"; credentials: NetworkAuthCredentials; } export interface NetworkContinueWithAuthNoCredentials { action: "default" | "cancel"; } export type NetworkContinueWithAuthResult = EmptyResult; export interface NetworkDisownData { method: "network.disownData"; params: NetworkDisownDataParameters; } export interface NetworkDisownDataParameters { dataType: NetworkDataType; collector: NetworkCollector; request: NetworkRequest; } export type NetworkDisownDataResult = EmptyResult; export interface NetworkFailRequest { method: "network.failRequest"; params: NetworkFailRequestParameters; } export interface NetworkFailRequestParameters { request: NetworkRequest; } export type NetworkFailRequestResult = EmptyResult; export interface NetworkGetData { method: "network.getData"; params: NetworkGetDataParameters; } export interface NetworkGetDataParameters { dataType: NetworkDataType; collector?: NetworkCollector; disown?: boolean; request: NetworkRequest; } export interface NetworkGetDataResult { bytes: NetworkBytesValue; } export interface NetworkProvideResponse { method: "network.provideResponse"; params: NetworkProvideResponseParameters; } export interface NetworkProvideResponseParameters { request: NetworkRequest; body?: NetworkBytesValue; cookies?: NetworkSetCookieHeader[]; headers?: NetworkHeader[]; reasonPhrase?: string; statusCode?: JsUint; } export type NetworkProvideResponseResult = EmptyResult; export interface NetworkRemoveDataCollector { method: "network.removeDataCollector"; params: NetworkRemoveDataCollectorParameters; } export interface NetworkRemoveDataCollectorParameters { collector: NetworkCollector; } export type NetworkRemoveDataCollectorResult = EmptyResult; export interface NetworkRemoveIntercept { method: "network.removeIntercept"; params: NetworkRemoveInterceptParameters; } export interface NetworkRemoveInterceptParameters { intercept: NetworkIntercept; } export type NetworkRemoveInterceptResult = EmptyResult; export interface NetworkSetCacheBehavior { method: "network.setCacheBehavior"; params: NetworkSetCacheBehaviorParameters; } export interface NetworkSetCacheBehaviorParameters { cacheBehavior: "default" | "bypass"; contexts?: BrowsingContextBrowsingContext[]; } export type NetworkSetCacheBehaviorResult = EmptyResult; export interface NetworkSetExtraHeaders { method: "network.setExtraHeaders"; params: NetworkSetExtraHeadersParameters; } export interface NetworkSetExtraHeadersParameters { headers: NetworkHeader[]; contexts?: BrowsingContextBrowsingContext[]; userContexts?: BrowserUserContext[]; } export type NetworkSetExtraHeadersResult = EmptyResult; export interface NetworkAuthRequired { method: "network.authRequired"; params: NetworkAuthRequiredParameters; } export type NetworkAuthRequiredParameters = NetworkBaseParameters & { response: NetworkResponseData; }; export interface NetworkBeforeRequestSent { method: "network.beforeRequestSent"; params: NetworkBeforeRequestSentParameters; } export type NetworkBeforeRequestSentParameters = NetworkBaseParameters & { initiator?: NetworkInitiator; }; export interface NetworkFetchError { method: "network.fetchError"; params: NetworkFetchErrorParameters; } export type NetworkFetchErrorParameters = NetworkBaseParameters & { errorText: string; }; export interface NetworkResponseCompleted { method: "network.responseCompleted"; params: NetworkResponseCompletedParameters; } export type NetworkResponseCompletedParameters = NetworkBaseParameters & { response: NetworkResponseData; }; export interface NetworkResponseStarted { method: "network.responseStarted"; params: NetworkResponseStartedParameters; } export type NetworkResponseStartedParameters = NetworkBaseParameters & { response: NetworkResponseData; }; /** @deprecated Use {@link Network.create} instead — will be removed in a future major version. */ export declare function getNetworkInstance(driver: unknown): Promise; export declare class Network { private readonly bidi; private constructor(); static create(driver: unknown): Promise; addDataCollector(params: NetworkAddDataCollectorParameters): Promise; addIntercept(params: NetworkAddInterceptParameters): Promise; continueRequest(params: NetworkContinueRequestParameters): Promise; continueResponse(params: NetworkContinueResponseParameters): Promise; continueWithAuth(params: NetworkContinueWithAuthParameters): Promise; /** @deprecated Pass a NetworkContinueWithAuthParameters object instead — will be removed in a future major version. */ continueWithAuth(requestId: NetworkRequest, username: string, password: string): Promise; disownData(params: NetworkDisownDataParameters): Promise; failRequest(params: NetworkFailRequestParameters): Promise; getData(params: NetworkGetDataParameters): Promise; provideResponse(params: NetworkProvideResponseParameters): Promise; removeDataCollector(params: NetworkRemoveDataCollectorParameters): Promise; removeIntercept(params: NetworkRemoveInterceptParameters): Promise; setCacheBehavior(params: NetworkSetCacheBehaviorParameters): Promise; setExtraHeaders(params: NetworkSetExtraHeadersParameters): Promise; onAuthRequired(callback: (params: NetworkAuthRequiredParameters) => void): Promise; onBeforeRequestSent(callback: (params: NetworkBeforeRequestSentParameters) => void): Promise; onFetchError(callback: (params: NetworkFetchErrorParameters) => void): Promise; onResponseCompleted(callback: (params: NetworkResponseCompletedParameters) => void): Promise; onResponseStarted(callback: (params: NetworkResponseStartedParameters) => void): Promise; cancelAuth(requestId: NetworkRequest): Promise; continueWithAuthNoCredentials(requestId: NetworkRequest): Promise; /** @deprecated Use {@link onBeforeRequestSent} instead — will be removed in a future major version. */ beforeRequestSent(callback: (params: NetworkBeforeRequestSentParameters) => void): Promise; /** @deprecated Use {@link onAuthRequired} instead — will be removed in a future major version. */ authRequired(callback: (params: NetworkAuthRequiredParameters) => void): Promise; /** @deprecated Use {@link onFetchError} instead — will be removed in a future major version. */ fetchError(callback: (params: NetworkFetchErrorParameters) => void): Promise; /** @deprecated Use {@link onResponseCompleted} instead — will be removed in a future major version. */ responseCompleted(callback: (params: NetworkResponseCompletedParameters) => void): Promise; /** @deprecated Use {@link onResponseStarted} instead — will be removed in a future major version. */ responseStarted(callback: (params: NetworkResponseStartedParameters) => void): Promise; }