https://github.com/maxroecker/immutable-cnpj
A tiny library to handle CNPJ in an immutable flavour.
https://github.com/maxroecker/immutable-cnpj
Last synced: 8 months ago
JSON representation
A tiny library to handle CNPJ in an immutable flavour.
- Host: GitHub
- URL: https://github.com/maxroecker/immutable-cnpj
- Owner: MaxRoecker
- License: mit
- Created: 2021-06-05T22:39:44.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-01-04T14:27:53.000Z (over 2 years ago)
- Last Synced: 2025-02-14T11:19:45.771Z (over 1 year ago)
- Language: TypeScript
- Size: 371 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Immutable CNPJ
A tiny library to handle CNPJ in an immutable flavour.
> The **[CNPJ][cnpj]** (Cadastro Nacional da Pessoa Jurídica; portuguese for
> "National Registry of Legal Entities") is an identification number issued to
> Brazilian companies. This number is attributed by the Brazilian Federal
> Revenue to companies that, directly or indirectly, pay taxes in Brazil.
## [](https://www.npmjs.com/package/immutable-cnpj) [](https://maxroecker.mit-license.org/) 🇧🇷
## Installation
Use the npm package manager to install Immutable CNPJ.
```bash
npm i immutable-cnpj
```
## Usage
The library provides a the [`CNPJ`][cnpjclass] class to create immutable
instances representing CNPJ documents. You can create instances with any
iterable of digits and format or validate them. See the example:
```js
import { CNPJ } from 'immutable-cnpj';
const cnpj = new CNPJ([1, 1, 4, 4, 4, 7, 7, 7, 0, 0, 0, 1, 6, 1]);
cnpj.equals(cnpj); // true
cnpj.checkValidity(); // true
cnpj.format(); // '11.444.777/0001-61'
```
You can also create instances from strings using the [`CNPJ.from`][cnpj.from]
method.
```js
import { CNPJ } from 'immutable-cnpj';
const cnpjA = new CNPJ([1, 1, 4, 4, 4, 7, 7, 7, 0, 0, 0, 1, 6, 1]);
const cnpjB = CNPJ.from('11.444.777/0001-61');
const cnpjC = CNPJ.from('1 1 4 4 4 7 7 7 0 0 0 1 6 1 ');
cnpjA.equals(cnpjB); // true
cnpjA.equals(cnpjC); // true
```
> The `CNPJ` class implements the [`Evaluable`][evaluable] interface and it's
> suitable to be used along [ImmutableJS][immutablejs] data structures.
The method [`CNPJ.prototype.getValidity`][cnpj.getvalidity] returns the validity
state of the instance. If you only want to check if the instance is valid or
not, see the [`CNPJ.prototype.checkValidity`][cnpj.checkvalidity] method.
```js
import { CNPJ } from 'immutable-cnpj';
const empty = new CNPJ([]);
empty.checkValidity(); // false, it's empty
const semi = new CNPJ([1, 1, 4, 4, 4]);
semi.checkValidity(); // false, it's not complete
const invalid = new CNPJ([1, 1, 4, 4, 4, 7, 7, 7, 0, 0, 0, 1, 7, 2]);
semi.checkValidity(); // false, its check digits fails
const valid = new CNPJ([1, 1, 4, 4, 4, 7, 7, 7, 0, 0, 0, 1, 6, 1]);
valid.checkValidity(); // true
```
The library also provides the method [`CNPJ.create`][cnpj.create] to generate
valid instances with pseudo-random numbers.
```js
import { CNPJ } from 'immutable-cnpj';
const cnpj = CNPJ.create();
cnpj.checkValidity(); // true
```
The default JSON serialization a `CNPJ` instance is a string. You can also
access it directly calling the [`CNPJ.prototype.toJSON`][cnpj.tojson].
```js
import { CNPJ } from 'immutable-cnpj';
const user = {
name: 'Sá, Pato & Cia',
cnpj: new CNPJ([1, 1, 4, 4, 4, 7, 7, 7, 0, 0, 0, 1, 6, 1]),
};
JSON.stringify(user); // '{"name": "Sá, Pato & Cia", "cnpj": "11444777000161"}'
user.cnpj.toJSON(); // '11444777000161'
```
## API
See the complete API on the [Wiki's page][wiki].
## Contributing
Pull requests are welcome. For major changes, please open an issue first to
discuss what you would like to change.
Please make sure to update tests as appropriate.
## License
[MIT](https://maxroecker.mit-license.org/)
[evaluable]: https://github.com/MaxRoecker/evaluable
[wiki]: https://github.com/MaxRoecker/immutable-cnpj/wiki
[cnpj]: https://en.wikipedia.org/wiki/CNPJ
[cnpjclass]: https://github.com/MaxRoecker/immutable-cnpj/wiki#class-cnpj
[cnpj.from]: https://github.com/MaxRoecker/immutable-cnpj/wiki#from
[cnpj.getvalidity]: https://github.com/MaxRoecker/immutable-cnpj/wiki#getvalidity
[cnpj.checkvalidity]: https://github.com/MaxRoecker/immutable-cnpj/wiki#checkvalidity
[cnpj.create]: https://github.com/MaxRoecker/immutable-cnpj/wiki#create
[cnpj.tojson]: https://github.com/MaxRoecker/immutable-cnpj/wiki#tojson
[immutablejs]: https://immutable-js.github.io/immutable-js/