mozambique-utils
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

mozambique-utils.js

Easy to use parsers and validators for mozambican (🇲🇿) data-type formatted strings.

npm

Table of contents

Installation and Usage

Using npm

npm install mozambique-utils
const mozambiqueUtils = require("mozambique-utils"); // -> No ES6
// import mozambiqueUtils from "mozambique-utils";   // -> or with ES6

mozambiqueUtils.isNUITValid("300010125"); //-> true

In a browser

This library can be loaded as a standalone script, which will then be made available through the mozambiqueUtils global object.

<script src="https://unpkg.com/mozambique-utils@1.1.1/dist/mozambique-utils.js"></script>
<!-- 
    Or use the minified version:
    <script src="https://unpkg.com/mozambique-utils@1.1.1/dist/mozambique-utils.min.js"></script>
-->

<script type="text/javascript">
	<!-- Usage -->
	mozambiqueUtils.isNUITValid("300010125"); //=> true
</script>

API

isLandlineNumberValid(number [, options])

Check if a string is a valid mozambican landline number. Returns true if valid, otherwise false.

number

The number to check. Must be of type string and can contain dashes or spaces.
Will throw if not of type string.

options

An object that defaults to:

{
    allowedRegions: [],
    countryCode: "optional"
}
Option Type Accepted value(s) Description
allowedRegions string[] tete , pemba, beira, chokwe, manica, xai-xai, maputo, nampula, lichinga, inhambane, quelimane, vilanculos List of regions to limit the validation on. If passed an emtpy array, it will validate for all regions.
countryCode string optional, required, off optional: the country code in the number being validated is optional.
required only return true if the number includes the country code.
off only return true if the number does not include the country code.

The country code can be in either +258 or 00258 or 258 format.
Examples:
mutils.isLandlineNumberValid("21201321"); //=> true
mutils.isLandlineNumberValid("21 203 123"); //=> true
mutils.isLandlineNumberValid("26-203-123"); //=> true
mutils.isLandlineNumberValid("+25824201321"); //=> true
mutils.isLandlineNumberValid("0025829320123"); //=> true
mutils.isLandlineNumberValid("25828123230"); //=> true

mutils.isLandlineNumberValid("841234567"); //=> false

mutils.isLandlineNumberValid("21201321", {
	allowedRegions: ["beira", "tete", "chokwe"],
}); //=> false

mutils.isLandlineNumberValid("+25821201321", {
	allowedRegions: ["maputo"],
	countryCode: "required",
}); //=> true

mutils.isLandlineNumberValid("+25821201321", {
	countryCode: "off",
}); //=> false

isMobileNumberValid(number [, options])

Check if a string is a valid mozambican mobile number.
Will throw if not of type string.
Returns true if valid, otherwise false.

number

The mobile number to check. Must be of type string and can contain dashes or spaces.
Will throw if not of type string.

options

An object that defaults to:

{
    allowedOperators: [],
    countryCode: "optional"
}
Option Type Accepted value(s) Description
allowedOperators string[] vodacom, tmcel, movitel List of mobile network operators to limit the validation on. If passed an emtpy array, it will validate for all network operators.
countryCode string optional, required, off optional: the country code in the number being validated is optional.
required only return true if the number includes the country code.
off only return true if the number does not include the country code.

The country code can be in either +258 or 00258 or 258 format.
Examples:
mutils.isMobileNumberValid("821234567"); //=> true
mutils.isMobileNumberValid("84 123 4567"); //=> true
mutils.isMobileNumberValid("84-123-4567"); //=> true
mutils.isMobileNumberValid("+258841234567"); //=> true
mutils.isMobileNumberValid("00258861234567"); //=> true
mutils.isMobileNumberValid("258871234567"); //=> true

mutils.isMobileNumberValid("811234567"); //=> false

mutils.isMobileNumberValid("841234567", {
	allowedOperators: ["tmcel", "movitel"],
}); //=> false

mutils.isMobileNumberValid("+258841234567", {
	allowedOperators: ["vodacom"],
	countryCode: "required",
}); //=> true

mutils.isMobileNumberValid("+258841234567", {
	countryCode: "off",
}); //=> false

isNUITValid(nuit)

