@eleva-io/erp-sdk
Version:
SDK oficial para el ERP de Eleva
225 lines (173 loc) • 4.91 kB
Markdown
# ERP SDK - Eleva
SDK oficial para el ERP de Eleva que funciona tanto en navegador como en Node.js.
## Instalación
```bash
npm install @eleva-io/erp-sdk
# o
yarn add @eleva-io/erp-sdk
# o
pnpm add @eleva-io/erp-sdk
```
## Uso
### En Node.js (CommonJS)
```javascript
const { ERPClient } = require('@eleva-io/erp-sdk');
const client = new ERPClient({
baseURL: 'https://api.eleva.io',
apiKey: 'your-api-key',
apiSecret: 'your-api-secret'
});
// O usando token
const client = new ERPClient({
baseURL: 'https://api.eleva.io',
token: 'your-token'
});
```
### En Node.js (ESM)
```javascript
import { ERPClient } from '@eleva-io/erp-sdk';
const client = new ERPClient({
baseURL: 'https://api.eleva.io',
apiKey: 'your-api-key',
apiSecret: 'your-api-secret'
});
```
### En el navegador
```javascript
import { ERPClient } from '@eleva-io/erp-sdk';
const client = new ERPClient({
baseURL: 'https://api.eleva.io',
apiKey: 'your-api-key',
apiSecret: 'your-api-secret'
});
```
## Características
- ✅ Compatible con navegador y Node.js
- ✅ Soporte para CommonJS y ESM
- ✅ Tipado completo con TypeScript
- ✅ Manejo automático de autenticación
- ✅ Subida de archivos compatible con ambos entornos
- ✅ Descarga de archivos binarios
- ✅ Estructura de módulos limpia y organizada
- ✅ Imports resueltos correctamente para distribución
## Autenticación
La librería soporta dos métodos de autenticación:
### API Key + Secret
```javascript
const client = new ERPClient({
baseURL: 'https://api.eleva.io',
apiKey: 'your-api-key',
apiSecret: 'your-api-secret'
});
```
### Token Bearer
```javascript
const client = new ERPClient({
baseURL: 'https://api.eleva.io',
token: 'your-bearer-token'
});
```
## Ejemplos
### Trabajar con documentos
```javascript
// Subir un archivo
const document = await client.horizontal().communities('community-id').documents().create({
fileName: 'document.pdf',
fileData: fileBuffer // Buffer en Node.js o Uint8Array en navegador
});
// Descargar un archivo
const fileData = await client.horizontal().communities('community-id').documents().download('document-id');
```
### Trabajar con tareas
```javascript
// Crear una tarea con adjunto
const task = await client.ticketing().tasks().create({
title: 'Nueva tarea',
description: 'Descripción de la tarea',
// ... otros campos
});
// Agregar un comentario con archivo adjunto
await client.ticketing().tasks().conversations().create(task.id, {
message: 'Comentario con archivo',
attachment: {
fileName: 'archivo.pdf',
fileData: fileBuffer
}
});
```
### Importar tipos específicos
```typescript
// Importar tipos de recibos
import {
ReceiptDetail,
ReceiptStatus,
ReceiptCurrency,
Receipt,
CreateReceiptDTO
} from '@eleva-io/erp-sdk'
// Importar tipos de documentos
import {
Document,
DocumentStatus,
CreateDocumentDTO
} from '@eleva-io/erp-sdk'
// Importar tipos de tareas
import {
TicketingTask,
TicketingTaskStatus,
CreateTicketingTaskDTO
} from '@eleva-io/erp-sdk'
// Importar tipos de utilidades
import {
PaginatedResponse,
CrossPlatformBuffer,
CrossPlatformFile
} from '@eleva-io/erp-sdk'
```
## Estructura de Módulos
La librería utiliza una estructura de módulos duales para máxima compatibilidad:
```
dist/
├── cjs/ # CommonJS (Node.js tradicional)
└── esm/ # ESM (Navegadores y Node.js moderno)
```
- **CommonJS**: Para `require()` en Node.js
- **ESM**: Para `import` en navegadores y Node.js moderno
## Resolución de Imports
La librería utiliza rutas relativas para todos los imports internos, lo que garantiza que funcione correctamente cuando se instala como dependencia.
### Proceso de Build
1. **Compilación TypeScript**: Genera archivos JavaScript con imports relativos
2. **Dual Output**: Genera tanto CommonJS como ESM sin necesidad de procesamiento adicional
### Ventajas de la Estructura Actual
- ✅ **Sin dependencias adicionales**: No requiere `tsc-alias` ni herramientas externas
- ✅ **Build más rápido**: Proceso de compilación simplificado
- ✅ **Menos complejidad**: Configuración más simple y mantenible
- ✅ **Compatibilidad total**: Funciona en todos los entornos sin problemas
## Compatibilidad
- **Node.js**: >= 16
- **Navegadores**: Todos los navegadores modernos que soporten ES2022
- **TypeScript**: >= 4.9
## Desarrollo
```bash
# Instalar dependencias
pnpm install
# Compilar
pnpm build
# Ejecutar tests
pnpm test
# Linting
pnpm lint
```
## Estructura del Proyecto
```
src/
├── utils/
│ ├── compatibility.ts # Utilidades cross-platform
│ ├── http.ts # Cliente HTTP
│ └── ...
├── modules/
│ ├── horizontal/ # Módulo horizontal
│ ├── ticketing/ # Módulo de tareas
│ └── ...
└── erp.ts # Cliente principal
```