chromium/source/puppeteer/lib/BrowserContext.ts

44 lines
1.0 KiB
TypeScript

import { BrowserContext, Page } from 'puppeteer-core';
import { Hook, Prototype } from '../../../typings/chrome-aws-lambda';
let Super: Prototype<BrowserContext> = null;
try {
Super = require('puppeteer/lib/cjs/puppeteer/common/Browser.js').BrowserContext;
} catch (error) {
Super = require('puppeteer-core/lib/cjs/puppeteer/common/Browser.js').BrowserContext;
}
Super.prototype.defaultPage = async function (...hooks: Hook[]) {
let page: Page = null;
let pages: Page[] = await this.pages();
if (pages.length === 0) {
pages = [await this.newPage()];
}
page = pages.shift();
if (hooks != null && Array.isArray(hooks) === true) {
for (let hook of hooks) {
page = await hook(page);
}
}
return page;
};
let newPage: any = Super.prototype.newPage;
Super.prototype.newPage = async function (...hooks: Hook[]) {
let page: Page = await newPage.apply(this, arguments);
if (hooks != null && Array.isArray(hooks) === true) {
for (let hook of hooks) {
page = await hook(page);
}
}
return page;
};