apacuana-sdk-core 0.9.0 → 0.11.0

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 (56) hide show
  1. package/README.md +320 -236
  2. package/coverage/clover.xml +341 -212
  3. package/coverage/coverage-final.json +9 -7
  4. package/coverage/lcov-report/index.html +34 -19
  5. package/coverage/lcov-report/src/api/certs.js.html +493 -37
  6. package/coverage/lcov-report/src/api/faceLiveness.js.html +496 -0
  7. package/coverage/lcov-report/src/api/index.html +43 -28
  8. package/coverage/lcov-report/src/api/revocations.js.html +103 -106
  9. package/coverage/lcov-report/src/api/signatures.js.html +25 -253
  10. package/coverage/lcov-report/src/api/users.js.html +7 -13
  11. package/coverage/lcov-report/src/config/index.html +1 -1
  12. package/coverage/lcov-report/src/config/index.js.html +1 -1
  13. package/coverage/lcov-report/src/errors/index.html +1 -1
  14. package/coverage/lcov-report/src/errors/index.js.html +8 -8
  15. package/coverage/lcov-report/src/index.html +1 -1
  16. package/coverage/lcov-report/src/index.js.html +48 -3
  17. package/coverage/lcov-report/src/success/index.html +116 -0
  18. package/coverage/lcov-report/src/success/index.js.html +106 -0
  19. package/coverage/lcov-report/src/utils/constant.js.html +4 -4
  20. package/coverage/lcov-report/src/utils/helpers.js.html +1 -1
  21. package/coverage/lcov-report/src/utils/httpClient.js.html +1 -1
  22. package/coverage/lcov-report/src/utils/index.html +1 -1
  23. package/coverage/lcov.info +591 -352
  24. package/dist/api/certs.d.ts +13 -30
  25. package/dist/api/faceLiveness.d.ts +6 -0
  26. package/dist/api/revocations.d.ts +3 -42
  27. package/dist/api/signatures.d.ts +11 -153
  28. package/dist/index.d.ts +10 -0
  29. package/dist/index.js +630 -214
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.mjs +630 -214
  32. package/dist/index.mjs.map +1 -1
  33. package/dist/success/index.d.ts +7 -0
  34. package/dist/types/certs.d.ts +97 -0
  35. package/dist/types/faceLiveness.d.ts +10 -0
  36. package/dist/types/revocations.d.ts +40 -0
  37. package/dist/types/signatures.d.ts +152 -0
  38. package/dist/types/users.d.ts +260 -0
  39. package/package.json +1 -1
  40. package/src/api/certs.js +175 -23
  41. package/src/api/faceLiveness.js +137 -0
  42. package/src/api/revocations.js +66 -67
  43. package/src/api/signatures.js +21 -97
  44. package/src/api/users.js +4 -6
  45. package/src/index.js +16 -1
  46. package/src/success/index.js +8 -0
  47. package/src/types/certs.js +56 -0
  48. package/src/types/faceLiveness.js +7 -0
  49. package/src/types/revocations.js +25 -0
  50. package/src/types/signatures.js +77 -0
  51. package/src/types/users.js +73 -0
  52. package/tests/api/certs.test.js +209 -4
  53. package/tests/api/faceLiveness.test.js +172 -0
  54. package/tests/api/revocations.test.js +37 -37
  55. package/tests/api/signatures.test.js +11 -5
  56. package/tests/api/users.test.js +3 -2
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
26
+ <span class="strong">86.11% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>19/19</span>
28
+ <span class='fraction'>31/36</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
33
+ <span class="strong">80% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>8/8</span>
35
+ <span class='fraction'>16/20</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">83.33% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
42
+ <span class='fraction'>5/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
47
+ <span class="strong">86.11% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>19/19</span>
49
+ <span class='fraction'>31/36</span>
50
50
  </div>
51
51
 
52
52
 
@@ -157,64 +157,79 @@
157
157
  <a name='L92'></a><a href='#L92'>92</a>
158
158
  <a name='L93'></a><a href='#L93'>93</a>
159
159
  <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-neutral">&nbsp;</span>
160
+ <a name='L95'></a><a href='#L95'>95</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
164
161
  <span class="cline-any cline-neutral">&nbsp;</span>
165
162
  <span class="cline-any cline-neutral">&nbsp;</span>
166
163
  <span class="cline-any cline-neutral">&nbsp;</span>
167
164
  <span class="cline-any cline-neutral">&nbsp;</span>
168
165
  <span class="cline-any cline-neutral">&nbsp;</span>
