apacuana-sdk-core 0.1.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.
Files changed (35) hide show
  1. package/README.md +175 -55
  2. package/coverage/clover.xml +249 -101
  3. package/coverage/coverage-final.json +9 -6
  4. package/coverage/lcov-report/index.html +45 -30
  5. package/coverage/lcov-report/src/api/certs.js.html +117 -81
  6. package/coverage/lcov-report/src/api/index.html +40 -25
  7. package/coverage/lcov-report/src/api/revocations.js.html +1 -1
  8. package/coverage/lcov-report/src/api/signatures.js.html +546 -72
  9. package/coverage/lcov-report/src/api/users.js.html +25 -61
  10. package/coverage/lcov-report/src/config/index.html +21 -21
  11. package/coverage/lcov-report/src/config/index.js.html +65 -32
  12. package/coverage/lcov-report/src/errors/index.html +5 -5
  13. package/coverage/lcov-report/src/errors/index.js.html +13 -10
  14. package/coverage/lcov-report/src/index.html +1 -1
  15. package/coverage/lcov-report/src/index.js.html +13 -4
  16. package/coverage/lcov-report/src/utils/constant.js.html +4 -4
  17. package/coverage/lcov-report/src/utils/helpers.js.html +290 -116
  18. package/coverage/lcov-report/src/utils/httpClient.js.html +646 -0
  19. package/coverage/lcov-report/src/utils/index.html +30 -15
  20. package/coverage/lcov.info +515 -181
  21. package/dist/index.js +323 -189
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +323 -189
  24. package/dist/index.mjs.map +1 -1
  25. package/package.json +1 -1
  26. package/src/api/certs.js +49 -37
  27. package/src/api/signatures.js +213 -49
  28. package/src/api/users.js +17 -29
  29. package/src/errors/index.js +1 -0
  30. package/src/index.js +4 -1
  31. package/src/utils/helpers.js +156 -98
  32. package/tests/api/certs.test.js +111 -5
  33. package/tests/api/signatures.test.js +152 -4
  34. package/tests/api/users.test.js +11 -10
  35. package/src/auth/index.js +0 -24
@@ -25,14 +25,14 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>17/17</span>
28
+ <span class='fraction'>13/13</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">92.3% </span>
33
+ <span class="strong">91.66% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>12/13</span>
35
+ <span class='fraction'>11/12</span>
36
36
  </div>
37
37
 
38
38
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>17/17</span>
49
+ <span class='fraction'>13/13</span>
50
50
  </div>
51
51
 
52
52
 
@@ -125,19 +125,7 @@
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>
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
128
+ <a name='L63'></a><a href='#L63'>63</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
141
129
  <span class="cline-any cline-neutral">&nbsp;</span>
142
130
  <span class="cline-any cline-neutral">&nbsp;</span>
143
131
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -152,15 +140,6 @@
152
140
  <span class="cline-any cline-neutral">&nbsp;</span>
153
141
  <span class="cline-any cline-yes">1x</span>
154
142
  <span class="cline-any cline-yes">5x</span>
155
- <span class="cline-any cline-yes">5x</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-yes">5x</span>
161
- <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-yes">5x</span>
163
- <span class="cline-any cline-neutral">&nbsp;</span>
164
143
  <span class="cline-any cline-neutral">&nbsp;</span>
165
144
  <span class="cline-any cline-yes">5x</span>
166
145
  <span class="cline-any cline-yes">1x</span>
@@ -168,7 +147,6 @@
168
147
  <span class="cline-any cline-neutral">&nbsp;</span>
169
148
  <span class="cline-any cline-neutral">&nbsp;</span>
170
149
  <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-yes">4x</span>
172
150
  <span class="cline-any cline-neutral">&nbsp;</span>
173
151
  <span class="cline-any cline-neutral">&nbsp;</span>
174
152
  <span class="cline-any cline-yes">4x</span>
@@ -176,14 +154,14 @@
176
154
  <span class="cline-any cline-neutral">&nbsp;</span>
177
155
  <span class="cline-any cline-neutral">&nbsp;</span>
178
156
  <span class="cline-any cline-neutral">&nbsp;</span>
157
+ <span class="cline-any cline-yes">4x</span>
158
+ <span class="cline-any cline-yes">4x</span>
179
159
  <span class="cline-any cline-neutral">&nbsp;</span>
180
160
  <span class="cline-any cline-neutral">&nbsp;</span>
181
161
  <span class="cline-any cline-neutral">&nbsp;</span>
182
162
  <span class="cline-any cline-neutral">&nbsp;</span>
