libphonenumber-metadata-generator

Metadata generator for `libphonenumber-js`

Usage no npm install needed!

<script type="module">
  import libphonenumberMetadataGenerator from 'https://cdn.skypack.dev/libphonenumber-metadata-generator';
</script>

README

libphonenumber-metadata-generator

Generates metadata for libphonenumber-js.

Install

npm install libphonenumber-metadata-generator --save-dev

Use

Add metadata generation script to your project's package.json. Example:

{
  "scripts": {
    "generate-libphonenumber-metadata": "libphonenumber-metadata-generator metadata.custom.json --countries RU,DE --extended"
  }
}

And then run it like npm run generate-libphonenumber-metadata.

The arguments are:

  • The first argument is the output metadata file path.

  • --countries argument is a comma-separated list of the countries included (if --countries is omitted then all countries are included).

  • --extended argument may be passed to include all regular expressions for precise phone number validation and getting phone number type, which will enlarge the resulting metadata size approximately twice.

  • --types ... argument may be passed instead of --extended to generate metadata that only supports the selected phone number types (a comma-separated list, e.g. --types mobile,fixed_line). See the list of all possible phone number types. Other phone number types will still be parseable, but they won't be recognized as being "valid" (.isValid() will return false), and also their "type" won't be detected (.getType() will return undefined).

Versioning

Metadata generated by libphonenumber-metadata-generator has a numeric version: this is for backwards compatibility, because metadata file format could change in some future.

API

download(url: string): string

Downloads a file from a URL and returns its contents.

generate(xml: string, version: number, includedCountries: string[]?, extended: boolean?, includedPhoneNumberTypes: string[]?): object

Parses metadata XML and returns a JSON object.

compress(metadata: object): object

Compresses metadata JSON object: replaces objects with arrays.

version: number

Provides the current version of metadata format.