index.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.DecodingMode = exports.EntityLevel = void 0;
  4. var decode_js_1 = require("./decode.js");
  5. var encode_js_1 = require("./encode.js");
  6. var escape_js_1 = require("./escape.js");
  7. /** The level of entities to support. */
  8. var EntityLevel;
  9. (function (EntityLevel) {
  10. /** Support only XML entities. */
  11. EntityLevel[EntityLevel["XML"] = 0] = "XML";
  12. /** Support HTML entities, which are a superset of XML entities. */
  13. EntityLevel[EntityLevel["HTML"] = 1] = "HTML";
  14. })(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {}));
  15. /** Determines whether some entities are allowed to be written without a trailing `;`. */
  16. var DecodingMode;
  17. (function (DecodingMode) {
  18. /** Support legacy HTML entities. */
  19. DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
  20. /** Do not support legacy HTML entities. */
  21. DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
  22. })(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));
  23. var EncodingMode;
  24. (function (EncodingMode) {
  25. /**
  26. * The output is UTF-8 encoded. Only characters that need escaping within
  27. * XML will be escaped.
  28. */
  29. EncodingMode[EncodingMode["UTF8"] = 0] = "UTF8";
  30. /**
  31. * The output consists only of ASCII characters. Characters that need
  32. * escaping within HTML, and characters that aren't ASCII characters will
  33. * be escaped.
  34. */
  35. EncodingMode[EncodingMode["ASCII"] = 1] = "ASCII";
  36. /**
  37. * Encode all characters that have an equivalent entity, as well as all
  38. * characters that are not ASCII characters.
  39. */
  40. EncodingMode[EncodingMode["Extensive"] = 2] = "Extensive";
  41. /**
  42. * Encode all characters that have to be escaped in HTML attributes,
  43. * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
  44. */
  45. EncodingMode[EncodingMode["Attribute"] = 3] = "Attribute";
  46. /**
  47. * Encode all characters that have to be escaped in HTML text,
  48. * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
  49. */
  50. EncodingMode[EncodingMode["Text"] = 4] = "Text";
  51. })(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {}));
  52. /**
  53. * Decodes a string with entities.
  54. *
  55. * @param data String to decode.
  56. * @param options Decoding options.
  57. */
  58. function decode(data, options) {
  59. if (options === void 0) { options = EntityLevel.XML; }
  60. var opts = typeof options === "number" ? { level: options } : options;
  61. if (opts.level === EntityLevel.HTML) {
  62. if (opts.mode === DecodingMode.Strict) {
  63. return (0, decode_js_1.decodeHTMLStrict)(data);
  64. }
  65. return (0, decode_js_1.decodeHTML)(data);
  66. }
  67. return (0, decode_js_1.decodeXML)(data);
  68. }
  69. exports.decode = decode;
  70. /**
  71. * Decodes a string with entities. Does not allow missing trailing semicolons for entities.
  72. *
  73. * @param data String to decode.
  74. * @param options Decoding options.
  75. * @deprecated Use `decode` with the `mode` set to `Strict`.
  76. */
  77. function decodeStrict(data, options) {
  78. if (options === void 0) { options = EntityLevel.XML; }
  79. var opts = typeof options === "number" ? { level: options } : options;
  80. if (opts.level === EntityLevel.HTML) {
  81. if (opts.mode === DecodingMode.Legacy) {
  82. return (0, decode_js_1.decodeHTML)(data);
  83. }
  84. return (0, decode_js_1.decodeHTMLStrict)(data);
  85. }
  86. return (0, decode_js_1.decodeXML)(data);
  87. }
  88. exports.decodeStrict = decodeStrict;
  89. /**
  90. * Encodes a string with entities.
  91. *
  92. * @param data String to encode.
  93. * @param options Encoding options.
  94. */
  95. function encode(data, options) {
  96. if (options === void 0) { options = EntityLevel.XML; }
  97. var opts = typeof options === "number" ? { level: options } : options;
  98. // Mode `UTF8` just escapes XML entities
  99. if (opts.mode === EncodingMode.UTF8)
  100. return (0, escape_js_1.escapeUTF8)(data);
  101. if (opts.mode === EncodingMode.Attribute)
  102. return (0, escape_js_1.escapeAttribute)(data);
  103. if (opts.mode === EncodingMode.Text)
  104. return (0, escape_js_1.escapeText)(data);
  105. if (opts.level === EntityLevel.HTML) {
  106. if (opts.mode === EncodingMode.ASCII) {
  107. return (0, encode_js_1.encodeNonAsciiHTML)(data);
  108. }
  109. return (0, encode_js_1.encodeHTML)(data);
  110. }
  111. // ASCII and Extensive are equivalent
  112. return (0, escape_js_1.encodeXML)(data);
  113. }
  114. exports.encode = encode;
  115. var escape_js_2 = require("./escape.js");
  116. Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function () { return escape_js_2.encodeXML; } });
  117. Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return escape_js_2.escape; } });
  118. Object.defineProperty(exports, "escapeUTF8", { enumerable: true, get: function () { return escape_js_2.escapeUTF8; } });
  119. Object.defineProperty(exports, "escapeAttribute", { enumerable: true, get: function () { return escape_js_2.escapeAttribute; } });
  120. Object.defineProperty(exports, "escapeText", { enumerable: true, get: function () { return escape_js_2.escapeText; } });
  121. var encode_js_2 = require("./encode.js");
  122. Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } });
  123. Object.defineProperty(exports, "encodeNonAsciiHTML", { enumerable: true, get: function () { return encode_js_2.encodeNonAsciiHTML; } });
  124. // Legacy aliases (deprecated)
  125. Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } });
  126. Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } });
  127. var decode_js_2 = require("./decode.js");
  128. Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function () { return decode_js_2.decodeXML; } });
  129. Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } });
  130. Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } });
  131. // Legacy aliases (deprecated)
  132. Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } });
  133. Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } });
  134. Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } });
  135. Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } });
  136. Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function () { return decode_js_2.decodeXML; } });
  137. //# sourceMappingURL=index.js.map