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
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">65.32% </span>
26
+ <span class="strong">57.57% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>81/124</span>
28
+ <span class='fraction'>76/132</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">51.51% </span>
33
+ <span class="strong">45.83% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>34/66</span>
35
+ <span class='fraction'>33/72</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">61.11% </span>
40
+ <span class="strong">57.89% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>11/18</span>
42
+ <span class='fraction'>11/19</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">65.32% </span>
47
+ <span class="strong">57.57% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>81/124</span>
49
+ <span class='fraction'>76/132</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file high" data-value="certs.js"><a href="certs.js.html">certs.js</a></td>
83
- <td data-value="100" class="pic high">
84
- <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
83
+ <td data-value="83.33" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 83%"></div><div class="cover-empty" style="width: 17%"></div></div>
85
85
  </td>
86
- <td data-value="100" class="pct high">100%</td>
87
- <td data-value="25" class="abs high">25/25</td>
88
- <td data-value="72.72" class="pct medium">72.72%</td>
89
- <td data-value="11" class="abs medium">8/11</td>
86
+ <td data-value="83.33" class="pct high">83.33%</td>
87
+ <td data-value="24" class="abs high">20/24</td>
88
+ <td data-value="53.84" class="pct medium">53.84%</td>
89
+ <td data-value="13" class="abs medium">7/13</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
91
  <td data-value="4" class="abs high">4/4</td>
92
- <td data-value="100" class="pct high">100%</td>
93
- <td data-value="25" class="abs high">25/25</td>
92
+ <td data-value="83.33" class="pct high">83.33%</td>
93
+ <td data-value="24" class="abs high">20/24</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
@@ -110,17 +110,17 @@
110
110
 
111
111
  <tr>
112
112
  <td class="file medium" data-value="signatures.js"><a href="signatures.js.html">signatures.js</a></td>
113
- <td data-value="56.75" class="pic medium">
114
- <div class="chart"><div class="cover-fill" style="width: 56%"></div><div class="cover-empty" style="width: 44%"></div></div>
113
+ <td data-value="50.6" class="pic medium">
114
+ <div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
115
115
  </td>
116
- <td data-value="56.75" class="pct medium">56.75%</td>
117
- <td data-value="74" class="abs medium">42/74</td>
118
- <td data-value="42.85" class="pct low">42.85%</td>
119
- <td data-value="35" class="abs low">15/35</td>
120
- <td data-value="50" class="pct medium">50%</td>
121
- <td data-value="12" class="abs medium">6/12</td>
122
- <td data-value="56.75" class="pct medium">56.75%</td>
123
- <td data-value="74" class="abs medium">42/74</td>
116
+ <td data-value="50.6" class="pct medium">50.6%</td>
117
+ <td data-value="83" class="abs medium">42/83</td>
118
+ <td data-value="38.46" class="pct low">38.46%</td>
119
+ <td data-value="39" class="abs low">15/39</td>
120
+ <td data-value="46.15" class="pct low">46.15%</td>
121
+ <td data-value="13" class="abs low">6/13</td>
122
+ <td data-value="50.6" class="pct medium">50.6%</td>
123
+ <td data-value="83" class="abs medium">42/83</td>
124
124
  </tr>
125
125
 
126
126
  <tr>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at 2025-08-25T18:24:18.701Z
149
+ at 2025-08-26T20:21:57.184Z
150
150
  </div>
151
151
  <script src="../../prettify.js"></script>
152
152
  <script>
@@ -105,7 +105,19 @@
105
105
  <a name='L40'></a><a href='#L40'>40</a>
106
106
  <a name='L41'></a><a href='#L41'>41</a>
107
107
  <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
115
+ <span class="cline-any cline-neutral">&nbsp;</span>
116
+ <span class="cline-any cline-neutral">&nbsp;</span>
117
+ <span class="cline-any cline-neutral">&nbsp;</span>
118
+ <span class="cline-any cline-neutral">&nbsp;</span>
119
+ <span class="cline-any cline-neutral">&nbsp;</span>
120
+ <span class="cline-any cline-neutral">&nbsp;</span>
109
121
  <span class="cline-any cline-neutral">&nbsp;</span>
