@empleado-juan/commons 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,169 @@
1
+ # @empleado-juan/commons
2
+
3
+ [![npm version](https://badge.fury.io/js/%40empleado-juan%2Fcommons.svg)](https://www.npmjs.com/package/@empleado-juan/commons)
4
+
5
+ Paquete de código compartido entre frontend y backend para el sistema Empleado Juan Control.
6
+
7
+ ## Instalación
8
+
9
+ ```bash
10
+ npm install @empleado-juan/commons
11
+ ```
12
+
13
+ ## Características
14
+
15
+ - ✅ **TypeScript**: Tipos completamente tipados
16
+ - ✅ **Tree-shakeable**: Solo importa lo que necesitas
17
+ - ✅ **Zero dependencies**: No trae dependencias extra
18
+ - ✅ **ESM + CommonJS**: Compatible con ambos formatos
19
+
20
+ ## Contenido
21
+
22
+ ### 📦 Types
23
+
24
+ Interfaces TypeScript compartidas:
25
+
26
+ ```typescript
27
+ import type {
28
+ AttendanceRecord,
29
+ EmployeeData,
30
+ LicenseStatus,
31
+ EventMessage,
32
+ HeartbeatMetrics
33
+ } from '@empleado-juan/commons';
34
+
35
+ // Ejemplo de uso
36
+ const attendance: AttendanceRecord = {
37
+ id: '123',
38
+ employeeId: 'emp-456',
39
+ timestamp: new Date(),
40
+ eventType: 'CHECK_IN',
41
+ branchId: 'branch-1'
42
+ };
43
+ ```
44
+
45
+ ### 🏷️ Enums
46
+
47
+ Enumeraciones del dominio:
48
+
49
+ ```typescript
50
+ import {
51
+ AttendanceEventType,
52
+ PaymentType,
53
+ LicenseValidationReason,
54
+ MessageBrokerType
55
+ } from '@empleado-juan/commons';
56
+
57
+ // Ejemplo de uso
58
+ if (record.eventType === AttendanceEventType.CHECK_IN) {
59
+ console.log('Empleado ingresó');
60
+ }
61
+
62
+ const paymentType = PaymentType.BIWEEKLY;
63
+ ```
64
+
65
+ **Enums disponibles**:
66
+ - `AttendanceEventType`: CHECK_IN, CHECK_OUT, BREAK_START, BREAK_END, etc.
67
+ - `PaymentType`: MONTHLY, BIWEEKLY, WEEKLY
68
+ - `ContractType`: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY
69
+ - `LicenseValidationReason`: VALID, EXPIRED, INVALID, etc.
70
+ - `MessageBrokerType`: RABBITMQ, KAFKA, SQS
71
+
72
+ ### 🔧 Constants
73
+
74
+ Constantes del sistema:
75
+
76
+ ```typescript
77
+ import { LICENSE_CONSTANTS } from '@empleado-juan/commons';
78
+
79
+ // Ejemplo de uso
80
+ const cacheTTL = LICENSE_CONSTANTS.CACHE_TTL; // 5 minutos
81
+ const gracePeriod = LICENSE_CONSTANTS.GRACE_PERIOD; // 24 horas
82
+ ```
83
+
84
+ ### 📡 Event Topics
85
+
86
+ Definición de eventos del sistema:
87
+
88
+ ```typescript
89
+ import { EVENT_TOPICS } from '@empleado-juan/commons';
90
+
91
+ // Ejemplo de uso
92
+ const topic = EVENT_TOPICS.ATTENDANCE_CREATED; // 'attendance-created'
93
+ const empTopic = EVENT_TOPICS.EMPLOYEE_UPDATED; // 'employee-updated'
94
+ ```
95
+
96
+ **Topics disponibles**:
97
+ - `ATTENDANCE_CREATED`, `ATTENDANCE_UPDATED`
98
+ - `EMPLOYEE_CREATED`, `EMPLOYEE_UPDATED`, `EMPLOYEE_DELETED`
99
+ - `COMPENSATION_CREATED`, `COMPENSATION_UPDATED`
100
+ - `SCHEDULE_CREATED`, `SCHEDULE_UPDATED`
101
+
102
+ ## Ejemplos de Uso
103
+
104
+ ### Frontend (React/Next.js)
105
+
106
+ ```typescript
107
+ import { AttendanceEventType, type EmployeeData } from '@empleado-juan/commons';
108
+
109
+ function EmployeeCard({ employee }: { employee: EmployeeData }) {
110
+ return (
111
+ <div>
112
+ <h3>{employee.firstName} {employee.lastName}</h3>
113
+ <p>Status: {employee.isActive ? 'Activo' : 'Inactivo'}</p>
114
+ </div>
115
+ );
116
+ }
117
+ ```
118
+
119
+ ### Backend (Node.js)
120
+
121
+ ```typescript
122
+ import { EVENT_TOPICS, type EventMessage } from '@empleado-juan/commons';
123
+
124
+ async function publishEvent(topic: string, data: any) {
125
+ const message: EventMessage = {
126
+ key: data.id,
127
+ value: data,
128
+ headers: {
129
+ 'event-type': topic,
130
+ 'timestamp': new Date().toISOString()
131
+ }
132
+ };
133
+
134
+ await messageQueue.send(EVENT_TOPICS.EMPLOYEE_CREATED, message);
135
+ }
136
+ ```
137
+
138
+ ## Desarrollo
139
+
140
+ ### Setup
141
+
142
+ ```bash
143
+ git clone <repo>
144
+ cd commons
145
+ npm install
146
+ ```
147
+
148
+ ### Build
149
+
150
+ ```bash
151
+ npm run build
152
+ ```
153
+
154
+ ### Publish
155
+
156
+ ```bash
157
+ # Incrementar versión
158
+ npm version patch|minor|major
159
+
160
+ # Compilar
161
+ npm run build
162
+
163
+ # Publicar
164
+ npm publish --access public
165
+ ```
166
+
167
+ ## License
168
+
169
+ MIT © Empleado Juan Team
@@ -34,6 +34,7 @@ export declare enum ContractType {
34
34
  export declare enum PayrollFrequency {
35
35
  WEEKLY = "WEEKLY",
36
36
  BIWEEKLY = "BIWEEKLY",
37
+ QUINCENAL = "QUINCENAL",
37
38
  MONTHLY = "MONTHLY"
38
39
  }
39
40
  export declare enum UserRole {
@@ -64,6 +65,7 @@ export declare enum ShiftType {
64
65
  }
65
66
  export declare enum DayType {
66
67
  WORK = "WORK",
68
+ HALF_DAY = "HALF_DAY",
67
69
  REST = "REST",
68
70
  HOLIDAY = "HOLIDAY"
69
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,oBAAY,mBAAmB;IAC7B,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;CACxB;AAGD,oBAAY,UAAU;IACpB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAGD,oBAAY,cAAc;IACxB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAGD,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAGD,oBAAY,YAAY;IACtB,UAAU,eAAe;IACzB,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,WAAW,gBAAgB;CAC5B;AAGD,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAGD,oBAAY,QAAQ;IAClB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAGD,oBAAY,kBAAkB;IAC5B,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAGD,oBAAY,uBAAuB;IACjC,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,sBAAsB,2BAA2B;IACjD,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;CAC9C;AAGD,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAGD,oBAAY,OAAO;IACjB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAGD,oBAAY,iBAAiB;IAC3B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,GAAG,QAAQ;CACZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,oBAAY,mBAAmB;IAC7B,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;CACxB;AAGD,oBAAY,UAAU;IACpB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAGD,oBAAY,cAAc;IACxB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAGD,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAGD,oBAAY,YAAY;IACtB,UAAU,eAAe;IACzB,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,WAAW,gBAAgB;CAC5B;AAGD,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAGD,oBAAY,QAAQ;IAClB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAGD,oBAAY,kBAAkB;IAC5B,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAGD,oBAAY,uBAAuB;IACjC,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,sBAAsB,2BAA2B;IACjD,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;CAC9C;AAGD,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAGD,oBAAY,OAAO;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAGD,oBAAY,iBAAiB;IAC3B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,GAAG,QAAQ;CACZ"}
@@ -46,6 +46,7 @@ export var PayrollFrequency;
46
46
  (function (PayrollFrequency) {
47
47
  PayrollFrequency["WEEKLY"] = "WEEKLY";
48
48
  PayrollFrequency["BIWEEKLY"] = "BIWEEKLY";
49
+ PayrollFrequency["QUINCENAL"] = "QUINCENAL";
49
50
  PayrollFrequency["MONTHLY"] = "MONTHLY";
50
51
  })(PayrollFrequency || (PayrollFrequency = {}));
51
52
  // User Roles
@@ -86,6 +87,7 @@ export var ShiftType;
86
87
  export var DayType;
87
88
  (function (DayType) {
88
89
  DayType["WORK"] = "WORK";
90
+ DayType["HALF_DAY"] = "HALF_DAY";
89
91
  DayType["REST"] = "REST";
90
92
  DayType["HOLIDAY"] = "HOLIDAY";
91
93
  })(DayType || (DayType = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empleado-juan/commons",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Shared code between frontend and backend services",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -46,6 +46,7 @@ export enum ContractType {
46
46
  export enum PayrollFrequency {
47
47
  WEEKLY = 'WEEKLY',
48
48
  BIWEEKLY = 'BIWEEKLY',
49
+ QUINCENAL = 'QUINCENAL',
49
50
  MONTHLY = 'MONTHLY',
50
51
  }
51
52
 
@@ -86,6 +87,7 @@ export enum ShiftType {
86
87
  // Day Types
87
88
  export enum DayType {
88
89
  WORK = 'WORK',
90
+ HALF_DAY = 'HALF_DAY',
89
91
  REST = 'REST',
90
92
  HOLIDAY = 'HOLIDAY',
91
93
  }