UNPKG

kayle

Version:

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

81 lines 3.74 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.adEngine = void 0; const config_1 = require("../config"); const engine = process.env.KAYLE_ADBLOCK === "true" ? (async () => { try { const adblockRust = await Promise.resolve().then(() => __importStar(require("adblock-rs"))); const { promises } = await Promise.resolve().then(() => __importStar(require("fs"))); const { join } = await Promise.resolve().then(() => __importStar(require("path"))); const filterSet = new adblockRust.FilterSet(false); const resourceList = [ "https://github.com/brave/adblock-rust/blob/master/data/brave/brave-unbreak.txt", "https://github.com/brave/adblock-rust/blob/master/data/brave/coin-miners.txt", "https://github.com/brave/adblock-rust/blob/master/data/uBlockOrigin/unbreak.txt", ]; for (const adlist of resourceList) { const u = new URL(adlist); const filePath = u.pathname.split("/"); const fileName = filePath[filePath.length - 1]; const file = join(__dirname, "../data/", fileName); const fileExists = !!(await promises .stat(file) .catch((_) => false)); if (!fileExists) { try { const req = await fetch(adlist); const adFilter = await req.text(); if (adFilter) { await promises.writeFile(file, adFilter); filterSet.addFilters(adFilter.split("\n")); } } catch (e) { console.error(e); } return; } const adFilter = await promises.readFile(file, { encoding: "utf-8", }); filterSet.addFilters(adFilter.split("\n")); } const engine = new adblockRust.Engine(filterSet, true); const serializedArrayBuffer = engine.serializeRaw(); config_1._log && console.log(`Adblock Engine size: ${(serializedArrayBuffer.byteLength / 1024 / 1024).toFixed(2)} MB`); return engine; } catch (_) { console.error("Error: adblock-rs installation missing! Run `npm i adblock-rs` or `yarn add adblock-rs` to start with the adblock engine."); } })() : null; exports.adEngine = engine; //# sourceMappingURL=adblock.js.map