@vizabi/reader-ddfcsv 4.1.1 → 5.0.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 (133) hide show
  1. package/.nyc_output/728a89bae7b247a7244820c1b6596c8b.json +1 -0
  2. package/.nyc_output/{b4e1a7f86ae858c85e0528842263588d.json → e875174b7b217be31b58605962f05304.json} +0 -0
  3. package/.travis.yml +0 -0
  4. package/CHANGELOG.md +0 -0
  5. package/LICENSE +0 -0
  6. package/README.md +0 -0
  7. package/coverage/base.css +0 -0
  8. package/coverage/block-navigation.js +0 -0
  9. package/coverage/index.html +39 -39
  10. package/coverage/prettify.css +0 -0
  11. package/coverage/prettify.js +0 -0
  12. package/coverage/sort-arrow-sprite.png +0 -0
  13. package/coverage/sorter.js +0 -0
  14. package/coverage/src/ddf-csv.ts.html +377 -377
  15. package/coverage/src/ddfcsv-error.ts.html +6 -6
  16. package/coverage/src/ddfcsv-reader.ts.html +52 -106
  17. package/coverage/src/file-readers/backend-file-reader.ts.html +15 -27
  18. package/coverage/src/file-readers/github-file-reader.ts.html +168 -0
  19. package/coverage/src/file-readers/index.html +26 -26
  20. package/coverage/src/index.html +29 -29
  21. package/coverage/src/index.ts.html +19 -4
  22. package/coverage/src/resource-selection-optimizer/in-clause-under-conjunction.ts.html +236 -236
  23. package/coverage/src/resource-selection-optimizer/index.html +20 -20
  24. package/coverage/src/resource-selection-optimizer/index.ts.html +3 -3
  25. package/coverage/src/test-cases/concepts.ts.html +1 -1
  26. package/coverage/src/test-cases/entities.ts.html +1 -1
  27. package/coverage/src/test-cases/index.html +1 -1
  28. package/deploy.js +0 -0
  29. package/dist/reader-ddfcsv-polyfill.js +1 -16
  30. package/dist/reader-ddfcsv-polyfill.js.map +1 -1
  31. package/dist/reader-ddfcsv.js +1 -16
  32. package/dist/reader-ddfcsv.js.map +1 -1
  33. package/icon.png +0 -0
  34. package/lib/src/ddf-csv.d.ts +0 -0
  35. package/lib/src/ddf-csv.js +16 -18
  36. package/lib/src/ddf-csv.js.map +1 -1
  37. package/lib/src/ddfcsv-error.d.ts +0 -0
  38. package/lib/src/ddfcsv-error.js +1 -0
  39. package/lib/src/ddfcsv-error.js.map +1 -1
  40. package/lib/src/ddfcsv-reader.d.ts +0 -0
  41. package/lib/src/ddfcsv-reader.js +6 -5
  42. package/lib/src/ddfcsv-reader.js.map +1 -1
  43. package/lib/src/file-readers/backend-file-reader.d.ts +0 -0
  44. package/lib/src/file-readers/backend-file-reader.js +1 -0
  45. package/lib/src/file-readers/backend-file-reader.js.map +1 -1
  46. package/lib/src/file-readers/github-path-adapter.d.ts +0 -0
  47. package/lib/src/file-readers/github-path-adapter.js +1 -0
  48. package/lib/src/file-readers/github-path-adapter.js.map +1 -1
  49. package/lib/src/index.d.ts +0 -0
  50. package/lib/src/index.js +5 -4
  51. package/lib/src/index.js.map +1 -1
  52. package/lib/src/interfaces.d.ts +0 -0
  53. package/lib/src/interfaces.js +0 -0
  54. package/lib/src/interfaces.js.map +0 -0
  55. package/lib/src/resource-selection-optimizer/in-clause-under-conjunction.d.ts +1 -0
  56. package/lib/src/resource-selection-optimizer/in-clause-under-conjunction.js +37 -12
  57. package/lib/src/resource-selection-optimizer/in-clause-under-conjunction.js.map +1 -1
  58. package/lib/src/resource-selection-optimizer/index.d.ts +0 -0
  59. package/lib/src/resource-selection-optimizer/index.js +1 -0
  60. package/lib/src/resource-selection-optimizer/index.js.map +1 -1
  61. package/lib-web/src/ddf-csv.d.ts +0 -0
  62. package/lib-web/src/ddf-csv.js +272 -388
  63. package/lib-web/src/ddf-csv.js.map +1 -1
  64. package/lib-web/src/ddfcsv-error.d.ts +0 -0
  65. package/lib-web/src/ddfcsv-error.js +9 -12
  66. package/lib-web/src/ddfcsv-error.js.map +1 -1
  67. package/lib-web/src/ddfcsv-reader.d.ts +0 -0
  68. package/lib-web/src/ddfcsv-reader.js +84 -125
  69. package/lib-web/src/ddfcsv-reader.js.map +1 -1
  70. package/lib-web/src/file-readers/frontend-file-reader.d.ts +0 -0
  71. package/lib-web/src/file-readers/frontend-file-reader.js +14 -16
  72. package/lib-web/src/file-readers/frontend-file-reader.js.map +1 -1
  73. package/lib-web/src/file-readers/github-path-adapter.d.ts +0 -0
  74. package/lib-web/src/file-readers/github-path-adapter.js +6 -5
  75. package/lib-web/src/file-readers/github-path-adapter.js.map +1 -1
  76. package/lib-web/src/index-web.d.ts +0 -0
  77. package/lib-web/src/index-web.js +6 -5
  78. package/lib-web/src/index-web.js.map +1 -1
  79. package/lib-web/src/interfaces.d.ts +0 -0
  80. package/lib-web/src/interfaces.js +0 -0
  81. package/lib-web/src/interfaces.js.map +0 -0
  82. package/lib-web/src/resource-selection-optimizer/in-clause-under-conjunction.d.ts +1 -0
  83. package/lib-web/src/resource-selection-optimizer/in-clause-under-conjunction.js +181 -335
  84. package/lib-web/src/resource-selection-optimizer/in-clause-under-conjunction.js.map +1 -1
  85. package/lib-web/src/resource-selection-optimizer/index.d.ts +0 -0
  86. package/lib-web/src/resource-selection-optimizer/index.js +5 -4
  87. package/lib-web/src/resource-selection-optimizer/index.js.map +1 -1
  88. package/package.json +6 -4
  89. package/scripts/set-own-version.js +0 -0
  90. package/src/ddf-csv.ts +11 -10
  91. package/src/ddfcsv-error.ts +0 -0
  92. package/src/ddfcsv-reader.ts +0 -0
  93. package/src/file-readers/backend-file-reader.ts +0 -0
  94. package/src/file-readers/frontend-file-reader.ts +0 -0
  95. package/src/file-readers/github-path-adapter.ts +0 -0
  96. package/src/index-web.ts +0 -0
  97. package/src/index.ts +0 -0
  98. package/src/interfaces.ts +0 -0
  99. package/src/resource-selection-optimizer/in-clause-under-conjunction.ts +40 -12
  100. package/src/resource-selection-optimizer/index.ts +0 -0
  101. package/src/test-cases/concepts.ts +0 -0
  102. package/src/test-cases/entities.ts +0 -0
  103. package/test/assets-fixtures/world-50m.json +0 -0
  104. package/test/assets.spec.ts +0 -0
  105. package/test/common.ts +0 -0
  106. package/test/definition/concepts-definition.spec.ts +0 -0
  107. package/test/definition/datapoints-definition.spec.ts +0 -0
  108. package/test/definition/entities-definition.spec.ts +0 -0
  109. package/test/definition/schema-definition.spec.ts +0 -0
  110. package/test/diagnostics.spec.ts +0 -0
  111. package/test/features-service.spec.ts +0 -0
  112. package/test/high-load.spec.ts +0 -0
  113. package/test/main.spec.ts +0 -0
  114. package/test/mocha.opts +0 -0
  115. package/test/multi-instances.spec.ts +0 -0
  116. package/test/result-fixtures/datapoints-assets.json +0 -0
  117. package/test/result-fixtures/in-clause-under-conjunction-1.json +0 -0
  118. package/test/result-fixtures/in-clause-under-conjunction-2.json +0 -0
  119. package/test/result-fixtures/multi-instances/concepts-sg.json +0 -0
  120. package/test/result-fixtures/multi-instances/concepts-soderstornsmodellen.json +0 -0
  121. package/test/result-fixtures/multi-instances/datapoints-sg.json +0 -0
  122. package/test/result-fixtures/multi-instances/datapoints-soderstornsmodellen.json +0 -0
  123. package/test/result-fixtures/multi-instances/entities-sg.json +0 -0
  124. package/test/result-fixtures/multi-instances/entities-soderstornsmodellen.json +0 -0
  125. package/test/result-fixtures/multi-instances/schema-sg.json +0 -0
  126. package/test/result-fixtures/multi-instances/schema-soderstornsmodellen.json +0 -0
  127. package/test/schema.spec.ts +0 -0
  128. package/test/tslint.json +0 -0
  129. package/tsconfig-web.json +5 -2
  130. package/tsconfig.json +1 -1
  131. package/tslint.json +0 -0
  132. package/.nyc_output/795caf0b3acca8aacbd9d932d086ab81.json +0 -1
  133. package/coverage/src/file-readers/github-path-adapter.ts.html +0 -228
