apacuana-sdk-core 0.6.0 → 0.7.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 (54) hide show
  1. package/README.md +105 -250
  2. package/babel.config.cjs +11 -0
  3. package/coverage/clover.xml +189 -195
  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 +41 -41
  13. package/coverage/lcov-report/src/api/certs.js.html +55 -34
  14. package/coverage/lcov-report/src/api/index.html +25 -25
  15. package/coverage/lcov-report/src/api/revocations.js.html +135 -30
  16. package/coverage/lcov-report/src/api/signatures.js.html +76 -4
  17. package/coverage/lcov-report/src/api/users.js.html +1 -1
  18. package/coverage/lcov-report/src/config/index.html +13 -13
  19. package/coverage/lcov-report/src/config/index.js.html +69 -18
  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 +15 -15
  23. package/coverage/lcov-report/src/index.js.html +14 -68
  24. package/coverage/lcov-report/src/utils/constant.js.html +1 -1
  25. package/coverage/lcov-report/src/utils/helpers.js.html +18 -51
  26. package/coverage/lcov-report/src/utils/httpClient.js.html +6 -72
  27. package/coverage/lcov-report/src/utils/index.html +19 -19
  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 +334 -337
  32. package/dist/api/certs.d.ts +11 -1
  33. package/dist/api/revocations.d.ts +32 -12
  34. package/dist/api/signatures.d.ts +37 -5
  35. package/dist/config/index.d.ts +13 -2
  36. package/dist/index.d.ts +4 -1
  37. package/dist/index.js +436 -290
  38. package/dist/index.js.map +1 -1
  39. package/dist/index.mjs +436 -290
  40. package/dist/index.mjs.map +1 -1
  41. package/dist/utils/helpers.d.ts +1 -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 +17 -10
  46. package/src/api/revocations.js +55 -20
  47. package/src/api/signatures.js +25 -1
  48. package/src/config/index.js +25 -8
  49. package/src/index.js +4 -22
  50. package/src/utils/helpers.js +11 -22
  51. package/src/utils/httpClient.js +0 -22
  52. package/tests/api/certs.test.js +30 -48
  53. package/tsconfig.json +2 -1
  54. 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">60.9% </span>
26
+ <span class="strong">56.61% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>81/133</span>
28
+ <span class='fraction'>77/136</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">48.57% </span>
33
+ <span class="strong">48.52% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>34/70</span>
35
+ <span class='fraction'>33/68</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">57.89% </span>
40
+ <span class="strong">55% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>11/19</span>
42
+ <span class='fraction'>11/20</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">60.9% </span>
47
+ <span class="strong">56.61% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>81/133</span>
49
+ <span class='fraction'>77/136</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,32 +80,32 @@
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="63.63" class="pct medium">63.63%</td>
89
+ <td data-value="11" class="abs medium">7/11</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>
97
97
  <td class="file low" data-value="revocations.js"><a href="revocations.js.html">revocations.js</a></td>
98
- <td data-value="8.33" class="pic low">
99
- <div class="chart"><div class="cover-fill" style="width: 8%"></div><div class="cover-empty" style="width: 92%"></div></div>
98
+ <td data-value="12.5" class="pic low">
99
+ <div class="chart"><div class="cover-fill" style="width: 12%"></div><div class="cover-empty" style="width: 88%"></div></div>
100
100
  </td>
101
- <td data-value="8.33" class="pct low">8.33%</td>
102
- <td data-value="12" class="abs low">1/12</td>
101
+ <td data-value="12.5" class="pct low">12.5%</td>
102
+ <td data-value="16" class="abs low">2/16</td>
103
103
  <td data-value="0" class="pct low">0%</td>
104
- <td data-value="8" class="abs low">0/8</td>
104
+ <td data-value="6" class="abs low">0/6</td>
105
105
  <td data-value="0" class="pct low">0%</td>
