New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More β†’
Socket
Sign inDemoInstall
Socket

anchorme

Package Overview
Dependencies
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

anchorme - npm Package Compare versions

Comparing version 0.8.2 to 0.8.3

test/test.js

8

dist/anchorme.js

@@ -355,9 +355,5 @@ (function (global, factory) {

if (options.truncate.toPrecision) {
if (original.length > options.truncate) {
original = original.substring(0, options.truncate) + "...";
}
if (original.length > options.truncate) original = original.substring(0, options.truncate) + "...";
} else if (options.truncate[0].toPrecision && options.truncate[1].toPrecision) {
if (original.length > options.truncate[0] + options.truncate[1]) {
original = original.substr(0, options.truncate[0]) + "..." + original.substr(original.length - options.truncate[1]);
}
if (original.length > options.truncate[0] + options.truncate[1]) original = original.substr(0, options.truncate[0]) + "..." + original.substr(original.length - options.truncate[1]);
}

@@ -364,0 +360,0 @@ }

@@ -1,1 +0,1 @@

!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.anchorme=n()}(this,function(){"use strict";function e(e,n,a){return e.split(n).length-1}function n(e){function n(e,a){return e.endsWith(a)?(e=e.substring(0,e.length-1),n(e,a)):e}return e.endsWith("?")?e=n(e,"?"):e.endsWith(";")?e=n(e,";"):e.endsWith(":")?e=n(e,":"):e.endsWith(",")?e=n(e,","):e.endsWith(".")&&(e=n(e,".")),e}function a(e){return e||(e={attributes:[],ips:!0,emails:!0,urls:!0,files:!0,truncate:0,defaultProtocol:"http://",list:!1}),"object"!==u(e.attributes)&&(e.attributes=[]),"boolean"!=typeof e.ips&&(e.ips=!0),"boolean"!=typeof e.emails&&(e.emails=!0),"boolean"!=typeof e.urls&&(e.urls=!0),"boolean"!=typeof e.files&&(e.files=!0),"boolean"!=typeof e.list&&(e.list=!1),"string"!=typeof e.defaultProtocol&&"function"!=typeof e.defaultProtocol&&(e.defaultProtocol="http://"),"number"==typeof e.truncate||"object"===u(e.truncate)&&null!==e.truncate||(e.truncate=0),e}function t(e){return!("string"==typeof e&&e.indexOf(".")>-1)&&(("number"!=typeof e||Math.round(e)===e)&&(""!==e&&!isNaN(1*e)))}function i(e){return!!t(e)&&!(1*e>65535)}function r(e,n,a){return e.forEach(function(t,i){!(t.indexOf(".")>-1)||e[i-1]===n&&e[i+1]===a||e[i+1]!==n&&e[i+1]!==a||(e[i]=e[i]+e[i+1],"string"==typeof e[i+2]&&(e[i]=e[i]+e[i+2]),"string"==typeof e[i+3]&&(e[i]=e[i]+e[i+3]),"string"==typeof e[i+4]&&(e[i]=e[i]+e[i+4]),e.splice(i+1,4),r(e,n,a))}),e}function o(e){return" "+e+" "}function s(e){return y.forEach(function(n){e=e.split(n).join(o(n))}),e=k(e.split(" "))}function c(e){return e=e.join(" "),y.forEach(function(n){e=e.split(o(n)).join(n)}),e}function l(e,a){var t=e.protocol+n(e.encoded),i=e.raw;return(a.truncate>0||a.truncate.push)&&(a.truncate.toPrecision?i.length>a.truncate&&(i=i.substring(0,a.truncate)+"..."):a.truncate[0].toPrecision&&a.truncate[1].toPrecision&&i.length>a.truncate[0]+a.truncate[1]&&(i=i.substr(0,a.truncate[0])+"..."+i.substr(i.length-a.truncate[1]))),'<a href="'+t+'" '+a.attributes.map(function(n){if("function"!=typeof n)return" "+n.name+'="'+n.value+'" ';var a=(n(e)||{}).name,t=(n(e)||{}).value;return a&&!t?" name ":a&&t?" "+a+'="'+t+'" ':void 0}).join("")+">"+i+"</a>"}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f="abcdefghijklmnopqrstuvwxyz0123456789!#$%&'*+-/=?^_`{|}~.",d="abcdefghijklmnopqrstuvwxyz0123456789-.:%",b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=%",m=[".com",".net",".org",".edu",".gov",".uk",".ca",".de",".jp",".fr",".au",".us",".ru",".ch",".it",".nl",".se",".no",".es",".io",".aaa",".aarp",".abarth",".abb",".abbott",".abbvie",".abc",".able",".abogado",".abudhabi",".ac",".academy",".accenture",".accountant",".accountants",".aco",".active",".actor",".ad",".adac",".ads",".adult",".ae",".aeg",".aero",".aetna",".af",".afamilycompany",".afl",".ag",".agakhan",".agency",".ai",".aig",".aigo",".airbus",".airforce",".airtel",".akdn",".al",".alfaromeo",".alibaba",".alipay",".allfinanz",".allstate",".ally",".alsace",".alstom",".am",".americanexpress",".americanfamily",".amex",".amfam",".amica",".amsterdam",".analytics",".android",".anquan",".anz",".ao",".apartments",".app",".apple",".aq",".aquarelle",".ar",".aramco",".archi",".army",".arpa",".art",".arte",".as",".asda",".asia",".associates",".at",".athleta",".attorney",".au",".auction",".audi",".audible",".audio",".auspost",".author",".auto",".autos",".avianca",".aw",".aws",".ax",".axa",".az",".azure",".ba",".baby",".baidu",".banamex",".bananarepublic",".band",".bank",".bar",".barcelona",".barclaycard",".barclays",".barefoot",".bargains",".bauhaus",".bayern",".bb",".bbc",".bbt",".bbva",".bcg",".bcn",".bd",".be",".beats",".beauty",".beer",".bentley",".berlin",".best",".bestbuy",".bet",".bf",".bg",".bh",".bharti",".bi",".bible",".bid",".bike",".bing",".bingo",".bio",".biz",".bj",".black",".blackfriday",".blanco",".blockbuster",".blog",".bloomberg",".blue",".bm",".bms",".bmw",".bn",".bnl",".bnpparibas",".bo",".boats",".boehringer",".bofa",".bom",".bond",".boo",".book",".booking",".boots",".bosch",".bostik",".bot",".boutique",".br",".bradesco",".bridgestone",".broadway",".broker",".brother",".brussels",".bs",".bt",".budapest",".bugatti",".build",".builders",".business",".buy",".buzz",".bv",".bw",".by",".bz",".bzh",".ca",".cab",".cafe",".cal",".call",".calvinklein",".cam",".camera",".camp",".cancerresearch",".canon",".capetown",".capital",".capitalone",".car",".caravan",".cards",".care",".career",".careers",".cars",".cartier",".casa",".cash",".casino",".cat",".catering",".cba",".cbn",".cbre",".cbs",".cc",".cd",".ceb",".center",".ceo",".cern",".cf",".cfa",".cfd",".cg",".ch",".chanel",".channel",".chase",".chat",".cheap",".chintai",".chloe",".christmas",".chrome",".chrysler",".church",".ci",".cipriani",".circle",".cisco",".citadel",".citi",".citic",".city",".cityeats",".ck",".cl",".claims",".cleaning",".click",".clinic",".clinique",".clothing",".cloud",".club",".clubmed",".cm",".cn",".co",".coach",".codes",".coffee",".college",".cologne",".comcast",".commbank",".community",".company",".compare",".computer",".comsec",".condos",".construction",".consulting",".contact",".contractors",".cooking",".cookingchannel",".cool",".coop",".corsica",".country",".coupon",".coupons",".courses",".cr",".credit",".creditcard",".creditunion",".cricket",".crown",".crs",".cruises",".csc",".cu",".cuisinella",".cv",".cw",".cx",".cy",".cymru",".cyou",".cz",".dabur",".dad",".dance",".date",".dating",".datsun",".day",".dclk",".dds",".de",".deal",".dealer",".deals",".degree",".delivery",".dell",".deloitte",".delta",".democrat",".dental",".dentist",".desi",".design",".dev",".dhl",".diamonds",".diet",".digital",".direct",".directory",".discount",".discover",".dish",".diy",".dj",".dk",".dm",".dnp",".do",".docs",".doctor",".dodge",".dog",".doha",".domains",".dot",".download",".drive",".dtv",".dubai",".duck",".dunlop",".duns",".dupont",".durban",".dvag",".dvr",".dz",".earth",".eat",".ec",".eco",".edeka",".edu",".education",".ee",".eg",".email",".emerck",".energy",".engineer",".engineering",".enterprises",".epost",".epson",".equipment",".er",".ericsson",".erni",".es",".esq",".estate",".esurance",".et",".eu",".eurovision",".eus",".events",".everbank",".exchange",".expert",".exposed",".express",".extraspace",".fage",".fail",".fairwinds",".faith",".family",".fan",".fans",".farm",".farmers",".fashion",".fast",".fedex",".feedback",".ferrari",".ferrero",".fi",".fiat",".fidelity",".fido",".film",".final",".finance",".financial",".fire",".firestone",".firmdale",".fish",".fishing",".fit",".fitness",".fj",".fk",".flickr",".flights",".flir",".florist",".flowers",".fly",".fm",".fo",".foo",".foodnetwork",".football",".ford",".forex",".forsale",".forum",".foundation",".fox",".fr",".fresenius",".frl",".frogans",".frontdoor",".frontier",".ftr",".fujitsu",".fujixerox",".fund",".furniture",".futbol",".fyi",".ga",".gal",".gallery",".gallo",".gallup",".game",".games",".gap",".garden",".gb",".gbiz",".gd",".gdn",".ge",".gea",".gent",".genting",".george",".gf",".gg",".ggee",".gh",".gi",".gift",".gifts",".gives",".giving",".gl",".glade",".glass",".gle",".global",".globo",".gm",".gmail",".gmbh",".gmo",".gmx",".gn",".godaddy",".gold",".goldpoint",".golf",".goo",".goodhands",".goodyear",".goog",".google",".gop",".got",".gov",".gp",".gq",".gr",".grainger",".graphics",".gratis",".green",".gripe",".group",".gs",".gt",".gu",".guardian",".gucci",".guge",".guide",".guitars",".guru",".gw",".gy",".hamburg",".hangout",".haus",".hbo",".hdfc",".hdfcbank",".health",".healthcare",".help",".helsinki",".here",".hermes",".hgtv",".hiphop",".hisamitsu",".hitachi",".hiv",".hk",".hkt",".hm",".hn",".hockey",".holdings",".holiday",".homedepot",".homegoods",".homes",".homesense",".honda",".honeywell",".horse",".host",".hosting",".hot",".hoteles",".hotmail",".house",".how",".hr",".hsbc",".ht",".htc",".hu",".hughes",".hyatt",".hyundai",".ibm",".icbc",".ice",".icu",".id",".ie",".ieee",".ifm",".iinet",".ikano",".il",".im",".imamat",".imdb",".immo",".immobilien",".in",".industries",".infiniti",".info",".ing",".ink",".institute",".insurance",".insure",".int",".intel",".international",".intuit",".investments",".io",".ipiranga",".iq",".ir",".irish",".is",".iselect",".ismaili",".ist",".istanbul",".it",".itau",".itv",".iwc",".jaguar",".java",".jcb",".jcp",".je",".jeep",".jetzt",".jewelry",".jlc",".jll",".jm",".jmp",".jnj",".jo",".jobs",".joburg",".jot",".joy",".jp",".jpmorgan",".jprs",".juegos",".juniper",".kaufen",".kddi",".ke",".kerryhotels",".kerrylogistics",".kerryproperties",".kfh",".kg",".kh",".ki",".kia",".kim",".kinder",".kindle",".kitchen",".kiwi",".km",".kn",".koeln",".komatsu",".kosher",".kp",".kpmg",".kpn",".kr",".krd",".kred",".kuokgroup",".kw",".ky",".kyoto",".kz",".la",".lacaixa",".ladbrokes",".lamborghini",".lamer",".lancaster",".lancia",".lancome",".land",".landrover",".lanxess",".lasalle",".lat",".latino",".latrobe",".law",".lawyer",".lb",".lc",".lds",".lease",".leclerc",".lefrak",".legal",".lego",".lexus",".lgbt",".li",".liaison",".lidl",".life",".lifeinsurance",".lifestyle",".lighting",".like",".lilly",".limited",".limo",".lincoln",".linde",".link",".lipsy",".live",".living",".lixil",".lk",".loan",".loans",".locker",".locus",".loft",".lol",".london",".lotte",".lotto",".love",".lpl",".lplfinancial",".lr",".ls",".lt",".ltd",".ltda",".lu",".lundbeck",".lupin",".luxe",".luxury",".lv",".ly",".ma",".macys",".madrid",".maif",".maison",".makeup",".man",".management",".mango",".market",".marketing",".markets",".marriott",".marshalls",".maserati",".mattel",".mba",".mc",".mcd",".mcdonalds",".mckinsey",".md",".me",".med",".media",".meet",".melbourne",".meme",".memorial",".men",".menu",".meo",".metlife",".mg",".mh",".miami",".microsoft",".mil",".mini",".mint",".mit",".mitsubishi",".mk",".ml",".mlb",".mls",".mm",".mma",".mn",".mo",".mobi",".mobily",".moda",".moe",".moi",".mom",".monash",".money",".monster",".montblanc",".mopar",".mormon",".mortgage",".moscow",".motorcycles",".mov",".movie",".movistar",".mp",".mq",".mr",".ms",".msd",".mt",".mtn",".mtpc",".mtr",".mu",".museum",".mutual",".mutuelle",".mv",".mw",".mx",".my",".mz",".na",".nab",".nadex",".nagoya",".name",".nationwide",".natura",".navy",".nba",".nc",".ne",".nec",".netbank",".netflix",".network",".neustar",".new",".news",".next",".nextdirect",".nexus",".nf",".nfl",".ng",".ngo",".nhk",".ni",".nico",".nike",".nikon",".ninja",".nissan",".nissay",".nl",".no",".nokia",".northwesternmutual",".norton",".now",".nowruz",".nowtv",".np",".nr",".nra",".nrw",".ntt",".nu",".nyc",".nz",".obi",".observer",".off",".office",".okinawa",".olayan",".olayangroup",".oldnavy",".ollo",".om",".omega",".one",".ong",".onl",".online",".onyourside",".ooo",".open",".oracle",".orange",".org",".organic",".orientexpress",".origins",".osaka",".otsuka",".ott",".ovh",".pa",".page",".pamperedchef",".panasonic",".panerai",".paris",".pars",".partners",".parts",".party",".passagens",".pay",".pccw",".pe",".pet",".pf",".pfizer",".pg",".ph",".pharmacy",".philips",".photo",".photography",".photos",".physio",".piaget",".pics",".pictet",".pictures",".pid",".pin",".ping",".pink",".pioneer",".pizza",".pk",".pl",".place",".play",".playstation",".plumbing",".plus",".pm",".pn",".pnc",".pohl",".poker",".politie",".porn",".post",".pr",".pramerica",".praxi",".press",".prime",".pro",".prod",".productions",".prof",".progressive",".promo",".properties",".property",".protection",".pru",".prudential",".ps",".pt",".pub",".pw",".pwc",".py",".qa",".qpon",".quebec",".quest",".qvc",".racing",".raid",".re",".read",".realestate",".realtor",".realty",".recipes",".red",".redstone",".redumbrella",".rehab",".reise",".reisen",".reit",".ren",".rent",".rentals",".repair",".report",".republican",".rest",".restaurant",".review",".reviews",".rexroth",".rich",".richardli",".ricoh",".rightathome",".rio",".rip",".ro",".rocher",".rocks",".rodeo",".rogers",".room",".rs",".rsvp",".ru",".ruhr",".run",".rw",".rwe",".ryukyu",".sa",".saarland",".safe",".safety",".sakura",".sale",".salon",".samsclub",".samsung",".sandvik",".sandvikcoromant",".sanofi",".sap",".sapo",".sarl",".sas",".save",".saxo",".sb",".sbi",".sbs",".sc",".sca",".scb",".schaeffler",".schmidt",".scholarships",".school",".schule",".schwarz",".science",".scjohnson",".scor",".scot",".sd",".se",".seat",".secure",".security",".seek",".select",".sener",".services",".ses",".seven",".sew",".sex",".sexy",".sfr",".sg",".sh",".shangrila",".sharp",".shaw",".shell",".shia",".shiksha",".shoes",".shop",".shopping",".shouji",".show",".showtime",".shriram",".si",".silk",".sina",".singles",".site",".sj",".sk",".ski",".skin",".sky",".skype",".sl",".sling",".sm",".smart",".smile",".sn",".sncf",".so",".soccer",".social",".softbank",".software",".sohu",".solar",".solutions",".song",".sony",".soy",".space",".spiegel",".spot",".spreadbetting",".sr",".srl",".srt",".st",".stada",".staples",".star",".starhub",".statebank",".statefarm",".statoil",".stc",".stcgroup",".stockholm",".storage",".store",".stream",".studio",".study",".style",".su",".sucks",".supplies",".supply",".support",".surf",".surgery",".suzuki",".sv",".swatch",".swiftcover",".swiss",".sx",".sy",".sydney",".symantec",".systems",".sz",".tab",".taipei",".talk",".taobao",".target",".tatamotors",".tatar",".tattoo",".tax",".taxi",".tc",".tci",".td",".tdk",".team",".tech",".technology",".tel",".telecity",".telefonica",".temasek",".tennis",".teva",".tf",".tg",".th",".thd",".theater",".theatre",".tiaa",".tickets",".tienda",".tiffany",".tips",".tires",".tirol",".tj",".tjmaxx",".tjx",".tk",".tkmaxx",".tl",".tm",".tmall",".tn",".to",".today",".tokyo",".tools",".top",".toray",".toshiba",".total",".tours",".town",".toyota",".toys",".tr",".trade",".trading",".training",".travel",".travelchannel",".travelers",".travelersinsurance",".trust",".trv",".tt",".tube",".tui",".tunes",".tushu",".tv",".tvs",".tw",".tz",".ua",".ubank",".ubs",".uconnect",".ug",".uk",".unicom",".university",".uno",".uol",".ups",".us",".uy",".uz",".va",".vacations",".vana",".vanguard",".vc",".ve",".vegas",".ventures",".verisign",".versicherung",".vet",".vg",".vi",".viajes",".video",".vig",".viking",".villas",".vin",".vip",".virgin",".visa",".vision",".vista",".vistaprint",".viva",".vivo",".vlaanderen",".vn",".vodka",".volkswagen",".vote",".voting",".voto",".voyage",".vu",".vuelos",".wales",".walmart",".walter",".wang",".wanggou",".warman",".watch",".watches",".weather",".weatherchannel",".webcam",".weber",".website",".wed",".wedding",".weibo",".weir",".wf",".whoswho",".wien",".wiki",".williamhill",".win",".windows",".wine",".winners",".wme",".wolterskluwer",".woodside",".work",".works",".world",".wow",".ws",".wtc",".wtf",".xbox",".xerox",".xfinity",".xihuan",".xin",".xn--11b4c3d",".xn--1ck2e1b",".xn--1qqw23a",".xn--30rr7y",".xn--3bst00m",".xn--3ds443g",".xn--3e0b707e",".xn--3oq18vl8pn36a",".xn--3pxu8k",".xn--42c2d9a",".xn--45brj9c",".xn--45q11c",".xn--4gbrim",".xn--54b7fta0cc",".xn--55qw42g",".xn--55qx5d",".xn--5su34j936bgsg",".xn--5tzm5g",".xn--6frz82g",".xn--6qq986b3xl",".xn--80adxhks",".xn--80ao21a",".xn--80asehdb",".xn--80aswg",".xn--8y0a063a",".xn--90a3ac",".xn--90ae",".xn--90ais",".xn--9dbq2a",".xn--9et52u",".xn--9krt00a",".xn--b4w605ferd",".xn--bck1b9a5dre4c",".xn--c1avg",".xn--c2br7g",".xn--cck2b3b",".xn--cg4bki",".xn--clchc0ea0b2g2a9gcd",".xn--czr694b",".xn--czrs0t",".xn--czru2d",".xn--d1acj3b",".xn--d1alf",".xn--e1a4c",".xn--eckvdtc9d",".xn--efvy88h",".xn--estv75g",".xn--fct429k",".xn--fhbei",".xn--fiq228c5hs",".xn--fiq64b",".xn--fiqs8s",".xn--fiqz9s",".xn--fjq720a",".xn--flw351e",".xn--fpcrj9c3d",".xn--fzc2c9e2c",".xn--fzys8d69uvgm",".xn--g2xx48c",".xn--gckr3f0f",".xn--gecrj9c",".xn--gk3at1e",".xn--h2brj9c",".xn--hxt814e",".xn--i1b6b1a6a2e",".xn--imr513n",".xn--io0a7i",".xn--j1aef",".xn--j1amh",".xn--j6w193g",".xn--jlq61u9w7b",".xn--jvr189m",".xn--kcrx77d1x4a",".xn--kprw13d",".xn--kpry57d",".xn--kpu716f",".xn--kput3i",".xn--l1acc",".xn--lgbbat1ad8j",".xn--mgb9awbf",".xn--mgba3a3ejt",".xn--mgba3a4f16a",".xn--mgba7c0bbn0a",".xn--mgbaam7a8h",".xn--mgbab2bd",".xn--mgbayh7gpa",".xn--mgbb9fbpob",".xn--mgbbh1a71e",".xn--mgbc0a9azcg",".xn--mgbca7dzdo",".xn--mgberp4a5d4ar",".xn--mgbpl2fh",".xn--mgbt3dhd",".xn--mgbtx2b",".xn--mgbx4cd0ab",".xn--mix891f",".xn--mk1bu44c",".xn--mxtq1m",".xn--ngbc5azd",".xn--ngbe9e0a",".xn--node",".xn--nqv7f",".xn--nqv7fs00ema",".xn--nyqy26a",".xn--o3cw4h",".xn--ogbpf8fl",".xn--p1acf",".xn--p1ai",".xn--pbt977c",".xn--pgbs0dh",".xn--pssy2u",".xn--q9jyb4c",".xn--qcka1pmc",".xn--qxam",".xn--rhqv96g",".xn--rovu88b",".xn--s9brj9c",".xn--ses554g",".xn--t60b56a",".xn--tckwe",".xn--unup4y",".xn--vermgensberater-ctb",".xn--vermgensberatung-pwb",".xn--vhquv",".xn--vuq861b",".xn--w4r85el8fhu5dnra",".xn--w4rs40l",".xn--wgbh1c",".xn--wgbl6a",".xn--xhq521b",".xn--xkc2al3hye2a",".xn--xkc2dl3a5ee0h",".xn--y9a3aq",".xn--yfro4i67o",".xn--ygbi2ammx",".xn--zfr164b",".xperia",".xxx",".xyz",".yachts",".yahoo",".yamaxun",".yandex",".ye",".yodobashi",".yoga",".yokohama",".you",".youtube",".yt",".yun",".za",".zappos",".zara",".zero",".zip",".zippo",".zm",".zone",".zuerich",".zw"],g=["src=","href=","cite=","formaction=","icon=","manifest=","poster=","codebase=","background=","profile=","usemap="],p=function(a){if(e(a,"@")<1)return!1;a=a.toLowerCase(),a=n(a);var t=a.substring(0,a.indexOf("@")),i=a.substr(a.indexOf("@")+1);return t.split("").filter(function(e){return~f.indexOf(e)}).length===t.length&&(i.split("").filter(function(e){return~d.indexOf(e)}).length===i.length&&(!!i.endsWith(".com")||!!~m.indexOf(i.substr(i.lastIndexOf(".")))))},h=function(a){if(e(a,".")<3)return!1;a=a.toLowerCase(),a=n(a);var r=a.split("."),o=r[0],s=r[1],c=r[2];if(!t(o)||o>255||o<0)return!1;if(!t(s)||s>255||s<0)return!1;if(!t(c)||c>255||c<0)return!1;var l,u,f,d=r[3];if(!d)return!1;if(~d.indexOf("/")){var b=d.split("/");l=b[0],f=b[1]}if(~d.indexOf(":")&&~d.indexOf("/")&&d.indexOf(":")<d.indexOf("/")){var m=d.split(":"),g=m[1].split("/");l=m[0],u=g[0]}if(~d.indexOf(":")&&d.indexOf("/")<0&&!r.slice(4).join()){var p=d.split(":");l=p[0],u=p[1]}return d.indexOf(":")<0&&d.indexOf("/")<0&&!r.slice(4).join()&&(l=d),!(!t(l)||l>255||l<0)&&(!(void 0!==u&&!i(u))&&!!l)},x=function(a){if(0===e(a,"."))return!1;if(1===e(a,".")&&a.indexOf(".")===a.length-1)return!1;if(a.indexOf("/")<3&&a.indexOf("/")>0)return!1;if(a=a.toLowerCase(),a=n(a),~a.indexOf("/")){var t=a.indexOf("/"),i=a.substring(0,t);if(~i.indexOf(".."))return!1;if(i.split("").filter(function(e){return~d.indexOf(e)}).length!==i.length)return!1;if(i.endsWith(".com"))return!0;if(i.indexOf(":")>0){var r=i.split(":"),o=r[0],s=r[1];if(!s)return!1;if(isNaN(s))return!1;if(parseInt(s)>65535)return!1;if(a.endsWith(".com"))return!0;if(!~m.indexOf(o.substr(o.lastIndexOf("."))))return!1}else if(!~m.indexOf(i.substr(i.lastIndexOf("."))))return!1}else{if(~a.indexOf(".."))return!1;if(a.split("").filter(function(e){return~d.indexOf(e)}).length!==a.length)return!1;if(a.endsWith(".com"))return!0;if(a.indexOf(":")>0){var c=a.split(":"),l=c[0],u=c[1];if(!u)return!1;if(isNaN(u))return!1;if(parseInt(u)>65535)return!1;if(a.endsWith(".com"))return!0;if(!~m.indexOf(l.substr(l.lastIndexOf("."))))return!1}else if(!~m.indexOf(a.substr(a.lastIndexOf("."))))return!1}return!0},y=["\n","\r","\t","(",")","[","]","<",">","'",'"'],k=function(e){return e=r(e,"(",")"),e=r(e,"[","]"),e=r(e,'"','"'),e=r(e,"'","'")},v=function(e){return e=e.toLowerCase(),e.startsWith("http://")?"http://":e.startsWith("https://")?"https://":e.startsWith("ftp://")?"ftp://":e.startsWith("file:///")?"file:///":!!e.startsWith("mailto:")&&"mailto:"},w=function(e,n){return e.map(function(a,t){var i=encodeURI(a);if(i.indexOf(".")<1&&!v(i))return a;if(i.split("").filter(function(e){return~b.indexOf(e)}).length!==i.length)return a;var r=!1,o=v(i)||"";if(n.files&&"file:///"===o&&i.substr(o.length).split(/\/|\\/).length-1?r={reason:"file",protocol:o,raw:a,encoded:i}:o&&(i=i.substr(o.length)),!r&&n.urls&&x(i)&&(r={reason:"url",protocol:o?o:"function"==typeof n.defaultProtocol?n.defaultProtocol(a):n.defaultProtocol,raw:a,encoded:i}),!r&&n.emails&&p(i)&&(r={reason:"email",protocol:"mailto:",raw:a,encoded:i}),!r&&n.ips&&h(i)&&(r={reason:"ip",protocol:o?o:"function"==typeof n.defaultProtocol?n.defaultProtocol(a):n.defaultProtocol,raw:a,encoded:i}),r){return"'"!==e[t-1]&&'"'!==e[t-1]||!~g.indexOf(e[t-2])?r:a}return a})},j=function(e,n){var a=s(e);return a=w(a,n),n.list?a.filter(function(e){return"string"!=typeof e}):(a=a.map(function(e){return"string"==typeof e?e:l(e,n)}),c(a))},z=function(e,n){n=a(n);var t=j(e,n);return t};return z.validate={ip:h,url:function(e){var n=v(e)||"";return e=e.substr(n.length),e=encodeURI(e),x(e)},email:p},z});
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.anchorme=n()}(this,function(){"use strict";function e(e,n,a){return e.split(n).length-1}function n(e){function n(e,a){return e.endsWith(a)?(e=e.substring(0,e.length-1),n(e,a)):e}return e.endsWith("?")?e=n(e,"?"):e.endsWith(";")?e=n(e,";"):e.endsWith(":")?e=n(e,":"):e.endsWith(",")?e=n(e,","):e.endsWith(".")&&(e=n(e,".")),e}function a(e){return e||(e={attributes:[],ips:!0,emails:!0,urls:!0,files:!0,truncate:0,defaultProtocol:"http://",list:!1}),"object"!==u(e.attributes)&&(e.attributes=[]),"boolean"!=typeof e.ips&&(e.ips=!0),"boolean"!=typeof e.emails&&(e.emails=!0),"boolean"!=typeof e.urls&&(e.urls=!0),"boolean"!=typeof e.files&&(e.files=!0),"boolean"!=typeof e.list&&(e.list=!1),"string"!=typeof e.defaultProtocol&&"function"!=typeof e.defaultProtocol&&(e.defaultProtocol="http://"),"number"==typeof e.truncate||"object"===u(e.truncate)&&null!==e.truncate||(e.truncate=0),e}function t(e){return!("string"==typeof e&&e.indexOf(".")>-1)&&(("number"!=typeof e||Math.round(e)===e)&&(""!==e&&!isNaN(1*e)))}function i(e){return!!t(e)&&!(1*e>65535)}function r(e,n,a){return e.forEach(function(t,i){!(t.indexOf(".")>-1)||e[i-1]===n&&e[i+1]===a||e[i+1]!==n&&e[i+1]!==a||(e[i]=e[i]+e[i+1],"string"==typeof e[i+2]&&(e[i]=e[i]+e[i+2]),"string"==typeof e[i+3]&&(e[i]=e[i]+e[i+3]),"string"==typeof e[i+4]&&(e[i]=e[i]+e[i+4]),e.splice(i+1,4),r(e,n,a))}),e}function o(e){return" "+e+" "}function s(e){return y.forEach(function(n){e=e.split(n).join(o(n))}),e=k(e.split(" "))}function c(e){return e=e.join(" "),y.forEach(function(n){e=e.split(o(n)).join(n)}),e}function l(e,a){var t=e.protocol+n(e.encoded),i=e.raw;return(a.truncate>0||a.truncate.push)&&(a.truncate.toPrecision?i.length>a.truncate&&(i=i.substring(0,a.truncate)+"..."):a.truncate[0].toPrecision&&a.truncate[1].toPrecision&&i.length>a.truncate[0]+a.truncate[1]&&(i=i.substr(0,a.truncate[0])+"..."+i.substr(i.length-a.truncate[1]))),'<a href="'+t+'" '+a.attributes.map(function(n){if("function"!=typeof n)return" "+n.name+'="'+n.value+'" ';var a=(n(e)||{}).name,t=(n(e)||{}).value;return a&&!t?" name ":a&&t?" "+a+'="'+t+'" ':void 0}).join("")+">"+i+"</a>"}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f="abcdefghijklmnopqrstuvwxyz0123456789!#$%&'*+-/=?^_`{|}~.",d="abcdefghijklmnopqrstuvwxyz0123456789-.:%",b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=%",m=[".com",".net",".org",".edu",".gov",".uk",".ca",".de",".jp",".fr",".au",".us",".ru",".ch",".it",".nl",".se",".no",".es",".io",".aaa",".aarp",".abarth",".abb",".abbott",".abbvie",".abc",".able",".abogado",".abudhabi",".ac",".academy",".accenture",".accountant",".accountants",".aco",".active",".actor",".ad",".adac",".ads",".adult",".ae",".aeg",".aero",".aetna",".af",".afamilycompany",".afl",".ag",".agakhan",".agency",".ai",".aig",".aigo",".airbus",".airforce",".airtel",".akdn",".al",".alfaromeo",".alibaba",".alipay",".allfinanz",".allstate",".ally",".alsace",".alstom",".am",".americanexpress",".americanfamily",".amex",".amfam",".amica",".amsterdam",".analytics",".android",".anquan",".anz",".ao",".apartments",".app",".apple",".aq",".aquarelle",".ar",".aramco",".archi",".army",".arpa",".art",".arte",".as",".asda",".asia",".associates",".at",".athleta",".attorney",".au",".auction",".audi",".audible",".audio",".auspost",".author",".auto",".autos",".avianca",".aw",".aws",".ax",".axa",".az",".azure",".ba",".baby",".baidu",".banamex",".bananarepublic",".band",".bank",".bar",".barcelona",".barclaycard",".barclays",".barefoot",".bargains",".bauhaus",".bayern",".bb",".bbc",".bbt",".bbva",".bcg",".bcn",".bd",".be",".beats",".beauty",".beer",".bentley",".berlin",".best",".bestbuy",".bet",".bf",".bg",".bh",".bharti",".bi",".bible",".bid",".bike",".bing",".bingo",".bio",".biz",".bj",".black",".blackfriday",".blanco",".blockbuster",".blog",".bloomberg",".blue",".bm",".bms",".bmw",".bn",".bnl",".bnpparibas",".bo",".boats",".boehringer",".bofa",".bom",".bond",".boo",".book",".booking",".boots",".bosch",".bostik",".bot",".boutique",".br",".bradesco",".bridgestone",".broadway",".broker",".brother",".brussels",".bs",".bt",".budapest",".bugatti",".build",".builders",".business",".buy",".buzz",".bv",".bw",".by",".bz",".bzh",".ca",".cab",".cafe",".cal",".call",".calvinklein",".cam",".camera",".camp",".cancerresearch",".canon",".capetown",".capital",".capitalone",".car",".caravan",".cards",".care",".career",".careers",".cars",".cartier",".casa",".cash",".casino",".cat",".catering",".cba",".cbn",".cbre",".cbs",".cc",".cd",".ceb",".center",".ceo",".cern",".cf",".cfa",".cfd",".cg",".ch",".chanel",".channel",".chase",".chat",".cheap",".chintai",".chloe",".christmas",".chrome",".chrysler",".church",".ci",".cipriani",".circle",".cisco",".citadel",".citi",".citic",".city",".cityeats",".ck",".cl",".claims",".cleaning",".click",".clinic",".clinique",".clothing",".cloud",".club",".clubmed",".cm",".cn",".co",".coach",".codes",".coffee",".college",".cologne",".comcast",".commbank",".community",".company",".compare",".computer",".comsec",".condos",".construction",".consulting",".contact",".contractors",".cooking",".cookingchannel",".cool",".coop",".corsica",".country",".coupon",".coupons",".courses",".cr",".credit",".creditcard",".creditunion",".cricket",".crown",".crs",".cruises",".csc",".cu",".cuisinella",".cv",".cw",".cx",".cy",".cymru",".cyou",".cz",".dabur",".dad",".dance",".date",".dating",".datsun",".day",".dclk",".dds",".de",".deal",".dealer",".deals",".degree",".delivery",".dell",".deloitte",".delta",".democrat",".dental",".dentist",".desi",".design",".dev",".dhl",".diamonds",".diet",".digital",".direct",".directory",".discount",".discover",".dish",".diy",".dj",".dk",".dm",".dnp",".do",".docs",".doctor",".dodge",".dog",".doha",".domains",".dot",".download",".drive",".dtv",".dubai",".duck",".dunlop",".duns",".dupont",".durban",".dvag",".dvr",".dz",".earth",".eat",".ec",".eco",".edeka",".edu",".education",".ee",".eg",".email",".emerck",".energy",".engineer",".engineering",".enterprises",".epost",".epson",".equipment",".er",".ericsson",".erni",".es",".esq",".estate",".esurance",".et",".eu",".eurovision",".eus",".events",".everbank",".exchange",".expert",".exposed",".express",".extraspace",".fage",".fail",".fairwinds",".faith",".family",".fan",".fans",".farm",".farmers",".fashion",".fast",".fedex",".feedback",".ferrari",".ferrero",".fi",".fiat",".fidelity",".fido",".film",".final",".finance",".financial",".fire",".firestone",".firmdale",".fish",".fishing",".fit",".fitness",".fj",".fk",".flickr",".flights",".flir",".florist",".flowers",".fly",".fm",".fo",".foo",".foodnetwork",".football",".ford",".forex",".forsale",".forum",".foundation",".fox",".fr",".fresenius",".frl",".frogans",".frontdoor",".frontier",".ftr",".fujitsu",".fujixerox",".fund",".furniture",".futbol",".fyi",".ga",".gal",".gallery",".gallo",".gallup",".game",".games",".gap",".garden",".gb",".gbiz",".gd",".gdn",".ge",".gea",".gent",".genting",".george",".gf",".gg",".ggee",".gh",".gi",".gift",".gifts",".gives",".giving",".gl",".glade",".glass",".gle",".global",".globo",".gm",".gmail",".gmbh",".gmo",".gmx",".gn",".godaddy",".gold",".goldpoint",".golf",".goo",".goodhands",".goodyear",".goog",".google",".gop",".got",".gov",".gp",".gq",".gr",".grainger",".graphics",".gratis",".green",".gripe",".group",".gs",".gt",".gu",".guardian",".gucci",".guge",".guide",".guitars",".guru",".gw",".gy",".hamburg",".hangout",".haus",".hbo",".hdfc",".hdfcbank",".health",".healthcare",".help",".helsinki",".here",".hermes",".hgtv",".hiphop",".hisamitsu",".hitachi",".hiv",".hk",".hkt",".hm",".hn",".hockey",".holdings",".holiday",".homedepot",".homegoods",".homes",".homesense",".honda",".honeywell",".horse",".host",".hosting",".hot",".hoteles",".hotmail",".house",".how",".hr",".hsbc",".ht",".htc",".hu",".hughes",".hyatt",".hyundai",".ibm",".icbc",".ice",".icu",".id",".ie",".ieee",".ifm",".iinet",".ikano",".il",".im",".imamat",".imdb",".immo",".immobilien",".in",".industries",".infiniti",".info",".ing",".ink",".institute",".insurance",".insure",".int",".intel",".international",".intuit",".investments",".io",".ipiranga",".iq",".ir",".irish",".is",".iselect",".ismaili",".ist",".istanbul",".it",".itau",".itv",".iwc",".jaguar",".java",".jcb",".jcp",".je",".jeep",".jetzt",".jewelry",".jlc",".jll",".jm",".jmp",".jnj",".jo",".jobs",".joburg",".jot",".joy",".jp",".jpmorgan",".jprs",".juegos",".juniper",".kaufen",".kddi",".ke",".kerryhotels",".kerrylogistics",".kerryproperties",".kfh",".kg",".kh",".ki",".kia",".kim",".kinder",".kindle",".kitchen",".kiwi",".km",".kn",".koeln",".komatsu",".kosher",".kp",".kpmg",".kpn",".kr",".krd",".kred",".kuokgroup",".kw",".ky",".kyoto",".kz",".la",".lacaixa",".ladbrokes",".lamborghini",".lamer",".lancaster",".lancia",".lancome",".land",".landrover",".lanxess",".lasalle",".lat",".latino",".latrobe",".law",".lawyer",".lb",".lc",".lds",".lease",".leclerc",".lefrak",".legal",".lego",".lexus",".lgbt",".li",".liaison",".lidl",".life",".lifeinsurance",".lifestyle",".lighting",".like",".lilly",".limited",".limo",".lincoln",".linde",".link",".lipsy",".live",".living",".lixil",".lk",".loan",".loans",".locker",".locus",".loft",".lol",".london",".lotte",".lotto",".love",".lpl",".lplfinancial",".lr",".ls",".lt",".ltd",".ltda",".lu",".lundbeck",".lupin",".luxe",".luxury",".lv",".ly",".ma",".macys",".madrid",".maif",".maison",".makeup",".man",".management",".mango",".market",".marketing",".markets",".marriott",".marshalls",".maserati",".mattel",".mba",".mc",".mcd",".mcdonalds",".mckinsey",".md",".me",".med",".media",".meet",".melbourne",".meme",".memorial",".men",".menu",".meo",".metlife",".mg",".mh",".miami",".microsoft",".mil",".mini",".mint",".mit",".mitsubishi",".mk",".ml",".mlb",".mls",".mm",".mma",".mn",".mo",".mobi",".mobily",".moda",".moe",".moi",".mom",".monash",".money",".monster",".montblanc",".mopar",".mormon",".mortgage",".moscow",".motorcycles",".mov",".movie",".movistar",".mp",".mq",".mr",".ms",".msd",".mt",".mtn",".mtpc",".mtr",".mu",".museum",".mutual",".mutuelle",".mv",".mw",".mx",".my",".mz",".na",".nab",".nadex",".nagoya",".name",".nationwide",".natura",".navy",".nba",".nc",".ne",".nec",".netbank",".netflix",".network",".neustar",".new",".news",".next",".nextdirect",".nexus",".nf",".nfl",".ng",".ngo",".nhk",".ni",".nico",".nike",".nikon",".ninja",".nissan",".nissay",".nl",".no",".nokia",".northwesternmutual",".norton",".now",".nowruz",".nowtv",".np",".nr",".nra",".nrw",".ntt",".nu",".nyc",".nz",".obi",".observer",".off",".office",".okinawa",".olayan",".olayangroup",".oldnavy",".ollo",".om",".omega",".one",".ong",".onl",".online",".onyourside",".ooo",".open",".oracle",".orange",".org",".organic",".orientexpress",".origins",".osaka",".otsuka",".ott",".ovh",".pa",".page",".pamperedchef",".panasonic",".panerai",".paris",".pars",".partners",".parts",".party",".passagens",".pay",".pccw",".pe",".pet",".pf",".pfizer",".pg",".ph",".pharmacy",".philips",".photo",".photography",".photos",".physio",".piaget",".pics",".pictet",".pictures",".pid",".pin",".ping",".pink",".pioneer",".pizza",".pk",".pl",".place",".play",".playstation",".plumbing",".plus",".pm",".pn",".pnc",".pohl",".poker",".politie",".porn",".post",".pr",".pramerica",".praxi",".press",".prime",".pro",".prod",".productions",".prof",".progressive",".promo",".properties",".property",".protection",".pru",".prudential",".ps",".pt",".pub",".pw",".pwc",".py",".qa",".qpon",".quebec",".quest",".qvc",".racing",".raid",".re",".read",".realestate",".realtor",".realty",".recipes",".red",".redstone",".redumbrella",".rehab",".reise",".reisen",".reit",".ren",".rent",".rentals",".repair",".report",".republican",".rest",".restaurant",".review",".reviews",".rexroth",".rich",".richardli",".ricoh",".rightathome",".rio",".rip",".ro",".rocher",".rocks",".rodeo",".rogers",".room",".rs",".rsvp",".ru",".ruhr",".run",".rw",".rwe",".ryukyu",".sa",".saarland",".safe",".safety",".sakura",".sale",".salon",".samsclub",".samsung",".sandvik",".sandvikcoromant",".sanofi",".sap",".sapo",".sarl",".sas",".save",".saxo",".sb",".sbi",".sbs",".sc",".sca",".scb",".schaeffler",".schmidt",".scholarships",".school",".schule",".schwarz",".science",".scjohnson",".scor",".scot",".sd",".se",".seat",".secure",".security",".seek",".select",".sener",".services",".ses",".seven",".sew",".sex",".sexy",".sfr",".sg",".sh",".shangrila",".sharp",".shaw",".shell",".shia",".shiksha",".shoes",".shop",".shopping",".shouji",".show",".showtime",".shriram",".si",".silk",".sina",".singles",".site",".sj",".sk",".ski",".skin",".sky",".skype",".sl",".sling",".sm",".smart",".smile",".sn",".sncf",".so",".soccer",".social",".softbank",".software",".sohu",".solar",".solutions",".song",".sony",".soy",".space",".spiegel",".spot",".spreadbetting",".sr",".srl",".srt",".st",".stada",".staples",".star",".starhub",".statebank",".statefarm",".statoil",".stc",".stcgroup",".stockholm",".storage",".store",".stream",".studio",".study",".style",".su",".sucks",".supplies",".supply",".support",".surf",".surgery",".suzuki",".sv",".swatch",".swiftcover",".swiss",".sx",".sy",".sydney",".symantec",".systems",".sz",".tab",".taipei",".talk",".taobao",".target",".tatamotors",".tatar",".tattoo",".tax",".taxi",".tc",".tci",".td",".tdk",".team",".tech",".technology",".tel",".telecity",".telefonica",".temasek",".tennis",".teva",".tf",".tg",".th",".thd",".theater",".theatre",".tiaa",".tickets",".tienda",".tiffany",".tips",".tires",".tirol",".tj",".tjmaxx",".tjx",".tk",".tkmaxx",".tl",".tm",".tmall",".tn",".to",".today",".tokyo",".tools",".top",".toray",".toshiba",".total",".tours",".town",".toyota",".toys",".tr",".trade",".trading",".training",".travel",".travelchannel",".travelers",".travelersinsurance",".trust",".trv",".tt",".tube",".tui",".tunes",".tushu",".tv",".tvs",".tw",".tz",".ua",".ubank",".ubs",".uconnect",".ug",".uk",".unicom",".university",".uno",".uol",".ups",".us",".uy",".uz",".va",".vacations",".vana",".vanguard",".vc",".ve",".vegas",".ventures",".verisign",".versicherung",".vet",".vg",".vi",".viajes",".video",".vig",".viking",".villas",".vin",".vip",".virgin",".visa",".vision",".vista",".vistaprint",".viva",".vivo",".vlaanderen",".vn",".vodka",".volkswagen",".vote",".voting",".voto",".voyage",".vu",".vuelos",".wales",".walmart",".walter",".wang",".wanggou",".warman",".watch",".watches",".weather",".weatherchannel",".webcam",".weber",".website",".wed",".wedding",".weibo",".weir",".wf",".whoswho",".wien",".wiki",".williamhill",".win",".windows",".wine",".winners",".wme",".wolterskluwer",".woodside",".work",".works",".world",".wow",".ws",".wtc",".wtf",".xbox",".xerox",".xfinity",".xihuan",".xin",".xn--11b4c3d",".xn--1ck2e1b",".xn--1qqw23a",".xn--30rr7y",".xn--3bst00m",".xn--3ds443g",".xn--3e0b707e",".xn--3oq18vl8pn36a",".xn--3pxu8k",".xn--42c2d9a",".xn--45brj9c",".xn--45q11c",".xn--4gbrim",".xn--54b7fta0cc",".xn--55qw42g",".xn--55qx5d",".xn--5su34j936bgsg",".xn--5tzm5g",".xn--6frz82g",".xn--6qq986b3xl",".xn--80adxhks",".xn--80ao21a",".xn--80asehdb",".xn--80aswg",".xn--8y0a063a",".xn--90a3ac",".xn--90ae",".xn--90ais",".xn--9dbq2a",".xn--9et52u",".xn--9krt00a",".xn--b4w605ferd",".xn--bck1b9a5dre4c",".xn--c1avg",".xn--c2br7g",".xn--cck2b3b",".xn--cg4bki",".xn--clchc0ea0b2g2a9gcd",".xn--czr694b",".xn--czrs0t",".xn--czru2d",".xn--d1acj3b",".xn--d1alf",".xn--e1a4c",".xn--eckvdtc9d",".xn--efvy88h",".xn--estv75g",".xn--fct429k",".xn--fhbei",".xn--fiq228c5hs",".xn--fiq64b",".xn--fiqs8s",".xn--fiqz9s",".xn--fjq720a",".xn--flw351e",".xn--fpcrj9c3d",".xn--fzc2c9e2c",".xn--fzys8d69uvgm",".xn--g2xx48c",".xn--gckr3f0f",".xn--gecrj9c",".xn--gk3at1e",".xn--h2brj9c",".xn--hxt814e",".xn--i1b6b1a6a2e",".xn--imr513n",".xn--io0a7i",".xn--j1aef",".xn--j1amh",".xn--j6w193g",".xn--jlq61u9w7b",".xn--jvr189m",".xn--kcrx77d1x4a",".xn--kprw13d",".xn--kpry57d",".xn--kpu716f",".xn--kput3i",".xn--l1acc",".xn--lgbbat1ad8j",".xn--mgb9awbf",".xn--mgba3a3ejt",".xn--mgba3a4f16a",".xn--mgba7c0bbn0a",".xn--mgbaam7a8h",".xn--mgbab2bd",".xn--mgbayh7gpa",".xn--mgbb9fbpob",".xn--mgbbh1a71e",".xn--mgbc0a9azcg",".xn--mgbca7dzdo",".xn--mgberp4a5d4ar",".xn--mgbpl2fh",".xn--mgbt3dhd",".xn--mgbtx2b",".xn--mgbx4cd0ab",".xn--mix891f",".xn--mk1bu44c",".xn--mxtq1m",".xn--ngbc5azd",".xn--ngbe9e0a",".xn--node",".xn--nqv7f",".xn--nqv7fs00ema",".xn--nyqy26a",".xn--o3cw4h",".xn--ogbpf8fl",".xn--p1acf",".xn--p1ai",".xn--pbt977c",".xn--pgbs0dh",".xn--pssy2u",".xn--q9jyb4c",".xn--qcka1pmc",".xn--qxam",".xn--rhqv96g",".xn--rovu88b",".xn--s9brj9c",".xn--ses554g",".xn--t60b56a",".xn--tckwe",".xn--unup4y",".xn--vermgensberater-ctb",".xn--vermgensberatung-pwb",".xn--vhquv",".xn--vuq861b",".xn--w4r85el8fhu5dnra",".xn--w4rs40l",".xn--wgbh1c",".xn--wgbl6a",".xn--xhq521b",".xn--xkc2al3hye2a",".xn--xkc2dl3a5ee0h",".xn--y9a3aq",".xn--yfro4i67o",".xn--ygbi2ammx",".xn--zfr164b",".xperia",".xxx",".xyz",".yachts",".yahoo",".yamaxun",".yandex",".ye",".yodobashi",".yoga",".yokohama",".you",".youtube",".yt",".yun",".za",".zappos",".zara",".zero",".zip",".zippo",".zm",".zone",".zuerich",".zw"],g=["src=","href=","cite=","formaction=","icon=","manifest=","poster=","codebase=","background=","profile=","usemap="],p=function(a){if(e(a,"@")<1)return!1;a=a.toLowerCase(),a=n(a);var t=a.substring(0,a.indexOf("@")),i=a.substr(a.indexOf("@")+1);return t.split("").filter(function(e){return~f.indexOf(e)}).length===t.length&&(i.split("").filter(function(e){return~d.indexOf(e)}).length===i.length&&(!!i.endsWith(".com")||!!~m.indexOf(i.substr(i.lastIndexOf(".")))))},h=function(a){if(e(a,".")<3)return!1;a=a.toLowerCase(),a=n(a);var r=a.split("."),o=r[0],s=r[1],c=r[2];if(!t(o)||o>255||o<0)return!1;if(!t(s)||s>255||s<0)return!1;if(!t(c)||c>255||c<0)return!1;var l,u,f,d=r[3];if(!d)return!1;if(~d.indexOf("/")){var b=d.split("/");l=b[0],f=b[1]}if(~d.indexOf(":")&&~d.indexOf("/")&&d.indexOf(":")<d.indexOf("/")){var m=d.split(":"),g=m[1].split("/");l=m[0],u=g[0]}if(~d.indexOf(":")&&d.indexOf("/")<0&&!r.slice(4).join()){var p=d.split(":");l=p[0],u=p[1]}return d.indexOf(":")<0&&d.indexOf("/")<0&&!r.slice(4).join()&&(l=d),!(!t(l)||l>255||l<0)&&(!(void 0!==u&&!i(u))&&!!l)},x=function(a){if(0===e(a,"."))return!1;if(1===e(a,".")&&a.indexOf(".")===a.length-1)return!1;if(a.indexOf("/")<3&&a.indexOf("/")>0)return!1;if(a=a.toLowerCase(),a=n(a),~a.indexOf("/")){var t=a.indexOf("/"),i=a.substring(0,t);if(~i.indexOf(".."))return!1;if(i.split("").filter(function(e){return~d.indexOf(e)}).length!==i.length)return!1;if(i.endsWith(".com"))return!0;if(i.indexOf(":")>0){var r=i.split(":"),o=r[0],s=r[1];if(!s)return!1;if(isNaN(s))return!1;if(parseInt(s)>65535)return!1;if(a.endsWith(".com"))return!0;if(!~m.indexOf(o.substr(o.lastIndexOf("."))))return!1}else if(!~m.indexOf(i.substr(i.lastIndexOf("."))))return!1}else{if(~a.indexOf(".."))return!1;if(a.split("").filter(function(e){return~d.indexOf(e)}).length!==a.length)return!1;if(a.endsWith(".com"))return!0;if(a.indexOf(":")>0){var c=a.split(":"),l=c[0],u=c[1];if(!u)return!1;if(isNaN(u))return!1;if(parseInt(u)>65535)return!1;if(a.endsWith(".com"))return!0;if(!~m.indexOf(l.substr(l.lastIndexOf("."))))return!1}else if(!~m.indexOf(a.substr(a.lastIndexOf("."))))return!1}return!0},y=["\n","\r","\t","(",")","[","]","<",">","'",'"'],k=function(e){return e=r(e,"(",")"),e=r(e,"[","]"),e=r(e,'"','"'),e=r(e,"'","'")},v=function(e){return e=e.toLowerCase(),e.startsWith("http://")?"http://":e.startsWith("https://")?"https://":e.startsWith("ftp://")?"ftp://":e.startsWith("file:///")?"file:///":!!e.startsWith("mailto:")&&"mailto:"},w=function(e,n){return e.map(function(a,t){var i=encodeURI(a);if(i.indexOf(".")<1&&!v(i))return a;if(i.split("").filter(function(e){return~b.indexOf(e)}).length!==i.length)return a;var r=!1,o=v(i)||"";if(n.files&&"file:///"===o&&i.substr(o.length).split(/\/|\\/).length-1?r={reason:"file",protocol:o,raw:a,encoded:i}:o&&(i=i.substr(o.length)),!r&&n.urls&&x(i)&&(r={reason:"url",protocol:o?o:"function"==typeof n.defaultProtocol?n.defaultProtocol(a):n.defaultProtocol,raw:a,encoded:i}),!r&&n.emails&&p(i)&&(r={reason:"email",protocol:"mailto:",raw:a,encoded:i}),!r&&n.ips&&h(i)&&(r={reason:"ip",protocol:o?o:"function"==typeof n.defaultProtocol?n.defaultProtocol(a):n.defaultProtocol,raw:a,encoded:i}),r){return"'"!==e[t-1]&&'"'!==e[t-1]||!~g.indexOf(e[t-2])?r:a}return a})},j=function(e,n){var a=s(e);return a=w(a,n),n.list?a.filter(function(e){return"string"!=typeof e}):(a=a.map(function(e){return"string"==typeof e?e:l(e,n)}),c(a))},z=function(e,n){n=a(n);var t=j(e,n);return t};return z.validate={ip:h,url:function(e){var n=v(e)||"";return e=e.substr(n.length),e=encodeURI(e),x(e)},email:p},z});
{
"name": "anchorme",
"version": "0.8.2",
"version": "0.8.3",
"description": "A library to convert URLs to a clickable HTML anchor elements",

@@ -5,0 +5,0 @@ "main": "./dist/anchorme.js",

@@ -93,3 +93,3 @@ # Anchorme.js

This will make the truncation (as seen above) removing charecters from the middle instead of the end. So it will produce a link like this one: [raw.githubuserconten...tests/hasprotocol.js](https://raw.githubusercontent.com/alexcorvi/anchorme.js/gh-pages/src/tests/hasprotocol.js)
This will make the truncation (as seen above) removing characters from the middle instead of the end. So it will produce a link like this one: [raw.githubusercontent.com/.../hasprotocol.js](https://raw.githubusercontent.com/alexcorvi/anchorme.js/gh-pages/src/tests/hasprotocol.js)

@@ -99,4 +99,5 @@ ```javascript

anchorme(string,{
truncate:40,
middleTruncate:true
truncate:[26,15],
// means 26 characters from the beginning
// and 15 characters from the end
})

@@ -103,0 +104,0 @@

@@ -31,10 +31,6 @@ "use strict";

if(options.truncate.toPrecision) {
if(original.length > options.truncate) {
original = original.substring(0,options.truncate) + "...";
}
if(original.length > options.truncate) original = original.substring(0,options.truncate) + "...";
}
else if(options.truncate[0].toPrecision && options.truncate[1].toPrecision) {
if(original.length > (options.truncate[0] + options.truncate[1])) {
original = original.substr(0, options.truncate[0]) + "..." + original.substr(original.length - options.truncate[1]);
}
if(original.length > (options.truncate[0] + options.truncate[1])) original = original.substr(0, options.truncate[0]) + "..." + original.substr(original.length - options.truncate[1]);
}

@@ -41,0 +37,0 @@ }

@@ -9,3 +9,3 @@ "use strict";

function skipHtml(str) {
["src","href","cite","formaction","icon","manifest","poster","codebase","background","profile","usemap"]
["src","href","ref","cite","formaction","icon","manifest","poster","codebase","background","profile","usemap"]
.forEach((atr)=>{

@@ -12,0 +12,0 @@ str = str.split(`${atr}=" `).join(`${atr}="`);

@@ -1,142 +0,3 @@

const assert = require('assert');
const path = require("path");
const anchorme = require(path.join(process.cwd(),"dist","anchorme.js"));
const Bench = require(path.join(process.cwd(),"test","bench","index.js"));
describe('Basic Tests', function () {
describe('Emails', function () {
describe('Valid emails return true', function () {
it('alex@gmail.com', function () {
assert.ok(anchorme.validate.email("alex@gmail.com"));
});
it('alex@gmail.co.uk', function () {
assert.ok(anchorme.validate.email("alex@gmail.co.uk"));
});
it('alex@gmail.co', function () {
assert.ok(anchorme.validate.email("alex@gmail.co"));
});
it('alex.corvi@gmail.net', function () {
assert.ok(anchorme.validate.email("alex.corvi@gmail.net"));
});
it('alex-s@gmail.com', function () {
assert.ok(anchorme.validate.email("alex-s@gmail.com"));
});
});
describe('Non email return false', function () {
it('alex@gmail.nonvalidtld',() =>assert.equal(anchorme.validate.email("alex@gmail.nonvalidtld"),false));
it('alexis.@6@gmail.com',() =>assert.equal(anchorme.validate.email("alexis.@6@gmail.com"),false));
it('alexi\/\/\/\/\s.@6@gmail.com',() =>assert.equal(anchorme.validate.email("alexi\/\/\/\/\s.@6@gmail.com"),false));
});
});
describe('ports', function () {
describe('Valid IPs return true', function () {
it('1.2.3.4',()=>assert.ok(anchorme.validate.ip("1.2.3.4")));
it('1.2.3.4:3',()=>assert.ok(anchorme.validate.ip("1.2.3.4:3")));
it('1.2.3.4:3/route',()=>assert.ok(anchorme.validate.ip("1.2.3.4:3/route")));
it('1.2.3.4:3/route:47',()=>assert.ok(anchorme.validate.ip("1.2.3.4:3/route:47")));
it('1.2.3.4/route:47',()=>assert.ok(anchorme.validate.ip("1.2.3.4/route:47")));
});
describe('Non valid IPs return false', function () {
it('500.3.3.5',()=>assert.equal(anchorme.validate.ip("500.3.3.5"),false));
it('1.2.2.500',()=>assert.equal(anchorme.validate.ip("1.2.2.500"),false));
it('1.2.3.4....b',()=>assert.equal(anchorme.validate.ip("1.2.3.4....b"),false));
it('6.7.8.9:abc/dsada',()=>assert.equal(anchorme.validate.ip("6.7.8.9:abc/dsada"),false));
it('6.7.8.9:/dsada',()=>assert.equal(anchorme.validate.ip("6.7.8.9:/dsada"),false));
});
});
describe('domain URLs', function () {
describe('Valid URLs return true', function () {
it('www.google.com',()=>assert.ok(anchorme.validate.url("www.google.com")));
it('www.google.com?',()=>assert.ok(anchorme.validate.url("www.google.com?")));
it('www.facebook.com.',()=>assert.ok(anchorme.validate.url("www.facebook.com.")));
it('www.google.co.uk',()=>assert.ok(anchorme.validate.url("www.google.co.uk")));
it('www.google.com/route/',()=>assert.ok(anchorme.validate.url("www.google.com/route/")));
it('www.google.com:458/route',()=>assert.ok(anchorme.validate.url("www.google.com:458/route")));
});
describe('Non valid URLs return false', function () {
it('www.google.nonvalidtld',()=>assert.equal(anchorme.validate.url("www.google.nonvalidtld"),false));
it('www.goog?le.com?',()=>assert.equal(anchorme.validate.url("www.goog?le.com?"),false));
});
});
});
describe('options', function () {
it('add attributes', function () {
var result = anchorme("www.google.com",{
attributes:[
{
name:"target",
value:"_blank"
}
]
});
assert.equal(result.split("_blank").length,2);
});
it('attributes with filters', function () {
var result = anchorme("www.google.com www.yahoo.com",{
attributes:[
function(fragment){
if(fragment.raw.indexOf("google")===-1) return {name:"target",value:"_blank"};
else return {name:"target",value:"self"};
}
]
});
assert.equal(result.split("_blank").length,2);
});
it('truncate', function () {
var result = anchorme("https://github.com/alexcorvi/anchorme.js",{
truncate:20
});
assert.equal(result.substring(result.indexOf(">https")+1,result.indexOf("...")).length,20);
var result2 = anchorme("https://github.com/alexcorvi/anchorme.js/blob/gh-pages/test/bench.js",{
truncate:20
});
assert.equal(result2.substring(result2.indexOf(">https")+1,result2.indexOf("...")).length,20);
});
it('truncate from the middle', function () {
var result = anchorme("github.com/alexcorvi/anchorme.js",{
truncate:[6,11],
});
assert.equal(!!~result.indexOf(">github..."),true);
assert.equal(!!~result.indexOf("...anchorme.js<"),true);
});
it('set default protocol', function () {
var result = anchorme("www.google.com",{
defaultProtocol:"ftp://"
});
assert.equal(result.split("ftp://").length,2);
});
it('set default protocol as a function', function () {
var result = anchorme("www.google.com www.yahoo.com",{
defaultProtocol:function(raw){
if(raw.indexOf("google") === -1) return "ftp://";
else return "https://";
}
});
assert.equal(result.split("ftp://").length,2);
});
});
describe('Additional functionalities', function () {
it('return a list of valid URLs', function () {
var result = anchorme("www.google.com mail@gmail.com",{
list:true
});
assert.equal(typeof result,"object");
assert.equal(result.length,2);
});
it('URLs validator works with emojis', function () {
assert.equal(anchorme.validate.url("http://πŸŒπŸβŒšβœ¨πŸ˜πŸ˜πŸΈπŸ‘.πŸ•πŸ’©.ws"),true);
});
});
const test = require('./test.js');
test("anchorme.js","FULL");
test("anchorme.min.js","MINIFIED");
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚑️ by Socket Inc