From 0298484f218735a91445c593f6ccab9b7b503ef2 Mon Sep 17 00:00:00 2001 From: Gregory Jacobs Date: Sun, 6 Oct 2019 11:47:26 -0400 Subject: [PATCH] Build v3.11.1 --- dist/Autolinker.js | 4 ++-- dist/Autolinker.js.map | 2 +- dist/Autolinker.min.js | 18 ++---------------- dist/Autolinker.min.js.map | 2 +- docs/api/index.html | 8 ++++---- docs/api/output/Autolinker.js | 2 +- docs/api/output/global.js | 2 +- docs/api/source/Autolinker.html | 2 +- docs/api/source/regex-lib.html | 4 ++-- docs/dist/Autolinker.js | 4 ++-- docs/dist/Autolinker.min.js | 18 ++---------------- package.json | 2 +- 12 files changed, 20 insertions(+), 48 deletions(-) diff --git a/dist/Autolinker.js b/dist/Autolinker.js index 9e8acd52..6be9b14e 100644 --- a/dist/Autolinker.js +++ b/dist/Autolinker.js @@ -1,6 +1,6 @@ /*! * Autolinker.js - * 3.11.0 + * 3.11.1 * * Copyright(c) 2019 Gregory Jacobs * MIT License @@ -4168,7 +4168,7 @@ * * Ex: 0.25.1 */ - Autolinker.version = '3.11.0'; + Autolinker.version = '3.11.1'; /** * For backwards compatibility with Autolinker 1.x, the AnchorTagBuilder * class is provided as a static on the Autolinker class. diff --git a/dist/Autolinker.js.map b/dist/Autolinker.js.map index 4ea0fdac..7a190574 100644 --- a/dist/Autolinker.js.map +++ b/dist/Autolinker.js.map @@ -1 +1 @@ -{"version":3,"sources":["es2015/utils.js","es2015/html-tag.js","es2015/truncate/truncate-smart.js","es2015/truncate/truncate-middle.js","es2015/truncate/truncate-end.js","es2015/anchor-tag-builder.js","es2015/match/match.js","../node_modules/tslib/tslib.es6.js","es2015/match/email-match.js","es2015/match/hashtag-match.js","es2015/match/mention-match.js","es2015/match/phone-match.js","es2015/match/url-match.js","es2015/matcher/matcher.js","es2015/regex-lib.js","es2015/matcher/tld-regex.js","es2015/matcher/email-matcher.js","es2015/matcher/url-match-validator.js","es2015/matcher/url-matcher.js","es2015/matcher/hashtag-matcher.js","es2015/matcher/phone-matcher.js","es2015/matcher/mention-matcher.js","es2015/htmlParser/parse-html.js","es2015/autolinker.js"],"names":["tslib_1.__extends","tslib_1.__assign"],"mappings":"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IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,UAAU,kBAAkB,YAAY;IAC5C;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,UAAU,CAAC,GAAG,EAAE;IAC7B,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE;IACzC;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAC1C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACvB;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAC1B;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAC1B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IAC7B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IAC7B;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC9B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACvD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACvC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAC1C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACvD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC9B;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IACjC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC7B;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC/B;IACA;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAA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","file":"Autolinker.js","sourcesContent":["/**\n * Assigns (shallow copies) the properties of `src` onto `dest`, if the\n * corresponding property on `dest` === `undefined`.\n *\n * @param {Object} dest The destination object.\n * @param {Object} src The source object.\n * @return {Object} The destination object (`dest`)\n */\nexport function defaults(dest, src) {\n for (var prop in src) {\n if (src.hasOwnProperty(prop) && dest[prop] === undefined) {\n dest[prop] = src[prop];\n }\n }\n return dest;\n}\n/**\n * Truncates the `str` at `len - ellipsisChars.length`, and adds the `ellipsisChars` to the\n * end of the string (by default, two periods: '..'). If the `str` length does not exceed\n * `len`, the string will be returned unchanged.\n *\n * @param {String} str The string to truncate and add an ellipsis to.\n * @param {Number} truncateLen The length to truncate the string at.\n * @param {String} [ellipsisChars=...] The ellipsis character(s) to add to the end of `str`\n * when truncated. Defaults to '...'\n */\nexport function ellipsis(str, truncateLen, ellipsisChars) {\n var ellipsisLength;\n if (str.length > truncateLen) {\n if (ellipsisChars == null) {\n ellipsisChars = '…';\n ellipsisLength = 3;\n }\n else {\n ellipsisLength = ellipsisChars.length;\n }\n str = str.substring(0, truncateLen - ellipsisLength) + ellipsisChars;\n }\n return str;\n}\n/**\n * Supports `Array.prototype.indexOf()` functionality for old IE (IE8 and below).\n *\n * @param {Array} arr The array to find an element of.\n * @param {*} element The element to find in the array, and return the index of.\n * @return {Number} The index of the `element`, or -1 if it was not found.\n */\nexport function indexOf(arr, element) {\n if (Array.prototype.indexOf) {\n return arr.indexOf(element);\n }\n else {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (arr[i] === element)\n return i;\n }\n return -1;\n }\n}\n/**\n * Removes array elements based on a filtering function. Mutates the input\n * array.\n *\n * Using this instead of the ES5 Array.prototype.filter() function, to allow\n * Autolinker compatibility with IE8, and also to prevent creating many new\n * arrays in memory for filtering.\n *\n * @param {Array} arr The array to remove elements from. This array is\n * mutated.\n * @param {Function} fn A function which should return `true` to\n * remove an element.\n * @return {Array} The mutated input `arr`.\n */\nexport function remove(arr, fn) {\n for (var i = arr.length - 1; i >= 0; i--) {\n if (fn(arr[i]) === true) {\n arr.splice(i, 1);\n }\n }\n}\n/**\n * Performs the functionality of what modern browsers do when `String.prototype.split()` is called\n * with a regular expression that contains capturing parenthesis.\n *\n * For example:\n *\n * // Modern browsers:\n * \"a,b,c\".split( /(,)/ ); // --> [ 'a', ',', 'b', ',', 'c' ]\n *\n * // Old IE (including IE8):\n * \"a,b,c\".split( /(,)/ ); // --> [ 'a', 'b', 'c' ]\n *\n * This method emulates the functionality of modern browsers for the old IE case.\n *\n * @param {String} str The string to split.\n * @param {RegExp} splitRegex The regular expression to split the input `str` on. The splitting\n * character(s) will be spliced into the array, as in the \"modern browsers\" example in the\n * description of this method.\n * Note #1: the supplied regular expression **must** have the 'g' flag specified.\n * Note #2: for simplicity's sake, the regular expression does not need\n * to contain capturing parenthesis - it will be assumed that any match has them.\n * @return {String[]} The split array of strings, with the splitting character(s) included.\n */\nexport function splitAndCapture(str, splitRegex) {\n if (!splitRegex.global)\n throw new Error(\"`splitRegex` must have the 'g' flag set\");\n var result = [], lastIdx = 0, match;\n while (match = splitRegex.exec(str)) {\n result.push(str.substring(lastIdx, match.index));\n result.push(match[0]); // push the splitting char(s)\n lastIdx = match.index + match[0].length;\n }\n result.push(str.substring(lastIdx));\n return result;\n}\n/**\n * Function that should never be called but is used to check that every\n * enum value is handled using TypeScript's 'never' type.\n */\nexport function throwUnhandledCaseError(theValue) {\n throw new Error(\"Unhandled case for value: '\" + theValue + \"'\");\n}\n\n//# sourceMappingURL=utils.js.map\n","import { indexOf } from \"./utils\";\n/**\n * @class Autolinker.HtmlTag\n * @extends Object\n *\n * Represents an HTML tag, which can be used to easily build/modify HTML tags programmatically.\n *\n * Autolinker uses this abstraction to create HTML tags, and then write them out as strings. You may also use\n * this class in your code, especially within a {@link Autolinker#replaceFn replaceFn}.\n *\n * ## Examples\n *\n * Example instantiation:\n *\n * var tag = new Autolinker.HtmlTag( {\n * tagName : 'a',\n * attrs : { 'href': 'http://google.com', 'class': 'external-link' },\n * innerHtml : 'Google'\n * } );\n *\n * tag.toAnchorString(); // Google\n *\n * // Individual accessor methods\n * tag.getTagName(); // 'a'\n * tag.getAttr( 'href' ); // 'http://google.com'\n * tag.hasClass( 'external-link' ); // true\n *\n *\n * Using mutator methods (which may be used in combination with instantiation config properties):\n *\n * var tag = new Autolinker.HtmlTag();\n * tag.setTagName( 'a' );\n * tag.setAttr( 'href', 'http://google.com' );\n * tag.addClass( 'external-link' );\n * tag.setInnerHtml( 'Google' );\n *\n * tag.getTagName(); // 'a'\n * tag.getAttr( 'href' ); // 'http://google.com'\n * tag.hasClass( 'external-link' ); // true\n *\n * tag.toAnchorString(); // Google\n *\n *\n * ## Example use within a {@link Autolinker#replaceFn replaceFn}\n *\n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( match ) {\n * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance, configured with the Match's href and anchor text\n * tag.setAttr( 'rel', 'nofollow' );\n *\n * return tag;\n * }\n * } );\n *\n * // generated html:\n * // Test google.com\n *\n *\n * ## Example use with a new tag for the replacement\n *\n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( match ) {\n * var tag = new Autolinker.HtmlTag( {\n * tagName : 'button',\n * attrs : { 'title': 'Load URL: ' + match.getAnchorHref() },\n * innerHtml : 'Load URL: ' + match.getAnchorText()\n * } );\n *\n * return tag;\n * }\n * } );\n *\n * // generated html:\n * // Test \n */\nvar HtmlTag = /** @class */ (function () {\n /**\n * @method constructor\n * @param {Object} [cfg] The configuration properties for this class, in an Object (map)\n */\n function HtmlTag(cfg) {\n if (cfg === void 0) { cfg = {}; }\n /**\n * @cfg {String} tagName\n *\n * The tag name. Ex: 'a', 'button', etc.\n *\n * Not required at instantiation time, but should be set using {@link #setTagName} before {@link #toAnchorString}\n * is executed.\n */\n this.tagName = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object.} attrs\n *\n * An key/value Object (map) of attributes to create the tag with. The keys are the attribute names, and the\n * values are the attribute values.\n */\n this.attrs = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} innerHTML\n *\n * The inner HTML for the tag.\n */\n this.innerHTML = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @protected\n * @property {RegExp} whitespaceRegex\n *\n * Regular expression used to match whitespace in a string of CSS classes.\n */\n this.whitespaceRegex = /\\s+/; // default value just to get the above doc comment in the ES5 output and documentation generator\n this.tagName = cfg.tagName || '';\n this.attrs = cfg.attrs || {};\n this.innerHTML = cfg.innerHtml || cfg.innerHTML || ''; // accept either the camelCased form or the fully capitalized acronym as in the DOM\n }\n /**\n * Sets the tag name that will be used to generate the tag with.\n *\n * @param {String} tagName\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setTagName = function (tagName) {\n this.tagName = tagName;\n return this;\n };\n /**\n * Retrieves the tag name.\n *\n * @return {String}\n */\n HtmlTag.prototype.getTagName = function () {\n return this.tagName || '';\n };\n /**\n * Sets an attribute on the HtmlTag.\n *\n * @param {String} attrName The attribute name to set.\n * @param {String} attrValue The attribute value to set.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setAttr = function (attrName, attrValue) {\n var tagAttrs = this.getAttrs();\n tagAttrs[attrName] = attrValue;\n return this;\n };\n /**\n * Retrieves an attribute from the HtmlTag. If the attribute does not exist, returns `undefined`.\n *\n * @param {String} attrName The attribute name to retrieve.\n * @return {String} The attribute's value, or `undefined` if it does not exist on the HtmlTag.\n */\n HtmlTag.prototype.getAttr = function (attrName) {\n return this.getAttrs()[attrName];\n };\n /**\n * Sets one or more attributes on the HtmlTag.\n *\n * @param {Object.} attrs A key/value Object (map) of the attributes to set.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setAttrs = function (attrs) {\n Object.assign(this.getAttrs(), attrs);\n return this;\n };\n /**\n * Retrieves the attributes Object (map) for the HtmlTag.\n *\n * @return {Object.} A key/value object of the attributes for the HtmlTag.\n */\n HtmlTag.prototype.getAttrs = function () {\n return this.attrs || (this.attrs = {});\n };\n /**\n * Sets the provided `cssClass`, overwriting any current CSS classes on the HtmlTag.\n *\n * @param {String} cssClass One or more space-separated CSS classes to set (overwrite).\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setClass = function (cssClass) {\n return this.setAttr('class', cssClass);\n };\n /**\n * Convenience method to add one or more CSS classes to the HtmlTag. Will not add duplicate CSS classes.\n *\n * @param {String} cssClass One or more space-separated CSS classes to add.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.addClass = function (cssClass) {\n var classAttr = this.getClass(), whitespaceRegex = this.whitespaceRegex, classes = (!classAttr) ? [] : classAttr.split(whitespaceRegex), newClasses = cssClass.split(whitespaceRegex), newClass;\n while (newClass = newClasses.shift()) {\n if (indexOf(classes, newClass) === -1) {\n classes.push(newClass);\n }\n }\n this.getAttrs()['class'] = classes.join(\" \");\n return this;\n };\n /**\n * Convenience method to remove one or more CSS classes from the HtmlTag.\n *\n * @param {String} cssClass One or more space-separated CSS classes to remove.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.removeClass = function (cssClass) {\n var classAttr = this.getClass(), whitespaceRegex = this.whitespaceRegex, classes = (!classAttr) ? [] : classAttr.split(whitespaceRegex), removeClasses = cssClass.split(whitespaceRegex), removeClass;\n while (classes.length && (removeClass = removeClasses.shift())) {\n var idx = indexOf(classes, removeClass);\n if (idx !== -1) {\n classes.splice(idx, 1);\n }\n }\n this.getAttrs()['class'] = classes.join(\" \");\n return this;\n };\n /**\n * Convenience method to retrieve the CSS class(es) for the HtmlTag, which will each be separated by spaces when\n * there are multiple.\n *\n * @return {String}\n */\n HtmlTag.prototype.getClass = function () {\n return this.getAttrs()['class'] || \"\";\n };\n /**\n * Convenience method to check if the tag has a CSS class or not.\n *\n * @param {String} cssClass The CSS class to check for.\n * @return {Boolean} `true` if the HtmlTag has the CSS class, `false` otherwise.\n */\n HtmlTag.prototype.hasClass = function (cssClass) {\n return (' ' + this.getClass() + ' ').indexOf(' ' + cssClass + ' ') !== -1;\n };\n /**\n * Sets the inner HTML for the tag.\n *\n * @param {String} html The inner HTML to set.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setInnerHTML = function (html) {\n this.innerHTML = html;\n return this;\n };\n /**\n * Backwards compatibility method name.\n *\n * @param {String} html The inner HTML to set.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setInnerHtml = function (html) {\n return this.setInnerHTML(html);\n };\n /**\n * Retrieves the inner HTML for the tag.\n *\n * @return {String}\n */\n HtmlTag.prototype.getInnerHTML = function () {\n return this.innerHTML || \"\";\n };\n /**\n * Backward compatibility method name.\n *\n * @return {String}\n */\n HtmlTag.prototype.getInnerHtml = function () {\n return this.getInnerHTML();\n };\n /**\n * Override of superclass method used to generate the HTML string for the tag.\n *\n * @return {String}\n */\n HtmlTag.prototype.toAnchorString = function () {\n var tagName = this.getTagName(), attrsStr = this.buildAttrsStr();\n attrsStr = (attrsStr) ? ' ' + attrsStr : ''; // prepend a space if there are actually attributes\n return ['<', tagName, attrsStr, '>', this.getInnerHtml(), ''].join(\"\");\n };\n /**\n * Support method for {@link #toAnchorString}, returns the string space-separated key=\"value\" pairs, used to populate\n * the stringified HtmlTag.\n *\n * @protected\n * @return {String} Example return: `attr1=\"value1\" attr2=\"value2\"`\n */\n HtmlTag.prototype.buildAttrsStr = function () {\n if (!this.attrs)\n return \"\"; // no `attrs` Object (map) has been set, return empty string\n var attrs = this.getAttrs(), attrsArr = [];\n for (var prop in attrs) {\n if (attrs.hasOwnProperty(prop)) {\n attrsArr.push(prop + '=\"' + attrs[prop] + '\"');\n }\n }\n return attrsArr.join(\" \");\n };\n return HtmlTag;\n}());\nexport { HtmlTag };\n\n//# sourceMappingURL=html-tag.js.map\n","/**\n * Date: 2015-10-05\n * Author: Kasper Søfren (https://github.com/kafoso)\n *\n * A truncation feature, where the ellipsis will be placed at a section within\n * the URL making it still somewhat human readable.\n *\n * @param {String} url\t\t\t\t\t\t A URL.\n * @param {Number} truncateLen\t\t The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars\t The characters to place within the url, e.g. \"...\".\n * @return {String} The truncated URL.\n */\nexport function truncateSmart(url, truncateLen, ellipsisChars) {\n var ellipsisLengthBeforeParsing;\n var ellipsisLength;\n if (ellipsisChars == null) {\n ellipsisChars = '…';\n ellipsisLength = 3;\n ellipsisLengthBeforeParsing = 8;\n }\n else {\n ellipsisLength = ellipsisChars.length;\n ellipsisLengthBeforeParsing = ellipsisChars.length;\n }\n var parse_url = function (url) {\n var urlObj = {};\n var urlSub = url;\n var match = urlSub.match(/^([a-z]+):\\/\\//i);\n if (match) {\n urlObj.scheme = match[1];\n urlSub = urlSub.substr(match[0].length);\n }\n match = urlSub.match(/^(.*?)(?=(\\?|#|\\/|$))/i);\n if (match) {\n urlObj.host = match[1];\n urlSub = urlSub.substr(match[0].length);\n }\n match = urlSub.match(/^\\/(.*?)(?=(\\?|#|$))/i);\n if (match) {\n urlObj.path = match[1];\n urlSub = urlSub.substr(match[0].length);\n }\n match = urlSub.match(/^\\?(.*?)(?=(#|$))/i);\n if (match) {\n urlObj.query = match[1];\n urlSub = urlSub.substr(match[0].length);\n }\n match = urlSub.match(/^#(.*?)$/i);\n if (match) {\n urlObj.fragment = match[1];\n //urlSub = urlSub.substr(match[0].length); -- not used. Uncomment if adding another block.\n }\n return urlObj;\n };\n var buildUrl = function (urlObj) {\n var url = \"\";\n if (urlObj.scheme && urlObj.host) {\n url += urlObj.scheme + \"://\";\n }\n if (urlObj.host) {\n url += urlObj.host;\n }\n if (urlObj.path) {\n url += \"/\" + urlObj.path;\n }\n if (urlObj.query) {\n url += \"?\" + urlObj.query;\n }\n if (urlObj.fragment) {\n url += \"#\" + urlObj.fragment;\n }\n return url;\n };\n var buildSegment = function (segment, remainingAvailableLength) {\n var remainingAvailableLengthHalf = remainingAvailableLength / 2, startOffset = Math.ceil(remainingAvailableLengthHalf), endOffset = (-1) * Math.floor(remainingAvailableLengthHalf), end = \"\";\n if (endOffset < 0) {\n end = segment.substr(endOffset);\n }\n return segment.substr(0, startOffset) + ellipsisChars + end;\n };\n if (url.length <= truncateLen) {\n return url;\n }\n var availableLength = truncateLen - ellipsisLength;\n var urlObj = parse_url(url);\n // Clean up the URL\n if (urlObj.query) {\n var matchQuery = urlObj.query.match(/^(.*?)(?=(\\?|\\#))(.*?)$/i);\n if (matchQuery) {\n // Malformed URL; two or more \"?\". Removed any content behind the 2nd.\n urlObj.query = urlObj.query.substr(0, matchQuery[1].length);\n url = buildUrl(urlObj);\n }\n }\n if (url.length <= truncateLen) {\n return url;\n }\n if (urlObj.host) {\n urlObj.host = urlObj.host.replace(/^www\\./, \"\");\n url = buildUrl(urlObj);\n }\n if (url.length <= truncateLen) {\n return url;\n }\n // Process and build the URL\n var str = \"\";\n if (urlObj.host) {\n str += urlObj.host;\n }\n if (str.length >= availableLength) {\n if (urlObj.host.length == truncateLen) {\n return (urlObj.host.substr(0, (truncateLen - ellipsisLength)) + ellipsisChars).substr(0, availableLength + ellipsisLengthBeforeParsing);\n }\n return buildSegment(str, availableLength).substr(0, availableLength + ellipsisLengthBeforeParsing);\n }\n var pathAndQuery = \"\";\n if (urlObj.path) {\n pathAndQuery += \"/\" + urlObj.path;\n }\n if (urlObj.query) {\n pathAndQuery += \"?\" + urlObj.query;\n }\n if (pathAndQuery) {\n if ((str + pathAndQuery).length >= availableLength) {\n if ((str + pathAndQuery).length == truncateLen) {\n return (str + pathAndQuery).substr(0, truncateLen);\n }\n var remainingAvailableLength = availableLength - str.length;\n return (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n }\n else {\n str += pathAndQuery;\n }\n }\n if (urlObj.fragment) {\n var fragment = \"#\" + urlObj.fragment;\n if ((str + fragment).length >= availableLength) {\n if ((str + fragment).length == truncateLen) {\n return (str + fragment).substr(0, truncateLen);\n }\n var remainingAvailableLength2 = availableLength - str.length;\n return (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n }\n else {\n str += fragment;\n }\n }\n if (urlObj.scheme && urlObj.host) {\n var scheme = urlObj.scheme + \"://\";\n if ((str + scheme).length < availableLength) {\n return (scheme + str).substr(0, truncateLen);\n }\n }\n if (str.length <= truncateLen) {\n return str;\n }\n var end = \"\";\n if (availableLength > 0) {\n end = str.substr((-1) * Math.floor(availableLength / 2));\n }\n return (str.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\n\n//# sourceMappingURL=truncate-smart.js.map\n","/**\n * Date: 2015-10-05\n * Author: Kasper Søfren (https://github.com/kafoso)\n *\n * A truncation feature, where the ellipsis will be placed in the dead-center of the URL.\n *\n * @param {String} url A URL.\n * @param {Number} truncateLen The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars The characters to place within the url, e.g. \"..\".\n * @return {String} The truncated URL.\n */\nexport function truncateMiddle(url, truncateLen, ellipsisChars) {\n if (url.length <= truncateLen) {\n return url;\n }\n var ellipsisLengthBeforeParsing;\n var ellipsisLength;\n if (ellipsisChars == null) {\n ellipsisChars = '…';\n ellipsisLengthBeforeParsing = 8;\n ellipsisLength = 3;\n }\n else {\n ellipsisLengthBeforeParsing = ellipsisChars.length;\n ellipsisLength = ellipsisChars.length;\n }\n var availableLength = truncateLen - ellipsisLength;\n var end = \"\";\n if (availableLength > 0) {\n end = url.substr((-1) * Math.floor(availableLength / 2));\n }\n return (url.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\n\n//# sourceMappingURL=truncate-middle.js.map\n","import { ellipsis } from \"../utils\";\n/**\n * A truncation feature where the ellipsis will be placed at the end of the URL.\n *\n * @param {String} anchorText\n * @param {Number} truncateLen The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars The characters to place within the url, e.g. \"..\".\n * @return {String} The truncated URL.\n */\nexport function truncateEnd(anchorText, truncateLen, ellipsisChars) {\n return ellipsis(anchorText, truncateLen, ellipsisChars);\n}\n\n//# sourceMappingURL=truncate-end.js.map\n","import { HtmlTag } from \"./html-tag\";\nimport { truncateSmart } from \"./truncate/truncate-smart\";\nimport { truncateMiddle } from \"./truncate/truncate-middle\";\nimport { truncateEnd } from \"./truncate/truncate-end\";\n/**\n * @protected\n * @class Autolinker.AnchorTagBuilder\n * @extends Object\n *\n * Builds anchor (<a>) tags for the Autolinker utility when a match is\n * found.\n *\n * Normally this class is instantiated, configured, and used internally by an\n * {@link Autolinker} instance, but may actually be used indirectly in a\n * {@link Autolinker#replaceFn replaceFn} to create {@link Autolinker.HtmlTag HtmlTag}\n * instances which may be modified before returning from the\n * {@link Autolinker#replaceFn replaceFn}. For example:\n *\n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( match ) {\n * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance\n * tag.setAttr( 'rel', 'nofollow' );\n *\n * return tag;\n * }\n * } );\n *\n * // generated html:\n * // Test google.com\n */\nvar AnchorTagBuilder = /** @class */ (function () {\n /**\n * @method constructor\n * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map).\n */\n function AnchorTagBuilder(cfg) {\n if (cfg === void 0) { cfg = {}; }\n /**\n * @cfg {Boolean} newWindow\n * @inheritdoc Autolinker#newWindow\n */\n this.newWindow = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object} truncate\n * @inheritdoc Autolinker#truncate\n */\n this.truncate = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} className\n * @inheritdoc Autolinker#className\n */\n this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n this.newWindow = cfg.newWindow || false;\n this.truncate = cfg.truncate || {};\n this.className = cfg.className || '';\n }\n /**\n * Generates the actual anchor (<a>) tag to use in place of the\n * matched text, via its `match` object.\n *\n * @param {Autolinker.match.Match} match The Match instance to generate an\n * anchor tag from.\n * @return {Autolinker.HtmlTag} The HtmlTag instance for the anchor tag.\n */\n AnchorTagBuilder.prototype.build = function (match) {\n return new HtmlTag({\n tagName: 'a',\n attrs: this.createAttrs(match),\n innerHtml: this.processAnchorText(match.getAnchorText())\n });\n };\n /**\n * Creates the Object (map) of the HTML attributes for the anchor (<a>)\n * tag being generated.\n *\n * @protected\n * @param {Autolinker.match.Match} match The Match instance to generate an\n * anchor tag from.\n * @return {Object} A key/value Object (map) of the anchor tag's attributes.\n */\n AnchorTagBuilder.prototype.createAttrs = function (match) {\n var attrs = {\n 'href': match.getAnchorHref() // we'll always have the `href` attribute\n };\n var cssClass = this.createCssClass(match);\n if (cssClass) {\n attrs['class'] = cssClass;\n }\n if (this.newWindow) {\n attrs['target'] = \"_blank\";\n attrs['rel'] = \"noopener noreferrer\"; // Issue #149. See https://mathiasbynens.github.io/rel-noopener/\n }\n if (this.truncate) {\n if (this.truncate.length && this.truncate.length < match.getAnchorText().length) {\n attrs['title'] = match.getAnchorHref();\n }\n }\n return attrs;\n };\n /**\n * Creates the CSS class that will be used for a given anchor tag, based on\n * the `matchType` and the {@link #className} config.\n *\n * Example returns:\n *\n * - \"\" // no {@link #className}\n * - \"myLink myLink-url\" // url match\n * - \"myLink myLink-email\" // email match\n * - \"myLink myLink-phone\" // phone match\n * - \"myLink myLink-hashtag\" // hashtag match\n * - \"myLink myLink-mention myLink-twitter\" // mention match with Twitter service\n *\n * @protected\n * @param {Autolinker.match.Match} match The Match instance to generate an\n * anchor tag from.\n * @return {String} The CSS class string for the link. Example return:\n * \"myLink myLink-url\". If no {@link #className} was configured, returns\n * an empty string.\n */\n AnchorTagBuilder.prototype.createCssClass = function (match) {\n var className = this.className;\n if (!className) {\n return \"\";\n }\n else {\n var returnClasses = [className], cssClassSuffixes = match.getCssClassSuffixes();\n for (var i = 0, len = cssClassSuffixes.length; i < len; i++) {\n returnClasses.push(className + '-' + cssClassSuffixes[i]);\n }\n return returnClasses.join(' ');\n }\n };\n /**\n * Processes the `anchorText` by truncating the text according to the\n * {@link #truncate} config.\n *\n * @private\n * @param {String} anchorText The anchor tag's text (i.e. what will be\n * displayed).\n * @return {String} The processed `anchorText`.\n */\n AnchorTagBuilder.prototype.processAnchorText = function (anchorText) {\n anchorText = this.doTruncate(anchorText);\n return anchorText;\n };\n /**\n * Performs the truncation of the `anchorText` based on the {@link #truncate}\n * option. If the `anchorText` is longer than the length specified by the\n * {@link #truncate} option, the truncation is performed based on the\n * `location` property. See {@link #truncate} for details.\n *\n * @private\n * @param {String} anchorText The anchor tag's text (i.e. what will be\n * displayed).\n * @return {String} The truncated anchor text.\n */\n AnchorTagBuilder.prototype.doTruncate = function (anchorText) {\n var truncate = this.truncate;\n if (!truncate || !truncate.length)\n return anchorText;\n var truncateLength = truncate.length, truncateLocation = truncate.location;\n if (truncateLocation === 'smart') {\n return truncateSmart(anchorText, truncateLength);\n }\n else if (truncateLocation === 'middle') {\n return truncateMiddle(anchorText, truncateLength);\n }\n else {\n return truncateEnd(anchorText, truncateLength);\n }\n };\n return AnchorTagBuilder;\n}());\nexport { AnchorTagBuilder };\n\n//# sourceMappingURL=anchor-tag-builder.js.map\n","/**\n * @abstract\n * @class Autolinker.match.Match\n *\n * Represents a match found in an input string which should be Autolinked. A Match object is what is provided in a\n * {@link Autolinker#replaceFn replaceFn}, and may be used to query for details about the match.\n *\n * For example:\n *\n * var input = \"...\"; // string with URLs, Email Addresses, and Mentions (Twitter, Instagram, Soundcloud)\n *\n * var linkedText = Autolinker.link( input, {\n * replaceFn : function( match ) {\n * console.log( \"href = \", match.getAnchorHref() );\n * console.log( \"text = \", match.getAnchorText() );\n *\n * switch( match.getType() ) {\n * case 'url' :\n * console.log( \"url: \", match.getUrl() );\n *\n * case 'email' :\n * console.log( \"email: \", match.getEmail() );\n *\n * case 'mention' :\n * console.log( \"mention: \", match.getMention() );\n * }\n * }\n * } );\n *\n * See the {@link Autolinker} class for more details on using the {@link Autolinker#replaceFn replaceFn}.\n */\nvar Match = /** @class */ (function () {\n /**\n * @member Autolinker.match.Match\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function Match(cfg) {\n /**\n * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required)\n *\n * Reference to the AnchorTagBuilder instance to use to generate an anchor\n * tag for the Match.\n */\n this.__jsduckDummyDocProp = null; // property used just to get the above doc comment into the ES5 output and documentation generator\n /**\n * @cfg {String} matchedText (required)\n *\n * The original text that was matched by the {@link Autolinker.matcher.Matcher}.\n */\n this.matchedText = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Number} offset (required)\n *\n * The offset of where the match was made in the input string.\n */\n this.offset = 0; // default value just to get the above doc comment in the ES5 output and documentation generator\n this.tagBuilder = cfg.tagBuilder;\n this.matchedText = cfg.matchedText;\n this.offset = cfg.offset;\n }\n /**\n * Returns the original text that was matched.\n *\n * @return {String}\n */\n Match.prototype.getMatchedText = function () {\n return this.matchedText;\n };\n /**\n * Sets the {@link #offset} of where the match was made in the input string.\n *\n * A {@link Autolinker.matcher.Matcher} will be fed only HTML text nodes,\n * and will therefore set an original offset that is relative to the HTML\n * text node itself. However, we want this offset to be relative to the full\n * HTML input string, and thus if using {@link Autolinker#parse} (rather\n * than calling a {@link Autolinker.matcher.Matcher} directly), then this\n * offset is corrected after the Matcher itself has done its job.\n *\n * @param {Number} offset\n */\n Match.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Returns the offset of where the match was made in the input string. This\n * is the 0-based index of the match.\n *\n * @return {Number}\n */\n Match.prototype.getOffset = function () {\n return this.offset;\n };\n /**\n * Returns the CSS class suffix(es) for this match.\n *\n * A CSS class suffix is appended to the {@link Autolinker#className} in\n * the {@link Autolinker.AnchorTagBuilder} when a match is translated into\n * an anchor tag.\n *\n * For example, if {@link Autolinker#className} was configured as 'myLink',\n * and this method returns `[ 'url' ]`, the final class name of the element\n * will become: 'myLink myLink-url'.\n *\n * The match may provide multiple CSS class suffixes to be appended to the\n * {@link Autolinker#className} in order to facilitate better styling\n * options for different match criteria. See {@link Autolinker.match.Mention}\n * for an example.\n *\n * By default, this method returns a single array with the match's\n * {@link #getType type} name, but may be overridden by subclasses.\n *\n * @return {String[]}\n */\n Match.prototype.getCssClassSuffixes = function () {\n return [this.getType()];\n };\n /**\n * Builds and returns an {@link Autolinker.HtmlTag} instance based on the\n * Match.\n *\n * This can be used to easily generate anchor tags from matches, and either\n * return their HTML string, or modify them before doing so.\n *\n * Example Usage:\n *\n * var tag = match.buildTag();\n * tag.addClass( 'cordova-link' );\n * tag.setAttr( 'target', '_system' );\n *\n * tag.toAnchorString(); // Google\n *\n * Example Usage in {@link Autolinker#replaceFn}:\n *\n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( match ) {\n * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance\n * tag.setAttr( 'rel', 'nofollow' );\n *\n * return tag;\n * }\n * } );\n *\n * // generated html:\n * // Test google.com\n */\n Match.prototype.buildTag = function () {\n return this.tagBuilder.build(this);\n };\n return Match;\n}());\nexport { Match };\n\n//# sourceMappingURL=match.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import * as tslib_1 from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Email\n * @extends Autolinker.match.Match\n *\n * Represents a Email match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar EmailMatch = /** @class */ (function (_super) {\n tslib_1.__extends(EmailMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function EmailMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @cfg {String} email (required)\n *\n * The email address that was matched.\n */\n _this.email = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.email = cfg.email;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of EmailMatch, returns 'email'.\n *\n * @return {String}\n */\n EmailMatch.prototype.getType = function () {\n return 'email';\n };\n /**\n * Returns the email address that was matched.\n *\n * @return {String}\n */\n EmailMatch.prototype.getEmail = function () {\n return this.email;\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n EmailMatch.prototype.getAnchorHref = function () {\n return 'mailto:' + this.email;\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n EmailMatch.prototype.getAnchorText = function () {\n return this.email;\n };\n return EmailMatch;\n}(Match));\nexport { EmailMatch };\n\n//# sourceMappingURL=email-match.js.map\n","import * as tslib_1 from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Hashtag\n * @extends Autolinker.match.Match\n *\n * Represents a Hashtag match found in an input string which should be\n * Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more\n * details.\n */\nvar HashtagMatch = /** @class */ (function (_super) {\n tslib_1.__extends(HashtagMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function HashtagMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @cfg {String} serviceName\n *\n * The service to point hashtag matches to. See {@link Autolinker#hashtag}\n * for available values.\n */\n _this.serviceName = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} hashtag (required)\n *\n * The HashtagMatch that was matched, without the '#'.\n */\n _this.hashtag = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.serviceName = cfg.serviceName;\n _this.hashtag = cfg.hashtag;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of HashtagMatch, returns 'hashtag'.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getType = function () {\n return 'hashtag';\n };\n /**\n * Returns the configured {@link #serviceName} to point the HashtagMatch to.\n * Ex: 'facebook', 'twitter'.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getServiceName = function () {\n return this.serviceName;\n };\n /**\n * Returns the matched hashtag, without the '#' character.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getHashtag = function () {\n return this.hashtag;\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getAnchorHref = function () {\n var serviceName = this.serviceName, hashtag = this.hashtag;\n switch (serviceName) {\n case 'twitter':\n return 'https://twitter.com/hashtag/' + hashtag;\n case 'facebook':\n return 'https://www.facebook.com/hashtag/' + hashtag;\n case 'instagram':\n return 'https://instagram.com/explore/tags/' + hashtag;\n default: // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case.\n throw new Error('Unknown service name to point hashtag to: ' + serviceName);\n }\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getAnchorText = function () {\n return '#' + this.hashtag;\n };\n return HashtagMatch;\n}(Match));\nexport { HashtagMatch };\n\n//# sourceMappingURL=hashtag-match.js.map\n","import * as tslib_1 from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Mention\n * @extends Autolinker.match.Match\n *\n * Represents a Mention match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar MentionMatch = /** @class */ (function (_super) {\n tslib_1.__extends(MentionMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function MentionMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @cfg {String} serviceName\n *\n * The service to point mention matches to. See {@link Autolinker#mention}\n * for available values.\n */\n _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} mention (required)\n *\n * The Mention that was matched, without the '@' character.\n */\n _this.mention = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.mention = cfg.mention;\n _this.serviceName = cfg.serviceName;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of MentionMatch, returns 'mention'.\n *\n * @return {String}\n */\n MentionMatch.prototype.getType = function () {\n return 'mention';\n };\n /**\n * Returns the mention, without the '@' character.\n *\n * @return {String}\n */\n MentionMatch.prototype.getMention = function () {\n return this.mention;\n };\n /**\n * Returns the configured {@link #serviceName} to point the mention to.\n * Ex: 'instagram', 'twitter', 'soundcloud'.\n *\n * @return {String}\n */\n MentionMatch.prototype.getServiceName = function () {\n return this.serviceName;\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n MentionMatch.prototype.getAnchorHref = function () {\n switch (this.serviceName) {\n case 'twitter':\n return 'https://twitter.com/' + this.mention;\n case 'instagram':\n return 'https://instagram.com/' + this.mention;\n case 'soundcloud':\n return 'https://soundcloud.com/' + this.mention;\n default: // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case.\n throw new Error('Unknown service name to point mention to: ' + this.serviceName);\n }\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n MentionMatch.prototype.getAnchorText = function () {\n return '@' + this.mention;\n };\n /**\n * Returns the CSS class suffixes that should be used on a tag built with\n * the match. See {@link Autolinker.match.Match#getCssClassSuffixes} for\n * details.\n *\n * @return {String[]}\n */\n MentionMatch.prototype.getCssClassSuffixes = function () {\n var cssClassSuffixes = _super.prototype.getCssClassSuffixes.call(this), serviceName = this.getServiceName();\n if (serviceName) {\n cssClassSuffixes.push(serviceName);\n }\n return cssClassSuffixes;\n };\n return MentionMatch;\n}(Match));\nexport { MentionMatch };\n\n//# sourceMappingURL=mention-match.js.map\n","import * as tslib_1 from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Phone\n * @extends Autolinker.match.Match\n *\n * Represents a Phone number match found in an input string which should be\n * Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more\n * details.\n */\nvar PhoneMatch = /** @class */ (function (_super) {\n tslib_1.__extends(PhoneMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function PhoneMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @protected\n * @property {String} number (required)\n *\n * The phone number that was matched, without any delimiter characters.\n *\n * Note: This is a string to allow for prefixed 0's.\n */\n _this.number = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @protected\n * @property {Boolean} plusSign (required)\n *\n * `true` if the matched phone number started with a '+' sign. We'll include\n * it in the `tel:` URL if so, as this is needed for international numbers.\n *\n * Ex: '+1 (123) 456 7879'\n */\n _this.plusSign = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.number = cfg.number;\n _this.plusSign = cfg.plusSign;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of PhoneMatch, returns 'phone'.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getType = function () {\n return 'phone';\n };\n /**\n * Returns the phone number that was matched as a string, without any\n * delimiter characters.\n *\n * Note: This is a string to allow for prefixed 0's.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getPhoneNumber = function () {\n return this.number;\n };\n /**\n * Alias of {@link #getPhoneNumber}, returns the phone number that was\n * matched as a string, without any delimiter characters.\n *\n * Note: This is a string to allow for prefixed 0's.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getNumber = function () {\n return this.getPhoneNumber();\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getAnchorHref = function () {\n return 'tel:' + (this.plusSign ? '+' : '') + this.number;\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getAnchorText = function () {\n return this.matchedText;\n };\n return PhoneMatch;\n}(Match));\nexport { PhoneMatch };\n\n//# sourceMappingURL=phone-match.js.map\n","import * as tslib_1 from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Url\n * @extends Autolinker.match.Match\n *\n * Represents a Url match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar UrlMatch = /** @class */ (function (_super) {\n tslib_1.__extends(UrlMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function UrlMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @cfg {String} url (required)\n *\n * The url that was matched.\n */\n _this.url = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {\"scheme\"/\"www\"/\"tld\"} urlMatchType (required)\n *\n * The type of URL match that this class represents. This helps to determine\n * if the match was made in the original text with a prefixed scheme (ex:\n * 'http://www.google.com'), a prefixed 'www' (ex: 'www.google.com'), or\n * was matched by a known top-level domain (ex: 'google.com').\n */\n _this.urlMatchType = 'scheme'; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} protocolUrlMatch (required)\n *\n * `true` if the URL is a match which already has a protocol (i.e.\n * 'http://'), `false` if the match was from a 'www' or known TLD match.\n */\n _this.protocolUrlMatch = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} protocolRelativeMatch (required)\n *\n * `true` if the URL is a protocol-relative match. A protocol-relative match\n * is a URL that starts with '//', and will be either http:// or https://\n * based on the protocol that the site is loaded under.\n */\n _this.protocolRelativeMatch = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object} stripPrefix (required)\n *\n * The Object form of {@link Autolinker#cfg-stripPrefix}.\n */\n _this.stripPrefix = { scheme: true, www: true }; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} stripTrailingSlash (required)\n * @inheritdoc Autolinker#cfg-stripTrailingSlash\n */\n _this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} decodePercentEncoding (required)\n * @inheritdoc Autolinker#cfg-decodePercentEncoding\n */\n _this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @private\n * @property {RegExp} schemePrefixRegex\n *\n * A regular expression used to remove the 'http://' or 'https://' from\n * URLs.\n */\n _this.schemePrefixRegex = /^(https?:\\/\\/)?/i;\n /**\n * @private\n * @property {RegExp} wwwPrefixRegex\n *\n * A regular expression used to remove the 'www.' from URLs.\n */\n _this.wwwPrefixRegex = /^(https?:\\/\\/)?(www\\.)?/i;\n /**\n * @private\n * @property {RegExp} protocolRelativeRegex\n *\n * The regular expression used to remove the protocol-relative '//' from the {@link #url} string, for purposes\n * of {@link #getAnchorText}. A protocol-relative URL is, for example, \"//yahoo.com\"\n */\n _this.protocolRelativeRegex = /^\\/\\//;\n /**\n * @private\n * @property {Boolean} protocolPrepended\n *\n * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the\n * {@link #url} did not have a protocol)\n */\n _this.protocolPrepended = false;\n _this.urlMatchType = cfg.urlMatchType;\n _this.url = cfg.url;\n _this.protocolUrlMatch = cfg.protocolUrlMatch;\n _this.protocolRelativeMatch = cfg.protocolRelativeMatch;\n _this.stripPrefix = cfg.stripPrefix;\n _this.stripTrailingSlash = cfg.stripTrailingSlash;\n _this.decodePercentEncoding = cfg.decodePercentEncoding;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of UrlMatch, returns 'url'.\n *\n * @return {String}\n */\n UrlMatch.prototype.getType = function () {\n return 'url';\n };\n /**\n * Returns a string name for the type of URL match that this class\n * represents.\n *\n * This helps to determine if the match was made in the original text with a\n * prefixed scheme (ex: 'http://www.google.com'), a prefixed 'www' (ex:\n * 'www.google.com'), or was matched by a known top-level domain (ex:\n * 'google.com').\n *\n * @return {\"scheme\"/\"www\"/\"tld\"}\n */\n UrlMatch.prototype.getUrlMatchType = function () {\n return this.urlMatchType;\n };\n /**\n * Returns the url that was matched, assuming the protocol to be 'http://' if the original\n * match was missing a protocol.\n *\n * @return {String}\n */\n UrlMatch.prototype.getUrl = function () {\n var url = this.url;\n // if the url string doesn't begin with a protocol, assume 'http://'\n if (!this.protocolRelativeMatch && !this.protocolUrlMatch && !this.protocolPrepended) {\n url = this.url = 'http://' + url;\n this.protocolPrepended = true;\n }\n return url;\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n UrlMatch.prototype.getAnchorHref = function () {\n var url = this.getUrl();\n return url.replace(/&/g, '&'); // any &'s in the URL should be converted back to '&' if they were displayed as & in the source html\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n UrlMatch.prototype.getAnchorText = function () {\n var anchorText = this.getMatchedText();\n if (this.protocolRelativeMatch) {\n // Strip off any protocol-relative '//' from the anchor text\n anchorText = this.stripProtocolRelativePrefix(anchorText);\n }\n if (this.stripPrefix.scheme) {\n anchorText = this.stripSchemePrefix(anchorText);\n }\n if (this.stripPrefix.www) {\n anchorText = this.stripWwwPrefix(anchorText);\n }\n if (this.stripTrailingSlash) {\n anchorText = this.removeTrailingSlash(anchorText); // remove trailing slash, if there is one\n }\n if (this.decodePercentEncoding) {\n anchorText = this.removePercentEncoding(anchorText);\n }\n return anchorText;\n };\n // ---------------------------------------\n // Utility Functionality\n /**\n * Strips the scheme prefix (such as \"http://\" or \"https://\") from the given\n * `url`.\n *\n * @private\n * @param {String} url The text of the anchor that is being generated, for\n * which to strip off the url scheme.\n * @return {String} The `url`, with the scheme stripped.\n */\n UrlMatch.prototype.stripSchemePrefix = function (url) {\n return url.replace(this.schemePrefixRegex, '');\n };\n /**\n * Strips the 'www' prefix from the given `url`.\n *\n * @private\n * @param {String} url The text of the anchor that is being generated, for\n * which to strip off the 'www' if it exists.\n * @return {String} The `url`, with the 'www' stripped.\n */\n UrlMatch.prototype.stripWwwPrefix = function (url) {\n return url.replace(this.wwwPrefixRegex, '$1'); // leave any scheme ($1), it one exists\n };\n /**\n * Strips any protocol-relative '//' from the anchor text.\n *\n * @private\n * @param {String} text The text of the anchor that is being generated, for which to strip off the\n * protocol-relative prefix (such as stripping off \"//\")\n * @return {String} The `anchorText`, with the protocol-relative prefix stripped.\n */\n UrlMatch.prototype.stripProtocolRelativePrefix = function (text) {\n return text.replace(this.protocolRelativeRegex, '');\n };\n /**\n * Removes any trailing slash from the given `anchorText`, in preparation for the text to be displayed.\n *\n * @private\n * @param {String} anchorText The text of the anchor that is being generated, for which to remove any trailing\n * slash ('/') that may exist.\n * @return {String} The `anchorText`, with the trailing slash removed.\n */\n UrlMatch.prototype.removeTrailingSlash = function (anchorText) {\n if (anchorText.charAt(anchorText.length - 1) === '/') {\n anchorText = anchorText.slice(0, -1);\n }\n return anchorText;\n };\n /**\n * Decodes percent-encoded characters from the given `anchorText`, in\n * preparation for the text to be displayed.\n *\n * @private\n * @param {String} anchorText The text of the anchor that is being\n * generated, for which to decode any percent-encoded characters.\n * @return {String} The `anchorText`, with the percent-encoded characters\n * decoded.\n */\n UrlMatch.prototype.removePercentEncoding = function (anchorText) {\n // First, convert a few of the known % encodings to the corresponding\n // HTML entities that could accidentally be interpretted as special\n // HTML characters\n var preProcessedEntityAnchorText = anchorText\n .replace(/%22/gi, '"') // \" char\n .replace(/%26/gi, '&') // & char\n .replace(/%27/gi, ''') // ' char\n .replace(/%3C/gi, '<') // < char\n .replace(/%3E/gi, '>'); // > char\n try {\n // Now attempt to decode the rest of the anchor text\n return decodeURIComponent(preProcessedEntityAnchorText);\n }\n catch (e) { // Invalid % escape sequence in the anchor text\n return preProcessedEntityAnchorText;\n }\n };\n return UrlMatch;\n}(Match));\nexport { UrlMatch };\n\n//# sourceMappingURL=url-match.js.map\n","/**\n * @abstract\n * @class Autolinker.matcher.Matcher\n *\n * An abstract class and interface for individual matchers to find matches in\n * an input string with linkified versions of them.\n *\n * Note that Matchers do not take HTML into account - they must be fed the text\n * nodes of any HTML string, which is handled by {@link Autolinker#parse}.\n */\nvar Matcher = /** @class */ (function () {\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Matcher\n * instance, specified in an Object (map).\n */\n function Matcher(cfg) {\n /**\n * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required)\n *\n * Reference to the AnchorTagBuilder instance to use to generate HTML tags\n * for {@link Autolinker.match.Match Matches}.\n */\n this.__jsduckDummyDocProp = null; // property used just to get the above doc comment into the ES5 output and documentation generator\n this.tagBuilder = cfg.tagBuilder;\n }\n return Matcher;\n}());\nexport { Matcher };\n\n//# sourceMappingURL=matcher.js.map\n","/*\n * This file builds and stores a library of the common regular expressions used\n * by the Autolinker utility.\n *\n * Other regular expressions may exist ad-hoc, but these are generally the\n * regular expressions that are shared between source files.\n */\n/**\n * Regular expression to match upper and lowercase ASCII letters\n */\nexport var letterRe = /[A-Za-z]/;\n/**\n * Regular expression to match ASCII digits\n */\nexport var digitRe = /[0-9]/;\n/**\n * Regular expression to match whitespace\n */\nexport var whitespaceRe = /\\s/;\n/**\n * Regular expression to match quote characters\n */\nexport var quoteRe = /['\"]/;\n/**\n * Regular expression to match the range of ASCII control characters (0-31), and\n * the backspace char (127)\n */\nexport var controlCharsRe = /[\\x00-\\x1F\\x7F]/;\n/**\n * The string form of a regular expression that would match all of the\n * alphabetic (\"letter\") chars in the unicode character set when placed in a\n * RegExp character class (`[]`). This includes all international alphabetic\n * characters.\n *\n * These would be the characters matched by unicode regex engines `\\p{L}`\n * escape (\"all letters\").\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Letter'\n * regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n * Expression literal rather than a string literal to prevent UglifyJS from\n * compressing the unicode escape sequences into their actual unicode\n * characters. If Uglify compresses these into the unicode characters\n * themselves, this results in the error \"Range out of order in character\n * class\" when these characters are used inside of a Regular Expression\n * character class (`[]`). See usages of this const. Alternatively, we can set\n * the UglifyJS option `ascii_only` to true for the build, but that doesn't\n * help others who are pulling in Autolinker into their own build and running\n * UglifyJS themselves.\n */\nexport var alphaCharsStr = /A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC/\n .source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all emoji characters\n * Based on the emoji regex defined in this article: https://thekevinscott.com/emojis-in-javascript/\n */\nexport var emojiStr = /\\u2700-\\u27bf\\udde6-\\uddff\\ud800-\\udbff\\udc00-\\udfff\\ufe0e\\ufe0f\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ud83c\\udffb-\\udfff\\u200d\\u3299\\u3297\\u303d\\u3030\\u24c2\\ud83c\\udd70-\\udd71\\udd7e-\\udd7f\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01-\\ude02\\ude1a\\ude2f\\ude32-\\ude3a\\ude50-\\ude51\\u203c\\u2049\\u25aa-\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u00a9\\u00ae\\u2122\\u2139\\udc04\\u2600-\\u26FF\\u2b05\\u2b06\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u231a\\u231b\\u2328\\u23cf\\u23e9-\\u23f3\\u23f8-\\u23fa\\udccf\\u2935\\u2934\\u2190-\\u21ff/\n .source;\n/**\n * The string form of a regular expression that would match all of the\n * combining mark characters in the unicode character set when placed in a\n * RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines `\\p{M}`\n * escape (\"all marks\").\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Mark'\n * regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n * Expression literal rather than a string literal to prevent UglifyJS from\n * compressing the unicode escape sequences into their actual unicode\n * characters. If Uglify compresses these into the unicode characters\n * themselves, this results in the error \"Range out of order in character\n * class\" when these characters are used inside of a Regular Expression\n * character class (`[]`). See usages of this const. Alternatively, we can set\n * the UglifyJS option `ascii_only` to true for the build, but that doesn't\n * help others who are pulling in Autolinker into their own build and running\n * UglifyJS themselves.\n */\nexport var marksStr = /\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F/\n .source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all of the\n * alphabetic (\"letter\") chars, emoji, and combining marks in the unicode character set\n * when placed in a RegExp character class (`[]`). This includes all\n * international alphabetic characters.\n *\n * These would be the characters matched by unicode regex engines `\\p{L}\\p{M}`\n * escapes and emoji characters.\n */\nexport var alphaCharsAndMarksStr = alphaCharsStr + emojiStr + marksStr;\n/**\n * The string form of a regular expression that would match all of the\n * decimal number chars in the unicode character set when placed in a RegExp\n * character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines `\\p{Nd}`\n * escape (\"all decimal numbers\")\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Decimal_Number'\n * regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n * Expression literal rather than a string literal to prevent UglifyJS from\n * compressing the unicode escape sequences into their actual unicode\n * characters. If Uglify compresses these into the unicode characters\n * themselves, this results in the error \"Range out of order in character\n * class\" when these characters are used inside of a Regular Expression\n * character class (`[]`). See usages of this const. Alternatively, we can set\n * the UglifyJS option `ascii_only` to true for the build, but that doesn't\n * help others who are pulling in Autolinker into their own build and running\n * UglifyJS themselves.\n */\nexport var decimalNumbersStr = /0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19/\n .source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all of the\n * letters and decimal number chars in the unicode character set when placed in\n * a RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines\n * `[\\p{L}\\p{Nd}]` escape (\"all letters and decimal numbers\")\n */\nexport var alphaNumericCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;\n/**\n * The string form of a regular expression that would match all of the\n * letters, combining marks, and decimal number chars in the unicode character\n * set when placed in a RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines\n * `[\\p{L}\\p{M}\\p{Nd}]` escape (\"all letters, combining marks, and decimal\n * numbers\")\n */\nexport var alphaNumericAndMarksCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;\n// Simplified IP regular expression\nvar ipStr = '(?:[' + decimalNumbersStr + ']{1,3}\\\\.){3}[' + decimalNumbersStr + ']{1,3}';\n// Protected domain label which do not allow \"-\" character on the beginning and the end of a single label\nvar domainLabelStr = '[' + alphaNumericAndMarksCharsStr + '](?:[' + alphaNumericAndMarksCharsStr + '\\\\-]{0,61}[' + alphaNumericAndMarksCharsStr + '])?';\nvar getDomainLabelStr = function (group) {\n return '(?=(' + domainLabelStr + '))\\\\' + group;\n};\n/**\n * A function to match domain names of a URL or email address.\n * Ex: 'google', 'yahoo', 'some-other-company', etc.\n */\nexport var getDomainNameStr = function (group) {\n return '(?:' + getDomainLabelStr(group) + '(?:\\\\.' + getDomainLabelStr(group + 1) + '){0,126}|' + ipStr + ')';\n};\n/**\n * A regular expression to match domain names of a URL or email address.\n * Ex: 'google', 'yahoo', 'some-other-company', etc.\n */\nexport var domainNameRegex = new RegExp('[' + alphaNumericAndMarksCharsStr + '.\\\\-]*[' + alphaNumericAndMarksCharsStr + '\\\\-]');\n/**\n * A regular expression that is simply the character class of the characters\n * that may be used in a domain name, minus the '-' or '.'\n */\nexport var domainNameCharRegex = new RegExp(\"[\" + alphaNumericAndMarksCharsStr + \"]\");\n\n//# sourceMappingURL=regex-lib.js.map\n","// NOTE: THIS IS A GENERATED FILE\n// To update with the latest TLD list, run `npm run update-tld-regex` or `yarn update-tld-regex` (depending on which you have installed)\nexport var tldRegex = /(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|spreadbetting|travelchannel|wolterskluwer|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|rightathome|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pbt977c|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nationwide|newholland|nextdirect|onyourside|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|telefonica|university|vistaprint|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|fujixerox|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|honeywell|institute|insurance|kuokgroup|ladbrokes|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--tckwe|xn--vhquv|yodobashi|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|chrysler|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|esurance|etisalat|everbank|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|movistar|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|symantec|training|uconnect|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|cartier|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|iselect|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lancome|lanxess|lasalle|latrobe|leclerc|liaison|limited|lincoln|markets|metlife|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|shriram|singles|staples|starhub|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|الجزائر|العليان|پاکستان|كاثوليك|موبايلي|இந்தியா|abarth|abbott|abbvie|active|africa|agency|airbus|airtel|alipay|alsace|alstom|anquan|aramco|author|bayern|beauty|berlin|bharti|blanco|bostik|boston|broker|camera|career|caseih|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|mobily|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|piaget|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|warman|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|dodge|drive|dubai|earth|edeka|email|epost|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|intel|irish|iveco|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|lupin|macys|mango|media|miami|money|mopar|movie|nadex|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|zippo|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|aigo|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|doha|duck|duns|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scor|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|グーグル|クラウド|ポイント|大众汽车|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bnl|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceb|ceo|cfa|cfd|com|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jcp|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|srl|srt|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ストア|セール|みんな|中文网|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|工行|广东|微博|慈善|手机|手表|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|珠宝|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/;\n\n//# sourceMappingURL=tld-regex.js.map\n","import * as tslib_1 from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr, domainNameCharRegex } from \"../regex-lib\";\nimport { EmailMatch } from \"../match/email-match\";\nimport { throwUnhandledCaseError } from '../utils';\nimport { tldRegex } from \"./tld-regex\";\n// For debugging: search for other \"For debugging\" lines\n// import CliTable from 'cli-table';\n/**\n * @class Autolinker.matcher.Email\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find email matches in an input string.\n *\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details.\n */\nvar EmailMatcher = /** @class */ (function (_super) {\n tslib_1.__extends(EmailMatcher, _super);\n function EmailMatcher() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Valid characters that can be used in the \"local\" part of an email address,\n * i.e. the \"name\" part of \"name@site.com\"\n */\n _this.localPartCharRegex = new RegExp(\"[\" + alphaNumericAndMarksCharsStr + \"!#$%&'*+/=?^_`{|}~-]\");\n /**\n * Stricter TLD regex which adds a beginning and end check to ensure\n * the string is a valid TLD\n */\n _this.strictTldRegex = new RegExp(\"^\" + tldRegex.source + \"$\");\n return _this;\n }\n /**\n * @inheritdoc\n */\n EmailMatcher.prototype.parseMatches = function (text) {\n var tagBuilder = this.tagBuilder, localPartCharRegex = this.localPartCharRegex, strictTldRegex = this.strictTldRegex, matches = [], len = text.length, noCurrentEmailMatch = new CurrentEmailMatch();\n // for matching a 'mailto:' prefix\n var mailtoTransitions = {\n 'm': 'a',\n 'a': 'i',\n 'i': 'l',\n 'l': 't',\n 't': 'o',\n 'o': ':',\n };\n var charIdx = 0, state = 0 /* NonEmailMatch */, currentEmailMatch = noCurrentEmailMatch;\n // For debugging: search for other \"For debugging\" lines\n // const table = new CliTable( {\n // \thead: [ 'charIdx', 'char', 'state', 'charIdx', 'currentEmailAddress.idx', 'hasDomainDot' ]\n // } );\n while (charIdx < len) {\n var char = text.charAt(charIdx);\n // For debugging: search for other \"For debugging\" lines\n // table.push( \n // \t[ charIdx, char, State[ state ], charIdx, currentEmailAddress.idx, currentEmailAddress.hasDomainDot ] \n // );\n switch (state) {\n case 0 /* NonEmailMatch */:\n stateNonEmailAddress(char);\n break;\n case 1 /* Mailto */:\n stateMailTo(text.charAt(charIdx - 1), char);\n break;\n case 2 /* LocalPart */:\n stateLocalPart(char);\n break;\n case 3 /* LocalPartDot */:\n stateLocalPartDot(char);\n break;\n case 4 /* AtSign */:\n stateAtSign(char);\n break;\n case 5 /* DomainChar */:\n stateDomainChar(char);\n break;\n case 6 /* DomainHyphen */:\n stateDomainHyphen(char);\n break;\n case 7 /* DomainDot */:\n stateDomainDot(char);\n break;\n default:\n throwUnhandledCaseError(state);\n }\n // For debugging: search for other \"For debugging\" lines\n // table.push( \n // \t[ charIdx, char, State[ state ], charIdx, currentEmailAddress.idx, currentEmailAddress.hasDomainDot ] \n // );\n charIdx++;\n }\n // Capture any valid match at the end of the string\n captureMatchIfValidAndReset();\n // For debugging: search for other \"For debugging\" lines\n //console.log( '\\n' + table.toString() );\n return matches;\n // Handles the state when we're not in an email address\n function stateNonEmailAddress(char) {\n if (char === 'm') {\n beginEmailMatch(1 /* Mailto */);\n }\n else if (localPartCharRegex.test(char)) {\n beginEmailMatch();\n }\n else {\n // not an email address character, continue\n }\n }\n // Handles if we're reading a 'mailto:' prefix on the string\n function stateMailTo(prevChar, char) {\n if (prevChar === ':') {\n // We've reached the end of the 'mailto:' prefix\n if (localPartCharRegex.test(char)) {\n state = 2 /* LocalPart */;\n currentEmailMatch = new CurrentEmailMatch(tslib_1.__assign({}, currentEmailMatch, { hasMailtoPrefix: true }));\n }\n else {\n // we've matched 'mailto:' but didn't get anything meaningful\n // immediately afterwards (for example, we encountered a \n // space character, or an '@' character which formed 'mailto:@'\n resetToNonEmailMatchState();\n }\n }\n else if (mailtoTransitions[prevChar] === char) {\n // We're currently reading the 'mailto:' prefix, stay in\n // Mailto state\n }\n else if (localPartCharRegex.test(char)) {\n // We we're reading a prefix of 'mailto:', but encountered a\n // different character that didn't continue the prefix\n state = 2 /* LocalPart */;\n }\n else if (char === '.') {\n // We we're reading a prefix of 'mailto:', but encountered a\n // dot character\n state = 3 /* LocalPartDot */;\n }\n else if (char === '@') {\n // We we're reading a prefix of 'mailto:', but encountered a\n // an @ character\n state = 4 /* AtSign */;\n }\n else {\n // not an email address character, return to \"NonEmailAddress\" state\n resetToNonEmailMatchState();\n }\n }\n // Handles the state when we're currently in the \"local part\" of an \n // email address (as opposed to the \"domain part\")\n function stateLocalPart(char) {\n if (char === '.') {\n state = 3 /* LocalPartDot */;\n }\n else if (char === '@') {\n state = 4 /* AtSign */;\n }\n else if (localPartCharRegex.test(char)) {\n // stay in the \"local part\" of the email address\n }\n else {\n // not an email address character, return to \"NonEmailAddress\" state\n resetToNonEmailMatchState();\n }\n }\n // Handles the state where we've read \n function stateLocalPartDot(char) {\n if (char === '.') {\n // We read a second '.' in a row, not a valid email address \n // local part\n resetToNonEmailMatchState();\n }\n else if (char === '@') {\n // We read the '@' character immediately after a dot ('.'), not \n // an email address\n resetToNonEmailMatchState();\n }\n else if (localPartCharRegex.test(char)) {\n state = 2 /* LocalPart */;\n }\n else {\n // Anything else, not an email address\n resetToNonEmailMatchState();\n }\n }\n function stateAtSign(char) {\n if (domainNameCharRegex.test(char)) {\n state = 5 /* DomainChar */;\n }\n else {\n // Anything else, not an email address\n resetToNonEmailMatchState();\n }\n }\n function stateDomainChar(char) {\n if (char === '.') {\n state = 7 /* DomainDot */;\n }\n else if (char === '-') {\n state = 6 /* DomainHyphen */;\n }\n else if (domainNameCharRegex.test(char)) {\n // Stay in the DomainChar state\n }\n else {\n // Anything else, we potentially matched if the criteria has\n // been met\n captureMatchIfValidAndReset();\n }\n }\n function stateDomainHyphen(char) {\n if (char === '-' || char === '.') {\n // Not valid to have two hyphens (\"--\") or hypen+dot (\"-.\")\n captureMatchIfValidAndReset();\n }\n else if (domainNameCharRegex.test(char)) {\n state = 5 /* DomainChar */;\n }\n else {\n // Anything else\n captureMatchIfValidAndReset();\n }\n }\n function stateDomainDot(char) {\n if (char === '.' || char === '-') {\n // not valid to have two dots (\"..\") or dot+hypen (\".-\")\n captureMatchIfValidAndReset();\n }\n else if (domainNameCharRegex.test(char)) {\n state = 5 /* DomainChar */;\n // After having read a '.' and then a valid domain character,\n // we now know that the domain part of the email is valid, and\n // we have found at least a partial EmailMatch (however, the\n // email address may have additional characters from this point)\n currentEmailMatch = new CurrentEmailMatch(tslib_1.__assign({}, currentEmailMatch, { hasDomainDot: true }));\n }\n else {\n // Anything else\n captureMatchIfValidAndReset();\n }\n }\n function beginEmailMatch(newState) {\n if (newState === void 0) { newState = 2 /* LocalPart */; }\n state = newState;\n currentEmailMatch = new CurrentEmailMatch({ idx: charIdx });\n }\n function resetToNonEmailMatchState() {\n state = 0 /* NonEmailMatch */;\n currentEmailMatch = noCurrentEmailMatch;\n }\n /*\n * Captures the current email address as an EmailMatch if it's valid,\n * and resets the state to read another email address.\n */\n function captureMatchIfValidAndReset() {\n if (currentEmailMatch.hasDomainDot) { // we need at least one dot in the domain to be considered a valid email address\n var matchedText = text.slice(currentEmailMatch.idx, charIdx);\n // If we read a '.' or '-' char that ended the email address\n // (valid domain name characters, but only valid email address\n // characters if they are followed by something else), strip \n // it off now\n if (/[-.]$/.test(matchedText)) {\n matchedText = matchedText.slice(0, -1);\n }\n var emailAddress = currentEmailMatch.hasMailtoPrefix\n ? matchedText.slice('mailto:'.length)\n : matchedText;\n // if the email address has a valid TLD, add it to the list of matches\n if (doesEmailHaveValidTld(emailAddress)) {\n matches.push(new EmailMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: currentEmailMatch.idx,\n email: emailAddress\n }));\n }\n }\n resetToNonEmailMatchState();\n /**\n * Determines if the given email address has a valid TLD or not\n * @param {string} emailAddress - email address\n * @return {Boolean} - true is email have valid TLD, false otherwise\n */\n function doesEmailHaveValidTld(emailAddress) {\n var emailAddressTld = emailAddress.split('.').pop() || '';\n var emailAddressNormalized = emailAddressTld.toLowerCase();\n var isValidTld = strictTldRegex.test(emailAddressNormalized);\n return isValidTld;\n }\n }\n };\n return EmailMatcher;\n}(Matcher));\nexport { EmailMatcher };\nvar CurrentEmailMatch = /** @class */ (function () {\n function CurrentEmailMatch(cfg) {\n if (cfg === void 0) { cfg = {}; }\n this.idx = cfg.idx !== undefined ? cfg.idx : -1;\n this.hasMailtoPrefix = !!cfg.hasMailtoPrefix;\n this.hasDomainDot = !!cfg.hasDomainDot;\n }\n return CurrentEmailMatch;\n}());\n\n//# sourceMappingURL=email-matcher.js.map\n","import { alphaCharsStr } from \"../regex-lib\";\n/**\n * @private\n * @class Autolinker.matcher.UrlMatchValidator\n * @singleton\n *\n * Used by Autolinker to filter out false URL positives from the\n * {@link Autolinker.matcher.Url UrlMatcher}.\n *\n * Due to the limitations of regular expressions (including the missing feature\n * of look-behinds in JS regular expressions), we cannot always determine the\n * validity of a given match. This class applies a bit of additional logic to\n * filter out any false positives that have been matched by the\n * {@link Autolinker.matcher.Url UrlMatcher}.\n */\nvar UrlMatchValidator = /** @class */ (function () {\n function UrlMatchValidator() {\n }\n /**\n * Determines if a given URL match found by the {@link Autolinker.matcher.Url UrlMatcher}\n * is valid. Will return `false` for:\n *\n * 1) URL matches which do not have at least have one period ('.') in the\n * domain name (effectively skipping over matches like \"abc:def\").\n * However, URL matches with a protocol will be allowed (ex: 'http://localhost')\n * 2) URL matches which do not have at least one word character in the\n * domain name (effectively skipping over matches like \"git:1.0\").\n * 3) A protocol-relative url match (a URL beginning with '//') whose\n * previous character is a word character (effectively skipping over\n * strings like \"abc//google.com\")\n *\n * Otherwise, returns `true`.\n *\n * @param {String} urlMatch The matched URL, if there was one. Will be an\n * empty string if the match is not a URL match.\n * @param {String} protocolUrlMatch The match URL string for a protocol\n * match. Ex: 'http://yahoo.com'. This is used to match something like\n * 'http://localhost', where we won't double check that the domain name\n * has at least one '.' in it.\n * @return {Boolean} `true` if the match given is valid and should be\n * processed, or `false` if the match is invalid and/or should just not be\n * processed.\n */\n UrlMatchValidator.isValid = function (urlMatch, protocolUrlMatch) {\n if ((protocolUrlMatch && !this.isValidUriScheme(protocolUrlMatch)) ||\n this.urlMatchDoesNotHaveProtocolOrDot(urlMatch, protocolUrlMatch) || // At least one period ('.') must exist in the URL match for us to consider it an actual URL, *unless* it was a full protocol match (like 'http://localhost')\n (this.urlMatchDoesNotHaveAtLeastOneWordChar(urlMatch, protocolUrlMatch) && // At least one letter character must exist in the domain name after a protocol match. Ex: skip over something like \"git:1.0\"\n !this.isValidIpAddress(urlMatch)) || // Except if it's an IP address\n this.containsMultipleDots(urlMatch)) {\n return false;\n }\n return true;\n };\n UrlMatchValidator.isValidIpAddress = function (uriSchemeMatch) {\n var newRegex = new RegExp(this.hasFullProtocolRegex.source + this.ipRegex.source);\n var uriScheme = uriSchemeMatch.match(newRegex);\n return uriScheme !== null;\n };\n UrlMatchValidator.containsMultipleDots = function (urlMatch) {\n var stringBeforeSlash = urlMatch;\n if (this.hasFullProtocolRegex.test(urlMatch)) {\n stringBeforeSlash = urlMatch.split('://')[1];\n }\n return stringBeforeSlash.split('/')[0].indexOf(\"..\") > -1;\n };\n /**\n * Determines if the URI scheme is a valid scheme to be autolinked. Returns\n * `false` if the scheme is 'javascript:' or 'vbscript:'\n *\n * @private\n * @param {String} uriSchemeMatch The match URL string for a full URI scheme\n * match. Ex: 'http://yahoo.com' or 'mailto:a@a.com'.\n * @return {Boolean} `true` if the scheme is a valid one, `false` otherwise.\n */\n UrlMatchValidator.isValidUriScheme = function (uriSchemeMatch) {\n var uriSchemeMatchArr = uriSchemeMatch.match(this.uriSchemeRegex), uriScheme = uriSchemeMatchArr && uriSchemeMatchArr[0].toLowerCase();\n return (uriScheme !== 'javascript:' && uriScheme !== 'vbscript:');\n };\n /**\n * Determines if a URL match does not have either:\n *\n * a) a full protocol (i.e. 'http://'), or\n * b) at least one dot ('.') in the domain name (for a non-full-protocol\n * match).\n *\n * Either situation is considered an invalid URL (ex: 'git:d' does not have\n * either the '://' part, or at least one dot in the domain name. If the\n * match was 'git:abc.com', we would consider this valid.)\n *\n * @private\n * @param {String} urlMatch The matched URL, if there was one. Will be an\n * empty string if the match is not a URL match.\n * @param {String} protocolUrlMatch The match URL string for a protocol\n * match. Ex: 'http://yahoo.com'. This is used to match something like\n * 'http://localhost', where we won't double check that the domain name\n * has at least one '.' in it.\n * @return {Boolean} `true` if the URL match does not have a full protocol,\n * or at least one dot ('.') in a non-full-protocol match.\n */\n UrlMatchValidator.urlMatchDoesNotHaveProtocolOrDot = function (urlMatch, protocolUrlMatch) {\n return (!!urlMatch && (!protocolUrlMatch || !this.hasFullProtocolRegex.test(protocolUrlMatch)) && urlMatch.indexOf('.') === -1);\n };\n /**\n * Determines if a URL match does not have at least one word character after\n * the protocol (i.e. in the domain name).\n *\n * At least one letter character must exist in the domain name after a\n * protocol match. Ex: skip over something like \"git:1.0\"\n *\n * @private\n * @param {String} urlMatch The matched URL, if there was one. Will be an\n * empty string if the match is not a URL match.\n * @param {String} protocolUrlMatch The match URL string for a protocol\n * match. Ex: 'http://yahoo.com'. This is used to know whether or not we\n * have a protocol in the URL string, in order to check for a word\n * character after the protocol separator (':').\n * @return {Boolean} `true` if the URL match does not have at least one word\n * character in it after the protocol, `false` otherwise.\n */\n UrlMatchValidator.urlMatchDoesNotHaveAtLeastOneWordChar = function (urlMatch, protocolUrlMatch) {\n if (urlMatch && protocolUrlMatch) {\n return !this.hasWordCharAfterProtocolRegex.test(urlMatch);\n }\n else {\n return false;\n }\n };\n /**\n * Regex to test for a full protocol, with the two trailing slashes. Ex: 'http://'\n *\n * @private\n * @property {RegExp} hasFullProtocolRegex\n */\n UrlMatchValidator.hasFullProtocolRegex = /^[A-Za-z][-.+A-Za-z0-9]*:\\/\\//;\n /**\n * Regex to find the URI scheme, such as 'mailto:'.\n *\n * This is used to filter out 'javascript:' and 'vbscript:' schemes.\n *\n * @private\n * @property {RegExp} uriSchemeRegex\n */\n UrlMatchValidator.uriSchemeRegex = /^[A-Za-z][-.+A-Za-z0-9]*:/;\n /**\n * Regex to determine if at least one word char exists after the protocol (i.e. after the ':')\n *\n * @private\n * @property {RegExp} hasWordCharAfterProtocolRegex\n */\n UrlMatchValidator.hasWordCharAfterProtocolRegex = new RegExp(\":[^\\\\s]*?[\" + alphaCharsStr + \"]\");\n /**\n * Regex to determine if the string is a valid IP address\n *\n * @private\n * @property {RegExp} ipRegex\n */\n UrlMatchValidator.ipRegex = /[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?(:[0-9]*)?\\/?$/;\n return UrlMatchValidator;\n}());\nexport { UrlMatchValidator };\n\n//# sourceMappingURL=url-match-validator.js.map\n","import * as tslib_1 from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericCharsStr, alphaNumericAndMarksCharsStr, getDomainNameStr } from \"../regex-lib\";\nimport { tldRegex } from \"./tld-regex\";\nimport { UrlMatch } from \"../match/url-match\";\nimport { UrlMatchValidator } from \"./url-match-validator\";\n/**\n * @class Autolinker.matcher.Url\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find URL matches in an input string.\n *\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details.\n */\nvar UrlMatcher = /** @class */ (function (_super) {\n tslib_1.__extends(UrlMatcher, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match instance,\n * specified in an Object (map).\n */\n function UrlMatcher(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @cfg {Object} stripPrefix (required)\n *\n * The Object form of {@link Autolinker#cfg-stripPrefix}.\n */\n _this.stripPrefix = { scheme: true, www: true }; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} stripTrailingSlash (required)\n * @inheritdoc Autolinker#stripTrailingSlash\n */\n _this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} decodePercentEncoding (required)\n * @inheritdoc Autolinker#decodePercentEncoding\n */\n _this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @protected\n * @property {RegExp} matcherRegex\n *\n * The regular expression to match URLs with an optional scheme, port\n * number, path, query string, and hash anchor.\n *\n * Example matches:\n *\n * http://google.com\n * www.google.com\n * google.com/path/to/file?q1=1&q2=2#myAnchor\n *\n *\n * This regular expression will have the following capturing groups:\n *\n * 1. Group that matches a scheme-prefixed URL (i.e. 'http://google.com').\n * This is used to match scheme URLs with just a single word, such as\n * 'http://localhost', where we won't double check that the domain name\n * has at least one dot ('.') in it.\n * 2. Group that matches a 'www.' prefixed URL. This is only matched if the\n * 'www.' text was not prefixed by a scheme (i.e.: not prefixed by\n * 'http://', 'ftp:', etc.)\n * 3. A protocol-relative ('//') match for the case of a 'www.' prefixed\n * URL. Will be an empty string if it is not a protocol-relative match.\n * We need to know the character before the '//' in order to determine\n * if it is a valid match or the // was in a string we don't want to\n * auto-link.\n * 4. Group that matches a known TLD (top level domain), when a scheme\n * or 'www.'-prefixed domain is not matched.\n * 5. A protocol-relative ('//') match for the case of a known TLD prefixed\n * URL. Will be an empty string if it is not a protocol-relative match.\n * See #3 for more info.\n */\n _this.matcherRegex = (function () {\n var schemeRegex = /(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\\/\\/)(?!\\d+\\/?)(?:\\/\\/)?)/, // match protocol, allow in format \"http://\" or \"mailto:\". However, do not match the first part of something like 'link:http://www.google.com' (i.e. don't match \"link:\"). Also, make sure we don't interpret 'google.com:8000' as if 'google.com' was a protocol here (i.e. ignore a trailing port number in this regex)\n wwwRegex = /(?:www\\.)/, // starting with 'www.'\n // Allow optional path, query string, and hash anchor, not ending in the following characters: \"?!:,.;\"\n // http://blog.codinghorror.com/the-problem-with-urls/\n urlSuffixRegex = new RegExp('[/?#](?:[' + alphaNumericAndMarksCharsStr + '\\\\-+&@#/%=~_()|\\'$*\\\\[\\\\]?!:,.;\\u2713]*[' + alphaNumericAndMarksCharsStr + '\\\\-+&@#/%=~_()|\\'$*\\\\[\\\\]\\u2713])?');\n return new RegExp([\n '(?:',\n '(',\n schemeRegex.source,\n getDomainNameStr(2),\n ')',\n '|',\n '(',\n '(//)?',\n wwwRegex.source,\n getDomainNameStr(6),\n ')',\n '|',\n '(',\n '(//)?',\n getDomainNameStr(10) + '\\\\.',\n tldRegex.source,\n '(?![-' + alphaNumericCharsStr + '])',\n ')',\n ')',\n '(?::[0-9]+)?',\n '(?:' + urlSuffixRegex.source + ')?' // match for path, query string, and/or hash anchor - optional\n ].join(\"\"), 'gi');\n })();\n /**\n * A regular expression to use to check the character before a protocol-relative\n * URL match. We don't want to match a protocol-relative URL if it is part\n * of another word.\n *\n * For example, we want to match something like \"Go to: //google.com\",\n * but we don't want to match something like \"abc//google.com\"\n *\n * This regular expression is used to test the character before the '//'.\n *\n * @protected\n * @type {RegExp} wordCharRegExp\n */\n _this.wordCharRegExp = new RegExp('[' + alphaNumericAndMarksCharsStr + ']');\n _this.stripPrefix = cfg.stripPrefix;\n _this.stripTrailingSlash = cfg.stripTrailingSlash;\n _this.decodePercentEncoding = cfg.decodePercentEncoding;\n return _this;\n }\n /**\n * @inheritdoc\n */\n UrlMatcher.prototype.parseMatches = function (text) {\n var matcherRegex = this.matcherRegex, stripPrefix = this.stripPrefix, stripTrailingSlash = this.stripTrailingSlash, decodePercentEncoding = this.decodePercentEncoding, tagBuilder = this.tagBuilder, matches = [], match;\n var _loop_1 = function () {\n var matchStr = match[0], schemeUrlMatch = match[1], wwwUrlMatch = match[4], wwwProtocolRelativeMatch = match[5], \n //tldUrlMatch = match[ 8 ], -- not needed at the moment\n tldProtocolRelativeMatch = match[9], offset = match.index, protocolRelativeMatch = wwwProtocolRelativeMatch || tldProtocolRelativeMatch, prevChar = text.charAt(offset - 1);\n if (!UrlMatchValidator.isValid(matchStr, schemeUrlMatch)) {\n return \"continue\";\n }\n // If the match is preceded by an '@' character, then it is either\n // an email address or a username. Skip these types of matches.\n if (offset > 0 && prevChar === '@') {\n return \"continue\";\n }\n // If it's a protocol-relative '//' match, but the character before the '//'\n // was a word character (i.e. a letter/number), then we found the '//' in the\n // middle of another word (such as \"asdf//asdf.com\"). In this case, skip the\n // match.\n if (offset > 0 && protocolRelativeMatch && this_1.wordCharRegExp.test(prevChar)) {\n return \"continue\";\n }\n // If the URL ends with a question mark, don't include the question\n // mark as part of the URL. We'll assume the question mark was the\n // end of a sentence, such as: \"Going to google.com?\"\n if (/\\?$/.test(matchStr)) {\n matchStr = matchStr.substr(0, matchStr.length - 1);\n }\n // Handle a closing parenthesis or square bracket at the end of the \n // match, and exclude it if there is not a matching open parenthesis \n // or square bracket in the match itself.\n if (this_1.matchHasUnbalancedClosingParen(matchStr)) {\n matchStr = matchStr.substr(0, matchStr.length - 1); // remove the trailing \")\"\n }\n else {\n // Handle an invalid character after the TLD\n var pos = this_1.matchHasInvalidCharAfterTld(matchStr, schemeUrlMatch);\n if (pos > -1) {\n matchStr = matchStr.substr(0, pos); // remove the trailing invalid chars\n }\n }\n // The autolinker accepts many characters in a url's scheme (like `fake://test.com`).\n // However, in cases where a URL is missing whitespace before an obvious link,\n // (for example: `nowhitespacehttp://www.test.com`), we only want the match to start\n // at the http:// part. We will check if the match contains a common scheme and then \n // shift the match to start from there. \t\t\n var foundCommonScheme = ['http://', 'https://'].find(function (commonScheme) { return !!schemeUrlMatch && schemeUrlMatch.indexOf(commonScheme) !== -1; });\n if (foundCommonScheme) {\n // If we found an overmatched URL, we want to find the index\n // of where the match should start and shift the match to\n // start from the beginning of the common scheme\n var indexOfSchemeStart = matchStr.indexOf(foundCommonScheme);\n matchStr = matchStr.substr(indexOfSchemeStart);\n schemeUrlMatch = schemeUrlMatch.substr(indexOfSchemeStart);\n offset = offset + indexOfSchemeStart;\n }\n var urlMatchType = schemeUrlMatch ? 'scheme' : (wwwUrlMatch ? 'www' : 'tld'), protocolUrlMatch = !!schemeUrlMatch;\n matches.push(new UrlMatch({\n tagBuilder: tagBuilder,\n matchedText: matchStr,\n offset: offset,\n urlMatchType: urlMatchType,\n url: matchStr,\n protocolUrlMatch: protocolUrlMatch,\n protocolRelativeMatch: !!protocolRelativeMatch,\n stripPrefix: stripPrefix,\n stripTrailingSlash: stripTrailingSlash,\n decodePercentEncoding: decodePercentEncoding,\n }));\n };\n var this_1 = this;\n while ((match = matcherRegex.exec(text)) !== null) {\n _loop_1();\n }\n return matches;\n };\n /**\n * Determines if a match found has an unmatched closing parenthesis or\n * square bracket. If so, the parenthesis or square bracket will be removed\n * from the match itself, and appended after the generated anchor tag.\n *\n * A match may have an extra closing parenthesis at the end of the match\n * because the regular expression must include parenthesis for URLs such as\n * \"wikipedia.com/something_(disambiguation)\", which should be auto-linked.\n *\n * However, an extra parenthesis *will* be included when the URL itself is\n * wrapped in parenthesis, such as in the case of:\n * \"(wikipedia.com/something_(disambiguation))\"\n * In this case, the last closing parenthesis should *not* be part of the\n * URL itself, and this method will return `true`.\n *\n * For square brackets in URLs such as in PHP arrays, the same behavior as\n * parenthesis discussed above should happen:\n * \"[http://www.example.com/foo.php?bar[]=1&bar[]=2&bar[]=3]\"\n * The closing square bracket should not be part of the URL itself, and this\n * method will return `true`.\n *\n * @protected\n * @param {String} matchStr The full match string from the {@link #matcherRegex}.\n * @return {Boolean} `true` if there is an unbalanced closing parenthesis or\n * square bracket at the end of the `matchStr`, `false` otherwise.\n */\n UrlMatcher.prototype.matchHasUnbalancedClosingParen = function (matchStr) {\n var endChar = matchStr.charAt(matchStr.length - 1);\n var startChar;\n if (endChar === ')') {\n startChar = '(';\n }\n else if (endChar === ']') {\n startChar = '[';\n }\n else {\n return false; // not a close parenthesis or square bracket\n }\n // Find if there are the same number of open braces as close braces in\n // the URL string, minus the last character (which we have already \n // determined to be either ')' or ']'\n var numOpenBraces = 0;\n for (var i = 0, len = matchStr.length - 1; i < len; i++) {\n var char = matchStr.charAt(i);\n if (char === startChar) {\n numOpenBraces++;\n }\n else if (char === endChar) {\n numOpenBraces = Math.max(numOpenBraces - 1, 0);\n }\n }\n // If the number of open braces matches the number of close braces in\n // the URL minus the last character, then the match has *unbalanced*\n // braces because of the last character. Example of unbalanced braces\n // from the regex match:\n // \"http://example.com?a[]=1]\"\n if (numOpenBraces === 0) {\n return true;\n }\n return false;\n };\n /**\n * Determine if there's an invalid character after the TLD in a URL. Valid\n * characters after TLD are ':/?#'. Exclude scheme matched URLs from this\n * check.\n *\n * @protected\n * @param {String} urlMatch The matched URL, if there was one. Will be an\n * empty string if the match is not a URL match.\n * @param {String} schemeUrlMatch The match URL string for a scheme\n * match. Ex: 'http://yahoo.com'. This is used to match something like\n * 'http://localhost', where we won't double check that the domain name\n * has at least one '.' in it.\n * @return {Number} the position where the invalid character was found. If\n * no such character was found, returns -1\n */\n UrlMatcher.prototype.matchHasInvalidCharAfterTld = function (urlMatch, schemeUrlMatch) {\n if (!urlMatch) {\n return -1;\n }\n var offset = 0;\n if (schemeUrlMatch) {\n offset = urlMatch.indexOf(':');\n urlMatch = urlMatch.slice(offset);\n }\n var re = new RegExp(\"^((.?\\/\\/)?[-.\" + alphaNumericAndMarksCharsStr + \"]*[-\" + alphaNumericAndMarksCharsStr + \"]\\\\.[-\" + alphaNumericAndMarksCharsStr + \"]+)\");\n var res = re.exec(urlMatch);\n if (res === null) {\n return -1;\n }\n offset += res[1].length;\n urlMatch = urlMatch.slice(res[1].length);\n if (/^[^-.A-Za-z0-9:\\/?#]/.test(urlMatch)) {\n return offset;\n }\n return -1;\n };\n return UrlMatcher;\n}(Matcher));\nexport { UrlMatcher };\n\n//# sourceMappingURL=url-matcher.js.map\n","import * as tslib_1 from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr } from \"../regex-lib\";\nimport { HashtagMatch } from \"../match/hashtag-match\";\n/**\n * @class Autolinker.matcher.Hashtag\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find HashtagMatch matches in an input string.\n */\nvar HashtagMatcher = /** @class */ (function (_super) {\n tslib_1.__extends(HashtagMatcher, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match instance,\n * specified in an Object (map).\n */\n function HashtagMatcher(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @cfg {String} serviceName\n *\n * The service to point hashtag matches to. See {@link Autolinker#hashtag}\n * for available values.\n */\n _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * The regular expression to match Hashtags. Example match:\n *\n * #asdf\n *\n * @protected\n * @property {RegExp} matcherRegex\n */\n _this.matcherRegex = new RegExp(\"#[_\" + alphaNumericAndMarksCharsStr + \"]{1,139}(?![_\" + alphaNumericAndMarksCharsStr + \"])\", 'g'); // lookahead used to make sure we don't match something above 139 characters\n /**\n * The regular expression to use to check the character before a username match to\n * make sure we didn't accidentally match an email address.\n *\n * For example, the string \"asdf@asdf.com\" should not match \"@asdf\" as a username.\n *\n * @protected\n * @property {RegExp} nonWordCharRegex\n */\n _this.nonWordCharRegex = new RegExp('[^' + alphaNumericAndMarksCharsStr + ']');\n _this.serviceName = cfg.serviceName;\n return _this;\n }\n /**\n * @inheritdoc\n */\n HashtagMatcher.prototype.parseMatches = function (text) {\n var matcherRegex = this.matcherRegex, nonWordCharRegex = this.nonWordCharRegex, serviceName = this.serviceName, tagBuilder = this.tagBuilder, matches = [], match;\n while ((match = matcherRegex.exec(text)) !== null) {\n var offset = match.index, prevChar = text.charAt(offset - 1);\n // If we found the match at the beginning of the string, or we found the match\n // and there is a whitespace char in front of it (meaning it is not a '#' char\n // in the middle of a word), then it is a hashtag match.\n if (offset === 0 || nonWordCharRegex.test(prevChar)) {\n var matchedText = match[0], hashtag = match[0].slice(1); // strip off the '#' character at the beginning\n matches.push(new HashtagMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: offset,\n serviceName: serviceName,\n hashtag: hashtag\n }));\n }\n }\n return matches;\n };\n return HashtagMatcher;\n}(Matcher));\nexport { HashtagMatcher };\n\n//# sourceMappingURL=hashtag-matcher.js.map\n","import * as tslib_1 from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { PhoneMatch } from \"../match/phone-match\";\n/**\n * @class Autolinker.matcher.Phone\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find Phone number matches in an input string.\n *\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more\n * details.\n */\nvar PhoneMatcher = /** @class */ (function (_super) {\n tslib_1.__extends(PhoneMatcher, _super);\n function PhoneMatcher() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * The regular expression to match Phone numbers. Example match:\n *\n * (123) 456-7890\n *\n * This regular expression has the following capturing groups:\n *\n * 1 or 2. The prefixed '+' sign, if there is one.\n *\n * @protected\n * @property {RegExp} matcherRegex\n */\n _this.matcherRegex = /(?:(?:(?:(\\+)?\\d{1,3}[-\\040.]?)?\\(?\\d{3}\\)?[-\\040.]?\\d{3}[-\\040.]?\\d{4})|(?:(\\+)(?:9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\\040.]?(?:\\d[-\\040.]?){6,12}\\d+))([,;]+[0-9]+#?)*/g;\n return _this;\n }\n // ex: (123) 456-7890, 123 456 7890, 123-456-7890, +18004441234,,;,10226420346#,\n // +1 (800) 444 1234, 10226420346#, 1-800-444-1234,1022,64,20346#\n /**\n * @inheritdoc\n */\n PhoneMatcher.prototype.parseMatches = function (text) {\n var matcherRegex = this.matcherRegex, tagBuilder = this.tagBuilder, matches = [], match;\n while ((match = matcherRegex.exec(text)) !== null) {\n // Remove non-numeric values from phone number string\n var matchedText = match[0], cleanNumber = matchedText.replace(/[^0-9,;#]/g, ''), // strip out non-digit characters exclude comma semicolon and #\n plusSign = !!(match[1] || match[2]), // match[ 1 ] or match[ 2 ] is the prefixed plus sign, if there is one\n before = match.index == 0 ? '' : text.substr(match.index - 1, 1), after = text.substr(match.index + matchedText.length, 1), contextClear = !before.match(/\\d/) && !after.match(/\\d/);\n if (this.testMatch(match[3]) && this.testMatch(matchedText) && contextClear) {\n matches.push(new PhoneMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: match.index,\n number: cleanNumber,\n plusSign: plusSign\n }));\n }\n }\n return matches;\n };\n PhoneMatcher.prototype.testMatch = function (text) {\n return /\\D/.test(text);\n };\n return PhoneMatcher;\n}(Matcher));\nexport { PhoneMatcher };\n\n//# sourceMappingURL=phone-matcher.js.map\n","import * as tslib_1 from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr } from \"../regex-lib\";\nimport { MentionMatch } from \"../match/mention-match\";\n/**\n * @class Autolinker.matcher.Mention\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find/replace username matches in an input string.\n */\nvar MentionMatcher = /** @class */ (function (_super) {\n tslib_1.__extends(MentionMatcher, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match instance,\n * specified in an Object (map).\n */\n function MentionMatcher(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @cfg {'twitter'/'instagram'/'soundcloud'} protected\n *\n * The name of service to link @mentions to.\n *\n * Valid values are: 'twitter', 'instagram', or 'soundcloud'\n */\n _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * Hash of regular expression to match username handles. Example match:\n *\n * @asdf\n *\n * @private\n * @property {Object} matcherRegexes\n */\n _this.matcherRegexes = {\n 'twitter': new RegExp(\"@[_\" + alphaNumericAndMarksCharsStr + \"]{1,50}(?![_\" + alphaNumericAndMarksCharsStr + \"])\", 'g'),\n 'instagram': new RegExp(\"@[_.\" + alphaNumericAndMarksCharsStr + \"]{1,30}(?![_\" + alphaNumericAndMarksCharsStr + \"])\", 'g'),\n 'soundcloud': new RegExp(\"@[-_.\" + alphaNumericAndMarksCharsStr + \"]{1,50}(?![-_\" + alphaNumericAndMarksCharsStr + \"])\", 'g') // lookahead used to make sure we don't match something above 50 characters\n };\n /**\n * The regular expression to use to check the character before a username match to\n * make sure we didn't accidentally match an email address.\n *\n * For example, the string \"asdf@asdf.com\" should not match \"@asdf\" as a username.\n *\n * @private\n * @property {RegExp} nonWordCharRegex\n */\n _this.nonWordCharRegex = new RegExp('[^' + alphaNumericAndMarksCharsStr + ']');\n _this.serviceName = cfg.serviceName;\n return _this;\n }\n /**\n * @inheritdoc\n */\n MentionMatcher.prototype.parseMatches = function (text) {\n var serviceName = this.serviceName, matcherRegex = this.matcherRegexes[this.serviceName], nonWordCharRegex = this.nonWordCharRegex, tagBuilder = this.tagBuilder, matches = [], match;\n if (!matcherRegex) {\n return matches;\n }\n while ((match = matcherRegex.exec(text)) !== null) {\n var offset = match.index, prevChar = text.charAt(offset - 1);\n // If we found the match at the beginning of the string, or we found the match\n // and there is a whitespace char in front of it (meaning it is not an email\n // address), then it is a username match.\n if (offset === 0 || nonWordCharRegex.test(prevChar)) {\n var matchedText = match[0].replace(/\\.+$/g, ''), // strip off trailing .\n mention = matchedText.slice(1); // strip off the '@' character at the beginning\n matches.push(new MentionMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: offset,\n serviceName: serviceName,\n mention: mention\n }));\n }\n }\n return matches;\n };\n return MentionMatcher;\n}(Matcher));\nexport { MentionMatcher };\n\n//# sourceMappingURL=mention-matcher.js.map\n","import * as tslib_1 from \"tslib\";\nimport { letterRe, digitRe, whitespaceRe, quoteRe, controlCharsRe } from '../regex-lib';\nimport { throwUnhandledCaseError } from '../utils';\n// For debugging: search for other \"For debugging\" lines\n// import CliTable from 'cli-table';\n/**\n * Parses an HTML string, calling the callbacks to notify of tags and text.\n *\n * ## History\n *\n * This file previously used a regular expression to find html tags in the input\n * text. Unfortunately, we ran into a bunch of catastrophic backtracking issues\n * with certain input text, causing Autolinker to either hang or just take a\n * really long time to parse the string.\n *\n * The current code is intended to be a O(n) algorithm that walks through\n * the string in one pass, and tries to be as cheap as possible. We don't need\n * to implement the full HTML spec, but rather simply determine where the string\n * looks like an HTML tag, and where it looks like text (so that we can autolink\n * that).\n *\n * This state machine parser is intended just to be a simple but performant\n * parser of HTML for the subset of requirements we have. We simply need to:\n *\n * 1. Determine where HTML tags are\n * 2. Determine the tag name (Autolinker specifically only cares about ,\n * \n\n\n\n

We don't need to:

\n\n
    \n
  1. Create a parse tree
  2. \n
  3. Auto-close tags with invalid markup
  4. \n
  5. etc.
  6. \n
\n\n\n

The other intention behind this is that we didn't want to add external\ndependencies on the Autolinker utility which would increase its size. For\ninstance, adding htmlparser2 adds 125kb to the minified output file,\nincreasing its final size from 47kb to 172kb (at the time of writing). It\nalso doesn't work exactly correctly, treating the string \"<3 blah blah blah\"\nas an HTML tag.

\n\n

Reference for HTML spec:

\n\n
https://www.w3.org/TR/html51/syntax.html#sec-tokenization\n
\n

Parameters

  • html : String

    The HTML to parse

    \n
  • callbacks : Object
    \n
    • onOpenTag : Function

      Callback function to call when an open\n tag is parsed. Called with the tagName as its argument.

      \n
    • onCloseTag : Function

      Callback function to call when a close\n tag is parsed. Called with the tagName as its argument. If a self-closing\n tag is found, onCloseTag is called immediately after onOpenTag.

      \n
    • onText : Function

      Callback function to call when text (i.e\n not an HTML tag) is parsed. Called with the text (string) as its first\n argument, and offset (number) into the string as its second.

      \n
Causes the main loop to re-consume the current character, such as after\nencountering a \"parse error\" that changed sta...

Causes the main loop to re-consume the current character, such as after\nencountering a \"parse error\" that changed state and needs to reconsume\nthe same character in that new state.

\n
( arr, fn ) : Array
Removes array elements based on a filtering function. ...

Removes array elements based on a filtering function. Mutates the input\narray.

\n\n

Using this instead of the ES5 Array.prototype.filter() function, to allow\nAutolinker compatibility with IE8, and also to prevent creating many new\narrays in memory for filtering.

\n

Parameters

  • arr : Array

    The array to remove elements from. This array is\n mutated.

    \n
  • fn : Function

    A function which should return true to\n remove an element.

    \n

Returns

  • Array

    The mutated input arr.

    \n
Resets the state back to the Data state, and removes the current tag. ...

Resets the state back to the Data state, and removes the current tag.

\n\n

We'll generally run this function whenever a \"parse error\" is\nencountered, where the current tag that is being read no longer looks\nlike a real HTML tag.

\n
( str, splitRegex ) : String[]
Performs the functionality of what modern browsers do when String.prototype.split() is called\nwith a regular expressi...

Performs the functionality of what modern browsers do when String.prototype.split() is called\nwith a regular expression that contains capturing parenthesis.

\n\n

For example:

\n\n
// Modern browsers:\n\"a,b,c\".split( /(,)/ );  // --> [ 'a', ',', 'b', ',', 'c' ]\n\n// Old IE (including IE8):\n\"a,b,c\".split( /(,)/ );  // --> [ 'a', 'b', 'c' ]\n
\n\n

This method emulates the functionality of modern browsers for the old IE case.

\n

Parameters

  • str : String

    The string to split.

    \n
  • splitRegex : RegExp

    The regular expression to split the input str on. The splitting\n character(s) will be spliced into the array, as in the \"modern browsers\" example in the\n description of this method.\n Note #1: the supplied regular expression must have the 'g' flag specified.\n Note #2: for simplicity's sake, the regular expression does not need\n to contain capturing parenthesis - it will be assumed that any match has them.

    \n

Returns

  • String[]

    The split array of strings, with the splitting character(s) included.

    \n
Starts a new HTML tag at the current index, ignoring any previous HTML\ntag that was being read. ...

Starts a new HTML tag at the current index, ignoring any previous HTML\ntag that was being read.

\n\n

We'll generally run this function whenever we read a new '<' character,\nincluding when we read a '<' character inside of an HTML tag that we were\npreviously reading.

\n
For DOCTYPES in particular, we don't care about the attributes. ...

For DOCTYPES in particular, we don't care about the attributes. Just\nadvance to the '>' character and emit the tag, unless we find a '<'\ncharacter in which case we'll start a new tag.

\n\n

Example doctype tag:\n <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">

\n\n

Actual spec: https://www.w3.org/TR/html51/syntax.html#doctype-state

\n

Parameters

  • char : Object
Function that should never be called but is used to check that every\nenum value is handled using TypeScript's 'never'...

Function that should never be called but is used to check that every\nenum value is handled using TypeScript's 'never' type.

\n

Parameters

  • theValue : Object
( anchorText, truncateLen, ellipsisChars ) : String
A truncation feature where the ellipsis will be placed at the end of the URL. ...

A truncation feature where the ellipsis will be placed at the end of the URL.

\n

Parameters

  • anchorText : String
    \n
  • truncateLen : Number

    The maximum length of the truncated output URL string.

    \n
  • ellipsisChars : String

    The characters to place within the url, e.g. \"..\".

    \n

Returns

  • String

    The truncated URL.

    \n
( url, truncateLen, ellipsisChars ) : String
Date: 2015-10-05\nAuthor: Kasper Søfren soefritz@gmai...

Date: 2015-10-05\nAuthor: Kasper Søfren soefritz@gmail.com (https://github.com/kafoso)

\n\n

A truncation feature, where the ellipsis will be placed in the dead-center of the URL.

\n

Parameters

  • url : String

    A URL.

    \n
  • truncateLen : Number

    The maximum length of the truncated output URL string.

    \n
  • ellipsisChars : String

    The characters to place within the url, e.g. \"..\".

    \n

Returns

  • String

    The truncated URL.

    \n
( url, truncateLen, ellipsisChars ) : String
Date: 2015-10-05\nAuthor: Kasper Søfren soefritz@gmai...

Date: 2015-10-05\nAuthor: Kasper Søfren soefritz@gmail.com (https://github.com/kafoso)

\n\n

A truncation feature, where the ellipsis will be placed at a section within\nthe URL making it still somewhat human readable.

\n

Parameters

  • url : String

    A URL.

    \n
  • truncateLen : Number

    The maximum length of the truncated output URL string.

    \n
  • ellipsisChars : String

    The characters to place within the url, e.g. \"...\".

    \n

Returns

  • String

    The truncated URL.

    \n
","meta":{}}); \ No newline at end of file +Ext.data.JsonP.global({"tagname":"class","name":"global","alternateClassNames":[],"members":[{"name":"alphaCharsAndMarksStr","tagname":"property","owner":"global","id":"property-alphaCharsAndMarksStr","meta":{}},{"name":"alphaCharsStr","tagname":"property","owner":"global","id":"property-alphaCharsStr","meta":{}},{"name":"alphaNumericAndMarksCharsStr","tagname":"property","owner":"global","id":"property-alphaNumericAndMarksCharsStr","meta":{}},{"name":"alphaNumericCharsStr","tagname":"property","owner":"global","id":"property-alphaNumericCharsStr","meta":{}},{"name":"controlCharsRe","tagname":"property","owner":"global","id":"property-controlCharsRe","meta":{}},{"name":"decimalNumbersStr","tagname":"property","owner":"global","id":"property-decimalNumbersStr","meta":{}},{"name":"digitRe","tagname":"property","owner":"global","id":"property-digitRe","meta":{}},{"name":"domainNameCharRegex","tagname":"property","owner":"global","id":"property-domainNameCharRegex","meta":{}},{"name":"domainNameRegex","tagname":"property","owner":"global","id":"property-domainNameRegex","meta":{}},{"name":"emojiStr","tagname":"property","owner":"global","id":"property-emojiStr","meta":{}},{"name":"htmlCharacterEntitiesRegex","tagname":"property","owner":"global","id":"property-htmlCharacterEntitiesRegex","meta":{"private":true}},{"name":"htmlRegex","tagname":"property","owner":"global","id":"property-htmlRegex","meta":{"private":true}},{"name":"letterRe","tagname":"property","owner":"global","id":"property-letterRe","meta":{}},{"name":"marksStr","tagname":"property","owner":"global","id":"property-marksStr","meta":{}},{"name":"quoteRe","tagname":"property","owner":"global","id":"property-quoteRe","meta":{}},{"name":"whitespaceRe","tagname":"property","owner":"global","id":"property-whitespaceRe","meta":{}},{"name":"captureTagName","tagname":"method","owner":"global","id":"method-captureTagName","meta":{}},{"name":"defaults","tagname":"method","owner":"global","id":"method-defaults","meta":{}},{"name":"ellipsis","tagname":"method","owner":"global","id":"method-ellipsis","meta":{}},{"name":"emitTagAndPreviousTextNode","tagname":"method","owner":"global","id":"method-emitTagAndPreviousTextNode","meta":{}},{"name":"getDomainNameStr","tagname":"method","owner":"global","id":"method-getDomainNameStr","meta":{}},{"name":"indexOf","tagname":"method","owner":"global","id":"method-indexOf","meta":{}},{"name":"parseHtml","tagname":"method","owner":"global","id":"method-parseHtml","meta":{}},{"name":"reconsumeCurrentCharacter","tagname":"method","owner":"global","id":"method-reconsumeCurrentCharacter","meta":{}},{"name":"remove","tagname":"method","owner":"global","id":"method-remove","meta":{}},{"name":"resetToDataState","tagname":"method","owner":"global","id":"method-resetToDataState","meta":{}},{"name":"splitAndCapture","tagname":"method","owner":"global","id":"method-splitAndCapture","meta":{}},{"name":"startNewTag","tagname":"method","owner":"global","id":"method-startNewTag","meta":{}},{"name":"stateDoctype","tagname":"method","owner":"global","id":"method-stateDoctype","meta":{}},{"name":"throwUnhandledCaseError","tagname":"method","owner":"global","id":"method-throwUnhandledCaseError","meta":{}},{"name":"truncateEnd","tagname":"method","owner":"global","id":"method-truncateEnd","meta":{}},{"name":"truncateMiddle","tagname":"method","owner":"global","id":"method-truncateMiddle","meta":{}},{"name":"truncateSmart","tagname":"method","owner":"global","id":"method-truncateSmart","meta":{}}],"aliases":{},"files":[{"filename":"","href":""}],"component":false,"superclasses":[],"subclasses":[],"mixedInto":[],"mixins":[],"parentMixins":[],"requires":[],"uses":[],"html":"

Global variables and functions.

\n
Defined By

Properties

The string form of a regular expression that would match all of the\nalphabetic (\"letter\") chars, emoji, and combining...

The string form of a regular expression that would match all of the\nalphabetic (\"letter\") chars, emoji, and combining marks in the unicode character set\nwhen placed in a RegExp character class ([]). This includes all\ninternational alphabetic characters.

\n\n

These would be the characters matched by unicode regex engines \\p{L}\\p{M}\nescapes and emoji characters.

\n
The string form of a regular expression that would match all of the\nalphabetic (\"letter\") chars in the unicode charac...

The string form of a regular expression that would match all of the\nalphabetic (\"letter\") chars in the unicode character set when placed in a\nRegExp character class ([]). This includes all international alphabetic\ncharacters.

\n\n

These would be the characters matched by unicode regex engines \\p{L}\nescape (\"all letters\").

\n\n

Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\nSpecifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Letter'\n regex's bmp

\n\n

VERY IMPORTANT: This set of characters is defined inside of a Regular\n Expression literal rather than a string literal to prevent UglifyJS from\n compressing the unicode escape sequences into their actual unicode\n characters. If Uglify compresses these into the unicode characters\n themselves, this results in the error \"Range out of order in character\n class\" when these characters are used inside of a Regular Expression\n character class ([]). See usages of this const. Alternatively, we can set\n the UglifyJS option ascii_only to true for the build, but that doesn't\n help others who are pulling in Autolinker into their own build and running\n UglifyJS themselves.

\n
The string form of a regular expression that would match all of the\nletters, combining marks, and decimal number char...

The string form of a regular expression that would match all of the\nletters, combining marks, and decimal number chars in the unicode character\nset when placed in a RegExp character class ([]).

\n\n

These would be the characters matched by unicode regex engines\n[\\p{L}\\p{M}\\p{Nd}] escape (\"all letters, combining marks, and decimal\nnumbers\")

\n
The string form of a regular expression that would match all of the\nletters and decimal number chars in the unicode c...

The string form of a regular expression that would match all of the\nletters and decimal number chars in the unicode character set when placed in\na RegExp character class ([]).

\n\n

These would be the characters matched by unicode regex engines\n[\\p{L}\\p{Nd}] escape (\"all letters and decimal numbers\")

\n
Regular expression to match the range of ASCII control characters (0-31), and\nthe backspace char (127) ...

Regular expression to match the range of ASCII control characters (0-31), and\nthe backspace char (127)

\n

Defaults to: /[\\x00-\\x1F\\x7F]/

The string form of a regular expression that would match all of the\ndecimal number chars in the unicode character set...

The string form of a regular expression that would match all of the\ndecimal number chars in the unicode character set when placed in a RegExp\ncharacter class ([]).

\n\n

These would be the characters matched by unicode regex engines \\p{Nd}\nescape (\"all decimal numbers\")

\n\n

Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\nSpecifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Decimal_Number'\n regex's bmp

\n\n

VERY IMPORTANT: This set of characters is defined inside of a Regular\n Expression literal rather than a string literal to prevent UglifyJS from\n compressing the unicode escape sequences into their actual unicode\n characters. If Uglify compresses these into the unicode characters\n themselves, this results in the error \"Range out of order in character\n class\" when these characters are used inside of a Regular Expression\n character class ([]). See usages of this const. Alternatively, we can set\n the UglifyJS option ascii_only to true for the build, but that doesn't\n help others who are pulling in Autolinker into their own build and running\n UglifyJS themselves.

\n
: RegExp
Regular expression to match ASCII digits ...

Regular expression to match ASCII digits

\n

Defaults to: /[0-9]/

A regular expression that is simply the character class of the characters\nthat may be used in a domain name, minus th...

A regular expression that is simply the character class of the characters\nthat may be used in a domain name, minus the '-' or '.'

\n
A regular expression to match domain names of a URL or email address. ...

A regular expression to match domain names of a URL or email address.\nEx: 'google', 'yahoo', 'some-other-company', etc.

\n
: Object
The string form of a regular expression that would match all emoji characters\nBased on the emoji regex defined in thi...

The string form of a regular expression that would match all emoji characters\nBased on the emoji regex defined in this article: https://thekevinscott.com/emojis-in-javascript/

\n
The regular expression that matches common HTML character entities. ...

The regular expression that matches common HTML character entities.

\n\n

Ignoring & as it could be part of a query string -- handling it separately.

\n

Defaults to: /(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi

: RegExpprivate
The regular expression used to pull out HTML tags from a string. ...

The regular expression used to pull out HTML tags from a string. Handles namespaced HTML tags and\nattribute names, as specified by http://www.w3.org/TR/html-markup/syntax.html.

\n\n

Capturing groups:

\n\n
    \n
  1. The \"!DOCTYPE\" tag name, if a tag is a <!DOCTYPE> tag.
  2. \n
  3. If it is an end tag, this group will have the '/'.
  4. \n
  5. If it is a comment tag, this group will hold the comment text (i.e.\nthe text inside the &lt;!-- and --&gt;.
  6. \n
  7. The tag name for a tag without attributes (other than the <!DOCTYPE> tag)
  8. \n
  9. The tag name for a tag with attributes (other than the <!DOCTYPE> tag)
  10. \n
\n\n
: RegExp
Regular expression to match upper and lowercase ASCII letters ...

Regular expression to match upper and lowercase ASCII letters

\n

Defaults to: /[A-Za-z]/

: Object
The string form of a regular expression that would match all of the\ncombining mark characters in the unicode characte...

The string form of a regular expression that would match all of the\ncombining mark characters in the unicode character set when placed in a\nRegExp character class ([]).

\n\n

These would be the characters matched by unicode regex engines \\p{M}\nescape (\"all marks\").

\n\n

Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\nSpecifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Mark'\n regex's bmp

\n\n

VERY IMPORTANT: This set of characters is defined inside of a Regular\n Expression literal rather than a string literal to prevent UglifyJS from\n compressing the unicode escape sequences into their actual unicode\n characters. If Uglify compresses these into the unicode characters\n themselves, this results in the error \"Range out of order in character\n class\" when these characters are used inside of a Regular Expression\n character class ([]). See usages of this const. Alternatively, we can set\n the UglifyJS option ascii_only to true for the build, but that doesn't\n help others who are pulling in Autolinker into their own build and running\n UglifyJS themselves.

\n
: RegExp
Regular expression to match quote characters ...

Regular expression to match quote characters

\n

Defaults to: /['"]/

Regular expression to match whitespace ...

Regular expression to match whitespace

\n

Defaults to: /\\s/

Defined By

Methods

Captures the tag name from the start of the tag to the current character\nindex, and converts it to lower case ...

Captures the tag name from the start of the tag to the current character\nindex, and converts it to lower case

\n
( dest, src ) : Object
Assigns (shallow copies) the properties of src onto dest, if the\ncorresponding property on dest === undefined. ...

Assigns (shallow copies) the properties of src onto dest, if the\ncorresponding property on dest === undefined.

\n

Parameters

  • dest : Object

    The destination object.

    \n
  • src : Object

    The source object.

    \n

Returns

  • Object

    The destination object (dest)

    \n
( str, truncateLen, [ellipsisChars] )
Truncates the str at len - ellipsisChars.length, and adds the ellipsisChars to the\nend of the string (by default, two...

Truncates the str at len - ellipsisChars.length, and adds the ellipsisChars to the\nend of the string (by default, two periods: '..'). If the str length does not exceed\nlen, the string will be returned unchanged.

\n

Parameters

  • str : String

    The string to truncate and add an ellipsis to.

    \n
  • truncateLen : Number

    The length to truncate the string at.

    \n
  • ellipsisChars : String (optional)

    The ellipsis character(s) to add to the end of str\n when truncated. Defaults to '...'

    \n

    Defaults to: ...

Once we've decided to emit an open tag, that means we can also emit the\ntext node before it. ...

Once we've decided to emit an open tag, that means we can also emit the\ntext node before it.

\n
A function to match domain names of a URL or email address. ...

A function to match domain names of a URL or email address.\nEx: 'google', 'yahoo', 'some-other-company', etc.

\n

Parameters

  • group : Object
( arr, element ) : Number
Supports Array.prototype.indexOf() functionality for old IE (IE8 and below). ...

Supports Array.prototype.indexOf() functionality for old IE (IE8 and below).

\n

Parameters

  • arr : Array

    The array to find an element of.

    \n
  • element : *

    The element to find in the array, and return the index of.

    \n

Returns

  • Number

    The index of the element, or -1 if it was not found.

    \n
( html, callbacks )
Parses an HTML string, calling the callbacks to notify of tags and text. ...

Parses an HTML string, calling the callbacks to notify of tags and text.

\n\n

History

\n\n

This file previously used a regular expression to find html tags in the input\ntext. Unfortunately, we ran into a bunch of catastrophic backtracking issues\nwith certain input text, causing Autolinker to either hang or just take a\nreally long time to parse the string.

\n\n

The current code is intended to be a O(n) algorithm that walks through\nthe string in one pass, and tries to be as cheap as possible. We don't need\nto implement the full HTML spec, but rather simply determine where the string\nlooks like an HTML tag, and where it looks like text (so that we can autolink\nthat).

\n\n

This state machine parser is intended just to be a simple but performant\nparser of HTML for the subset of requirements we have. We simply need to:

\n\n
    \n
  1. Determine where HTML tags are
  2. \n
  3. Determine the tag name (Autolinker specifically only cares about ,\n
  4. \n
\n\n\n

We don't need to:

\n\n
    \n
  1. Create a parse tree
  2. \n
  3. Auto-close tags with invalid markup
  4. \n
  5. etc.
  6. \n
\n\n\n

The other intention behind this is that we didn't want to add external\ndependencies on the Autolinker utility which would increase its size. For\ninstance, adding htmlparser2 adds 125kb to the minified output file,\nincreasing its final size from 47kb to 172kb (at the time of writing). It\nalso doesn't work exactly correctly, treating the string \"<3 blah blah blah\"\nas an HTML tag.

\n\n

Reference for HTML spec:

\n\n
https://www.w3.org/TR/html51/syntax.html#sec-tokenization\n
\n

Parameters

  • html : String

    The HTML to parse

    \n
  • callbacks : Object
    \n
    • onOpenTag : Function

      Callback function to call when an open\n tag is parsed. Called with the tagName as its argument.

      \n
    • onCloseTag : Function

      Callback function to call when a close\n tag is parsed. Called with the tagName as its argument. If a self-closing\n tag is found, onCloseTag is called immediately after onOpenTag.

      \n
    • onText : Function

      Callback function to call when text (i.e\n not an HTML tag) is parsed. Called with the text (string) as its first\n argument, and offset (number) into the string as its second.

      \n
Causes the main loop to re-consume the current character, such as after\nencountering a \"parse error\" that changed sta...

Causes the main loop to re-consume the current character, such as after\nencountering a \"parse error\" that changed state and needs to reconsume\nthe same character in that new state.

\n
( arr, fn ) : Array
Removes array elements based on a filtering function. ...

Removes array elements based on a filtering function. Mutates the input\narray.

\n\n

Using this instead of the ES5 Array.prototype.filter() function, to allow\nAutolinker compatibility with IE8, and also to prevent creating many new\narrays in memory for filtering.

\n

Parameters

  • arr : Array

    The array to remove elements from. This array is\n mutated.

    \n
  • fn : Function

    A function which should return true to\n remove an element.

    \n

Returns

  • Array

    The mutated input arr.

    \n
Resets the state back to the Data state, and removes the current tag. ...

Resets the state back to the Data state, and removes the current tag.

\n\n

We'll generally run this function whenever a \"parse error\" is\nencountered, where the current tag that is being read no longer looks\nlike a real HTML tag.

\n
( str, splitRegex ) : String[]
Performs the functionality of what modern browsers do when String.prototype.split() is called\nwith a regular expressi...

Performs the functionality of what modern browsers do when String.prototype.split() is called\nwith a regular expression that contains capturing parenthesis.

\n\n

For example:

\n\n
// Modern browsers:\n\"a,b,c\".split( /(,)/ );  // --> [ 'a', ',', 'b', ',', 'c' ]\n\n// Old IE (including IE8):\n\"a,b,c\".split( /(,)/ );  // --> [ 'a', 'b', 'c' ]\n
\n\n

This method emulates the functionality of modern browsers for the old IE case.

\n

Parameters

  • str : String

    The string to split.

    \n
  • splitRegex : RegExp

    The regular expression to split the input str on. The splitting\n character(s) will be spliced into the array, as in the \"modern browsers\" example in the\n description of this method.\n Note #1: the supplied regular expression must have the 'g' flag specified.\n Note #2: for simplicity's sake, the regular expression does not need\n to contain capturing parenthesis - it will be assumed that any match has them.

    \n

Returns

  • String[]

    The split array of strings, with the splitting character(s) included.

    \n
Starts a new HTML tag at the current index, ignoring any previous HTML\ntag that was being read. ...

Starts a new HTML tag at the current index, ignoring any previous HTML\ntag that was being read.

\n\n

We'll generally run this function whenever we read a new '<' character,\nincluding when we read a '<' character inside of an HTML tag that we were\npreviously reading.

\n
For DOCTYPES in particular, we don't care about the attributes. ...

For DOCTYPES in particular, we don't care about the attributes. Just\nadvance to the '>' character and emit the tag, unless we find a '<'\ncharacter in which case we'll start a new tag.

\n\n

Example doctype tag:\n <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">

\n\n

Actual spec: https://www.w3.org/TR/html51/syntax.html#doctype-state

\n

Parameters

  • char : Object
Function that should never be called but is used to check that every\nenum value is handled using TypeScript's 'never'...

Function that should never be called but is used to check that every\nenum value is handled using TypeScript's 'never' type.

\n

Parameters

  • theValue : Object
( anchorText, truncateLen, ellipsisChars ) : String
A truncation feature where the ellipsis will be placed at the end of the URL. ...

A truncation feature where the ellipsis will be placed at the end of the URL.

\n

Parameters

  • anchorText : String
    \n
  • truncateLen : Number

    The maximum length of the truncated output URL string.

    \n
  • ellipsisChars : String

    The characters to place within the url, e.g. \"..\".

    \n

Returns

  • String

    The truncated URL.

    \n
( url, truncateLen, ellipsisChars ) : String
Date: 2015-10-05\nAuthor: Kasper Søfren soefritz@gmai...

Date: 2015-10-05\nAuthor: Kasper Søfren soefritz@gmail.com (https://github.com/kafoso)

\n\n

A truncation feature, where the ellipsis will be placed in the dead-center of the URL.

\n

Parameters

  • url : String

    A URL.

    \n
  • truncateLen : Number

    The maximum length of the truncated output URL string.

    \n
  • ellipsisChars : String

    The characters to place within the url, e.g. \"..\".

    \n

Returns

  • String

    The truncated URL.

    \n
( url, truncateLen, ellipsisChars ) : String
Date: 2015-10-05\nAuthor: Kasper Søfren soefritz@gmai&#...

Date: 2015-10-05\nAuthor: Kasper Søfren soefritz@gmail.com (https://github.com/kafoso)

\n\n

A truncation feature, where the ellipsis will be placed at a section within\nthe URL making it still somewhat human readable.

\n

Parameters

  • url : String

    A URL.

    \n
  • truncateLen : Number

    The maximum length of the truncated output URL string.

    \n
  • ellipsisChars : String

    The characters to place within the url, e.g. \"...\".

    \n

Returns

  • String

    The truncated URL.

    \n
","meta":{}}); \ No newline at end of file diff --git a/docs/api/source/Autolinker.html b/docs/api/source/Autolinker.html index 3c2ee99a..d4efb9e3 100644 --- a/docs/api/source/Autolinker.html +++ b/docs/api/source/Autolinker.html @@ -859,7 +859,7 @@ * * Ex: 0.25.1 */ - Autolinker.version = '3.11.0'; + Autolinker.version = '3.11.1'; /** * For backwards compatibility with Autolinker 1.x, the AnchorTagBuilder * class is provided as a static on the Autolinker class. diff --git a/docs/api/source/regex-lib.html b/docs/api/source/regex-lib.html index 1e2fc81c..dbe298db 100644 --- a/docs/api/source/regex-lib.html +++ b/docs/api/source/regex-lib.html @@ -73,9 +73,9 @@ .source; // see note in above variable description /** * The string form of a regular expression that would match all emoji characters - * Source: https://www.regextester.com/106421 + * Based on the emoji regex defined in this article: https://thekevinscott.com/emojis-in-javascript/ */ -exports.emojiStr = /\u00a9\u00ae\u2000-\u3300\ud83c\ud000-\udfff\ud83d\ud000-\udfff\ud83e\ud000-\udfff/ +exports.emojiStr = /\u2700-\u27bf\udde6-\uddff\ud800-\udbff\udc00-\udfff\ufe0e\ufe0f\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0\ud83c\udffb-\udfff\u200d\u3299\u3297\u303d\u3030\u24c2\ud83c\udd70-\udd71\udd7e-\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01-\ude02\ude1a\ude2f\ude32-\ude3a\ude50-\ude51\u203c\u2049\u25aa-\u25ab\u25b6\u25c0\u25fb-\u25fe\u00a9\u00ae\u2122\u2139\udc04\u2600-\u26FF\u2b05\u2b06\u2b07\u2b1b\u2b1c\u2b50\u2b55\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\udccf\u2935\u2934\u2190-\u21ff/ .source; /** * The string form of a regular expression that would match all of the diff --git a/docs/dist/Autolinker.js b/docs/dist/Autolinker.js index 9e8acd52..6be9b14e 100644 --- a/docs/dist/Autolinker.js +++ b/docs/dist/Autolinker.js @@ -1,6 +1,6 @@ /*! * Autolinker.js - * 3.11.0 + * 3.11.1 * * Copyright(c) 2019 Gregory Jacobs * MIT License @@ -4168,7 +4168,7 @@ * * Ex: 0.25.1 */ - Autolinker.version = '3.11.0'; + Autolinker.version = '3.11.1'; /** * For backwards compatibility with Autolinker 1.x, the AnchorTagBuilder * class is provided as a static on the Autolinker class. diff --git a/docs/dist/Autolinker.min.js b/docs/dist/Autolinker.min.js index ec011435..23f20b26 100644 --- a/docs/dist/Autolinker.min.js +++ b/docs/dist/Autolinker.min.js @@ -1,25 +1,11 @@ /*! * Autolinker.js - * 3.11.0 + * 3.11.1 * * Copyright(c) 2019 Gregory Jacobs * MIT License * * https://github.com/gregjacobs/Autolinker.js */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Autolinker=t()}(this,function(){"use strict";function s(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var u=0,n=e.length;u",this.getInnerHtml(),""].join("")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var e=this.getAttrs(),t=[];for(var u in e)e.hasOwnProperty(u)&&t.push(u+'="'+e[u]+'"');return t.join(" ")},e);function e(e){void 0===e&&(e={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=e.tagName||"",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||""}var n=(r.prototype.build=function(e){return new u({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},r.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},u=this.createCssClass(e);return u&&(t.class=u),this.newWindow&&(t.target="_blank",t.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length=h)return l.host.length==t?(l.host.substr(0,t-n)+i).substr(0,h+u):a(g,h).substr(0,h+u);var f="";if(l.path&&(f+="/"+l.path),l.query&&(f+="?"+l.query),f){if(h<=(g+f).length)return(g+f).length==t?(g+f).substr(0,t):(g+a(f,h-g.length)).substr(0,h+u);g+=f}if(l.fragment){var d="#"+l.fragment;if(h<=(g+d).length)return(g+d).length==t?(g+d).substr(0,t):(g+a(d,h-g.length)).substr(0,h+u);g+=d}if(l.scheme&&l.host){var m=l.scheme+"://";if((g+m).lengtht&&(n=null==u?(u="…",3):u.length,e=e.substring(0,t-n)+u),e}(e,t,u)}(e,u)},r);function r(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}var a=(i.prototype.getMatchedText=function(){return this.matchedText},i.prototype.setOffset=function(e){this.offset=e},i.prototype.getOffset=function(){return this.offset},i.prototype.getCssClassSuffixes=function(){return[this.getType()]},i.prototype.buildTag=function(){return this.tagBuilder.build(this)},i); -/*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */function i(e){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}var o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var u in t)t.hasOwnProperty(u)&&(e[u]=t[u])})(e,t)};function c(e,t){function u(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(u.prototype=t.prototype,new u)}var h,_=function(){return(_=Object.assign||function(e){for(var t,u=1,n=arguments.length;u"===e?(g=new ce(_({},g,{name:H()})),O()):W.test(e)||I.test(e)||":"===e||N()}function b(e){">"===e?N():W.test(e)?l=3:N()}function x(e){L.test(e)||("/"===e?l=12:">"===e?O():"<"===e?S():"="===e||$.test(e)||Z.test(e)?N():l=5)}function v(e){L.test(e)?l=6:"/"===e?l=12:"="===e?l=7:">"===e?O():"<"===e?S():$.test(e)&&N()}function y(e){L.test(e)||("/"===e?l=12:"="===e?l=7:">"===e?O():"<"===e?S():$.test(e)?N():l=5)}function F(e){L.test(e)||('"'===e?l=8:"'"===e?l=9:/[>=`]/.test(e)?N():"<"===e?S():l=10)}function w(e){'"'===e&&(l=11)}function B(e){"'"===e&&(l=11)}function C(e){L.test(e)?l=4:">"===e?O():"<"===e&&S()}function D(e){L.test(e)?l=4:"/"===e?l=12:">"===e?O():"<"===e?S():(l=4,c--)}function E(e){">"===e?(g=new ce(_({},g,{isClosing:!0})),O()):l=4}function k(){"--"===t.substr(c,2)?(c+=2,g=new ce(_({},g,{type:"comment"})),l=14):"DOCTYPE"===t.substr(c,7).toUpperCase()?(c+=7,g=new ce(_({},g,{type:"doctype"})),l=20):N()}function T(e){"-"===e?l=15:">"===e?N():l=16}function M(e){"-"===e?l=18:">"===e?N():l=16}function P(e){"-"===e&&(l=17)}function j(e){l="-"===e?18:16}function z(e){">"===e?O():"!"===e?l=19:"-"===e||(l=16)}function R(e){"-"===e?l=17:">"===e?O():l=16}function q(e){">"===e?O():"<"===e&&S()}function N(){l=0,g=o}function S(){l=1,g=new ce({idx:c})}function O(){var e=t.slice(p,g.idx);e&&a(e,p),"comment"===g.type?i(g.idx):"doctype"===g.type?s(g.idx):(g.isOpening&&n(g.name,g.idx),g.isClosing&&r(g.name,g.idx)),N(),p=c+1}function H(){var e=g.idx+(g.isClosing?2:1);return t.slice(e,c).toLowerCase()}pr?t:t+1;e.splice(i,1);continue}e[t+1].getOffset()",this.getInnerHtml(),""].join("")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var e=this.getAttrs(),t=[];for(var u in e)e.hasOwnProperty(u)&&t.push(u+'="'+e[u]+'"');return t.join(" ")},e}();var r=function(){function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}return e.prototype.build=function(e){return new u({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},e.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},u=this.createCssClass(e);return u&&(t.class=u),this.newWindow&&(t.target="_blank",t.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length=h)return l.host.length==t?(l.host.substr(0,t-n)+i).substr(0,h+u):a(g,h).substr(0,h+u);var f="";if(l.path&&(f+="/"+l.path),l.query&&(f+="?"+l.query),f){if(h<=(g+f).length)return(g+f).length==t?(g+f).substr(0,t):(g+a(f,h-g.length)).substr(0,h+u);g+=f}if(l.fragment){var d="#"+l.fragment;if(h<=(g+d).length)return(g+d).length==t?(g+d).substr(0,t):(g+a(d,h-g.length)).substr(0,h+u);g+=d}if(l.scheme&&l.host){var m=l.scheme+"://";if((g+m).lengthr&&(i=null==a?(a="…",3):a.length,n=n.substring(0,r-i)+a),n)},e}(),e=function(){function e(e){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(e){this.offset=e},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.getType()]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}(),n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var u in t)t.hasOwnProperty(u)&&(e[u]=t[u])})(e,t)};function a(e,t){function u(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(u.prototype=t.prototype,new u)}var _=function(){return(_=Object.assign||function(e){for(var t,u=1,n=arguments.length;u"===e?(g=new V(_({},g,{name:H()})),O()):W.test(e)||I.test(e)||":"===e||N()}function b(e){">"===e?N():W.test(e)?l=3:N()}function x(e){L.test(e)||("/"===e?l=12:">"===e?O():"<"===e?S():"="===e||$.test(e)||Z.test(e)?N():l=5)}function y(e){L.test(e)?l=6:"/"===e?l=12:"="===e?l=7:">"===e?O():"<"===e?S():$.test(e)&&N()}function F(e){L.test(e)||("/"===e?l=12:"="===e?l=7:">"===e?O():"<"===e?S():$.test(e)?N():l=5)}function v(e){L.test(e)||('"'===e?l=8:"'"===e?l=9:/[>=`]/.test(e)?N():"<"===e?S():l=10)}function w(e){'"'===e&&(l=11)}function B(e){"'"===e&&(l=11)}function C(e){L.test(e)?l=4:">"===e?O():"<"===e&&S()}function D(e){L.test(e)?l=4:"/"===e?l=12:">"===e?O():"<"===e?S():(l=4,c--)}function E(e){">"===e?(g=new V(_({},g,{isClosing:!0})),O()):l=4}function k(e){"--"===t.substr(c,2)?(c+=2,g=new V(_({},g,{type:"comment"})),l=14):"DOCTYPE"===t.substr(c,7).toUpperCase()?(c+=7,g=new V(_({},g,{type:"doctype"})),l=20):N()}function T(e){"-"===e?l=15:">"===e?N():l=16}function M(e){"-"===e?l=18:">"===e?N():l=16}function P(e){"-"===e&&(l=17)}function j(e){l="-"===e?18:16}function z(e){">"===e?O():"!"===e?l=19:"-"===e||(l=16)}function R(e){"-"===e?l=17:">"===e?O():l=16}function q(e){">"===e?O():"<"===e&&S()}function N(){l=0,g=o}function S(){l=1,g=new V({idx:c})}function O(){var e=t.slice(p,g.idx);e&&a(e,p),"comment"===g.type?i(g.idx):"doctype"===g.type?s(g.idx):(g.isOpening&&n(g.name,g.idx),g.isClosing&&r(g.name,g.idx)),N(),p=c+1}function H(){var e=g.idx+(g.isClosing?2:1);return t.slice(e,c).toLowerCase()}pr?t:t+1;e.splice(i,1);continue}e[t+1].getOffset()