@@ -20,31 +20,31 @@
20
20
  </h1>
21
21
  <div class='clearfix'>
22
22
  <div class='fl pad1y space-right2'>
23
- <span class="strong">22.45% </span>
23
+ <span class="strong">94.56% </span>
24
24
  <span class="quiet">Statements</span>
25
- <span class='fraction'>33/147</span>
25
+ <span class='fraction'>139/147</span>
26
26
  </div>
27
27
  <div class='fl pad1y space-right2'>
28
- <span class="strong">5.41% </span>
28
+ <span class="strong">86.49% </span>
29
29
  <span class="quiet">Branches</span>
30
- <span class='fraction'>2/37</span>
30
+ <span class='fraction'>32/37</span>
31
31
  </div>
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">11.11% </span>
33
+ <span class="strong">96.3% </span>
34
34
  <span class="quiet">Functions</span>
35
- <span class='fraction'>3/27</span>
35
+ <span class='fraction'>26/27</span>
36
36
  </div>
37
37
  <div class='fl pad1y space-right2'>
38
- <span class="strong">22.86% </span>
38
+ <span class="strong">94.29% </span>
39
39
  <span class="quiet">Lines</span>
40
- <span class='fraction'>32/140</span>
40
+ <span class='fraction'>132/140</span>
41
41
  </div>
42
42
  </div>
43
43
  <p class="quiet">
44
44
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
45
45
  </p>
46
46
  </div>
47
- <div class='status-line low'></div>
47
+ <div class='status-line high'></div>
48
48
  <pre><table class="coverage">
49
49
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
50
50
  <a name='L2'></a><a href='#L2'>2</a>
@@ -351,58 +351,58 @@
351
351
  <span class="cline-any cline-yes">1x</span>
352
352
  <span class="cline-any cline-yes">1x</span>
353
353
  <span class="cline-any cline-neutral">&nbsp;</span>
354
- <span class="cline-any cline-yes">1x</span>
355
- <span class="cline-any cline-yes">1x</span>
356
- <span class="cline-any cline-yes">1x</span>
354
+ <span class="cline-any cline-yes">8x</span>
355
+ <span class="cline-any cline-yes">820x</span>
356
+ <span class="cline-any cline-yes">20x</span>
357
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
358
  <span class="cline-any cline-yes">1x</span>
359
- <span class="cline-any cline-yes">51x</span>
359
+ <span class="cline-any cline-yes">7706x</span>
360
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
361
  <span class="cline-any cline-neutral">&nbsp;</span>
362
362
  <span class="cline-any cline-neutral">&nbsp;</span>
363
363
  <span class="cline-any cline-neutral">&nbsp;</span>
364
364
  <span class="cline-any cline-neutral">&nbsp;</span>
365
365
  <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-yes">51x</span>
367
- <span class="cline-any cline-yes">51x</span>
368
- <span class="cline-any cline-yes">51x</span>
369
- <span class="cline-any cline-yes">51x</span>
370
- <span class="cline-any cline-yes">51x</span>
371
- <span class="cline-any cline-yes">51x</span>
366
+ <span class="cline-any cline-yes">7706x</span>
367
+ <span class="cline-any cline-yes">7706x</span>
368
+ <span class="cline-any cline-yes">7706x</span>
369
+ <span class="cline-any cline-yes">7706x</span>
370
+ <span class="cline-any cline-yes">7706x</span>
371
+ <span class="cline-any cline-yes">7706x</span>
372
372
  <span class="cline-any cline-neutral">&nbsp;</span>
373
373
  <span class="cline-any cline-neutral">&nbsp;</span>
374
374
  <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-yes">51x</span>
375
+ <span class="cline-any cline-yes">7711x</span>
376
376
  <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-yes">102x</span>
377
+ <span class="cline-any cline-yes">15422x</span>
378
378
  <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-yes">51x</span>
379
+ <span class="cline-any cline-yes">7711x</span>
380
380
  <span class="cline-any cline-neutral">&nbsp;</span>
381
381
  <span class="cline-any cline-neutral">&nbsp;</span>
382
382
  <span class="cline-any cline-neutral">&nbsp;</span>
383
383
  <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-no">&nbsp;</span>
384
+ <span class="cline-any cline-yes">5x</span>
385
385
  <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-no">&nbsp;</span>
387
- <span class="cline-any cline-no">&nbsp;</span>
386
+ <span class="cline-any cline-yes">5x</span>
387
+ <span class="cline-any cline-yes">5x</span>
388
388
  <span class="cline-any cline-neutral">&nbsp;</span>
389
389
  <span class="cline-any cline-neutral">&nbsp;</span>
