apacuana-sdk-core 0.2.0 → 0.4.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 (47) hide show
  1. package/README.md +64 -15
  2. package/coverage/clover.xml +155 -121
  3. package/coverage/coverage-final.json +8 -8
  4. package/coverage/lcov-report/block-navigation.js +1 -1
  5. package/coverage/lcov-report/index.html +30 -30
  6. package/coverage/lcov-report/sorter.js +21 -7
  7. package/coverage/lcov-report/src/api/certs.js.html +73 -28
  8. package/coverage/lcov-report/src/api/index.html +31 -31
  9. package/coverage/lcov-report/src/api/revocations.js.html +12 -15
  10. package/coverage/lcov-report/src/api/signatures.js.html +186 -159
  11. package/coverage/lcov-report/src/api/users.js.html +24 -63
  12. package/coverage/lcov-report/src/config/index.html +1 -1
  13. package/coverage/lcov-report/src/config/index.js.html +1 -1
  14. package/coverage/lcov-report/src/errors/index.html +1 -1
  15. package/coverage/lcov-report/src/errors/index.js.html +8 -8
  16. package/coverage/lcov-report/src/index.html +1 -1
  17. package/coverage/lcov-report/src/index.js.html +6 -3
  18. package/coverage/lcov-report/src/utils/constant.js.html +4 -4
  19. package/coverage/lcov-report/src/utils/helpers.js.html +101 -50
  20. package/coverage/lcov-report/src/utils/httpClient.js.html +1 -1
  21. package/coverage/lcov-report/src/utils/index.html +19 -19
  22. package/coverage/lcov.info +293 -221
  23. package/dist/api/certs.d.ts +8 -0
  24. package/dist/api/revocations.d.ts +7 -0
  25. package/dist/api/signatures.d.ts +16 -0
  26. package/dist/api/users.d.ts +15 -0
  27. package/dist/config/index.d.ts +11 -0
  28. package/dist/errors/index.d.ts +10 -0
  29. package/dist/index.d.ts +25 -0
  30. package/dist/index.js +252 -251
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.mjs +252 -251
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/utils/constant.d.ts +18 -0
  35. package/dist/utils/helpers.d.ts +21 -0
  36. package/dist/utils/httpClient.d.ts +3 -0
  37. package/package.json +9 -4
  38. package/src/api/certs.js +25 -10
  39. package/src/api/revocations.js +10 -11
  40. package/src/api/signatures.js +106 -97
  41. package/src/api/users.js +16 -29
  42. package/src/index.js +2 -1
  43. package/src/utils/helpers.js +17 -0
  44. package/tests/api/certs.test.js +58 -74
  45. package/tests/api/signatures.test.js +18 -73
  46. package/tests/api/users.test.js +10 -10
  47. package/tsconfig.json +15 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">41.26% </span>
26
+ <span class="strong">12.12% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>26/63</span>
28
+ <span class='fraction'>8/66</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">31.64% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>25/79</span>
35
+ <span class='fraction'>0/86</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">37.5% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/8</span>
42
+ <span class='fraction'>0/9</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">41.66% </span>
47
+ <span class="strong">12.69% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>25/60</span>
49
+ <span class='fraction'>8/63</span>
50
50
  </div>
51
51
 
52
52
 
@@ -270,7 +270,24 @@
270
270
  <a name='L205'></a><a href='#L205'>205</a>
271
271
  <a name='L206'></a><a href='#L206'>206</a>
272
272
  <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
274
291
  <span class="cline-any cline-neutral">&nbsp;</span>
275
292
  <span class="cline-any cline-neutral">&nbsp;</span>
276
293
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -278,18 +295,18 @@
278
295
  <span class="cline-any cline-yes">2x</span>
279
296
  <span class="cline-any cline-neutral">&nbsp;</span>
280
297
  <span class="cline-any cline-yes">2x</span>
281
- <span class="cline-any cline-yes">1x</span>
298
+ <span class="cline-any cline-no">&nbsp;</span>
282
299
  <span class="cline-any cline-no">&nbsp;</span>
283
300
  <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-yes">1x</span>
301
+ <span class="cline-any cline-no">&nbsp;</span>
285
302
  <span class="cline-any cline-no">&nbsp;</span>
