UNPKG

6.81 kBSource Map (JSON)View Raw
1{"version":3,"file":"node-document.js","sourceRoot":"","sources":["../../../../modules/platform-node/node-document.ts"],"names":[],"mappings":"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","sourcesContent":["// PRIVATE\nimport { getDOM } from './get-dom';\n// PRIVATE\n\nconst parse5: any = require('parse5');\n\n// const parser = new Parser(TreeAdapters.htmlparser2);\n// TODO(gdi2290): fix encodeHtmlEntities: true\n// const serializer = new Serializer(TreeAdapters.htmlparser2, { encodeHtmlEntities: true });\n// const treeAdapter = parser.treeAdapter;\nconst treeAdapter = parse5.treeAdapters.htmlparser2;\n\nexport function isTag(tagName, node): boolean {\n return node.type === 'tag' && node.name === tagName;\n}\n\nexport function parseFragment(el: string): any {\n return parse5.parseFragment(el, { treeAdapter : parse5.treeAdapters.htmlparser2 });\n}\n\nexport function parseDocument (documentHtml: string): any {\n if (documentHtml === undefined) {\n throw new Error('parseDocument requires a document string');\n }\n if (typeof documentHtml !== 'string') {\n throw new Error('parseDocument needs to be a string to be parsed correctly');\n }\n\n const doc = parse5.parse(documentHtml, { treeAdapter : parse5.treeAdapters.htmlparser2 });\n\n\n /*\n // Build entire doc <!doctype><html> etc\n if (documentHtml.indexOf('<html>') > -1 && documentHtml.indexOf('</html>') > -1) {\n const doc = parser.parse(documentHtml);\n }\n // ASP.NET case : parse only the fragment - don't build entire <html> doc\n const doc = parser.parseFragment(documentHtml);\n */\n\n let rootNode = undefined;\n let bodyNode = undefined;\n let headNode = undefined;\n let titleNode = undefined;\n\n for (let i: number = 0; i < doc.childNodes.length; ++i) {\n const child = doc.childNodes[i];\n\n if (isTag('html', child)) {\n rootNode = child;\n break;\n }\n }\n //TODO: can be removed, is not used in any test case\n if (!rootNode) {\n rootNode = doc;\n }\n\n\n for (let i: number = 0; i < rootNode.childNodes.length; ++i) {\n const child = rootNode.childNodes[i];\n\n if (isTag('head', child)) {\n headNode = child;\n }\n\n if (isTag('body', child)) {\n bodyNode = child;\n }\n }\n\n //TODO: can be removed, is not used in any test case\n if (!headNode) {\n headNode = treeAdapter.createElement('head', null, []);\n getDOM().appendChild(doc, headNode);\n }\n\n//TODO: can be removed, is not used in any test case\n if (!bodyNode) {\n bodyNode = treeAdapter.createElement('body', null, []);\n getDOM().appendChild(doc, bodyNode);\n }\n\n for (let i = 0; i < headNode.childNodes.length; ++i) {\n if (isTag('title', headNode.childNodes[i])) {\n titleNode = headNode.childNodes[i];\n break;\n }\n }\n\n if (!titleNode) {\n titleNode = treeAdapter.createElement('title', null, []);\n getDOM().appendChild(headNode, titleNode);\n }\n\n doc._window = {};\n doc.head = headNode;\n doc.body = bodyNode;\n\n\n const titleNodeText = titleNode.childNodes[0];\n\n Object.defineProperty(doc, 'title', {\n get: () => titleNodeText.data,\n set: (newTitle) => titleNodeText.data = newTitle\n });\n\n return doc;\n}\n\n\nexport function serializeDocument(document: Object, pretty?: boolean): string {\n const doc = parse5.serialize(document, { treeAdapter : parse5.treeAdapters.htmlparser2 });\n if (pretty) {\n const beautify: any = require('js-beautify');\n return beautify.html(doc, {indent_size: 2});\n }\n return doc;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
\No newline at end of file