@grnsft/if 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/.env +5 -0
  2. package/build/common/config/index.d.ts +1 -0
  3. package/build/common/config/index.js +6 -0
  4. package/build/common/config/strings.d.ts +11 -0
  5. package/build/common/config/strings.js +19 -0
  6. package/build/common/lib/load.d.ts +6 -0
  7. package/build/common/lib/load.js +18 -0
  8. package/build/common/types/manifest.d.ts +13 -0
  9. package/build/common/types/manifest.js +3 -0
  10. package/build/common/util/debug-logger.d.ts +4 -0
  11. package/build/common/util/debug-logger.js +124 -0
  12. package/build/common/util/fs.d.ts +20 -0
  13. package/build/common/util/fs.js +94 -0
  14. package/build/common/util/helpers.d.ts +15 -0
  15. package/build/common/util/helpers.js +80 -0
  16. package/build/common/util/logger.d.ts +5 -0
  17. package/build/common/util/logger.js +39 -0
  18. package/build/common/util/validations.d.ts +465 -0
  19. package/build/common/util/validations.js +148 -0
  20. package/build/common/util/yaml.d.ts +12 -0
  21. package/build/common/util/yaml.js +59 -0
  22. package/build/if-check/config/config.d.ts +6 -0
  23. package/build/if-check/config/config.js +31 -0
  24. package/build/if-check/config/index.d.ts +2 -0
  25. package/build/if-check/config/index.js +8 -0
  26. package/build/if-check/config/strings.d.ts +11 -0
  27. package/build/if-check/config/strings.js +15 -0
  28. package/build/if-check/index.d.ts +2 -0
  29. package/build/if-check/index.js +98 -0
  30. package/build/if-check/types/process-args.d.ts +4 -0
  31. package/build/if-check/types/process-args.js +3 -0
  32. package/build/if-check/util/args.d.ts +10 -0
  33. package/build/if-check/util/args.js +56 -0
  34. package/build/if-check/util/helpers.d.ts +4 -0
  35. package/build/if-check/util/helpers.js +18 -0
  36. package/build/if-check/util/npm.d.ts +4 -0
  37. package/build/if-check/util/npm.js +59 -0
  38. package/build/if-csv/config/config.d.ts +6 -0
  39. package/build/if-csv/config/config.js +36 -0
  40. package/build/if-csv/config/index.d.ts +2 -0
  41. package/build/if-csv/config/index.js +8 -0
  42. package/build/if-csv/config/strings.d.ts +3 -0
  43. package/build/if-csv/config/strings.js +7 -0
  44. package/build/if-csv/index.d.ts +2 -0
  45. package/build/if-csv/index.js +63 -0
  46. package/build/if-csv/types/csv.d.ts +7 -0
  47. package/build/if-csv/types/csv.js +3 -0
  48. package/build/if-csv/types/process-args.d.ts +5 -0
  49. package/build/if-csv/types/process-args.js +3 -0
  50. package/build/if-csv/util/args.d.ts +12 -0
  51. package/build/if-csv/util/args.js +47 -0
  52. package/build/if-csv/util/helpers.d.ts +9 -0
  53. package/build/if-csv/util/helpers.js +95 -0
  54. package/build/if-diff/config/config.d.ts +6 -0
  55. package/build/if-diff/config/config.js +31 -0
  56. package/build/if-diff/config/index.d.ts +2 -0
  57. package/build/if-diff/config/index.js +8 -0
  58. package/build/if-diff/config/strings.d.ts +6 -0
  59. package/build/if-diff/config/strings.js +10 -0
  60. package/build/if-diff/index.d.ts +2 -0
  61. package/build/if-diff/index.js +46 -0
  62. package/build/if-diff/lib/compare.d.ts +10 -0
  63. package/build/if-diff/lib/compare.js +56 -0
  64. package/build/if-diff/lib/load.d.ts +63 -0
  65. package/build/if-diff/lib/load.js +51 -0
  66. package/build/if-diff/types/args.d.ts +5 -0
  67. package/build/if-diff/types/args.js +3 -0
  68. package/build/if-diff/types/compare.d.ts +7 -0
  69. package/build/if-diff/types/compare.js +3 -0
  70. package/build/if-diff/types/process-args.d.ts +4 -0
  71. package/build/if-diff/types/process-args.js +3 -0
  72. package/build/if-diff/util/args.d.ts +5 -0
  73. package/build/if-diff/util/args.js +51 -0
  74. package/build/if-diff/util/helpers.d.ts +13 -0
  75. package/build/if-diff/util/helpers.js +75 -0
  76. package/build/if-env/config/config.d.ts +6 -0
  77. package/build/if-env/config/config.js +37 -0
  78. package/build/if-env/config/index.d.ts +2 -0
  79. package/build/if-env/config/index.js +8 -0
  80. package/build/if-env/config/strings.d.ts +7 -0
  81. package/build/if-env/config/strings.js +11 -0
  82. package/build/if-env/index.d.ts +2 -0
  83. package/build/if-env/index.js +40 -0
  84. package/build/if-env/types/if-env.d.ts +8 -0
  85. package/build/if-env/types/if-env.js +3 -0
  86. package/build/if-env/types/npm.d.ts +9 -0
  87. package/build/if-env/types/npm.js +3 -0
  88. package/build/if-env/types/process-args.d.ts +5 -0
  89. package/build/if-env/types/process-args.js +3 -0
  90. package/build/if-env/util/args.d.ts +12 -0
  91. package/build/if-env/util/args.js +47 -0
  92. package/build/if-env/util/helpers.d.ts +20 -0
  93. package/build/if-env/util/helpers.js +94 -0
  94. package/build/if-env/util/npm.d.ts +24 -0
  95. package/build/if-env/util/npm.js +126 -0
  96. package/build/if-merge/config/config.d.ts +6 -0
  97. package/build/if-merge/config/config.js +43 -0
  98. package/build/if-merge/config/index.d.ts +2 -0
  99. package/build/if-merge/config/index.js +8 -0
  100. package/build/if-merge/config/strings.d.ts +5 -0
  101. package/build/if-merge/config/strings.js +9 -0
  102. package/build/if-merge/index.d.ts +2 -0
  103. package/build/if-merge/index.js +26 -0
  104. package/build/if-merge/types/process-args.d.ts +6 -0
  105. package/build/if-merge/types/process-args.js +3 -0
  106. package/build/if-merge/util/args.d.ts +9 -0
  107. package/build/if-merge/util/args.js +59 -0
  108. package/build/if-merge/util/helpers.d.ts +5 -0
  109. package/build/if-merge/util/helpers.js +83 -0
  110. package/build/if-run/builtins/coefficient/index.d.ts +16 -0
  111. package/build/if-run/builtins/coefficient/index.js +45 -0
  112. package/build/if-run/builtins/copy-param/index.d.ts +21 -0
  113. package/build/if-run/builtins/copy-param/index.js +58 -0
  114. package/build/if-run/builtins/csv-lookup/index.d.ts +16 -0
  115. package/build/if-run/builtins/csv-lookup/index.js +175 -0
  116. package/build/if-run/builtins/divide/index.d.ts +16 -0
  117. package/build/if-run/builtins/divide/index.js +68 -0
  118. package/build/if-run/builtins/exponent/index.d.ts +16 -0
  119. package/build/if-run/builtins/exponent/index.js +52 -0
  120. package/build/if-run/builtins/export-log.d.ts +4 -0
  121. package/build/if-run/builtins/export-log.js +44 -0
  122. package/build/if-run/builtins/export-yaml.d.ts +4 -0
  123. package/build/if-run/builtins/export-yaml.js +30 -0
  124. package/build/if-run/builtins/index.d.ts +16 -0
  125. package/build/if-run/builtins/index.js +36 -0
  126. package/build/if-run/builtins/interpolation/index.d.ts +16 -0
  127. package/build/if-run/builtins/interpolation/index.js +138 -0
  128. package/build/if-run/builtins/mock-observations/helpers/common-generator.d.ts +3 -0
  129. package/build/if-run/builtins/mock-observations/helpers/common-generator.js +29 -0
  130. package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.d.ts +3 -0
  131. package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.js +48 -0
  132. package/build/if-run/builtins/mock-observations/index.d.ts +16 -0
  133. package/build/if-run/builtins/mock-observations/index.js +108 -0
  134. package/build/if-run/builtins/mock-observations/interfaces/index.d.ts +6 -0
  135. package/build/if-run/builtins/mock-observations/interfaces/index.js +3 -0
  136. package/build/if-run/builtins/multiply/index.d.ts +16 -0
  137. package/build/if-run/builtins/multiply/index.js +47 -0
  138. package/build/if-run/builtins/regex/index.d.ts +16 -0
  139. package/build/if-run/builtins/regex/index.js +55 -0
  140. package/build/if-run/builtins/sci/index.d.ts +16 -0
  141. package/build/if-run/builtins/sci/index.js +92 -0
  142. package/build/if-run/builtins/sci-embodied/index.d.ts +16 -0
  143. package/build/if-run/builtins/sci-embodied/index.js +142 -0
  144. package/build/if-run/builtins/shell/index.d.ts +16 -0
  145. package/build/if-run/builtins/shell/index.js +50 -0
  146. package/build/if-run/builtins/subtract/index.d.ts +16 -0
  147. package/build/if-run/builtins/subtract/index.js +51 -0
  148. package/build/if-run/builtins/sum/index.d.ts +16 -0
  149. package/build/if-run/builtins/sum/index.js +37 -0
  150. package/build/if-run/builtins/time-converter/config.d.ts +1 -0
  151. package/build/if-run/builtins/time-converter/config.js +44 -0
  152. package/build/if-run/builtins/time-converter/index.d.ts +16 -0
  153. package/build/if-run/builtins/time-converter/index.js +63 -0
  154. package/build/if-run/builtins/time-sync/index.d.ts +31 -0
  155. package/build/if-run/builtins/time-sync/index.js +371 -0
  156. package/build/if-run/config/config.d.ts +9 -0
  157. package/build/if-run/config/config.js +79 -0
  158. package/build/if-run/config/index.d.ts +2 -0
  159. package/build/if-run/config/index.js +8 -0
  160. package/build/if-run/config/strings.d.ts +62 -0
  161. package/build/if-run/config/strings.js +81 -0
  162. package/build/if-run/index.d.ts +2 -0
  163. package/build/if-run/index.js +58 -0
  164. package/build/if-run/lib/aggregate.d.ts +14 -0
  165. package/build/if-run/lib/aggregate.js +130 -0
  166. package/build/if-run/lib/compute.d.ts +5 -0
  167. package/build/if-run/lib/compute.js +164 -0
  168. package/build/if-run/lib/environment.d.ts +5 -0
  169. package/build/if-run/lib/environment.js +75 -0
  170. package/build/if-run/lib/exhaust.d.ts +7 -0
  171. package/build/if-run/lib/exhaust.js +27 -0
  172. package/build/if-run/lib/explain.d.ts +9 -0
  173. package/build/if-run/lib/explain.js +72 -0
  174. package/build/if-run/lib/initialize.d.ts +10 -0
  175. package/build/if-run/lib/initialize.js +113 -0
  176. package/build/if-run/lib/regroup.d.ts +5 -0
  177. package/build/if-run/lib/regroup.js +67 -0
  178. package/build/if-run/types/aggregation.d.ts +2 -0
  179. package/build/if-run/types/aggregation.js +11 -0
  180. package/build/if-run/types/compute.d.ts +33 -0
  181. package/build/if-run/types/compute.js +3 -0
  182. package/build/if-run/types/environment.d.ts +18 -0
  183. package/build/if-run/types/environment.js +3 -0
  184. package/build/if-run/types/explain.d.ts +16 -0
  185. package/build/if-run/types/explain.js +3 -0
  186. package/build/if-run/types/plugin-storage.d.ts +6 -0
  187. package/build/if-run/types/plugin-storage.js +3 -0
  188. package/build/if-run/types/process-args.d.ts +27 -0
  189. package/build/if-run/types/process-args.js +3 -0
  190. package/build/if-run/util/aggregation-helper.d.ts +6 -0
  191. package/build/if-run/util/aggregation-helper.js +52 -0
  192. package/build/if-run/util/args.d.ts +9 -0
  193. package/build/if-run/util/args.js +61 -0
  194. package/build/if-run/util/helpers.d.ts +8 -0
  195. package/build/if-run/util/helpers.js +37 -0
  196. package/build/if-run/util/log-memoize.d.ts +3 -0
  197. package/build/if-run/util/log-memoize.js +19 -0
  198. package/build/if-run/util/os-checker.d.ts +7 -0
  199. package/build/if-run/util/os-checker.js +97 -0
  200. package/build/if-run/util/plugin-storage.d.ts +14 -0
  201. package/build/if-run/util/plugin-storage.js +34 -0
  202. package/coverage/clover.xml +2045 -0
  203. package/coverage/coverage-final.json +55 -0
  204. package/coverage/lcov-report/base.css +224 -0
  205. package/coverage/lcov-report/block-navigation.js +87 -0
  206. package/coverage/lcov-report/builtins/coefficient/index.html +116 -0
  207. package/coverage/lcov-report/builtins/coefficient/index.ts.html +298 -0
  208. package/coverage/lcov-report/builtins/csv-lookup/index.html +116 -0
  209. package/coverage/lcov-report/builtins/csv-lookup/index.ts.html +826 -0
  210. package/coverage/lcov-report/builtins/divide/index.html +116 -0
  211. package/coverage/lcov-report/builtins/divide/index.ts.html +358 -0
  212. package/coverage/lcov-report/builtins/exponent/index.html +116 -0
  213. package/coverage/lcov-report/builtins/exponent/index.ts.html +361 -0
  214. package/coverage/lcov-report/builtins/export-csv-raw.ts.html +553 -0
  215. package/coverage/lcov-report/builtins/export-csv.ts.html +436 -0
  216. package/coverage/lcov-report/builtins/export-log.ts.html +148 -0
  217. package/coverage/lcov-report/builtins/export-yaml.ts.html +193 -0
  218. package/coverage/lcov-report/builtins/group-by.ts.html +370 -0
  219. package/coverage/lcov-report/builtins/index.html +206 -0
  220. package/coverage/lcov-report/builtins/index.ts.html +130 -0
  221. package/coverage/lcov-report/builtins/interpolation/index.html +116 -0
  222. package/coverage/lcov-report/builtins/interpolation/index.ts.html +676 -0
  223. package/coverage/lcov-report/builtins/interpolation/types.ts.html +100 -0
  224. package/coverage/lcov-report/builtins/mock-observations/helpers/common-generator.ts.html +184 -0
  225. package/coverage/lcov-report/builtins/mock-observations/helpers/index.html +131 -0
  226. package/coverage/lcov-report/builtins/mock-observations/helpers/rand-int-generator.ts.html +289 -0
  227. package/coverage/lcov-report/builtins/mock-observations/index.html +116 -0
  228. package/coverage/lcov-report/builtins/mock-observations/index.ts.html +619 -0
  229. package/coverage/lcov-report/builtins/multiply/index.html +116 -0
  230. package/coverage/lcov-report/builtins/multiply/index.ts.html +343 -0
  231. package/coverage/lcov-report/builtins/regex/index.html +116 -0
  232. package/coverage/lcov-report/builtins/regex/index.ts.html +373 -0
  233. package/coverage/lcov-report/builtins/sci/config.ts.html +205 -0
  234. package/coverage/lcov-report/builtins/sci/index.html +116 -0
  235. package/coverage/lcov-report/builtins/sci/index.ts.html +325 -0
  236. package/coverage/lcov-report/builtins/sci-embodied/index.html +116 -0
  237. package/coverage/lcov-report/builtins/sci-embodied/index.ts.html +478 -0
  238. package/coverage/lcov-report/builtins/shell/index.html +116 -0
  239. package/coverage/lcov-report/builtins/shell/index.ts.html +280 -0
  240. package/coverage/lcov-report/builtins/subtract/index.html +116 -0
  241. package/coverage/lcov-report/builtins/subtract/index.ts.html +379 -0
  242. package/coverage/lcov-report/builtins/sum/index.html +116 -0
  243. package/coverage/lcov-report/builtins/sum/index.ts.html +334 -0
  244. package/coverage/lcov-report/builtins/time-sync.ts.html +1462 -0
  245. package/coverage/lcov-report/common/config/index.html +131 -0
  246. package/coverage/lcov-report/common/config/index.ts.html +88 -0
  247. package/coverage/lcov-report/common/config/strings.ts.html +121 -0
  248. package/coverage/lcov-report/common/lib/index.html +116 -0
  249. package/coverage/lcov-report/common/lib/load.ts.html +139 -0
  250. package/coverage/lcov-report/common/util/debug-logger.ts.html +511 -0
  251. package/coverage/lcov-report/common/util/fs.ts.html +289 -0
  252. package/coverage/lcov-report/common/util/helpers.ts.html +280 -0
  253. package/coverage/lcov-report/common/util/index.html +191 -0
  254. package/coverage/lcov-report/common/util/logger.ts.html +151 -0
  255. package/coverage/lcov-report/common/util/validations.ts.html +613 -0
  256. package/coverage/lcov-report/common/util/yaml.ts.html +193 -0
  257. package/coverage/lcov-report/config/config.ts.html +463 -0
  258. package/coverage/lcov-report/config/index.html +161 -0
  259. package/coverage/lcov-report/config/index.ts.html +94 -0
  260. package/coverage/lcov-report/config/params.ts.html +697 -0
  261. package/coverage/lcov-report/config/strings.ts.html +490 -0
  262. package/coverage/lcov-report/favicon.png +0 -0
  263. package/coverage/lcov-report/if-check/config/config.ts.html +184 -0
  264. package/coverage/lcov-report/if-check/config/index.html +146 -0
  265. package/coverage/lcov-report/if-check/config/index.ts.html +91 -0
  266. package/coverage/lcov-report/if-check/config/strings.ts.html +142 -0
  267. package/coverage/lcov-report/if-check/util/args.ts.html +304 -0
  268. package/coverage/lcov-report/if-check/util/helpers.ts.html +136 -0
  269. package/coverage/lcov-report/if-check/util/index.html +146 -0
  270. package/coverage/lcov-report/if-check/util/npm.ts.html +232 -0
  271. package/coverage/lcov-report/if-csv/util/helpers.ts.html +346 -0
  272. package/coverage/lcov-report/if-csv/util/index.html +116 -0
  273. package/coverage/lcov-report/if-diff/config/config.ts.html +184 -0
  274. package/coverage/lcov-report/if-diff/config/index.html +146 -0
  275. package/coverage/lcov-report/if-diff/config/index.ts.html +91 -0
  276. package/coverage/lcov-report/if-diff/config/strings.ts.html +100 -0
  277. package/coverage/lcov-report/if-diff/lib/compare.ts.html +286 -0
  278. package/coverage/lcov-report/if-diff/lib/index.html +131 -0
  279. package/coverage/lcov-report/if-diff/lib/load.ts.html +199 -0
  280. package/coverage/lcov-report/if-diff/util/args.ts.html +268 -0
  281. package/coverage/lcov-report/if-diff/util/helpers.ts.html +337 -0
  282. package/coverage/lcov-report/if-diff/util/index.html +131 -0
  283. package/coverage/lcov-report/if-env/config/config.ts.html +211 -0
  284. package/coverage/lcov-report/if-env/config/index.html +146 -0
  285. package/coverage/lcov-report/if-env/config/index.ts.html +91 -0
  286. package/coverage/lcov-report/if-env/config/strings.ts.html +109 -0
  287. package/coverage/lcov-report/if-env/util/args.ts.html +250 -0
  288. package/coverage/lcov-report/if-env/util/index.html +131 -0
  289. package/coverage/lcov-report/if-env/util/npm.ts.html +526 -0
  290. package/coverage/lcov-report/if-merge/util/args.ts.html +295 -0
  291. package/coverage/lcov-report/if-merge/util/helpers.ts.html +301 -0
  292. package/coverage/lcov-report/if-merge/util/index.html +131 -0
  293. package/coverage/lcov-report/if-run/builtins/coefficient/index.html +116 -0
  294. package/coverage/lcov-report/if-run/builtins/coefficient/index.ts.html +382 -0
  295. package/coverage/lcov-report/if-run/builtins/copy-param/index.html +116 -0
  296. package/coverage/lcov-report/if-run/builtins/copy-param/index.ts.html +415 -0
  297. package/coverage/lcov-report/if-run/builtins/csv-lookup/index.html +116 -0
  298. package/coverage/lcov-report/if-run/builtins/csv-lookup/index.ts.html +868 -0
  299. package/coverage/lcov-report/if-run/builtins/divide/index.html +116 -0
  300. package/coverage/lcov-report/if-run/builtins/divide/index.ts.html +469 -0
  301. package/coverage/lcov-report/if-run/builtins/exponent/index.html +116 -0
  302. package/coverage/lcov-report/if-run/builtins/exponent/index.ts.html +394 -0
  303. package/coverage/lcov-report/if-run/builtins/export-csv-raw.ts.html +553 -0
  304. package/coverage/lcov-report/if-run/builtins/export-csv.ts.html +436 -0
  305. package/coverage/lcov-report/if-run/builtins/export-log.ts.html +148 -0
  306. package/coverage/lcov-report/if-run/builtins/export-yaml.ts.html +193 -0
  307. package/coverage/lcov-report/if-run/builtins/group-by.ts.html +370 -0
  308. package/coverage/lcov-report/if-run/builtins/index.html +146 -0
  309. package/coverage/lcov-report/if-run/builtins/index.ts.html +133 -0
  310. package/coverage/lcov-report/if-run/builtins/interpolation/index.html +116 -0
  311. package/coverage/lcov-report/if-run/builtins/interpolation/index.ts.html +709 -0
  312. package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/common-generator.ts.html +184 -0
  313. package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/index.html +131 -0
  314. package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/rand-int-generator.ts.html +289 -0
  315. package/coverage/lcov-report/if-run/builtins/mock-observations/index.html +116 -0
  316. package/coverage/lcov-report/if-run/builtins/mock-observations/index.ts.html +709 -0
  317. package/coverage/lcov-report/if-run/builtins/multiply/index.html +116 -0
  318. package/coverage/lcov-report/if-run/builtins/multiply/index.ts.html +406 -0
  319. package/coverage/lcov-report/if-run/builtins/regex/index.html +116 -0
  320. package/coverage/lcov-report/if-run/builtins/regex/index.ts.html +433 -0
  321. package/coverage/lcov-report/if-run/builtins/sci/index.html +116 -0
  322. package/coverage/lcov-report/if-run/builtins/sci/index.ts.html +502 -0
  323. package/coverage/lcov-report/if-run/builtins/sci-embodied/index.html +116 -0
  324. package/coverage/lcov-report/if-run/builtins/sci-embodied/index.ts.html +577 -0
  325. package/coverage/lcov-report/if-run/builtins/shell/index.html +116 -0
  326. package/coverage/lcov-report/if-run/builtins/shell/index.ts.html +343 -0
  327. package/coverage/lcov-report/if-run/builtins/subtract/index.html +116 -0
  328. package/coverage/lcov-report/if-run/builtins/subtract/index.ts.html +418 -0
  329. package/coverage/lcov-report/if-run/builtins/sum/index.html +116 -0
  330. package/coverage/lcov-report/if-run/builtins/sum/index.ts.html +400 -0
  331. package/coverage/lcov-report/if-run/builtins/time-converter/config.ts.html +205 -0
  332. package/coverage/lcov-report/if-run/builtins/time-converter/index.html +131 -0
  333. package/coverage/lcov-report/if-run/builtins/time-converter/index.ts.html +412 -0
  334. package/coverage/lcov-report/if-run/builtins/time-sync/index.html +116 -0
  335. package/coverage/lcov-report/if-run/builtins/time-sync/index.ts.html +1651 -0
  336. package/coverage/lcov-report/if-run/builtins/time-sync.ts.html +1462 -0
  337. package/coverage/lcov-report/if-run/config/config.ts.html +271 -0
  338. package/coverage/lcov-report/if-run/config/index.html +161 -0
  339. package/coverage/lcov-report/if-run/config/index.ts.html +94 -0
  340. package/coverage/lcov-report/if-run/config/params.ts.html +679 -0
  341. package/coverage/lcov-report/if-run/config/strings.ts.html +460 -0
  342. package/coverage/lcov-report/if-run/lib/aggregate.ts.html +580 -0
  343. package/coverage/lcov-report/if-run/lib/compute.ts.html +709 -0
  344. package/coverage/lcov-report/if-run/lib/environment.ts.html +373 -0
  345. package/coverage/lcov-report/if-run/lib/exhaust.ts.html +193 -0
  346. package/coverage/lcov-report/if-run/lib/explain.ts.html +217 -0
  347. package/coverage/lcov-report/if-run/lib/index.html +206 -0
  348. package/coverage/lcov-report/if-run/lib/initialize.ts.html +475 -0
  349. package/coverage/lcov-report/if-run/lib/parameterize.ts.html +322 -0
  350. package/coverage/lcov-report/if-run/lib/regroup.ts.html +325 -0
  351. package/coverage/lcov-report/if-run/lib/time-sync.ts.html +1510 -0
  352. package/coverage/lcov-report/if-run/types/aggregation.ts.html +94 -0
  353. package/coverage/lcov-report/if-run/types/index.html +146 -0
  354. package/coverage/lcov-report/if-run/types/interface.ts.html +112 -0
  355. package/coverage/lcov-report/if-run/types/parameters.ts.html +106 -0
  356. package/coverage/lcov-report/if-run/util/aggregation-helper.ts.html +280 -0
  357. package/coverage/lcov-report/if-run/util/args.ts.html +313 -0
  358. package/coverage/lcov-report/if-run/util/helpers.ts.html +304 -0
  359. package/coverage/lcov-report/if-run/util/index.html +191 -0
  360. package/coverage/lcov-report/if-run/util/json.ts.html +115 -0
  361. package/coverage/lcov-report/if-run/util/log-memoize.ts.html +145 -0
  362. package/coverage/lcov-report/if-run/util/os-checker.ts.html +421 -0
  363. package/coverage/lcov-report/if-run/util/plugin-storage.ts.html +202 -0
  364. package/coverage/lcov-report/index.html +521 -0
  365. package/coverage/lcov-report/lib/aggregate.ts.html +358 -0
  366. package/coverage/lcov-report/lib/compare.ts.html +286 -0
  367. package/coverage/lcov-report/lib/compute.ts.html +436 -0
  368. package/coverage/lcov-report/lib/environment.ts.html +376 -0
  369. package/coverage/lcov-report/lib/exhaust.ts.html +289 -0
  370. package/coverage/lcov-report/lib/index.html +221 -0
  371. package/coverage/lcov-report/lib/initialize.ts.html +430 -0
  372. package/coverage/lcov-report/lib/load.ts.html +268 -0
  373. package/coverage/lcov-report/lib/parameterize.ts.html +316 -0
  374. package/coverage/lcov-report/prettify.css +1 -0
  375. package/coverage/lcov-report/prettify.js +2 -0
  376. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  377. package/coverage/lcov-report/sorter.js +196 -0
  378. package/coverage/lcov-report/types/aggregation.ts.html +94 -0
  379. package/coverage/lcov-report/types/index.html +146 -0
  380. package/coverage/lcov-report/types/interface.ts.html +112 -0
  381. package/coverage/lcov-report/types/parameters.ts.html +106 -0
  382. package/coverage/lcov-report/util/aggregation-helper.ts.html +289 -0
  383. package/coverage/lcov-report/util/args.ts.html +649 -0
  384. package/coverage/lcov-report/util/debug-logger.ts.html +481 -0
  385. package/coverage/lcov-report/util/errors.ts.html +232 -0
  386. package/coverage/lcov-report/util/fs.ts.html +124 -0
  387. package/coverage/lcov-report/util/helpers.ts.html +895 -0
  388. package/coverage/lcov-report/util/index.html +296 -0
  389. package/coverage/lcov-report/util/json.ts.html +115 -0
  390. package/coverage/lcov-report/util/log-memoize.ts.html +145 -0
  391. package/coverage/lcov-report/util/logger.ts.html +151 -0
  392. package/coverage/lcov-report/util/npm.ts.html +499 -0
  393. package/coverage/lcov-report/util/os-checker.ts.html +421 -0
  394. package/coverage/lcov-report/util/plugin-storage.ts.html +202 -0
  395. package/coverage/lcov-report/util/validations.ts.html +544 -0
  396. package/coverage/lcov-report/util/yaml.ts.html +193 -0
  397. package/coverage/lcov.info +3392 -0
  398. package/manifests/outputs/features/regroup/test.yml +92 -0
  399. package/package.json +9 -8
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Sci = void 0;
4
+ const zod_1 = require("zod");
5
+ const interfaces_1 = require("@grnsft/if-core/interfaces");
6
+ const validations_1 = require("../../../common/util/validations");
7
+ const utils_1 = require("@grnsft/if-core/utils");
8
+ const validations_2 = require("../../../common/util/validations");
9
+ const config_1 = require("../../config");
10
+ const { MissingInputDataError, ConfigError } = utils_1.ERRORS;
11
+ const { MISSING_FUNCTIONAL_UNIT_CONFIG, MISSING_FUNCTIONAL_UNIT_INPUT, SCI_MISSING_FN_UNIT, ZERO_DIVISION, MISSING_CONFIG, } = config_1.STRINGS;
12
+ exports.Sci = (0, interfaces_1.PluginFactory)({
13
+ metadata: {
14
+ inputs: {
15
+ carbon: {
16
+ description: 'an amount of carbon emitted into the atmosphere',
17
+ unit: 'gCO2e',
18
+ 'aggregation-method': {
19
+ time: 'sum',
20
+ component: 'sum',
21
+ },
22
+ },
23
+ 'functional-unit': {
24
+ description: 'the name of the functional unit in which the final SCI value should be expressed, e.g. requests, users',
25
+ unit: 'none',
26
+ 'aggregation-method': {
27
+ time: 'sum',
28
+ component: 'sum',
29
+ },
30
+ },
31
+ },
32
+ outputs: {
33
+ sci: {
34
+ description: 'carbon expressed in terms of the given functional unit',
35
+ unit: 'gCO2e',
36
+ 'aggregation-method': {
37
+ time: 'avg',
38
+ component: 'sum',
39
+ },
40
+ },
41
+ },
42
+ },
43
+ configValidation: (config) => {
44
+ if (!config || !Object.keys(config)?.length) {
45
+ throw new ConfigError(MISSING_CONFIG);
46
+ }
47
+ const schema = zod_1.z
48
+ .object({
49
+ 'functional-unit': zod_1.z.string(),
50
+ })
51
+ .refine(data => data['functional-unit'], {
52
+ message: MISSING_FUNCTIONAL_UNIT_CONFIG,
53
+ });
54
+ return (0, validations_1.validate)(schema, config);
55
+ },
56
+ inputValidation: (input, config) => {
57
+ const functionalUnit = config['functional-unit'];
58
+ if (!(functionalUnit in input && input[functionalUnit] >= 0)) {
59
+ throw new MissingInputDataError(MISSING_FUNCTIONAL_UNIT_INPUT);
60
+ }
61
+ const schema = zod_1.z
62
+ .object({
63
+ carbon: zod_1.z.number().gte(0),
64
+ duration: zod_1.z.number().gte(1),
65
+ })
66
+ .refine(validations_2.allDefined, {
67
+ message: SCI_MISSING_FN_UNIT(config['functional-unit']),
68
+ });
69
+ return (0, validations_1.validate)(schema, input);
70
+ },
71
+ implementation: async (inputs, config) => {
72
+ return inputs.map((input, index) => {
73
+ const functionalUnit = isNaN(config['functional-unit'])
74
+ ? input[config['functional-unit']]
75
+ : config['functional-unit'];
76
+ if (functionalUnit === 0) {
77
+ console.warn(ZERO_DIVISION(exports.Sci.name, index));
78
+ return {
79
+ ...input,
80
+ sci: input['carbon'],
81
+ };
82
+ }
83
+ const calculatedResult = input['carbon'] / functionalUnit;
84
+ return {
85
+ ...input,
86
+ sci: calculatedResult,
87
+ };
88
+ });
89
+ },
90
+ allowArithmeticExpressions: ['functional-unit'],
91
+ });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3NjaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFFdEIsMkRBQXlEO0FBR3pELGtFQUEwRDtBQUUxRCxpREFBNkM7QUFFN0Msa0VBQTREO0FBRTVELHlDQUFxQztBQUVyQyxNQUFNLEVBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQ3BELE1BQU0sRUFDSiw4QkFBOEIsRUFDOUIsNkJBQTZCLEVBQzdCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsY0FBYyxHQUNmLEdBQUcsZ0JBQU8sQ0FBQztBQUVDLFFBQUEsR0FBRyxHQUFHLElBQUEsMEJBQWEsRUFBQztJQUMvQixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUU7Z0JBQ04sV0FBVyxFQUFFLGlEQUFpRDtnQkFDOUQsSUFBSSxFQUFFLE9BQU87Z0JBQ2Isb0JBQW9CLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxLQUFLO29CQUNYLFNBQVMsRUFBRSxLQUFLO2lCQUNqQjthQUNGO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2pCLFdBQVcsRUFDVCx3R0FBd0c7Z0JBQzFHLElBQUksRUFBRSxNQUFNO2dCQUNaLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsS0FBSztvQkFDWCxTQUFTLEVBQUUsS0FBSztpQkFDakI7YUFDRjtTQUNGO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsR0FBRyxFQUFFO2dCQUNILFdBQVcsRUFBRSx3REFBd0Q7Z0JBQ3JFLElBQUksRUFBRSxPQUFPO2dCQUNiLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsS0FBSztvQkFDWCxTQUFTLEVBQUUsS0FBSztpQkFDakI7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRSxDQUFDLE1BQW9CLEVBQUUsRUFBRTtRQUN6QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsTUFBTSxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2QztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQUM7YUFDYixNQUFNLENBQUM7WUFDTixpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1NBQzlCLENBQUM7YUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUN2QyxPQUFPLEVBQUUsOEJBQThCO1NBQ3hDLENBQUMsQ0FBQztRQUVMLE9BQU8sSUFBQSxzQkFBUSxFQUF5QixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELGVBQWUsRUFBRSxDQUFDLEtBQW1CLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQzdELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQzVELE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hFO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBQzthQUNiLE1BQU0sQ0FBQztZQUNOLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6QixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUIsQ0FBQzthQUNELE1BQU0sQ0FBQyx3QkFBVSxFQUFFO1lBQ2xCLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4RCxDQUFDLENBQUM7UUFFTCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3JELENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUU5QixJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFN0MsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsR0FBRyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ3JCLENBQUM7YUFDSDtZQUNELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUUxRCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixHQUFHLEVBQUUsZ0JBQWdCO2FBQ3RCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCwwQkFBMEIsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0NBQ2hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtQbHVnaW5GYWN0b3J5fSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvaW50ZXJmYWNlcyc7XG5pbXBvcnQge0NvbmZpZ1BhcmFtcywgUGx1Z2luUGFyYW1zfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuXG5pbXBvcnQge2FsbERlZmluZWR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7TWlzc2luZ0lucHV0RGF0YUVycm9yLCBDb25maWdFcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7XG4gIE1JU1NJTkdfRlVOQ1RJT05BTF9VTklUX0NPTkZJRyxcbiAgTUlTU0lOR19GVU5DVElPTkFMX1VOSVRfSU5QVVQsXG4gIFNDSV9NSVNTSU5HX0ZOX1VOSVQsXG4gIFpFUk9fRElWSVNJT04sXG4gIE1JU1NJTkdfQ09ORklHLFxufSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBTY2kgPSBQbHVnaW5GYWN0b3J5KHtcbiAgbWV0YWRhdGE6IHtcbiAgICBpbnB1dHM6IHtcbiAgICAgIGNhcmJvbjoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ2FuIGFtb3VudCBvZiBjYXJib24gZW1pdHRlZCBpbnRvIHRoZSBhdG1vc3BoZXJlJyxcbiAgICAgICAgdW5pdDogJ2dDTzJlJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnc3VtJyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdzdW0nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICdmdW5jdGlvbmFsLXVuaXQnOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICd0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb25hbCB1bml0IGluIHdoaWNoIHRoZSBmaW5hbCBTQ0kgdmFsdWUgc2hvdWxkIGJlIGV4cHJlc3NlZCwgZS5nLiByZXF1ZXN0cywgdXNlcnMnLFxuICAgICAgICB1bml0OiAnbm9uZScsXG4gICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiB7XG4gICAgICAgICAgdGltZTogJ3N1bScsXG4gICAgICAgICAgY29tcG9uZW50OiAnc3VtJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRzOiB7XG4gICAgICBzY2k6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdjYXJib24gZXhwcmVzc2VkIGluIHRlcm1zIG9mIHRoZSBnaXZlbiBmdW5jdGlvbmFsIHVuaXQnLFxuICAgICAgICB1bml0OiAnZ0NPMmUnLFxuICAgICAgICAnYWdncmVnYXRpb24tbWV0aG9kJzoge1xuICAgICAgICAgIHRpbWU6ICdhdmcnLFxuICAgICAgICAgIGNvbXBvbmVudDogJ3N1bScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGNvbmZpZ1ZhbGlkYXRpb246IChjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGlmICghY29uZmlnIHx8ICFPYmplY3Qua2V5cyhjb25maWcpPy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBDb25maWdFcnJvcihNSVNTSU5HX0NPTkZJRyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZW1hID0gelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgICdmdW5jdGlvbmFsLXVuaXQnOiB6LnN0cmluZygpLFxuICAgICAgfSlcbiAgICAgIC5yZWZpbmUoZGF0YSA9PiBkYXRhWydmdW5jdGlvbmFsLXVuaXQnXSwge1xuICAgICAgICBtZXNzYWdlOiBNSVNTSU5HX0ZVTkNUSU9OQUxfVU5JVF9DT05GSUcsXG4gICAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBzY2hlbWE+PihzY2hlbWEsIGNvbmZpZyk7XG4gIH0sXG4gIGlucHV0VmFsaWRhdGlvbjogKGlucHV0OiBQbHVnaW5QYXJhbXMsIGNvbmZpZzogQ29uZmlnUGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZnVuY3Rpb25hbFVuaXQgPSBjb25maWdbJ2Z1bmN0aW9uYWwtdW5pdCddO1xuXG4gICAgaWYgKCEoZnVuY3Rpb25hbFVuaXQgaW4gaW5wdXQgJiYgaW5wdXRbZnVuY3Rpb25hbFVuaXRdID49IDApKSB7XG4gICAgICB0aHJvdyBuZXcgTWlzc2luZ0lucHV0RGF0YUVycm9yKE1JU1NJTkdfRlVOQ1RJT05BTF9VTklUX0lOUFVUKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlbWEgPSB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgY2FyYm9uOiB6Lm51bWJlcigpLmd0ZSgwKSxcbiAgICAgICAgZHVyYXRpb246IHoubnVtYmVyKCkuZ3RlKDEpLFxuICAgICAgfSlcbiAgICAgIC5yZWZpbmUoYWxsRGVmaW5lZCwge1xuICAgICAgICBtZXNzYWdlOiBTQ0lfTUlTU0lOR19GTl9VTklUKGNvbmZpZ1snZnVuY3Rpb25hbC11bml0J10pLFxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2Ygc2NoZW1hPj4oc2NoZW1hLCBpbnB1dCk7XG4gIH0sXG4gIGltcGxlbWVudGF0aW9uOiBhc3luYyAoaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSwgY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICByZXR1cm4gaW5wdXRzLm1hcCgoaW5wdXQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBmdW5jdGlvbmFsVW5pdCA9IGlzTmFOKGNvbmZpZ1snZnVuY3Rpb25hbC11bml0J10pXG4gICAgICAgID8gaW5wdXRbY29uZmlnWydmdW5jdGlvbmFsLXVuaXQnXV1cbiAgICAgICAgOiBjb25maWdbJ2Z1bmN0aW9uYWwtdW5pdCddO1xuXG4gICAgICBpZiAoZnVuY3Rpb25hbFVuaXQgPT09IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKFpFUk9fRElWSVNJT04oU2NpLm5hbWUsIGluZGV4KSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICBzY2k6IGlucHV0WydjYXJib24nXSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRSZXN1bHQgPSBpbnB1dFsnY2FyYm9uJ10gLyBmdW5jdGlvbmFsVW5pdDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIHNjaTogY2FsY3VsYXRlZFJlc3VsdCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH0sXG4gIGFsbG93QXJpdGhtZXRpY0V4cHJlc3Npb25zOiBbJ2Z1bmN0aW9uYWwtdW5pdCddLFxufSk7XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { ConfigParams, PluginParams } from '@grnsft/if-core/types';
2
+ export declare const SciEmbodied: (config: ConfigParams | undefined, parametersMetadata: import("@grnsft/if-core/types").PluginParametersMetadata, mapping: import("@grnsft/if-core/types").MappingParams) => {
3
+ metadata: {
4
+ inputs: {
5
+ [x: string]: {
6
+ description: string;
7
+ unit: string;
8
+ 'aggregation-method': import("@grnsft/if-core/types").AggregationOptions;
9
+ };
10
+ };
11
+ outputs: import("@grnsft/if-core/types").ParameterMetadata;
12
+ };
13
+ execute: (inputs: PluginParams[]) => Promise<{
14
+ [x: string]: any;
15
+ }[]>;
16
+ };
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SciEmbodied = void 0;
4
+ const zod_1 = require("zod");
5
+ const utils_1 = require("@grnsft/if-core/utils");
6
+ const interfaces_1 = require("@grnsft/if-core/interfaces");
7
+ exports.SciEmbodied = (0, interfaces_1.PluginFactory)({
8
+ metadata: {
9
+ inputs: {
10
+ vCPUs: {
11
+ description: 'number of CPUs allocated to an application',
12
+ unit: 'CPUs',
13
+ 'aggregation-method': {
14
+ time: 'copy',
15
+ component: 'copy',
16
+ },
17
+ },
18
+ memory: {
19
+ description: 'RAM available for a resource, in GB',
20
+ unit: 'GB',
21
+ 'aggregation-method': {
22
+ time: 'copy',
23
+ component: 'copy',
24
+ },
25
+ },
26
+ ssd: {
27
+ description: 'number of SSDs available for a resource',
28
+ unit: 'SSDs',
29
+ 'aggregation-method': {
30
+ time: 'copy',
31
+ component: 'copy',
32
+ },
33
+ },
34
+ hdd: {
35
+ description: 'number of HDDs available for a resource',
36
+ unit: 'HDDs',
37
+ 'aggregation-method': {
38
+ time: 'copy',
39
+ component: 'copy',
40
+ },
41
+ },
42
+ gpu: {
43
+ description: 'number of GPUs available for a resource',
44
+ unit: 'GPUs',
45
+ 'aggregation-method': {
46
+ time: 'copy',
47
+ component: 'copy',
48
+ },
49
+ },
50
+ 'usage-ratio': {
51
+ description: 'a scaling factor that can be used to describe the ratio of actual resource usage comapred to real device usage, e.g. 0.25 if you are using 2 out of 8 vCPUs, 0.1 if you are responsible for 1 out of 10 GB of storage, etc',
52
+ unit: 'dimensionless',
53
+ 'aggregation-method': {
54
+ time: 'copy',
55
+ component: 'copy',
56
+ },
57
+ },
58
+ time: {
59
+ description: 'a time unit to scale the embodied carbon by, in seconds. If not provided,time defaults to the value of the timestep duration.',
60
+ unit: 'seconds',
61
+ 'aggregation-method': {
62
+ time: 'copy',
63
+ component: 'copy',
64
+ },
65
+ },
66
+ },
67
+ outputs: {
68
+ 'embodied-carbon': {
69
+ description: 'embodied carbon for a resource, scaled by usage',
70
+ unit: 'gCO2eq',
71
+ 'aggregation-method': {
72
+ time: 'sum',
73
+ component: 'sum',
74
+ },
75
+ },
76
+ },
77
+ },
78
+ configValidation: zod_1.z.object({
79
+ 'baseline-vcpus': zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('baseline-vcpus', value, 'number'), zod_1.z.number().gte(0).default(1)),
80
+ 'baseline-memory': zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('baseline-memory', value, 'number'), zod_1.z.number().gte(0).default(16)),
81
+ 'baseline-emissions': zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('baseline-emissions', value, 'number'), zod_1.z.number().gte(0).default(1000000)),
82
+ lifespan: zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('lifespan', value, 'number'), zod_1.z.number().gt(0).default(126144000)),
83
+ 'vcpu-emissions-constant': zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('vcpu-emissions-constant', value, 'number'), zod_1.z.number().gte(0).default(100000)),
84
+ 'memory-emissions-constant': zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('memory-emissions-constant', value, 'number'), zod_1.z
85
+ .number()
86
+ .gte(0)
87
+ .default(533 / 384)),
88
+ 'ssd-emissions-constant': zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('ssd-emissions-constant', value, 'number'), zod_1.z.number().gte(0).default(50000)),
89
+ 'hdd-emissions-constant': zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('hdd-emissions-constant', value, 'number'), zod_1.z.number().gte(0).default(100000)),
90
+ 'gpu-emissions-constant': zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('gpu-emissions-constant', value, 'number'), zod_1.z.number().gte(0).default(150000)),
91
+ 'output-parameter': zod_1.z.string().optional(),
92
+ }),
93
+ inputValidation: zod_1.z.object({
94
+ duration: zod_1.z.number().gt(0),
95
+ vCPUs: zod_1.z.number().gt(0).default(1),
96
+ memory: zod_1.z.number().gt(0).default(16),
97
+ ssd: zod_1.z.number().gte(0).default(0),
98
+ hdd: zod_1.z.number().gte(0).default(0),
99
+ gpu: zod_1.z.number().gte(0).default(0),
100
+ 'usage-ratio': zod_1.z.number().gt(0).default(1),
101
+ time: zod_1.z.number().gt(0).optional(),
102
+ }),
103
+ implementation: async (inputs, config) => {
104
+ /**
105
+ * 1. Validates configuration and assigns defaults values if not provided.
106
+ * 2. Maps through observations and validates them.
107
+ * 3. Calculates total embodied carbon by substracting and the difference between baseline server and given one.
108
+ */
109
+ return inputs.map(input => {
110
+ const cpuE = (input.vCPUs - config['baseline-vcpus']) *
111
+ config['vcpu-emissions-constant'];
112
+ const memoryE = (input.memory - config['baseline-memory']) *
113
+ ((config['memory-emissions-constant'] * config['baseline-memory']) /
114
+ 16) *
115
+ 1000;
116
+ const hddE = input.hdd * config['hdd-emissions-constant'];
117
+ const gpuE = input.gpu * config['gpu-emissions-constant'];
118
+ const ssdE = input.ssd * config['ssd-emissions-constant'];
119
+ const time = input['time'] || input.duration;
120
+ const totalEmbodied = config['baseline-emissions'] + cpuE + memoryE + ssdE + hddE + gpuE;
121
+ const totalEmbodiedScaledByUsage = totalEmbodied * input['usage-ratio'];
122
+ const totalEmbodiedScaledByUsageAndTime = totalEmbodiedScaledByUsage * (time / config['lifespan']);
123
+ const embodiedCarbonKey = config['output-parameter'] || 'embodied-carbon';
124
+ return {
125
+ ...input,
126
+ [embodiedCarbonKey]: totalEmbodiedScaledByUsageAndTime,
127
+ };
128
+ });
129
+ },
130
+ allowArithmeticExpressions: [
131
+ 'baseline-vcpus',
132
+ 'baseline-memory',
133
+ 'baseline-emissions',
134
+ 'lifespan',
135
+ 'vcpu-emissions-constant',
136
+ 'memory-emissions-constant',
137
+ 'ssd-emissions-constant',
138
+ 'hdd-emissions-constant',
139
+ 'gpu-emissions-constant',
140
+ ],
141
+ });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3NjaS1lbWJvZGllZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFFdEIsaURBQW1FO0FBRW5FLDJEQUF5RDtBQUU1QyxRQUFBLFdBQVcsR0FBRyxJQUFBLDBCQUFhLEVBQUM7SUFDdkMsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFO1lBQ04sS0FBSyxFQUFFO2dCQUNMLFdBQVcsRUFBRSw0Q0FBNEM7Z0JBQ3pELElBQUksRUFBRSxNQUFNO2dCQUNaLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsTUFBTTtvQkFDWixTQUFTLEVBQUUsTUFBTTtpQkFDbEI7YUFDRjtZQUNELE1BQU0sRUFBRTtnQkFDTixXQUFXLEVBQUUscUNBQXFDO2dCQUNsRCxJQUFJLEVBQUUsSUFBSTtnQkFDVixvQkFBb0IsRUFBRTtvQkFDcEIsSUFBSSxFQUFFLE1BQU07b0JBQ1osU0FBUyxFQUFFLE1BQU07aUJBQ2xCO2FBQ0Y7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsV0FBVyxFQUFFLHlDQUF5QztnQkFDdEQsSUFBSSxFQUFFLE1BQU07Z0JBQ1osb0JBQW9CLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxNQUFNO29CQUNaLFNBQVMsRUFBRSxNQUFNO2lCQUNsQjthQUNGO1lBQ0QsR0FBRyxFQUFFO2dCQUNILFdBQVcsRUFBRSx5Q0FBeUM7Z0JBQ3RELElBQUksRUFBRSxNQUFNO2dCQUNaLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsTUFBTTtvQkFDWixTQUFTLEVBQUUsTUFBTTtpQkFDbEI7YUFDRjtZQUNELEdBQUcsRUFBRTtnQkFDSCxXQUFXLEVBQUUseUNBQXlDO2dCQUN0RCxJQUFJLEVBQUUsTUFBTTtnQkFDWixvQkFBb0IsRUFBRTtvQkFDcEIsSUFBSSxFQUFFLE1BQU07b0JBQ1osU0FBUyxFQUFFLE1BQU07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QUssQ0FBQyxRQUFRLENBQUM7WUFFN0MsTUFBTSxhQUFhLEdBQ2pCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksR0FBRyxPQUFPLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7WUFFckUsTUFBTSwwQkFBMEIsR0FBRyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXhFLE1BQU0saUNBQWlDLEdBQ3JDLDBCQUEwQixHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBRTNELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksaUJBQWlCLENBQUM7WUFFMUUsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLGlDQUFpQzthQUN2RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsMEJBQTBCLEVBQUU7UUFDMUIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixvQkFBb0I7UUFDcEIsVUFBVTtRQUNWLHlCQUF5QjtRQUN6QiwyQkFBMkI7UUFDM0Isd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4Qix3QkFBd0I7S0FDekI7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7dmFsaWRhdGVBcml0aG1ldGljRXhwcmVzc2lvbn0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcbmltcG9ydCB7Q29uZmlnUGFyYW1zLCBQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5pbXBvcnQge1BsdWdpbkZhY3Rvcnl9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IFNjaUVtYm9kaWVkID0gUGx1Z2luRmFjdG9yeSh7XG4gIG1ldGFkYXRhOiB7XG4gICAgaW5wdXRzOiB7XG4gICAgICB2Q1BVczoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ251bWJlciBvZiBDUFVzIGFsbG9jYXRlZCB0byBhbiBhcHBsaWNhdGlvbicsXG4gICAgICAgIHVuaXQ6ICdDUFVzJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnY29weScsXG4gICAgICAgICAgY29tcG9uZW50OiAnY29weScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWVtb3J5OiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUkFNIGF2YWlsYWJsZSBmb3IgYSByZXNvdXJjZSwgaW4gR0InLFxuICAgICAgICB1bml0OiAnR0InLFxuICAgICAgICAnYWdncmVnYXRpb24tbWV0aG9kJzoge1xuICAgICAgICAgIHRpbWU6ICdjb3B5JyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdjb3B5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzc2Q6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdudW1iZXIgb2YgU1NEcyBhdmFpbGFibGUgZm9yIGEgcmVzb3VyY2UnLFxuICAgICAgICB1bml0OiAnU1NEcycsXG4gICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiB7XG4gICAgICAgICAgdGltZTogJ2NvcHknLFxuICAgICAgICAgIGNvbXBvbmVudDogJ2NvcHknLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhkZDoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ251bWJlciBvZiBIRERzIGF2YWlsYWJsZSBmb3IgYSByZXNvdXJjZScsXG4gICAgICAgIHVuaXQ6ICdIRERzJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnY29weScsXG4gICAgICAgICAgY29tcG9uZW50OiAnY29weScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZ3B1OiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnbnVtYmVyIG9mIEdQVXMgYXZhaWxhYmxlIGZvciBhIHJlc291cmNlJyxcbiAgICAgICAgdW5pdDogJ0dQVXMnLFxuICAgICAgICAnYWdncmVnYXRpb24tbWV0aG9kJzoge1xuICAgICAgICAgIHRpbWU6ICdjb3B5JyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdjb3B5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAndXNhZ2UtcmF0aW8nOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICdhIHNjYWxpbmcgZmFjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHJhdGlvIG9mIGFjdHVhbCByZXNvdXJjZSB1c2FnZSBjb21hcHJlZCB0byByZWFsIGRldmljZSB1c2FnZSwgZS5nLiAwLjI1IGlmIHlvdSBhcmUgdXNpbmcgMiBvdXQgb2YgOCB2Q1BVcywgMC4xIGlmIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIDEgb3V0IG9mIDEwIEdCIG9mIHN0b3JhZ2UsIGV0YycsXG4gICAgICAgIHVuaXQ6ICdkaW1lbnNpb25sZXNzJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnY29weScsXG4gICAgICAgICAgY29tcG9uZW50OiAnY29weScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGltZToge1xuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnYSB0aW1lIHVuaXQgdG8gc2NhbGUgdGhlIGVtYm9kaWVkIGNhcmJvbiBieSwgaW4gc2Vjb25kcy4gSWYgbm90IHByb3ZpZGVkLHRpbWUgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSB0aW1lc3RlcCBkdXJhdGlvbi4nLFxuICAgICAgICB1bml0OiAnc2Vjb25kcycsXG4gICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiB7XG4gICAgICAgICAgdGltZTogJ2NvcHknLFxuICAgICAgICAgIGNvbXBvbmVudDogJ2NvcHknLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIG91dHB1dHM6IHtcbiAgICAgICdlbWJvZGllZC1jYXJib24nOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnZW1ib2RpZWQgY2FyYm9uIGZvciBhIHJlc291cmNlLCBzY2FsZWQgYnkgdXNhZ2UnLFxuICAgICAgICB1bml0OiAnZ0NPMmVxJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnc3VtJyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdzdW0nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBjb25maWdWYWxpZGF0aW9uOiB6Lm9iamVjdCh7XG4gICAgJ2Jhc2VsaW5lLXZjcHVzJzogei5wcmVwcm9jZXNzKFxuICAgICAgdmFsdWUgPT4gdmFsaWRhdGVBcml0aG1ldGljRXhwcmVzc2lvbignYmFzZWxpbmUtdmNwdXMnLCB2YWx1ZSwgJ251bWJlcicpLFxuICAgICAgei5udW1iZXIoKS5ndGUoMCkuZGVmYXVsdCgxKVxuICAgICksXG4gICAgJ2Jhc2VsaW5lLW1lbW9yeSc6IHoucHJlcHJvY2VzcyhcbiAgICAgIHZhbHVlID0+IHZhbGlkYXRlQXJpdGhtZXRpY0V4cHJlc3Npb24oJ2Jhc2VsaW5lLW1lbW9yeScsIHZhbHVlLCAnbnVtYmVyJyksXG4gICAgICB6Lm51bWJlcigpLmd0ZSgwKS5kZWZhdWx0KDE2KVxuICAgICksXG4gICAgJ2Jhc2VsaW5lLWVtaXNzaW9ucyc6IHoucHJlcHJvY2VzcyhcbiAgICAgIHZhbHVlID0+XG4gICAgICAgIHZhbGlkYXRlQXJpdGhtZXRpY0V4cHJlc3Npb24oJ2Jhc2VsaW5lLWVtaXNzaW9ucycsIHZhbHVlLCAnbnVtYmVyJyksXG4gICAgICB6Lm51bWJlcigpLmd0ZSgwKS5kZWZhdWx0KDEwMDAwMDApXG4gICAgKSxcbiAgICBsaWZlc3Bhbjogei5wcmVwcm9jZXNzKFxuICAgICAgdmFsdWUgPT4gdmFsaWRhdGVBcml0aG1ldGljRXhwcmVzc2lvbignbGlmZXNwYW4nLCB2YWx1ZSwgJ251bWJlcicpLFxuICAgICAgei5udW1iZXIoKS5ndCgwKS5kZWZhdWx0KDEyNjE0NDAwMClcbiAgICApLFxuICAgICd2Y3B1LWVtaXNzaW9ucy1jb25zdGFudCc6IHoucHJlcHJvY2VzcyhcbiAgICAgIHZhbHVlID0+XG4gICAgICAgIHZhbGlkYXRlQXJpdGhtZXRpY0V4cHJlc3Npb24oXG4gICAgICAgICAgJ3ZjcHUtZW1pc3Npb25zLWNvbnN0YW50JyxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAnbnVtYmVyJ1xuICAgICAgICApLFxuICAgICAgei5udW1iZXIoKS5ndGUoMCkuZGVmYXVsdCgxMDAwMDApXG4gICAgKSxcbiAgICAnbWVtb3J5LWVtaXNzaW9ucy1jb25zdGFudCc6IHoucHJlcHJvY2VzcyhcbiAgICAgIHZhbHVlID0+XG4gICAgICAgIHZhbGlkYXRlQXJpdGhtZXRpY0V4cHJlc3Npb24oXG4gICAgICAgICAgJ21lbW9yeS1lbWlzc2lvbnMtY29uc3RhbnQnLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICdudW1iZXInXG4gICAgICAgICksXG4gICAgICB6XG4gICAgICAgIC5udW1iZXIoKVxuICAgICAgICAuZ3RlKDApXG4gICAgICAgIC5kZWZhdWx0KDUzMyAvIDM4NClcbiAgICApLFxuICAgICdzc2QtZW1pc3Npb25zLWNvbnN0YW50Jzogei5wcmVwcm9jZXNzKFxuICAgICAgdmFsdWUgPT5cbiAgICAgICAgdmFsaWRhdGVBcml0aG1ldGljRXhwcmVzc2lvbignc3NkLWVtaXNzaW9ucy1jb25zdGFudCcsIHZhbHVlLCAnbnVtYmVyJyksXG4gICAgICB6Lm51bWJlcigpLmd0ZSgwKS5kZWZhdWx0KDUwMDAwKVxuICAgICksXG4gICAgJ2hkZC1lbWlzc2lvbnMtY29uc3RhbnQnOiB6LnByZXByb2Nlc3MoXG4gICAgICB2YWx1ZSA9PlxuICAgICAgICB2YWxpZGF0ZUFyaXRobWV0aWNFeHByZXNzaW9uKCdoZGQtZW1pc3Npb25zLWNvbnN0YW50JywgdmFsdWUsICdudW1iZXInKSxcbiAgICAgIHoubnVtYmVyKCkuZ3RlKDApLmRlZmF1bHQoMTAwMDAwKVxuICAgICksXG4gICAgJ2dwdS1lbWlzc2lvbnMtY29uc3RhbnQnOiB6LnByZXByb2Nlc3MoXG4gICAgICB2YWx1ZSA9PlxuICAgICAgICB2YWxpZGF0ZUFyaXRobWV0aWNFeHByZXNzaW9uKCdncHUtZW1pc3Npb25zLWNvbnN0YW50JywgdmFsdWUsICdudW1iZXInKSxcbiAgICAgIHoubnVtYmVyKCkuZ3RlKDApLmRlZmF1bHQoMTUwMDAwKVxuICAgICksXG4gICAgJ291dHB1dC1wYXJhbWV0ZXInOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBpbnB1dFZhbGlkYXRpb246IHoub2JqZWN0KHtcbiAgICBkdXJhdGlvbjogei5udW1iZXIoKS5ndCgwKSxcbiAgICB2Q1BVczogei5udW1iZXIoKS5ndCgwKS5kZWZhdWx0KDEpLFxuICAgIG1lbW9yeTogei5udW1iZXIoKS5ndCgwKS5kZWZhdWx0KDE2KSxcbiAgICBzc2Q6IHoubnVtYmVyKCkuZ3RlKDApLmRlZmF1bHQoMCksXG4gICAgaGRkOiB6Lm51bWJlcigpLmd0ZSgwKS5kZWZhdWx0KDApLFxuICAgIGdwdTogei5udW1iZXIoKS5ndGUoMCkuZGVmYXVsdCgwKSxcbiAgICAndXNhZ2UtcmF0aW8nOiB6Lm51bWJlcigpLmd0KDApLmRlZmF1bHQoMSksXG4gICAgdGltZTogei5udW1iZXIoKS5ndCgwKS5vcHRpb25hbCgpLFxuICB9KSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIC8qKlxuICAgICAqIDEuIFZhbGlkYXRlcyBjb25maWd1cmF0aW9uIGFuZCBhc3NpZ25zIGRlZmF1bHRzIHZhbHVlcyBpZiBub3QgcHJvdmlkZWQuXG4gICAgICogMi4gTWFwcyB0aHJvdWdoIG9ic2VydmF0aW9ucyBhbmQgdmFsaWRhdGVzIHRoZW0uXG4gICAgICogMy4gQ2FsY3VsYXRlcyB0b3RhbCBlbWJvZGllZCBjYXJib24gYnkgc3Vic3RyYWN0aW5nIGFuZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGJhc2VsaW5lIHNlcnZlciBhbmQgZ2l2ZW4gb25lLlxuICAgICAqL1xuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgIGNvbnN0IGNwdUUgPVxuICAgICAgICAoaW5wdXQudkNQVXMgLSBjb25maWdbJ2Jhc2VsaW5lLXZjcHVzJ10pICpcbiAgICAgICAgY29uZmlnWyd2Y3B1LWVtaXNzaW9ucy1jb25zdGFudCddO1xuICAgICAgY29uc3QgbWVtb3J5RSA9XG4gICAgICAgIChpbnB1dC5tZW1vcnkgLSBjb25maWdbJ2Jhc2VsaW5lLW1lbW9yeSddKSAqXG4gICAgICAgICgoY29uZmlnWydtZW1vcnktZW1pc3Npb25zLWNvbnN0YW50J10gKiBjb25maWdbJ2Jhc2VsaW5lLW1lbW9yeSddKSAvXG4gICAgICAgICAgMTYpICpcbiAgICAgICAgMTAwMDtcbiAgICAgIGNvbnN0IGhkZEUgPSBpbnB1dC5oZGQgKiBjb25maWdbJ2hkZC1lbWlzc2lvbnMtY29uc3RhbnQnXTtcbiAgICAgIGNvbnN0IGdwdUUgPSBpbnB1dC5ncHUgKiBjb25maWdbJ2dwdS1lbWlzc2lvbnMtY29uc3RhbnQnXTtcbiAgICAgIGNvbnN0IHNzZEUgPSBpbnB1dC5zc2QgKiBjb25maWdbJ3NzZC1lbWlzc2lvbnMtY29uc3RhbnQnXTtcbiAgICAgIGNvbnN0IHRpbWUgPSBpbnB1dFsndGltZSddIHx8IGlucHV0LmR1cmF0aW9uO1xuXG4gICAgICBjb25zdCB0b3RhbEVtYm9kaWVkID1cbiAgICAgICAgY29uZmlnWydiYXNlbGluZS1lbWlzc2lvbnMnXSArIGNwdUUgKyBtZW1vcnlFICsgc3NkRSArIGhkZEUgKyBncHVFO1xuXG4gICAgICBjb25zdCB0b3RhbEVtYm9kaWVkU2NhbGVkQnlVc2FnZSA9IHRvdGFsRW1ib2RpZWQgKiBpbnB1dFsndXNhZ2UtcmF0aW8nXTtcblxuICAgICAgY29uc3QgdG90YWxFbWJvZGllZFNjYWxlZEJ5VXNhZ2VBbmRUaW1lID1cbiAgICAgICAgdG90YWxFbWJvZGllZFNjYWxlZEJ5VXNhZ2UgKiAodGltZSAvIGNvbmZpZ1snbGlmZXNwYW4nXSk7XG5cbiAgICAgIGNvbnN0IGVtYm9kaWVkQ2FyYm9uS2V5ID0gY29uZmlnWydvdXRwdXQtcGFyYW1ldGVyJ10gfHwgJ2VtYm9kaWVkLWNhcmJvbic7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmlucHV0LFxuICAgICAgICBbZW1ib2RpZWRDYXJib25LZXldOiB0b3RhbEVtYm9kaWVkU2NhbGVkQnlVc2FnZUFuZFRpbWUsXG4gICAgICB9O1xuICAgIH0pO1xuICB9LFxuICBhbGxvd0FyaXRobWV0aWNFeHByZXNzaW9uczogW1xuICAgICdiYXNlbGluZS12Y3B1cycsXG4gICAgJ2Jhc2VsaW5lLW1lbW9yeScsXG4gICAgJ2Jhc2VsaW5lLWVtaXNzaW9ucycsXG4gICAgJ2xpZmVzcGFuJyxcbiAgICAndmNwdS1lbWlzc2lvbnMtY29uc3RhbnQnLFxuICAgICdtZW1vcnktZW1pc3Npb25zLWNvbnN0YW50JyxcbiAgICAnc3NkLWVtaXNzaW9ucy1jb25zdGFudCcsXG4gICAgJ2hkZC1lbWlzc2lvbnMtY29uc3RhbnQnLFxuICAgICdncHUtZW1pc3Npb25zLWNvbnN0YW50JyxcbiAgXSxcbn0pO1xuIl19
@@ -0,0 +1,16 @@
1
+ import { ConfigParams, PluginParams } from '@grnsft/if-core/types';
2
+ export declare const Shell: (config: ConfigParams | undefined, parametersMetadata: import("@grnsft/if-core/types").PluginParametersMetadata, mapping: import("@grnsft/if-core/types").MappingParams) => {
3
+ metadata: {
4
+ inputs: {
5
+ [x: string]: {
6
+ description: string;
7
+ unit: string;
8
+ 'aggregation-method': import("@grnsft/if-core/types").AggregationOptions;
9
+ };
10
+ };
11
+ outputs: import("@grnsft/if-core/types").ParameterMetadata;
12
+ };
13
+ execute: (inputs: PluginParams[]) => Promise<{
14
+ [x: string]: any;
15
+ }[]>;
16
+ };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Shell = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const js_yaml_1 = require("js-yaml");
6
+ const zod_1 = require("zod");
7
+ const interfaces_1 = require("@grnsft/if-core/interfaces");
8
+ const utils_1 = require("@grnsft/if-core/utils");
9
+ const validations_1 = require("../../../common/util/validations");
10
+ const config_1 = require("../../config");
11
+ const { ProcessExecutionError, ConfigError } = utils_1.ERRORS;
12
+ const { MISSING_CONFIG } = config_1.STRINGS;
13
+ exports.Shell = (0, interfaces_1.PluginFactory)({
14
+ configValidation: (config) => {
15
+ if (!config) {
16
+ throw new ConfigError(MISSING_CONFIG);
17
+ }
18
+ const schema = zod_1.z.object({
19
+ command: zod_1.z.string(),
20
+ });
21
+ return (0, validations_1.validate)(schema, config);
22
+ },
23
+ implementation: async (inputs, config) => {
24
+ const inputWithConfig = Object.assign({}, inputs[0], config);
25
+ const command = inputWithConfig.command;
26
+ const inputAsString = (0, js_yaml_1.dump)(inputs, { indent: 2 });
27
+ const results = runModelInShell(inputAsString, command);
28
+ return results?.outputs?.flat();
29
+ },
30
+ });
31
+ /**
32
+ * Runs the model in a shell. Spawns a child process to run an external IMP,
33
+ * an executable with a CLI exposing two methods: `--execute` and `--manifest`.
34
+ * The shell command then calls the `--command` method passing var manifest as the path to the desired manifest file.
35
+ */
36
+ const runModelInShell = (input, command) => {
37
+ try {
38
+ const [executable, ...args] = command.split(' ');
39
+ const result = (0, child_process_1.spawnSync)(executable, args, {
40
+ input,
41
+ encoding: 'utf8',
42
+ });
43
+ const outputs = (0, js_yaml_1.loadAll)(result.stdout);
44
+ return { outputs };
45
+ }
46
+ catch (error) {
47
+ throw new ProcessExecutionError(error.message);
48
+ }
49
+ };
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3NoZWxsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUEwRDtBQUUxRCxxQ0FBc0M7QUFDdEMsNkJBQXNCO0FBQ3RCLDJEQUF5RDtBQUN6RCxpREFBNkM7QUFHN0Msa0VBQTBEO0FBRTFELHlDQUFxQztBQUVyQyxNQUFNLEVBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQ3BELE1BQU0sRUFBQyxjQUFjLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXBCLFFBQUEsS0FBSyxHQUFHLElBQUEsMEJBQWEsRUFBQztJQUNqQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQW9CLEVBQUUsRUFBRTtRQUN6QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2QztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLHNCQUFRLEVBQXlCLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdkMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDeEMsTUFBTSxhQUFhLEdBQVcsSUFBQSxjQUFJLEVBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7UUFDeEQsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFvQixDQUFDO0lBQ3BELENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSDs7OztHQUlHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFFLEVBQUU7SUFDekQsSUFBSTtRQUNGLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpELE1BQU0sTUFBTSxHQUE2QixJQUFBLHlCQUFTLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRTtZQUNuRSxLQUFLO1lBQ0wsUUFBUSxFQUFFLE1BQU07U0FDakIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBQSxpQkFBTyxFQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2QyxPQUFPLEVBQUMsT0FBTyxFQUFDLENBQUM7S0FDbEI7SUFBQyxPQUFPLEtBQVUsRUFBRTtRQUNuQixNQUFNLElBQUkscUJBQXFCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2hEO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzcGF3blN5bmMsIFNwYXduU3luY1JldHVybnN9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuXG5pbXBvcnQge2xvYWRBbGwsIGR1bXB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtQbHVnaW5GYWN0b3J5fSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvaW50ZXJmYWNlcyc7XG5pbXBvcnQge0VSUk9SU30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcbmltcG9ydCB7Q29uZmlnUGFyYW1zLCBQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7UHJvY2Vzc0V4ZWN1dGlvbkVycm9yLCBDb25maWdFcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7TUlTU0lOR19DT05GSUd9ID0gU1RSSU5HUztcblxuZXhwb3J0IGNvbnN0IFNoZWxsID0gUGx1Z2luRmFjdG9yeSh7XG4gIGNvbmZpZ1ZhbGlkYXRpb246IChjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmlnRXJyb3IoTUlTU0lOR19DT05GSUcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAgIGNvbW1hbmQ6IHouc3RyaW5nKCksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2Ygc2NoZW1hPj4oc2NoZW1hLCBjb25maWcpO1xuICB9LFxuICBpbXBsZW1lbnRhdGlvbjogYXN5bmMgKGlucHV0cywgY29uZmlnKSA9PiB7XG4gICAgY29uc3QgaW5wdXRXaXRoQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgaW5wdXRzWzBdLCBjb25maWcpO1xuICAgIGNvbnN0IGNvbW1hbmQgPSBpbnB1dFdpdGhDb25maWcuY29tbWFuZDtcbiAgICBjb25zdCBpbnB1dEFzU3RyaW5nOiBzdHJpbmcgPSBkdW1wKGlucHV0cywge2luZGVudDogMn0pO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBydW5Nb2RlbEluU2hlbGwoaW5wdXRBc1N0cmluZywgY29tbWFuZCk7XG5cbiAgICByZXR1cm4gcmVzdWx0cz8ub3V0cHV0cz8uZmxhdCgpIGFzIFBsdWdpblBhcmFtc1tdO1xuICB9LFxufSk7XG5cbi8qKlxuICogUnVucyB0aGUgbW9kZWwgaW4gYSBzaGVsbC4gU3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB0byBydW4gYW4gZXh0ZXJuYWwgSU1QLFxuICogYW4gZXhlY3V0YWJsZSB3aXRoIGEgQ0xJIGV4cG9zaW5nIHR3byBtZXRob2RzOiBgLS1leGVjdXRlYCBhbmQgYC0tbWFuaWZlc3RgLlxuICogVGhlIHNoZWxsIGNvbW1hbmQgdGhlbiBjYWxscyB0aGUgYC0tY29tbWFuZGAgbWV0aG9kIHBhc3NpbmcgdmFyIG1hbmlmZXN0IGFzIHRoZSBwYXRoIHRvIHRoZSBkZXNpcmVkIG1hbmlmZXN0IGZpbGUuXG4gKi9cbmNvbnN0IHJ1bk1vZGVsSW5TaGVsbCA9IChpbnB1dDogc3RyaW5nLCBjb21tYW5kOiBzdHJpbmcpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBbZXhlY3V0YWJsZSwgLi4uYXJnc10gPSBjb21tYW5kLnNwbGl0KCcgJyk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFNwYXduU3luY1JldHVybnM8c3RyaW5nPiA9IHNwYXduU3luYyhleGVjdXRhYmxlLCBhcmdzLCB7XG4gICAgICBpbnB1dCxcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgfSk7XG4gICAgY29uc3Qgb3V0cHV0cyA9IGxvYWRBbGwocmVzdWx0LnN0ZG91dCk7XG5cbiAgICByZXR1cm4ge291dHB1dHN9O1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgdGhyb3cgbmV3IFByb2Nlc3NFeGVjdXRpb25FcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgfVxufTtcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { ConfigParams, PluginParams } from '@grnsft/if-core/types';
2
+ export declare const Subtract: (config: ConfigParams | undefined, parametersMetadata: import("@grnsft/if-core/types").PluginParametersMetadata, mapping: import("@grnsft/if-core/types").MappingParams) => {
3
+ metadata: {
4
+ inputs: {
5
+ [x: string]: {
6
+ description: string;
7
+ unit: string;
8
+ 'aggregation-method': import("@grnsft/if-core/types").AggregationOptions;
9
+ };
10
+ };
11
+ outputs: import("@grnsft/if-core/types").ParameterMetadata;
12
+ };
13
+ execute: (inputs: PluginParams[]) => Promise<{
14
+ [x: string]: any;
15
+ }[]>;
16
+ };
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Subtract = void 0;
4
+ const zod_1 = require("zod");
5
+ const interfaces_1 = require("@grnsft/if-core/interfaces");
6
+ const utils_1 = require("@grnsft/if-core/utils");
7
+ const validations_1 = require("../../../common/util/validations");
8
+ const config_1 = require("../../config");
9
+ const { ConfigError } = utils_1.ERRORS;
10
+ const { MISSING_CONFIG } = config_1.STRINGS;
11
+ exports.Subtract = (0, interfaces_1.PluginFactory)({
12
+ configValidation: (config) => {
13
+ if (!config || !Object.keys(config)?.length) {
14
+ throw new ConfigError(MISSING_CONFIG);
15
+ }
16
+ const configSchema = zod_1.z.object({
17
+ 'input-parameters': zod_1.z.array(zod_1.z.string()),
18
+ 'output-parameter': zod_1.z.string().min(1),
19
+ });
20
+ return (0, validations_1.validate)(configSchema, config);
21
+ },
22
+ inputValidation: (input, config) => {
23
+ const inputParameters = config['input-parameters'];
24
+ const inputData = inputParameters.reduce((acc, param) => {
25
+ acc[param] = input[param];
26
+ return acc;
27
+ }, {});
28
+ const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
29
+ return (0, validations_1.validate)(validationSchema, inputData);
30
+ },
31
+ implementation: async (inputs, config) => {
32
+ const { 'input-parameters': inputParameters, 'output-parameter': outputParameter, } = config;
33
+ return inputs.map(input => {
34
+ const calculatedResult = calculateDiff(input, inputParameters);
35
+ return {
36
+ ...input,
37
+ [outputParameter]: calculatedResult,
38
+ };
39
+ });
40
+ },
41
+ allowArithmeticExpressions: [],
42
+ });
43
+ /**
44
+ * Calculates the diff between the 1st item in the inputs nad the rest of the items
45
+ */
46
+ const calculateDiff = (input, inputParameters) => {
47
+ const [firstItem, ...restItems] = inputParameters;
48
+ return restItems.reduce((accumulator, metricToSubtract) => accumulator - input[metricToSubtract], input[firstItem] // Starting accumulator with the value of the first item
49
+ );
50
+ };
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3N1YnRyYWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUFzQjtBQUV0QiwyREFBeUQ7QUFFekQsaURBQTZDO0FBRTdDLGtFQUEwRDtBQUUxRCx5Q0FBcUM7QUFFckMsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLGNBQU0sQ0FBQztBQUM3QixNQUFNLEVBQUMsY0FBYyxFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUVwQixRQUFBLFFBQVEsR0FBRyxJQUFBLDBCQUFhLEVBQUM7SUFDcEMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFvQixFQUFFLEVBQUU7UUFDekMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDdkM7UUFFRCxNQUFNLFlBQVksR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQzVCLGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3RDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBQSxzQkFBUSxFQUErQixZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELGVBQWUsRUFBRSxDQUFDLEtBQW1CLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQzdELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQ3RDLENBQUMsR0FBdUIsRUFBRSxLQUFzQixFQUFFLEVBQUU7WUFDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUxQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFDRCxFQUE0QixDQUM3QixDQUFDO1FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUxRCxPQUFPLElBQUEsc0JBQVEsRUFBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFzQixFQUFFLE1BQW9CLEVBQUUsRUFBRTtRQUNyRSxNQUFNLEVBQ0osa0JBQWtCLEVBQUUsZUFBZSxFQUNuQyxrQkFBa0IsRUFBRSxlQUFlLEdBQ3BDLEdBQUcsTUFBTSxDQUFDO1FBRVgsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztZQUUvRCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLGVBQWUsQ0FBQyxFQUFFLGdCQUFnQjthQUNwQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsMEJBQTBCLEVBQUUsRUFBRTtDQUMvQixDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBbUIsRUFBRSxlQUF5QixFQUFFLEVBQUU7SUFDdkUsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLGVBQWUsQ0FBQztJQUVsRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQ3JCLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQ3hFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyx3REFBd0Q7S0FDMUUsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtQbHVnaW5GYWN0b3J5fSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvaW50ZXJmYWNlcyc7XG5pbXBvcnQge0NvbmZpZ1BhcmFtcywgUGx1Z2luUGFyYW1zfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7Q29uZmlnRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge01JU1NJTkdfQ09ORklHfSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBTdWJ0cmFjdCA9IFBsdWdpbkZhY3Rvcnkoe1xuICBjb25maWdWYWxpZGF0aW9uOiAoY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICBpZiAoIWNvbmZpZyB8fCAhT2JqZWN0LmtleXMoY29uZmlnKT8ubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmlnRXJyb3IoTUlTU0lOR19DT05GSUcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXJzJzogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICAgICdvdXRwdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2YgY29uZmlnU2NoZW1hPj4oY29uZmlnU2NoZW1hLCBjb25maWcpO1xuICB9LFxuICBpbnB1dFZhbGlkYXRpb246IChpbnB1dDogUGx1Z2luUGFyYW1zLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IGlucHV0UGFyYW1ldGVycyA9IGNvbmZpZ1snaW5wdXQtcGFyYW1ldGVycyddO1xuXG4gICAgY29uc3QgaW5wdXREYXRhID0gaW5wdXRQYXJhbWV0ZXJzLnJlZHVjZShcbiAgICAgIChhY2M6IHtbeDogc3RyaW5nXTogYW55fSwgcGFyYW06IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgICAgICBhY2NbcGFyYW1dID0gaW5wdXRbcGFyYW1dO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPlxuICAgICk7XG5cbiAgICBjb25zdCB2YWxpZGF0aW9uU2NoZW1hID0gei5yZWNvcmQoei5zdHJpbmcoKSwgei5udW1iZXIoKSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGUodmFsaWRhdGlvblNjaGVtYSwgaW5wdXREYXRhKTtcbiAgfSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXJzJzogaW5wdXRQYXJhbWV0ZXJzLFxuICAgICAgJ291dHB1dC1wYXJhbWV0ZXInOiBvdXRwdXRQYXJhbWV0ZXIsXG4gICAgfSA9IGNvbmZpZztcblxuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRSZXN1bHQgPSBjYWxjdWxhdGVEaWZmKGlucHV0LCBpbnB1dFBhcmFtZXRlcnMpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgW291dHB1dFBhcmFtZXRlcl06IGNhbGN1bGF0ZWRSZXN1bHQsXG4gICAgICB9O1xuICAgIH0pO1xuICB9LFxuICBhbGxvd0FyaXRobWV0aWNFeHByZXNzaW9uczogW10sXG59KTtcblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBkaWZmIGJldHdlZW4gdGhlIDFzdCBpdGVtIGluIHRoZSBpbnB1dHMgbmFkIHRoZSByZXN0IG9mIHRoZSBpdGVtc1xuICovXG5jb25zdCBjYWxjdWxhdGVEaWZmID0gKGlucHV0OiBQbHVnaW5QYXJhbXMsIGlucHV0UGFyYW1ldGVyczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgW2ZpcnN0SXRlbSwgLi4ucmVzdEl0ZW1zXSA9IGlucHV0UGFyYW1ldGVycztcblxuICByZXR1cm4gcmVzdEl0ZW1zLnJlZHVjZShcbiAgICAoYWNjdW11bGF0b3IsIG1ldHJpY1RvU3VidHJhY3QpID0+IGFjY3VtdWxhdG9yIC0gaW5wdXRbbWV0cmljVG9TdWJ0cmFjdF0sXG4gICAgaW5wdXRbZmlyc3RJdGVtXSAvLyBTdGFydGluZyBhY2N1bXVsYXRvciB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgaXRlbVxuICApO1xufTtcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { PluginParams, ConfigParams } from '@grnsft/if-core/types';
2
+ export declare const Sum: (config: ConfigParams | undefined, parametersMetadata: import("@grnsft/if-core/types").PluginParametersMetadata, mapping: import("@grnsft/if-core/types").MappingParams) => {
3
+ metadata: {
4
+ inputs: {
5
+ [x: string]: {
6
+ description: string;
7
+ unit: string;
8
+ 'aggregation-method': import("@grnsft/if-core/types").AggregationOptions;
9
+ };
10
+ };
11
+ outputs: import("@grnsft/if-core/types").ParameterMetadata;
12
+ };
13
+ execute: (inputs: PluginParams[]) => Promise<{
14
+ [x: string]: any;
15
+ }[]>;
16
+ };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Sum = void 0;
4
+ const zod_1 = require("zod");
5
+ const interfaces_1 = require("@grnsft/if-core/interfaces");
6
+ const validations_1 = require("../../../common/util/validations");
7
+ exports.Sum = (0, interfaces_1.PluginFactory)({
8
+ configValidation: zod_1.z.object({
9
+ 'input-parameters': zod_1.z.array(zod_1.z.string()),
10
+ 'output-parameter': zod_1.z.string().min(1),
11
+ }),
12
+ inputValidation: (input, config) => {
13
+ const inputParameters = config['input-parameters'];
14
+ const inputData = inputParameters.reduce((acc, param) => {
15
+ acc[param] = input[param];
16
+ return acc;
17
+ }, {});
18
+ const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
19
+ return (0, validations_1.validate)(validationSchema, inputData);
20
+ },
21
+ implementation: async (inputs, config) => {
22
+ const { 'input-parameters': inputParameters, 'output-parameter': outputParameter, } = config;
23
+ return inputs.map(input => {
24
+ const calculatedResult = calculateSum(input, inputParameters);
25
+ return {
26
+ ...input,
27
+ [outputParameter]: calculatedResult,
28
+ };
29
+ });
30
+ },
31
+ allowArithmeticExpressions: [],
32
+ });
33
+ /**
34
+ * Calculates the sum of the energy components.
35
+ */
36
+ const calculateSum = (input, inputParameters) => inputParameters.reduce((accumulator, metricToSum) => accumulator + input[metricToSum], 0);
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3N1bS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFFdEIsMkRBQXlEO0FBR3pELGtFQUEwRDtBQUU3QyxRQUFBLEdBQUcsR0FBRyxJQUFBLDBCQUFhLEVBQUM7SUFDL0IsZ0JBQWdCLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN6QixrQkFBa0IsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QyxrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN0QyxDQUFDO0lBQ0YsZUFBZSxFQUFFLENBQUMsS0FBbUIsRUFBRSxNQUFvQixFQUFFLEVBQUU7UUFDN0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FDdEMsQ0FBQyxHQUF1QixFQUFFLEtBQXNCLEVBQUUsRUFBRTtZQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUNELEVBQTRCLENBQzdCLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBQSxzQkFBUSxFQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE1BQU0sRUFDSixrQkFBa0IsRUFBRSxlQUFlLEVBQ25DLGtCQUFrQixFQUFFLGVBQWUsR0FDcEMsR0FBRyxNQUFNLENBQUM7UUFFWCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBRTlELE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLENBQUMsZUFBZSxDQUFDLEVBQUUsZ0JBQWdCO2FBQ3BDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCwwQkFBMEIsRUFBRSxFQUFFO0NBQy9CLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFtQixFQUFFLGVBQXlCLEVBQUUsRUFBRSxDQUN0RSxlQUFlLENBQUMsTUFBTSxDQUNwQixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQzlELENBQUMsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge1BsdWdpbkZhY3Rvcnl9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7UGx1Z2luUGFyYW1zLCBDb25maWdQYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuZXhwb3J0IGNvbnN0IFN1bSA9IFBsdWdpbkZhY3Rvcnkoe1xuICBjb25maWdWYWxpZGF0aW9uOiB6Lm9iamVjdCh7XG4gICAgJ2lucHV0LXBhcmFtZXRlcnMnOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgICdvdXRwdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gIH0pLFxuICBpbnB1dFZhbGlkYXRpb246IChpbnB1dDogUGx1Z2luUGFyYW1zLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IGlucHV0UGFyYW1ldGVycyA9IGNvbmZpZ1snaW5wdXQtcGFyYW1ldGVycyddO1xuICAgIGNvbnN0IGlucHV0RGF0YSA9IGlucHV0UGFyYW1ldGVycy5yZWR1Y2UoXG4gICAgICAoYWNjOiB7W3g6IHN0cmluZ106IGFueX0sIHBhcmFtOiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgICAgYWNjW3BhcmFtXSA9IGlucHV0W3BhcmFtXTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj5cbiAgICApO1xuICAgIGNvbnN0IHZhbGlkYXRpb25TY2hlbWEgPSB6LnJlY29yZCh6LnN0cmluZygpLCB6Lm51bWJlcigpKTtcbiAgICByZXR1cm4gdmFsaWRhdGUodmFsaWRhdGlvblNjaGVtYSwgaW5wdXREYXRhKTtcbiAgfSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXJzJzogaW5wdXRQYXJhbWV0ZXJzLFxuICAgICAgJ291dHB1dC1wYXJhbWV0ZXInOiBvdXRwdXRQYXJhbWV0ZXIsXG4gICAgfSA9IGNvbmZpZztcblxuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRSZXN1bHQgPSBjYWxjdWxhdGVTdW0oaW5wdXQsIGlucHV0UGFyYW1ldGVycyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmlucHV0LFxuICAgICAgICBbb3V0cHV0UGFyYW1ldGVyXTogY2FsY3VsYXRlZFJlc3VsdCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH0sXG4gIGFsbG93QXJpdGhtZXRpY0V4cHJlc3Npb25zOiBbXSxcbn0pO1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHN1bSBvZiB0aGUgZW5lcmd5IGNvbXBvbmVudHMuXG4gKi9cbmNvbnN0IGNhbGN1bGF0ZVN1bSA9IChpbnB1dDogUGx1Z2luUGFyYW1zLCBpbnB1dFBhcmFtZXRlcnM6IHN0cmluZ1tdKSA9PlxuICBpbnB1dFBhcmFtZXRlcnMucmVkdWNlKFxuICAgIChhY2N1bXVsYXRvciwgbWV0cmljVG9TdW0pID0+IGFjY3VtdWxhdG9yICsgaW5wdXRbbWV0cmljVG9TdW1dLFxuICAgIDBcbiAgKTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export declare const TIME_UNITS_IN_SECONDS: Record<string, number>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TIME_UNITS_IN_SECONDS = void 0;
4
+ exports.TIME_UNITS_IN_SECONDS = {
5
+ s: 1,
6
+ second: 1,
7
+ sec: 1,
8
+ secs: 1,
9
+ seconds: 1,
10
+ min: 60,
11
+ mins: 60,
12
+ minute: 60,
13
+ minutes: 60,
14
+ h: 3600,
15
+ hs: 3600,
16
+ hr: 3600,
17
+ hrs: 3600,
18
+ hour: 3600,
19
+ hours: 3600,
20
+ d: 86400,
21
+ ds: 86400,
22
+ day: 86400,
23
+ days: 86400,
24
+ w: 604800,
25
+ ws: 604800,
26
+ wk: 604800,
27
+ wks: 604800,
28
+ week: 604800,
29
+ weeks: 604800,
30
+ m: 2628336,
31
+ mnth: 2628336,
32
+ mth: 2628336,
33
+ mnths: 2628336,
34
+ mths: 2628336,
35
+ month: 2628336,
36
+ months: 2628336,
37
+ y: 31556952,
38
+ ys: 31556952,
39
+ yr: 31556952,
40
+ yrs: 31556952,
41
+ year: 31556952,
42
+ years: 31556952,
43
+ };
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2lmLXJ1bi9idWlsdGlucy90aW1lLWNvbnZlcnRlci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxxQkFBcUIsR0FBMkI7SUFDM0QsQ0FBQyxFQUFFLENBQUM7SUFDSixNQUFNLEVBQUUsQ0FBQztJQUNULEdBQUcsRUFBRSxDQUFDO0lBQ04sSUFBSSxFQUFFLENBQUM7SUFDUCxPQUFPLEVBQUUsQ0FBQztJQUNWLEdBQUcsRUFBRSxFQUFFO0lBQ1AsSUFBSSxFQUFFLEVBQUU7SUFDUixNQUFNLEVBQUUsRUFBRTtJQUNWLE9BQU8sRUFBRSxFQUFFO0lBQ1gsQ0FBQyxFQUFFLElBQUk7SUFDUCxFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxJQUFJO0lBQ1gsQ0FBQyxFQUFFLEtBQUs7SUFDUixFQUFFLEVBQUUsS0FBSztJQUNULEdBQUcsRUFBRSxLQUFLO0lBQ1YsSUFBSSxFQUFFLEtBQUs7SUFDWCxDQUFDLEVBQUUsTUFBTTtJQUNULEVBQUUsRUFBRSxNQUFNO0lBQ1YsRUFBRSxFQUFFLE1BQU07SUFDVixHQUFHLEVBQUUsTUFBTTtJQUNYLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE1BQU07SUFDYixDQUFDLEVBQUUsT0FBTztJQUNWLElBQUksRUFBRSxPQUFPO0lBQ2IsR0FBRyxFQUFFLE9BQU87SUFDWixLQUFLLEVBQUUsT0FBTztJQUNkLElBQUksRUFBRSxPQUFPO0lBQ2IsS0FBSyxFQUFFLE9BQU87SUFDZCxNQUFNLEVBQUUsT0FBTztJQUNmLENBQUMsRUFBRSxRQUFRO0lBQ1gsRUFBRSxFQUFFLFFBQVE7SUFDWixFQUFFLEVBQUUsUUFBUTtJQUNaLEdBQUcsRUFBRSxRQUFRO0lBQ2IsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsUUFBUTtDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRJTUVfVU5JVFNfSU5fU0VDT05EUzogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgczogMSxcbiAgc2Vjb25kOiAxLFxuICBzZWM6IDEsXG4gIHNlY3M6IDEsXG4gIHNlY29uZHM6IDEsXG4gIG1pbjogNjAsXG4gIG1pbnM6IDYwLFxuICBtaW51dGU6IDYwLFxuICBtaW51dGVzOiA2MCxcbiAgaDogMzYwMCxcbiAgaHM6IDM2MDAsXG4gIGhyOiAzNjAwLFxuICBocnM6IDM2MDAsXG4gIGhvdXI6IDM2MDAsXG4gIGhvdXJzOiAzNjAwLFxuICBkOiA4NjQwMCxcbiAgZHM6IDg2NDAwLFxuICBkYXk6IDg2NDAwLFxuICBkYXlzOiA4NjQwMCxcbiAgdzogNjA0ODAwLFxuICB3czogNjA0ODAwLFxuICB3azogNjA0ODAwLFxuICB3a3M6IDYwNDgwMCxcbiAgd2VlazogNjA0ODAwLFxuICB3ZWVrczogNjA0ODAwLFxuICBtOiAyNjI4MzM2LFxuICBtbnRoOiAyNjI4MzM2LFxuICBtdGg6IDI2MjgzMzYsXG4gIG1udGhzOiAyNjI4MzM2LFxuICBtdGhzOiAyNjI4MzM2LFxuICBtb250aDogMjYyODMzNixcbiAgbW9udGhzOiAyNjI4MzM2LFxuICB5OiAzMTU1Njk1MixcbiAgeXM6IDMxNTU2OTUyLFxuICB5cjogMzE1NTY5NTIsXG4gIHlyczogMzE1NTY5NTIsXG4gIHllYXI6IDMxNTU2OTUyLFxuICB5ZWFyczogMzE1NTY5NTIsXG59O1xuIl19
@@ -0,0 +1,16 @@
1
+ import { PluginParams, ConfigParams } from '@grnsft/if-core/types';
2
+ export declare const TimeConverter: (config: ConfigParams | undefined, parametersMetadata: import("@grnsft/if-core/types").PluginParametersMetadata, mapping: import("@grnsft/if-core/types").MappingParams) => {
3
+ metadata: {
4
+ inputs: {
5
+ [x: string]: {
6
+ description: string;
7
+ unit: string;
8
+ 'aggregation-method': import("@grnsft/if-core/types").AggregationOptions;
9
+ };
10
+ };
11
+ outputs: import("@grnsft/if-core/types").ParameterMetadata;
12
+ };
13
+ execute: (inputs: PluginParams[]) => Promise<{
14
+ [x: string]: any;
15
+ }[]>;
16
+ };