@grnsft/if 0.1.7 → 0.1.9
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/config/config.d.ts +0 -2
- package/build/config/config.js +6 -3
- 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 +5 -0
- package/build/config/strings.js +6 -1
- package/build/index.js +48 -18
- package/build/lib/aggregator.d.ts +7 -0
- package/build/lib/aggregator.js +46 -0
- package/build/lib/models-universe.d.ts +5 -1
- package/build/lib/models-universe.js +37 -5
- package/build/lib/supercomputer.d.ts +14 -12
- package/build/lib/supercomputer.js +55 -87
- package/build/models/time-sync.d.ts +8 -5
- package/build/models/time-sync.js +35 -12
- package/build/types/aggregator.d.ts +3 -0
- package/build/types/aggregator.js +5 -0
- package/build/types/impl.d.ts +65 -18
- package/build/types/impl.js +17 -3
- package/build/types/model-interface.d.ts +1 -2
- package/build/types/model-interface.js +1 -1
- package/build/types/models-universe.d.ts +2 -5
- package/build/types/models-universe.js +1 -1
- package/build/types/parameters.d.ts +16 -0
- package/build/types/parameters.js +5 -0
- package/build/types/process-args.d.ts +1 -0
- package/build/types/process-args.js +1 -1
- package/build/types/time-sync.d.ts +1 -0
- package/build/types/time-sync.js +1 -1
- package/build/util/args.d.ts +1 -0
- package/build/util/args.js +27 -3
- package/build/util/param-selectors.d.ts +5 -0
- package/build/util/param-selectors.js +14 -0
- package/build/util/validations.d.ts +11 -5
- package/build/util/validations.js +17 -25
- package/build/util/yaml.js +27 -4
- package/examples/impls/test/aggregation-test.yml +19 -19
- package/examples/impls/test/aggregation-test2.yml +52 -0
- package/examples/impls/test/{azure.yml → azure-importer.yml} +8 -10
- package/examples/impls/test/boavizta.yml +27 -0
- package/examples/impls/test/cim.yml +19 -0
- package/examples/impls/test/e-mem.yml +19 -0
- package/examples/impls/test/if-demo.yml +0 -2
- package/examples/impls/test/large-impl.yml +30031 -30031
- package/examples/impls/test/nesting.yml +93 -42
- package/examples/impls/test/new-params-test.yml +35 -0
- package/examples/impls/test/sci.yml +3 -3
- package/examples/impls/test/shell.yml +5 -5
- package/examples/impls/test/teads-cpu.yml +18 -0
- package/examples/impls/test/time-sync-avoid-padding.yml +50 -0
- package/examples/impls/test/time-sync.yml +14 -13
- package/examples/ompls/aggregation-test2.yml +83 -0
- package/examples/ompls/{azure.yml → azure-importer.yml} +40 -40
- package/examples/ompls/boavizta.yml +32 -0
- package/examples/ompls/cim.yml +29 -0
- package/examples/ompls/e-mem.yml +26 -0
- package/examples/ompls/nesting.yml +91 -85
- package/examples/ompls/sci.yml +6 -5
- package/examples/ompls/shell.yml +7 -7
- package/examples/ompls/teads-cpu.yml +24 -0
- package/jest.config.js +1 -1
- package/package.json +1 -1
- package/src/models/README.md +3 -1
- package/build/config/units.yaml +0 -112
- package/build/lib/planet-aggregator.d.ts +0 -6
- package/build/lib/planet-aggregator.js +0 -35
- package/build/types/helpers.d.ts +0 -1
- package/build/types/helpers.js +0 -3
- package/build/types/planet-aggregator.d.ts +0 -6
- package/build/types/planet-aggregator.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 -396
- 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 -256
- 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 -196
- 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 -244
- package/coverage/lcov-report/lib/supercomputer.ts.html +0 -712
- package/coverage/lcov-report/models/index.html +0 -131
- package/coverage/lcov-report/models/index.ts.html +0 -88
- package/coverage/lcov-report/models/time-sync.ts.html +0 -1153
- 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 -666
- package/src/config/units.yaml +0 -112
- package/tsconfig.build.tsbuildinfo +0 -1
package/build/config/config.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { ArgumentConfig } from 'ts-command-line-args';
|
|
2
2
|
import { impactProcessArgs } from '../types/process-args';
|
|
3
3
|
export declare const CONFIG: {
|
|
4
|
-
AGGREGATION_METRICS: string[];
|
|
5
|
-
AGGREGATION_METHODS: string[];
|
|
6
4
|
impact: {
|
|
7
5
|
ARGS: ArgumentConfig<impactProcessArgs>;
|
|
8
6
|
HELP: string;
|
package/build/config/config.js
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CONFIG = void 0;
|
|
4
4
|
exports.CONFIG = {
|
|
5
|
-
AGGREGATION_METRICS: ['carbon', 'energy'],
|
|
6
|
-
AGGREGATION_METHODS: ['sum', 'avg'],
|
|
7
5
|
impact: {
|
|
8
6
|
ARGS: {
|
|
9
7
|
impl: {
|
|
@@ -17,6 +15,11 @@ exports.CONFIG = {
|
|
|
17
15
|
optional: true,
|
|
18
16
|
description: 'Path to the output IMPL file where the results as saved, if none is provided it prints to stdout.',
|
|
19
17
|
},
|
|
18
|
+
'override-params': {
|
|
19
|
+
type: String,
|
|
20
|
+
optional: true,
|
|
21
|
+
description: 'Path to a parameter file that overrides our defaults.',
|
|
22
|
+
},
|
|
20
23
|
format: {
|
|
21
24
|
type: String,
|
|
22
25
|
optional: true,
|
|
@@ -51,4 +54,4 @@ exports.CONFIG = {
|
|
|
51
54
|
GITHUB_PATH: 'https://github.com',
|
|
52
55
|
NATIVE_MODEL: 'if-models',
|
|
53
56
|
};
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSWEsUUFBQSxNQUFNLEdBQUc7SUFDcEIsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSw2QkFBNkI7YUFDM0M7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLElBQUk7Z0JBQ2QsV0FBVyxFQUNULG1HQUFtRzthQUN0RztZQUNELGlCQUFpQixFQUFFO2dCQUNqQixJQUFJLEVBQUUsTUFBTTtnQkFDWixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQUUsdURBQXVEO2FBQ3JFO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFdBQVcsRUFDVCw2SUFBNkk7Z0JBQy9JLFlBQVksRUFBRSxNQUFNO2FBQ3JCO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFdBQVcsRUFDVCwwRkFBMEY7YUFDN0Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLE9BQU87Z0JBQ2IsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsV0FBVyxFQUFFLDBCQUEwQjthQUN4QztTQUNtQztRQUN0QyxJQUFJLEVBQUU7Ozs7Ozs7Ozs7O0dBV1A7S0FDQTtJQUNELFdBQVcsRUFBRSxvQkFBb0I7SUFDakMsWUFBWSxFQUFFLFdBQVc7Q0FDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJndW1lbnRDb25maWd9IGZyb20gJ3RzLWNvbW1hbmQtbGluZS1hcmdzJztcblxuaW1wb3J0IHtpbXBhY3RQcm9jZXNzQXJnc30gZnJvbSAnLi4vdHlwZXMvcHJvY2Vzcy1hcmdzJztcblxuZXhwb3J0IGNvbnN0IENPTkZJRyA9IHtcbiAgaW1wYWN0OiB7XG4gICAgQVJHUzoge1xuICAgICAgaW1wbDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2knLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYW4gaW5wdXQgSU1QTCBmaWxlLicsXG4gICAgICB9LFxuICAgICAgb21wbDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnUGF0aCB0byB0aGUgb3V0cHV0IElNUEwgZmlsZSB3aGVyZSB0aGUgcmVzdWx0cyBhcyBzYXZlZCwgaWYgbm9uZSBpcyBwcm92aWRlZCBpdCBwcmludHMgdG8gc3Rkb3V0LicsXG4gICAgICB9LFxuICAgICAgJ292ZXJyaWRlLXBhcmFtcyc6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGEgcGFyYW1ldGVyIGZpbGUgdGhhdCBvdmVycmlkZXMgb3VyIGRlZmF1bHRzLicsXG4gICAgICB9LFxuICAgICAgZm9ybWF0OiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICdUaGUgb3V0cHV0IGZpbGUgZm9ybWF0LiBkZWZhdWx0IHRvIHlhbWwgYnV0IGlmIGNzdiBpcyBzcGVjaWZpZWQgdGhlbiBpdCBmb3JtYXRzIHRoZSBvdXRwdXRzIGFzIGEgY3N2IGZpbGUgZm9yIGxvYWRpbmcgaW50byBhbm90aGVyIHByb2dyYW0uJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAneWFtbCcsXG4gICAgICB9LFxuICAgICAgdmVyYm9zZToge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ0hvdyBtdWNoIGluZm9ybWF0aW9uIHRvIG91dHB1dCBhYm91dCB0aGUgY2FsY3VsYXRpb24gdG8gYWlkIGludmVzdGlnYXRpb24gYW5kIGRlYnVnZ2luZy4nLFxuICAgICAgfSxcbiAgICAgIGhlbHA6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnaCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnRzIHRoaXMgdXNhZ2UgZ3VpZGUuJyxcbiAgICAgIH0sXG4gICAgfSBhcyBBcmd1bWVudENvbmZpZzxpbXBhY3RQcm9jZXNzQXJncz4sXG4gICAgSEVMUDogYGltcGFjdCBcbiAgLWltcGwgW3BhdGggdG8gdGhlIGlucHV0IGltcGwgZmlsZV1cbiAgLW9tcGwgW3BhdGggdG8gdGhlIG91dHB1dCBpbXBsIGZpbGVdXG4gIC1mb3JtYXQgW3lhbWx8Y3N2XSBcbiAgLXZlcmJvc2VcbiAgLWhlbHAgXG4gIGltcGw6IHBhdGggdG8gYW4gaW5wdXQgSU1QTCBmaWxlXG4gIG9tcGw6IHBhdGggdG8gdGhlIG91dHB1dCBJTVBMIGZpbGUgd2hlcmUgdGhlIHJlc3VsdHMgYXMgc2F2ZWQsIGlmIG5vbmUgaXMgcHJvdmlkZWQgaXQgcHJpbnRzIHRvIHN0ZG91dC5cbiAgZm9ybWF0OiB0aGUgb3V0cHV0IGZpbGUgZm9ybWF0LiBkZWZhdWx0IHRvIHlhbWwgYnV0IGlmIGNzdiBpcyBzcGVjaWZpZWQgdGhlbiBpdCBmb3JtYXRzIHRoZSBvdXRwdXRzIGFzIGEgY3N2IGZpbGUgZm9yIGxvYWRpbmcgaW50byBhbm90aGVyIHByb2dyYW0uXG4gIHZlcmJvc2U6IGhvdyBtdWNoIGluZm9ybWF0aW9uIHRvIG91dHB1dCBhYm91dCB0aGUgY2FsY3VsYXRpb24gdG8gYWlkIGludmVzdGlnYXRpb24gYW5kIGRlYnVnZ2luZy5cbiAgaGVscDogcHJpbnRzIG91dCB0aGUgYWJvdmUgaGVscCBpbnN0cnVjdGlvbi5cbiAgYCxcbiAgfSxcbiAgR0lUSFVCX1BBVEg6ICdodHRwczovL2dpdGh1Yi5jb20nLFxuICBOQVRJVkVfTU9ERUw6ICdpZi1tb2RlbHMnLFxufTtcbiJdfQ==
|
package/build/config/index.d.ts
CHANGED
package/build/config/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.STRINGS = exports.CONFIG = void 0;
|
|
3
|
+
exports.PARAMETERS = exports.STRINGS = exports.CONFIG = void 0;
|
|
4
4
|
var config_1 = require("./config");
|
|
5
5
|
Object.defineProperty(exports, "CONFIG", { enumerable: true, get: function () { return config_1.CONFIG; } });
|
|
6
6
|
var strings_1 = require("./strings");
|
|
7
7
|
Object.defineProperty(exports, "STRINGS", { enumerable: true, get: function () { return strings_1.STRINGS; } });
|
|
8
|
-
|
|
8
|
+
var params_1 = require("./params");
|
|
9
|
+
Object.defineProperty(exports, "PARAMETERS", { enumerable: true, get: function () { return params_1.PARAMETERS; } });
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFnQztBQUF4QixnR0FBQSxNQUFNLE9BQUE7QUFDZCxxQ0FBa0M7QUFBMUIsa0dBQUEsT0FBTyxPQUFBO0FBQ2YsbUNBQW9DO0FBQTVCLG9HQUFBLFVBQVUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7Q09ORklHfSBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQge1NUUklOR1N9IGZyb20gJy4vc3RyaW5ncyc7XG5leHBvcnQge1BBUkFNRVRFUlN9IGZyb20gJy4vcGFyYW1zJztcbiJdfQ==
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PARAMETERS = void 0;
|
|
4
|
+
exports.PARAMETERS = {
|
|
5
|
+
carbon: {
|
|
6
|
+
description: 'an amount of carbon emitted into the atmosphere',
|
|
7
|
+
unit: 'gCO2e',
|
|
8
|
+
aggregation: 'sum',
|
|
9
|
+
},
|
|
10
|
+
'core-units': {
|
|
11
|
+
description: 'number of cores available',
|
|
12
|
+
unit: 'cores',
|
|
13
|
+
aggregation: 'none',
|
|
14
|
+
},
|
|
15
|
+
'cpu-util': {
|
|
16
|
+
description: 'refers to CPU utilization.',
|
|
17
|
+
unit: 'percentage',
|
|
18
|
+
aggregation: 'avg',
|
|
19
|
+
},
|
|
20
|
+
'disk-io': {
|
|
21
|
+
description: 'refers to GB of data written/read from disk',
|
|
22
|
+
unit: 'GB',
|
|
23
|
+
aggregation: 'sum',
|
|
24
|
+
},
|
|
25
|
+
duration: {
|
|
26
|
+
description: 'refers to the duration of the input',
|
|
27
|
+
unit: 'seconds',
|
|
28
|
+
aggregation: 'sum',
|
|
29
|
+
},
|
|
30
|
+
energy: {
|
|
31
|
+
description: 'amount of energy utilised by the component',
|
|
32
|
+
unit: 'kWh',
|
|
33
|
+
aggregation: 'sum',
|
|
34
|
+
},
|
|
35
|
+
'energy-cpu': {
|
|
36
|
+
description: 'Energy consumed by the CPU of the component',
|
|
37
|
+
unit: 'kWh',
|
|
38
|
+
aggregation: 'sum',
|
|
39
|
+
},
|
|
40
|
+
'expected-lifespan': {
|
|
41
|
+
description: 'Total Expected Lifespan of the Component in Seconds',
|
|
42
|
+
unit: 'seconds',
|
|
43
|
+
aggregation: 'sum',
|
|
44
|
+
},
|
|
45
|
+
'energy-memory': {
|
|
46
|
+
description: 'Energy consumed by the Memory of the component',
|
|
47
|
+
unit: 'kWh',
|
|
48
|
+
aggregation: 'sum',
|
|
49
|
+
},
|
|
50
|
+
'embodied-carbon': {
|
|
51
|
+
description: 'Embodied Emissions of the component',
|
|
52
|
+
unit: 'gCO2e',
|
|
53
|
+
aggregation: 'sum',
|
|
54
|
+
},
|
|
55
|
+
'energy-network': {
|
|
56
|
+
description: 'Energy consumed by the Network of the component',
|
|
57
|
+
unit: 'kWh',
|
|
58
|
+
aggregation: 'sum',
|
|
59
|
+
},
|
|
60
|
+
'functional-unit': {
|
|
61
|
+
description: 'the name of the functional unit in which the final SCI value should be expressed, e.g. requests, users',
|
|
62
|
+
unit: 'none',
|
|
63
|
+
aggregation: 'sum',
|
|
64
|
+
},
|
|
65
|
+
'functional-unit-time': {
|
|
66
|
+
description: 'string describing the unit of time in which the final SCI calculation should be expressed, e.g. "1-min"',
|
|
67
|
+
unit: 'none',
|
|
68
|
+
aggregation: 'none',
|
|
69
|
+
},
|
|
70
|
+
'gpu-util': {
|
|
71
|
+
description: 'refers to CPU utilization.',
|
|
72
|
+
unit: 'percentage',
|
|
73
|
+
aggregation: 'avg',
|
|
74
|
+
},
|
|
75
|
+
'grid-carbon-intensity': {
|
|
76
|
+
description: 'Carbon intensity for the grid',
|
|
77
|
+
unit: 'gCO2eq/kWh',
|
|
78
|
+
aggregation: 'avg',
|
|
79
|
+
},
|
|
80
|
+
'instance-type': {
|
|
81
|
+
description: 'Type of Cloud Instance name used in the cloud provider APIs',
|
|
82
|
+
unit: 'None',
|
|
83
|
+
aggregation: 'none',
|
|
84
|
+
},
|
|
85
|
+
location: {
|
|
86
|
+
description: 'Geographic location of provider as string (for watt-time model it is provided as latitude and longitude, comma separated, in decimal degrees)',
|
|
87
|
+
unit: 'None (decimal degrees for watt-time model)',
|
|
88
|
+
aggregation: 'none',
|
|
89
|
+
},
|
|
90
|
+
'operational-carbon': {
|
|
91
|
+
description: 'Operational Emissions of the component',
|
|
92
|
+
unit: 'gCO2e',
|
|
93
|
+
aggregation: 'sum',
|
|
94
|
+
},
|
|
95
|
+
'physical-processor': {
|
|
96
|
+
description: 'Name of the physical processor',
|
|
97
|
+
unit: 'None',
|
|
98
|
+
aggregation: 'none',
|
|
99
|
+
},
|
|
100
|
+
vendor: {
|
|
101
|
+
description: 'Name of the cloud service provider in the ccf model. Can be aws, gcp or azure',
|
|
102
|
+
unit: 'None',
|
|
103
|
+
aggregation: 'none',
|
|
104
|
+
},
|
|
105
|
+
'ram-alloc': {
|
|
106
|
+
description: 'refers to GB of memory allocated.',
|
|
107
|
+
unit: 'GB',
|
|
108
|
+
aggregation: 'avg',
|
|
109
|
+
},
|
|
110
|
+
'ram-util': {
|
|
111
|
+
description: 'refers to percentage of memory utilized.',
|
|
112
|
+
unit: 'percentage',
|
|
113
|
+
aggregation: 'avg',
|
|
114
|
+
},
|
|
115
|
+
'resources-reserved': {
|
|
116
|
+
description: 'resources reserved for an application',
|
|
117
|
+
unit: 'count',
|
|
118
|
+
aggregation: 'none',
|
|
119
|
+
},
|
|
120
|
+
'thermal-design-power': {
|
|
121
|
+
description: 'thermal design power for a processor',
|
|
122
|
+
unit: 'kwh',
|
|
123
|
+
aggregation: 'avg',
|
|
124
|
+
},
|
|
125
|
+
'total-embodied-emissions': {
|
|
126
|
+
description: 'total embodied emissions of some component',
|
|
127
|
+
unit: 'gCO2e',
|
|
128
|
+
aggregation: 'sum',
|
|
129
|
+
},
|
|
130
|
+
timestamp: {
|
|
131
|
+
description: 'refers to the time of occurrence of the input',
|
|
132
|
+
unit: 'RFC3339',
|
|
133
|
+
aggregation: 'none',
|
|
134
|
+
},
|
|
135
|
+
'time-reserved': {
|
|
136
|
+
description: 'time reserved for a component',
|
|
137
|
+
unit: 'seconds',
|
|
138
|
+
aggregation: 'avg',
|
|
139
|
+
},
|
|
140
|
+
'total-resources': {
|
|
141
|
+
description: 'total resources available',
|
|
142
|
+
unit: 'count',
|
|
143
|
+
aggregation: 'none',
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9wYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSxVQUFVLEdBQWU7SUFDcEMsTUFBTSxFQUFFO1FBQ04sV0FBVyxFQUFFLGlEQUFpRDtRQUM5RCxJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSxLQUFLO0tBQ25CO0lBQ0QsWUFBWSxFQUFFO1FBQ1osV0FBVyxFQUFFLDJCQUEyQjtRQUN4QyxJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxJQUFJLEVBQUUsWUFBWTtRQUNsQixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELFNBQVMsRUFBRTtRQUNULFdBQVcsRUFBRSw2Q0FBNkM7UUFDMUQsSUFBSSxFQUFFLElBQUk7UUFDVixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELFFBQVEsRUFBRTtRQUNSLFdBQVcsRUFBRSxxQ0FBcUM7UUFDbEQsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELE1BQU0sRUFBRTtRQUNOLFdBQVcsRUFBRSw0Q0FBNEM7UUFDekQsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELFlBQVksRUFBRTtRQUNaLFdBQVcsRUFBRSw2Q0FBNkM7UUFDMUQsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELG1CQUFtQixFQUFFO1FBQ25CLFdBQVcsRUFBRSxxREFBcUQ7UUFDbEUsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGVBQWUsRUFBRTtRQUNmLFdBQVcsRUFBRSxnREFBZ0Q7UUFDN0QsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLFdBQVcsRUFBRSxxQ0FBcUM7UUFDbEQsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLFdBQVcsRUFBRSxpREFBaUQ7UUFDOUQsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLFdBQVcsRUFDVCx3R0FBd0c7UUFDMUcsSUFBSSxFQUFFLE1BQU07UUFDWixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELHNCQUFzQixFQUFFO1FBQ3RCLFdBQVcsRUFDVCx5R0FBeUc7UUFDM0csSUFBSSxFQUFFLE1BQU07UUFDWixXQUFXLEVBQUUsTUFBTTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUNWLFdBQVcsRUFBRSw0QkFBNEI7UUFDekMsSUFBSSxFQUFFLFlBQVk7UUFDbEIsV0FBVyxFQUFFLEtBQUs7S0FDbkI7SUFDRCx1QkFBdUIsRUFBRTtRQUN2QixXQUFXLEVBQUUsK0JBQStCO1FBQzVDLElBQUksRUFBRSxZQUFZO1FBQ2xCLFdBQVcsRUFBRSxLQUFLO0tBQ25CO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsV0FBVyxFQUFFLDZEQUE2RDtRQUMxRSxJQUFJLEVBQUUsTUFBTTtRQUNaLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsV0FBVyxFQUNULCtJQUErSTtRQUNqSixJQUFJLEVBQUUsNENBQTRDO1FBQ2xELFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDcEIsV0FBVyxFQUFFLHdDQUF3QztRQUNyRCxJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSxLQUFLO0tBQ25CO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDcEIsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxJQUFJLEVBQUUsTUFBTTtRQUNaLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sV0FBVyxFQUNULCtFQUErRTtRQUNqRixJQUFJLEVBQUUsTUFBTTtRQUNaLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsV0FBVyxFQUFFLG1DQUFtQztRQUNoRCxJQUFJLEVBQUUsSUFBSTtRQUNWLFdBQVcsRUFBRSxLQUFLO0tBQ25CO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsV0FBVyxFQUFFLDBDQUEwQztRQUN2RCxJQUFJLEVBQUUsWUFBWTtRQUNsQixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELG9CQUFvQixFQUFFO1FBQ3BCLFdBQVcsRUFBRSx1Q0FBdUM7UUFDcEQsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsTUFBTTtLQUNwQjtJQUNELHNCQUFzQixFQUFFO1FBQ3RCLFdBQVcsRUFBRSxzQ0FBc0M7UUFDbkQsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELDBCQUEwQixFQUFFO1FBQzFCLFdBQVcsRUFBRSw0Q0FBNEM7UUFDekQsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELFNBQVMsRUFBRTtRQUNULFdBQVcsRUFBRSwrQ0FBK0M7UUFDNUQsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsTUFBTTtLQUNwQjtJQUNELGVBQWUsRUFBRTtRQUNmLFdBQVcsRUFBRSwrQkFBK0I7UUFDNUMsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsTUFBTTtLQUNwQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BhcmFtZXRlcnN9IGZyb20gJy4uL3R5cGVzL3BhcmFtZXRlcnMnO1xuXG5leHBvcnQgY29uc3QgUEFSQU1FVEVSUzogUGFyYW1ldGVycyA9IHtcbiAgY2FyYm9uOiB7XG4gICAgZGVzY3JpcHRpb246ICdhbiBhbW91bnQgb2YgY2FyYm9uIGVtaXR0ZWQgaW50byB0aGUgYXRtb3NwaGVyZScsXG4gICAgdW5pdDogJ2dDTzJlJyxcbiAgICBhZ2dyZWdhdGlvbjogJ3N1bScsXG4gIH0sXG4gICdjb3JlLXVuaXRzJzoge1xuICAgIGRlc2NyaXB0aW9uOiAnbnVtYmVyIG9mIGNvcmVzIGF2YWlsYWJsZScsXG4gICAgdW5pdDogJ2NvcmVzJyxcbiAgICBhZ2dyZWdhdGlvbjogJ25vbmUnLFxuICB9LFxuICAnY3B1LXV0aWwnOiB7XG4gICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gQ1BVIHV0aWxpemF0aW9uLicsXG4gICAgdW5pdDogJ3BlcmNlbnRhZ2UnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnYXZnJyxcbiAgfSxcbiAgJ2Rpc2staW8nOiB7XG4gICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gR0Igb2YgZGF0YSB3cml0dGVuL3JlYWQgZnJvbSBkaXNrJyxcbiAgICB1bml0OiAnR0InLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgZHVyYXRpb246IHtcbiAgICBkZXNjcmlwdGlvbjogJ3JlZmVycyB0byB0aGUgZHVyYXRpb24gb2YgdGhlIGlucHV0JyxcbiAgICB1bml0OiAnc2Vjb25kcycsXG4gICAgYWdncmVnYXRpb246ICdzdW0nLFxuICB9LFxuICBlbmVyZ3k6IHtcbiAgICBkZXNjcmlwdGlvbjogJ2Ftb3VudCBvZiBlbmVyZ3kgdXRpbGlzZWQgYnkgdGhlIGNvbXBvbmVudCcsXG4gICAgdW5pdDogJ2tXaCcsXG4gICAgYWdncmVnYXRpb246ICdzdW0nLFxuICB9LFxuICAnZW5lcmd5LWNwdSc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0VuZXJneSBjb25zdW1lZCBieSB0aGUgQ1BVIG9mIHRoZSBjb21wb25lbnQnLFxuICAgIHVuaXQ6ICdrV2gnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgJ2V4cGVjdGVkLWxpZmVzcGFuJzoge1xuICAgIGRlc2NyaXB0aW9uOiAnVG90YWwgRXhwZWN0ZWQgTGlmZXNwYW4gb2YgdGhlIENvbXBvbmVudCBpbiBTZWNvbmRzJyxcbiAgICB1bml0OiAnc2Vjb25kcycsXG4gICAgYWdncmVnYXRpb246ICdzdW0nLFxuICB9LFxuICAnZW5lcmd5LW1lbW9yeSc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0VuZXJneSBjb25zdW1lZCBieSB0aGUgTWVtb3J5IG9mIHRoZSBjb21wb25lbnQnLFxuICAgIHVuaXQ6ICdrV2gnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgJ2VtYm9kaWVkLWNhcmJvbic6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0VtYm9kaWVkIEVtaXNzaW9ucyBvZiB0aGUgY29tcG9uZW50JyxcbiAgICB1bml0OiAnZ0NPMmUnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgJ2VuZXJneS1uZXR3b3JrJzoge1xuICAgIGRlc2NyaXB0aW9uOiAnRW5lcmd5IGNvbnN1bWVkIGJ5IHRoZSBOZXR3b3JrIG9mIHRoZSBjb21wb25lbnQnLFxuICAgIHVuaXQ6ICdrV2gnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgJ2Z1bmN0aW9uYWwtdW5pdCc6IHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICd0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb25hbCB1bml0IGluIHdoaWNoIHRoZSBmaW5hbCBTQ0kgdmFsdWUgc2hvdWxkIGJlIGV4cHJlc3NlZCwgZS5nLiByZXF1ZXN0cywgdXNlcnMnLFxuICAgIHVuaXQ6ICdub25lJyxcbiAgICBhZ2dyZWdhdGlvbjogJ3N1bScsXG4gIH0sXG4gICdmdW5jdGlvbmFsLXVuaXQtdGltZSc6IHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdzdHJpbmcgZGVzY3JpYmluZyB0aGUgdW5pdCBvZiB0aW1lIGluIHdoaWNoIHRoZSBmaW5hbCBTQ0kgY2FsY3VsYXRpb24gc2hvdWxkIGJlIGV4cHJlc3NlZCwgZS5nLiBcIjEtbWluXCInLFxuICAgIHVuaXQ6ICdub25lJyxcbiAgICBhZ2dyZWdhdGlvbjogJ25vbmUnLFxuICB9LFxuICAnZ3B1LXV0aWwnOiB7XG4gICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gQ1BVIHV0aWxpemF0aW9uLicsXG4gICAgdW5pdDogJ3BlcmNlbnRhZ2UnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnYXZnJyxcbiAgfSxcbiAgJ2dyaWQtY2FyYm9uLWludGVuc2l0eSc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0NhcmJvbiBpbnRlbnNpdHkgZm9yIHRoZSBncmlkJyxcbiAgICB1bml0OiAnZ0NPMmVxL2tXaCcsXG4gICAgYWdncmVnYXRpb246ICdhdmcnLFxuICB9LFxuICAnaW5zdGFuY2UtdHlwZSc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1R5cGUgb2YgQ2xvdWQgSW5zdGFuY2UgbmFtZSB1c2VkIGluIHRoZSBjbG91ZCBwcm92aWRlciBBUElzJyxcbiAgICB1bml0OiAnTm9uZScsXG4gICAgYWdncmVnYXRpb246ICdub25lJyxcbiAgfSxcbiAgbG9jYXRpb246IHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdHZW9ncmFwaGljIGxvY2F0aW9uIG9mIHByb3ZpZGVyIGFzIHN0cmluZyAoZm9yIHdhdHQtdGltZSBtb2RlbCBpdCBpcyBwcm92aWRlZCBhcyBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlLCBjb21tYSBzZXBhcmF0ZWQsIGluIGRlY2ltYWwgZGVncmVlcyknLFxuICAgIHVuaXQ6ICdOb25lIChkZWNpbWFsIGRlZ3JlZXMgZm9yIHdhdHQtdGltZSBtb2RlbCknLFxuICAgIGFnZ3JlZ2F0aW9uOiAnbm9uZScsXG4gIH0sXG4gICdvcGVyYXRpb25hbC1jYXJib24nOiB7XG4gICAgZGVzY3JpcHRpb246ICdPcGVyYXRpb25hbCBFbWlzc2lvbnMgb2YgdGhlIGNvbXBvbmVudCcsXG4gICAgdW5pdDogJ2dDTzJlJyxcbiAgICBhZ2dyZWdhdGlvbjogJ3N1bScsXG4gIH0sXG4gICdwaHlzaWNhbC1wcm9jZXNzb3InOiB7XG4gICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBwaHlzaWNhbCBwcm9jZXNzb3InLFxuICAgIHVuaXQ6ICdOb25lJyxcbiAgICBhZ2dyZWdhdGlvbjogJ25vbmUnLFxuICB9LFxuICB2ZW5kb3I6IHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdOYW1lIG9mIHRoZSBjbG91ZCBzZXJ2aWNlIHByb3ZpZGVyIGluIHRoZSBjY2YgbW9kZWwuIENhbiBiZSBhd3MsIGdjcCBvciBhenVyZScsXG4gICAgdW5pdDogJ05vbmUnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnbm9uZScsXG4gIH0sXG4gICdyYW0tYWxsb2MnOiB7XG4gICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gR0Igb2YgbWVtb3J5IGFsbG9jYXRlZC4nLFxuICAgIHVuaXQ6ICdHQicsXG4gICAgYWdncmVnYXRpb246ICdhdmcnLFxuICB9LFxuICAncmFtLXV0aWwnOiB7XG4gICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gcGVyY2VudGFnZSBvZiBtZW1vcnkgdXRpbGl6ZWQuJyxcbiAgICB1bml0OiAncGVyY2VudGFnZScsXG4gICAgYWdncmVnYXRpb246ICdhdmcnLFxuICB9LFxuICAncmVzb3VyY2VzLXJlc2VydmVkJzoge1xuICAgIGRlc2NyaXB0aW9uOiAncmVzb3VyY2VzIHJlc2VydmVkIGZvciBhbiBhcHBsaWNhdGlvbicsXG4gICAgdW5pdDogJ2NvdW50JyxcbiAgICBhZ2dyZWdhdGlvbjogJ25vbmUnLFxuICB9LFxuICAndGhlcm1hbC1kZXNpZ24tcG93ZXInOiB7XG4gICAgZGVzY3JpcHRpb246ICd0aGVybWFsIGRlc2lnbiBwb3dlciBmb3IgYSBwcm9jZXNzb3InLFxuICAgIHVuaXQ6ICdrd2gnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnYXZnJyxcbiAgfSxcbiAgJ3RvdGFsLWVtYm9kaWVkLWVtaXNzaW9ucyc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ3RvdGFsIGVtYm9kaWVkIGVtaXNzaW9ucyBvZiBzb21lIGNvbXBvbmVudCcsXG4gICAgdW5pdDogJ2dDTzJlJyxcbiAgICBhZ2dyZWdhdGlvbjogJ3N1bScsXG4gIH0sXG4gIHRpbWVzdGFtcDoge1xuICAgIGRlc2NyaXB0aW9uOiAncmVmZXJzIHRvIHRoZSB0aW1lIG9mIG9jY3VycmVuY2Ugb2YgdGhlIGlucHV0JyxcbiAgICB1bml0OiAnUkZDMzMzOScsXG4gICAgYWdncmVnYXRpb246ICdub25lJyxcbiAgfSxcbiAgJ3RpbWUtcmVzZXJ2ZWQnOiB7XG4gICAgZGVzY3JpcHRpb246ICd0aW1lIHJlc2VydmVkIGZvciBhIGNvbXBvbmVudCcsXG4gICAgdW5pdDogJ3NlY29uZHMnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnYXZnJyxcbiAgfSxcbiAgJ3RvdGFsLXJlc291cmNlcyc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ3RvdGFsIHJlc291cmNlcyBhdmFpbGFibGUnLFxuICAgIHVuaXQ6ICdjb3VudCcsXG4gICAgYWdncmVnYXRpb246ICdub25lJyxcbiAgfSxcbn07XG4iXX0=
|
|
@@ -4,6 +4,7 @@ export declare const STRINGS: {
|
|
|
4
4
|
IMPL_IS_MISSING: string;
|
|
5
5
|
MISSING_CLASSNAME: string;
|
|
6
6
|
MISSING_PATH: string;
|
|
7
|
+
OVERRIDE_WARNING: string;
|
|
7
8
|
NOT_MODEL_PLUGIN_EXTENSION: string;
|
|
8
9
|
STRUCTURE_MALFORMED: (childName: string) => string;
|
|
9
10
|
NOT_INITIALIZED_MODEL: (className: string) => string;
|
|
@@ -15,5 +16,9 @@ export declare const STRINGS: {
|
|
|
15
16
|
INVALID_MODULE_PATH: (path: string) => string;
|
|
16
17
|
INVALID_TIME_NORMALIZATION: string;
|
|
17
18
|
INVALID_TIME_INTERVAL: string;
|
|
19
|
+
AVOIDING_PADDING: (description: string) => string;
|
|
20
|
+
AVOIDING_PADDING_BY_EDGES: (start: boolean, end: boolean) => string;
|
|
18
21
|
INVALID_OBSERVATION_OVERLAP: string;
|
|
22
|
+
INVALID_AGGREGATION_METHOD: (metric: string) => string;
|
|
23
|
+
METRIC_MISSING: (metric: string, index: number) => string;
|
|
19
24
|
};
|
package/build/config/strings.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.STRINGS = {
|
|
|
6
6
|
IMPL_IS_MISSING: 'Impl file is missing.',
|
|
7
7
|
MISSING_CLASSNAME: "Initalization param 'model' is missing.",
|
|
8
8
|
MISSING_PATH: "Initalization param 'path' is missing.",
|
|
9
|
+
OVERRIDE_WARNING: '\n**WARNING**: You are overriding the IF default parameters file. Please be extremely careful of unintended side-effects in your plugin pipeline!\n',
|
|
9
10
|
NOT_MODEL_PLUGIN_EXTENSION: "Provided model does not extend 'ModelPluginInterface'.",
|
|
10
11
|
STRUCTURE_MALFORMED: (childName) => `Graph is malformed: graph.children.${childName} is not valid.`,
|
|
11
12
|
NOT_INITIALIZED_MODEL: (className) => `You're trying to use not initalized model: ${className}.`,
|
|
@@ -29,6 +30,10 @@ https://github.com/Green-Software-Foundation/if/issues/new?assignees=&labels=fee
|
|
|
29
30
|
INVALID_MODULE_PATH: (path) => `Provided module path: '${path}' is invalid.`,
|
|
30
31
|
INVALID_TIME_NORMALIZATION: 'Start time or end time is missing.',
|
|
31
32
|
INVALID_TIME_INTERVAL: 'Interval is missing.',
|
|
33
|
+
AVOIDING_PADDING: (description) => `Avoiding padding at ${description}`,
|
|
34
|
+
AVOIDING_PADDING_BY_EDGES: (start, end) => `Avoiding padding at ${start && end ? 'start and end' : start ? 'start' : 'end'}`,
|
|
32
35
|
INVALID_OBSERVATION_OVERLAP: 'Observation timestamps overlap.',
|
|
36
|
+
INVALID_AGGREGATION_METHOD: (metric) => `Aggregation is not possible for given ${metric} since method is 'none'.`,
|
|
37
|
+
METRIC_MISSING: (metric, index) => `Aggregation metric ${metric} is not found in inputs[${index}].`,
|
|
33
38
|
};
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFYSxRQUFBLE9BQU8sR0FBRztJQUNyQixnQkFBZ0IsRUFBRSwyQ0FBMkM7SUFDN0QsZUFBZSxFQUFFLHVCQUF1QjtJQUN4QyxpQkFBaUIsRUFBRSx5Q0FBeUM7SUFDNUQsWUFBWSxFQUFFLHdDQUF3QztJQUN0RCxnQkFBZ0IsRUFDZCxxSkFBcUo7SUFDdkosMEJBQTBCLEVBQ3hCLHdEQUF3RDtJQUMxRCxtQkFBbUIsRUFBRSxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUN6QyxzQ0FBc0MsU0FBUyxnQkFBZ0I7SUFDakUscUJBQXFCLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUUsQ0FDM0MsOENBQThDLFNBQVMsR0FBRztJQUM1RCxrQkFBa0IsRUFBRTs7Ozs7Q0FLckI7SUFDQyxnQkFBZ0IsRUFBRTs7OztDQUluQjtJQUNDLGVBQWUsRUFBRSx3REFBd0Q7SUFDekUsY0FBYyxFQUFFOzs7Q0FHakI7SUFDQyx1QkFBdUIsRUFBRSxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUN4RCxtQkFBbUIsTUFBTSxDQUFDLEtBQUssOERBQThELE1BQU0sQ0FBQyxJQUFJLElBQUk7SUFDOUcsbUJBQW1CLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUNwQywwQkFBMEIsSUFBSSxlQUFlO0lBQy9DLDBCQUEwQixFQUFFLG9DQUFvQztJQUNoRSxxQkFBcUIsRUFBRSxzQkFBc0I7SUFDN0MsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFtQixFQUFFLEVBQUUsQ0FDeEMsdUJBQXVCLFdBQVcsRUFBRTtJQUN0Qyx5QkFBeUIsRUFBRSxDQUFDLEtBQWMsRUFBRSxHQUFZLEVBQUUsRUFBRSxDQUMxRCx1QkFDRSxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUNyRCxFQUFFO0lBQ0osMkJBQTJCLEVBQUUsaUNBQWlDO0lBQzlELDBCQUEwQixFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FDN0MseUNBQXlDLE1BQU0sMEJBQTBCO0lBQzNFLGNBQWMsRUFBRSxDQUFDLE1BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUNoRCxzQkFBc0IsTUFBTSwyQkFBMkIsS0FBSyxJQUFJO0NBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsYXNzQ29udGFpbmVyUGFyYW1zfSBmcm9tICcuLi90eXBlcy9tb2RlbHMtdW5pdmVyc2UnO1xuXG5leHBvcnQgY29uc3QgU1RSSU5HUyA9IHtcbiAgRklMRV9JU19OT1RfWUFNTDogJ1Byb3ZpZGVkIGltcGwgZmlsZSBpcyBub3QgaW4geWFtbCBmb3JtYXQuJyxcbiAgSU1QTF9JU19NSVNTSU5HOiAnSW1wbCBmaWxlIGlzIG1pc3NpbmcuJyxcbiAgTUlTU0lOR19DTEFTU05BTUU6IFwiSW5pdGFsaXphdGlvbiBwYXJhbSAnbW9kZWwnIGlzIG1pc3NpbmcuXCIsXG4gIE1JU1NJTkdfUEFUSDogXCJJbml0YWxpemF0aW9uIHBhcmFtICdwYXRoJyBpcyBtaXNzaW5nLlwiLFxuICBPVkVSUklERV9XQVJOSU5HOlxuICAgICdcXG4qKldBUk5JTkcqKjogWW91IGFyZSBvdmVycmlkaW5nIHRoZSBJRiBkZWZhdWx0IHBhcmFtZXRlcnMgZmlsZS4gUGxlYXNlIGJlIGV4dHJlbWVseSBjYXJlZnVsIG9mIHVuaW50ZW5kZWQgc2lkZS1lZmZlY3RzIGluIHlvdXIgcGx1Z2luIHBpcGVsaW5lIVxcbicsXG4gIE5PVF9NT0RFTF9QTFVHSU5fRVhURU5TSU9OOlxuICAgIFwiUHJvdmlkZWQgbW9kZWwgZG9lcyBub3QgZXh0ZW5kICdNb2RlbFBsdWdpbkludGVyZmFjZScuXCIsXG4gIFNUUlVDVFVSRV9NQUxGT1JNRUQ6IChjaGlsZE5hbWU6IHN0cmluZykgPT5cbiAgICBgR3JhcGggaXMgbWFsZm9ybWVkOiBncmFwaC5jaGlsZHJlbi4ke2NoaWxkTmFtZX0gaXMgbm90IHZhbGlkLmAsXG4gIE5PVF9JTklUSUFMSVpFRF9NT0RFTDogKGNsYXNzTmFtZTogc3RyaW5nKSA9PlxuICAgIGBZb3UncmUgdHJ5aW5nIHRvIHVzZSBub3QgaW5pdGFsaXplZCBtb2RlbDogJHtjbGFzc05hbWV9LmAsXG4gIERJU0NMQUlNRVJfTUVTU0FHRTogYFxuWyFpbXBvcnRhbnRdIEluY3ViYXRpb24gUHJvamVjdFxuXG5UaGlzIHByb2plY3QgaXMgYW4gaW5jdWJhdGlvbiBwcm9qZWN0IGJlaW5nIHJ1biBpbnNpZGUgdGhlIEdyZWVuIFNvZnR3YXJlIEZvdW5kYXRpb247IGFzIHN1Y2gsIHdlICpET07igJlUIHJlY29tbWVuZCB1c2luZyBpdCBpbiBhbnkgY3JpdGljYWwgdXNlIGNhc2UuIFxuSW5jdWJhdGlvbiBwcm9qZWN0cyBhcmUgZXhwZXJpbWVudGFsLCBvZmZlciBubyBzdXBwb3J0IGd1YXJhbnRlZSwgaGF2ZSBtaW5pbWFsIGdvdmVybmFuY2UgYW5kIHByb2Nlc3MsIGFuZCBtYXkgYmUgcmV0aXJlZCBhdCBhbnkgbW9tZW50LiBUaGlzIHByb2plY3QgbWF5IG9uZSBkYXkgZ3JhZHVhdGUsIGluIHdoaWNoIGNhc2UgdGhpcyBkaXNjbGFpbWVyIHdpbGwgYmUgcmVtb3ZlZC5cbmAsXG4gIE5PVF9OQVRJVkVfTU9ERUw6IGBcblshaW1wb3J0YW50XVxuXG5Zb3UgYXJlIHVzaW5nIG1vZGVscyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgSW1wYWN0IEZyYW1ld29yayBzdGFuZGFyZCBsaWJyYXJ5LiBZb3Ugc2hvdWxkIGRvIHlvdXIgb3duIHJlc2VhcmNoIHRvIGVuc3VyZSB0aGUgbW9kZWxzIGFyZSB1cCB0byBkYXRlIGFuZCBhY2N1cmF0ZS4gVGhleSBtYXkgbm90IGJlIGFjdGl2ZWx5IG1haW50YWluZWQuICBcbmAsXG4gIFNPTUVUSElOR19XUk9ORzogJ1NvbWV0aGluZyB3cm9uZyB3aXRoIGNsaSBhcmd1bWVudHMuIFBsZWFzZSBjaGVjayBkb2NzLicsXG4gIElTU1VFX1RFTVBMQVRFOiBgXG5JbXBhY3QgRnJhbWV3b3JrIGlzIGFuIGFscGhhIHJlbGVhc2UgZnJvbSB0aGUgR3JlZW4gU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgaXMgcmVsZWFzZWQgdG8gY2FwdHVyZSBlYXJseSBmZWVkYmFjay4gSWYgeW91J2QgbGlrZSB0byBvZmZlciBzb21lIGZlZWRiYWNrLCBwbGVhc2UgdXNlIHRoaXMgaXNzdWUgdGVtcGxhdGU6IFxuaHR0cHM6Ly9naXRodWIuY29tL0dyZWVuLVNvZnR3YXJlLUZvdW5kYXRpb24vaWYvaXNzdWVzL25ldz9hc3NpZ25lZXM9JmxhYmVscz1mZWVkYmFjayZwcm9qZWN0cz0mdGVtcGxhdGU9ZmVlZGJhY2subWQmdGl0bGU9RmVlZGJhY2srLStcbmAsXG4gIE5PVF9DT05TVFJVQ1RBQkxFX01PREVMOiAocGFyYW1zOiBDbGFzc0NvbnRhaW5lclBhcmFtcykgPT5cbiAgICBgUHJvdmlkZWQgbW9kZWwgJyR7cGFyYW1zLm1vZGVsfScgaXMgbm90IGNvbnN0cnVjdGFibGUgb3IgZG9lcyBub3QgYmVsb25nIHRvIGdpdmVuIHBsdWdpbiAnJHtwYXJhbXMucGF0aH0nLmAsXG4gIElOVkFMSURfTU9EVUxFX1BBVEg6IChwYXRoOiBzdHJpbmcpID0+XG4gICAgYFByb3ZpZGVkIG1vZHVsZSBwYXRoOiAnJHtwYXRofScgaXMgaW52YWxpZC5gLFxuICBJTlZBTElEX1RJTUVfTk9STUFMSVpBVElPTjogJ1N0YXJ0IHRpbWUgb3IgZW5kIHRpbWUgaXMgbWlzc2luZy4nLFxuICBJTlZBTElEX1RJTUVfSU5URVJWQUw6ICdJbnRlcnZhbCBpcyBtaXNzaW5nLicsXG4gIEFWT0lESU5HX1BBRERJTkc6IChkZXNjcmlwdGlvbjogc3RyaW5nKSA9PlxuICAgIGBBdm9pZGluZyBwYWRkaW5nIGF0ICR7ZGVzY3JpcHRpb259YCxcbiAgQVZPSURJTkdfUEFERElOR19CWV9FREdFUzogKHN0YXJ0OiBib29sZWFuLCBlbmQ6IGJvb2xlYW4pID0+XG4gICAgYEF2b2lkaW5nIHBhZGRpbmcgYXQgJHtcbiAgICAgIHN0YXJ0ICYmIGVuZCA/ICdzdGFydCBhbmQgZW5kJyA6IHN0YXJ0ID8gJ3N0YXJ0JyA6ICdlbmQnXG4gICAgfWAsXG4gIElOVkFMSURfT0JTRVJWQVRJT05fT1ZFUkxBUDogJ09ic2VydmF0aW9uIHRpbWVzdGFtcHMgb3ZlcmxhcC4nLFxuICBJTlZBTElEX0FHR1JFR0FUSU9OX01FVEhPRDogKG1ldHJpYzogc3RyaW5nKSA9PlxuICAgIGBBZ2dyZWdhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIGdpdmVuICR7bWV0cmljfSBzaW5jZSBtZXRob2QgaXMgJ25vbmUnLmAsXG4gIE1FVFJJQ19NSVNTSU5HOiAobWV0cmljOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgYEFnZ3JlZ2F0aW9uIG1ldHJpYyAke21ldHJpY30gaXMgbm90IGZvdW5kIGluIGlucHV0c1ske2luZGV4fV0uYCxcbn07XG4iXX0=
|
package/build/index.js
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
+
if (mod && mod.__esModule) return mod;
|
|
21
|
+
var result = {};
|
|
22
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
+
__setModuleDefault(result, mod);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
3
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
const fs = __importStar(require("node:fs"));
|
|
4
28
|
const models_universe_1 = require("./lib/models-universe");
|
|
5
29
|
const supercomputer_1 = require("./lib/supercomputer");
|
|
6
30
|
const args_1 = require("./util/args");
|
|
@@ -9,8 +33,9 @@ const helpers_1 = require("./util/helpers");
|
|
|
9
33
|
const validations_1 = require("./util/validations");
|
|
10
34
|
const yaml_1 = require("./util/yaml");
|
|
11
35
|
const config_1 = require("./config");
|
|
36
|
+
const packageJson = require('../package.json');
|
|
12
37
|
const { CliInputError } = errors_1.ERRORS;
|
|
13
|
-
const { DISCLAIMER_MESSAGE, SOMETHING_WRONG } = config_1.STRINGS;
|
|
38
|
+
const { DISCLAIMER_MESSAGE, OVERRIDE_WARNING, SOMETHING_WRONG } = config_1.STRINGS;
|
|
14
39
|
/**
|
|
15
40
|
* 1. Parses yml input/output process arguments.
|
|
16
41
|
* 2. Opens yaml file as an object.
|
|
@@ -24,30 +49,35 @@ const impactEngine = async () => {
|
|
|
24
49
|
console.log(DISCLAIMER_MESSAGE);
|
|
25
50
|
const processParams = (0, args_1.parseProcessArgument)();
|
|
26
51
|
if (processParams) {
|
|
27
|
-
const { inputPath, outputPath } = processParams;
|
|
52
|
+
const { paramPath, inputPath, outputPath } = processParams;
|
|
28
53
|
const rawImpl = await (0, yaml_1.openYamlFileAsObject)(inputPath);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// Lifecycle Initialize Models
|
|
32
|
-
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
33
|
-
for (const model of impl.initialize.models) {
|
|
34
|
-
await modelsHandbook.writeDown(model);
|
|
35
|
-
}
|
|
36
|
-
// Lifecycle Computing
|
|
37
|
-
const engine = new supercomputer_1.Supercomputer(impl, modelsHandbook);
|
|
38
|
-
const ompl = await engine.compute();
|
|
39
|
-
if (impl.aggregation) {
|
|
40
|
-
const aggregations = engine.calculateAggregation();
|
|
41
|
-
ompl['aggregated-outputs'] = aggregations;
|
|
54
|
+
if (paramPath) {
|
|
55
|
+
console.warn(OVERRIDE_WARNING);
|
|
42
56
|
}
|
|
57
|
+
/** Lifecycle Validation */
|
|
58
|
+
const impl = (0, validations_1.validateImpl)(rawImpl);
|
|
59
|
+
/**
|
|
60
|
+
* Checks if override params path is passed, then reads that file.
|
|
61
|
+
* Then checks if param is new, then appends it to existing parameters.
|
|
62
|
+
* Otherwise warns user about rejected overriding.
|
|
63
|
+
*/
|
|
64
|
+
const overridingParams = paramPath && JSON.parse(fs.readFileSync(paramPath, 'utf-8'));
|
|
65
|
+
const parameters = overridingParams || config_1.PARAMETERS;
|
|
66
|
+
/** Lifecycle Initialize Models */
|
|
67
|
+
const modelsHandbook = await new models_universe_1.ModelsUniverse().bulkWriteDown(impl.initialize.models);
|
|
68
|
+
/** Lifecycle Computing */
|
|
69
|
+
const computer = await new supercomputer_1.Supercomputer(impl, modelsHandbook, parameters);
|
|
70
|
+
computer.overrideOrAppendParams(parameters);
|
|
71
|
+
const outputData = await computer.compute();
|
|
72
|
+
outputData['if-version'] = packageJson.version;
|
|
43
73
|
if (!outputPath) {
|
|
44
|
-
console.log(JSON.stringify(
|
|
74
|
+
console.log(JSON.stringify(outputData, null, 4));
|
|
45
75
|
return;
|
|
46
76
|
}
|
|
47
|
-
await (0, yaml_1.saveYamlFileAs)(
|
|
77
|
+
await (0, yaml_1.saveYamlFileAs)(outputData, outputPath);
|
|
48
78
|
return;
|
|
49
79
|
}
|
|
50
80
|
return Promise.reject(new CliInputError(SOMETHING_WRONG));
|
|
51
81
|
};
|
|
52
82
|
impactEngine().catch(helpers_1.andHandle);
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw0Q0FBOEI7QUFFOUIsMkRBQXFEO0FBQ3JELHVEQUFrRDtBQUVsRCxzQ0FBaUQ7QUFDakQsMENBQXFDO0FBQ3JDLDRDQUF5QztBQUN6QyxvREFBZ0Q7QUFDaEQsc0NBQWlFO0FBRWpFLHFDQUE2QztBQUs3QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUUvQyxNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRS9CLE1BQU0sRUFBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXhFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRWhDLE1BQU0sYUFBYSxHQUFHLElBQUEsMkJBQW9CLEdBQUUsQ0FBQztJQUU3QyxJQUFJLGFBQWEsRUFBRTtRQUNqQixNQUFNLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUMsR0FBRyxhQUFhLENBQUM7UUFFekQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLDJCQUFvQixFQUFPLFNBQVMsQ0FBQyxDQUFDO1FBRTVELElBQUksU0FBUyxFQUFFO1lBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsMkJBQTJCO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUEsMEJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQztRQUVuQzs7OztXQUlHO1FBQ0gsTUFBTSxnQkFBZ0IsR0FDcEIsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsSUFBSSxtQkFBVSxDQUFDO1FBRWxELGtDQUFrQztRQUNsQyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksZ0NBQWMsRUFBRSxDQUFDLGFBQWEsQ0FDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQ3ZCLENBQUM7UUFFRiwwQkFBMEI7UUFDMUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUUzRSxRQUFRLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFFL0MsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsT0FBTztTQUNSO1FBRUQsTUFBTSxJQUFBLHFCQUFjLEVBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLE9BQU87S0FDUjtJQUVELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQztBQUVGLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdub2RlOmZzJztcblxuaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi9saWIvbW9kZWxzLXVuaXZlcnNlJztcbmltcG9ydCB7U3VwZXJjb21wdXRlcn0gZnJvbSAnLi9saWIvc3VwZXJjb21wdXRlcic7XG5cbmltcG9ydCB7cGFyc2VQcm9jZXNzQXJndW1lbnR9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICcuL3V0aWwvZXJyb3JzJztcbmltcG9ydCB7YW5kSGFuZGxlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge3ZhbGlkYXRlSW1wbH0gZnJvbSAnLi91dGlsL3ZhbGlkYXRpb25zJztcbmltcG9ydCB7b3BlbllhbWxGaWxlQXNPYmplY3QsIHNhdmVZYW1sRmlsZUFzfSBmcm9tICcuL3V0aWwveWFtbCc7XG5cbmltcG9ydCB7UEFSQU1FVEVSUywgU1RSSU5HU30gZnJvbSAnLi9jb25maWcnO1xuXG5pbXBvcnQge0ltcGx9IGZyb20gJy4vdHlwZXMvaW1wbCc7XG5pbXBvcnQge1BhcmFtZXRlcnN9IGZyb20gJy4vdHlwZXMvcGFyYW1ldGVycyc7XG5cbmNvbnN0IHBhY2thZ2VKc29uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJyk7XG5cbmNvbnN0IHtDbGlJbnB1dEVycm9yfSA9IEVSUk9SUztcblxuY29uc3Qge0RJU0NMQUlNRVJfTUVTU0FHRSwgT1ZFUlJJREVfV0FSTklORywgU09NRVRISU5HX1dST05HfSA9IFNUUklOR1M7XG5cbi8qKlxuICogMS4gUGFyc2VzIHltbCBpbnB1dC9vdXRwdXQgcHJvY2VzcyBhcmd1bWVudHMuXG4gKiAyLiBPcGVucyB5YW1sIGZpbGUgYXMgYW4gb2JqZWN0LlxuICogMy4gVmFsaWRhdGVzIGdpdmVuIGltcGwgdG8gbWF0Y2ggYmFzaWMgc3RydWN0dXJlLlxuICogNC4gSW5pdGlhbGl6ZXMgcmVxdWVzdGVkIG1vZGVscy5cbiAqIDUuIEluaXRpYWxpemVzIGdyYXBoLCBkb2VzIGNvbXB1dGluZy5cbiAqIDYuIFNhdmVzIHByb2Nlc3NlZCBvYmplY3QgYXMgYSB5YW1sIGZpbGUuXG4gKiBAZXhhbXBsZSBydW4gYG5wbSBydW4gaW1wYWN0LWVuZ2luZSAtLSAtLWltcGwgLi90ZXN0LnltbCAtLW9tcGwgLi9yZXN1bHQueW1sYFxuICovXG5jb25zdCBpbXBhY3RFbmdpbmUgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKERJU0NMQUlNRVJfTUVTU0FHRSk7XG5cbiAgY29uc3QgcHJvY2Vzc1BhcmFtcyA9IHBhcnNlUHJvY2Vzc0FyZ3VtZW50KCk7XG5cbiAgaWYgKHByb2Nlc3NQYXJhbXMpIHtcbiAgICBjb25zdCB7cGFyYW1QYXRoLCBpbnB1dFBhdGgsIG91dHB1dFBhdGh9ID0gcHJvY2Vzc1BhcmFtcztcblxuICAgIGNvbnN0IHJhd0ltcGwgPSBhd2FpdCBvcGVuWWFtbEZpbGVBc09iamVjdDxJbXBsPihpbnB1dFBhdGgpO1xuXG4gICAgaWYgKHBhcmFtUGF0aCkge1xuICAgICAgY29uc29sZS53YXJuKE9WRVJSSURFX1dBUk5JTkcpO1xuICAgIH1cblxuICAgIC8qKiBMaWZlY3ljbGUgVmFsaWRhdGlvbiAqL1xuICAgIGNvbnN0IGltcGwgPSB2YWxpZGF0ZUltcGwocmF3SW1wbCk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgb3ZlcnJpZGUgcGFyYW1zIHBhdGggaXMgcGFzc2VkLCB0aGVuIHJlYWRzIHRoYXQgZmlsZS5cbiAgICAgKiBUaGVuIGNoZWNrcyBpZiBwYXJhbSBpcyBuZXcsIHRoZW4gYXBwZW5kcyBpdCB0byBleGlzdGluZyBwYXJhbWV0ZXJzLlxuICAgICAqIE90aGVyd2lzZSB3YXJucyB1c2VyIGFib3V0IHJlamVjdGVkIG92ZXJyaWRpbmcuXG4gICAgICovXG4gICAgY29uc3Qgb3ZlcnJpZGluZ1BhcmFtczogUGFyYW1ldGVycyA9XG4gICAgICBwYXJhbVBhdGggJiYgSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGFyYW1QYXRoLCAndXRmLTgnKSk7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IG92ZXJyaWRpbmdQYXJhbXMgfHwgUEFSQU1FVEVSUztcblxuICAgIC8qKiBMaWZlY3ljbGUgSW5pdGlhbGl6ZSBNb2RlbHMgKi9cbiAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IGF3YWl0IG5ldyBNb2RlbHNVbml2ZXJzZSgpLmJ1bGtXcml0ZURvd24oXG4gICAgICBpbXBsLmluaXRpYWxpemUubW9kZWxzXG4gICAgKTtcblxuICAgIC8qKiBMaWZlY3ljbGUgQ29tcHV0aW5nICovXG4gICAgY29uc3QgY29tcHV0ZXIgPSBhd2FpdCBuZXcgU3VwZXJjb21wdXRlcihpbXBsLCBtb2RlbHNIYW5kYm9vaywgcGFyYW1ldGVycyk7XG5cbiAgICBjb21wdXRlci5vdmVycmlkZU9yQXBwZW5kUGFyYW1zKHBhcmFtZXRlcnMpO1xuICAgIGNvbnN0IG91dHB1dERhdGEgPSBhd2FpdCBjb21wdXRlci5jb21wdXRlKCk7XG4gICAgb3V0cHV0RGF0YVsnaWYtdmVyc2lvbiddID0gcGFja2FnZUpzb24udmVyc2lvbjtcblxuICAgIGlmICghb3V0cHV0UGF0aCkge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkob3V0cHV0RGF0YSwgbnVsbCwgNCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHNhdmVZYW1sRmlsZUFzKG91dHB1dERhdGEsIG91dHB1dFBhdGgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBDbGlJbnB1dEVycm9yKFNPTUVUSElOR19XUk9ORykpO1xufTtcblxuaW1wYWN0RW5naW5lKCkuY2F0Y2goYW5kSGFuZGxlKTtcbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ModelParams } from '../types/model-interface';
|
|
2
|
+
import { Parameters } from '../types/parameters';
|
|
3
|
+
/**
|
|
4
|
+
* Aggregates child node level metrics. Validates if metric aggregation type is `none`, then rejects with error.
|
|
5
|
+
* Otherwise iterates over inputs by aggregating per given `metrics`.
|
|
6
|
+
*/
|
|
7
|
+
export declare const aggregate: (inputs: ModelParams[], metrics: string[], parameters: Parameters) => ModelParams;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.aggregate = void 0;
|
|
4
|
+
const errors_1 = require("../util/errors");
|
|
5
|
+
const param_selectors_1 = require("../util/param-selectors");
|
|
6
|
+
const config_1 = require("../config");
|
|
7
|
+
const { InvalidAggregationParams } = errors_1.ERRORS;
|
|
8
|
+
const { INVALID_AGGREGATION_METHOD, METRIC_MISSING } = config_1.STRINGS;
|
|
9
|
+
/**
|
|
10
|
+
* Validates metrics array before applying aggregator.
|
|
11
|
+
* If aggregation method is `none`, then throws error.
|
|
12
|
+
*/
|
|
13
|
+
const checkIfMetricsAreValid = (metrics, parameters) => {
|
|
14
|
+
metrics.forEach(metric => {
|
|
15
|
+
const method = (0, param_selectors_1.getAggregationMethod)(metric, parameters);
|
|
16
|
+
if (method === 'none') {
|
|
17
|
+
throw new InvalidAggregationParams(INVALID_AGGREGATION_METHOD(method));
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Aggregates child node level metrics. Validates if metric aggregation type is `none`, then rejects with error.
|
|
23
|
+
* Otherwise iterates over inputs by aggregating per given `metrics`.
|
|
24
|
+
*/
|
|
25
|
+
const aggregate = (inputs, metrics, parameters) => {
|
|
26
|
+
checkIfMetricsAreValid(metrics, parameters);
|
|
27
|
+
return inputs.reduce((acc, input, index) => {
|
|
28
|
+
for (const metric of metrics) {
|
|
29
|
+
if (!(metric in input)) {
|
|
30
|
+
throw new InvalidAggregationParams(METRIC_MISSING(metric, index));
|
|
31
|
+
}
|
|
32
|
+
const accessKey = `aggregated-${metric}`;
|
|
33
|
+
acc[accessKey] = acc[accessKey] ?? 0;
|
|
34
|
+
acc[accessKey] += parseFloat(input[metric]);
|
|
35
|
+
/** Checks for the last iteration. */
|
|
36
|
+
if (index === inputs.length - 1) {
|
|
37
|
+
if ((0, param_selectors_1.getAggregationMethod)(metric, parameters) === 'avg') {
|
|
38
|
+
acc[accessKey] /= inputs.length;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return acc;
|
|
43
|
+
}, {});
|
|
44
|
+
};
|
|
45
|
+
exports.aggregate = aggregate;
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYWdncmVnYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBc0M7QUFDdEMsNkRBQTZEO0FBRTdELHNDQUFrQztBQU1sQyxNQUFNLEVBQUMsd0JBQXdCLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDMUMsTUFBTSxFQUFDLDBCQUEwQixFQUFFLGNBQWMsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFN0Q7OztHQUdHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLE9BQWlCLEVBQUUsVUFBc0IsRUFBRSxFQUFFO0lBQzNFLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBQSxzQ0FBb0IsRUFBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFeEQsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO1lBQ3JCLE1BQU0sSUFBSSx3QkFBd0IsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSSxNQUFNLFNBQVMsR0FBRyxDQUN2QixNQUFxQixFQUNyQixPQUFpQixFQUNqQixVQUFzQixFQUN0QixFQUFFO0lBQ0Ysc0JBQXNCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRTVDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDekMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7WUFDNUIsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixNQUFNLElBQUksd0JBQXdCLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ25FO1lBRUQsTUFBTSxTQUFTLEdBQUcsY0FBYyxNQUFNLEVBQUUsQ0FBQztZQUN6QyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRTVDLHFDQUFxQztZQUNyQyxJQUFJLEtBQUssS0FBSyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxJQUFBLHNDQUFvQixFQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxLQUFLLEVBQUU7b0JBQ3RELEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO2lCQUNqQzthQUNGO1NBQ0Y7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUF1QixDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBM0JXLFFBQUEsU0FBUyxhQTJCcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VSUk9SU30gZnJvbSAnLi4vdXRpbC9lcnJvcnMnO1xuaW1wb3J0IHtnZXRBZ2dyZWdhdGlvbk1ldGhvZH0gZnJvbSAnLi4vdXRpbC9wYXJhbS1zZWxlY3RvcnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7TW9kZWxQYXJhbXN9IGZyb20gJy4uL3R5cGVzL21vZGVsLWludGVyZmFjZSc7XG5pbXBvcnQge0FnZ3JlZ2F0aW9uUmVzdWx0fSBmcm9tICcuLi90eXBlcy9hZ2dyZWdhdG9yJztcbmltcG9ydCB7UGFyYW1ldGVyc30gZnJvbSAnLi4vdHlwZXMvcGFyYW1ldGVycyc7XG5cbmNvbnN0IHtJbnZhbGlkQWdncmVnYXRpb25QYXJhbXN9ID0gRVJST1JTO1xuY29uc3Qge0lOVkFMSURfQUdHUkVHQVRJT05fTUVUSE9ELCBNRVRSSUNfTUlTU0lOR30gPSBTVFJJTkdTO1xuXG4vKipcbiAqIFZhbGlkYXRlcyBtZXRyaWNzIGFycmF5IGJlZm9yZSBhcHBseWluZyBhZ2dyZWdhdG9yLlxuICogSWYgYWdncmVnYXRpb24gbWV0aG9kIGlzIGBub25lYCwgdGhlbiB0aHJvd3MgZXJyb3IuXG4gKi9cbmNvbnN0IGNoZWNrSWZNZXRyaWNzQXJlVmFsaWQgPSAobWV0cmljczogc3RyaW5nW10sIHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpID0+IHtcbiAgbWV0cmljcy5mb3JFYWNoKG1ldHJpYyA9PiB7XG4gICAgY29uc3QgbWV0aG9kID0gZ2V0QWdncmVnYXRpb25NZXRob2QobWV0cmljLCBwYXJhbWV0ZXJzKTtcblxuICAgIGlmIChtZXRob2QgPT09ICdub25lJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZ2dyZWdhdGlvblBhcmFtcyhJTlZBTElEX0FHR1JFR0FUSU9OX01FVEhPRChtZXRob2QpKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyoqXG4gKiBBZ2dyZWdhdGVzIGNoaWxkIG5vZGUgbGV2ZWwgbWV0cmljcy4gVmFsaWRhdGVzIGlmIG1ldHJpYyBhZ2dyZWdhdGlvbiB0eXBlIGlzIGBub25lYCwgdGhlbiByZWplY3RzIHdpdGggZXJyb3IuXG4gKiBPdGhlcndpc2UgaXRlcmF0ZXMgb3ZlciBpbnB1dHMgYnkgYWdncmVnYXRpbmcgcGVyIGdpdmVuIGBtZXRyaWNzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGFnZ3JlZ2F0ZSA9IChcbiAgaW5wdXRzOiBNb2RlbFBhcmFtc1tdLFxuICBtZXRyaWNzOiBzdHJpbmdbXSxcbiAgcGFyYW1ldGVyczogUGFyYW1ldGVyc1xuKSA9PiB7XG4gIGNoZWNrSWZNZXRyaWNzQXJlVmFsaWQobWV0cmljcywgcGFyYW1ldGVycyk7XG5cbiAgcmV0dXJuIGlucHV0cy5yZWR1Y2UoKGFjYywgaW5wdXQsIGluZGV4KSA9PiB7XG4gICAgZm9yIChjb25zdCBtZXRyaWMgb2YgbWV0cmljcykge1xuICAgICAgaWYgKCEobWV0cmljIGluIGlucHV0KSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFnZ3JlZ2F0aW9uUGFyYW1zKE1FVFJJQ19NSVNTSU5HKG1ldHJpYywgaW5kZXgpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWNjZXNzS2V5ID0gYGFnZ3JlZ2F0ZWQtJHttZXRyaWN9YDtcbiAgICAgIGFjY1thY2Nlc3NLZXldID0gYWNjW2FjY2Vzc0tleV0gPz8gMDtcbiAgICAgIGFjY1thY2Nlc3NLZXldICs9IHBhcnNlRmxvYXQoaW5wdXRbbWV0cmljXSk7XG5cbiAgICAgIC8qKiBDaGVja3MgZm9yIHRoZSBsYXN0IGl0ZXJhdGlvbi4gKi9cbiAgICAgIGlmIChpbmRleCA9PT0gaW5wdXRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgaWYgKGdldEFnZ3JlZ2F0aW9uTWV0aG9kKG1ldHJpYywgcGFyYW1ldGVycykgPT09ICdhdmcnKSB7XG4gICAgICAgICAgYWNjW2FjY2Vzc0tleV0gLz0gaW5wdXRzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9IGFzIEFnZ3JlZ2F0aW9uUmVzdWx0KTtcbn07XG4iXX0=
|
|
@@ -25,10 +25,14 @@ export declare class ModelsUniverse {
|
|
|
25
25
|
* Imports module, then checks if it's a class which implements input model interface.
|
|
26
26
|
*/
|
|
27
27
|
private handModel;
|
|
28
|
+
/**
|
|
29
|
+
* Registers all models from `impl`.`initalize` property.
|
|
30
|
+
*/
|
|
31
|
+
bulkWriteDown(modelsToInitalize: ImplInitializeModel[]): Promise<this>;
|
|
28
32
|
/**
|
|
29
33
|
* Initializes and registers model.
|
|
30
34
|
*/
|
|
31
|
-
|
|
35
|
+
private writeDownSingleModel;
|
|
32
36
|
/**
|
|
33
37
|
* Returns existing model by `name`.
|
|
34
38
|
*/
|
|
@@ -1,4 +1,27 @@
|
|
|
1
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
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.ModelsUniverse = void 0;
|
|
4
27
|
const pathLib = require("path");
|
|
@@ -35,7 +58,7 @@ class ModelsUniverse {
|
|
|
35
58
|
*/
|
|
36
59
|
async importModuleFrom(path) {
|
|
37
60
|
try {
|
|
38
|
-
const module = await Promise.resolve(`${path}`).then(s => require(s));
|
|
61
|
+
const module = await Promise.resolve(`${path}`).then(s => __importStar(require(s)));
|
|
39
62
|
return module;
|
|
40
63
|
}
|
|
41
64
|
catch (error) {
|
|
@@ -73,10 +96,19 @@ class ModelsUniverse {
|
|
|
73
96
|
}
|
|
74
97
|
return this.importAndVerifyModule(model, path);
|
|
75
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Registers all models from `impl`.`initalize` property.
|
|
101
|
+
*/
|
|
102
|
+
async bulkWriteDown(modelsToInitalize) {
|
|
103
|
+
for (const model of modelsToInitalize) {
|
|
104
|
+
await this.writeDownSingleModel(model);
|
|
105
|
+
}
|
|
106
|
+
return this;
|
|
107
|
+
}
|
|
76
108
|
/**
|
|
77
109
|
* Initializes and registers model.
|
|
78
110
|
*/
|
|
79
|
-
async
|
|
111
|
+
async writeDownSingleModel(modelToInitalize) {
|
|
80
112
|
const { model, path, config, name } = modelToInitalize;
|
|
81
113
|
if (!model) {
|
|
82
114
|
throw new ModelCredentialError(MISSING_CLASSNAME);
|
|
@@ -85,10 +117,10 @@ class ModelsUniverse {
|
|
|
85
117
|
throw new ModelCredentialError(MISSING_PATH);
|
|
86
118
|
}
|
|
87
119
|
const Model = await this.handModel(model, path);
|
|
88
|
-
const callback = async (
|
|
120
|
+
const callback = async (options) => {
|
|
89
121
|
const params = {
|
|
90
122
|
...config,
|
|
91
|
-
...
|
|
123
|
+
...options,
|
|
92
124
|
};
|
|
93
125
|
const initalizedModel = await new Model().configure(params);
|
|
94
126
|
return initalizedModel;
|
|
@@ -110,4 +142,4 @@ class ModelsUniverse {
|
|
|
110
142
|
}
|
|
111
143
|
}
|
|
112
144
|
exports.ModelsUniverse = ModelsUniverse;
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLXVuaXZlcnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9tb2RlbHMtdW5pdmVyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnQ0FBaUM7QUFFakMsMkNBQXNDO0FBRXRDLHNDQUEwQztBQVMxQyxNQUFNLEVBQUMsd0JBQXdCLEVBQUUsb0JBQW9CLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFaEUsTUFBTSxFQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDM0MsTUFBTSxFQUNKLGlCQUFpQixFQUNqQiwwQkFBMEIsRUFDMUIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLG1CQUFtQixHQUNwQixHQUFHLGdCQUFPLENBQUM7QUFFWjs7R0FFRztBQUNILE1BQWEsY0FBYztJQUEzQjtRQUNFOztXQUVHO1FBQ0kscUJBQWdCLEdBQXFCLEVBQUUsQ0FBQztJQXlIakQsQ0FBQztJQXZIQzs7T0FFRztJQUNLLGVBQWUsQ0FBQyxjQUFtQixFQUFFLE1BQTRCO1FBQ3ZFLElBQUk7WUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLFdBQVcsSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQztZQUVwRSxPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsTUFBTSxJQUFJLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBWTtRQUN6QyxJQUFJO1lBQ0YsTUFBTSxNQUFNLEdBQUcseUJBQWEsSUFBSSx1Q0FBQyxDQUFDO1lBRWxDLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsTUFBTSxJQUFJLHdCQUF3QixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMscUJBQXFCLENBQUMsS0FBYSxFQUFFLElBQVk7UUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLEVBQUU7WUFDN0QsTUFBTSxJQUFJLHdCQUF3QixDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDaEU7UUFFRCxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBYSxFQUFFLElBQVk7UUFDakQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxZQUFZLENBQUMsQ0FBQztTQUNwRDthQUFNO1lBQ0wsSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQy9CO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGFBQWEsQ0FBQyxpQkFBd0M7UUFDakUsS0FBSyxNQUFNLEtBQUssSUFBSSxpQkFBaUIsRUFBRTtZQUNyQyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLG9CQUFvQixDQUFDLGdCQUFxQztRQUN0RSxNQUFNLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFFckQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM5QztRQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFaEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLE9BQXFCLEVBQUUsRUFBRTtZQUMvQyxNQUFNLE1BQU0sR0FBRztnQkFDYixHQUFHLE1BQU07Z0JBQ1QsR0FBRyxPQUFPO2FBQ1gsQ0FBQztZQUVGLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFNUQsT0FBTyxlQUFlLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUN4QixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVE7U0FDakIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE1BQVc7UUFDN0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakQ7UUFFRCxNQUFNLElBQUksd0JBQXdCLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0Y7QUE3SEQsd0NBNkhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGhMaWIgPSByZXF1aXJlKCdwYXRoJyk7XG5cbmltcG9ydCB7RVJST1JTfSBmcm9tICcuLi91dGlsL2Vycm9ycyc7XG5cbmltcG9ydCB7Q09ORklHLCBTVFJJTkdTfSBmcm9tICcuLi9jb25maWcnO1xuXG5pbXBvcnQge1xuICBDbGFzc0NvbnRhaW5lclBhcmFtcyxcbiAgSW1wbEluaXRpYWxpemVNb2RlbCxcbiAgSW5pdGFsaXplZE1vZGVscyxcbiAgTW9kZWxPcHRpb25zLFxufSBmcm9tICcuLi90eXBlcy9tb2RlbHMtdW5pdmVyc2UnO1xuXG5jb25zdCB7TW9kZWxJbml0aWFsaXphdGlvbkVycm9yLCBNb2RlbENyZWRlbnRpYWxFcnJvcn0gPSBFUlJPUlM7XG5cbmNvbnN0IHtHSVRIVUJfUEFUSCwgTkFUSVZFX01PREVMfSA9IENPTkZJRztcbmNvbnN0IHtcbiAgTUlTU0lOR19DTEFTU05BTUUsXG4gIE5PVF9NT0RFTF9QTFVHSU5fRVhURU5TSU9OLFxuICBNSVNTSU5HX1BBVEgsXG4gIE5PVF9OQVRJVkVfTU9ERUwsXG4gIE5PVF9DT05TVFJVQ1RBQkxFX01PREVMLFxuICBOT1RfSU5JVElBTElaRURfTU9ERUwsXG4gIElOVkFMSURfTU9EVUxFX1BBVEgsXG59ID0gU1RSSU5HUztcblxuLyoqXG4gKiBNb2RlbHMgSW5pdGlhbGl6YXRpb24gTGlmZWN5Y2xlLlxuICovXG5leHBvcnQgY2xhc3MgTW9kZWxzVW5pdmVyc2Uge1xuICAvKipcbiAgICogTW9kZWxzIGxpc3QuXG4gICAqL1xuICBwdWJsaWMgaW5pdGFsaXplZE1vZGVsczogSW5pdGFsaXplZE1vZGVscyA9IHt9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgbW9kZWwgaXMgaW5zdGFuY2Ugb2YgYElPdXRwdXRNb2RlbEludGVyZmFjZWAuXG4gICAqL1xuICBwcml2YXRlIGluc3RhbmNlT2ZNb2RlbChDbGFzc0NvbnRhaW5lcjogYW55LCBwYXJhbXM6IENsYXNzQ29udGFpbmVyUGFyYW1zKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRlc3RNb2RlbCA9IG5ldyBDbGFzc0NvbnRhaW5lcigpO1xuICAgICAgY29uc3QgYm9vbGFibGUgPSAnY29uZmlndXJlJyBpbiB0ZXN0TW9kZWwgJiYgJ2V4ZWN1dGUnIGluIHRlc3RNb2RlbDtcblxuICAgICAgcmV0dXJuIGJvb2xhYmxlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgTW9kZWxJbml0aWFsaXphdGlvbkVycm9yKE5PVF9DT05TVFJVQ1RBQkxFX01PREVMKHBhcmFtcykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIG1vZHVsZSBieSBnaXZlbiBgcGF0aGAuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGltcG9ydE1vZHVsZUZyb20ocGF0aDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IGltcG9ydChwYXRoKTtcblxuICAgICAgcmV0dXJuIG1vZHVsZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IE1vZGVsSW5pdGlhbGl6YXRpb25FcnJvcihJTlZBTElEX01PRFVMRV9QQVRIKHBhdGgpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyBgbW9kdWxlYCBmcm9tIGdpdmVuIGBwYXRoYCwgdGhlbiBjaGVja3MgaWYgaXQncyBgTW9kZWxQbHVnaW5JbnRlcmZhY2VgIGV4dGVuc2lvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaW1wb3J0QW5kVmVyaWZ5TW9kdWxlKG1vZGVsOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHBsdWdpbk1vZHVsZSA9IGF3YWl0IHRoaXMuaW1wb3J0TW9kdWxlRnJvbShwYXRoKTtcblxuICAgIGlmICghdGhpcy5pbnN0YW5jZU9mTW9kZWwocGx1Z2luTW9kdWxlW21vZGVsXSwge21vZGVsLCBwYXRofSkpIHtcbiAgICAgIHRocm93IG5ldyBNb2RlbEluaXRpYWxpemF0aW9uRXJyb3IoTk9UX01PREVMX1BMVUdJTl9FWFRFTlNJT04pO1xuICAgIH1cblxuICAgIHJldHVybiBwbHVnaW5Nb2R1bGVbbW9kZWxdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgcGx1Z2luIG1vZGVsLiBDaGVja3MgaWYgbW9kZWwgaXMgbWlzc2luZyB0aGVuIHJlamVjdHMgd2l0aCBlcnJvci5cbiAgICogVGhlbiBjaGVja3MgaWYgYHBhdGhgIGlzIHN0YXJ0aW5nIHdpdGggZ2l0aHViLCB0aGVuIGdyYWJzIHRoZSByZXBvc2l0b3J5IG5hbWUuXG4gICAqIEltcG9ydHMgbW9kdWxlLCB0aGVuIGNoZWNrcyBpZiBpdCdzIGEgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBpbnB1dCBtb2RlbCBpbnRlcmZhY2UuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGhhbmRNb2RlbChtb2RlbDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAocGF0aCA9PT0gJ2J1aWx0aW4nKSB7XG4gICAgICBwYXRoID0gcGF0aExpYi5ub3JtYWxpemUoYCR7X19kaXJuYW1lfS8uLi9tb2RlbHNgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhdGg/LnN0YXJ0c1dpdGgoR0lUSFVCX1BBVEgpKSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLycpO1xuICAgICAgICBwYXRoID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgICB9XG5cbiAgICAgIGlmICghcGF0aC5pbmNsdWRlcyhOQVRJVkVfTU9ERUwpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKE5PVF9OQVRJVkVfTU9ERUwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmltcG9ydEFuZFZlcmlmeU1vZHVsZShtb2RlbCwgcGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGFsbCBtb2RlbHMgZnJvbSBgaW1wbGAuYGluaXRhbGl6ZWAgcHJvcGVydHkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYnVsa1dyaXRlRG93bihtb2RlbHNUb0luaXRhbGl6ZTogSW1wbEluaXRpYWxpemVNb2RlbFtdKSB7XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBtb2RlbHNUb0luaXRhbGl6ZSkge1xuICAgICAgYXdhaXQgdGhpcy53cml0ZURvd25TaW5nbGVNb2RlbChtb2RlbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYW5kIHJlZ2lzdGVycyBtb2RlbC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgd3JpdGVEb3duU2luZ2xlTW9kZWwobW9kZWxUb0luaXRhbGl6ZTogSW1wbEluaXRpYWxpemVNb2RlbCkge1xuICAgIGNvbnN0IHttb2RlbCwgcGF0aCwgY29uZmlnLCBuYW1lfSA9IG1vZGVsVG9Jbml0YWxpemU7XG5cbiAgICBpZiAoIW1vZGVsKSB7XG4gICAgICB0aHJvdyBuZXcgTW9kZWxDcmVkZW50aWFsRXJyb3IoTUlTU0lOR19DTEFTU05BTUUpO1xuICAgIH1cblxuICAgIGlmICghcGF0aCkge1xuICAgICAgdGhyb3cgbmV3IE1vZGVsQ3JlZGVudGlhbEVycm9yKE1JU1NJTkdfUEFUSCk7XG4gICAgfVxuXG4gICAgY29uc3QgTW9kZWwgPSBhd2FpdCB0aGlzLmhhbmRNb2RlbChtb2RlbCwgcGF0aCk7XG5cbiAgICBjb25zdCBjYWxsYmFjayA9IGFzeW5jIChvcHRpb25zOiBNb2RlbE9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaW5pdGFsaXplZE1vZGVsID0gYXdhaXQgbmV3IE1vZGVsKCkuY29uZmlndXJlKHBhcmFtcyk7XG5cbiAgICAgIHJldHVybiBpbml0YWxpemVkTW9kZWw7XG4gICAgfTtcblxuICAgIHRoaXMuaW5pdGFsaXplZE1vZGVscyA9IHtcbiAgICAgIC4uLnRoaXMuaW5pdGFsaXplZE1vZGVscyxcbiAgICAgIFtuYW1lXTogY2FsbGJhY2ssXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmluaXRhbGl6ZWRNb2RlbHM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBleGlzdGluZyBtb2RlbCBieSBgbmFtZWAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SW5pdGlhbGl6ZWRNb2RlbChtb2RlbE5hbWU6IHN0cmluZywgY29uZmlnOiBhbnkpIHtcbiAgICBpZiAodGhpcy5pbml0YWxpemVkTW9kZWxzW21vZGVsTmFtZV0pIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXRhbGl6ZWRNb2RlbHNbbW9kZWxOYW1lXShjb25maWcpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBNb2RlbEluaXRpYWxpemF0aW9uRXJyb3IoTk9UX0lOSVRJQUxJWkVEX01PREVMKG1vZGVsTmFtZSkpO1xuICB9XG59XG4iXX0=
|