@grnsft/if 0.3.2 → 0.3.4

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 (187) hide show
  1. package/.commitlintrc.js +3 -0
  2. package/.env +5 -0
  3. package/.release-it.json +18 -0
  4. package/CONTRIBUTING.md +77 -4
  5. package/README.md +34 -26
  6. package/build/builtins/export-csv-raw.js +4 -4
  7. package/build/builtins/export-csv.js +5 -5
  8. package/build/builtins/export-log.js +26 -2
  9. package/build/builtins/export-yaml.js +3 -3
  10. package/build/config/config.d.ts +3 -3
  11. package/build/config/config.js +23 -27
  12. package/build/config/strings.d.ts +1 -0
  13. package/build/config/strings.js +8 -3
  14. package/build/index.js +23 -14
  15. package/build/lib/environment.d.ts +5 -0
  16. package/build/lib/environment.js +69 -0
  17. package/build/lib/exhaust.d.ts +2 -1
  18. package/build/lib/exhaust.js +11 -9
  19. package/build/lib/initialize.d.ts +2 -2
  20. package/build/lib/initialize.js +5 -5
  21. package/build/lib/load.d.ts +1 -29
  22. package/build/lib/load.js +2 -5
  23. package/build/types/environment.d.ts +18 -0
  24. package/build/types/environment.js +3 -0
  25. package/build/types/manifest.d.ts +1 -0
  26. package/build/types/manifest.js +1 -1
  27. package/build/types/process-args.d.ts +13 -1
  28. package/build/types/process-args.js +1 -1
  29. package/build/util/args.d.ts +3 -5
  30. package/build/util/args.js +14 -10
  31. package/build/util/errors.d.ts +1 -1
  32. package/build/util/errors.js +2 -3
  33. package/build/util/helpers.d.ts +6 -0
  34. package/build/util/helpers.js +9 -3
  35. package/build/util/os-checker.d.ts +7 -0
  36. package/build/util/os-checker.js +97 -0
  37. package/build/util/validations.d.ts +90 -4
  38. package/build/util/validations.js +14 -2
  39. package/coverage/clover.xml +1590 -0
  40. package/coverage/coverage-final.json +50 -0
  41. package/coverage/lcov-report/base.css +224 -0
  42. package/coverage/lcov-report/block-navigation.js +87 -0
  43. package/coverage/lcov-report/builtins/coefficient/index.html +116 -0
  44. package/coverage/lcov-report/builtins/coefficient/index.ts.html +295 -0
  45. package/coverage/lcov-report/builtins/csv-lookup/index.html +116 -0
  46. package/coverage/lcov-report/builtins/csv-lookup/index.ts.html +832 -0
  47. package/coverage/lcov-report/builtins/divide/index.html +116 -0
  48. package/coverage/lcov-report/builtins/divide/index.ts.html +361 -0
  49. package/coverage/lcov-report/builtins/exponent/index.html +116 -0
  50. package/coverage/lcov-report/builtins/exponent/index.ts.html +355 -0
  51. package/coverage/lcov-report/builtins/export-csv-raw.ts.html +553 -0
  52. package/coverage/lcov-report/builtins/export-csv.ts.html +433 -0
  53. package/coverage/lcov-report/builtins/export-log.ts.html +145 -0
  54. package/coverage/lcov-report/builtins/export-yaml.ts.html +184 -0
  55. package/coverage/lcov-report/builtins/group-by.ts.html +364 -0
  56. package/coverage/lcov-report/builtins/index.html +206 -0
  57. package/coverage/lcov-report/builtins/index.ts.html +130 -0
  58. package/coverage/lcov-report/builtins/interpolation/index.html +131 -0
  59. package/coverage/lcov-report/builtins/interpolation/index.ts.html +670 -0
  60. package/coverage/lcov-report/builtins/interpolation/types.ts.html +100 -0
  61. package/coverage/lcov-report/builtins/mock-observations/helpers/common-generator.ts.html +181 -0
  62. package/coverage/lcov-report/builtins/mock-observations/helpers/index.html +131 -0
  63. package/coverage/lcov-report/builtins/mock-observations/helpers/rand-int-generator.ts.html +295 -0
  64. package/coverage/lcov-report/builtins/mock-observations/index.html +116 -0
  65. package/coverage/lcov-report/builtins/mock-observations/index.ts.html +613 -0
  66. package/coverage/lcov-report/builtins/multiply/index.html +116 -0
  67. package/coverage/lcov-report/builtins/multiply/index.ts.html +337 -0
  68. package/coverage/lcov-report/builtins/regex/index.html +116 -0
  69. package/coverage/lcov-report/builtins/regex/index.ts.html +379 -0
  70. package/coverage/lcov-report/builtins/sci/config.ts.html +205 -0
  71. package/coverage/lcov-report/builtins/sci/index.html +116 -0
  72. package/coverage/lcov-report/builtins/sci/index.ts.html +331 -0
  73. package/coverage/lcov-report/builtins/sci-embodied/index.html +116 -0
  74. package/coverage/lcov-report/builtins/sci-embodied/index.ts.html +481 -0
  75. package/coverage/lcov-report/builtins/shell/index.html +116 -0
  76. package/coverage/lcov-report/builtins/shell/index.ts.html +283 -0
  77. package/coverage/lcov-report/builtins/subtract/index.html +116 -0
  78. package/coverage/lcov-report/builtins/subtract/index.ts.html +373 -0
  79. package/coverage/lcov-report/builtins/sum/index.html +116 -0
  80. package/coverage/lcov-report/builtins/sum/index.ts.html +340 -0
  81. package/coverage/lcov-report/builtins/time-sync.ts.html +1459 -0
  82. package/coverage/lcov-report/config/config.ts.html +334 -0
  83. package/coverage/lcov-report/config/index.html +161 -0
  84. package/coverage/lcov-report/config/index.ts.html +94 -0
  85. package/coverage/lcov-report/config/params.ts.html +697 -0
  86. package/coverage/lcov-report/config/strings.ts.html +415 -0
  87. package/coverage/lcov-report/favicon.png +0 -0
  88. package/coverage/lcov-report/index.html +386 -0
  89. package/coverage/lcov-report/lib/aggregate.ts.html +331 -0
  90. package/coverage/lcov-report/lib/compare.ts.html +283 -0
  91. package/coverage/lcov-report/lib/compute.ts.html +391 -0
  92. package/coverage/lcov-report/lib/environment.ts.html +343 -0
  93. package/coverage/lcov-report/lib/exhaust.ts.html +283 -0
  94. package/coverage/lcov-report/lib/index.html +221 -0
  95. package/coverage/lcov-report/lib/initialize.ts.html +388 -0
  96. package/coverage/lcov-report/lib/load.ts.html +268 -0
  97. package/coverage/lcov-report/lib/parameterize.ts.html +283 -0
  98. package/coverage/lcov-report/prettify.css +1 -0
  99. package/coverage/lcov-report/prettify.js +2 -0
  100. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  101. package/coverage/lcov-report/sorter.js +196 -0
  102. package/coverage/lcov-report/types/aggregation.ts.html +94 -0
  103. package/coverage/lcov-report/types/index.html +146 -0
  104. package/coverage/lcov-report/types/interface.ts.html +181 -0
  105. package/coverage/lcov-report/types/parameters.ts.html +106 -0
  106. package/coverage/lcov-report/util/aggregation-helper.ts.html +286 -0
  107. package/coverage/lcov-report/util/args.ts.html +508 -0
  108. package/coverage/lcov-report/util/errors.ts.html +232 -0
  109. package/coverage/lcov-report/util/helpers.ts.html +613 -0
  110. package/coverage/lcov-report/util/index.html +266 -0
  111. package/coverage/lcov-report/util/json.ts.html +115 -0
  112. package/coverage/lcov-report/util/log-memoize.ts.html +145 -0
  113. package/coverage/lcov-report/util/logger.ts.html +151 -0
  114. package/coverage/lcov-report/util/os-checker.ts.html +421 -0
  115. package/coverage/lcov-report/util/plugin-storage.ts.html +199 -0
  116. package/coverage/lcov-report/util/validations.ts.html +526 -0
  117. package/coverage/lcov-report/util/yaml.ts.html +193 -0
  118. package/coverage/lcov.info +2811 -0
  119. package/github-processes.md +10 -0
  120. package/{examples/manifests/pipeline-demo-2.yml → manifests/bugs/aggregation-error-wrong-metric.yml} +8 -34
  121. package/manifests/bugs/azure-importer-ignoring-defaults.yml +61 -0
  122. package/manifests/bugs/azure-importer-incorrect-calculation.yml +56 -0
  123. package/manifests/bugs/initialize-error-no-config.yml +27 -0
  124. package/manifests/bugs/initialize-error-no-path.yml +28 -0
  125. package/manifests/bugs/initialize-error-no-plugins.yml +23 -0
  126. package/manifests/bugs/input-error-missing-duration.yml +21 -0
  127. package/manifests/bugs/pipeline-error-naming-mismatch.yml +28 -0
  128. package/manifests/bugs/pipeline-error-uninitialized-plugin.yml +29 -0
  129. package/{examples/manifests/boavizta-pipeline.yml → manifests/bugs/pipeline-ordering-error.yml} +7 -10
  130. package/{examples/manifests → manifests/examples}/basic.yml +3 -2
  131. package/{examples/manifests → manifests/examples}/generics.yml +2 -2
  132. package/{examples/manifests/asim-demo.yml → manifests/examples/mock-cpu-util-to-carbon.yml} +3 -7
  133. package/{examples/manifests → manifests/examples}/nesting.yml +3 -2
  134. package/{examples/manifests → manifests/examples}/pipeline-teads-sci.yml +1 -1
  135. package/{examples/manifests/pipeline-demo.yml → manifests/examples/pipeline-with-aggregate.yml} +2 -2
  136. package/{examples/manifests → manifests/examples}/pipeline-with-mocks.yml +3 -2
  137. package/manifests/features/aggregate-horizontal.yml +44 -0
  138. package/manifests/features/aggregate-vertical.yml +44 -0
  139. package/manifests/features/aggregate.yml +44 -0
  140. package/manifests/integrations/mock-obs-groupby.yml +39 -0
  141. package/manifests/integrations/mock-obs-time-sync.yml +65 -0
  142. package/manifests/plugins/cloud-metadata/failure-invalid-vendor.yaml +21 -0
  143. package/{examples/manifests/cloud-metadata.yml → manifests/plugins/cloud-metadata/success.yml} +2 -1
  144. package/manifests/plugins/coefficient/failure-invalid-config-input-param.yml +24 -0
  145. package/{examples/manifests/coefficient.yml → manifests/plugins/coefficient/success.yml} +2 -1
  146. package/manifests/plugins/divide/failure-invalid-config-denominator.yml +39 -0
  147. package/manifests/plugins/divide/success.yml +39 -0
  148. package/manifests/plugins/groupby/failure-invalid-config-group.yml +47 -0
  149. package/{examples/manifests/group-by.yml → manifests/plugins/groupby/success.yml} +3 -2
  150. package/manifests/plugins/mock-observations/failure-invalid-config-cpu-range.yml +34 -0
  151. package/{examples/manifests/mock-observation.yml → manifests/plugins/mock-observations/success.yml} +2 -1
  152. package/manifests/plugins/multiply/failure-input-parameter-is-missing.yml +24 -0
  153. package/{examples/manifests/multiply.yml → manifests/plugins/multiply/success.yml} +3 -2
  154. package/manifests/plugins/regex/failure-missing-input-param.yml +24 -0
  155. package/{examples/manifests/regex.yml → manifests/plugins/regex/success.yml} +3 -2
  156. package/manifests/plugins/sci/failure-invalid-config-value.yml +28 -0
  157. package/{examples/manifests/sci.yml → manifests/plugins/sci/success.yml} +3 -2
  158. package/manifests/plugins/sci-m/failure-invalid-default-emission-value.yml +24 -0
  159. package/{examples/manifests/sci-m.yml → manifests/plugins/sci-m/success.yml} +2 -1
  160. package/manifests/plugins/shell/failure-invalid-command.yml +21 -0
  161. package/{examples/manifests/shell.yml → manifests/plugins/shell/success.yml} +3 -2
  162. package/manifests/plugins/sum/failure-missing-input-param.yml +24 -0
  163. package/{examples/manifests/sum.yml → manifests/plugins/sum/success.yml} +3 -2
  164. package/manifests/plugins/tdp-finder/failure-missing-input-param.yml +18 -0
  165. package/{examples/manifests/tdp-finder.yml → manifests/plugins/tdp-finder/success.yml} +2 -1
  166. package/manifests/plugins/time-sync/failure-config-start-later-end.yml +34 -0
  167. package/{examples/manifests/time-sync.yml → manifests/plugins/time-sync/success.yml} +4 -2
  168. package/package.json +4 -2
  169. package/src/__tests__/integration/manifest/sci-e.yaml +23 -0
  170. package/examples/manifests/azure-importer.yml +0 -24
  171. package/examples/manifests/basic-demo.yml +0 -70
  172. package/examples/manifests/boavizta-cloud.yml +0 -20
  173. package/examples/manifests/boavizta.yml +0 -26
  174. package/examples/manifests/ccf.yml +0 -20
  175. package/examples/manifests/cloud-metadata-teads.yml +0 -41
  176. package/examples/manifests/co2js.yml +0 -30
  177. package/examples/manifests/csv-export.yml +0 -34
  178. package/examples/manifests/e-mem.yml +0 -21
  179. package/examples/manifests/e-net.yml +0 -22
  180. package/examples/manifests/nesting-demo.yml +0 -89
  181. package/examples/manifests/pipeline-demo-1.yml +0 -85
  182. package/examples/manifests/pipeline-with-generics.yml +0 -152
  183. package/examples/manifests/sci-e.yml +0 -19
  184. package/examples/manifests/sci-o.yml +0 -26
  185. package/examples/manifests/teads-curve.yml +0 -20
  186. package/examples/manifests/watt-time.yml +0 -35
  187. /package/{examples/manifests/divide.yml → manifests/integrations/cloud-metadata-divide-boavizta.yml} +0 -0
