UNPKG

@lacussoft/cpf-gen

Version:

Utility to generate CPF (Brazilian Individual's Taxpayer ID)

187 lines (132 loc) ‱ 7.08 kB
![cpf-gen para JavaScript](https://br-utils.vercel.app/img/cover_cpf-gen.jpg) > 🌎 [Access documentation in English](https://github.com/LacusSolutions/br-utils-js/blob/main/packages/cpf-gen/README.md) UtilitĂĄrio em JavaScript/TypeScript para gerar CPFs vĂĄlidos (Cadastro de Pessoas FĂ­sicas). ## Recursos - ✅ **Prefixo opcional**: Informe de 0 a 9 dĂ­gitos para fixar o inĂ­cio do CPF e gerar o restante com dĂ­gitos verificadores vĂĄlidos - ✅ **Formatação**: Opção de retornar a string no formato padrĂŁo (`000.000.000-00`) - ✅ **Gerador reutilizĂĄvel**: Classe `CpfGenerator` com opçÔes padrĂŁo e sobrescritas por chamada - ✅ **TypeScript**: DefiniçÔes de tipo completas e compatĂ­vel com strict mode - ✅ **DependĂȘncias mĂ­nimas**: Sem dependĂȘncias externas, apenas pacotes internos como `@lacussoft/utils`, e `@lacussoft/cpf-dv` para o cĂĄlculo dos dĂ­gitos verificadores - ✅ **Tratamento de erros**: Erros de tipo e exceçÔes especĂ­ficas para opçÔes invĂĄlidas ## Instalação ```bash # com NPM $ npm install --save @lacussoft/cpf-gen # com Bun $ bun add @lacussoft/cpf-gen ``` ## InĂ­cio rĂĄpido ```ts // ES Modules import cpfGen from '@lacussoft/cpf-gen' // Common JS const cpfGen = require('@lacussoft/cpf-gen') ``` Uso bĂĄsico: ```ts cpfGen() // ex.: '47844241055' (11 dĂ­gitos numĂ©ricos) cpfGen({ format: true }) // ex.: '005.265.352-88' cpfGen({ prefix: '528250911' }) // ex.: '52825091138' cpfGen({ prefix: '528250911', format: true }) // ex.: '528.250.911-38' ``` Para frontends legados, inclua o build UMD (ex.: minificado) em uma tag `<script>`; `cpfGen` fica disponĂ­vel globalmente: ```html <script src="https://cdn.jsdelivr.net/npm/@lacussoft/cpf-gen@latest/dist/cpf-gen.min.js"></script> ``` ## Uso ### OpçÔes do gerador Todas as opçÔes sĂŁo opcionais: | Opção | Tipo | PadrĂŁo | Descrição | |--------|------|---------|-------------| | `format` | boolean | `false` | Se `true`, retorna o CPF gerado no formato padrĂŁo (`000.000.000-00`) | | `prefix` | string | `''` | String inicial parcial (0–9 dĂ­gitos). Apenas dĂ­gitos sĂŁo mantidos; os caracteres faltantes sĂŁo gerados aleatoriamente e os dĂ­gitos verificadores sĂŁo calculados. | Regras do prefixo: a base (primeiros 9 dĂ­gitos) nĂŁo pode ser toda zerada; 9 dĂ­gitos repetidos (ex.: `999999999`) nĂŁo sĂŁo permitidos. ### `cpfGen` (função auxiliar) Gera uma string de CPF vĂĄlida. Sem opçÔes, retorna um CPF numĂ©rico de 11 dĂ­gitos. É um atalho para `new CpfGenerator(options).generate()`. - **`options`** (opcional): `CpfGeneratorOptionsInput` — ver [OpçÔes do gerador](#opçÔes-do-gerador). ### `CpfGenerator` (classe) Para opçÔes padrĂŁo reutilizĂĄveis ou sobrescritas por chamada, use a classe: ```ts import { CpfGenerator } from '@lacussoft/cpf-gen' const generator = new CpfGenerator({ format: true }) generator.generate() // ex.: '005.265.352-88' generator.generate({ prefix: '123456' }) // sobrescreve apenas nesta chamada generator.options // opçÔes padrĂŁo atuais (CpfGeneratorOptions) ``` - **`constructor`**: `new CpfGenerator(defaultOptions?)` — opçÔes padrĂŁo opcionais (objeto simples ou instĂąncia de `CpfGeneratorOptions`). - **`generate(options?)`**: Retorna um CPF vĂĄlido; `options` por chamada sobrescrevem as opçÔes da instĂąncia apenas naquela chamada. - **`options`**: Getter que retorna as opçÔes padrĂŁo usadas quando nĂŁo se passam opçÔes na chamada (mesma instĂąncia usada internamente; alterĂĄ-la afeta chamadas futuras de `generate`). ### `CpfGeneratorOptions` (classe) Armazena as opçÔes (`format`, `prefix`) com validação e merge: ```ts import { CpfGeneratorOptions } from '@lacussoft/cpf-gen' const options = new CpfGeneratorOptions({ prefix: '123456', format: true, }) options.prefix // '123456' options.format // true options.set({ format: false }) // merge e retorna this options.all // cĂłpia superficial congelada das opçÔes atuais ``` - **`constructor`**: `new CpfGeneratorOptions(defaultOptions?, ...overrides)` — opçÔes mescladas na ordem. - **`format`**, **`prefix`**: Getters/setters; o prefixo Ă© validado (tamanho, base ineligĂ­vel, dĂ­gitos repetidos). - **`set(options)`**: Atualiza vĂĄrias opçÔes de uma vez; retorna `this`. - **`all`**: Snapshot somente leitura das opçÔes atuais. ## API ### ExportaçÔes - **`cpfGen`** (padrĂŁo): `(options?: CpfGeneratorOptionsInput) => string` - **`CpfGenerator`**: Classe para gerar CPF com opçÔes padrĂŁo opcionais e sobrescritas por chamada. - **`CpfGeneratorOptions`**: Classe que armazena as opçÔes (`format`, `prefix`) com validação e merge. - **`CPF_LENGTH`**: `11` (constante). - **`CPF_PREFIX_MAX_LENGTH`**: `9` (constante). - **Tipos**: `CpfGeneratorOptionsInput`, `CpfGeneratorOptionsType`. ### Erros e exceçÔes Este pacote usa **TypeError** para tipos de opção invĂĄlidos e **Exception** para valores invĂĄlidos (ex.: `prefix`). VocĂȘ pode capturar classes especĂ­ficas ou as bases. - **CpfGeneratorTypeError** (_abstract_) — base para erros de tipo em opçÔes - **CpfGeneratorOptionsTypeError** — uma opção tem tipo incorreto (ex.: `prefix` nĂŁo Ă© string) - **CpfGeneratorException** (_abstract_) — base para exceçÔes de valor de opção - **CpfGeneratorOptionPrefixInvalidException** — prefixo invĂĄlido (ex.: base zerada, dĂ­gitos repetidos, tamanho invĂĄlido) ```ts import cpfGen, { CpfGeneratorOptionsTypeError, CpfGeneratorOptionPrefixInvalidException, CpfGeneratorException, } from '@lacussoft/cpf-gen' // Tipo de opção (ex.: `prefix` deve ser string) try { cpfGen({ prefix: 123 }) } catch (e) { if (e instanceof CpfGeneratorOptionsTypeError) { console.log(e.message) // CPF generator option "prefix" must be of type string. Got integer number. } } // Prefixo invĂĄlido (ex.: base zerada) try { cpfGen({ prefix: '00000000' }) } catch (e) { if (e instanceof CpfGeneratorOptionPrefixInvalidException) { console.log(e.reason, e.actualInput) } } // Qualquer exceção do pacote try { cpfGen({ prefix: '999999999' }) } catch (e) { if (e instanceof CpfGeneratorException) { // tratar } } ``` ## Contribuição e suporte ContribuiçÔes sĂŁo bem-vindas! Consulte as [Diretrizes de contribuição](https://github.com/LacusSolutions/br-utils-js/blob/main/CONTRIBUTING.md). Se o projeto for Ăștil para vocĂȘ, considere: - ⭐ Dar uma estrela no repositĂłrio - đŸ€ Contribuir com cĂłdigo - 💡 [Sugerir novas funcionalidades](https://github.com/LacusSolutions/br-utils-js/issues) - 🐛 [Reportar bugs](https://github.com/LacusSolutions/br-utils-js/issues) ## Licença Este projeto estĂĄ sob a licença MIT — veja o arquivo [LICENSE](https://github.com/LacusSolutions/br-utils-js/blob/main/LICENSE). ## Changelog Veja o [CHANGELOG](https://github.com/LacusSolutions/br-utils-js/blob/main/packages/cpf-gen/CHANGELOG.md) para alteraçÔes e histĂłrico de versĂ”es. --- Feito com ❀ por [Lacus Solutions](https://github.com/LacusSolutions)