html-validate
Version:
Offline HTML5 validator and linter
62 lines (60 loc) • 1.75 kB
JavaScript
import { workerData, parentPort } from 'node:worker_threads';
import { F as FileSystemConfigLoader, H as HtmlValidate } from './core-nodejs.js';
import 'node:fs';
import './core.js';
import 'ajv';
import './elements.js';
import './meta-helper.js';
import './utils/natural-join.js';
import '@sidvind/better-ajv-errors';
import 'kleur';
import '@html-validate/stylish';
import 'semver';
import 'node:path';
import 'node:fs/promises';
import 'node:url';
import 'node:module';
function runAsWorker(fn) {
if (!workerData) {
return;
}
const { workerPort, sharedBuffer } = workerData;
const sharedBufferView = new Int32Array(sharedBuffer, 0, 1);
parentPort.on("message", ({ id, args }) => {
async function inner() {
let isAborted = false;
const handleAbortMessage = (msg2) => {
if (msg2.id === id && msg2.cmd === "abort") {
isAborted = true;
}
};
workerPort.on("message", handleAbortMessage);
let msg;
try {
msg = { id, result: await fn(...args) };
} catch (error) {
msg = {
id,
error: error instanceof Error ? error.message : String(error)
};
}
workerPort.off("message", handleAbortMessage);
if (isAborted) {
return;
}
workerPort.postMessage(msg);
Atomics.add(sharedBufferView, 0, 1);
Atomics.notify(sharedBufferView, 0);
}
inner();
});
}
function validateString(markup, filename, config) {
const loader = new FileSystemConfigLoader({
extends: ["html-validate:recommended"]
});
const htmlvalidate = new HtmlValidate(loader);
return htmlvalidate.validateString(markup, filename, config);
}
runAsWorker(validateString);
//# sourceMappingURL=jest-worker.js.map