npm package: @prodepa/utilities
Description: Pacote de utilitários desenvolvido pela PRODEPA (Empresa de Tecnologia da Informação e Comunicação do Pará)
Latest version: 1.0.0

# Utilities

## Propósito

O projeto “Utilities” desenvolvido pela PRODEPA (Empresa de Tecnologia da Informação e Comunicação do Pará) tem como finalidade disponibilizar uma melhor agilidade na produção de softwares, desenvolvendo assim utilitários que irão auxiliar os desenvolvedores a ter maior praticidade no momento do desenvolvimento.

## Instalação

Para adicionar “Utilities” ao seu projeto, você precisa ter um gerenciador de pacotes para que ele consiga baixar e instalar o utilitário. Dependendo do seu gerenciador de pacotes, o código pode ser:

- `npm install @prodepa/Utilities`

- `pnpm install @prodepa/Utilities`

- `yarn add @prodepa/Utilities`

## Features

O projeto “Utilities” disponibiliza algumas funcionalidades para auxiliar no desenvolvimento de softwares, sendo algumas delas:

### Validadores

#### CPF

##### Como funciona?

O método “cpf” pertence à classe “Validations”, esse método recebe uma propriedade chamada “cpf” que é do tipo “string”, o método vai fazer o processamento e vai retornar ao final um boolean, onde, “true”, significa que o CPF é válido e “false” significa que o CPF não é válido.

##### Parâmetros

- **cpf**:
  - Type: `String`;
  - Required: `true`;
  - Descrição: Parametro com o cpf, informado pelo usuário, para validação;

##### Exemplo

```
import { validations } from "@prodepa/utilities"

validations.cpf("xxx.xxx.xxx-xx")
```

#### Email

##### Como funciona?

A validação de email acontece a partir do processamento de dois parâmetros passados para o método "email" da classe "Validations". No método acontece uma série de verificações, incluindo expressão regular, ao final das verificações um valor booleano é retornado pelo método.

##### Parâmetros

- **email**:
  - Type: `String`;
  - Required: `true`
  - Descrição: Email que vai passar pela validação;
- **options**:
  - Type: Object;
  - Required: `false`;
    - includes:
      - Type: `String`;
      - Required: `false`;
      - Descrição: Verificação se o email possui a string informada nesta propriedade;

##### Exemplo

```
import { validations } from "@prodepa/utilities"

validations.email(
  "example@email.com",
  {
    includes: "email.com"
  }
)
```

<hr/>

### Formatadores

#### Data

##### Como funciona?

Data é um método de Formatters, esse método recebe alguns parâmetros que farão a formatação da data e retorna de acordo com a configurações passadas pelos parâmetros.

##### Parâmetros

- **date**:
  - Type: `Date` ou `String`;
  - Required: `true`
  - Descrição: A propriedade mais importante da função, a qual você vai passar a data a qual o formatador deve fazer a formatação;
- **dateTimeFormat**:
  - Type: Object;
    - locale:
      - Type: `String`;
      - Default: `"pt-BR"`
      - Required: `false`;
    - options?:
      - Type: `Intl.DateTimeFormatOptions`;
      - Default: {
        timeZone: `UTC`
      }
      - Required: `false`;

##### Exemplo

```
import { formatters } from "@prodepa/utilities"

formatters.date(
  new Date() or `2024-05-22`,
  {
    locale: "pt-BR",
    options: {
      dateStyle: "full"
    }
  }
)
```

#### Money

##### Como funciona?

Money é um método de Formatters, esse método recebe alguns parâmetros que farão as formatações das moedas e retornarão de acordo com a configurações passadas pelos parâmetros.

##### Parâmetros

- **money**:
  - Type: `Number`;
  - Required: `true`
  - Descrição: Numero que deve ser convertido para uma moeda;
- **moneyOptions**:
  - Type: Object;
    - locale:
      - Type: `String`;
      - Default: `"pt-BR"`
      - Required: `false`;
    - options:
      - Type: `Intl.NumberFormatOptions`;
      - Required: `false`;

##### Exemplo

```
import { formatters } from "@prodepa/utilities"


formatters.money(
  9570, // Numero de exemplo para o parâmetro money
  { // Configuração padrão
    locale: "pt-BR",
    options: {
      style: "currency",
      currency: "BRL"
    }
  }
)
```

#### CNPJ

##### Como funciona?

Formatação de CNPJ é um método de formatters que irá aplicar regras de formatação de CNPJ, aplicando aos 14 dígitos a separação devida através de uma expressão regular.

##### Parâmetros

- **cnpj**:
  - Type: `String`;
  - Required: `true`
  - Descrição: String que contém o CNPJ de forma pura que vai ser formatado para ter a devida pontuação;

##### Exemplo

```
import { formatters } from "@prodepa/utilities"


formatters.cnpj('01234567891234') // return: 01.234.567/8912-34
```