apacuana-sdk-core 0.7.0 → 0.9.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 +93 -8
  2. package/coverage/clover.xml +198 -131
  3. package/coverage/coverage-final.json +7 -7
  4. package/coverage/lcov-report/index.html +35 -35
  5. package/coverage/lcov-report/src/api/certs.js.html +1 -1
  6. package/coverage/lcov-report/src/api/index.html +32 -32
  7. package/coverage/lcov-report/src/api/revocations.js.html +79 -43
  8. package/coverage/lcov-report/src/api/signatures.js.html +595 -73
  9. package/coverage/lcov-report/src/api/users.js.html +1 -1
  10. package/coverage/lcov-report/src/config/index.html +11 -11
  11. package/coverage/lcov-report/src/config/index.js.html +12 -15
  12. package/coverage/lcov-report/src/errors/index.html +1 -1
  13. package/coverage/lcov-report/src/errors/index.js.html +8 -8
  14. package/coverage/lcov-report/src/index.html +1 -1
  15. package/coverage/lcov-report/src/index.js.html +38 -5
  16. package/coverage/lcov-report/src/utils/constant.js.html +4 -4
  17. package/coverage/lcov-report/src/utils/helpers.js.html +1 -1
  18. package/coverage/lcov-report/src/utils/httpClient.js.html +65 -35
  19. package/coverage/lcov-report/src/utils/index.html +15 -15
  20. package/coverage/lcov.info +353 -222
  21. package/dist/api/signatures.d.ts +5 -0
  22. package/dist/config/index.d.ts +1 -1
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.js +377 -83
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +377 -83
  27. package/dist/index.mjs.map +1 -1
  28. package/package.json +1 -1
  29. package/src/api/revocations.js +14 -2
  30. package/src/api/signatures.js +174 -0
  31. package/src/config/index.js +1 -2
  32. package/src/index.js +14 -3
  33. package/src/utils/httpClient.js +29 -19
  34. package/tests/api/revocations.test.js +118 -5
  35. package/tests/api/signatures.test.js +306 -0
@@ -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-29T13:20:25.539Z
280
+ at 2025-09-05T13:42:51.598Z
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">35.71% </span>
26
+ <span class="strong">38.46% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>5/14</span>
28
+ <span class='fraction'>5/13</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">38.46% </span>
47
+ <span class="strong">41.66% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>5/13</span>
49
+ <span class='fraction'>5/12</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="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>
83
+ <td data-value="38.46" class="pic low">
84
+ <div class="chart"><div class="cover-fill" style="width: 38%"></div><div class="cover-empty" style="width: 62%"></div></div>
85
85
  </td>
86
- <td data-value="35.71" class="pct low">35.71%</td>
87
- <td data-value="14" class="abs low">5/14</td>
86
+ <td data-value="38.46" class="pct low">38.46%</td>
87
+ <td data-value="13" class="abs low">5/13</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
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>
92
+ <td data-value="41.66" class="pct low">41.66%</td>
93
+ <td data-value="12" class="abs low">5/12</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-29T13:20:25.539Z
104
+ at 2025-09-05T13:42:51.598Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">35.71% </span>
26
+ <span class="strong">38.46% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>5/14</span>
28
+ <span class='fraction'>5/13</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">38.46% </span>
47
+ <span class="strong">41.66% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>5/13</span>
49
+ <span class='fraction'>5/12</span>
50
50
  </div>
51
51
 
52
52
 
@@ -120,8 +120,7 @@
120
120
  <a name='L55'></a><a href='#L55'>55</a>
121
121
  <a name='L56'></a><a href='#L56'>56</a>
122
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
123
+ <a name='L58'></a><a href='#L58'>58</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
125
124
  <span class="cline-any cline-neutral">&nbsp;</span>
126
125
  <span class="cline-any cline-neutral">&nbsp;</span>
127
126
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -136,7 +135,7 @@
136
135
  <span class="cline-any cline-neutral">&nbsp;</span>
137
136
  <span class="cline-any cline-neutral">&nbsp;</span>
138
137
  <span class="cline-any cline-neutral">&nbsp;</span>