390
- <span class="cline-any cline-no">&nbsp;</span>
391
- <span class="cline-any cline-no">&nbsp;</span>
392
- <span class="cline-any cline-no">&nbsp;</span>
393
- <span class="cline-any cline-no">&nbsp;</span>
394
- <span class="cline-any cline-no">&nbsp;</span>
395
- <span class="cline-any cline-no">&nbsp;</span>
396
- <span class="cline-any cline-no">&nbsp;</span>
397
- <span class="cline-any cline-no">&nbsp;</span>
390
+ <span class="cline-any cline-yes">5x</span>
391
+ <span class="cline-any cline-yes">5x</span>
392
+ <span class="cline-any cline-yes">5x</span>
393
+ <span class="cline-any cline-yes">5x</span>
394
+ <span class="cline-any cline-yes">5x</span>
395
+ <span class="cline-any cline-yes">5x</span>
396
+ <span class="cline-any cline-yes">5x</span>
397
+ <span class="cline-any cline-yes">5x</span>
398
398
  <span class="cline-any cline-neutral">&nbsp;</span>
399
399
  <span class="cline-any cline-no">&nbsp;</span>
400
400
  <span class="cline-any cline-no">&nbsp;</span>
401
401
  <span class="cline-any cline-neutral">&nbsp;</span>
402
402
  <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-no">&nbsp;</span>
403
+ <span class="cline-any cline-yes">5x</span>
404
404
  <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-no">&nbsp;</span>
405
+ <span class="cline-any cline-yes">5x</span>
406
406
  <span class="cline-any cline-neutral">&nbsp;</span>
407
407
  <span class="cline-any cline-no">&nbsp;</span>
408
408
  <span class="cline-any cline-no">&nbsp;</span>
@@ -411,176 +411,176 @@
411
411
  <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
415
- <span class="cline-any cline-no">&nbsp;</span>
414
+ <span class="cline-any cline-yes">5x</span>
415
+ <span class="cline-any cline-yes">1510x</span>
416
416
  <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-no">&nbsp;</span>
417
+ <span class="cline-any cline-yes">1510x</span>
418
418
  <span class="cline-any cline-neutral">&nbsp;</span>
419
419
  <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-no">&nbsp;</span>
420
+ <span class="cline-any cline-yes">5x</span>
421
421
  <span class="cline-any cline-neutral">&nbsp;</span>
422
422
  <span class="cline-any cline-neutral">&nbsp;</span>
423
423
  <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-no">&nbsp;</span>
424
+ <span class="cline-any cline-yes">5x</span>
425
425
  <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-yes">5x</span>
427
427
  <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-no">&nbsp;</span>
429
- <span class="cline-any cline-no">&nbsp;</span>
428
+ <span class="cline-any cline-yes">5x</span>
429
+ <span class="cline-any cline-yes">10x</span>
430
430
  <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-no">&nbsp;</span>
432
- <span class="cline-any cline-no">&nbsp;</span>
431
+ <span class="cline-any cline-yes">10x</span>
432
+ <span class="cline-any cline-yes">4x</span>
433
433
  <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-no">&nbsp;</span>
434
+ <span class="cline-any cline-yes">8x</span>
435
435
  <span class="cline-any cline-neutral">&nbsp;</span>
436
436
  <span class="cline-any cline-neutral">&nbsp;</span>
437
437
  <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-no">&nbsp;</span>
438
+ <span class="cline-any cline-yes">5x</span>
439
439
  <span class="cline-any cline-neutral">&nbsp;</span>
440
440
  <span class="cline-any cline-neutral">&nbsp;</span>
441
441
  <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-no">&nbsp;</span>
443
- <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-yes">5x</span>
443
+ <span class="cline-any cline-yes">5x</span>
444
444
  <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-no">&nbsp;</span>
446
- <span class="cline-any cline-no">&nbsp;</span>
447
- <span class="cline-any cline-no">&nbsp;</span>
445
+ <span class="cline-any cline-yes">5x</span>
446
+ <span class="cline-any cline-yes">460x</span>
447
+ <span class="cline-any cline-yes">820x</span>
448
448
  <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-no">&nbsp;</span>
450
- <span class="cline-any cline-no">&nbsp;</span>
451
- <span class="cline-any cline-no">&nbsp;</span>
449
+ <span class="cline-any cline-yes">820x</span>
450
+ <span class="cline-any cline-yes">158x</span>
451
+ <span class="cline-any cline-yes">242x</span>
452
452
  <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-no">&nbsp;</span>
454
- <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-yes">242x</span>
454
+ <span class="cline-any cline-yes">242x</span>
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
458
  <span class="cline-any cline-neutral">&nbsp;</span>
459
459
  <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-no">&nbsp;</span>
460
+ <span class="cline-any cline-yes">5x</span>
461
461
  <span class="cline-any cline-neutral">&nbsp;</span>
462
462
  <span class="cline-any cline-neutral">&nbsp;</span>
463
463
  <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-no">&nbsp;</span>
465
- <span class="cline-any cline-no">&nbsp;</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-no">&nbsp;</span>
464
+ <span class="cline-any cline-yes">5x</span>
465
+ <span class="cline-any cline-yes">242x</span>
466
+ <span class="cline-any cline-yes">242x</span>
467
+ <span class="cline-any cline-yes">242x</span>
468
468
  <span class="cline-any cline-no">&nbsp;</span>
469
469
  <span class="cline-any cline-neutral">&nbsp;</span>
470
470
  <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-no">&nbsp;</span>
471
+ <span class="cline-any cline-yes">242x</span>
472
472
  <span class="cline-any cline-neutral">&nbsp;</span>
473
473
  <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-no">&nbsp;</span>
474
+ <span class="cline-any cline-yes">242x</span>
475
475
  <span class="cline-any cline-no">&nbsp;</span>
476
476
  <span class="cline-any cline-neutral">&nbsp;</span>
477
477
  <span class="cline-any cline-neutral">&nbsp;</span>
478
478
  <span class="cline-any cline-neutral">&nbsp;</span>
479
479
  <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-no">&nbsp;</span>
480
+ <span class="cline-any cline-yes">5x</span>
481
481
  <span class="cline-any cline-neutral">&nbsp;</span>
482
482
  <span class="cline-any cline-neutral">&nbsp;</span>
483
483
  <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-no">&nbsp;</span>
485
- <span class="cline-any cline-no">&nbsp;</span>
486
- <span class="cline-any cline-no">&nbsp;</span>
484
+ <span class="cline-any cline-yes">31795x</span>
485
+ <span class="cline-any cline-yes">962778x</span>
486
+ <span class="cline-any cline-yes">31582x</span>
487
487
  <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-no">&nbsp;</span>
489
- <span class="cline-any cline-no">&nbsp;</span>
488
+ <span class="cline-any cline-yes">5x</span>
489
+ <span class="cline-any cline-yes">5x</span>
490
490
  <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-no">&nbsp;</span>
