@grnsft/if 0.5.0 → 0.6.0-beta.0

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 (451) hide show
  1. package/README.md +5 -17
  2. package/Refactor-migration-guide.md +110 -164
  3. package/build/common/config/index.d.ts +1 -0
  4. package/build/common/config/index.js +6 -0
  5. package/build/common/config/strings.d.ts +8 -0
  6. package/build/common/config/strings.js +16 -0
  7. package/build/common/lib/load.d.ts +6 -0
  8. package/build/common/lib/load.js +18 -0
  9. package/build/{types → common/types}/manifest.d.ts +4 -1
  10. package/build/common/types/manifest.js +3 -0
  11. package/build/common/util/debug-logger.js +115 -0
  12. package/build/common/util/fs.js +94 -0
  13. package/build/common/util/helpers.d.ts +15 -0
  14. package/build/common/util/helpers.js +80 -0
  15. package/build/{util → common/util}/logger.js +1 -1
  16. package/build/{util → common/util}/validations.d.ts +149 -47
  17. package/build/common/util/validations.js +141 -0
  18. package/build/common/util/yaml.js +59 -0
  19. package/build/if-check/config/config.d.ts +6 -0
  20. package/build/if-check/config/config.js +31 -0
  21. package/build/{config → if-check/config}/index.d.ts +0 -1
  22. package/build/if-check/config/index.js +8 -0
  23. package/build/if-check/config/strings.d.ts +12 -0
  24. package/build/if-check/config/strings.js +16 -0
  25. package/build/if-check/index.js +98 -0
  26. package/build/if-check/types/process-args.d.ts +4 -0
  27. package/build/if-check/types/process-args.js +3 -0
  28. package/build/if-check/util/args.d.ts +10 -0
  29. package/build/if-check/util/args.js +56 -0
  30. package/build/if-check/util/helpers.d.ts +4 -0
  31. package/build/if-check/util/helpers.js +18 -0
  32. package/build/if-check/util/npm.d.ts +4 -0
  33. package/build/if-check/util/npm.js +59 -0
  34. package/build/if-csv/config/config.d.ts +6 -0
  35. package/build/if-csv/config/config.js +37 -0
  36. package/build/if-csv/config/index.d.ts +2 -0
  37. package/build/if-csv/config/index.js +8 -0
  38. package/build/if-csv/config/strings.d.ts +4 -0
  39. package/build/if-csv/config/strings.js +8 -0
  40. package/build/if-csv/index.js +63 -0
  41. package/build/if-csv/types/csv.d.ts +7 -0
  42. package/build/if-csv/types/csv.js +3 -0
  43. package/build/if-csv/types/process-args.d.ts +5 -0
  44. package/build/if-csv/types/process-args.js +3 -0
  45. package/build/if-csv/util/args.d.ts +12 -0
  46. package/build/if-csv/util/args.js +51 -0
  47. package/build/if-csv/util/helpers.d.ts +9 -0
  48. package/build/if-csv/util/helpers.js +95 -0
  49. package/build/if-diff/config/config.d.ts +6 -0
  50. package/build/if-diff/config/config.js +31 -0
  51. package/build/if-diff/config/index.d.ts +2 -0
  52. package/build/if-diff/config/index.js +8 -0
  53. package/build/if-diff/config/strings.d.ts +6 -0
  54. package/build/if-diff/config/strings.js +10 -0
  55. package/build/if-diff/index.js +46 -0
  56. package/build/{lib → if-diff/lib}/compare.d.ts +1 -1
  57. package/build/if-diff/lib/compare.js +56 -0
  58. package/build/{lib → if-diff/lib}/load.d.ts +16 -18
  59. package/build/if-diff/lib/load.js +51 -0
  60. package/build/if-diff/types/args.js +3 -0
  61. package/build/if-diff/types/compare.js +3 -0
  62. package/build/if-diff/types/process-args.d.ts +4 -0
  63. package/build/if-diff/types/process-args.js +3 -0
  64. package/build/if-diff/util/args.d.ts +5 -0
  65. package/build/if-diff/util/args.js +51 -0
  66. package/build/if-diff/util/helpers.d.ts +13 -0
  67. package/build/if-diff/util/helpers.js +75 -0
  68. package/build/if-env/config/config.d.ts +6 -0
  69. package/build/if-env/config/config.js +37 -0
  70. package/build/if-env/config/index.d.ts +2 -0
  71. package/build/if-env/config/index.js +8 -0
  72. package/build/if-env/config/strings.d.ts +7 -0
  73. package/build/if-env/config/strings.js +11 -0
  74. package/build/if-env/index.js +40 -0
  75. package/build/if-env/types/if-env.js +3 -0
  76. package/build/if-env/types/npm.js +3 -0
  77. package/build/if-env/types/process-args.d.ts +5 -0
  78. package/build/if-env/types/process-args.js +3 -0
  79. package/build/if-env/util/args.d.ts +12 -0
  80. package/build/if-env/util/args.js +47 -0
  81. package/build/if-env/util/helpers.d.ts +20 -0
  82. package/build/if-env/util/helpers.js +94 -0
  83. package/build/{util → if-env/util}/npm.d.ts +0 -4
  84. package/build/if-env/util/npm.js +126 -0
  85. package/build/if-run/builtins/coefficient/index.d.ts +2 -0
  86. package/build/if-run/builtins/coefficient/index.js +67 -0
  87. package/build/if-run/builtins/copy-param/index.d.ts +2 -0
  88. package/build/if-run/builtins/copy-param/index.js +70 -0
  89. package/build/if-run/builtins/csv-lookup/index.d.ts +2 -0
  90. package/build/if-run/builtins/csv-lookup/index.js +190 -0
  91. package/build/if-run/builtins/divide/index.d.ts +2 -0
  92. package/build/if-run/builtins/divide/index.js +80 -0
  93. package/build/if-run/builtins/exponent/index.d.ts +2 -0
  94. package/build/if-run/builtins/exponent/index.js +60 -0
  95. package/build/{builtins → if-run/builtins}/export-log.d.ts +1 -1
  96. package/build/{builtins → if-run/builtins}/export-log.js +1 -1
  97. package/build/{builtins → if-run/builtins}/export-yaml.d.ts +1 -1
  98. package/build/if-run/builtins/export-yaml.js +30 -0
  99. package/build/{builtins → if-run/builtins}/index.d.ts +1 -2
  100. package/build/{builtins → if-run/builtins}/index.js +4 -6
  101. package/build/if-run/builtins/interpolation/index.d.ts +2 -0
  102. package/build/if-run/builtins/interpolation/index.js +151 -0
  103. package/build/if-run/builtins/mock-observations/helpers/common-generator.js +29 -0
  104. package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.js +48 -0
  105. package/build/if-run/builtins/mock-observations/index.d.ts +2 -0
  106. package/build/if-run/builtins/mock-observations/index.js +116 -0
  107. package/build/if-run/builtins/mock-observations/interfaces/index.js +3 -0
  108. package/build/if-run/builtins/multiply/index.d.ts +2 -0
  109. package/build/if-run/builtins/multiply/index.js +59 -0
  110. package/build/if-run/builtins/regex/index.d.ts +2 -0
  111. package/build/if-run/builtins/regex/index.js +76 -0
  112. package/build/if-run/builtins/sci/config.js +44 -0
  113. package/build/if-run/builtins/sci/index.d.ts +2 -0
  114. package/build/if-run/builtins/sci/index.js +92 -0
  115. package/build/if-run/builtins/sci-embodied/index.d.ts +2 -0
  116. package/build/if-run/builtins/sci-embodied/index.js +156 -0
  117. package/build/if-run/builtins/shell/index.d.ts +2 -0
  118. package/build/if-run/builtins/shell/index.js +60 -0
  119. package/build/if-run/builtins/subtract/index.d.ts +2 -0
  120. package/build/if-run/builtins/subtract/index.js +61 -0
  121. package/build/if-run/builtins/sum/index.d.ts +2 -0
  122. package/build/if-run/builtins/sum/index.js +66 -0
  123. package/build/if-run/builtins/time-sync/index.d.ts +17 -0
  124. package/build/if-run/builtins/time-sync/index.js +339 -0
  125. package/build/if-run/config/config.d.ts +9 -0
  126. package/build/if-run/config/config.js +73 -0
  127. package/build/if-run/config/index.d.ts +2 -0
  128. package/build/if-run/config/index.js +8 -0
  129. package/build/{config → if-run/config}/strings.d.ts +28 -54
  130. package/build/if-run/config/strings.js +76 -0
  131. package/build/if-run/index.d.ts +2 -0
  132. package/build/if-run/index.js +63 -0
  133. package/build/if-run/lib/aggregate.d.ts +15 -0
  134. package/build/if-run/lib/aggregate.js +123 -0
  135. package/build/if-run/lib/compute.js +136 -0
  136. package/build/{lib → if-run/lib}/environment.d.ts +1 -1
  137. package/build/if-run/lib/environment.js +75 -0
  138. package/build/{lib → if-run/lib}/exhaust.d.ts +1 -1
  139. package/build/if-run/lib/exhaust.js +27 -0
  140. package/build/if-run/lib/explain.d.ts +9 -0
  141. package/build/if-run/lib/explain.js +43 -0
  142. package/build/if-run/lib/initialize.d.ts +6 -0
  143. package/build/if-run/lib/initialize.js +109 -0
  144. package/build/if-run/lib/regroup.d.ts +5 -0
  145. package/build/if-run/lib/regroup.js +64 -0
  146. package/build/if-run/types/aggregation.d.ts +5 -0
  147. package/build/if-run/types/aggregation.js +6 -0
  148. package/build/{types → if-run/types}/compute.d.ts +12 -8
  149. package/build/if-run/types/compute.js +3 -0
  150. package/build/if-run/types/environment.js +3 -0
  151. package/build/{types → if-run/types}/exhaust-plugin-interface.d.ts +1 -1
  152. package/build/if-run/types/exhaust-plugin-interface.js +3 -0
  153. package/build/if-run/types/explain.d.ts +10 -0
  154. package/build/if-run/types/explain.js +3 -0
  155. package/build/if-run/types/interface.d.ts +3 -0
  156. package/build/if-run/types/interface.js +6 -0
  157. package/build/if-run/types/plugin-storage.js +3 -0
  158. package/build/if-run/types/process-args.d.ts +25 -0
  159. package/build/if-run/types/process-args.js +3 -0
  160. package/build/if-run/types/time-sync.js +3 -0
  161. package/build/{util → if-run/util}/aggregation-helper.d.ts +2 -1
  162. package/build/if-run/util/aggregation-helper.js +47 -0
  163. package/build/if-run/util/args.d.ts +9 -0
  164. package/build/if-run/util/args.js +60 -0
  165. package/build/if-run/util/helpers.d.ts +14 -0
  166. package/build/if-run/util/helpers.js +57 -0
  167. package/build/if-run/util/log-memoize.js +19 -0
  168. package/build/if-run/util/os-checker.js +97 -0
  169. package/build/{util → if-run/util}/plugin-storage.d.ts +1 -1
  170. package/build/if-run/util/plugin-storage.js +34 -0
  171. package/jest.config.js +2 -6
  172. package/manifests/examples/builtins/coefficient/failure-invalid-config-input-param.yml +2 -2
  173. package/manifests/examples/builtins/coefficient/failure-output-param-is-null.yaml +3 -3
  174. package/manifests/examples/builtins/coefficient/success.yml +2 -2
  175. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +3 -3
  176. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +3 -3
  177. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yml +3 -3
  178. package/manifests/examples/builtins/csv-lookup/cloud-metadata/success.yml +3 -3
  179. package/manifests/examples/builtins/csv-lookup/region-metadata/failure-missing-column.yml +3 -3
  180. package/manifests/examples/builtins/csv-lookup/region-metadata/failure-missing-output.yml +3 -3
  181. package/manifests/examples/builtins/csv-lookup/region-metadata/success-renaming.yml +4 -4
  182. package/manifests/examples/builtins/csv-lookup/region-metadata/success.yml +3 -3
  183. package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-missing-input-param.yml +2 -2
  184. package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yml +2 -2
  185. package/manifests/examples/builtins/csv-lookup/tdp-finder/success.yml +2 -2
  186. package/manifests/examples/builtins/divide/failure-denominator-equal-zero.yml +4 -4
  187. package/manifests/examples/builtins/divide/failure-invalid-config-denominator.yml +5 -5
  188. package/manifests/examples/builtins/divide/failure-missing-numerator.yml +4 -4
  189. package/manifests/examples/builtins/divide/success.yml +4 -6
  190. package/manifests/examples/builtins/exponent/success.yml +5 -7
  191. package/manifests/examples/builtins/interpolation/interpolation.yml +2 -2
  192. package/manifests/examples/builtins/interpolation/success.yml +2 -1
  193. package/manifests/examples/builtins/mock-observations/failure-invalid-config-cpu-range.yml +2 -2
  194. package/manifests/examples/builtins/mock-observations/failure-invalid-memory-utilization-range.yml +2 -2
  195. package/manifests/examples/builtins/mock-observations/failure-missing-timestamp-from-param.yml +2 -2
  196. package/manifests/examples/builtins/mock-observations/success.yml +2 -2
  197. package/manifests/examples/builtins/multiply/failure-input-parameter-is-missing.yml +2 -4
  198. package/manifests/examples/builtins/multiply/success-with-multiple-inputs.yml +2 -4
  199. package/manifests/examples/builtins/multiply/success.yml +3 -4
  200. package/manifests/examples/builtins/regex/failure-missing-input-param.yml +2 -4
  201. package/manifests/examples/builtins/regex/failure-not-matching-with-regex.yml +2 -4
  202. package/manifests/examples/builtins/regex/success.yml +2 -4
  203. package/manifests/examples/builtins/sci/failure-invalid-config-value.yml +2 -2
  204. package/manifests/examples/builtins/sci/failure-missing-input-param.yml +3 -2
  205. package/manifests/examples/builtins/sci/success.yml +2 -3
  206. package/manifests/examples/builtins/sci-embodied/failure-invalid-default-emission-value.yml +3 -3
  207. package/manifests/examples/builtins/sci-embodied/failure-missing-expected-lifespan.yml +2 -2
  208. package/manifests/examples/builtins/sci-embodied/success.yml +2 -2
  209. package/manifests/examples/builtins/shell/failure-invalid-command.yml +2 -2
  210. package/manifests/examples/builtins/shell/success.yml +2 -1
  211. package/manifests/examples/builtins/subtract/success.yml +6 -8
  212. package/manifests/examples/builtins/sum/failure-missing-input-param.yml +2 -4
  213. package/manifests/examples/builtins/sum/failure-missing-output-param.yml +3 -5
  214. package/manifests/examples/builtins/sum/success.yml +2 -4
  215. package/manifests/examples/builtins/time-sync/failure-config-start-later-end.yml +3 -3
  216. package/manifests/examples/builtins/time-sync/failure-missing-global-config.yml +3 -3
  217. package/manifests/examples/builtins/time-sync/success.yml +2 -2
  218. package/manifests/examples/{builtins/groupby/failure-invalid-config-group.yml → features/regroup/failure-invalid-regroup.yml} +4 -11
  219. package/manifests/examples/{builtins/groupby → features/regroup}/failure-missing-cloud-instance-type.yml +5 -12
  220. package/manifests/examples/{builtins/groupby → features/regroup}/success.yml +4 -11
  221. package/manifests/examples/pipelines/generics.yml +12 -13
  222. package/manifests/examples/pipelines/instance-metadata.yml +4 -5
  223. package/manifests/examples/pipelines/nesting.yml +157 -50
  224. package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-aggregate.yaml +997 -0
  225. package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-mocks.yaml +1059 -0
  226. package/manifests/examples/pipelines/pipeline-teads-sci.yml +11 -11
  227. package/manifests/examples/pipelines/pipeline-with-aggregate.yml +114 -37
  228. package/manifests/examples/pipelines/pipeline-with-mocks.yml +193 -103
  229. package/manifests/examples/pipelines/scenario-1.yml +34 -0
  230. package/manifests/examples/pipelines/scenario-2.yml +52 -0
  231. package/manifests/examples/pipelines/scenario-3.yml +86 -0
  232. package/manifests/examples/pipelines/scenario-4.yml +46 -0
  233. package/manifests/examples/pipelines/scenario-5.yml +46 -0
  234. package/manifests/examples/pipelines/sci.yml +15 -17
  235. package/manifests/examples/pipelines/teads-curve.yml +7 -6
  236. package/manifests/examples/pipelines/zeros.yml +15 -16
  237. package/manifests/outputs/bugs/aggregation-error-wrong-metric.yaml +51 -59
  238. package/manifests/outputs/bugs/input-error-missing-duration.yaml +14 -16
  239. package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +14 -16
  240. package/manifests/outputs/bugs/pipeline-error-naming-mismatch.yaml +14 -16
  241. package/manifests/outputs/bugs/pipeline-error-uninitialized-plugin.yaml +15 -17
  242. package/manifests/outputs/bugs/pipeline-ordering-error.yaml +23 -26
  243. package/manifests/outputs/bugs/sci-embodied-missing-resources-total.yaml +13 -14
  244. package/manifests/outputs/{plugins → builtins}/coefficient/failure-invalid-config-input-param.yaml +13 -17
  245. package/manifests/outputs/{plugins → builtins}/coefficient/failure-output-param-is-null.yaml +13 -17
  246. package/manifests/outputs/{plugins → builtins}/coefficient/success.yaml +11 -16
  247. package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +76 -0
  248. package/manifests/outputs/{plugins → builtins}/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yaml +16 -19
  249. package/manifests/outputs/{plugins → builtins}/csv-lookup/cloud-metadata/success.yaml +16 -19
  250. package/manifests/outputs/{plugins → builtins}/csv-lookup/region-metadata/failure-missing-column.yaml +14 -15
  251. package/manifests/outputs/{plugins → builtins}/csv-lookup/region-metadata/failure-missing-output.yaml +13 -15
  252. package/manifests/outputs/{plugins → builtins}/csv-lookup/region-metadata/success-renaming.yaml +13 -15
  253. package/manifests/outputs/{plugins → builtins}/csv-lookup/region-metadata/success.yaml +14 -16
  254. package/manifests/outputs/{plugins → builtins}/csv-lookup/tdp-finder/failure-missing-input-param.yaml +13 -16
  255. package/manifests/outputs/{plugins → builtins}/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yaml +13 -15
  256. package/manifests/outputs/{plugins → builtins}/csv-lookup/tdp-finder/success.yaml +13 -15
  257. package/manifests/outputs/{plugins → builtins}/divide/failure-invalid-config-denominator.yaml +13 -17
  258. package/manifests/outputs/{plugins → builtins}/divide/failure-missing-numerator.yaml +13 -15
  259. package/manifests/outputs/{plugins → builtins}/divide/success-denominator-equal-zero.yaml +14 -18
  260. package/manifests/outputs/{plugins → builtins}/divide/success.yaml +14 -18
  261. package/manifests/outputs/{plugins → builtins}/exponent/success.yaml +13 -17
  262. package/manifests/outputs/{plugins → builtins}/interpolation/interpolation.yaml +14 -16
  263. package/manifests/outputs/{plugins → builtins}/interpolation/success.yaml +14 -16
  264. package/manifests/outputs/{plugins → builtins}/mock-observations/failure-invalid-config-cpu-range.yaml +13 -15
  265. package/manifests/outputs/{plugins → builtins}/mock-observations/failure-invalid-memory-utilization-range.yaml +13 -15
  266. package/manifests/outputs/{plugins → builtins}/mock-observations/failure-missing-timestamp-from-param.yaml +13 -15
  267. package/manifests/outputs/builtins/mock-observations/success.yaml +358 -0
  268. package/manifests/outputs/{plugins → builtins}/multiply/failure-input-parameter-is-missing.yaml +13 -17
  269. package/manifests/outputs/{plugins → builtins}/multiply/success-with-multiple-inputs.yaml +13 -17
  270. package/manifests/outputs/{plugins → builtins}/multiply/success.yaml +13 -17
  271. package/manifests/outputs/{plugins → builtins}/regex/failure-missing-input-param.yaml +13 -17
  272. package/manifests/outputs/{plugins → builtins}/regex/success.yaml +14 -19
  273. package/manifests/outputs/{plugins → builtins}/sci/failure-invalid-config-value.yaml +14 -16
  274. package/manifests/outputs/{plugins → builtins}/sci/failure-missing-input-param.yaml +13 -15
  275. package/manifests/outputs/{plugins/sci/success.yml.yaml → builtins/sci/success.yaml} +13 -16
  276. package/manifests/outputs/{plugins → builtins}/sci-embodied/failure-invalid-default-emission-value.yaml +13 -15
  277. package/manifests/outputs/{plugins → builtins}/sci-embodied/failure-missing-expected-lifespan.yaml +13 -15
  278. package/manifests/outputs/{plugins → builtins}/sci-embodied/success.yaml +13 -15
  279. package/manifests/outputs/{plugins → builtins}/shell/failure-invalid-command.yaml +14 -16
  280. package/manifests/outputs/{plugins → builtins}/shell/success.yaml +14 -16
  281. package/manifests/outputs/{plugins → builtins}/subtract/success.yaml +13 -17
  282. package/manifests/outputs/{plugins → builtins}/sum/failure-missing-input-param.yaml +13 -17
  283. package/manifests/outputs/{plugins → builtins}/sum/failure-missing-output-param.yaml +13 -17
  284. package/manifests/outputs/{plugins → builtins}/sum/success.yaml +13 -17
  285. package/manifests/outputs/{plugins → builtins}/time-sync/failure-config-start-later-end.yaml +20 -23
  286. package/manifests/outputs/{plugins → builtins}/time-sync/success.yaml +38 -35
  287. package/manifests/outputs/features/aggregate-failure-invalid-metrics.yaml +17 -18
  288. package/manifests/outputs/features/aggregate-failure-missing-metric-in-inputs.yaml +17 -18
  289. package/manifests/outputs/features/aggregate-horizontal.yaml +27 -23
  290. package/manifests/outputs/features/aggregate-vertical.yaml +33 -29
  291. package/manifests/outputs/features/aggregate.yaml +33 -29
  292. package/manifests/outputs/{plugins/groupby/failure-invalid-config-group.yaml → features/failure-invalid-regroup.yaml} +16 -25
  293. package/manifests/outputs/{plugins/groupby → features}/failure-missing-cloud-instance-type.yaml +16 -25
  294. package/manifests/outputs/pipelines/cloud-metadata-divide.yaml +14 -18
  295. package/manifests/outputs/pipelines/generics.yaml +239 -0
  296. package/manifests/outputs/pipelines/instance-metadata.yaml +98 -0
  297. package/manifests/outputs/pipelines/mock-obs-time-sync.yaml +246 -147
  298. package/manifests/outputs/pipelines/nesting.yaml +1799 -0
  299. package/manifests/outputs/pipelines/pipeline-teads-sci.yaml +276 -0
  300. package/manifests/outputs/pipelines/sci.yaml +297 -0
  301. package/manifests/outputs/pipelines/teads-curve.yaml +188 -0
  302. package/manifests/outputs/pipelines/zeros.yaml +198 -0
  303. package/package.json +15 -16
  304. package/src/__mocks__/mock-manifest.yaml +2 -3
  305. package/src/{config → if-env/config}/env-template.yml +2 -3
  306. package/src/{builtins → if-run/builtins}/coefficient/README.md +31 -9
  307. package/src/{builtins → if-run/builtins}/copy-param/README.md +30 -11
  308. package/src/{builtins → if-run/builtins}/csv-lookup/README.md +32 -20
  309. package/src/{builtins → if-run/builtins}/divide/README.md +21 -8
  310. package/src/{builtins → if-run/builtins}/exponent/README.md +19 -8
  311. package/src/{builtins → if-run/builtins}/interpolation/README.md +21 -6
  312. package/src/{builtins → if-run/builtins}/mock-observations/README.md +18 -4
  313. package/src/{builtins → if-run/builtins}/multiply/README.md +20 -8
  314. package/src/{builtins → if-run/builtins}/regex/README.md +19 -9
  315. package/src/{builtins → if-run/builtins}/sci/README.md +19 -9
  316. package/src/{builtins → if-run/builtins}/sci-embodied/README.md +17 -5
  317. package/src/{builtins → if-run/builtins}/shell/README.md +19 -7
  318. package/src/{builtins → if-run/builtins}/subtract/README.md +17 -6
  319. package/src/{builtins → if-run/builtins}/sum/README.md +34 -8
  320. package/src/if-run/builtins/time-sync/README.md +267 -0
  321. package/build/builtins/coefficient/index.d.ts +0 -2
  322. package/build/builtins/coefficient/index.js +0 -65
  323. package/build/builtins/copy-param/index.d.ts +0 -2
  324. package/build/builtins/copy-param/index.js +0 -68
  325. package/build/builtins/csv-lookup/index.d.ts +0 -2
  326. package/build/builtins/csv-lookup/index.js +0 -188
  327. package/build/builtins/divide/index.d.ts +0 -2
  328. package/build/builtins/divide/index.js +0 -78
  329. package/build/builtins/exponent/index.d.ts +0 -2
  330. package/build/builtins/exponent/index.js +0 -58
  331. package/build/builtins/export-csv-raw.d.ts +0 -4
  332. package/build/builtins/export-csv-raw.js +0 -132
  333. package/build/builtins/export-csv.d.ts +0 -10
  334. package/build/builtins/export-csv.js +0 -96
  335. package/build/builtins/export-yaml.js +0 -30
  336. package/build/builtins/group-by.d.ts +0 -5
  337. package/build/builtins/group-by.js +0 -71
  338. package/build/builtins/interpolation/index.d.ts +0 -2
  339. package/build/builtins/interpolation/index.js +0 -148
  340. package/build/builtins/mock-observations/helpers/common-generator.js +0 -29
  341. package/build/builtins/mock-observations/helpers/rand-int-generator.js +0 -48
  342. package/build/builtins/mock-observations/index.d.ts +0 -2
  343. package/build/builtins/mock-observations/index.js +0 -114
  344. package/build/builtins/mock-observations/interfaces/index.js +0 -3
  345. package/build/builtins/multiply/index.d.ts +0 -2
  346. package/build/builtins/multiply/index.js +0 -57
  347. package/build/builtins/regex/index.d.ts +0 -2
  348. package/build/builtins/regex/index.js +0 -74
  349. package/build/builtins/sci/config.js +0 -44
  350. package/build/builtins/sci/index.d.ts +0 -2
  351. package/build/builtins/sci/index.js +0 -70
  352. package/build/builtins/sci-embodied/index.d.ts +0 -2
  353. package/build/builtins/sci-embodied/index.js +0 -114
  354. package/build/builtins/shell/index.d.ts +0 -2
  355. package/build/builtins/shell/index.js +0 -58
  356. package/build/builtins/subtract/index.d.ts +0 -2
  357. package/build/builtins/subtract/index.js +0 -59
  358. package/build/builtins/sum/index.d.ts +0 -2
  359. package/build/builtins/sum/index.js +0 -64
  360. package/build/builtins/time-sync.d.ts +0 -2
  361. package/build/builtins/time-sync.js +0 -300
  362. package/build/check.js +0 -95
  363. package/build/config/config.d.ts +0 -29
  364. package/build/config/config.js +0 -147
  365. package/build/config/index.js +0 -10
  366. package/build/config/params.d.ts +0 -2
  367. package/build/config/params.js +0 -196
  368. package/build/config/strings.js +0 -105
  369. package/build/diff.js +0 -46
  370. package/build/env.js +0 -38
  371. package/build/index.js +0 -48
  372. package/build/lib/aggregate.d.ts +0 -6
  373. package/build/lib/aggregate.js +0 -77
  374. package/build/lib/compare.js +0 -56
  375. package/build/lib/compute.js +0 -91
  376. package/build/lib/environment.js +0 -75
  377. package/build/lib/exhaust.js +0 -53
  378. package/build/lib/initialize.d.ts +0 -6
  379. package/build/lib/initialize.js +0 -101
  380. package/build/lib/load.js +0 -70
  381. package/build/lib/parameterize.d.ts +0 -6
  382. package/build/lib/parameterize.js +0 -55
  383. package/build/types/aggregation.d.ts +0 -2
  384. package/build/types/aggregation.js +0 -5
  385. package/build/types/compute.js +0 -3
  386. package/build/types/environment.js +0 -3
  387. package/build/types/exhaust-plugin-interface.js +0 -3
  388. package/build/types/if-env.js +0 -3
  389. package/build/types/interface.d.ts +0 -4
  390. package/build/types/interface.js +0 -8
  391. package/build/types/lib/compare.js +0 -3
  392. package/build/types/manifest.js +0 -3
  393. package/build/types/npm.js +0 -3
  394. package/build/types/parameters.d.ts +0 -5
  395. package/build/types/parameters.js +0 -5
  396. package/build/types/plugin-storage.js +0 -3
  397. package/build/types/process-args.d.ts +0 -33
  398. package/build/types/process-args.js +0 -3
  399. package/build/types/time-sync.js +0 -3
  400. package/build/types/util/args.js +0 -3
  401. package/build/util/aggregation-helper.js +0 -55
  402. package/build/util/args.d.ts +0 -37
  403. package/build/util/args.js +0 -205
  404. package/build/util/debug-logger.js +0 -118
  405. package/build/util/fs.js +0 -94
  406. package/build/util/helpers.d.ts +0 -57
  407. package/build/util/helpers.js +0 -251
  408. package/build/util/json.d.ts +0 -4
  409. package/build/util/json.js +0 -36
  410. package/build/util/log-memoize.js +0 -19
  411. package/build/util/npm.js +0 -152
  412. package/build/util/os-checker.js +0 -97
  413. package/build/util/plugin-storage.js +0 -34
  414. package/build/util/validations.js +0 -124
  415. package/build/util/yaml.js +0 -59
  416. package/manifests/outputs/bugs/initialize-error-no-config.yaml +0 -78
  417. package/manifests/outputs/bugs/initialize-error-no-path.yaml +0 -91
  418. package/manifests/outputs/bugs/initialize-error-no-plugins.yaml +0 -74
  419. package/manifests/outputs/divide.yaml +0 -93
  420. package/manifests/outputs/pipelines/mock-obs-group-by-cloud-meta.yaml +0 -645
  421. package/manifests/outputs/pipelines/mock-obs-groupby.yaml +0 -178
  422. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +0 -27
  423. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +0 -27
  424. package/manifests/outputs/plugins/groupby/success.yaml +0 -101
  425. package/manifests/outputs/plugins/mock-observations/success.yaml +0 -220
  426. package/manifests/outputs/plugins/regex/failure-not-matching-with-regex.yaml +0 -76
  427. package/manifests/outputs/plugins/time-sync/failure-missing-global-config.yaml +0 -78
  428. package/src/__tests__/integration/templates/integration.yaml +0 -16
  429. package/src/builtins/README.md +0 -848
  430. /package/build/{util → common/util}/debug-logger.d.ts +0 -0
  431. /package/build/{util → common/util}/fs.d.ts +0 -0
  432. /package/build/{util → common/util}/logger.d.ts +0 -0
  433. /package/build/{util → common/util}/yaml.d.ts +0 -0
  434. /package/build/{index.d.ts → if-check/index.d.ts} +0 -0
  435. /package/build/{check.d.ts → if-csv/index.d.ts} +0 -0
  436. /package/build/{diff.d.ts → if-diff/index.d.ts} +0 -0
  437. /package/build/{types/util → if-diff/types}/args.d.ts +0 -0
  438. /package/build/{types/lib → if-diff/types}/compare.d.ts +0 -0
  439. /package/build/{env.d.ts → if-env/index.d.ts} +0 -0
  440. /package/build/{types → if-env/types}/if-env.d.ts +0 -0
  441. /package/build/{types → if-env/types}/npm.d.ts +0 -0
  442. /package/build/{builtins → if-run/builtins}/mock-observations/helpers/common-generator.d.ts +0 -0
  443. /package/build/{builtins → if-run/builtins}/mock-observations/helpers/rand-int-generator.d.ts +0 -0
  444. /package/build/{builtins → if-run/builtins}/mock-observations/interfaces/index.d.ts +0 -0
  445. /package/build/{builtins → if-run/builtins}/sci/config.d.ts +0 -0
  446. /package/build/{lib → if-run/lib}/compute.d.ts +0 -0
  447. /package/build/{types → if-run/types}/environment.d.ts +0 -0
  448. /package/build/{types → if-run/types}/plugin-storage.d.ts +0 -0
  449. /package/build/{types → if-run/types}/time-sync.d.ts +0 -0
  450. /package/build/{util → if-run/util}/log-memoize.d.ts +0 -0
  451. /package/build/{util → if-run/util}/os-checker.d.ts +0 -0
