UNPKG

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
"use strict"; 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))); }