166
+ <span class="cline-any cline-yes">2x</span>
167
+ <span class="cline-any cline-yes">3x</span>
168
+ <span class="cline-any cline-yes">3x</span>
169
169
  <span class="cline-any cline-neutral">&nbsp;</span>
170
170
  <span class="cline-any cline-neutral">&nbsp;</span>
171
171
  <span class="cline-any cline-neutral">&nbsp;</span>
172
172
  <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-yes">1x</span>
173
174
  <span class="cline-any cline-neutral">&nbsp;</span>
175
+ <span class="cline-any cline-yes">2x</span>
176
+ <span class="cline-any cline-yes">1x</span>
174
177
  <span class="cline-any cline-neutral">&nbsp;</span>
178
+ <span class="cline-any cline-yes">1x</span>
175
179
  <span class="cline-any cline-neutral">&nbsp;</span>
176
180
  <span class="cline-any cline-neutral">&nbsp;</span>
177
181
  <span class="cline-any cline-neutral">&nbsp;</span>
182
+ <span class="cline-any cline-yes">2x</span>
183
+ <span class="cline-any cline-no">&nbsp;</span>
178
184
  <span class="cline-any cline-neutral">&nbsp;</span>
179
185
  <span class="cline-any cline-neutral">&nbsp;</span>
180
186
  <span class="cline-any cline-neutral">&nbsp;</span>
181
187
  <span class="cline-any cline-neutral">&nbsp;</span>
182
188
  <span class="cline-any cline-neutral">&nbsp;</span>
183
189
  <span class="cline-any cline-neutral">&nbsp;</span>
190
+ <span class="cline-any cline-yes">2x</span>
191
+ <span class="cline-any cline-yes">5x</span>
192
+ <span class="cline-any cline-yes">2x</span>
184
193
  <span class="cline-any cline-neutral">&nbsp;</span>
185
194
  <span class="cline-any cline-neutral">&nbsp;</span>
186
195
  <span class="cline-any cline-neutral">&nbsp;</span>
187
196
  <span class="cline-any cline-neutral">&nbsp;</span>
197
+ <span class="cline-any cline-yes">3x</span>
188
198
  <span class="cline-any cline-neutral">&nbsp;</span>
199
+ <span class="cline-any cline-yes">3x</span>
200
+ <span class="cline-any cline-yes">3x</span>
189
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-no">&nbsp;</span>
203
+ <span class="cline-any cline-no">&nbsp;</span>
190
204
  <span class="cline-any cline-neutral">&nbsp;</span>
205
+ <span class="cline-any cline-no">&nbsp;</span>
191
206
  <span class="cline-any cline-neutral">&nbsp;</span>
192
207
  <span class="cline-any cline-neutral">&nbsp;</span>
193
208
  <span class="cline-any cline-neutral">&nbsp;</span>
194
209
  <span class="cline-any cline-neutral">&nbsp;</span>
195
210
  <span class="cline-any cline-neutral">&nbsp;</span>
196
211
  <span class="cline-any cline-neutral">&nbsp;</span>
212
+ <span class="cline-any cline-yes">2x</span>
213
+ <span class="cline-any cline-yes">4x</span>
214
+ <span class="cline-any cline-yes">4x</span>
197
215
  <span class="cline-any cline-neutral">&nbsp;</span>
198
216
  <span class="cline-any cline-neutral">&nbsp;</span>
199
217
  <span class="cline-any cline-neutral">&nbsp;</span>
200
218
  <span class="cline-any cline-neutral">&nbsp;</span>
201
219
  <span class="cline-any cline-yes">2x</span>
202
- <span class="cline-any cline-yes">3x</span>
203
220
  <span class="cline-any cline-yes">1x</span>
204
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-yes">1x</span>
205
223
  <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-yes">3x</span>
206
225
  <span class="cline-any cline-yes">2x</span>
207
- <span class="cline-any cline-yes">2x</span>
208
- <span class="cline-any cline-neutral">&nbsp;</span>
209
- <span class="cline-any cline-neutral">&nbsp;</span>
210
- <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-neutral">&nbsp;</span>
212
226
  <span class="cline-any cline-neutral">&nbsp;</span>
213
227
  <span class="cline-any cline-yes">1x</span>
214
228
  <span class="cline-any cline-neutral">&nbsp;</span>
215
- <span class="cline-any cline-yes">1x</span>
216
229
  <span class="cline-any cline-neutral">&nbsp;</span>
217
230
  <span class="cline-any cline-neutral">&nbsp;</span>
