@grnsft/if 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.commitlintrc.js +45 -0
- package/.husky/commit-msg +4 -0
- package/.husky/pre-commit +6 -0
- package/CONTRIBUTING.md +81 -98
- package/README.md +16 -12
- package/build/config/config.d.ts +4 -5
- package/build/config/config.js +16 -12
- package/build/config/index.d.ts +1 -0
- package/build/config/index.js +4 -2
- package/build/config/params.d.ts +2 -0
- package/build/config/params.js +146 -0
- package/build/config/strings.d.ts +14 -8
- package/build/config/strings.js +18 -12
- package/build/index.js +18 -38
- package/build/lib/aggregate.d.ts +6 -0
- package/build/lib/aggregate.js +72 -0
- package/build/lib/compute.d.ts +5 -0
- package/build/lib/compute.js +84 -0
- package/build/lib/exhaust.d.ts +6 -0
- package/build/lib/exhaust.js +47 -0
- package/build/lib/initialize.d.ts +6 -0
- package/build/lib/initialize.js +98 -0
- package/build/lib/load.d.ts +6 -0
- package/build/lib/load.js +24 -0
- package/build/lib/parameterize.d.ts +5 -0
- package/build/lib/parameterize.js +49 -0
- package/build/models/export-csv.d.ts +2 -0
- package/build/models/export-csv.js +129 -0
- package/build/models/export-log.d.ts +4 -0
- package/build/models/export-log.js +18 -0
- package/build/models/export-yaml.d.ts +4 -0
- package/build/models/export-yaml.js +24 -0
- package/build/models/group-by.d.ts +11 -0
- package/build/models/group-by.js +56 -0
- package/build/models/index.d.ts +2 -1
- package/build/models/index.js +5 -3
- package/build/models/time-sync.d.ts +2 -54
- package/build/models/time-sync.js +216 -147
- package/build/types/aggregation.d.ts +3 -0
- package/build/types/aggregation.js +5 -0
- package/build/types/compute.d.ts +25 -0
- package/build/types/compute.js +3 -0
- package/build/types/exhaust-plugin-interface.d.ts +7 -0
- package/build/types/exhaust-plugin-interface.js +3 -0
- package/build/types/group-by.d.ts +3 -0
- package/build/types/group-by.js +3 -0
- package/build/types/initialize.d.ts +4 -0
- package/build/types/initialize.js +3 -0
- package/build/types/interface.d.ts +8 -0
- package/build/types/interface.js +3 -0
- package/build/types/load.d.ts +7 -0
- package/build/types/load.js +3 -0
- package/build/types/manifest.d.ts +40 -0
- package/build/types/manifest.js +3 -0
- package/build/types/parameters.d.ts +15 -0
- package/build/types/parameters.js +5 -0
- package/build/types/process-args.d.ts +4 -5
- package/build/types/process-args.js +1 -1
- package/build/types/time-sync.d.ts +10 -2
- package/build/types/time-sync.js +1 -1
- package/build/util/aggregation-helper.d.ts +6 -0
- package/build/util/aggregation-helper.js +56 -0
- package/build/util/args.d.ts +7 -3
- package/build/util/args.js +46 -18
- package/build/util/errors.d.ts +1 -1
- package/build/util/errors.js +8 -4
- package/build/util/helpers.d.ts +4 -0
- package/build/util/helpers.js +23 -4
- package/build/util/json.d.ts +4 -0
- package/build/util/json.js +16 -0
- package/build/util/logger.d.ts +5 -0
- package/build/util/logger.js +40 -0
- package/build/util/validations.d.ts +30 -21
- package/build/util/validations.js +54 -55
- package/build/util/yaml.js +27 -4
- package/examples/manifests/azure-importer.yml +24 -0
- package/examples/manifests/basic-demo.yml +75 -0
- package/examples/manifests/basic.yml +27 -0
- package/examples/manifests/boavizta-pipeline.yml +85 -0
- package/examples/{impls/case-studies → manifests}/boavizta.yml +14 -14
- package/examples/{impls/test → manifests}/ccf.yml +9 -10
- package/examples/manifests/cim.yml +20 -0
- package/examples/manifests/cloud-metadata.yml +41 -0
- package/examples/manifests/co2js.yml +30 -0
- package/examples/manifests/coefficient.yml +23 -0
- package/examples/manifests/csv-export.yml +34 -0
- package/examples/manifests/e-mem.yml +21 -0
- package/examples/{impls/test → manifests}/e-net.yml +9 -8
- package/examples/manifests/generics.yml +71 -0
- package/examples/manifests/group-by.yml +48 -0
- package/examples/manifests/mock-observation.yml +33 -0
- package/examples/manifests/multiply.yml +23 -0
- package/examples/manifests/nesting-demo.yml +89 -0
- package/examples/manifests/nesting.yml +215 -0
- package/examples/manifests/pipeline-demo-1.yml +85 -0
- package/examples/manifests/pipeline-demo-2.yml +149 -0
- package/examples/manifests/pipeline-demo.yml +128 -0
- package/examples/manifests/pipeline-teads-sci.yml +82 -0
- package/examples/manifests/pipeline-with-generics.yml +147 -0
- package/examples/manifests/pipeline-with-mocks.yml +146 -0
- package/examples/{impls/test → manifests}/sci-e.yml +6 -8
- package/examples/manifests/sci-m.yml +23 -0
- package/examples/{impls/test → manifests}/sci-o.yml +10 -10
- package/examples/{impls/test → manifests}/sci.yml +10 -9
- package/examples/manifests/shell.yml +20 -0
- package/examples/manifests/sum.yml +23 -0
- package/examples/{impls/test → manifests}/tdp-finder.yml +6 -7
- package/examples/manifests/teads-aws.yml +22 -0
- package/examples/manifests/teads-curve.yml +20 -0
- package/examples/manifests/time-sync.yml +32 -0
- package/examples/manifests/watt-time.yml +42 -0
- package/jest.config.js +6 -1
- package/package.json +13 -8
- package/src/__tests__/integration/templates/integration.yaml +16 -0
- package/src/models/README.md +9 -7
- package/tsconfig.test.json +1 -1
- package/Makefile +0 -16
- package/build/config/units.yaml +0 -112
- package/build/lib/models-universe.d.ts +0 -36
- package/build/lib/models-universe.js +0 -113
- package/build/lib/observatory.d.ts +0 -20
- package/build/lib/observatory.js +0 -31
- package/build/lib/planet-aggregator.d.ts +0 -6
- package/build/lib/planet-aggregator.js +0 -35
- package/build/lib/supercomputer.d.ts +0 -37
- package/build/lib/supercomputer.js +0 -148
- package/build/types/helpers.d.ts +0 -1
- package/build/types/helpers.js +0 -3
- package/build/types/impl.d.ts +0 -45
- package/build/types/impl.js +0 -5
- package/build/types/model-interface.d.ts +0 -14
- package/build/types/model-interface.js +0 -3
- package/build/types/models-universe.d.ts +0 -23
- package/build/types/models-universe.js +0 -3
- package/build/types/planet-aggregator.d.ts +0 -6
- package/build/types/planet-aggregator.js +0 -3
- package/build/types/supercomputer.d.ts +0 -4
- package/build/types/supercomputer.js +0 -3
- package/build/types/units-dealer.d.ts +0 -3
- package/build/types/units-dealer.js +0 -3
- package/build/types/units.d.ts +0 -11
- package/build/types/units.js +0 -37
- package/build/util/units-dealer.d.ts +0 -10
- package/build/util/units-dealer.js +0 -32
- package/coverage/clover.xml +0 -379
- package/coverage/coverage-final.json +0 -14
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/config/config.ts.html +0 -250
- package/coverage/lcov-report/config/index.html +0 -146
- package/coverage/lcov-report/config/index.ts.html +0 -91
- package/coverage/lcov-report/config/strings.ts.html +0 -208
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -161
- package/coverage/lcov-report/lib/index.html +0 -161
- package/coverage/lcov-report/lib/models-universe.ts.html +0 -517
- package/coverage/lcov-report/lib/observatory.ts.html +0 -187
- package/coverage/lcov-report/lib/planet-aggregator.ts.html +0 -274
- package/coverage/lcov-report/lib/supercomputer.ts.html +0 -472
- package/coverage/lcov-report/models/index.html +0 -131
- package/coverage/lcov-report/models/index.ts.html +0 -88
- package/coverage/lcov-report/models/planet-aggregator.ts.html +0 -271
- package/coverage/lcov-report/models/time-sync.ts.html +0 -1165
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/util/args.ts.html +0 -289
- package/coverage/lcov-report/util/errors.ts.html +0 -166
- package/coverage/lcov-report/util/index.html +0 -161
- package/coverage/lcov-report/util/units-dealer.ts.html +0 -199
- package/coverage/lcov-report/util/yaml.ts.html +0 -193
- package/coverage/lcov.info +0 -637
- package/examples/impls/case-studies/accenture.yml +0 -155
- package/examples/impls/case-studies/aggregation.yml +0 -97
- package/examples/impls/case-studies/aveva.yaml +0 -48
- package/examples/impls/case-studies/azure-yassine.yaml +0 -67
- package/examples/impls/case-studies/dow_msft.yml +0 -173
- package/examples/impls/case-studies/farm-insights.yaml +0 -35
- package/examples/impls/case-studies/gsf-website.yaml +0 -93
- package/examples/impls/case-studies/msft-eshoppen.yaml +0 -162
- package/examples/impls/case-studies/msft-green-ai.yaml +0 -58
- package/examples/impls/case-studies/ntt-data-on-premise.yaml +0 -201
- package/examples/impls/test/aggregation-test.yml +0 -109
- package/examples/impls/test/azure.yml +0 -26
- package/examples/impls/test/if-demo.yml +0 -61
- package/examples/impls/test/large-impl.yml +0 -257303
- package/examples/impls/test/metadata.yml +0 -21
- package/examples/impls/test/nesting.yml +0 -113
- package/examples/impls/test/sci-m.yml +0 -24
- package/examples/impls/test/shell.yml +0 -19
- package/examples/impls/test/time-sync.yml +0 -75
- package/examples/ompls/aggregation-test.yml +0 -340
- package/examples/ompls/azure.yml +0 -145
- package/examples/ompls/ccf.yml +0 -29
- package/examples/ompls/complex-pipeline.yml +0 -105
- package/examples/ompls/full-sci.yml +0 -64
- package/examples/ompls/if-demo.yml +0 -517
- package/examples/ompls/metadata.yml +0 -29
- package/examples/ompls/nesting.yml +0 -113
- package/examples/ompls/sci-e.yml +0 -23
- package/examples/ompls/sci-m.yml +0 -33
- package/examples/ompls/sci-o.yml +0 -29
- package/examples/ompls/sci.yml +0 -37
- package/examples/ompls/shell.yml +0 -23
- package/examples/ompls/time-sync.yml +0 -212
- package/src/config/units.yaml +0 -112
- package/tsconfig.build.tsbuildinfo +0 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.initalize = void 0;
|
|
27
|
+
const pathLib = require("path");
|
|
28
|
+
const errors_1 = require("../util/errors");
|
|
29
|
+
const logger_1 = require("../util/logger");
|
|
30
|
+
const config_1 = require("../config");
|
|
31
|
+
const { ModuleInitializationError, PluginCredentialError } = errors_1.ERRORS;
|
|
32
|
+
const { GITHUB_PATH, NATIVE_PLUGIN } = config_1.CONFIG;
|
|
33
|
+
const { MISSING_METHOD, MISSING_PATH, NOT_NATIVE_PLUGIN, INVALID_MODULE_PATH } = config_1.STRINGS;
|
|
34
|
+
/**
|
|
35
|
+
* Imports module by given `path`.
|
|
36
|
+
*/
|
|
37
|
+
const importModuleFrom = async (path) => {
|
|
38
|
+
try {
|
|
39
|
+
const module = await Promise.resolve(`${path}`).then(s => __importStar(require(s)));
|
|
40
|
+
return module;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
throw new ModuleInitializationError(INVALID_MODULE_PATH(path));
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Imports `module` from given `path`, then checks if it's `ModelPluginInterface` extension.
|
|
48
|
+
*/
|
|
49
|
+
const importAndVerifyModule = async (method, path) => {
|
|
50
|
+
const pluginModule = await importModuleFrom(path);
|
|
51
|
+
return pluginModule[method];
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Checks if plugin is missing then rejects with error.
|
|
55
|
+
* Then checks if `path` is starting with github, then grabs the repository name.
|
|
56
|
+
* Imports module, then checks if it's a valid plugin.
|
|
57
|
+
*/
|
|
58
|
+
const handModule = (method, path) => {
|
|
59
|
+
if (path === 'builtin') {
|
|
60
|
+
path = pathLib.normalize(`${__dirname}/../models`);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
if (path?.startsWith(GITHUB_PATH)) {
|
|
64
|
+
const parts = path.split('/');
|
|
65
|
+
path = parts[parts.length - 1];
|
|
66
|
+
}
|
|
67
|
+
if (!path.includes(NATIVE_PLUGIN)) {
|
|
68
|
+
logger_1.logger.warn(NOT_NATIVE_PLUGIN);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return importAndVerifyModule(method, path);
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Initializes plugin with global config.
|
|
75
|
+
*/
|
|
76
|
+
const initPlugin = async (initPluginParams) => {
|
|
77
|
+
const { method, path, 'global-config': globalConfig } = initPluginParams;
|
|
78
|
+
if (!method) {
|
|
79
|
+
throw new PluginCredentialError(MISSING_METHOD);
|
|
80
|
+
}
|
|
81
|
+
if (!path) {
|
|
82
|
+
throw new PluginCredentialError(MISSING_PATH);
|
|
83
|
+
}
|
|
84
|
+
const plugin = await handModule(method, path);
|
|
85
|
+
return plugin(globalConfig);
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Registers all plugins from `manifest`.`initalize` property.
|
|
89
|
+
*/
|
|
90
|
+
const initalize = async (plugins) => {
|
|
91
|
+
const storage = {};
|
|
92
|
+
for await (const pluginName of Object.keys(plugins)) {
|
|
93
|
+
storage[pluginName] = await initPlugin(plugins[pluginName]);
|
|
94
|
+
}
|
|
95
|
+
return storage;
|
|
96
|
+
};
|
|
97
|
+
exports.initalize = initalize;
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW5pdGlhbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdDQUFpQztBQUVqQywyQ0FBc0M7QUFDdEMsMkNBQXNDO0FBRXRDLHNDQUEwQztBQU0xQyxNQUFNLEVBQUMseUJBQXlCLEVBQUUscUJBQXFCLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFbEUsTUFBTSxFQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDNUMsTUFBTSxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsR0FDMUUsZ0JBQU8sQ0FBQztBQUVWOztHQUVHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDOUMsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLHlCQUFhLElBQUksdUNBQUMsQ0FBQztRQUVsQyxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxNQUFNLElBQUkseUJBQXlCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNoRTtBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFFLElBQVksRUFBRSxFQUFFO0lBQ25FLE1BQU0sWUFBWSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEQsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBYyxFQUFFLElBQVksRUFBRSxFQUFFO0lBQ2xELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN0QixJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsWUFBWSxDQUFDLENBQUM7S0FDcEQ7U0FBTTtRQUNMLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ2pDLGVBQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNoQztLQUNGO0lBRUQsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQ3RCLGdCQUErQixFQUNMLEVBQUU7SUFDNUIsTUFBTSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBQyxHQUFHLGdCQUFnQixDQUFDO0lBRXZFLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLElBQUkscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDakQ7SUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1QsTUFBTSxJQUFJLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQy9DO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRTlDLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0ksTUFBTSxTQUFTLEdBQUcsS0FBSyxFQUM1QixPQUFzQixFQUNHLEVBQUU7SUFDM0IsTUFBTSxPQUFPLEdBQW1CLEVBQUUsQ0FBQztJQUVuQyxJQUFJLEtBQUssRUFBRSxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ25ELE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxNQUFNLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztLQUM3RDtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQVZXLFFBQUEsU0FBUyxhQVVwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoTGliID0gcmVxdWlyZSgncGF0aCcpO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi4vdXRpbC9lcnJvcnMnO1xuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4uL3V0aWwvbG9nZ2VyJztcblxuaW1wb3J0IHtDT05GSUcsIFNUUklOR1N9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7UGx1Z2luSW50ZXJmYWNlfSBmcm9tICcuLi90eXBlcy9pbnRlcmZhY2UnO1xuaW1wb3J0IHtQbHVnaW5zU3RvcmFnZX0gZnJvbSAnLi4vdHlwZXMvaW5pdGlhbGl6ZSc7XG5pbXBvcnQge0dsb2JhbFBsdWdpbnMsIFBsdWdpbk9wdGlvbnN9IGZyb20gJy4uL3R5cGVzL21hbmlmZXN0JztcblxuY29uc3Qge01vZHVsZUluaXRpYWxpemF0aW9uRXJyb3IsIFBsdWdpbkNyZWRlbnRpYWxFcnJvcn0gPSBFUlJPUlM7XG5cbmNvbnN0IHtHSVRIVUJfUEFUSCwgTkFUSVZFX1BMVUdJTn0gPSBDT05GSUc7XG5jb25zdCB7TUlTU0lOR19NRVRIT0QsIE1JU1NJTkdfUEFUSCwgTk9UX05BVElWRV9QTFVHSU4sIElOVkFMSURfTU9EVUxFX1BBVEh9ID1cbiAgU1RSSU5HUztcblxuLyoqXG4gKiBJbXBvcnRzIG1vZHVsZSBieSBnaXZlbiBgcGF0aGAuXG4gKi9cbmNvbnN0IGltcG9ydE1vZHVsZUZyb20gPSBhc3luYyAocGF0aDogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgbW9kdWxlID0gYXdhaXQgaW1wb3J0KHBhdGgpO1xuXG4gICAgcmV0dXJuIG1vZHVsZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgTW9kdWxlSW5pdGlhbGl6YXRpb25FcnJvcihJTlZBTElEX01PRFVMRV9QQVRIKHBhdGgpKTtcbiAgfVxufTtcblxuLyoqXG4gKiBJbXBvcnRzIGBtb2R1bGVgIGZyb20gZ2l2ZW4gYHBhdGhgLCB0aGVuIGNoZWNrcyBpZiBpdCdzIGBNb2RlbFBsdWdpbkludGVyZmFjZWAgZXh0ZW5zaW9uLlxuICovXG5jb25zdCBpbXBvcnRBbmRWZXJpZnlNb2R1bGUgPSBhc3luYyAobWV0aG9kOiBzdHJpbmcsIHBhdGg6IHN0cmluZykgPT4ge1xuICBjb25zdCBwbHVnaW5Nb2R1bGUgPSBhd2FpdCBpbXBvcnRNb2R1bGVGcm9tKHBhdGgpO1xuXG4gIHJldHVybiBwbHVnaW5Nb2R1bGVbbWV0aG9kXTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHBsdWdpbiBpcyBtaXNzaW5nIHRoZW4gcmVqZWN0cyB3aXRoIGVycm9yLlxuICogVGhlbiBjaGVja3MgaWYgYHBhdGhgIGlzIHN0YXJ0aW5nIHdpdGggZ2l0aHViLCB0aGVuIGdyYWJzIHRoZSByZXBvc2l0b3J5IG5hbWUuXG4gKiBJbXBvcnRzIG1vZHVsZSwgdGhlbiBjaGVja3MgaWYgaXQncyBhIHZhbGlkIHBsdWdpbi5cbiAqL1xuY29uc3QgaGFuZE1vZHVsZSA9IChtZXRob2Q6IHN0cmluZywgcGF0aDogc3RyaW5nKSA9PiB7XG4gIGlmIChwYXRoID09PSAnYnVpbHRpbicpIHtcbiAgICBwYXRoID0gcGF0aExpYi5ub3JtYWxpemUoYCR7X19kaXJuYW1lfS8uLi9tb2RlbHNgKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAocGF0aD8uc3RhcnRzV2l0aChHSVRIVUJfUEFUSCkpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLycpO1xuICAgICAgcGF0aCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICAgIH1cblxuICAgIGlmICghcGF0aC5pbmNsdWRlcyhOQVRJVkVfUExVR0lOKSkge1xuICAgICAgbG9nZ2VyLndhcm4oTk9UX05BVElWRV9QTFVHSU4pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbXBvcnRBbmRWZXJpZnlNb2R1bGUobWV0aG9kLCBwYXRoKTtcbn07XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgcGx1Z2luIHdpdGggZ2xvYmFsIGNvbmZpZy5cbiAqL1xuY29uc3QgaW5pdFBsdWdpbiA9IGFzeW5jIChcbiAgaW5pdFBsdWdpblBhcmFtczogUGx1Z2luT3B0aW9uc1xuKTogUHJvbWlzZTxQbHVnaW5JbnRlcmZhY2U+ID0+IHtcbiAgY29uc3Qge21ldGhvZCwgcGF0aCwgJ2dsb2JhbC1jb25maWcnOiBnbG9iYWxDb25maWd9ID0gaW5pdFBsdWdpblBhcmFtcztcblxuICBpZiAoIW1ldGhvZCkge1xuICAgIHRocm93IG5ldyBQbHVnaW5DcmVkZW50aWFsRXJyb3IoTUlTU0lOR19NRVRIT0QpO1xuICB9XG5cbiAgaWYgKCFwYXRoKSB7XG4gICAgdGhyb3cgbmV3IFBsdWdpbkNyZWRlbnRpYWxFcnJvcihNSVNTSU5HX1BBVEgpO1xuICB9XG5cbiAgY29uc3QgcGx1Z2luID0gYXdhaXQgaGFuZE1vZHVsZShtZXRob2QsIHBhdGgpO1xuXG4gIHJldHVybiBwbHVnaW4oZ2xvYmFsQ29uZmlnKTtcbn07XG5cbi8qKlxuICogUmVnaXN0ZXJzIGFsbCBwbHVnaW5zIGZyb20gYG1hbmlmZXN0YC5gaW5pdGFsaXplYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGNvbnN0IGluaXRhbGl6ZSA9IGFzeW5jIChcbiAgcGx1Z2luczogR2xvYmFsUGx1Z2luc1xuKTogUHJvbWlzZTxQbHVnaW5zU3RvcmFnZT4gPT4ge1xuICBjb25zdCBzdG9yYWdlOiBQbHVnaW5zU3RvcmFnZSA9IHt9O1xuXG4gIGZvciBhd2FpdCAoY29uc3QgcGx1Z2luTmFtZSBvZiBPYmplY3Qua2V5cyhwbHVnaW5zKSkge1xuICAgIHN0b3JhZ2VbcGx1Z2luTmFtZV0gPSBhd2FpdCBpbml0UGx1Z2luKHBsdWdpbnNbcGx1Z2luTmFtZV0pO1xuICB9XG5cbiAgcmV0dXJuIHN0b3JhZ2U7XG59O1xuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ContextTreeParams } from '../types/load';
|
|
2
|
+
/**
|
|
3
|
+
* Parses manifest file as an object. Checks if parameter file is passed via CLI, then loads it too.
|
|
4
|
+
* Returns context, tree and parameters (either the default one, or from CLI).
|
|
5
|
+
*/
|
|
6
|
+
export declare const load: (inputPath: string, paramPath?: string) => Promise<ContextTreeParams>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.load = void 0;
|
|
4
|
+
const validations_1 = require("../util/validations");
|
|
5
|
+
const yaml_1 = require("../util/yaml");
|
|
6
|
+
const json_1 = require("../util/json");
|
|
7
|
+
const config_1 = require("../config");
|
|
8
|
+
/**
|
|
9
|
+
* Parses manifest file as an object. Checks if parameter file is passed via CLI, then loads it too.
|
|
10
|
+
* Returns context, tree and parameters (either the default one, or from CLI).
|
|
11
|
+
*/
|
|
12
|
+
const load = async (inputPath, paramPath) => {
|
|
13
|
+
const safeManifest = await (0, yaml_1.openYamlFileAsObject)(inputPath);
|
|
14
|
+
const { name, description, tags, params, aggregation, initialize, tree } = (0, validations_1.validateManifest)(safeManifest);
|
|
15
|
+
const parametersFromCli = paramPath && (await (0, json_1.readAndParseJson)(paramPath)); // todo: validate json
|
|
16
|
+
const parameters = parametersFromCli || config_1.PARAMETERS;
|
|
17
|
+
return {
|
|
18
|
+
tree,
|
|
19
|
+
context: { name, description, tags, params, aggregation, initialize },
|
|
20
|
+
parameters,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
exports.load = load;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBcUQ7QUFDckQsdUNBQWtEO0FBQ2xELHVDQUE4QztBQUU5QyxzQ0FBcUM7QUFNckM7OztHQUdHO0FBQ0ksTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixTQUFpQixFQUNqQixTQUFrQixFQUNVLEVBQUU7SUFDOUIsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLDJCQUFvQixFQUFXLFNBQVMsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUMsR0FDcEUsSUFBQSw4QkFBZ0IsRUFBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxNQUFNLGlCQUFpQixHQUNyQixTQUFTLElBQUksQ0FBQyxNQUFNLElBQUEsdUJBQWdCLEVBQWEsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtJQUN0RixNQUFNLFVBQVUsR0FBRyxpQkFBaUIsSUFBSSxtQkFBVSxDQUFDO0lBRW5ELE9BQU87UUFDTCxJQUFJO1FBQ0osT0FBTyxFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUM7UUFDbkUsVUFBVTtLQUNYLENBQUM7QUFDSixDQUFDLENBQUM7QUFoQlcsUUFBQSxJQUFJLFFBZ0JmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt2YWxpZGF0ZU1hbmlmZXN0fSBmcm9tICcuLi91dGlsL3ZhbGlkYXRpb25zJztcbmltcG9ydCB7b3BlbllhbWxGaWxlQXNPYmplY3R9IGZyb20gJy4uL3V0aWwveWFtbCc7XG5pbXBvcnQge3JlYWRBbmRQYXJzZUpzb259IGZyb20gJy4uL3V0aWwvanNvbic7XG5cbmltcG9ydCB7UEFSQU1FVEVSU30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHtNYW5pZmVzdH0gZnJvbSAnLi4vdHlwZXMvbWFuaWZlc3QnO1xuaW1wb3J0IHtDb250ZXh0VHJlZVBhcmFtc30gZnJvbSAnLi4vdHlwZXMvbG9hZCc7XG5pbXBvcnQge1BhcmFtZXRlcnN9IGZyb20gJy4uL3R5cGVzL3BhcmFtZXRlcnMnO1xuXG4vKipcbiAqIFBhcnNlcyBtYW5pZmVzdCBmaWxlIGFzIGFuIG9iamVjdC4gQ2hlY2tzIGlmIHBhcmFtZXRlciBmaWxlIGlzIHBhc3NlZCB2aWEgQ0xJLCB0aGVuIGxvYWRzIGl0IHRvby5cbiAqIFJldHVybnMgY29udGV4dCwgdHJlZSBhbmQgcGFyYW1ldGVycyAoZWl0aGVyIHRoZSBkZWZhdWx0IG9uZSwgb3IgZnJvbSBDTEkpLlxuICovXG5leHBvcnQgY29uc3QgbG9hZCA9IGFzeW5jIChcbiAgaW5wdXRQYXRoOiBzdHJpbmcsXG4gIHBhcmFtUGF0aD86IHN0cmluZ1xuKTogUHJvbWlzZTxDb250ZXh0VHJlZVBhcmFtcz4gPT4ge1xuICBjb25zdCBzYWZlTWFuaWZlc3QgPSBhd2FpdCBvcGVuWWFtbEZpbGVBc09iamVjdDxNYW5pZmVzdD4oaW5wdXRQYXRoKTtcbiAgY29uc3Qge25hbWUsIGRlc2NyaXB0aW9uLCB0YWdzLCBwYXJhbXMsIGFnZ3JlZ2F0aW9uLCBpbml0aWFsaXplLCB0cmVlfSA9XG4gICAgdmFsaWRhdGVNYW5pZmVzdChzYWZlTWFuaWZlc3QpO1xuICBjb25zdCBwYXJhbWV0ZXJzRnJvbUNsaSA9XG4gICAgcGFyYW1QYXRoICYmIChhd2FpdCByZWFkQW5kUGFyc2VKc29uPFBhcmFtZXRlcnM+KHBhcmFtUGF0aCkpOyAvLyB0b2RvOiB2YWxpZGF0ZSBqc29uXG4gIGNvbnN0IHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbUNsaSB8fCBQQVJBTUVURVJTO1xuXG4gIHJldHVybiB7XG4gICAgdHJlZSxcbiAgICBjb250ZXh0OiB7bmFtZSwgZGVzY3JpcHRpb24sIHRhZ3MsIHBhcmFtcywgYWdncmVnYXRpb24sIGluaXRpYWxpemV9LFxuICAgIHBhcmFtZXRlcnMsXG4gIH07XG59O1xuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parameterize = void 0;
|
|
4
|
+
const logger_1 = require("../util/logger");
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const { REJECTING_OVERRIDE } = config_1.STRINGS;
|
|
7
|
+
/**
|
|
8
|
+
* Parameters manager. Provides get aggregation method and combine functionality.
|
|
9
|
+
*/
|
|
10
|
+
const Parametrize = () => {
|
|
11
|
+
let parametersStorage = {};
|
|
12
|
+
/**
|
|
13
|
+
* Returns aggregation method for given `unitName`. If doesn't exist then returns value `sum`.
|
|
14
|
+
*/
|
|
15
|
+
const getAggregationMethod = (unitName) => {
|
|
16
|
+
if (`${unitName}` in parametersStorage) {
|
|
17
|
+
return config_1.PARAMETERS[unitName].aggregation;
|
|
18
|
+
}
|
|
19
|
+
return 'sum';
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Checks if additional parameters are provided in context.
|
|
23
|
+
* If so, then checks if they are coincident with default ones and exits with warning message.
|
|
24
|
+
* Otherwise appends context based parameters to defaults.
|
|
25
|
+
*/
|
|
26
|
+
const combine = (contextParameters, parameters) => {
|
|
27
|
+
if (contextParameters) {
|
|
28
|
+
contextParameters.forEach((param) => {
|
|
29
|
+
if (`${param.name}` in parameters) {
|
|
30
|
+
logger_1.logger.warn(REJECTING_OVERRIDE);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const { description, unit, aggregation, name } = param;
|
|
34
|
+
parameters[name] = {
|
|
35
|
+
description,
|
|
36
|
+
unit,
|
|
37
|
+
aggregation,
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
parametersStorage = parameters;
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
combine,
|
|
45
|
+
getAggregationMethod,
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
exports.parameterize = Parametrize();
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9wYXJhbWV0ZXJpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXNDO0FBRXRDLHNDQUE4QztBQUk5QyxNQUFNLEVBQUMsa0JBQWtCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXJDOztHQUVHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFO0lBQ3ZCLElBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBRTNCOztPQUVHO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUNoRCxJQUFJLEdBQUcsUUFBUSxFQUFFLElBQUksaUJBQWlCLEVBQUU7WUFDdEMsT0FBTyxtQkFBVSxDQUFDLFFBQW1DLENBQUMsQ0FBQyxXQUFXLENBQUM7U0FDcEU7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxNQUFNLE9BQU8sR0FBRyxDQUNkLGlCQUF5RCxFQUN6RCxVQUFlLEVBQ2YsRUFBRTtRQUNGLElBQUksaUJBQWlCLEVBQUU7WUFDckIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksVUFBVSxFQUFFO29CQUNqQyxlQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBRWhDLE9BQU87aUJBQ1I7Z0JBRUQsTUFBTSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBQyxHQUFHLEtBQUssQ0FBQztnQkFFckQsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHO29CQUNqQixXQUFXO29CQUNYLElBQUk7b0JBQ0osV0FBVztpQkFDWixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELGlCQUFpQixHQUFHLFVBQVUsQ0FBQztJQUNqQyxDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsT0FBTztRQUNQLG9CQUFvQjtLQUNyQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRVcsUUFBQSxZQUFZLEdBQUcsV0FBVyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vdXRpbC9sb2dnZXInO1xuXG5pbXBvcnQge1NUUklOR1MsIFBBUkFNRVRFUlN9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7TWFuaWZlc3RQYXJhbWV0ZXJ9IGZyb20gJy4uL3R5cGVzL3BhcmFtZXRlcnMnO1xuXG5jb25zdCB7UkVKRUNUSU5HX09WRVJSSURFfSA9IFNUUklOR1M7XG5cbi8qKlxuICogUGFyYW1ldGVycyBtYW5hZ2VyLiBQcm92aWRlcyBnZXQgYWdncmVnYXRpb24gbWV0aG9kIGFuZCBjb21iaW5lIGZ1bmN0aW9uYWxpdHkuXG4gKi9cbmNvbnN0IFBhcmFtZXRyaXplID0gKCkgPT4ge1xuICBsZXQgcGFyYW1ldGVyc1N0b3JhZ2UgPSB7fTtcblxuICAvKipcbiAgICogUmV0dXJucyBhZ2dyZWdhdGlvbiBtZXRob2QgZm9yIGdpdmVuIGB1bml0TmFtZWAuIElmIGRvZXNuJ3QgZXhpc3QgdGhlbiByZXR1cm5zIHZhbHVlIGBzdW1gLlxuICAgKi9cbiAgY29uc3QgZ2V0QWdncmVnYXRpb25NZXRob2QgPSAodW5pdE5hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChgJHt1bml0TmFtZX1gIGluIHBhcmFtZXRlcnNTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gUEFSQU1FVEVSU1t1bml0TmFtZSBhcyBrZXlvZiB0eXBlb2YgUEFSQU1FVEVSU10uYWdncmVnYXRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuICdzdW0nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZCBpbiBjb250ZXh0LlxuICAgKiBJZiBzbywgdGhlbiBjaGVja3MgaWYgdGhleSBhcmUgY29pbmNpZGVudCB3aXRoIGRlZmF1bHQgb25lcyBhbmQgZXhpdHMgd2l0aCB3YXJuaW5nIG1lc3NhZ2UuXG4gICAqIE90aGVyd2lzZSBhcHBlbmRzIGNvbnRleHQgYmFzZWQgcGFyYW1ldGVycyB0byBkZWZhdWx0cy5cbiAgICovXG4gIGNvbnN0IGNvbWJpbmUgPSAoXG4gICAgY29udGV4dFBhcmFtZXRlcnM6IE1hbmlmZXN0UGFyYW1ldGVyW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIHBhcmFtZXRlcnM6IGFueVxuICApID0+IHtcbiAgICBpZiAoY29udGV4dFBhcmFtZXRlcnMpIHtcbiAgICAgIGNvbnRleHRQYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGAke3BhcmFtLm5hbWV9YCBpbiBwYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oUkVKRUNUSU5HX09WRVJSSURFKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtkZXNjcmlwdGlvbiwgdW5pdCwgYWdncmVnYXRpb24sIG5hbWV9ID0gcGFyYW07XG5cbiAgICAgICAgcGFyYW1ldGVyc1tuYW1lXSA9IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICB1bml0LFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGFyYW1ldGVyc1N0b3JhZ2UgPSBwYXJhbWV0ZXJzO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY29tYmluZSxcbiAgICBnZXRBZ2dyZWdhdGlvbk1ldGhvZCxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJhbWV0ZXJpemUgPSBQYXJhbWV0cml6ZSgpO1xuIl19
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ExportCsv = void 0;
|
|
27
|
+
const fs = __importStar(require("fs/promises"));
|
|
28
|
+
const errors_1 = require("../util/errors");
|
|
29
|
+
const { WriteFileError, CliInputError } = errors_1.ERRORS;
|
|
30
|
+
const ExportCsv = () => {
|
|
31
|
+
/**
|
|
32
|
+
* handle a tree leaf, where there are no child nodes, by adding it as key->value pair to the flat map
|
|
33
|
+
* and capturing key as a header
|
|
34
|
+
*/
|
|
35
|
+
const handleLeafValue = (value, fullPath, key, flatMap, headers) => {
|
|
36
|
+
if (fullPath.includes('outputs')) {
|
|
37
|
+
headers.add(key);
|
|
38
|
+
flatMap[fullPath] = value;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* handle a tree node, recursively traverse the children and append their results to the flat map and captured headers
|
|
43
|
+
*/
|
|
44
|
+
const handleNodeValue = (value, fullPath, flatMap, headers) => {
|
|
45
|
+
const [subFlatMap, subHeaders] = extractFlatMapAndHeaders(value, fullPath);
|
|
46
|
+
if (Object.keys(subFlatMap).length > 0) {
|
|
47
|
+
Object.entries(subFlatMap).forEach(([subKey, value]) => {
|
|
48
|
+
flatMap[subKey] = value;
|
|
49
|
+
});
|
|
50
|
+
subHeaders.forEach(subHeader => {
|
|
51
|
+
headers.add(subHeader);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Handles a key at the top level of the tree
|
|
57
|
+
*/
|
|
58
|
+
const handleKey = (value, key, prefix, flatMap, headers) => {
|
|
59
|
+
const fullPath = prefix ? `${prefix}.${key}` : key;
|
|
60
|
+
if (value !== null && typeof value === 'object') {
|
|
61
|
+
return handleNodeValue(value, fullPath, flatMap, headers);
|
|
62
|
+
}
|
|
63
|
+
return handleLeafValue(value, fullPath, key, flatMap, headers);
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* qrecursively extract a flat map and headers from the hierarcial tree
|
|
67
|
+
*/
|
|
68
|
+
const extractFlatMapAndHeaders = (tree, prefix = '') => {
|
|
69
|
+
const headers = new Set();
|
|
70
|
+
const flatMap = [];
|
|
71
|
+
for (const key in tree) {
|
|
72
|
+
if (key in tree) {
|
|
73
|
+
handleKey(tree[key], key, prefix, flatMap, headers);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return [flatMap, headers];
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* extract the id of the key, that is removing the last token (which is the index).
|
|
80
|
+
* in this manner, multiple keys that identical besides their index share the same id.
|
|
81
|
+
*/
|
|
82
|
+
const extractIdHelper = (key) => {
|
|
83
|
+
const parts = key.split('.');
|
|
84
|
+
parts.pop();
|
|
85
|
+
return parts.join('.');
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* generate a CSV formatted string based on a flat key->value map, headers and ids
|
|
89
|
+
*/
|
|
90
|
+
const getCsvString = (map, headers, ids) => {
|
|
91
|
+
const csvRows = [];
|
|
92
|
+
csvRows.push(['id', ...headers].join(','));
|
|
93
|
+
ids.forEach(id => {
|
|
94
|
+
const rowData = [id];
|
|
95
|
+
headers.forEach(header => {
|
|
96
|
+
const value = map[`${id}.${header}`] ?? '';
|
|
97
|
+
rowData.push(value.toString());
|
|
98
|
+
});
|
|
99
|
+
csvRows.push(rowData.join(','));
|
|
100
|
+
});
|
|
101
|
+
return csvRows.join('\n');
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* write the given string content to a file at the provided path
|
|
105
|
+
*/
|
|
106
|
+
const writeOutputFile = async (content, outputPath) => {
|
|
107
|
+
try {
|
|
108
|
+
await fs.writeFile(`${outputPath}.csv`, content);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
throw new WriteFileError(`Failed to write CSV to ${outputPath}: ${error}`);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* export the provided tree content to a CSV file, represented in a flat structure
|
|
116
|
+
*/
|
|
117
|
+
const execute = async (tree, _context, outputPath) => {
|
|
118
|
+
if (!outputPath) {
|
|
119
|
+
throw new CliInputError('Output path is required.');
|
|
120
|
+
}
|
|
121
|
+
const [extractredFlatMap, extractedHeaders] = extractFlatMapAndHeaders(tree);
|
|
122
|
+
const ids = new Set(Object.keys(extractredFlatMap).map(key => extractIdHelper(key)));
|
|
123
|
+
const csvString = getCsvString(extractredFlatMap, extractedHeaders, ids);
|
|
124
|
+
writeOutputFile(csvString, outputPath);
|
|
125
|
+
};
|
|
126
|
+
return { execute };
|
|
127
|
+
};
|
|
128
|
+
exports.ExportCsv = ExportCsv;
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWNzdi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbHMvZXhwb3J0LWNzdi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUFrQztBQUVsQywyQ0FBc0M7QUFLdEMsTUFBTSxFQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFeEMsTUFBTSxTQUFTLEdBQUcsR0FBMkIsRUFBRTtJQUNwRDs7O09BR0c7SUFDSCxNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsR0FBUSxFQUNSLE9BQTZCLEVBQzdCLE9BQW9CLEVBQ3BCLEVBQUU7UUFDRixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsT0FBNEIsRUFDNUIsT0FBb0IsRUFDcEIsRUFBRTtRQUNGLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTNFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDckQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztZQUVILFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxTQUFTLEdBQUcsQ0FDaEIsS0FBVSxFQUNWLEdBQVEsRUFDUixNQUFjLEVBQ2QsT0FBNEIsRUFDNUIsT0FBb0IsRUFDcEIsRUFBRTtRQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUVuRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQy9DLE9BQU8sZUFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzNEO1FBRUQsT0FBTyxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSx3QkFBd0IsR0FBRyxDQUMvQixJQUFTLEVBQ1QsTUFBTSxHQUFHLEVBQUUsRUFDeUIsRUFBRTtRQUN0QyxNQUFNLE9BQU8sR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFDO1FBRXhDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDZixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3JEO1NBQ0Y7UUFFRCxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBVyxFQUFVLEVBQUU7UUFDOUMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFWixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLFlBQVksR0FBRyxDQUNuQixHQUF5QixFQUN6QixPQUFvQixFQUNwQixHQUFnQixFQUNSLEVBQUU7UUFDVixNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTNDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDZixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXJCLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLE9BQWUsRUFBRSxVQUFrQixFQUFFLEVBQUU7UUFDcEUsSUFBSTtZQUNGLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2xEO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLElBQUksY0FBYyxDQUN0QiwwQkFBMEIsVUFBVSxLQUFLLEtBQUssRUFBRSxDQUNqRCxDQUFDO1NBQ0g7SUFDSCxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxJQUFTLEVBQUUsUUFBaUIsRUFBRSxVQUFrQixFQUFFLEVBQUU7UUFDekUsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE1BQU0sSUFBSSxhQUFhLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUNyRDtRQUVELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxHQUN6Qyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNoRSxDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXpFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDO0lBRUYsT0FBTyxFQUFDLE9BQU8sRUFBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQWpKVyxRQUFBLFNBQVMsYUFpSnBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi4vdXRpbC9lcnJvcnMnO1xuXG5pbXBvcnQge0V4aGF1c3RQbHVnaW5JbnRlcmZhY2V9IGZyb20gJy4uL3R5cGVzL2V4aGF1c3QtcGx1Z2luLWludGVyZmFjZSc7XG5pbXBvcnQge0NvbnRleHR9IGZyb20gJy4uL3R5cGVzL21hbmlmZXN0JztcblxuY29uc3Qge1dyaXRlRmlsZUVycm9yLCBDbGlJbnB1dEVycm9yfSA9IEVSUk9SUztcblxuZXhwb3J0IGNvbnN0IEV4cG9ydENzdiA9ICgpOiBFeGhhdXN0UGx1Z2luSW50ZXJmYWNlID0+IHtcbiAgLyoqXG4gICAqIGhhbmRsZSBhIHRyZWUgbGVhZiwgd2hlcmUgdGhlcmUgYXJlIG5vIGNoaWxkIG5vZGVzLCBieSBhZGRpbmcgaXQgYXMga2V5LT52YWx1ZSBwYWlyIHRvIHRoZSBmbGF0IG1hcFxuICAgKiBhbmQgY2FwdHVyaW5nIGtleSBhcyBhIGhlYWRlclxuICAgKi9cbiAgY29uc3QgaGFuZGxlTGVhZlZhbHVlID0gKFxuICAgIHZhbHVlOiBhbnksXG4gICAgZnVsbFBhdGg6IHN0cmluZyxcbiAgICBrZXk6IGFueSxcbiAgICBmbGF0TWFwOiB7W2tleTogc3RyaW5nXTogYW55fSxcbiAgICBoZWFkZXJzOiBTZXQ8c3RyaW5nPlxuICApID0+IHtcbiAgICBpZiAoZnVsbFBhdGguaW5jbHVkZXMoJ291dHB1dHMnKSkge1xuICAgICAgaGVhZGVycy5hZGQoa2V5KTtcbiAgICAgIGZsYXRNYXBbZnVsbFBhdGhdID0gdmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBoYW5kbGUgYSB0cmVlIG5vZGUsIHJlY3Vyc2l2ZWx5IHRyYXZlcnNlIHRoZSBjaGlsZHJlbiBhbmQgYXBwZW5kIHRoZWlyIHJlc3VsdHMgdG8gdGhlIGZsYXQgbWFwIGFuZCBjYXB0dXJlZCBoZWFkZXJzXG4gICAqL1xuICBjb25zdCBoYW5kbGVOb2RlVmFsdWUgPSAoXG4gICAgdmFsdWU6IGFueSxcbiAgICBmdWxsUGF0aDogc3RyaW5nLFxuICAgIGZsYXRNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgaGVhZGVyczogU2V0PHN0cmluZz5cbiAgKSA9PiB7XG4gICAgY29uc3QgW3N1YkZsYXRNYXAsIHN1YkhlYWRlcnNdID0gZXh0cmFjdEZsYXRNYXBBbmRIZWFkZXJzKHZhbHVlLCBmdWxsUGF0aCk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoc3ViRmxhdE1hcCkubGVuZ3RoID4gMCkge1xuICAgICAgT2JqZWN0LmVudHJpZXMoc3ViRmxhdE1hcCkuZm9yRWFjaCgoW3N1YktleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGZsYXRNYXBbc3ViS2V5XSA9IHZhbHVlO1xuICAgICAgfSk7XG5cbiAgICAgIHN1YkhlYWRlcnMuZm9yRWFjaChzdWJIZWFkZXIgPT4ge1xuICAgICAgICBoZWFkZXJzLmFkZChzdWJIZWFkZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGEga2V5IGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHRyZWVcbiAgICovXG4gIGNvbnN0IGhhbmRsZUtleSA9IChcbiAgICB2YWx1ZTogYW55LFxuICAgIGtleTogYW55LFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIGZsYXRNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgaGVhZGVyczogU2V0PHN0cmluZz5cbiAgKSA9PiB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBwcmVmaXggPyBgJHtwcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGhhbmRsZU5vZGVWYWx1ZSh2YWx1ZSwgZnVsbFBhdGgsIGZsYXRNYXAsIGhlYWRlcnMpO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGVMZWFmVmFsdWUodmFsdWUsIGZ1bGxQYXRoLCBrZXksIGZsYXRNYXAsIGhlYWRlcnMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBxcmVjdXJzaXZlbHkgZXh0cmFjdCBhIGZsYXQgbWFwIGFuZCBoZWFkZXJzIGZyb20gdGhlIGhpZXJhcmNpYWwgdHJlZVxuICAgKi9cbiAgY29uc3QgZXh0cmFjdEZsYXRNYXBBbmRIZWFkZXJzID0gKFxuICAgIHRyZWU6IGFueSxcbiAgICBwcmVmaXggPSAnJ1xuICApOiBbUmVjb3JkPHN0cmluZywgYW55PiwgU2V0PHN0cmluZz5dID0+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCBmbGF0TWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0cmVlKSB7XG4gICAgICBpZiAoa2V5IGluIHRyZWUpIHtcbiAgICAgICAgaGFuZGxlS2V5KHRyZWVba2V5XSwga2V5LCBwcmVmaXgsIGZsYXRNYXAsIGhlYWRlcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbZmxhdE1hcCwgaGVhZGVyc107XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3QgdGhlIGlkIG9mIHRoZSBrZXksIHRoYXQgaXMgcmVtb3ZpbmcgdGhlIGxhc3QgdG9rZW4gKHdoaWNoIGlzIHRoZSBpbmRleCkuXG4gICAqIGluIHRoaXMgbWFubmVyLCBtdWx0aXBsZSBrZXlzIHRoYXQgaWRlbnRpY2FsIGJlc2lkZXMgdGhlaXIgaW5kZXggc2hhcmUgdGhlIHNhbWUgaWQuXG4gICAqL1xuICBjb25zdCBleHRyYWN0SWRIZWxwZXIgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHBhcnRzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgcGFydHMucG9wKCk7XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignLicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZSBhIENTViBmb3JtYXR0ZWQgc3RyaW5nIGJhc2VkIG9uIGEgZmxhdCBrZXktPnZhbHVlIG1hcCwgaGVhZGVycyBhbmQgaWRzXG4gICAqL1xuICBjb25zdCBnZXRDc3ZTdHJpbmcgPSAoXG4gICAgbWFwOiB7W2tleTogc3RyaW5nXTogYW55fSxcbiAgICBoZWFkZXJzOiBTZXQ8c3RyaW5nPixcbiAgICBpZHM6IFNldDxzdHJpbmc+XG4gICk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgY3N2Um93czogc3RyaW5nW10gPSBbXTtcbiAgICBjc3ZSb3dzLnB1c2goWydpZCcsIC4uLmhlYWRlcnNdLmpvaW4oJywnKSk7XG5cbiAgICBpZHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCByb3dEYXRhID0gW2lkXTtcblxuICAgICAgaGVhZGVycy5mb3JFYWNoKGhlYWRlciA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbWFwW2Ake2lkfS4ke2hlYWRlcn1gXSA/PyAnJztcbiAgICAgICAgcm93RGF0YS5wdXNoKHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgfSk7XG4gICAgICBjc3ZSb3dzLnB1c2gocm93RGF0YS5qb2luKCcsJykpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNzdlJvd3Muam9pbignXFxuJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHdyaXRlIHRoZSBnaXZlbiBzdHJpbmcgY29udGVudCB0byBhIGZpbGUgYXQgdGhlIHByb3ZpZGVkIHBhdGhcbiAgICovXG4gIGNvbnN0IHdyaXRlT3V0cHV0RmlsZSA9IGFzeW5jIChjb250ZW50OiBzdHJpbmcsIG91dHB1dFBhdGg6IHN0cmluZykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUoYCR7b3V0cHV0UGF0aH0uY3N2YCwgY29udGVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBXcml0ZUZpbGVFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byB3cml0ZSBDU1YgdG8gJHtvdXRwdXRQYXRofTogJHtlcnJvcn1gXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogZXhwb3J0IHRoZSBwcm92aWRlZCB0cmVlIGNvbnRlbnQgdG8gYSBDU1YgZmlsZSwgcmVwcmVzZW50ZWQgaW4gYSBmbGF0IHN0cnVjdHVyZVxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IGFzeW5jICh0cmVlOiBhbnksIF9jb250ZXh0OiBDb250ZXh0LCBvdXRwdXRQYXRoOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIW91dHB1dFBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBDbGlJbnB1dEVycm9yKCdPdXRwdXQgcGF0aCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBbZXh0cmFjdHJlZEZsYXRNYXAsIGV4dHJhY3RlZEhlYWRlcnNdID1cbiAgICAgIGV4dHJhY3RGbGF0TWFwQW5kSGVhZGVycyh0cmVlKTtcbiAgICBjb25zdCBpZHMgPSBuZXcgU2V0KFxuICAgICAgT2JqZWN0LmtleXMoZXh0cmFjdHJlZEZsYXRNYXApLm1hcChrZXkgPT4gZXh0cmFjdElkSGVscGVyKGtleSkpXG4gICAgKTtcbiAgICBjb25zdCBjc3ZTdHJpbmcgPSBnZXRDc3ZTdHJpbmcoZXh0cmFjdHJlZEZsYXRNYXAsIGV4dHJhY3RlZEhlYWRlcnMsIGlkcyk7XG5cbiAgICB3cml0ZU91dHB1dEZpbGUoY3N2U3RyaW5nLCBvdXRwdXRQYXRoKTtcbiAgfTtcblxuICByZXR1cm4ge2V4ZWN1dGV9O1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExportLog = void 0;
|
|
4
|
+
const ExportLog = () => {
|
|
5
|
+
/**
|
|
6
|
+
* Logs output manifest in console.
|
|
7
|
+
*/
|
|
8
|
+
const execute = async (tree, context) => {
|
|
9
|
+
const outputFile = {
|
|
10
|
+
...context,
|
|
11
|
+
tree,
|
|
12
|
+
};
|
|
13
|
+
console.log(JSON.stringify(outputFile, null, 2));
|
|
14
|
+
};
|
|
15
|
+
return { execute };
|
|
16
|
+
};
|
|
17
|
+
exports.ExportLog = ExportLog;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbHMvZXhwb3J0LWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFTyxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUU7SUFDNUI7O09BRUc7SUFDSCxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBUyxFQUFFLE9BQWdCLEVBQUUsRUFBRTtRQUNwRCxNQUFNLFVBQVUsR0FBRztZQUNqQixHQUFHLE9BQU87WUFDVixJQUFJO1NBQ0wsQ0FBQztRQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDO0lBRUYsT0FBTyxFQUFDLE9BQU8sRUFBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQWRXLFFBQUEsU0FBUyxhQWNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udGV4dH0gZnJvbSAnLi4vdHlwZXMvbWFuaWZlc3QnO1xuXG5leHBvcnQgY29uc3QgRXhwb3J0TG9nID0gKCkgPT4ge1xuICAvKipcbiAgICogTG9ncyBvdXRwdXQgbWFuaWZlc3QgaW4gY29uc29sZS5cbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSBhc3luYyAodHJlZTogYW55LCBjb250ZXh0OiBDb250ZXh0KSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0RmlsZSA9IHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICB0cmVlLFxuICAgIH07XG5cbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShvdXRwdXRGaWxlLCBudWxsLCAyKSk7XG4gIH07XG5cbiAgcmV0dXJuIHtleGVjdXRlfTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExportYaml = void 0;
|
|
4
|
+
const yaml_1 = require("../util/yaml");
|
|
5
|
+
const errors_1 = require("../util/errors");
|
|
6
|
+
const { CliInputError } = errors_1.ERRORS;
|
|
7
|
+
const ExportYaml = () => {
|
|
8
|
+
/**
|
|
9
|
+
* Saves output file in YAML format.
|
|
10
|
+
*/
|
|
11
|
+
const execute = async (tree, context, outputPath) => {
|
|
12
|
+
if (!outputPath) {
|
|
13
|
+
throw new CliInputError('Output path is required.');
|
|
14
|
+
}
|
|
15
|
+
const outputFile = {
|
|
16
|
+
...context,
|
|
17
|
+
tree,
|
|
18
|
+
};
|
|
19
|
+
await (0, yaml_1.saveYamlFileAs)(outputFile, `${outputPath}.yaml`);
|
|
20
|
+
};
|
|
21
|
+
return { execute };
|
|
22
|
+
};
|
|
23
|
+
exports.ExportYaml = ExportYaml;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXlhbWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWxzL2V4cG9ydC15YW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUE0QztBQUU1QywyQ0FBc0M7QUFJdEMsTUFBTSxFQUFDLGFBQWEsRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUV4QixNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUU7SUFDN0I7O09BRUc7SUFDSCxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBUyxFQUFFLE9BQWdCLEVBQUUsVUFBa0IsRUFBRSxFQUFFO1FBQ3hFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixNQUFNLElBQUksYUFBYSxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDckQ7UUFFRCxNQUFNLFVBQVUsR0FBRztZQUNqQixHQUFHLE9BQU87WUFDVixJQUFJO1NBQ0wsQ0FBQztRQUVGLE1BQU0sSUFBQSxxQkFBYyxFQUFDLFVBQVUsRUFBRSxHQUFHLFVBQVUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDO0lBRUYsT0FBTyxFQUFDLE9BQU8sRUFBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQWxCVyxRQUFBLFVBQVUsY0FrQnJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzYXZlWWFtbEZpbGVBc30gZnJvbSAnLi4vdXRpbC95YW1sJztcblxuaW1wb3J0IHtFUlJPUlN9IGZyb20gJy4uL3V0aWwvZXJyb3JzJztcblxuaW1wb3J0IHtDb250ZXh0fSBmcm9tICcuLi90eXBlcy9tYW5pZmVzdCc7XG5cbmNvbnN0IHtDbGlJbnB1dEVycm9yfSA9IEVSUk9SUztcblxuZXhwb3J0IGNvbnN0IEV4cG9ydFlhbWwgPSAoKSA9PiB7XG4gIC8qKlxuICAgKiBTYXZlcyBvdXRwdXQgZmlsZSBpbiBZQU1MIGZvcm1hdC5cbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSBhc3luYyAodHJlZTogYW55LCBjb250ZXh0OiBDb250ZXh0LCBvdXRwdXRQYXRoOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIW91dHB1dFBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBDbGlJbnB1dEVycm9yKCdPdXRwdXQgcGF0aCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXRGaWxlID0ge1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIHRyZWUsXG4gICAgfTtcblxuICAgIGF3YWl0IHNhdmVZYW1sRmlsZUFzKG91dHB1dEZpbGUsIGAke291dHB1dFBhdGh9LnlhbWxgKTtcbiAgfTtcblxuICByZXR1cm4ge2V4ZWN1dGV9O1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PluginParams } from '../types/interface';
|
|
2
|
+
import { GroupByConfig } from '../types/group-by';
|
|
3
|
+
/**
|
|
4
|
+
* Plugin for inputs grouping.
|
|
5
|
+
*/
|
|
6
|
+
export declare const GroupBy: () => {
|
|
7
|
+
metadata: {
|
|
8
|
+
kind: string;
|
|
9
|
+
};
|
|
10
|
+
execute: (inputs: PluginParams[], config: GroupByConfig) => any;
|
|
11
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GroupBy = void 0;
|
|
4
|
+
const errors_1 = require("../util/errors");
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const { InvalidGrouping } = errors_1.ERRORS;
|
|
7
|
+
const { INVALID_GROUP_BY } = config_1.STRINGS;
|
|
8
|
+
/**
|
|
9
|
+
* Plugin for inputs grouping.
|
|
10
|
+
*/
|
|
11
|
+
const GroupBy = () => {
|
|
12
|
+
const metadata = {
|
|
13
|
+
kind: 'groupby',
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Creates structure to insert inputs by groups.
|
|
17
|
+
*/
|
|
18
|
+
const appendGroup = (value, object, groups) => {
|
|
19
|
+
if (groups.length > 0) {
|
|
20
|
+
const group = groups.shift();
|
|
21
|
+
object.children = object.children ?? {};
|
|
22
|
+
object.children[group] = object.children[group] ?? {};
|
|
23
|
+
if (groups.length === 0) {
|
|
24
|
+
if (object.children[group].inputs &&
|
|
25
|
+
object.children[group].inputs.length > 0) {
|
|
26
|
+
object.children[group].inputs.push(value);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
object.children[group].inputs = [value];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
appendGroup(value, object.children[group], groups);
|
|
33
|
+
}
|
|
34
|
+
return object;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Interates over inputs, grabs config-group types values for each one.
|
|
38
|
+
* Based on grouping types, initializes the structure grouped structure.
|
|
39
|
+
*/
|
|
40
|
+
const execute = (inputs, config) => inputs.reduce((acc, input) => {
|
|
41
|
+
const groups = config.group.map(groupType => {
|
|
42
|
+
if (!input[groupType]) {
|
|
43
|
+
throw new InvalidGrouping(INVALID_GROUP_BY(groupType));
|
|
44
|
+
}
|
|
45
|
+
return input[groupType];
|
|
46
|
+
});
|
|
47
|
+
acc = {
|
|
48
|
+
...acc,
|
|
49
|
+
...appendGroup(input, acc, groups),
|
|
50
|
+
};
|
|
51
|
+
return acc;
|
|
52
|
+
}, {}).children;
|
|
53
|
+
return { metadata, execute };
|
|
54
|
+
};
|
|
55
|
+
exports.GroupBy = GroupBy;
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWxzL2dyb3VwLWJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUFzQztBQUV0QyxzQ0FBa0M7QUFLbEMsTUFBTSxFQUFDLGVBQWUsRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUVqQyxNQUFNLEVBQUMsZ0JBQWdCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRW5DOztHQUVHO0FBQ0ksTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO0lBQzFCLE1BQU0sUUFBUSxHQUFHO1FBQ2YsSUFBSSxFQUFFLFNBQVM7S0FDaEIsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxXQUFXLEdBQUcsQ0FDbEIsS0FBbUIsRUFDbkIsTUFBVyxFQUNYLE1BQWdCLEVBQ1gsRUFBRTtRQUNQLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBWSxDQUFDO1lBRXZDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUV0RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUN2QixJQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTTtvQkFDN0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDeEM7b0JBQ0EsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUMzQztxQkFBTTtvQkFDTCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN6QzthQUNGO1lBRUQsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFzQixFQUFFLE1BQXFCLEVBQUUsRUFBRSxDQUNoRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3JCLE1BQU0sSUFBSSxlQUFlLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUN4RDtZQUVELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsR0FBRyxHQUFHO1lBQ0osR0FBRyxHQUFHO1lBQ04sR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUM7U0FDbkMsQ0FBQztRQUVGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUV6QixPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQTNEVyxRQUFBLE9BQU8sV0EyRGxCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFUlJPUlN9IGZyb20gJy4uL3V0aWwvZXJyb3JzJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi9jb25maWcnO1xuXG5pbXBvcnQge1BsdWdpblBhcmFtc30gZnJvbSAnLi4vdHlwZXMvaW50ZXJmYWNlJztcbmltcG9ydCB7R3JvdXBCeUNvbmZpZ30gZnJvbSAnLi4vdHlwZXMvZ3JvdXAtYnknO1xuXG5jb25zdCB7SW52YWxpZEdyb3VwaW5nfSA9IEVSUk9SUztcblxuY29uc3Qge0lOVkFMSURfR1JPVVBfQll9ID0gU1RSSU5HUztcblxuLyoqXG4gKiBQbHVnaW4gZm9yIGlucHV0cyBncm91cGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdyb3VwQnkgPSAoKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgIGtpbmQ6ICdncm91cGJ5JyxcbiAgfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBzdHJ1Y3R1cmUgdG8gaW5zZXJ0IGlucHV0cyBieSBncm91cHMuXG4gICAqL1xuICBjb25zdCBhcHBlbmRHcm91cCA9IChcbiAgICB2YWx1ZTogUGx1Z2luUGFyYW1zLFxuICAgIG9iamVjdDogYW55LFxuICAgIGdyb3Vwczogc3RyaW5nW11cbiAgKTogYW55ID0+IHtcbiAgICBpZiAoZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzLnNoaWZ0KCkgYXMgc3RyaW5nO1xuXG4gICAgICBvYmplY3QuY2hpbGRyZW4gPSBvYmplY3QuY2hpbGRyZW4gPz8ge307XG4gICAgICBvYmplY3QuY2hpbGRyZW5bZ3JvdXBdID0gb2JqZWN0LmNoaWxkcmVuW2dyb3VwXSA/PyB7fTtcblxuICAgICAgaWYgKGdyb3Vwcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9iamVjdC5jaGlsZHJlbltncm91cF0uaW5wdXRzICYmXG4gICAgICAgICAgb2JqZWN0LmNoaWxkcmVuW2dyb3VwXS5pbnB1dHMubGVuZ3RoID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICBvYmplY3QuY2hpbGRyZW5bZ3JvdXBdLmlucHV0cy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmplY3QuY2hpbGRyZW5bZ3JvdXBdLmlucHV0cyA9IFt2YWx1ZV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXBwZW5kR3JvdXAodmFsdWUsIG9iamVjdC5jaGlsZHJlbltncm91cF0sIGdyb3Vwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcblxuICAvKipcbiAgICogSW50ZXJhdGVzIG92ZXIgaW5wdXRzLCBncmFicyBjb25maWctZ3JvdXAgdHlwZXMgdmFsdWVzIGZvciBlYWNoIG9uZS5cbiAgICogQmFzZWQgb24gZ3JvdXBpbmcgdHlwZXMsIGluaXRpYWxpemVzIHRoZSBzdHJ1Y3R1cmUgZ3JvdXBlZCBzdHJ1Y3R1cmUuXG4gICAqL1xuICBjb25zdCBleGVjdXRlID0gKGlucHV0czogUGx1Z2luUGFyYW1zW10sIGNvbmZpZzogR3JvdXBCeUNvbmZpZykgPT5cbiAgICBpbnB1dHMucmVkdWNlKChhY2MsIGlucHV0KSA9PiB7XG4gICAgICBjb25zdCBncm91cHMgPSBjb25maWcuZ3JvdXAubWFwKGdyb3VwVHlwZSA9PiB7XG4gICAgICAgIGlmICghaW5wdXRbZ3JvdXBUeXBlXSkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkR3JvdXBpbmcoSU5WQUxJRF9HUk9VUF9CWShncm91cFR5cGUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnB1dFtncm91cFR5cGVdO1xuICAgICAgfSk7XG5cbiAgICAgIGFjYyA9IHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICAuLi5hcHBlbmRHcm91cChpbnB1dCwgYWNjLCBncm91cHMpLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBhbnkpLmNoaWxkcmVuO1xuXG4gIHJldHVybiB7bWV0YWRhdGEsIGV4ZWN1dGV9O1xufTtcbiJdfQ==
|
package/build/models/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { GroupBy } from './group-by';
|
|
2
|
+
export { TimeSync } from './time-sync';
|
package/build/models/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.TimeSync = exports.GroupBy = void 0;
|
|
4
|
+
var group_by_1 = require("./group-by");
|
|
5
|
+
Object.defineProperty(exports, "GroupBy", { enumerable: true, get: function () { return group_by_1.GroupBy; } });
|
|
4
6
|
var time_sync_1 = require("./time-sync");
|
|
5
|
-
Object.defineProperty(exports, "
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
Object.defineProperty(exports, "TimeSync", { enumerable: true, get: function () { return time_sync_1.TimeSync; } });
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUFtQztBQUEzQixtR0FBQSxPQUFPLE9BQUE7QUFDZix5Q0FBcUM7QUFBN0IscUdBQUEsUUFBUSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtHcm91cEJ5fSBmcm9tICcuL2dyb3VwLWJ5JztcbmV4cG9ydCB7VGltZVN5bmN9IGZyb20gJy4vdGltZS1zeW5jJztcbiJdfQ==
|
|
@@ -1,55 +1,3 @@
|
|
|
1
|
-
import { ModelParams, ModelPluginInterface } from '../types/model-interface';
|
|
2
1
|
import { TimeNormalizerConfig } from '../types/time-sync';
|
|
3
|
-
import {
|
|
4
|
-
export declare
|
|
5
|
-
startTime: string | undefined;
|
|
6
|
-
endTime: string | undefined;
|
|
7
|
-
dealer: UnitsDealerUsage;
|
|
8
|
-
interval: number;
|
|
9
|
-
/**
|
|
10
|
-
* Setups basic configuration.
|
|
11
|
-
*/
|
|
12
|
-
configure(params: TimeNormalizerConfig): Promise<ModelPluginInterface>;
|
|
13
|
-
/**
|
|
14
|
-
* Validates `startTime`, `endTime` and `interval` params.
|
|
15
|
-
*/
|
|
16
|
-
private validateParams;
|
|
17
|
-
/**
|
|
18
|
-
* Calculates minimal factor.
|
|
19
|
-
*/
|
|
20
|
-
private convertPerInterval;
|
|
21
|
-
/**
|
|
22
|
-
* Normalize time per given second.
|
|
23
|
-
*/
|
|
24
|
-
private normalizeTimePerSecond;
|
|
25
|
-
/**
|
|
26
|
-
* Barkes down input per minimal time unit.
|
|
27
|
-
*/
|
|
28
|
-
private breakDownInput;
|
|
29
|
-
/**
|
|
30
|
-
* Populates object to fill the gaps in observational timeline using zeroish values.
|
|
31
|
-
*/
|
|
32
|
-
private fillWithZeroishInput;
|
|
33
|
-
/**
|
|
34
|
-
* Checks if padding is needed either at start of the timeline or the end and returns status.
|
|
35
|
-
*/
|
|
36
|
-
private checkForPadding;
|
|
37
|
-
/**
|
|
38
|
-
* Iterates over given inputs frame, meanwhile checking if aggregation method is `sum`, then calculates it.
|
|
39
|
-
* For methods is `avg` and `none` calculating average of the frame.
|
|
40
|
-
*/
|
|
41
|
-
private resampleInputFrame;
|
|
42
|
-
/**
|
|
43
|
-
* Takes each array frame with interval length, then aggregating them together as from units.yaml file.
|
|
44
|
-
*/
|
|
45
|
-
private resampleInputs;
|
|
46
|
-
/**
|
|
47
|
-
* Pads zeroish inputs from the beginning or at the end of the inputs if needed.
|
|
48
|
-
*/
|
|
49
|
-
private padInputs;
|
|
50
|
-
private trimInputsByGlobalTimeline;
|
|
51
|
-
/**
|
|
52
|
-
* Normalizes provided time window according to time configuration.
|
|
53
|
-
*/
|
|
54
|
-
execute(inputs: ModelParams[]): Promise<ModelParams[]>;
|
|
55
|
-
}
|
|
2
|
+
import { PluginInterface } from '../types/interface';
|
|
3
|
+
export declare const TimeSync: (globalConfig: TimeNormalizerConfig) => PluginInterface;
|