'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0; exports.xmlReplacer = /["&'<>$\x80-\uFFFF]/g; var xmlCodeMap = new Map([ [34, '"'], [38, '&'], [39, '''], [60, '<'], [62, '>'] ]); // For compatibility with node < 4, we wrap `codePointAt` exports.getCodePoint = String.prototype.codePointAt != null ? function (str, index) { return str.codePointAt(index); } : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae function (c, index) { return (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index); }; /** * Encodes all non-ASCII characters, as well as characters not valid in XML * documents using XML entities. * * If a character has no equivalent entity, a * numeric hexadecimal reference (eg. `ü`) will be used. */ function encodeXML(str) { var ret = ''; var lastIdx = 0; var match; while ((match = exports.xmlReplacer.exec(str)) !== null) { var i = match.index; var char = str.charCodeAt(i); var next = xmlCodeMap.get(char); if (next !== undefined) { ret += str.substring(lastIdx, i) + next; lastIdx = i + 1; } else { ret += ''.concat(str.substring(lastIdx, i), '&#x').concat((0, exports.getCodePoint)(str, i).toString(16), ';'); // Increase by 1 if we have a surrogate pair lastIdx = exports.xmlReplacer.lastIndex += Number((char & 64512) === 55296); } } return ret + str.substr(lastIdx); } exports.encodeXML = encodeXML; /** * Encodes all non-ASCII characters, as well as characters not valid in XML * documents using numeric hexadecimal reference (eg. `ü`). * * Have a look at `escapeUTF8` if you want a more concise output at the expense * of reduced transportability. * * @param data String to escape. */ exports.escape = encodeXML; function getEscaper(regex, map) { return function escape(data) { var match; var lastIdx = 0; var result = ''; while ((match = regex.exec(data))) { if (lastIdx !== match.index) { result += data.substring(lastIdx, match.index); } // We know that this chararcter will be in the map. result += map.get(match[0].charCodeAt(0)); // Every match will be of length 1 lastIdx = match.index + 1; } return result + data.substring(lastIdx); }; } /** * Encodes all characters not valid in XML documents using XML entities. * * Note that the output will be character-set dependent. * * @param data String to escape. */ exports.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); /** * Encodes all characters that have to be escaped in HTML attributes, * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. * * @param data String to escape. */ exports.escapeAttribute = getEscaper( /["&\u00A0]/g, new Map([ [34, '"'], [38, '&'], [160, ' '] ]) ); /** * Encodes all characters that have to be escaped in HTML text, * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. * * @param data String to escape. */ exports.escapeText = getEscaper( /[&<>\u00A0]/g, new Map([ [38, '&'], [60, '<'], [62, '>'], [160, ' '] ]) ); //# sourceMappingURL=escape.js.map