Initial import from local backup (Documents-Playground/pakerpale)
This commit is contained in:
54
node_modules/jsdom/lib/jsdom/living/domparsing/DOMParser-impl.js
generated
vendored
Normal file
54
node_modules/jsdom/lib/jsdom/living/domparsing/DOMParser-impl.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
"use strict";
|
||||
|
||||
const { parseIntoDocument } = require("../../browser/parser");
|
||||
|
||||
const Document = require("../generated/Document");
|
||||
|
||||
exports.implementation = class DOMParserImpl {
|
||||
parseFromString(string, contentType) {
|
||||
switch (String(contentType)) {
|
||||
case "text/html": {
|
||||
return createScriptingDisabledDocument("html", contentType, string);
|
||||
}
|
||||
|
||||
case "text/xml":
|
||||
case "application/xml":
|
||||
case "application/xhtml+xml":
|
||||
case "image/svg+xml": {
|
||||
try {
|
||||
return createScriptingDisabledDocument("xml", contentType, string);
|
||||
} catch (error) {
|
||||
const document = createScriptingDisabledDocument("xml", contentType);
|
||||
const element = document.createElementNS("http://www.mozilla.org/newlayout/xml/parsererror.xml", "parsererror");
|
||||
|
||||
element.textContent = error.message;
|
||||
|
||||
document.appendChild(element);
|
||||
return document;
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
throw new TypeError("Invalid contentType");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function createScriptingDisabledDocument(parsingMode, contentType, string) {
|
||||
const document = Document.createImpl([], {
|
||||
options: {
|
||||
parsingMode,
|
||||
encoding: "UTF-8",
|
||||
contentType,
|
||||
readyState: "complete",
|
||||
scriptingDisabled: true
|
||||
// TODO: somehow set URL to active document's URL
|
||||
}
|
||||
});
|
||||
|
||||
if (string !== undefined) {
|
||||
parseIntoDocument(string, document);
|
||||
}
|
||||
|
||||
return document;
|
||||
}
|
||||
47
node_modules/jsdom/lib/jsdom/living/domparsing/parse5-adapter-serialization.js
generated
vendored
Normal file
47
node_modules/jsdom/lib/jsdom/living/domparsing/parse5-adapter-serialization.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
"use strict";
|
||||
const idlUtils = require("../generated/utils");
|
||||
const nodeTypes = require("../node-type");
|
||||
const { domSymbolTree } = require("../helpers/internal-constants");
|
||||
// Serialization only requires a subset of the tree adapter interface.
|
||||
|
||||
// Tree traversing
|
||||
exports.getFirstChild = node => node.firstChild;
|
||||
|
||||
exports.getChildNodes = node => node.childNodesForSerializing || domSymbolTree.childrenToArray(node);
|
||||
|
||||
exports.getParentNode = node => node.parentNode;
|
||||
|
||||
exports.getAttrList = node => idlUtils.wrapperForImpl(node._attributes);
|
||||
|
||||
// Node data
|
||||
exports.getTagName = element => element._qualifiedName; // https://github.com/inikulin/parse5/issues/231
|
||||
|
||||
exports.getNamespaceURI = element => element.namespaceURI;
|
||||
|
||||
exports.getTextNodeContent = exports.getCommentNodeContent = node => node.data;
|
||||
|
||||
exports.getDocumentTypeNodeName = node => node.name;
|
||||
|
||||
exports.getDocumentTypeNodePublicId = node => node.publicId;
|
||||
|
||||
exports.getDocumentTypeNodeSystemId = node => node.systemId;
|
||||
|
||||
exports.getTemplateContent = templateElement => templateElement._templateContents;
|
||||
|
||||
exports.getDocumentMode = document => document._mode;
|
||||
|
||||
// Node types
|
||||
exports.isTextNode = node => node.nodeType === nodeTypes.TEXT_NODE;
|
||||
|
||||
exports.isCommentNode = node => node.nodeType === nodeTypes.COMMENT_NODE;
|
||||
|
||||
exports.isDocumentTypeNode = node => node.nodeType === nodeTypes.DOCUMENT_TYPE_NODE;
|
||||
|
||||
exports.isElementNode = node => node.nodeType === nodeTypes.ELEMENT_NODE;
|
||||
|
||||
// Source code location
|
||||
exports.setNodeSourceCodeLocation = (node, location) => {
|
||||
node.sourceCodeLocation = location;
|
||||
};
|
||||
|
||||
exports.getNodeSourceCodeLocation = node => node.sourceCodeLocation;
|
||||
39
node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
generated
vendored
Normal file
39
node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
"use strict";
|
||||
|
||||
const { produceXMLSerialization } = require("w3c-xmlserializer");
|
||||
const parse5 = require("parse5");
|
||||
|
||||
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 }) => {
|
||||
const contextDocument =
|
||||
node.nodeType === NODE_TYPE.DOCUMENT_NODE ? node : node._ownerDocument;
|
||||
if (contextDocument._parsingMode === "html") {
|
||||
return htmlSerialization(node);
|
||||
}
|
||||
|
||||
const childNodes = node.childNodesForSerializing || node.childNodes;
|
||||
let serialized = "";
|
||||
for (let i = 0; i < childNodes.length; ++i) {
|
||||
serialized += produceXMLSerialization(
|
||||
utils.wrapperForImpl(childNodes[i] || childNodes.item(i)),
|
||||
requireWellFormed
|
||||
);
|
||||
}
|
||||
return serialized;
|
||||
};
|
||||
Reference in New Issue
Block a user