npm package: @orcamentus/api-sdk
Description: SDK TypeScript para a API Orcamentus
Author: Santi
Latest version: 0.1.0

# @orcamentus/api-sdk

SDK TypeScript oficial para a API Orcamentus, reorganizado para melhorar a manutenibilidade e legibilidade do código.

## 📦 Instalação

```bash
npm install @orcamentus/api-sdk
# ou
yarn add @orcamentus/api-sdk
# ou
pnpm add @orcamentus/api-sdk
```

## 🏗️ Estrutura do Projeto

Este SDK foi reorganizado para separar os diferentes tipos de conteúdo em arquivos específicos, melhorando a organização e manutenibilidade.

### 📁 **Arquivos Principais:**

#### **`types.ts` (7.1KB)**
Contém todas as interfaces TypeScript do SDK:
- `IClient` - Interface principal do cliente
- `IAuthResponse`, `ILoginRequest`, etc. - Interfaces de autenticação
- `ICriarOrcamentoRequest`, `IVeiculoDto`, etc. - Interfaces de orçamentos
- `IEmpresaFornecedoraDto`, `IClienteDto`, etc. - Interfaces de usuários

#### **`enums.ts` (637B)**
Contém todos os enums do sistema:
- `CategoriaAtuacaoEnum` - Categorias de atuação das empresas
- `PlanoTipoEnum` - Tipos de planos disponíveis
- `TipoItemEnum` - Tipos de itens de orçamento
- `TipoUsuarioEnum` - Tipos de usuários

#### **`models.ts` (30KB)**
Contém todas as classes de modelo que implementam as interfaces:
- `AuthResponse`, `LoginRequest`, etc. - Modelos de autenticação
- `CriarOrcamentoRequest`, `VeiculoDto`, etc. - Modelos de orçamentos
- `EmpresaFornecedoraDto`, `ClienteDto`, etc. - Modelos de usuários

#### **`utils.ts` (1.3KB)**
Contém funções e classes utilitárias:
- `ApiException` - Classe para exceções da API
- `throwException` - Função para lançar exceções
- `isAxiosError` - Função para verificar erros do Axios

#### **`sdk.ts` (44KB)**
Contém a implementação principal do cliente HTTP:
- Classe `Client` com todos os métodos da API
- Lógica de requisições HTTP usando Axios
- Processamento de respostas e tratamento de erros

#### **`index.ts` (541B)**
Arquivo de índice principal que exporta tudo:
- Exporta a classe `Client` como exportação principal
- Re-exporta todos os tipos, enums, modelos e utilitários

## 🚀 Como Usar

### **Importação Principal (Recomendada)**
```typescript
import { Client, AuthResponse, LoginRequest } from '@orcamentus/api-sdk';

// Criar instância do cliente
const client = new Client('https://api.orcamentus.com');

// Fazer login
const authResponse = await client.login({
  email: 'usuario@exemplo.com',
  senha: 'senha123'
});
```

### **Importação Específica por Arquivo**
```typescript
import { Client } from '@orcamentus/api-sdk';
import type { IClient } from '@orcamentus/api-sdk/types';
import { CategoriaAtuacaoEnum } from '@orcamentus/api-sdk/enums';
import { EmpresaFornecedoraDto } from '@orcamentus/api-sdk/models';
import { ApiException } from '@orcamentus/api-sdk/utils';
```

### **Importação Tradicional (mantida para compatibilidade)**
```typescript
import { Client, AuthResponse, LoginRequest } from '@orcamentus/api-sdk/sdk';
```

## 🔧 Desenvolvimento

### **Scripts Disponíveis**
```bash
# Instalar dependências
npm install

# Verificar tipos (sem compilação)
npm run type-check

# Compilar o projeto
npm run build

# Compilar em modo watch
npm run build:watch

# Limpar pasta dist
npm run clean
```

### **Configuração TypeScript**
O projeto usa TypeScript com configuração otimizada:
- **Target**: ES2022
- **Module**: CommonJS
- **Strict Mode**: Desabilitado para compatibilidade
- **Skip Lib Check**: Habilitado para evitar conflitos com Axios

## 📊 Benefícios da Reorganização

1. **📖 Melhor Legibilidade**: Cada arquivo tem uma responsabilidade específica
2. **🔧 Facilita Manutenção**: Alterações em tipos não afetam a lógica do cliente
3. **📦 Melhor Organização**: Separação clara entre tipos, implementações e utilitários
4. **🔄 Compatibilidade**: Mantém a mesma API pública através do `index.ts`
5. **📏 Arquivos Menores**: Cada arquivo tem um tamanho mais gerenciável

## 📈 Tamanhos dos Arquivos

- **Antes**: 1 arquivo de 82KB (`sdk.ts`)
- **Depois**: 6 arquivos organizados por responsabilidade
  - `sdk.ts`: 44KB (cliente HTTP)
  - `models.ts`: 30KB (modelos)
  - `types.ts`: 7.1KB (interfaces)
  - `utils.ts`: 1.3KB (utilitários)
  - `enums.ts`: 637B (enums)
  - `index.ts`: 541B (índice)

## 🌟 Características

- **TypeScript First**: Desenvolvido 100% em TypeScript
- **Axios Integration**: Usa Axios para requisições HTTP
- **Auto-generated**: Baseado em código gerado pelo NSwag
- **Modular**: Estrutura organizada e modular
- **Backward Compatible**: Mantém compatibilidade com versões anteriores

## 📝 Licença

MIT License - veja o arquivo [LICENSE](LICENSE) para detalhes.

## 🤝 Contribuição

Contribuições são bem-vindas! Por favor, leia as [diretrizes de contribuição](CONTRIBUTING.md) antes de submeter um pull request.

## 📞 Suporte

Para suporte e dúvidas:
- Abra uma [issue](https://github.com/orcamentus/api-sdk/issues)
- Entre em contato com a equipe de desenvolvimento

---

**Desenvolvido com ❤️ pela equipe Orcamentus**