110
122
  <span class="cline-any cline-neutral">&nbsp;</span>
111
123
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -150,10 +162,16 @@
150
162
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { httpRequest } from "../utils/httpClient";
151
163
  import { ApacuanaAPIError } from "../errors/index";
152
164
  &nbsp;
165
+ /**
166
+ * @typedef {object} RequestRevocationResponse
167
+ * @property {string} revocationStatus - El estado de la solicitud de revocación (e.g., "pending").
168
+ * @property {string|number} requestId - El ID de la solicitud de revocación.
169
+ */
170
+ &nbsp;
153
171
  /**
154
172
  * Simula la solicitud de revocación de un certificado.
155
173
  * @param {string} reasonCode - Código o descripción del motivo de la revocación.
156
- * @returns {Promise&lt;object&gt;} Objeto con el estado de la solicitud de revocación.
174
+ * @returns {Promise&lt;RequestRevocationResponse&gt;} Objeto con el estado de la solicitud de revocación.
157
175
  */
158
176
  const requestRevocation = <span class="fstat-no" title="function not covered" >as</span>ync (reasonCode) =&gt; {
159
177
  <span class="cstat-no" title="statement not covered" > console.log("-&gt; Función 'requestRevocation' ejecutada.");</span>
@@ -196,7 +214,7 @@ export default requestRevocation;
196
214
  <div class='footer quiet pad2 space-top1 center small'>
197
215
  Code coverage generated by
198
216
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
199
- at 2025-08-25T18:24:18.701Z
217
+ at 2025-08-26T20:21:57.184Z
200
218
  </div>
201
219
  <script src="../../prettify.js"></script>
202
220
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">56.75% </span>
26
+ <span class="strong">50.6% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>42/74</span>
28
+ <span class='fraction'>42/83</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">42.85% </span>
33
+ <span class="strong">38.46% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>15/35</span>
35
+ <span class='fraction'>15/39</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">50% </span>
40
+ <span class="strong">46.15% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>6/12</span>
42
+ <span class='fraction'>6/13</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">56.75% </span>
47
+ <span class="strong">50.6% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>42/74</span>
49
+ <span class='fraction'>42/83</span>
50
50
  </div>
51
51
 
52
52
 
@@ -364,7 +364,51 @@
364
364
  <a name='L299'></a><a href='#L299'>299</a>
365
365
  <a name='L300'></a><a href='#L300'>300</a>
366
366
  <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
412
  <span class="cline-any cline-neutral">&nbsp;</span>
369
413
  <span class="cline-any cline-neutral">&nbsp;</span>
370
414
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -433,7 +477,32 @@
433
477
  <span class="cline-any cline-neutral">&nbsp;</span>
434
478
  <span class="cline-any cline-yes">2x</span>
435
479
  <span class="cline-any cline-no">&nbsp;</span>
480
+ <span class="cline-any cline-no">&nbsp;</span>
481
+ <span class="cline-any cline-no">&nbsp;</span>
482
+ <span class="cline-any cline-no">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-no">&nbsp;</span>
485
+ <span class="cline-any cline-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-neutral">&nbsp;</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-no">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-no">&nbsp;</span>
436
501
  <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
503
+ <span class="cline-any cline-no">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-no">&nbsp;</span>
437
506
  <span class="cline-any cline-neutral">&nbsp;</span>
438
507
  <span class="cline-any cline-neutral">&nbsp;</span>
439
508
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -561,6 +630,7 @@
561
630
  <span class="cline-any cline-neutral">&nbsp;</span>
562
631
  <span class="cline-any cline-neutral">&nbsp;</span>
563
632
  <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
634
  <span class="cline-any cline-yes">2x</span>
565
635
  <span class="cline-any cline-no">&nbsp;</span>
566
636
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -728,16 +798,50 @@ import { INTEGRATION_TYPE } from "../utils/constant";
728
798
  * @property {boolean} success - Indica si la operación fue exitosa.
729
799
  */
730
800
  &nbsp;
801
+ /**
802
+ * @typedef {object} SignDocumentData
803
+ * @property {object} signature - Objeto con información de la firma.
804
+ * @property {string} signature.id - ID de la firma.
805
+ * @property {Array&lt;object&gt;} signature.positions - Posiciones de la firma.
806
+ * @property {string} cert - Certificado en base64.
807
+ * @property {string} signedDigest - Digest firmado.
808
+ */
809
+ &nbsp;
731
810
  // =================================================================
732
811
  // Internal Functions
733
812
  // =================================================================
734
813
  &nbsp;
735
- const signDocumentOnBoarding = <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {
736
- <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
737
- "Document signing is not supported for integration type: ONBOARDING",
738
- 501,
739
- "NOT_IMPLEMENTED"
740
- );
814
+ const signDocumentOnBoarding = <span class="fstat-no" title="function not covered" >as</span>ync (signData) =&gt; {
815
+ <span class="cstat-no" title="statement not covered" > helpers.validateOnBoardingSignDocumentData(signData);</span>
816
+ const { signature, cert, signedDigest } = <span class="cstat-no" title="statement not covered" >signData;</span>
817
+ <span class="cstat-no" title="statement not covered" > try {</span>
818
+ const signBody = <span class="cstat-no" title="statement not covered" >{</span>
819
+ positions: JSON.stringify(
820
+ signature.positions.map(<span class="fstat-no" title="function not covered" >(p</span>) =&gt; (<span class="cstat-no" title="statement not covered" >{</span>
821
+ x: p.x,
822
+ y: p.y,
823
+ page: p.page,
824
+ status: 1,
825
+ }))
826
+ ),
827
+ publickey: cert,
828
+ signeddigest: signedDigest,
829
+ };
830
+ &nbsp;
831
+ const response = <span class="cstat-no" title="statement not covered" >await httpRequest(</span>
832
+ `services/api/documents/sign/${signature.id}`,
833
+ signBody,
834
+ "PUT"
835
+ );
836
+ <span class="cstat-no" title="statement not covered" > return response;</span>
837
+ } catch (error) {
838
+ <span class="cstat-no" title="statement not covered" > if (error instanceof ApacuanaAPIError) {</span>
839
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
840
+ }
841
+ <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
842
+ `Failed to sign document: ${error.message || "Unknown error"}`
843
+ );
844
+ }
741
845
  };
