UNPKG

kayle

Version:

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

61 lines 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.kayleLint = void 0; const fetch_1 = require("./fetch"); const runner_js_1 = require("./runner-js"); const option_1 = require("./option"); const jsdom_1 = require("jsdom"); let Console = null; let DOM = null; const kayleLint = async (source, o = {}, runner, forward) => { const config = (0, option_1.extractArgs)(o); let html = source; let urlSource = false; if (source && source.startsWith("http")) { urlSource = true; try { html = await (0, fetch_1.fetchHtml)(source); } catch (e) { console.error(e); } } if (!html) { return Promise.resolve(); } if (!DOM || !Console) { DOM = jsdom_1.JSDOM; Console = jsdom_1.VirtualConsole; } let vConsole = undefined; return new Promise(async (resolve) => { if (forward) { vConsole = new Console(); vConsole.on("log", function (message) { console.log(message); }); } const dom = new DOM(html, { url: urlSource ? source : undefined, runScripts: "dangerously", virtualConsole: vConsole, }); dom.window.eval(runner_js_1.runnersJavascript.kayle); dom.window.eval(runner ? runner_js_1.runnersJavascript[runner] : runner_js_1.runnersJavascript["htmlcs"]); const results = await dom.window.__a11y.run({ hideElements: config.hideElements, ignore: config.ignore || [], rootElement: config.rootElement, rules: config.rules || [], runners: config.runners || ["htmlcs"], standard: config.standard || "WCAG2AA", }); resolve({ documentTitle: results.documentTitle, pageUrl: results.pageUrl, issues: results.issues || [], }); }); }; exports.kayleLint = kayleLint; //# sourceMappingURL=lint.js.map