UNPKG

@eleva-io/erp-sdk

Version:

SDK oficial para el ERP de Eleva

225 lines (173 loc) 4.91 kB
# 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 ```