286
303
  <span class="cline-any cline-neutral">&nbsp;</span>
287
304
  <span class="cline-any cline-neutral">&nbsp;</span>
288
305
  <span class="cline-any cline-neutral">&nbsp;</span>
289
306
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">1x</span>
291
307
  <span class="cline-any cline-no">&nbsp;</span>
292
- <span class="cline-any cline-yes">1x</span>
308
+ <span class="cline-any cline-no">&nbsp;</span>
309
+ <span class="cline-any cline-no">&nbsp;</span>
293
310
  <span class="cline-any cline-neutral">&nbsp;</span>
294
311
  <span class="cline-any cline-neutral">&nbsp;</span>
295
312
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -298,18 +315,18 @@
298
315
  <span class="cline-any cline-neutral">&nbsp;</span>
299
316
  <span class="cline-any cline-no">&nbsp;</span>
300
317
  <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-yes">1x</span>
302
318
  <span class="cline-any cline-no">&nbsp;</span>
303
- <span class="cline-any cline-yes">1x</span>
319
+ <span class="cline-any cline-no">&nbsp;</span>
320
+ <span class="cline-any cline-no">&nbsp;</span>
304
321
  <span class="cline-any cline-neutral">&nbsp;</span>
305
322
  <span class="cline-any cline-neutral">&nbsp;</span>
306
323
  <span class="cline-any cline-neutral">&nbsp;</span>
307
324
  <span class="cline-any cline-no">&nbsp;</span>
308
325
  <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-yes">1x</span>
310
- <span class="cline-any cline-yes">1x</span>
326
+ <span class="cline-any cline-no">&nbsp;</span>
327
+ <span class="cline-any cline-no">&nbsp;</span>
311
328
  <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-yes">1x</span>
329
+ <span class="cline-any cline-no">&nbsp;</span>
313
330
  <span class="cline-any cline-neutral">&nbsp;</span>
314
331
  <span class="cline-any cline-no">&nbsp;</span>
315
332
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -328,13 +345,13 @@
328
345
  <span class="cline-any cline-neutral">&nbsp;</span>
329
346
  <span class="cline-any cline-neutral">&nbsp;</span>
330
347
  <span class="cline-any cline-yes">2x</span>
331
- <span class="cline-any cline-yes">2x</span>
348
+ <span class="cline-any cline-no">&nbsp;</span>
332
349
  <span class="cline-any cline-neutral">&nbsp;</span>
333
350
  <span class="cline-any cline-neutral">&nbsp;</span>
334
351
  <span class="cline-any cline-neutral">&nbsp;</span>
335
352
  <span class="cline-any cline-neutral">&nbsp;</span>
336
353
  <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-yes">2x</span>
354
+ <span class="cline-any cline-no">&nbsp;</span>
338
355
  <span class="cline-any cline-neutral">&nbsp;</span>
339
356
  <span class="cline-any cline-neutral">&nbsp;</span>
340
357
  <span class="cline-any cline-yes">2x</span>
@@ -416,26 +433,26 @@
416
433
  <span class="cline-any cline-neutral">&nbsp;</span>
417
434
  <span class="cline-any cline-neutral">&nbsp;</span>
418
435
  <span class="cline-any cline-yes">2x</span>
419
- <span class="cline-any cline-yes">7x</span>
436
+ <span class="cline-any cline-no">&nbsp;</span>
420
437
  <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-yes">7x</span>
422
- <span class="cline-any cline-yes">1x</span>
438
+ <span class="cline-any cline-no">&nbsp;</span>
439
+ <span class="cline-any cline-no">&nbsp;</span>
423
440
  <span class="cline-any cline-neutral">&nbsp;</span>
424
441
  <span class="cline-any cline-neutral">&nbsp;</span>
425
442
  <span class="cline-any cline-neutral">&nbsp;</span>
426
443
  <span class="cline-any cline-neutral">&nbsp;</span>
427
444
  <span class="cline-any cline-neutral">&nbsp;</span>
428
445
  <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-yes">6x</span>
430
- <span class="cline-any cline-yes">1x</span>
446
+ <span class="cline-any cline-no">&nbsp;</span>
447
+ <span class="cline-any cline-no">&nbsp;</span>
431
448
  <span class="cline-any cline-neutral">&nbsp;</span>
