diff --git a/unfurler/src/concurrency/ReusablePage.ts b/unfurler/src/concurrency/ReusablePage.ts index 4b272afb0..55ae22d03 100644 --- a/unfurler/src/concurrency/ReusablePage.ts +++ b/unfurler/src/concurrency/ReusablePage.ts @@ -11,7 +11,7 @@ const BROWSER_TIMEOUT = 8000; const maxAgeMs = (config.PUPPETEER.MAX_PAGE_AGE || (24 * 60 * 60)) * 1000; const maxConcurrency = config.PUPPETEER.CLUSTER_SIZE; -interface RepairablePage extends puppeteer.Page { +export interface RepairablePage extends puppeteer.Page { repairRequested?: boolean; language?: string | null; createdAt?: number; diff --git a/unfurler/src/concurrency/ReusableSSRPage.ts b/unfurler/src/concurrency/ReusableSSRPage.ts index c68514a16..03afb6c03 100644 --- a/unfurler/src/concurrency/ReusableSSRPage.ts +++ b/unfurler/src/concurrency/ReusableSSRPage.ts @@ -2,19 +2,11 @@ import * as puppeteer from 'puppeteer'; import { timeoutExecute } from 'puppeteer-cluster/dist/util'; import logger from '../logger'; import config from '../config'; -import ReusablePage from './ReusablePage'; +import ReusablePage, { RepairablePage } from './ReusablePage'; const mempoolHost = config.MEMPOOL.HTTP_HOST + (config.MEMPOOL.HTTP_PORT ? ':' + config.MEMPOOL.HTTP_PORT : ''); const mockImageBuffer = Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=", 'base64'); -interface RepairablePage extends puppeteer.Page { - repairRequested?: boolean; - language?: string | null; - createdAt?: number; - free?: boolean; - index?: number; -} - export default class ReusableSSRPage extends ReusablePage { public constructor(options: puppeteer.LaunchOptions, puppeteer: any) { @@ -33,25 +25,25 @@ export default class ReusableSSRPage extends ReusablePage { page.on('pageerror', (err) => { console.log(err); - // page.repairRequested = true; + page.repairRequested = true; }); await page.setRequestInterception(true); - page.on('request', req => { - if (req.isInterceptResolutionHandled()) { - return req.continue(); - } - if (req.resourceType() === 'image') { - return req.respond({ - contentType: 'image/png', - headers: {"Access-Control-Allow-Origin": "*"}, - body: mockImageBuffer - }); - } else if (!['document', 'script', 'xhr', 'fetch'].includes(req.resourceType())) { - return req.abort(); - } else { - return req.continue(); - } - }); + page.on('request', req => { + if (req.isInterceptResolutionHandled()) { + return req.continue(); + } + if (req.resourceType() === 'image') { + return req.respond({ + contentType: 'image/png', + headers: {"Access-Control-Allow-Origin": "*"}, + body: mockImageBuffer + }); + } else if (!['document', 'script', 'xhr', 'fetch'].includes(req.resourceType())) { + return req.abort(); + } else { + return req.continue(); + } + }); try { await page.goto(defaultUrl, { waitUntil: "networkidle0" }); await page.waitForSelector('meta[property="og:meta:ready"]', { timeout: config.PUPPETEER.RENDER_TIMEOUT || 3000 }); diff --git a/unfurler/src/index.ts b/unfurler/src/index.ts index 6516cb18a..71adba257 100644 --- a/unfurler/src/index.ts +++ b/unfurler/src/index.ts @@ -5,7 +5,7 @@ import * as https from 'https'; import config from './config'; import { Cluster } from 'puppeteer-cluster'; import ReusablePage from './concurrency/ReusablePage'; -import ReusableSSRPage from './concurrency/ReusablePage'; +import ReusableSSRPage from './concurrency/ReusableSSRPage'; import { parseLanguageUrl } from './language/lang'; import { matchRoute } from './routes'; import nodejsPath from 'path';