| "use strict"; | 
| Object.defineProperty(exports, "__esModule", { value: true }); | 
| var surrogate_pairs_1 = require("./surrogate-pairs"); | 
| var ALPHA_INDEX = { | 
|     '<': '<', | 
|     '>': '>', | 
|     '"': '"', | 
|     '&apos': '\'', | 
|     '&': '&', | 
|     '<': '<', | 
|     '>': '>', | 
|     '"': '"', | 
|     ''': '\'', | 
|     '&': '&' | 
| }; | 
| var CHAR_INDEX = { | 
|     60: 'lt', | 
|     62: 'gt', | 
|     34: 'quot', | 
|     39: 'apos', | 
|     38: 'amp' | 
| }; | 
| var CHAR_S_INDEX = { | 
|     '<': '<', | 
|     '>': '>', | 
|     '"': '"', | 
|     '\'': ''', | 
|     '&': '&' | 
| }; | 
| var XmlEntities = /** @class */ (function () { | 
|     function XmlEntities() { | 
|     } | 
|     XmlEntities.prototype.encode = function (str) { | 
|         if (!str || !str.length) { | 
|             return ''; | 
|         } | 
|         return str.replace(/[<>"'&]/g, function (s) { | 
|             return CHAR_S_INDEX[s]; | 
|         }); | 
|     }; | 
|     XmlEntities.encode = function (str) { | 
|         return new XmlEntities().encode(str); | 
|     }; | 
|     XmlEntities.prototype.decode = function (str) { | 
|         if (!str || !str.length) { | 
|             return ''; | 
|         } | 
|         return str.replace(/&#?[0-9a-zA-Z]+;?/g, function (s) { | 
|             if (s.charAt(1) === '#') { | 
|                 var code = s.charAt(2).toLowerCase() === 'x' ? | 
|                     parseInt(s.substr(3), 16) : | 
|                     parseInt(s.substr(2)); | 
|                 if (!isNaN(code) || code >= -32768) { | 
|                     if (code <= 65535) { | 
|                         return String.fromCharCode(code); | 
|                     } | 
|                     else { | 
|                         return surrogate_pairs_1.fromCodePoint(code); | 
|                     } | 
|                 } | 
|                 return ''; | 
|             } | 
|             return ALPHA_INDEX[s] || s; | 
|         }); | 
|     }; | 
|     XmlEntities.decode = function (str) { | 
|         return new XmlEntities().decode(str); | 
|     }; | 
|     XmlEntities.prototype.encodeNonUTF = function (str) { | 
|         if (!str || !str.length) { | 
|             return ''; | 
|         } | 
|         var strLength = str.length; | 
|         var result = ''; | 
|         var i = 0; | 
|         while (i < strLength) { | 
|             var c = str.charCodeAt(i); | 
|             var alpha = CHAR_INDEX[c]; | 
|             if (alpha) { | 
|                 result += "&" + alpha + ";"; | 
|                 i++; | 
|                 continue; | 
|             } | 
|             if (c < 32 || c > 126) { | 
|                 if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) { | 
|                     result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';'; | 
|                     i++; | 
|                 } | 
|                 else { | 
|                     result += '&#' + c + ';'; | 
|                 } | 
|             } | 
|             else { | 
|                 result += str.charAt(i); | 
|             } | 
|             i++; | 
|         } | 
|         return result; | 
|     }; | 
|     XmlEntities.encodeNonUTF = function (str) { | 
|         return new XmlEntities().encodeNonUTF(str); | 
|     }; | 
|     XmlEntities.prototype.encodeNonASCII = function (str) { | 
|         if (!str || !str.length) { | 
|             return ''; | 
|         } | 
|         var strLength = str.length; | 
|         var result = ''; | 
|         var i = 0; | 
|         while (i < strLength) { | 
|             var c = str.charCodeAt(i); | 
|             if (c <= 255) { | 
|                 result += str[i++]; | 
|                 continue; | 
|             } | 
|             if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) { | 
|                 result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';'; | 
|                 i++; | 
|             } | 
|             else { | 
|                 result += '&#' + c + ';'; | 
|             } | 
|             i++; | 
|         } | 
|         return result; | 
|     }; | 
|     XmlEntities.encodeNonASCII = function (str) { | 
|         return new XmlEntities().encodeNonASCII(str); | 
|     }; | 
|     return XmlEntities; | 
| }()); | 
| exports.XmlEntities = XmlEntities; |