231
+ <span class="cline-any cline-yes">2x</span>
232
+ <span class="cline-any cline-yes">1x</span>
218
233
  <span class="cline-any cline-neutral">&nbsp;</span>
219
234
  <span class="cline-any cline-neutral">&nbsp;</span>
220
235
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -225,128 +240,110 @@
225
240
  <span class="cline-any cline-yes">5x</span>
226
241
  <span class="cline-any cline-neutral">&nbsp;</span>
227
242
  <span class="cline-any cline-yes">5x</span>
228
- <span class="cline-any cline-yes">1x</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-neutral">&nbsp;</span>
231
- <span class="cline-any cline-neutral">&nbsp;</span>
232
- <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-yes">4x</span>
236
243
  <span class="cline-any cline-yes">4x</span>
237
244
  <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-yes">2x</span>
243
245
  <span class="cline-any cline-yes">1x</span>
244
- <span class="cline-any cline-neutral">&nbsp;</span>
245
- <span class="cline-any cline-neutral">&nbsp;</span>
246
246
  <span class="cline-any cline-yes">1x</span>
247
247
  <span class="cline-any cline-neutral">&nbsp;</span>
248
- <span class="cline-any cline-yes">3x</span>
249
- <span class="cline-any cline-yes">2x</span>
248
+ <span class="cline-any cline-no">&nbsp;</span>
250
249
  <span class="cline-any cline-neutral">&nbsp;</span>
251
- <span class="cline-any cline-yes">1x</span>
252
250
  <span class="cline-any cline-neutral">&nbsp;</span>
253
251
  <span class="cline-any cline-neutral">&nbsp;</span>
254
252
  <span class="cline-any cline-neutral">&nbsp;</span>
255
253
  <span class="cline-any cline-neutral">&nbsp;</span>
256
254
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { httpRequest } from "../utils/httpClient";
257
- import { ApacuanaAPIError } from "../errors/index";
258
255
  import { getConfig } from "../config";
259
256
  import { INTEGRATION_TYPE } from "../utils/constant";
257
+ import { ApacuanaAPIError } from "../errors";
258
+ import ApacuanaSuccess from "../success";
260
259
  &nbsp;
