kayle
Version:
Extremely fast and accurate accessibility engine built for any headless tool like playwright or puppeteer.
81 lines • 3.74 kB
JavaScript
;
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