mirror of
https://github.com/S2-/minifyfromhtml.git
synced 2025-08-02 20:00:05 +02:00
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
"use strict";
|
|
|
|
const produceXMLSerialization = require("w3c-xmlserializer");
|
|
const parse5 = require("parse5");
|
|
const DOMException = require("domexception/webidl2js-wrapper");
|
|
|
|
const utils = require("../generated/utils");
|
|
const treeAdapter = require("./parse5-adapter-serialization");
|
|
const NODE_TYPE = require("../node-type");
|
|
|
|
module.exports.fragmentSerialization = (node, { outer, requireWellFormed, globalObject }) => {
|
|
const contextDocument =
|
|
node.nodeType === NODE_TYPE.DOCUMENT_NODE ? node : node._ownerDocument;
|
|
if (contextDocument._parsingMode === "html") {
|
|
const config = {
|
|
...contextDocument._parseOptions,
|
|
treeAdapter
|
|
};
|
|
return outer ? parse5.serializeOuter(node, config) : parse5.serialize(node, config);
|
|
}
|
|
|
|
const childNodes = outer ? [node] : node.childNodes;
|
|
|
|
try {
|
|
let serialized = "";
|
|
for (let i = 0; i < childNodes.length; ++i) {
|
|
serialized += produceXMLSerialization(
|
|
utils.wrapperForImpl(childNodes[i] || childNodes.item(i)),
|
|
{ requireWellFormed }
|
|
);
|
|
}
|
|
return serialized;
|
|
} catch (e) {
|
|
throw DOMException.create(globalObject, [e.message, "InvalidStateError"]);
|
|
}
|
|
};
|