From e5c0e7a24a1555b2ba97426b0b3818d6162bb486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Berson?= Date: Fri, 17 Jan 2020 10:41:24 +0100 Subject: [PATCH 1/2] chore: update adblocker and use pre-built engine from CDN * Fix fetch abstraction on top of 'got' * Update 'got' to latest to get 'text', 'json', and 'buffer' helpers * Make use of prebuilt engine from CDN whenever possible --- packages/goto/package.json | 4 ++-- packages/goto/scripts/postinstall.js | 19 ++++++++----------- packages/screenshot/package.json | 2 +- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/packages/goto/package.json b/packages/goto/package.json index 00e93c66e1..f74757ebfc 100644 --- a/packages/goto/package.json +++ b/packages/goto/package.json @@ -29,9 +29,9 @@ ], "dependencies": { "@browserless/devices": "^5.18.5", - "@cliqz/adblocker-puppeteer": "~1.4.1", + "@cliqz/adblocker-puppeteer": "~1.5.0", "debug-logfmt": "~1.0.4", - "got": "~9.6.0", + "got": "~10.2.2", "p-reflect": "~2.1.0", "p-timeout": "~3.2.0", "tldts": "~5.6.3" diff --git a/packages/goto/scripts/postinstall.js b/packages/goto/scripts/postinstall.js index 6ee193d72d..cbab37ef38 100644 --- a/packages/goto/scripts/postinstall.js +++ b/packages/goto/scripts/postinstall.js @@ -1,6 +1,6 @@ 'use strict' -const { PuppeteerBlocker, fullLists } = require('@cliqz/adblocker-puppeteer') +const { PuppeteerBlocker } = require('@cliqz/adblocker-puppeteer') const { promisify } = require('util') const got = require('got') const fs = require('fs') @@ -10,19 +10,16 @@ const writeFile = promisify(fs.writeFile) const OUTPUT_FILENAME = 'src/engine.bin' // Lightweight `fetch` polyfill on top of `got` to allow consumption by adblocker -const fetch = async url => { - const body = (await got(url)).body - - return { - text: () => body, - arrayBuffer: () => Buffer.from(body, 'ascii').buffer, - json: () => JSON.parse(body) - } -} +const fetch = url => + Promise.resolve({ + text: got(url).text, + arrayBuffer: got(url).buffer, + json: got(url).json + }) const main = async () => { // create a ad-blocker engine - const engine = await PuppeteerBlocker.fromLists(fetch, fullLists) + const engine = await PuppeteerBlocker.fromPrebuiltFull(fetch) await writeFile(OUTPUT_FILENAME, engine.serialize()) } diff --git a/packages/screenshot/package.json b/packages/screenshot/package.json index 105401457c..8181de11d1 100644 --- a/packages/screenshot/package.json +++ b/packages/screenshot/package.json @@ -28,7 +28,7 @@ ], "dependencies": { "@browserless/goto": "^5.19.9", - "got": "~9.6.0", + "got": "~10.2.2", "is-url-http": "~1.2.4", "p-reflect": "~2.1.0", "sharp": "~0.23.4", From 829bda96756f8785cecd07d24b94d59dbdd25a5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Berson?= Date: Fri, 17 Jan 2020 15:35:41 +0100 Subject: [PATCH 2/2] Revert update of 'got' --- packages/goto/package.json | 2 +- packages/goto/scripts/postinstall.js | 11 ++++++++--- packages/screenshot/package.json | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/goto/package.json b/packages/goto/package.json index f74757ebfc..021355279c 100644 --- a/packages/goto/package.json +++ b/packages/goto/package.json @@ -31,7 +31,7 @@ "@browserless/devices": "^5.18.5", "@cliqz/adblocker-puppeteer": "~1.5.0", "debug-logfmt": "~1.0.4", - "got": "~10.2.2", + "got": "~9.6.0", "p-reflect": "~2.1.0", "p-timeout": "~3.2.0", "tldts": "~5.6.3" diff --git a/packages/goto/scripts/postinstall.js b/packages/goto/scripts/postinstall.js index cbab37ef38..bc9364f955 100644 --- a/packages/goto/scripts/postinstall.js +++ b/packages/goto/scripts/postinstall.js @@ -9,12 +9,17 @@ const writeFile = promisify(fs.writeFile) const OUTPUT_FILENAME = 'src/engine.bin' +// Small helpers to allow fetching different types of data with `got` +const fetchBuffer = async url => (await got(url, { encoding: null })).body +const fetchText = async url => Buffer.from(await fetchBuffer(url), 'ascii') +const fetchJson = async url => JSON.parse(await fetchText(url)) + // Lightweight `fetch` polyfill on top of `got` to allow consumption by adblocker const fetch = url => Promise.resolve({ - text: got(url).text, - arrayBuffer: got(url).buffer, - json: got(url).json + text: () => fetchText(url), + arrayBuffer: () => fetchBuffer(url), + json: () => fetchJson(url) }) const main = async () => { diff --git a/packages/screenshot/package.json b/packages/screenshot/package.json index 8181de11d1..105401457c 100644 --- a/packages/screenshot/package.json +++ b/packages/screenshot/package.json @@ -28,7 +28,7 @@ ], "dependencies": { "@browserless/goto": "^5.19.9", - "got": "~10.2.2", + "got": "~9.6.0", "is-url-http": "~1.2.4", "p-reflect": "~2.1.0", "sharp": "~0.23.4",