106
- <td data-value="1" class="abs low">0/1</td>
107
- <td data-value="8.33" class="pct low">8.33%</td>
108
- <td data-value="12" class="abs low">1/12</td>
106
+ <td data-value="2" class="abs low">0/2</td>
107
+ <td data-value="12.5" class="pct low">12.5%</td>
108
+ <td data-value="16" class="abs low">2/16</td>
109
109
  </tr>
110
110
 
111
111
  <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-25T23:18:38.359Z
149
+ at 2025-08-29T13:20:25.539Z
150
150
  </div>
151
151
  <script src="../../prettify.js"></script>
152
152
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">8.33% </span>
26
+ <span class="strong">12.5% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>1/12</span>
28
+ <span class='fraction'>2/16</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/8</span>
35
+ <span class='fraction'>0/6</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>0/2</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">8.33% </span>
47
+ <span class="strong">12.5% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>1/12</span>
49
+ <span class='fraction'>2/16</span>
50
50
  </div>
51
51
 
52
52
 
@@ -111,7 +111,66 @@
111
111
  <a name='L46'></a><a href='#L46'>46</a>
112
112
  <a name='L47'></a><a href='#L47'>47</a>
113
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>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
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>
136
+ <a name='L71'></a><a href='#L71'>71</a>
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>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span>
153
+ <span class="cline-any cline-neutral">&nbsp;</span>
154
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span>
157
+ <span class="cline-any cline-neutral">&nbsp;</span>
158
+ <span class="cline-any cline-neutral">&nbsp;</span>
159
+ <span class="cline-any cline-neutral">&nbsp;</span>
160
+ <span class="cline-any cline-neutral">&nbsp;</span>
161
+ <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>
164
+ <span class="cline-any cline-neutral">&nbsp;</span>
165
+ <span class="cline-any cline-neutral">&nbsp;</span>
166
+ <span class="cline-any cline-neutral">&nbsp;</span>
167
+ <span class="cline-any cline-neutral">&nbsp;</span>
168
+ <span class="cline-any cline-neutral">&nbsp;</span>
169
+ <span class="cline-any cline-neutral">&nbsp;</span>
170
+ <span class="cline-any cline-neutral">&nbsp;</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-neutral">&nbsp;</span>
115
174
  <span class="cline-any cline-neutral">&nbsp;</span>
116
175
  <span class="cline-any cline-neutral">&nbsp;</span>
117
176
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -130,29 +189,40 @@
130
189
  <span class="cline-any cline-no">&nbsp;</span>
131
190
  <span class="cline-any cline-neutral">&nbsp;</span>
132
191
  <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-neutral">&nbsp;</span>
134
192
  <span class="cline-any cline-no">&nbsp;</span>
135
193
  <span class="cline-any cline-no">&nbsp;</span>
136
194
  <span class="cline-any cline-neutral">&nbsp;</span>
137
195
  <span class="cline-any cline-neutral">&nbsp;</span>
138
196
  <span class="cline-any cline-neutral">&nbsp;</span>
139
197
  <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
199
  <span class="cline-any cline-no">&nbsp;</span>
200
+ <span class="cline-any cline-neutral">&nbsp;</span>
141
201
  <span class="cline-any cline-no">&nbsp;</span>
142
202
  <span class="cline-any cline-neutral">&nbsp;</span>
143
203
  <span class="cline-any cline-neutral">&nbsp;</span>
144
204
  <span class="cline-any cline-neutral">&nbsp;</span>
145
205
  <span class="cline-any cline-neutral">&nbsp;</span>
206
+ <span class="cline-any cline-neutral">&nbsp;</span>
207
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">1x</span>
146
211
  <span class="cline-any cline-no">&nbsp;</span>
147
212
  <span class="cline-any cline-no">&nbsp;</span>
148
- <span class="cline-any cline-no">&nbsp;</span>
149
213
  <span class="cline-any cline-neutral">&nbsp;</span>
150
214
  <span class="cline-any cline-neutral">&nbsp;</span>
