nigerian-mobile-validator
Version:
The most rigorous, up-to-date library for validating Nigerian mobile numbers. Fully NCC-compliant, and security-focused, with enterprise-grade features to prevent the business risks of validation failures in regulated industries.
100 lines (99 loc) • 4.68 kB
JavaScript
// src/numbering-plan/network-access-code.ts
import { MobileNumberRange } from './mobile-number-range';
const subscriberNumberLowerbound = 10000000;
const subscriberNumberUpperbound = 9999999;
/**
* An enum representing the NCC-assigned codes for access to a telco's mobile network.
*
* Last updated based on March 2025 NCC data.
*/
export var NetworkAccessCode;
(function (NetworkAccessCode) {
NetworkAccessCode[NetworkAccessCode["n700"] = 700] = "n700";
NetworkAccessCode[NetworkAccessCode["n701"] = 701] = "n701";
NetworkAccessCode[NetworkAccessCode["n702"] = 702] = "n702";
NetworkAccessCode[NetworkAccessCode["n703"] = 703] = "n703";
NetworkAccessCode[NetworkAccessCode["n704"] = 704] = "n704";
NetworkAccessCode[NetworkAccessCode["n705"] = 705] = "n705";
NetworkAccessCode[NetworkAccessCode["n706"] = 706] = "n706";
NetworkAccessCode[NetworkAccessCode["n707"] = 707] = "n707";
NetworkAccessCode[NetworkAccessCode["n708"] = 708] = "n708";
NetworkAccessCode[NetworkAccessCode["n709"] = 709] = "n709";
NetworkAccessCode[NetworkAccessCode["n710"] = 710] = "n710";
NetworkAccessCode[NetworkAccessCode["n800"] = 800] = "n800";
NetworkAccessCode[NetworkAccessCode["n801"] = 801] = "n801";
NetworkAccessCode[NetworkAccessCode["n802"] = 802] = "n802";
NetworkAccessCode[NetworkAccessCode["n803"] = 803] = "n803";
NetworkAccessCode[NetworkAccessCode["n804"] = 804] = "n804";
NetworkAccessCode[NetworkAccessCode["n805"] = 805] = "n805";
NetworkAccessCode[NetworkAccessCode["n806"] = 806] = "n806";
NetworkAccessCode[NetworkAccessCode["n807"] = 807] = "n807";
NetworkAccessCode[NetworkAccessCode["n808"] = 808] = "n808";
NetworkAccessCode[NetworkAccessCode["n809"] = 809] = "n809";
NetworkAccessCode[NetworkAccessCode["n810"] = 810] = "n810";
NetworkAccessCode[NetworkAccessCode["n811"] = 811] = "n811";
NetworkAccessCode[NetworkAccessCode["n812"] = 812] = "n812";
NetworkAccessCode[NetworkAccessCode["n813"] = 813] = "n813";
NetworkAccessCode[NetworkAccessCode["n814"] = 814] = "n814";
NetworkAccessCode[NetworkAccessCode["n815"] = 815] = "n815";
NetworkAccessCode[NetworkAccessCode["n816"] = 816] = "n816";
NetworkAccessCode[NetworkAccessCode["n817"] = 817] = "n817";
NetworkAccessCode[NetworkAccessCode["n818"] = 818] = "n818";
NetworkAccessCode[NetworkAccessCode["n900"] = 900] = "n900";
NetworkAccessCode[NetworkAccessCode["n901"] = 901] = "n901";
NetworkAccessCode[NetworkAccessCode["n902"] = 902] = "n902";
NetworkAccessCode[NetworkAccessCode["n903"] = 903] = "n903";
NetworkAccessCode[NetworkAccessCode["n904"] = 904] = "n904";
NetworkAccessCode[NetworkAccessCode["n905"] = 905] = "n905";
NetworkAccessCode[NetworkAccessCode["n906"] = 906] = "n906";
NetworkAccessCode[NetworkAccessCode["n907"] = 907] = "n907";
NetworkAccessCode[NetworkAccessCode["n908"] = 908] = "n908";
NetworkAccessCode[NetworkAccessCode["n909"] = 909] = "n909";
NetworkAccessCode[NetworkAccessCode["n911"] = 911] = "n911";
NetworkAccessCode[NetworkAccessCode["n912"] = 912] = "n912";
NetworkAccessCode[NetworkAccessCode["n913"] = 913] = "n913";
NetworkAccessCode[NetworkAccessCode["n914"] = 914] = "n914";
NetworkAccessCode[NetworkAccessCode["n915"] = 915] = "n915";
NetworkAccessCode[NetworkAccessCode["n916"] = 916] = "n916";
})(NetworkAccessCode || (NetworkAccessCode = {}));
/**
* Helper functions for NetworkAccessCode
*/
export class NetworkAccessCodeUtil {
/**
* Initialize the network code mapping
*/
static initialize() {
if (this.initialized)
return;
Object.values(NetworkAccessCode)
.filter(value => typeof value === 'number')
.forEach(code => {
this.networkCodeMap.set(code, code);
});
this.initialized = true;
}
/**
* Get the local number range for a network code
*/
static getLocalNumberRange(networkCode) {
const code = networkCode;
return new MobileNumberRange(code * subscriberNumberLowerbound, (code * subscriberNumberLowerbound) + subscriberNumberUpperbound);
}
/**
* Check if a network code is valid
*/
static isNetworkCodeValid(mobileAccessCode) {
this.initialize();
return this.networkCodeMap.has(mobileAccessCode);
}
/**
* Get a NetworkAccessCode by its numeric value
*/
static getByNetworkCode(mobileAccessCode) {
this.initialize();
return this.networkCodeMap.get(mobileAccessCode);
}
}
NetworkAccessCodeUtil.initialized = false;
NetworkAccessCodeUtil.networkCodeMap = new Map();