Skip to content

Commit

Permalink
fix: fix circularity on JSHandle interface (#9661)
Browse files Browse the repository at this point in the history
  • Loading branch information
jrandolf committed Feb 13, 2023
1 parent d2b46d5 commit eb13863
Show file tree
Hide file tree
Showing 19 changed files with 169 additions and 166 deletions.
1 change: 1 addition & 0 deletions docs/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ sidebar_label: API
| [ElementFor](./puppeteer.elementfor.md) | |
| [ErrorCode](./puppeteer.errorcode.md) | |
| [EvaluateFunc](./puppeteer.evaluatefunc.md) | |
| [EvaluateFuncWith](./puppeteer.evaluatefuncwith.md) | |
| [EventType](./puppeteer.eventtype.md) | |
| [FlattenHandle](./puppeteer.flattenhandle.md) | |
| [HandleFor](./puppeteer.handlefor.md) | |
Expand Down
7 changes: 4 additions & 3 deletions docs/api/puppeteer.elementhandle.__eval.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ class ElementHandle {
$$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[HandleFor<Array<NodeFor<Selector>>>, ...Params]
> = EvaluateFunc<[HandleFor<Array<NodeFor<Selector>>>, ...Params]>
Func extends EvaluateFuncWith<
Array<NodeFor<Selector>>,
Params
> = EvaluateFuncWith<Array<NodeFor<Selector>>, Params>
>(
selector: Selector,
pageFunction: Func | string,
Expand Down
7 changes: 4 additions & 3 deletions docs/api/puppeteer.elementhandle._eval.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ class ElementHandle {
$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[ElementHandle<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[ElementHandle<NodeFor<Selector>>, ...Params]>
Func extends EvaluateFuncWith<NodeFor<Selector>, Params> = EvaluateFuncWith<
NodeFor<Selector>,
Params
>
>(
selector: Selector,
pageFunction: Func | string,
Expand Down
15 changes: 15 additions & 0 deletions docs/api/puppeteer.evaluatefuncwith.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
sidebar_label: EvaluateFuncWith
---

# EvaluateFuncWith type

#### Signature:

```typescript
export type EvaluateFuncWith<V, T extends unknown[]> = (
...params: [V, ...InnerParams<T>]
) => Awaitable<unknown>;
```

**References:** [InnerParams](./puppeteer.innerparams.md), [Awaitable](./puppeteer.awaitable.md)
7 changes: 4 additions & 3 deletions docs/api/puppeteer.frame.__eval.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ class Frame {
$$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[Array<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[Array<NodeFor<Selector>>, ...Params]>
Func extends EvaluateFuncWith<
Array<NodeFor<Selector>>,
Params
> = EvaluateFuncWith<Array<NodeFor<Selector>>, Params>
>(
selector: Selector,
pageFunction: Func | string,
Expand Down
7 changes: 4 additions & 3 deletions docs/api/puppeteer.frame._eval.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ class Frame {
$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[ElementHandle<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[ElementHandle<NodeFor<Selector>>, ...Params]>
Func extends EvaluateFuncWith<NodeFor<Selector>, Params> = EvaluateFuncWith<
NodeFor<Selector>,
Params
>
>(
selector: Selector,
pageFunction: Func | string,
Expand Down
4 changes: 1 addition & 3 deletions docs/api/puppeteer.jshandle.evaluate.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@ Evaluates the given function with the current handle as its first argument.
class JSHandle {
evaluate<
Params extends unknown[],
Func extends EvaluateFunc<[this, ...Params]> = EvaluateFunc<
[this, ...Params]
>
Func extends EvaluateFuncWith<T, Params> = EvaluateFuncWith<T, Params>
>(
pageFunction: Func | string,
...args: Params
Expand Down
4 changes: 1 addition & 3 deletions docs/api/puppeteer.jshandle.evaluatehandle.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@ Evaluates the given function with the current handle as its first argument.
class JSHandle {
evaluateHandle<
Params extends unknown[],
Func extends EvaluateFunc<[this, ...Params]> = EvaluateFunc<
[this, ...Params]
>
Func extends EvaluateFuncWith<T, Params> = EvaluateFuncWith<T, Params>
>(
pageFunction: Func | string,
...args: Params
Expand Down
7 changes: 4 additions & 3 deletions docs/api/puppeteer.page.__eval.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ class Page {
$$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[Array<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[Array<NodeFor<Selector>>, ...Params]>
Func extends EvaluateFuncWith<
Array<NodeFor<Selector>>,
Params
> = EvaluateFuncWith<Array<NodeFor<Selector>>, Params>
>(
selector: Selector,
pageFunction: Func | string,
Expand Down
7 changes: 4 additions & 3 deletions docs/api/puppeteer.page._eval.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ class Page {
$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[ElementHandle<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[ElementHandle<NodeFor<Selector>>, ...Params]>
Func extends EvaluateFuncWith<NodeFor<Selector>, Params> = EvaluateFuncWith<
NodeFor<Selector>,
Params
>
>(
selector: Selector,
pageFunction: Func | string,
Expand Down
45 changes: 20 additions & 25 deletions packages/puppeteer-core/src/api/ElementHandle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,20 @@
*/

import {Protocol} from 'devtools-protocol';
import {CDPSession} from '../common/Connection.js';
import {ExecutionContext} from '../common/ExecutionContext.js';
import {Frame} from '../common/Frame.js';
import {MouseButton} from '../common/Input.js';
import {WaitForSelectorOptions} from '../common/IsolatedWorld.js';
import {
ElementFor,
EvaluateFuncWith,
HandleFor,
NodeFor,
} from '../common/types.js';
import {KeyInput} from '../common/USKeyboardLayout.js';
import {JSHandle} from './JSHandle.js';
import {ScreenshotOptions} from './Page.js';
import {ElementFor, EvaluateFunc, HandleFor, NodeFor} from '../common/types.js';
import {KeyInput} from '../common/USKeyboardLayout.js';
import {MouseButton} from '../common/Input.js';
import {ExecutionContext} from '../common/ExecutionContext.js';
import {CDPSession} from '../common/Connection.js';

/**
* @public
Expand Down Expand Up @@ -234,21 +239,16 @@ export class ElementHandle<
async $eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[ElementHandle<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[ElementHandle<NodeFor<Selector>>, ...Params]>
Func extends EvaluateFuncWith<NodeFor<Selector>, Params> = EvaluateFuncWith<
NodeFor<Selector>,
Params
>
>(
selector: Selector,
pageFunction: Func | string,
...args: Params
): Promise<Awaited<ReturnType<Func>>>;
async $eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[ElementHandle<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[ElementHandle<NodeFor<Selector>>, ...Params]>
>(): Promise<Awaited<ReturnType<Func>>> {
async $eval(): Promise<unknown> {
throw new Error('Not implemented');
}

Expand Down Expand Up @@ -288,21 +288,16 @@ export class ElementHandle<
async $$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[HandleFor<Array<NodeFor<Selector>>>, ...Params]
> = EvaluateFunc<[HandleFor<Array<NodeFor<Selector>>>, ...Params]>
Func extends EvaluateFuncWith<
Array<NodeFor<Selector>>,
Params
> = EvaluateFuncWith<Array<NodeFor<Selector>>, Params>
>(
selector: Selector,
pageFunction: Func | string,
...args: Params
): Promise<Awaited<ReturnType<Func>>>;
async $$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[HandleFor<Array<NodeFor<Selector>>>, ...Params]
> = EvaluateFunc<[HandleFor<Array<NodeFor<Selector>>>, ...Params]>
>(): Promise<Awaited<ReturnType<Func>>> {
async $$eval(): Promise<unknown> {
throw new Error('Not implemented');
}

Expand Down
28 changes: 7 additions & 21 deletions packages/puppeteer-core/src/api/JSHandle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
*/

import Protocol from 'devtools-protocol';
import {ElementHandle} from './ElementHandle.js';
import {EvaluateFunc, HandleFor, HandleOr} from '../common/types.js';
import {ExecutionContext} from '../common/ExecutionContext.js';
import {CDPSession} from '../common/Connection.js';
import {ExecutionContext} from '../common/ExecutionContext.js';
import {EvaluateFuncWith, HandleFor, HandleOr} from '../common/types.js';
import {ElementHandle} from './ElementHandle.js';

declare const __JSHandleSymbol: unique symbol;

Expand Down Expand Up @@ -80,19 +80,12 @@ export class JSHandle<T = unknown> {
*/
async evaluate<
Params extends unknown[],
Func extends EvaluateFunc<[this, ...Params]> = EvaluateFunc<
[this, ...Params]
>
Func extends EvaluateFuncWith<T, Params> = EvaluateFuncWith<T, Params>
>(
pageFunction: Func | string,
...args: Params
): Promise<Awaited<ReturnType<Func>>>;
async evaluate<
Params extends unknown[],
Func extends EvaluateFunc<[this, ...Params]> = EvaluateFunc<
[this, ...Params]
>
>(): Promise<Awaited<ReturnType<Func>>> {
async evaluate(): Promise<unknown> {
throw new Error('Not implemented');
}

Expand All @@ -102,19 +95,12 @@ export class JSHandle<T = unknown> {
*/
async evaluateHandle<
Params extends unknown[],
Func extends EvaluateFunc<[this, ...Params]> = EvaluateFunc<
[this, ...Params]
>
Func extends EvaluateFuncWith<T, Params> = EvaluateFuncWith<T, Params>
>(
pageFunction: Func | string,
...args: Params
): Promise<HandleFor<Awaited<ReturnType<Func>>>>;
async evaluateHandle<
Params extends unknown[],
Func extends EvaluateFunc<[this, ...Params]> = EvaluateFunc<
[this, ...Params]
>
>(): Promise<HandleFor<Awaited<ReturnType<Func>>>> {
async evaluateHandle(): Promise<HandleFor<unknown>> {
throw new Error('Not implemented');
}

Expand Down
41 changes: 18 additions & 23 deletions packages/puppeteer-core/src/api/Page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import type {ConsoleMessage} from '../common/ConsoleMessage.js';
import type {Coverage} from '../common/Coverage.js';
import {Device} from '../common/Device.js';
import type {Dialog} from '../common/Dialog.js';
import type {ElementHandle} from './ElementHandle.js';
import {EventEmitter, Handler} from '../common/EventEmitter.js';
import type {FileChooser} from '../common/FileChooser.js';
import type {
Expand All @@ -39,17 +38,23 @@ import type {
Touchscreen,
} from '../common/Input.js';
import type {WaitForSelectorOptions} from '../common/IsolatedWorld.js';
import type {JSHandle} from './JSHandle.js';
import type {PuppeteerLifeCycleEvent} from '../common/LifecycleWatcher.js';
import type {Credentials, NetworkConditions} from '../common/NetworkManager.js';
import type {PDFOptions} from '../common/PDFOptions.js';
import type {Viewport} from '../common/PuppeteerViewport.js';
import type {Target} from '../common/Target.js';
import type {Tracing} from '../common/Tracing.js';
import type {EvaluateFunc, HandleFor, NodeFor} from '../common/types.js';
import type {
EvaluateFunc,
EvaluateFuncWith,
HandleFor,
NodeFor,
} from '../common/types.js';
import type {WebWorker} from '../common/WebWorker.js';
import type {Browser} from './Browser.js';
import type {BrowserContext} from './BrowserContext.js';
import type {ElementHandle} from './ElementHandle.js';
import type {JSHandle} from './JSHandle.js';

/**
* @public
Expand Down Expand Up @@ -956,21 +961,16 @@ export class Page extends EventEmitter {
async $eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[ElementHandle<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[ElementHandle<NodeFor<Selector>>, ...Params]>
Func extends EvaluateFuncWith<NodeFor<Selector>, Params> = EvaluateFuncWith<
NodeFor<Selector>,
Params
>
>(
selector: Selector,
pageFunction: Func | string,
...args: Params
): Promise<Awaited<ReturnType<Func>>>;
async $eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[ElementHandle<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[ElementHandle<NodeFor<Selector>>, ...Params]>
>(): Promise<Awaited<ReturnType<Func>>> {
async $eval(): Promise<unknown> {
throw new Error('Not implemented');
}

Expand Down Expand Up @@ -1039,21 +1039,16 @@ export class Page extends EventEmitter {
async $$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[Array<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[Array<NodeFor<Selector>>, ...Params]>
Func extends EvaluateFuncWith<
Array<NodeFor<Selector>>,
Params
> = EvaluateFuncWith<Array<NodeFor<Selector>>, Params>
>(
selector: Selector,
pageFunction: Func | string,
...args: Params
): Promise<Awaited<ReturnType<Func>>>;
async $$eval<
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[Array<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[Array<NodeFor<Selector>>, ...Params]>
>(): Promise<Awaited<ReturnType<Func>>> {
async $$eval(): Promise<unknown> {
throw new Error('Not implemented');
}

Expand Down

0 comments on commit eb13863

Please sign in to comment.