@grnsft/if 0.7.0 → 0.7.2
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/build/common/config/index.d.ts +1 -0
- package/build/common/config/index.js +6 -0
- package/build/common/config/strings.d.ts +13 -0
- package/build/common/config/strings.js +21 -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 +146 -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 +162 -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 +97 -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 +59 -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 +12 -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/manifests/examples/builtins/interpolation/success-with-off.yml +24 -0
- package/package.json +10 -9
- package/src/if-run/builtins/interpolation/README.md +1 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.aggregateOutputsIntoOne = void 0;
|
|
4
|
+
const utils_1 = require("@grnsft/if-core/utils");
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const aggregate_1 = require("../lib/aggregate");
|
|
7
|
+
const { MissingAggregationParamError } = utils_1.ERRORS;
|
|
8
|
+
const { METRIC_MISSING } = config_1.STRINGS;
|
|
9
|
+
const { AGGREGATION_TIME_METRICS } = config_1.CONFIG;
|
|
10
|
+
/**
|
|
11
|
+
* Aggregates child node level metrics. Appends aggregation additional params to metrics.
|
|
12
|
+
* Otherwise iterates over outputs by aggregating per given `metrics`.
|
|
13
|
+
*/
|
|
14
|
+
const aggregateOutputsIntoOne = (outputs, metrics, isTemporal) => {
|
|
15
|
+
const metricsWithTime = metrics.concat(AGGREGATION_TIME_METRICS);
|
|
16
|
+
return outputs.reduce((acc, output, index) => {
|
|
17
|
+
for (const metric of metricsWithTime) {
|
|
18
|
+
if (!(metric in output)) {
|
|
19
|
+
throw new MissingAggregationParamError(METRIC_MISSING(metric, index));
|
|
20
|
+
}
|
|
21
|
+
/** Checks if metric is timestamp or duration, then adds to aggregated value. */
|
|
22
|
+
if (AGGREGATION_TIME_METRICS.includes(metric)) {
|
|
23
|
+
if (isTemporal) {
|
|
24
|
+
acc[metric] = output[metric];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const aggregationParams = (0, aggregate_1.getAggregationInfoFor)(metric);
|
|
29
|
+
/** Checks either its a temporal aggregation (vertical), then chooses `component`, otherwise `time`. */
|
|
30
|
+
const aggregationType = isTemporal ? 'component' : 'time';
|
|
31
|
+
if (aggregationParams[aggregationType] === 'none') {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (aggregationParams[aggregationType] === 'copy') {
|
|
35
|
+
acc[metric] = output[metric];
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
acc[metric] = acc[metric] ?? 0;
|
|
39
|
+
acc[metric] += parseFloat(output[metric]);
|
|
40
|
+
/** Checks for the last iteration. */
|
|
41
|
+
if (index === outputs.length - 1) {
|
|
42
|
+
if (aggregationParams[aggregationType] === 'avg') {
|
|
43
|
+
acc[metric] /= outputs.length;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return acc;
|
|
49
|
+
}, {});
|
|
50
|
+
};
|
|
51
|
+
exports.aggregateOutputsIntoOne = aggregateOutputsIntoOne;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24taGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLXJ1bi91dGlsL2FnZ3JlZ2F0aW9uLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBNkM7QUFHN0Msc0NBQTBDO0FBSTFDLGdEQUF1RDtBQUV2RCxNQUFNLEVBQUMsNEJBQTRCLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDOUMsTUFBTSxFQUFDLGNBQWMsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFDakMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRTFDOzs7R0FHRztBQUNJLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsT0FBdUIsRUFDdkIsT0FBaUIsRUFDakIsVUFBb0IsRUFDcEIsRUFBRTtJQUNGLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUVqRSxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzNDLEtBQUssTUFBTSxNQUFNLElBQUksZUFBZSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxJQUFJLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUN2RTtZQUVELGdGQUFnRjtZQUNoRixJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDN0MsSUFBSSxVQUFVLEVBQUU7b0JBQ2QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDOUI7YUFDRjtpQkFBTTtnQkFDTCxNQUFNLGlCQUFpQixHQUFHLElBQUEsaUNBQXFCLEVBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hELHdHQUF3RztnQkFDeEcsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFFMUQsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsS0FBSyxNQUFNLEVBQUU7b0JBQ2pELFNBQVM7aUJBQ1Y7Z0JBRUQsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsS0FBSyxNQUFNLEVBQUU7b0JBQ2pELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzdCLFNBQVM7aUJBQ1Y7Z0JBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBRTFDLHFDQUFxQztnQkFDckMsSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ2hDLElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLEtBQUssS0FBSyxFQUFFO3dCQUNoRCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztxQkFDL0I7aUJBQ0Y7YUFDRjtTQUNGO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQUUsRUFBdUIsQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQTlDVyxRQUFBLHVCQUF1QiwyQkE4Q2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5pbXBvcnQge1BsdWdpblBhcmFtc30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcblxuaW1wb3J0IHtDT05GSUcsIFNUUklOR1N9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7QWdncmVnYXRpb25SZXN1bHR9IGZyb20gJy4uL3R5cGVzL2FnZ3JlZ2F0aW9uJztcblxuaW1wb3J0IHtnZXRBZ2dyZWdhdGlvbkluZm9Gb3J9IGZyb20gJy4uL2xpYi9hZ2dyZWdhdGUnO1xuXG5jb25zdCB7TWlzc2luZ0FnZ3JlZ2F0aW9uUGFyYW1FcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7TUVUUklDX01JU1NJTkd9ID0gU1RSSU5HUztcbmNvbnN0IHtBR0dSRUdBVElPTl9USU1FX01FVFJJQ1N9ID0gQ09ORklHO1xuXG4vKipcbiAqIEFnZ3JlZ2F0ZXMgY2hpbGQgbm9kZSBsZXZlbCBtZXRyaWNzLiBBcHBlbmRzIGFnZ3JlZ2F0aW9uIGFkZGl0aW9uYWwgcGFyYW1zIHRvIG1ldHJpY3MuXG4gKiBPdGhlcndpc2UgaXRlcmF0ZXMgb3ZlciBvdXRwdXRzIGJ5IGFnZ3JlZ2F0aW5nIHBlciBnaXZlbiBgbWV0cmljc2AuXG4gKi9cbmV4cG9ydCBjb25zdCBhZ2dyZWdhdGVPdXRwdXRzSW50b09uZSA9IChcbiAgb3V0cHV0czogUGx1Z2luUGFyYW1zW10sXG4gIG1ldHJpY3M6IHN0cmluZ1tdLFxuICBpc1RlbXBvcmFsPzogYm9vbGVhblxuKSA9PiB7XG4gIGNvbnN0IG1ldHJpY3NXaXRoVGltZSA9IG1ldHJpY3MuY29uY2F0KEFHR1JFR0FUSU9OX1RJTUVfTUVUUklDUyk7XG5cbiAgcmV0dXJuIG91dHB1dHMucmVkdWNlKChhY2MsIG91dHB1dCwgaW5kZXgpID0+IHtcbiAgICBmb3IgKGNvbnN0IG1ldHJpYyBvZiBtZXRyaWNzV2l0aFRpbWUpIHtcbiAgICAgIGlmICghKG1ldHJpYyBpbiBvdXRwdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBNaXNzaW5nQWdncmVnYXRpb25QYXJhbUVycm9yKE1FVFJJQ19NSVNTSU5HKG1ldHJpYywgaW5kZXgpKTtcbiAgICAgIH1cblxuICAgICAgLyoqIENoZWNrcyBpZiBtZXRyaWMgaXMgdGltZXN0YW1wIG9yIGR1cmF0aW9uLCB0aGVuIGFkZHMgdG8gYWdncmVnYXRlZCB2YWx1ZS4gKi9cbiAgICAgIGlmIChBR0dSRUdBVElPTl9USU1FX01FVFJJQ1MuaW5jbHVkZXMobWV0cmljKSkge1xuICAgICAgICBpZiAoaXNUZW1wb3JhbCkge1xuICAgICAgICAgIGFjY1ttZXRyaWNdID0gb3V0cHV0W21ldHJpY107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uUGFyYW1zID0gZ2V0QWdncmVnYXRpb25JbmZvRm9yKG1ldHJpYyk7XG4gICAgICAgIC8qKiBDaGVja3MgZWl0aGVyIGl0cyBhIHRlbXBvcmFsIGFnZ3JlZ2F0aW9uICh2ZXJ0aWNhbCksIHRoZW4gY2hvb3NlcyBgY29tcG9uZW50YCwgb3RoZXJ3aXNlIGB0aW1lYC4gICovXG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uVHlwZSA9IGlzVGVtcG9yYWwgPyAnY29tcG9uZW50JyA6ICd0aW1lJztcblxuICAgICAgICBpZiAoYWdncmVnYXRpb25QYXJhbXNbYWdncmVnYXRpb25UeXBlXSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWdncmVnYXRpb25QYXJhbXNbYWdncmVnYXRpb25UeXBlXSA9PT0gJ2NvcHknKSB7XG4gICAgICAgICAgYWNjW21ldHJpY10gPSBvdXRwdXRbbWV0cmljXTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFjY1ttZXRyaWNdID0gYWNjW21ldHJpY10gPz8gMDtcbiAgICAgICAgYWNjW21ldHJpY10gKz0gcGFyc2VGbG9hdChvdXRwdXRbbWV0cmljXSk7XG5cbiAgICAgICAgLyoqIENoZWNrcyBmb3IgdGhlIGxhc3QgaXRlcmF0aW9uLiAqL1xuICAgICAgICBpZiAoaW5kZXggPT09IG91dHB1dHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIGlmIChhZ2dyZWdhdGlvblBhcmFtc1thZ2dyZWdhdGlvblR5cGVdID09PSAnYXZnJykge1xuICAgICAgICAgICAgYWNjW21ldHJpY10gLz0gb3V0cHV0cy5sZW5ndGg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30gYXMgQWdncmVnYXRpb25SZXN1bHQpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ProcessArgsOutputs } from '../types/process-args';
|
|
2
|
+
/**
|
|
3
|
+
* 1. Parses process arguments for `if-run`.
|
|
4
|
+
* 2. If output params are missing, warns user about it.
|
|
5
|
+
* 3. Otherwise checks if `manifest` param is there, then processes with checking if it's a yaml file.
|
|
6
|
+
* If it is, then returns object containing full path.
|
|
7
|
+
* 4. If params are missing or invalid, then rejects with `ParseCliParamsError`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const parseIfRunProcessArgs: () => ProcessArgsOutputs;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseIfRunProcessArgs = void 0;
|
|
4
|
+
const ts_command_line_args_1 = require("ts-command-line-args");
|
|
5
|
+
const utils_1 = require("@grnsft/if-core/utils");
|
|
6
|
+
const yaml_1 = require("../../common/util/yaml");
|
|
7
|
+
const helpers_1 = require("../../common/util/helpers");
|
|
8
|
+
const logger_1 = require("../../common/util/logger");
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
const config_2 = require("../../common/config");
|
|
11
|
+
const { ParseCliParamsError, CliSourceFileError } = utils_1.ERRORS;
|
|
12
|
+
const { ARGS, HELP } = config_1.CONFIG;
|
|
13
|
+
const { NO_OUTPUT } = config_1.STRINGS;
|
|
14
|
+
const { SOURCE_IS_NOT_YAML, MANIFEST_IS_MISSING } = config_2.STRINGS;
|
|
15
|
+
/**
|
|
16
|
+
* Validates `if-run` process arguments.
|
|
17
|
+
*/
|
|
18
|
+
const validateAndParseProcessArgs = () => {
|
|
19
|
+
try {
|
|
20
|
+
return (0, ts_command_line_args_1.parse)(ARGS, HELP);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof Error) {
|
|
24
|
+
throw new ParseCliParamsError(error.message);
|
|
25
|
+
}
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 1. Parses process arguments for `if-run`.
|
|
31
|
+
* 2. If output params are missing, warns user about it.
|
|
32
|
+
* 3. Otherwise checks if `manifest` param is there, then processes with checking if it's a yaml file.
|
|
33
|
+
* If it is, then returns object containing full path.
|
|
34
|
+
* 4. If params are missing or invalid, then rejects with `ParseCliParamsError`.
|
|
35
|
+
*/
|
|
36
|
+
const parseIfRunProcessArgs = () => {
|
|
37
|
+
const { manifest, output, 'no-output': noOutput, debug, observe, regroup, compute, append, } = validateAndParseProcessArgs();
|
|
38
|
+
if (!output && noOutput) {
|
|
39
|
+
logger_1.logger.warn(NO_OUTPUT);
|
|
40
|
+
}
|
|
41
|
+
if (manifest) {
|
|
42
|
+
if ((0, yaml_1.checkIfFileIsYaml)(manifest)) {
|
|
43
|
+
return {
|
|
44
|
+
inputPath: (0, helpers_1.prependFullFilePath)(manifest),
|
|
45
|
+
outputOptions: {
|
|
46
|
+
...(output && { outputPath: (0, helpers_1.prependFullFilePath)(output) }),
|
|
47
|
+
...(noOutput && { noOutput }),
|
|
48
|
+
},
|
|
49
|
+
debug,
|
|
50
|
+
observe,
|
|
51
|
+
regroup,
|
|
52
|
+
compute,
|
|
53
|
+
...(append && { append }),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
throw new CliSourceFileError(SOURCE_IS_NOT_YAML);
|
|
57
|
+
}
|
|
58
|
+
throw new CliSourceFileError(MANIFEST_IS_MISSING);
|
|
59
|
+
};
|
|
60
|
+
exports.parseIfRunProcessArgs = parseIfRunProcessArgs;
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vdXRpbC9hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUEyQztBQUMzQyxpREFBNkM7QUFFN0MsaURBQXlEO0FBQ3pELHVEQUE4RDtBQUU5RCxxREFBZ0Q7QUFFaEQsc0NBQTBDO0FBQzFDLGdEQUE4RDtBQUk5RCxNQUFNLEVBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFFekQsTUFBTSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDNUIsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFDNUIsTUFBTSxFQUFDLGtCQUFrQixFQUFFLG1CQUFtQixFQUFDLEdBQUcsZ0JBQWMsQ0FBQztBQUVqRTs7R0FFRztBQUNILE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxFQUFFO0lBQ3ZDLElBQUk7UUFDRixPQUFPLElBQUEsNEJBQUssRUFBWSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDckM7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtZQUMxQixNQUFNLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlDO1FBRUQsTUFBTSxLQUFLLENBQUM7S0FDYjtBQUNILENBQUMsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNJLE1BQU0scUJBQXFCLEdBQUcsR0FBdUIsRUFBRTtJQUM1RCxNQUFNLEVBQ0osUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBQUUsUUFBUSxFQUNyQixLQUFLLEVBQ0wsT0FBTyxFQUNQLE9BQU8sRUFDUCxPQUFPLEVBQ1AsTUFBTSxHQUNQLEdBQUcsMkJBQTJCLEVBQUUsQ0FBQztJQUVsQyxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsRUFBRTtRQUN2QixlQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ3hCO0lBRUQsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsT0FBTztnQkFDTCxTQUFTLEVBQUUsSUFBQSw2QkFBbUIsRUFBQyxRQUFRLENBQUM7Z0JBQ3hDLGFBQWEsRUFBRTtvQkFDYixHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUMsVUFBVSxFQUFFLElBQUEsNkJBQW1CLEVBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQztvQkFDeEQsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFDLFFBQVEsRUFBQyxDQUFDO2lCQUM1QjtnQkFDRCxLQUFLO2dCQUNMLE9BQU87Z0JBQ1AsT0FBTztnQkFDUCxPQUFPO2dCQUNQLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBQyxNQUFNLEVBQUMsQ0FBQzthQUN4QixDQUFDO1NBQ0g7UUFFRCxNQUFNLElBQUksa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQUNsRDtJQUVELE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQXBDVyxRQUFBLHFCQUFxQix5QkFvQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwYXJzZX0gZnJvbSAndHMtY29tbWFuZC1saW5lLWFyZ3MnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB7Y2hlY2tJZkZpbGVJc1lhbWx9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL3lhbWwnO1xuaW1wb3J0IHtwcmVwZW5kRnVsbEZpbGVQYXRofSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC9oZWxwZXJzJztcblxuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2xvZ2dlcic7XG5cbmltcG9ydCB7Q09ORklHLCBTVFJJTkdTfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHtTVFJJTkdTIGFzIENPTU1PTl9TVFJJTkdTfSBmcm9tICcuLi8uLi9jb21tb24vY29uZmlnJztcblxuaW1wb3J0IHtJZlJ1bkFyZ3MsIFByb2Nlc3NBcmdzT3V0cHV0c30gZnJvbSAnLi4vdHlwZXMvcHJvY2Vzcy1hcmdzJztcblxuY29uc3Qge1BhcnNlQ2xpUGFyYW1zRXJyb3IsIENsaVNvdXJjZUZpbGVFcnJvcn0gPSBFUlJPUlM7XG5cbmNvbnN0IHtBUkdTLCBIRUxQfSA9IENPTkZJRztcbmNvbnN0IHtOT19PVVRQVVR9ID0gU1RSSU5HUztcbmNvbnN0IHtTT1VSQ0VfSVNfTk9UX1lBTUwsIE1BTklGRVNUX0lTX01JU1NJTkd9ID0gQ09NTU9OX1NUUklOR1M7XG5cbi8qKlxuICogVmFsaWRhdGVzIGBpZi1ydW5gIHByb2Nlc3MgYXJndW1lbnRzLlxuICovXG5jb25zdCB2YWxpZGF0ZUFuZFBhcnNlUHJvY2Vzc0FyZ3MgPSAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlPElmUnVuQXJncz4oQVJHUywgSEVMUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUNsaVBhcmFtc0Vycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG4vKipcbiAqIDEuIFBhcnNlcyBwcm9jZXNzIGFyZ3VtZW50cyBmb3IgYGlmLXJ1bmAuXG4gKiAyLiBJZiBvdXRwdXQgcGFyYW1zIGFyZSBtaXNzaW5nLCB3YXJucyB1c2VyIGFib3V0IGl0LlxuICogMy4gT3RoZXJ3aXNlIGNoZWNrcyBpZiBgbWFuaWZlc3RgIHBhcmFtIGlzIHRoZXJlLCB0aGVuIHByb2Nlc3NlcyB3aXRoIGNoZWNraW5nIGlmIGl0J3MgYSB5YW1sIGZpbGUuXG4gKiAgICBJZiBpdCBpcywgdGhlbiByZXR1cm5zIG9iamVjdCBjb250YWluaW5nIGZ1bGwgcGF0aC5cbiAqIDQuIElmIHBhcmFtcyBhcmUgbWlzc2luZyBvciBpbnZhbGlkLCB0aGVuIHJlamVjdHMgd2l0aCBgUGFyc2VDbGlQYXJhbXNFcnJvcmAuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZUlmUnVuUHJvY2Vzc0FyZ3MgPSAoKTogUHJvY2Vzc0FyZ3NPdXRwdXRzID0+IHtcbiAgY29uc3Qge1xuICAgIG1hbmlmZXN0LFxuICAgIG91dHB1dCxcbiAgICAnbm8tb3V0cHV0Jzogbm9PdXRwdXQsXG4gICAgZGVidWcsXG4gICAgb2JzZXJ2ZSxcbiAgICByZWdyb3VwLFxuICAgIGNvbXB1dGUsXG4gICAgYXBwZW5kLFxuICB9ID0gdmFsaWRhdGVBbmRQYXJzZVByb2Nlc3NBcmdzKCk7XG5cbiAgaWYgKCFvdXRwdXQgJiYgbm9PdXRwdXQpIHtcbiAgICBsb2dnZXIud2FybihOT19PVVRQVVQpO1xuICB9XG5cbiAgaWYgKG1hbmlmZXN0KSB7XG4gICAgaWYgKGNoZWNrSWZGaWxlSXNZYW1sKG1hbmlmZXN0KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5wdXRQYXRoOiBwcmVwZW5kRnVsbEZpbGVQYXRoKG1hbmlmZXN0KSxcbiAgICAgICAgb3V0cHV0T3B0aW9uczoge1xuICAgICAgICAgIC4uLihvdXRwdXQgJiYge291dHB1dFBhdGg6IHByZXBlbmRGdWxsRmlsZVBhdGgob3V0cHV0KX0pLFxuICAgICAgICAgIC4uLihub091dHB1dCAmJiB7bm9PdXRwdXR9KSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVidWcsXG4gICAgICAgIG9ic2VydmUsXG4gICAgICAgIHJlZ3JvdXAsXG4gICAgICAgIGNvbXB1dGUsXG4gICAgICAgIC4uLihhcHBlbmQgJiYge2FwcGVuZH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgQ2xpU291cmNlRmlsZUVycm9yKFNPVVJDRV9JU19OT1RfWUFNTCk7XG4gIH1cblxuICB0aHJvdyBuZXcgQ2xpU291cmNlRmlsZUVycm9yKE1BTklGRVNUX0lTX01JU1NJTkcpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Impact engine error handler. Logs errors and appends issue template if error is unknown.
|
|
3
|
+
*/
|
|
4
|
+
export declare const andHandle: (error: Error) => void;
|
|
5
|
+
/**
|
|
6
|
+
* Append entries from defaults which are missing from inputs.
|
|
7
|
+
*/
|
|
8
|
+
export declare const mergeObjects: (defaults: any, input: any) => Record<string, any>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeObjects = exports.andHandle = void 0;
|
|
4
|
+
const utils_1 = require("@grnsft/if-core/utils");
|
|
5
|
+
const logger_1 = require("../../common/util/logger");
|
|
6
|
+
const config_1 = require("../config");
|
|
7
|
+
const { UNSUPPORTED_ERROR } = config_1.STRINGS;
|
|
8
|
+
/**
|
|
9
|
+
* Impact engine error handler. Logs errors and appends issue template if error is unknown.
|
|
10
|
+
*/
|
|
11
|
+
const andHandle = (error) => {
|
|
12
|
+
const knownErrors = Object.keys(utils_1.ERRORS);
|
|
13
|
+
logger_1.logger.error(error);
|
|
14
|
+
if (!knownErrors.includes(error.name)) {
|
|
15
|
+
logger_1.logger.error(UNSUPPORTED_ERROR(error.name));
|
|
16
|
+
// eslint-disable-next-line no-process-exit
|
|
17
|
+
process.exit(2);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.andHandle = andHandle;
|
|
21
|
+
/**
|
|
22
|
+
* Append entries from defaults which are missing from inputs.
|
|
23
|
+
*/
|
|
24
|
+
const mergeObjects = (defaults, input) => {
|
|
25
|
+
const merged = structuredClone(input);
|
|
26
|
+
for (const key in defaults) {
|
|
27
|
+
if (!(key in input)) {
|
|
28
|
+
merged[key] = defaults[key];
|
|
29
|
+
}
|
|
30
|
+
if (merged[key] === undefined || merged[key] === null) {
|
|
31
|
+
merged[key] = defaults[key];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return merged;
|
|
35
|
+
};
|
|
36
|
+
exports.mergeObjects = mergeObjects;
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vdXRpbC9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUE2QztBQUU3QyxxREFBZ0Q7QUFFaEQsc0NBQWtDO0FBRWxDLE1BQU0sRUFBQyxpQkFBaUIsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFcEM7O0dBRUc7QUFDSSxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBTSxDQUFDLENBQUM7SUFFeEMsZUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDckMsZUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1QywyQ0FBMkM7UUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtBQUNILENBQUMsQ0FBQztBQVZXLFFBQUEsU0FBUyxhQVVwQjtBQUVGOztHQUVHO0FBQ0ksTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFhLEVBQUUsS0FBVSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxNQUFNLEdBQXdCLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUzRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRTtRQUMxQixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3QjtRQUVELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQWRXLFFBQUEsWUFBWSxnQkFjdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VSUk9SU30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcblxuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2xvZ2dlcic7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnJztcblxuY29uc3Qge1VOU1VQUE9SVEVEX0VSUk9SfSA9IFNUUklOR1M7XG5cbi8qKlxuICogSW1wYWN0IGVuZ2luZSBlcnJvciBoYW5kbGVyLiBMb2dzIGVycm9ycyBhbmQgYXBwZW5kcyBpc3N1ZSB0ZW1wbGF0ZSBpZiBlcnJvciBpcyB1bmtub3duLlxuICovXG5leHBvcnQgY29uc3QgYW5kSGFuZGxlID0gKGVycm9yOiBFcnJvcikgPT4ge1xuICBjb25zdCBrbm93bkVycm9ycyA9IE9iamVjdC5rZXlzKEVSUk9SUyk7XG5cbiAgbG9nZ2VyLmVycm9yKGVycm9yKTtcblxuICBpZiAoIWtub3duRXJyb3JzLmluY2x1ZGVzKGVycm9yLm5hbWUpKSB7XG4gICAgbG9nZ2VyLmVycm9yKFVOU1VQUE9SVEVEX0VSUk9SKGVycm9yLm5hbWUpKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvY2Vzcy1leGl0XG4gICAgcHJvY2Vzcy5leGl0KDIpO1xuICB9XG59O1xuXG4vKipcbiAqIEFwcGVuZCBlbnRyaWVzIGZyb20gZGVmYXVsdHMgd2hpY2ggYXJlIG1pc3NpbmcgZnJvbSBpbnB1dHMuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZU9iamVjdHMgPSAoZGVmYXVsdHM6IGFueSwgaW5wdXQ6IGFueSkgPT4ge1xuICBjb25zdCBtZXJnZWQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBzdHJ1Y3R1cmVkQ2xvbmUoaW5wdXQpO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIGRlZmF1bHRzKSB7XG4gICAgaWYgKCEoa2V5IGluIGlucHV0KSkge1xuICAgICAgbWVyZ2VkW2tleV0gPSBkZWZhdWx0c1trZXldO1xuICAgIH1cblxuICAgIGlmIChtZXJnZWRba2V5XSA9PT0gdW5kZWZpbmVkIHx8IG1lcmdlZFtrZXldID09PSBudWxsKSB7XG4gICAgICBtZXJnZWRba2V5XSA9IGRlZmF1bHRzW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlZDtcbn07XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.memoizedLog = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Keeps in memory logged messages. If called with redundant message, skips logging.
|
|
6
|
+
*/
|
|
7
|
+
const memoizedLogger = () => {
|
|
8
|
+
const memory = [];
|
|
9
|
+
return (logger, message) => {
|
|
10
|
+
if (memory.includes(message)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
memory.push(message);
|
|
14
|
+
logger(message);
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
/** Singleton pattern. */
|
|
18
|
+
exports.memoizedLog = memoizedLogger();
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLW1lbW9pemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL3V0aWwvbG9nLW1lbW9pemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7SUFDMUIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBRTVCLE9BQU8sQ0FBQyxNQUErQyxFQUFFLE9BQWUsRUFBRSxFQUFFO1FBQzFFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRix5QkFBeUI7QUFDWixRQUFBLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGV2ZWxlZExvZ01ldGhvZH0gZnJvbSAnd2luc3Rvbic7XG5cbi8qKlxuICogS2VlcHMgaW4gbWVtb3J5IGxvZ2dlZCBtZXNzYWdlcy4gSWYgY2FsbGVkIHdpdGggcmVkdW5kYW50IG1lc3NhZ2UsIHNraXBzIGxvZ2dpbmcuXG4gKi9cbmNvbnN0IG1lbW9pemVkTG9nZ2VyID0gKCkgPT4ge1xuICBjb25zdCBtZW1vcnk6IHN0cmluZ1tdID0gW107XG5cbiAgcmV0dXJuIChsb2dnZXI6IExldmVsZWRMb2dNZXRob2QgfCB0eXBlb2YgY29uc29sZS5kZWJ1ZywgbWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG1lbW9yeS5pbmNsdWRlcyhtZXNzYWdlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG1lbW9yeS5wdXNoKG1lc3NhZ2UpO1xuICAgIGxvZ2dlcihtZXNzYWdlKTtcbiAgfTtcbn07XG5cbi8qKiBTaW5nbGV0b24gcGF0dGVybi4gKi9cbmV4cG9ydCBjb25zdCBtZW1vaXplZExvZyA9IG1lbW9pemVkTG9nZ2VyKCk7XG4iXX0=
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.osInfo = void 0;
|
|
4
|
+
const os_1 = require("os");
|
|
5
|
+
const helpers_1 = require("../../common/util/helpers");
|
|
6
|
+
/**
|
|
7
|
+
* Executes `lsb_release -a` command in terminal.
|
|
8
|
+
*
|
|
9
|
+
* ```
|
|
10
|
+
* Distributor ID: Ubuntu
|
|
11
|
+
* Description: Ubuntu 22.04.4 LTS
|
|
12
|
+
* Release: 22.04
|
|
13
|
+
* Codename: jammy
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Parses os and os-version from the response.
|
|
17
|
+
*/
|
|
18
|
+
const getLinuxInfo = async () => {
|
|
19
|
+
const { stdout } = await (0, helpers_1.execPromise)('lsb_release -a');
|
|
20
|
+
const parseLinuxVersion = (lsbReleaseResponse) => {
|
|
21
|
+
const regex = /Distributor ID: ([^\n]+)\nDescription: +([^ ]+) +([^ ]+) +(.+)\n/;
|
|
22
|
+
const match = lsbReleaseResponse.match(regex);
|
|
23
|
+
return {
|
|
24
|
+
os: match ? match[1] : (0, os_1.platform)(),
|
|
25
|
+
'os-version': match ? `${match[3]} ${match[4]}` : (0, os_1.release)(),
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
return parseLinuxVersion(stdout);
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Executes in CMD `systeminfo | findstr /B /C:"OS Name" /B /C:"OS Version"` command.
|
|
32
|
+
*
|
|
33
|
+
* ```
|
|
34
|
+
* OS Name: Microsoft Windows 11 Enterprise
|
|
35
|
+
* OS Version: 10.0.22631 N/A Build 22631
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* Parses os and os-version from the response.
|
|
39
|
+
*/
|
|
40
|
+
const getWindowsInfo = async () => {
|
|
41
|
+
const { stdout } = await (0, helpers_1.execPromise)('systeminfo | findstr /B /C:"OS Name" /B /C:"OS Version"');
|
|
42
|
+
const parseWindowsInfo = (systemInfoResponse) => {
|
|
43
|
+
const regex = /OS Name:\s+([^\n]+)\nOS Version:\s+([\d.]+)\s+(N\/A\s+Build\s+(\d+))/;
|
|
44
|
+
const match = systemInfoResponse.match(regex);
|
|
45
|
+
return {
|
|
46
|
+
os: match ? match[1] : (0, os_1.platform)(),
|
|
47
|
+
'os-version': match ? `${match[2]} ${match[3]}` : (0, os_1.release)(),
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
return parseWindowsInfo(stdout);
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Executes `sw_vers` command in terminal.
|
|
54
|
+
*
|
|
55
|
+
* ```
|
|
56
|
+
* ProductName: macOS
|
|
57
|
+
* ProductVersion: 14.3.1
|
|
58
|
+
* BuildVersion: 23D60
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* Parses os and os version from the response.
|
|
62
|
+
*/
|
|
63
|
+
const getMacVersion = async () => {
|
|
64
|
+
const { stdout } = await (0, helpers_1.execPromise)('sw_vers');
|
|
65
|
+
const parseMacInfo = (swVersResponse) => {
|
|
66
|
+
const productNameRegex = /ProductName:\s*(.+)/;
|
|
67
|
+
const productVersionRegex = /ProductVersion:\s*(.+)/;
|
|
68
|
+
const nameMatch = swVersResponse.match(productNameRegex);
|
|
69
|
+
const versionMatch = swVersResponse.match(productVersionRegex);
|
|
70
|
+
return {
|
|
71
|
+
os: nameMatch ? nameMatch[1].trim() : (0, os_1.platform)(),
|
|
72
|
+
'os-version': versionMatch ? versionMatch[1].trim() : (0, os_1.release)(),
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
return parseMacInfo(stdout);
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Finds operating system information like name and version.
|
|
79
|
+
*/
|
|
80
|
+
const osInfo = async () => {
|
|
81
|
+
const osKind = (0, os_1.platform)();
|
|
82
|
+
switch (osKind) {
|
|
83
|
+
case 'darwin':
|
|
84
|
+
return getMacVersion();
|
|
85
|
+
case 'linux':
|
|
86
|
+
return getLinuxInfo();
|
|
87
|
+
case 'win32':
|
|
88
|
+
return getWindowsInfo();
|
|
89
|
+
default:
|
|
90
|
+
return {
|
|
91
|
+
os: osKind,
|
|
92
|
+
'os-version': (0, os_1.release)(),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
exports.osInfo = osInfo;
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3MtY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vdXRpbC9vcy1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUFxQztBQUVyQyx1REFBc0Q7QUFFdEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFlBQVksR0FBRyxLQUFLLElBQUksRUFBRTtJQUM5QixNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsTUFBTSxJQUFBLHFCQUFXLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVyRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsa0JBQTBCLEVBQUUsRUFBRTtRQUN2RCxNQUFNLEtBQUssR0FDVCxrRUFBa0UsQ0FBQztRQUNyRSxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxhQUFRLEdBQUU7WUFDakMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUEsWUFBTyxHQUFFO1NBQzVELENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sY0FBYyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ2hDLE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxNQUFNLElBQUEscUJBQVcsRUFDaEMseURBQXlELENBQzFELENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsa0JBQTBCLEVBQUUsRUFBRTtRQUN0RCxNQUFNLEtBQUssR0FDVCxzRUFBc0UsQ0FBQztRQUN6RSxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxhQUFRLEdBQUU7WUFDakMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUEsWUFBTyxHQUFFO1NBQzVELENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxLQUFLLElBQUksRUFBRTtJQUMvQixNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsTUFBTSxJQUFBLHFCQUFXLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFFOUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxjQUFzQixFQUFFLEVBQUU7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztRQUMvQyxNQUFNLG1CQUFtQixHQUFHLHdCQUF3QixDQUFDO1FBRXJELE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0QsT0FBTztZQUNMLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSxhQUFRLEdBQUU7WUFDaEQsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFBLFlBQU8sR0FBRTtTQUNoRSxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSSxNQUFNLE1BQU0sR0FBRyxLQUFLLElBQUksRUFBRTtJQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFBLGFBQVEsR0FBRSxDQUFDO0lBRTFCLFFBQVEsTUFBTSxFQUFFO1FBQ2QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxhQUFhLEVBQUUsQ0FBQztRQUN6QixLQUFLLE9BQU87WUFDVixPQUFPLFlBQVksRUFBRSxDQUFDO1FBQ3hCLEtBQUssT0FBTztZQUNWLE9BQU8sY0FBYyxFQUFFLENBQUM7UUFDMUI7WUFDRSxPQUFPO2dCQUNMLEVBQUUsRUFBRSxNQUFNO2dCQUNWLFlBQVksRUFBRSxJQUFBLFlBQU8sR0FBRTthQUN4QixDQUFDO0tBQ0w7QUFDSCxDQUFDLENBQUM7QUFoQlcsUUFBQSxNQUFNLFVBZ0JqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmVsZWFzZSwgcGxhdGZvcm19IGZyb20gJ29zJztcblxuaW1wb3J0IHtleGVjUHJvbWlzZX0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvaGVscGVycyc7XG5cbi8qKlxuICogRXhlY3V0ZXMgYGxzYl9yZWxlYXNlIC1hYCBjb21tYW5kIGluIHRlcm1pbmFsLlxuICpcbiAqIGBgYFxuICogRGlzdHJpYnV0b3IgSUQ6IFVidW50dVxuICogRGVzY3JpcHRpb246ICAgIFVidW50dSAyMi4wNC40IExUU1xuICogUmVsZWFzZTogICAgICAgIDIyLjA0XG4gKiBDb2RlbmFtZTogICAgICAgamFtbXlcbiAqIGBgYFxuICpcbiAqIFBhcnNlcyBvcyBhbmQgb3MtdmVyc2lvbiBmcm9tIHRoZSByZXNwb25zZS5cbiAqL1xuY29uc3QgZ2V0TGludXhJbmZvID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWNQcm9taXNlKCdsc2JfcmVsZWFzZSAtYScpO1xuXG4gIGNvbnN0IHBhcnNlTGludXhWZXJzaW9uID0gKGxzYlJlbGVhc2VSZXNwb25zZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVnZXggPVxuICAgICAgL0Rpc3RyaWJ1dG9yIElEOiAoW15cXG5dKylcXG5EZXNjcmlwdGlvbjogKyhbXiBdKykgKyhbXiBdKykgKyguKylcXG4vO1xuICAgIGNvbnN0IG1hdGNoID0gbHNiUmVsZWFzZVJlc3BvbnNlLm1hdGNoKHJlZ2V4KTtcblxuICAgIHJldHVybiB7XG4gICAgICBvczogbWF0Y2ggPyBtYXRjaFsxXSA6IHBsYXRmb3JtKCksXG4gICAgICAnb3MtdmVyc2lvbic6IG1hdGNoID8gYCR7bWF0Y2hbM119ICR7bWF0Y2hbNF19YCA6IHJlbGVhc2UoKSxcbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiBwYXJzZUxpbnV4VmVyc2lvbihzdGRvdXQpO1xufTtcblxuLyoqXG4gKiBFeGVjdXRlcyBpbiBDTUQgYHN5c3RlbWluZm8gfCBmaW5kc3RyIC9CIC9DOlwiT1MgTmFtZVwiIC9CIC9DOlwiT1MgVmVyc2lvblwiYCBjb21tYW5kLlxuICpcbiAqIGBgYFxuICogT1MgTmFtZTogICAgICAgICAgICAgICAgICAgTWljcm9zb2Z0IFdpbmRvd3MgMTEgRW50ZXJwcmlzZVxuICogT1MgVmVyc2lvbjogICAgICAgICAgICAgICAgMTAuMC4yMjYzMSBOL0EgQnVpbGQgMjI2MzFcbiAqIGBgYFxuICpcbiAqIFBhcnNlcyBvcyBhbmQgb3MtdmVyc2lvbiBmcm9tIHRoZSByZXNwb25zZS5cbiAqL1xuY29uc3QgZ2V0V2luZG93c0luZm8gPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlY1Byb21pc2UoXG4gICAgJ3N5c3RlbWluZm8gfCBmaW5kc3RyIC9CIC9DOlwiT1MgTmFtZVwiIC9CIC9DOlwiT1MgVmVyc2lvblwiJ1xuICApO1xuXG4gIGNvbnN0IHBhcnNlV2luZG93c0luZm8gPSAoc3lzdGVtSW5mb1Jlc3BvbnNlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZWdleCA9XG4gICAgICAvT1MgTmFtZTpcXHMrKFteXFxuXSspXFxuT1MgVmVyc2lvbjpcXHMrKFtcXGQuXSspXFxzKyhOXFwvQVxccytCdWlsZFxccysoXFxkKykpLztcbiAgICBjb25zdCBtYXRjaCA9IHN5c3RlbUluZm9SZXNwb25zZS5tYXRjaChyZWdleCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3M6IG1hdGNoID8gbWF0Y2hbMV0gOiBwbGF0Zm9ybSgpLFxuICAgICAgJ29zLXZlcnNpb24nOiBtYXRjaCA/IGAke21hdGNoWzJdfSAke21hdGNoWzNdfWAgOiByZWxlYXNlKCksXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gcGFyc2VXaW5kb3dzSW5mbyhzdGRvdXQpO1xufTtcblxuLyoqXG4gKiBFeGVjdXRlcyBgc3dfdmVyc2AgY29tbWFuZCBpbiB0ZXJtaW5hbC5cbiAqXG4gKiBgYGBcbiAqIFByb2R1Y3ROYW1lOiAgICAgIG1hY09TXG4gKiBQcm9kdWN0VmVyc2lvbjogICAxNC4zLjFcbiAqIEJ1aWxkVmVyc2lvbjogICAgIDIzRDYwXG4gKiBgYGBcbiAqXG4gKiBQYXJzZXMgb3MgYW5kIG9zIHZlcnNpb24gZnJvbSB0aGUgcmVzcG9uc2UuXG4gKi9cbmNvbnN0IGdldE1hY1ZlcnNpb24gPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlY1Byb21pc2UoJ3N3X3ZlcnMnKTtcblxuICBjb25zdCBwYXJzZU1hY0luZm8gPSAoc3dWZXJzUmVzcG9uc2U6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHByb2R1Y3ROYW1lUmVnZXggPSAvUHJvZHVjdE5hbWU6XFxzKiguKykvO1xuICAgIGNvbnN0IHByb2R1Y3RWZXJzaW9uUmVnZXggPSAvUHJvZHVjdFZlcnNpb246XFxzKiguKykvO1xuXG4gICAgY29uc3QgbmFtZU1hdGNoID0gc3dWZXJzUmVzcG9uc2UubWF0Y2gocHJvZHVjdE5hbWVSZWdleCk7XG4gICAgY29uc3QgdmVyc2lvbk1hdGNoID0gc3dWZXJzUmVzcG9uc2UubWF0Y2gocHJvZHVjdFZlcnNpb25SZWdleCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3M6IG5hbWVNYXRjaCA/IG5hbWVNYXRjaFsxXS50cmltKCkgOiBwbGF0Zm9ybSgpLFxuICAgICAgJ29zLXZlcnNpb24nOiB2ZXJzaW9uTWF0Y2ggPyB2ZXJzaW9uTWF0Y2hbMV0udHJpbSgpIDogcmVsZWFzZSgpLFxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIHBhcnNlTWFjSW5mbyhzdGRvdXQpO1xufTtcblxuLyoqXG4gKiBGaW5kcyBvcGVyYXRpbmcgc3lzdGVtIGluZm9ybWF0aW9uIGxpa2UgbmFtZSBhbmQgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IG9zSW5mbyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3Qgb3NLaW5kID0gcGxhdGZvcm0oKTtcblxuICBzd2l0Y2ggKG9zS2luZCkge1xuICAgIGNhc2UgJ2Rhcndpbic6XG4gICAgICByZXR1cm4gZ2V0TWFjVmVyc2lvbigpO1xuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHJldHVybiBnZXRMaW51eEluZm8oKTtcbiAgICBjYXNlICd3aW4zMic6XG4gICAgICByZXR1cm4gZ2V0V2luZG93c0luZm8oKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3M6IG9zS2luZCxcbiAgICAgICAgJ29zLXZlcnNpb24nOiByZWxlYXNlKCksXG4gICAgICB9O1xuICB9XG59O1xuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PluginInterface } from '@grnsft/if-core/types';
|
|
2
|
+
/**
|
|
3
|
+
* Storage for maintaining plugins.
|
|
4
|
+
*/
|
|
5
|
+
export declare const pluginStorage: () => {
|
|
6
|
+
/**
|
|
7
|
+
* Gets plugin by given `name`. If it's missing then throws error.
|
|
8
|
+
*/
|
|
9
|
+
get: (name: string) => PluginInterface;
|
|
10
|
+
/**
|
|
11
|
+
* Saves given `plugin` with given `name`.
|
|
12
|
+
*/
|
|
13
|
+
set: (name: string, plugin: PluginInterface) => any;
|
|
14
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pluginStorage = void 0;
|
|
4
|
+
const utils_1 = require("@grnsft/if-core/utils");
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const { PluginInitializationError } = utils_1.ERRORS;
|
|
7
|
+
const { NOT_INITALIZED_PLUGIN } = config_1.STRINGS;
|
|
8
|
+
/**
|
|
9
|
+
* Storage for maintaining plugins.
|
|
10
|
+
*/
|
|
11
|
+
const pluginStorage = () => {
|
|
12
|
+
const storage = {};
|
|
13
|
+
return {
|
|
14
|
+
/**
|
|
15
|
+
* Gets plugin by given `name`. If it's missing then throws error.
|
|
16
|
+
*/
|
|
17
|
+
get: (name) => {
|
|
18
|
+
const plugin = storage[name];
|
|
19
|
+
if (!plugin) {
|
|
20
|
+
throw new PluginInitializationError(NOT_INITALIZED_PLUGIN(name));
|
|
21
|
+
}
|
|
22
|
+
return plugin;
|
|
23
|
+
},
|
|
24
|
+
/**
|
|
25
|
+
* Saves given `plugin` with given `name`.
|
|
26
|
+
*/
|
|
27
|
+
set: function (name, plugin) {
|
|
28
|
+
storage[name] = plugin;
|
|
29
|
+
return this;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.pluginStorage = pluginStorage;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL3V0aWwvcGx1Z2luLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQTZDO0FBRzdDLHNDQUFrQztBQUlsQyxNQUFNLEVBQUMseUJBQXlCLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDM0MsTUFBTSxFQUFDLHFCQUFxQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUV4Qzs7R0FFRztBQUNJLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUNoQyxNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBRWxDLE9BQU87UUFDTDs7V0FFRztRQUNILEdBQUcsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU3QixJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ2xFO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNEOztXQUVHO1FBQ0gsR0FBRyxFQUFFLFVBQVUsSUFBWSxFQUFFLE1BQXVCO1lBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7WUFFdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXpCVyxRQUFBLGFBQWEsaUJBeUJ4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuaW1wb3J0IHtQbHVnaW5JbnRlcmZhY2V9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHtQbHVnaW5TdG9yYWdlfSBmcm9tICcuLi90eXBlcy9wbHVnaW4tc3RvcmFnZSc7XG5cbmNvbnN0IHtQbHVnaW5Jbml0aWFsaXphdGlvbkVycm9yfSA9IEVSUk9SUztcbmNvbnN0IHtOT1RfSU5JVEFMSVpFRF9QTFVHSU59ID0gU1RSSU5HUztcblxuLyoqXG4gKiBTdG9yYWdlIGZvciBtYWludGFpbmluZyBwbHVnaW5zLlxuICovXG5leHBvcnQgY29uc3QgcGx1Z2luU3RvcmFnZSA9ICgpID0+IHtcbiAgY29uc3Qgc3RvcmFnZTogUGx1Z2luU3RvcmFnZSA9IHt9O1xuXG4gIHJldHVybiB7XG4gICAgLyoqXG4gICAgICogR2V0cyBwbHVnaW4gYnkgZ2l2ZW4gYG5hbWVgLiBJZiBpdCdzIG1pc3NpbmcgdGhlbiB0aHJvd3MgZXJyb3IuXG4gICAgICovXG4gICAgZ2V0OiAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBzdG9yYWdlW25hbWVdO1xuXG4gICAgICBpZiAoIXBsdWdpbikge1xuICAgICAgICB0aHJvdyBuZXcgUGx1Z2luSW5pdGlhbGl6YXRpb25FcnJvcihOT1RfSU5JVEFMSVpFRF9QTFVHSU4obmFtZSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGx1Z2luO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogU2F2ZXMgZ2l2ZW4gYHBsdWdpbmAgd2l0aCBnaXZlbiBgbmFtZWAuXG4gICAgICovXG4gICAgc2V0OiBmdW5jdGlvbiAobmFtZTogc3RyaW5nLCBwbHVnaW46IFBsdWdpbkludGVyZmFjZSkge1xuICAgICAgc3RvcmFnZVtuYW1lXSA9IHBsdWdpbjtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgfTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: interpolation-demo
|
|
2
|
+
description: simple demo of interpolation plugin
|
|
3
|
+
tags:
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
interpolation:
|
|
7
|
+
method: Interpolation
|
|
8
|
+
path: "builtin"
|
|
9
|
+
config:
|
|
10
|
+
method: linear
|
|
11
|
+
x: [0, 10, 50, 100]
|
|
12
|
+
y: [0.12, 0.32, 0.75, 1.02]
|
|
13
|
+
input-parameter: "cpu/utilization"
|
|
14
|
+
output-parameter: "result"
|
|
15
|
+
tree:
|
|
16
|
+
children:
|
|
17
|
+
child:
|
|
18
|
+
pipeline:
|
|
19
|
+
compute:
|
|
20
|
+
- interpolation
|
|
21
|
+
inputs:
|
|
22
|
+
- timestamp: 2023-07-06T00:00
|
|
23
|
+
duration: 3600
|
|
24
|
+
cpu/utilization: off
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grnsft/if",
|
|
3
3
|
"description": "Impact Framework",
|
|
4
|
-
"version": "0.7.
|
|
4
|
+
"version": "0.7.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Green Software Foundation",
|
|
7
7
|
"email": "info@gsf.com"
|
|
8
8
|
},
|
|
9
9
|
"bin": {
|
|
10
|
-
"if-diff": "
|
|
11
|
-
"if-run": "
|
|
12
|
-
"if-env": "
|
|
13
|
-
"if-check": "
|
|
14
|
-
"if-csv": "
|
|
15
|
-
"if-merge": "
|
|
10
|
+
"if-diff": "build/if-diff/index.js",
|
|
11
|
+
"if-run": "build/if-run/index.js",
|
|
12
|
+
"if-env": "build/if-env/index.js",
|
|
13
|
+
"if-check": "build/if-check/index.js",
|
|
14
|
+
"if-csv": "build/if-csv/index.js",
|
|
15
|
+
"if-merge": "build/if-merge/index.js"
|
|
16
16
|
},
|
|
17
17
|
"bugs": {
|
|
18
18
|
"url": "https://github.com/Green-Software-Foundation/if/issues/new?assignees=&labels=feedback&projects=&template=feedback.md&title=Feedback+-+"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@commitlint/cli": "^18.6.0",
|
|
22
22
|
"@commitlint/config-conventional": "^18.6.0",
|
|
23
|
-
"@grnsft/if-core": "^0.0.
|
|
23
|
+
"@grnsft/if-core": "^0.0.28",
|
|
24
24
|
"axios": "^1.7.2",
|
|
25
25
|
"csv-parse": "^5.5.6",
|
|
26
26
|
"csv-stringify": "^6.4.6",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"access": "public"
|
|
71
71
|
},
|
|
72
72
|
"repository": {
|
|
73
|
-
"url": "https://github.com/Green-Software-Foundation/if"
|
|
73
|
+
"url": "git+https://github.com/Green-Software-Foundation/if.git"
|
|
74
74
|
},
|
|
75
75
|
"scripts": {
|
|
76
76
|
"build": "npm run clean && tsc --project tsconfig.build.json",
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"lint": "gts lint",
|
|
88
88
|
"pre-commit": "lint-staged",
|
|
89
89
|
"prepare": "husky install",
|
|
90
|
+
"prepublishOnly": "npm run build",
|
|
90
91
|
"release": "release-it",
|
|
91
92
|
"test": "jest --verbose --testPathPattern=src/__tests__/"
|
|
92
93
|
},
|
|
@@ -62,7 +62,7 @@ The plugin expects the following input parameters:
|
|
|
62
62
|
|
|
63
63
|
- `timestamp`: a timestamp for the input (required)
|
|
64
64
|
- `duration`: the amount of time, in seconds, that the input covers. (required)
|
|
65
|
-
- `[input-parameter]` - a field whose name matches the string provided to input-parameter in config (i.e. if the input-parameter in config is cpu/utilisation then cpu-utilisation must exist in the input data)
|
|
65
|
+
- `[input-parameter]` - a field whose name matches the string provided to input-parameter in config (i.e. if the input-parameter in config is cpu/utilisation then cpu-utilisation must exist in the input data). Value can be greater or equal to 0. For modeling server which totally turned off, `off` value can be used.
|
|
66
66
|
|
|
67
67
|
## Output
|
|
68
68
|
|