@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,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STRINGS = exports.CONFIG = void 0;
|
|
4
|
+
var config_1 = require("./config");
|
|
5
|
+
Object.defineProperty(exports, "CONFIG", { enumerable: true, get: function () { return config_1.CONFIG; } });
|
|
6
|
+
var strings_1 = require("./strings");
|
|
7
|
+
Object.defineProperty(exports, "STRINGS", { enumerable: true, get: function () { return strings_1.STRINGS; } });
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL2NvbmZpZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBZ0M7QUFBeEIsZ0dBQUEsTUFBTSxPQUFBO0FBQ2QscUNBQWtDO0FBQTFCLGtHQUFBLE9BQU8sT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7Q09ORklHfSBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQge1NUUklOR1N9IGZyb20gJy4vc3RyaW5ncyc7XG4iXX0=
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export declare const STRINGS: {
|
|
2
|
+
MISSING_METHOD: string;
|
|
3
|
+
MISSING_PATH: string;
|
|
4
|
+
NOT_NATIVE_PLUGIN: (path: string) => string;
|
|
5
|
+
INVALID_MODULE_PATH: (path: string, error?: any) => string;
|
|
6
|
+
INCOMPATIBLE_RESOLUTION_WITH_INTERVAL: string;
|
|
7
|
+
INCOMPATIBLE_RESOLUTION_WITH_INPUTS: string;
|
|
8
|
+
INCOMPATIBLE_RESOLUTION_WITH_GAPS: string;
|
|
9
|
+
UNEXPECTED_TIME_CONFIG: string;
|
|
10
|
+
AVOIDING_PADDING_BY_EDGES: (start: boolean, end: boolean) => string;
|
|
11
|
+
METRIC_MISSING: (metric: string, index: number) => string;
|
|
12
|
+
INVALID_GROUP_KEY: (key: string) => string;
|
|
13
|
+
REGROUP_ERROR: string;
|
|
14
|
+
UNKNOWN_PARAM: (name: string) => string;
|
|
15
|
+
NOT_INITALIZED_PLUGIN: (name: string) => string;
|
|
16
|
+
NO_OUTPUT: string;
|
|
17
|
+
UNSUPPORTED_ERROR: (errorName: string) => string;
|
|
18
|
+
/** Debugging logs */
|
|
19
|
+
STARTING_IF: string;
|
|
20
|
+
EXITING_IF: string;
|
|
21
|
+
LOADING_MANIFEST: string;
|
|
22
|
+
VALIDATING_MANIFEST: string;
|
|
23
|
+
CAPTURING_RUNTIME_ENVIRONMENT_DATA: string;
|
|
24
|
+
CHECKING_AGGREGATION_METHOD: (unitName: string) => string;
|
|
25
|
+
INITIALIZING_PLUGINS: string;
|
|
26
|
+
INITIALIZING_PLUGIN: (pluginName: string) => string;
|
|
27
|
+
LOADING_PLUGIN_FROM_PATH: (pluginName: string, path: string) => string;
|
|
28
|
+
COMPUTING_PIPELINE_FOR_NODE: (nodeName: string) => string;
|
|
29
|
+
COMPUTING_COMPONENT_PIPELINE: (component: string) => string;
|
|
30
|
+
REGROUPING: string;
|
|
31
|
+
OBSERVING: (nodeName: string) => string;
|
|
32
|
+
MERGING_DEFAULTS_WITH_INPUT_DATA: string;
|
|
33
|
+
AGGREGATING_OUTPUTS: string;
|
|
34
|
+
AGGREGATING_NODE: (nodeName: string) => string;
|
|
35
|
+
PREPARING_OUTPUT_DATA: () => string;
|
|
36
|
+
EXPORTING_TO_YAML_FILE: (savepath: string) => string;
|
|
37
|
+
EMPTY_PIPELINE: string;
|
|
38
|
+
/** Exhaust messages */
|
|
39
|
+
OUTPUT_REQUIRED: string;
|
|
40
|
+
/** Plugins messages */
|
|
41
|
+
INVALID_NAME: string;
|
|
42
|
+
START_LOWER_END: string;
|
|
43
|
+
X_Y_EQUAL: string;
|
|
44
|
+
ARRAY_LENGTH_NON_EMPTY: string;
|
|
45
|
+
WITHIN_THE_RANGE: string;
|
|
46
|
+
MISSING_CSV_COLUMN: (columnName: string) => string;
|
|
47
|
+
NO_QUERY_DATA: string;
|
|
48
|
+
INVALID_DATE_TYPE: (date: any) => string;
|
|
49
|
+
INVALID_OBSERVATION_OVERLAP: string;
|
|
50
|
+
SCI_MISSING_FN_UNIT: (functionalUnit: string) => string;
|
|
51
|
+
MISSING_FUNCTIONAL_UNIT_CONFIG: string;
|
|
52
|
+
MISSING_FUNCTIONAL_UNIT_INPUT: string;
|
|
53
|
+
REGEX_MISMATCH: (input: any, match: string) => string;
|
|
54
|
+
MISSING_MIN_MAX: string;
|
|
55
|
+
INVALID_MIN_MAX: (name: string) => string;
|
|
56
|
+
FILE_FETCH_FAILED: (filepath: string, message: string) => string;
|
|
57
|
+
FILE_READ_FAILED: (filepath: string, error: string) => string;
|
|
58
|
+
ZERO_DIVISION: (moduleName: string, index: number) => string;
|
|
59
|
+
MISSING_CONFIG: string;
|
|
60
|
+
MISSING_INPUT_DATA: (param: string) => string;
|
|
61
|
+
CONFIG_WARN: (plugins: string, isMore: boolean) => string;
|
|
62
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STRINGS = void 0;
|
|
4
|
+
exports.STRINGS = {
|
|
5
|
+
MISSING_METHOD: "Initalization param 'method' is missing.",
|
|
6
|
+
MISSING_PATH: "Initalization param 'path' is missing.",
|
|
7
|
+
NOT_NATIVE_PLUGIN: (path) => `
|
|
8
|
+
You are using plugin ${path} which is not part of the Impact Framework standard library. You should do your own research to ensure the plugins are up to date and accurate. They may not be actively maintained.`,
|
|
9
|
+
INVALID_MODULE_PATH: (path, error) => `Provided module \`${path}\` is invalid or not found. ${error ?? ''}
|
|
10
|
+
`,
|
|
11
|
+
INCOMPATIBLE_RESOLUTION_WITH_INTERVAL: 'The upsampling resolution must be a divisor of the given interval, but the provided value does not satisfy this criteria.',
|
|
12
|
+
INCOMPATIBLE_RESOLUTION_WITH_INPUTS: 'The upsampling resolution must be a divisor of all inputs durations, but the provided values do not satisfy this criteria.',
|
|
13
|
+
INCOMPATIBLE_RESOLUTION_WITH_GAPS: 'The upsampling resolution must be a divisor of gaps and paddings in the time-series, but the provided values do not satisfy this criteria.',
|
|
14
|
+
UNEXPECTED_TIME_CONFIG: 'Unexpected node-level config provided for time-sync plugin.',
|
|
15
|
+
AVOIDING_PADDING_BY_EDGES: (start, end) => `Avoiding padding at ${start && end ? 'start and end' : start ? 'start' : 'end'}`,
|
|
16
|
+
METRIC_MISSING: (metric, index) => `Aggregation metric ${metric} is not found in inputs[${index}].`,
|
|
17
|
+
INVALID_GROUP_KEY: (key) => `Invalid group ${key}.`,
|
|
18
|
+
REGROUP_ERROR: 'not an array or should contain at least one key',
|
|
19
|
+
UNKNOWN_PARAM: (name) => `Unknown parameter: ${name}. Omitting from the output.`,
|
|
20
|
+
NOT_INITALIZED_PLUGIN: (name) => `Not initalized plugin: ${name}. Check if ${name} is in 'manifest.initalize.plugins'.`,
|
|
21
|
+
NO_OUTPUT: `
|
|
22
|
+
You have not added an output command:
|
|
23
|
+
--output <savepath>: will save your output data to the given filepath (do not provide file extension)
|
|
24
|
+
Note that for the '--output' option you also need to define the output type in your manifest file. See https://if.greensoftware.foundation/major-concepts/manifest-file#initialize`,
|
|
25
|
+
UNSUPPORTED_ERROR: (errorName) => `UnsupportedErrorClass: plugin threw error class: ${errorName} that is not recognized by Impact Framework`,
|
|
26
|
+
/** Debugging logs */
|
|
27
|
+
STARTING_IF: 'Starting IF',
|
|
28
|
+
EXITING_IF: 'Exiting IF',
|
|
29
|
+
LOADING_MANIFEST: 'Loading manifest',
|
|
30
|
+
VALIDATING_MANIFEST: 'Validating manifest',
|
|
31
|
+
CAPTURING_RUNTIME_ENVIRONMENT_DATA: 'Capturing runtime environment data',
|
|
32
|
+
CHECKING_AGGREGATION_METHOD: (unitName) => `Checking aggregation method for ${unitName}`,
|
|
33
|
+
INITIALIZING_PLUGINS: 'Initializing plugins',
|
|
34
|
+
INITIALIZING_PLUGIN: (pluginName) => `Initializing \`${pluginName}\` instance`,
|
|
35
|
+
LOADING_PLUGIN_FROM_PATH: (pluginName, path) => `Loading ${pluginName} from ${path}`,
|
|
36
|
+
COMPUTING_PIPELINE_FOR_NODE: (nodeName) => `Running compute pipeline: \`${nodeName}\` plugin`,
|
|
37
|
+
COMPUTING_COMPONENT_PIPELINE: (component) => `**Computing \`${component}\` pipeline**`,
|
|
38
|
+
REGROUPING: 'Regrouping',
|
|
39
|
+
OBSERVING: (nodeName) => `Running observe pipeline: \`${nodeName}\` plugin`,
|
|
40
|
+
MERGING_DEFAULTS_WITH_INPUT_DATA: 'Merging defaults with input data',
|
|
41
|
+
AGGREGATING_OUTPUTS: 'Aggregating outputs',
|
|
42
|
+
AGGREGATING_NODE: (nodeName) => `Aggregating node ${nodeName}`,
|
|
43
|
+
PREPARING_OUTPUT_DATA: () => {
|
|
44
|
+
console.debug('\n');
|
|
45
|
+
return 'Preparing output data';
|
|
46
|
+
},
|
|
47
|
+
EXPORTING_TO_YAML_FILE: (savepath) => `Exporting to yaml file: ${savepath}`,
|
|
48
|
+
EMPTY_PIPELINE: `You're using an old style manifest. Please update for phased execution. More information can be found here:
|
|
49
|
+
https://if.greensoftware.foundation/major-concepts/manifest-file`,
|
|
50
|
+
/** Exhaust messages */
|
|
51
|
+
OUTPUT_REQUIRED: 'Output path is required, please make sure output is configured properly.',
|
|
52
|
+
/** Plugins messages */
|
|
53
|
+
INVALID_NAME: '`name` config parameter is empty or contains all spaces',
|
|
54
|
+
START_LOWER_END: '`start-time` should be lower than `end-time`',
|
|
55
|
+
X_Y_EQUAL: 'The length of `x` and `y` should be equal',
|
|
56
|
+
ARRAY_LENGTH_NON_EMPTY: 'the length of the input arrays must be greater than 1',
|
|
57
|
+
WITHIN_THE_RANGE: 'The target x value must be within the range of the given x values',
|
|
58
|
+
MISSING_CSV_COLUMN: (columnName) => `There is no column with the name: ${columnName}.`,
|
|
59
|
+
NO_QUERY_DATA: 'One or more of the given query parameters are not found in the target CSV file column headers.',
|
|
60
|
+
INVALID_DATE_TYPE: (date) => `Unexpected date datatype: ${typeof date}: ${date}`,
|
|
61
|
+
INVALID_OBSERVATION_OVERLAP: 'Observation timestamps overlap, please check inputs.',
|
|
62
|
+
SCI_MISSING_FN_UNIT: (functionalUnit) => `'carbon' and ${functionalUnit} should be present in your input data.`,
|
|
63
|
+
MISSING_FUNCTIONAL_UNIT_CONFIG: '`functional-unit` should be provided in your config',
|
|
64
|
+
MISSING_FUNCTIONAL_UNIT_INPUT: '`functional-unit` value is missing from input data or it is not a positive integer',
|
|
65
|
+
REGEX_MISMATCH: (input, match) => `\`${input}\` does not match the ${match} regex expression`,
|
|
66
|
+
MISSING_MIN_MAX: 'Config is missing min or max value',
|
|
67
|
+
INVALID_MIN_MAX: (name) => `Min value should not be greater than or equal to max value of ${name}`,
|
|
68
|
+
FILE_FETCH_FAILED: (filepath, message) => `Failed fetching the file: ${filepath}.
|
|
69
|
+
${message}`,
|
|
70
|
+
FILE_READ_FAILED: (filepath, error) => `Failed reading the file: ${filepath}.
|
|
71
|
+
${error}`,
|
|
72
|
+
ZERO_DIVISION: (moduleName, index) => `-- SKIPPING -- DivisionByZero: you are attempting to divide by zero in ${moduleName} plugin : inputs[${index}]\n`,
|
|
73
|
+
MISSING_CONFIG: 'Config is not provided.',
|
|
74
|
+
MISSING_INPUT_DATA: (param) => `${param} is missing from the input array, or has nullish value.`,
|
|
75
|
+
CONFIG_WARN: (plugins, isMore) => {
|
|
76
|
+
const withoutPlugins = 'You have included node-level config in your manifest. IF no longer supports node-level config. The manifest should be refactored to accept all its node-level config from config or input data.';
|
|
77
|
+
const withPlugins = `You have included node-level config in your manifest to support \`${plugins}\` plugin${isMore ? 's' : ''}. IF no longer supports node-level config. \`${plugins}\` plugin${isMore ? 's' : ''} should be refactored to accept all its config from config or input data.`;
|
|
78
|
+
return plugins.length ? withPlugins : withoutPlugins;
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vY29uZmlnL3N0cmluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxPQUFPLEdBQUc7SUFDckIsY0FBYyxFQUFFLDBDQUEwQztJQUMxRCxZQUFZLEVBQUUsd0NBQXdDO0lBQ3RELGlCQUFpQixFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDbEM7eUJBQ3FCLElBQUksc0xBQXNMO0lBQ2pOLG1CQUFtQixFQUFFLENBQUMsSUFBWSxFQUFFLEtBQVcsRUFBRSxFQUFFLENBQ2pELHFCQUFxQixJQUFJLCtCQUErQixLQUFLLElBQUksRUFBRTtDQUN0RTtJQUNDLHFDQUFxQyxFQUNuQywySEFBMkg7SUFDN0gsbUNBQW1DLEVBQ2pDLDRIQUE0SDtJQUM5SCxpQ0FBaUMsRUFDL0IsNElBQTRJO0lBQzlJLHNCQUFzQixFQUNwQiw2REFBNkQ7SUFDL0QseUJBQXlCLEVBQUUsQ0FBQyxLQUFjLEVBQUUsR0FBWSxFQUFFLEVBQUUsQ0FDMUQsdUJBQ0UsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FDckQsRUFBRTtJQUNKLGNBQWMsRUFBRSxDQUFDLE1BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUNoRCxzQkFBc0IsTUFBTSwyQkFBMkIsS0FBSyxJQUFJO0lBQ2xFLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxHQUFHO0lBQzNELGFBQWEsRUFBRSxpREFBaUQ7SUFDaEUsYUFBYSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDOUIsc0JBQXNCLElBQUksNkJBQTZCO0lBQ3pELHFCQUFxQixFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDdEMsMEJBQTBCLElBQUksY0FBYyxJ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RUFBRSxFQUFFLENBQ25ELDBFQUEwRSxVQUFVLG9CQUFvQixLQUFLLEtBQUs7SUFDcEgsY0FBYyxFQUFFLHlCQUF5QjtJQUN6QyxrQkFBa0IsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQ3BDLEdBQUcsS0FBSyx5REFBeUQ7SUFDbkUsV0FBVyxFQUFFLENBQUMsT0FBZSxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQ2hELE1BQU0sY0FBYyxHQUNsQixpTUFBaU0sQ0FBQztRQUNwTSxNQUFNLFdBQVcsR0FBRyxxRUFBcUUsT0FBTyxZQUM5RixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDakIsZ0RBQWdELE9BQU8sWUFDckQsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQ2pCLDJFQUEyRSxDQUFDO1FBRTVFLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDdkQsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU1RSSU5HUyA9IHtcbiAgTUlTU0lOR19NRVRIT0Q6IFwiSW5pdGFsaXphdGlvbiBwYXJhbSAnbWV0aG9kJyBpcyBtaXNzaW5nLlwiLFxuICBNSVNTSU5HX1BBVEg6IFwiSW5pdGFsaXphdGlvbiBwYXJhbSAncGF0aCcgaXMgbWlzc2luZy5cIixcbiAgTk9UX05BVElWRV9QTFVHSU46IChwYXRoOiBzdHJpbmcpID0+XG4gICAgYFxuICBZb3UgYXJlIHVzaW5nIHBsdWdpbiAke3BhdGh9IHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZSBJbXBhY3QgRnJhbWV3b3JrIHN0YW5kYXJkIGxpYnJhcnkuIFlvdSBzaG91bGQgZG8geW91ciBvd24gcmVzZWFyY2ggdG8gZW5zdXJlIHRoZSBwbHVnaW5zIGFyZSB1cCB0byBkYXRlIGFuZCBhY2N1cmF0ZS4gVGhleSBtYXkgbm90IGJlIGFjdGl2ZWx5IG1haW50YWluZWQuYCxcbiAgSU5WQUxJRF9NT0RVTEVfUEFUSDogKHBhdGg6IHN0cmluZywgZXJyb3I/OiBhbnkpID0+XG4gICAgYFByb3ZpZGVkIG1vZHVsZSBcXGAke3BhdGh9XFxgIGlzIGludmFsaWQgb3Igbm90IGZvdW5kLiAke2Vycm9yID8/ICcnfVxuYCxcbiAgSU5DT01QQVRJQkxFX1JFU09MVVRJT05fV0lUSF9JTlRFUlZBTDpcbiAgICAnVGhlIHVwc2FtcGxpbmcgcmVzb2x1dGlvbiBtdXN0IGJlIGEgZGl2aXNvciBvZiB0aGUgZ2l2ZW4gaW50ZXJ2YWwsIGJ1dCB0aGUgcHJvdmlkZWQgdmFsdWUgZG9lcyBub3Qgc2F0aXNmeSB0aGlzIGNyaXRlcmlhLicsXG4gIElOQ09NUEFUSUJMRV9SRVNPTFVUSU9OX1dJVEhfSU5QVVRTOlxuICAgICdUaGUgdXBzYW1wbGluZyByZXNvbHV0aW9uIG11c3QgYmUgYSBkaXZpc29yIG9mIGFsbCBpbnB1dHMgZHVyYXRpb25zLCBidXQgdGhlIHByb3ZpZGVkIHZhbHVlcyBkbyBub3Qgc2F0aXNmeSB0aGlzIGNyaXRlcmlhLicsXG4gIElOQ09NUEFUSUJMRV9SRVNPTFVUSU9OX1dJVEhfR0FQUzpcbiAgICAnVGhlIHVwc2FtcGxpbmcgcmVzb2x1dGlvbiBtdXN0IGJlIGEgZGl2aXNvciBvZiBnYXBzIGFuZCBwYWRkaW5ncyBpbiB0aGUgdGltZS1zZXJpZXMsIGJ1dCB0aGUgcHJvdmlkZWQgdmFsdWVzIGRvIG5vdCBzYXRpc2Z5IHRoaXMgY3JpdGVyaWEuJyxcbiAgVU5FWFBFQ1RFRF9USU1FX0NPTkZJRzpcbiAgICAnVW5leHBlY3RlZCBub2RlLWxldmVsIGNvbmZpZyBwcm92aWRlZCBmb3IgdGltZS1zeW5jIHBsdWdpbi4nLFxuICBBVk9JRElOR19QQURESU5HX0JZX0VER0VTOiAoc3RhcnQ6IGJvb2xlYW4sIGVuZDogYm9vbGVhbikgPT5cbiAgICBgQXZvaWRpbmcgcGFkZGluZyBhdCAke1xuICAgICAgc3RhcnQgJiYgZW5kID8gJ3N0YXJ0IGFuZCBlbmQnIDogc3RhcnQgPyAnc3RhcnQnIDogJ2VuZCdcbiAgICB9YCxcbiAgTUVUUklDX01JU1NJTkc6IChtZXRyaWM6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cbiAgICBgQWdncmVnYXRpb24gbWV0cmljICR7bWV0cmljfSBpcyBub3QgZm91bmQgaW4gaW5wdXRzWyR7aW5kZXh9XS5gLFxuICBJTlZBTElEX0dST1VQX0tFWTogKGtleTogc3RyaW5nKSA9PiBgSW52YWxpZCBncm91cCAke2tleX0uYCxcbiAgUkVHUk9VUF9FUlJPUjogJ25vdCBhbiBhcnJheSBvciBzaG91bGQgY29udGFpbiBhdCBsZWFzdCBvbmUga2V5JyxcbiAgVU5LTk9XTl9QQVJBTTogKG5hbWU6IHN0cmluZykgPT5cbiAgICBgVW5rbm93biBwYXJhbWV0ZXI6ICR7bmFtZX0uIE9taXR0aW5nIGZyb20gdGhlIG91dHB1dC5gLFxuICBOT1RfSU5JVEFMSVpFRF9QTFVHSU46IChuYW1lOiBzdHJpbmcpID0+XG4gICAgYE5vdCBpbml0YWxpemVkIHBsdWdpbjogJHtuYW1lfS4gQ2hlY2sgaWYgJHtuYW1lfSBpcyBpbiAnbWFuaWZlc3QuaW5pdGFsaXplLnBsdWdpbnMnLmAsXG4gIE5PX09VVFBVVDogYFxuWW91IGhhdmUgbm90IGFkZGVkIGFuIG91dHB1dCBjb21tYW5kOiBcbi0tb3V0cHV0IDxzYXZlcGF0aD46IHdpbGwgc2F2ZSB5b3VyIG91dHB1dCBkYXRhIHRvIHRoZSBnaXZlbiBmaWxlcGF0aCAoZG8gbm90IHByb3ZpZGUgZmlsZSBleHRlbnNpb24pXG5Ob3RlIHRoYXQgZm9yIHRoZSAnLS1vdXRwdXQnIG9wdGlvbiB5b3UgYWxzbyBuZWVkIHRvIGRlZmluZSB0aGUgb3V0cHV0IHR5cGUgaW4geW91ciBtYW5pZmVzdCBmaWxlLiBTZWUgaHR0cHM6Ly9pZi5ncmVlbnNvZnR3YXJlLmZvdW5kYXRpb24vbWFqb3ItY29uY2VwdHMvbWFuaWZlc3QtZmlsZSNpbml0aWFsaXplYCxcbiAgVU5TVVBQT1JURURfRVJST1I6IChlcnJvck5hbWU6IHN0cmluZykgPT5cbiAgICBgVW5zdXBwb3J0ZWRFcnJvckNsYXNzOiBwbHVnaW4gdGhyZXcgZXJyb3IgY2xhc3M6ICR7ZXJyb3JOYW1lfSB0aGF0IGlzIG5vdCByZWNvZ25pemVkIGJ5IEltcGFjdCBGcmFtZXdvcmtgLFxuICAvKiogRGVidWdnaW5nIGxvZ3MgKi9cbiAgU1RBUlRJTkdfSUY6ICdTdGFydGluZyBJRicsXG4gIEVYSVRJTkdfSUY6ICdFeGl0aW5nIElGJyxcbiAgTE9BRElOR19NQU5JRkVTVDogJ0xvYWRpbmcgbWFuaWZlc3QnLFxuICBWQUxJREFUSU5HX01BTklGRVNUOiAnVmFsaWRhdGluZyBtYW5pZmVzdCcsXG4gIENBUFRVUklOR19SVU5USU1FX0VOVklST05NRU5UX0RBVEE6ICdDYXB0dXJpbmcgcnVudGltZSBlbnZpcm9ubWVudCBkYXRhJyxcbiAgQ0hFQ0tJTkdfQUdHUkVHQVRJT05fTUVUSE9EOiAodW5pdE5hbWU6IHN0cmluZykgPT5cbiAgICBgQ2hlY2tpbmcgYWdncmVnYXRpb24gbWV0aG9kIGZvciAke3VuaXROYW1lfWAsXG4gIElOSVRJQUxJWklOR19QTFVHSU5TOiAnSW5pdGlhbGl6aW5nIHBsdWdpbnMnLFxuICBJTklUSUFMSVpJTkdfUExVR0lOOiAocGx1Z2luTmFtZTogc3RyaW5nKSA9PlxuICAgIGBJbml0aWFsaXppbmcgXFxgJHtwbHVnaW5OYW1lfVxcYCBpbnN0YW5jZWAsXG4gIExPQURJTkdfUExVR0lOX0ZST01fUEFUSDogKHBsdWdpbk5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nKSA9PlxuICAgIGBMb2FkaW5nICR7cGx1Z2luTmFtZX0gZnJvbSAke3BhdGh9YCxcbiAgQ09NUFVUSU5HX1BJUEVMSU5FX0ZPUl9OT0RFOiAobm9kZU5hbWU6IHN0cmluZykgPT5cbiAgICBgUnVubmluZyBjb21wdXRlIHBpcGVsaW5lOiBcXGAke25vZGVOYW1lfVxcYCBwbHVnaW5gLFxuICBDT01QVVRJTkdfQ09NUE9ORU5UX1BJUEVMSU5FOiAoY29tcG9uZW50OiBzdHJpbmcpID0+XG4gICAgYCoqQ29tcHV0aW5nIFxcYCR7Y29tcG9uZW50fVxcYCBwaXBlbGluZSoqYCxcbiAgUkVHUk9VUElORzogJ1JlZ3JvdXBpbmcnLFxuICBPQlNFUlZJTkc6IChub2RlTmFtZTogc3RyaW5nKSA9PlxuICAgIGBSdW5uaW5nIG9ic2VydmUgcGlwZWxpbmU6IFxcYCR7bm9kZU5hbWV9XFxgIHBsdWdpbmAsXG4gIE1FUkdJTkdfREVGQVVMVFNfV0lUSF9JTlBVVF9EQVRBOiAnTWVyZ2luZyBkZWZhdWx0cyB3aXRoIGlucHV0IGRhdGEnLFxuICBBR0dSRUdBVElOR19PVVRQVVRTOiAnQWdncmVnYXRpbmcgb3V0cHV0cycsXG4gIEFHR1JFR0FUSU5HX05PREU6IChub2RlTmFtZTogc3RyaW5nKSA9PiBgQWdncmVnYXRpbmcgbm9kZSAke25vZGVOYW1lfWAsXG4gIFBSRVBBUklOR19PVVRQVVRfREFUQTogKCkgPT4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1xcbicpO1xuICAgIHJldHVybiAnUHJlcGFyaW5nIG91dHB1dCBkYXRhJztcbiAgfSxcbiAgRVhQT1JUSU5HX1RPX1lBTUxfRklMRTogKHNhdmVwYXRoOiBzdHJpbmcpID0+XG4gICAgYEV4cG9ydGluZyB0byB5YW1sIGZpbGU6ICR7c2F2ZXBhdGh9YCxcbiAgRU1QVFlfUElQRUxJTkU6IGBZb3UncmUgdXNpbmcgYW4gb2xkIHN0eWxlIG1hbmlmZXN0LiBQbGVhc2UgdXBkYXRlIGZvciBwaGFzZWQgZXhlY3V0aW9uLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBoZXJlOiBcbmh0dHBzOi8vaWYuZ3JlZW5zb2Z0d2FyZS5mb3VuZGF0aW9uL21ham9yLWNvbmNlcHRzL21hbmlmZXN0LWZpbGVgLFxuICAvKiogRXhoYXVzdCBtZXNzYWdlcyAqL1xuICBPVVRQVVRfUkVRVUlSRUQ6XG4gICAgJ091dHB1dCBwYXRoIGlzIHJlcXVpcmVkLCBwbGVhc2UgbWFrZSBzdXJlIG91dHB1dCBpcyBjb25maWd1cmVkIHByb3Blcmx5LicsXG4gIC8qKiBQbHVnaW5zIG1lc3NhZ2VzICovXG4gIElOVkFMSURfTkFNRTogJ2BuYW1lYCBjb25maWcgcGFyYW1ldGVyIGlzIGVtcHR5IG9yIGNvbnRhaW5zIGFsbCBzcGFjZXMnLFxuICBTVEFSVF9MT1dFUl9FTkQ6ICdgc3RhcnQtdGltZWAgc2hvdWxkIGJlIGxvd2VyIHRoYW4gYGVuZC10aW1lYCcsXG4gIFhfWV9FUVVBTDogJ1RoZSBsZW5ndGggb2YgYHhgIGFuZCBgeWAgc2hvdWxkIGJlIGVxdWFsJyxcbiAgQVJSQVlfTEVOR1RIX05PTl9FTVBUWTpcbiAgICAndGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgYXJyYXlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnLFxuICBXSVRISU5fVEhFX1JBTkdFOlxuICAgICdUaGUgdGFyZ2V0IHggdmFsdWUgbXVzdCBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBnaXZlbiB4IHZhbHVlcycsXG4gIE1JU1NJTkdfQ1NWX0NPTFVNTjogKGNvbHVtbk5hbWU6IHN0cmluZykgPT5cbiAgICBgVGhlcmUgaXMgbm8gY29sdW1uIHdpdGggdGhlIG5hbWU6ICR7Y29sdW1uTmFtZX0uYCxcbiAgTk9fUVVFUllfREFUQTpcbiAgICAnT25lIG9yIG1vcmUgb2YgdGhlIGdpdmVuIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIG5vdCBmb3VuZCBpbiB0aGUgdGFyZ2V0IENTViBmaWxlIGNvbHVtbiBoZWFkZXJzLicsXG4gIElOVkFMSURfREFURV9UWVBFOiAoZGF0ZTogYW55KSA9PlxuICAgIGBVbmV4cGVjdGVkIGRhdGUgZGF0YXR5cGU6ICR7dHlwZW9mIGRhdGV9OiAke2RhdGV9YCxcbiAgSU5WQUxJRF9PQlNFUlZBVElPTl9PVkVSTEFQOlxuICAgICdPYnNlcnZhdGlvbiB0aW1lc3RhbXBzIG92ZXJsYXAsIHBsZWFzZSBjaGVjayBpbnB1dHMuJyxcbiAgU0NJX01JU1NJTkdfRk5fVU5JVDogKGZ1bmN0aW9uYWxVbml0OiBzdHJpbmcpID0+XG4gICAgYCdjYXJib24nIGFuZCAke2Z1bmN0aW9uYWxVbml0fSBzaG91bGQgYmUgcHJlc2VudCBpbiB5b3VyIGlucHV0IGRhdGEuYCxcbiAgTUlTU0lOR19GVU5DVElPTkFMX1VOSVRfQ09ORklHOlxuICAgICdgZnVuY3Rpb25hbC11bml0YCBzaG91bGQgYmUgcHJvdmlkZWQgaW4geW91ciBjb25maWcnLFxuICBNSVNTSU5HX0ZVTkNUSU9OQUxfVU5JVF9JTlBVVDpcbiAgICAnYGZ1bmN0aW9uYWwtdW5pdGAgdmFsdWUgaXMgbWlzc2luZyBmcm9tIGlucHV0IGRhdGEgb3IgaXQgaXMgbm90IGEgcG9zaXRpdmUgaW50ZWdlcicsXG4gIFJFR0VYX01JU01BVENIOiAoaW5wdXQ6IGFueSwgbWF0Y2g6IHN0cmluZykgPT5cbiAgICBgXFxgJHtpbnB1dH1cXGAgZG9lcyBub3QgbWF0Y2ggdGhlICR7bWF0Y2h9IHJlZ2V4IGV4cHJlc3Npb25gLFxuICBNSVNTSU5HX01JTl9NQVg6ICdDb25maWcgaXMgbWlzc2luZyBtaW4gb3IgbWF4IHZhbHVlJyxcbiAgSU5WQUxJRF9NSU5fTUFYOiAobmFtZTogc3RyaW5nKSA9PlxuICAgIGBNaW4gdmFsdWUgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWF4IHZhbHVlIG9mICR7bmFtZX1gLFxuICBGSUxFX0ZFVENIX0ZBSUxFRDogKFxuICAgIGZpbGVwYXRoOiBzdHJpbmcsXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICkgPT4gYEZhaWxlZCBmZXRjaGluZyB0aGUgZmlsZTogJHtmaWxlcGF0aH0uXG4ke21lc3NhZ2V9YCxcbiAgRklMRV9SRUFEX0ZBSUxFRDogKFxuICAgIGZpbGVwYXRoOiBzdHJpbmcsXG4gICAgZXJyb3I6IHN0cmluZ1xuICApID0+IGBGYWlsZWQgcmVhZGluZyB0aGUgZmlsZTogJHtmaWxlcGF0aH0uIFxuJHtlcnJvcn1gLFxuICBaRVJPX0RJVklTSU9OOiAobW9kdWxlTmFtZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgIGAtLSBTS0lQUElORyAtLSBEaXZpc2lvbkJ5WmVybzogeW91IGFyZSBhdHRlbXB0aW5nIHRvIGRpdmlkZSBieSB6ZXJvIGluICR7bW9kdWxlTmFtZX0gcGx1Z2luIDogaW5wdXRzWyR7aW5kZXh9XVxcbmAsXG4gIE1JU1NJTkdfQ09ORklHOiAnQ29uZmlnIGlzIG5vdCBwcm92aWRlZC4nLFxuICBNSVNTSU5HX0lOUFVUX0RBVEE6IChwYXJhbTogc3RyaW5nKSA9PlxuICAgIGAke3BhcmFtfSBpcyBtaXNzaW5nIGZyb20gdGhlIGlucHV0IGFycmF5LCBvciBoYXMgbnVsbGlzaCB2YWx1ZS5gLFxuICBDT05GSUdfV0FSTjogKHBsdWdpbnM6IHN0cmluZywgaXNNb3JlOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3Qgd2l0aG91dFBsdWdpbnMgPVxuICAgICAgJ1lvdSBoYXZlIGluY2x1ZGVkIG5vZGUtbGV2ZWwgY29uZmlnIGluIHlvdXIgbWFuaWZlc3QuIElGIG5vIGxvbmdlciBzdXBwb3J0cyBub2RlLWxldmVsIGNvbmZpZy4gVGhlIG1hbmlmZXN0IHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIGFjY2VwdCBhbGwgaXRzIG5vZGUtbGV2ZWwgY29uZmlnIGZyb20gY29uZmlnIG9yIGlucHV0IGRhdGEuJztcbiAgICBjb25zdCB3aXRoUGx1Z2lucyA9IGBZb3UgaGF2ZSBpbmNsdWRlZCBub2RlLWxldmVsIGNvbmZpZyBpbiB5b3VyIG1hbmlmZXN0IHRvIHN1cHBvcnQgXFxgJHtwbHVnaW5zfVxcYCBwbHVnaW4ke1xuICAgICAgaXNNb3JlID8gJ3MnIDogJydcbiAgICB9LiBJRiBubyBsb25nZXIgc3VwcG9ydHMgbm9kZS1sZXZlbCBjb25maWcuIFxcYCR7cGx1Z2luc31cXGAgcGx1Z2luJHtcbiAgICAgIGlzTW9yZSA/ICdzJyA6ICcnXG4gICAgfSBzaG91bGQgYmUgcmVmYWN0b3JlZCB0byBhY2NlcHQgYWxsIGl0cyBjb25maWcgZnJvbSBjb25maWcgb3IgaW5wdXQgZGF0YS5gO1xuXG4gICAgcmV0dXJuIHBsdWdpbnMubGVuZ3RoID8gd2l0aFBsdWdpbnMgOiB3aXRob3V0UGx1Z2lucztcbiAgfSxcbn07XG4iXX0=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const config_1 = require("../common/config");
|
|
5
|
+
const validations_1 = require("../common/util/validations");
|
|
6
|
+
const debug_logger_1 = require("../common/util/debug-logger");
|
|
7
|
+
const logger_1 = require("../common/util/logger");
|
|
8
|
+
const load_1 = require("../common/lib/load");
|
|
9
|
+
const aggregate_1 = require("./lib/aggregate");
|
|
10
|
+
const environment_1 = require("./lib/environment");
|
|
11
|
+
const initialize_1 = require("./lib/initialize");
|
|
12
|
+
const compute_1 = require("./lib/compute");
|
|
13
|
+
const exhaust_1 = require("./lib/exhaust");
|
|
14
|
+
const explain_1 = require("./lib/explain");
|
|
15
|
+
const args_1 = require("./util/args");
|
|
16
|
+
const helpers_1 = require("./util/helpers");
|
|
17
|
+
const config_2 = require("./config");
|
|
18
|
+
const { EXITING_IF, STARTING_IF } = config_2.STRINGS;
|
|
19
|
+
const { DISCLAIMER_MESSAGE } = config_1.STRINGS;
|
|
20
|
+
const impactEngine = async () => {
|
|
21
|
+
const options = (0, args_1.parseIfRunProcessArgs)();
|
|
22
|
+
const { inputPath, outputOptions, debug, observe, regroup, compute: computeFlag, append, } = options;
|
|
23
|
+
debug_logger_1.debugLogger.overrideConsoleMethods(!!debug);
|
|
24
|
+
logger_1.logger.info(DISCLAIMER_MESSAGE);
|
|
25
|
+
console.info(STARTING_IF);
|
|
26
|
+
const { rawManifest } = await (0, load_1.load)(inputPath);
|
|
27
|
+
const envManifest = await (0, environment_1.injectEnvironment)(rawManifest);
|
|
28
|
+
try {
|
|
29
|
+
const { tree, ...context } = (0, validations_1.validateManifest)(envManifest);
|
|
30
|
+
const pluginStorage = await (0, initialize_1.initialize)(context);
|
|
31
|
+
const computedTree = await (0, compute_1.compute)(tree, {
|
|
32
|
+
context,
|
|
33
|
+
pluginStorage,
|
|
34
|
+
observe,
|
|
35
|
+
regroup,
|
|
36
|
+
compute: computeFlag,
|
|
37
|
+
append,
|
|
38
|
+
});
|
|
39
|
+
const aggregatedTree = (0, aggregate_1.aggregate)(computedTree, context.aggregation);
|
|
40
|
+
envManifest.explainer && (context.explain = (0, explain_1.explain)());
|
|
41
|
+
await (0, exhaust_1.exhaust)(aggregatedTree, context, outputOptions);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof Error) {
|
|
45
|
+
/** Execution block exists because manifest is already processed. Set's status to `fail`. */
|
|
46
|
+
envManifest.execution.status = 'fail';
|
|
47
|
+
envManifest.execution.error = error.toString();
|
|
48
|
+
logger_1.logger.error(error);
|
|
49
|
+
const { tree, ...context } = envManifest;
|
|
50
|
+
if (error.name !== 'ExhaustError') {
|
|
51
|
+
(0, exhaust_1.exhaust)(tree, context, outputOptions);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
console.info(EXITING_IF);
|
|
56
|
+
};
|
|
57
|
+
impactEngine().catch(helpers_1.andHandle);
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWYtcnVuL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUEyRDtBQUMzRCw0REFBNEQ7QUFDNUQsOERBQXdEO0FBQ3hELGtEQUE2QztBQUM3Qyw2Q0FBd0M7QUFFeEMsK0NBQTBDO0FBQzFDLG1EQUFvRDtBQUNwRCxpREFBNEM7QUFDNUMsMkNBQXNDO0FBQ3RDLDJDQUFzQztBQUN0QywyQ0FBc0M7QUFFdEMsc0NBQWtEO0FBQ2xELDRDQUF5QztBQUV6QyxxQ0FBaUM7QUFFakMsTUFBTSxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBQzFDLE1BQU0sRUFBQyxrQkFBa0IsRUFBQyxHQUFHLGdCQUFjLENBQUM7QUFFNUMsTUFBTSxZQUFZLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBQSw0QkFBcUIsR0FBRSxDQUFDO0lBQ3hDLE1BQU0sRUFDSixTQUFTLEVBQ1QsYUFBYSxFQUNiLEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxFQUNQLE9BQU8sRUFBRSxXQUFXLEVBQ3BCLE1BQU0sR0FDUCxHQUFHLE9BQU8sQ0FBQztJQUVaLDBCQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTVDLGVBQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTFCLE1BQU0sRUFBQyxXQUFXLEVBQUMsR0FBRyxNQUFNLElBQUEsV0FBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSwrQkFBaUIsRUFBQyxXQUFXLENBQUMsQ0FBQztJQUV6RCxJQUFJO1FBQ0YsTUFBTSxFQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBQyxHQUFHLElBQUEsOEJBQWdCLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFFekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFBLHVCQUFVLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLGlCQUFPLEVBQUMsSUFBSSxFQUFFO1lBQ3ZDLE9BQU87WUFDUCxhQUFhO1lBQ2IsT0FBTztZQUNQLE9BQU87WUFDUCxPQUFPLEVBQUUsV0FBVztZQUNwQixNQUFNO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUcsSUFBQSxxQkFBUyxFQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEUsV0FBVyxDQUFDLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBQSxpQkFBTyxHQUFFLENBQUMsQ0FBQztRQUV2RCxNQUFNLElBQUEsaUJBQU8sRUFBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ3ZEO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7WUFDMUIsNEZBQTRGO1lBQzVGLFdBQVcsQ0FBQyxTQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUN2QyxXQUFXLENBQUMsU0FBVSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEQsZUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQixNQUFNLEVBQUMsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFDLEdBQUcsV0FBVyxDQUFDO1lBRXZDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUU7Z0JBQ2pDLElBQUEsaUJBQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ3ZDO1NBQ0Y7S0FDRjtJQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBRUYsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFTLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7U1RSSU5HUyBhcyBDT01NT05fU1RSSU5HU30gZnJvbSAnLi4vY29tbW9uL2NvbmZpZyc7XG5pbXBvcnQge3ZhbGlkYXRlTWFuaWZlc3R9IGZyb20gJy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcbmltcG9ydCB7ZGVidWdMb2dnZXJ9IGZyb20gJy4uL2NvbW1vbi91dGlsL2RlYnVnLWxvZ2dlcic7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vY29tbW9uL3V0aWwvbG9nZ2VyJztcbmltcG9ydCB7bG9hZH0gZnJvbSAnLi4vY29tbW9uL2xpYi9sb2FkJztcblxuaW1wb3J0IHthZ2dyZWdhdGV9IGZyb20gJy4vbGliL2FnZ3JlZ2F0ZSc7XG5pbXBvcnQge2luamVjdEVudmlyb25tZW50fSBmcm9tICcuL2xpYi9lbnZpcm9ubWVudCc7XG5pbXBvcnQge2luaXRpYWxpemV9IGZyb20gJy4vbGliL2luaXRpYWxpemUnO1xuaW1wb3J0IHtjb21wdXRlfSBmcm9tICcuL2xpYi9jb21wdXRlJztcbmltcG9ydCB7ZXhoYXVzdH0gZnJvbSAnLi9saWIvZXhoYXVzdCc7XG5pbXBvcnQge2V4cGxhaW59IGZyb20gJy4vbGliL2V4cGxhaW4nO1xuXG5pbXBvcnQge3BhcnNlSWZSdW5Qcm9jZXNzQXJnc30gZnJvbSAnLi91dGlsL2FyZ3MnO1xuaW1wb3J0IHthbmRIYW5kbGV9IGZyb20gJy4vdXRpbC9oZWxwZXJzJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuL2NvbmZpZyc7XG5cbmNvbnN0IHtFWElUSU5HX0lGLCBTVEFSVElOR19JRn0gPSBTVFJJTkdTO1xuY29uc3Qge0RJU0NMQUlNRVJfTUVTU0FHRX0gPSBDT01NT05fU1RSSU5HUztcblxuY29uc3QgaW1wYWN0RW5naW5lID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VJZlJ1blByb2Nlc3NBcmdzKCk7XG4gIGNvbnN0IHtcbiAgICBpbnB1dFBhdGgsXG4gICAgb3V0cHV0T3B0aW9ucyxcbiAgICBkZWJ1ZyxcbiAgICBvYnNlcnZlLFxuICAgIHJlZ3JvdXAsXG4gICAgY29tcHV0ZTogY29tcHV0ZUZsYWcsXG4gICAgYXBwZW5kLFxuICB9ID0gb3B0aW9ucztcblxuICBkZWJ1Z0xvZ2dlci5vdmVycmlkZUNvbnNvbGVNZXRob2RzKCEhZGVidWcpO1xuXG4gIGxvZ2dlci5pbmZvKERJU0NMQUlNRVJfTUVTU0FHRSk7XG4gIGNvbnNvbGUuaW5mbyhTVEFSVElOR19JRik7XG5cbiAgY29uc3Qge3Jhd01hbmlmZXN0fSA9IGF3YWl0IGxvYWQoaW5wdXRQYXRoKTtcbiAgY29uc3QgZW52TWFuaWZlc3QgPSBhd2FpdCBpbmplY3RFbnZpcm9ubWVudChyYXdNYW5pZmVzdCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB7dHJlZSwgLi4uY29udGV4dH0gPSB2YWxpZGF0ZU1hbmlmZXN0KGVudk1hbmlmZXN0KTtcblxuICAgIGNvbnN0IHBsdWdpblN0b3JhZ2UgPSBhd2FpdCBpbml0aWFsaXplKGNvbnRleHQpO1xuICAgIGNvbnN0IGNvbXB1dGVkVHJlZSA9IGF3YWl0IGNvbXB1dGUodHJlZSwge1xuICAgICAgY29udGV4dCxcbiAgICAgIHBsdWdpblN0b3JhZ2UsXG4gICAgICBvYnNlcnZlLFxuICAgICAgcmVncm91cCxcbiAgICAgIGNvbXB1dGU6IGNvbXB1dGVGbGFnLFxuICAgICAgYXBwZW5kLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYWdncmVnYXRlZFRyZWUgPSBhZ2dyZWdhdGUoY29tcHV0ZWRUcmVlLCBjb250ZXh0LmFnZ3JlZ2F0aW9uKTtcbiAgICBlbnZNYW5pZmVzdC5leHBsYWluZXIgJiYgKGNvbnRleHQuZXhwbGFpbiA9IGV4cGxhaW4oKSk7XG5cbiAgICBhd2FpdCBleGhhdXN0KGFnZ3JlZ2F0ZWRUcmVlLCBjb250ZXh0LCBvdXRwdXRPcHRpb25zKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgLyoqIEV4ZWN1dGlvbiBibG9jayBleGlzdHMgYmVjYXVzZSBtYW5pZmVzdCBpcyBhbHJlYWR5IHByb2Nlc3NlZC4gU2V0J3Mgc3RhdHVzIHRvIGBmYWlsYC4gKi9cbiAgICAgIGVudk1hbmlmZXN0LmV4ZWN1dGlvbiEuc3RhdHVzID0gJ2ZhaWwnO1xuICAgICAgZW52TWFuaWZlc3QuZXhlY3V0aW9uIS5lcnJvciA9IGVycm9yLnRvU3RyaW5nKCk7XG4gICAgICBsb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgY29uc3Qge3RyZWUsIC4uLmNvbnRleHR9ID0gZW52TWFuaWZlc3Q7XG5cbiAgICAgIGlmIChlcnJvci5uYW1lICE9PSAnRXhoYXVzdEVycm9yJykge1xuICAgICAgICBleGhhdXN0KHRyZWUsIGNvbnRleHQsIG91dHB1dE9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zb2xlLmluZm8oRVhJVElOR19JRik7XG59O1xuXG5pbXBhY3RFbmdpbmUoKS5jYXRjaChhbmRIYW5kbGUpO1xuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AggregationParams, AggregationMetricsWithMethod } from '../../common/types/manifest';
|
|
2
|
+
/**
|
|
3
|
+
* If aggregation is disabled, then returns given `tree`.
|
|
4
|
+
* Otherwise creates copy of the tree, then applies aggregation to it.
|
|
5
|
+
*/
|
|
6
|
+
export declare const aggregate: (tree: any, aggregationParams: AggregationParams) => any;
|
|
7
|
+
/**
|
|
8
|
+
* Gets or stores aggregation metrics.
|
|
9
|
+
*/
|
|
10
|
+
export declare const storeAggregationMetrics: (aggregationMetrics?: AggregationMetricsWithMethod) => AggregationMetricsWithMethod;
|
|
11
|
+
/**
|
|
12
|
+
* Returns aggregation method for given `metric`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const getAggregationInfoFor: (metric: string) => import("@grnsft/if-core/types").AggregationOptions;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAggregationInfoFor = exports.storeAggregationMetrics = exports.aggregate = void 0;
|
|
4
|
+
const consts_1 = require("@grnsft/if-core/consts");
|
|
5
|
+
const debug_logger_1 = require("../../common/util/debug-logger");
|
|
6
|
+
const logger_1 = require("../../common/util/logger");
|
|
7
|
+
const aggregation_helper_1 = require("../util/aggregation-helper");
|
|
8
|
+
const log_memoize_1 = require("../util/log-memoize");
|
|
9
|
+
const strings_1 = require("../config/strings");
|
|
10
|
+
const { AGGREGATING_NODE, AGGREGATING_OUTPUTS, UNKNOWN_PARAM, CHECKING_AGGREGATION_METHOD, } = strings_1.STRINGS;
|
|
11
|
+
/**
|
|
12
|
+
* Gets `i`th element from all children outputs and collects them in single array.
|
|
13
|
+
*/
|
|
14
|
+
const getIthElementsFromChildren = (children, i) => {
|
|
15
|
+
const values = Object.values(children);
|
|
16
|
+
return values.map((value) => {
|
|
17
|
+
const output = value.outputs;
|
|
18
|
+
return output[i];
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* 1. Gets the i'th element from each childrens outputs (treating children as rows and we are after a column of data).
|
|
23
|
+
* 2. Now we just aggregate over the `ithSliceOfOutputs` the same as we did for the normal outputs.
|
|
24
|
+
*/
|
|
25
|
+
const temporalAggregation = (node, metrics) => {
|
|
26
|
+
const outputs = [];
|
|
27
|
+
const values = Object.values(node.children);
|
|
28
|
+
for (let i = 0; i < values[0].outputs.length; i++) {
|
|
29
|
+
const ithSliceOfOutputs = getIthElementsFromChildren(node.children, i);
|
|
30
|
+
outputs.push((0, aggregation_helper_1.aggregateOutputsIntoOne)(ithSliceOfOutputs, metrics, true));
|
|
31
|
+
}
|
|
32
|
+
return outputs;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Navigates the tree depth first, bottom up,
|
|
36
|
+
* left to right aggregating the component nodes and then the grouping nodes will be aggregated
|
|
37
|
+
* only when all their child nodes have been aggregated.
|
|
38
|
+
* 1. Aggregates all the children.
|
|
39
|
+
* 2. At this point you can be positive all your children have been aggregated and so you can now work on aggregating yourself.
|
|
40
|
+
* 3. It's component node, аggregates just the outputs of THIS component node (horizontal/component aggregation).
|
|
41
|
+
* 4. Else it's grouping node, first does temporal aggregation. This assumes everything is on the same time-grid.
|
|
42
|
+
* The outputs of the grouping node are the aggregated time bucketed outputs of it's children.
|
|
43
|
+
* 5. Now a grouping node has it's own outputs, it can horizotnally aggregate them.
|
|
44
|
+
*/
|
|
45
|
+
const aggregateNode = (node, aggregationParams) => {
|
|
46
|
+
const metrics = aggregationParams.metrics;
|
|
47
|
+
const type = aggregationParams.type;
|
|
48
|
+
if (node.children) {
|
|
49
|
+
for (const child in node.children) {
|
|
50
|
+
console.debug(AGGREGATING_NODE(child));
|
|
51
|
+
aggregateNode(node.children[child], aggregationParams);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!node.children) {
|
|
55
|
+
/** `time` aggregation is the new name of `horizontal`. */
|
|
56
|
+
if (type === 'horizontal' || type === 'time' || type === 'both') {
|
|
57
|
+
node.aggregated = (0, aggregation_helper_1.aggregateOutputsIntoOne)(node.outputs, metrics);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
/** `component` aggregation is the new name of `vertical`. */
|
|
62
|
+
if (type === 'vertical' || type === 'component' || type === 'both') {
|
|
63
|
+
const outputs = temporalAggregation(node, metrics);
|
|
64
|
+
node.outputs = outputs;
|
|
65
|
+
node.aggregated = (0, aggregation_helper_1.aggregateOutputsIntoOne)(outputs, metrics);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* If aggregation is disabled, then returns given `tree`.
|
|
71
|
+
* Otherwise creates copy of the tree, then applies aggregation to it.
|
|
72
|
+
*/
|
|
73
|
+
const aggregate = (tree, aggregationParams) => {
|
|
74
|
+
console.debug(AGGREGATING_OUTPUTS);
|
|
75
|
+
if (!aggregationParams || !aggregationParams.type) {
|
|
76
|
+
return tree;
|
|
77
|
+
}
|
|
78
|
+
const copyOfTree = structuredClone(tree);
|
|
79
|
+
aggregateNode(copyOfTree, aggregationParams);
|
|
80
|
+
return copyOfTree;
|
|
81
|
+
};
|
|
82
|
+
exports.aggregate = aggregate;
|
|
83
|
+
/**
|
|
84
|
+
* Gets or stores aggregation metrics.
|
|
85
|
+
*/
|
|
86
|
+
const storeAggregationMetrics = (aggregationMetrics) => {
|
|
87
|
+
if (aggregationMetrics) {
|
|
88
|
+
metricManager.metrics = {
|
|
89
|
+
...metricManager.metrics,
|
|
90
|
+
...aggregationMetrics,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return metricManager.metrics;
|
|
94
|
+
};
|
|
95
|
+
exports.storeAggregationMetrics = storeAggregationMetrics;
|
|
96
|
+
/**
|
|
97
|
+
* Creates an encapsulated object to retrieve the metrics.
|
|
98
|
+
*/
|
|
99
|
+
const metricManager = (() => {
|
|
100
|
+
let metric;
|
|
101
|
+
const manager = {
|
|
102
|
+
get metrics() {
|
|
103
|
+
return metric;
|
|
104
|
+
},
|
|
105
|
+
set metrics(value) {
|
|
106
|
+
metric = value;
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
return manager;
|
|
110
|
+
})();
|
|
111
|
+
/**
|
|
112
|
+
* Returns aggregation method for given `metric`.
|
|
113
|
+
*/
|
|
114
|
+
const getAggregationInfoFor = (metric) => {
|
|
115
|
+
debug_logger_1.debugLogger.setExecutingPluginName();
|
|
116
|
+
(0, log_memoize_1.memoizedLog)(console.debug, '\n');
|
|
117
|
+
(0, log_memoize_1.memoizedLog)(console.debug, CHECKING_AGGREGATION_METHOD(metric));
|
|
118
|
+
const aggregationMetricsStorage = (0, exports.storeAggregationMetrics)();
|
|
119
|
+
if (aggregationMetricsStorage &&
|
|
120
|
+
Object.keys(aggregationMetricsStorage).includes(metric)) {
|
|
121
|
+
return aggregationMetricsStorage[metric];
|
|
122
|
+
}
|
|
123
|
+
(0, log_memoize_1.memoizedLog)(logger_1.logger.warn, UNKNOWN_PARAM(metric));
|
|
124
|
+
return {
|
|
125
|
+
time: consts_1.AGGREGATION_METHODS[3],
|
|
126
|
+
component: consts_1.AGGREGATION_METHODS[3],
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
exports.getAggregationInfoFor = getAggregationInfoFor;
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLXJ1bi9saWIvYWdncmVnYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUEyRDtBQUczRCxpRUFBMkQ7QUFDM0QscURBQWdEO0FBT2hELG1FQUFtRTtBQUNuRSxxREFBZ0Q7QUFFaEQsK0NBQTBDO0FBRTFDLE1BQU0sRUFDSixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYiwyQkFBMkIsR0FDNUIsR0FBRyxpQkFBTyxDQUFDO0FBRVo7O0dBRUc7QUFDSCxNQUFNLDBCQUEwQixHQUFHLENBQUMsUUFBYSxFQUFFLENBQVMsRUFBRSxFQUFFO0lBQzlELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdkMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUU3QixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFTLEVBQUUsT0FBaUIsRUFBRSxFQUFFO0lBQzNELE1BQU0sT0FBTyxHQUFtQixFQUFFLENBQUM7SUFDbkMsTUFBTSxNQUFNLEdBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFakQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENB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QUMsRUFBRSxDQUFDO0FBRUw7O0dBRUc7QUFDSSxNQUFNLHFCQUFxQixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7SUFDdEQsMEJBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3JDLElBQUEseUJBQVcsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLElBQUEseUJBQVcsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsTUFBTSx5QkFBeUIsR0FBRyxJQUFBLCtCQUF1QixHQUFFLENBQUM7SUFFNUQsSUFDRSx5QkFBeUI7UUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDdkQ7UUFDQSxPQUFPLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzFDO0lBRUQsSUFBQSx5QkFBVyxFQUFDLGVBQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFaEQsT0FBTztRQUNMLElBQUksRUFBRSw0QkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDNUIsU0FBUyxFQUFFLDRCQUFtQixDQUFDLENBQUMsQ0FBQztLQUNsQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBbkJXLFFBQUEscUJBQXFCLHlCQW1CaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FHR1JFR0FUSU9OX01FVEhPRFN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS9jb25zdHMnO1xuaW1wb3J0IHtQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7ZGVidWdMb2dnZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2RlYnVnLWxvZ2dlcic7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvbG9nZ2VyJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uUGFyYW1zLFxuICBBZ2dyZWdhdGlvblBhcmFtc1N1cmUsXG4gIEFnZ3JlZ2F0aW9uTWV0cmljc1dpdGhNZXRob2QsXG59IGZyb20gJy4uLy4uL2NvbW1vbi90eXBlcy9tYW5pZmVzdCc7XG5cbmltcG9ydCB7YWdncmVnYXRlT3V0cHV0c0ludG9PbmV9IGZyb20gJy4uL3V0aWwvYWdncmVnYXRpb24taGVscGVyJztcbmltcG9ydCB7bWVtb2l6ZWRMb2d9IGZyb20gJy4uL3V0aWwvbG9nLW1lbW9pemUnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uL2NvbmZpZy9zdHJpbmdzJztcblxuY29uc3Qge1xuICBBR0dSRUdBVElOR19OT0RFLFxuICBBR0dSRUdBVElOR19PVVRQVVRTLFxuICBVTktOT1dOX1BBUkFNLFxuICBDSEVDS0lOR19BR0dSRUdBVElPTl9NRVRIT0QsXG59ID0gU1RSSU5HUztcblxuLyoqXG4gKiBHZXRzIGBpYHRoIGVsZW1lbnQgZnJvbSBhbGwgY2hpbGRyZW4gb3V0cHV0cyBhbmQgY29sbGVjdHMgdGhlbSBpbiBzaW5nbGUgYXJyYXkuXG4gKi9cbmNvbnN0IGdldEl0aEVsZW1lbnRzRnJvbUNoaWxkcmVuID0gKGNoaWxkcmVuOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKGNoaWxkcmVuKTtcblxuICByZXR1cm4gdmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4ge1xuICAgIGNvbnN0IG91dHB1dCA9IHZhbHVlLm91dHB1dHM7XG5cbiAgICByZXR1cm4gb3V0cHV0W2ldO1xuICB9KTtcbn07XG5cbi8qKlxuICogMS4gR2V0cyB0aGUgaSd0aCBlbGVtZW50IGZyb20gZWFjaCBjaGlsZHJlbnMgb3V0cHV0cyAodHJlYXRpbmcgY2hpbGRyZW4gYXMgcm93cyBhbmQgd2UgYXJlIGFmdGVyIGEgY29sdW1uIG9mIGRhdGEpLlxuICogMi4gTm93IHdlIGp1c3QgYWdncmVnYXRlIG92ZXIgdGhlIGBpdGhTbGljZU9mT3V0cHV0c2AgdGhlIHNhbWUgYXMgd2UgZGlkIGZvciB0aGUgbm9ybWFsIG91dHB1dHMuXG4gKi9cbmNvbnN0IHRlbXBvcmFsQWdncmVnYXRpb24gPSAobm9kZTogYW55LCBtZXRyaWNzOiBzdHJpbmdbXSkgPT4ge1xuICBjb25zdCBvdXRwdXRzOiBQbHVnaW5QYXJhbXNbXSA9IFtdO1xuICBjb25zdCB2YWx1ZXM6IGFueSA9IE9iamVjdC52YWx1ZXMobm9kZS5jaGlsZHJlbik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXNbMF0ub3V0cHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGl0aFNsaWNlT2ZPdXRwdXRzID0gZ2V0SXRoRWxlbWVudHNGcm9tQ2hpbGRyZW4obm9kZS5jaGlsZHJlbiwgaSk7XG4gICAgb3V0cHV0cy5wdXNoKGFnZ3JlZ2F0ZU91dHB1dHNJbnRvT25lKGl0aFNsaWNlT2ZPdXRwdXRzLCBtZXRyaWNzLCB0cnVlKSk7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0cztcbn07XG5cbi8qKlxuICogTmF2aWdhdGVzIHRoZSB0cmVlIGRlcHRoIGZpcnN0LCBib3R0b20gdXAsXG4gKiAgbGVmdCB0byByaWdodCBhZ2dyZWdhdGluZyB0aGUgY29tcG9uZW50IG5vZGVzIGFuZCB0aGVuIHRoZSBncm91cGluZyBub2RlcyB3aWxsIGJlIGFnZ3JlZ2F0ZWRcbiAqICBvbmx5IHdoZW4gYWxsIHRoZWlyIGNoaWxkIG5vZGVzIGhhdmUgYmVlbiBhZ2dyZWdhdGVkLlxuICogMS4gQWdncmVnYXRlcyBhbGwgdGhlIGNoaWxkcmVuLlxuICogMi4gQXQgdGhpcyBwb2ludCB5b3UgY2FuIGJlIHBvc2l0aXZlIGFsbCB5b3VyIGNoaWxkcmVuIGhhdmUgYmVlbiBhZ2dyZWdhdGVkIGFuZCBzbyB5b3UgY2FuIG5vdyB3b3JrIG9uIGFnZ3JlZ2F0aW5nIHlvdXJzZWxmLlxuICogMy4gSXQncyBjb21wb25lbnQgbm9kZSwg0LBnZ3JlZ2F0ZXMganVzdCB0aGUgb3V0cHV0cyBvZiBUSElTIGNvbXBvbmVudCBub2RlIChob3Jpem9udGFsL2NvbXBvbmVudCBhZ2dyZWdhdGlvbikuXG4gKiA0LiBFbHNlIGl0J3MgZ3JvdXBpbmcgbm9kZSwgZmlyc3QgZG9lcyB0ZW1wb3JhbCBhZ2dyZWdhdGlvbi4gVGhpcyBhc3N1bWVzIGV2ZXJ5dGhpbmcgaXMgb24gdGhlIHNhbWUgdGltZS1ncmlkLlxuICogICAgVGhlIG91dHB1dHMgb2YgdGhlIGdyb3VwaW5nIG5vZGUgYXJlIHRoZSBhZ2dyZWdhdGVkIHRpbWUgYnVja2V0ZWQgb3V0cHV0cyBvZiBpdCdzIGNoaWxkcmVuLlxuICogNS4gTm93IGEgZ3JvdXBpbmcgbm9kZSBoYXMgaXQncyBvd24gb3V0cHV0cywgaXQgY2FuIGhvcml6b3RuYWxseSBhZ2dyZWdhdGUgdGhlbS5cbiAqL1xuY29uc3QgYWdncmVnYXRlTm9kZSA9IChub2RlOiBhbnksIGFnZ3JlZ2F0aW9uUGFyYW1zOiBBZ2dyZWdhdGlvblBhcmFtc1N1cmUpID0+IHtcbiAgY29uc3QgbWV0cmljcyA9IGFnZ3JlZ2F0aW9uUGFyYW1zIS5tZXRyaWNzO1xuICBjb25zdCB0eXBlID0gYWdncmVnYXRpb25QYXJhbXMhLnR5cGU7XG5cbiAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIGluIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoQUdHUkVHQVRJTkdfTk9ERShjaGlsZCkpO1xuXG4gICAgICBhZ2dyZWdhdGVOb2RlKG5vZGUuY2hpbGRyZW5bY2hpbGRdLCBhZ2dyZWdhdGlvblBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XG4gICAgLyoqIGB0aW1lYCBhZ2dyZWdhdGlvbiBpcyB0aGUgbmV3IG5hbWUgb2YgYGhvcml6b250YWxgLiAqL1xuICAgIGlmICh0eXBlID09PSAnaG9yaXpvbnRhbCcgfHwgdHlwZSA9PT0gJ3RpbWUnIHx8IHR5cGUgPT09ICdib3RoJykge1xuICAgICAgbm9kZS5hZ2dyZWdhdGVkID0gYWdncmVnYXRlT3V0cHV0c0ludG9PbmUobm9kZS5vdXRwdXRzLCBtZXRyaWNzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLyoqIGBjb21wb25lbnRgIGFnZ3JlZ2F0aW9uIGlzIHRoZSBuZXcgbmFtZSBvZiBgdmVydGljYWxgLiAqL1xuICAgIGlmICh0eXBlID09PSAndmVydGljYWwnIHx8IHR5cGUgPT09ICdjb21wb25lbnQnIHx8IHR5cGUgPT09ICdib3RoJykge1xuICAgICAgY29uc3Qgb3V0cHV0cyA9IHRlbXBvcmFsQWdncmVnYXRpb24obm9kZSwgbWV0cmljcyk7XG4gICAgICBub2RlLm91dHB1dHMgPSBvdXRwdXRzO1xuICAgICAgbm9kZS5hZ2dyZWdhdGVkID0gYWdncmVnYXRlT3V0cHV0c0ludG9PbmUob3V0cHV0cywgbWV0cmljcyk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElmIGFnZ3JlZ2F0aW9uIGlzIGRpc2FibGVkLCB0aGVuIHJldHVybnMgZ2l2ZW4gYHRyZWVgLlxuICogT3RoZXJ3aXNlIGNyZWF0ZXMgY29weSBvZiB0aGUgdHJlZSwgdGhlbiBhcHBsaWVzIGFnZ3JlZ2F0aW9uIHRvIGl0LlxuICovXG5leHBvcnQgY29uc3QgYWdncmVnYXRlID0gKHRyZWU6IGFueSwgYWdncmVnYXRpb25QYXJhbXM6IEFnZ3JlZ2F0aW9uUGFyYW1zKSA9PiB7XG4gIGNvbnNvbGUuZGVidWcoQUdHUkVHQVRJTkdfT1VUUFVUUyk7XG5cbiAgaWYgKCFhZ2dyZWdhdGlvblBhcmFtcyB8fCAhYWdncmVnYXRpb25QYXJhbXMudHlwZSkge1xuICAgIHJldHVybiB0cmVlO1xuICB9XG5cbiAgY29uc3QgY29weU9mVHJlZSA9IHN0cnVjdHVyZWRDbG9uZSh0cmVlKTtcbiAgYWdncmVnYXRlTm9kZShjb3B5T2ZUcmVlLCBhZ2dyZWdhdGlvblBhcmFtcyk7XG5cbiAgcmV0dXJuIGNvcHlPZlRyZWU7XG59O1xuXG4vKipcbiAqIEdldHMgb3Igc3RvcmVzIGFnZ3JlZ2F0aW9uIG1ldHJpY3MuXG4gKi9cbmV4cG9ydCBjb25zdCBzdG9yZUFnZ3JlZ2F0aW9uTWV0cmljcyA9IChcbiAgYWdncmVnYXRpb25NZXRyaWNzPzogQWdncmVnYXRpb25NZXRyaWNzV2l0aE1ldGhvZFxuKSA9PiB7XG4gIGlmIChhZ2dyZWdhdGlvbk1ldHJpY3MpIHtcbiAgICBtZXRyaWNNYW5hZ2VyLm1ldHJpY3MgPSB7XG4gICAgICAuLi5tZXRyaWNNYW5hZ2VyLm1ldHJpY3MsXG4gICAgICAuLi5hZ2dyZWdhdGlvbk1ldHJpY3MsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBtZXRyaWNNYW5hZ2VyLm1ldHJpY3M7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZW5jYXBzdWxhdGVkIG9iamVjdCB0byByZXRyaWV2ZSB0aGUgbWV0cmljcy5cbiAqL1xuY29uc3QgbWV0cmljTWFuYWdlciA9ICgoKSA9PiB7XG4gIGxldCBtZXRyaWM6IEFnZ3JlZ2F0aW9uTWV0cmljc1dpdGhNZXRob2Q7XG5cbiAgY29uc3QgbWFuYWdlciA9IHtcbiAgICBnZXQgbWV0cmljcygpIHtcbiAgICAgIHJldHVybiBtZXRyaWM7XG4gICAgfSxcbiAgICBzZXQgbWV0cmljcyh2YWx1ZTogQWdncmVnYXRpb25NZXRyaWNzV2l0aE1ldGhvZCkge1xuICAgICAgbWV0cmljID0gdmFsdWU7XG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbWFuYWdlcjtcbn0pKCk7XG5cbi8qKlxuICogUmV0dXJucyBhZ2dyZWdhdGlvbiBtZXRob2QgZm9yIGdpdmVuIGBtZXRyaWNgLlxuICovXG5leHBvcnQgY29uc3QgZ2V0QWdncmVnYXRpb25JbmZvRm9yID0gKG1ldHJpYzogc3RyaW5nKSA9PiB7XG4gIGRlYnVnTG9nZ2VyLnNldEV4ZWN1dGluZ1BsdWdpbk5hbWUoKTtcbiAgbWVtb2l6ZWRMb2coY29uc29sZS5kZWJ1ZywgJ1xcbicpO1xuICBtZW1vaXplZExvZyhjb25zb2xlLmRlYnVnLCBDSEVDS0lOR19BR0dSRUdBVElPTl9NRVRIT0QobWV0cmljKSk7XG4gIGNvbnN0IGFnZ3JlZ2F0aW9uTWV0cmljc1N0b3JhZ2UgPSBzdG9yZUFnZ3JlZ2F0aW9uTWV0cmljcygpO1xuXG4gIGlmIChcbiAgICBhZ2dyZWdhdGlvbk1ldHJpY3NTdG9yYWdlICYmXG4gICAgT2JqZWN0LmtleXMoYWdncmVnYXRpb25NZXRyaWNzU3RvcmFnZSkuaW5jbHVkZXMobWV0cmljKVxuICApIHtcbiAgICByZXR1cm4gYWdncmVnYXRpb25NZXRyaWNzU3RvcmFnZVttZXRyaWNdO1xuICB9XG5cbiAgbWVtb2l6ZWRMb2cobG9nZ2VyLndhcm4sIFVOS05PV05fUEFSQU0obWV0cmljKSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0aW1lOiBBR0dSRUdBVElPTl9NRVRIT0RTWzNdLFxuICAgIGNvbXBvbmVudDogQUdHUkVHQVRJT05fTUVUSE9EU1szXSxcbiAgfTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compute = void 0;
|
|
4
|
+
const regroup_1 = require("./regroup");
|
|
5
|
+
const explain_1 = require("./explain");
|
|
6
|
+
const debug_logger_1 = require("../../common/util/debug-logger");
|
|
7
|
+
const logger_1 = require("../../common/util/logger");
|
|
8
|
+
const helpers_1 = require("../util/helpers");
|
|
9
|
+
const strings_1 = require("../config/strings");
|
|
10
|
+
const { MERGING_DEFAULTS_WITH_INPUT_DATA, EMPTY_PIPELINE, CONFIG_WARN, COMPUTING_PIPELINE_FOR_NODE, COMPUTING_COMPONENT_PIPELINE, REGROUPING, OBSERVING, } = strings_1.STRINGS;
|
|
11
|
+
/**
|
|
12
|
+
* Traverses all child nodes based on children grouping.
|
|
13
|
+
*/
|
|
14
|
+
const traverse = async (children, params) => {
|
|
15
|
+
for (const child in children) {
|
|
16
|
+
console.debug(COMPUTING_COMPONENT_PIPELINE(child));
|
|
17
|
+
await computeNode(children[child], params);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Appends `default` values to `inputs`.
|
|
22
|
+
*/
|
|
23
|
+
const mergeDefaults = (inputs, defaults) => {
|
|
24
|
+
if (inputs) {
|
|
25
|
+
const response = defaults
|
|
26
|
+
? inputs.map(input => (0, helpers_1.mergeObjects)(defaults, input))
|
|
27
|
+
: inputs;
|
|
28
|
+
return response;
|
|
29
|
+
}
|
|
30
|
+
console.debug(MERGING_DEFAULTS_WITH_INPUT_DATA, '\n');
|
|
31
|
+
return defaults ? [defaults] : [];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Warns if the `config` is provided in the manifest.
|
|
35
|
+
*/
|
|
36
|
+
const warnIfConfigProvided = (node) => {
|
|
37
|
+
if ('config' in node) {
|
|
38
|
+
const plugins = Object.keys(node.config || {});
|
|
39
|
+
const joinedPlugins = plugins.join(', ');
|
|
40
|
+
const isMore = plugins.length > 1;
|
|
41
|
+
logger_1.logger.warn(CONFIG_WARN(joinedPlugins, isMore));
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* 1. If the node has it's own pipeline, defaults or config then use that,
|
|
46
|
+
* otherwise use whatever has been passed down from further up the tree.
|
|
47
|
+
* 2. If it's a grouping node, then first of all computes all it's children.
|
|
48
|
+
* This is doing a depth first traversal.
|
|
49
|
+
* 3. Otherwise merges the defaults into the inputs.
|
|
50
|
+
* 4. Iterates over pipeline phases (observe, regroup, compute).
|
|
51
|
+
* 5. Observe plugins are used to insert input values
|
|
52
|
+
* (isolated execution can be achived by passing `--observe` flag to CLI command).
|
|
53
|
+
* 6. Regroup plugin is used to group existing inputs by criteria
|
|
54
|
+
* (isolated execution can be achived by passing `--regroup` flag to CLI command).
|
|
55
|
+
* Since it creates new children for node, existing inputs and outputs are dropped and recursive traversal is called
|
|
56
|
+
* for newbord child component.
|
|
57
|
+
* 7. Compute plugins are used to do desired computations and appending the result to outputs
|
|
58
|
+
* (isolated execution can be achived by passing `--compute` flag to CLI command).
|
|
59
|
+
*/
|
|
60
|
+
const computeNode = async (node, params) => {
|
|
61
|
+
const pipeline = node.pipeline || params.pipeline;
|
|
62
|
+
const config = node.config || params.config;
|
|
63
|
+
const defaults = node.defaults || params.defaults;
|
|
64
|
+
const noFlags = !params.observe && !params.regroup && !params.compute;
|
|
65
|
+
debug_logger_1.debugLogger.setExecutingPluginName();
|
|
66
|
+
warnIfConfigProvided(node);
|
|
67
|
+
if (node.children) {
|
|
68
|
+
return traverse(node.children, {
|
|
69
|
+
...params,
|
|
70
|
+
pipeline,
|
|
71
|
+
defaults,
|
|
72
|
+
config,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
let inputStorage = structuredClone(node.inputs);
|
|
76
|
+
inputStorage = mergeDefaults(inputStorage, defaults);
|
|
77
|
+
const pipelineCopy = structuredClone(pipeline) || {};
|
|
78
|
+
/** Checks if pipeline is not an array or empty object. */
|
|
79
|
+
if (Array.isArray(pipelineCopy) ||
|
|
80
|
+
(typeof pipelineCopy === 'object' &&
|
|
81
|
+
pipelineCopy !== null &&
|
|
82
|
+
Object.keys(pipelineCopy).length === 0)) {
|
|
83
|
+
logger_1.logger.warn(EMPTY_PIPELINE);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* If iteration is on observe pipeline, then executes observe plugins and sets the inputs value.
|
|
87
|
+
*/
|
|
88
|
+
if ((noFlags || params.observe) && pipelineCopy.observe) {
|
|
89
|
+
while (pipelineCopy.observe.length !== 0) {
|
|
90
|
+
const pluginName = pipelineCopy.observe.shift();
|
|
91
|
+
console.debug(OBSERVING(pluginName));
|
|
92
|
+
debug_logger_1.debugLogger.setExecutingPluginName(pluginName);
|
|
93
|
+
const plugin = params.pluginStorage.get(pluginName);
|
|
94
|
+
const nodeConfig = config && config[pluginName];
|
|
95
|
+
inputStorage = await plugin.execute(inputStorage, nodeConfig);
|
|
96
|
+
node.inputs = inputStorage;
|
|
97
|
+
if (params.context.explainer) {
|
|
98
|
+
(0, explain_1.addExplainData)({
|
|
99
|
+
pluginName,
|
|
100
|
+
metadata: plugin.metadata,
|
|
101
|
+
pluginData: params.context.initialize.plugins[pluginName],
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* If regroup is requested, execute regroup strategy, delete child's inputs, outputs and empty regroup array.
|
|
108
|
+
*/
|
|
109
|
+
if ((noFlags || params.regroup) && pipelineCopy.regroup) {
|
|
110
|
+
const originalOutputs = params.append ? node.outputs || [] : [];
|
|
111
|
+
node.children = (0, regroup_1.Regroup)(inputStorage, originalOutputs, pipelineCopy.regroup);
|
|
112
|
+
delete node.inputs;
|
|
113
|
+
delete node.outputs;
|
|
114
|
+
debug_logger_1.debugLogger.setExecutingPluginName();
|
|
115
|
+
console.debug(REGROUPING);
|
|
116
|
+
return traverse(node.children, {
|
|
117
|
+
...params,
|
|
118
|
+
pipeline: {
|
|
119
|
+
...pipelineCopy,
|
|
120
|
+
regroup: undefined,
|
|
121
|
+
},
|
|
122
|
+
defaults,
|
|
123
|
+
config,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
console.debug('\n');
|
|
127
|
+
/**
|
|
128
|
+
* If iteration is on compute plugin, then executes compute plugins and sets the outputs value.
|
|
129
|
+
*/
|
|
130
|
+
if ((noFlags || params.compute) && pipelineCopy.compute) {
|
|
131
|
+
const originalOutputs = params.append ? node.outputs || [] : [];
|
|
132
|
+
while (pipelineCopy.compute.length !== 0) {
|
|
133
|
+
const pluginName = pipelineCopy.compute.shift();
|
|
134
|
+
const plugin = params.pluginStorage.get(pluginName);
|
|
135
|
+
const nodeConfig = config && config[pluginName];
|
|
136
|
+
console.debug(COMPUTING_PIPELINE_FOR_NODE(pluginName));
|
|
137
|
+
debug_logger_1.debugLogger.setExecutingPluginName(pluginName);
|
|
138
|
+
inputStorage = await plugin.execute(inputStorage, nodeConfig);
|
|
139
|
+
debug_logger_1.debugLogger.setExecutingPluginName();
|
|
140
|
+
node.outputs = inputStorage;
|
|
141
|
+
if (params.context.explainer) {
|
|
142
|
+
(0, explain_1.addExplainData)({
|
|
143
|
+
pluginName,
|
|
144
|
+
metadata: plugin.metadata,
|
|
145
|
+
pluginData: params.context.initialize.plugins[pluginName],
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (params.append) {
|
|
150
|
+
node.outputs = originalOutputs.concat(node.outputs || []);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
console.debug('\n');
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* Creates copy of existing tree, then applies computing strategy.
|
|
157
|
+
*/
|
|
158
|
+
const compute = async (tree, params) => {
|
|
159
|
+
const copyOfTree = structuredClone(tree);
|
|
160
|
+
await computeNode(copyOfTree, params);
|
|
161
|
+
return copyOfTree;
|
|
162
|
+
};
|
|
163
|
+
exports.compute = compute;
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vbGliL2NvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsdUNBQWtDO0FBQ2xDLHVDQUF5QztBQUV6QyxpRUFBMkQ7QUFDM0QscURBQWdEO0FBRWhELDZDQUE2QztBQUU3QywrQ0FBMEM7QUFJMUMsTUFBTSxFQUNKLGdDQUFnQyxFQUNoQyxjQUFjLEVBQ2QsV0FBVyxFQUNYLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsVUFBVSxFQUNWLFNBQVMsR0FDVixHQUFHLGlCQUFPLENBQUM7QUFFWjs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxRQUFhLEVBQUUsTUFBcUIsRUFBRSxFQUFFO0lBQzlELEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDNUM7QUFDSCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQ3BCLE1BQXNCLEVBQ3RCLFFBQWtDLEVBQ2xDLEVBQUU7SUFDRixJQUFJLE1BQU0sRUFBRTtRQUNWLE1BQU0sUUFBUSxHQUFHLFFBQVE7WUFDdkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFBLHNCQUFZLEVBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFWCxPQUFPLFFBQVEsQ0FBQztLQUNqQjtJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFdEQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENB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LElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7U0FDM0Q7S0FDRjtJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSSxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBUyxFQUFFLE1BQXFCLEVBQUUsRUFBRTtJQUNoRSxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFekMsTUFBTSxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXRDLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQU5XLFFBQUEsT0FBTyxXQU1sQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGx1Z2luUGFyYW1zfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuXG5pbXBvcnQge1JlZ3JvdXB9IGZyb20gJy4vcmVncm91cCc7XG5pbXBvcnQge2FkZEV4cGxhaW5EYXRhfSBmcm9tICcuL2V4cGxhaW4nO1xuXG5pbXBvcnQge2RlYnVnTG9nZ2VyfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC9kZWJ1Zy1sb2dnZXInO1xuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2xvZ2dlcic7XG5cbmltcG9ydCB7bWVyZ2VPYmplY3RzfSBmcm9tICcuLi91dGlsL2hlbHBlcnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uL2NvbmZpZy9zdHJpbmdzJztcblxuaW1wb3J0IHtDb21wdXRlUGFyYW1zLCBOb2RlLCBQaGFzZWRQaXBlbGluZX0gZnJvbSAnLi4vdHlwZXMvY29tcHV0ZSc7XG5cbmNvbnN0IHtcbiAgTUVSR0lOR19ERUZBVUxUU19XSVRIX0lOUFVUX0RBVEEsXG4gIEVNUFRZX1BJUEVMSU5FLFxuICBDT05GSUdfV0FSTixcbiAgQ09NUFVUSU5HX1BJUEVMSU5FX0ZPUl9OT0RFLFxuICBDT01QVVRJTkdfQ09NUE9ORU5UX1BJUEVMSU5FLFxuICBSRUdST1VQSU5HLFxuICBPQlNFUlZJTkcsXG59ID0gU1RSSU5HUztcblxuLyoqXG4gKiBUcmF2ZXJzZXMgYWxsIGNoaWxkIG5vZGVzIGJhc2VkIG9uIGNoaWxkcmVuIGdyb3VwaW5nLlxuICovXG5jb25zdCB0cmF2ZXJzZSA9IGFzeW5jIChjaGlsZHJlbjogYW55LCBwYXJhbXM6IENvbXB1dGVQYXJhbXMpID0+IHtcbiAgZm9yIChjb25zdCBjaGlsZCBpbiBjaGlsZHJlbikge1xuICAgIGNvbnNvbGUuZGVidWcoQ09NUFVUSU5HX0NPTVBPTkVOVF9QSVBFTElORShjaGlsZCkpO1xuICAgIGF3YWl0IGNvbXB1dGVOb2RlKGNoaWxkcmVuW2NoaWxkXSwgcGFyYW1zKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBcHBlbmRzIGBkZWZhdWx0YCB2YWx1ZXMgdG8gYGlucHV0c2AuXG4gKi9cbmNvbnN0IG1lcmdlRGVmYXVsdHMgPSAoXG4gIGlucHV0czogUGx1Z2luUGFyYW1zW10sXG4gIGRlZmF1bHRzOiBQbHVnaW5QYXJhbXMgfCB1bmRlZmluZWRcbikgPT4ge1xuICBpZiAoaW5wdXRzKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBkZWZhdWx0c1xuICAgICAgPyBpbnB1dHMubWFwKGlucHV0ID0+IG1lcmdlT2JqZWN0cyhkZWZhdWx0cywgaW5wdXQpKVxuICAgICAgOiBpbnB1dHM7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBjb25zb2xlLmRlYnVnKE1FUkdJTkdfREVGQVVMVFNfV0lUSF9JTlBVVF9EQVRBLCAnXFxuJyk7XG5cbiAgcmV0dXJuIGRlZmF1bHRzID8gW2RlZmF1bHRzXSA6IFtdO1xufTtcblxuLyoqXG4gKiBXYXJucyBpZiB0aGUgYGNvbmZpZ2AgaXMgcHJvdmlkZWQgaW4gdGhlIG1hbmlmZXN0LlxuICovXG5jb25zdCB3YXJuSWZDb25maWdQcm92aWRlZCA9IChub2RlOiBhbnkpID0+IHtcbiAgaWYgKCdjb25maWcnIGluIG5vZGUpIHtcbiAgICBjb25zdCBwbHVnaW5zID0gT2JqZWN0LmtleXMobm9kZS5jb25maWcgfHwge30pO1xuICAgIGNvbnN0IGpvaW5lZFBsdWdpbnMgPSBwbHVnaW5zLmpvaW4oJywgJyk7XG4gICAgY29uc3QgaXNNb3JlID0gcGx1Z2lucy5sZW5ndGggPiAxO1xuXG4gICAgbG9nZ2VyLndhcm4oQ09ORklHX1dBUk4oam9pbmVkUGx1Z2lucywgaXNNb3JlKSk7XG4gIH1cbn07XG5cbi8qKlxuICogMS4gSWYgdGhlIG5vZGUgaGFzIGl0J3Mgb3duIHBpcGVsaW5lLCBkZWZhdWx0cyBvciBjb25maWcgdGhlbiB1c2UgdGhhdCxcbiAqICAgIG90aGVyd2lzZSB1c2Ugd2hhdGV2ZXIgaGFzIGJlZW4gcGFzc2VkIGRvd24gZnJvbSBmdXJ0aGVyIHVwIHRoZSB0cmVlLlxuICogMi4gSWYgaXQncyBhIGdyb3VwaW5nIG5vZGUsIHRoZW4gZmlyc3Qgb2YgYWxsIGNvbXB1dGVzIGFsbCBpdCdzIGNoaWxkcmVuLlxuICogICAgVGhpcyBpcyBkb2luZyBhIGRlcHRoIGZpcnN0IHRyYXZlcnNhbC5cbiAqIDMuIE90aGVyd2lzZSBtZXJnZXMgdGhlIGRlZmF1bHRzIGludG8gdGhlIGlucHV0cy5cbiAqIDQuIEl0ZXJhdGVzIG92ZXIgcGlwZWxpbmUgcGhhc2VzIChvYnNlcnZlLCByZWdyb3VwLCBjb21wdXRlKS5cbiAqIDUuIE9ic2VydmUgcGx1Z2lucyBhcmUgdXNlZCB0byBpbnNlcnQgaW5wdXQgdmFsdWVzXG4gKiAgICAoaXNvbGF0ZWQgZXhlY3V0aW9uIGNhbiBiZSBhY2hpdmVkIGJ5IHBhc3NpbmcgYC0tb2JzZXJ2ZWAgZmxhZyB0byBDTEkgY29tbWFuZCkuXG4gKiA2LiBSZWdyb3VwIHBsdWdpbiBpcyB1c2VkIHRvIGdyb3VwIGV4aXN0aW5nIGlucHV0cyBieSBjcml0ZXJpYVxuICogICAgKGlzb2xhdGVkIGV4ZWN1dGlvbiBjYW4gYmUgYWNoaXZlZCBieSBwYXNzaW5nIGAtLXJlZ3JvdXBgIGZsYWcgdG8gQ0xJIGNvbW1hbmQpLlxuICogICAgU2luY2UgaXQgY3JlYXRlcyBuZXcgY2hpbGRyZW4gZm9yIG5vZGUsIGV4aXN0aW5nIGlucHV0cyBhbmQgb3V0cHV0cyBhcmUgZHJvcHBlZCBhbmQgcmVjdXJzaXZlIHRyYXZlcnNhbCBpcyBjYWxsZWRcbiAqICAgIGZvciBuZXdib3JkIGNoaWxkIGNvbXBvbmVudC5cbiAqIDcuIENvbXB1dGUgcGx1Z2lucyBhcmUgdXNlZCB0byBkbyBkZXNpcmVkIGNvbXB1dGF0aW9ucyBhbmQgYXBwZW5kaW5nIHRoZSByZXN1bHQgdG8gb3V0cHV0c1xuICogICAgKGlzb2xhdGVkIGV4ZWN1dGlvbiBjYW4gYmUgYWNoaXZlZCBieSBwYXNzaW5nIGAtLWNvbXB1dGVgIGZsYWcgdG8gQ0xJIGNvbW1hbmQpLlxuICovXG5jb25zdCBjb21wdXRlTm9kZSA9IGFzeW5jIChub2RlOiBOb2RlLCBwYXJhbXM6IENvbXB1dGVQYXJhbXMpOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBwaXBlbGluZSA9IG5vZGUucGlwZWxpbmUgfHwgKHBhcmFtcy5waXBlbGluZSBhcyBQaGFzZWRQaXBlbGluZSk7XG4gIGNvbnN0IGNvbmZpZyA9IG5vZGUuY29uZmlnIHx8IHBhcmFtcy5jb25maWc7XG4gIGNvbnN0IGRlZmF1bHRzID0gbm9kZS5kZWZhdWx0cyB8fCBwYXJhbXMuZGVmYXVsdHM7XG4gIGNvbnN0IG5vRmxhZ3MgPSAhcGFyYW1zLm9ic2VydmUgJiYgIXBhcmFtcy5yZWdyb3VwICYmICFwYXJhbXMuY29tcHV0ZTtcblxuICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKCk7XG4gIHdhcm5JZkNvbmZpZ1Byb3ZpZGVkKG5vZGUpO1xuXG4gIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRyYXZlcnNlKG5vZGUuY2hpbGRyZW4sIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHBpcGVsaW5lLFxuICAgICAgZGVmYXVsdHMsXG4gICAgICBjb25maWcsXG4gICAgfSk7XG4gIH1cblxuICBsZXQgaW5wdXRTdG9yYWdlID0gc3RydWN0dXJlZENsb25lKG5vZGUuaW5wdXRzKSBhcyBQbHVnaW5QYXJhbXNbXTtcbiAgaW5wdXRTdG9yYWdlID0gbWVyZ2VEZWZhdWx0cyhpbnB1dFN0b3JhZ2UsIGRlZmF1bHRzKTtcbiAgY29uc3QgcGlwZWxpbmVDb3B5ID0gc3RydWN0dXJlZENsb25lKHBpcGVsaW5lKSB8fCB7fTtcblxuICAvKiogQ2hlY2tzIGlmIHBpcGVsaW5lIGlzIG5vdCBhbiBhcnJheSBvciBlbXB0eSBvYmplY3QuICovXG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KHBpcGVsaW5lQ29weSkgfHxcbiAgICAodHlwZW9mIHBpcGVsaW5lQ29weSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHBpcGVsaW5lQ29weSAhPT0gbnVsbCAmJlxuICAgICAgT2JqZWN0LmtleXMocGlwZWxpbmVDb3B5KS5sZW5ndGggPT09IDApXG4gICkge1xuICAgIGxvZ2dlci53YXJuKEVNUFRZX1BJUEVMSU5FKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBpdGVyYXRpb24gaXMgb24gb2JzZXJ2ZSBwaXBlbGluZSwgdGhlbiBleGVjdXRlcyBvYnNlcnZlIHBsdWdpbnMgYW5kIHNldHMgdGhlIGlucHV0cyB2YWx1ZS5cbiAgICovXG4gIGlmICgobm9GbGFncyB8fCBwYXJhbXMub2JzZXJ2ZSkgJiYgcGlwZWxpbmVDb3B5Lm9ic2VydmUpIHtcbiAgICB3aGlsZSAocGlwZWxpbmVDb3B5Lm9ic2VydmUubGVuZ3RoICE9PSAwKSB7XG4gICAgICBjb25zdCBwbHVnaW5OYW1lID0gcGlwZWxpbmVDb3B5Lm9ic2VydmUuc2hpZnQoKSBhcyBzdHJpbmc7XG4gICAgICBjb25zb2xlLmRlYnVnKE9CU0VSVklORyhwbHVnaW5OYW1lKSk7XG4gICAgICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKHBsdWdpbk5hbWUpO1xuXG4gICAgICBjb25zdCBwbHVnaW4gPSBwYXJhbXMucGx1Z2luU3RvcmFnZS5nZXQocGx1Z2luTmFtZSk7XG4gICAgICBjb25zdCBub2RlQ29uZmlnID0gY29uZmlnICYmIGNvbmZpZ1twbHVnaW5OYW1lXTtcblxuICAgICAgaW5wdXRTdG9yYWdlID0gYXdhaXQgcGx1Z2luLmV4ZWN1dGUoaW5wdXRTdG9yYWdlLCBub2RlQ29uZmlnKTtcbiAgICAgIG5vZGUuaW5wdXRzID0gaW5wdXRTdG9yYWdlO1xuXG4gICAgICBpZiAocGFyYW1zLmNvbnRleHQuZXhwbGFpbmVyKSB7XG4gICAgICAgIGFkZEV4cGxhaW5EYXRhKHtcbiAgICAgICAgICBwbHVnaW5OYW1lLFxuICAgICAgICAgIG1ldGFkYXRhOiBwbHVnaW4ubWV0YWRhdGEsXG4gICAgICAgICAgcGx1Z2luRGF0YTogcGFyYW1zLmNvbnRleHQuaW5pdGlhbGl6ZSEucGx1Z2luc1twbHVnaW5OYW1lXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHJlZ3JvdXAgaXMgcmVxdWVzdGVkLCBleGVjdXRlIHJlZ3JvdXAgc3RyYXRlZ3ksIGRlbGV0ZSBjaGlsZCdzIGlucHV0cywgb3V0cHV0cyBhbmQgZW1wdHkgcmVncm91cCBhcnJheS5cbiAgICovXG4gIGlmICgobm9GbGFncyB8fCBwYXJhbXMucmVncm91cCkgJiYgcGlwZWxpbmVDb3B5LnJlZ3JvdXApIHtcbiAgICBjb25zdCBvcmlnaW5hbE91dHB1dHMgPSBwYXJhbXMuYXBwZW5kID8gbm9kZS5vdXRwdXRzIHx8IFtdIDogW107XG5cbiAgICBub2RlLmNoaWxkcmVuID0gUmVncm91cChcbiAgICAgIGlucHV0U3RvcmFnZSxcbiAgICAgIG9yaWdpbmFsT3V0cHV0cyxcbiAgICAgIHBpcGVsaW5lQ29weS5yZWdyb3VwXG4gICAgKTtcblxuICAgIGRlbGV0ZSBub2RlLmlucHV0cztcbiAgICBkZWxldGUgbm9kZS5vdXRwdXRzO1xuXG4gICAgZGVidWdMb2dnZXIuc2V0RXhlY3V0aW5nUGx1Z2luTmFtZSgpO1xuICAgIGNvbnNvbGUuZGVidWcoUkVHUk9VUElORyk7XG5cbiAgICByZXR1cm4gdHJhdmVyc2Uobm9kZS5jaGlsZHJlbiwge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgcGlwZWxpbmU6IHtcbiAgICAgICAgLi4ucGlwZWxpbmVDb3B5LFxuICAgICAgICByZWdyb3VwOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdHMsXG4gICAgICBjb25maWcsXG4gICAgfSk7XG4gIH1cblxuICBjb25zb2xlLmRlYnVnKCdcXG4nKTtcblxuICAvKipcbiAgICogSWYgaXRlcmF0aW9uIGlzIG9uIGNvbXB1dGUgcGx1Z2luLCB0aGVuIGV4ZWN1dGVzIGNvbXB1dGUgcGx1Z2lucyBhbmQgc2V0cyB0aGUgb3V0cHV0cyB2YWx1ZS5cbiAgICovXG4gIGlmICgobm9GbGFncyB8fCBwYXJhbXMuY29tcHV0ZSkgJiYgcGlwZWxpbmVDb3B5LmNvbXB1dGUpIHtcbiAgICBjb25zdCBvcmlnaW5hbE91dHB1dHMgPSBwYXJhbXMuYXBwZW5kID8gbm9kZS5vdXRwdXRzIHx8IFtdIDogW107XG5cbiAgICB3aGlsZSAocGlwZWxpbmVDb3B5LmNvbXB1dGUubGVuZ3RoICE9PSAwKSB7XG4gICAgICBjb25zdCBwbHVnaW5OYW1lID0gcGlwZWxpbmVDb3B5LmNvbXB1dGUuc2hpZnQoKSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwYXJhbXMucGx1Z2luU3RvcmFnZS5nZXQocGx1Z2luTmFtZSk7XG4gICAgICBjb25zdCBub2RlQ29uZmlnID0gY29uZmlnICYmIGNvbmZpZ1twbHVnaW5OYW1lXTtcblxuICAgICAgY29uc29sZS5kZWJ1ZyhDT01QVVRJTkdfUElQRUxJTkVfRk9SX05PREUocGx1Z2luTmFtZSkpO1xuICAgICAgZGVidWdMb2dnZXIuc2V0RXhlY3V0aW5nUGx1Z2luTmFtZShwbHVnaW5OYW1lKTtcblxuICAgICAgaW5wdXRTdG9yYWdlID0gYXdhaXQgcGx1Z2luLmV4ZWN1dGUoaW5wdXRTdG9yYWdlLCBub2RlQ29uZmlnKTtcbiAgICAgIGRlYnVnTG9nZ2VyLnNldEV4ZWN1dGluZ1BsdWdpbk5hbWUoKTtcblxuICAgICAgbm9kZS5vdXRwdXRzID0gaW5wdXRTdG9yYWdlO1xuXG4gICAgICBpZiAocGFyYW1zLmNvbnRleHQuZXhwbGFpbmVyKSB7XG4gICAgICAgIGFkZEV4cGxhaW5EYXRhKHtcbiAgICAgICAgICBwbHVnaW5OYW1lLFxuICAgICAgICAgIG1ldGFkYXRhOiBwbHVnaW4ubWV0YWRhdGEsXG4gICAgICAgICAgcGx1Z2luRGF0YTogcGFyYW1zLmNvbnRleHQuaW5pdGlhbGl6ZSEucGx1Z2luc1twbHVnaW5OYW1lXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5hcHBlbmQpIHtcbiAgICAgIG5vZGUub3V0cHV0cyA9IG9yaWdpbmFsT3V0cHV0cy5jb25jYXQobm9kZS5vdXRwdXRzIHx8IFtdKTtcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmRlYnVnKCdcXG4nKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBjb3B5IG9mIGV4aXN0aW5nIHRyZWUsIHRoZW4gYXBwbGllcyBjb21wdXRpbmcgc3RyYXRlZ3kuXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wdXRlID0gYXN5bmMgKHRyZWU6IGFueSwgcGFyYW1zOiBDb21wdXRlUGFyYW1zKSA9PiB7XG4gIGNvbnN0IGNvcHlPZlRyZWUgPSBzdHJ1Y3R1cmVkQ2xvbmUodHJlZSk7XG5cbiAgYXdhaXQgY29tcHV0ZU5vZGUoY29weU9mVHJlZSwgcGFyYW1zKTtcblxuICByZXR1cm4gY29weU9mVHJlZTtcbn07XG4iXX0=
|