261
- /**
262
- * @typedef {object} RequestRevocationResponse
263
- * @property {string} revocationStatus - El estado de la solicitud de revocación (e.g., "pending").
264
- * @property {string|number} requestId - El ID de la solicitud de revocación.
265
- */
266
- &nbsp;
267
- /**
268
- * Simula la solicitud de revocación de un certificado.
269
- * @param {string} reasonCode - Código o descripción del motivo de la revocación.
270
- * @returns {Promise&lt;RequestRevocationResponse&gt;} Objeto con el estado de la solicitud de revocación.
271
- */
272
- /**
273
- * @typedef {object} RevocationResponse
274
- * @property {boolean} success - Indicates if the revocation request was successful.
275
- * @property {string} [message] - A message providing details about the outcome.
276
- */
277
- &nbsp;
278
- /**
279
- * @typedef {object} RevocationReason
280
- * @property {string} code - The code for the revocation reason.
281
- * @property {string} description - The description of the revocation reason.
282
- */
283
- &nbsp;
284
- /**
285
- * @typedef {object} RevocationReasonsResponse
286
- * @property {boolean} success - Indicates if the request was successful.
287
- * @property {RevocationReason[]} reasons - A list of revocation reasons.
288
- */
289
- &nbsp;
290
- /**
291
- * Requests the revocation of a certificate.
292
- * @param {number} reasonCode - Código o descripción del motivo de la revocación.
293
- * @returns {Promise&lt;RevocationResponse&gt;} An object indicating the success of the request.
294
- * @throws {ApacuanaAPIError} If the revocation request fails.
295
- */
296
- export const requestRevocation = async (reasonCode) =&gt; {
297
- if (!reasonCode) {
298
- throw new Error("Código de motivo es requerido para requestRevocation.");
299
- }
300
- &nbsp;
260
+ const requestRevocationOnBoarding = async (params) =&gt; {
301
261
  try {
302
262
  const response = await httpRequest(
303
- "services/api/onboardingclient/requestcert",
304
- { reason: reasonCode },
263
+ "services/api/certificate/revocation",
264
+ params,
305
265
  "POST"
306
266
  );
307
- &nbsp;
308
- return response;
267
+ return new ApacuanaSuccess(response);
309
268
  } catch (error) {
310
- throw new Error(`Fallo en la solicitud de revocación: ${error.message}`);
269
+ if (error instanceof ApacuanaAPIError) {
270
+ throw error;
271
+ }
272
+ throw new Error(`Failed to request revocation: ${error.message}`);
311
273
  }
312
274
  };
313
275
  &nbsp;
314
- /**
315
- * Retrieves the available reasons for certificate revocation.
316
- * @returns {Promise&lt;RevocationReasonsResponse&gt;} An object containing the list of revocation reasons.
317
- * @throws {ApacuanaAPIError} If fetching the reasons fails.
318
- */
319
- export const getRevocationReasons = async () =&gt; {
320
- const { integrationType } = getConfig();
276
+ const requestRevocationOnPremise = <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {
277
+ <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
278
+ "Requesting revocation is not supported for integration type: ONPREMISE",
279
+ 501,
280
+ "NOT_IMPLEMENTED"
281
+ );
282
+ };
321
283
  &nbsp;
322
- if (integrationType === INTEGRATION_TYPE.ONPREMISE) {
323
- throw new ApacuanaAPIError(
324
- `Get revocation reasons is not supported for integration type: ${integrationType}`,
325
- 501,
326
- "NOT_IMPLEMENTED"
284
+ export const requestRevocation = async (params) =&gt; {
285
+ if (!params || typeof params.reasonCode !== "number") {
286
+ throw new Error(
287
+ 'The "params" object with a numeric "reasonCode" property is required.'
327
288
  );
328
289
  }
329
290
  &nbsp;
291
+ const { integrationType } = getConfig();
292
+ &nbsp;
293
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (integrationType === INTEGRATION_TYPE.ONBOARDING) {
294
+ return requestRevocationOnBoarding(params);
295
+ }
296
+ <span class="cstat-no" title="statement not covered" > if (integrationType === INTEGRATION_TYPE.ONPREMISE) {</span>
297
+ <span class="cstat-no" title="statement not covered" > return requestRevocationOnPremise(params);</span>
298
+ }
299
+ <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
300
+ `Unsupported integration type: ${integrationType}`,
301
+ 400,
302
+ "UNSUPPORTED_INTEGRATION_TYPE"
303
+ );
304
+ };
305
+ &nbsp;
306
+ const getRevocationReasonsOnBoarding = async () =&gt; {
330
307
  try {
331
308
  const response = await httpRequest(
332
- "GET",
333
- "config/api/revocation/reasonsonboarding",
334
- {}
309
+ "services/api/certificate/revocation-reasons",
310
+ {},
311
+ "GET"
335
312
  );
336
- &nbsp;
337
- if (!response.records) {
313
+ if (!response || !response.records) {
338
314
  throw new ApacuanaAPIError("Failed to fetch revocation reasons.");
339
315
  }
340
- &nbsp;
341
- return response.records;
316
+ return new ApacuanaSuccess(response.records);
342
317
  } catch (error) {
343
318
  if (error instanceof ApacuanaAPIError) {
344
319
  throw error;
345
320
  }
346
- throw new Error(
347
- "Failed to get revocation reasons. Please try again later."
348
- );
321
+ throw new Error(`Failed to get revocation reasons: ${error.message}`);
322
+ }
323
+ };
324
+ &nbsp;
325
+ const getRevocationReasonsOnPremise = async () =&gt; {
326
+ throw new ApacuanaAPIError(
327
+ "Getting revocation reasons is not supported for integration type: ONPREMISE",
328
+ 501,
329
+ "NOT_IMPLEMENTED"
330
+ );
331
+ };
332
+ &nbsp;
333
+ export const getRevocationReasons = async () =&gt; {
334
+ const { integrationType } = getConfig();
335
+ &nbsp;
336
+ if (integrationType === INTEGRATION_TYPE.ONBOARDING) {
337
+ return getRevocationReasonsOnBoarding();
338
+ }
339
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (integrationType === INTEGRATION_TYPE.ONPREMISE) {
340
+ return getRevocationReasonsOnPremise();
349
341
  }
342
+ <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
343
+ `Unsupported integration type: ${integrationType}`,
344
+ 400,
345
+ "UNSUPPORTED_INTEGRATION_TYPE"
346
+ );
350
347
  };
351
348
  &nbsp;</pre></td></tr></table></pre>
352
349
 
@@ -355,7 +352,7 @@ export const getRevocationReasons = async () =&gt; {
355
352
  <div class='footer quiet pad2 space-top1 center small'>
356
353
  Code coverage generated by
357
354
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
358
- at 2025-09-05T13:42:51.598Z
355
+ at 2025-09-11T22:20:22.994Z
359
356
  </div>
360
357
  <script src="../../prettify.js"></script>
361
358
  <script>