432
449
  <span class="cline-any cline-neutral">&nbsp;</span>
433
450
  <span class="cline-any cline-neutral">&nbsp;</span>
434
451
  <span class="cline-any cline-neutral">&nbsp;</span>
435
452
  <span class="cline-any cline-neutral">&nbsp;</span>
436
453
  <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-yes">5x</span>
438
- <span class="cline-any cline-yes">1x</span>
454
+ <span class="cline-any cline-no">&nbsp;</span>
455
+ <span class="cline-any cline-no">&nbsp;</span>
439
456
  <span class="cline-any cline-neutral">&nbsp;</span>
440
457
  <span class="cline-any cline-neutral">&nbsp;</span>
441
458
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -468,6 +485,23 @@
468
485
  <span class="cline-any cline-neutral">&nbsp;</span>
469
486
  <span class="cline-any cline-neutral">&nbsp;</span>
470
487
  <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-yes">2x</span>
489
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
505
  <span class="cline-any cline-neutral">&nbsp;</span>
472
506
  <span class="cline-any cline-neutral">&nbsp;</span>
473
507
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -484,39 +518,39 @@ import { ApacuanaAPIError } from "../errors/index";
484
518
  &nbsp;
485
519
  const KEY_HEX = "dRgUkXp2s5v8y/B?";
486
520
  &nbsp;
