apacuana-sdk-core 0.2.0 → 0.3.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.
- package/README.md +64 -15
- package/coverage/clover.xml +145 -111
- package/coverage/coverage-final.json +6 -6
- package/coverage/lcov-report/index.html +30 -30
- package/coverage/lcov-report/src/api/certs.js.html +73 -28
- package/coverage/lcov-report/src/api/index.html +31 -31
- package/coverage/lcov-report/src/api/revocations.js.html +1 -1
- package/coverage/lcov-report/src/api/signatures.js.html +186 -159
- package/coverage/lcov-report/src/api/users.js.html +24 -63
- package/coverage/lcov-report/src/config/index.html +1 -1
- package/coverage/lcov-report/src/config/index.js.html +1 -1
- package/coverage/lcov-report/src/errors/index.html +1 -1
- package/coverage/lcov-report/src/errors/index.js.html +8 -8
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.js.html +1 -1
- package/coverage/lcov-report/src/utils/constant.js.html +4 -4
- package/coverage/lcov-report/src/utils/helpers.js.html +101 -50
- package/coverage/lcov-report/src/utils/httpClient.js.html +1 -1
- package/coverage/lcov-report/src/utils/index.html +19 -19
- package/coverage/lcov.info +277 -205
- package/dist/index.js +136 -242
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +136 -242
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/api/certs.js +25 -10
- package/src/api/signatures.js +106 -97
- package/src/api/users.js +16 -29
- package/src/utils/helpers.js +17 -0
- package/tests/api/certs.test.js +58 -74
- package/tests/api/signatures.test.js +18 -73
- package/tests/api/users.test.js +10 -10
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">56.75% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>42/74</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">42.85% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>15/35</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">50% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>6/
|
|
42
|
+
<span class='fraction'>6/12</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">56.75% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>42/74</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -295,61 +295,32 @@
|
|
|
295
295
|
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
296
|
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
297
|
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a
|
|
299
|
-
<
|
|
300
|
-
<
|
|
301
|
-
<
|
|
302
|
-
<
|
|
303
|
-
<
|
|
304
|
-
<
|
|
305
|
-
<
|
|
306
|
-
<
|
|
307
|
-
<span class="cline-any cline-neutral"> </span>
|
|
308
|
-
<span class="cline-any cline-neutral"> </span>
|
|
309
|
-
<span class="cline-any cline-neutral"> </span>
|
|
310
|
-
<span class="cline-any cline-neutral"> </span>
|
|
311
|
-
<span class="cline-any cline-neutral"> </span>
|
|
312
|
-
<span class="cline-any cline-neutral"> </span>
|
|
313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
315
|
-
<span class="cline-any cline-neutral"> </span>
|
|
316
|
-
<span class="cline-any cline-neutral"> </span>
|
|
317
|
-
<span class="cline-any cline-neutral"> </span>
|
|
318
|
-
<span class="cline-any cline-neutral"> </span>
|
|
319
|
-
<span class="cline-any cline-neutral"> </span>
|
|
320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
321
|
-
<span class="cline-any cline-neutral"> </span>
|
|
322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
331
|
-
<span class="cline-any cline-neutral"> </span>
|
|
332
|
-
<span class="cline-any cline-neutral"> </span>
|
|
333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
336
|
-
<span class="cline-any cline-neutral"> </span>
|
|
337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
338
|
-
<span class="cline-any cline-neutral"> </span>
|
|
339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
340
|
-
<span class="cline-any cline-neutral"> </span>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
341
308
|
<span class="cline-any cline-neutral"> </span>
|
|
342
309
|
<span class="cline-any cline-neutral"> </span>
|
|
343
310
|
<span class="cline-any cline-neutral"> </span>
|
|
344
311
|
<span class="cline-any cline-neutral"> </span>
|
|
345
312
|
<span class="cline-any cline-neutral"> </span>
|
|
346
313
|
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-yes">2x</span>
|
|
315
|
+
<span class="cline-any cline-no"> </span>
|
|
347
316
|
<span class="cline-any cline-neutral"> </span>
|
|
348
317
|
<span class="cline-any cline-neutral"> </span>
|
|
349
318
|
<span class="cline-any cline-neutral"> </span>
|
|
350
319
|
<span class="cline-any cline-neutral"> </span>
|
|
351
320
|
<span class="cline-any cline-neutral"> </span>
|
|
352
321
|
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-yes">2x</span>
|
|
323
|
+
<span class="cline-any cline-no"> </span>
|
|
353
324
|
<span class="cline-any cline-neutral"> </span>
|
|
354
325
|
<span class="cline-any cline-neutral"> </span>
|
|
355
326
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -362,36 +333,55 @@
|
|
|
362
333
|
<span class="cline-any cline-neutral"> </span>
|
|
363
334
|
<span class="cline-any cline-neutral"> </span>
|
|
364
335
|
<span class="cline-any cline-neutral"> </span>
|
|
336
|
+
<span class="cline-any cline-yes">2x</span>
|
|
337
|
+
<span class="cline-any cline-no"> </span>
|
|
365
338
|
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-no"> </span>
|
|
340
|
+
<span class="cline-any cline-no"> </span>
|
|
366
341
|
<span class="cline-any cline-neutral"> </span>
|
|
367
342
|
<span class="cline-any cline-neutral"> </span>
|
|
343
|
+
<span class="cline-any cline-no"> </span>
|
|
344
|
+
<span class="cline-any cline-no"> </span>
|
|
368
345
|
<span class="cline-any cline-neutral"> </span>
|
|
369
346
|
<span class="cline-any cline-neutral"> </span>
|
|
347
|
+
<span class="cline-any cline-no"> </span>
|
|
370
348
|
<span class="cline-any cline-neutral"> </span>
|
|
371
349
|
<span class="cline-any cline-neutral"> </span>
|
|
372
350
|
<span class="cline-any cline-neutral"> </span>
|
|
373
351
|
<span class="cline-any cline-neutral"> </span>
|
|
374
352
|
<span class="cline-any cline-neutral"> </span>
|
|
375
353
|
<span class="cline-any cline-neutral"> </span>
|
|
354
|
+
<span class="cline-any cline-yes">2x</span>
|
|
355
|
+
<span class="cline-any cline-no"> </span>
|
|
356
|
+
<span class="cline-any cline-no"> </span>
|
|
376
357
|
<span class="cline-any cline-neutral"> </span>
|
|
377
358
|
<span class="cline-any cline-neutral"> </span>
|
|
378
359
|
<span class="cline-any cline-neutral"> </span>
|
|
379
360
|
<span class="cline-any cline-neutral"> </span>
|
|
380
361
|
<span class="cline-any cline-neutral"> </span>
|
|
381
362
|
<span class="cline-any cline-neutral"> </span>
|
|
363
|
+
<span class="cline-any cline-no"> </span>
|
|
364
|
+
<span class="cline-any cline-no"> </span>
|
|
365
|
+
<span class="cline-any cline-no"> </span>
|
|
382
366
|
<span class="cline-any cline-neutral"> </span>
|
|
383
367
|
<span class="cline-any cline-neutral"> </span>
|
|
384
368
|
<span class="cline-any cline-neutral"> </span>
|
|
385
369
|
<span class="cline-any cline-neutral"> </span>
|
|
386
370
|
<span class="cline-any cline-neutral"> </span>
|
|
387
371
|
<span class="cline-any cline-neutral"> </span>
|
|
372
|
+
<span class="cline-any cline-no"> </span>
|
|
388
373
|
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-no"> </span>
|
|
375
|
+
<span class="cline-any cline-no"> </span>
|
|
389
376
|
<span class="cline-any cline-neutral"> </span>
|
|
377
|
+
<span class="cline-any cline-no"> </span>
|
|
390
378
|
<span class="cline-any cline-neutral"> </span>
|
|
391
379
|
<span class="cline-any cline-neutral"> </span>
|
|
392
380
|
<span class="cline-any cline-neutral"> </span>
|
|
393
381
|
<span class="cline-any cline-neutral"> </span>
|
|
394
382
|
<span class="cline-any cline-neutral"> </span>
|
|
383
|
+
<span class="cline-any cline-yes">2x</span>
|
|
384
|
+
<span class="cline-any cline-no"> </span>
|
|
395
385
|
<span class="cline-any cline-neutral"> </span>
|
|
396
386
|
<span class="cline-any cline-neutral"> </span>
|
|
397
387
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -404,12 +394,20 @@
|
|
|
404
394
|
<span class="cline-any cline-neutral"> </span>
|
|
405
395
|
<span class="cline-any cline-neutral"> </span>
|
|
406
396
|
<span class="cline-any cline-neutral"> </span>
|
|
397
|
+
<span class="cline-any cline-yes">2x</span>
|
|
398
|
+
<span class="cline-any cline-no"> </span>
|
|
407
399
|
<span class="cline-any cline-neutral"> </span>
|
|
400
|
+
<span class="cline-any cline-no"> </span>
|
|
408
401
|
<span class="cline-any cline-neutral"> </span>
|
|
402
|
+
<span class="cline-any cline-no"> </span>
|
|
403
|
+
<span class="cline-any cline-no"> </span>
|
|
409
404
|
<span class="cline-any cline-neutral"> </span>
|
|
410
405
|
<span class="cline-any cline-neutral"> </span>
|
|
406
|
+
<span class="cline-any cline-no"> </span>
|
|
407
|
+
<span class="cline-any cline-no"> </span>
|
|
411
408
|
<span class="cline-any cline-neutral"> </span>
|
|
412
409
|
<span class="cline-any cline-neutral"> </span>
|
|
410
|
+
<span class="cline-any cline-no"> </span>
|
|
413
411
|
<span class="cline-any cline-neutral"> </span>
|
|
414
412
|
<span class="cline-any cline-neutral"> </span>
|
|
415
413
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -440,6 +438,12 @@
|
|
|
440
438
|
<span class="cline-any cline-neutral"> </span>
|
|
441
439
|
<span class="cline-any cline-neutral"> </span>
|
|
442
440
|
<span class="cline-any cline-neutral"> </span>
|
|
441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
442
|
+
<span class="cline-any cline-neutral"> </span>
|
|
443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
443
447
|
<span class="cline-any cline-yes">2x</span>
|
|
444
448
|
<span class="cline-any cline-yes">4x</span>
|
|
445
449
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -491,9 +495,22 @@
|
|
|
491
495
|
<span class="cline-any cline-yes">1x</span>
|
|
492
496
|
<span class="cline-any cline-yes">1x</span>
|
|
493
497
|
<span class="cline-any cline-neutral"> </span>
|
|
498
|
+
<span class="cline-any cline-neutral"> </span>
|
|
499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
494
502
|
<span class="cline-any cline-yes">1x</span>
|
|
495
503
|
<span class="cline-any cline-yes">1x</span>
|
|
496
504
|
<span class="cline-any cline-neutral"> </span>
|
|
505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
506
|
+
<span class="cline-any cline-yes">1x</span>
|
|
507
|
+
<span class="cline-any cline-yes">1x</span>
|
|
508
|
+
<span class="cline-any cline-yes">1x</span>
|
|
509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
510
|
+
<span class="cline-any cline-neutral"> </span>
|
|
511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
497
514
|
<span class="cline-any cline-no"> </span>
|
|
498
515
|
<span class="cline-any cline-no"> </span>
|
|
499
516
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -508,6 +525,7 @@
|
|
|
508
525
|
<span class="cline-any cline-neutral"> </span>
|
|
509
526
|
<span class="cline-any cline-neutral"> </span>
|
|
510
527
|
<span class="cline-any cline-neutral"> </span>
|
|
528
|
+
<span class="cline-any cline-neutral"> </span>
|
|
511
529
|
<span class="cline-any cline-yes">2x</span>
|
|
512
530
|
<span class="cline-any cline-yes">5x</span>
|
|
513
531
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -534,124 +552,113 @@ import { ApacuanaAPIError } from "../errors";
|
|
|
534
552
|
import helpers from "../utils/helpers";
|
|
535
553
|
import { INTEGRATION_TYPE } from "../utils/constant";
|
|
536
554
|
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
"POST"
|
|
544
|
-
);
|
|
545
|
-
if (!response.success) {
|
|
546
|
-
throw new ApacuanaAPIError(
|
|
547
|
-
response.message || "Error desconocido al firmar documento."
|
|
548
|
-
);
|
|
549
|
-
}
|
|
550
|
-
return { signedDocId: response.id, status: response.message };
|
|
551
|
-
} catch (error) {
|
|
552
|
-
if (error.name === "ApacuanaAPIError") {
|
|
553
|
-
throw error;
|
|
554
|
-
}
|
|
555
|
-
throw new ApacuanaAPIError(
|
|
556
|
-
`Fallo en la firma del documento (on-boarding): ${error.message}`
|
|
557
|
-
);
|
|
558
|
-
}
|
|
555
|
+
const signDocumentOnBoarding = <span class="fstat-no" title="function not covered" >as</span>ync () => {
|
|
556
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
557
|
+
"Document signing is not supported for integration type: ONBOARDING",
|
|
558
|
+
501,
|
|
559
|
+
"NOT_IMPLEMENTED"
|
|
560
|
+
);
|
|
559
561
|
};
|
|
560
562
|
|
|
561
|
-
const signDocumentOnPremise =
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
563
|
+
const signDocumentOnPremise = <span class="fstat-no" title="function not covered" >as</span>ync () => {
|
|
564
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
565
|
+
"Document signing is not supported for integration type: ONPREMISE",
|
|
566
|
+
501,
|
|
567
|
+
"NOT_IMPLEMENTED"
|
|
568
|
+
);
|
|
569
|
+
};
|
|
567
570
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
571
|
+
/**
|
|
572
|
+
* Signs a PDF document with a digital certificate.
|
|
573
|
+
* @param {object} data - Data for the signature. For 'on-boarding', it must contain {documentData, signatureData}. For 'on-premise', it must contain {signature, cert, privateKey}.
|
|
574
|
+
* @returns {Promise<{digest: string}>} Object with the document's digest.
|
|
575
|
+
* @throws {ApacuanaAPIError} If the integration type is not supported or the function is not implemented for the integration type.
|
|
576
|
+
*/
|
|
577
|
+
export const signDocument = <span class="fstat-no" title="function not covered" >as</span>ync () => {
|
|
578
|
+
const { integrationType } = <span class="cstat-no" title="statement not covered" >getConfig();</span>
|
|
573
579
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
"La generación de firma ha fallado: no se pudo obtener el digest del documento."
|
|
578
|
-
);
|
|
579
|
-
}
|
|
580
|
+
<span class="cstat-no" title="statement not covered" > if (integrationType === INTEGRATION_TYPE.ONBOARDING) {</span>
|
|
581
|
+
<span class="cstat-no" title="statement not covered" > return signDocumentOnBoarding();</span>
|
|
582
|
+
}
|
|
580
583
|
|
|
581
|
-
|
|
584
|
+
<span class="cstat-no" title="statement not covered" > if (integrationType === INTEGRATION_TYPE.ONPREMISE) {</span>
|
|
585
|
+
<span class="cstat-no" title="statement not covered" > return signDocumentOnPremise();</span>
|
|
586
|
+
}
|
|
582
587
|
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
status: 1,
|
|
590
|
-
}))
|
|
591
|
-
),
|
|
592
|
-
publickey: cert,
|
|
593
|
-
signeddigest: signedDigest,
|
|
594
|
-
};
|
|
588
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
589
|
+
`Unsupported integration type: ${integrationType}`,
|
|
590
|
+
400,
|
|
591
|
+
"UNSUPPORTED_INTEGRATION_TYPE"
|
|
592
|
+
);
|
|
593
|
+
};
|
|
595
594
|
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
595
|
+
const getDigestToSignOnBoarding = <span class="fstat-no" title="function not covered" >as</span>ync (signData) => {
|
|
596
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
597
|
+
const response = <span class="cstat-no" title="statement not covered" >await httpRequest(</span>
|
|
598
|
+
`services/api/documents/getdigest/${signData.signatureId}`,
|
|
599
|
+
{
|
|
600
|
+
publickey: signData.cert,
|
|
601
|
+
},
|
|
602
|
+
"POST"
|
|
600
603
|
);
|
|
604
|
+
const digest = <span class="cstat-no" title="statement not covered" >response.data?.digest || response.digest;</span>
|
|
605
|
+
<span class="cstat-no" title="statement not covered" > if (!digest) {</span>
|
|
606
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
607
|
+
"Signature generation failed: digest not found in the response.",
|
|
608
|
+
500,
|
|
609
|
+
"API_RESPONSE_ERROR"
|
|
610
|
+
);
|
|
611
|
+
}
|
|
601
612
|
|
|
602
|
-
return
|
|
613
|
+
<span class="cstat-no" title="statement not covered" > return { digest, success: true };</span>
|
|
603
614
|
} catch (error) {
|
|
604
|
-
if (error.name === "ApacuanaAPIError") {
|
|
605
|
-
throw error
|
|
615
|
+
<span class="cstat-no" title="statement not covered" > if (error.name === "ApacuanaAPIError") {</span>
|
|
616
|
+
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
606
617
|
}
|
|
607
|
-
throw new ApacuanaAPIError(
|
|
608
|
-
`
|
|
618
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
619
|
+
`Failed to sign document (on-boarding): ${error.message}`
|
|
609
620
|
);
|
|
610
621
|
}
|
|
611
622
|
};
|
|
612
|
-
|
|
623
|
+
|
|
624
|
+
const getDigestToSignOnPremise = <span class="fstat-no" title="function not covered" >as</span>ync () => {
|
|
625
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
626
|
+
"Digest retrieval is not supported for integration type: ONPREMISE",
|
|
627
|
+
501,
|
|
628
|
+
"NOT_IMPLEMENTED"
|
|
629
|
+
);
|
|
630
|
+
};
|
|
613
631
|
|
|
614
632
|
/**
|
|
615
|
-
*
|
|
616
|
-
* @param {object}
|
|
617
|
-
* @returns {Promise<
|
|
633
|
+
* Gets the digest of a document to be signed.
|
|
634
|
+
* @param {object} signData - Data for the signature. Must contain { cert, signatureId }.
|
|
635
|
+
* @returns {Promise<{digest: string, success: boolean}>} Object with the document's digest.
|
|
636
|
+
* @throws {ApacuanaAPIError} If the input data is invalid, if the API call fails, or if the integration type is not supported.
|
|
618
637
|
*/
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
if (
|
|
622
|
-
!signData ||
|
|
623
|
-
typeof signData !== "object" ||
|
|
624
|
-
Object.keys(signData).length === 0
|
|
625
|
-
) {
|
|
626
|
-
throw new ApacuanaAPIError(
|
|
627
|
-
"El parámetro 'data' es requerido y debe ser un objeto no vacío.",
|
|
628
|
-
400,
|
|
629
|
-
"INVALID_PARAMETER"
|
|
630
|
-
);
|
|
631
|
-
}
|
|
638
|
+
export const getDigest = <span class="fstat-no" title="function not covered" >as</span>ync (signData) => {
|
|
639
|
+
<span class="cstat-no" title="statement not covered" > helpers.validateGetDigestData(signData);</span>
|
|
632
640
|
|
|
633
|
-
const { integrationType } = getConfig()
|
|
641
|
+
const { integrationType } = <span class="cstat-no" title="statement not covered" >getConfig();</span>
|
|
634
642
|
|
|
635
|
-
if (integrationType === INTEGRATION_TYPE.ONBOARDING) {
|
|
636
|
-
return
|
|
643
|
+
<span class="cstat-no" title="statement not covered" > if (integrationType === INTEGRATION_TYPE.ONBOARDING) {</span>
|
|
644
|
+
<span class="cstat-no" title="statement not covered" > return getDigestToSignOnBoarding(signData);</span>
|
|
637
645
|
}
|
|
638
646
|
|
|
639
|
-
if (integrationType === INTEGRATION_TYPE.ONPREMISE) {
|
|
640
|
-
return
|
|
647
|
+
<span class="cstat-no" title="statement not covered" > if (integrationType === INTEGRATION_TYPE.ONPREMISE) {</span>
|
|
648
|
+
<span class="cstat-no" title="statement not covered" > return getDigestToSignOnPremise();</span>
|
|
641
649
|
}
|
|
642
650
|
|
|
643
|
-
throw new ApacuanaAPIError(
|
|
644
|
-
`
|
|
645
|
-
|
|
646
|
-
"
|
|
651
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
652
|
+
`Document retrieval is not supported for an unknown integration type: ${integrationType}`,
|
|
653
|
+
501,
|
|
654
|
+
"NOT_IMPLEMENTED"
|
|
647
655
|
);
|
|
648
656
|
};
|
|
649
|
-
*/
|
|
650
657
|
|
|
651
658
|
const addSignerOnBoarding = async (signerData) => {
|
|
652
659
|
helpers.validateOnBoardingSignerData(signerData);
|
|
653
660
|
try {
|
|
654
|
-
//
|
|
661
|
+
// Current httpRequest logic is moved here
|
|
655
662
|
await httpRequest("services/api/documents/signing", signerData, "POST");
|
|
656
663
|
return { signer: signerData.typedoc + signerData.doc, success: true };
|
|
657
664
|
} catch (error) {
|
|
@@ -659,18 +666,24 @@ const addSignerOnBoarding = async (signerData) => {
|
|
|
659
666
|
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
660
667
|
}
|
|
661
668
|
<span class="cstat-no" title="statement not covered" > throw new Error(</span>
|
|
662
|
-
`
|
|
669
|
+
`Failed to add signer in On-Boarding: ${error.message}`
|
|
663
670
|
);
|
|
664
671
|
}
|
|
665
672
|
};
|
|
666
673
|
|
|
667
|
-
const addSignerOnPremise = async () =>
|
|
668
|
-
|
|
674
|
+
const addSignerOnPremise = async () => {
|
|
675
|
+
throw new ApacuanaAPIError(
|
|
676
|
+
"Adding signers is not supported for integration type: ONPREMISE",
|
|
677
|
+
501,
|
|
678
|
+
"NOT_IMPLEMENTED"
|
|
679
|
+
);
|
|
680
|
+
};
|
|
669
681
|
|
|
670
682
|
/**
|
|
671
|
-
*
|
|
672
|
-
* @param {object} signerData -
|
|
673
|
-
* @returns {Promise<
|
|
683
|
+
* Adds a signer to a document, handling different integration types.
|
|
684
|
+
* @param {object} signerData - Data of the signer to be added.
|
|
685
|
+
* @returns {Promise<{signer: string, success: boolean}>} Object with the result of adding the signer.
|
|
686
|
+
* @throws {ApacuanaAPIError} If the signer data is invalid, if the API call fails, or if the integration type is not supported.
|
|
674
687
|
*/
|
|
675
688
|
export const addSigner = async (signerData) => {
|
|
676
689
|
if (
|
|
@@ -679,7 +692,7 @@ export const addSigner = async (signerData) => {
|
|
|
679
692
|
Object.keys(signerData).length === 0
|
|
680
693
|
) {
|
|
681
694
|
throw new ApacuanaAPIError(
|
|
682
|
-
"
|
|
695
|
+
"Signer data (signerData) is required and must be a non-empty object.",
|
|
683
696
|
400,
|
|
684
697
|
"INVALID_PARAMETER"
|
|
685
698
|
);
|
|
@@ -696,7 +709,7 @@ export const addSigner = async (signerData) => {
|
|
|
696
709
|
}
|
|
697
710
|
|
|
698
711
|
throw new ApacuanaAPIError(
|
|
699
|
-
`
|
|
712
|
+
`Unsupported integration type: ${integrationType}`,
|
|
700
713
|
400,
|
|
701
714
|
"UNSUPPORTED_INTEGRATION_TYPE"
|
|
702
715
|
);
|
|
@@ -704,7 +717,7 @@ export const addSigner = async (signerData) => {
|
|
|
704
717
|
|
|
705
718
|
const getDocsOnPremise = async () => {
|
|
706
719
|
throw new ApacuanaAPIError(
|
|
707
|
-
"
|
|
720
|
+
"Document retrieval is not supported for integration type: ONBOARDING",
|
|
708
721
|
501,
|
|
709
722
|
"NOT_IMPLEMENTED"
|
|
710
723
|
);
|
|
@@ -714,31 +727,45 @@ const getDocsOnBoarding = async (data) => {
|
|
|
714
727
|
const { customerId } = getConfig();
|
|
715
728
|
if (!customerId) {
|
|
716
729
|
throw new ApacuanaAPIError(
|
|
717
|
-
"
|
|
730
|
+
"'customerId' is not configured. Please configure the SDK.",
|
|
718
731
|
400,
|
|
719
732
|
"CONFIGURATION_ERROR"
|
|
720
733
|
);
|
|
721
734
|
}
|
|
722
735
|
|
|
723
736
|
try {
|
|
724
|
-
const
|
|
737
|
+
const params = new URLSearchParams({
|
|
738
|
+
page: data.page,
|
|
739
|
+
customerid: customerId,
|
|
740
|
+
size: data.size,
|
|
741
|
+
});
|
|
725
742
|
|
|
743
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof data.status !== "undefined") {
|
|
744
|
+
params.append("status", data.status);
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
const apiUrl = `services/api/documents/listcustomer?${params.toString()}`;
|
|
726
748
|
const response = await httpRequest(apiUrl, {}, "GET");
|
|
727
|
-
return
|
|
749
|
+
return {
|
|
750
|
+
totalRecords: response.numofrecords,
|
|
751
|
+
records: response.records,
|
|
752
|
+
success: true,
|
|
753
|
+
};
|
|
728
754
|
} catch (error) {
|
|
729
755
|
<span class="cstat-no" title="statement not covered" > if (error.name === "ApacuanaAPIError") {</span>
|
|
730
756
|
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
731
757
|
}
|
|
732
758
|
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
733
|
-
`
|
|
759
|
+
`Failed to get document list (on-premise): ${error.message}`
|
|
734
760
|
);
|
|
735
761
|
}
|
|
736
762
|
};
|
|
737
763
|
|
|
738
764
|
/**
|
|
739
|
-
*
|
|
740
|
-
* @param {object} data -
|
|
741
|
-
* @returns {Promise<
|
|
765
|
+
* Gets a list of documents.
|
|
766
|
+
* @param {object} data - Object with pagination parameters. Must contain {page, size}.
|
|
767
|
+
* @returns {Promise<{totalRecords: number, records:any[], success: boolean}>} Object with the list of documents.
|
|
768
|
+
* @throws {ApacuanaAPIError} If pagination parameters are invalid, if 'customerId' is not configured, if the API call fails, or if the integration type is not supported.
|
|
742
769
|
*/
|
|
743
770
|
export const getDocs = async (data) => {
|
|
744
771
|
helpers.validateGetDocsData(data);
|
|
@@ -754,7 +781,7 @@ export const getDocs = async (data) => {
|
|
|
754
781
|
}
|
|
755
782
|
|
|
756
783
|
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
757
|
-
`
|
|
784
|
+
`Document retrieval is not supported for an unknown integration type: ${integrationType}`,
|
|
758
785
|
501,
|
|
759
786
|
"NOT_IMPLEMENTED"
|
|
760
787
|
);
|
|
@@ -766,7 +793,7 @@ export const getDocs = async (data) => {
|
|
|
766
793
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
767
794
|
Code coverage generated by
|
|
768
795
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
769
|
-
at 2025-08-
|
|
796
|
+
at 2025-08-22T21:07:16.060Z
|
|
770
797
|
</div>
|
|
771
798
|
<script src="../../prettify.js"></script>
|
|
772
799
|
<script>
|