UNPKG

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
// 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();