From 238c480c303d62a8e4d1e28e9414688b1a14d50b Mon Sep 17 00:00:00 2001 From: Alexey Lunin <alexey.lunin0@gmail.com> Date: Mon, 9 Nov 2020 16:01:24 +0300 Subject: [PATCH] fix build --- .../MimeVerificationService/constants.d.ts | 3 + .../MimeVerificationService/constants.js | 6 + .../MimeVerificationService/utils.d.ts | 4 + .../services/MimeVerificationService/utils.js | 103 ++++++++++++++++++ 4 files changed, 116 insertions(+) create mode 100644 dist/services/MimeVerificationService/constants.d.ts create mode 100644 dist/services/MimeVerificationService/constants.js create mode 100644 dist/services/MimeVerificationService/utils.d.ts create mode 100644 dist/services/MimeVerificationService/utils.js diff --git a/dist/services/MimeVerificationService/constants.d.ts b/dist/services/MimeVerificationService/constants.d.ts new file mode 100644 index 0000000..4a520bb --- /dev/null +++ b/dist/services/MimeVerificationService/constants.d.ts @@ -0,0 +1,3 @@ +export declare const ELEMENT_NODE = 1; +export declare const TEXT_NODE = 3; +export declare const DOCUMENT_NODE = 9; diff --git a/dist/services/MimeVerificationService/constants.js b/dist/services/MimeVerificationService/constants.js new file mode 100644 index 0000000..e9c1bf0 --- /dev/null +++ b/dist/services/MimeVerificationService/constants.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DOCUMENT_NODE = exports.TEXT_NODE = exports.ELEMENT_NODE = void 0; +exports.ELEMENT_NODE = 1; +exports.TEXT_NODE = 3; +exports.DOCUMENT_NODE = 9; diff --git a/dist/services/MimeVerificationService/utils.d.ts b/dist/services/MimeVerificationService/utils.d.ts new file mode 100644 index 0000000..993e9cc --- /dev/null +++ b/dist/services/MimeVerificationService/utils.d.ts @@ -0,0 +1,4 @@ +export declare const printHtmlChildren: (node: Node, printFunction: (node: Node) => string, depth: number) => string; +export declare const printHtmlNode: (node: Node, printFunction: (node: Node) => string, depth: number) => string; +export declare const pruneHtmlNode: (node: Node, pruneElement: (element: HTMLElement) => boolean) => boolean; +export declare const printOutlookElement: (node: Node) => string; diff --git a/dist/services/MimeVerificationService/utils.js b/dist/services/MimeVerificationService/utils.js new file mode 100644 index 0000000..3410d13 --- /dev/null +++ b/dist/services/MimeVerificationService/utils.js @@ -0,0 +1,103 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.printOutlookElement = exports.pruneHtmlNode = exports.printHtmlNode = exports.printHtmlChildren = void 0; +const stringUtils_1 = require("../../utils/stringUtils"); +const __1 = require("../.."); +const constants_1 = require("./constants"); +exports.printHtmlChildren = (node, printFunction, depth) => { + let child = node.firstChild; + if (!child) { + return ""; + } + if (child == node.lastChild && child.nodeType == constants_1.TEXT_NODE) { + return exports.printHtmlNode(child, printFunction, depth); + } + else { + let result = ""; + while (child) { + result = result.concat(exports.printHtmlNode(child, printFunction, depth)); + child = child.nextSibling; + } + return result; + } +}; +exports.printHtmlNode = (node, printFunction, depth) => { + let result = ""; + if (printFunction) { + result = printFunction(node); + if (result) { + return result; + } + } + switch (node.nodeType) { + case constants_1.TEXT_NODE: + result += "<TEXT>"; + result += stringUtils_1.removeSpacesAndLinebreaks(node.textContent); + result += "</TEXT>"; + result += "\n"; + break; + case constants_1.DOCUMENT_NODE: + result += exports.printHtmlChildren(node, printFunction, depth); + break; + case constants_1.ELEMENT_NODE: + result += "<" + node.nodeName; + Array.from(node.attributes) + .sort((a, b) => a.name.localeCompare(b.name)) + .forEach((attribute) => { + result += ` ${attribute.name}`; + if (attribute.value) { + result += `="${__1.escapeHtmlString(attribute.value)}"`; + } + }); + if (node.firstChild) { + result += ">"; + result += "\n"; + result += exports.printHtmlChildren(node, printFunction, depth + 1); + result += "</" + node.nodeName + ">"; + } + else { + result += "/>"; + } + result += "\n"; + } + return result; +}; +exports.pruneHtmlNode = (node, pruneElement) => { + let toBeRemoved = false; + switch (node.nodeType) { + case node.COMMENT_NODE: + case node.DOCUMENT_TYPE_NODE: + toBeRemoved = true; + break; + case node.TEXT_NODE: { + const trimmedText = node.textContent.trim(); + if (trimmedText === "") { + toBeRemoved = true; + } + else { + node.textContent = trimmedText; + } + break; + } + case node.ELEMENT_NODE: + toBeRemoved = pruneElement(node); + } + if (toBeRemoved) { + return true; + } + const childrenToRemove = []; + let child = node.firstChild; + while (child) { + exports.pruneHtmlNode(child, pruneElement) && childrenToRemove.push(child); + child = child.nextSibling; + } + childrenToRemove.forEach((child) => node.removeChild(child)); + return false; +}; +exports.printOutlookElement = (node) => { + if (node.nodeType === constants_1.ELEMENT_NODE) { + if (node.classList.contains("WordSection1")) { + return exports.printHtmlChildren(node, null, 0); + } + } +}; -- GitLab