493
- <span class="cline-any cline-no">&nbsp;</span>
494
- <span class="cline-any cline-no">&nbsp;</span>
495
- <span class="cline-any cline-no">&nbsp;</span>
491
+ <span class="cline-any cline-yes">5x</span>
492
+ <span class="cline-any cline-yes">242x</span>
493
+ <span class="cline-any cline-yes">31795x</span>
494
+ <span class="cline-any cline-yes">31795x</span>
495
+ <span class="cline-any cline-yes">31795x</span>
496
496
  <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-no">&nbsp;</span>
498
- <span class="cline-any cline-no">&nbsp;</span>
497
+ <span class="cline-any cline-yes">31795x</span>
498
+ <span class="cline-any cline-yes">213x</span>
499
499
  <span class="cline-any cline-neutral">&nbsp;</span>
500
500
  <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-no">&nbsp;</span>
502
- <span class="cline-any cline-no">&nbsp;</span>
501
+ <span class="cline-any cline-yes">31795x</span>
502
+ <span class="cline-any cline-yes">31795x</span>
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-no">&nbsp;</span>
506
+ <span class="cline-any cline-yes">5x</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-no">&nbsp;</span>
511
- <span class="cline-any cline-no">&nbsp;</span>
510
+ <span class="cline-any cline-yes">5x</span>
511
+ <span class="cline-any cline-yes">2x</span>
512
512
  <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-no">&nbsp;</span>
514
- <span class="cline-any cline-no">&nbsp;</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
513
+ <span class="cline-any cline-yes">2x</span>
514
+ <span class="cline-any cline-yes">230x</span>
515
+ <span class="cline-any cline-yes">226x</span>
516
516
  <span class="cline-any cline-neutral">&nbsp;</span>
517
517
  <span class="cline-any cline-neutral">&nbsp;</span>
518
518
  <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-no">&nbsp;</span>
519
+ <span class="cline-any cline-yes">2x</span>
520
520
  <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-no">&nbsp;</span>
521
+ <span class="cline-any cline-yes">5x</span>
522
522
  <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-no">&nbsp;</span>
524
- <span class="cline-any cline-no">&nbsp;</span>
523
+ <span class="cline-any cline-yes">5x</span>
524
+ <span class="cline-any cline-yes">8x</span>
525
525
  <span class="cline-any cline-neutral">&nbsp;</span>
526
526
  <span class="cline-any cline-neutral">&nbsp;</span>
527
527
  <span class="cline-any cline-neutral">&nbsp;</span>
528
528
  <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-no">&nbsp;</span>
530
- <span class="cline-any cline-no">&nbsp;</span>
529
+ <span class="cline-any cline-yes">8x</span>
530
+ <span class="cline-any cline-yes">8x</span>
531
531
  <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-no">&nbsp;</span>
533
- <span class="cline-any cline-no">&nbsp;</span>
532
+ <span class="cline-any cline-yes">8x</span>
533
+ <span class="cline-any cline-yes">232x</span>
534
534
  <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-no">&nbsp;</span>
535
+ <span class="cline-any cline-yes">232x</span>
536
536
  <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-no">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-no">&nbsp;</span>
537
+ <span class="cline-any cline-yes">232x</span>
538
+ <span class="cline-any cline-yes">232x</span>
539
+ <span class="cline-any cline-yes">7344x</span>
540
+ <span class="cline-any cline-yes">194501x</span>
541
+ <span class="cline-any cline-yes">168277x</span>
542
542
  <span class="cline-any cline-neutral">&nbsp;</span>
543
543
  <span class="cline-any cline-neutral">&nbsp;</span>
544
544
  <span class="cline-any cline-neutral">&nbsp;</span>
545
545
  <span class="cline-any cline-neutral">&nbsp;</span>
546
546
  <span class="cline-any cline-neutral">&nbsp;</span>
547
547
  <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
548
+ <span class="cline-any cline-yes">8x</span>
549
+ <span class="cline-any cline-yes">79x</span>
550
+ <span class="cline-any cline-yes">79x</span>
551
551
  <span class="cline-any cline-neutral">&nbsp;</span>
552
552
  <span class="cline-any cline-neutral">&nbsp;</span>
553
553
  <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-no">&nbsp;</span>
554
+ <span class="cline-any cline-yes">8x</span>
555
555
  <span class="cline-any cline-neutral">&nbsp;</span>
556
556
  <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-no">&nbsp;</span>
557
+ <span class="cline-any cline-yes">5x</span>
558
558
  <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
559
+ <span class="cline-any cline-yes">5x</span>
560
560
  <span class="cline-any cline-neutral">&nbsp;</span>
561
561
  <span class="cline-any cline-neutral">&nbsp;</span>
562
562
  <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-no">&nbsp;</span>
563
+ <span class="cline-any cline-yes">5x</span>
564
564
  <span class="cline-any cline-neutral">&nbsp;</span>
565
565
  <span class="cline-any cline-neutral">&nbsp;</span>
566
566
  <span class="cline-any cline-neutral">&nbsp;</span>
567
567
  <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-no">&nbsp;</span>
569
- <span class="cline-any cline-no">&nbsp;</span>
568
+ <span class="cline-any cline-yes">5x</span>
569
+ <span class="cline-any cline-yes">8x</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>
573
- <span class="cline-any cline-no">&nbsp;</span>
574
- <span class="cline-any cline-no">&nbsp;</span>
575
- <span class="cline-any cline-no">&nbsp;</span>
573
+ <span class="cline-any cline-yes">8x</span>
574
+ <span class="cline-any cline-yes">5x</span>
575
+ <span class="cline-any cline-yes">5x</span>
576
576
  <span class="cline-any cline-neutral">&nbsp;</span>
577
577
  <span class="cline-any cline-neutral">&nbsp;</span>
578
578
  <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
579
+ <span class="cline-any cline-yes">5x</span>
580
580
  <span class="cline-any cline-no">&nbsp;</span>
581
581
  <span class="cline-any cline-neutral">&nbsp;</span>
582
582
  <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
583
+ <span class="cline-any cline-yes">5x</span>
584
584
  <span class="cline-any cline-neutral">&nbsp;</span>
585
585
  <span class="cline-any cline-neutral">&nbsp;</span>
586
586
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -588,28 +588,28 @@
588
588
  <span class="cline-any cline-neutral">&nbsp;</span>
589
589
  <span class="cline-any cline-neutral">&nbsp;</span>
590
590
  <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
591
+ <span class="cline-any cline-yes">12x</span>
592
+ <span class="cline-any cline-yes">12x</span>
593
593
  <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
594
+ <span class="cline-any cline-yes">12x</span>
595
+ <span class="cline-any cline-yes">12x</span>
596
596
  <span class="cline-any cline-neutral">&nbsp;</span>
597
597
  <span class="cline-any cline-neutral">&nbsp;</span>
598
598
  <span class="cline-any cline-neutral">&nbsp;</span>
599
599
  <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
600
+ <span class="cline-any cline-yes">8x</span>
601
601
  <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-no">&nbsp;</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
