simujs
Version:
A simple JavaScript utility for identifying Tanzanian mobile network operators based on phone numbers, using prefix data regulated by TCRA.
105 lines (104 loc) • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.format = exports.Operators = void 0;
exports.default = simu;
const google_libphonenumber_1 = require("google-libphonenumber");
var Operators;
(function (Operators) {
Operators["Vodacom"] = "Vodacom Tanzania";
Operators["Yas"] = "Yas Tanzania";
Operators["Airtel"] = "Airtel Tanzania";
Operators["Halotel"] = "Halotel";
Operators["TTCL"] = "TTCL";
Operators["Smile"] = "Smile";
Operators["Zantel"] = "Zantel";
Operators["Mkulima"] = "Mkulima";
Operators["Wiafrica"] = "Wiafrica";
Operators["MO"] = "MO Mobile";
})(Operators || (exports.Operators = Operators = {}));
const operators = [
{
name: Operators.Vodacom,
codes: ["74", "75", "76"],
company: "Vodacom Tanzania PLC",
financialService: "M-Pesa",
},
{
name: Operators.Yas,
codes: ["71", "65", "67"],
company: "Honora Tanzania PLC",
financialService: "Mixx by Yas"
},
{
name: Operators.Airtel,
codes: ["78", "68", "68"],
company: "Airtel Tanzania PLC",
financialService: "Airtel Money"
},
{
name: Operators.Halotel,
codes: ["61", "62"],
company: "Viettel Tanzania PLC",
financialService: "HaloPesa"
},
{
name: Operators.TTCL,
codes: ["73"],
company: "Tanzania Telecommunications Corporation Limited",
financialService: "T-Pesa"
},
{
name: Operators.Smile,
codes: ["66"],
company: "Smile Tanzania PLC",
financialService: null
},
{
name: Operators.Zantel,
codes: ["77"],
company: "Zantel Tanzania PLC",
financialService: null
},
{
name: Operators.Mkulima,
codes: ["63"],
company: "Mkulima Tanzania PLC",
financialService: null
},
{
name: Operators.Wiafrica,
codes: ["64"],
company: "Wiafrica Tanzania PLC",
financialService: null
},
{
name: Operators.MO,
codes: ["72"],
company: "MO Mobile Tanzania PLC",
financialService: null
}
];
const format = (phone) => {
const phoneUtil = google_libphonenumber_1.PhoneNumberUtil.getInstance();
const DEFAULT_REGION = 'TZ';
const COUNTRY_CODE_TZ = 255;
try {
const parsed = phoneUtil.parseAndKeepRawInput(phone, DEFAULT_REGION);
if (!phoneUtil.isValidNumber(parsed))
return undefined;
if (parsed.getCountryCode() !== COUNTRY_CODE_TZ)
return undefined;
return parsed.getNationalNumber();
}
catch (_a) {
return undefined;
}
};
exports.format = format;
function simu(phone) {
const nationalNumber = (0, exports.format)(phone);
if (!nationalNumber)
return undefined;
const numberStr = nationalNumber.toString();
return operators.find(operator => operator.codes.some(code => numberStr.startsWith(code)));
}