UNPKG

cloudflare

Version:

The official TypeScript library for the Cloudflare API

754 lines (572 loc) • 15.5 kB
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../../core/resource'; import { APIPromise } from '../../core/api-promise'; import { RequestOptions } from '../../internal/request-options'; import { path } from '../../internal/utils/path'; export class BaseSnapshot extends APIResource { static override readonly _key: readonly ['browserRendering', 'snapshot'] = Object.freeze([ 'browserRendering', 'snapshot', ] as const); /** * Returns the page's HTML content and screenshot. Control page loading with * `gotoOptions` and `waitFor*` options. Customize screenshots with `viewport`, * `fullPage`, `clip` and others. * * @example * ```ts * const snapshot = * await client.browserRendering.snapshot.create({ * account_id: 'account_id', * url: 'https://www.example.com/', * formats: ['content', 'screenshot'], * }); * ``` */ create(params: SnapshotCreateParams, options?: RequestOptions): APIPromise<SnapshotCreateResponse> { const { account_id, cacheTTL, ...body } = params; return ( this._client.post(path`/accounts/${account_id}/browser-rendering/snapshot`, { query: { cacheTTL }, body, ...options, }) as APIPromise<{ result: SnapshotCreateResponse }> )._thenUnwrap((obj) => obj.result); } } export class Snapshot extends BaseSnapshot {} export interface SnapshotCreateResponse { /** * Accessibility tree node */ accessibilityTree?: SnapshotCreateResponse.AccessibilityTree; /** * HTML content. */ content?: string; /** * Markdown content. Prefixed with YAML frontmatter (e.g. `title`) when the page * provides that metadata. */ markdown?: string; /** * Base64 encoded image. */ screenshot?: string; } export namespace SnapshotCreateResponse { /** * Accessibility tree node */ export interface AccessibilityTree { role: string; autocomplete?: string; checked?: boolean | 'mixed'; children?: Array<unknown>; description?: string; disabled?: boolean; expanded?: boolean; focused?: boolean; haspopup?: string; invalid?: string; keyshortcuts?: string; level?: number; modal?: boolean; multiline?: boolean; multiselectable?: boolean; name?: string; orientation?: string; pressed?: boolean | 'mixed'; readonly?: boolean; required?: boolean; roledescription?: string; selected?: boolean; value?: string | number; valuemax?: number; valuemin?: number; valuetext?: string; } } export type SnapshotCreateParams = SnapshotCreateParams.Variant0 | SnapshotCreateParams.Variant1; export declare namespace SnapshotCreateParams { export interface Variant0 { /** * Path param: Account ID. */ account_id: string; /** * Body param */ url: string; /** * Query param: Cache TTL default is 5s. Set to 0 to disable. */ cacheTTL?: number; /** * Body param: The maximum duration allowed for the browser action to complete * after the page has loaded (such as taking screenshots, extracting content, or * generating PDFs). If this time limit is exceeded, the action stops and returns a * timeout error. */ actionTimeout?: number; /** * Body param: Adds a script element into the page with the desired URL or content. */ addScriptTag?: Array<Variant0.AddScriptTag>; /** * Body param: Adds a `<link rel="stylesheet">` tag into the page with the desired * URL or a `<style type="text/css">` tag with the content. */ addStyleTag?: Array<Variant0.AddStyleTag>; /** * Body param: Only allow requests that match the provided regex patterns, eg. * '/^.\*\.(css)'. Reject rules are applied first. */ allowRequestPattern?: Array<string>; /** * Body param: Only allow requests that match the provided resource types, eg. * 'image' or 'script'. Reject rules are applied first. */ allowResourceTypes?: Array< | 'document' | 'stylesheet' | 'image' | 'media' | 'font' | 'script' | 'texttrack' | 'xhr' | 'fetch' | 'prefetch' | 'eventsource' | 'websocket' | 'manifest' | 'signedexchange' | 'ping' | 'cspviolationreport' | 'preflight' | 'other' >; /** * Body param: Provide credentials for HTTP authentication. */ authenticate?: Variant0.Authenticate; /** * Body param: Attempt to proceed when 'awaited' events fail or timeout. */ bestAttempt?: boolean; /** * Body param: Check [options](https://pptr.dev/api/puppeteer.page.setcookie). */ cookies?: Array<Variant0.Cookie>; /** * Body param */ emulateMediaType?: string; /** * Body param */ formats?: Array<'content' | 'screenshot' | 'markdown' | 'accessibilityTree'>; /** * Body param: Check [options](https://pptr.dev/api/puppeteer.gotooptions). */ gotoOptions?: Variant0.GotoOptions; /** * Body param */ html?: string; /** * Body param: Block undesired requests that match the provided regex patterns, eg. * '/^.\*\.(css)'. */ rejectRequestPattern?: Array<string>; /** * Body param: Block undesired requests that match the provided resource types, eg. * 'image' or 'script'. */ rejectResourceTypes?: Array< | 'document' | 'stylesheet' | 'image' | 'media' | 'font' | 'script' | 'texttrack' | 'xhr' | 'fetch' | 'prefetch' | 'eventsource' | 'websocket' | 'manifest' | 'signedexchange' | 'ping' | 'cspviolationreport' | 'preflight' | 'other' >; /** * Body param */ screenshotOptions?: Variant0.ScreenshotOptions; /** * Body param */ setExtraHTTPHeaders?: { [key: string]: string }; /** * Body param */ setJavaScriptEnabled?: boolean; /** * Body param */ userAgent?: string; /** * Body param: Check [options](https://pptr.dev/api/puppeteer.page.setviewport). */ viewport?: Variant0.Viewport; /** * Body param: Wait for the selector to appear in page. Check * [options](https://pptr.dev/api/puppeteer.page.waitforselector). */ waitForSelector?: Variant0.WaitForSelector; /** * Body param: Waits for a specified timeout before continuing. */ waitForTimeout?: number; } export namespace Variant0 { export interface AddScriptTag { id?: string; content?: string; type?: string; url?: string; } export interface AddStyleTag { content?: string; url?: string; } /** * Provide credentials for HTTP authentication. */ export interface Authenticate { password: string; username: string; } export interface Cookie { /** * Cookie name. */ name: string; value: string; domain?: string; expires?: number; httpOnly?: boolean; partitionKey?: string; path?: string; priority?: 'Low' | 'Medium' | 'High'; sameParty?: boolean; sameSite?: 'Strict' | 'Lax' | 'None'; secure?: boolean; sourcePort?: number; sourceScheme?: 'Unset' | 'NonSecure' | 'Secure'; url?: string; } /** * Check [options](https://pptr.dev/api/puppeteer.gotooptions). */ export interface GotoOptions { referer?: string; referrerPolicy?: string; timeout?: number; waitUntil?: | 'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2' | Array<'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2'>; } export interface ScreenshotOptions { captureBeyondViewport?: boolean; clip?: ScreenshotOptions.Clip; fromSurface?: boolean; fullPage?: boolean; omitBackground?: boolean; optimizeForSpeed?: boolean; quality?: number; type?: 'png' | 'jpeg' | 'webp'; } export namespace ScreenshotOptions { export interface Clip { height: number; width: number; x: number; y: number; scale?: number; } } /** * Check [options](https://pptr.dev/api/puppeteer.page.setviewport). */ export interface Viewport { height: number; width: number; deviceScaleFactor?: number; hasTouch?: boolean; isLandscape?: boolean; isMobile?: boolean; } /** * Wait for the selector to appear in page. Check * [options](https://pptr.dev/api/puppeteer.page.waitforselector). */ export interface WaitForSelector { selector: string; hidden?: true; timeout?: number; visible?: true; } } export interface Variant1 { /** * Path param: Account ID. */ account_id: string; /** * Body param */ html: string; /** * Query param: Cache TTL default is 5s. Set to 0 to disable. */ cacheTTL?: number; /** * Body param: The maximum duration allowed for the browser action to complete * after the page has loaded (such as taking screenshots, extracting content, or * generating PDFs). If this time limit is exceeded, the action stops and returns a * timeout error. */ actionTimeout?: number; /** * Body param: Adds a script element into the page with the desired URL or content. */ addScriptTag?: Array<Variant1.AddScriptTag>; /** * Body param: Adds a `<link rel="stylesheet">` tag into the page with the desired * URL or a `<style type="text/css">` tag with the content. */ addStyleTag?: Array<Variant1.AddStyleTag>; /** * Body param: Only allow requests that match the provided regex patterns, eg. * '/^.\*\.(css)'. Reject rules are applied first. */ allowRequestPattern?: Array<string>; /** * Body param: Only allow requests that match the provided resource types, eg. * 'image' or 'script'. Reject rules are applied first. */ allowResourceTypes?: Array< | 'document' | 'stylesheet' | 'image' | 'media' | 'font' | 'script' | 'texttrack' | 'xhr' | 'fetch' | 'prefetch' | 'eventsource' | 'websocket' | 'manifest' | 'signedexchange' | 'ping' | 'cspviolationreport' | 'preflight' | 'other' >; /** * Body param: Provide credentials for HTTP authentication. */ authenticate?: Variant1.Authenticate; /** * Body param: Attempt to proceed when 'awaited' events fail or timeout. */ bestAttempt?: boolean; /** * Body param: Check [options](https://pptr.dev/api/puppeteer.page.setcookie). */ cookies?: Array<Variant1.Cookie>; /** * Body param */ emulateMediaType?: string; /** * Body param */ formats?: Array<'content' | 'screenshot' | 'markdown' | 'accessibilityTree'>; /** * Body param: Check [options](https://pptr.dev/api/puppeteer.gotooptions). */ gotoOptions?: Variant1.GotoOptions; /** * Body param: Block undesired requests that match the provided regex patterns, eg. * '/^.\*\.(css)'. */ rejectRequestPattern?: Array<string>; /** * Body param: Block undesired requests that match the provided resource types, eg. * 'image' or 'script'. */ rejectResourceTypes?: Array< | 'document' | 'stylesheet' | 'image' | 'media' | 'font' | 'script' | 'texttrack' | 'xhr' | 'fetch' | 'prefetch' | 'eventsource' | 'websocket' | 'manifest' | 'signedexchange' | 'ping' | 'cspviolationreport' | 'preflight' | 'other' >; /** * Body param */ screenshotOptions?: Variant1.ScreenshotOptions; /** * Body param */ setExtraHTTPHeaders?: { [key: string]: string }; /** * Body param */ setJavaScriptEnabled?: boolean; /** * Body param */ url?: string; /** * Body param */ userAgent?: string; /** * Body param: Check [options](https://pptr.dev/api/puppeteer.page.setviewport). */ viewport?: Variant1.Viewport; /** * Body param: Wait for the selector to appear in page. Check * [options](https://pptr.dev/api/puppeteer.page.waitforselector). */ waitForSelector?: Variant1.WaitForSelector; /** * Body param: Waits for a specified timeout before continuing. */ waitForTimeout?: number; } export namespace Variant1 { export interface AddScriptTag { id?: string; content?: string; type?: string; url?: string; } export interface AddStyleTag { content?: string; url?: string; } /** * Provide credentials for HTTP authentication. */ export interface Authenticate { password: string; username: string; } export interface Cookie { /** * Cookie name. */ name: string; value: string; domain?: string; expires?: number; httpOnly?: boolean; partitionKey?: string; path?: string; priority?: 'Low' | 'Medium' | 'High'; sameParty?: boolean; sameSite?: 'Strict' | 'Lax' | 'None'; secure?: boolean; sourcePort?: number; sourceScheme?: 'Unset' | 'NonSecure' | 'Secure'; url?: string; } /** * Check [options](https://pptr.dev/api/puppeteer.gotooptions). */ export interface GotoOptions { referer?: string; referrerPolicy?: string; timeout?: number; waitUntil?: | 'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2' | Array<'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2'>; } export interface ScreenshotOptions { captureBeyondViewport?: boolean; clip?: ScreenshotOptions.Clip; fromSurface?: boolean; fullPage?: boolean; omitBackground?: boolean; optimizeForSpeed?: boolean; quality?: number; type?: 'png' | 'jpeg' | 'webp'; } export namespace ScreenshotOptions { export interface Clip { height: number; width: number; x: number; y: number; scale?: number; } } /** * Check [options](https://pptr.dev/api/puppeteer.page.setviewport). */ export interface Viewport { height: number; width: number; deviceScaleFactor?: number; hasTouch?: boolean; isLandscape?: boolean; isMobile?: boolean; } /** * Wait for the selector to appear in page. Check * [options](https://pptr.dev/api/puppeteer.page.waitforselector). */ export interface WaitForSelector { selector: string; hidden?: true; timeout?: number; visible?: true; } } } export declare namespace Snapshot { export { type SnapshotCreateResponse as SnapshotCreateResponse, type SnapshotCreateParams as SnapshotCreateParams, }; }