1.0.14 • Published 6 months ago

phone-number-formatter-corrector v1.0.14

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

Phone Number Formatter and Corrector

A JavaScript library to automatically format and correct phone numbers for international dialing, with a focus on accuracy and ease of use.

Features

  • Automatic Formatting: Converts phone numbers into the E.164 standard format, making them ready for international calls.
  • Country Code Correction: Adds the correct country code if missing or incorrect.
  • Mobile Operator Detection: Identifies the mobile operator based on the phone number’s prefix.
  • Phone Number Length Validation: Validates the length of a phone number to ensure it is correct for the specified country.
  • Phone Number Information Retrieval: Retrieves comprehensive information about a phone number, including formatting, country code, operator, and length validation.
  • Caching: Utilizes caching to store previously formatted and corrected phone numbers for quicker access in future requests.
  • Error Handling: Provides clear error messages for invalid or incorrectly formatted phone numbers.

Installation

Install the package using npm:

npm install phone-number-formatter-corrector

Usage

const { formatPhoneNumber, getMobileOperator, getPhoneNumberInfo, isNumberValidForRegion } = require('./index');

const phoneNumber = '17645685126';
const code = 'DE';
//TODO: we might move this list to a test-config file and import 
// if it becomes to long.
// To add more validation, please add an object which has a countryCode key and provide
// the list of good and bad numbers. If tests is failing for you, please create an issue 
// in github and we will track it.
const testPhoneNumberList = [
    {
        'countryCode': 'CM',
        'numbers': ['6960923457683', '696092445', '696092545', '677123456'],
        'badNumbers': ['6960923450', '6960924450', '6960925450', '6771234560']
    }
]
const formattedNumber = formatPhoneNumber(phoneNumber, code);

const operator = getMobileOperator(phoneNumber, code);

const phoneNumberInfo = getPhoneNumberInfo(phoneNumber, code);

console.log(`Original Number: ${phoneNumber}`);
console.log(`Formatted Number: ${formattedNumber}`);
console.log(`Mobile Operator: ${operator}`);
console.log(`Phone Number Info: ${JSON.stringify(phoneNumberInfo)}`);
console.assert(phoneNumberInfo.formattedNumber == formattedNumber);
console.assert(phoneNumberInfo.countryCode == code);
console.assert(phoneNumberInfo.operator == operator);



testPhoneNumberList.forEach(function (obj) {
    obj.numbers.forEach(e => console.assert(isNumberValidForRegion(e, obj.countryCode), `${e}(${obj.countryCode}) is expected to be correct, but failed.`));
});

testPhoneNumberList.forEach(function (obj) {
    obj.badNumbers.forEach(e => console.assert(!isNumberValidForRegion(e, obj.countryCode), `${e}(${obj.countryCode}) is expected to fail.`));
});

// here our tests have passed. We just dummy log the phone number info to operators
// this just shows the importance of the isValid attribut on the phone number info object.
testPhoneNumberList.forEach(function (obj) {
    obj.numbers.forEach(e => console.log(`${JSON.stringify(getPhoneNumberInfo(e, obj.countryCode))}`));
});

// We see here that we could process a number, but this number is not valid.
console.log("");
testPhoneNumberList.forEach(function (obj) {
    obj.badNumbers.forEach(e => console.log(`${JSON.stringify(getPhoneNumberInfo(e, obj.countryCode))}`));
});

API

formatPhoneNumber(number, countryCode)

  • number (String): The phone number to be formatted.
  • countryCode (String): The country code to be used if the phone number is not in international format.

getMobileOperator(number, countryCode)

  • number (String): The phone number for which the mobile operator will be determined.
  • countryCode (String): The country code for the provided phone number.

getPhoneNumberInfo(number, countryCode)

  • number (String): The phone number to retrieve information for.
  • countryCode (String): The country code for the provided phone number.
  • Returns an object with the phone number information, including the formatted number, country code, mobile operator, and length validation.

isPhoneNumberLengthCorrect(number, countryCode)

  • number (String): The phone number to validate the length for.
  • countryCode (String): The country code for the provided phone number.
  • Returns an object with the validation result code and message. A result code of 0 indicates the length is correct, -1 indicates incorrect length, and -2 indicates no fixed length was found for the country.

Technologies Used

  • google-libphonenumber: For parsing, formatting, and validating international phone numbers.
  • node-cache: For caching previously formatted and corrected phone numbers.

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

1.0.14

6 months ago

1.0.13

6 months ago

1.0.12

6 months ago

1.0.11

6 months ago

1.0.10

6 months ago

1.0.9

6 months ago

1.0.8

6 months ago

1.0.7

6 months ago

1.0.6

6 months ago

1.0.5

6 months ago

1.0.4

6 months ago

1.0.3

6 months ago

1.0.2

6 months ago

1.0.1

6 months ago

1.0.0

6 months ago