151
215
  <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-neutral">&nbsp;</span>
218
+ <span class="cline-any cline-no">&nbsp;</span>
152
219
  <span class="cline-any cline-no">&nbsp;</span>
153
220
  <span class="cline-any cline-neutral">&nbsp;</span>
154
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-no">&nbsp;</span>
155
223
  <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-no">&nbsp;</span>
225
+ <span class="cline-any cline-no">&nbsp;</span>
156
226
  <span class="cline-any cline-neutral">&nbsp;</span>
157
227
  <span class="cline-any cline-no">&nbsp;</span>
158
228
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -173,40 +243,75 @@ import { ApacuanaAPIError } from "../errors/index";
173
243
  * @param {string} reasonCode - Código o descripción del motivo de la revocación.
174
244
  * @returns {Promise&lt;RequestRevocationResponse&gt;} Objeto con el estado de la solicitud de revocación.
175
245
  */
176
- const requestRevocation = <span class="fstat-no" title="function not covered" >as</span>ync (reasonCode) =&gt; {
177
- <span class="cstat-no" title="statement not covered" > console.log("-&gt; Función 'requestRevocation' ejecutada.");</span>
178
- <span class="cstat-no" title="statement not covered" > console.log("Parámetros recibidos para solicitud de revocación:", {</span>
179
- reasonCode,
180
- });
246
+ /**
247
+ * @typedef {object} RevocationResponse
248
+ * @property {boolean} success - Indicates if the revocation request was successful.
249
+ * @property {string} [message] - A message providing details about the outcome.
250
+ */
181
251
  &nbsp;
252
+ /**
253
+ * @typedef {object} RevocationReason
254
+ * @property {string} code - The code for the revocation reason.
255
+ * @property {string} description - The description of the revocation reason.
256
+ */
257
+ &nbsp;
258
+ /**
259
+ * @typedef {object} RevocationReasonsResponse
260
+ * @property {boolean} success - Indicates if the request was successful.
261
+ * @property {RevocationReason[]} reasons - A list of revocation reasons.
262
+ */
263
+ &nbsp;
264
+ /**
265
+ * Requests the revocation of a certificate.
266
+ * @param {number} reasonCode - Código o descripción del motivo de la revocación.
267
+ * @returns {Promise&lt;RevocationResponse&gt;} An object indicating the success of the request.
268
+ * @throws {ApacuanaAPIError} If the revocation request fails.
269
+ */
270
+ export const requestRevocation = <span class="fstat-no" title="function not covered" >as</span>ync (reasonCode) =&gt; {
182
271
  <span class="cstat-no" title="statement not covered" > if (!reasonCode) {</span>
183
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
184
- "ID de certificado y motivo son requeridos para requestRevocation."
185
- );
272
+ <span class="cstat-no" title="statement not covered" > throw new Error("Código de motivo es requerido para requestRevocation.");</span>
186
273
  }
187
274
  &nbsp;
188
275
  <span class="cstat-no" title="statement not covered" > try {</span>
189
276
  const response = <span class="cstat-no" title="statement not covered" >await httpRequest(</span>
190
- "users/api/customers/requestcert",
277
+ "services/api/onboardingclient/requestcert",
191
278
  { reason: reasonCode },
192
279
  "POST"
193
280
  );
194
- <span class="cstat-no" title="statement not covered" > console.log("Respuesta del servidor", response);</span>
195
- <span class="cstat-no" title="statement not covered" > if (!response.success) {</span>
196
- <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
197
- response.message || "Error desconocido al solicitar revocación."
198
- );
199
- }
200
- <span class="cstat-no" title="statement not covered" > return {</span>
201
- revocationStatus: response.status || "pending",
202
- requestId: response.id,
203
- };
281
+ &nbsp;
282
+ <span class="cstat-no" title="statement not covered" > return response;</span>
204
283
  } catch (error) {
205
284
  <span class="cstat-no" title="statement not covered" > throw new Error(`Fallo en la solicitud de revocación: ${error.message}`);</span>
206
285
  }
