@grnsft/if 0.7.0-beta.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.
- package/.env +5 -0
- package/build/common/config/index.d.ts +1 -0
- package/build/common/config/index.js +6 -0
- package/build/common/config/strings.d.ts +11 -0
- package/build/common/config/strings.js +19 -0
- package/build/common/lib/load.d.ts +6 -0
- package/build/common/lib/load.js +18 -0
- package/build/common/types/manifest.d.ts +13 -0
- package/build/common/types/manifest.js +3 -0
- package/build/common/util/debug-logger.d.ts +4 -0
- package/build/common/util/debug-logger.js +124 -0
- package/build/common/util/fs.d.ts +20 -0
- package/build/common/util/fs.js +94 -0
- package/build/common/util/helpers.d.ts +15 -0
- package/build/common/util/helpers.js +80 -0
- package/build/common/util/logger.d.ts +5 -0
- package/build/common/util/logger.js +39 -0
- package/build/common/util/validations.d.ts +465 -0
- package/build/common/util/validations.js +148 -0
- package/build/common/util/yaml.d.ts +12 -0
- package/build/common/util/yaml.js +59 -0
- package/build/if-check/config/config.d.ts +6 -0
- package/build/if-check/config/config.js +31 -0
- package/build/if-check/config/index.d.ts +2 -0
- package/build/if-check/config/index.js +8 -0
- package/build/if-check/config/strings.d.ts +11 -0
- package/build/if-check/config/strings.js +15 -0
- package/build/if-check/index.d.ts +2 -0
- package/build/if-check/index.js +98 -0
- package/build/if-check/types/process-args.d.ts +4 -0
- package/build/if-check/types/process-args.js +3 -0
- package/build/if-check/util/args.d.ts +10 -0
- package/build/if-check/util/args.js +56 -0
- package/build/if-check/util/helpers.d.ts +4 -0
- package/build/if-check/util/helpers.js +18 -0
- package/build/if-check/util/npm.d.ts +4 -0
- package/build/if-check/util/npm.js +59 -0
- package/build/if-csv/config/config.d.ts +6 -0
- package/build/if-csv/config/config.js +36 -0
- package/build/if-csv/config/index.d.ts +2 -0
- package/build/if-csv/config/index.js +8 -0
- package/build/if-csv/config/strings.d.ts +3 -0
- package/build/if-csv/config/strings.js +7 -0
- package/build/if-csv/index.d.ts +2 -0
- package/build/if-csv/index.js +63 -0
- package/build/if-csv/types/csv.d.ts +7 -0
- package/build/if-csv/types/csv.js +3 -0
- package/build/if-csv/types/process-args.d.ts +5 -0
- package/build/if-csv/types/process-args.js +3 -0
- package/build/if-csv/util/args.d.ts +12 -0
- package/build/if-csv/util/args.js +47 -0
- package/build/if-csv/util/helpers.d.ts +9 -0
- package/build/if-csv/util/helpers.js +95 -0
- package/build/if-diff/config/config.d.ts +6 -0
- package/build/if-diff/config/config.js +31 -0
- package/build/if-diff/config/index.d.ts +2 -0
- package/build/if-diff/config/index.js +8 -0
- package/build/if-diff/config/strings.d.ts +6 -0
- package/build/if-diff/config/strings.js +10 -0
- package/build/if-diff/index.d.ts +2 -0
- package/build/if-diff/index.js +46 -0
- package/build/if-diff/lib/compare.d.ts +10 -0
- package/build/if-diff/lib/compare.js +56 -0
- package/build/if-diff/lib/load.d.ts +63 -0
- package/build/if-diff/lib/load.js +51 -0
- package/build/if-diff/types/args.d.ts +5 -0
- package/build/if-diff/types/args.js +3 -0
- package/build/if-diff/types/compare.d.ts +7 -0
- package/build/if-diff/types/compare.js +3 -0
- package/build/if-diff/types/process-args.d.ts +4 -0
- package/build/if-diff/types/process-args.js +3 -0
- package/build/if-diff/util/args.d.ts +5 -0
- package/build/if-diff/util/args.js +51 -0
- package/build/if-diff/util/helpers.d.ts +13 -0
- package/build/if-diff/util/helpers.js +75 -0
- package/build/if-env/config/config.d.ts +6 -0
- package/build/if-env/config/config.js +37 -0
- package/build/if-env/config/index.d.ts +2 -0
- package/build/if-env/config/index.js +8 -0
- package/build/if-env/config/strings.d.ts +7 -0
- package/build/if-env/config/strings.js +11 -0
- package/build/if-env/index.d.ts +2 -0
- package/build/if-env/index.js +40 -0
- package/build/if-env/types/if-env.d.ts +8 -0
- package/build/if-env/types/if-env.js +3 -0
- package/build/if-env/types/npm.d.ts +9 -0
- package/build/if-env/types/npm.js +3 -0
- package/build/if-env/types/process-args.d.ts +5 -0
- package/build/if-env/types/process-args.js +3 -0
- package/build/if-env/util/args.d.ts +12 -0
- package/build/if-env/util/args.js +47 -0
- package/build/if-env/util/helpers.d.ts +20 -0
- package/build/if-env/util/helpers.js +94 -0
- package/build/if-env/util/npm.d.ts +24 -0
- package/build/if-env/util/npm.js +126 -0
- package/build/if-merge/config/config.d.ts +6 -0
- package/build/if-merge/config/config.js +43 -0
- package/build/if-merge/config/index.d.ts +2 -0
- package/build/if-merge/config/index.js +8 -0
- package/build/if-merge/config/strings.d.ts +5 -0
- package/build/if-merge/config/strings.js +9 -0
- package/build/if-merge/index.d.ts +2 -0
- package/build/if-merge/index.js +26 -0
- package/build/if-merge/types/process-args.d.ts +6 -0
- package/build/if-merge/types/process-args.js +3 -0
- package/build/if-merge/util/args.d.ts +9 -0
- package/build/if-merge/util/args.js +59 -0
- package/build/if-merge/util/helpers.d.ts +5 -0
- package/build/if-merge/util/helpers.js +83 -0
- package/build/if-run/builtins/coefficient/index.d.ts +16 -0
- package/build/if-run/builtins/coefficient/index.js +45 -0
- package/build/if-run/builtins/copy-param/index.d.ts +21 -0
- package/build/if-run/builtins/copy-param/index.js +58 -0
- package/build/if-run/builtins/csv-lookup/index.d.ts +16 -0
- package/build/if-run/builtins/csv-lookup/index.js +175 -0
- package/build/if-run/builtins/divide/index.d.ts +16 -0
- package/build/if-run/builtins/divide/index.js +68 -0
- package/build/if-run/builtins/exponent/index.d.ts +16 -0
- package/build/if-run/builtins/exponent/index.js +52 -0
- package/build/if-run/builtins/export-log.d.ts +4 -0
- package/build/if-run/builtins/export-log.js +44 -0
- package/build/if-run/builtins/export-yaml.d.ts +4 -0
- package/build/if-run/builtins/export-yaml.js +30 -0
- package/build/if-run/builtins/index.d.ts +16 -0
- package/build/if-run/builtins/index.js +36 -0
- package/build/if-run/builtins/interpolation/index.d.ts +16 -0
- package/build/if-run/builtins/interpolation/index.js +138 -0
- package/build/if-run/builtins/mock-observations/helpers/common-generator.d.ts +3 -0
- package/build/if-run/builtins/mock-observations/helpers/common-generator.js +29 -0
- package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.d.ts +3 -0
- package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.js +48 -0
- package/build/if-run/builtins/mock-observations/index.d.ts +16 -0
- package/build/if-run/builtins/mock-observations/index.js +108 -0
- package/build/if-run/builtins/mock-observations/interfaces/index.d.ts +6 -0
- package/build/if-run/builtins/mock-observations/interfaces/index.js +3 -0
- package/build/if-run/builtins/multiply/index.d.ts +16 -0
- package/build/if-run/builtins/multiply/index.js +47 -0
- package/build/if-run/builtins/regex/index.d.ts +16 -0
- package/build/if-run/builtins/regex/index.js +55 -0
- package/build/if-run/builtins/sci/index.d.ts +16 -0
- package/build/if-run/builtins/sci/index.js +92 -0
- package/build/if-run/builtins/sci-embodied/index.d.ts +16 -0
- package/build/if-run/builtins/sci-embodied/index.js +142 -0
- package/build/if-run/builtins/shell/index.d.ts +16 -0
- package/build/if-run/builtins/shell/index.js +50 -0
- package/build/if-run/builtins/subtract/index.d.ts +16 -0
- package/build/if-run/builtins/subtract/index.js +51 -0
- package/build/if-run/builtins/sum/index.d.ts +16 -0
- package/build/if-run/builtins/sum/index.js +37 -0
- package/build/if-run/builtins/time-converter/config.d.ts +1 -0
- package/build/if-run/builtins/time-converter/config.js +44 -0
- package/build/if-run/builtins/time-converter/index.d.ts +16 -0
- package/build/if-run/builtins/time-converter/index.js +63 -0
- package/build/if-run/builtins/time-sync/index.d.ts +31 -0
- package/build/if-run/builtins/time-sync/index.js +371 -0
- package/build/if-run/config/config.d.ts +9 -0
- package/build/if-run/config/config.js +79 -0
- package/build/if-run/config/index.d.ts +2 -0
- package/build/if-run/config/index.js +8 -0
- package/build/if-run/config/strings.d.ts +62 -0
- package/build/if-run/config/strings.js +81 -0
- package/build/if-run/index.d.ts +2 -0
- package/build/if-run/index.js +58 -0
- package/build/if-run/lib/aggregate.d.ts +14 -0
- package/build/if-run/lib/aggregate.js +130 -0
- package/build/if-run/lib/compute.d.ts +5 -0
- package/build/if-run/lib/compute.js +164 -0
- package/build/if-run/lib/environment.d.ts +5 -0
- package/build/if-run/lib/environment.js +75 -0
- package/build/if-run/lib/exhaust.d.ts +7 -0
- package/build/if-run/lib/exhaust.js +27 -0
- package/build/if-run/lib/explain.d.ts +9 -0
- package/build/if-run/lib/explain.js +72 -0
- package/build/if-run/lib/initialize.d.ts +10 -0
- package/build/if-run/lib/initialize.js +113 -0
- package/build/if-run/lib/regroup.d.ts +5 -0
- package/build/if-run/lib/regroup.js +67 -0
- package/build/if-run/types/aggregation.d.ts +2 -0
- package/build/if-run/types/aggregation.js +11 -0
- package/build/if-run/types/compute.d.ts +33 -0
- package/build/if-run/types/compute.js +3 -0
- package/build/if-run/types/environment.d.ts +18 -0
- package/build/if-run/types/environment.js +3 -0
- package/build/if-run/types/explain.d.ts +16 -0
- package/build/if-run/types/explain.js +3 -0
- package/build/if-run/types/plugin-storage.d.ts +6 -0
- package/build/if-run/types/plugin-storage.js +3 -0
- package/build/if-run/types/process-args.d.ts +27 -0
- package/build/if-run/types/process-args.js +3 -0
- package/build/if-run/util/aggregation-helper.d.ts +6 -0
- package/build/if-run/util/aggregation-helper.js +52 -0
- package/build/if-run/util/args.d.ts +9 -0
- package/build/if-run/util/args.js +61 -0
- package/build/if-run/util/helpers.d.ts +8 -0
- package/build/if-run/util/helpers.js +37 -0
- package/build/if-run/util/log-memoize.d.ts +3 -0
- package/build/if-run/util/log-memoize.js +19 -0
- package/build/if-run/util/os-checker.d.ts +7 -0
- package/build/if-run/util/os-checker.js +97 -0
- package/build/if-run/util/plugin-storage.d.ts +14 -0
- package/build/if-run/util/plugin-storage.js +34 -0
- package/coverage/clover.xml +2045 -0
- package/coverage/coverage-final.json +55 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/builtins/coefficient/index.html +116 -0
- package/coverage/lcov-report/builtins/coefficient/index.ts.html +298 -0
- package/coverage/lcov-report/builtins/csv-lookup/index.html +116 -0
- package/coverage/lcov-report/builtins/csv-lookup/index.ts.html +826 -0
- package/coverage/lcov-report/builtins/divide/index.html +116 -0
- package/coverage/lcov-report/builtins/divide/index.ts.html +358 -0
- package/coverage/lcov-report/builtins/exponent/index.html +116 -0
- package/coverage/lcov-report/builtins/exponent/index.ts.html +361 -0
- package/coverage/lcov-report/builtins/export-csv-raw.ts.html +553 -0
- package/coverage/lcov-report/builtins/export-csv.ts.html +436 -0
- package/coverage/lcov-report/builtins/export-log.ts.html +148 -0
- package/coverage/lcov-report/builtins/export-yaml.ts.html +193 -0
- package/coverage/lcov-report/builtins/group-by.ts.html +370 -0
- package/coverage/lcov-report/builtins/index.html +206 -0
- package/coverage/lcov-report/builtins/index.ts.html +130 -0
- package/coverage/lcov-report/builtins/interpolation/index.html +116 -0
- package/coverage/lcov-report/builtins/interpolation/index.ts.html +676 -0
- package/coverage/lcov-report/builtins/interpolation/types.ts.html +100 -0
- package/coverage/lcov-report/builtins/mock-observations/helpers/common-generator.ts.html +184 -0
- package/coverage/lcov-report/builtins/mock-observations/helpers/index.html +131 -0
- package/coverage/lcov-report/builtins/mock-observations/helpers/rand-int-generator.ts.html +289 -0
- package/coverage/lcov-report/builtins/mock-observations/index.html +116 -0
- package/coverage/lcov-report/builtins/mock-observations/index.ts.html +619 -0
- package/coverage/lcov-report/builtins/multiply/index.html +116 -0
- package/coverage/lcov-report/builtins/multiply/index.ts.html +343 -0
- package/coverage/lcov-report/builtins/regex/index.html +116 -0
- package/coverage/lcov-report/builtins/regex/index.ts.html +373 -0
- package/coverage/lcov-report/builtins/sci/config.ts.html +205 -0
- package/coverage/lcov-report/builtins/sci/index.html +116 -0
- package/coverage/lcov-report/builtins/sci/index.ts.html +325 -0
- package/coverage/lcov-report/builtins/sci-embodied/index.html +116 -0
- package/coverage/lcov-report/builtins/sci-embodied/index.ts.html +478 -0
- package/coverage/lcov-report/builtins/shell/index.html +116 -0
- package/coverage/lcov-report/builtins/shell/index.ts.html +280 -0
- package/coverage/lcov-report/builtins/subtract/index.html +116 -0
- package/coverage/lcov-report/builtins/subtract/index.ts.html +379 -0
- package/coverage/lcov-report/builtins/sum/index.html +116 -0
- package/coverage/lcov-report/builtins/sum/index.ts.html +334 -0
- package/coverage/lcov-report/builtins/time-sync.ts.html +1462 -0
- package/coverage/lcov-report/common/config/index.html +131 -0
- package/coverage/lcov-report/common/config/index.ts.html +88 -0
- package/coverage/lcov-report/common/config/strings.ts.html +121 -0
- package/coverage/lcov-report/common/lib/index.html +116 -0
- package/coverage/lcov-report/common/lib/load.ts.html +139 -0
- package/coverage/lcov-report/common/util/debug-logger.ts.html +511 -0
- package/coverage/lcov-report/common/util/fs.ts.html +289 -0
- package/coverage/lcov-report/common/util/helpers.ts.html +280 -0
- package/coverage/lcov-report/common/util/index.html +191 -0
- package/coverage/lcov-report/common/util/logger.ts.html +151 -0
- package/coverage/lcov-report/common/util/validations.ts.html +613 -0
- package/coverage/lcov-report/common/util/yaml.ts.html +193 -0
- package/coverage/lcov-report/config/config.ts.html +463 -0
- package/coverage/lcov-report/config/index.html +161 -0
- package/coverage/lcov-report/config/index.ts.html +94 -0
- package/coverage/lcov-report/config/params.ts.html +697 -0
- package/coverage/lcov-report/config/strings.ts.html +490 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/if-check/config/config.ts.html +184 -0
- package/coverage/lcov-report/if-check/config/index.html +146 -0
- package/coverage/lcov-report/if-check/config/index.ts.html +91 -0
- package/coverage/lcov-report/if-check/config/strings.ts.html +142 -0
- package/coverage/lcov-report/if-check/util/args.ts.html +304 -0
- package/coverage/lcov-report/if-check/util/helpers.ts.html +136 -0
- package/coverage/lcov-report/if-check/util/index.html +146 -0
- package/coverage/lcov-report/if-check/util/npm.ts.html +232 -0
- package/coverage/lcov-report/if-csv/util/helpers.ts.html +346 -0
- package/coverage/lcov-report/if-csv/util/index.html +116 -0
- package/coverage/lcov-report/if-diff/config/config.ts.html +184 -0
- package/coverage/lcov-report/if-diff/config/index.html +146 -0
- package/coverage/lcov-report/if-diff/config/index.ts.html +91 -0
- package/coverage/lcov-report/if-diff/config/strings.ts.html +100 -0
- package/coverage/lcov-report/if-diff/lib/compare.ts.html +286 -0
- package/coverage/lcov-report/if-diff/lib/index.html +131 -0
- package/coverage/lcov-report/if-diff/lib/load.ts.html +199 -0
- package/coverage/lcov-report/if-diff/util/args.ts.html +268 -0
- package/coverage/lcov-report/if-diff/util/helpers.ts.html +337 -0
- package/coverage/lcov-report/if-diff/util/index.html +131 -0
- package/coverage/lcov-report/if-env/config/config.ts.html +211 -0
- package/coverage/lcov-report/if-env/config/index.html +146 -0
- package/coverage/lcov-report/if-env/config/index.ts.html +91 -0
- package/coverage/lcov-report/if-env/config/strings.ts.html +109 -0
- package/coverage/lcov-report/if-env/util/args.ts.html +250 -0
- package/coverage/lcov-report/if-env/util/index.html +131 -0
- package/coverage/lcov-report/if-env/util/npm.ts.html +526 -0
- package/coverage/lcov-report/if-merge/util/args.ts.html +295 -0
- package/coverage/lcov-report/if-merge/util/helpers.ts.html +301 -0
- package/coverage/lcov-report/if-merge/util/index.html +131 -0
- package/coverage/lcov-report/if-run/builtins/coefficient/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/coefficient/index.ts.html +382 -0
- package/coverage/lcov-report/if-run/builtins/copy-param/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/copy-param/index.ts.html +415 -0
- package/coverage/lcov-report/if-run/builtins/csv-lookup/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/csv-lookup/index.ts.html +868 -0
- package/coverage/lcov-report/if-run/builtins/divide/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/divide/index.ts.html +469 -0
- package/coverage/lcov-report/if-run/builtins/exponent/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/exponent/index.ts.html +394 -0
- package/coverage/lcov-report/if-run/builtins/export-csv-raw.ts.html +553 -0
- package/coverage/lcov-report/if-run/builtins/export-csv.ts.html +436 -0
- package/coverage/lcov-report/if-run/builtins/export-log.ts.html +148 -0
- package/coverage/lcov-report/if-run/builtins/export-yaml.ts.html +193 -0
- package/coverage/lcov-report/if-run/builtins/group-by.ts.html +370 -0
- package/coverage/lcov-report/if-run/builtins/index.html +146 -0
- package/coverage/lcov-report/if-run/builtins/index.ts.html +133 -0
- package/coverage/lcov-report/if-run/builtins/interpolation/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/interpolation/index.ts.html +709 -0
- package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/common-generator.ts.html +184 -0
- package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/index.html +131 -0
- package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/rand-int-generator.ts.html +289 -0
- package/coverage/lcov-report/if-run/builtins/mock-observations/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/mock-observations/index.ts.html +709 -0
- package/coverage/lcov-report/if-run/builtins/multiply/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/multiply/index.ts.html +406 -0
- package/coverage/lcov-report/if-run/builtins/regex/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/regex/index.ts.html +433 -0
- package/coverage/lcov-report/if-run/builtins/sci/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/sci/index.ts.html +502 -0
- package/coverage/lcov-report/if-run/builtins/sci-embodied/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/sci-embodied/index.ts.html +577 -0
- package/coverage/lcov-report/if-run/builtins/shell/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/shell/index.ts.html +343 -0
- package/coverage/lcov-report/if-run/builtins/subtract/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/subtract/index.ts.html +418 -0
- package/coverage/lcov-report/if-run/builtins/sum/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/sum/index.ts.html +400 -0
- package/coverage/lcov-report/if-run/builtins/time-converter/config.ts.html +205 -0
- package/coverage/lcov-report/if-run/builtins/time-converter/index.html +131 -0
- package/coverage/lcov-report/if-run/builtins/time-converter/index.ts.html +412 -0
- package/coverage/lcov-report/if-run/builtins/time-sync/index.html +116 -0
- package/coverage/lcov-report/if-run/builtins/time-sync/index.ts.html +1651 -0
- package/coverage/lcov-report/if-run/builtins/time-sync.ts.html +1462 -0
- package/coverage/lcov-report/if-run/config/config.ts.html +271 -0
- package/coverage/lcov-report/if-run/config/index.html +161 -0
- package/coverage/lcov-report/if-run/config/index.ts.html +94 -0
- package/coverage/lcov-report/if-run/config/params.ts.html +679 -0
- package/coverage/lcov-report/if-run/config/strings.ts.html +460 -0
- package/coverage/lcov-report/if-run/lib/aggregate.ts.html +580 -0
- package/coverage/lcov-report/if-run/lib/compute.ts.html +709 -0
- package/coverage/lcov-report/if-run/lib/environment.ts.html +373 -0
- package/coverage/lcov-report/if-run/lib/exhaust.ts.html +193 -0
- package/coverage/lcov-report/if-run/lib/explain.ts.html +217 -0
- package/coverage/lcov-report/if-run/lib/index.html +206 -0
- package/coverage/lcov-report/if-run/lib/initialize.ts.html +475 -0
- package/coverage/lcov-report/if-run/lib/parameterize.ts.html +322 -0
- package/coverage/lcov-report/if-run/lib/regroup.ts.html +325 -0
- package/coverage/lcov-report/if-run/lib/time-sync.ts.html +1510 -0
- package/coverage/lcov-report/if-run/types/aggregation.ts.html +94 -0
- package/coverage/lcov-report/if-run/types/index.html +146 -0
- package/coverage/lcov-report/if-run/types/interface.ts.html +112 -0
- package/coverage/lcov-report/if-run/types/parameters.ts.html +106 -0
- package/coverage/lcov-report/if-run/util/aggregation-helper.ts.html +280 -0
- package/coverage/lcov-report/if-run/util/args.ts.html +313 -0
- package/coverage/lcov-report/if-run/util/helpers.ts.html +304 -0
- package/coverage/lcov-report/if-run/util/index.html +191 -0
- package/coverage/lcov-report/if-run/util/json.ts.html +115 -0
- package/coverage/lcov-report/if-run/util/log-memoize.ts.html +145 -0
- package/coverage/lcov-report/if-run/util/os-checker.ts.html +421 -0
- package/coverage/lcov-report/if-run/util/plugin-storage.ts.html +202 -0
- package/coverage/lcov-report/index.html +521 -0
- package/coverage/lcov-report/lib/aggregate.ts.html +358 -0
- package/coverage/lcov-report/lib/compare.ts.html +286 -0
- package/coverage/lcov-report/lib/compute.ts.html +436 -0
- package/coverage/lcov-report/lib/environment.ts.html +376 -0
- package/coverage/lcov-report/lib/exhaust.ts.html +289 -0
- package/coverage/lcov-report/lib/index.html +221 -0
- package/coverage/lcov-report/lib/initialize.ts.html +430 -0
- package/coverage/lcov-report/lib/load.ts.html +268 -0
- package/coverage/lcov-report/lib/parameterize.ts.html +316 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/types/aggregation.ts.html +94 -0
- package/coverage/lcov-report/types/index.html +146 -0
- package/coverage/lcov-report/types/interface.ts.html +112 -0
- package/coverage/lcov-report/types/parameters.ts.html +106 -0
- package/coverage/lcov-report/util/aggregation-helper.ts.html +289 -0
- package/coverage/lcov-report/util/args.ts.html +649 -0
- package/coverage/lcov-report/util/debug-logger.ts.html +481 -0
- package/coverage/lcov-report/util/errors.ts.html +232 -0
- package/coverage/lcov-report/util/fs.ts.html +124 -0
- package/coverage/lcov-report/util/helpers.ts.html +895 -0
- package/coverage/lcov-report/util/index.html +296 -0
- package/coverage/lcov-report/util/json.ts.html +115 -0
- package/coverage/lcov-report/util/log-memoize.ts.html +145 -0
- package/coverage/lcov-report/util/logger.ts.html +151 -0
- package/coverage/lcov-report/util/npm.ts.html +499 -0
- package/coverage/lcov-report/util/os-checker.ts.html +421 -0
- package/coverage/lcov-report/util/plugin-storage.ts.html +202 -0
- package/coverage/lcov-report/util/validations.ts.html +544 -0
- package/coverage/lcov-report/util/yaml.ts.html +193 -0
- package/coverage/lcov.info +3392 -0
- package/manifests/outputs/features/regroup/test.yml +92 -0
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3NjaS1lbWJvZGllZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFFdEIsaURBQW1FO0FBRW5FLDJEQUF5RDtBQUU1QyxRQUFBLFdBQVcsR0FBRyxJQUFBLDBCQUFhLEVBQUM7SUFDdkMsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFO1lBQ04sS0FBSyxFQUFFO2dCQUNMLFdBQVcsRUFBRSw0Q0FBNEM7Z0JBQ3pELElBQUksRUFBRSxNQUFNO2dCQUNaLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsTUFBTTtvQkFDWixTQUFTLEVBQUUsTUFBTTtpQkFDbEI7YUFDRjtZQUNELE1BQU0sRUFBRTtnQkFDTixXQUFXLEVBQUUscUNBQXFDO2dCQUNsRCxJQUFJLEVBQUUsSUFBSTtnQkFDVixvQkFBb0IsRUFBRTtvQkFDcEIsSUFBSSxFQUFFLE1BQU07b0JBQ1osU0FBUyxFQUFFLE1BQU07aUJBQ2xCO2FBQ0Y7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsV0FBVyxFQUFFLHlDQUF5QztnQkFDdEQsSUFBSSxFQUFFLE1BQU07Z0JBQ1osb0JBQW9CLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxNQUFNO29CQUNaLFNBQVMsRUFBRSxNQUFNO2lCQUNsQjthQUNGO1lBQ0QsR0FBRyxFQUFFO2dCQUNILFdBQVcsRUFBRSx5Q0FBeUM7Z0JBQ3RELElBQUksRUFBRSxNQUFNO2dCQUNaLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsTUFBTTtvQkFDWixTQUFTLEVBQUUsTUFBTTtpQkFDbEI7YUFDRjtZQUNELEdBQUcsRUFBRTtnQkFDSCxXQUFXLEVBQUUseUNBQXlDO2dCQUN0RCxJQUFJLEVBQUUsTUFBTTtnQkFDWixvQkFBb0IsRUFBRTtvQkFDcEIsSUFBSSxFQUFFLE1BQU07b0JBQ1osU0FBUyxFQUFFLE1BQU07aUJBQ2xCO2FBQ0Y7WUFDRCxhQUFhLEVBQUU7Z0JBQ2IsV0FBVyxFQUNULDROQUE0TjtnQkFDOU4sSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsTUFBTTtvQkFDWixTQUFTLEVBQUUsTUFBTTtpQkFDbEI7YUFDRjtZQUNELElBQUksRUFBRTtnQkFDSixXQUFXLEVBQ1QsK0hBQStIO2dCQUNqSSxJQUFJLEVBQUUsU0FBUztnQkFDZixvQkFBb0IsRUFBRTtvQkFDcEIsSUFBSSxFQUFFLE1BQU07b0JBQ1osU0FBUyxFQUFFLE1BQU07aUJBQ2xCO2FBQ0Y7U0FDRjtRQUNELE9BQU8sRUFBRTtZQUNQLGlCQUFpQixFQUFFO2dCQUNqQixXQUFXLEVBQUUsaURBQWlEO2dCQUM5RCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxvQkFBb0IsRUFBRTtvQkFDcEIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsU0FBUyxFQUFFLEtBQUs7aUJBQ2pCO2FBQ0Y7U0FDRjtLQUNGO0lBQ0QsZ0JBQWdCLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN6QixnQkFBZ0IsRUFBRSxPQUFDLENBQUMsVUFBVSxDQUM1QixLQUFLLENBQUMsRUFBRSxDQUFDLElBQUEsb0NBQTRCLEVBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUN4RSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FDN0I7UUFDRCxpQkFBaUIsRUFBRSxPQUFDLENBQUMsVUFBVSxDQUM3QixLQUFLLENBQUMsRUFBRSxDQUFDLElBQUEsb0NBQTRCLEVBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUN6RSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FDOUI7UUFDRCxvQkFBb0IsRUFBRSxPQUFDLENBQUMsVUFBVSxDQUNoQyxLQUFLLENBQUMsRUFBRSxDQUNOLElBQUEsb0NBQTRCLEVBQUMsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUNyRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDbkM7UUFDRCxRQUFRLEVBQUUsT0FBQyxDQUFDLFVBQVUsQ0FDcEIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFBLG9DQUE0QixFQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQ2xFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUNwQztRQUNELHlCQUF5QixFQUFFLE9BQUMsQ0FBQyxVQUFVLENBQ3JDLEtBQUssQ0FBQyxFQUFFLENBQ04sSUFBQSxvQ0FBNEIsRUFDMUIseUJBQXlCLEVBQ3pCLEtBQUssRUFDTCxRQUFRLENBQ1QsRUFDSCxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FDbEM7UUFDRCwyQkFBMkIsRUFBRSxPQUFDLENBQUMsVUFBVSxDQUN2QyxLQUFLLENBQUMsRUFBRSxDQUNOLElBQUEsb0NBQTRCLEVBQzFCLDJCQUEyQixFQUMzQixLQUFLLEVBQ0wsUUFBUSxDQUNULEVBQ0gsT0FBQzthQUNFLE1BQU0sRUFBRTthQUNSLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDTixPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUN0QjtRQUNELHdCQUF3QixFQUFFLE9BQUMsQ0FBQyxVQUFVLENBQ3BDLEtBQUssQ0FBQyxFQUFFLENBQ04sSUFBQSxvQ0FBNEIsRUFBQyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQ3pFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNqQztRQUNELHdCQUF3QixFQUFFLE9BQUMsQ0FBQyxVQUFVLENBQ3BDLEtBQUssQ0FBQyxFQUFFLENBQ04sSUFBQSxvQ0FBNEIsRUFBQyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQ3pFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUNsQztRQUNELHdCQUF3QixFQUFFLE9BQUMsQ0FBQyxVQUFVLENBQ3BDLEtBQUssQ0FBQyxFQUFFLENBQ04sSUFBQSxvQ0FBNEIsRUFBQyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQ3pFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUNsQztRQUNELGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDMUMsQ0FBQztJQUNGLGVBQWUsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3hCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxQixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDcEMsR0FBRyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNqQyxHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDakMsYUFBYSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7S0FDbEMsQ0FBQztJQUNGLGNBQWMsRUFBRSxLQUFLLEVBQUUsTUFBc0IsRUFBRSxNQUFvQixFQUFFLEVBQUU7UUFDckU7Ozs7V0FJRztRQUNILE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QixNQUFNLElBQUksR0FDUixDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sT0FBTyxHQUNYLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNoRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUMxRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQzFELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDMUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFFN0MsTUFBTSxhQUFhLEdBQ2pCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksR0FBRyxPQUFPLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7WUFFckUsTUFBTSwwQkFBMEIsR0FBRyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXhFLE1BQU0saUNBQWlDLEdBQ3JDLDBCQUEwQixHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBRTNELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksaUJBQWlCLENBQUM7WUFFMUUsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLGlDQUFpQzthQUN2RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsMEJBQTBCLEVBQUU7UUFDMUIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixvQkFBb0I7UUFDcEIsVUFBVTtRQUNWLHlCQUF5QjtRQUN6QiwyQkFBMkI7UUFDM0Isd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4Qix3QkFBd0I7S0FDekI7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7dmFsaWRhdGVBcml0aG1ldGljRXhwcmVzc2lvbn0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcbmltcG9ydCB7Q29uZmlnUGFyYW1zLCBQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5pbXBvcnQge1BsdWdpbkZhY3Rvcnl9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IFNjaUVtYm9kaWVkID0gUGx1Z2luRmFjdG9yeSh7XG4gIG1ldGFkYXRhOiB7XG4gICAgaW5wdXRzOiB7XG4gICAgICB2Q1BVczoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ251bWJlciBvZiBDUFVzIGFsbG9jYXRlZCB0byBhbiBhcHBsaWNhdGlvbicsXG4gICAgICAgIHVuaXQ6ICdDUFVzJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnY29weScsXG4gICAgICAgICAgY29tcG9uZW50OiAnY29weScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWVtb3J5OiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUkFNIGF2YWlsYWJsZSBmb3IgYSByZXNvdXJjZSwgaW4gR0InLFxuICAgICAgICB1bml0OiAnR0InLFxuICAgICAgICAnYWdncmVnYXRpb24tbWV0aG9kJzoge1xuICAgICAgICAgIHRpbWU6ICdjb3B5JyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdjb3B5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzc2Q6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdudW1iZXIgb2YgU1NEcyBhdmFpbGFibGUgZm9yIGEgcmVzb3VyY2UnLFxuICAgICAgICB1bml0OiAnU1NEcycsXG4gICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiB7XG4gICAgICAgICAgdGltZTogJ2NvcHknLFxuICAgICAgICAgIGNvbXBvbmVudDogJ2NvcHknLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhkZDoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ251bWJlciBvZiBIRERzIGF2YWlsYWJsZSBmb3IgYSByZXNvdXJjZScsXG4gICAgICAgIHVuaXQ6ICdIRERzJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnY29weScsXG4gICAgICAgICAgY29tcG9uZW50OiAnY29weScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZ3B1OiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnbnVtYmVyIG9mIEdQVXMgYXZhaWxhYmxlIGZvciBhIHJlc291cmNlJyxcbiAgICAgICAgdW5pdDogJ0dQVXMnLFxuICAgICAgICAnYWdncmVnYXRpb24tbWV0aG9kJzoge1xuICAgICAgICAgIHRpbWU6ICdjb3B5JyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdjb3B5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAndXNhZ2UtcmF0aW8nOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICdhIHNjYWxpbmcgZmFjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHJhdGlvIG9mIGFjdHVhbCByZXNvdXJjZSB1c2FnZSBjb21hcHJlZCB0byByZWFsIGRldmljZSB1c2FnZSwgZS5nLiAwLjI1IGlmIHlvdSBhcmUgdXNpbmcgMiBvdXQgb2YgOCB2Q1BVcywgMC4xIGlmIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIDEgb3V0IG9mIDEwIEdCIG9mIHN0b3JhZ2UsIGV0YycsXG4gICAgICAgIHVuaXQ6ICdkaW1lbnNpb25sZXNzJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnY29weScsXG4gICAgICAgICAgY29tcG9uZW50OiAnY29weScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGltZToge1xuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnYSB0aW1lIHVuaXQgdG8gc2NhbGUgdGhlIGVtYm9kaWVkIGNhcmJvbiBieSwgaW4gc2Vjb25kcy4gSWYgbm90IHByb3ZpZGVkLHRpbWUgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSB0aW1lc3RlcCBkdXJhdGlvbi4nLFxuICAgICAgICB1bml0OiAnc2Vjb25kcycsXG4gICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiB7XG4gICAgICAgICAgdGltZTogJ2NvcHknLFxuICAgICAgICAgIGNvbXBvbmVudDogJ2NvcHknLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIG91dHB1dHM6IHtcbiAgICAgICdlbWJvZGllZC1jYXJib24nOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnZW1ib2RpZWQgY2FyYm9uIGZvciBhIHJlc291cmNlLCBzY2FsZWQgYnkgdXNhZ2UnLFxuICAgICAgICB1bml0OiAnZ0NPMmVxJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnc3VtJyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdzdW0nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBjb25maWdWYWxpZGF0aW9uOiB6Lm9iamVjdCh7XG4gICAgJ2Jhc2VsaW5lLXZjcHVzJzogei5wcmVwcm9jZXNzKFxuICAgICAgdmFsdWUgPT4gdmFsaWRhdGVBcml0aG1ldGljRXhwcmVzc2lvbignYmFzZWxpbmUtdmNwdXMnLCB2YWx1ZSwgJ251bWJlcicpLFxuICAgICAgei5udW1iZXIoKS5ndGUoMCkuZGVmYXVsdCgxKVxuICAgICksXG4gICAgJ2Jhc2VsaW5lLW1lbW9yeSc6IHoucHJlcHJvY2VzcyhcbiAgICAgIHZhbHVlID0+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
|
+
};
|