139
- <span class="cline-any cline-yes">2x</span>
138
+ <span class="cline-any cline-yes">3x</span>
140
139
  <span class="cline-any cline-neutral">&nbsp;</span>
141
140
  <span class="cline-any cline-neutral">&nbsp;</span>
142
141
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -148,9 +147,9 @@
148
147
  <span class="cline-any cline-neutral">&nbsp;</span>
149
148
  <span class="cline-any cline-neutral">&nbsp;</span>
150
149
  <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-yes">2x</span>
150
+ <span class="cline-any cline-yes">3x</span>
152
151
  <span class="cline-any cline-neutral">&nbsp;</span>
153
- <span class="cline-any cline-yes">2x</span>
152
+ <span class="cline-any cline-yes">3x</span>
154
153
  <span class="cline-any cline-neutral">&nbsp;</span>
155
154
  <span class="cline-any cline-no">&nbsp;</span>
156
155
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -173,10 +172,9 @@
173
172
  <span class="cline-any cline-neutral">&nbsp;</span>
174
173
  <span class="cline-any cline-neutral">&nbsp;</span>
175
174
  <span class="cline-any cline-neutral">&nbsp;</span>
176
- <span class="cline-any cline-yes">2x</span>
175
+ <span class="cline-any cline-yes">3x</span>
177
176
  <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">2x</span>
179
- <span class="cline-any cline-no">&nbsp;</span>
177
+ <span class="cline-any cline-yes">3x</span>
180
178
  <span class="cline-any cline-no">&nbsp;</span>
181
179
  <span class="cline-any cline-neutral">&nbsp;</span>
182
180
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// src/config/index.js
@@ -233,9 +231,8 @@ export const setConfig = <span class="fstat-no" title="function not covered" >(n
233
231
  &nbsp;
234
232
  export const getConfig = <span class="fstat-no" title="function not covered" >()</span> =&gt; (<span class="cstat-no" title="statement not covered" >{ ...config })</span>;
235
233
  &nbsp;
236
- export const cleanConfig = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
234
+ export const close = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
237
235
  <span class="cstat-no" title="statement not covered" > config = { ...defaultConfig };</span>
238
- <span class="cstat-no" title="statement not covered" > console.log("Apacuana SDK: Configuración limpiada.");</span>
239
236
  };
240
237
  &nbsp;</pre></td></tr></table></pre>
241
238
 
@@ -244,7 +241,7 @@ export const cleanConfig = <span class="fstat-no" title="function not covered" >
244
241
  <div class='footer quiet pad2 space-top1 center small'>
245
242
  Code coverage generated by
246
243
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
247
- at 2025-08-29T13:20:25.539Z
244
+ at 2025-09-05T13:42:51.598Z
248
245
  </div>
249
246
  <script src="../../prettify.js"></script>
250
247
  <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-29T13:20:25.539Z
104
+ at 2025-09-05T13:42:51.598Z
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">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>
94
+ <span class="cline-any cline-yes">53x</span>
95
+ <span class="cline-any cline-yes">53x</span>
96
+ <span class="cline-any cline-yes">53x</span>
97
+ <span class="cline-any cline-yes">53x</span>
98
+ <span class="cline-any cline-yes">53x</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">19x</span>
102
- <span class="cline-any cline-yes">19x</span>
101
+ <span class="cline-any cline-yes">53x</span>
102
+ <span class="cline-any cline-yes">53x</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-29T13:20:25.539Z
136
+ at 2025-09-05T13:42:51.598Z
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-29T13:20:25.539Z
104
+ at 2025-09-05T13:42:51.598Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -118,7 +118,26 @@
118
118
  <a name='L53'></a><a href='#L53'>53</a>
119
119
  <a name='L54'></a><a href='#L54'>54</a>
120
120
  <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <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>
122
141
  <span class="cline-any cline-neutral">&nbsp;</span>
123
142
  <span class="cline-any cline-neutral">&nbsp;</span>
124
143
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -173,12 +192,23 @@
173
192
  <span class="cline-any cline-neutral">&nbsp;</span>
174
193
  <span class="cline-any cline-neutral">&nbsp;</span>
