phonumber
Version:
Phone number parser. Good for formatting phone numbers entered by users.
2 lines (1 loc) • 10.2 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const M={1:[{secondNumbers:[0,1,2,3,4,5,6,7,8,9],countries:[{code:"US",dialCode:"+1"}]}],2:[{secondNumbers:[0],countries:[{code:"EG",dialCode:"+20"}]},{secondNumbers:[1],countries:[{code:"SS",dialCode:"+211"},{code:"MA",dialCode:"+212"},{code:"DZ",dialCode:"+213"},{code:"TN",dialCode:"+216"},{code:"LY",dialCode:"+218"}]},{secondNumbers:[2],countries:[{code:"GM",dialCode:"+220"},{code:"SN",dialCode:"+221"},{code:"MR",dialCode:"+222"},{code:"ML",dialCode:"+223"},{code:"GN",dialCode:"+224"},{code:"CI",dialCode:"+225"},{code:"BF",dialCode:"+226"},{code:"NE",dialCode:"+227"},{code:"TG",dialCode:"+228"},{code:"BJ",dialCode:"+229"}]},{secondNumbers:[3],countries:[{code:"MU",dialCode:"+230"},{code:"LR",dialCode:"+231"},{code:"SL",dialCode:"+232"},{code:"GH",dialCode:"+233"},{code:"NG",dialCode:"+234"},{code:"TD",dialCode:"+235"},{code:"CF",dialCode:"+236"},{code:"CM",dialCode:"+237"},{code:"CV",dialCode:"+238"},{code:"ST",dialCode:"+239"}]},{secondNumbers:[4],countries:[{code:"GQ",dialCode:"+240"},{code:"GA",dialCode:"+241"},{code:"CG",dialCode:"+242"},{code:"CD",dialCode:"+243"},{code:"AO",dialCode:"+244"},{code:"GW",dialCode:"+245"},{code:"IO",dialCode:"+246"},{code:"AC",dialCode:"+247"},{code:"SC",dialCode:"+248"},{code:"SD",dialCode:"+249"}]},{secondNumbers:[5],countries:[{code:"RW",dialCode:"+250"},{code:"ET",dialCode:"+251"},{code:"SO",dialCode:"+252"},{code:"DJ",dialCode:"+253"},{code:"KE",dialCode:"+254"},{code:"TZ",dialCode:"+255"},{code:"UG",dialCode:"+256"},{code:"BI",dialCode:"+257"},{code:"MZ",dialCode:"+258"}]},{secondNumbers:[6],countries:[{code:"ZM",dialCode:"+260"},{code:"MG",dialCode:"+261"},{code:"RE",dialCode:"+262"},{code:"ZW",dialCode:"+263"},{code:"NA",dialCode:"+264"},{code:"MW",dialCode:"+265"},{code:"LS",dialCode:"+266"},{code:"BW",dialCode:"+267"},{code:"SZ",dialCode:"+268"},{code:"KM",dialCode:"+269"}]},{secondNumbers:[7],countries:[{code:"ZA",dialCode:"+27"}]},{secondNumbers:[9],countries:[{code:"SH",dialCode:"+290"},{code:"ER",dialCode:"+291"},{code:"AW",dialCode:"+297"},{code:"FO",dialCode:"+298"},{code:"GL",dialCode:"+299"}]}],3:[{secondNumbers:[0],countries:[{code:"GR",dialCode:"+30"}]},{secondNumbers:[1],countries:[{code:"NL",dialCode:"+31"}]},{secondNumbers:[2],countries:[{code:"BE",dialCode:"+32"}]},{secondNumbers:[3],countries:[{code:"FR",dialCode:"+33"}]},{secondNumbers:[4],countries:[{code:"ES",dialCode:"+34"}]},{secondNumbers:[5],countries:[{code:"GI",dialCode:"+350"},{code:"PT",dialCode:"+351"},{code:"LU",dialCode:"+352"},{code:"IE",dialCode:"+353"},{code:"IS",dialCode:"+354"},{code:"AL",dialCode:"+355"},{code:"MT",dialCode:"+356"},{code:"CY",dialCode:"+357"},{code:"FI",dialCode:"+358"},{code:"BG",dialCode:"+359"}]},{secondNumbers:[6],countries:[{code:"HU",dialCode:"+36"}]},{secondNumbers:[7],countries:[{code:"LT",dialCode:"+370"},{code:"LV",dialCode:"+371"},{code:"EE",dialCode:"+372"},{code:"MD",dialCode:"+373"},{code:"AM",dialCode:"+374"},{code:"BY",dialCode:"+375"},{code:"AD",dialCode:"+376"},{code:"MC",dialCode:"+377"},{code:"SM",dialCode:"+378"},{code:"VA",dialCode:"+379"}]},{secondNumbers:[8],countries:[{code:"UA",dialCode:"+380"},{code:"RS",dialCode:"+381"},{code:"ME",dialCode:"+382"},{code:"XK",dialCode:"+383"},{code:"HR",dialCode:"+385"},{code:"SI",dialCode:"+386"},{code:"BA",dialCode:"+387"},{code:"EU",dialCode:"+388"},{code:"MK",dialCode:"+389"}]},{secondNumbers:[9],countries:[{code:"IT",dialCode:"+39"}]}],4:[{secondNumbers:[0],countries:[{code:"RO",dialCode:"+40"}]},{secondNumbers:[1],countries:[{code:"CH",dialCode:"+41"}]},{secondNumbers:[2],countries:[{code:"CZ",dialCode:"+420"},{code:"SK",dialCode:"+421"},{code:"LI",dialCode:"+423"}]},{secondNumbers:[3],countries:[{code:"AT",dialCode:"+43"}]},{secondNumbers:[4],countries:[{code:"UK",dialCode:"+44"}]},{secondNumbers:[5],countries:[{code:"DK",dialCode:"+45"}]},{secondNumbers:[6],countries:[{code:"SE",dialCode:"+45"}]},{secondNumbers:[7],countries:[{code:"NO",dialCode:"+47"}]},{secondNumbers:[8],countries:[{code:"PL",dialCode:"+48"}]},{secondNumbers:[9],countries:[{code:"DE",dialCode:"+49"}]}],5:[{secondNumbers:[0],countries:[{code:"FK",dialCode:"+500"},{code:"BZ",dialCode:"+501"},{code:"GT",dialCode:"+502"},{code:"SV",dialCode:"+503"},{code:"HN",dialCode:"+504"},{code:"NI",dialCode:"+505"},{code:"CR",dialCode:"+506"},{code:"PA",dialCode:"+507"},{code:"PM",dialCode:"+508"},{code:"HT",dialCode:"+509"}]},{secondNumbers:[1],countries:[{code:"PE",dialCode:"+51"}]},{secondNumbers:[2],countries:[{code:"MX",dialCode:"+52"}]},{secondNumbers:[3],countries:[{code:"CU",dialCode:"+53"}]},{secondNumbers:[4],countries:[{code:"AR",dialCode:"+54"}]},{secondNumbers:[5],countries:[{code:"BR",dialCode:"+55"}]},{secondNumbers:[6],countries:[{code:"CL",dialCode:"+56"}]},{secondNumbers:[7],countries:[{code:"CO",dialCode:"+57"}]},{secondNumbers:[8],countries:[{code:"VE",dialCode:"+58"}]},{secondNumbers:[9],countries:[{code:"FK",dialCode:"+590"},{code:"BZ",dialCode:"+591"},{code:"GT",dialCode:"+592"},{code:"SV",dialCode:"+593"},{code:"HN",dialCode:"+594"},{code:"NI",dialCode:"+595"},{code:"CR",dialCode:"+596"},{code:"PA",dialCode:"+597"},{code:"PM",dialCode:"+598"},{code:"HT",dialCode:"+599"}]}],6:[{secondNumbers:[0],countries:[{code:"MY",dialCode:"+60"}]},{secondNumbers:[1],countries:[{code:"AU",dialCode:"+61"}]},{secondNumbers:[2],countries:[{code:"ID",dialCode:"+62"}]},{secondNumbers:[3],countries:[{code:"PH",dialCode:"+63"}]},{secondNumbers:[4],countries:[{code:"NZ",dialCode:"+64"}]},{secondNumbers:[5],countries:[{code:"SG",dialCode:"+65"}]},{secondNumbers:[6],countries:[{code:"TH",dialCode:"+66"}]},{secondNumbers:[7],countries:[{code:"TL",dialCode:"+670"},{code:"AQ",dialCode:"+672"},{code:"BN",dialCode:"+673"},{code:"NR",dialCode:"+674"},{code:"PG",dialCode:"+675"},{code:"TO",dialCode:"+676"},{code:"SB",dialCode:"+677"},{code:"VU",dialCode:"+678"},{code:"FJ",dialCode:"+679"}]},{secondNumbers:[8],countries:[{code:"PW",dialCode:"+680"},{code:"WF",dialCode:"+681"},{code:"CK",dialCode:"+682"},{code:"NU",dialCode:"+683"},{code:"WS",dialCode:"+685"},{code:"KI",dialCode:"+686"},{code:"NC",dialCode:"+687"},{code:"TV",dialCode:"+688"},{code:"PF",dialCode:"+689"}]},{secondNumbers:[9],countries:[{code:"TK",dialCode:"+690"},{code:"FM",dialCode:"+691"},{code:"MH",dialCode:"+692"}]}],7:[{secondNumbers:[6,7],countries:[{code:"KZ",dialCode:"+7"}]},{secondNumbers:[0,1,2,3,4,5,8,9],countries:[{code:"RU",dialCode:"+7"}]}],8:[{secondNumbers:[1],countries:[{code:"JP",dialCode:"+81"}]},{secondNumbers:[2],countries:[{code:"KR",dialCode:"+82"}]},{secondNumbers:[4],countries:[{code:"VN",dialCode:"+84"}]},{secondNumbers:[5],countries:[{code:"KP",dialCode:"+850"},{code:"HK",dialCode:"+852"},{code:"MO",dialCode:"+853"},{code:"KH",dialCode:"+855"},{code:"LA",dialCode:"+856"}]},{secondNumbers:[6],countries:[{code:"CN",dialCode:"+86"}]},{secondNumbers:[8],countries:[{code:"BD",dialCode:"+880"},{code:"TW",dialCode:"+886"}]}],9:[{secondNumbers:[0],countries:[{code:"TR",dialCode:"+90"}]},{secondNumbers:[1],countries:[{code:"IN",dialCode:"+91"}]},{secondNumbers:[2],countries:[{code:"PK",dialCode:"+92"}]},{secondNumbers:[3],countries:[{code:"AF",dialCode:"+93"}]},{secondNumbers:[4],countries:[{code:"LK",dialCode:"+94"}]},{secondNumbers:[5],countries:[{code:"MM",dialCode:"+95"}]},{secondNumbers:[6],countries:[{code:"MV",dialCode:"+960"},{code:"LB",dialCode:"+961"},{code:"JO",dialCode:"+962"},{code:"SY",dialCode:"+963"},{code:"IQ",dialCode:"+964"},{code:"KW",dialCode:"+965"},{code:"SA",dialCode:"+966"},{code:"YE",dialCode:"+967"},{code:"OM",dialCode:"+968"}]},{secondNumbers:[7],countries:[{code:"PS",dialCode:"+970"},{code:"AE",dialCode:"+971"},{code:"IL",dialCode:"+972"},{code:"BH",dialCode:"+973"},{code:"QA",dialCode:"+974"},{code:"BT",dialCode:"+975"},{code:"MN",dialCode:"+976"},{code:"NP",dialCode:"+977"}]},{secondNumbers:[8],countries:[{code:"IR",dialCode:"+98"}]},{secondNumbers:[9],countries:[{code:"TJ",dialCode:"+992"},{code:"TM",dialCode:"+993"},{code:"AZ",dialCode:"+994"},{code:"GE",dialCode:"+995"},{code:"KG",dialCode:"+996"},{code:"UZ",dialCode:"+998"}]}]},h=/\(|\)|\s|-|\+/g,R=/[^\\(\\)\s-#]/g,I=/#/g,f=/\D/g,D=/\D$/g,E={REGEXP_ALL_HASHES:I,REGEXP_ONLY_DIGITS:f,REGEXP_MASK_SYMBOLS:h,REGEXP_CLEANED_MASK:R,REGEXP_LAST_NONE_DIGIT:D},{REGEXP_ONLY_DIGITS:K}=E,g=({value:c,resolvers:e})=>{const a=+c.charAt(0);let i=null,l=c;const d=e.find(o=>o.firstInputChars[a]);if(d){const{resolveAs:o}=d;i=M[o.firstChar].find(t=>t.countries.find(n=>n.code===o.code))||null;const s=i?i.countries.find(t=>t.code===o.code):null,r=s?s.dialCode.replace(K,""):null,C=d.firstInputChars[a];(C==null?void 0:C.mode)==="add"&&(l=`${r||o.firstChar}${l}`),(C==null?void 0:C.mode)==="replace"&&(l=`${r||o.firstChar}${l.substring(1)}`)}return{resolvedCell:i,resolvedPhone:l}},{REGEXP_ALL_HASHES:H,REGEXP_MASK_SYMBOLS:B,REGEXP_CLEANED_MASK:O}=E,X=({mask:c,value:e,options:a})=>{let i=0,l="";if(!e)return"";if(!c)return e;const d=c.replace(O,"");if(a!=null&&a.withTail){const s=d.replace(B,"").length;l=e.slice(s,e.length)}return`${d.replace(H,()=>{const s=e[i];return i+=1,s||"_"}).split("_")[0].trim()}${l}`},{REGEXP_ONLY_DIGITS:$,REGEXP_LAST_NONE_DIGIT:U}=E,Y=(c,e)=>{const a=e==null?void 0:e.resolvers,i=e==null?void 0:e.formats,l=c.charAt(0),d=c.trim().replace($,""),o=d.length>1?d.charAt(1):"";let u=d.length>0?d.charAt(0):"",s=null,r=d;if(a&&u&&l!=="+"){const{resolvedCell:t,resolvedPhone:n}=g({value:d,resolvers:a});s=t,r=n,u=r.charAt(0)}const C={code:null,dialCode:null,nationalNumber:null,formattedNumber:c?`+${r}`:""};if(u&&u!=="0"){const t=o===""?-1:Number(o),n=s||M[u].find(b=>b.secondNumbers.includes(t));if(n){const b=n?n.countries[0].dialCode.length-1:0,P=r.slice(0,b),m=n.countries.filter(_=>_.dialCode.includes(P));if(m.length>1||!m.length)return C;const L=m[0].dialCode.substring(1),{dialCode:S,code:A}=m[0],G=r.substring(L.length),N=i?i[A]:null,T=`${S} ${X({value:G,mask:N==null?void 0:N.mask,options:{withTail:!!(N!=null&&N.withTail)}})}`.trim().replace(U,"");return{code:A,dialCode:S,nationalNumber:G,formattedNumber:c?T:""}}}return C};exports.parsePhoneNumber=Y;