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.

48 lines (47 loc) 2.41 kB
"use strict"; // src/numbering-plan/telco-number-allocation.ts Object.defineProperty(exports, "__esModule", { value: true }); exports.TelcoNumberAllocation = void 0; const network_access_code_1 = require("./network-access-code"); const mobile_number_range_1 = require("./mobile-number-range"); /** * Represents a specific number range assigned to a mobile network operator * e.g. 08030000000-08039999999. */ class TelcoNumberAllocation { /** * Create a TelcoNumberAllocation * * @param networkAccessCode The network access code (e.g. 803) * @param telco The telco operator (e.g. MTN) * @param subscriberNumberLowerbound Lower bound of subscriber numbers (without network code) * @param subscriberNumberUpperbound Upper bound of subscriber numbers (without network code) */ constructor(networkAccessCode, telco, { subscriberNumberLowerbound, subscriberNumberUpperbound }) { this.networkAccessCode = networkAccessCode; this.telco = telco; const localNumberLowerbound = this.subscriberNumberToLocalNumber(networkAccessCode, subscriberNumberLowerbound); const localNumberUpperbound = this.subscriberNumberToLocalNumber(networkAccessCode, subscriberNumberUpperbound); this.localNumberRange = new mobile_number_range_1.MobileNumberRange(localNumberLowerbound, localNumberUpperbound); // Validate that this range is within the network code's range const networkRange = network_access_code_1.NetworkAccessCodeUtil.getLocalNumberRange(networkAccessCode); if (!networkRange.isSubset(this.localNumberRange)) { throw new Error(`Number range ${this.localNumberRange.lowerBound}-${this.localNumberRange.upperBound} ` + `is not within the range for network code ${networkAccessCode}`); } } /** * Compare this allocation with another one for sorting */ compareTo(other) { return this.localNumberRange.compareTo(other.localNumberRange); } /** * Convert a subscriber number to a local number by adding the network code */ subscriberNumberToLocalNumber(networkAccessCode, subscriberNumber) { const networkRange = network_access_code_1.NetworkAccessCodeUtil.getLocalNumberRange(networkAccessCode); return networkRange.lowerBound + subscriberNumber; } } exports.TelcoNumberAllocation = TelcoNumberAllocation;