207
286
  };
208
287
  &nbsp;
209
- export default requestRevocation;
288
+ /**
289
+ * Retrieves the available reasons for certificate revocation.
290
+ * @returns {Promise&lt;RevocationReasonsResponse&gt;} An object containing the list of revocation reasons.
291
+ * @throws {ApacuanaAPIError} If fetching the reasons fails.
292
+ */
293
+ export const getRevocationReasons = <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {
294
+ <span class="cstat-no" title="statement not covered" > try {</span>
295
+ const response = <span class="cstat-no" title="statement not covered" >await httpRequest(</span>
296
+ "config/api/revocation/reasonsonboarding",
297
+ {},
298
+ "GET"
299
+ );
300
+ &nbsp;
301
+ <span class="cstat-no" title="statement not covered" > if (!response.records) {</span>
302
+ <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError("Failed to fetch revocation reasons.");</span>
303
+ }
304
+ &nbsp;
305
+ <span class="cstat-no" title="statement not covered" > return response.records;</span>
306
+ } catch (error) {
307
+ <span class="cstat-no" title="statement not covered" > if (error instanceof ApacuanaAPIError) {</span>
308
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
309
+ }
310
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
311
+ "Failed to get revocation reasons. Please try again later."
312
+ );
313
+ }
314
+ };
210
315
  &nbsp;</pre></td></tr></table></pre>
211
316
 
212
317
  <div class='push'></div><!-- for sticky footer -->
@@ -214,7 +319,7 @@ export default requestRevocation;
214
319
  <div class='footer quiet pad2 space-top1 center small'>
215
320
  Code coverage generated by
216
321
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
217
- at 2025-08-25T23:18:38.359Z
322
+ at 2025-08-29T13:20:25.539Z
218
323
  </div>
219
324
  <script src="../../prettify.js"></script>
220
325
  <script>
@@ -399,8 +399,31 @@
399
399
  <a name='L334'></a><a href='#L334'>334</a>
400
400
  <a name='L335'></a><a href='#L335'>335</a>
401
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>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
404
427
  <span class="cline-any cline-neutral">&nbsp;</span>
405
428
  <span class="cline-any cline-neutral">&nbsp;</span>
406
429
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -681,6 +704,31 @@
681
704
  <span class="cline-any cline-neutral">&nbsp;</span>
682
705
  <span class="cline-any cline-neutral">&nbsp;</span>
683
706
  <span class="cline-any cline-neutral">&nbsp;</span>
707
+ <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-neutral">&nbsp;</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-neutral">&nbsp;</span>
713
+ <span class="cline-any cline-neutral">&nbsp;</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
716
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-neutral">&nbsp;</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-neutral">&nbsp;</span>
684
732
  <span class="cline-any cline-yes">2x</span>
685
733
  <span class="cline-any cline-yes">4x</span>
686
734
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -758,7 +806,6 @@ import { INTEGRATION_TYPE } from "../utils/constant";
758
806
  * Define la estructura de datos para añadir un firmante.
759
807
  * @typedef {object} SignerData
760
808
  * @property {string} docId - Identificador único del documento.
761
- * @property {Signer} signer - Objeto con la información del firmante.
762
809
  */
763
810
  &nbsp;
764
811
  /**
@@ -1017,6 +1064,31 @@ export const getDigest = <span class="fstat-no" title="function not covered" >as
1017
1064
  * @returns {Promise&lt;AddSignerResponse&gt;} Una promesa que resuelve a un objeto con el resultado de la operación.
1018
1065
  * @throws {ApacuanaAPIError} Si los datos del firmante son inválidos, la llamada a la API falla, o el tipo de integración no es soportado.
1019
1066
  */
