@featurevisor/core 2.20.0 → 2.22.1

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 (87) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/coverage/clover.xml +1286 -515
  3. package/coverage/coverage-final.json +17 -16
  4. package/coverage/lcov-report/builder/allocator.ts.html +1 -1
  5. package/coverage/lcov-report/builder/buildDatafile.ts.html +1 -1
  6. package/coverage/lcov-report/builder/buildScopedConditions.ts.html +1 -1
  7. package/coverage/lcov-report/builder/buildScopedDatafile.ts.html +1 -1
  8. package/coverage/lcov-report/builder/buildScopedSegments.ts.html +1 -1
  9. package/coverage/lcov-report/builder/convertToV1.ts.html +1 -1
  10. package/coverage/lcov-report/builder/getFeatureRanges.ts.html +1 -1
  11. package/coverage/lcov-report/builder/hashes.ts.html +1 -1
  12. package/coverage/lcov-report/builder/index.html +1 -1
  13. package/coverage/lcov-report/builder/mutateVariables.ts.html +1 -1
  14. package/coverage/lcov-report/builder/mutator.ts.html +1 -1
  15. package/coverage/lcov-report/builder/revision.ts.html +1 -1
  16. package/coverage/lcov-report/builder/traffic.ts.html +1 -1
  17. package/coverage/lcov-report/config/index.html +1 -1
  18. package/coverage/lcov-report/config/index.ts.html +1 -1
  19. package/coverage/lcov-report/config/projectConfig.ts.html +42 -42
  20. package/coverage/lcov-report/datasource/adapter.ts.html +2 -2
  21. package/coverage/lcov-report/datasource/datasource.ts.html +43 -43
  22. package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +48 -48
  23. package/coverage/lcov-report/datasource/index.html +19 -19
  24. package/coverage/lcov-report/datasource/index.ts.html +4 -4
  25. package/coverage/lcov-report/generate-code/index.html +116 -0
  26. package/coverage/lcov-report/generate-code/typescript.ts.html +3004 -0
  27. package/coverage/lcov-report/index.html +44 -29
  28. package/coverage/lcov-report/linter/attributeSchema.ts.html +1815 -30
  29. package/coverage/lcov-report/linter/checkCircularDependency.ts.html +1 -1
  30. package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +1 -1
  31. package/coverage/lcov-report/linter/conditionSchema.ts.html +1606 -157
  32. package/coverage/lcov-report/linter/featureSchema.ts.html +56 -56
  33. package/coverage/lcov-report/linter/groupSchema.ts.html +1 -1
  34. package/coverage/lcov-report/linter/index.html +39 -39
  35. package/coverage/lcov-report/linter/lintProject.ts.html +189 -78
  36. package/coverage/lcov-report/linter/mutationNotation.ts.html +1 -1
  37. package/coverage/lcov-report/linter/printError.ts.html +1 -1
  38. package/coverage/lcov-report/linter/schema.ts.html +59 -59
  39. package/coverage/lcov-report/linter/segmentSchema.ts.html +3 -3
  40. package/coverage/lcov-report/linter/testSchema.ts.html +6 -6
  41. package/coverage/lcov-report/list/index.html +1 -1
  42. package/coverage/lcov-report/list/matrix.ts.html +1 -1
  43. package/coverage/lcov-report/parsers/index.html +1 -1
  44. package/coverage/lcov-report/parsers/index.ts.html +4 -4
  45. package/coverage/lcov-report/parsers/json.ts.html +2 -2
  46. package/coverage/lcov-report/parsers/yml.ts.html +6 -6
  47. package/coverage/lcov-report/tester/cliFormat.ts.html +1 -1
  48. package/coverage/lcov-report/tester/helpers.ts.html +1 -1
  49. package/coverage/lcov-report/tester/index.html +1 -1
  50. package/coverage/lcov-report/utils/extractKeys.ts.html +1 -1
  51. package/coverage/lcov-report/utils/git.ts.html +3 -3
  52. package/coverage/lcov-report/utils/index.html +1 -1
  53. package/coverage/lcov-report/utils/index.ts.html +1 -1
  54. package/coverage/lcov-report/utils/pretty.ts.html +1 -1
  55. package/coverage/lcov.info +2624 -926
  56. package/lib/generate-code/typescript.js +57 -29
  57. package/lib/generate-code/typescript.js.map +1 -1
  58. package/lib/generate-code/typescript.spec.d.ts +1 -0
  59. package/lib/generate-code/typescript.spec.js +78 -0
  60. package/lib/generate-code/typescript.spec.js.map +1 -0
  61. package/lib/linter/attributeSchema.d.ts +352 -20
  62. package/lib/linter/attributeSchema.js +426 -16
  63. package/lib/linter/attributeSchema.js.map +1 -1
  64. package/lib/linter/attributeSchema.spec.d.ts +1 -0
  65. package/lib/linter/attributeSchema.spec.js +266 -0
  66. package/lib/linter/attributeSchema.spec.js.map +1 -0
  67. package/lib/linter/conditionSchema.d.ts +2 -1
  68. package/lib/linter/conditionSchema.js +370 -100
  69. package/lib/linter/conditionSchema.js.map +1 -1
  70. package/lib/linter/conditionSchema.spec.js +200 -153
  71. package/lib/linter/conditionSchema.spec.js.map +1 -1
  72. package/lib/linter/featureSchema.spec.js +114 -3
  73. package/lib/linter/featureSchema.spec.js.map +1 -1
  74. package/lib/linter/lintProject.js +45 -14
  75. package/lib/linter/lintProject.js.map +1 -1
  76. package/lib/linter/segmentSchema.spec.js +71 -1
  77. package/lib/linter/segmentSchema.spec.js.map +1 -1
  78. package/package.json +5 -5
  79. package/src/generate-code/typescript.spec.ts +108 -0
  80. package/src/generate-code/typescript.ts +80 -34
  81. package/src/linter/attributeSchema.spec.ts +342 -0
  82. package/src/linter/attributeSchema.ts +613 -18
  83. package/src/linter/conditionSchema.spec.ts +231 -189
  84. package/src/linter/conditionSchema.ts +582 -99
  85. package/src/linter/featureSchema.spec.ts +129 -4
  86. package/src/linter/lintProject.ts +55 -18
  87. package/src/linter/segmentSchema.spec.ts +82 -1
