"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cleanupHiddenCharacters = exports.normalizePlainPart = void 0; // this is a Node module. require is a must to work across different envs const URL = require("url-parse"); const utils_1 = require("../utils"); const normalizePlainPart = (text, sealRemovalOptions) => { text = exports.cleanupHiddenCharacters(text); text = patchOutlookSafelinksWrappers(text); if (sealRemovalOptions) { text = removeSeal(text, sealRemovalOptions.sealUrl); } text = utils_1.normalizeTextSpacings(text); return text.trim(); }; exports.normalizePlainPart = normalizePlainPart; const patchOutlookSafelinksWrappers = (text) => { const links = text.match(/<https:.+?(safelinks\.protection\.outlook\.com).+?>/g); if (links) { links.forEach((link) => { const url = new URL(link.slice(1, link.length - 1), true); const originalUrl = url.query["url"]; text = text.replace(link, `<${originalUrl}>`); }); } return text; }; /** * Function removes seal from the plain text. * @param plain * @param sealUrl */ const removeSeal = (plain, sealUrl) => { // For cases [<image-alt>]<<seal-url>> const sealRegex = `\\[.+?]\\s*<${sealUrl}>`; // For cases <<seal-url>>[<image-alt>] const sealRegexReversed = `<${sealUrl}>\\s*\\[.+?]`; return plain .replace(new RegExp(sealRegex), "") .replace(new RegExp(sealRegexReversed), ""); }; const cleanupHiddenCharacters = (s) => { const removeSymbols = new RegExp(/[\u200B]+/g); return s.replace(removeSymbols, ""); }; exports.cleanupHiddenCharacters = cleanupHiddenCharacters;