From de9db0c2b24019d2e1dd43206dd7f149ecdc679a Mon Sep 17 00:00:00 2001 From: Szymon Marczak <36894700+szmarczak@users.noreply.github.com> Date: Sun, 30 Oct 2022 20:41:23 +0100 Subject: [PATCH] fix: type errors when `playwright` is not installed (#1637) --- .../browser-pool/src/playwright/playwright-controller.ts | 5 +++-- packages/browser-pool/src/playwright/playwright-plugin.ts | 5 +++-- packages/browser-pool/src/utils.ts | 6 ++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/browser-pool/src/playwright/playwright-controller.ts b/packages/browser-pool/src/playwright/playwright-controller.ts index c2da78afb21b..c9b617596b8a 100644 --- a/packages/browser-pool/src/playwright/playwright-controller.ts +++ b/packages/browser-pool/src/playwright/playwright-controller.ts @@ -4,11 +4,12 @@ import type { Cookie } from '@crawlee/types'; import { BrowserController } from '../abstract-classes/browser-controller'; import { anonymizeProxySugar } from '../anonymize-proxy'; import type { PlaywrightPlugin } from './playwright-plugin'; +import type { SafeParameters } from '../utils'; const tabIds = new WeakMap(); const keyFromTabId = (tabId: string | number) => `.${tabId}.`; -export class PlaywrightController extends BrowserController[0], Browser> { +export class PlaywrightController extends BrowserController[0], Browser> { normalizeProxyOptions(proxyUrl: string | undefined, pageOptions: any): Record { if (!proxyUrl) { return {}; @@ -28,7 +29,7 @@ export class PlaywrightController extends BrowserController[0]): Promise { + protected async _newPage(contextOptions?: SafeParameters[0]): Promise { if (contextOptions !== undefined && !this.launchContext.useIncognitoPages && !this.launchContext.experimentalContainers) { throw new Error('A new page can be created with provided context only when using incognito pages or experimental containers.'); } diff --git a/packages/browser-pool/src/playwright/playwright-plugin.ts b/packages/browser-pool/src/playwright/playwright-plugin.ts index c753840a887d..708e288707ec 100644 --- a/packages/browser-pool/src/playwright/playwright-plugin.ts +++ b/packages/browser-pool/src/playwright/playwright-plugin.ts @@ -13,6 +13,7 @@ import { getLocalProxyAddress } from '../proxy-server'; import { anonymizeProxySugar } from '../anonymize-proxy'; import { createProxyServerForContainers } from '../container-proxy-server'; import { loadFirefoxAddon } from './load-firefox-addon'; +import type { SafeParameters } from '../utils'; const getFreePort = async () => { return new Promise((resolve, reject) => { @@ -27,7 +28,7 @@ const getFreePort = async () => { // taacPath = browser-pool/dist/tab-as-a-container const taacPath = path.join(__dirname, '..', 'tab-as-a-container'); -export class PlaywrightPlugin extends BrowserPlugin[0], PlaywrightBrowser> { +export class PlaywrightPlugin extends BrowserPlugin[0], PlaywrightBrowser> { private _browserVersion?: string; _containerProxyServer?: Awaited>; @@ -171,7 +172,7 @@ export class PlaywrightPlugin extends BrowserPlugin[0], PlaywrightBrowser> { + protected _createController(): BrowserController[0], PlaywrightBrowser> { return new PlaywrightController(this); } diff --git a/packages/browser-pool/src/utils.ts b/packages/browser-pool/src/utils.ts index f5ebffd4ab5e..6ed9e10abafe 100644 --- a/packages/browser-pool/src/utils.ts +++ b/packages/browser-pool/src/utils.ts @@ -5,6 +5,12 @@ export type UnwrapPromise = T extends PromiseLike ? UnwrapPromise export function noop(..._args: unknown[]): void {} +/** + * This is required when using optional dependencies. + * Importing a type gives `any`, but `Parameters` gives `unknown[]` instead of `any` + */ +export type SafeParameters any> = unknown[] extends Parameters ? any : Parameters; + export type InferBrowserPluginArray< // The original array input Input extends readonly unknown[],