742
846
  &nbsp;
743
847
  const signDocumentOnPremise = <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {
@@ -859,14 +963,15 @@ const getDocsOnBoarding = async (data) =&gt; {
859
963
  /**
860
964
  * Firma un documento PDF con un certificado digital.
861
965
  * NOTA: Esta función no está implementada actualmente para ningún tipo de integración.
966
+ * @param {SignDocumentData} signData - Datos necesarios para la firma.
862
967
  * @returns {Promise&lt;object&gt;}
863
968
  * @throws {ApacuanaAPIError} Arroja un error 'NOT_IMPLEMENTED' para cualquier tipo de integración.
864
969
  */
865
- export const signDocument = <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {
970
+ export const signDocument = <span class="fstat-no" title="function not covered" >as</span>ync (signData) =&gt; {
866
971
  const { integrationType } = <span class="cstat-no" title="statement not covered" >getConfig();</span>
867
972
  &nbsp;
868
973
  <span class="cstat-no" title="statement not covered" > if (integrationType === INTEGRATION_TYPE.ONBOARDING) {</span>
869
- <span class="cstat-no" title="statement not covered" > return signDocumentOnBoarding();</span>
974
+ <span class="cstat-no" title="statement not covered" > return signDocumentOnBoarding(signData);</span>
870
975
  }
871
976
  &nbsp;
872
977
  <span class="cstat-no" title="statement not covered" > if (integrationType === INTEGRATION_TYPE.ONPREMISE) {</span>
@@ -973,7 +1078,7 @@ export const getDocs = async (data) =&gt; {
973
1078
  <div class='footer quiet pad2 space-top1 center small'>
974
1079
  Code coverage generated by
975
1080
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
976
- at 2025-08-25T18:24:18.701Z
1081
+ at 2025-08-26T20:21:57.184Z
977
1082
  </div>
978
1083
  <script src="../../prettify.js"></script>
979
1084
  <script>
@@ -125,7 +125,21 @@
125
125
  <a name='L60'></a><a href='#L60'>60</a>
126
126
  <a name='L61'></a><a href='#L61'>61</a>
127
127
  <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-neutral">&nbsp;</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
143
  <span class="cline-any cline-neutral">&nbsp;</span>
130
144
  <span class="cline-any cline-neutral">&nbsp;</span>
131
145
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -191,12 +205,19 @@
191
205
  import { ApacuanaAPIError } from "../errors/index";
192
206
  import { getConfig } from "../config/index";
193
207
  &nbsp;
208
+ /**
209
+ * @typedef {object} GetCustomerResponse
210
+ * @property {string} token - El token de sesión del usuario.
211
+ * @property {object} userData - Los datos del usuario obtenidos.
212
+ * @property {boolean} success - Indica si la operación fue exitosa.
213
+ */
214
+ &nbsp;
194
215
  /**
195
216
  * Obtiene el token de un usuario a través de una petición POST.
196
217
  * Este método es útil para endpoints que requieren datos en el cuerpo de la petición
197
218
  * para buscar un usuario, como un ID de sesión o un token de acceso.
198
219
  *
199
- * @returns {Promise&lt;{token: string, userData: object, success: boolean}&gt;} Objeto con el token de sesión, los datos del usuario y un indicador de éxito.
220
+ * @returns {Promise&lt;GetCustomerResponse&gt;} Objeto con el token de sesión, los datos del usuario y un indicador de éxito.
200
221
  * @throws {Error} Si los parámetros de entrada son inválidos.
201
222
  * @throws {ApacuanaAPIError} Si ocurre un error en la API de Apacuana.
202
223
  */
@@ -256,7 +277,7 @@ export default getCustomer;
256
277
  <div class='footer quiet pad2 space-top1 center small'>
257
278
  Code coverage generated by
258
279
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
259
- at 2025-08-25T18:24:18.701Z
280
+ at 2025-08-26T20:21:57.184Z
260
281
  </div>
261
282
  <script src="../../prettify.js"></script>
262
283
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2025-08-25T18:24:18.701Z
104
+ at 2025-08-26T20:21:57.184Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -193,7 +193,7 @@ export const getConfig = <span class="fstat-no" title="function not covered" >()
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
196
- at 2025-08-25T18:24:18.701Z
196
+ at 2025-08-26T20:21:57.184Z
197
197
  </div>
198
198
  <script src="../../prettify.js"></script>
199
199
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2025-08-25T18:24:18.701Z
104
+ at 2025-08-26T20:21:57.184Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -91,15 +91,15 @@
91
91
  <span class="cline-any cline-neutral">&nbsp;</span>
92
92
  <span class="cline-any cline-neutral">&nbsp;</span>
93
93
  <span class="cline-any cline-neutral">&nbsp;</span>
94
- <span class="cline-any cline-yes">21x</span>
95
- <span class="cline-any cline-yes">21x</span>
96
- <span class="cline-any cline-yes">21x</span>
97
- <span class="cline-any cline-yes">21x</span>
98
- <span class="cline-any cline-yes">21x</span>
94
+ <span class="cline-any cline-yes">19x</span>
95
+ <span class="cline-any cline-yes">19x</span>
96
+ <span class="cline-any cline-yes">19x</span>
97
+ <span class="cline-any cline-yes">19x</span>
98
+ <span class="cline-any cline-yes">19x</span>
99
99
  <span class="cline-any cline-neutral">&nbsp;</span>
100
100
  <span class="cline-any cline-neutral">&nbsp;</span>
101
- <span class="cline-any cline-yes">21x</span>
102
- <span class="cline-any cline-yes">21x</span>
101
+ <span class="cline-any cline-yes">19x</span>
102
+ <span class="cline-any cline-yes">19x</span>
103
103
  <span class="cline-any cline-neutral">&nbsp;</span>
104
104
  <span class="cline-any cline-neutral">&nbsp;</span>
105
105
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -133,7 +133,7 @@ export default ApacuanaAPIError;
133
133
  <div class='footer quiet pad2 space-top1 center small'>
134
134
  Code coverage generated by
135
135
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
136
- at 2025-08-25T18:24:18.701Z
136
+ at 2025-08-26T20:21:57.184Z
137
137
  </div>
138
138
  <script src="../../prettify.js"></script>
139
139
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2025-08-25T18:24:18.701Z
104
+ at 2025-08-26T20:21:57.184Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -134,7 +134,9 @@
134
134
  <a name='L69'></a><a href='#L69'>69</a>
135
135
  <a name='L70'></a><a href='#L70'>70</a>
136
136
  <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
138
140
  <span class="cline-any cline-neutral">&nbsp;</span>
139
141
  <span class="cline-any cline-neutral">&nbsp;</span>
140
142
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -205,12 +207,14 @@
205
207
  <span class="cline-any cline-neutral">&nbsp;</span>
206
208
  <span class="cline-any cline-neutral">&nbsp;</span>
207
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>
208
212
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { setConfig, getConfig } from "./config/index";
209
213
  import { initHttpClient, setAuthToken } from "./utils/httpClient";
210
214
  import getCustomer from "./api/users";
211
215
  import requestRevocation from "./api/revocations";
212
216
  import { generateCert, getCertStatus } from "./api/certs";
213
- import { addSigner, getDocs } from "./api/signatures";
217
+ import { addSigner, getDigest, getDocs, signDocument } from "./api/signatures";
214
218
  &nbsp;
215
219
  const apacuana = {
216
220
  /**
@@ -273,6 +277,8 @@ const apacuana = {
273
277
  addSigner,
274
278
  getDocs,
275
279
  generateCert,
280
+ signDocument,
281
+ getDigest,
276
282
  };
277
283
  &nbsp;
278
284
  export default apacuana;
@@ -283,7 +289,7 @@ export default apacuana;
283
289
  <div class='footer quiet pad2 space-top1 center small'>
284
290
  Code coverage generated by
285
291
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
286
- at 2025-08-25T18:24:18.701Z
292
+ at 2025-08-26T20:21:57.184Z
287
293
  </div>
288
294
  <script src="../prettify.js"></script>
289
295
  <script>
@@ -120,8 +120,8 @@ export const VERIFICATION_STATUS = {
120
120
  };
121
121
  &nbsp;
122
122
  export const INTEGRATION_TYPE = {
123
- ONBOARDING: 'onboarding',
124
- ONPREMISE: 'onpremise',
123
+ ONBOARDING: "ONBOARDING",
124
+ ONPREMISE: "ONPREMISE",
125
125
  };
126
126
  &nbsp;</pre></td></tr></table></pre>
127
127
 
@@ -130,7 +130,7 @@ export const INTEGRATION_TYPE = {
130
130
  <div class='footer quiet pad2 space-top1 center small'>
131
131
  Code coverage generated by
132
132
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
133
- at 2025-08-25T18:24:18.701Z
133
+ at 2025-08-26T20:21:57.184Z
134
134
  </div>
135
135
  <script src="../../prettify.js"></script>
136
136
  <script>