apacuana-sdk-core 0.5.0 → 0.6.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.
Files changed (55) hide show
  1. package/README.md +128 -55
  2. package/babel.config.cjs +11 -0
  3. package/coverage/clover.xml +179 -170
  4. package/coverage/coverage-final.json +8 -8
  5. package/coverage/lcov-report/api/index.html +131 -0
  6. package/coverage/lcov-report/api/signatures.js.html +1093 -0
  7. package/coverage/lcov-report/api/users.js.html +292 -0
  8. package/coverage/lcov-report/config/index.html +116 -0
  9. package/coverage/lcov-report/config/index.js.html +208 -0
  10. package/coverage/lcov-report/errors/index.html +116 -0
  11. package/coverage/lcov-report/errors/index.js.html +148 -0
  12. package/coverage/lcov-report/index.html +26 -26
  13. package/coverage/lcov-report/src/api/certs.js.html +65 -35
  14. package/coverage/lcov-report/src/api/index.html +27 -27
  15. package/coverage/lcov-report/src/api/revocations.js.html +21 -3
  16. package/coverage/lcov-report/src/api/signatures.js.html +123 -18
  17. package/coverage/lcov-report/src/api/users.js.html +24 -3
  18. package/coverage/lcov-report/src/config/index.html +1 -1
  19. package/coverage/lcov-report/src/config/index.js.html +1 -1
  20. package/coverage/lcov-report/src/errors/index.html +1 -1
  21. package/coverage/lcov-report/src/errors/index.js.html +8 -8
  22. package/coverage/lcov-report/src/index.html +1 -1
  23. package/coverage/lcov-report/src/index.js.html +9 -3
  24. package/coverage/lcov-report/src/utils/constant.js.html +3 -3
  25. package/coverage/lcov-report/src/utils/helpers.js.html +134 -32
  26. package/coverage/lcov-report/src/utils/httpClient.js.html +6 -72
  27. package/coverage/lcov-report/src/utils/index.html +20 -20
  28. package/coverage/lcov-report/utils/constant.js.html +145 -0
  29. package/coverage/lcov-report/utils/httpClient.js.html +646 -0
  30. package/coverage/lcov-report/utils/index.html +131 -0
  31. package/coverage/lcov.info +335 -298
  32. package/dist/api/certs.d.ts +17 -3
  33. package/dist/api/revocations.d.ts +17 -2
  34. package/dist/api/signatures.d.ts +18 -1
  35. package/dist/api/users.d.ts +22 -6
  36. package/dist/index.d.ts +4 -0
  37. package/dist/index.js +616 -242
  38. package/dist/index.js.map +1 -1
  39. package/dist/index.mjs +616 -242
  40. package/dist/index.mjs.map +1 -1
  41. package/dist/utils/helpers.d.ts +3 -1
  42. package/jest.config.cjs +6 -1
  43. package/package.json +12 -7
  44. package/rollup.config.js +1 -1
  45. package/src/api/certs.js +21 -11
  46. package/src/api/revocations.js +7 -1
  47. package/src/api/signatures.js +43 -8
  48. package/src/api/users.js +8 -1
  49. package/src/index.js +3 -1
  50. package/src/utils/constant.js +2 -2
  51. package/src/utils/helpers.js +56 -22
  52. package/src/utils/httpClient.js +0 -22
  53. package/tests/api/certs.test.js +30 -48
  54. package/tsconfig.json +2 -1
  55. package/.babelrc +0 -3
package/README.md CHANGED
@@ -51,7 +51,7 @@ Inicializa el SDK con la configuración proporcionada.
51
51
 
52
52
  **Retorna:**
53
53
 
54
- - Promise que se resuelve cuando la inicialización es exitosa
54
+ - `Promise<boolean>` que se resuelve a `true` cuando la inicialización es exitosa.
55
55
 
56
56
  **Ejemplo:**
57
57
 
@@ -79,7 +79,7 @@ Obtiene la configuración actual del SDK.
79
79
 
80
80
  **Retorna:**
81
81
 
82
- - Object: Configuración actual del SDK
82
+ - `Object`: Configuración actual del SDK
83
83
 
84
84
  **Ejemplo:**
85
85
 
@@ -92,11 +92,11 @@ console.log("Configuración actual:", config);
92
92
 
93
93
  Obtiene la información del cliente utilizando los datos de configuración.
94
94
 
95
- **Parámetros:** Ninguno (utiliza verificationId y customerId de la configuración)
95
+ **Parámetros:** Ninguno (utiliza `verificationId` y `customerId` de la configuración)
96
96
 
97
97
  **Retorna:**
98
98
 
99
- - Promise que se resuelve con un objeto que contiene:
99
+ - `Promise<GetCustomerResponse>` que se resuelve con un objeto que contiene:
100
100
  - `token` (String): ID de sesión para autenticación.
