UNPKG

kayle

Version:

Extremely fast and accurate accessibility engine built for any headless tool like playwright or puppeteer.

105 lines 3.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendCDPPageConfigurationReset = exports.sendCDPPageConfigurationEnable = exports.blockFilter = void 0; const config_1 = require("../config"); const adblock_1 = require("./adblock"); const resource_ignore_1 = require("./resource-ignore"); const blockedResourceUrls = Object.keys(resource_ignore_1.skippedResources); const blockFilter = async (e, client, o) => { const resourceType = e.resourceType; if (resourceType === "Document" && o.html && !o._initRequest) { o._initRequest = true; return await client.send("Fetch.fulfillRequest", { requestId: e.requestId, responseCode: 200, body: Buffer.from(o.html).toString("base64"), }); } else if (!o.html && !o._initRequest) { o._initRequest = true; } const url = e.request && e.request.url; if ((!o.allowImages && resourceType === "Image") || (resourceType === "Script" && adblock_1.adEngine && url && (url.startsWith("https://") || url.startsWith("http://")) && adblock_1.adEngine.check(url, new URL(url).origin, resourceType, true))) { return await client.send("Fetch.failRequest", { requestId: e.requestId, errorReason: "Aborted", }); } if (o._initRequest) { return await client.send("Fetch.continueRequest", { requestId: e.requestId, }); } }; exports.blockFilter = blockFilter; const sendCDPPageConfigurationEnable = async (client, o) => { if (!client || (client && !client.on)) { return; } try { await Promise.allSettled([ client.send("Network.setBlockedURLs", { urls: blockedResourceUrls, }), client.send("Fetch.enable", { patterns: resource_ignore_1.blockedResourcePatterns, }), client.send("Page.enable"), client.send("Preload.disable"), client.send("ServiceWorker.disable"), !config_1._log.enabled ? client.send("Runtime.discardConsoleEntries") : undefined, ]); } catch (e) { console.error(e); } client.on("Page.frameRequestedNavigation", (e) => { if (e.reason == "scriptInitiated" && e.url && e.disposition === "currentTab") { if (o._watcher && o._watcher.timer) { return clearTimeout(o._watcher.timer); } } }); client.on("Fetch.requestPaused", async (e) => { try { await (0, exports.blockFilter)(e, client, o); } catch (e) { config_1._log.enabled && console.error(e); } }); }; exports.sendCDPPageConfigurationEnable = sendCDPPageConfigurationEnable; const sendCDPPageConfigurationReset = async (client, o, _allowImages, all) => { if (!client || (client && !client.on)) { return; } if (o.html) { o._initRequest = false; } if (all) { try { await Promise.allSettled([ client.send("Page.disable"), client.send("Preload.enable"), client.send("Fetch.disable"), client.send("ServiceWorker.enable"), !config_1._log.enabled ? client.send("Runtime.discardConsoleEntries") : undefined, ]); } catch (e) { console.error(e); } } }; exports.sendCDPPageConfigurationReset = sendCDPPageConfigurationReset; //# sourceMappingURL=cdp-blocking.js.map