@grnsft/if 0.1.0 → 0.1.2

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 (43) hide show
  1. package/.github/ISSUE_TEMPLATE/agenda.md +4 -3
  2. package/.github/ISSUE_TEMPLATE/bug-report.md +32 -0
  3. package/.github/ISSUE_TEMPLATE/dev-ticket.md +44 -0
  4. package/.github/ISSUE_TEMPLATE/sprint-planning.md +39 -0
  5. package/.github/ISSUE_TEMPLATE/sprint-retro.md +41 -0
  6. package/coverage/clover.xml +147 -1128
  7. package/coverage/coverage-final.json +9 -26
  8. package/coverage/lcov-report/config/config.ts.html +3 -66
  9. package/coverage/lcov-report/config/index.html +16 -16
  10. package/coverage/lcov-report/config/index.ts.html +3 -3
  11. package/coverage/lcov-report/config/strings.ts.html +90 -21
  12. package/coverage/lcov-report/index.html +26 -221
  13. package/coverage/lcov-report/lib/index.html +40 -10
  14. package/coverage/lcov-report/lib/models-universe.ts.html +475 -0
  15. package/coverage/lcov-report/lib/observatory.ts.html +187 -0
  16. package/coverage/lcov-report/lib/supercomputer.ts.html +553 -0
  17. package/coverage/lcov-report/util/args.ts.html +25 -10
  18. package/coverage/lcov-report/util/errors.ts.html +157 -0
  19. package/coverage/lcov-report/util/index.html +16 -46
  20. package/coverage/lcov-report/util/yaml.ts.html +22 -16
  21. package/coverage/lcov.info +249 -2019
  22. package/examples/impls/case-studies/ntt-data-on-premise.yaml +42 -0
  23. package/package.json +4 -3
  24. package/build/config/config.d.ts +0 -9
  25. package/build/config/config.js +0 -51
  26. package/build/lib/observatory.d.ts +0 -20
  27. package/build/lib/observatory.js +0 -31
  28. package/build/types/model-interface.d.ts +0 -16
  29. package/build/types/model-interface.js +0 -3
  30. package/build/types/process-args.d.ts +0 -7
  31. package/build/types/process-args.js +0 -3
  32. package/build/types/supercomputer.d.ts +0 -4
  33. package/build/types/supercomputer.js +0 -3
  34. package/build/util/args.js +0 -48
  35. package/build/util/errors.d.ts +0 -6
  36. package/build/util/errors.js +0 -22
  37. package/build/util/helpers.js +0 -18
  38. package/src/__mocks__/boavizta/countries.json +0 -138
  39. package/src/__mocks__/boavizta/instance_types.json +0 -625
  40. package/src/__mocks__/boavizta/providers.json +0 -1
  41. package/src/__mocks__/watt-time/data.json +0 -119
  42. package/tsconfig.build.tsbuildinfo +0 -1
  43. package/yarn-error.log +0 -5854