101
101
  - `userData` (Object): Datos del usuario.
102
102
  - `success` (Boolean): Indicador de éxito de la operación.
@@ -135,7 +135,7 @@ Si alguna de estas validaciones falla, la función lanzará una `ApacuanaAPIErro
135
135
 
136
136
  **Retorna:**
137
137
 
138
- - `Promise` que se resuelve con un objeto que contiene:
138
+ - `Promise<GenerateCertResponse>` que se resuelve con un objeto que contiene:
139
139
  - `cert` (String): El certificado generado.
140
140
  - `success` (Boolean): Indicador de éxito de la operación.
141
141
 
@@ -163,11 +163,13 @@ try {
163
163
 
164
164
  Obtiene el estado actual del certificado del usuario.
165
165
 
166
- **Parámetros:** Ninguno (utiliza la configuración previa y datos del usuario)
166
+ **Parámetros:**
167
+
168
+ - `isCertificateInDevice` (Boolean, opcional): Indica si el certificado ya se encuentra en el dispositivo. Por defecto es `false`.
167
169
 
168
170
  **Retorna:**
169
171
 
170
- - Un objeto que contiene:
172
+ - `GetCertStatusResponse`: Un objeto que contiene:
171
173
  - `status` (String): El estado del certificado (ver sección de Estados de Certificado).
172
174
  - `success` (Boolean): Indicador de éxito de la operación.
173
175
 
@@ -186,39 +188,67 @@ try {
186
188
 
187
189
  ### signDocument(signData)
188
190
 
189
- Esta función está actualmente deshabilitada y lanzará un error si se invoca.
191
+ Firma un documento utilizando un certificado digital y un digest previamente firmado. Esta función es compatible únicamente con el flujo de integración `ONBOARDING`.
190
192
 
191
193
  **Parámetros:**
192
194
 
193
- - `signData` (Object): Datos para la firma.
195
+ - `signData` (`SignDocumentData`): Un objeto que contiene los datos necesarios para la firma.
196
+ - `signature` (Object): Objeto con información de la firma.
197
+ - `id` (String): ID de la firma.
198
+ - `positions` (Array<Object>): Posiciones de la firma en el documento.
199
+ - `cert` (String): El certificado del firmante en formato base64.
200
+ - `signedDigest` (String): El digest del documento, ya firmado.
194
201
 
195
202
  **Retorna:**
196
203
 
197
- - `Promise<void>`
204
+ - `Promise<object>`: Una promesa que se resuelve con la respuesta de la API tras completar la firma.
198
205
 
199
206
  **Posibles `ApacuanaAPIError`:**
200
207
 
201
- - `NOT_IMPLEMENTED`: La función no está implementada para el tipo de integración.
208
+ - `NOT_IMPLEMENTED`: Si se invoca con un `integrationType` diferente a `ONBOARDING`.
209
+ - `INVALID_PARAMETER`: Si los datos en `signData` son incorrectos o están incompletos.
210
+
211
+ **Ejemplo:**
212
+
213
+ ```javascript
214
+ const signData = {
215
+ signature: {
216
+ id: "unique-signature-id",
217
+ positions: [{ page: 1, x: 0.5, y: 0.8 }],
218
+ },
219
+ cert: "base64-encoded-certificate",
220
+ signedDigest: "signed-digest-of-the-document",
221
+ };
222
+
223
+ try {
224
+ const response = await apacuana.signDocument(signData);
225
+ console.log("Documento firmado exitosamente:", response);
226
+ } catch (error) {
227
+ console.error("Error al firmar el documento:", error.message);
228
+ }
229
+ ```
202
230
 
203
231
  ### getDigest(signData)
204
232
 
205
- Obtiene el digest de un documento que se va a firmar.
233
+ Obtiene el `digest` de un documento que se va a firmar. Este `digest` es un resumen criptográfico del documento que luego debe ser firmado por el cliente.
206
234
 
207
- - **Parámetros:**
235
+ **Parámetros:**
208
236
 
209
- - `signData` (Object): Objeto que contiene los datos para la firma.
210
- - `cert` (String): Certificado en formato PEM.
211
- - `signatureId` (String): Identificador único de la firma.
237
+ - `signData` (`GetDigestData`): Objeto que contiene los datos para la firma.
238
+ - `cert` (String): Certificado del firmante en formato PEM (codificado en base64).
239
+ - `signatureId` (String): Identificador único del proceso de firma.
212
240
 
213
- - **Retorna:** `Promise<object>` - Un objeto que contiene:
241
+ **Retorna:**
214
242
 
243
+ - `Promise<GetDigestResponse>`: Un objeto que contiene:
215
244
  - `digest` (String): El digest del documento a firmar.
216
245
  - `success` (Boolean): Indicador de éxito de la operación.
217
246
 
218
- - **Posibles `ApacuanaAPIError`:**
219
- - `INVALID_PARAMETER`: Si `cert` o `signatureId` no son válidos.
220
- - `API_RESPONSE_ERROR`: Si la API no devuelve un digest.
221
- - `NOT_IMPLEMENTED`: Si se llama con un `integrationType` no soportado.
247
+ **Posibles `ApacuanaAPIError`:**
248
+
249
+ - `INVALID_PARAMETER`: Si `cert` o `signatureId` no son válidos.
250
+ - `API_RESPONSE_ERROR`: Si la API no devuelve un digest.
251
+ - `NOT_IMPLEMENTED`: Si se llama con un `integrationType` no soportado (`ONPREMISE`).
222
252
 
223
253
  ### requestRevocation(reasonCode)
224
254
 
@@ -226,11 +256,13 @@ Solicita la revocación de un certificado.
226
256
 
227
257
  **Parámetros:**
228
258
 
229
- - `reasonCode` (String): Código que indica la razón de la revocación
259
+ - `reasonCode` (String): Código que indica la razón de la revocación (ej. "COMPROMISED").
230
260
 
231
261
  **Retorna:**
232
262
 
233
- - Promise que se resuelve con la respuesta de la API de revocación
263
+ - `Promise<RequestRevocationResponse>` que se resuelve con un objeto que contiene:
264
+ - `revocationStatus` (String): El estado de la solicitud (ej. "pending").
265
+ - `requestId` (String | Number): El ID de la solicitud de revocación.
234
266
 
235
267
  **Ejemplo:**
236
268
 
@@ -243,47 +275,49 @@ try {
243
275
  }
244
276
  ```