175
194
  <span class="cline-any cline-neutral">&nbsp;</span>
176
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { setConfig, getConfig, cleanConfig } from "./config/index";
195
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-neutral">&nbsp;</span>
197
+ <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { setConfig, getConfig, close } from "./config/index";
177
199
  import { initHttpClient, setAuthToken } from "./utils/httpClient";
178
200
  import getCustomer from "./api/users";
179
201
  import { requestRevocation, getRevocationReasons } from "./api/revocations";
180
202
  import { generateCert, getCertStatus } from "./api/certs";
181
- import { addSigner, getDigest, getDocs, signDocument } from "./api/signatures";
203
+ import {
204
+ addSigner,
205
+ deleteSignatureVariant,
206
+ getDigest,
207
+ getDocs,
208
+ getSignatureVariant,
209
+ signDocument,
210
+ uploadSignatureVariant,
211
+ } from "./api/signatures";
182
212
  &nbsp;
183
213
  const apacuana = {
184
214
  /**
@@ -214,7 +244,7 @@ const apacuana = {
214
244
  throw error;
215
245
  }
216
246
  },
217
- close: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >cleanConfig(),</span>
247
+ close: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >close(),</span>
218
248
  getConfig,
219
249
  requestRevocation,
220
250
  getCertStatus,
@@ -225,6 +255,9 @@ const apacuana = {
225
255
  signDocument,
226
256
  getDigest,
227
257
  getRevocationReasons,
258
+ uploadSignatureVariant,
259
+ getSignatureVariant,
260
+ deleteSignatureVariant,
228
261
  };
229
262
  &nbsp;
230
263
  export default apacuana;
@@ -235,7 +268,7 @@ export default apacuana;
235
268
  <div class='footer quiet pad2 space-top1 center small'>
236
269
  Code coverage generated by
237
270
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
238
- at 2025-08-29T13:20:25.539Z
271
+ at 2025-09-05T13:42:51.598Z
239
272
  </div>
240
273
  <script src="../prettify.js"></script>
241
274
  <script>
@@ -83,7 +83,7 @@
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-yes">6x</span>
86
+ <a name='L21'></a><a href='#L21'>21</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">8x</span>
87
87
  <span class="cline-any cline-neutral">&nbsp;</span>
88
88
  <span class="cline-any cline-neutral">&nbsp;</span>
89
89
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -94,12 +94,12 @@
94
94
  <span class="cline-any cline-neutral">&nbsp;</span>
95
95
  <span class="cline-any cline-neutral">&nbsp;</span>
96
96
  <span class="cline-any cline-neutral">&nbsp;</span>
97
- <span class="cline-any cline-yes">6x</span>
97
+ <span class="cline-any cline-yes">8x</span>
98
98
  <span class="cline-any cline-neutral">&nbsp;</span>
99
99
  <span class="cline-any cline-neutral">&nbsp;</span>
100
100
  <span class="cline-any cline-neutral">&nbsp;</span>
101
101
  <span class="cline-any cline-neutral">&nbsp;</span>
102
- <span class="cline-any cline-yes">6x</span>
102
+ <span class="cline-any cline-yes">8x</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>
@@ -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-29T13:20:25.539Z
133
+ at 2025-09-05T13:42:51.598Z
134
134
  </div>
135
135
  <script src="../../prettify.js"></script>
136
136
  <script>
@@ -844,7 +844,7 @@ export default {
844
844
  <div class='footer quiet pad2 space-top1 center small'>
845
845
  Code coverage generated by
846
846
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
847
- at 2025-08-29T13:20:25.539Z
847
+ at 2025-09-05T13:42:51.598Z
848
848
  </div>
849
849
  <script src="../../prettify.js"></script>
850
850
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">7.5% </span>
26
+ <span class="strong">6% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>3/40</span>
28
+ <span class='fraction'>3/50</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/40</span>
35
+ <span class='fraction'>0/46</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/5</span>
42
+ <span class='fraction'>0/7</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">7.5% </span>
47
+ <span class="strong">6% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>3/40</span>
49
+ <span class='fraction'>3/50</span>
50
50
  </div>
51
51
 
52
52
 
@@ -228,7 +228,17 @@
228
228
  <a name='L163'></a><a href='#L163'>163</a>
229
229
  <a name='L164'></a><a href='#L164'>164</a>
230
230
  <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
232
242
  <span class="cline-any cline-neutral">&nbsp;</span>
233
243
  <span class="cline-any cline-neutral">&nbsp;</span>
234
244
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -239,7 +249,7 @@
239
249
  <span class="cline-any cline-neutral">&nbsp;</span>
240
250
  <span class="cline-any cline-neutral">&nbsp;</span>
241
251
  <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-yes">2x</span>
252
+ <span class="cline-any cline-yes">3x</span>
243
253
  <span class="cline-any cline-no">&nbsp;</span>
244
254
  <span class="cline-any cline-neutral">&nbsp;</span>
245
255
  <span class="cline-any cline-no">&nbsp;</span>
@@ -266,14 +276,16 @@
266
276
  <span class="cline-any cline-neutral">&nbsp;</span>
267
277
  <span class="cline-any cline-neutral">&nbsp;</span>
268
278
  <span class="cline-any cline-neutral">&nbsp;</span>
269
- <span class="cline-any cline-neutral">&nbsp;</span>
270
279
  <span class="cline-any cline-no">&nbsp;</span>
271
280
  <span class="cline-any cline-neutral">&nbsp;</span>
272
281
  <span class="cline-any cline-neutral">&nbsp;</span>
273
282
  <span class="cline-any cline-no">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
284
  <span class="cline-any cline-no">&nbsp;</span>
275
285
  <span class="cline-any cline-neutral">&nbsp;</span>
276
286
  <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-no">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
289
  <span class="cline-any cline-neutral">&nbsp;</span>
278
290
  <span class="cline-any cline-neutral">&nbsp;</span>
279
291
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -290,6 +302,8 @@
290
302
  <span class="cline-any cline-neutral">&nbsp;</span>
291
303
  <span class="cline-any cline-no">&nbsp;</span>
292
304
  <span class="cline-any cline-no">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-no">&nbsp;</span>
293
307
  <span class="cline-any cline-no">&nbsp;</span>
294
308
  <span class="cline-any cline-neutral">&nbsp;</span>
295
309
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -320,7 +334,7 @@
320
334
  <span class="cline-any cline-neutral">&nbsp;</span>
321
335
  <span class="cline-any cline-neutral">&nbsp;</span>
322
336
  <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-yes">2x</span>
337
+ <span class="cline-any cline-yes">3x</span>
324
338
  <span class="cline-any cline-no">&nbsp;</span>
325
339
  <span class="cline-any cline-no">&nbsp;</span>
326
340
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -344,7 +358,7 @@
344
358
  <span class="cline-any cline-neutral">&nbsp;</span>
345
359
  <span class="cline-any cline-neutral">&nbsp;</span>
346
360
  <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-yes">2x</span>
361
+ <span class="cline-any cline-yes">3x</span>
348
362
  <span class="cline-any cline-no">&nbsp;</span>
349
363
  <span class="cline-any cline-no">&nbsp;</span>
350
364
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -353,16 +367,22 @@
353
367
  <span class="cline-any cline-neutral">&nbsp;</span>
354
368
  <span class="cline-any cline-neutral">&nbsp;</span>
355
369
  <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-neutral">&nbsp;</span>
357
370
  <span class="cline-any cline-no">&nbsp;</span>
358
371
  <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-no">&nbsp;</span>
373
+ <span class="cline-any cline-no">&nbsp;</span>
359
374
  <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-no">&nbsp;</span>
376
+ <span class="cline-any cline-no">&nbsp;</span>
377
+ <span class="cline-any cline-no">&nbsp;</span>
378
+ <span class="cline-any cline-no">&nbsp;</span>
360
379
  <span class="cline-any cline-neutral">&nbsp;</span>
361
380
  <span class="cline-any cline-no">&nbsp;</span>
362
381
  <span class="cline-any cline-neutral">&nbsp;</span>
363
382
  <span class="cline-any cline-no">&nbsp;</span>
364
383
  <span class="cline-any cline-neutral">&nbsp;</span>
365
384
  <span class="cline-any cline-no">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
386
  <span class="cline-any cline-no">&nbsp;</span>
367
387
  <span class="cline-any cline-neutral">&nbsp;</span>
368
388
  <span class="cline-any cline-no">&nbsp;</span>
@@ -378,16 +398,16 @@
378
398
  <span class="cline-any cline-neutral">&nbsp;</span>
379
399
  <span class="cline-any cline-neutral">&nbsp;</span>
380
400
  <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-no">&nbsp;</span>
381
402
  <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-no">&nbsp;</span>
382
404
  <span class="cline-any cline-neutral">&nbsp;</span>
383
405
  <span class="cline-any cline-neutral">&nbsp;</span>
384
406
  <span class="cline-any cline-neutral">&nbsp;</span>
385
407
  <span class="cline-any cline-neutral">&nbsp;</span>
386
408
  <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-no">&nbsp;</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span>
389
- <span class="cline-any cline-neutral">&nbsp;</span>
390
409
  <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-no">&nbsp;</span>
391
411
  <span class="cline-any cline-neutral">&nbsp;</span>
392
412
  <span class="cline-any cline-no">&nbsp;</span>
393
413
  <span class="cline-any cline-no">&nbsp;</span>
@@ -422,7 +442,6 @@ export const initHttpClient = <span class="fstat-no" title="function not covered
422
442
  <span class="cstat-no" title="statement not covered" > axiosInstance = axios.create({</span>
423
443
  baseURL: config.apiUrl,
424
444
  headers: {
425
- "Content-Type": "application/json",
426
445
  "APACUANA-API-Key": config.apiKey,
427
446
  "APACUANA-SECRET-Key": config.secretKey,
428
447
  // La cabecera Authorization se deja vacía al inicio.
@@ -436,9 +455,12 @@ export const initHttpClient = <span class="fstat-no" title="function not covered
436
455
  <span class="fstat-no" title="function not covered" > (r</span>esponse) =&gt; {
437
456
  // Maneja errores lógicos de la API (si el backend devuelve status 2xx con { success: false })
438
457
  <span class="cstat-no" title="statement not covered" > if (response.data &amp;&amp; response.data.success === false) {</span>
458
+ const errorMessage =
459
+ <span class="cstat-no" title="statement not covered" > response.data?.msg ||</span>
460
+ response.data?.message ||
461
+ "Error lógico desconocido desde la API.";
439
462
  <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
440
- response.data.message ||
441
- "Error lógico en la respuesta de la API (status 2xx)",
463
+ errorMessage,
442
464
  response.status,
443
465
  response.data.code || "LOGICAL_API_ERROR"
444
466
  );
@@ -455,10 +477,12 @@ export const initHttpClient = <span class="fstat-no" title="function not covered
455
477
  &nbsp;
456
478
  <span class="cstat-no" title="statement not covered" > if (error.response) {</span>
457
479
  const { status, data } = <span class="cstat-no" title="statement not covered" >error.response;</span>
480
+ const errorMessage =
481
+ <span class="cstat-no" title="statement not covered" > data?.msg || data?.message || "Error desconocido desde la API.";</span>
458
482
  <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
459
- data.message || `Error en la API: ${status}`,
483
+ errorMessage,
460
484
  status,
461
- data.code || "API_ERROR"
485
+ data?.code || "API_ERROR"
462
486
  );
463
487
  }
464
488
  <span class="cstat-no" title="statement not covered" > if (error.request) {</span>
@@ -517,12 +541,21 @@ export const httpRequest = <span class="fstat-no" title="function not covered" >
517
541
  );
518
542
  }
519
543
  &nbsp;
520
- // Creamos el cuerpo de la petición fusionando los datos de la llamada
521
- // con los parámetros de inicialización.
522
- const dataToSend = <span class="cstat-no" title="statement not covered" >{</span>
523
- ...data,
524
- };
544
+ let dataToSend;
545
+ const requestConfig = <span class="cstat-no" title="statement not covered" >{};</span>
525
546
  &nbsp;
547
+ const hasFile = <span class="cstat-no" title="statement not covered" >Object.values(data).some(</span>
548
+ <span class="fstat-no" title="function not covered" > (v</span>alue) =&gt; <span class="cstat-no" title="statement not covered" >typeof File !== "undefined" &amp;&amp; value instanceof File</span>
549
+ );
550
+ <span class="cstat-no" title="statement not covered" > if (hasFile) {</span>
551
+ const formData = <span class="cstat-no" title="statement not covered" >new FormData();</span>
552
+ <span class="cstat-no" title="statement not covered" > Object.keys(data).forEach(<span class="fstat-no" title="function not covered" >(k</span>ey) =&gt; {</span>
553
+ <span class="cstat-no" title="statement not covered" > formData.append(key, data[key]);</span>
554
+ });
555
+ <span class="cstat-no" title="statement not covered" > dataToSend = formData;</span>
556
+ } else {
557
+ <span class="cstat-no" title="statement not covered" > dataToSend = { ...data };</span>
558
+ }
526
559
  <span class="cstat-no" title="statement not covered" > try {</span>
527
560
  let response;
528
561
  <span class="cstat-no" title="statement not covered" > switch (method.toUpperCase()) {</span>
@@ -530,13 +563,16 @@ export const httpRequest = <span class="fstat-no" title="function not covered" >
530
563
  <span class="cstat-no" title="statement not covered" > response = await axiosInstance.get(path, { params: dataToSend });</span>
531
564
  <span class="cstat-no" title="statement not covered" > break;</span>
532
565
  case "POST":
533
- <span class="cstat-no" title="statement not covered" > response = await axiosInstance.post(path, dataToSend);</span>
566
+ <span class="cstat-no" title="statement not covered" > response = await axiosInstance.post(path, dataToSend, requestConfig);</span>
534
567
  <span class="cstat-no" title="statement not covered" > break;</span>
535
568
  case "PUT":
536
- <span class="cstat-no" title="statement not covered" > response = await axiosInstance.put(path, dataToSend);</span>
569
+ <span class="cstat-no" title="statement not covered" > response = await axiosInstance.put(path, dataToSend, requestConfig);</span>
537
570
  <span class="cstat-no" title="statement not covered" > break;</span>
538
571
  case "DELETE":
539
- <span class="cstat-no" title="statement not covered" > response = await axiosInstance.delete(path, { data: dataToSend });</span>
572
+ <span class="cstat-no" title="statement not covered" > response = await axiosInstance.delete(path, {</span>
573
+ data: dataToSend,
574
+ ...requestConfig,
575
+ });
540
576
  <span class="cstat-no" title="statement not covered" > break;</span>
541
577
  default:
542
578
  <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
@@ -546,14 +582,8 @@ export const httpRequest = <span class="fstat-no" title="function not covered" >
546
582
  );
547
583
  }
548
584
  &nbsp;
549
- // Si la promesa se resolvió, la respuesta es exitosa.
550
- // El interceptor ya manejó los errores 4xx/5xx y los errores lógicos 2xx.
551
- // eslint-disable-next-line no-console
552
585
  <span class="cstat-no" title="statement not covered" > return response.data;</span>
553
586
  } catch (error) {
554
- // Si la petición falla, el interceptor ya procesó el error.
555
- // Simplemente relanzamos el error para que sea capturado por la función de API.
556
- // eslint-disable-next-line no-console
557
587
  <span class="cstat-no" title="statement not covered" > console.error(`[HTTP Client] Fallo en la petición a ${path}:`, error);</span>
558
588
  <span class="cstat-no" title="statement not covered" > throw error;</span>
559
589
  }
@@ -565,7 +595,7 @@ export const httpRequest = <span class="fstat-no" title="function not covered" >
565
595
  <div class='footer quiet pad2 space-top1 center small'>
566
596
  Code coverage generated by
567
597
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
568
- at 2025-08-29T13:20:25.539Z
598
+ at 2025-09-05T13:42:51.598Z
569
599
  </div>
570
600
  <script src="../../prettify.js"></script>
571
601
  <script>