@empleado-juan/commons
v1.0.4
Published
Shared code between frontend and backend services
Maintainers
Readme
@empleado-juan/commons
Paquete de código compartido entre frontend y backend para el sistema Empleado Juan Control.
Instalación
npm install @empleado-juan/commonsCaracterísticas
- ✅ TypeScript: Tipos completamente tipados
- ✅ Tree-shakeable: Solo importa lo que necesitas
- ✅ Zero dependencies: No trae dependencias extra
- ✅ ESM + CommonJS: Compatible con ambos formatos
Contenido
📦 Types
Interfaces TypeScript compartidas:
import type {
AttendanceRecord,
EmployeeData,
LicenseStatus,
EventMessage,
HeartbeatMetrics
} from '@empleado-juan/commons';
// Ejemplo de uso
const attendance: AttendanceRecord = {
id: '123',
employeeId: 'emp-456',
timestamp: new Date(),
eventType: 'CHECK_IN',
branchId: 'branch-1'
};🏷️ Enums
Enumeraciones del dominio:
import {
AttendanceEventType,
PaymentType,
LicenseValidationReason,
MessageBrokerType
} from '@empleado-juan/commons';
// Ejemplo de uso
if (record.eventType === AttendanceEventType.CHECK_IN) {
console.log('Empleado ingresó');
}
const paymentType = PaymentType.BIWEEKLY;Enums disponibles:
AttendanceEventType: CHECK_IN, CHECK_OUT, BREAK_START, BREAK_END, etc.PaymentType: MONTHLY, BIWEEKLY, WEEKLYContractType: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARYLicenseValidationReason: VALID, EXPIRED, INVALID, etc.MessageBrokerType: RABBITMQ, KAFKA, SQS
🔧 Constants
Constantes del sistema:
import { LICENSE_CONSTANTS } from '@empleado-juan/commons';
// Ejemplo de uso
const cacheTTL = LICENSE_CONSTANTS.CACHE_TTL; // 5 minutos
const gracePeriod = LICENSE_CONSTANTS.GRACE_PERIOD; // 24 horas📡 Event Topics
Definición de eventos del sistema:
import { EVENT_TOPICS } from '@empleado-juan/commons';
// Ejemplo de uso
const topic = EVENT_TOPICS.ATTENDANCE_CREATED; // 'attendance-created'
const empTopic = EVENT_TOPICS.EMPLOYEE_UPDATED; // 'employee-updated'Topics disponibles:
ATTENDANCE_CREATED,ATTENDANCE_UPDATEDEMPLOYEE_CREATED,EMPLOYEE_UPDATED,EMPLOYEE_DELETEDCOMPENSATION_CREATED,COMPENSATION_UPDATEDSCHEDULE_CREATED,SCHEDULE_UPDATED
Ejemplos de Uso
Frontend (React/Next.js)
import { AttendanceEventType, type EmployeeData } from '@empleado-juan/commons';
function EmployeeCard({ employee }: { employee: EmployeeData }) {
return (
<div>
<h3>{employee.firstName} {employee.lastName}</h3>
<p>Status: {employee.isActive ? 'Activo' : 'Inactivo'}</p>
</div>
);
}Backend (Node.js)
import { EVENT_TOPICS, type EventMessage } from '@empleado-juan/commons';
async function publishEvent(topic: string, data: any) {
const message: EventMessage = {
key: data.id,
value: data,
headers: {
'event-type': topic,
'timestamp': new Date().toISOString()
}
};
await messageQueue.send(EVENT_TOPICS.EMPLOYEE_CREATED, message);
}Desarrollo
Setup
git clone <repo>
cd commons
npm installBuild
npm run buildPublish
# Incrementar versión
npm version patch|minor|major
# Compilar
npm run build
# Publicar
npm publish --access publicLicense
MIT © Empleado Juan Team