487
- const getCertificateStatus = (userData, certificateInDevice) =&gt; {
488
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!userData) {
521
+ const getCertificateStatus = <span class="fstat-no" title="function not covered" >(u</span>serData, certificateInDevice) =&gt; {
522
+ <span class="cstat-no" title="statement not covered" > if (!userData) {</span>
489
523
  <span class="cstat-no" title="statement not covered" > throw new Error("El parámetro userData es requerido.");</span>
490
524
  }
491
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof certificateInDevice !== "boolean") {
525
+ <span class="cstat-no" title="statement not covered" > if (typeof certificateInDevice !== "boolean") {</span>
492
526
  <span class="cstat-no" title="statement not covered" > throw new Error(</span>
493
527
  "El parámetro certificateInDevice es requerido y debe ser un valor booleano."
494
528
  );
495
529
  }
496
530
  &nbsp;
497
- <span class="missing-if-branch" title="if path not taken" >I</span>if (userData?.verificationstatus?.id !== VERIFICATION_STATUS.APPROVED)
531
+ <span class="cstat-no" title="statement not covered" > if (userData?.verificationstatus?.id !== VERIFICATION_STATUS.APPROVED)</span>
498
532
  <span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.request;</span>
499
- <span class="missing-if-branch" title="if path not taken" >I</span>if (
533
+ <span class="cstat-no" title="statement not covered" > if (</span>
500
534
  userData?.certificationId &amp;&amp;
501
535
  !userData?.cangenerate &amp;&amp;
502
536
  !userData?.requestscert?.pending &amp;&amp;
503
537
  !certificateInDevice &amp;&amp;
504
- <span class="branch-4 cbranch-no" title="branch not covered" > userData?.certificatestatus !== STATUS_CERTIFICATE.revoque</span>
538
+ userData?.certificatestatus !== STATUS_CERTIFICATE.revoque
505
539
  )
506
540
  <span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.certificate_another_device;</span>
507
541
  &nbsp;
508
- <span class="missing-if-branch" title="if path not taken" >I</span>if (userData?.requestscert?.pending &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >userData?.certificationId)</span>
542
+ <span class="cstat-no" title="statement not covered" > if (userData?.requestscert?.pending &amp;&amp; userData?.certificationId)</span>
509
543
  <span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.request_revoque;</span>
510
- <span class="missing-if-branch" title="if path not taken" >I</span>if (
544
+ <span class="cstat-no" title="statement not covered" > if (</span>
511
545
  !userData?.cangenerate &amp;&amp;
512
546
  userData?.certificatestatus === STATUS_CERTIFICATE.revoque
513
547
  )
514
548
  <span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.revoque;</span>
515
549
  &nbsp;
516
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!userData?.approvedUser) <span class="cstat-no" title="statement not covered" >return STATUS_CERTIFICATE.request;</span>
517
- <span class="missing-if-branch" title="if path not taken" >I</span>if (userData?.cangenerate) <span class="cstat-no" title="statement not covered" >return STATUS_CERTIFICATE.generate;</span>
550
+ <span class="cstat-no" title="statement not covered" > if (!userData?.approvedUser) <span class="cstat-no" title="statement not covered" >return STATUS_CERTIFICATE.request;</span></span>
551
+ <span class="cstat-no" title="statement not covered" > if (userData?.cangenerate) <span class="cstat-no" title="statement not covered" >return STATUS_CERTIFICATE.generate;</span></span>
518
552
  &nbsp;
519
- <span class="missing-if-branch" title="else path not taken" >E</span>if (userData?.certificationId) return STATUS_CERTIFICATE.current;
553
+ <span class="cstat-no" title="statement not covered" > if (userData?.certificationId) <span class="cstat-no" title="statement not covered" >return STATUS_CERTIFICATE.current;</span></span>
520
554
  &nbsp;
521
555
  <span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.revoque;</span>
522
556
  };
@@ -534,14 +568,14 @@ async function <span class="fstat-no" title="function not covered" >exportPrivat
534
568
  <span class="cstat-no" title="statement not covered" > return arrayBufferToBase64(exportablePrivateKey);</span>
535
569
  }
536
570
  &nbsp;
537
- const encryptedCsr = (csr, encryptKey = KEY_HEX) =&gt; {
538
- const body = {
571
+ const encryptedCsr = <span class="fstat-no" title="function not covered" >(c</span>sr, encryptKey = <span class="branch-0 cbranch-no" title="branch not covered" >KEY_HEX)</span> =&gt; {
572
+ const body = <span class="cstat-no" title="statement not covered" >{</span>
539
573
  csr: CryptoJS.AES.encrypt(csr, encryptKey, {
540
574
  mode: CryptoJS.mode.ECB,
541
575
  padding: CryptoJS.pad.Pkcs7,
542
576
  }).toString(),
543
577
  };
544
- return body;
578
+ <span class="cstat-no" title="statement not covered" > return body;</span>
545
579
  };
546
580
  &nbsp;
547
581
  const validateOnBoardingSignerData = <span class="fstat-no" title="function not covered" >(s</span>ignerData) =&gt; {
@@ -622,27 +656,27 @@ const validateOnBoardingSignerData = <span class="fstat-no" title="function not
622
656
  });
623
657
  };
624
658
  &nbsp;
625
- const validateCsr = (csr) =&gt; {
626
- const base64Regex = /^[A-Za-z0-9+/=]+$/;
659
+ const validateCsr = <span class="fstat-no" title="function not covered" >(c</span>sr) =&gt; {
660
+ const base64Regex = <span class="cstat-no" title="statement not covered" >/^[A-Za-z0-9+/=]+$/;</span>
627
661
  &nbsp;
628
- if (!csr) {
629
- throw new ApacuanaAPIError(
662
+ <span class="cstat-no" title="statement not covered" > if (!csr) {</span>
663
+ <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
630
664
  "La solicitud de firma de certificado (CSR) es requerida.",
631
665
  400,
632
666
  "INVALID_PARAMETER"
633
667
  );
634
668
  }
635
669
  &nbsp;
636
- if (typeof csr !== "string" || csr.trim() === "") {
637
- throw new ApacuanaAPIError(
670
+ <span class="cstat-no" title="statement not covered" > if (typeof csr !== "string" || csr.trim() === "") {</span>
671
+ <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
638
672
  "El CSR debe ser una cadena de texto válida y no puede estar vacía.",
639
673
  400,
640
674
  "INVALID_PARAMETER_FORMAT"
641
675
  );
642
676
  }
643
677
  &nbsp;
644
- if (!base64Regex.test(csr)) {
645
- throw new ApacuanaAPIError(
678
+ <span class="cstat-no" title="statement not covered" > if (!base64Regex.test(csr)) {</span>
679
+ <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
646
680
  "El CSR debe estar codificado en formato base64 válido.",
647
681
  400,
648
682
  "INVALID_PARAMETER_FORMAT"
@@ -675,6 +709,22 @@ const validateGetDocsData = <span class="fstat-no" title="function not covered"
675
709
  }
676
710
  };
677
711
  &nbsp;
712
+ const validateGetDigestData = <span class="fstat-no" title="function not covered" >(s</span>ignData) =&gt; {
713
+ <span class="cstat-no" title="statement not covered" > if (</span>
714
+ !signData ||
715
+ !signData.cert ||
716
+ typeof signData.cert !== "string" ||
717
+ !signData.signatureId ||
718
+ typeof signData.signatureId !== "string"
719
+ ) {
720
+ <span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
721
+ "Los parámetros 'cert' y 'signatureId' son requeridos y deben ser cadenas de texto.",
722
+ 400,
723
+ "INVALID_PARAMETER"
724
+ );
725
+ }
726
+ };
727
+ &nbsp;
678
728
  export default {
679
729
  getCertificateStatus,
680
730
  exportPrivateKey,
@@ -683,6 +733,7 @@ export default {
683
733
  validateOnBoardingSignerData,
684
734
  validateCsr,
685
735
  validateGetDocsData,
736
+ validateGetDigestData,
686
737
  };
687
738
  &nbsp;</pre></td></tr></table></pre>
688
739
 
@@ -691,7 +742,7 @@ export default {
691
742
  <div class='footer quiet pad2 space-top1 center small'>
692
743
  Code coverage generated by
693
744
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
694
- at 2025-08-22T15:34:11.195Z
745
+ at 2025-08-25T16:11:28.089Z
695
746
  </div>
696
747
  <script src="../../prettify.js"></script>
697
748
  <script>
@@ -631,7 +631,7 @@ export const httpRequest = <span class="fstat-no" title="function not covered" >
631
631
  <div class='footer quiet pad2 space-top1 center small'>
632
632
  Code coverage generated by
633
633
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
634
- at 2025-08-22T15:34:11.195Z
634
+ at 2025-08-25T16:11:28.089Z
635
635
  </div>
636
636
  <script src="../../prettify.js"></script>
637
637
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">28.57% </span>
26
+ <span class="strong">12.17% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>32/112</span>
28
+ <span class='fraction'>14/115</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">21% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>25/119</span>
35
+ <span class='fraction'>0/126</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">23.07% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/13</span>
42
+ <span class='fraction'>0/14</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">28.44% </span>
47
+ <span class="strong">12.5% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>31/109</span>
49
+ <span class='fraction'>14/112</span>
50
50
  </div>
51
51
 
52
52
 
@@ -95,17 +95,17 @@
95
95
 
96
96
  <tr>
97
97
  <td class="file low" data-value="helpers.js"><a href="helpers.js.html">helpers.js</a></td>
98
- <td data-value="41.26" class="pic low">
99
- <div class="chart"><div class="cover-fill" style="width: 41%"></div><div class="cover-empty" style="width: 59%"></div></div>
98
+ <td data-value="12.12" 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="41.26" class="pct low">41.26%</td>
102
- <td data-value="63" class="abs low">26/63</td>
103
- <td data-value="31.64" class="pct low">31.64%</td>
104
- <td data-value="79" class="abs low">25/79</td>
105
- <td data-value="37.5" class="pct low">37.5%</td>
106
- <td data-value="8" class="abs low">3/8</td>
107
- <td data-value="41.66" class="pct low">41.66%</td>
108
- <td data-value="60" class="abs low">25/60</td>
101
+ <td data-value="12.12" class="pct low">12.12%</td>
102
+ <td data-value="66" class="abs low">8/66</td>
103
+ <td data-value="0" class="pct low">0%</td>
104
+ <td data-value="86" class="abs low">0/86</td>
105
+ <td data-value="0" class="pct low">0%</td>
106
+ <td data-value="9" class="abs low">0/9</td>
107
+ <td data-value="12.69" class="pct low">12.69%</td>
108
+ <td data-value="63" class="abs low">8/63</td>
109
109
  </tr>
110
110
 
111
111
  <tr>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at 2025-08-22T15:34:11.195Z
134
+ at 2025-08-25T16:11:28.089Z
135
135
  </div>
136
136
  <script src="../../prettify.js"></script>
137
137
  <script>