ghost-cursor-patchright-core
Version:
Move your mouse like a human in puppeteer and playwright or generate realistic movements on any 2D plane
57 lines (56 loc) • 2.47 kB
TypeScript
import type { Page as CorePage, Frame as CoreFrame } from 'patchright-core';
import type { Page as PlaywrightPage, Frame as PlaywrightFrame } from 'playwright-core';
import { type Vector, type TimedVector } from './math';
export { default as installMouseHelper } from './mouse-helper';
export { type Vector } from './math';
type Page = CorePage | PlaywrightPage;
type Frame = CoreFrame | PlaywrightFrame;
export interface BoundingBox {
x: number;
y: number;
width: number;
height: number;
}
export interface BoxOptions {
readonly paddingPercentage?: number;
}
export interface MoveOptions extends BoxOptions, Pick<PathOptions, 'moveSpeed'> {
readonly waitForSelector?: number;
readonly moveDelay?: number;
readonly randomizeMoveDelay?: boolean;
readonly maxTries?: number;
readonly overshootThreshold?: number;
}
export interface ClickOptions extends MoveOptions {
readonly waitForClick?: number;
readonly microJitter?: boolean;
readonly dynamicAdjustment?: boolean;
}
export interface PathOptions {
readonly spreadOverride?: number;
readonly moveSpeed?: number;
readonly useTimestamps?: boolean;
readonly noiseScale?: number;
readonly endpointNoise?: boolean;
}
export interface RandomMoveOptions extends Pick<MoveOptions, 'moveDelay' | 'randomizeMoveDelay' | 'moveSpeed'> {
}
export interface MoveToOptions extends PathOptions, Pick<MoveOptions, 'moveDelay' | 'randomizeMoveDelay'> {
}
export interface GhostCursor {
toggleRandomMove: (random: boolean) => void;
click: (selector?: string, options?: ClickOptions) => Promise<void>;
move: (selector: string, options?: MoveOptions) => Promise<void>;
moveTo: (destination: Vector, options?: MoveToOptions) => Promise<void>;
getLocation: () => Vector;
}
/** Get a random point on a browser page using viewport size - Always uses Page */
export declare const getRandomPagePoint: (page: Page) => Promise<Vector>;
export declare function path(point: Vector, target: Vector, options?: number | PathOptions): Vector[] | TimedVector[];
export declare function path(point: Vector, target: BoundingBox, options?: number | PathOptions): Vector[] | TimedVector[];
export declare const createCursor: (page: Page, start?: Vector, performRandomMovesInitially?: boolean, defaultOptions?: {
randomMove?: RandomMoveOptions;
move?: MoveOptions;
moveTo?: MoveToOptions;
click?: ClickOptions;
}, frame?: Frame | null) => GhostCursor;