@grnsft/if 0.1.7 → 0.1.8

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 (31) hide show
  1. package/coverage/clover.xml +218 -235
  2. package/coverage/coverage-final.json +11 -11
  3. package/coverage/lcov-report/config/config.ts.html +3 -9
  4. package/coverage/lcov-report/config/index.html +7 -7
  5. package/coverage/lcov-report/config/index.ts.html +3 -3
  6. package/coverage/lcov-report/config/strings.ts.html +19 -7
  7. package/coverage/lcov-report/index.html +19 -19
  8. package/coverage/lcov-report/lib/index.html +16 -16
  9. package/coverage/lcov-report/lib/models-universe.ts.html +4 -4
  10. package/coverage/lcov-report/lib/observatory.ts.html +10 -10
  11. package/coverage/lcov-report/lib/planet-aggregator.ts.html +76 -46
  12. package/coverage/lcov-report/lib/supercomputer.ts.html +68 -308
  13. package/coverage/lcov-report/models/index.html +7 -7
  14. package/coverage/lcov-report/models/index.ts.html +2 -2
  15. package/coverage/lcov-report/models/planet-aggregator.ts.html +271 -0
  16. package/coverage/lcov-report/models/time-sync.ts.html +129 -117
  17. package/coverage/lcov-report/util/args.ts.html +1 -1
  18. package/coverage/lcov-report/util/errors.ts.html +1 -1
  19. package/coverage/lcov-report/util/index.html +1 -1
  20. package/coverage/lcov-report/util/units-dealer.ts.html +12 -12
  21. package/coverage/lcov-report/util/yaml.ts.html +9 -9
  22. package/coverage/lcov.info +343 -372
  23. package/examples/impls/test/aggregation-test.yml +2 -2
  24. package/examples/impls/test/nesting.yml +93 -42
  25. package/examples/impls/test/sci.yml +3 -3
  26. package/examples/impls/test/shell.yml +5 -5
  27. package/examples/ompls/nesting.yml +91 -85
  28. package/examples/ompls/sci.yml +4 -3
  29. package/examples/ompls/shell.yml +7 -7
  30. package/jest.config.js +1 -1
  31. package/package.json +1 -1
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>70/70</span>
28
+ <span class='fraction'>44/44</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>24/24</span>
35
+ <span class='fraction'>11/11</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/10</span>
42
+ <span class='fraction'>7/7</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>69/69</span>
49
+ <span class='fraction'>42/42</span>
50
50
  </div>
51
51
 
52
52
 
@@ -192,87 +192,7 @@
192
192
  <a name='L127'></a><a href='#L127'>127</a>
193
193
  <a name='L128'></a><a href='#L128'>128</a>
194
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>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
195
+ <a name='L130'></a><a href='#L130'>130</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
276
196
  <span class="cline-any cline-yes">1x</span>
277
197
  <span class="cline-any cline-yes">1x</span>
278
198
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -283,8 +203,6 @@
283
203
  <span class="cline-any cline-neutral">&nbsp;</span>
284
204
  <span class="cline-any cline-neutral">&nbsp;</span>
285
205
  <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
206
  <span class="cline-any cline-yes">1x</span>
289
207
  <span class="cline-any cline-neutral">&nbsp;</span>
290
208
  <span class="cline-any cline-yes">1x</span>
@@ -293,41 +211,13 @@
293
211
  <span class="cline-any cline-neutral">&nbsp;</span>
294
212
  <span class="cline-any cline-neutral">&nbsp;</span>
295
213
  <span class="cline-any cline-yes">1x</span>
296
- <span class="cline-any cline-yes">11x</span>
297
- <span class="cline-any cline-neutral">&nbsp;</span>
298
- <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">11x</span>
300
- <span class="cline-any cline-yes">11x</span>
301
- <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-neutral">&nbsp;</span>
303
- <span class="cline-any cline-yes">11x</span>
304
- <span class="cline-any cline-yes">11x</span>
305
- <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-neutral">&nbsp;</span>
307
214
  <span class="cline-any cline-neutral">&nbsp;</span>
308
215
  <span class="cline-any cline-neutral">&nbsp;</span>
309
216
  <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">1x</span>
313
- <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-yes">3x</span>
316
- <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-yes">3x</span>
318
217
  <span class="cline-any cline-yes">7x</span>
319
218
  <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-yes">7x</span>
321
- <span class="cline-any cline-yes">7x</span>
322
- <span class="cline-any cline-yes">7x</span>
323
219
  <span class="cline-any cline-neutral">&nbsp;</span>
