This commit is contained in:
2024-08-31 00:22:11 +02:00
commit eefa5f22b9
1206 changed files with 248159 additions and 0 deletions

View File

@ -0,0 +1,36 @@
"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"]);
}
};