@@ -205,7 +205,7 @@ export function getUpdatedAvailableRangesAfterFilling(
205
205
  <div class='footer quiet pad2 space-top1 center small'>
206
206
  Code coverage generated by
207
207
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
208
- at 2026-03-01T23:08:13.696Z
208
+ at 2026-04-08T20:42:08.360Z
209
209
  </div>
210
210
  <script src="../prettify.js"></script>
211
211
  <script>
@@ -2002,7 +2002,7 @@ export async function buildDatafile(
2002
2002
  <div class='footer quiet pad2 space-top1 center small'>
2003
2003
  Code coverage generated by
2004
2004
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2005
- at 2026-03-01T23:08:13.696Z
2005
+ at 2026-04-08T20:42:08.360Z
2006
2006
  </div>
2007
2007
  <script src="../prettify.js"></script>
2008
2008
  <script>
@@ -472,7 +472,7 @@ export function buildScopedCondition(
472
472
  <div class='footer quiet pad2 space-top1 center small'>
473
473
  Code coverage generated by
474
474
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
475
- at 2026-03-01T23:08:13.696Z
475
+ at 2026-04-08T20:42:08.360Z
476
476
  </div>
477
477
  <script src="../prettify.js"></script>
478
478
  <script>
@@ -757,7 +757,7 @@ export function buildScopedDatafile(
757
757
  <div class='footer quiet pad2 space-top1 center small'>
758
758
  Code coverage generated by
759
759
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
760
- at 2026-03-01T23:08:13.696Z
760
+ at 2026-04-08T20:42:08.360Z
761
761
  </div>
762
762
  <script src="../prettify.js"></script>
763
763
  <script>
@@ -529,7 +529,7 @@ export function buildScopedGroupSegments(
529
529
  <div class='footer quiet pad2 space-top1 center small'>
530
530
  Code coverage generated by
531
531
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
532
- at 2026-03-01T23:08:13.696Z
532
+ at 2026-04-08T20:42:08.360Z
533
533
  </div>
534
534
  <script src="../prettify.js"></script>
535
535
  <script>
@@ -568,7 +568,7 @@ export function <span class="fstat-no" title="function not covered" >convertToV1
568
568
  <div class='footer quiet pad2 space-top1 center small'>
569
569
  Code coverage generated by
570
570
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
571
- at 2026-03-01T23:08:13.696Z
571
+ at 2026-04-08T20:42:08.360Z
572
572
  </div>
573
573
  <script src="../prettify.js"></script>
574
574
  <script>
@@ -253,7 +253,7 @@ export async function getFeatureRanges(
253
253
  <div class='footer quiet pad2 space-top1 center small'>
254
254
  Code coverage generated by
255
255
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
256
- at 2026-03-01T23:08:13.696Z
256
+ at 2026-04-08T20:42:08.360Z
257
257
  </div>
258
258
  <script src="../prettify.js"></script>
259
259
  <script>
@@ -397,7 +397,7 @@ export function <span class="fstat-no" title="function not covered" >generateHas
397
397
  <div class='footer quiet pad2 space-top1 center small'>
398
398
  Code coverage generated by
399
399
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
400
- at 2026-03-01T23:08:13.696Z
400
+ at 2026-04-08T20:42:08.360Z
401
401
  </div>
402
402
  <script src="../prettify.js"></script>
403
403
  <script>
@@ -266,7 +266,7 @@
266
266
  <div class='footer quiet pad2 space-top1 center small'>
267
267
  Code coverage generated by
268
268
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
269
- at 2026-03-01T23:08:13.696Z
269
+ at 2026-04-08T20:42:08.360Z
270
270
  </div>
271
271
  <script src="../prettify.js"></script>
272
272
  <script>
@@ -406,7 +406,7 @@ export function resolveMutationsForSingleVariable(
406
406
  <div class='footer quiet pad2 space-top1 center small'>
407
407
  Code coverage generated by
408
408
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
409
- at 2026-03-01T23:08:13.696Z
409
+ at 2026-04-08T20:42:08.360Z
410
410
  </div>
411
411
  <script src="../prettify.js"></script>
412
412
  <script>
@@ -781,7 +781,7 @@ export function mutate(
781
781
  <div class='footer quiet pad2 space-top1 center small'>
782
782
  Code coverage generated by
783
783
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
784
- at 2026-03-01T23:08:13.696Z
784
+ at 2026-04-08T20:42:08.360Z
785
785
  </div>
786
786
  <script src="../prettify.js"></script>
787
787
  <script>
@@ -136,7 +136,7 @@
136
136
  <div class='footer quiet pad2 space-top1 center small'>
137
137
  Code coverage generated by
138
138
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
139
- at 2026-03-01T23:08:13.696Z
139
+ at 2026-04-08T20:42:08.360Z
140
140
  </div>
141
141
  <script src="../prettify.js"></script>
142
142
  <script>
@@ -646,7 +646,7 @@ export function getTraffic(
646
646
  <div class='footer quiet pad2 space-top1 center small'>
647
647
  Code coverage generated by
648
648
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
649
- at 2026-03-01T23:08:13.696Z
649
+ at 2026-04-08T20:42:08.360Z
650
650
  </div>
651
651
  <script src="../prettify.js"></script>
652
652
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2026-03-01T23:08:13.696Z
119
+ at 2026-04-08T20:42:08.360Z
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>
@@ -73,7 +73,7 @@
73
73
  <div class='footer quiet pad2 space-top1 center small'>
74
74
  Code coverage generated by
75
75
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
76
- at 2026-03-01T23:08:13.696Z
76
+ at 2026-04-08T20:42:08.360Z
77
77
  </div>
78
78
  <script src="../prettify.js"></script>
79
79
  <script>
@@ -271,41 +271,41 @@
271
271
  <a name='L206'></a><a href='#L206'>206</a>
272
272
  <a name='L207'></a><a href='#L207'>207</a>
273
273
  <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
274
+ <a name='L209'></a><a href='#L209'>209</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">5x</span>
275
275
  <span class="cline-any cline-neutral">&nbsp;</span>
276
276
  <span class="cline-any cline-neutral">&nbsp;</span>
277
277
  <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-yes">4x</span>
279
- <span class="cline-any cline-yes">4x</span>
278
+ <span class="cline-any cline-yes">5x</span>
279
+ <span class="cline-any cline-yes">5x</span>
280
280
  <span class="cline-any cline-neutral">&nbsp;</span>
281
281
  <span class="cline-any cline-neutral">&nbsp;</span>
282
282
  <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-yes">4x</span>
284
- <span class="cline-any cline-yes">4x</span>
285
- <span class="cline-any cline-yes">4x</span>
286
- <span class="cline-any cline-yes">4x</span>
287
- <span class="cline-any cline-yes">4x</span>
288
- <span class="cline-any cline-yes">4x</span>
289
- <span class="cline-any cline-yes">4x</span>
290
- <span class="cline-any cline-yes">4x</span>
291
- <span class="cline-any cline-yes">4x</span>
292
- <span class="cline-any cline-yes">4x</span>
293
- <span class="cline-any cline-yes">4x</span>
294
- <span class="cline-any cline-yes">4x</span>
283
+ <span class="cline-any cline-yes">5x</span>
284
+ <span class="cline-any cline-yes">5x</span>
285
+ <span class="cline-any cline-yes">5x</span>
286
+ <span class="cline-any cline-yes">5x</span>
287
+ <span class="cline-any cline-yes">5x</span>
288
+ <span class="cline-any cline-yes">5x</span>
289
+ <span class="cline-any cline-yes">5x</span>
290
+ <span class="cline-any cline-yes">5x</span>
291
+ <span class="cline-any cline-yes">5x</span>
292
+ <span class="cline-any cline-yes">5x</span>
293
+ <span class="cline-any cline-yes">5x</span>
294
+ <span class="cline-any cline-yes">5x</span>
295
295
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-yes">4x</span>
297
- <span class="cline-any cline-yes">4x</span>
296
+ <span class="cline-any cline-yes">5x</span>
297
+ <span class="cline-any cline-yes">5x</span>
298
298
  <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">4x</span>
300
- <span class="cline-any cline-yes">4x</span>
301
- <span class="cline-any cline-yes">4x</span>
299
+ <span class="cline-any cline-yes">5x</span>
300
+ <span class="cline-any cline-yes">5x</span>
301
+ <span class="cline-any cline-yes">5x</span>
302
302
  <span class="cline-any cline-neutral">&nbsp;</span>
303
- <span class="cline-any cline-yes">4x</span>
304
- <span class="cline-any cline-yes">4x</span>
303
+ <span class="cline-any cline-yes">5x</span>
304
+ <span class="cline-any cline-yes">5x</span>
305
305
  <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-yes">4x</span>
306
+ <span class="cline-any cline-yes">5x</span>
307
307
  <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-yes">4x</span>
308
+ <span class="cline-any cline-yes">5x</span>
309
309
  <span class="cline-any cline-neutral">&nbsp;</span>
310
310
  <span class="cline-any cline-neutral">&nbsp;</span>
311
311
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -351,8 +351,8 @@
351
351
  <span class="cline-any cline-neutral">&nbsp;</span>
352
352
  <span class="cline-any cline-neutral">&nbsp;</span>
353
353
  <span class="cline-any cline-neutral">&nbsp;</span>
354
- <span class="cline-any cline-yes">4x</span>
355
- <span class="cline-any cline-yes">12x</span>
354
+ <span class="cline-any cline-yes">5x</span>
355
+ <span class="cline-any cline-yes">13x</span>
356
356
  <span class="cline-any cline-neutral">&nbsp;</span>
357
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
358
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -389,38 +389,38 @@
389
389
  <span class="cline-any cline-neutral">&nbsp;</span>
390
390
  <span class="cline-any cline-neutral">&nbsp;</span>
391
391
  <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-yes">12x</span>
393
- <span class="cline-any cline-yes">12x</span>
392
+ <span class="cline-any cline-yes">13x</span>
393
+ <span class="cline-any cline-yes">13x</span>
394
394
  <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-yes">12x</span>
395
+ <span class="cline-any cline-yes">13x</span>
396
396
  <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-yes">12x</span>
398
- <span class="cline-any cline-yes">336x</span>
397
+ <span class="cline-any cline-yes">13x</span>
398
+ <span class="cline-any cline-yes">364x</span>
399
399
  <span class="cline-any cline-neutral">&nbsp;</span>
400
400
  <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-yes">336x</span>
401
+ <span class="cline-any cline-yes">364x</span>
402
402
  <span class="cline-any cline-no">&nbsp;</span>
403
403
  <span class="cline-any cline-neutral">&nbsp;</span>
404
404
  <span class="cline-any cline-neutral">&nbsp;</span>
405
405
  <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">12x</span>
406
+ <span class="cline-any cline-yes">13x</span>
407
407
  <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-yes">12x</span>
409
- <span class="cline-any cline-yes">12x</span>
410
- <span class="cline-any cline-yes">12x</span>
408
+ <span class="cline-any cline-yes">13x</span>
409
+ <span class="cline-any cline-yes">13x</span>
410
+ <span class="cline-any cline-yes">13x</span>
411
411
  <span class="cline-any cline-no">&nbsp;</span>
412
412
  <span class="cline-any cline-neutral">&nbsp;</span>
413
413
  <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-yes">12x</span>
414
+ <span class="cline-any cline-yes">13x</span>
415
415
  <span class="cline-any cline-neutral">&nbsp;</span>
416
416
  <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-yes">12x</span>
417
+ <span class="cline-any cline-yes">13x</span>
418
418
  <span class="cline-any cline-yes">1x</span>
419
419
  <span class="cline-any cline-neutral">&nbsp;</span>
420
420
  <span class="cline-any cline-neutral">&nbsp;</span>
421
421
  <span class="cline-any cline-neutral">&nbsp;</span>
422
422
  <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-yes">11x</span>
423
+ <span class="cline-any cline-yes">12x</span>
424
424
  <span class="cline-any cline-neutral">&nbsp;</span>
425
425
  <span class="cline-any cline-neutral">&nbsp;</span>
426
426
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -428,7 +428,7 @@
428
428
  <span class="cline-any cline-neutral">&nbsp;</span>
429
429
  <span class="cline-any cline-neutral">&nbsp;</span>
430
430
  <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-yes">4x</span>
431
+ <span class="cline-any cline-yes">5x</span>
432
432
  <span class="cline-any cline-neutral">&nbsp;</span>
433
433
  <span class="cline-any cline-neutral">&nbsp;</span>
434
434
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -455,7 +455,7 @@
455
455
  <span class="cline-any cline-neutral">&nbsp;</span>
456
456
  <span class="cline-any cline-neutral">&nbsp;</span>
457
457
  <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-yes">4x</span>
458
+ <span class="cline-any cline-yes">5x</span>
459
459
  <span class="cline-any cline-neutral">&nbsp;</span>
460
460
  <span class="cline-any cline-neutral">&nbsp;</span>
461
461
  <span class="cline-any cline-no">&nbsp;</span>
@@ -694,7 +694,7 @@ export const configPlugin: Plugin = {
694
694
  <div class='footer quiet pad2 space-top1 center small'>
695
695
  Code coverage generated by
696
696
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
697
- at 2026-03-01T23:08:13.696Z
697
+ at 2026-04-08T20:42:08.360Z
698
698
  </div>
699
699
  <script src="../prettify.js"></script>
700
700
  <script>
@@ -161,7 +161,7 @@
161
161
  <span class="cline-any cline-neutral">&nbsp;</span>
162
162
  <span class="cline-any cline-neutral">&nbsp;</span>
163
163
  <span class="cline-any cline-neutral">&nbsp;</span>
164
- <span class="cline-any cline-yes">4x</span>
164
+ <span class="cline-any cline-yes">5x</span>
165
165
  <span class="cline-any cline-neutral">&nbsp;</span>
166
166
  <span class="cline-any cline-neutral">&nbsp;</span>
167
167
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -283,7 +283,7 @@ export abstract class Adapter {
283
283
  <div class='footer quiet pad2 space-top1 center small'>
284
284
  Code coverage generated by
285
285
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
286
- at 2026-03-01T23:08:13.696Z
286
+ at 2026-04-08T20:42:08.360Z
287
287
  </div>
288
288
  <script src="../prettify.js"></script>
289
289
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">43.28% </span>
26
+ <span class="strong">28.35% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>29/67</span>
28
+ <span class='fraction'>19/67</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">22.22% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/9</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">38.63% </span>
40
+ <span class="strong">36.36% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>17/44</span>
42
+ <span class='fraction'>16/44</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">43.28% </span>
47
+ <span class="strong">28.35% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>29/67</span>
49
+ <span class='fraction'>19/67</span>
50
50
  </div>
51
51
 
52
52
 
@@ -366,19 +366,19 @@
366
366
  <span class="cline-any cline-neutral">&nbsp;</span>
367
367
  <span class="cline-any cline-neutral">&nbsp;</span>
368
368
  <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-yes">2x</span>
369
+ <span class="cline-any cline-yes">3x</span>
370
370
  <span class="cline-any cline-neutral">&nbsp;</span>
371
371
  <span class="cline-any cline-neutral">&nbsp;</span>
372
372
  <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-yes">10x</span>
374
- <span class="cline-any cline-yes">10x</span>
373
+ <span class="cline-any cline-yes">11x</span>
374
+ <span class="cline-any cline-yes">11x</span>
375
375
  <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-yes">10x</span>
376
+ <span class="cline-any cline-yes">11x</span>
377
377
  <span class="cline-any cline-neutral">&nbsp;</span>
378
378
  <span class="cline-any cline-neutral">&nbsp;</span>
379
379
  <span class="cline-any cline-neutral">&nbsp;</span>
380
380
  <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-yes">252x</span>
381
+ <span class="cline-any cline-yes">304x</span>
382
382
  <span class="cline-any cline-neutral">&nbsp;</span>
383
383
  <span class="cline-any cline-neutral">&nbsp;</span>
384
384
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -420,7 +420,7 @@
420
420
  <span class="cline-any cline-neutral">&nbsp;</span>
421
421
  <span class="cline-any cline-neutral">&nbsp;</span>
422
422
  <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-yes">6x</span>
423
+ <span class="cline-any cline-yes">7x</span>
424
424
  <span class="cline-any cline-neutral">&nbsp;</span>
425
425
  <span class="cline-any cline-neutral">&nbsp;</span>
426
426
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -428,7 +428,7 @@
428
428
  <span class="cline-any cline-neutral">&nbsp;</span>
429
429
  <span class="cline-any cline-neutral">&nbsp;</span>
430
430
  <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-yes">62x</span>
431
+ <span class="cline-any cline-yes">93x</span>
432
432
  <span class="cline-any cline-neutral">&nbsp;</span>
433
433
  <span class="cline-any cline-neutral">&nbsp;</span>
434
434
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -490,7 +490,7 @@
490
490
  <span class="cline-any cline-neutral">&nbsp;</span>
491
491
  <span class="cline-any cline-neutral">&nbsp;</span>
492
492
  <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-yes">32x</span>
493
+ <span class="cline-any cline-yes">44x</span>
494
494
  <span class="cline-any cline-neutral">&nbsp;</span>
495
495
  <span class="cline-any cline-neutral">&nbsp;</span>
496
496
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -503,28 +503,28 @@
503
503
  <span class="cline-any cline-neutral">&nbsp;</span>
504
504
  <span class="cline-any cline-neutral">&nbsp;</span>
505
505
  <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-yes">12x</span>
506
+ <span class="cline-any cline-yes">7x</span>
507
507
  <span class="cline-any cline-neutral">&nbsp;</span>
508
508
  <span class="cline-any cline-neutral">&nbsp;</span>
509
509
  <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-yes">6x</span>
511
- <span class="cline-any cline-yes">6x</span>
510
+ <span class="cline-any cline-no">&nbsp;</span>
511
+ <span class="cline-any cline-no">&nbsp;</span>
512
512
  <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-yes">6x</span>
514
- <span class="cline-any cline-yes">45x</span>
513
+ <span class="cline-any cline-no">&nbsp;</span>
514
+ <span class="cline-any cline-no">&nbsp;</span>
515
515
  <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-yes">45x</span>
516
+ <span class="cline-any cline-no">&nbsp;</span>
517
517
  <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-yes">45x</span>
518
+ <span class="cline-any cline-no">&nbsp;</span>
519
519
  <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-yes">4x</span>
521
- <span class="cline-any cline-yes">4x</span>
522
- <span class="cline-any cline-yes">8x</span>
520
+ <span class="cline-any cline-no">&nbsp;</span>
521
+ <span class="cline-any cline-no">&nbsp;</span>
522
+ <span class="cline-any cline-no">&nbsp;</span>
523
523
  <span class="cline-any cline-neutral">&nbsp;</span>
524
524
  <span class="cline-any cline-neutral">&nbsp;</span>
525
525
  <span class="cline-any cline-neutral">&nbsp;</span>
526
526
  <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-yes">6x</span>
527
+ <span class="cline-any cline-no">&nbsp;</span>
528
528
  <span class="cline-any cline-neutral">&nbsp;</span>
529
529
  <span class="cline-any cline-neutral">&nbsp;</span>
530
530
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -532,7 +532,7 @@
532
532
  <span class="cline-any cline-neutral">&nbsp;</span>
533
533
  <span class="cline-any cline-neutral">&nbsp;</span>
534
534
  <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-yes">79x</span>
535
+ <span class="cline-any cline-yes">86x</span>
536
536
  <span class="cline-any cline-neutral">&nbsp;</span>
537
537
  <span class="cline-any cline-neutral">&nbsp;</span>
538
538
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -566,7 +566,7 @@
566
566
  <span class="cline-any cline-neutral">&nbsp;</span>
567
567
  <span class="cline-any cline-neutral">&nbsp;</span>
568
568
  <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-yes">6x</span>
569
+ <span class="cline-any cline-yes">7x</span>
570
570
  <span class="cline-any cline-neutral">&nbsp;</span>
571
571
  <span class="cline-any cline-neutral">&nbsp;</span>
572
572
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -574,7 +574,7 @@
574
574
  <span class="cline-any cline-neutral">&nbsp;</span>
575
575
  <span class="cline-any cline-neutral">&nbsp;</span>
576
576
  <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-yes">120x</span>
577
+ <span class="cline-any cline-yes">140x</span>
578
578
  <span class="cline-any cline-neutral">&nbsp;</span>
579
579
  <span class="cline-any cline-neutral">&nbsp;</span>
580
580
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -591,7 +591,7 @@
591
591
  <span class="cline-any cline-neutral">&nbsp;</span>
592
592
  <span class="cline-any cline-neutral">&nbsp;</span>
593
593
  <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-yes">88x</span>
594
+ <span class="cline-any cline-yes">106x</span>
595
595
  <span class="cline-any cline-neutral">&nbsp;</span>
596
596
  <span class="cline-any cline-neutral">&nbsp;</span>
597
597
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -782,25 +782,25 @@ export class Datasource {
782
782
  return this.adapter.listEntities("attribute");
783
783
  }
784
784
  &nbsp;
785
- async listFlattenedAttributes() {
786
- const attributes = await this.listAttributes();
787
- const result: string[] = [];
785
+ <span class="fstat-no" title="function not covered" > async </span>listFlattenedAttributes() {
786
+ const attributes = <span class="cstat-no" title="statement not covered" >await this.listAttributes();</span>
787
+ const result: string[] = <span class="cstat-no" title="statement not covered" >[];</span>
788
788
  &nbsp;
789
- for (const key of attributes) {
790
- const attribute = await this.readAttribute(key);
789
+ <span class="cstat-no" title="statement not covered" > for (const key of attributes) {</span>
790
+ const attribute = <span class="cstat-no" title="statement not covered" >await this.readAttribute(key);</span>
791
791
  &nbsp;
792
- result.push(key);
792
+ <span class="cstat-no" title="statement not covered" > result.push(key);</span>
793
793
  &nbsp;
794
- if (attribute.type === "object") {
794
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (attribute.type === "object") {</span>
795
795
  // @NOTE: in future, this can be recursive
796
- const propertyKeys = Object.keys(attribute.properties || <span class="branch-1 cbranch-no" title="branch not covered" >{})</span>;
797
- for (const propertyKey of propertyKeys) {
798
- result.push(`${key}.${propertyKey}`);
796
+ const propertyKeys = <span class="cstat-no" title="statement not covered" >Object.keys(attribute.properties || {});</span>
797
+ <span class="cstat-no" title="statement not covered" > for (const propertyKey of propertyKeys) {</span>
798
+ <span class="cstat-no" title="statement not covered" > result.push(`${key}.${propertyKey}`);</span>
799
799
  }
800
800
  }
801
801
  }
802
802
  &nbsp;
803
- return result;
803
+ <span class="cstat-no" title="statement not covered" > return result;</span>
804
804
  }
805
805
  &nbsp;
806
806
  <span class="fstat-no" title="function not covered" > attributeExists(</span>attributeKey: AttributeKey) {
@@ -898,7 +898,7 @@ export class Datasource {
898
898
  <div class='footer quiet pad2 space-top1 center small'>
899
899
  Code coverage generated by
900
900
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
901
- at 2026-03-01T23:08:13.696Z
901
+ at 2026-04-08T20:42:08.360Z
902
902
  </div>
903
903
  <script src="../prettify.js"></script>
904
904
  <script>