PATH:
opt
/
bitninja-dispatcher
/
node_modules
/
libphonenumber-js
/
build
/
helpers
{"version":3,"file":"extractCountryCallingCode.js","names":["extractCountryCallingCode","number","country","callingCode","metadata","numberWithoutIDD","stripIddPrefix","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","countryCallingCode","shorterNumber","Metadata","i","MAX_LENGTH_COUNTRY_CODE","length","slice","hasCallingCode","selectNumberingPlan"],"sources":["../../source/helpers/extractCountryCallingCode.js"],"sourcesContent":["import stripIddPrefix from './stripIddPrefix.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport Metadata from '../metadata.js'\r\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\r\n\r\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\r\nexport default function extractCountryCallingCode(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// If this is not an international phone number,\r\n\t// then either extract an \"IDD\" prefix, or extract a\r\n\t// country calling code from a number by autocorrecting it\r\n\t// by prepending a leading `+` in cases when it starts\r\n\t// with the country calling code.\r\n\t// https://wikitravel.org/en/International_dialling_prefix\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\tif (number[0] !== '+') {\r\n\t\t// Convert an \"out-of-country\" dialing phone number\r\n\t\t// to a proper international phone number.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata)\r\n\t\t// If an IDD prefix was stripped then\r\n\t\t// convert the number to international one\r\n\t\t// for subsequent parsing.\r\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\r\n\t\t\tnumber = '+' + numberWithoutIDD\r\n\t\t} else {\r\n\t\t\t// Check to see if the number starts with the country calling code\r\n\t\t\t// for the default country. If so, we remove the country calling code,\r\n\t\t\t// and do some checks on the validity of the number before and after.\r\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\t\tnumber,\r\n\t\t\t\t\tcountry,\r\n\t\t\t\t\tcallingCode,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t)\r\n\t\t\t\tif (countryCallingCode) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn { number }\r\n\t\t}\r\n\t}\r\n\r\n\t// Fast abortion: country codes do not begin with a '0'\r\n\tif (number[1] === '0') {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// The thing with country phone codes\r\n\t// is that they are orthogonal to each other\r\n\t// i.e. there's no such country phone code A\r\n\t// for which country phone code B exists\r\n\t// where B starts with A.\r\n\t// Therefore, while scanning digits,\r\n\t// if a valid country code is found,\r\n\t// that means that it is the country code.\r\n\t//\r\n\tlet i = 2\r\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\r\n\t\tconst countryCallingCode = number.slice(1, i)\r\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\r\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: number.slice(i)\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn {}\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,yBAAT,CACdC,MADc,EAEdC,OAFc,EAGdC,WAHc,EAIdC,QAJc,EAKb;EACD,IAAI,CAACH,MAAL,EAAa;IACZ,OAAO,EAAP;EACA,CAHA,CAKD;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,IAAIA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EAAuB;IACtB;IACA;IACA,IAAMI,gBAAgB,GAAG,IAAAC,0BAAA,EAAeL,MAAf,EAAuBC,OAAvB,EAAgCC,WAAhC,EAA6CC,QAA7C,CAAzB,CAHsB,CAItB;IACA;IACA;;IACA,IAAIC,gBAAgB,IAAIA,gBAAgB,KAAKJ,MAA7C,EAAqD;MACpDA,MAAM,GAAG,MAAMI,gBAAf;IACA,CAFD,MAEO;MACN;MACA;MACA;MACA;MACA,IAAIH,OAAO,IAAIC,WAAf,EAA4B;QAC3B,4BAGI,IAAAI,2EAAA,EACHN,MADG,EAEHC,OAFG,EAGHC,WAHG,EAIHC,QAJG,CAHJ;QAAA,IACCI,kBADD,yBACCA,kBADD;QAAA,IAESC,aAFT,yBAECR,MAFD;;QASA,IAAIO,kBAAJ,EAAwB;UACvB,OAAO;YACNA,kBAAkB,EAAlBA,kBADM;YAENP,MAAM,EAAEQ;UAFF,CAAP;QAIA;MACD;;MACD,OAAO;QAAER,MAAM,EAANA;MAAF,CAAP;IACA;EACD,CA7CA,CA+CD;;;EACA,IAAIA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EAAuB;IACtB,OAAO,EAAP;EACA;;EAEDG,QAAQ,GAAG,IAAIM,oBAAJ,CAAaN,QAAb,CAAX,CApDC,CAsDD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,IAAIO,CAAC,GAAG,CAAR;;EACA,OAAOA,CAAC,GAAG,CAAJ,IAASC,kCAAT,IAAoCD,CAAC,IAAIV,MAAM,CAACY,MAAvD,EAA+D;IAC9D,IAAML,mBAAkB,GAAGP,MAAM,CAACa,KAAP,CAAa,CAAb,EAAgBH,CAAhB,CAA3B;;IACA,IAAIP,QAAQ,CAACW,cAAT,CAAwBP,mBAAxB,CAAJ,EAAiD;MAChDJ,QAAQ,CAACY,mBAAT,CAA6BR,mBAA7B;MACA,OAAO;QACNA,kBAAkB,EAAlBA,mBADM;QAENP,MAAM,EAAEA,MAAM,CAACa,KAAP,CAAaH,CAAb;MAFF,CAAP;IAIA;;IACDA,CAAC;EACD;;EAED,OAAO,EAAP;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