324
220
  <span class="cline-any cline-yes">7x</span>
325
- <span class="cline-any cline-yes">3x</span>
326
- <span class="cline-any cline-yes">2x</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-neutral">&nbsp;</span>
330
- <span class="cline-any cline-neutral">&nbsp;</span>
331
221
  <span class="cline-any cline-yes">7x</span>
332
222
  <span class="cline-any cline-neutral">&nbsp;</span>
333
223
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -335,41 +225,18 @@
335
225
  <span class="cline-any cline-neutral">&nbsp;</span>
336
226
  <span class="cline-any cline-neutral">&nbsp;</span>
337
227
  <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-yes">7x</span>
338
229
  <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-yes">32x</span>
340
- <span class="cline-any cline-yes">1x</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">31x</span>
344
- <span class="cline-any cline-yes">31x</span>
345
- <span class="cline-any cline-yes">34x</span>
346
- <span class="cline-any cline-neutral">&nbsp;</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">34x</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">31x</span>
354
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
362
- <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-yes">7x</span>
363
231
  <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-yes">16x</span>
365
- <span class="cline-any cline-yes">16x</span>
366
232
  <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-yes">22x</span>
368
233
  <span class="cline-any cline-neutral">&nbsp;</span>
369
234
  <span class="cline-any cline-neutral">&nbsp;</span>
370
235
  <span class="cline-any cline-neutral">&nbsp;</span>
371
236
  <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-yes">7x</span>
372
238
  <span class="cline-any cline-neutral">&nbsp;</span>
239
+ <span class="cline-any cline-yes">14x</span>
373
240
  <span class="cline-any cline-neutral">&nbsp;</span>
374
241
  <span class="cline-any cline-neutral">&nbsp;</span>
375
242
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -381,104 +248,77 @@
381
248
  <span class="cline-any cline-neutral">&nbsp;</span>
382
249
  <span class="cline-any cline-neutral">&nbsp;</span>
383
250
  <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-yes">19x</span>
385
251
  <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-yes">19x</span>
387
- <span class="cline-any cline-yes">11x</span>
388
252
  <span class="cline-any cline-neutral">&nbsp;</span>
389
253
  <span class="cline-any cline-neutral">&nbsp;</span>
390
254
  <span class="cline-any cline-neutral">&nbsp;</span>
255
+ <span class="cline-any cline-yes">8x</span>
256
+ <span class="cline-any cline-yes">6x</span>
391
257
  <span class="cline-any cline-neutral">&nbsp;</span>
392
258
  <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-yes">19x</span>
259
+ <span class="cline-any cline-yes">8x</span>
394
260
  <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-yes">19x</span>
261
+ <span class="cline-any cline-yes">8x</span>
396
262
  <span class="cline-any cline-yes">2x</span>
397
263
  <span class="cline-any cline-neutral">&nbsp;</span>
398
264
  <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-yes">17x</span>
265
+ <span class="cline-any cline-yes">8x</span>
400
266
  <span class="cline-any cline-yes">1x</span>
401
267
  <span class="cline-any cline-neutral">&nbsp;</span>
402
268
  <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-yes">16x</span>
404
- <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-yes">16x</span>
406
- <span class="cline-any cline-neutral">&nbsp;</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">16x</span>
269
+ <span class="cline-any cline-yes">7x</span>
270
+ <span class="cline-any cline-yes">7x</span>
410
271
  <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-yes">16x</span>
272
+ <span class="cline-any cline-yes">7x</span>
273
+ <span class="cline-any cline-yes">7x</span>
412
274
  <span class="cline-any cline-neutral">&nbsp;</span>
413
275
  <span class="cline-any cline-neutral">&nbsp;</span>
414
276
  <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-yes">7x</span>
415
278
  <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-yes">7x</span>
280
+ <span class="cline-any cline-yes">7x</span>
281
+ <span class="cline-any cline-yes">7x</span>
416
282
  <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-yes">16x</span>
418
283
  <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-yes">16x</span>
420
- <span class="cline-any cline-yes">36x</span>
421
- <span class="cline-any cline-yes">36x</span>
422
284
  <span class="cline-any cline-neutral">&nbsp;</span>
423
285
  <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-yes">7x</span>
424
287
  <span class="cline-any cline-neutral">&nbsp;</span>
425
288
  <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-yes">35x</span>