602
+ <span class="cline-any cline-yes">8x</span>
603
+ <span class="cline-any cline-yes">8x</span>
604
604
  <span class="cline-any cline-neutral">&nbsp;</span>
605
605
  <span class="cline-any cline-neutral">&nbsp;</span>
606
606
  <span class="cline-any cline-neutral">&nbsp;</span>
607
607
  <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
608
+ <span class="cline-any cline-yes">12x</span>
609
609
  <span class="cline-any cline-neutral">&nbsp;</span>
610
610
  <span class="cline-any cline-neutral">&nbsp;</span>
611
611
  <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-no">&nbsp;</span>
612
+ <span class="cline-any cline-yes">10x</span>
613
613
  <span class="cline-any cline-neutral">&nbsp;</span>
614
614
  <span class="cline-any cline-neutral">&nbsp;</span>
615
615
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import * as path from 'path';
@@ -634,9 +634,9 @@ const KEY_IN = '$in';
634
634
  const KEY_NIN = '$nin';
635
635
  const KEY_AND = '$and';
636
636
  &nbsp;
637
- const getFirstConditionClause = <span class="fstat-no" title="function not covered" >clause</span> =&gt; <span class="cstat-no" title="statement not covered" >head(values(clause));</span>
638
- const getFirstKey = <span class="fstat-no" title="function not covered" >obj</span> =&gt; <span class="cstat-no" title="statement not covered" >head(keys(obj));</span>
639
- const isOneKeyBased = <span class="fstat-no" title="function not covered" >obj</span> =&gt; <span class="cstat-no" title="statement not covered" >keys(obj).length === 1;</span>
637
+ const getFirstConditionClause = clause =&gt; head(values(clause));
638
+ const getFirstKey = obj =&gt; head(keys(obj));
639
+ const isOneKeyBased = obj =&gt; keys(obj).length === 1;
640
640
  &nbsp;
