Sha256: 7c791e48ae797f05a401b949230bf4237aad85ecb07fd4b48ad88170ef5019de

Contents?: true

Size: 1.33 KB

Versions: 20

Compression:

Stored size: 1.33 KB

Contents

"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");
const NAMESPACES = require("../helpers/namespaces");

function htmlSerialization(node) {
  if (
    node.nodeType === NODE_TYPE.ELEMENT_NODE &&
    node.namespaceURI === NAMESPACES.HTML_NS &&
    node.tagName === "TEMPLATE"
  ) {
    node = node.content;
  }

  return parse5.serialize(node, { treeAdapter });
}

module.exports.fragmentSerialization = (node, { requireWellFormed, globalObject }) => {
  const contextDocument =
    node.nodeType === NODE_TYPE.DOCUMENT_NODE ? node : node._ownerDocument;
  if (contextDocument._parsingMode === "html") {
    return htmlSerialization(node);
  }

  const childNodes = node.childNodesForSerializing || 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"]);
  }
};

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
appmap-0.72.2 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.72.1 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.72.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.71.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.70.2 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.70.1 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.70.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.69.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.68.2 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.68.1 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.68.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.67.1 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.67.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.66.2 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.66.1 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.66.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.65.1 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.65.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.64.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
appmap-0.63.0 ./node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js