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
JavaScript
;
// 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;