mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	 34c1b338be
			
		
	
	
		34c1b338be
		
			
		
	
	
	
	
		
			
			This patch: - introduces non-exported but used in api/impl struct types (e.g. Point); - makes all client classes implement respective public api interface. Pros: - Typescript is now responsible for type checking. We can remove our doclint checker (not removed yet). - Electron and Android types can be defined in the same way (this is not implemented yet). - We can move most of the type structs like Point to the public api and make some of them available. Cons: - Any cons?
		
			
				
	
	
		
			46 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * 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 { JSHandle, ElementHandle, Frame, Page, BrowserContext } from './types';
 | |
| 
 | |
| /**
 | |
|  * Can be converted to JSON
 | |
|  */
 | |
| export type Serializable = {};
 | |
| /**
 | |
|  * Can be converted to JSON, but may also contain JSHandles.
 | |
|  */
 | |
| export type EvaluationArgument = {};
 | |
| 
 | |
| export type NoHandles<Arg> = Arg extends JSHandle ? never : (Arg extends object ? { [Key in keyof Arg]: NoHandles<Arg[Key]> } : Arg);
 | |
| export type Unboxed<Arg> =
 | |
|   Arg extends ElementHandle<infer T> ? T :
 | |
|   Arg extends JSHandle<infer T> ? T :
 | |
|   Arg extends NoHandles<Arg> ? Arg :
 | |
|   Arg extends [infer A0] ? [Unboxed<A0>] :
 | |
|   Arg extends [infer A0, infer A1] ? [Unboxed<A0>, Unboxed<A1>] :
 | |
|   Arg extends [infer A0, infer A1, infer A2] ? [Unboxed<A0>, Unboxed<A1>, Unboxed<A2>] :
 | |
|   Arg extends [infer A0, infer A1, infer A2, infer A3] ? [Unboxed<A0>, Unboxed<A1>, Unboxed<A2>, Unboxed<A3>] :
 | |
|   Arg extends Array<infer T> ? Array<Unboxed<T>> :
 | |
|   Arg extends object ? { [Key in keyof Arg]: Unboxed<Arg[Key]> } :
 | |
|   Arg;
 | |
| export type PageFunction0<R> = string | (() => R | Promise<R>);
 | |
| export type PageFunction<Arg, R> = string | ((arg: Unboxed<Arg>) => R | Promise<R>);
 | |
| export type PageFunctionOn<On, Arg2, R> = string | ((on: On, arg2: Unboxed<Arg2>) => R | Promise<R>);
 | |
| export type SmartHandle<T> = T extends Node ? ElementHandle<T> : JSHandle<T>;
 | |
| export type ElementHandleForTag<K extends keyof HTMLElementTagNameMap> = ElementHandle<HTMLElementTagNameMap[K]>;
 | |
| export type BindingSource = { context: BrowserContext, page: Page, frame: Frame };
 |