mancha
Version:
Javscript HTML rendering engine
35 lines • 1.22 kB
JavaScript
import * as fs from "node:fs/promises";
import { JSDOM } from "jsdom";
import { IRenderer } from "./renderer.js";
export { IRenderer } from "./renderer.js";
export class Renderer extends IRenderer {
impl = "jsdom";
parseHTML(content, params = { rootDocument: false }) {
if (params.rootDocument) {
return new JSDOM(content).window.document;
}
else {
return JSDOM.fragment(content);
}
}
serializeHTML(root) {
const dom = new JSDOM();
const XMLSerializer = dom.window.XMLSerializer;
return new XMLSerializer().serializeToString(root).replace(/\s?xmlns="[^"]+"/gm, "");
}
createElement(tag, owner) {
return (owner || new JSDOM().window.document).createElement(tag);
}
createComment(content, owner) {
return (owner || new JSDOM().window.document).createComment(content);
}
textContent(node, content) {
node.textContent = content;
}
async fetchLocal(fpath, params) {
return fs.readFile(fpath, { encoding: params?.encoding || "utf8" });
}
}
// Export a global renderer instance directly.
export const Mancha = new Renderer();
//# sourceMappingURL=index.js.map