| import { decodeXML, decodeHTML, DecodingMode } from "./decode.js"; |
| import { encodeHTML, encodeNonAsciiHTML } from "./encode.js"; |
| import { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from "./escape.js"; |
| /** The level of entities to support. */ |
| export var EntityLevel; |
| (function (EntityLevel) { |
| /** Support only XML entities. */ |
| EntityLevel[EntityLevel["XML"] = 0] = "XML"; |
| /** Support HTML entities, which are a superset of XML entities. */ |
| EntityLevel[EntityLevel["HTML"] = 1] = "HTML"; |
| })(EntityLevel || (EntityLevel = {})); |
| export var EncodingMode; |
| (function (EncodingMode) { |
| /** |
| * The output is UTF-8 encoded. Only characters that need escaping within |
| * XML will be escaped. |
| */ |
| EncodingMode[EncodingMode["UTF8"] = 0] = "UTF8"; |
| /** |
| * The output consists only of ASCII characters. Characters that need |
| * escaping within HTML, and characters that aren't ASCII characters will |
| * be escaped. |
| */ |
| EncodingMode[EncodingMode["ASCII"] = 1] = "ASCII"; |
| /** |
| * Encode all characters that have an equivalent entity, as well as all |
| * characters that are not ASCII characters. |
| */ |
| EncodingMode[EncodingMode["Extensive"] = 2] = "Extensive"; |
| /** |
| * Encode all characters that have to be escaped in HTML attributes, |
| * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. |
| */ |
| EncodingMode[EncodingMode["Attribute"] = 3] = "Attribute"; |
| /** |
| * Encode all characters that have to be escaped in HTML text, |
| * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. |
| */ |
| EncodingMode[EncodingMode["Text"] = 4] = "Text"; |
| })(EncodingMode || (EncodingMode = {})); |
| /** |
| * Decodes a string with entities. |
| * |
| * @param data String to decode. |
| * @param options Decoding options. |
| */ |
| export function decode(data, options = EntityLevel.XML) { |
| const level = typeof options === "number" ? options : options.level; |
| if (level === EntityLevel.HTML) { |
| const mode = typeof options === "object" ? options.mode : undefined; |
| return decodeHTML(data, mode); |
| } |
| return decodeXML(data); |
| } |
| /** |
| * Decodes a string with entities. Does not allow missing trailing semicolons for entities. |
| * |
| * @param data String to decode. |
| * @param options Decoding options. |
| * @deprecated Use `decode` with the `mode` set to `Strict`. |
| */ |
| export function decodeStrict(data, options = EntityLevel.XML) { |
| var _a; |
| const opts = typeof options === "number" ? { level: options } : options; |
| (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict); |
| return decode(data, opts); |
| } |
| /** |
| * Encodes a string with entities. |
| * |
| * @param data String to encode. |
| * @param options Encoding options. |
| */ |
| export function encode(data, options = EntityLevel.XML) { |
| const opts = typeof options === "number" ? { level: options } : options; |
| // Mode `UTF8` just escapes XML entities |
| if (opts.mode === EncodingMode.UTF8) |
| return escapeUTF8(data); |
| if (opts.mode === EncodingMode.Attribute) |
| return escapeAttribute(data); |
| if (opts.mode === EncodingMode.Text) |
| return escapeText(data); |
| if (opts.level === EntityLevel.HTML) { |
| if (opts.mode === EncodingMode.ASCII) { |
| return encodeNonAsciiHTML(data); |
| } |
| return encodeHTML(data); |
| } |
| // ASCII and Extensive are equivalent |
| return encodeXML(data); |
| } |
| export { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from "./escape.js"; |
| export { encodeHTML, encodeNonAsciiHTML, |
| // Legacy aliases (deprecated) |
| encodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from "./encode.js"; |
| export { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, |
| // Legacy aliases (deprecated) |
| decodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from "./decode.js"; |
| //# sourceMappingURL=index.js.map |