carrierdetails
Version:
This package provides the Kenyan carrier details of a passed Kenyan Phone Number
491 lines (481 loc) • 9.2 kB
JavaScript
/**
* 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,
}
}
}