libphonenumber-metadata-generator
Version:
Metadata generator for `libphonenumber-js`
55 lines (32 loc) • 2.35 kB
Markdown
# libphonenumber-metadata-generator
Generates metadata for [`libphonenumber-js`](https://gitlab.com/catamphetamine/libphonenumber-js).
## Install
```
npm install libphonenumber-metadata-generator --save-dev
```
## Use
Add metadata generation script to **your project's** `package.json`. Example:
```js
{
"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](https://gitlab.com/catamphetamine/libphonenumber-metadata-generator/-/blob/master/source/generate.js#L6-17). 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(): { date: Date, version: string, changes: string[], xml: string }`
Downloads the latest released metadata and returns the release version and the metadata XML, along with a list of changes.
### `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.