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