Check if a string is a valid mozambican Número Único de Identificação Tributária (Taxpayer's Single Identification Number). Returns true if valid, otherwise false.

nuit

The nuit number to check. Must be of type string and can contain dashes or spaces.
Will throw if not of type string.

Examples:
mutils.isNUITValid("12345678"); //=> true
mutils.isNUITValid("1343"); //=> false
mutils.isNUITValid("348908989092"); //=> false

isIBANValid(iban)

Check if a string is a valid mozambican formatted International Bank Account Number - IBAN.
Returns true for a valid mozambican formatted IBAN according to the ISO 13616, otherwise false.

iban

The mozambican iban to check.
Must be of type string and can contain dashes or spaces.
Will throw if not of type string.

Examples:
// An example of a valid mozambican IBAN
// MZ59000301080016367102371

mutils.isIBANValid("MZ59000301080016367102371"); //=> true
mutils.isIBANValid("GB98BARC20032669387723"); //=> false

parseMobileNumber(number)

Parse any mozambican mobile number. Returns:

{
	valid: boolean, // if the number being parsed is valid or not
	data: {
		number: string, // the number being parsed.
		localFormat: string, // the number being parsed, formatted for national usage.
		internationalFormat: string, // the number being parsed, formatted for international usage.
		includesCountryCode: boolean, // does the number being parsed contain country code?
		nationalDestinationCode: string, // the national destination code of the network operator.
		operator: {
			name: string, // long name of the network operator.
			shortname: string // short name of the network operator.
		},
		lineType: "mobile" // the type of the line of the number being parsed.
	}
}

When an invalid number is parsed, the value of data in the return object will be null.

number

The mobile number to check. Must be of type string and can contain dashes or spaces.

Examples:
mutils.parseMobileNumber("+258-841234567");
/*
    {
        valid: true
        data: {
            number: "+258-841234567",
            localFormat: "841234567",
            internationalFormat: "+258841234567",
            includesCountryCode: true,
            nationalDestinationCode: "84",
            operator: {
                name: "Vodacom Moçambique",
                shortname: "Vodacom" 
            },
            lineType: "mobile"
        }
    }
*/

mutils.parseMobileNumber("831234567");
/*
    {
        valid: true
        data: {
            number: "831234567",
            localFormat: "831234567",
            internationalFormat: "+258831234567",
            includesCountryCode: false,
            nationalDestinationCode: "83",
            operator: {
                name: "Moçambique Telecom, S.A.",
                shortname: "Tmcel" 
            },
            lineType: "mobile"
        }
    }
*/

mutils.parseMobileNumber("8102392");
/*
    {
        valid: false,
        data: null
    }
*/

parseLandlineNumber(number)

Parse any mozambican landline number. Returns:

{
	valid: boolean, // if the number being parsed is valid or not
	data: {
		number: string, // the number being parsed.
		localFormat: string, // the number being parsed, formatted for national usage.
		internationalFormat: string, // the number being parsed, formatted for international usage.
		includesCountryCode: boolean, // does the number being parsed contain country code?
		nationalDestinationCode: string, // the area code.
		operator: {
			name: string, // long name of the network operator.
			shortname: string // short name of the network operator.
		},
        	region: string, // the region where the (national destination code) area code is linked to.
		lineType: "mobile" // the type of the line of the number being parsed.
	}
}

When an invalid number is parsed, the value of data in the return object will be null.

number

The mobile number to check. Must be of type string and can contain dashes or spaces.
Will throw if not of type string.

Examples:
mutils.parseLandlineNumber("+258 21 351100");
/*
    {
        valid: true,
        data: {
            number: "+258 21 351100",
            localFormat: "21351100",
            internationalFormat: "+25821351100",
            includesCountryCode: true,
            nationalDestinationCode: "21",
            operator: {
                name: "Moçambique Telecom, S.A.",
                shortname: "Tmcel" 
            },
            region: "maputo",
            lineType: "landline"
        }
    }
*/

mutils.parseLandlineNumber("29320123");
/*
    {
        valid: true,
        data: {
            number: "29320123",
            localFormat: "29320123",
            internationalFormat: "+25829320123",
            includesCountryCode: false,
            nationalDestinationCode: "293",
            operator: {
                name: "Moçambique Telecom, S.A.",
                shortname: "Tmcel" 
            },
            region: "inhambane",
            lineType: "landline"
        }
    }
*/

mutils.parseLandlineNumber("841234567");
/*
    {
        valid: false,
        data: null
    }
*/

Contributing

Bug Reports & Feature Requests

Please use the issue tracker to report any bugs or file feature requests.

Developing

PRs are welcome. To begin developing, do this:

$ git clone https://github.com/kishannareshpal/mozambique-utils.js.git
$ cd mozambique-utils/
$ npm install

# Test
$ npm test

npm run build builds the library to dist, generating three main files (and also a minified version for each one with the *.min.js prepended):

  • dist/mozambique-utils.cjs.js A CommonJS bundle, suitable for use in Node.js, that requires the external dependency. This corresponds to the "main" field in package.json
  • dist/mozambique-utils.esm.js an ES module bundle, suitable for use in other people's libraries and applications, that imports the external dependency. This corresponds to the "module" field in package.json
  • dist/mozambique-utils.js a UMD build, suitable for use in any environment (including the browser, as a <script> tag), that includes the external dependency. This corresponds to the "browser" field in package.json

npm run dev builds the library, then keeps rebuilding it whenever the source files change using rollup.watch.

npm test builds the library, then tests it.

License

MIT © Kishan Jadav

Package Sidebar

Install

npm i mozambique-utils

Weekly Downloads

21

Version

1.1.1

License

MIT

Unpacked Size

156 kB

Total Files

29

Last publish

Collaborators

  • kishannareshpal