/** * Copyright 2021 Google LLC. * Copyright (c) Microsoft Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import type { Protocol } from 'devtools-protocol'; import type { ProtocolMapping } from 'devtools-protocol/types/protocol-mapping.js'; import { EventEmitter } from '../utils/EventEmitter.js'; import type { MapperCdpConnection } from './CdpConnection.js'; export type CdpEvents = { [Property in keyof ProtocolMapping.Events]: ProtocolMapping.Events[Property][0]; }; /** A error that will be thrown if/when the connection is closed. */ export declare class CloseError extends Error { } export interface CdpClient extends EventEmitter<CdpEvents> { /** Unique session identifier. */ sessionId: Protocol.Target.SessionID | undefined; /** * Provides an unique way to detect if an error was caused by the closure of a * Target or Session. * * @example During the creation of a subframe we navigate the main frame. * The subframe Target is closed while initialized commands are in-flight. * In this case we want to swallow the thrown error. */ isCloseError(error: unknown): boolean; /** * Returns a command promise, which will be resolved with the command result * after receiving the result from CDP. * @param method Name of the CDP command to call. * @param params Parameters to pass to the CDP command. */ sendCommand<CdpMethod extends keyof ProtocolMapping.Commands>(method: CdpMethod, params?: ProtocolMapping.Commands[CdpMethod]['paramsType'][0]): Promise<ProtocolMapping.Commands[CdpMethod]['returnType']>; } /** Represents a high-level CDP connection to the browser. */ export declare class MapperCdpClient extends EventEmitter<CdpEvents> implements CdpClient { #private; constructor(cdpConnection: MapperCdpConnection, sessionId?: Protocol.Target.SessionID); get sessionId(): Protocol.Target.SessionID | undefined; sendCommand<CdpMethod extends keyof ProtocolMapping.Commands>(method: CdpMethod, ...params: ProtocolMapping.Commands[CdpMethod]['paramsType']): Promise<ProtocolMapping.Commands[CdpMethod]['returnType']>; isCloseError(error: unknown): boolean; }