diff --git a/README.md b/README.md index 2a92f14d..c444b2c1 100644 --- a/README.md +++ b/README.md @@ -530,9 +530,8 @@ To run the tests: yarn test ``` -- Make sure to add tests to cover your new functionality/bugfix. -- Run the `yarn test` command to build/test (or alternatively, open the - `tests/index.html` file to run the tests). +- Make sure to add tests to cover your new functionality/bugfix +- Run the `yarn test` command to build/test - Please use tabs for indents! Tabs are better for everybody (individuals can set their editors to different tab sizes based on their visual preferences). diff --git a/dist/Autolinker.js b/dist/Autolinker.js index 79e5abd3..b34ad8f6 100644 --- a/dist/Autolinker.js +++ b/dist/Autolinker.js @@ -1,8 +1,8 @@ /*! * Autolinker.js - * 2.2.1 + * 2.2.2 * - * Copyright(c) 2018 Gregory Jacobs + * Copyright(c) 2019 Gregory Jacobs * MIT License * * https://github.com/gregjacobs/Autolinker.js @@ -805,6 +805,35 @@ return AnchorTagBuilder; }()); + /*! ***************************************************************************** + 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. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + /** * @abstract * @class Autolinker.htmlParser.HtmlNode @@ -873,19 +902,6 @@ return HtmlNode; }()); - var __extends = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.htmlParser.CommentNode * @extends Autolinker.htmlParser.HtmlNode @@ -934,19 +950,6 @@ return CommentNode; }(HtmlNode)); - var __extends$1 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.htmlParser.ElementNode * @extends Autolinker.htmlParser.HtmlNode @@ -957,7 +960,7 @@ * details. */ var ElementNode = /** @class */ (function (_super) { - __extends$1(ElementNode, _super); + __extends(ElementNode, _super); /** * @method constructor * @param {Object} cfg The configuration options for this class, specified @@ -1011,19 +1014,6 @@ return ElementNode; }(HtmlNode)); - var __extends$2 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.htmlParser.EntityNode * @extends Autolinker.htmlParser.HtmlNode @@ -1039,7 +1029,7 @@ * details. */ var EntityNode = /** @class */ (function (_super) { - __extends$2(EntityNode, _super); + __extends(EntityNode, _super); function EntityNode() { return _super !== null && _super.apply(this, arguments) || this; } @@ -1054,19 +1044,6 @@ return EntityNode; }(HtmlNode)); - var __extends$3 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.htmlParser.TextNode * @extends Autolinker.htmlParser.HtmlNode @@ -1077,7 +1054,7 @@ * details. */ var TextNode = /** @class */ (function (_super) { - __extends$3(TextNode, _super); + __extends(TextNode, _super); function TextNode() { return _super !== null && _super.apply(this, arguments) || this; } @@ -1484,19 +1461,6 @@ return Match; }()); - var __extends$4 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.match.Email * @extends Autolinker.match.Match @@ -1506,7 +1470,7 @@ * See this class's superclass ({@link Autolinker.match.Match}) for more details. */ var EmailMatch = /** @class */ (function (_super) { - __extends$4(EmailMatch, _super); + __extends(EmailMatch, _super); /** * @method constructor * @param {Object} cfg The configuration properties for the Match @@ -1558,19 +1522,6 @@ return EmailMatch; }(Match)); - var __extends$5 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.match.Hashtag * @extends Autolinker.match.Match @@ -1582,7 +1533,7 @@ * details. */ var HashtagMatch = /** @class */ (function (_super) { - __extends$5(HashtagMatch, _super); + __extends(HashtagMatch, _super); /** * @method constructor * @param {Object} cfg The configuration properties for the Match @@ -1661,19 +1612,6 @@ return HashtagMatch; }(Match)); - var __extends$6 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.match.Mention * @extends Autolinker.match.Match @@ -1683,7 +1621,7 @@ * See this class's superclass ({@link Autolinker.match.Match}) for more details. */ var MentionMatch = /** @class */ (function (_super) { - __extends$6(MentionMatch, _super); + __extends(MentionMatch, _super); /** * @method constructor * @param {Object} cfg The configuration properties for the Match @@ -1775,19 +1713,6 @@ return MentionMatch; }(Match)); - var __extends$7 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.match.Phone * @extends Autolinker.match.Match @@ -1799,7 +1724,7 @@ * details. */ var PhoneMatch = /** @class */ (function (_super) { - __extends$7(PhoneMatch, _super); + __extends(PhoneMatch, _super); /** * @method constructor * @param {Object} cfg The configuration properties for the Match @@ -1879,19 +1804,6 @@ return PhoneMatch; }(Match)); - var __extends$8 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.match.Url * @extends Autolinker.match.Match @@ -1901,7 +1813,7 @@ * See this class's superclass ({@link Autolinker.match.Match}) for more details. */ var UrlMatch = /** @class */ (function (_super) { - __extends$8(UrlMatch, _super); + __extends(UrlMatch, _super); /** * @method constructor * @param {Object} cfg The configuration properties for the Match @@ -2307,19 +2219,6 @@ // To update with the latest TLD list, run `npm run update-tld-regex` or `yarn update-tld-regex` (depending on which you have installed) 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|ελ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|工行|广东|微博|慈善|手机|手表|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|珠宝|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/; - var __extends$9 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.matcher.Email * @extends Autolinker.matcher.Matcher @@ -2329,7 +2228,7 @@ * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details. */ var EmailMatcher = /** @class */ (function (_super) { - __extends$9(EmailMatcher, _super); + __extends(EmailMatcher, _super); function EmailMatcher() { var _this = _super !== null && _super.apply(this, arguments) || this; /** @@ -2528,19 +2427,6 @@ return UrlMatchValidator; }()); - var __extends$a = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.matcher.Url * @extends Autolinker.matcher.Matcher @@ -2550,7 +2436,7 @@ * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details. */ var UrlMatcher = /** @class */ (function (_super) { - __extends$a(UrlMatcher, _super); + __extends(UrlMatcher, _super); /** * @method constructor * @param {Object} cfg The configuration properties for the Match instance, @@ -2804,19 +2690,6 @@ return UrlMatcher; }(Matcher)); - var __extends$b = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.matcher.Hashtag * @extends Autolinker.matcher.Matcher @@ -2824,7 +2697,7 @@ * Matcher to find HashtagMatch matches in an input string. */ var HashtagMatcher = /** @class */ (function (_super) { - __extends$b(HashtagMatcher, _super); + __extends(HashtagMatcher, _super); /** * @method constructor * @param {Object} cfg The configuration properties for the Match instance, @@ -2887,19 +2760,6 @@ return HashtagMatcher; }(Matcher)); - var __extends$c = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.matcher.Phone * @extends Autolinker.matcher.Matcher @@ -2910,7 +2770,7 @@ * details. */ var PhoneMatcher = /** @class */ (function (_super) { - __extends$c(PhoneMatcher, _super); + __extends(PhoneMatcher, _super); function PhoneMatcher() { var _this = _super !== null && _super.apply(this, arguments) || this; /** @@ -2958,19 +2818,6 @@ return PhoneMatcher; }(Matcher)); - var __extends$d = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); /** * @class Autolinker.matcher.Mention * @extends Autolinker.matcher.Matcher @@ -2978,7 +2825,7 @@ * Matcher to find/replace username matches in an input string. */ var MentionMatcher = /** @class */ (function (_super) { - __extends$d(MentionMatcher, _super); + __extends(MentionMatcher, _super); /** * @method constructor * @param {Object} cfg The configuration properties for the Match instance, @@ -3863,7 +3710,7 @@ * * Ex: 0.25.1 */ - Autolinker.version = '2.2.1'; + Autolinker.version = '2.2.2'; /** * 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 85dc188c..5fe1ca45 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/htmlParser/html-node.js","es2015/htmlParser/comment-node.js","es2015/htmlParser/element-node.js","es2015/htmlParser/entity-node.js","es2015/htmlParser/text-node.js","es2015/htmlParser/html-parser.js","es2015/match/match.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/autolinker.js"],"names":["this","__extends"],"mappings":"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,IAAI;IACZ;IACA,YAAY,OAAO,kBAAkB,CAAC,4BAA4B,CAAC,CAAC;IACpE,SAAS;IACT,QAAQ,OAAO,CAAC,EAAE;IAClB,YAAY,OAAO,4BAA4B,CAAC;IAChD,SAAS;IACT,KAAK,CAAC;IACN,IAAI,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;;IC3QV;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,kBAAkB,YAAY;IACzC;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,OAAO,CAAC,GAAG,EAAE;IAC1B;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IACzC,KAAK;IACL,IAAI,OAAO,OAAO,CAAC;IACnB,CAAC,EAAE,CAAC,CAAC;;IC3BL;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;AACA,IAAO,IAAI,aAAa,GAAG,2sIAA2sI;IACtuI,KAAK,MAAM,CAAC;IACZ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA,IAAO,IAAI,QAAQ,GAAG,yhEAAyhE;IAC/iE,KAAK,MAAM,CAAC;IACZ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA,IAAO,IAAI,qBAAqB,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC5D;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA,IAAO,IAAI,iBAAiB,GAAG,ydAAyd;IACxf,KAAK,MAAM,CAAC;IACZ;IACA;IACA;IACA;I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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;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,QAAQ,IAAI,C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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//# 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\";\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.htmlParser.HtmlNode\n *\n * Represents an HTML node found in an input string. An HTML node is one of the\n * following:\n *\n * 1. An {@link Autolinker.htmlParser.ElementNode ElementNode}, which represents\n * HTML tags.\n * 2. A {@link Autolinker.htmlParser.CommentNode CommentNode}, which represents\n * HTML comments.\n * 3. A {@link Autolinker.htmlParser.TextNode TextNode}, which represents text\n * outside or within HTML tags.\n * 4. A {@link Autolinker.htmlParser.EntityNode EntityNode}, which represents\n * one of the known HTML entities that Autolinker looks for. This includes\n * common ones such as &quot; and &nbsp;\n */\nvar HtmlNode = /** @class */ (function () {\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match instance,\n * specified in an Object (map).\n */\n function HtmlNode(cfg) {\n /**\n * @cfg {Number} offset (required)\n *\n * The offset of the HTML node in the original text that was parsed.\n */\n this.offset = 0; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} text (required)\n *\n * The text that was matched for the HtmlNode.\n *\n * - In the case of an {@link Autolinker.htmlParser.ElementNode ElementNode},\n * this will be the tag's text.\n * - In the case of an {@link Autolinker.htmlParser.CommentNode CommentNode},\n * this will be the comment's text.\n * - In the case of a {@link Autolinker.htmlParser.TextNode TextNode}, this\n * will be the text itself.\n * - In the case of a {@link Autolinker.htmlParser.EntityNode EntityNode},\n * this will be the text of the HTML entity.\n */\n this.text = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n this.offset = cfg.offset;\n this.text = cfg.text;\n }\n /**\n * Retrieves the {@link #offset} of the HtmlNode. This is the offset of the\n * HTML node in the original string that was parsed.\n *\n * @return {Number}\n */\n HtmlNode.prototype.getOffset = function () {\n return this.offset;\n };\n /**\n * Retrieves the {@link #text} for the HtmlNode.\n *\n * @return {String}\n */\n HtmlNode.prototype.getText = function () {\n return this.text;\n };\n return HtmlNode;\n}());\nexport { HtmlNode };\n\n//# sourceMappingURL=html-node.js.map\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { HtmlNode } from \"./html-node\";\n/**\n * @class Autolinker.htmlParser.CommentNode\n * @extends Autolinker.htmlParser.HtmlNode\n *\n * Represents an HTML comment node that has been parsed by the\n * {@link Autolinker.htmlParser.HtmlParser}.\n *\n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more\n * details.\n */\nvar CommentNode = /** @class */ (function (_super) {\n __extends(CommentNode, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration options for this class, specified\n * in an Object.\n */\n function CommentNode(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @cfg {String} comment (required)\n *\n * The text inside the comment tag. This text is stripped of any leading or\n * trailing whitespace.\n */\n _this.comment = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.comment = cfg.comment;\n return _this;\n }\n /**\n * Returns a string name for the type of node that this class represents.\n *\n * @return {String}\n */\n CommentNode.prototype.getType = function () {\n return 'comment';\n };\n /**\n * Returns the comment inside the comment tag.\n *\n * @return {String}\n */\n CommentNode.prototype.getComment = function () {\n return this.comment;\n };\n return CommentNode;\n}(HtmlNode));\nexport { CommentNode };\n\n//# sourceMappingURL=comment-node.js.map\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { HtmlNode } from \"./html-node\";\n/**\n * @class Autolinker.htmlParser.ElementNode\n * @extends Autolinker.htmlParser.HtmlNode\n *\n * Represents an HTML element node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}.\n *\n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more\n * details.\n */\nvar ElementNode = /** @class */ (function (_super) {\n __extends(ElementNode, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration options for this class, specified\n * in an Object.\n */\n function ElementNode(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @cfg {String} tagName (required)\n *\n * The name of the tag that was matched.\n */\n _this.tagName = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} closing (required)\n *\n * `true` if the element (tag) is a closing tag, `false` if its an opening\n * tag.\n */\n _this.closing = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.tagName = cfg.tagName;\n _this.closing = cfg.closing;\n return _this;\n }\n /**\n * Returns a string name for the type of node that this class represents.\n *\n * @return {String}\n */\n ElementNode.prototype.getType = function () {\n return 'element';\n };\n /**\n * Returns the HTML element's (tag's) name. Ex: for an <img> tag,\n * returns \"img\".\n *\n * @return {String}\n */\n ElementNode.prototype.getTagName = function () {\n return this.tagName;\n };\n /**\n * Determines if the HTML element (tag) is a closing tag. Ex: <div>\n * returns `false`, while </div> returns `true`.\n *\n * @return {Boolean}\n */\n ElementNode.prototype.isClosing = function () {\n return this.closing;\n };\n return ElementNode;\n}(HtmlNode));\nexport { ElementNode };\n\n//# sourceMappingURL=element-node.js.map\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { HtmlNode } from \"./html-node\";\n/**\n * @class Autolinker.htmlParser.EntityNode\n * @extends Autolinker.htmlParser.HtmlNode\n *\n * Represents a known HTML entity node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}.\n * Ex: '&nbsp;', or '&#160;' (which will be retrievable from the {@link #getText}\n * method.\n *\n * Note that this class will only be returned from the HtmlParser for the set of\n * checked HTML entity nodes defined by the {@link Autolinker.htmlParser.HtmlParser#htmlCharacterEntitiesRegex}.\n *\n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more\n * details.\n */\nvar EntityNode = /** @class */ (function (_super) {\n __extends(EntityNode, _super);\n function EntityNode() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns a string name for the type of node that this class represents.\n *\n * @return {String}\n */\n EntityNode.prototype.getType = function () {\n return 'entity';\n };\n return EntityNode;\n}(HtmlNode));\nexport { EntityNode };\n\n//# sourceMappingURL=entity-node.js.map\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { HtmlNode } from \"./html-node\";\n/**\n * @class Autolinker.htmlParser.TextNode\n * @extends Autolinker.htmlParser.HtmlNode\n *\n * Represents a text node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}.\n *\n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more\n * details.\n */\nvar TextNode = /** @class */ (function (_super) {\n __extends(TextNode, _super);\n function TextNode() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns a string name for the type of node that this class represents.\n *\n * @return {String}\n */\n TextNode.prototype.getType = function () {\n return 'text';\n };\n return TextNode;\n}(HtmlNode));\nexport { TextNode };\n\n//# sourceMappingURL=text-node.js.map\n","import { splitAndCapture } from \"../utils\";\nimport { CommentNode } from \"./comment-node\";\nimport { ElementNode } from \"./element-node\";\nimport { EntityNode } from \"./entity-node\";\nimport { TextNode } from \"./text-node\";\n/**\n * @private\n * @property {RegExp} htmlRegex\n *\n * The regular expression used to pull out HTML tags from a string. Handles namespaced HTML tags and\n * attribute names, as specified by http://www.w3.org/TR/html-markup/syntax.html.\n *\n * Capturing groups:\n *\n * 1. The \"!DOCTYPE\" tag name, if a tag is a <!DOCTYPE> tag.\n * 2. If it is an end tag, this group will have the '/'.\n * 3. If it is a comment tag, this group will hold the comment text (i.e.\n * the text inside the `<!--` and `-->`.\n * 4. The tag name for a tag without attributes (other than the <!DOCTYPE> tag)\n * 5. The tag name for a tag with attributes (other than the <!DOCTYPE> tag)\n */\nvar htmlRegex = (function () {\n var commentTagRegex = /!--([\\s\\S]+?)--/, tagNameRegex = /[0-9a-zA-Z][0-9a-zA-Z:]*/, attrNameRegex = /[^\\s\"'>\\/=\\x00-\\x1F\\x7F]+/, // the unicode range accounts for excluding control chars, and the delete char\n attrValueRegex = /(?:\"[^\"]*?\"|'[^']*?'|[^'\"=<>`\\s]+)/, // double quoted, single quoted, or unquoted attribute values\n optionalAttrValueRegex = '(?:\\\\s*?=\\\\s*?' + attrValueRegex.source + ')?'; // optional '=[value]'\n var getNameEqualsValueRegex = function (group) {\n return '(?=(' + attrNameRegex.source + '))\\\\' + group + optionalAttrValueRegex;\n };\n return new RegExp([\n // for tag. Ex: )\n '(?:',\n '<(!DOCTYPE)',\n // Zero or more attributes following the tag name\n '(?:',\n '\\\\s+',\n // Either:\n // A. attr=\"value\", or\n // B. \"value\" alone (To cover example doctype tag: )\n // *** Capturing Group 2 - Pseudo-atomic group for attrNameRegex\n '(?:', getNameEqualsValueRegex(2), '|', attrValueRegex.source + ')',\n ')*',\n '>',\n ')',\n '|',\n // All other HTML tags (i.e. tags that are not )\n '(?:',\n '<(/)?',\n // *** Capturing Group 3: The slash or an empty string. Slash ('/') for end tag, empty string for start or self-closing tag.\n '(?:',\n commentTagRegex.source,\n '|',\n // Handle tag without attributes.\n // Doing this separately from a tag that has attributes\n // to fix a regex time complexity issue seen with the\n // example in https://github.com/gregjacobs/Autolinker.js/issues/172\n '(?:',\n // *** Capturing Group 5 - The tag name for a tag without attributes\n '(' + tagNameRegex.source + ')',\n '\\\\s*/?',\n ')',\n '|',\n // Handle tag with attributes\n // Doing this separately from a tag with no attributes\n // to fix a regex time complexity issue seen with the\n // example in https://github.com/gregjacobs/Autolinker.js/issues/172\n '(?:',\n // *** Capturing Group 6 - The tag name for a tag with attributes\n '(' + tagNameRegex.source + ')',\n '\\\\s+',\n // Zero or more attributes following the tag name\n '(?:',\n '(?:\\\\s+|\\\\b)',\n // *** Capturing Group 7 - Pseudo-atomic group for attrNameRegex\n getNameEqualsValueRegex(7),\n ')*',\n '\\\\s*/?',\n ')',\n ')',\n '>',\n ')'\n ].join(\"\"), 'gi');\n})();\n/**\n * @private\n * @property {RegExp} htmlCharacterEntitiesRegex\n *\n * 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 */\nvar htmlCharacterEntitiesRegex = /( | |<|<|>|>|"|"|')/gi;\n/**\n * @class Autolinker.htmlParser.HtmlParser\n * @extends Object\n *\n * An HTML parser implementation which simply walks an HTML string and returns an array of\n * {@link Autolinker.htmlParser.HtmlNode HtmlNodes} that represent the basic HTML structure of the input string.\n *\n * Autolinker uses this to only link URLs/emails/mentions within text nodes, effectively ignoring / \"walking\n * around\" HTML tags.\n */\nvar HtmlParser = /** @class */ (function () {\n function HtmlParser() {\n }\n /**\n * Parses an HTML string and returns a simple array of {@link Autolinker.htmlParser.HtmlNode HtmlNodes}\n * to represent the HTML structure of the input string.\n *\n * @param {String} html The HTML to parse.\n * @return {Autolinker.htmlParser.HtmlNode[]}\n */\n HtmlParser.prototype.parse = function (html) {\n var currentResult, lastIndex = 0, textAndEntityNodes, nodes = []; // will be the result of the method\n while ((currentResult = htmlRegex.exec(html)) !== null) {\n var tagText = currentResult[0], commentText = currentResult[4], // if we've matched a comment\n tagName = currentResult[1] || currentResult[5] || currentResult[6], // The tag (ex: \"!DOCTYPE\"), or another tag (ex: \"a\" or \"img\")\n isClosingTag = !!currentResult[3], offset = currentResult.index, inBetweenTagsText = html.substring(lastIndex, offset);\n // Push TextNodes and EntityNodes for any text found between tags\n if (inBetweenTagsText) {\n textAndEntityNodes = this.parseTextAndEntityNodes(lastIndex, inBetweenTagsText);\n nodes.push.apply(nodes, textAndEntityNodes);\n }\n // Push the CommentNode or ElementNode\n if (commentText) {\n nodes.push(this.createCommentNode(offset, tagText, commentText));\n }\n else {\n nodes.push(this.createElementNode(offset, tagText, tagName, isClosingTag));\n }\n lastIndex = offset + tagText.length;\n }\n // Process any remaining text after the last HTML element. Will process all of the text if there were no HTML elements.\n if (lastIndex < html.length) {\n var text = html.substring(lastIndex);\n // Push TextNodes and EntityNodes for any text found between tags\n if (text) {\n textAndEntityNodes = this.parseTextAndEntityNodes(lastIndex, text);\n // Note: the following 3 lines were previously:\n // nodes.push.apply( nodes, textAndEntityNodes );\n // but this was causing a \"Maximum Call Stack Size Exceeded\"\n // error on inputs with a large number of html entities.\n textAndEntityNodes.forEach(function (node) { return nodes.push(node); });\n }\n }\n return nodes;\n };\n /**\n * Parses text and HTML entity nodes from a given string. The input string\n * should not have any HTML tags (elements) within it.\n *\n * @private\n * @param {Number} offset The offset of the text node match within the\n * original HTML string.\n * @param {String} text The string of text to parse. This is from an HTML\n * text node.\n * @return {Autolinker.htmlParser.HtmlNode[]} An array of HtmlNodes to\n * represent the {@link Autolinker.htmlParser.TextNode TextNodes} and\n * {@link Autolinker.htmlParser.EntityNode EntityNodes} found.\n */\n HtmlParser.prototype.parseTextAndEntityNodes = function (offset, text) {\n var nodes = [], textAndEntityTokens = splitAndCapture(text, htmlCharacterEntitiesRegex); // split at HTML entities, but include the HTML entities in the results array\n // Every even numbered token is a TextNode, and every odd numbered token is an EntityNode\n // For example: an input `text` of \"Test "this" today\" would turn into the\n // `textAndEntityTokens`: [ 'Test ', '"', 'this', '"', ' today' ]\n for (var i = 0, len = textAndEntityTokens.length; i < len; i += 2) {\n var textToken = textAndEntityTokens[i], entityToken = textAndEntityTokens[i + 1];\n if (textToken) {\n nodes.push(this.createTextNode(offset, textToken));\n offset += textToken.length;\n }\n if (entityToken) {\n nodes.push(this.createEntityNode(offset, entityToken));\n offset += entityToken.length;\n }\n }\n return nodes;\n };\n /**\n * Factory method to create an {@link Autolinker.htmlParser.CommentNode CommentNode}.\n *\n * @private\n * @param {Number} offset The offset of the match within the original HTML\n * string.\n * @param {String} tagText The full text of the tag (comment) that was\n * matched, including its <!-- and -->.\n * @param {String} commentText The full text of the comment that was matched.\n */\n HtmlParser.prototype.createCommentNode = function (offset, tagText, commentText) {\n return new CommentNode({\n offset: offset,\n text: tagText,\n comment: commentText.trim()\n });\n };\n /**\n * Factory method to create an {@link Autolinker.htmlParser.ElementNode ElementNode}.\n *\n * @private\n * @param {Number} offset The offset of the match within the original HTML\n * string.\n * @param {String} tagText The full text of the tag (element) that was\n * matched, including its attributes.\n * @param {String} tagName The name of the tag. Ex: An <img> tag would\n * be passed to this method as \"img\".\n * @param {Boolean} isClosingTag `true` if it's a closing tag, false\n * otherwise.\n * @return {Autolinker.htmlParser.ElementNode}\n */\n HtmlParser.prototype.createElementNode = function (offset, tagText, tagName, isClosingTag) {\n return new ElementNode({\n offset: offset,\n text: tagText,\n tagName: tagName.toLowerCase(),\n closing: isClosingTag\n });\n };\n /**\n * Factory method to create a {@link Autolinker.htmlParser.EntityNode EntityNode}.\n *\n * @private\n * @param {Number} offset The offset of the match within the original HTML\n * string.\n * @param {String} text The text that was matched for the HTML entity (such\n * as '&nbsp;').\n * @return {Autolinker.htmlParser.EntityNode}\n */\n HtmlParser.prototype.createEntityNode = function (offset, text) {\n return new EntityNode({ offset: offset, text: text });\n };\n /**\n * Factory method to create a {@link Autolinker.htmlParser.TextNode TextNode}.\n *\n * @private\n * @param {Number} offset The offset of the match within the original HTML\n * string.\n * @param {String} text The text that was matched.\n * @return {Autolinker.htmlParser.TextNode}\n */\n HtmlParser.prototype.createTextNode = function (offset, text) {\n return new TextNode({ offset: offset, text: text });\n };\n return HtmlParser;\n}());\nexport { HtmlParser };\n\n//# sourceMappingURL=html-parser.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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 __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 *\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 __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 the type of match that this class represents.\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 __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 the type of match that this class represents.\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 __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 *\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 __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 *\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 * 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 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 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.\n */\nexport var alphaCharsAndMarksStr = alphaCharsStr + 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//# 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr, getDomainNameStr } from \"../regex-lib\";\nimport { tldRegex } from \"./tld-regex\";\nimport { EmailMatch } from \"../match/email-match\";\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 __extends(EmailMatcher, _super);\n function EmailMatcher() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * The regular expression to match email addresses. Example match:\n *\n * person@place.com\n *\n * @protected\n * @property {RegExp} matcherRegex\n */\n _this.matcherRegex = (function () {\n var specialCharacters = '!#$%&\\'*+\\\\-\\\\/=?^_`{|}~', restrictedSpecialCharacters = '\\\\s\"(),:;<>@\\\\[\\\\]', validCharacters = alphaNumericAndMarksCharsStr + specialCharacters, validRestrictedCharacters = validCharacters + restrictedSpecialCharacters, emailRegex = new RegExp('(?:[' + validCharacters + '](?:[' + validCharacters + ']|\\\\.(?!\\\\.|@))*|\\\\\"[' + validRestrictedCharacters + '.]+\\\\\")@');\n return new RegExp([\n emailRegex.source,\n getDomainNameStr(1),\n '\\\\.', tldRegex.source // '.com', '.net', etc\n ].join(\"\"), 'gi');\n })();\n return _this;\n }\n /**\n * @inheritdoc\n */\n EmailMatcher.prototype.parseMatches = function (text) {\n var matcherRegex = this.matcherRegex, tagBuilder = this.tagBuilder, matches = [], match;\n while ((match = matcherRegex.exec(text)) !== null) {\n var matchedText = match[0];\n matches.push(new EmailMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: match.index,\n email: matchedText\n }));\n }\n return matches;\n };\n return EmailMatcher;\n}(Matcher));\nexport { EmailMatcher };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 __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 /**\n * The regular expression to match opening parenthesis in a URL match.\n *\n * This is to determine if we have unbalanced parenthesis in the URL, and to\n * drop the final parenthesis that was matched if so.\n *\n * Ex: The text \"(check out: wikipedia.com/something_(disambiguation))\"\n * should only autolink the inner \"wikipedia.com/something_(disambiguation)\"\n * part, so if we find that we have unbalanced parenthesis, we will drop the\n * last one for the match.\n *\n * @protected\n * @property {RegExp}\n */\n _this.openParensRe = /\\(/g;\n /**\n * The regular expression to match closing parenthesis in a URL match. See\n * {@link #openParensRe} for more information.\n *\n * @protected\n * @property {RegExp}\n */\n _this.closeParensRe = /\\)/g;\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 while ((match = matcherRegex.exec(text)) !== null) {\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 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 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.wordCharRegExp.test(prevChar)) {\n continue;\n }\n if (/\\?$/.test(matchStr)) {\n matchStr = matchStr.substr(0, matchStr.length - 1);\n }\n // Handle a closing parenthesis at the end of the match, and exclude\n // it if there is not a matching open parenthesis in the match\n // itself.\n if (this.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.matchHasInvalidCharAfterTld(matchStr, schemeUrlMatch);\n if (pos > -1) {\n matchStr = matchStr.substr(0, pos); // remove the trailing invalid chars\n }\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 return matches;\n };\n /**\n * Determines if a match found has an unmatched closing parenthesis. If so,\n * this parenthesis will be removed from the match itself, and appended\n * 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 \"(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 * @protected\n * @param {String} matchStr The full match string from the {@link #matcherRegex}.\n * @return {Boolean} `true` if there is an unbalanced closing parenthesis at\n * the end of the `matchStr`, `false` otherwise.\n */\n UrlMatcher.prototype.matchHasUnbalancedClosingParen = function (matchStr) {\n var lastChar = matchStr.charAt(matchStr.length - 1);\n if (lastChar === ')') {\n var openParensMatch = matchStr.match(this.openParensRe), closeParensMatch = matchStr.match(this.closeParensRe), numOpenParens = (openParensMatch && openParensMatch.length) || 0, numCloseParens = (closeParensMatch && closeParensMatch.length) || 0;\n if (numOpenParens < numCloseParens) {\n return true;\n }\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 __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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 __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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 __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 { defaults, remove } from \"./utils\";\nimport { AnchorTagBuilder } from \"./anchor-tag-builder\";\nimport { HtmlParser } from \"./htmlParser/html-parser\";\nimport { Match } from \"./match/match\";\nimport { EmailMatch } from \"./match/email-match\";\nimport { HashtagMatch } from \"./match/hashtag-match\";\nimport { MentionMatch } from \"./match/mention-match\";\nimport { PhoneMatch } from \"./match/phone-match\";\nimport { UrlMatch } from \"./match/url-match\";\nimport { Matcher } from \"./matcher/matcher\";\nimport { HtmlTag } from \"./html-tag\";\nimport { EmailMatcher } from \"./matcher/email-matcher\";\nimport { UrlMatcher } from \"./matcher/url-matcher\";\nimport { HashtagMatcher } from \"./matcher/hashtag-matcher\";\nimport { PhoneMatcher } from \"./matcher/phone-matcher\";\nimport { MentionMatcher } from \"./matcher/mention-matcher\";\n/**\n * @class Autolinker\n * @extends Object\n *\n * Utility class used to process a given string of text, and wrap the matches in\n * the appropriate anchor (<a>) tags to turn them into links.\n *\n * Any of the configuration options may be provided in an Object provided\n * to the Autolinker constructor, which will configure how the {@link #link link()}\n * method will process the links.\n *\n * For example:\n *\n * var autolinker = new Autolinker( {\n * newWindow : false,\n * truncate : 30\n * } );\n *\n * var html = autolinker.link( \"Joe went to www.yahoo.com\" );\n * // produces: 'Joe went to yahoo.com'\n *\n *\n * The {@link #static-link static link()} method may also be used to inline\n * options into a single call, which may be more convenient for one-off uses.\n * For example:\n *\n * var html = Autolinker.link( \"Joe went to www.yahoo.com\", {\n * newWindow : false,\n * truncate : 30\n * } );\n * // produces: 'Joe went to yahoo.com'\n *\n *\n * ## Custom Replacements of Links\n *\n * If the configuration options do not provide enough flexibility, a {@link #replaceFn}\n * may be provided to fully customize the output of Autolinker. This function is\n * called once for each URL/Email/Phone#/Hashtag/Mention (Twitter, Instagram, Soundcloud)\n * match that is encountered.\n *\n * For example:\n *\n * var input = \"...\"; // string with URLs, Email Addresses, Phone #s, Hashtags, 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 * if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) {\n * var tag = match.buildTag(); // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes\n * tag.setAttr( 'rel', 'nofollow' );\n * tag.addClass( 'external-link' );\n *\n * return tag;\n *\n * } else {\n * return true; // let Autolinker perform its normal anchor tag replacement\n * }\n *\n * case 'email' :\n * var email = match.getEmail();\n * console.log( \"email: \", email );\n *\n * if( email === \"my@own.address\" ) {\n * return false; // don't auto-link this particular email address; leave as-is\n * } else {\n * return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`)\n * }\n *\n * case 'phone' :\n * var phoneNumber = match.getPhoneNumber();\n * console.log( phoneNumber );\n *\n * return '' + phoneNumber + '';\n *\n * case 'hashtag' :\n * var hashtag = match.getHashtag();\n * console.log( hashtag );\n *\n * return '' + hashtag + '';\n *\n * case 'mention' :\n * var mention = match.getMention();\n * console.log( mention );\n *\n * return '' + mention + '';\n * }\n * }\n * } );\n *\n *\n * The function may return the following values:\n *\n * - `true` (Boolean): Allow Autolinker to replace the match as it normally\n * would.\n * - `false` (Boolean): Do not replace the current match at all - leave as-is.\n * - Any String: If a string is returned from the function, the string will be\n * used directly as the replacement HTML for the match.\n * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify\n * an HTML tag before writing out its HTML text.\n */\nvar Autolinker = /** @class */ (function () {\n /**\n * @method constructor\n * @param {Object} [cfg] The configuration options for the Autolinker instance,\n * specified in an Object (map).\n */\n function Autolinker(cfg) {\n if (cfg === void 0) { cfg = {}; }\n /**\n * The Autolinker version number exposed on the instance itself.\n *\n * Ex: 0.25.1\n */\n this.version = Autolinker.version;\n /**\n * @cfg {Boolean/Object} [urls]\n *\n * `true` if URLs should be automatically linked, `false` if they should not\n * be. Defaults to `true`.\n *\n * Examples:\n *\n * urls: true\n *\n * // or\n *\n * urls: {\n * schemeMatches : true,\n * wwwMatches : true,\n * tldMatches : true\n * }\n *\n * As shown above, this option also accepts an Object form with 3 properties\n * to allow for more customization of what exactly gets linked. All default\n * to `true`:\n *\n * @cfg {Boolean} [urls.schemeMatches] `true` to match URLs found prefixed\n * with a scheme, i.e. `http://google.com`, or `other+scheme://google.com`,\n * `false` to prevent these types of matches.\n * @cfg {Boolean} [urls.wwwMatches] `true` to match urls found prefixed with\n * `'www.'`, i.e. `www.google.com`. `false` to prevent these types of\n * matches. Note that if the URL had a prefixed scheme, and\n * `schemeMatches` is true, it will still be linked.\n * @cfg {Boolean} [urls.tldMatches] `true` to match URLs with known top\n * level domains (.com, .net, etc.) that are not prefixed with a scheme or\n * `'www.'`. This option attempts to match anything that looks like a URL\n * in the given text. Ex: `google.com`, `asdf.org/?page=1`, etc. `false`\n * to prevent these types of matches.\n */\n this.urls = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [email=true]\n *\n * `true` if email addresses should be automatically linked, `false` if they\n * should not be.\n */\n this.email = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [phone=true]\n *\n * `true` if Phone numbers (\"(555)555-5555\") should be automatically linked,\n * `false` if they should not be.\n */\n this.phone = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean/String} [hashtag=false]\n *\n * A string for the service name to have hashtags (ex: \"#myHashtag\")\n * auto-linked to. The currently-supported values are:\n *\n * - 'twitter'\n * - 'facebook'\n * - 'instagram'\n *\n * Pass `false` to skip auto-linking of hashtags.\n */\n this.hashtag = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String/Boolean} [mention=false]\n *\n * A string for the service name to have mentions (ex: \"@myuser\")\n * auto-linked to. The currently supported values are:\n *\n * - 'twitter'\n * - 'instagram'\n * - 'soundcloud'\n *\n * Defaults to `false` to skip auto-linking of mentions.\n */\n this.mention = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [newWindow=true]\n *\n * `true` if the links should open in a new window, `false` otherwise.\n */\n this.newWindow = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean/Object} [stripPrefix=true]\n *\n * `true` if 'http://' (or 'https://') and/or the 'www.' should be stripped\n * from the beginning of URL links' text, `false` otherwise. Defaults to\n * `true`.\n *\n * Examples:\n *\n * stripPrefix: true\n *\n * // or\n *\n * stripPrefix: {\n * scheme : true,\n * www : true\n * }\n *\n * As shown above, this option also accepts an Object form with 2 properties\n * to allow for more customization of what exactly is prevented from being\n * displayed. Both default to `true`:\n *\n * @cfg {Boolean} [stripPrefix.scheme] `true` to prevent the scheme part of\n * a URL match from being displayed to the user. Example:\n * `'http://google.com'` will be displayed as `'google.com'`. `false` to\n * not strip the scheme. NOTE: Only an `'http://'` or `'https://'` scheme\n * will be removed, so as not to remove a potentially dangerous scheme\n * (such as `'file://'` or `'javascript:'`)\n * @cfg {Boolean} [stripPrefix.www] www (Boolean): `true` to prevent the\n * `'www.'` part of a URL match from being displayed to the user. Ex:\n * `'www.google.com'` will be displayed as `'google.com'`. `false` to not\n * strip the `'www'`.\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=true]\n *\n * `true` to remove the trailing slash from URL matches, `false` to keep\n * the trailing slash.\n *\n * Example when `true`: `http://google.com/` will be displayed as\n * `http://google.com`.\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=true]\n *\n * `true` to decode percent-encoded characters in URL matches, `false` to keep\n * the percent-encoded characters.\n *\n * Example when `true`: `https://en.wikipedia.org/wiki/San_Jos%C3%A9` will\n * be displayed as `https://en.wikipedia.org/wiki/San_José`.\n */\n this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Number/Object} [truncate=0]\n *\n * ## Number Form\n *\n * A number for how many characters matched text should be truncated to\n * inside the text of a link. If the matched text is over this number of\n * characters, it will be truncated to this length by adding a two period\n * ellipsis ('..') to the end of the string.\n *\n * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file'\n * truncated to 25 characters might look something like this:\n * 'yahoo.com/some/long/pat..'\n *\n * Example Usage:\n *\n * truncate: 25\n *\n *\n * Defaults to `0` for \"no truncation.\"\n *\n *\n * ## Object Form\n *\n * An Object may also be provided with two properties: `length` (Number) and\n * `location` (String). `location` may be one of the following: 'end'\n * (default), 'middle', or 'smart'.\n *\n * Example Usage:\n *\n * truncate: { length: 25, location: 'middle' }\n *\n * @cfg {Number} [truncate.length=0] How many characters to allow before\n * truncation will occur. Defaults to `0` for \"no truncation.\"\n * @cfg {\"end\"/\"middle\"/\"smart\"} [truncate.location=\"end\"]\n *\n * - 'end' (default): will truncate up to the number of characters, and then\n * add an ellipsis at the end. Ex: 'yahoo.com/some/long/pat..'\n * - 'middle': will truncate and add the ellipsis in the middle. Ex:\n * 'yahoo.com/s..th/to/a/file'\n * - 'smart': for URLs where the algorithm attempts to strip out unnecessary\n * parts first (such as the 'www.', then URL scheme, hash, etc.),\n * attempting to make the URL human-readable before looking for a good\n * point to insert the ellipsis if it is still too long. Ex:\n * 'yahoo.com/some..to/a/file'. For more details, see\n * {@link Autolinker.truncate.TruncateSmart}.\n */\n this.truncate = { length: 0, location: 'end' }; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} className\n *\n * A CSS class name to add to the generated links. This class will be added\n * to all links, as well as this class plus match suffixes for styling\n * url/email/phone/hashtag/mention links differently.\n *\n * For example, if this config is provided as \"myLink\", then:\n *\n * - URL links will have the CSS classes: \"myLink myLink-url\"\n * - Email links will have the CSS classes: \"myLink myLink-email\", and\n * - Phone links will have the CSS classes: \"myLink myLink-phone\"\n * - Hashtag links will have the CSS classes: \"myLink myLink-hashtag\"\n * - Mention links will have the CSS classes: \"myLink myLink-mention myLink-[type]\"\n * where [type] is either \"instagram\", \"twitter\" or \"soundcloud\"\n */\n this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Function} replaceFn\n *\n * A function to individually process each match found in the input string.\n *\n * See the class's description for usage.\n *\n * The `replaceFn` can be called with a different context object (`this`\n * reference) using the {@link #context} cfg.\n *\n * This function is called with the following parameter:\n *\n * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which\n * can be used to retrieve information about the match that the `replaceFn`\n * is currently processing. See {@link Autolinker.match.Match} subclasses\n * for details.\n */\n this.replaceFn = null; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object} context\n *\n * The context object (`this` reference) to call the `replaceFn` with.\n *\n * Defaults to this Autolinker instance.\n */\n this.context = undefined; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @private\n * @property {Autolinker.htmlParser.HtmlParser} htmlParser\n *\n * The HtmlParser instance used to skip over HTML tags, while finding text\n * nodes to process.\n */\n this.htmlParser = new HtmlParser();\n /**\n * @private\n * @property {Autolinker.matcher.Matcher[]} matchers\n *\n * The {@link Autolinker.matcher.Matcher} instances for this Autolinker\n * instance.\n *\n * This is lazily created in {@link #getMatchers}.\n */\n this.matchers = null;\n /**\n * @private\n * @property {Autolinker.AnchorTagBuilder} tagBuilder\n *\n * The AnchorTagBuilder instance used to build match replacement anchor tags.\n * Note: this is lazily instantiated in the {@link #getTagBuilder} method.\n */\n this.tagBuilder = null;\n // Note: when `this.something` is used in the rhs of these assignments,\n // it refers to the default values set above the constructor\n this.urls = this.normalizeUrlsCfg(cfg.urls);\n this.email = typeof cfg.email === 'boolean' ? cfg.email : this.email;\n this.phone = typeof cfg.phone === 'boolean' ? cfg.phone : this.phone;\n this.hashtag = cfg.hashtag || this.hashtag;\n this.mention = cfg.mention || this.mention;\n this.newWindow = typeof cfg.newWindow === 'boolean' ? cfg.newWindow : this.newWindow;\n this.stripPrefix = this.normalizeStripPrefixCfg(cfg.stripPrefix);\n this.stripTrailingSlash = typeof cfg.stripTrailingSlash === 'boolean' ? cfg.stripTrailingSlash : this.stripTrailingSlash;\n this.decodePercentEncoding = typeof cfg.decodePercentEncoding === 'boolean' ? cfg.decodePercentEncoding : this.decodePercentEncoding;\n // Validate the value of the `mention` cfg\n var mention = this.mention;\n if (mention !== false && mention !== 'twitter' && mention !== 'instagram' && mention !== 'soundcloud') {\n throw new Error(\"invalid `mention` cfg - see docs\");\n }\n // Validate the value of the `hashtag` cfg\n var hashtag = this.hashtag;\n if (hashtag !== false && hashtag !== 'twitter' && hashtag !== 'facebook' && hashtag !== 'instagram') {\n throw new Error(\"invalid `hashtag` cfg - see docs\");\n }\n this.truncate = this.normalizeTruncateCfg(cfg.truncate);\n this.className = cfg.className || this.className;\n this.replaceFn = cfg.replaceFn || this.replaceFn;\n this.context = cfg.context || this;\n }\n /**\n * Automatically links URLs, Email addresses, Phone Numbers, Twitter handles,\n * Hashtags, and Mentions found in the given chunk of HTML. Does not link URLs\n * found within HTML tags.\n *\n * For instance, if given the text: `You should go to http://www.yahoo.com`,\n * then the result will be `You should go to <a href=\"http://www.yahoo.com\">http://www.yahoo.com</a>`\n *\n * Example:\n *\n * var linkedText = Autolinker.link( \"Go to google.com\", { newWindow: false } );\n * // Produces: \"Go to google.com\"\n *\n * @static\n * @param {String} textOrHtml The HTML or text to find matches within (depending\n * on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #mention},\n * {@link #hashtag}, and {@link #mention} options are enabled).\n * @param {Object} [options] Any of the configuration options for the Autolinker\n * class, specified in an Object (map). See the class description for an\n * example call.\n * @return {String} The HTML text, with matches automatically linked.\n */\n Autolinker.link = function (textOrHtml, options) {\n var autolinker = new Autolinker(options);\n return autolinker.link(textOrHtml);\n };\n /**\n * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n * numbers, username handles, and hashtags (depending on the configuration\n * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n * objects describing those matches (without making any replacements).\n *\n * Note that if parsing multiple pieces of text, it is slightly more efficient\n * to create an Autolinker instance, and use the instance-level {@link #parse}\n * method.\n *\n * Example:\n *\n * var matches = Autolinker.parse( \"Hello google.com, I am asdf@asdf.com\", {\n * urls: true,\n * email: true\n * } );\n *\n * console.log( matches.length ); // 2\n * console.log( matches[ 0 ].getType() ); // 'url'\n * console.log( matches[ 0 ].getUrl() ); // 'google.com'\n * console.log( matches[ 1 ].getType() ); // 'email'\n * console.log( matches[ 1 ].getEmail() ); // 'asdf@asdf.com'\n *\n * @static\n * @param {String} textOrHtml The HTML or text to find matches within\n * (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n * {@link #hashtag}, and {@link #mention} options are enabled).\n * @param {Object} [options] Any of the configuration options for the Autolinker\n * class, specified in an Object (map). See the class description for an\n * example call.\n * @return {Autolinker.match.Match[]} The array of Matches found in the\n * given input `textOrHtml`.\n */\n Autolinker.parse = function (textOrHtml, options) {\n var autolinker = new Autolinker(options);\n return autolinker.parse(textOrHtml);\n };\n /**\n * Normalizes the {@link #urls} config into an Object with 3 properties:\n * `schemeMatches`, `wwwMatches`, and `tldMatches`, all Booleans.\n *\n * See {@link #urls} config for details.\n *\n * @private\n * @param {Boolean/Object} urls\n * @return {Object}\n */\n Autolinker.prototype.normalizeUrlsCfg = function (urls) {\n if (urls == null)\n urls = true; // default to `true`\n if (typeof urls === 'boolean') {\n return { schemeMatches: urls, wwwMatches: urls, tldMatches: urls };\n }\n else { // object form\n return {\n schemeMatches: typeof urls.schemeMatches === 'boolean' ? urls.schemeMatches : true,\n wwwMatches: typeof urls.wwwMatches === 'boolean' ? urls.wwwMatches : true,\n tldMatches: typeof urls.tldMatches === 'boolean' ? urls.tldMatches : true\n };\n }\n };\n /**\n * Normalizes the {@link #stripPrefix} config into an Object with 2\n * properties: `scheme`, and `www` - both Booleans.\n *\n * See {@link #stripPrefix} config for details.\n *\n * @private\n * @param {Boolean/Object} stripPrefix\n * @return {Object}\n */\n Autolinker.prototype.normalizeStripPrefixCfg = function (stripPrefix) {\n if (stripPrefix == null)\n stripPrefix = true; // default to `true`\n if (typeof stripPrefix === 'boolean') {\n return { scheme: stripPrefix, www: stripPrefix };\n }\n else { // object form\n return {\n scheme: typeof stripPrefix.scheme === 'boolean' ? stripPrefix.scheme : true,\n www: typeof stripPrefix.www === 'boolean' ? stripPrefix.www : true\n };\n }\n };\n /**\n * Normalizes the {@link #truncate} config into an Object with 2 properties:\n * `length` (Number), and `location` (String).\n *\n * See {@link #truncate} config for details.\n *\n * @private\n * @param {Number/Object} truncate\n * @return {Object}\n */\n Autolinker.prototype.normalizeTruncateCfg = function (truncate) {\n if (typeof truncate === 'number') {\n return { length: truncate, location: 'end' };\n }\n else { // object, or undefined/null\n return defaults(truncate || {}, {\n length: Number.POSITIVE_INFINITY,\n location: 'end'\n });\n }\n };\n /**\n * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n * numbers, username handles, and hashtags (depending on the configuration\n * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n * objects describing those matches (without making any replacements).\n *\n * This method is used by the {@link #link} method, but can also be used to\n * simply do parsing of the input in order to discover what kinds of links\n * there are and how many.\n *\n * Example usage:\n *\n * var autolinker = new Autolinker( {\n * urls: true,\n * email: true\n * } );\n *\n * var matches = autolinker.parse( \"Hello google.com, I am asdf@asdf.com\" );\n *\n * console.log( matches.length ); // 2\n * console.log( matches[ 0 ].getType() ); // 'url'\n * console.log( matches[ 0 ].getUrl() ); // 'google.com'\n * console.log( matches[ 1 ].getType() ); // 'email'\n * console.log( matches[ 1 ].getEmail() ); // 'asdf@asdf.com'\n *\n * @param {String} textOrHtml The HTML or text to find matches within\n * (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n * {@link #hashtag}, and {@link #mention} options are enabled).\n * @return {Autolinker.match.Match[]} The array of Matches found in the\n * given input `textOrHtml`.\n */\n Autolinker.prototype.parse = function (textOrHtml) {\n var htmlNodes = this.htmlParser.parse(textOrHtml), skipTagNames = ['a', 'style', 'script'], skipTagsStackCount = 0, // used to only Autolink text outside of anchor/script/style tags. We don't want to autolink something that is already linked inside of an tag, for instance\n matches = [];\n // Find all matches within the `textOrHtml` (but not matches that are\n // already nested within , or tag\n skipTagsStackCount = Math.max(skipTagsStackCount - 1, 0); // attempt to handle extraneous tags by making sure the stack count never goes below 0\n }\n }\n else if (nodeType === 'text' && skipTagsStackCount === 0) { // Process text nodes that are not within an , or tag\n skipTagsStackCount = Math.max(skipTagsStackCount - 1, 0); // attempt to handle extraneous tags by making sure the stack count never goes below 0\n }\n }\n else if (nodeType === 'text' && skipTagsStackCount === 0) { // Process text nodes that are not within an , or tag\n skipTagsStackCount = Math.max(skipTagsStackCount - 1, 0); // attempt to handle extraneous tags by making sure the stack count never goes below 0\n }\n }\n else if (nodeType === 'text' && skipTagsStackCount === 0) { // Process text nodes that are not within an , or tag\n skipTagsStackCount = Math.max(skipTagsStackCount - 1, 0); // attempt to handle extraneous tags by making sure the stack count never goes below 0\n }\n }\n else if (nodeType === 'text' && skipTagsStackCount === 0) { // Process text nodes that are not within an ,