@@ -1,11 +1,7 @@
1
- import { ManifestParameter } from '../types/manifest';
2
1
  export declare const STRINGS: {
3
- MANIFEST_IS_MISSING: string;
4
2
  MISSING_METHOD: string;
5
3
  MISSING_PATH: string;
6
4
  UNSUPPORTED_PLUGIN: string;
7
- OVERRIDE_WARNING: string;
8
- DISCLAIMER_MESSAGE: string;
9
5
  NOT_NATIVE_PLUGIN: (path: string) => string;
10
6
  INVALID_MODULE_PATH: (path: string, error?: any) => string;
11
7
  INVALID_TIME_NORMALIZATION: string;
@@ -15,55 +11,19 @@ export declare const STRINGS: {
15
11
  AVOIDING_PADDING_BY_EDGES: (start: boolean, end: boolean) => string;
16
12
  INVALID_AGGREGATION_METHOD: (metric: string) => string;
17
13
  METRIC_MISSING: (metric: string, index: number) => string;
18
- INVALID_GROUP_BY: (type: string) => string;
19
- REJECTING_OVERRIDE: (param: ManifestParameter) => string;
14
+ INVALID_GROUP_KEY: (key: string) => string;
15
+ REGROUP_ERROR: string;
20
16
  INVALID_EXHAUST_PLUGIN: (pluginName: string) => string;
21
17
  UNKNOWN_PARAM: (name: string) => string;
22
18
  NOT_INITALIZED_PLUGIN: (name: string) => string;
23
19
  NO_OUTPUT: string;
24
- SOURCE_IS_NOT_YAML: string;
25
- TARGET_IS_NOT_YAML: string;
26
- INVALID_TARGET: string;
27
- INVALID_SOURCE: string;
28
20
  UNSUPPORTED_ERROR: (errorName: string) => string;
29
- /** Plugin messages */
30
- MISSING_GLOBAL_CONFIG: string;
31
- MISSING_INPUT_DATA: (param: string) => string;
32
- MANIFEST_NOT_FOUND: string;
33
- INITIALIZING_PACKAGE_JSON: string;
34
- INSTALLING_NPM_PACKAGES: string;
35
- NOT_NUMERIC_VALUE: (str: any) => string;
36
- MISSING_FUNCTIONAL_UNIT_CONFIG: string;
37
- MISSING_FUNCTIONAL_UNIT_INPUT: string;
38
- REGEX_MISMATCH: (input: any, match: string) => string;
39
- SCI_EMBODIED_ERROR: (unit: string) => string;
40
- MISSING_MIN_MAX: string;
41
- INVALID_MIN_MAX: (name: string) => string;
42
- FILE_FETCH_FAILED: (filepath: string, message: string) => string;
43
- FILE_READ_FAILED: (filepath: string, error: string) => string;
44
- MISSING_CSV_COLUMN: (columnName: string) => string;
45
- NO_QUERY_DATA: string;
46
- INVALID_DATE_TYPE: (date: any) => string;
47
- INVALID_OBSERVATION_OVERLAP: string;
48
- SCI_MISSING_FN_UNIT: (functionalUnit: string) => string;
49
- /** Exhaust messages */
50
- OUTPUT_REQUIRED: string;
51
- CSV_EXPORT: string;
52
- WRITE_CSV_ERROR: (outputPath: string, error: any) => string;
53
- INVALID_NAME: string;
54
- START_LOWER_END: string;
55
- TIMESTAMP_REQUIRED: (index: number) => string;
56
- INVALID_DATETIME: (index: number) => string;
57
- X_Y_EQUAL: string;
58
- ARRAY_LENGTH_NON_EMPTY: string;
59
- WITHIN_THE_RANGE: string;
60
21
  /** Debugging logs */
61
22
  STARTING_IF: string;
62
23
  EXITING_IF: string;
63
24
  LOADING_MANIFEST: string;
64
25
  VALIDATING_MANIFEST: string;
65
26
  CAPTURING_RUNTIME_ENVIRONMENT_DATA: string;
66
- SYNCING_PARAMETERS: string;
67
27
  CHECKING_AGGREGATION_METHOD: (unitName: string) => string;
68
28
  INITIALIZING_PLUGINS: string;
69
29
  INITIALIZING_PLUGIN: (pluginName: string) => string;
@@ -74,17 +34,31 @@ export declare const STRINGS: {
74
34
  AGGREGATING_NODE: (nodeName: string) => string;
75
35
  PREPARING_OUTPUT_DATA: string;
76
36
  EXPORTING_TO_YAML_FILE: (savepath: string) => string;
77
- EXPORTING_TO_CSV_FILE: (savepath: string) => string;
78
- EXPORTING_RAW_CSV_FILE: (savepath: string) => string;
79
- CHECKING: string;
80
- IF_CHECK_FLAGS_MISSING: string;
81
- DIRECTORY_NOT_FOUND: string;
82
- DIRECTORY_YAML_FILES_NOT_FOUND: string;
83
- IF_CHECK_EXECUTING: (filename: string) => string;
84
- IF_CHECK_VERIFICATION_FAILURES: string;
85
- IF_CHECK_FAILED: (filename: string) => string;
86
- IF_CHECK_VERIFIED: (filename: string) => string;
87
- IF_CHECK_SUMMARY_ERROR_MESSAGE: (filename: string, message: string) => string;
88
- IF_CHECK_SUMMARY_LOG: (passedCount: number, totalCount: number) => string;
37
+ EMPTY_PIPELINE: string;
38
+ /** Exhaust messages */
39
+ OUTPUT_REQUIRED: string;
40
+ /** Plugins messages */
41
+ INVALID_NAME: string;
42
+ START_LOWER_END: string;
43
+ TIMESTAMP_REQUIRED: (index: number) => string;
44
+ INVALID_DATETIME: (index: number) => string;
45
+ X_Y_EQUAL: string;
46
+ ARRAY_LENGTH_NON_EMPTY: string;
47
+ WITHIN_THE_RANGE: string;
48
+ MISSING_CSV_COLUMN: (columnName: string) => string;
49
+ NO_QUERY_DATA: string;
50
+ INVALID_DATE_TYPE: (date: any) => string;
51
+ INVALID_OBSERVATION_OVERLAP: string;
52
+ SCI_MISSING_FN_UNIT: (functionalUnit: string) => string;
53
+ MISSING_FUNCTIONAL_UNIT_CONFIG: string;
54
+ MISSING_FUNCTIONAL_UNIT_INPUT: string;
55
+ REGEX_MISMATCH: (input: any, match: string) => string;
56
+ SCI_EMBODIED_ERROR: (unit: string) => string;
57
+ MISSING_MIN_MAX: string;
58
+ INVALID_MIN_MAX: (name: string) => string;
59
+ FILE_FETCH_FAILED: (filepath: string, message: string) => string;
60
+ FILE_READ_FAILED: (filepath: string, error: string) => string;
89
61
  ZERO_DIVISION: (moduleName: string, index: number) => string;
62
+ MISSING_GLOBAL_CONFIG: string;
63
+ MISSING_INPUT_DATA: (param: string) => string;
90
64
  };
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRINGS = void 0;
4
+ exports.STRINGS = {
5
+ MISSING_METHOD: "Initalization param 'method' is missing.",
6
+ MISSING_PATH: "Initalization param 'path' is missing.",
7
+ UNSUPPORTED_PLUGIN: "Plugin interface doesn't implement 'execute' or 'metadata' methods.",
8
+ NOT_NATIVE_PLUGIN: (path) => `
9
+ You are using plugin ${path} which is not part of the Impact Framework standard library. You should do your own research to ensure the plugins are up to date and accurate. They may not be actively maintained.`,
10
+ INVALID_MODULE_PATH: (path, error) => `Provided module \`${path}\` is invalid or not found. ${error ?? ''}
11
+ `,
12
+ INVALID_TIME_NORMALIZATION: 'Start time or end time is missing.',
13
+ UNEXPECTED_TIME_CONFIG: 'Unexpected node-level config provided for time-sync plugin.',
14
+ INVALID_TIME_INTERVAL: 'Interval is missing.',
15
+ AVOIDING_PADDING: (description) => `Avoiding padding at ${description}`,
16
+ AVOIDING_PADDING_BY_EDGES: (start, end) => `Avoiding padding at ${start && end ? 'start and end' : start ? 'start' : 'end'}`,
17
+ INVALID_AGGREGATION_METHOD: (metric) => `Aggregation is not possible for given ${metric} since method is 'none'.`,
18
+ METRIC_MISSING: (metric, index) => `Aggregation metric ${metric} is not found in inputs[${index}].`,
19
+ INVALID_GROUP_KEY: (key) => `Invalid group ${key}.`,
20
+ REGROUP_ERROR: 'not an array or should contain at least one key',
21
+ INVALID_EXHAUST_PLUGIN: (pluginName) => `Invalid exhaust plugin: ${pluginName}.`,
22
+ UNKNOWN_PARAM: (name) => `Unknown parameter: ${name}. Omitting from the output.`,
23
+ NOT_INITALIZED_PLUGIN: (name) => `Not initalized plugin: ${name}. Check if ${name} is in 'manifest.initalize.plugins'.`,
24
+ NO_OUTPUT: `
25
+ You have not added an output command:
26
+ --output <savepath>: will save your output data to the given filepath (do not provide file extension)
27
+ Note that for the '--output' option you also need to define the output type in your manifest file. See https://if.greensoftware.foundation/major-concepts/manifest-file#initialize`,
28
+ UNSUPPORTED_ERROR: (errorName) => `UnsupportedErrorClass: plugin threw error class: ${errorName} that is not recognized by Impact Framework`,
29
+ /** Debugging logs */
30
+ STARTING_IF: 'Starting IF',
31
+ EXITING_IF: 'Exiting IF',
32
+ LOADING_MANIFEST: 'Loading manifest',
33
+ VALIDATING_MANIFEST: 'Validating manifest',
34
+ CAPTURING_RUNTIME_ENVIRONMENT_DATA: 'Capturing runtime environment data',
35
+ CHECKING_AGGREGATION_METHOD: (unitName) => `Checking aggregation method for ${unitName}`,
36
+ INITIALIZING_PLUGINS: 'Initializing plugins',
37
+ INITIALIZING_PLUGIN: (pluginName) => `Initializing ${pluginName}`,
38
+ LOADING_PLUGIN_FROM_PATH: (pluginName, path) => `Loading ${pluginName} from ${path}`,
39
+ COMPUTING_PIPELINE_FOR_NODE: (nodeName) => `Computing pipeline for \`${nodeName}\``,
40
+ MERGING_DEFAULTS_WITH_INPUT_DATA: 'Merging defaults with input data',
41
+ AGGREGATING_OUTPUTS: 'Aggregating outputs',
42
+ AGGREGATING_NODE: (nodeName) => `Aggregating node ${nodeName}`,
43
+ PREPARING_OUTPUT_DATA: 'Preparing output data',
44
+ EXPORTING_TO_YAML_FILE: (savepath) => `Exporting to yaml file: ${savepath}`,
45
+ EMPTY_PIPELINE: `You're using an old style manifest. Please update for phased execution. More information can be found here:
46
+ https://if.greensoftware.foundation/major-concepts/manifest-file`,
47
+ /** Exhaust messages */
48
+ OUTPUT_REQUIRED: 'Output path is required, please make sure output is configured properly.',
49
+ /** Plugins messages */
50
+ INVALID_NAME: '`name` global config parameter is empty or contains all spaces',
51
+ START_LOWER_END: '`start-time` should be lower than `end-time`',
52
+ TIMESTAMP_REQUIRED: (index) => `required in input[${index}]`,
53
+ INVALID_DATETIME: (index) => `invalid datetime in input[${index}]`,
54
+ X_Y_EQUAL: 'The length of `x` and `y` should be equal',
55
+ ARRAY_LENGTH_NON_EMPTY: 'the length of the input arrays must be greater than 1',
56
+ WITHIN_THE_RANGE: 'The target x value must be within the range of the given x values',
57
+ MISSING_CSV_COLUMN: (columnName) => `There is no column with the name: ${columnName}.`,
58
+ NO_QUERY_DATA: 'One or more of the given query parameters are not found in the target CSV file column headers.',
59
+ INVALID_DATE_TYPE: (date) => `Unexpected date datatype: ${typeof date}: ${date}`,
60
+ INVALID_OBSERVATION_OVERLAP: 'Observation timestamps overlap, please check inputs.',
61
+ SCI_MISSING_FN_UNIT: (functionalUnit) => `'carbon' and ${functionalUnit} should be present in your input data.`,
62
+ MISSING_FUNCTIONAL_UNIT_CONFIG: '`functional-unit` should be provided in your global config',
63
+ MISSING_FUNCTIONAL_UNIT_INPUT: '`functional-unit` value is missing from input data or it is not a positive integer',
64
+ REGEX_MISMATCH: (input, match) => `\`${input}\` does not match the ${match} regex expression`,
65
+ SCI_EMBODIED_ERROR: (unit) => `invalid number. please provide it as \`${unit}\` to input`,
66
+ MISSING_MIN_MAX: 'Config is missing min or max value',
67
+ INVALID_MIN_MAX: (name) => `Min value should not be greater than or equal to max value of ${name}`,
68
+ FILE_FETCH_FAILED: (filepath, message) => `Failed fetching the file: ${filepath}.
69
+ ${message}`,
70
+ FILE_READ_FAILED: (filepath, error) => `Failed reading the file: ${filepath}.
71
+ ${error}`,
72
+ ZERO_DIVISION: (moduleName, index) => `-- SKIPPING -- DivisionByZero: you are attempting to divide by zero in ${moduleName} plugin : inputs[${index}]\n`,
73
+ MISSING_GLOBAL_CONFIG: 'Global config is not provided.',
74
+ MISSING_INPUT_DATA: (param) => `${param} is missing from the input array, or has nullish value.`,
75
+ };
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vY29uZmlnL3N0cmluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxPQUFPLEdBQUc7SUFDckIsY0FBYyxFQUFFLDBDQUEwQztJQUMxRCxZQUFZLEVBQUUsd0NBQXdDO0lBQ3RELGtCQUFrQixFQUNoQixxRUFBcUU7SUFDdkUsaUJBQWlCLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUNsQzt5QkFDcUIsSUFBSSxzTEFBc0w7SUFDak4sbUJBQW1CLEVBQUUsQ0FBQyxJQUFZLEVBQUUsS0FBVyxFQUFFLEVBQUUsQ0FDakQscUJBQXFCLElBQUksK0JBQStCLEtBQUssSUFBSSxFQUFFO0NBQ3RFO0lBQ0MsMEJBQTBCLEVBQUUsb0NBQW9DO0lBQ2hFLHNCQUFzQixFQUNwQiw2REFBNkQ7SUFDL0QscUJBQXFCLEVBQUUsc0JBQXNCO0lBQzdDLGdCQUFnQixFQUFFLENBQUMsV0FBbUIsRUFBRSxFQUFFLENBQ3hDLHVCQUF1QixXQUFXLEVBQUU7SUFDdEMseUJBQXlCLEVBQUUsQ0FBQyxLQUFjLEVBQUUsR0FBWSxFQUFFLEVBQUUsQ0FDMUQsdUJBQ0UsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FDckQsRUFBRTtJQUNKLDBCQUEwQixFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FDN0MseUNBQXlDLE1BQU0sMEJBQTBCO0lBQzNFLGNBQWMsRUFBRSxDQUFDLE1BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUNoRCxzQkFBc0IsTUFBTSwyQkFBMkIsS0FBSyxJQUFJO0lBQ2xFLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxHQUFHO0lBQzNELGFBQWEsRUFBRSxpREFBaUQ7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QUE2QixRQUFRO0VBQzFDLE9BQU8sRUFBRTtJQUNULGdCQUFnQixFQUFFLENBQ2hCLFFBQWdCLEVBQ2hCLEtBQWEsRUFDYixFQUFFLENBQUMsNEJBQTRCLFFBQVE7RUFDekMsS0FBSyxFQUFFO0lBQ1AsYUFBYSxFQUFFLENBQUMsVUFBa0IsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUNuRCwwRUFBMEUsVUFBVSxvQkFBb0IsS0FBSyxLQUFLO0lBQ3BILHFCQUFxQixFQUFFLGdDQUFnQztJQUN2RCxrQkFBa0IsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQ3BDLEdBQUcsS0FBSyx5REFBeUQ7Q0FDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTVFJJTkdTID0ge1xuICBNSVNTSU5HX01FVEhPRDogXCJJbml0YWxpemF0aW9uIHBhcmFtICdtZXRob2QnIGlzIG1pc3NpbmcuXCIsXG4gIE1JU1NJTkdfUEFUSDogXCJJbml0YWxpemF0aW9uIHBhcmFtICdwYXRoJyBpcyBtaXNzaW5nLlwiLFxuICBVTlNVUFBPUlRFRF9QTFVHSU46XG4gICAgXCJQbHVnaW4gaW50ZXJmYWNlIGRvZXNuJ3QgaW1wbGVtZW50ICdleGVjdXRlJyBvciAnbWV0YWRhdGEnIG1ldGhvZHMuXCIsXG4gIE5PVF9OQVRJVkVfUExVR0lOOiAocGF0aDogc3RyaW5nKSA9PlxuICAgIGBcbiAgWW91IGFyZSB1c2luZyBwbHVnaW4gJHtwYXRofSB3aGljaCBpcyBub3QgcGFydCBvZiB0aGUgSW1wYWN0IEZyYW1ld29yayBzdGFuZGFyZCBsaWJyYXJ5LiBZb3Ugc2hvdWxkIGRvIHlvdXIgb3duIHJlc2VhcmNoIHRvIGVuc3VyZSB0aGUgcGx1Z2lucyBhcmUgdXAgdG8gZGF0ZSBhbmQgYWNjdXJhdGUuIFRoZXkgbWF5IG5vdCBiZSBhY3RpdmVseSBtYWludGFpbmVkLmAsXG4gIElOVkFMSURfTU9EVUxFX1BBVEg6IChwYXRoOiBzdHJpbmcsIGVycm9yPzogYW55KSA9PlxuICAgIGBQcm92aWRlZCBtb2R1bGUgXFxgJHtwYXRofVxcYCBpcyBpbnZhbGlkIG9yIG5vdCBmb3VuZC4gJHtlcnJvciA/PyAnJ31cbmAsXG4gIElOVkFMSURfVElNRV9OT1JNQUxJWkFUSU9OOiAnU3RhcnQgdGltZSBvciBlbmQgdGltZSBpcyBtaXNzaW5nLicsXG4gIFVORVhQRUNURURfVElNRV9DT05GSUc6XG4gICAgJ1VuZXhwZWN0ZWQgbm9kZS1sZXZlbCBjb25maWcgcHJvdmlkZWQgZm9yIHRpbWUtc3luYyBwbHVnaW4uJyxcbiAgSU5WQUxJRF9USU1FX0lOVEVSVkFMOiAnSW50ZXJ2YWwgaXMgbWlzc2luZy4nLFxuICBBVk9JRElOR19QQURESU5HOiAoZGVzY3JpcHRpb246IHN0cmluZykgPT5cbiAgICBgQXZvaWRpbmcgcGFkZGluZyBhdCAke2Rlc2NyaXB0aW9ufWAsXG4gIEFWT0lESU5HX1BBRERJTkdfQllfRURHRVM6IChzdGFydDogYm9vbGVhbiwgZW5kOiBib29sZWFuKSA9PlxuICAgIGBBdm9pZGluZyBwYWRkaW5nIGF0ICR7XG4gICAgICBzdGFydCAmJiBlbmQgPyAnc3RhcnQgYW5kIGVuZCcgOiBzdGFydCA/ICdzdGFydCcgOiAnZW5kJ1xuICAgIH1gLFxuICBJTlZBTElEX0FHR1JFR0FUSU9OX01FVEhPRDogKG1ldHJpYzogc3RyaW5nKSA9PlxuICAgIGBBZ2dyZWdhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIGdpdmVuICR7bWV0cmljfSBzaW5jZSBtZXRob2QgaXMgJ25vbmUnLmAsXG4gIE1FVFJJQ19NSVNTSU5HOiAobWV0cmljOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgYEFnZ3JlZ2F0aW9uIG1ldHJpYyAke21ldHJpY30gaXMgbm90IGZvdW5kIGluIGlucHV0c1ske2luZGV4fV0uYCxcbiAgSU5WQUxJRF9HUk9VUF9LRVk6IChrZXk6IHN0cmluZykgPT4gYEludmFsaWQgZ3JvdXAgJHtrZXl9LmAsXG4gIFJFR1JPVVBfRVJST1I6ICdub3QgYW4gYXJyYXkgb3Igc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3Qgb25lIGtleScsXG4gIElOVkFMSURfRVhIQVVTVF9QTFVHSU46IChwbHVnaW5OYW1lOiBzdHJpbmcpID0+XG4gICAgYEludmFsaWQgZXhoYXVzdCBwbHVnaW46ICR7cGx1Z2luTmFtZX0uYCxcbiAgVU5LTk9XTl9QQVJBTTogKG5hbWU6IHN0cmluZykgPT5cbiAgICBgVW5rbm93biBwYXJhbWV0ZXI6ICR7bmFtZX0uIE9taXR0aW5nIGZyb20gdGhlIG91dHB1dC5gLFxuICBOT1RfSU5JVEFMSVpFRF9QTFVHSU46IChuYW1lOiBzdHJpbmcpID0+XG4gICAgYE5vdCBpbml0YWxpemVkIHBsdWdpbjogJHtuYW1lfS4gQ2hlY2sgaWYgJHtuYW1lfSBpcyBpbiAnbWFuaWZlc3QuaW5pdGFsaXplLnBsdWdpbnMnLmAsXG4gIE5PX09VVFBVVDogYFxuWW91IGhhdmUgbm90IGFkZGVkIGFuIG91dHB1dCBjb21tYW5kOiBcbi0tb3V0cHV0IDxzYXZlcGF0aD46IHdpbGwgc2F2ZSB5b3VyIG91dHB1dCBkYXRhIHRvIHRoZSBnaXZlbiBmaWxlcGF0aCAoZG8gbm90IHByb3ZpZGUgZmlsZSBleHRlbnNpb24pXG5Ob3RlIHRoYXQgZm9yIHRoZSAnLS1vdXRwdXQnIG9wdGlvbiB5b3UgYWxzbyBuZWVkIHRvIGRlZmluZSB0aGUgb3V0cHV0IHR5cGUgaW4geW91ciBtYW5pZmVzdCBmaWxlLiBTZWUgaHR0cHM6Ly9pZi5ncmVlbnNvZnR3YXJlLmZvdW5kYXRpb24vbWFqb3ItY29uY2VwdHMvbWFuaWZlc3QtZmlsZSNpbml0aWFsaXplYCxcbiAgVU5TVVBQT1JURURfRVJST1I6IChlcnJvck5hbWU6IHN0cmluZykgPT5cbiAgICBgVW5zdXBwb3J0ZWRFcnJvckNsYXNzOiBwbHVnaW4gdGhyZXcgZXJyb3IgY2xhc3M6ICR7ZXJyb3JOYW1lfSB0aGF0IGlzIG5vdCByZWNvZ25pemVkIGJ5IEltcGFjdCBGcmFtZXdvcmtgLFxuICAvKiogRGVidWdnaW5nIGxvZ3MgKi9cbiAgU1RBUlRJTkdfSUY6ICdTdGFydGluZyBJRicsXG4gIEVYSVRJTkdfSUY6ICdFeGl0aW5nIElGJyxcbiAgTE9BRElOR19NQU5JRkVTVDogJ0xvYWRpbmcgbWFuaWZlc3QnLFxuICBWQUxJREFUSU5HX01BTklGRVNUOiAnVmFsaWRhdGluZyBtYW5pZmVzdCcsXG4gIENBUFRVUklOR19SVU5USU1FX0VOVklST05NRU5UX0RBVEE6ICdDYXB0dXJpbmcgcnVudGltZSBlbnZpcm9ubWVudCBkYXRhJyxcbiAgQ0hFQ0tJTkdfQUdHUkVHQVRJT05fTUVUSE9EOiAodW5pdE5hbWU6IHN0cmluZykgPT5cbiAgICBgQ2hlY2tpbmcgYWdncmVnYXRpb24gbWV0aG9kIGZvciAke3VuaXROYW1lfWAsXG4gIElOSVRJQUxJWklOR19QTFVHSU5TOiAnSW5pdGlhbGl6aW5nIHBsdWdpbnMnLFxuICBJTklUSUFMSVpJTkdfUExVR0lOOiAocGx1Z2luTmFtZTogc3RyaW5nKSA9PiBgSW5pdGlhbGl6aW5nICR7cGx1Z2luTmFtZX1gLFxuICBMT0FESU5HX1BMVUdJTl9GUk9NX1BBVEg6IChwbHVnaW5OYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZykgPT5cbiAgICBgTG9hZGluZyAke3BsdWdpbk5hbWV9IGZyb20gJHtwYXRofWAsXG4gIENPTVBVVElOR19QSVBFTElORV9GT1JfTk9ERTogKG5vZGVOYW1lOiBzdHJpbmcpID0+XG4gICAgYENvbXB1dGluZyBwaXBlbGluZSBmb3IgXFxgJHtub2RlTmFtZX1cXGBgLFxuICBNRVJHSU5HX0RFRkFVTFRTX1dJVEhfSU5QVVRfREFUQTogJ01lcmdpbmcgZGVmYXVsdHMgd2l0aCBpbnB1dCBkYXRhJyxcbiAgQUdHUkVHQVRJTkdfT1VUUFVUUzogJ0FnZ3JlZ2F0aW5nIG91dHB1dHMnLFxuICBBR0dSRUdBVElOR19OT0RFOiAobm9kZU5hbWU6IHN0cmluZykgPT4gYEFnZ3JlZ2F0aW5nIG5vZGUgJHtub2RlTmFtZX1gLFxuICBQUkVQQVJJTkdfT1VUUFVUX0RBVEE6ICdQcmVwYXJpbmcgb3V0cHV0IGRhdGEnLFxuICBFWFBPUlRJTkdfVE9fWUFNTF9GSUxFOiAoc2F2ZXBhdGg6IHN0cmluZykgPT5cbiAgICBgRXhwb3J0aW5nIHRvIHlhbWwgZmlsZTogJHtzYXZlcGF0aH1gLFxuICBFTVBUWV9QSVBFTElORTogYFlvdSdyZSB1c2luZyBhbiBvbGQgc3R5bGUgbWFuaWZlc3QuIFBsZWFzZSB1cGRhdGUgZm9yIHBoYXNlZCBleGVjdXRpb24uIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGhlcmU6IFxuaHR0cHM6Ly9pZi5ncmVlbnNvZnR3YXJlLmZvdW5kYXRpb24vbWFqb3ItY29uY2VwdHMvbWFuaWZlc3QtZmlsZWAsXG4gIC8qKiBFeGhhdXN0IG1lc3NhZ2VzICovXG4gIE9VVFBVVF9SRVFVSVJFRDpcbiAgICAnT3V0cHV0IHBhdGggaXMgcmVxdWlyZWQsIHBsZWFzZSBtYWtlIHN1cmUgb3V0cHV0IGlzIGNvbmZpZ3VyZWQgcHJvcGVybHkuJyxcbiAgLyoqIFBsdWdpbnMgbWVzc2FnZXMgKi9cbiAgSU5WQUxJRF9OQU1FOlxuICAgICdgbmFtZWAgZ2xvYmFsIGNvbmZpZyBwYXJhbWV0ZXIgaXMgZW1wdHkgb3IgY29udGFpbnMgYWxsIHNwYWNlcycsXG4gIFNUQVJUX0xPV0VSX0VORDogJ2BzdGFydC10aW1lYCBzaG91bGQgYmUgbG93ZXIgdGhhbiBgZW5kLXRpbWVgJyxcbiAgVElNRVNUQU1QX1JFUVVJUkVEOiAoaW5kZXg6IG51bWJlcikgPT4gYHJlcXVpcmVkIGluIGlucHV0WyR7aW5kZXh9XWAsXG4gIElOVkFMSURfREFURVRJTUU6IChpbmRleDogbnVtYmVyKSA9PiBgaW52YWxpZCBkYXRldGltZSBpbiBpbnB1dFske2luZGV4fV1gLFxuICBYX1lfRVFVQUw6ICdUaGUgbGVuZ3RoIG9mIGB4YCBhbmQgYHlgIHNob3VsZCBiZSBlcXVhbCcsXG4gIEFSUkFZX0xFTkdUSF9OT05fRU1QVFk6XG4gICAgJ3RoZSBsZW5ndGggb2YgdGhlIGlucHV0IGFycmF5cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyxcbiAgV0lUSElOX1RIRV9SQU5HRTpcbiAgICAnVGhlIHRhcmdldCB4IHZhbHVlIG11c3QgYmUgd2l0aGluIHRoZSByYW5nZSBvZiB0aGUgZ2l2ZW4geCB2YWx1ZXMnLFxuICBNSVNTSU5HX0NTVl9DT0xVTU46IChjb2x1bW5OYW1lOiBzdHJpbmcpID0+XG4gICAgYFRoZXJlIGlzIG5vIGNvbHVtbiB3aXRoIHRoZSBuYW1lOiAke2NvbHVtbk5hbWV9LmAsXG4gIE5PX1FVRVJZX0RBVEE6XG4gICAgJ09uZSBvciBtb3JlIG9mIHRoZSBnaXZlbiBxdWVyeSBwYXJhbWV0ZXJzIGFyZSBub3QgZm91bmQgaW4gdGhlIHRhcmdldCBDU1YgZmlsZSBjb2x1bW4gaGVhZGVycy4nLFxuICBJTlZBTElEX0RBVEVfVFlQRTogKGRhdGU6IGFueSkgPT5cbiAgICBgVW5leHBlY3RlZCBkYXRlIGRhdGF0eXBlOiAke3R5cGVvZiBkYXRlfTogJHtkYXRlfWAsXG4gIElOVkFMSURfT0JTRVJWQVRJT05fT1ZFUkxBUDpcbiAgICAnT2JzZXJ2YXRpb24gdGltZXN0YW1wcyBvdmVybGFwLCBwbGVhc2UgY2hlY2sgaW5wdXRzLicsXG4gIFNDSV9NSVNTSU5HX0ZOX1VOSVQ6IChmdW5jdGlvbmFsVW5pdDogc3RyaW5nKSA9PlxuICAgIGAnY2FyYm9uJyBhbmQgJHtmdW5jdGlvbmFsVW5pdH0gc2hvdWxkIGJlIHByZXNlbnQgaW4geW91ciBpbnB1dCBkYXRhLmAsXG4gIE1JU1NJTkdfRlVOQ1RJT05BTF9VTklUX0NPTkZJRzpcbiAgICAnYGZ1bmN0aW9uYWwtdW5pdGAgc2hvdWxkIGJlIHByb3ZpZGVkIGluIHlvdXIgZ2xvYmFsIGNvbmZpZycsXG4gIE1JU1NJTkdfRlVOQ1RJT05BTF9VTklUX0lOUFVUOlxuICAgICdgZnVuY3Rpb25hbC11bml0YCB2YWx1ZSBpcyBtaXNzaW5nIGZyb20gaW5wdXQgZGF0YSBvciBpdCBpcyBub3QgYSBwb3NpdGl2ZSBpbnRlZ2VyJyxcbiAgUkVHRVhfTUlTTUFUQ0g6IChpbnB1dDogYW55LCBtYXRjaDogc3RyaW5nKSA9PlxuICAgIGBcXGAke2lucHV0fVxcYCBkb2VzIG5vdCBtYXRjaCB0aGUgJHttYXRjaH0gcmVnZXggZXhwcmVzc2lvbmAsXG4gIFNDSV9FTUJPRElFRF9FUlJPUjogKHVuaXQ6IHN0cmluZykgPT5cbiAgICBgaW52YWxpZCBudW1iZXIuIHBsZWFzZSBwcm92aWRlIGl0IGFzIFxcYCR7dW5pdH1cXGAgdG8gaW5wdXRgLFxuICBNSVNTSU5HX01JTl9NQVg6ICdDb25maWcgaXMgbWlzc2luZyBtaW4gb3IgbWF4IHZhbHVlJyxcbiAgSU5WQUxJRF9NSU5fTUFYOiAobmFtZTogc3RyaW5nKSA9PlxuICAgIGBNaW4gdmFsdWUgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWF4IHZhbHVlIG9mICR7bmFtZX1gLFxuICBGSUxFX0ZFVENIX0ZBSUxFRDogKFxuICAgIGZpbGVwYXRoOiBzdHJpbmcsXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICkgPT4gYEZhaWxlZCBmZXRjaGluZyB0aGUgZmlsZTogJHtmaWxlcGF0aH0uXG4ke21lc3NhZ2V9YCxcbiAgRklMRV9SRUFEX0ZBSUxFRDogKFxuICAgIGZpbGVwYXRoOiBzdHJpbmcsXG4gICAgZXJyb3I6IHN0cmluZ1xuICApID0+IGBGYWlsZWQgcmVhZGluZyB0aGUgZmlsZTogJHtmaWxlcGF0aH0uIFxuJHtlcnJvcn1gLFxuICBaRVJPX0RJVklTSU9OOiAobW9kdWxlTmFtZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgIGAtLSBTS0lQUElORyAtLSBEaXZpc2lvbkJ5WmVybzogeW91IGFyZSBhdHRlbXB0aW5nIHRvIGRpdmlkZSBieSB6ZXJvIGluICR7bW9kdWxlTmFtZX0gcGx1Z2luIDogaW5wdXRzWyR7aW5kZXh9XVxcbmAsXG4gIE1JU1NJTkdfR0xPQkFMX0NPTkZJRzogJ0dsb2JhbCBjb25maWcgaXMgbm90IHByb3ZpZGVkLicsXG4gIE1JU1NJTkdfSU5QVVRfREFUQTogKHBhcmFtOiBzdHJpbmcpID0+XG4gICAgYCR7cGFyYW19IGlzIG1pc3NpbmcgZnJvbSB0aGUgaW5wdXQgYXJyYXksIG9yIGhhcyBudWxsaXNoIHZhbHVlLmAsXG59O1xuIl19
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const config_1 = require("../common/config");
5
+ const validations_1 = require("../common/util/validations");
6
+ const debug_logger_1 = require("../common/util/debug-logger");
7
+ const logger_1 = require("../common/util/logger");
8
+ const load_1 = require("../common/lib/load");
9
+ const aggregate_1 = require("./lib/aggregate");
10
+ const environment_1 = require("./lib/environment");
11
+ const initialize_1 = require("./lib/initialize");
12
+ const compute_1 = require("./lib/compute");
13
+ const exhaust_1 = require("./lib/exhaust");
14
+ const explain_1 = require("./lib/explain");
15
+ const aggregation_1 = require("./types/aggregation");
16
+ const args_1 = require("./util/args");
17
+ const helpers_1 = require("./util/helpers");
18
+ const config_2 = require("./config");
19
+ const { EXITING_IF, STARTING_IF } = config_2.STRINGS;
20
+ const { DISCLAIMER_MESSAGE } = config_1.STRINGS;
21
+ const impactEngine = async () => {
22
+ const options = (0, args_1.parseIfRunProcessArgs)();
23
+ const { inputPath, outputOptions, debug, observe, regroup, compute: computeFlag, } = options;
24
+ debug_logger_1.debugLogger.overrideConsoleMethods(!!debug);
25
+ logger_1.logger.info(DISCLAIMER_MESSAGE);
26
+ console.info(STARTING_IF);
27
+ const { rawManifest } = await (0, load_1.load)(inputPath);
28
+ const envManifest = await (0, environment_1.injectEnvironment)(rawManifest);
29
+ try {
30
+ const { tree, ...context } = (0, validations_1.validateManifest)(envManifest);
31
+ if (context.aggregation) {
32
+ const convertMetrics = context.aggregation?.metrics.map((metric) => ({
33
+ [metric]: aggregation_1.AGGREGATION_METHODS[2],
34
+ }));
35
+ (0, aggregate_1.storeAggregationMetrics)(...convertMetrics);
36
+ }
37
+ const pluginStorage = await (0, initialize_1.initialize)(context);
38
+ const computedTree = await (0, compute_1.compute)(tree, {
39
+ context,
40
+ pluginStorage,
41
+ observe,
42
+ regroup,
43
+ compute: computeFlag,
44
+ });
45
+ const aggregatedTree = (0, aggregate_1.aggregate)(computedTree, context.aggregation);
46
+ envManifest.explainer && (context.explain = (0, explain_1.explain)());
47
+ await (0, exhaust_1.exhaust)(aggregatedTree, context, outputOptions);
48
+ }
49
+ catch (error) {
50
+ if (error instanceof Error) {
51
+ envManifest.execution.status = 'fail';
52
+ envManifest.execution.error = error.toString();
53
+ logger_1.logger.error(error);
54
+ const { tree, ...context } = envManifest;
55
+ if (error.name !== 'ExhaustError') {
56
+ (0, exhaust_1.exhaust)(tree, context, outputOptions);
57
+ }
58
+ }
59
+ }
60
+ console.info(EXITING_IF);
61
+ };
62
+ impactEngine().catch(helpers_1.andHandle);
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWYtcnVuL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUEyRDtBQUMzRCw0REFBNEQ7QUFDNUQsOERBQXdEO0FBQ3hELGtEQUE2QztBQUM3Qyw2Q0FBd0M7QUFFeEMsK0NBQW1FO0FBQ25FLG1EQUFvRDtBQUNwRCxpREFBNEM7QUFDNUMsMkNBQXNDO0FBQ3RDLDJDQUFzQztBQUN0QywyQ0FBc0M7QUFFdEMscURBQXdEO0FBRXhELHNDQUFrRDtBQUNsRCw0Q0FBeUM7QUFFekMscUNBQWlDO0FBRWpDLE1BQU0sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUMxQyxNQUFNLEVBQUMsa0JBQWtCLEVBQUMsR0FBRyxnQkFBYyxDQUFDO0FBRTVDLE1BQU0sWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUEsNEJBQXFCLEdBQUUsQ0FBQztJQUN4QyxNQUFNLEVBQ0osU0FBUyxFQUNULGFBQWEsRUFDYixLQUFLLEVBQ0wsT0FBTyxFQUNQLE9BQU8sRUFDUCxPQUFPLEVBQUUsV0FBVyxHQUNyQixHQUFHLE9BQU8sQ0FBQztJQUVaLDBCQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTVDLGVBQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTFCLE1BQU0sRUFBQyxXQUFXLEVBQUMsR0FBRyxNQUFNLElBQUEsV0FBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSwrQkFBaUIsRUFBQyxXQUFXLENBQUMsQ0FBQztJQUV6RCxJQUFJO1FBQ0YsTUFBTSxFQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBQyxHQUFHLElBQUEsOEJBQWdCLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFFekQsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3ZCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FDckQsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ25CLENBQUMsTUFBTSxDQUFDLEVBQUUsaUNBQW1CLENBQUMsQ0FBQyxDQUFDO2FBQ2pDLENBQUMsQ0FDSCxDQUFDO1lBRUYsSUFBQSxtQ0FBdUIsRUFBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFBLHVCQUFVLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLGlCQUFPLEVBQUMsSUFBSSxFQUFFO1lBQ3ZDLE9BQU87WUFDUCxhQUFhO1lBQ2IsT0FBTztZQUNQLE9BQU87WUFDUCxPQUFPLEVBQUUsV0FBVztTQUNyQixDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFBLHFCQUFTLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRSxXQUFXLENBQUMsU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFBLGlCQUFPLEdBQUUsQ0FBQyxDQUFDO1FBRXZELE1BQU0sSUFBQSxpQkFBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDdkQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtZQUMxQixXQUFXLENBQUMsU0FBVSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDdkMsV0FBVyxDQUFDLFNBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hELGVBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsTUFBTSxFQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBQyxHQUFHLFdBQVcsQ0FBQztZQUV2QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFO2dCQUNqQyxJQUFBLGlCQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQzthQUN2QztTQUNGO0tBQ0Y7SUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUVGLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQge1NUUklOR1MgYXMgQ09NTU9OX1NUUklOR1N9IGZyb20gJy4uL2NvbW1vbi9jb25maWcnO1xuaW1wb3J0IHt2YWxpZGF0ZU1hbmlmZXN0fSBmcm9tICcuLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5pbXBvcnQge2RlYnVnTG9nZ2VyfSBmcm9tICcuLi9jb21tb24vdXRpbC9kZWJ1Zy1sb2dnZXInO1xuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4uL2NvbW1vbi91dGlsL2xvZ2dlcic7XG5pbXBvcnQge2xvYWR9IGZyb20gJy4uL2NvbW1vbi9saWIvbG9hZCc7XG5cbmltcG9ydCB7YWdncmVnYXRlLCBzdG9yZUFnZ3JlZ2F0aW9uTWV0cmljc30gZnJvbSAnLi9saWIvYWdncmVnYXRlJztcbmltcG9ydCB7aW5qZWN0RW52aXJvbm1lbnR9IGZyb20gJy4vbGliL2Vudmlyb25tZW50JztcbmltcG9ydCB7aW5pdGlhbGl6ZX0gZnJvbSAnLi9saWIvaW5pdGlhbGl6ZSc7XG5pbXBvcnQge2NvbXB1dGV9IGZyb20gJy4vbGliL2NvbXB1dGUnO1xuaW1wb3J0IHtleGhhdXN0fSBmcm9tICcuL2xpYi9leGhhdXN0JztcbmltcG9ydCB7ZXhwbGFpbn0gZnJvbSAnLi9saWIvZXhwbGFpbic7XG5cbmltcG9ydCB7QUdHUkVHQVRJT05fTUVUSE9EU30gZnJvbSAnLi90eXBlcy9hZ2dyZWdhdGlvbic7XG5cbmltcG9ydCB7cGFyc2VJZlJ1blByb2Nlc3NBcmdzfSBmcm9tICcuL3V0aWwvYXJncyc7XG5pbXBvcnQge2FuZEhhbmRsZX0gZnJvbSAnLi91dGlsL2hlbHBlcnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4vY29uZmlnJztcblxuY29uc3Qge0VYSVRJTkdfSUYsIFNUQVJUSU5HX0lGfSA9IFNUUklOR1M7XG5jb25zdCB7RElTQ0xBSU1FUl9NRVNTQUdFfSA9IENPTU1PTl9TVFJJTkdTO1xuXG5jb25zdCBpbXBhY3RFbmdpbmUgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUlmUnVuUHJvY2Vzc0FyZ3MoKTtcbiAgY29uc3Qge1xuICAgIGlucHV0UGF0aCxcbiAgICBvdXRwdXRPcHRpb25zLFxuICAgIGRlYnVnLFxuICAgIG9ic2VydmUsXG4gICAgcmVncm91cCxcbiAgICBjb21wdXRlOiBjb21wdXRlRmxhZyxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgZGVidWdMb2dnZXIub3ZlcnJpZGVDb25zb2xlTWV0aG9kcyghIWRlYnVnKTtcblxuICBsb2dnZXIuaW5mbyhESVNDTEFJTUVSX01FU1NBR0UpO1xuICBjb25zb2xlLmluZm8oU1RBUlRJTkdfSUYpO1xuXG4gIGNvbnN0IHtyYXdNYW5pZmVzdH0gPSBhd2FpdCBsb2FkKGlucHV0UGF0aCk7XG4gIGNvbnN0IGVudk1hbmlmZXN0ID0gYXdhaXQgaW5qZWN0RW52aXJvbm1lbnQocmF3TWFuaWZlc3QpO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qge3RyZWUsIC4uLmNvbnRleHR9ID0gdmFsaWRhdGVNYW5pZmVzdChlbnZNYW5pZmVzdCk7XG5cbiAgICBpZiAoY29udGV4dC5hZ2dyZWdhdGlvbikge1xuICAgICAgY29uc3QgY29udmVydE1ldHJpY3MgPSBjb250ZXh0LmFnZ3JlZ2F0aW9uPy5tZXRyaWNzLm1hcChcbiAgICAgICAgKG1ldHJpYzogc3RyaW5nKSA9PiAoe1xuICAgICAgICAgIFttZXRyaWNdOiBBR0dSRUdBVElPTl9NRVRIT0RTWzJdLFxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgc3RvcmVBZ2dyZWdhdGlvbk1ldHJpY3MoLi4uY29udmVydE1ldHJpY3MpO1xuICAgIH1cblxuICAgIGNvbnN0IHBsdWdpblN0b3JhZ2UgPSBhd2FpdCBpbml0aWFsaXplKGNvbnRleHQpO1xuICAgIGNvbnN0IGNvbXB1dGVkVHJlZSA9IGF3YWl0IGNvbXB1dGUodHJlZSwge1xuICAgICAgY29udGV4dCxcbiAgICAgIHBsdWdpblN0b3JhZ2UsXG4gICAgICBvYnNlcnZlLFxuICAgICAgcmVncm91cCxcbiAgICAgIGNvbXB1dGU6IGNvbXB1dGVGbGFnLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYWdncmVnYXRlZFRyZWUgPSBhZ2dyZWdhdGUoY29tcHV0ZWRUcmVlLCBjb250ZXh0LmFnZ3JlZ2F0aW9uKTtcbiAgICBlbnZNYW5pZmVzdC5leHBsYWluZXIgJiYgKGNvbnRleHQuZXhwbGFpbiA9IGV4cGxhaW4oKSk7XG5cbiAgICBhd2FpdCBleGhhdXN0KGFnZ3JlZ2F0ZWRUcmVlLCBjb250ZXh0LCBvdXRwdXRPcHRpb25zKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgZW52TWFuaWZlc3QuZXhlY3V0aW9uIS5zdGF0dXMgPSAnZmFpbCc7XG4gICAgICBlbnZNYW5pZmVzdC5leGVjdXRpb24hLmVycm9yID0gZXJyb3IudG9TdHJpbmcoKTtcbiAgICAgIGxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgICBjb25zdCB7dHJlZSwgLi4uY29udGV4dH0gPSBlbnZNYW5pZmVzdDtcblxuICAgICAgaWYgKGVycm9yLm5hbWUgIT09ICdFeGhhdXN0RXJyb3InKSB7XG4gICAgICAgIGV4aGF1c3QodHJlZSwgY29udGV4dCwgb3V0cHV0T3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnNvbGUuaW5mbyhFWElUSU5HX0lGKTtcbn07XG5cbmltcGFjdEVuZ2luZSgpLmNhdGNoKGFuZEhhbmRsZSk7XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { AggregationParams, AggregationMetricsWithMethod } from '../../common/types/manifest';
2
+ import { AggregationMetric } from '../types/aggregation';
3
+ /**
4
+ * If aggregation is disabled, then returns given `tree`.
5
+ * Otherwise creates copy of the tree, then applies aggregation to it.
6
+ */
7
+ export declare const aggregate: (tree: any, aggregationParams: AggregationParams) => any;
8
+ /**
9
+ * Gets or stores aggregation metrics.
10
+ */
11
+ export declare const storeAggregationMetrics: (aggregationMetrics?: AggregationMetricsWithMethod) => AggregationMetric;
12
+ /**
13
+ * Returns aggregation method for given `unitName`. If doesn't exist then returns value `sum`.
14
+ */
15
+ export declare const getAggregationMethod: (unitName: string) => import("../types/aggregation").AggregationMethodTypes | undefined;
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAggregationMethod = exports.storeAggregationMetrics = exports.aggregate = void 0;
4
+ const debug_logger_1 = require("../../common/util/debug-logger");
5
+ const logger_1 = require("../../common/util/logger");
6
+ const aggregation_helper_1 = require("../util/aggregation-helper");
7
+ const log_memoize_1 = require("../util/log-memoize");
8
+ const strings_1 = require("../config/strings");
9
+ const { AGGREGATING_NODE, AGGREGATING_OUTPUTS, UNKNOWN_PARAM, CHECKING_AGGREGATION_METHOD, } = strings_1.STRINGS;
10
+ /**
11
+ * Gets `i`th element from all children outputs and collects them in single array.
12
+ */
13
+ const getIthElementsFromChildren = (children, i) => {
14
+ const values = Object.values(children);
15
+ return values.map((value) => {
16
+ const output = value.outputs;
17
+ return output[i];
18
+ });
19
+ };
20
+ /**
21
+ * 1. Gets the i'th element from each childrens outputs (treating children as rows and we are after a column of data).
22
+ * 2. Now we just aggregate over the `ithSliceOfOutputs` the same as we did for the normal outputs.
23
+ */
24
+ const temporalAggregation = (node, metrics) => {
25
+ const outputs = [];
26
+ const values = Object.values(node.children);
27
+ for (let i = 0; i < values[0].outputs.length; i++) {
28
+ const ithSliceOfOutputs = getIthElementsFromChildren(node.children, i);
29
+ outputs.push((0, aggregation_helper_1.aggregateInputsIntoOne)(ithSliceOfOutputs, metrics, true));
30
+ }
31
+ return outputs;
32
+ };
33
+ /**
34
+ * Navigates the tree depth first, bottom up,
35
+ * left to right aggregating the component nodes and then the grouping nodes will be aggregated
36
+ * only when all their child nodes have been aggregated.
37
+ * 1. Aggregates all the children.
38
+ * 2. At this point you can be positive all your children have been aggregated and so you can now work on aggregating yourself.
39
+ * 3. It's component node, аggregates just the outputs of THIS component node (horizontal/component aggregation).
40
+ * 4. Else it's grouping node, first does temporal aggregation. This assumes everything is on the same time-grid.
41
+ * The outputs of the grouping node are the aggregated time bucketed outputs of it's children.
42
+ * 5. Now a grouping node has it's own outputs, it can horizotnally aggregate them.
43
+ */
44
+ const aggregateNode = (node, aggregationParams) => {
45
+ const metrics = aggregationParams.metrics.map(metric => ({ [metric]: 'none' }));
46
+ const type = aggregationParams.type;
47
+ if (node.children) {
48
+ for (const child in node.children) {
49
+ console.debug(AGGREGATING_NODE(child));
50
+ aggregateNode(node.children[child], aggregationParams);
51
+ }
52
+ }
53
+ if (!node.children) {
54
+ if (type === 'horizontal' || type === 'both') {
55
+ node.aggregated = (0, aggregation_helper_1.aggregateInputsIntoOne)(node.outputs, metrics);
56
+ }
57
+ }
58
+ else {
59
+ if (type === 'vertical' || type === 'both') {
60
+ const outputs = temporalAggregation(node, metrics);
61
+ node.outputs = outputs;
62
+ node.aggregated = (0, aggregation_helper_1.aggregateInputsIntoOne)(outputs, metrics);
63
+ }
64
+ }
65
+ };
66
+ /**
67
+ * If aggregation is disabled, then returns given `tree`.
68
+ * Otherwise creates copy of the tree, then applies aggregation to it.
69
+ */
70
+ const aggregate = (tree, aggregationParams) => {
71
+ console.debug(AGGREGATING_OUTPUTS);
72
+ if (!aggregationParams || !aggregationParams.type) {
73
+ return tree;
74
+ }
75
+ const copyOfTree = structuredClone(tree);
76
+ aggregateNode(copyOfTree, aggregationParams);
77
+ return copyOfTree;
78
+ };
79
+ exports.aggregate = aggregate;
80
+ /**
81
+ * Gets or stores aggregation metrics.
82
+ */
83
+ const storeAggregationMetrics = (aggregationMetrics) => {
84
+ if (aggregationMetrics) {
85
+ metricManager.metrics = {
86
+ ...metricManager.metrics,
87
+ ...aggregationMetrics,
88
+ };
89
+ }
90
+ return metricManager.metrics;
91
+ };
92
+ exports.storeAggregationMetrics = storeAggregationMetrics;
93
+ /**
94
+ * Creates an encapsulated object to retrieve the metrics.
95
+ */
96
+ const metricManager = (() => {
97
+ let metric;
98
+ const manager = {
99
+ get metrics() {
100
+ return metric;
101
+ },
102
+ set metrics(value) {
103
+ metric = value;
104
+ },
105
+ };
106
+ return manager;
107
+ })();
108
+ /**
109
+ * Returns aggregation method for given `unitName`. If doesn't exist then returns value `sum`.
110
+ */
111
+ const getAggregationMethod = (unitName) => {
112
+ debug_logger_1.debugLogger.setExecutingPluginName();
113
+ (0, log_memoize_1.memoizedLog)(console.debug, CHECKING_AGGREGATION_METHOD(unitName));
114
+ const aggregationMetricsStorage = (0, exports.storeAggregationMetrics)();
115
+ if (aggregationMetricsStorage &&
116
+ Object.keys(aggregationMetricsStorage).includes(unitName)) {
117
+ return aggregationMetricsStorage[unitName];
118
+ }
119
+ (0, log_memoize_1.memoizedLog)(logger_1.logger.warn, UNKNOWN_PARAM(unitName));
120
+ return undefined;
121
+ };
122
+ exports.getAggregationMethod = getAggregationMethod;
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLXJ1bi9saWIvYWdncmVnYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGlFQUEyRDtBQUMzRCxxREFBZ0Q7QUFPaEQsbUVBQWtFO0FBQ2xFLHFEQUFnRDtBQUloRCwrQ0FBMEM7QUFFMUMsTUFBTSxFQUNKLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLDJCQUEyQixHQUM1QixHQUFHLGlCQUFPLENBQUM7QUFFWjs7R0FFRztBQUNILE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxRQUFhLEVBQUUsQ0FBUyxFQUFFLEVBQUU7SUFDOUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2QyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtRQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTdCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQVMsRUFBRSxPQUE0QixFQUFFLEVBQUU7SUFDdEUsTUFBTSxPQUFPLEdBQW1CLEVBQUUsQ0FBQztJQUNuQyxNQUFNLE1BQU0sR0FBUSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDakQsTUFBTSxpQkFBaUIsR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZF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LENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFTDs7R0FFRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUU7SUFDdkQsMEJBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3JDLElBQUEseUJBQVcsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEUsTUFBTSx5QkFBeUIsR0FBRyxJQUFBLCtCQUF1QixHQUFFLENBQUM7SUFFNUQsSUFDRSx5QkFBeUI7UUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDekQ7UUFDQSxPQUFPLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzVDO0lBRUQsSUFBQSx5QkFBVyxFQUFDLGVBQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFbEQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBZlcsUUFBQSxvQkFBb0Isd0JBZS9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7ZGVidWdMb2dnZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2RlYnVnLWxvZ2dlcic7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvbG9nZ2VyJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uUGFyYW1zLFxuICBBZ2dyZWdhdGlvblBhcmFtc1N1cmUsXG4gIEFnZ3JlZ2F0aW9uTWV0cmljc1dpdGhNZXRob2QsXG59IGZyb20gJy4uLy4uL2NvbW1vbi90eXBlcy9tYW5pZmVzdCc7XG5cbmltcG9ydCB7YWdncmVnYXRlSW5wdXRzSW50b09uZX0gZnJvbSAnLi4vdXRpbC9hZ2dyZWdhdGlvbi1oZWxwZXInO1xuaW1wb3J0IHttZW1vaXplZExvZ30gZnJvbSAnLi4vdXRpbC9sb2ctbWVtb2l6ZSc7XG5cbmltcG9ydCB7QWdncmVnYXRpb25NZXRyaWN9IGZyb20gJy4uL3R5cGVzL2FnZ3JlZ2F0aW9uJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi9jb25maWcvc3RyaW5ncyc7XG5cbmNvbnN0IHtcbiAgQUdHUkVHQVRJTkdfTk9ERSxcbiAgQUdHUkVHQVRJTkdfT1VUUFVUUyxcbiAgVU5LTk9XTl9QQVJBTSxcbiAgQ0hFQ0tJTkdfQUdHUkVHQVRJT05fTUVUSE9ELFxufSA9IFNUUklOR1M7XG5cbi8qKlxuICogR2V0cyBgaWB0aCBlbGVtZW50IGZyb20gYWxsIGNoaWxkcmVuIG91dHB1dHMgYW5kIGNvbGxlY3RzIHRoZW0gaW4gc2luZ2xlIGFycmF5LlxuICovXG5jb25zdCBnZXRJdGhFbGVtZW50c0Zyb21DaGlsZHJlbiA9IChjaGlsZHJlbjogYW55LCBpOiBudW1iZXIpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyhjaGlsZHJlbik7XG5cbiAgcmV0dXJuIHZhbHVlcy5tYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICBjb25zdCBvdXRwdXQgPSB2YWx1ZS5vdXRwdXRzO1xuXG4gICAgcmV0dXJuIG91dHB1dFtpXTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIDEuIEdldHMgdGhlIGkndGggZWxlbWVudCBmcm9tIGVhY2ggY2hpbGRyZW5zIG91dHB1dHMgKHRyZWF0aW5nIGNoaWxkcmVuIGFzIHJvd3MgYW5kIHdlIGFyZSBhZnRlciBhIGNvbHVtbiBvZiBkYXRhKS5cbiAqIDIuIE5vdyB3ZSBqdXN0IGFnZ3JlZ2F0ZSBvdmVyIHRoZSBgaXRoU2xpY2VPZk91dHB1dHNgIHRoZSBzYW1lIGFzIHdlIGRpZCBmb3IgdGhlIG5vcm1hbCBvdXRwdXRzLlxuICovXG5jb25zdCB0ZW1wb3JhbEFnZ3JlZ2F0aW9uID0gKG5vZGU6IGFueSwgbWV0cmljczogQWdncmVnYXRpb25NZXRyaWNbXSkgPT4ge1xuICBjb25zdCBvdXRwdXRzOiBQbHVnaW5QYXJhbXNbXSA9IFtdO1xuICBjb25zdCB2YWx1ZXM6IGFueSA9IE9iamVjdC52YWx1ZXMobm9kZS5jaGlsZHJlbik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXNbMF0ub3V0cHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGl0aFNsaWNlT2ZPdXRwdXRzID0gZ2V0SXRoRWxlbWVudHNGcm9tQ2hpbGRyZW4obm9kZS5jaGlsZHJlbiwgaSk7XG4gICAgb3V0cHV0cy5wdXNoKGFnZ3JlZ2F0ZUlucHV0c0ludG9PbmUoaXRoU2xpY2VPZk91dHB1dHMsIG1ldHJpY3MsIHRydWUpKTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXRzO1xufTtcblxuLyoqXG4gKiBOYXZpZ2F0ZXMgdGhlIHRyZWUgZGVwdGggZmlyc3QsIGJvdHRvbSB1cCxcbiAqICBsZWZ0IHRvIHJpZ2h0IGFnZ3JlZ2F0aW5nIHRoZSBjb21wb25lbnQgbm9kZXMgYW5kIHRoZW4gdGhlIGdyb3VwaW5nIG5vZGVzIHdpbGwgYmUgYWdncmVnYXRlZFxuICogIG9ubHkgd2hlbiBhbGwgdGhlaXIgY2hpbGQgbm9kZXMgaGF2ZSBiZWVuIGFnZ3JlZ2F0ZWQuXG4gKiAxLiBBZ2dyZWdhdGVzIGFsbCB0aGUgY2hpbGRyZW4uXG4gKiAyLiBBdCB0aGlzIHBvaW50IHlvdSBjYW4gYmUgcG9zaXRpdmUgYWxsIHlvdXIgY2hpbGRyZW4gaGF2ZSBiZWVuIGFnZ3JlZ2F0ZWQgYW5kIHNvIHlvdSBjYW4gbm93IHdvcmsgb24gYWdncmVnYXRpbmcgeW91cnNlbGYuXG4gKiAzLiBJdCdzIGNvbXBvbmVudCBub2RlLCDQsGdncmVnYXRlcyBqdXN0IHRoZSBvdXRwdXRzIG9mIFRISVMgY29tcG9uZW50IG5vZGUgKGhvcml6b250YWwvY29tcG9uZW50IGFnZ3JlZ2F0aW9uKS5cbiAqIDQuIEVsc2UgaXQncyBncm91cGluZyBub2RlLCBmaXJzdCBkb2VzIHRlbXBvcmFsIGFnZ3JlZ2F0aW9uLiBUaGlzIGFzc3VtZXMgZXZlcnl0aGluZyBpcyBvbiB0aGUgc2FtZSB0aW1lLWdyaWQuXG4gKiAgICBUaGUgb3V0cHV0cyBvZiB0aGUgZ3JvdXBpbmcgbm9kZSBhcmUgdGhlIGFnZ3JlZ2F0ZWQgdGltZSBidWNrZXRlZCBvdXRwdXRzIG9mIGl0J3MgY2hpbGRyZW4uXG4gKiA1LiBOb3cgYSBncm91cGluZyBub2RlIGhhcyBpdCdzIG93biBvdXRwdXRzLCBpdCBjYW4gaG9yaXpvdG5hbGx5IGFnZ3JlZ2F0ZSB0aGVtLlxuICovXG5jb25zdCBhZ2dyZWdhdGVOb2RlID0gKG5vZGU6IGFueSwgYWdncmVnYXRpb25QYXJhbXM6IEFnZ3JlZ2F0aW9uUGFyYW1zU3VyZSkgPT4ge1xuICBjb25zdCBtZXRyaWNzOiBBZ2dyZWdhdGlvbk1ldHJpY1tdID0gYWdncmVnYXRpb25QYXJhbXMhLm1ldHJpY3MubWFwKFxuICAgIG1ldHJpYyA9PiAoe1ttZXRyaWNdOiAnbm9uZSd9KVxuICApO1xuICBjb25zdCB0eXBlID0gYWdncmVnYXRpb25QYXJhbXMhLnR5cGU7XG5cbiAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIGluIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoQUdHUkVHQVRJTkdfTk9ERShjaGlsZCkpO1xuXG4gICAgICBhZ2dyZWdhdGVOb2RlKG5vZGUuY2hpbGRyZW5bY2hpbGRdLCBhZ2dyZWdhdGlvblBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XG4gICAgaWYgKHR5cGUgPT09ICdob3Jpem9udGFsJyB8fCB0eXBlID09PSAnYm90aCcpIHtcbiAgICAgIG5vZGUuYWdncmVnYXRlZCA9IGFnZ3JlZ2F0ZUlucHV0c0ludG9PbmUobm9kZS5vdXRwdXRzLCBtZXRyaWNzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGUgPT09ICd2ZXJ0aWNhbCcgfHwgdHlwZSA9PT0gJ2JvdGgnKSB7XG4gICAgICBjb25zdCBvdXRwdXRzID0gdGVtcG9yYWxBZ2dyZWdhdGlvbihub2RlLCBtZXRyaWNzKTtcbiAgICAgIG5vZGUub3V0cHV0cyA9IG91dHB1dHM7XG4gICAgICBub2RlLmFnZ3JlZ2F0ZWQgPSBhZ2dyZWdhdGVJbnB1dHNJbnRvT25lKG91dHB1dHMsIG1ldHJpY3MpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBJZiBhZ2dyZWdhdGlvbiBpcyBkaXNhYmxlZCwgdGhlbiByZXR1cm5zIGdpdmVuIGB0cmVlYC5cbiAqIE90aGVyd2lzZSBjcmVhdGVzIGNvcHkgb2YgdGhlIHRyZWUsIHRoZW4gYXBwbGllcyBhZ2dyZWdhdGlvbiB0byBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IGFnZ3JlZ2F0ZSA9ICh0cmVlOiBhbnksIGFnZ3JlZ2F0aW9uUGFyYW1zOiBBZ2dyZWdhdGlvblBhcmFtcykgPT4ge1xuICBjb25zb2xlLmRlYnVnKEFHR1JFR0FUSU5HX09VVFBVVFMpO1xuXG4gIGlmICghYWdncmVnYXRpb25QYXJhbXMgfHwgIWFnZ3JlZ2F0aW9uUGFyYW1zLnR5cGUpIHtcbiAgICByZXR1cm4gdHJlZTtcbiAgfVxuXG4gIGNvbnN0IGNvcHlPZlRyZWUgPSBzdHJ1Y3R1cmVkQ2xvbmUodHJlZSk7XG4gIGFnZ3JlZ2F0ZU5vZGUoY29weU9mVHJlZSwgYWdncmVnYXRpb25QYXJhbXMpO1xuXG4gIHJldHVybiBjb3B5T2ZUcmVlO1xufTtcblxuLyoqXG4gKiBHZXRzIG9yIHN0b3JlcyBhZ2dyZWdhdGlvbiBtZXRyaWNzLlxuICovXG5leHBvcnQgY29uc3Qgc3RvcmVBZ2dyZWdhdGlvbk1ldHJpY3MgPSAoXG4gIGFnZ3JlZ2F0aW9uTWV0cmljcz86IEFnZ3JlZ2F0aW9uTWV0cmljc1dpdGhNZXRob2RcbikgPT4ge1xuICBpZiAoYWdncmVnYXRpb25NZXRyaWNzKSB7XG4gICAgbWV0cmljTWFuYWdlci5tZXRyaWNzID0ge1xuICAgICAgLi4ubWV0cmljTWFuYWdlci5tZXRyaWNzLFxuICAgICAgLi4uYWdncmVnYXRpb25NZXRyaWNzLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbWV0cmljTWFuYWdlci5tZXRyaWNzO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVuY2Fwc3VsYXRlZCBvYmplY3QgdG8gcmV0cmlldmUgdGhlIG1ldHJpY3MuXG4gKi9cbmNvbnN0IG1ldHJpY01hbmFnZXIgPSAoKCkgPT4ge1xuICBsZXQgbWV0cmljOiBBZ2dyZWdhdGlvbk1ldHJpYztcblxuICBjb25zdCBtYW5hZ2VyID0ge1xuICAgIGdldCBtZXRyaWNzKCkge1xuICAgICAgcmV0dXJuIG1ldHJpYztcbiAgICB9LFxuICAgIHNldCBtZXRyaWNzKHZhbHVlOiBBZ2dyZWdhdGlvbk1ldHJpYykge1xuICAgICAgbWV0cmljID0gdmFsdWU7XG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbWFuYWdlcjtcbn0pKCk7XG5cbi8qKlxuICogUmV0dXJucyBhZ2dyZWdhdGlvbiBtZXRob2QgZm9yIGdpdmVuIGB1bml0TmFtZWAuIElmIGRvZXNuJ3QgZXhpc3QgdGhlbiByZXR1cm5zIHZhbHVlIGBzdW1gLlxuICovXG5leHBvcnQgY29uc3QgZ2V0QWdncmVnYXRpb25NZXRob2QgPSAodW5pdE5hbWU6IHN0cmluZykgPT4ge1xuICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKCk7XG4gIG1lbW9pemVkTG9nKGNvbnNvbGUuZGVidWcsIENIRUNLSU5HX0FHR1JFR0FUSU9OX01FVEhPRCh1bml0TmFtZSkpO1xuICBjb25zdCBhZ2dyZWdhdGlvbk1ldHJpY3NTdG9yYWdlID0gc3RvcmVBZ2dyZWdhdGlvbk1ldHJpY3MoKTtcblxuICBpZiAoXG4gICAgYWdncmVnYXRpb25NZXRyaWNzU3RvcmFnZSAmJlxuICAgIE9iamVjdC5rZXlzKGFnZ3JlZ2F0aW9uTWV0cmljc1N0b3JhZ2UpLmluY2x1ZGVzKHVuaXROYW1lKVxuICApIHtcbiAgICByZXR1cm4gYWdncmVnYXRpb25NZXRyaWNzU3RvcmFnZVt1bml0TmFtZV07XG4gIH1cblxuICBtZW1vaXplZExvZyhsb2dnZXIud2FybiwgVU5LTk9XTl9QQVJBTSh1bml0TmFtZSkpO1xuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuIl19
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compute = void 0;
4
+ const regroup_1 = require("./regroup");
5
+ const explain_1 = require("./explain");
6
+ const helpers_1 = require("../util/helpers");
7
+ const debug_logger_1 = require("../../common/util/debug-logger");
8
+ const logger_1 = require("../../common/util/logger");
9
+ const strings_1 = require("../config/strings");
10
+ const interface_1 = require("../types/interface");
11
+ const { MERGING_DEFAULTS_WITH_INPUT_DATA, EMPTY_PIPELINE } = strings_1.STRINGS;
12
+ /**
13
+ * Traverses all child nodes based on children grouping.
14
+ */
15
+ const traverse = async (children, params) => {
16
+ for (const child in children) {
17
+ await computeNode(children[child], params);
18
+ }
19
+ };
20
+ /**
21
+ * Appends `default` values to `inputs`.
22
+ */
23
+ const mergeDefaults = (inputs, defaults) => {
24
+ if (inputs) {
25
+ const response = defaults
26
+ ? inputs.map(input => (0, helpers_1.mergeObjects)(defaults, input))
27
+ : inputs;
28
+ return response;
29
+ }
30
+ console.debug(MERGING_DEFAULTS_WITH_INPUT_DATA);
31
+ return defaults ? [defaults] : [];
32
+ };
33
+ /**
34
+ * 1. If the node has it's own pipeline, defaults or config then use that,
35
+ * otherwise use whatever has been passed down from further up the tree.
36
+ * 2. If it's a grouping node, then first of all computes all it's children.
37
+ * This is doing a depth first traversal.
38
+ * 3. Otherwise merges the defaults into the inputs.
39
+ * 4. Iterates over pipeline phases (observe, regroup, compute).
40
+ * 5. Observe plugins are used to insert input values
41
+ * (isolated execution can be achived by passing `--observe` flag to CLI command).
42
+ * 6. Regroup plugin is used to group existing inputs by criteria
43
+ * (isolated execution can be achived by passing `--regroup` flag to CLI command).
44
+ * Since it creates new children for node, existing inputs and outputs are dropped and recursive traversal is called
45
+ * for newbord child component.
46
+ * 7. Compute plugins are used to do desired computations and appending the result to outputs
47
+ * (isolated execution can be achived by passing `--compute` flag to CLI command).
48
+ */
49
+ const computeNode = async (node, params) => {
50
+ const pipeline = node.pipeline || params.pipeline;
51
+ const config = node.config || params.config;
52
+ const defaults = node.defaults || params.defaults;
53
+ const noFlags = !params.observe && !params.regroup && !params.compute;
54
+ if (node.children) {
55
+ return traverse(node.children, {
56
+ ...params,
57
+ pipeline,
58
+ defaults,
59
+ config,
60
+ });
61
+ }
62
+ let inputStorage = structuredClone(node.inputs);
63
+ inputStorage = mergeDefaults(inputStorage, defaults);
64
+ const pipelineCopy = structuredClone(pipeline) || {};
65
+ /** Checks if pipeline is not an array or empty object. */
66
+ if (Array.isArray(pipelineCopy) ||
67
+ (typeof pipelineCopy === 'object' &&
68
+ pipelineCopy !== null &&
69
+ Object.keys(pipelineCopy).length === 0)) {
70
+ logger_1.logger.warn(EMPTY_PIPELINE);
71
+ }
72
+ /**
73
+ * If iteration is on observe pipeline, then executes observe plugins and sets the inputs value.
74
+ */
75
+ if ((noFlags || params.observe) && pipelineCopy.observe) {
76
+ while (pipelineCopy.observe.length !== 0) {
77
+ const pluginName = pipelineCopy.observe.shift();
78
+ const plugin = params.pluginStorage.get(pluginName);
79
+ const nodeConfig = config && config[pluginName];
80
+ if ((0, interface_1.isExecute)(plugin)) {
81
+ inputStorage = await plugin.execute(inputStorage, nodeConfig);
82
+ node.inputs = inputStorage;
83
+ if (params.context.explainer) {
84
+ (0, explain_1.addExplainData)({
85
+ pluginName,
86
+ metadata: plugin.metadata,
87
+ pluginData: params.context.initialize.plugins[pluginName],
88
+ });
89
+ }
90
+ node.outputs = inputStorage;
91
+ }
92
+ }
93
+ }
94
+ /**
95
+ * If regroup is requested, execute regroup strategy, delete child's inputs, outputs and empty regroup array.
96
+ */
97
+ if ((noFlags || params.regroup) && pipelineCopy.regroup) {
98
+ node.children = (0, regroup_1.Regroup)(inputStorage, pipelineCopy.regroup);
99
+ delete node.inputs;
100
+ delete node.outputs;
101
+ return traverse(node.children, {
102
+ ...params,
103
+ pipeline: {
104
+ ...pipelineCopy,
105
+ regroup: undefined,
106
+ },
107
+ defaults,
108
+ config,
109
+ });
110
+ }
111
+ /**
112
+ * If iteration is on compute plugin, then executes compute plugins and sets the outputs value.
113
+ */
114
+ if ((noFlags || params.compute) && pipelineCopy.compute) {
115
+ while (pipelineCopy.compute.length !== 0) {
116
+ const pluginName = pipelineCopy.compute.shift();
117
+ const plugin = params.pluginStorage.get(pluginName);
118
+ const nodeConfig = config && config[pluginName];
119
+ if ((0, interface_1.isExecute)(plugin)) {
120
+ inputStorage = await plugin.execute(inputStorage, nodeConfig);
121
+ node.outputs = inputStorage;
122
+ debug_logger_1.debugLogger.setExecutingPluginName();
123
+ }
124
+ }
125
+ }
126
+ };
127
+ /**
128
+ * Creates copy of existing tree, then applies computing strategy.
129
+ */
130
+ const compute = async (tree, params) => {
131
+ const copyOfTree = structuredClone(tree);
132
+ await computeNode(copyOfTree, params);
133
+ return copyOfTree;
134
+ };
135
+ exports.compute = compute;
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vbGliL2NvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsdUNBQWtDO0FBQ2xDLHVDQUF5QztBQUV6Qyw2Q0FBNkM7QUFDN0MsaUVBQTJEO0FBQzNELHFEQUFnRDtBQUVoRCwrQ0FBMEM7QUFHMUMsa0RBQTZDO0FBRTdDLE1BQU0sRUFBQyxnQ0FBZ0MsRUFBRSxjQUFjLEVBQUMsR0FBRyxpQkFBTyxDQUFDO0FBRW5FOztHQUVHO0FBQ0gsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLFFBQWEsRUFBRSxNQUFxQixFQUFFLEVBQUU7SUFDOUQsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUU7UUFDNUIsTUFBTSxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzVDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUNwQixNQUFzQixFQUN0QixRQUFrQyxFQUNsQyxFQUFFO0lBQ0YsSUFBSSxNQUFNLEVBQUU7UUFDVixNQUFNLFFBQVEsR0FBRyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBQSxzQkFBWSxFQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRVgsT0FBTyxRQUFRLENBQUM7S0FDakI7SUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFFaEQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFB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Zi1jb3JlL3R5cGVzJztcblxuaW1wb3J0IHtSZWdyb3VwfSBmcm9tICcuL3JlZ3JvdXAnO1xuaW1wb3J0IHthZGRFeHBsYWluRGF0YX0gZnJvbSAnLi9leHBsYWluJztcblxuaW1wb3J0IHttZXJnZU9iamVjdHN9IGZyb20gJy4uL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge2RlYnVnTG9nZ2VyfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC9kZWJ1Zy1sb2dnZXInO1xuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2xvZ2dlcic7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnL3N0cmluZ3MnO1xuXG5pbXBvcnQge0NvbXB1dGVQYXJhbXMsIE5vZGUsIFBoYXNlZFBpcGVsaW5lfSBmcm9tICcuLi90eXBlcy9jb21wdXRlJztcbmltcG9ydCB7aXNFeGVjdXRlfSBmcm9tICcuLi90eXBlcy9pbnRlcmZhY2UnO1xuXG5jb25zdCB7TUVSR0lOR19ERUZBVUxUU19XSVRIX0lOUFVUX0RBVEEsIEVNUFRZX1BJUEVMSU5FfSA9IFNUUklOR1M7XG5cbi8qKlxuICogVHJhdmVyc2VzIGFsbCBjaGlsZCBub2RlcyBiYXNlZCBvbiBjaGlsZHJlbiBncm91cGluZy5cbiAqL1xuY29uc3QgdHJhdmVyc2UgPSBhc3luYyAoY2hpbGRyZW46IGFueSwgcGFyYW1zOiBDb21wdXRlUGFyYW1zKSA9PiB7XG4gIGZvciAoY29uc3QgY2hpbGQgaW4gY2hpbGRyZW4pIHtcbiAgICBhd2FpdCBjb21wdXRlTm9kZShjaGlsZHJlbltjaGlsZF0sIHBhcmFtcyk7XG4gIH1cbn07XG5cbi8qKlxuICogQXBwZW5kcyBgZGVmYXVsdGAgdmFsdWVzIHRvIGBpbnB1dHNgLlxuICovXG5jb25zdCBtZXJnZURlZmF1bHRzID0gKFxuICBpbnB1dHM6IFBsdWdpblBhcmFtc1tdLFxuICBkZWZhdWx0czogUGx1Z2luUGFyYW1zIHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgaWYgKGlucHV0cykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gZGVmYXVsdHNcbiAgICAgID8gaW5wdXRzLm1hcChpbnB1dCA9PiBtZXJnZU9iamVjdHMoZGVmYXVsdHMsIGlucHV0KSlcbiAgICAgIDogaW5wdXRzO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgY29uc29sZS5kZWJ1ZyhNRVJHSU5HX0RFRkFVTFRTX1dJVEhfSU5QVVRfREFUQSk7XG5cbiAgcmV0dXJuIGRlZmF1bHRzID8gW2RlZmF1bHRzXSA6IFtdO1xufTtcblxuLyoqXG4gKiAxLiBJZiB0aGUgbm9kZSBoYXMgaXQncyBvd24gcGlwZWxpbmUsIGRlZmF1bHRzIG9yIGNvbmZpZyB0aGVuIHVzZSB0aGF0LFxuICogICAgb3RoZXJ3aXNlIHVzZSB3aGF0ZXZlciBoYXMgYmVlbiBwYXNzZWQgZG93biBmcm9tIGZ1cnRoZXIgdXAgdGhlIHRyZWUuXG4gKiAyLiBJZiBpdCdzIGEgZ3JvdXBpbmcgbm9kZSwgdGhlbiBmaXJzdCBvZiBhbGwgY29tcHV0ZXMgYWxsIGl0J3MgY2hpbGRyZW4uXG4gKiAgICBUaGlzIGlzIGRvaW5nIGEgZGVwdGggZmlyc3QgdHJhdmVyc2FsLlxuICogMy4gT3RoZXJ3aXNlIG1lcmdlcyB0aGUgZGVmYXVsdHMgaW50byB0aGUgaW5wdXRzLlxuICogNC4gSXRlcmF0ZXMgb3ZlciBwaXBlbGluZSBwaGFzZXMgKG9ic2VydmUsIHJlZ3JvdXAsIGNvbXB1dGUpLlxuICogNS4gT2JzZXJ2ZSBwbHVnaW5zIGFyZSB1c2VkIHRvIGluc2VydCBpbnB1dCB2YWx1ZXNcbiAqICAgIChpc29sYXRlZCBleGVjdXRpb24gY2FuIGJlIGFjaGl2ZWQgYnkgcGFzc2luZyBgLS1vYnNlcnZlYCBmbGFnIHRvIENMSSBjb21tYW5kKS5cbiAqIDYuIFJlZ3JvdXAgcGx1Z2luIGlzIHVzZWQgdG8gZ3JvdXAgZXhpc3RpbmcgaW5wdXRzIGJ5IGNyaXRlcmlhXG4gKiAgICAoaXNvbGF0ZWQgZXhlY3V0aW9uIGNhbiBiZSBhY2hpdmVkIGJ5IHBhc3NpbmcgYC0tcmVncm91cGAgZmxhZyB0byBDTEkgY29tbWFuZCkuXG4gKiAgICBTaW5jZSBpdCBjcmVhdGVzIG5ldyBjaGlsZHJlbiBmb3Igbm9kZSwgZXhpc3RpbmcgaW5wdXRzIGFuZCBvdXRwdXRzIGFyZSBkcm9wcGVkIGFuZCByZWN1cnNpdmUgdHJhdmVyc2FsIGlzIGNhbGxlZFxuICogICAgZm9yIG5ld2JvcmQgY2hpbGQgY29tcG9uZW50LlxuICogNy4gQ29tcHV0ZSBwbHVnaW5zIGFyZSB1c2VkIHRvIGRvIGRlc2lyZWQgY29tcHV0YXRpb25zIGFuZCBhcHBlbmRpbmcgdGhlIHJlc3VsdCB0byBvdXRwdXRzXG4gKiAgICAoaXNvbGF0ZWQgZXhlY3V0aW9uIGNhbiBiZSBhY2hpdmVkIGJ5IHBhc3NpbmcgYC0tY29tcHV0ZWAgZmxhZyB0byBDTEkgY29tbWFuZCkuXG4gKi9cbmNvbnN0IGNvbXB1dGVOb2RlID0gYXN5bmMgKG5vZGU6IE5vZGUsIHBhcmFtczogQ29tcHV0ZVBhcmFtcyk6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IHBpcGVsaW5lID0gbm9kZS5waXBlbGluZSB8fCAocGFyYW1zLnBpcGVsaW5lIGFzIFBoYXNlZFBpcGVsaW5lKTtcbiAgY29uc3QgY29uZmlnID0gbm9kZS5jb25maWcgfHwgcGFyYW1zLmNvbmZpZztcbiAgY29uc3QgZGVmYXVsdHMgPSBub2RlLmRlZmF1bHRzIHx8IHBhcmFtcy5kZWZhdWx0cztcbiAgY29uc3Qgbm9GbGFncyA9ICFwYXJhbXMub2JzZXJ2ZSAmJiAhcGFyYW1zLnJlZ3JvdXAgJiYgIXBhcmFtcy5jb21wdXRlO1xuXG4gIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRyYXZlcnNlKG5vZGUuY2hpbGRyZW4sIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHBpcGVsaW5lLFxuICAgICAgZGVmYXVsdHMsXG4gICAgICBjb25maWcsXG4gICAgfSk7XG4gIH1cblxuICBsZXQgaW5wdXRTdG9yYWdlID0gc3RydWN0dXJlZENsb25lKG5vZGUuaW5wdXRzKSBhcyBQbHVnaW5QYXJhbXNbXTtcbiAgaW5wdXRTdG9yYWdlID0gbWVyZ2VEZWZhdWx0cyhpbnB1dFN0b3JhZ2UsIGRlZmF1bHRzKTtcbiAgY29uc3QgcGlwZWxpbmVDb3B5ID0gc3RydWN0dXJlZENsb25lKHBpcGVsaW5lKSB8fCB7fTtcblxuICAvKiogQ2hlY2tzIGlmIHBpcGVsaW5lIGlzIG5vdCBhbiBhcnJheSBvciBlbXB0eSBvYmplY3QuICovXG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KHBpcGVsaW5lQ29weSkgfHxcbiAgICAodHlwZW9mIHBpcGVsaW5lQ29weSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHBpcGVsaW5lQ29weSAhPT0gbnVsbCAmJlxuICAgICAgT2JqZWN0LmtleXMocGlwZWxpbmVDb3B5KS5sZW5ndGggPT09IDApXG4gICkge1xuICAgIGxvZ2dlci53YXJuKEVNUFRZX1BJUEVMSU5FKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBpdGVyYXRpb24gaXMgb24gb2JzZXJ2ZSBwaXBlbGluZSwgdGhlbiBleGVjdXRlcyBvYnNlcnZlIHBsdWdpbnMgYW5kIHNldHMgdGhlIGlucHV0cyB2YWx1ZS5cbiAgICovXG4gIGlmICgobm9GbGFncyB8fCBwYXJhbXMub2JzZXJ2ZSkgJiYgcGlwZWxpbmVDb3B5Lm9ic2VydmUpIHtcbiAgICB3aGlsZSAocGlwZWxpbmVDb3B5Lm9ic2VydmUubGVuZ3RoICE9PSAwKSB7XG4gICAgICBjb25zdCBwbHVnaW5OYW1lID0gcGlwZWxpbmVDb3B5Lm9ic2VydmUuc2hpZnQoKSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwYXJhbXMucGx1Z2luU3RvcmFnZS5nZXQocGx1Z2luTmFtZSk7XG4gICAgICBjb25zdCBub2RlQ29uZmlnID0gY29uZmlnICYmIGNvbmZpZ1twbHVnaW5OYW1lXTtcblxuICAgICAgaWYgKGlzRXhlY3V0ZShwbHVnaW4pKSB7XG4gICAgICAgIGlucHV0U3RvcmFnZSA9IGF3YWl0IHBsdWdpbi5leGVjdXRlKGlucHV0U3RvcmFnZSwgbm9kZUNvbmZpZyk7XG4gICAgICAgIG5vZGUuaW5wdXRzID0gaW5wdXRTdG9yYWdlO1xuXG4gICAgICAgIGlmIChwYXJhbXMuY29udGV4dC5leHBsYWluZXIpIHtcbiAgICAgICAgICBhZGRFeHBsYWluRGF0YSh7XG4gICAgICAgICAgICBwbHVnaW5OYW1lLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHBsdWdpbi5tZXRhZGF0YSxcbiAgICAgICAgICAgIHBsdWdpbkRhdGE6IHBhcmFtcy5jb250ZXh0LmluaXRpYWxpemUhLnBsdWdpbnNbcGx1Z2luTmFtZV0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLm91dHB1dHMgPSBpbnB1dFN0b3JhZ2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHJlZ3JvdXAgaXMgcmVxdWVzdGVkLCBleGVjdXRlIHJlZ3JvdXAgc3RyYXRlZ3ksIGRlbGV0ZSBjaGlsZCdzIGlucHV0cywgb3V0cHV0cyBhbmQgZW1wdHkgcmVncm91cCBhcnJheS5cbiAgICovXG4gIGlmICgobm9GbGFncyB8fCBwYXJhbXMucmVncm91cCkgJiYgcGlwZWxpbmVDb3B5LnJlZ3JvdXApIHtcbiAgICBub2RlLmNoaWxkcmVuID0gUmVncm91cChpbnB1dFN0b3JhZ2UsIHBpcGVsaW5lQ29weS5yZWdyb3VwKTtcbiAgICBkZWxldGUgbm9kZS5pbnB1dHM7XG4gICAgZGVsZXRlIG5vZGUub3V0cHV0cztcblxuICAgIHJldHVybiB0cmF2ZXJzZShub2RlLmNoaWxkcmVuLCB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBwaXBlbGluZToge1xuICAgICAgICAuLi5waXBlbGluZUNvcHksXG4gICAgICAgIHJlZ3JvdXA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0cyxcbiAgICAgIGNvbmZpZyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBpdGVyYXRpb24gaXMgb24gY29tcHV0ZSBwbHVnaW4sIHRoZW4gZXhlY3V0ZXMgY29tcHV0ZSBwbHVnaW5zIGFuZCBzZXRzIHRoZSBvdXRwdXRzIHZhbHVlLlxuICAgKi9cbiAgaWYgKChub0ZsYWdzIHx8IHBhcmFtcy5jb21wdXRlKSAmJiBwaXBlbGluZUNvcHkuY29tcHV0ZSkge1xuICAgIHdoaWxlIChwaXBlbGluZUNvcHkuY29tcHV0ZS5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IHBsdWdpbk5hbWUgPSBwaXBlbGluZUNvcHkuY29tcHV0ZS5zaGlmdCgpIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBhcmFtcy5wbHVnaW5TdG9yYWdlLmdldChwbHVnaW5OYW1lKTtcbiAgICAgIGNvbnN0IG5vZGVDb25maWcgPSBjb25maWcgJiYgY29uZmlnW3BsdWdpbk5hbWVdO1xuXG4gICAgICBpZiAoaXNFeGVjdXRlKHBsdWdpbikpIHtcbiAgICAgICAgaW5wdXRTdG9yYWdlID0gYXdhaXQgcGx1Z2luLmV4ZWN1dGUoaW5wdXRTdG9yYWdlLCBub2RlQ29uZmlnKTtcbiAgICAgICAgbm9kZS5vdXRwdXRzID0gaW5wdXRTdG9yYWdlO1xuICAgICAgICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgY29weSBvZiBleGlzdGluZyB0cmVlLCB0aGVuIGFwcGxpZXMgY29tcHV0aW5nIHN0cmF0ZWd5LlxuICovXG5leHBvcnQgY29uc3QgY29tcHV0ZSA9IGFzeW5jICh0cmVlOiBhbnksIHBhcmFtczogQ29tcHV0ZVBhcmFtcykgPT4ge1xuICBjb25zdCBjb3B5T2ZUcmVlID0gc3RydWN0dXJlZENsb25lKHRyZWUpO1xuXG4gIGF3YWl0IGNvbXB1dGVOb2RlKGNvcHlPZlRyZWUsIHBhcmFtcyk7XG5cbiAgcmV0dXJuIGNvcHlPZlRyZWU7XG59O1xuIl19
@@ -1,4 +1,4 @@
1
- import { Manifest } from '../types/manifest';
1
+ import { Manifest } from '../../common/types/manifest';
2
2
  /**
3
3
  * Injects execution information (command, environment) to existing manifest.
4
4
  */