/** * @license * Copyright 2020 Google Inc. * SPDX-License-Identifier: Apache-2.0 */ import type { ElementHandle } from '../api/ElementHandle.js'; import type { JSHandle } from '../api/JSHandle.js'; import type { LazyArg } from './LazyArg.js'; /** * @public */ export type AwaitablePredicate = (value: T) => Awaitable; /** * @public */ export interface Moveable { /** * Moves the resource when 'using'. */ move(): this; } /** * @internal */ export interface Disposed { get disposed(): boolean; } /** * @internal */ export interface BindingPayload { type: string; name: string; seq: number; args: unknown[]; /** * Determines whether the arguments of the payload are trivial. */ isTrivial: boolean; } /** * @internal */ export type AwaitableIterator = Iterator | AsyncIterator; /** * @public */ export type AwaitableIterable = Iterable | AsyncIterable; /** * @public */ export type Awaitable = T | PromiseLike; /** * @public */ export type HandleFor = T extends Node ? ElementHandle : JSHandle; /** * @public */ export type HandleOr = HandleFor | JSHandle | T; /** * @public */ export type FlattenHandle = T extends HandleOr ? U : never; /** * @internal */ export type FlattenLazyArg = T extends LazyArg ? U : T; /** * @internal */ export type InnerLazyParams = { [K in keyof T]: FlattenLazyArg; }; /** * @public */ export type InnerParams = { [K in keyof T]: FlattenHandle; }; /** * @public */ export type ElementFor = TagName extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[TagName] : TagName extends keyof SVGElementTagNameMap ? SVGElementTagNameMap[TagName] : never; /** * @public */ export type EvaluateFunc = (...params: InnerParams) => Awaitable; /** * @public */ export type EvaluateFuncWith = (...params: [V, ...InnerParams]) => Awaitable; /** * @public */ export type NodeFor = TypeSelectorOfComplexSelector extends infer TypeSelector ? TypeSelector extends keyof HTMLElementTagNameMap | keyof SVGElementTagNameMap ? ElementFor : Element : never; type TypeSelectorOfComplexSelector = CompoundSelectorsOfComplexSelector extends infer CompoundSelectors ? CompoundSelectors extends NonEmptyReadonlyArray ? Last extends infer LastCompoundSelector ? LastCompoundSelector extends string ? TypeSelectorOfCompoundSelector : never : never : unknown : never; type TypeSelectorOfCompoundSelector = SplitWithDelemiters extends infer CompoundSelectorTokens ? CompoundSelectorTokens extends [infer TypeSelector, ...any[]] ? TypeSelector extends '' ? unknown : TypeSelector : never : never; type Last> = Arr extends [ infer Head, ...infer Tail ] ? Tail extends NonEmptyReadonlyArray ? Last : Head : never; type NonEmptyReadonlyArray = [T, ...(readonly T[])]; type CompoundSelectorsOfComplexSelector = SplitWithDelemiters extends infer IntermediateTokens ? IntermediateTokens extends readonly string[] ? Drop : never : never; type SplitWithDelemiters = Delemiters extends [infer FirstDelemiter, ...infer RestDelemiters] ? FirstDelemiter extends string ? RestDelemiters extends readonly string[] ? FlatmapSplitWithDelemiters, RestDelemiters> : never : never : [Input]; type BeginSubclassSelectorTokens = ['.', '#', '[', ':']; type CombinatorTokens = [' ', '>', '+', '~', '|', '|']; type Drop = Arr extends [infer Head, ...infer Tail] ? Head extends Remove ? Drop : Drop : Acc; type FlatmapSplitWithDelemiters = Inputs extends [infer FirstInput, ...infer RestInputs] ? FirstInput extends string ? RestInputs extends readonly string[] ? FlatmapSplitWithDelemiters ]> : Acc : Acc : Acc; type Split = Input extends `${infer Prefix}${Delimiter}${infer Suffix}` ? Split : [...Acc, Input]; export {}; //# sourceMappingURL=types.d.ts.map