245
277
 
246
- #### `getDocs(data)`
278
+ ### getDocs(data)
247
279
 
248
280
  Obtiene una lista de documentos paginada. El comportamiento de esta función varía según el `integrationType` configurado.
249
281
 
250
- - **Parámetros:**
282
+ **Parámetros:**
251
283
 
252
- - `data` (object): Objeto que contiene los parámetros para la consulta.
253
- - `page` (number): Número de página para la paginación.
254
- - `size` (number): Cantidad de resultados por página.
255
- - `status` (number, opcional): Filtra los documentos por su estado. Los valores permitidos son:
256
- - `-1`: Rechazado
257
- - `0`: Pendiente
258
- - `1`: Firmado
259
- - `2`: En proceso
284
+ - `data` (`GetDocsParams`): Objeto que contiene los parámetros para la consulta.
285
+ - `page` (Number): Número de página para la paginación.
286
+ - `size` (Number): Cantidad de resultados por página.
287
+ - `status` (Number, opcional): Filtra los documentos por su estado. Los valores permitidos son:
288
+ - `-1`: Rechazado
289
+ - `0`: Pendiente
290
+ - `1`: Firmado
291
+ - `2`: En proceso
260
292
 
261
- - **Retorna:** `Promise<object>` - Un objeto que contiene:
293
+ **Retorna:**
262
294
 
295
+ - `Promise<GetDocsResponse>`: Un objeto que contiene:
263
296
  - `totalRecords` (Number): El número total de documentos que coinciden con la consulta.
264
- - `records` (Array): Un array de objetos, donde cada objeto es un documento.
297
+ - `records` (Array<Object>): Un array de objetos, donde cada objeto es un documento.
265
298
  - `success` (Boolean): Indicador de éxito de la operación.
266
299
 
267
- - **Comportamiento por `integrationType`:**
300
+ **Comportamiento por `integrationType`:**
268
301
 
269
- - **`ONBOARDING`**: Obtiene los documentos asociados al `customerId` configurado.
270
- - **`ONPREMISE`**: No soportado. Lanza un `ApacuanaAPIError` con el código `NOT_IMPLEMENTED`.
302
+ - **`ONBOARDING`**: Obtiene los documentos asociados al `customerId` configurado.
303
+ - **`ONPREMISE`**: No soportado. Lanza un `ApacuanaAPIError` con el código `NOT_IMPLEMENTED`.
271
304
 
272
- - **Ejemplo (`ONBOARDING`):**
305
+ **Ejemplo (`ONBOARDING`):**
273
306
 
274
- ```javascript
275
- try {
276
- const documents = await apacuana.getDocs({ page: 1, size: 10, status: 1 });
277
- console.log("Documentos:", documents);
278
- } catch (error) {
279
- console.error("Error al obtener documentos:", error.message);
280
- }
281
- ```
307
+ ```javascript
308
+ try {
309
+ const documents = await apacuana.getDocs({ page: 1, size: 10, status: 1 });
310
+ console.log("Documentos:", documents);
311
+ } catch (error) {
312
+ console.error("Error al obtener documentos:", error.message);
313
+ }
314
+ ```
315
+
316
+ **Posibles `ApacuanaAPIError`:**
282
317
 