183
- <span class="cline-any cline-yes">2x</span>
184
163
  <span class="cline-any cline-neutral">&nbsp;</span>
185
164
  <span class="cline-any cline-yes">2x</span>
186
- <span class="cline-any cline-neutral">&nbsp;</span>
187
165
  <span class="cline-any cline-yes">1x</span>
188
166
  <span class="cline-any cline-neutral">&nbsp;</span>
189
167
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -197,8 +175,6 @@
197
175
  <span class="cline-any cline-neutral">&nbsp;</span>
198
176
  <span class="cline-any cline-neutral">&nbsp;</span>
199
177
  <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-yes">3x</span>
202
178
  <span class="cline-any cline-yes">3x</span>
203
179
  <span class="cline-any cline-yes">2x</span>
204
180
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -220,46 +196,36 @@ import { getConfig } from "../config/index";
220
196
  * Este método es útil para endpoints que requieren datos en el cuerpo de la petición
221
197
  * para buscar un usuario, como un ID de sesión o un token de acceso.
222
198
  *
223
- * @returns {Promise&lt;object&gt;} Objeto con los detalles del usuario.
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.
224
200
  * @throws {Error} Si los parámetros de entrada son inválidos.
225
201
  * @throws {ApacuanaAPIError} Si ocurre un error en la API de Apacuana.
226
202
  */
