import RequestSession, { IRequestSessionHttpErrorEvent, IRequestSessionRequestEvent, IRequestSessionResponseEvent } from '@ulixee/unblocked-agent-mitm/handlers/RequestSession'; import IResourceMeta from '@ulixee/unblocked-specification/agent/net/IResourceMeta'; import { IBrowserResourceRequest } from '@ulixee/unblocked-specification/agent/browser/IBrowserNetworkEvents'; import { ICookie } from '@ulixee/unblocked-specification/agent/net/ICookie'; import { IPageEvents } from '@ulixee/unblocked-specification/agent/browser/IPage'; import IHttpResourceLoadDetails from '@ulixee/unblocked-specification/agent/net/IHttpResourceLoadDetails'; import { TypedEventEmitter } from '@ulixee/commons/lib/eventUtils'; import IBrowserRequestMatcher from '@ulixee/unblocked-agent-mitm/interfaces/IBrowserRequestMatcher'; import { IBoundLog } from '@ulixee/commons/interfaces/ILog'; import IMitmRequestContext from '@ulixee/unblocked-agent-mitm/interfaces/IMitmRequestContext'; import { IMitmRequestPendingBrowserRequest, IResourceEvents } from '../interfaces/IResourceEvents'; import BrowserContext from './BrowserContext'; export default class Resources extends TypedEventEmitter implements IBrowserRequestMatcher { private browserContext; readonly browserRequestIdToResources: Map; hasRegisteredMitm: boolean; isCollecting: boolean; keepResourceBodies: boolean; readonly resourcesById: Map; readonly cookiesByDomain: Map>; protected logger: IBoundLog; private navigationConnectTimeoutMs; private readonly browserRequestIdToTabId; private readonly mitmErrorsByUrl; private readonly mitmRequestsPendingBrowserRequest; private events; constructor(browserContext: BrowserContext); getForTab(tabId: number): IResourceMeta[]; get(id: number): IResourceMeta; onWebsocketHandshake(tabId: number, event: IPageEvents['websocket-handshake']): void; connectToMitm(requestSession: RequestSession): void; beforeHttpResponse(resource: IHttpResourceLoadDetails): Promise; setNavigationConnectTimeoutMs(url: string, timeoutMs: number): void; cleanup(): void; cancelPending(): void; getBrowserRequestTabId(browserRequestId: string): number; getBrowserRequestLatestResource(browserRequestId: string): IResourceMeta; trackBrowserRequestToResourceId(browserRequestId: string, resource: IResourceMeta): void; createNewResourceIfUnseen(tabId: number, frameId: number, resourceRequest: IBrowserResourceRequest, getBody: () => Promise): Promise; onBrowserWillRequest(tabId: number, frameId: number, resource: IBrowserResourceRequest): IMitmRequestPendingBrowserRequest; onBrowserDidRequest(tabId: number, frameId: number, resource: IBrowserResourceRequest): void; onBrowserResourceLoaded(tabId: number, resource: IBrowserResourceRequest): boolean; onBrowserRequestFailed(tabId: number, frameId: number, resource: IBrowserResourceRequest, loadError: Error): IResourceMeta; resolveBrowserRequest(mitmResource: IHttpResourceLoadDetails): void; determineResourceType(mitmResource: IHttpResourceLoadDetails): void; onInitialize(resource: IMitmRequestContext): void; protected onMitmResponse(event: IRequestSessionResponseEvent): void; protected onMitmError(event: IRequestSessionHttpErrorEvent): void; protected onMitmRequest(request: IRequestSessionRequestEvent): void; protected onMitmRequestError(tabId: number, event: IRequestSessionHttpErrorEvent, error: Error): IResourceMeta; private requestIsResolved; private record; private emitBrowserRequestFailed; private updatePendingResource; private createPendingResource; private findMatchingRequest; private matchesMitmError; private resourceEventToMeta; private recordCookies; static translateResourceError(resource: IBrowserResourceRequest): Error; }