@@ -0,0 +1,613 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for util/helpers.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">util</a> helpers.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>79/79</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>34/34</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>11/11</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>73/73</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ 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.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
243
+ <span class="cline-any cline-yes">4x</span>
244
+ <span class="cline-any cline-yes">4x</span>
245
+ <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-yes">4x</span>
247
+ <span class="cline-any cline-yes">4x</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-yes">4x</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-yes">4x</span>
254
+ <span class="cline-any cline-yes">4x</span>
255
+ <span class="cline-any cline-neutral">&nbsp;</span>
256
+ <span class="cline-any cline-neutral">&nbsp;</span>
257
+ <span class="cline-any cline-neutral">&nbsp;</span>
258
+ <span class="cline-any cline-neutral">&nbsp;</span>
259
+ <span class="cline-any cline-yes">4x</span>
260
+ <span class="cline-any cline-yes">2x</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-yes">2x</span>
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-yes">2x</span>
265
+ <span class="cline-any cline-yes">1x</span>
266
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-neutral">&nbsp;</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-yes">4x</span>
273
+ <span class="cline-any cline-yes">11x</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-yes">11x</span>
276
+ <span class="cline-any cline-yes">20x</span>
277
+ <span class="cline-any cline-yes">7x</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-yes">20x</span>
281
+ <span class="cline-any cline-yes">2x</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-yes">11x</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-yes">4x</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
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">29x</span>
298
+ <span class="cline-any cline-yes">24x</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <span class="cline-any cline-yes">5x</span>
302
+ <span class="cline-any cline-yes">1x</span>
303
+ <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-yes">4x</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-yes">4x</span>
312
+ <span class="cline-any cline-yes">16x</span>
313
+ <span class="cline-any cline-yes">2x</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-yes">14x</span>
317
+ <span class="cline-any cline-yes">4x</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-yes">10x</span>
321
+ <span class="cline-any cline-yes">4x</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-yes">6x</span>
325
+ <span class="cline-any cline-yes">1x</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-yes">5x</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-yes">4x</span>
335
+ <span class="cline-any cline-yes">8x</span>
336
+ <span class="cline-any cline-yes">8x</span>
337
+ <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-yes">8x</span>
339
+ <span class="cline-any cline-yes">4x</span>
340
+ <span class="cline-any cline-yes">8x</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-yes">4x</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-yes">4x</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-yes">4x</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-yes">46x</span>
355
+ <span class="cline-any cline-yes">4x</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-yes">42x</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-yes">4x</span>
365
+ <span class="cline-any cline-yes">8x</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-yes">8x</span>
368
+ <span class="cline-any cline-yes">27x</span>
369
+ <span class="cline-any cline-yes">15x</span>
370
+ <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-yes">12x</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-yes">4x</span>
381
+ <span class="cline-any cline-yes">4x</span>
382
+ <span class="cline-any cline-yes">1x</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-yes">3x</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-neutral">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-yes">3x</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-yes">3x</span>
392
+ <span class="cline-any cline-yes">26x</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-yes">3x</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-yes">4x</span>
403
+ <span class="cline-any cline-yes">4x</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-yes">4x</span>
406
+ <span class="cline-any cline-yes">2x</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-yes">2x</span>
410
+ <span class="cline-any cline-yes">2x</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-yes">2x</span>
413
+ <span class="cline-any cline-yes">1x</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-yes">1x</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {createInterface} from 'node:readline/promises';
419
+ import {exec} from 'node:child_process';
420
+ import {promisify} from 'node:util';
421
+ &nbsp;
422
+ import {ERRORS} from './errors';
423
+ import {logger} from './logger';
424
+ &nbsp;
425
+ import {STRINGS} from '../config';
426
+ &nbsp;
427
+ import {Difference} from '../types/lib/compare';
428
+ &nbsp;
429
+ const {ISSUE_TEMPLATE, MISSING_MANIFEST_IN_STDIN} = STRINGS;
430
+ const {CliInputError} = ERRORS;
431
+ &nbsp;
432
+ /**
433
+ * Impact engine error handler. Logs errors and appends issue template if error is unknown.
434
+ */
435
+ export const andHandle = (error: Error) =&gt; {
436
+ const knownErrors = Object.keys(ERRORS);
437
+ &nbsp;
438
+ logger.error(error);
439
+ &nbsp;
440
+ if (!knownErrors.includes(error.name)) {
441
+ logger.warn(ISSUE_TEMPLATE);
442
+ }
443
+ };
444
+ &nbsp;
445
+ /**
446
+ * Append entries from defaults which are missing from inputs.
447
+ */
448
+ export const mergeObjects = (defaults: any, input: any) =&gt; {
449
+ const merged: Record&lt;string, any&gt; = structuredClone(input);
450
+ &nbsp;
451
+ for (const key in defaults) {
452
+ if (!(key in input)) {
453
+ merged[key] = defaults[key];
454
+ }
455
+ &nbsp;
456
+ if (merged[key] === undefined || merged[key] === null) {
457
+ merged[key] = defaults[key];
458
+ }
459
+ }
460
+ &nbsp;
461
+ return merged;
462
+ };
463
+ &nbsp;
464
+ /**
465
+ * Promise version of Node's `exec` from `child-process`.
466
+ */
467
+ export const execPromise = promisify(exec);
468
+ &nbsp;
469
+ /**
470
+ * `If-diff` equality checker.
471
+ */
472
+ export const checkIfEqual = (source: any, target: any) =&gt; {
473
+ if (source === target) {
474
+ return true;
475
+ }
476
+ &nbsp;
477
+ if (source === '*' || target === '*') {
478
+ return true;
479
+ }
480
+ &nbsp;
481
+ return false;
482
+ };
483
+ &nbsp;
484
+ /**
485
+ * Converts given `value` to either `1` or `0`.
486
+ */
487
+ const convertToXorable = (value: any) =&gt; {
488
+ if (typeof value === 'number') {
489
+ return value !== 0 ? 1 : 0;
490
+ }
491
+ &nbsp;
492
+ if (typeof value === 'boolean') {
493
+ return value ? 1 : 0;
494
+ }
495
+ &nbsp;
496
+ if (typeof value === 'string') {
497
+ return value.length &gt; 0 ? 1 : 0;
498
+ }
499
+ &nbsp;
500
+ if (typeof value === 'object') {
501
+ return 1;
502
+ }
503
+ &nbsp;
504
+ return 0;
505
+ };
506
+ &nbsp;
507
+ /**
508
+ * If one of the `valuesToCheck` values is undefined, then set `missing`, otherwise `exists`.
509
+ */
510
+ const setValuesIfMissing = (response: Difference) =&gt; {
511
+ const source = convertToXorable(response.source);
512
+ const target = convertToXorable(response.target);
513
+ &nbsp;
514
+ if (source ^ target) {
515
+ ['source', 'target'].forEach(value =&gt; {
516
+ response[value] = response[value] ? 'exists' : 'missing';
517
+ });
518
+ &nbsp;
519
+ return response;
520
+ }
521
+ &nbsp;
522
+ return response;
523
+ };
524
+ &nbsp;
525
+ /**
526
+ * Checks if objects are primitive types.
527
+ */
528
+ export const oneIsPrimitive = (source: any, target: any) =&gt; {
529
+ // eslint-disable-next-line eqeqeq
530
+ if (source == null || target == null) {
531
+ return true;
532
+ }
533
+ &nbsp;
534
+ return source !== Object(source) &amp;&amp; target !== Object(target);
535
+ };
536
+ &nbsp;
537
+ /**
538
+ * Format not matching message for CLI logging.
539
+ */
540
+ export const formatNotMatchingLog = (message: Difference) =&gt; {
541
+ const flattenMessage = setValuesIfMissing(message);
542
+ &nbsp;
543
+ Object.keys(flattenMessage).forEach(key =&gt; {
544
+ if (key === 'message' || key === 'path') {
545
+ console.log(message[key]);
546
+ } else {
547
+ console.log(`${key}: ${message[key]}`);
548
+ }
549
+ });
550
+ };
551
+ &nbsp;
552
+ /**
553
+ * Checks if there is data piped, then collects it.
554
+ * Otherwise returns empty string.
555
+ */
556
+ const collectPipedData = async () =&gt; {
557
+ if (process.stdin.isTTY) {
558
+ return '';
559
+ }
560
+ &nbsp;
561
+ const readline = createInterface({
562
+ input: process.stdin,
563
+ });
564
+ &nbsp;
565
+ const data: string[] = [];
566
+ &nbsp;
567
+ for await (const line of readline) {
568
+ data.push(line);
569
+ }
570
+ &nbsp;
571
+ return data.join('\n');
572
+ };
573
+ &nbsp;
574
+ /**
575
+ * Checks if there is piped data, tries to parse yaml from it.
576
+ * Throws error if there is piped info, but there is no valid manifest.
577
+ */
578
+ export const parseManifestFromStdin = async () =&gt; {
579
+ const pipedSourceManifest = await collectPipedData();
580
+ &nbsp;
581
+ if (!pipedSourceManifest) {
582
+ return '';
583
+ }
584
+ &nbsp;
585
+ const regex = /# start((?:.*\n)+?)# end/;
586
+ const match = regex.exec(pipedSourceManifest);
587
+ &nbsp;
588
+ if (!match) {
589
+ throw new CliInputError(MISSING_MANIFEST_IN_STDIN);
590
+ }
591
+ &nbsp;
592
+ return match![1];
593
+ };
594
+ &nbsp;</pre></td></tr></table></pre>
595
+
596
+ <div class='push'></div><!-- for sticky footer -->
597
+ </div><!-- /wrapper -->
598
+ <div class='footer quiet pad2 space-top1 center small'>
599
+ Code coverage generated by
600
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
601
+ at 2024-06-09T10:14:32.157Z
602
+ </div>
603
+ <script src="../prettify.js"></script>
604
+ <script>
605
+ window.onload = function () {
606
+ prettyPrint();
607
+ };
608
+ </script>
609
+ <script src="../sorter.js"></script>
610
+ <script src="../block-navigation.js"></script>
611
+ </body>
612
+ </html>
613
+