227
203
  const getCustomer = async () =&gt; {
228
204
  const { verificationId, customerId } = getConfig();
205
+ &nbsp;
206
+ if (!verificationId || !customerId) {
207
+ throw new ApacuanaAPIError(
208
+ "Both 'verificationId' and 'customerId' must be configured.",
209
+ 400,
210
+ "CONFIGURATION_ERROR"
211
+ );
212
+ }
213
+ &nbsp;
229
214
  const body = {
230
215
  verificationid: verificationId,
231
216
  customerid: customerId,
232
217
  };
233
- // eslint-disable-next-line no-console
234
- console.log("-&gt; Función 'getCustomer' ejecutada.");
235
- // eslint-disable-next-line no-console
236
- console.log("Parámetros recibidos para buscar usuario:", body);
237
- &nbsp;
238
- // 1. Validación de Parámetros de Entrada (Lado del SDK)
239
- if (!body || !body.verificationid || !body.customerid) {
240
- throw new Error(
241
- "El 'body' con 'userId' es un parámetro requerido para getCustomer."
242
- );
243
- }
244
218
  &nbsp;
245
219
  try {
246
- // 2. Realizar la Llamada al Backend a través del HttpClient
247
- // Usamos POST ya que la búsqueda podría requerir datos sensibles o complejos en el cuerpo.
248
220
  const response = await httpRequest(
249
- "services/api/register/init", // Endpoint de ejemplo
250
- body, // Los datos a enviar en el cuerpo de la petición
221
+ "services/api/register/init",
222
+ body,
251
223
  "POST"
252
224
  );
253
- &nbsp;
254
- // 3. Procesar la Respuesta del Backend
255
- // Asumiendo que la respuesta exitosa del backend incluye un objeto 'user'
256
- // eslint-disable-next-line no-console
257
- console.log("Respuesta del servidor para el token:", response);
258
225
  &nbsp;
259
226
  if (!response.sessionid || !response.entry) {
260
- // Si el backend no devuelve el objeto 'user' esperado
261
227
  throw new ApacuanaAPIError(
262
- "La respuesta de la API no contiene el usuario.",
228
+ "The API response does not contain the user.",
263
229
  200,
264
230
  "INVALID_API_RESPONSE"
265
231
  );
@@ -268,17 +234,15 @@ const getCustomer = async () =&gt; {
268
234
  return {
269
235
  token: response.sessionid,
270
236
  userData: response.entry,
271
- }; // Retorna el objeto de usuario directamente
237
+ success: true,
238
+ };
272
239
  } catch (error) {
273
- // 4. Manejo de Errores
274
- // eslint-disable-next-line no-console
275
- console.error("Error en getCustomer:", error);
276
240
  if (error instanceof ApacuanaAPIError) {
277
241
  throw error;
278
242
  }
279
243
  throw new ApacuanaAPIError(
280
- `Fallo inesperado al obtener el token: ${
281
- error.message || <span class="branch-1 cbranch-no" title="branch not covered" >"Error desconocido"</span>
244
+ `Unexpected failure getting token: ${
245
+ error.message || <span class="branch-1 cbranch-no" title="branch not covered" >"Unknown error"</span>
282
246
  }`
283
247
  );
284
248
  }
@@ -292,7 +256,7 @@ export default getCustomer;
292
256
  <div class='footer quiet pad2 space-top1 center small'>
293
257
  Code coverage generated by
294
258
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
295
- at 2025-08-15T20:05:10.802Z
259
+ at 2025-08-22T21:07:16.060Z
296
260
  </div>
297
261
  <script src="../../prettify.js"></script>
298
262
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">62.5% </span>
26
+ <span class="strong">27.27% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>5/8</span>
28
+ <span class='fraction'>3/11</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">33.33% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/6</span>
35
+ <span class='fraction'>0/9</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">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/2</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">71.42% </span>
47
+ <span class="strong">30% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>5/7</span>
49
+ <span class='fraction'>3/10</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 medium'></div>
64
+ <div class='status-line low'></div>
65
65
  <div class="pad1">
66
66
  <table class="coverage-summary">
67
67
  <thead>
@@ -79,18 +79,18 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
- <td class="file medium" data-value="index.js"><a href="index.js.html">index.js</a></td>
83
- <td data-value="62.5" class="pic medium">
84
- <div class="chart"><div class="cover-fill" style="width: 62%"></div><div class="cover-empty" style="width: 38%"></div></div>
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>
85
85
  </td>
86
- <td data-value="62.5" class="pct medium">62.5%</td>
87
- <td data-value="8" class="abs medium">5/8</td>
88
- <td data-value="33.33" class="pct low">33.33%</td>
89
- <td data-value="6" class="abs low">2/6</td>
90
- <td data-value="50" class="pct medium">50%</td>
91
- <td data-value="2" class="abs medium">1/2</td>
92
- <td data-value="71.42" class="pct medium">71.42%</td>
93
- <td data-value="7" class="abs medium">5/7</td>
86
+ <td data-value="27.27" class="pct low">27.27%</td>
87
+ <td data-value="11" class="abs low">3/11</td>
88
+ <td data-value="0" class="pct low">0%</td>
89
+ <td data-value="9" class="abs low">0/9</td>
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>
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-07-29T03:44:05.967Z
104
+ at 2025-08-22T21:07:16.060Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">62.5% </span>
26
+ <span class="strong">27.27% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>5/8</span>
28
+ <span class='fraction'>3/11</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">33.33% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/6</span>
35
+ <span class='fraction'>0/9</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">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/2</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">71.42% </span>
47
+ <span class="strong">30% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>5/7</span>
49
+ <span class='fraction'>3/10</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 medium'></div>
64
+ <div class='status-line low'></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>
@@ -93,23 +93,45 @@
93
93
  <a name='L28'></a><a href='#L28'>28</a>
94
94
  <a name='L29'></a><a href='#L29'>29</a>
95
95
  <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
97
108
  <span class="cline-any cline-neutral">&nbsp;</span>
98
- <span class="cline-any cline-yes">1x</span>
99
109
  <span class="cline-any cline-neutral">&nbsp;</span>
110
+ <span class="cline-any cline-yes">2x</span>
100
111
  <span class="cline-any cline-neutral">&nbsp;</span>
101
112
  <span class="cline-any cline-neutral">&nbsp;</span>
102
113
  <span class="cline-any cline-neutral">&nbsp;</span>
103
114
  <span class="cline-any cline-neutral">&nbsp;</span>
104
115
  <span class="cline-any cline-neutral">&nbsp;</span>
105
- <span class="cline-any cline-yes">1x</span>
106
- <span class="cline-any cline-yes">1x</span>
107
116
  <span class="cline-any cline-neutral">&nbsp;</span>
108
117
  <span class="cline-any cline-neutral">&nbsp;</span>
109
118
  <span class="cline-any cline-neutral">&nbsp;</span>
110
119
  <span class="cline-any cline-neutral">&nbsp;</span>
111
120
  <span class="cline-any cline-neutral">&nbsp;</span>
112
- <span class="cline-any cline-yes">1x</span>
121
+ <span class="cline-any cline-yes">2x</span>
122
+ <span class="cline-any cline-no">&nbsp;</span>
123
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
+ <span class="cline-any cline-no">&nbsp;</span>
125
+ <span class="cline-any cline-no">&nbsp;</span>
126
+ <span class="cline-any cline-neutral">&nbsp;</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-no">&nbsp;</span>
133
+ <span class="cline-any cline-no">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
113
135
  <span class="cline-any cline-neutral">&nbsp;</span>
114
136
  <span class="cline-any cline-neutral">&nbsp;</span>
115
137
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -122,33 +144,44 @@
122
144
  <span class="cline-any cline-neutral">&nbsp;</span>
123
145
  <span class="cline-any cline-neutral">&nbsp;</span>
124
146
  <span class="cline-any cline-neutral">&nbsp;</span>
125
- <span class="cline-any cline-yes">1x</span>
147
+ <span class="cline-any cline-yes">2x</span>
126
148
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// src/config/index.js
149
+ import { INTEGRATION_TYPE } from '../utils/constant';
127
150
  &nbsp;
128
151
  let config = {
129
- apiUrl: '',
130
- secretKey: '',
131
- apiKey: '',
132
- verificationId: '',
152
+ apiUrl: "",
153
+ secretKey: "",
154
+ apiKey: "",
155
+ verificationId: "",
156
+ customerId: "",
157
+ integrationType: "",
158
+ userData: undefined,
159
+ token: undefined,
133
160
  };
134
161
  &nbsp;
135
- export const setConfig = (newConfig) =&gt; {
136
- <span class="missing-if-branch" title="else path not taken" >E</span>if (
137
- !newConfig.apiUrl
138
- || <span class="branch-1 cbranch-no" title="branch not covered" >!newConfig.secretKey</span>
139
- || <span class="branch-2 cbranch-no" title="branch not covered" >!newConfig.apiKey</span>
140
- || <span class="branch-3 cbranch-no" title="branch not covered" >!newConfig.verificationId</span>
141
- ) {
142
- throw new Error(
143
- 'Apacuana SDK: La configuración inicial debe incluir apiUrl, '
144
- + 'secretKey, apiKey y verificationId.',
162
+ export const setConfig = <span class="fstat-no" title="function not covered" >(n</span>ewConfig) =&gt; {
163
+ const { apiUrl, secretKey, apiKey, verificationId, integrationType } = <span class="cstat-no" title="statement not covered" >newConfig;</span>
164
+ &nbsp;
165
+ <span class="cstat-no" title="statement not covered" > if (!apiUrl || !secretKey || !apiKey || !verificationId || !integrationType) {</span>
166
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
167
+ "Apacuana SDK: La configuración inicial debe incluir apiUrl, " +
168
+ "secretKey, apiKey, verificationId e integrationType."
145
169
  );
146
170
  }
171
+ &nbsp;
172
+ // Nueva validación para el valor de integrationType
173
+ <span class="cstat-no" title="statement not covered" > if (!Object.values(INTEGRATION_TYPE).includes(integrationType)) {</span>
174
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
175
+ `Apacuana SDK: El valor de integrationType ('${integrationType}') no es válido. ` +
176
+ `Valores permitidos: ${Object.values(INTEGRATION_TYPE).join(', ')}`
177
+ );
178
+ }
179
+ &nbsp;
147
180
  <span class="cstat-no" title="statement not covered" > config = { ...config, ...newConfig };</span>
148
181
  // eslint-disable-next-line no-console
149
- <span class="cstat-no" title="statement not covered" > console.log('[Config] SDK Configuración actualizada (desde config):', {</span>
182
+ <span class="cstat-no" title="statement not covered" > console.log("[Config] SDK Configuración actualizada (desde config):", {</span>
150
183
  ...config,
151
- secretKey: '********',
184
+ secretKey: "********",
152
185
  });
153
186
  };
154
187
  &nbsp;
@@ -160,7 +193,7 @@ export const getConfig = <span class="fstat-no" title="function not covered" >()
160
193
  <div class='footer quiet pad2 space-top1 center small'>
161
194
  Code coverage generated by
162
195
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
163
- at 2025-07-29T03:44:05.967Z
196
+ at 2025-08-22T21:07:16.060Z
164
197
  </div>
165
198
  <script src="../../prettify.js"></script>
166
199
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>6/6</span>
28
+ <span class='fraction'>7/7</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>6/6</span>
49
+ <span class='fraction'>7/7</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
85
  </td>
86
86
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="6" class="abs high">6/6</td>
87
+ <td data-value="7" class="abs high">7/7</td>
88
88
  <td data-value="75" class="pct medium">75%</td>
89
89
  <td data-value="4" class="abs medium">3/4</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
91
  <td data-value="1" class="abs high">1/1</td>
92
92
  <td data-value="100" class="pct high">100%</td>
93
- <td data-value="6" class="abs high">6/6</td>
93
+ <td data-value="7" class="abs high">7/7</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-15T20:05:10.802Z
104
+ at 2025-08-22T21:07:16.060Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>6/6</span>
28
+ <span class='fraction'>7/7</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>6/6</span>
49
+ <span class='fraction'>7/7</span>
50
50
  </div>
51
51
 
52
52
 
@@ -83,21 +83,23 @@
83
83
  <a name='L18'></a><a href='#L18'>18</a>
84
84
  <a name='L19'></a><a href='#L19'>19</a>
85
85
  <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
87
88
  <span class="cline-any cline-neutral">&nbsp;</span>
88
89
  <span class="cline-any cline-neutral">&nbsp;</span>
89
90
  <span class="cline-any cline-neutral">&nbsp;</span>
90
91
  <span class="cline-any cline-neutral">&nbsp;</span>
91
92
  <span class="cline-any cline-neutral">&nbsp;</span>
92
93
  <span class="cline-any cline-neutral">&nbsp;</span>
93
- <span class="cline-any cline-yes">3x</span>
94
- <span class="cline-any cline-yes">3x</span>
95
- <span class="cline-any cline-yes">3x</span>
96
- <span class="cline-any cline-yes">3x</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>
97
99
  <span class="cline-any cline-neutral">&nbsp;</span>
98
100
  <span class="cline-any cline-neutral">&nbsp;</span>
99
- <span class="cline-any cline-yes">3x</span>
100
- <span class="cline-any cline-yes">3x</span>
101
+ <span class="cline-any cline-yes">21x</span>
102
+ <span class="cline-any cline-yes">21x</span>
101
103
  <span class="cline-any cline-neutral">&nbsp;</span>
102
104
  <span class="cline-any cline-neutral">&nbsp;</span>
103
105
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -114,6 +116,7 @@ export class ApacuanaAPIError extends Error {
114
116
  this.name = "ApacuanaAPIError";
115
117
  this.statusCode = statusCode;
116
118
  this.errorCode = errorCode;
119
+ this.success = false; // Añadir el atributo success con valor false
117
120
  &nbsp;
118
121
  // Mantener el stack trace correcto
119
122
  <span class="missing-if-branch" title="else path not taken" >E</span>if (Error.captureStackTrace) {
@@ -130,7 +133,7 @@ export default ApacuanaAPIError;
130
133
  <div class='footer quiet pad2 space-top1 center small'>
131
134
  Code coverage generated by
132
135
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
133
- at 2025-08-15T20:05:10.802Z
136
+ at 2025-08-22T21:07:16.060Z
134
137
  </div>
135
138
  <script src="../../prettify.js"></script>
136
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-15T20:05:10.802Z
104
+ at 2025-08-22T21:07:16.060Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -130,7 +130,10 @@
130
130
  <a name='L65'></a><a href='#L65'>65</a>
131
131
  <a name='L66'></a><a href='#L66'>66</a>
132
132
  <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
134
137
  <span class="cline-any cline-neutral">&nbsp;</span>
135
138
  <span class="cline-any cline-neutral">&nbsp;</span>
136
139
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -197,12 +200,15 @@
197
200
  <span class="cline-any cline-neutral">&nbsp;</span>
198
201
  <span class="cline-any cline-neutral">&nbsp;</span>
199
202
  <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// src/index.js
201
- import { setConfig, getConfig } from "./config/index";
203
+ <span class="cline-any cline-neutral">&nbsp;</span>
204
+ <span class="cline-any cline-neutral">&nbsp;</span>
205
+ <span class="cline-any cline-neutral">&nbsp;</span>
206
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { setConfig, getConfig } from "./config/index";
202
207
  import { initHttpClient, setAuthToken } from "./utils/httpClient";
203
208
  import getCustomer from "./api/users";
204
209
  import requestRevocation from "./api/revocations";
205
210
  import { getCertStatus } from "./api/certs";
211
+ import { addSigner, getDocs } from "./api/signatures";
206
212
  &nbsp;
207
213
  const apacuana = {
208
214
  /**
@@ -261,6 +267,9 @@ const apacuana = {
261
267
  getConfig,
262
268
  requestRevocation,
263
269
  getCertStatus,
270
+ getCustomer,
271
+ addSigner,
272
+ getDocs,
264
273
  };
265
274
  &nbsp;
266
275
  export default apacuana;
@@ -271,7 +280,7 @@ export default apacuana;
271
280
  <div class='footer quiet pad2 space-top1 center small'>
272
281
  Code coverage generated by
273
282
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
274
- at 2025-08-15T20:05:10.802Z
283
+ at 2025-08-22T21:07:16.060Z
275
284
  </div>
276
285
  <script src="../prettify.js"></script>
277
286
  <script>