@@ -0,0 +1,553 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for lib/supercomputer.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">lib</a> supercomputer.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'>49/49</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'>15/15</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'>7/7</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'>48/48</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
223
+ <span class="cline-any cline-yes">1x</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
225
+ <span class="cline-any cline-yes">1x</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-yes">1x</span>
228
+ <span class="cline-any cline-neutral">&nbsp;</span>
229
+ <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-neutral">&nbsp;</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-yes">1x</span>
233
+ <span class="cline-any cline-neutral">&nbsp;</span>
234
+ <span class="cline-any cline-yes">1x</span>
235
+ <span class="cline-any cline-neutral">&nbsp;</span>
236
+ <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-neutral">&nbsp;</span>
238
+ <span class="cline-any cline-neutral">&nbsp;</span>
239
+ <span class="cline-any cline-yes">1x</span>
240
+ <span class="cline-any cline-yes">6x</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-neutral">&nbsp;</span>
243
+ <span class="cline-any cline-neutral">&nbsp;</span>
244
+ <span class="cline-any cline-neutral">&nbsp;</span>
245
+ <span class="cline-any cline-yes">6x</span>
246
+ <span class="cline-any cline-yes">6x</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</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">16x</span>
254
+ <span class="cline-any cline-yes">1x</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-yes">15x</span>
258
+ <span class="cline-any cline-yes">15x</span>
259
+ <span class="cline-any cline-yes">16x</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-neutral">&nbsp;</span>
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-yes">16x</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
266
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-yes">15x</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-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-yes">8x</span>
279
+ <span class="cline-any cline-yes">8x</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-yes">11x</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-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-yes">10x</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-yes">10x</span>
301
+ <span class="cline-any cline-yes">6x</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-yes">10x</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-yes">10x</span>
310
+ <span class="cline-any cline-yes">1x</span>
311
+ <span class="cline-any cline-neutral">&nbsp;</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-yes">9x</span>
314
+ <span class="cline-any cline-yes">1x</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-yes">8x</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-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-yes">8x</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-yes">8x</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-yes">8x</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-yes">8x</span>
332
+ <span class="cline-any cline-yes">18x</span>
333
+ <span class="cline-any cline-yes">18x</span>
334
+ <span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-yes">17x</span>
339
+ <span class="cline-any cline-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-yes">7x</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-yes">7x</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-yes">4x</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-yes">3x</span>
354
+ <span class="cline-any cline-yes">3x</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-yes">6x</span>
362
+ <span class="cline-any cline-yes">6x</span>
363
+ <span class="cline-any cline-yes">6x</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-yes">6x</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-yes">6x</span>
369
+ <span class="cline-any cline-yes">10x</span>
370
+ <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">4x</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></td><td class="text"><pre class="prettyprint lang-js">import {ModelsUniverse} from './models-universe';
379
+ import {Observatory} from './observatory';
380
+ &nbsp;
381
+ import {ERRORS} from '../util/errors';
382
+ &nbsp;
383
+ import {STRINGS} from '../config';
384
+ &nbsp;
385
+ import {ChildInformation} from '../types/supercomputer';
386
+ import {Children, Config, Impl, ModelParams} from '../types/impl';
387
+ &nbsp;
388
+ const {ImplValidationError} = ERRORS;
389
+ &nbsp;
390
+ const {STRUCTURE_MALFORMED} = STRINGS;
391
+ &nbsp;
392
+ /**
393
+ * Computer for `impl` documents.
394
+ */
395
+ export class Supercomputer {
396
+ private olderChild: ChildInformation = {name: '', info: {}};
397
+ private impl: Impl;
398
+ private modelsHandbook: ModelsUniverse;
399
+ &nbsp;
400
+ constructor(impl: Impl, modelsHandbook: ModelsUniverse) {
401
+ this.impl = impl;
402
+ this.modelsHandbook = modelsHandbook;
403
+ }
404
+ &nbsp;
405
+ /**
406
+ * Flattens config entries.
407
+ */
408
+ private flattenConfigValues(config: Config) {
409
+ if (!config) {
410
+ return {};
411
+ }
412
+ &nbsp;
413
+ const configModelNames = Object.keys(config);
414
+ const values = configModelNames.reduce((acc: any, name: string) =&gt; {
415
+ acc = {
416
+ ...acc,
417
+ ...config[name],
418
+ };
419
+ &nbsp;
420
+ return acc;
421
+ }, {});
422
+ &nbsp;
423
+ return values;
424
+ }
425
+ &nbsp;
426
+ /**
427
+ * Adds config entries to each obsercation object passed.
428
+ */
429
+ private enrichInputs(
430
+ inputs: ModelParams[],
431
+ config: Config,
432
+ nestedConfig: Config
433
+ ) {
434
+ const configValues = this.flattenConfigValues(config);
435
+ const nestedConfigValues = this.flattenConfigValues(nestedConfig);
436
+ &nbsp;
437
+ return inputs.map((input: any) =&gt; ({
438
+ ...input,
439
+ ...configValues,
440
+ ...nestedConfigValues,
441
+ }));
442
+ }
443
+ &nbsp;
444
+ /**
445
+ * If child is top level, then initializes `this.olderChild`.
446
+ * If `children` object contains `children` property, it means inputs are nested (calls compute again).
447
+ * Otherwise enriches inputs, passes them to Observatory.
448
+ * For each model from pipeline Observatory gathers inputs. Then results are stored.
449
+ */
450
+ private async calculateOutputsForChild(
451
+ childrenObject: Children,
452
+ params: any
453
+ ) {
454
+ const {childName, areChildrenNested} = params;
455
+ &nbsp;
456
+ if (!areChildrenNested) {
457
+ this.olderChild = {
458
+ name: childName,
459
+ info: this.impl.graph.children[childName],
460
+ };
461
+ }
462
+ &nbsp;
463
+ const {pipeline, inputs, config} = this.olderChild.info;
464
+ &nbsp;
465
+ if ('children' in childrenObject[childName]) {
466
+ return this.compute(childrenObject[childName].children);
467
+ }
468
+ &nbsp;
469
+ if (!('inputs' in childrenObject[childName])) {
470
+ throw new ImplValidationError(STRUCTURE_MALFORMED(childName));
471
+ }
472
+ &nbsp;
473
+ const specificInputs = areChildrenNested
474
+ ? childrenObject[childName].inputs
475
+ : inputs;
476
+ &nbsp;
477
+ const childrenConfig = childrenObject[childName].config || {};
478
+ &nbsp;
479
+ const enrichedInputs = this.enrichInputs(
480
+ specificInputs,
481
+ config,
482
+ childrenConfig
483
+ );
484
+ &nbsp;
485
+ const observatory = new Observatory(enrichedInputs);
486
+ &nbsp;
487
+ for (const modelName of pipeline) {
488
+ const params = config &amp;&amp; config[modelName];
489
+ const modelInstance = await this.modelsHandbook.getInitializedModel(
490
+ modelName,
491
+ params
492
+ );
493
+ &nbsp;
494
+ await observatory.doInvestigationsWith(modelInstance);
495
+ }
496
+ &nbsp;
497
+ const outputs = observatory.getOutputs();
498
+ &nbsp;
499
+ if (areChildrenNested) {
500
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
501
+ // @ts-ignore
502
+ this.impl.graph.children[this.olderChild.name].children[
503
+ childName
504
+ ].outputs = observatory.getOutputs();
505
+ &nbsp;
506
+ return;
507
+ }
508
+ &nbsp;
509
+ this.impl.graph.children[this.olderChild.name].outputs = outputs;
510
+ return;
511
+ }
512
+ &nbsp;
513
+ /**
514
+ * Checks if object is top level children or nested, then runs through all children and calculates outputs.
515
+ */
516
+ public async compute(childrenObject?: any) {
517
+ const implOrChildren = childrenObject || this.impl;
518
+ const areChildrenNested = !!childrenObject;
519
+ const children: Children = areChildrenNested
520
+ ? implOrChildren
521
+ : implOrChildren.graph.children;
522
+ const childrenNames = Object.keys(children);
523
+ &nbsp;
524
+ for (const childName of childrenNames) {
525
+ await this.calculateOutputsForChild(children, {
526
+ childName,
527
+ areChildrenNested,
528
+ });
529
+ }
530
+ &nbsp;
531
+ return this.impl;
532
+ }
533
+ }
534
+ &nbsp;</pre></td></tr></table></pre>
535
+
536
+ <div class='push'></div><!-- for sticky footer -->
537
+ </div><!-- /wrapper -->
538
+ <div class='footer quiet pad2 space-top1 center small'>
539
+ Code coverage generated by
540
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
541
+ at 2023-11-20T19:46:53.121Z
542
+ </div>
543
+ <script src="../prettify.js"></script>
544
+ <script>
545
+ window.onload = function () {
546
+ prettyPrint();
547
+ };
548
+ </script>
549
+ <script src="../sorter.js"></script>
550
+ <script src="../block-navigation.js"></script>
551
+ </body>
552
+ </html>
553
+