641
641
  export class InClauseUnderConjunction implements IResourceSelectionOptimizer {
642
642
  private flow: any = {};
@@ -663,29 +663,29 @@ export class InClauseUnderConjunction implements IResourceSelectionOptimizer {
663
663
  includes(relatedFeatures, QueryFeature.ConjunctionPartFromWhereClauseCorrespondsToJoin);
664
664
  }
665
665
  &nbsp;
666
- <span class="fstat-no" title="function not covered" > async</span> getRecommendedFilesSet(): Promise&lt;string[]&gt; {
667
- const { debug, error, warning } = <span class="cstat-no" title="statement not covered" >this.options.diagnostic.prepareDiagnosticFor('getRecommendedFilesSet');</span>
666
+ async getRecommendedFilesSet(): Promise&lt;string[]&gt; {
667
+ const { debug, error, warning } = this.options.diagnostic.prepareDiagnosticFor('getRecommendedFilesSet');
668
668
  &nbsp;
669
- <span class="cstat-no" title="statement not covered" > if (this.isMatched()) {</span>
670
- <span class="cstat-no" title="statement not covered" > debug('plugin matched');</span>
669
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.isMatched()) {
670
+ debug('plugin matched');
671
671
  &nbsp;
672
672
  let result;
673
- <span class="cstat-no" title="statement not covered" > try {</span>
674
- <span class="cstat-no" title="statement not covered" > this.fillResourceToFileHash();</span>
675
- <span class="cstat-no" title="statement not covered" > this.collectProcessableClauses();</span>
676
- <span class="cstat-no" title="statement not covered" > this.collectEntityFilesNames();</span>
677
- const data = <span class="cstat-no" title="statement not covered" >await this.collectEntities();</span>
678
- <span class="cstat-no" title="statement not covered" > this.fillEntityValuesHash(data);</span>
679
- <span class="cstat-no" title="statement not covered" > this.getFilesGroupsQueryClause();</span>
680
- <span class="cstat-no" title="statement not covered" > result = this.getOptimalFilesGroup();</span>
673
+ try {
674
+ this.fillResourceToFileHash();
675
+ this.collectProcessableClauses();
676
+ this.collectEntityFilesNames();
677
+ const data = await this.collectEntities();
678
+ this.fillEntityValuesHash(data);
679
+ this.getFilesGroupsQueryClause();
680
+ result = this.getOptimalFilesGroup();
681
681
  } catch (err) {
682
682
  <span class="cstat-no" title="statement not covered" > error('wrong data processing', err);</span>
683
683
  <span class="cstat-no" title="statement not covered" > return [];</span>
684
684
  }
685
685
  &nbsp;
686
- <span class="cstat-no" title="statement not covered" > debug('recommended files found', result);</span>
686
+ debug('recommended files found', result);
687
687
  &nbsp;
688
- <span class="cstat-no" title="statement not covered" > return result;</span>
688
+ return result;
689
689
  } else {
690
690
  const message = <span class="cstat-no" title="statement not covered" >`Plugin "InClauseUnderConjunction" is not matched!`;</span>
691
691
  <span class="cstat-no" title="statement not covered" > warning(message);</span>
@@ -693,206 +693,206 @@ export class InClauseUnderConjunction implements IResourceSelectionOptimizer {
693
693
  }
694
694
  }
695
695
  &nbsp;
696
- private <span class="fstat-no" title="function not covered" >fillResourceToFileHash</span>(): InClauseUnderConjunction {
697
- <span class="cstat-no" title="statement not covered" > this.flow.resourceToFile = get(this.datapackage, 'resources', []).reduce(<span class="fstat-no" title="function not covered" >(h</span>ash, resource) =&gt; {</span>
698
- <span class="cstat-no" title="statement not covered" > hash.set(resource.name, resource.path);</span>
696
+ private fillResourceToFileHash(): InClauseUnderConjunction {
697
+ this.flow.resourceToFile = get(this.datapackage, 'resources', []).reduce((hash, resource) =&gt; {
698
+ hash.set(resource.name, resource.path);
699
699
  &nbsp;
700
- <span class="cstat-no" title="statement not covered" > return hash;</span>
700
+ return hash;
701
701
  }, new Map());
702
702
  &nbsp;
703
- <span class="cstat-no" title="statement not covered" > return this;</span>
703
+ return this;
704
704
  }
705
705
  &nbsp;
706
- private <span class="fstat-no" title="function not covered" >collectProcessableClauses</span>(): InClauseUnderConjunction {
707
- const joinKeys = <span class="cstat-no" title="statement not covered" >keys(this.flow.joinObject);</span>
706
+ private collectProcessableClauses(): InClauseUnderConjunction {
707
+ const joinKeys = keys(this.flow.joinObject);
708
708
  &nbsp;
709
- <span class="cstat-no" title="statement not covered" > this.flow.processableClauses = [];</span>
709
+ this.flow.processableClauses = [];
710
710
  &nbsp;
711
- <span class="cstat-no" title="statement not covered" > for (const joinKey of joinKeys) {</span>
712
- const where = <span class="cstat-no" title="statement not covered" >get(this.flow.joinObject, `${joinKey}.${WHERE_KEYWORD}`, {});</span>
711
+ for (const joinKey of joinKeys) {
712
+ const where = get(this.flow.joinObject, `${joinKey}.${WHERE_KEYWORD}`, {});
713
713
  &nbsp;
714
- <span class="cstat-no" title="statement not covered" > if (this.singleAndField(where)) {</span>
715
- <span class="cstat-no" title="statement not covered" > this.flow.processableClauses.push(...flattenDeep(where[KEY_AND].map(<span class="fstat-no" title="function not covered" >el</span> =&gt; <span class="cstat-no" title="statement not covered" >this.getProcessableClauses(el))</span>));</span>
714
+ if (this.singleAndField(where)) {
715
+ this.flow.processableClauses.push(...flattenDeep(where[KEY_AND].map(el =&gt; this.getProcessableClauses(el))));
716
716
  } else {
717
- <span class="cstat-no" title="statement not covered" > this.flow.processableClauses.push(...this.getProcessableClauses(where));</span>
717
+ this.flow.processableClauses.push(...this.getProcessableClauses(where));
718
718
  }
719
719
  }
720
720
  &nbsp;
721
- <span class="cstat-no" title="statement not covered" > return this;</span>
721
+ return this;
722
722
  }
723
723
  &nbsp;
724
- private <span class="fstat-no" title="function not covered" >collectEntityFilesNames</span>(): InClauseUnderConjunction {
725
- <span class="cstat-no" title="statement not covered" > this.flow.entityFilesNames = [];</span>
726
- <span class="cstat-no" title="statement not covered" > this.flow.fileNameToPrimaryKeyHash = new Map();</span>
724
+ private collectEntityFilesNames(): InClauseUnderConjunction {
725
+ this.flow.entityFilesNames = [];
726
+ this.flow.fileNameToPrimaryKeyHash = new Map();
727
727
  &nbsp;
728
- <span class="cstat-no" title="statement not covered" > for (const schemaResourceRecord of this.datapackage.ddfSchema.entities) {</span>
729
- <span class="cstat-no" title="statement not covered" > for (const clause of this.flow.processableClauses) {</span>
730
- const primaryKey = <span class="cstat-no" title="statement not covered" >getFirstKey(clause);</span>
728
+ for (const schemaResourceRecord of this.datapackage.ddfSchema.entities) {
729
+ for (const clause of this.flow.processableClauses) {
730
+ const primaryKey = getFirstKey(clause);
731
731
  &nbsp;
732
- <span class="cstat-no" title="statement not covered" > if (head(schemaResourceRecord.primaryKey) === primaryKey) {</span>
733
- <span class="cstat-no" title="statement not covered" > for (const resourceName of schemaResourceRecord.resources) {</span>
734
- const file = <span class="cstat-no" title="statement not covered" >this.flow.resourceToFile.get(resourceName);</span>
732
+ if (head(schemaResourceRecord.primaryKey) === primaryKey) {
733
+ for (const resourceName of schemaResourceRecord.resources) {
734
+ const file = this.flow.resourceToFile.get(resourceName);
735
735
  &nbsp;
736
- <span class="cstat-no" title="statement not covered" > this.flow.entityFilesNames.push(file);</span>
737
- <span class="cstat-no" title="statement not covered" > this.flow.fileNameToPrimaryKeyHash.set(file, primaryKey);</span>
736
+ this.flow.entityFilesNames.push(file);
737
+ this.flow.fileNameToPrimaryKeyHash.set(file, primaryKey);
738
738
  }
739
739
  }
740
740
  }
741
741
  }
742
742
  &nbsp;
743
- <span class="cstat-no" title="statement not covered" > return this;</span>
743
+ return this;
744
744
  }
745
745
  &nbsp;
746
- private <span class="fstat-no" title="function not covered" >collectEntities</span>(): Promise&lt;any&gt; {
747
- const self = <span class="cstat-no" title="statement not covered" >this;</span>
748
- const actions = <span class="cstat-no" title="statement not covered" >self.flow.entityFilesNames.map(<span class="fstat-no" title="function not covered" >file</span> =&gt; <span class="cstat-no" title="statement not covered" >new Promise(<span class="fstat-no" title="function not covered" >(a</span>ctResolve, actReject) =&gt; {</span></span>
749
- <span class="cstat-no" title="statement not covered" > self.fileReader.readText(path.join(self.datasetPath, file), <span class="fstat-no" title="function not covered" >(e</span>rr, text) =&gt; {</span>
750
- <span class="cstat-no" title="statement not covered" > if (err) {</span>
746
+ private collectEntities(): Promise&lt;any&gt; {
747
+ const self = this;
748
+ const actions = self.flow.entityFilesNames.map(file =&gt; new Promise((actResolve, actReject) =&gt; {
749
+ self.fileReader.readText(path.join(self.datasetPath, file), (err, text) =&gt; {
750
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
751
751
  <span class="cstat-no" title="statement not covered" > return actReject(err);</span>
752
752
  }
753
753
  &nbsp;
754
- <span class="cstat-no" title="statement not covered" > Papa.parse(text, {</span>
754
+ Papa.parse(text, {
755
755
  header: true,
756
756
  skipEmptyLines: true,
757
- complete: <span class="fstat-no" title="function not covered" >result</span> =&gt; <span class="cstat-no" title="statement not covered" >actResolve({file, result}),</span>
757
+ complete: result =&gt; actResolve({file, result}),
758
758
  error: <span class="fstat-no" title="function not covered" >error</span> =&gt; <span class="cstat-no" title="statement not covered" >actReject(error)</span>
759
759
  });
760
760
  });
761
761
  }));
762
762
  &nbsp;
763
- <span class="cstat-no" title="statement not covered" > return Promise.all(actions);</span>
763
+ return Promise.all(actions);
764
764
  }
765
765
  &nbsp;
766
- private <span class="fstat-no" title="function not covered" >fillEntityValuesHash</span>(entitiesData): InClauseUnderConjunction {
767
- const getSubdomainsFromRecord = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >record</span> =&gt; <span class="cstat-no" title="statement not covered" >compact(keys(record)</span></span>
768
- .filter(<span class="fstat-no" title="function not covered" >key</span> =&gt; <span class="cstat-no" title="statement not covered" >startsWith(key, 'is--') &amp;&amp; (record[key] === 'TRUE' || record[key] === 'true'))</span>
769
- .map(<span class="fstat-no" title="function not covered" >key</span> =&gt; <span class="cstat-no" title="statement not covered" >key.replace(/^is--/, ''))</span>);
766
+ private fillEntityValuesHash(entitiesData): InClauseUnderConjunction {
767
+ const getSubdomainsFromRecord = record =&gt; compact(keys(record)
768
+ .filter(key =&gt; startsWith(key, 'is--') &amp;&amp; (record[key] === 'TRUE' || <span class="branch-2 cbranch-no" title="branch not covered" >record[key] === 'true')</span>)
769
+ .map(key =&gt; key.replace(/^is--/, '')));
770
770
  &nbsp;
771
- <span class="cstat-no" title="statement not covered" > this.flow.entityValueToFileHash = new Map();</span>
772
- <span class="cstat-no" title="statement not covered" > this.flow.entityValueToDomainHash = new Map();</span>
771
+ this.flow.entityValueToFileHash = new Map();
772
+ this.flow.entityValueToDomainHash = new Map();
773
773
  &nbsp;
774
- <span class="cstat-no" title="statement not covered" > for (const entityFileDescriptor of entitiesData) {</span>
775
- <span class="cstat-no" title="statement not covered" > for (const entityRecord of entityFileDescriptor.result.data) {</span>
776
- const primaryKeyForThisFile = <span class="cstat-no" title="statement not covered" >this.flow.fileNameToPrimaryKeyHash.get(entityFileDescriptor.file);</span>
777
- const primaryKeyCellValue = <span class="cstat-no" title="statement not covered" >entityRecord[primaryKeyForThisFile];</span>
778
- const domainsForCurrentRecord = <span class="cstat-no" title="statement not covered" >[...getSubdomainsFromRecord(entityRecord)];</span>
774
+ for (const entityFileDescriptor of entitiesData) {
775
+ for (const entityRecord of entityFileDescriptor.result.data) {
776
+ const primaryKeyForThisFile = this.flow.fileNameToPrimaryKeyHash.get(entityFileDescriptor.file);
777
+ const primaryKeyCellValue = entityRecord[primaryKeyForThisFile];
778
+ const domainsForCurrentRecord = [...getSubdomainsFromRecord(entityRecord)];
779
779
  &nbsp;
780
- <span class="cstat-no" title="statement not covered" > if (isEmpty(domainsForCurrentRecord)) {</span>
781
- <span class="cstat-no" title="statement not covered" > domainsForCurrentRecord.push(primaryKeyForThisFile);</span>
780
+ if (isEmpty(domainsForCurrentRecord)) {
781
+ domainsForCurrentRecord.push(primaryKeyForThisFile);
782
782
  }
783
783
  &nbsp;
784
- <span class="cstat-no" title="statement not covered" > this.flow.entityValueToDomainHash.set(primaryKeyCellValue, domainsForCurrentRecord);</span>
785
- <span class="cstat-no" title="statement not covered" > this.flow.entityValueToFileHash.set(primaryKeyCellValue, entityFileDescriptor.file);</span>
784
+ this.flow.entityValueToDomainHash.set(primaryKeyCellValue, domainsForCurrentRecord);
785
+ this.flow.entityValueToFileHash.set(primaryKeyCellValue, entityFileDescriptor.file);
786
786
  }
787
787
  }
788
788
  &nbsp;
789
- <span class="cstat-no" title="statement not covered" > return this;</span>
789
+ return this;
790
790
  }
791
791
  &nbsp;
792
- private <span class="fstat-no" title="function not covered" >getFilesGroupsQueryClause</span>(): InClauseUnderConjunction {
793
- const getEntitiesExcept = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(e</span>ntityValuesToExclude: string[]): string[] =&gt; {</span>
794
- const result = <span class="cstat-no" title="statement not covered" >[];</span>
792
+ private getFilesGroupsQueryClause(): InClauseUnderConjunction {
793
+ const getEntitiesExcept = (entityValuesToExclude: string[]): string[] =&gt; {
794
+ const result = [];
795
795
  &nbsp;
796
- <span class="cstat-no" title="statement not covered" > for (const entityKey of this.flow.entityValueToDomainHash.keys()) {</span>
797
- <span class="cstat-no" title="statement not covered" > if (!includes(entityValuesToExclude, entityKey)) {</span>
798
- <span class="cstat-no" title="statement not covered" > result.push(entityKey);</span>
796
+ for (const entityKey of this.flow.entityValueToDomainHash.keys()) {
797
+ if (!includes(entityValuesToExclude, entityKey)) {
798
+ result.push(entityKey);
799
799
  }
800
800
  }
801
801
  &nbsp;
802
- <span class="cstat-no" title="statement not covered" > return result;</span>
802
+ return result;
803
803
  };
804
- const filesGroupsByClause = <span class="cstat-no" title="statement not covered" >new Map();</span>
804
+ const filesGroupsByClause = new Map();
805
805
  &nbsp;
806
- <span class="cstat-no" title="statement not covered" > for (const clause of this.flow.processableClauses) {</span>
807
- const filesGroupByClause = <span class="cstat-no" title="statement not covered" >{</span>
806
+ for (const clause of this.flow.processableClauses) {
807
+ const filesGroupByClause = {
808
808
  entities: new Set(),
809
809
  datapoints: new Set(),
810
810
  concepts: new Set()
811
811
  };
812
- const firstConditionClause = <span class="cstat-no" title="statement not covered" >getFirstConditionClause(clause);</span>
813
- const entityValuesFromClause = <span class="cstat-no" title="statement not covered" >firstConditionClause[KEY_IN] || getEntitiesExcept(firstConditionClause[KEY_NIN]);</span>
812
+ const firstConditionClause = getFirstConditionClause(clause);
813
+ const entityValuesFromClause = firstConditionClause[KEY_IN] || getEntitiesExcept(firstConditionClause[KEY_NIN]);
814
814
  &nbsp;
815
- <span class="cstat-no" title="statement not covered" > for (const entityValueFromClause of entityValuesFromClause) {</span>
816
- <span class="cstat-no" title="statement not covered" > filesGroupByClause.entities.add(this.flow.entityValueToFileHash.get(entityValueFromClause));</span>
815
+ for (const entityValueFromClause of entityValuesFromClause) {
816
+ filesGroupByClause.entities.add(this.flow.entityValueToFileHash.get(entityValueFromClause));
817
817
  &nbsp;
818
- const entitiesByQuery = <span class="cstat-no" title="statement not covered" >this.flow.entityValueToDomainHash.get(entityValueFromClause);</span>
818
+ const entitiesByQuery = this.flow.entityValueToDomainHash.get(entityValueFromClause);
819
819
  &nbsp;
820
- <span class="cstat-no" title="statement not covered" > for (const entityByQuery of entitiesByQuery) {</span>
821
- <span class="cstat-no" title="statement not covered" > for (const schemaResourceRecord of this.datapackage.ddfSchema.datapoints) {</span>
822
- <span class="cstat-no" title="statement not covered" > for (const resourceName of schemaResourceRecord.resources) {</span>
823
- <span class="cstat-no" title="statement not covered" > if (includes(schemaResourceRecord.primaryKey, entityByQuery)) {</span>
824
- <span class="cstat-no" title="statement not covered" > filesGroupByClause.datapoints.add(this.flow.resourceToFile.get(resourceName));</span>
820
+ for (const entityByQuery of entitiesByQuery) {
821
+ for (const schemaResourceRecord of this.datapackage.ddfSchema.datapoints) {
822
+ for (const resourceName of schemaResourceRecord.resources) {
823
+ if (includes(schemaResourceRecord.primaryKey, entityByQuery)) {
824
+ filesGroupByClause.datapoints.add(this.flow.resourceToFile.get(resourceName));
825
825
  }
826
826
  }
827
827
  }
828
828
  }
829
829
  }
830
830
  &nbsp;
831
- <span class="cstat-no" title="statement not covered" > for (const schemaResourceRecord of this.datapackage.ddfSchema.concepts) {</span>
832
- <span class="cstat-no" title="statement not covered" > for (const resourceName of schemaResourceRecord.resources) {</span>
833
- <span class="cstat-no" title="statement not covered" > filesGroupByClause.concepts.add(this.flow.resourceToFile.get(resourceName));</span>
831
+ for (const schemaResourceRecord of this.datapackage.ddfSchema.concepts) {
832
+ for (const resourceName of schemaResourceRecord.resources) {
833
+ filesGroupByClause.concepts.add(this.flow.resourceToFile.get(resourceName));
834
834
  }
835
835
  }
836
836
  &nbsp;
837
- <span class="cstat-no" title="statement not covered" > filesGroupsByClause.set(clause, filesGroupByClause);</span>
837
+ filesGroupsByClause.set(clause, filesGroupByClause);
838
838
  }
839
839
  &nbsp;
840
- <span class="cstat-no" title="statement not covered" > this.flow.filesGroupsByClause = filesGroupsByClause;</span>
840
+ this.flow.filesGroupsByClause = filesGroupsByClause;
841
841
  &nbsp;
842
- <span class="cstat-no" title="statement not covered" > return this;</span>
842
+ return this;
843
843
  }
844
844
  &nbsp;
845
- private <span class="fstat-no" title="function not covered" >getOptimalFilesGroup</span>(): string[] {
846
- const clauseKeys = <span class="cstat-no" title="statement not covered" >this.flow.filesGroupsByClause.keys();</span>
845
+ private getOptimalFilesGroup(): string[] {
846
+ const clauseKeys = this.flow.filesGroupsByClause.keys();
847
847
  &nbsp;
848
848
  let appropriateClauseKey;
849
849
  let appropriateClauseSize;
850
850
  &nbsp;
851
- <span class="cstat-no" title="statement not covered" > for (const key of clauseKeys) {</span>
852
- const size = <span class="cstat-no" title="statement not covered" >this.flow.filesGroupsByClause.get(key).datapoints.size +</span>
851
+ for (const key of clauseKeys) {
852
+ const size = this.flow.filesGroupsByClause.get(key).datapoints.size +
853
853
  this.flow.filesGroupsByClause.get(key).entities.size +
854
854
  this.flow.filesGroupsByClause.get(key).concepts.size;
855
855
  &nbsp;
856
- <span class="cstat-no" title="statement not covered" > if (!appropriateClauseKey || size &lt; appropriateClauseSize) {</span>
857
- <span class="cstat-no" title="statement not covered" > appropriateClauseKey = key;</span>
858
- <span class="cstat-no" title="statement not covered" > appropriateClauseSize = size;</span>
856
+ if (!appropriateClauseKey || size &lt; appropriateClauseSize) {
857
+ appropriateClauseKey = key;
858
+ appropriateClauseSize = size;
859
859
  }
860
860
  }
861
861
  &nbsp;
862
- <span class="cstat-no" title="statement not covered" > if (!this.flow.filesGroupsByClause.get(appropriateClauseKey)) {</span>
862
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.flow.filesGroupsByClause.get(appropriateClauseKey)) {
863
863
  <span class="cstat-no" title="statement not covered" > return [];</span>
864
864
  }
865
865
  &nbsp;
866
- <span class="cstat-no" title="statement not covered" > return [</span>
866
+ return [
867
867
  ...Array.from(this.flow.filesGroupsByClause.get(appropriateClauseKey).concepts),
868
868
  ...Array.from(this.flow.filesGroupsByClause.get(appropriateClauseKey).entities),
869
869
  ...Array.from(this.flow.filesGroupsByClause.get(appropriateClauseKey).datapoints)
870
870
  ] as string[];
871
871
  }
872
872
  &nbsp;
873
- private <span class="fstat-no" title="function not covered" >getProcessableClauses</span>(clause) {
874
- const result = <span class="cstat-no" title="statement not covered" >[];</span>
875
- const clauseKeys = <span class="cstat-no" title="statement not covered" >keys(clause);</span>
873
+ private getProcessableClauses(clause) {
874
+ const result = [];
875
+ const clauseKeys = keys(clause);
876
876
  &nbsp;
877
- <span class="cstat-no" title="statement not covered" > for (const key of clauseKeys) {</span>
878
- <span class="cstat-no" title="statement not covered" > if (!startsWith(key, '$') &amp;&amp; isOneKeyBased(clause[key])) {</span>
877
+ for (const key of clauseKeys) {
878
+ if (!startsWith(key, '$') &amp;&amp; isOneKeyBased(clause[key])) {
879
879
  // attention! this functionality process only first clause
880
880
  // for example, { geo: { '$in': ['world'] } }
881
881
  // in this example { geo: { '$in': ['world'] }, foo: { '$in': ['bar', 'baz'] } }]
882
882
  // foo: { '$in': ['bar', 'baz'] } will NOT be processed
883
- const conditionKey = <span class="cstat-no" title="statement not covered" >head(keys(clause[key]));</span>
883
+ const conditionKey = head(keys(clause[key]));
884
884
  &nbsp;
885
- <span class="cstat-no" title="statement not covered" > if (conditionKey === KEY_IN || conditionKey === KEY_NIN) {</span>
886
- <span class="cstat-no" title="statement not covered" > result.push(clause);</span>
885
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (conditionKey === KEY_IN || conditionKey === KEY_NIN) {
886
+ result.push(clause);
887
887
  }
888
888
  }
889
889
  }
890
890
  &nbsp;
891
- <span class="cstat-no" title="statement not covered" > return result;</span>
891
+ return result;
892
892
  }
893
893
  &nbsp;
894
- private <span class="fstat-no" title="function not covered" >singleAndField</span>(clause): boolean {
895
- <span class="cstat-no" title="statement not covered" > return isOneKeyBased(clause) &amp;&amp; !!get(clause, KEY_AND);</span>
894
+ private singleAndField(clause): boolean {
895
+ return isOneKeyBased(clause) &amp;&amp; !!get(clause, KEY_AND);
896
896
  }
897
897
  }
898
898
  &nbsp;</pre></td></tr>
@@ -901,7 +901,7 @@ export class InClauseUnderConjunction implements IResourceSelectionOptimizer {
901
901
  </div><!-- /wrapper -->
902
902
  <div class='footer quiet pad2 space-top1 center small'>
903
903
  Code coverage
904
- generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Thu May 11 2023 23:59:02 GMT+0200 (Central European Summer Time)
904
+ generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Wed Feb 08 2023 02:54:16 GMT+0300 (Moscow Standard Time)
905
905
  </div>
906
906
  </div>
907
907
  <script src="../../prettify.js"></script>