/**
 * Copyright 2018 Google Inc. All rights reserved.
 *
 * 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 { EventEmitter } from './EventEmitter.js' ; import { debugError } from './helper.js' ; import { ExecutionContext } from './ExecutionContext.js' ; import { JSHandle } from './JSHandle.js' ; import { CDPSession } from './Connection.js' ; import { Protocol } from 'devtools-protocol' ; import { EvaluateHandleFn , SerializableOrJSHandle } from './EvalTypes.js' ; internal export type ConsoleAPICalledCallback = ( eventType : string , handles : JSHandle [ ] , trace : Protocol . Runtime . StackTrace ) => void ; internal export type ExceptionThrownCallback = ( details : Protocol . Runtime . ExceptionDetails ) => void ; type JSHandleFactory = ( obj : Protocol . Runtime . RemoteObject ) => JSHandle ; /**
 * The WebWorker class represents a
 *  https .
 *
 *  remarks example public export class WebWorker extends EventEmitter { _client : CDPSession ; _url : string ; _executionContextPromise : Promise < ExecutionContext > ; _executionContextCallback : ( value : ExecutionContext ) => void ; internal constructor ( client , url , consoleAPICalled , exceptionThrown ) { super ( ) ; this . _client = client ; this . _url = url ; this . _executionContextPromise = new Promise < ExecutionContext > ( ( x ) => ( this . _executionContextCallback = x ) ) ; let jsHandleFactory ; this . _client . once ( 'Runtime.executionContextCreated' , async ( event ) => { jsHandleFactory = ( remoteObject ) => new JSHandle ( executionContext , client , remoteObject ) ; const executionContext = new ExecutionContext ( client , event . context , null ) ; this . _executionContextCallback ( executionContext ) ; } ) ; this . _client . send ( 'Runtime.enable' ) . catch ( debugError ) ; this . _client . on ( 'Runtime.consoleAPICalled' , ( event ) => consoleAPICalled ( event . type , event . args . map ( jsHandleFactory ) , event . stackTrace ) ) ; this . _client . on ( 'Runtime.exceptionThrown' , ( exception ) => exceptionThrown ( exception . exceptionDetails ) ) ; } returns url ( ) { return this . _url ; } returns async executionContext ( ) { return this . _executionContextPromise ; } param pageFunction param args returns async evaluate < ReturnType extends any > ( pageFunction , ... args ) { return ( await this . _executionContextPromise ) . evaluate < ReturnType > ( pageFunction , ... args ) ; } param pageFunction param args returns async evaluateHandle < HandlerType extends JSHandle = JSHandle > ( pageFunction , ... args ) { return ( await this . _executionContextPromise ) . evaluateHandle < HandlerType > ( pageFunction , ... args ) ; } }