PATH:
opt
/
bitninja-dispatcher
/
node_modules
/
libphonenumber-js
/
build
/
helpers
{"version":3,"file":"getNumberType.js","names":["NON_FIXED_LINE_PHONE_TYPES","getNumberType","input","options","metadata","country","Metadata","selectNumberingPlan","countryCallingCode","nationalNumber","v2","phone","matchesEntirely","nationalNumberPattern","isNumberTypeEqualTo","type","pattern","possibleLengths","indexOf","length"],"sources":["../../source/helpers/getNumberType.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returned `{}`\r\n\t// meaning that the phone number is not a valid one.\r\n\tif (!input.country) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\r\n\t\t// For example, for \"US\" country.\r\n\t\t// Old metadata (< `1.0.18`) had a specific \"types\" data structure\r\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\r\n\t\t// Newer metadata (>= `1.0.18`) has another data structure that is\r\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\r\n\t\t// So this `if` is just for backwards compatibility with old metadata.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\ttype = metadata.type(type)\r\n\tif (!type || !type.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (type.possibleLengths() &&\r\n\t\ttype.possibleLengths().indexOf(nationalNumber.length) < 0) {\r\n\t\treturn false\r\n\t}\r\n\treturn matchesEntirely(nationalNumber, type.pattern())\r\n}"],"mappings":";;;;;;;;AAAA;;AACA;;;;;;;;;;AAEA,IAAMA,0BAA0B,GAAG,CAClC,QADkC,EAElC,cAFkC,EAGlC,WAHkC,EAIlC,aAJkC,EAKlC,MALkC,EAMlC,iBANkC,EAOlC,OAPkC,EAQlC,KARkC,EASlC,WATkC,CAAnC,C,CAYA;;AACe,SAASC,aAAT,CAAuBC,KAAvB,EAA8BC,OAA9B,EAAuCC,QAAvC,EACf;EACC;EACA;EACAD,OAAO,GAAGA,OAAO,IAAI,EAArB,CAHD,CAKC;EACA;;EACA,IAAI,CAACD,KAAK,CAACG,OAAX,EAAoB;IACnB;EACA;;EAEDD,QAAQ,GAAG,IAAIE,oBAAJ,CAAaF,QAAb,CAAX;EAEAA,QAAQ,CAACG,mBAAT,CAA6BL,KAAK,CAACG,OAAnC,EAA4CH,KAAK,CAACM,kBAAlD;EAEA,IAAMC,cAAc,GAAGN,OAAO,CAACO,EAAR,GAAaR,KAAK,CAACO,cAAnB,GAAoCP,KAAK,CAACS,KAAjE,CAfD,CAiBC;EACA;EAEA;;EACA,IAAI,CAAC,IAAAC,2BAAA,EAAgBH,cAAhB,EAAgCL,QAAQ,CAACS,qBAAT,EAAhC,CAAL,EAAwE;IACvE;EACA,CAvBF,CAyBC;;;EACA,IAAIC,mBAAmB,CAACL,cAAD,EAAiB,YAAjB,EAA+BL,QAA/B,CAAvB,EAAiE;IAChE;IACA;IACA;IACA;IACA,IAAIA,QAAQ,CAACW,IAAT,CAAc,QAAd,KAA2BX,QAAQ,CAACW,IAAT,CAAc,QAAd,EAAwBC,OAAxB,OAAsC,EAArE,EAAyE;MACxE,OAAO,sBAAP;IACA,CAP+D,CAShE;IACA;IACA;IACA;IACA;IACA;IACA;;;IACA,IAAI,CAACZ,QAAQ,CAACW,IAAT,CAAc,QAAd,CAAL,EAA8B;MAC7B,OAAO,sBAAP;IACA,CAlB+D,CAoBhE;IACA;;IACA;;;IACA,IAAID,mBAAmB,CAACL,cAAD,EAAiB,QAAjB,EAA2BL,QAA3B,CAAvB,EAA6D;MAC5D,OAAO,sBAAP;IACA;;IAED,OAAO,YAAP;EACA;;EAED,qDAAmBJ,0BAAnB,wCAA+C;IAAA,IAApCe,IAAoC;;IAC9C,IAAID,mBAAmB,CAACL,cAAD,EAAiBM,IAAjB,EAAuBX,QAAvB,CAAvB,EAAyD;MACxD,OAAOW,IAAP;IACA;EACD;AACD;;AAEM,SAASD,mBAAT,CAA6BL,cAA7B,EAA6CM,IAA7C,EAAmDX,QAAnD,EAA6D;EACnEW,IAAI,GAAGX,QAAQ,CAACW,IAAT,CAAcA,IAAd,CAAP;;EACA,IAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACC,OAAL,EAAd,EAA8B;IAC7B,OAAO,KAAP;EACA,CAJkE,CAKnE;EACA;EACA;EACA;EACA;EACA;;;EACA,IAAID,IAAI,CAACE,eAAL,MACHF,IAAI,CAACE,eAAL,GAAuBC,OAAvB,CAA+BT,cAAc,CAACU,MAA9C,IAAwD,CADzD,EAC4D;IAC3D,OAAO,KAAP;EACA;;EACD,OAAO,IAAAP,2BAAA,EAAgBH,cAAhB,EAAgCM,IAAI,CAACC,OAAL,EAAhC,CAAP;AACA"}
[-] formatNationalNumberUsingFormat.js.map
[edit]
[-] applyInternationalSeparatorStyle.js.map
[edit]
[-] extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js
[edit]
[-] getNumberType.js
[edit]
[-] getNumberType.js.map
[edit]
[-] extractNationalNumberFromPossiblyIncompleteNumber.test.js
[edit]
[-] applyInternationalSeparatorStyle.js
[edit]
[+]
..
[-] checkNumberLength.js
[edit]
[-] getNumberType.test.js.map
[edit]
[-] extractNationalNumber.js
[edit]
[-] stripIddPrefix.test.js
[edit]
[-] formatNationalNumberUsingFormat.js
[edit]
[-] applyInternationalSeparatorStyle.test.js
[edit]
[-] extractNationalNumber.test.js
[edit]
[-] extractNationalNumber.js.map
[edit]
[-] extractNationalNumberFromPossiblyIncompleteNumber.test.js.map
[edit]
[-] parseDigits.js.map
[edit]
[-] isViablePhoneNumber.js
[edit]
[-] mergeArrays.test.js
[edit]
[-] mergeArrays.test.js.map
[edit]
[-] parseDigits.js
[edit]
[-] getIddPrefix.js.map
[edit]
[-] stripIddPrefix.js
[edit]
[-] RFC3966.js.map
[edit]
[-] matchesEntirely.test.js
[edit]
[-] checkNumberLength.test.js
[edit]
[-] RFC3966.test.js.map
[edit]
[-] extractNationalNumber.test.js.map
[edit]
[-] extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map
[edit]
[-] extractNationalNumberFromPossiblyIncompleteNumber.js.map
[edit]
[-] extractCountryCallingCode.test.js.map
[edit]
[-] RFC3966.js
[edit]
[-] getCountryByCallingCode.js.map
[edit]
[-] checkNumberLength.js.map
[edit]
[-] parseDigits.test.js.map
[edit]
[-] matchesEntirely.test.js.map
[edit]
[-] getNumberType.test.js
[edit]
[-] isViablePhoneNumber.js.map
[edit]
[-] matchesEntirely.js.map
[edit]
[-] matchesEntirely.js
[edit]
[-] getCountryByCallingCode.js
[edit]
[-] stripIddPrefix.test.js.map
[edit]
[-] stripIddPrefix.js.map
[edit]
[-] extractCountryCallingCode.test.js
[edit]
[-] getIddPrefix.js
[edit]
[-] RFC3966.test.js
[edit]
[-] parseDigits.test.js
[edit]
[-] checkNumberLength.test.js.map
[edit]
[-] extractCountryCallingCode.js.map
[edit]
[-] extractCountryCallingCode.js
[edit]
[-] applyInternationalSeparatorStyle.test.js.map
[edit]
[-] extractNationalNumberFromPossiblyIncompleteNumber.js
[edit]
[-] mergeArrays.js
[edit]
[-] mergeArrays.js.map
[edit]
[+]
extension