UNPKG

carrierdetails

Version:

This package provides the Kenyan carrier details of a passed Kenyan Phone Number

491 lines (481 loc) 9.2 kB
/** * THIS DATA WAS SCRAPPED FROM * https://en.wikipedia.org/wiki/Telephone_numbers_in_Kenya * USE THIS MODULE WITH CAUTION */ const data = [ { "prefix": "10", "operator": "Airtel" }, { "prefix": "11", "operator": "Safaricom" }, { "prefix": "701", "operator": "Safaricom" }, { "prefix": "702", "operator": "Safaricom" }, { "prefix": "703", "operator": "Safaricom" }, { "prefix": "704", "operator": "Safaricom" }, { "prefix": "705", "operator": "Safaricom" }, { "prefix": "706", "operator": "Safaricom" }, { "prefix": "707", "operator": "Safaricom" }, { "prefix": "708", "operator": "Safaricom" }, { "prefix": "709", "operator": "Safaricom" }, { "prefix": "710", "operator": "Safaricom" }, { "prefix": "711", "operator": "Safaricom" }, { "prefix": "712", "operator": "Safaricom" }, { "prefix": "713", "operator": "Safaricom" }, { "prefix": "714", "operator": "Safaricom" }, { "prefix": "715", "operator": "Safaricom" }, { "prefix": "716", "operator": "Safaricom" }, { "prefix": "717", "operator": "Safaricom" }, { "prefix": "718", "operator": "Safaricom" }, { "prefix": "719", "operator": "Safaricom" }, { "prefix": "720", "operator": "Safaricom" }, { "prefix": "721", "operator": "Safaricom" }, { "prefix": "722", "operator": "Safaricom" }, { "prefix": "723", "operator": "Safaricom" }, { "prefix": "724", "operator": "Safaricom" }, { "prefix": "725", "operator": "Safaricom" }, { "prefix": "726", "operator": "Safaricom" }, { "prefix": "727", "operator": "Safaricom" }, { "prefix": "728", "operator": "Safaricom" }, { "prefix": "729", "operator": "Safaricom" }, { "prefix": "730", "operator": "Airtel" }, { "prefix": "731", "operator": "Airtel" }, { "prefix": "732", "operator": "Airtel" }, { "prefix": "733", "operator": "Airtel" }, { "prefix": "734", "operator": "Airtel" }, { "prefix": "735", "operator": "Airtel" }, { "prefix": "736", "operator": "Airtel" }, { "prefix": "737", "operator": "Airtel" }, { "prefix": "738", "operator": "Airtel" }, { "prefix": "739", "operator": "Airtel" }, { "prefix": "740", "operator": "Safaricom" }, { "prefix": "741", "operator": "Safaricom" }, { "prefix": "742", "operator": "Safaricom" }, { "prefix": "743", "operator": "Safaricom" }, { "prefix": "744", "operator": "Homelands Media" }, { "prefix": "745", "operator": "Safaricom" }, { "prefix": "746", "operator": "Safaricom" }, { "prefix": "747", "operator": "Faiba 4G" }, { "prefix": "748", "operator": "Safaricom" }, { "prefix": "750", "operator": "Airtel" }, { "prefix": "751", "operator": "Airtel" }, { "prefix": "752", "operator": "Airtel" }, { "prefix": "753", "operator": "Airtel" }, { "prefix": "754", "operator": "Airtel" }, { "prefix": "755", "operator": "Airtel" }, { "prefix": "756", "operator": "Airtel" }, { "prefix": "757", "operator": "Safaricom" }, { "prefix": "758", "operator": "Safaricom" }, { "prefix": "759", "operator": "Safaricom" }, { "prefix": "760", "operator": "Mobile Pay" }, { "prefix": "761", "operator": "Eferio" }, { "prefix": "762", "operator": "Airtel" }, { "prefix": "763", "operator": "Equitel" }, { "prefix": "764", "operator": "Equitel" }, { "prefix": "765", "operator": "Equitel" }, { "prefix": "766", "operator": "Equitel" }, { "prefix": "767", "operator": "Sema Mobile" }, { "prefix": "768", "operator": "Safaricom" }, { "prefix": "769", "operator": "Safaricom" }, { "prefix": "770", "operator": "Telkom Kenya" }, { "prefix": "771", "operator": "Telkom Kenya" }, { "prefix": "772", "operator": "Telkom Kenya" }, { "prefix": "773", "operator": "Telkom Kenya" }, { "prefix": "774", "operator": "Telkom Kenya" }, { "prefix": "775", "operator": "Telkom Kenya" }, { "prefix": "776", "operator": "Telkom Kenya" }, { "prefix": "777", "operator": "Telkom Kenya" }, { "prefix": "778", "operator": "Telkom Kenya" }, { "prefix": "779", "operator": "Telkom Kenya" }, { "prefix": "780", "operator": "Airtel" }, { "prefix": "781", "operator": "Airtel" }, { "prefix": "782", "operator": "Airtel" }, { "prefix": "783", "operator": "Airtel" }, { "prefix": "784", "operator": "Airtel" }, { "prefix": "785", "operator": "Airtel" }, { "prefix": "786", "operator": "Airtel" }, { "prefix": "787", "operator": "Airtel" }, { "prefix": "788", "operator": "Airtel" }, { "prefix": "789", "operator": "Airtel" }, { "prefix": "790", "operator": "Safaricom" }, { "prefix": "791", "operator": "Safaricom" }, { "prefix": "792", "operator": "Safaricom" }, { "prefix": "793", "operator": "Safaricom" }, { "prefix": "794", "operator": "Safaricom" }, { "prefix": "795", "operator": "Safaricom" }, { "prefix": "796", "operator": "Safaricom" }, { "prefix": "797", "operator": "Safaricom" }, { "prefix": "798", "operator": "Safaricom" }, { "prefix": "799", "operator": "Safaricom" } ] function NumberFormat(number){ if(number.length == 9 && (number.startsWith('1') || number.startsWith('7'))) return { error:false, number: `254${number.trim()}`, }; if(number.length == 10 && (number.startsWith('0'))) return { error:false, number: `254${number.trim().substring(1)}`, }; if(number.length == 12 && (number.startsWith('254'))) return { error:false, number: number.trim(), }; return { error:true, number:undefined, } } export default function CarrierDetails(input){ let number_data = NumberFormat(input), number = number_data.number ; if(number_data.error) return { operator: undefined, prefix: undefined, number: number, } if(number.substring(3).startsWith("7")){ // get first 3 numbers const pref = number.substring(3).slice(0 , 3); const carrier = data.find(details => details.prefix.startsWith('7') && details.prefix === pref); if(!carrier){ return { operator: undefined, prefix: undefined, number: number, } } // return details on phone number return { operator: carrier.operator, prefix: carrier.prefix, number: number, } } else if(number.substring(3).startsWith("1")){ // get first two numbers const pref = number.substring(2).slice(0 , 2); const carrier = data.find(details => details.prefix.startsWith('1') && details.prefix === pref); if(!carrier){ return { operator: undefined, prefix: undefined, number: number, } } // return details on phone number return { operator: carrier.operator, prefix: carrier.prefix, number: number, } } else{ return { operator:undefined, prefix:undefined, number:number, } } }