1067
+ /**
1068
+ * @typedef {object} SignaturePosition
1069
+ * @property {number} page - The page number for the signature.
1070
+ * @property {number} x - The x-coordinate for the signature's position (from 0 to 1).
1071
+ * @property {number} y - The y-coordinate for the signature's position (from 0 to 1).
1072
+ */
1073
+ &nbsp;
1074
+ /**
1075
+ * @typedef {object} OnboardingSignerData
1076
+ * @property {string} name - The name of the document.
1077
+ * @property {string} reference - An external reference for the document.
1078
+ * @property {string} typedoc - The type of document of the signer (e.g., "V", "E", "J").
1079
+ * @property {string} doc - The document number of the signer.
1080
+ * @property {SignaturePosition[]} signature - An array of signature positions.
1081
+ */
1082
+ &nbsp;
1083
+ /**
1084
+ * Adds a new signer to the signature process.
1085
+ * This function acts as a dispatcher, delegating to the appropriate implementation
1086
+ * based on the configured integration type.
1087
+ *
1088
+ * @param {OnboardingSignerData | object} signerData - The signer's data. The structure depends on the integration type.
1089
+ * @returns {Promise&lt;object&gt;} The result from the API.
1090
+ * @throws {ApacuanaAPIError} If signerData is invalid or if the integration type is not supported.
1091
+ */
1020
1092
  export const addSigner = async (signerData) =&gt; {
1021
1093
  if (
1022
1094
  !signerData ||
@@ -1078,7 +1150,7 @@ export const getDocs = async (data) =&gt; {
1078
1150
  <div class='footer quiet pad2 space-top1 center small'>
1079
1151
  Code coverage generated by
1080
1152
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1081
- at 2025-08-25T23:18:38.359Z
1153
+ at 2025-08-29T13:20:25.539Z
1082
1154
  </div>
1083
1155
  <script src="../../prettify.js"></script>
1084
1156
  <script>
@@ -277,7 +277,7 @@ export default getCustomer;
277
277
  <div class='footer quiet pad2 space-top1 center small'>
278
278
  Code coverage generated by
279
279
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
280
- at 2025-08-25T23:18:38.359Z
280
+ at 2025-08-29T13:20:25.539Z
281
281
  </div>
282
282
  <script src="../../prettify.js"></script>
283
283
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">27.27% </span>
26
+ <span class="strong">35.71% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>3/11</span>
28
+ <span class='fraction'>5/14</span>
29
29
  </div>
30
30
 
31
31
 
@@ -39,14 +39,14 @@
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/2</span>
42
+ <span class='fraction'>0/3</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">30% </span>
47
+ <span class="strong">38.46% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>3/10</span>
49
+ <span class='fraction'>5/13</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file low" data-value="index.js"><a href="index.js.html">index.js</a></td>
83
- <td data-value="27.27" class="pic low">
84
- <div class="chart"><div class="cover-fill" style="width: 27%"></div><div class="cover-empty" style="width: 73%"></div></div>
83
+ <td data-value="35.71" class="pic low">
84
+ <div class="chart"><div class="cover-fill" style="width: 35%"></div><div class="cover-empty" style="width: 65%"></div></div>
85
85
  </td>
86
- <td data-value="27.27" class="pct low">27.27%</td>
87
- <td data-value="11" class="abs low">3/11</td>
86
+ <td data-value="35.71" class="pct low">35.71%</td>
87
+ <td data-value="14" class="abs low">5/14</td>
88
88
  <td data-value="0" class="pct low">0%</td>
89
89
  <td data-value="9" class="abs low">0/9</td>
90
90
  <td data-value="0" class="pct low">0%</td>
91
- <td data-value="2" class="abs low">0/2</td>
92
- <td data-value="30" class="pct low">30%</td>
93
- <td data-value="10" class="abs low">3/10</td>
91
+ <td data-value="3" class="abs low">0/3</td>
92
+ <td data-value="38.46" class="pct low">38.46%</td>
93
+ <td data-value="13" class="abs low">5/13</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -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-25T23:18:38.359Z
104
+ at 2025-08-29T13:20:25.539Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>