289
+ <span class="cline-any cline-yes">7x</span>
290
+ <span class="cline-any cline-yes">7x</span>
427
291
  <span class="cline-any cline-neutral">&nbsp;</span>
428
292
  <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-yes">15x</span>
293
+ <span class="cline-any cline-yes">7x</span>
294
+ <span class="cline-any cline-yes">2x</span>
430
295
  <span class="cline-any cline-neutral">&nbsp;</span>
431
296
  <span class="cline-any cline-neutral">&nbsp;</span>
432
297
  <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-yes">2x</span>
433
299
  <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-yes">15x</span>
435
- <span class="cline-any cline-yes">13x</span>
436
300
  <span class="cline-any cline-neutral">&nbsp;</span>
437
301
  <span class="cline-any cline-neutral">&nbsp;</span>
438
302
  <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-yes">2x</span>
439
304
  <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-yes">12x</span>
441
305
  <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-yes">12x</span>
443
- <span class="cline-any cline-yes">8x</span>
444
306
  <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-yes">7x</span>
445
308
  <span class="cline-any cline-neutral">&nbsp;</span>
446
309
  <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-yes">4x</span>
448
310
  <span class="cline-any cline-neutral">&nbsp;</span>
449
311
  <span class="cline-any cline-neutral">&nbsp;</span>
450
312
  <span class="cline-any cline-neutral">&nbsp;</span>
451
313
  <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-yes">14x</span>
314
+ <span class="cline-any cline-yes">8x</span>
453
315
  <span class="cline-any cline-yes">8x</span>
454
316
  <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-yes">8x</span>
318
+ <span class="cline-any cline-yes">8x</span>
455
319
  <span class="cline-any cline-neutral">&nbsp;</span>
456
320
  <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">6x</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-yes">14x</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-yes">11x</span>
468
- <span class="cline-any cline-yes">11x</span>
469
- <span class="cline-any cline-yes">11x</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-yes">11x</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-yes">11x</span>
475
- <span class="cline-any cline-yes">19x</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">8x</span>
321
+ <span class="cline-any cline-yes">7x</span>
482
322
  <span class="cline-any cline-neutral">&nbsp;</span>
483
323
  <span class="cline-any cline-neutral">&nbsp;</span>
484
324
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {ModelsUniverse} from './models-universe';
@@ -489,10 +329,8 @@ import {ERRORS} from '../util/errors';
489
329
  &nbsp;
490
330
  import {STRINGS} from '../config';
491
331
  &nbsp;
492
- import {Children, Config, Impl} from '../types/impl';
332
+ import {Children, ChildrenContent, Config, Impl} from '../types/impl';
493
333
  import {ModelParams} from '../types/model-interface';
494
- import {AggregationResult} from '../types/planet-aggregator';
495
- import {ChildInformation} from '../types/supercomputer';
496
334
  &nbsp;
497
335
  const {ImplValidationError} = ERRORS;
498
336
  &nbsp;
@@ -502,81 +340,34 @@ const {STRUCTURE_MALFORMED} = STRINGS;
502
340
  * Computer for `impl` documents.
503
341
  */
