UNPKG

jsdom

Version:

A JavaScript implementation of many web standards

37 lines (31 loc) 1.17 kB
"use strict"; const produceXMLSerialization = require("w3c-xmlserializer"); const parse5 = require("parse5"); const DOMException = require("../generated/DOMException"); 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"]); } };