283
- - **Posibles `ApacuanaAPIError`:**
284
- - `INVALID_PARAMETER`: Si `page`, `size` o `status` no son válidos.
285
- - `CONFIGURATION_ERROR`: Si el `customerId` no está configurado en la inicialización.
286
- - `NOT_IMPLEMENTED`: Si se llama con `integrationType` igual a `ONPREMISE`.
318
+ - `INVALID_PARAMETER`: Si `page`, `size` o `status` no son válidos.
319
+ - `CONFIGURATION_ERROR`: Si el `customerId` no está configurado en la inicialización.
320
+ - `NOT_IMPLEMENTED`: Si se llama con `integrationType` igual a `ONPREMISE`.
287
321
 
288
322
  ### addSigner(signerData)
289
323
 
@@ -336,7 +370,9 @@ Si alguna validación falla, se lanzará una `ApacuanaAPIError` con el código `
336
370
 
337
371
  **Retorna:**
338
372
 
339
- - `Promise` que se resuelve con un objeto que contiene el ID del firmante (`signerId`) y el estado (`status`) si la operación es exitosa.
373
+ - `Promise<AddSignerResponse>` que se resuelve con un objeto que contiene:
374
+ - `signer` (String): Un identificador del firmante, construido a partir de `typedoc` y `doc`.
375
+ - `success` (Boolean): Indicador de éxito de la operación.
340
376
 
341
377
  **Ejemplo (ONBOARDING):**
342
378
 
@@ -375,9 +411,8 @@ El SDK utiliza los siguientes estados para los certificados:
375
411
 
376
412
  El SDK soporta los siguientes tipos de integración:
377
413
 
378
- - `ONBOARDING`: Proceso de registro inicial y generación de certificado
379
- - `AUTHENTICATION`: Proceso de autenticación con certificado existente
380
- - `SIGNATURE`: Proceso de firma de documentos
414
+ - `ONBOARDING`: Proceso de registro inicial y generación de certificado.
415
+ - `ONPREMISE`: Integración donde el cliente gestiona su propia infraestructura. Algunas funcionalidades no están soportadas en este modo.
381
416
 
382
417
  ## Manejo de Errores
383
418
 
@@ -409,3 +444,41 @@ El SDK implementa las siguientes medidas de seguridad:
409
444
  ## Licencia
410
445
 
411
446
  Este SDK está licenciado bajo términos propietarios. Consulte el acuerdo de licencia para más detalles.
447
+
448
+ #### `generateCert(encryptedCSR)`
449
+
450
+ Genera un nuevo certificado para un usuario ya existente.
451
+
452
+ - **Parámetros:**
453
+ - `encryptedCSR` (Object): Un objeto que contiene la Solicitud de Firma de Certificado (CSR) encriptada. Este objeto debe tener la siguiente estructura:
454
+ ```json
455
+ {
456
+ "csr": "string"
457
+ }
458
+ ```
459
+ Donde el valor de `csr` es la cadena de texto resultante de la encriptación.
460
+
461
+ - **Retorna:** `Promise<Object>`
462
+ - `Promise<GenerateCertResponse>` que se resuelve con un objeto que contiene:
463
+ - `cert` (String): El certificado generado.
464
+ - `success` (Boolean): Indicador de éxito de la operación.
465
+
466
+ **Ejemplo:**
467
+
468
+ ```javascript
469
+ // Asumiendo que 'myBase64Csr' es una variable que contiene tu CSR en formato Base64
470
+ const myBase64Csr = "MIIC...==";
471
+
472
+ try {
473
+ const { cert, success } = await apacuana.generateCert(myBase64Csr);
474
+ if (success) {
475
+ console.log("Certificado generado exitosamente:", cert);
476
+ }
477
+ } catch (error) {
478
+ if (error.name === "ApacuanaAPIError") {
479
+ console.error(`Error de API (${error.code}):`, error.message);
480
+ } else {
481
+ console.error("Ocurrió un error inesperado:", error);
482
+ }
483
+ }
484
+ ```
@@ -0,0 +1,11 @@
1
+ module.exports = {
2
+ presets: [
3
+ '@babel/preset-env',
4
+ '@babel/preset-flow'
5
+ ],
6
+ plugins: [
7
+ ['@babel/plugin-transform-class-properties', { loose: true }],
8
+ ['@babel/plugin-transform-private-methods', { loose: true }],
9
+ ['@babel/plugin-transform-private-property-in-object', { loose: true }]
10
+ ]
11
+ };