504
342
  export class Supercomputer {
505
- private olderChild: ChildInformation = {name: '', info: {}};
343
+ private parent!: ChildrenContent;
506
344
  private impl: Impl;
507
345
  private modelsHandbook: ModelsUniverse;
508
- private aggregatedImpacts: AggregationResult[] = [];
509
346
  private childAmount = 0;
510
347
  &nbsp;
511
348
  constructor(impl: Impl, modelsHandbook: ModelsUniverse) {
512
349
  this.impl = impl;
513
350
  this.modelsHandbook = modelsHandbook;
514
351
  }
515
- &nbsp;
516
- /**
517
- * Goes through all aggregations collected from child components, then calculates the average.
518
- */
519
- public calculateAggregation() {
520
- if (!this.impl.aggregation) {
521
- throw new ImplValidationError('Aggregation params are not provided.');
522
- }
523
- &nbsp;
524
- const method = this.impl.aggregation['aggregation-method'];
525
- &nbsp;
526
- return this.aggregatedImpacts.reduce((acc, impact, index) =&gt; {
527
- const keys = Object.keys(impact);
528
- &nbsp;
529
- keys.forEach(key =&gt; {
530
- acc[key] = acc[key] ?? 0;
531
- acc[key] += impact[key];
532
- &nbsp;
533
- if (index === this.childAmount - 1) {
534
- if (method === 'avg') {
535
- acc[key] /= this.childAmount;
536
- }
537
- }
538
- });
539
- &nbsp;
540
- return acc;
541
- }, {});
542
- }
543
352
  &nbsp;
544
353
  /**
545
354
  * Flattens config entries.
546
355
  */
547
- private flattenConfigValues(config: Config) {
548
- if (!config) {
549
- return {};
550
- }
356
+ private flattenConfigValues(config: Config): ModelParams {
357
+ const configValues = Object.values(config);
551
358
  &nbsp;
552
- const configModelNames = Object.keys(config);
553
- const values = configModelNames.reduce((acc: any, name: string) =&gt; {
554
- acc = {
555
- ...acc,
556
- ...config[name],
557
- };
558
- &nbsp;
559
- return acc;
560
- }, {});
561
- &nbsp;
562
- return values;
359
+ return configValues.reduce((acc, value) =&gt; ({...acc, ...value}), {});
563
360
  }
564
361
  &nbsp;
565
362
  /**
566
363
  * Adds config entries to each obsercation object passed.
567
364
  */
568
- private enrichInputs(
569
- inputs: ModelParams[],
570
- config: Config,
571
- nestedConfig: Config
572
- ) {
365
+ private enrichInputs(inputs: ModelParams[], config: Config) {
573
366
  const configValues = this.flattenConfigValues(config);
574
- const nestedConfigValues = this.flattenConfigValues(nestedConfig);
575
367
  &nbsp;
576
368
  return inputs.map((input: any) =&gt; ({
577
369
  ...input,
578
370
  ...configValues,
579
- ...nestedConfigValues,
580
371
  }));
581
372
  }
582
373
  &nbsp;
@@ -588,45 +379,34 @@ export class Supercomputer {
588
379
  */
589
380
  private async calculateOutputsForChild(
590
381
  childrenObject: Children,
591
- params: any
382
+ childName: string
592
383
  ) {
593
- const {childName, areChildrenNested} = params;
594
- &nbsp;
595
- if (!areChildrenNested) {
596
- this.olderChild = {
597
- name: childName,
598
- info: this.impl.graph.children[childName],
599
- };
384
+ if (this.childAmount === 0) {
385
+ this.parent = this.impl.graph.children[childName];
600
386
  }
601
387
  &nbsp;
602
- const {pipeline, inputs, config} = this.olderChild.info;
388
+ this.childAmount++;
603
389
  &nbsp;
604
390
  if ('children' in childrenObject[childName]) {
605
- return this.compute(childrenObject[childName].children);
391
+ await this.compute(childrenObject[childName].children);
606
392
  }
607
393
  &nbsp;
608
394
  if (!('inputs' in childrenObject[childName])) {
609
395
  throw new ImplValidationError(STRUCTURE_MALFORMED(childName));
610
396
  }
611
397
  &nbsp;
612
- this.childAmount++;
613
- &nbsp;
614
- const specificInputs = areChildrenNested
615
- ? childrenObject[childName].inputs
616
- : inputs;
617
- &nbsp;
618
- const childrenConfig = childrenObject[childName].config || {};
619
- &nbsp;
620
- const enrichedInputs = this.enrichInputs(
621
- specificInputs,
622
- config,
623
- childrenConfig
624
- );
398
+ const {pipeline, config} = this.parent;
399
+ const {inputs} = childrenObject[childName];
625
400
  &nbsp;
401
+ const childConfig = childrenObject[childName].config;
402
+ const enrichedInputs = this.enrichInputs(inputs, {
403
+ ...config,
404
+ ...childConfig,
405
+ });
626
406
  const observatory = new Observatory(enrichedInputs);
627
407
  &nbsp;
628
408
  for (const modelName of pipeline) {
629
- const params = config &amp;&amp; config[modelName];
409
+ const params = childConfig &amp;&amp; childConfig[modelName];
630
410
  const modelInstance = await this.modelsHandbook.getInitializedModel(
631
411
  modelName,
632
412
  params
@@ -636,35 +416,22 @@ export class Supercomputer {
636
416
  }
637
417
  &nbsp;
638
418
  const outputs = observatory.getOutputs();
419
+ childrenObject[childName].outputs = outputs;
639
420
  &nbsp;
640
- /**
641
- * If aggregation is required, then init `aggregated-outputs`.
642
- */
421
+ /** If aggregation is enabled, do horizontal aggregation. */
643
422
  if (this.impl.aggregation) {
644
- const aggregatedImpactsPerChild = planetAggregator(
645
- outputs,
646
- this.impl.aggregation
647
- );
648
- &nbsp;
649
- this.aggregatedImpacts.push(aggregatedImpactsPerChild);
650
- &nbsp;
651
- if (areChildrenNested) {
652
- this.impl.graph.children[this.olderChild.name].children[childName][
653
- 'aggregated-outputs'
654
- ] = aggregatedImpactsPerChild;
655
- } else {
656
- this.impl.graph.children[this.olderChild.name]['aggregated-outputs'] =
657
- aggregatedImpactsPerChild;
423
+ if (
424
+ this.impl.aggregation.type === 'horizontal' ||
425
+ this.impl.aggregation.type === 'both'
426
+ ) {
427
+ const aggregation = await planetAggregator(
428
+ outputs,
429
+ this.impl.aggregation.metrics
430
+ );
431
+ &nbsp;
432
+ childrenObject[childName]['aggregated-outputs'] = aggregation;
658
433
  }
659
434
  }
660
- &nbsp;
661
- if (areChildrenNested) {
662
- this.impl.graph.children[this.olderChild.name].children[
663
- childName
664
- ].outputs = outputs;
665
- } else {
666
- this.impl.graph.children[this.olderChild.name].outputs = outputs;
667
- }
668
435
  &nbsp;
669
436
  return;
670
437
  }
@@ -673,18 +440,11 @@ export class Supercomputer {
673
440
  * Checks if object is top level children or nested, then runs through all children and calculates outputs.
674
441
  */
675
442
  public async compute(childrenObject?: any) {
676
- const implOrChildren = childrenObject || this.impl;
677
- const areChildrenNested = !!childrenObject;
678
- const children: Children = areChildrenNested
679
- ? implOrChildren
680
- : implOrChildren.graph.children;
443
+ const children = childrenObject || this.impl.graph.children;
681
444
  const childrenNames = Object.keys(children);
682
445
  &nbsp;
683
446
  for (const childName of childrenNames) {
684
- await this.calculateOutputsForChild(children, {
685
- childName,
686
- areChildrenNested,
687
- });
447
+ await this.calculateOutputsForChild(children, childName);
688
448
  }
689
449
  &nbsp;
690
450
  return this.impl;
@@ -697,7 +457,7 @@ export class Supercomputer {
697
457
  <div class='footer quiet pad2 space-top1 center small'>
698
458
  Code coverage generated by
699
459
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
700
- at 2024-01-09T13:19:15.857Z
460
+ at 2024-01-15T13:07:43.773Z
701
461
  </div>
702
462
  <script src="../prettify.js"></script>
703
463
  <script>
@@ -25,14 +25,14 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>129/129</span>
28
+ <span class='fraction'>132/132</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>31/31</span>
35
+ <span class='fraction'>32/32</span>
36
36
  </div>
37
37
 
38
38
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>127/127</span>
49
+ <span class='fraction'>130/130</span>
50
50
  </div>
51
51
 
52
52
 
@@ -99,13 +99,13 @@
99
99
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
100
100
  </td>
101
101
  <td data-value="100" class="pct high">100%</td>
102
- <td data-value="127" class="abs high">127/127</td>
102
+ <td data-value="130" class="abs high">130/130</td>
103
103
  <td data-value="100" class="pct high">100%</td>
104
- <td data-value="31" class="abs high">31/31</td>
104
+ <td data-value="32" class="abs high">32/32</td>
105
105
  <td data-value="100" class="pct high">100%</td>
106
106
  <td data-value="21" class="abs high">21/21</td>
107
107
  <td data-value="100" class="pct high">100%</td>
108
- <td data-value="126" class="abs high">126/126</td>
108
+ <td data-value="129" class="abs high">129/129</td>
109
109
  </tr>
110
110
 
111
111
  </tbody>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2024-01-09T13:19:15.857Z
119
+ at 2024-01-15T13:07:43.773Z
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>
@@ -64,7 +64,7 @@
64
64
  <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">17x</span>
67
+ <a name='L2'></a><a href='#L2'>2</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">21x</span>
68
68
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export {TimeSyncModel} from './time-sync';
69
69
  &nbsp;</pre></td></tr></table></pre>
70
70
 
@@ -73,7 +73,7 @@
73
73
  <div class='footer quiet pad2 space-top1 center small'>
74
74
  Code coverage generated by
75
75
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
76
- at 2024-01-09T13:19:15.857Z
76
+ at 2024-01-15T13:07:43.773Z
77
77
  </div>
78
78
  <script src="../prettify.js"></script>
79
79
  <script>