### Install Brazilian Utils with Yarn
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/getting-started.md
Install the library using the yarn package manager.
```bash
yarn add @brazilian-utils/brazilian-utils
```
--------------------------------
### Install Brazilian Utils with npm
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/getting-started.md
Install the library using npm for use in your Node.js projects.
```bash
npm install --save @brazilian-utils/brazilian-utils
```
--------------------------------
### Common Development Commands
Source: https://github.com/brazilian-utils/javascript/blob/main/README.md
Execute common development tasks such as installation, checks, testing, and building using the `vp` toolchain.
```bash
vp install
vp check
vp test
vp run build
```
--------------------------------
### Get Municipality Info or IBGE Code
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Fetches municipality information (name and UF) using an IBGE code, or retrieves the IBGE code from a municipality name and UF. Requires an asynchronous context.
```javascript
import { getMunicipality } from '@brazilian-utils/brazilian-utils';
await getMunicipality({ code: '3550308' });
// ['São Paulo', 'SP']
await getMunicipality({ municipalityName: 'São Paulo', uf: 'SP' });
// '3550308'
```
--------------------------------
### Get Legal Natures Map
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Retrieves a map of legal natures where keys are the codes and values are their descriptions. Useful for lookups.
```javascript
import { getLegalNatures } from '@brazilian-utils/brazilian-utils';
const legalNatures = getLegalNatures();
legalNatures['2062']; // 'Sociedade Empresária Limitada'
```
--------------------------------
### Get Brazilian Cities (v2)
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Retrieves a list of Brazilian cities, which are now sorted alphabetically by default. This applies to both national and state-specific queries.
```javascript
getCities(); // Returns sorted alphabetically
getCities('SP'); // Returns sorted alphabetically
```
--------------------------------
### Get Brazilian Holidays
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Retrieves national and state-specific Brazilian holidays for a given year. Ensure the library is imported correctly.
```javascript
import { getHolidays } from '@brazilian-utils/brazilian-utils';
// Get all national holidays
const holidays = getHolidays(2024);
// Get holidays for a specific state
const spHolidays = getHolidays({ year: 2024, stateCode: 'SP' });
```
--------------------------------
### Get All Brazilian States
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Retrieves a list of all Brazilian states, each with its code and name. This function requires no arguments.
```javascript
import { getStates } from '@brazilian-utils/brazilian-utils';
getStates();
// [
// { code: 'AC', name: 'Acre' },
// { code: 'AL', name: 'Alagoas' },
// { code: 'AP', name: 'Amapá' },
// { code: 'AM', name: 'Amazonas' },
// { code: 'BA', name: 'Bahia' },
// { code: 'CE', name: 'Ceará' },
// { code: 'DF', name: 'Distrito Federal' },
// { code: 'ES', name: 'Espírito Santo' },
// { code: 'GO', name: 'Goiás' },
// { code: 'MA', name: 'Maranhão' },
// { code: 'MT', name: 'Mato Grosso' },
// { code: 'MS', name: 'Mato Grosso do Sul' },
// { code: 'MG', name: 'Minas Gerais' },
// { code: 'PA', name: 'Pará' },
// { code: 'PB', name: 'Paraíba' },
// { code: 'PR', name: 'Paraná' },
// { code: 'PE', name: 'Pernambuco' },
// { code: 'PI', name: 'Piauí' },
// { code: 'RJ', name: 'Rio de Janeiro' },
// { code: 'RN', name: 'Rio Grande do Norte' },
// { code: 'RS', name: 'Rio Grande do Sul' },
// { code: 'RO', name: 'Rondônia' },
// { code: 'RR', name: 'Roraima' },
// { code: 'SC', name: 'Santa Catarina' },
// { code: 'SP', name: 'São Paulo' },
// { code: 'SE', name: 'Sergipe' },
// { code: 'TO', name: 'Tocantins' },
// ]
```
--------------------------------
### Get Brazilian Cities (v1)
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
This is the previous behavior of `getCities` which returned an unsorted array of cities. The function now returns results sorted alphabetically.
```javascript
getCities(); // Returned unsorted array
getCities('SP'); // Returned unsorted array
```
--------------------------------
### Get Brazilian Cities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Retrieves a list of Brazilian cities. If no state code is provided, it returns all cities; otherwise, it returns cities for the specified state. Results are sorted alphabetically.
```javascript
import { getCities } from '@brazilian-utils/brazilian-utils';
// Return all Brazilian cities (sorted alphabetically).
getCities();
// [
// 'Abadia de Goiás',
// 'Abadia dos Dourados',
// 'Abadiânia',
// 'Abaeté',
// 'Abaetetuba',
// 'Abaiara',
// 'Abaíra',
// 'Abaré',
// 'Abatiá',
// 'Abdon Batista',
// ... 5460 more items
// ]
// Return all Brazilian cities of the São Paulo state (sorted alphabetically).
getCities('SP');
// [
// "Adamantina",
// "Adolfo",
// "Aguaí",
// "Águas da Prata",
// "Águas de Lindóia",
// "Águas de Santa Bárbara",
// "Águas de São Pedro",
// "Agudos",
// "Alambari",
// "Alfredo Marcondes",
// ... 635 more items
// ]
```
--------------------------------
### Get Brazilian Holidays
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Retrieves a list of Brazilian holidays for a given year. It can return national holidays, and optionally include state-specific holidays if a state code is provided.
```javascript
import { getHolidays } from '@brazilian-utils/brazilian-utils';
// Get all national holidays for 2024
getHolidays(2024);
// [
// { name: 'Ano novo', date: Date('2024-01-01') },
// { name: 'Carnaval (terça-feira)', date: Date('2024-02-13') },
// { name: 'Sexta-feira Santa', date: Date('2024-03-29') },
// { name: 'Páscoa', date: Date('2024-03-31') },
// // ... more holidays
// ]
// Get holidays for a specific state
getHolidays({ year: 2024, stateCode: 'SP' });
// Includes national holidays plus state-specific holidays (e.g., "Revolução Constitucionalista")
```
--------------------------------
### Running Browser Tests
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Execute browser-specific tests using npm scripts. These commands ensure cross-browser compatibility for your application.
```bash
npm run test:chrome-browser
```
```bash
npm run test:firefox-browser
```
```bash
npm run test:safari-browser
```
```bash
npm run test:edge-browser
```
--------------------------------
### Fetch Address Info by CEP (v1)
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
This is the previous version of `getAddressInfoByCep` which only accepted a CEP string. It is still functional but lacks new features.
```javascript
const address = await getAddressInfoByCep('01310100');
```
--------------------------------
### Handle `getAddressInfoByCep` Errors
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Demonstrates how to handle specific error types thrown by `getAddressInfoByCep` in v2, including validation, not found, and service errors. Ensure you import the necessary error classes.
```javascript
import {
getAddressInfoByCep,
GetAddressInfoByCepValidationError,
GetAddressInfoByCepNotFoundError,
GetAddressInfoByCepServiceError
} from '@brazilian-utils/brazilian-utils';
try {
const address = await getAddressInfoByCep('01310100');
} catch (error) {
if (error instanceof GetAddressInfoByCepValidationError) {
// Handle validation error
} else if (error instanceof GetAddressInfoByCepNotFoundError) {
// Handle not found error
} else if (error instanceof GetAddressInfoByCepServiceError) {
// Handle service error
}
}
```
--------------------------------
### Include Brazilian Utils via Script Tag
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/getting-started.md
Include the library directly in your HTML using a script tag for global access.
```html
```
--------------------------------
### Importing Specific Functions with ES Modules
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Use ES module imports to include only the functions you need, enabling better tree shaking in modern bundlers. This is the recommended way to import from v2.x.
```javascript
import { isValidCpf, formatCpf } from '@brazilian-utils/brazilian-utils';
```
--------------------------------
### Import and Use isValidCpf
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/getting-started.md
Import and use the isValidCpf function from the library. Ensure the function is imported correctly before calling it.
```javascript
import { isValidCpf } from '@brazilian-utils/brazilian-utils';
isValidCpf('1232454233345'); // false
```
--------------------------------
### Migrate from v1 to v2 Imports and Function Calls
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Update your import statements and function calls to use the new camelCase names in v2. Existing code using PascalCase names will work but will generate deprecation warnings.
```javascript
import { isValidCPF, formatCPF, generateCNPJ } from '@brazilian-utils/brazilian-utils';
const isValid = isValidCPF('12345678909');
const formatted = formatCPF('12345678909');
const cnpj = generateCNPJ();
```
```javascript
import { isValidCpf, formatCpf, generateCnpj } from '@brazilian-utils/brazilian-utils';
const isValid = isValidCpf('12345678909');
const formatted = formatCpf('12345678909');
const cnpj = generateCnpj();
```
--------------------------------
### Currency Formatting
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Formats numbers into a Brazilian Real (BRL) currency string.
```APIDOC
## formatCurrency
### Description
Formats an integer or float to a string in the BRL pattern
### Method
`formatCurrency(value: number, options?: { precision?: number }): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { formatCurrency } from '@brazilian-utils/brazilian-utils';
formatCurrency(10); // 10,00
formatCurrency(10756.11); // 10.756,11
formatCurrency(10756.123, { precision: 3 }); // 10.756,123
```
### Response
#### Success Response (200)
`string` - The formatted currency string.
#### Response Example
```json
"10,00"
```
```
--------------------------------
### Parse Processo Jurídico
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Removes 'processo jurídico' formatting, keeping only digits and capping the result to 20 digits.
```javascript
import { parseProcessoJuridico } from '@brazilian-utils/brazilian-utils';
parseProcessoJuridico('0002080-25.2012.515.0049'); // 00020802520125150049
```
--------------------------------
### Fetch Address Info by CEP
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Fetches address information for a given CEP using multiple providers. Accepts CEP as string or number.
```javascript
import { getAddressInfoByCep } from '@brazilian-utils/brazilian-utils';
// Using all providers (default)
const address = await getAddressInfoByCep('01310100');
// { cep: '01310100', state: 'SP', city: 'São Paulo', neighborhood: 'Bela Vista', street: 'Avenida Paulista' }
// Using specific providers
const address = await getAddressInfoByCep('01310-100', {
providers: ['viacep', 'brasilapi']
});
// Using number input (will be padded automatically)
const address = await getAddressInfoByCep(1310100);
```
--------------------------------
### Fetch Address Info by CEP (v2)
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Fetches address information using a CEP. This version supports additional options for providers and accepts CEPs with or without hyphens, as well as numeric inputs.
```javascript
// Still works the same way
const address = await getAddressInfoByCep('01310100');
// But now supports options
const address = await getAddressInfoByCep('01310-100', {
providers: ['viacep', 'brasilapi']
});
// Also accepts numbers (will be padded automatically)
const address = await getAddressInfoByCep(1310100);
```
--------------------------------
### Address Utilities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for fetching CEP information from an address.
```APIDOC
## getCepInfoByAddress
### Description
Fetch CEPs from an address using ViaCEP.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Parameters
#### Request Body
- **federalUnit** (string) - Required - The federal unit (state) abbreviation.
- **city** (string) - Required - The city name.
- **street** (string) - Required - The street name.
### Request Example
```json
{
"federalUnit": "SP",
"city": "Sao Paulo",
"street": "Avenida Paulista"
}
```
### Response
#### Success Response (200)
- **Array of Objects** - Each object contains CEP details.
- **cep** (string) - The postal code.
- **logradouro** (string) - The street name.
- **complemento** (string) - The complement.
- **bairro** (string) - The neighborhood.
- **localidade** (string) - The city.
- **uf** (string) - The federal unit (state).
### Response Example
```json
[
{
"cep": "01310100",
"logradouro": "Avenida Paulista",
"complemento": "lado par",
"bairro": "Bela Vista",
"localidade": "São Paulo",
"uf": "SP"
}
]
```
```
--------------------------------
### getBoletoInfo
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Extracts key information such as amount, expiration date, and bank code from a boleto string.
```APIDOC
## getBoletoInfo
### Description
Extract information from a boleto (amount, expiration date, bank code).
### Method
`getBoletoInfo(boletoString: string): BoletoInfo`
### Parameters
#### Path Parameters
- **boletoString** (string) - Required - The boleto number string.
### Request Example
```javascript
import { getBoletoInfo } from '@brazilian-utils/brazilian-utils';
const info = getBoletoInfo('00190000090114971860168524522114675860000102656');
```
### Response
#### Success Response (200)
- **amount** (number) - The monetary amount of the boleto.
- **expirationDate** (Date) - The expiration date of the boleto.
- **bankCode** (string) - The bank code associated with the boleto.
#### Response Example
```json
{
"amount": 102656,
"expirationDate": "2023-10-27T00:00:00.000Z",
"bankCode": "001"
}
```
```
--------------------------------
### getStates
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Retrieves a list of all Brazilian states.
```APIDOC
## getStates
### Description
Get all Brazilian states.
### Method
N/A (This is a utility function, not an API endpoint)
### Endpoint
N/A
### Parameters
None
### Request Example
```javascript
import { getStates } from '@brazilian-utils/brazilian-utils';
getStates();
// [
// { code: 'AC', name: 'Acre' },
// { code: 'AL', name: 'Alagoas' },
// // ... more states
// ]
```
### Response
- **Array of Objects**: Each object contains `code` (string) and `name` (string) for a Brazilian state.
```
--------------------------------
### Address Information by CEP
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Fetches address details for a given CEP using multiple external providers.
```APIDOC
## getAddressInfoByCep
### Description
Fetch address information for a given CEP using multiple providers.
### Method
`getAddressInfoByCep(cep: string | number, options?: { providers?: ('viacep' | 'brasilapi')[] }): Promise
interface AddressInfo {
cep: string;
state: string;
city: string;
neighborhood: string;
street: string;
}
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { getAddressInfoByCep } from '@brazilian-utils/brazilian-utils';
// Using all providers (default)
const address = await getAddressInfoByCep('01310100');
// { cep: '01310100', state: 'SP', city: 'São Paulo', neighborhood: 'Bela Vista', street: 'Avenida Paulista' }
// Using specific providers
const address = await getAddressInfoByCep('01310-100', {
providers: ['viacep', 'brasilapi']
});
// Using number input (will be padded automatically)
const address = await getAddressInfoByCep(1310100);
```
### Response
#### Success Response (200)
`Promise` - An object containing address details.
#### Response Example
```json
{
"cep": "01310100",
"state": "SP",
"city": "São Paulo",
"neighborhood": "Bela Vista",
"street": "Avenida Paulista"
}
```
```
--------------------------------
### Capitalization Utility
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Transforms the first letter of each word to uppercase, optionally ignoring or enforcing case for specific words.
```APIDOC
## capitalize
### Description
Transforms the first letter into a capital one of each word ignoring prepositions.
### Method
`capitalize(text: string, options?: { lowerCaseWords?: string[], upperCaseWords?: string[] }): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { capitalize } from '@brazilian-utils/brazilian-utils';
capitalize('josé e maria'); // José e Maria
capitalize('josé Ama MARIA', { lowerCaseWords: ['ama'] }); // José ama Maria
capitalize('doc inválido', { upperCaseWords: ['DOC'] }); // DOC Inválido
```
### Response
#### Success Response (200)
`string` - The capitalized string.
#### Response Example
```json
"José e Maria"
```
```
--------------------------------
### Import and Use isValidCpf Utility
Source: https://github.com/brazilian-utils/javascript/blob/main/README.md
Import the `isValidCpf` function from the library and use it to validate a CPF number. Ensure the CPF format is correct for accurate validation.
```javascript
import { isValidCpf } from "@brazilian-utils/brazilian-utils";
isValidCpf("1232454233345"); // false
```
--------------------------------
### Implement Custom Random Number Generation
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
This function is no longer exported and should be replaced with a custom implementation. Use this snippet as a reference for creating your own.
```javascript
// v1 - Don't use this anymore
import { generateRandomNumber } from '@brazilian-utils/brazilian-utils';
// v2 - Use your own implementation
function generateRandomNumber(length) {
let result = '';
for (let i = 0; i < length; i++) {
result += Math.floor(Math.random() * 10).toString();
}
return result;
}
```
--------------------------------
### Accessing Removed `generateChecksum` Helper (Internal)
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
The `generateChecksum` function is no longer part of the public API. Importing it from internal modules is not recommended as it may change without notice.
```javascript
// v1 - Don't use this anymore
import { generateChecksum } from '@brazilian-utils/brazilian-utils';
// v2 - If you absolutely need it, import from internals (not recommended)
// This is not part of the public API and may change without notice
import { generateChecksum } from '@brazilian-utils/brazilian-utils/dist/_internals/generate-checksum/generate-checksum';
```
--------------------------------
### getCities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Retrieves a list of Brazilian cities, with results now sorted alphabetically.
```APIDOC
## getCities
### Description
Returns a list of Brazilian cities. In v2.0.0 and later, the results are always sorted alphabetically.
### Method
`getCities(stateCode?: string): string[]`
### Parameters
#### Query Parameters
- **stateCode** (string) - Optional - The two-letter state code (e.g., 'SP') to filter cities for a specific state. If omitted, returns cities for all states.
### Request Example
```javascript
import { getCities } from '@brazilian-utils/brazilian-utils';
// Get all cities, sorted alphabetically
const allCities = getCities();
// Get cities for a specific state, sorted alphabetically
const spCities = getCities('SP');
```
### Response
#### Success Response (200)
- **cities** (Array) - An array of city names, sorted alphabetically.
#### Response Example
```json
[
"Adamantina",
"Adolfo",
"Aguaí",
"..."
]
```
```
--------------------------------
### PIS Utilities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for generating PIS numbers.
```APIDOC
## generatePis
### Description
Generate a valid random PIS.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Response
- **string** - A valid random PIS number.
```
--------------------------------
### Generate CNPJ with Version Specification
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Always specify the version when generating CNPJ to ensure predictable behavior, as the default will change in v3.0.0.
```javascript
generateCnpj(1); // Always generates numeric CNPJ
generateCnpj(2); // Always generates alphanumeric CNPJ
// Not recommended: Relying on default behavior
generateCnpj(); // Currently generates numeric (v1), but will be random in v3.0.0
```
--------------------------------
### Format Processo Jurídico
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Formats a 'processo jurídico' number according to CNJ's definition.
```javascript
import { formatProcessoJuridico } from '@brazilian-utils/brazilian-utils';
formatProcessoJuridico('00020802520125150049'); // 0002080-25.2012.515.0049
```
--------------------------------
### Boleto Utilities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for validating, formatting, parsing, and generating Brazilian Boleto bancário numbers.
```APIDOC
## isValidBoleto
### Description
Check if boleto (Brazilian payment method) is valid.
### Method
`isValidBoleto(boleto: string): boolean`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { isValidBoleto } from '@brazilian-utils/brazilian-utils';
isValidBoleto('00190000090114971860168524522114675860000102656'); // true
```
### Response
#### Success Response (200)
- **boolean**: True if the boleto is valid, false otherwise.
#### Response Example
```json
{
"isValid": true
}
```
```
```APIDOC
## formatBoleto
### Description
Format a boleto number.
### Method
`formatBoleto(boleto: string, options?: { pad?: boolean }): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { formatBoleto } from '@brazilian-utils/brazilian-utils';
formatBoleto('00190000090114971860168524522114675860000102656'); // 00190.00009 01149.718601 68524.522114 6 75860000102656
formatBoleto('1900000901149', { pad: true }); // 00000.00000 00000.000019 00000.901149 0 00000000000000
```
### Response
#### Success Response (200)
- **string**: The formatted boleto number.
#### Response Example
```json
{
"formattedBoleto": "00190.00009 01149.718601 68524.522114 6 75860000102656"
}
```
```
```APIDOC
## parseBoleto
### Description
Remove boleto formatting, keep only digits, and cap the result to 47 digits.
### Method
`parseBoleto(boleto: string): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { parseBoleto } from '@brazilian-utils/brazilian-utils';
parseBoleto('00190.00009 01149.718601 68524.522114 6 75860000102656'); // 00190000090114971860168524522114675860000102656
```
### Response
#### Success Response (200)
- **string**: The parsed boleto number with only digits.
#### Response Example
```json
{
"parsedBoleto": "00190000090114971860168524522114675860000102656"
}
```
```
```APIDOC
## generateBoleto
### Description
Generate a valid random boleto.
### Method
`generateBoleto(): string`
### Parameters
None
### Request Example
```javascript
import { generateBoleto } from '@brazilian-utils/brazilian-utils';
generateBoleto(); // "00190000090114971860168524522114675860000102656"
```
### Response
#### Success Response (200)
- **string**: A valid random boleto number.
#### Response Example
```json
{
"generatedBoleto": "00190000090114971860168524522114675860000102656"
}
```
```
```APIDOC
## getBoletoInfo
### Description
Extract information from a boleto (amount, expiration date, bank code).
### Method
`getBoletoInfo(boleto: string): { amount: number, expirationDate: Date, bankCode: string }`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { getBoletoInfo } from '@brazilian-utils/brazilian-utils';
getBoletoInfo('00190000090114971860168524522114675860000102656');
// { amount: 102656, expirationDate: Date, bankCode: '001' }
```
### Response
#### Success Response (200)
- **object**: An object containing the amount, expiration date, and bank code.
- **amount** (number): The amount of the boleto.
- **expirationDate** (Date): The expiration date of the boleto.
- **bankCode** (string): The bank code associated with the boleto.
#### Response Example
```json
{
"amount": 102656,
"expirationDate": "2023-10-27T00:00:00.000Z",
"bankCode": "001"
}
```
```
--------------------------------
### Format Currency (BRL)
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Formats an integer or float to a string in the Brazilian Real (BRL) pattern. Allows specifying precision.
```javascript
import { formatCurrency } from '@brazilian-utils/brazilian-utils';
formatCurrency(10); // 10,00
formatCurrency(10756.11); // 10.756,11
formatCurrency(10756.123, { precision: 3 }); // 10.756,123
```
--------------------------------
### Legal Document Utilities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for generating and formatting legal document numbers and codes.
```APIDOC
## generateProcessoJuridico
### Description
Generate a valid random processo jurídico number according to CNJ's definition.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Parameters
#### Request Body
- **year** (number) - Optional - The year for the processo jurídico number.
- **court** (number) - Optional - The court number for the processo jurídico number.
### Request Example
```json
{
"year": 2026,
"court": 5
}
```
### Response
- **string** - A randomly generated processo jurídico number, or null if parameters are invalid.
```
```APIDOC
## formatLegalNature
### Description
Format a legal nature code.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Parameters
#### Request Body
- **code** (string) - Required - The legal nature code to format.
### Response
- **string** - The formatted legal nature code.
```
```APIDOC
## isValidLegalNature
### Description
Check if a legal nature code exists in the official list.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Parameters
#### Request Body
- **code** (string) - Required - The legal nature code to validate.
### Response
- **boolean** - True if the code is valid, false otherwise.
```
```APIDOC
## generateLegalNature
### Description
Generate a random valid legal nature code.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Response
- **string** - A randomly generated valid legal nature code.
```
```APIDOC
## parseLegalNature
### Description
Remove legal nature formatting, keep only digits, and cap the result to 4 digits.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Parameters
#### Request Body
- **formattedCode** (string) - Required - The formatted legal nature code.
### Response
- **string** - The parsed and capped legal nature code.
```
```APIDOC
## getLegalNatures
### Description
Get the legal nature map keyed by code.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Response
- **object** - A map where keys are legal nature codes and values are their descriptions.
```
--------------------------------
### Capitalize Words
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Transforms the first letter of each word into a capital one, ignoring prepositions. Can specify words to force uppercase or lowercase.
```javascript
import { capitalize } from '@brazilian-utils/brazilian-utils';
capitalize('josé e maria'); // José e Maria
capitalize('josé Ama MARIA', { lowerCaseWords: ['ama'] }); // José ama Maria
capitalize('doc inválido', { upperCaseWords: ['DOC'] }); // DOC Inválido
```
--------------------------------
### PIS Validation, Formatting, and Parsing
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for validating, formatting, and parsing Brazilian PIS numbers.
```APIDOC
## isValidPis
### Description
Check if PIS is valid.
### Method
`isValidPis(pis: string): boolean`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { isValidPis } from '@brazilian-utils/brazilian-utils';
isValidPis('12056412547'); // false
```
### Response
#### Success Response (200)
`boolean` - True if the PIS is valid, false otherwise.
#### Response Example
```json
false
```
```
```APIDOC
## formatPis
### Description
Format PIS number.
### Method
`formatPis(pis: string, options?: { pad?: boolean }): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { formatPis } from '@brazilian-utils/brazilian-utils';
formatPis('12345678901'); // 123.45678.90-1
formatPis('123456789', { pad: true }); // 001.23456.78-9
```
### Response
#### Success Response (200)
`string` - The formatted PIS number.
#### Response Example
```json
"123.45678.90-1"
```
```
```APIDOC
## parsePis
### Description
Remove PIS formatting, keep only digits, and cap the result to 11 digits.
### Method
`parsePis(pis: string): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { parsePis } from '@brazilian-utils/brazilian-utils';
parsePis('123.45678.90-1'); // 12345678901
```
### Response
#### Success Response (200)
`string` - The parsed PIS number (digits only, max 11 digits).
#### Response Example
```json
"12345678901"
```
```
--------------------------------
### getAddressInfoByCep
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Fetches address information using a CEP (Brazilian postal code). Supports multiple providers and improved error handling.
```APIDOC
## getAddressInfoByCep
### Description
Retrieve address information based on a CEP (Brazilian postal code). This function has been updated to support multiple providers and enhanced error handling.
### Method
`getAddressInfoByCep(cep: string | number, options?: { providers?: string[] }): Promise`
### Parameters
#### Path Parameters
- **cep** (string | number) - Required - The CEP to search for. Can be a string (e.g., '01310-100' or '01310100') or a number.
#### Query Parameters
- **providers** (Array) - Optional - An array of provider names (e.g., ['viacep', 'brasilapi']) to use for fetching the address. Defaults to all available providers.
### Request Example
```javascript
import { getAddressInfoByCep } from '@brazilian-utils/brazilian-utils';
// Basic usage (still works)
const address = await getAddressInfoByCep('01310100');
// Using options to specify providers
const addressWithProviders = await getAddressInfoByCep('01310-100', {
providers: ['viacep', 'brasilapi']
});
// Using a number for CEP
const addressFromNumber = await getAddressInfoByCep(1310100);
```
### Response
#### Success Response (200)
- **street** (string) - The street name.
- **neighborhood** (string) - The neighborhood.
- **city** (string) - The city name.
- **state** (string) - The state abbreviation (e.g., 'SP').
- **zipcode** (string) - The CEP.
#### Response Example
```json
{
"street": "Avenida Paulista",
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"zipcode": "01310-100"
}
```
### Error Handling
This function now exports specific error classes for better error management:
- `GetAddressInfoByCepValidationError`: Thrown for invalid input (e.g., invalid CEP format).
- `GetAddressInfoByCepNotFoundError`: Thrown when no address is found for the given CEP.
- `GetAddressInfoByCepServiceError`: Thrown when there's an issue with the external service provider.
#### Error Handling Example
```javascript
import {
getAddressInfoByCep,
GetAddressInfoByCepValidationError,
GetAddressInfoByCepNotFoundError,
GetAddressInfoByCepServiceError
} from '@brazilian-utils/brazilian-utils';
try {
const address = await getAddressInfoByCep('invalid-cep');
} catch (error) {
if (error instanceof GetAddressInfoByCepValidationError) {
console.error('Validation Error:', error.message);
} else if (error instanceof GetAddressInfoByCepNotFoundError) {
console.error('Not Found Error:', error.message);
} else if (error instanceof GetAddressInfoByCepServiceError) {
console.error('Service Error:', error.message);
} else {
console.error('An unexpected error occurred:', error);
}
}
```
```
--------------------------------
### Holiday Utilities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for checking Brazilian holidays.
```APIDOC
## isHoliday
### Description
Check if a specific date is a Brazilian holiday.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Parameters
#### Request Body
- **targetDate** (Date) - Required - The date to check.
- **stateCode** (string) - Optional - The state code to check for state-specific holidays.
### Request Example
```json
{
"targetDate": "2024-01-01"
}
```
```json
{
"targetDate": "2024-07-09",
"stateCode": "SP"
}
```
### Response
- **boolean** - True if the date is a holiday, false otherwise.
```
--------------------------------
### Municipality Utilities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for retrieving municipality information and IBGE codes.
```APIDOC
## getMunicipality
### Description
Get municipality information by IBGE code, or get an IBGE code from municipality name and UF.
### Method
Not applicable (function call)
### Endpoint
Not applicable (function call)
### Parameters
#### Request Body
- **code** (string) - Optional - The IBGE code of the municipality.
- **municipalityName** (string) - Optional - The name of the municipality.
- **uf** (string) - Optional - The federal unit (state) abbreviation.
### Request Example
```json
{
"code": "3550308"
}
```
```json
{
"municipalityName": "São Paulo",
"uf": "SP"
}
```
### Response
- **Array of strings** - If searching by code, returns `[municipalityName, uf]`.
- **string** - If searching by name and UF, returns the IBGE code.
```
--------------------------------
### Extract Boleto Information
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/migration-v1-to-v2.md
Parses a boleto string to extract key information such as amount, expiration date, and bank code. The input must be a valid boleto string.
```javascript
import { getBoletoInfo } from '@brazilian-utils/brazilian-utils';
const info = getBoletoInfo('00190000090114971860168524522114675860000102656');
// { amount: 102656, expirationDate: Date, bankCode: '001' }
```
--------------------------------
### Email Utilities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for validating email addresses.
```APIDOC
## isValidEmail
### Description
Check if email is valid.
### Method
`isValidEmail(email: string): boolean`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { isValidEmail } from '@brazilian-utils/brazilian-utils';
isValidEmail('john.doe@hotmail.com'); // true
```
### Response
#### Success Response (200)
- **boolean**: True if the email is valid, false otherwise.
#### Response Example
```json
{
"isValid": true
}
```
```
--------------------------------
### Legal Process Number Validation, Formatting, and Parsing
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for validating, formatting, and parsing Brazilian legal process numbers according to CNJ standards.
```APIDOC
## isValidProcessoJuridico
### Description
Validate the processo jurídico number according to [CNJ's definition](https://www.conjur.com.br/dl/resolucao-65-cnj.pdf).
### Method
`isValidProcessoJuridico(processo: string): boolean`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { isValidProcessoJuridico } from '@brazilian-utils/brazilian-utils';
isValidProcessoJuridico('00020802520125150049'); // true
```
### Response
#### Success Response (200)
`boolean` - True if the legal process number is valid, false otherwise.
#### Response Example
```json
true
```
```
```APIDOC
## formatProcessoJuridico
### Description
Format the processo jurídico number according to [CNJ's definition](https://www.conjur.com.br/dl/resolucao-65-cnj.pdf).
### Method
`formatProcessoJuridico(processo: string): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { formatProcessoJuridico } from '@brazilian-utils/brazilian-utils';
formatProcessoJuridico('00020802520125150049'); // 0002080-25.2012.515.0049
```
### Response
#### Success Response (200)
`string` - The formatted legal process number.
#### Response Example
```json
"0002080-25.2012.515.0049"
```
```
```APIDOC
## parseProcessoJuridico
### Description
Remove processo jurídico formatting, keep only digits, and cap the result to 20 digits.
### Method
`parseProcessoJuridico(processo: string): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { parseProcessoJuridico } from '@brazilian-utils/brazilian-utils';
parseProcessoJuridico('0002080-25.2012.515.0049'); // 00020802520125150049
```
### Response
#### Success Response (200)
`string` - The parsed legal process number (digits only, max 20 digits).
#### Response Example
```json
"00020802520125150049"
```
```
--------------------------------
### CPF Utilities
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Utilities for validating, formatting, parsing, and generating Brazilian CPF (Cadastro de Pessoas Físicas) numbers.
```APIDOC
## isValidCpf
### Description
Check if CPF is valid.
### Method
`isValidCpf(cpf: string): boolean`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { isValidCpf } from '@brazilian-utils/brazilian-utils';
isValidCpf('155151475'); // false
```
### Response
#### Success Response (200)
- **boolean**: True if the CPF is valid, false otherwise.
#### Response Example
```json
{
"isValid": true
}
```
```
```APIDOC
## formatCpf
### Description
Format CPF.
### Method
`formatCpf(cpf: string, options?: { pad?: boolean }): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { formatCpf } from '@brazilian-utils/brazilian-utils';
formatCpf('74650688000'); // 746.506.880-00
formatCpf('746506880', { pad: true }); // 007.465.068-80
```
### Response
#### Success Response (200)
- **string**: The formatted CPF.
#### Response Example
```json
{
"formattedCpf": "746.506.880-00"
}
```
```
```APIDOC
## parseCpf
### Description
Remove CPF formatting, keep only digits, and cap the result to 11 digits.
### Method
`parseCpf(cpf: string): string`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```javascript
import { parseCpf } from '@brazilian-utils/brazilian-utils';
parseCpf('746.506.880-00'); // 74650688000
```
### Response
#### Success Response (200)
- **string**: The parsed CPF with only digits.
#### Response Example
```json
{
"parsedCpf": "74650688000"
}
```
```
```APIDOC
## generateCpf
### Description
Generate a valid random CPF.
### Method
`generateCpf(): string`
### Parameters
None
### Request Example
```javascript
import { generateCpf } from '@brazilian-utils/brazilian-utils'
generateCpf();
```
### Response
#### Success Response (200)
- **string**: A valid random CPF.
#### Response Example
```json
{
"generatedCpf": "12345678900"
}
```
```
--------------------------------
### Fetch CEPs from Address using ViaCEP
Source: https://github.com/brazilian-utils/javascript/blob/main/docs/utilities.md
Use this function to retrieve CEP (Brazilian postal code) information based on address details. Requires an asynchronous context.
```javascript
import { getCepInfoByAddress } from '@brazilian-utils/brazilian-utils';
const ceps = await getCepInfoByAddress({
federalUnit: 'SP',
city: 'Sao Paulo',
street: 'Avenida Paulista'
});
// [
// {
// cep: '01310100',
// logradouro: 'Avenida Paulista',
// complemento: 'lado par',
// bairro: 'Bela Vista',
// localidade: 'São Paulo',
// uf: 'SP'
// }
// ]
```