@grnsft/if 0.0.6 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.examples/ompls/azure.yml +205 -0
- package/.github/workflows/nodejs-ci.yml +0 -8
- package/README.md +48 -9
- package/build/index.js +1 -2
- package/coverage/clover.xml +132 -1118
- package/coverage/coverage-final.json +9 -26
- package/coverage/lcov-report/config/config.ts.html +3 -66
- package/coverage/lcov-report/config/index.html +15 -15
- package/coverage/lcov-report/config/index.ts.html +3 -3
- package/coverage/lcov-report/config/strings.ts.html +82 -19
- package/coverage/lcov-report/index.html +36 -231
- package/coverage/lcov-report/lib/index.html +43 -13
- package/coverage/lcov-report/lib/models-universe.ts.html +433 -0
- package/coverage/lcov-report/lib/observatory.ts.html +187 -0
- package/coverage/lcov-report/lib/supercomputer.ts.html +553 -0
- package/coverage/lcov-report/util/args.ts.html +23 -8
- package/coverage/lcov-report/util/errors.ts.html +157 -0
- package/coverage/lcov-report/util/index.html +20 -50
- package/coverage/lcov-report/util/yaml.ts.html +17 -11
- package/coverage/lcov.info +225 -2004
- package/examples/impls/test/azure.yml +8 -8
- package/examples/impls/test/ccf.yml +5 -3
- package/examples/impls/test/if-demo.yml +19 -9
- package/examples/impls/test/metadata.yml +3 -2
- package/examples/impls/test/nesting.yml +10 -13
- package/examples/impls/test/sci-e.yml +1 -1
- package/examples/impls/test/sci-m.yml +2 -2
- package/examples/impls/test/sci-o.yml +2 -4
- package/examples/impls/test/sci.yml +38 -15
- package/examples/impls/test/shell.yml +2 -1
- package/examples/impls/{tdp-finder-test.yml → test/tdp-finder.yml} +8 -8
- package/examples/ompls/ccf.yml +3 -1
- package/examples/ompls/if-demo.yml +46 -22
- package/package.json +15 -7
- package/tsconfig.build.json +7 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/build/__mocks__/azure/index.d.ts +0 -11
- package/build/__mocks__/azure/index.js +0 -132
- package/build/__mocks__/boavizta/countries.json +0 -138
- package/build/__mocks__/boavizta/instance_types.json +0 -625
- package/build/__mocks__/boavizta/providers.json +0 -1
- package/build/__mocks__/fs/index.d.ts +0 -3
- package/build/__mocks__/fs/index.js +0 -56
- package/build/__mocks__/model-universe/index.d.ts +0 -31
- package/build/__mocks__/model-universe/index.js +0 -64
- package/build/__mocks__/watt-time/data.json +0 -119
- package/build/__tests__/integration/ompl/index.test.d.ts +0 -1
- package/build/__tests__/integration/ompl/index.test.js +0 -61
- package/build/__tests__/unit/lib/azure-importer/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/azure-importer/index.test.js +0 -152
- package/build/__tests__/unit/lib/boavizta/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/boavizta/index.test.js +0 -579
- package/build/__tests__/unit/lib/case-studies/aveva.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/aveva.test.js +0 -36
- package/build/__tests__/unit/lib/case-studies/emem.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/emem.test.js +0 -108
- package/build/__tests__/unit/lib/case-studies/eshoppen.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/eshoppen.test.js +0 -53
- package/build/__tests__/unit/lib/case-studies/sci-accenture.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/sci-accenture.test.js +0 -23
- package/build/__tests__/unit/lib/ccf/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/ccf/index.test.js +0 -223
- package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.js +0 -73
- package/build/__tests__/unit/lib/models-universe.test.d.ts +0 -1
- package/build/__tests__/unit/lib/models-universe.test.js +0 -193
- package/build/__tests__/unit/lib/observatory.test.d.ts +0 -1
- package/build/__tests__/unit/lib/observatory.test.js +0 -99
- package/build/__tests__/unit/lib/sci/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci/index.test.js +0 -106
- package/build/__tests__/unit/lib/sci-e/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci-e/index.test.js +0 -30
- package/build/__tests__/unit/lib/sci-m/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci-m/index.test.js +0 -58
- package/build/__tests__/unit/lib/sci-o/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci-o/index.test.js +0 -42
- package/build/__tests__/unit/lib/shell-imp/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/shell-imp/index.test.js +0 -21
- package/build/__tests__/unit/lib/supercomputer.test.d.ts +0 -1
- package/build/__tests__/unit/lib/supercomputer.test.js +0 -231
- package/build/__tests__/unit/lib/tdp-finder/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/tdp-finder/index.test.js +0 -62
- package/build/__tests__/unit/lib/teads-aws/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/teads-aws/index.test.js +0 -170
- package/build/__tests__/unit/lib/teads-curve/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/teads-curve/index.test.js +0 -146
- package/build/__tests__/unit/lib/watt-time/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/watt-time/index.test.js +0 -106
- package/build/__tests__/unit/util/args.test.d.ts +0 -1
- package/build/__tests__/unit/util/args.test.js +0 -92
- package/build/__tests__/unit/util/models-universe.test.d.ts +0 -1
- package/build/__tests__/unit/util/models-universe.test.js +0 -193
- package/build/__tests__/unit/util/observatory.test.d.ts +0 -1
- package/build/__tests__/unit/util/observatory.test.js +0 -99
- package/build/__tests__/unit/util/supercomputer.test.d.ts +0 -1
- package/build/__tests__/unit/util/supercomputer.test.js +0 -231
- package/build/__tests__/unit/util/yaml.test.d.ts +0 -1
- package/build/__tests__/unit/util/yaml.test.js +0 -59
- package/build/config/config.d.ts +0 -9
- package/build/config/config.js +0 -51
- package/build/lib/azure-importer/index.d.ts +0 -55
- package/build/lib/azure-importer/index.js +0 -314
- package/build/lib/boavizta/index.d.ts +0 -53
- package/build/lib/boavizta/index.js +0 -254
- package/build/lib/case-studies/aveva-model.d.ts +0 -29
- package/build/lib/case-studies/aveva-model.js +0 -53
- package/build/lib/case-studies/emem-model.d.ts +0 -42
- package/build/lib/case-studies/emem-model.js +0 -93
- package/build/lib/case-studies/eshoppen-model.d.ts +0 -24
- package/build/lib/case-studies/eshoppen-model.js +0 -123
- package/build/lib/case-studies/index.d.ts +0 -4
- package/build/lib/case-studies/index.js +0 -21
- package/build/lib/case-studies/sci-accenture-model.d.ts +0 -10
- package/build/lib/case-studies/sci-accenture-model.js +0 -37
- package/build/lib/ccf/aws-embodied.json +0 -5591
- package/build/lib/ccf/aws-instances.json +0 -21116
- package/build/lib/ccf/aws-use.json +0 -79
- package/build/lib/ccf/azure-embodied.json +0 -6547
- package/build/lib/ccf/azure-instances.json +0 -8332
- package/build/lib/ccf/azure-use.json +0 -58
- package/build/lib/ccf/gcp-embodied.json +0 -3049
- package/build/lib/ccf/gcp-instances.json +0 -3880
- package/build/lib/ccf/gcp-use.json +0 -58
- package/build/lib/ccf/index.d.ts +0 -63
- package/build/lib/ccf/index.js +0 -338
- package/build/lib/cloud-instance-metadata/aws-instances.json +0 -1
- package/build/lib/cloud-instance-metadata/azure-instances.json +0 -1
- package/build/lib/cloud-instance-metadata/index.d.ts +0 -15
- package/build/lib/cloud-instance-metadata/index.js +0 -104
- package/build/lib/index.d.ts +0 -14
- package/build/lib/index.js +0 -32
- package/build/lib/interfaces/ccf.d.ts +0 -19
- package/build/lib/interfaces/ccf.js +0 -3
- package/build/lib/interfaces/index.d.ts +0 -7
- package/build/lib/interfaces/index.js +0 -18
- package/build/lib/observatory.d.ts +0 -20
- package/build/lib/observatory.js +0 -31
- package/build/lib/sci/index.d.ts +0 -13
- package/build/lib/sci/index.js +0 -131
- package/build/lib/sci-e/index.d.ts +0 -38
- package/build/lib/sci-e/index.js +0 -85
- package/build/lib/sci-m/index.d.ts +0 -10
- package/build/lib/sci-m/index.js +0 -124
- package/build/lib/sci-o/index.d.ts +0 -17
- package/build/lib/sci-o/index.js +0 -52
- package/build/lib/shell-imp/index.d.ts +0 -32
- package/build/lib/shell-imp/index.js +0 -82
- package/build/lib/tdp-finder/index.d.ts +0 -19
- package/build/lib/tdp-finder/index.js +0 -98
- package/build/lib/teads-aws/aws-embodied.json +0 -1
- package/build/lib/teads-aws/aws-instances.json +0 -1
- package/build/lib/teads-aws/index.d.ts +0 -58
- package/build/lib/teads-aws/index.js +0 -208
- package/build/lib/teads-curve/index.d.ts +0 -52
- package/build/lib/teads-curve/index.js +0 -158
- package/build/lib/watt-time/index.d.ts +0 -18
- package/build/lib/watt-time/index.js +0 -204
- package/build/types/model-interface.d.ts +0 -16
- package/build/types/model-interface.js +0 -3
- package/build/types/process-args.d.ts +0 -7
- package/build/types/process-args.js +0 -3
- package/build/types/supercomputer.d.ts +0 -4
- package/build/types/supercomputer.js +0 -3
- package/build/util/args.js +0 -48
- package/build/util/errors.d.ts +0 -6
- package/build/util/errors.js +0 -22
- package/build/util/helpers.js +0 -18
- package/build/util/models-universe.d.ts +0 -28
- package/build/util/models-universe.js +0 -95
- package/build/util/observatory.d.ts +0 -20
- package/build/util/observatory.js +0 -31
- package/build/util/supercomputer.d.ts +0 -30
- package/build/util/supercomputer.js +0 -109
- package/docs/implementations/tdp-finder.md +0 -36
- package/examples/impls/test/complex-pipeline.yml +0 -67
- package/examples/impls/test/toto.yaml +0 -22
- package/src/__mocks__/boavizta/countries.json +0 -138
- package/src/__mocks__/boavizta/instance_types.json +0 -625
- package/src/__mocks__/boavizta/providers.json +0 -1
- package/src/__mocks__/watt-time/data.json +0 -119
- package/tsconfig.tsbuildinfo +0 -1
- package/yarn-error.log +0 -5854
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EshoppenNetModel = exports.EshoppenMemModel = exports.EshoppenCpuModel = exports.EshoppenModel = void 0;
|
|
4
|
-
const config_1 = require("../../config");
|
|
5
|
-
const { MODEL_IDS } = config_1.CONFIG;
|
|
6
|
-
const { ESHOPPEN, ESHOPPEN_CPU, ESHOPPEN_MEM, ESHOPPEN_NET } = MODEL_IDS;
|
|
7
|
-
class EshoppenModel {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.authParams = undefined;
|
|
10
|
-
this.modelType = 'energy-cpu';
|
|
11
|
-
}
|
|
12
|
-
authenticate(authParams) {
|
|
13
|
-
this.authParams = authParams;
|
|
14
|
-
}
|
|
15
|
-
async execute(inputs) {
|
|
16
|
-
if (!Array.isArray(inputs)) {
|
|
17
|
-
throw new Error('inputs should be an array');
|
|
18
|
-
}
|
|
19
|
-
const tunedinputs = inputs.map((input) => {
|
|
20
|
-
switch (this.modelType) {
|
|
21
|
-
case 'energy-cpu': {
|
|
22
|
-
// energy-cpu = n-hours * n-chips * thermal-design-power * thermal-design-power-coeff
|
|
23
|
-
input['energy-cpu'] =
|
|
24
|
-
(input['n-hours'] *
|
|
25
|
-
input['n-chips'] *
|
|
26
|
-
input['thermal-design-power'] *
|
|
27
|
-
input['tdp-coeff']) /
|
|
28
|
-
1000;
|
|
29
|
-
if (isNaN(input['energy-cpu'])) {
|
|
30
|
-
throw new Error('energy-cpu not computable');
|
|
31
|
-
}
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
case 'energy-memory': {
|
|
35
|
-
// energy-memory-tdp = n-hours * n-chip * tdp-mem * tdp-coeff
|
|
36
|
-
input['energy-memory'] =
|
|
37
|
-
(input['n-hours'] *
|
|
38
|
-
input['n-chips'] *
|
|
39
|
-
input['tdp-mem'] *
|
|
40
|
-
input['tdp-coeff']) /
|
|
41
|
-
1000;
|
|
42
|
-
if (isNaN(input['energy-memory'])) {
|
|
43
|
-
throw new Error('energy-memory not computable');
|
|
44
|
-
}
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
case 'energy-network': {
|
|
48
|
-
// energy-network = data-in + data-out * net-energy
|
|
49
|
-
input['energy-network'] =
|
|
50
|
-
((input['data-in'] + input['data-out']) * input['net-energy']) /
|
|
51
|
-
1000;
|
|
52
|
-
if (isNaN(input['energy-network'])) {
|
|
53
|
-
throw new Error('energy-network not computable');
|
|
54
|
-
}
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
case 'e-sum': {
|
|
58
|
-
// e-sum = energy-cpu + energy-memory + energy-network
|
|
59
|
-
input['energy'] =
|
|
60
|
-
input['energy-cpu'] +
|
|
61
|
-
input['energy-memory'] +
|
|
62
|
-
input['energy-network'];
|
|
63
|
-
if (isNaN(input['energy'])) {
|
|
64
|
-
throw new Error('energy not computable');
|
|
65
|
-
}
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
default: {
|
|
69
|
-
throw new Error('Unknown msft-eshoppen model type');
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return input;
|
|
73
|
-
});
|
|
74
|
-
return tunedinputs;
|
|
75
|
-
}
|
|
76
|
-
async configure(name, staticParams) {
|
|
77
|
-
this.staticParams = staticParams;
|
|
78
|
-
this.name = name;
|
|
79
|
-
if (staticParams !== undefined &&
|
|
80
|
-
'type' in staticParams &&
|
|
81
|
-
// check that the type is one of the allowed values
|
|
82
|
-
['energy-memory', 'energy-cpu', 'energy-network', 'e-sum'].includes(staticParams['type'])) {
|
|
83
|
-
this.modelType = staticParams['type'];
|
|
84
|
-
delete staticParams['type'];
|
|
85
|
-
}
|
|
86
|
-
return this;
|
|
87
|
-
}
|
|
88
|
-
modelIdentifier() {
|
|
89
|
-
return ESHOPPEN;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.EshoppenModel = EshoppenModel;
|
|
93
|
-
class EshoppenCpuModel extends EshoppenModel {
|
|
94
|
-
constructor() {
|
|
95
|
-
super();
|
|
96
|
-
this.modelType = 'energy-cpu';
|
|
97
|
-
}
|
|
98
|
-
modelIdentifier() {
|
|
99
|
-
return ESHOPPEN_CPU;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
exports.EshoppenCpuModel = EshoppenCpuModel;
|
|
103
|
-
class EshoppenMemModel extends EshoppenModel {
|
|
104
|
-
constructor() {
|
|
105
|
-
super();
|
|
106
|
-
this.modelType = 'energy-memory';
|
|
107
|
-
}
|
|
108
|
-
modelIdentifier() {
|
|
109
|
-
return ESHOPPEN_MEM;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
exports.EshoppenMemModel = EshoppenMemModel;
|
|
113
|
-
class EshoppenNetModel extends EshoppenModel {
|
|
114
|
-
constructor() {
|
|
115
|
-
super();
|
|
116
|
-
this.modelType = 'energy-network';
|
|
117
|
-
}
|
|
118
|
-
modelIdentifier() {
|
|
119
|
-
return ESHOPPEN_NET;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
exports.EshoppenNetModel = EshoppenNetModel;
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNob3BwZW4tbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Nhc2Utc3R1ZGllcy9lc2hvcHBlbi1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx5Q0FBb0M7QUFNcEMsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUMzQixNQUFNLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFDLEdBQUcsU0FBUyxDQUFDO0FBRXZFLE1BQWEsYUFBYTtJQUExQjtRQUNFLGVBQVUsR0FBdUIsU0FBUyxDQUFDO1FBQzNDLGNBQVMsR0FDUCxZQUFZLENBQUM7SUEyR2pCLENBQUM7SUF2R0MsWUFBWSxDQUFDLFVBQWtCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQXFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUM5QztRQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDckQsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN0QixLQUFLLFlBQVksQ0FBQyxDQUFDO29CQUNqQix5RkFBeUY7b0JBQ3pGLEtBQUssQ0FBQyxZQUFZLENBQUM7d0JBQ2pCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQzs0QkFDZixLQUFLLENBQUMsU0FBUyxDQUFDOzRCQUNoQixLQUFLLENBQUMsc0JBQXNCLENBQUM7NEJBQzdCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQzs0QkFDckIsSUFBSSxDQUFDO29CQUNQLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFF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QUcsZUFBZSxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBVEQsNENBU0M7QUFFRCxNQUFhLGdCQUFpQixTQUFRLGFBQWE7SUFDakQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7SUFDcEMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0NBQ0Y7QUFURCw0Q0FTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SU91dHB1dE1vZGVsSW50ZXJmYWNlfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtDT05GSUd9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7S2V5VmFsdWVQYWlyfSBmcm9tICcuLi8uLi90eXBlcy9jb21tb24nO1xuXG5leHBvcnQge0tleVZhbHVlUGFpcn0gZnJvbSAnLi4vLi4vdHlwZXMvY29tbW9uJztcblxuY29uc3Qge01PREVMX0lEU30gPSBDT05GSUc7XG5jb25zdCB7RVNIT1BQRU4sIEVTSE9QUEVOX0NQVSwgRVNIT1BQRU5fTUVNLCBFU0hPUFBFTl9ORVR9ID0gTU9ERUxfSURTO1xuXG5leHBvcnQgY2xhc3MgRXNob3BwZW5Nb2RlbCBpbXBsZW1lbnRzIElPdXRwdXRNb2RlbEludGVyZmFjZSB7XG4gIGF1dGhQYXJhbXM6IG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgbW9kZWxUeXBlOiAnZW5lcmd5LWNwdScgfCAnZW5lcmd5LW1lbW9yeScgfCAnZW5lcmd5LW5ldHdvcmsnIHwgJ2Utc3VtJyA9XG4gICAgJ2VuZXJneS1jcHUnO1xuICBzdGF0aWNQYXJhbXM6IG9iamVjdCB8IHVuZGVmaW5lZDtcbiAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGF1dGhlbnRpY2F0ZShhdXRoUGFyYW1zOiBvYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhQYXJhbXMgPSBhdXRoUGFyYW1zO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dHM6IG9iamVjdCB8IG9iamVjdFtdIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShpbnB1dHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lucHV0cyBzaG91bGQgYmUgYW4gYXJyYXknKTtcbiAgICB9XG5cbiAgICBjb25zdCB0dW5lZGlucHV0cyA9IGlucHV0cy5tYXAoKGlucHV0OiBLZXlWYWx1ZVBhaXIpID0+IHtcbiAgICAgIHN3aXRjaCAodGhpcy5tb2RlbFR5cGUpIHtcbiAgICAgICAgY2FzZSAnZW5lcmd5LWNwdSc6IHtcbiAgICAgICAgICAvLyAgICAgZW5lcmd5LWNwdSA9IG4taG91cnMgKiBuLWNoaXBzICogdGhlcm1hbC1kZXNpZ24tcG93ZXIgKiB0aGVybWFsLWRlc2lnbi1wb3dlci1jb2VmZlxuICAgICAgICAgIGlucHV0WydlbmVyZ3ktY3B1J10gPVxuICAgICAgICAgICAgKGlucHV0WyduLWhvdXJzJ10gKlxuICAgICAgICAgICAgICBpbnB1dFsnbi1jaGlwcyddICpcbiAgICAgICAgICAgICAgaW5wdXRbJ3RoZXJtYWwtZGVzaWduLXBvd2VyJ10gKlxuICAgICAgICAgICAgICBpbnB1dFsndGRwLWNvZWZmJ10pIC9cbiAgICAgICAgICAgIDEwMDA7XG4gICAgICAgICAgaWYgKGlzTmFOKGlucHV0WydlbmVyZ3ktY3B1J10pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2VuZXJneS1jcHUgbm90IGNvbXB1dGFibGUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdlbmVyZ3ktbWVtb3J5Jzoge1xuICAgICAgICAgIC8vIGVuZXJneS1tZW1vcnktdGRwICA9ICBuLWhvdXJzICogbi1jaGlwICogdGRwLW1lbSAqIHRkcC1jb2VmZlxuICAgICAgICAgIGlucHV0WydlbmVyZ3ktbWVtb3J5J10gPVxuICAgICAgICAgICAgKGlucHV0WyduLWhvdXJzJ10gKlxuICAgICAgICAgICAgICBpbnB1dFsnbi1jaGlwcyddICpcbiAgICAgICAgICAgICAgaW5wdXRbJ3RkcC1tZW0nXSAqXG4gICAgICAgICAgICAgIGlucHV0Wyd0ZHAtY29lZmYnXSkgL1xuICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgIGlmIChpc05hTihpbnB1dFsnZW5lcmd5LW1lbW9yeSddKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmVyZ3ktbWVtb3J5IG5vdCBjb21wdXRhYmxlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnZW5lcmd5LW5ldHdvcmsnOiB7XG4gICAgICAgICAgLy8gZW5lcmd5LW5ldHdvcmsgPSBkYXRhLWluICsgZGF0YS1vdXQgKiBuZXQtZW5lcmd5XG4gICAgICAgICAgaW5wdXRbJ2VuZXJneS1uZXR3b3JrJ10gPVxuICAgICAgICAgICAgKChpbnB1dFsnZGF0YS1pbiddICsgaW5wdXRbJ2RhdGEtb3V0J10pICogaW5wdXRbJ25ldC1lbmVyZ3knXSkgL1xuICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgIGlmIChpc05hTihpbnB1dFsnZW5lcmd5LW5ldHdvcmsnXSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5lcmd5LW5ldHdvcmsgbm90IGNvbXB1dGFibGUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdlLXN1bSc6IHtcbiAgICAgICAgICAvLyBlLXN1bSA9IGVuZXJneS1jcHUgKyBlbmVyZ3ktbWVtb3J5ICsgZW5lcmd5LW5ldHdvcmtcbiAgICAgICAgICBpbnB1dFsnZW5lcmd5J10gPVxuICAgICAgICAgICAgaW5wdXRbJ2VuZXJneS1jcHUnXSArXG4gICAgICAgICAgICBpbnB1dFsnZW5lcmd5LW1lbW9yeSddICtcbiAgICAgICAgICAgIGlucHV0WydlbmVyZ3ktbmV0d29yayddO1xuXG4gICAgICAgICAgaWYgKGlzTmFOKGlucHV0WydlbmVyZ3knXSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5lcmd5IG5vdCBjb21wdXRhYmxlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBtc2Z0LWVzaG9wcGVuIG1vZGVsIHR5cGUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHVuZWRpbnB1dHM7XG4gIH1cblxuICBhc3luYyBjb25maWd1cmUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHN0YXRpY1BhcmFtczogb2JqZWN0IHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8SU91dHB1dE1vZGVsSW50ZXJmYWNlPiB7XG4gICAgdGhpcy5zdGF0aWNQYXJhbXMgPSBzdGF0aWNQYXJhbXM7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICBpZiAoXG4gICAgICBzdGF0aWNQYXJhbXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgJ3R5cGUnIGluIHN0YXRpY1BhcmFtcyAmJlxuICAgICAgLy8gY2hlY2sgdGhhdCB0aGUgdHlwZSBpcyBvbmUgb2YgdGhlIGFsbG93ZWQgdmFsdWVzXG4gICAgICBbJ2VuZXJneS1tZW1vcnknLCAnZW5lcmd5LWNwdScsICdlbmVyZ3ktbmV0d29yaycsICdlLXN1bSddLmluY2x1ZGVzKFxuICAgICAgICBzdGF0aWNQYXJhbXNbJ3R5cGUnXSBhcyBzdHJpbmdcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMubW9kZWxUeXBlID0gc3RhdGljUGFyYW1zWyd0eXBlJ10gYXNcbiAgICAgICAgfCAnZW5lcmd5LWNwdSdcbiAgICAgICAgfCAnZW5lcmd5LW1lbW9yeSdcbiAgICAgICAgfCAnZW5lcmd5LW5ldHdvcmsnXG4gICAgICAgIHwgJ2Utc3VtJztcbiAgICAgIGRlbGV0ZSBzdGF0aWNQYXJhbXNbJ3R5cGUnXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtb2RlbElkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRVNIT1BQRU47XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVzaG9wcGVuQ3B1TW9kZWwgZXh0ZW5kcyBFc2hvcHBlbk1vZGVsIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm1vZGVsVHlwZSA9ICdlbmVyZ3ktY3B1JztcbiAgfVxuXG4gIG1vZGVsSWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBFU0hPUFBFTl9DUFU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVzaG9wcGVuTWVtTW9kZWwgZXh0ZW5kcyBFc2hvcHBlbk1vZGVsIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm1vZGVsVHlwZSA9ICdlbmVyZ3ktbWVtb3J5JztcbiAgfVxuXG4gIG1vZGVsSWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBFU0hPUFBFTl9NRU07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVzaG9wcGVuTmV0TW9kZWwgZXh0ZW5kcyBFc2hvcHBlbk1vZGVsIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm1vZGVsVHlwZSA9ICdlbmVyZ3ktbmV0d29yayc7XG4gIH1cblxuICBtb2RlbElkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRVNIT1BQRU5fTkVUO1xuICB9XG59XG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./eshoppen-model"), exports);
|
|
18
|
-
__exportStar(require("./sci-accenture-model"), exports);
|
|
19
|
-
__exportStar(require("./aveva-model"), exports);
|
|
20
|
-
__exportStar(require("./emem-model"), exports);
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Nhc2Utc3R1ZGllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWlDO0FBQ2pDLHdEQUFzQztBQUN0QyxnREFBOEI7QUFDOUIsK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9lc2hvcHBlbi1tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NjaS1hY2NlbnR1cmUtbW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hdmV2YS1tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VtZW0tbW9kZWwnO1xuIl19
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { IOutputModelInterface } from '../interfaces';
|
|
2
|
-
export declare class SciAccentureModel implements IOutputModelInterface {
|
|
3
|
-
authParams: object | undefined;
|
|
4
|
-
staticParams: object | undefined;
|
|
5
|
-
name: string | undefined;
|
|
6
|
-
authenticate(authParams: object): void;
|
|
7
|
-
execute(inputs: object | object[] | undefined): Promise<any[]>;
|
|
8
|
-
configure(name: string, staticParams: object | undefined): Promise<IOutputModelInterface>;
|
|
9
|
-
modelIdentifier(): string;
|
|
10
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SciAccentureModel = void 0;
|
|
4
|
-
const config_1 = require("../../config");
|
|
5
|
-
const { MODEL_IDS } = config_1.CONFIG;
|
|
6
|
-
const { SCI_ACCENTURE } = MODEL_IDS;
|
|
7
|
-
class SciAccentureModel {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.authParams = undefined;
|
|
10
|
-
}
|
|
11
|
-
authenticate(authParams) {
|
|
12
|
-
this.authParams = authParams;
|
|
13
|
-
}
|
|
14
|
-
async execute(inputs) {
|
|
15
|
-
if (!Array.isArray(inputs)) {
|
|
16
|
-
throw new Error('inputs should be an array');
|
|
17
|
-
}
|
|
18
|
-
const tunedinputs = inputs.map((input) => {
|
|
19
|
-
input['sci_total'] = input['sci'] * 1.05;
|
|
20
|
-
if (isNaN(input['sci'])) {
|
|
21
|
-
throw new Error('sci not computable');
|
|
22
|
-
}
|
|
23
|
-
return input;
|
|
24
|
-
});
|
|
25
|
-
return tunedinputs;
|
|
26
|
-
}
|
|
27
|
-
async configure(name, staticParams) {
|
|
28
|
-
this.staticParams = staticParams;
|
|
29
|
-
this.name = name;
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
modelIdentifier() {
|
|
33
|
-
return SCI_ACCENTURE;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.SciAccentureModel = SciAccentureModel;
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NpLWFjY2VudHVyZS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY2FzZS1zdHVkaWVzL3NjaS1hY2NlbnR1cmUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUNBQW9DO0FBSXBDLE1BQU0sRUFBQyxTQUFTLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDM0IsTUFBTSxFQUFDLGFBQWEsRUFBQyxHQUFHLFNBQVMsQ0FBQztBQUVsQyxNQUFhLGlCQUFpQjtJQUE5QjtRQUNFLGVBQVUsR0FBdUIsU0FBUyxDQUFDO0lBc0M3QyxDQUFDO0lBbENDLFlBQVksQ0FBQyxVQUFrQjtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFxQztRQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDOUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQ3JELEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBRXpDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDdkM7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQ2IsSUFBWSxFQUNaLFlBQWdDO1FBRWhDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUF2Q0QsOENBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJT3V0cHV0TW9kZWxJbnRlcmZhY2V9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge0NPTkZJR30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuaW1wb3J0IHtLZXlWYWx1ZVBhaXJ9IGZyb20gJy4uLy4uL3R5cGVzL2NvbW1vbic7XG5cbmNvbnN0IHtNT0RFTF9JRFN9ID0gQ09ORklHO1xuY29uc3Qge1NDSV9BQ0NFTlRVUkV9ID0gTU9ERUxfSURTO1xuXG5leHBvcnQgY2xhc3MgU2NpQWNjZW50dXJlTW9kZWwgaW1wbGVtZW50cyBJT3V0cHV0TW9kZWxJbnRlcmZhY2Uge1xuICBhdXRoUGFyYW1zOiBvYmplY3QgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHN0YXRpY1BhcmFtczogb2JqZWN0IHwgdW5kZWZpbmVkO1xuICBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgYXV0aGVudGljYXRlKGF1dGhQYXJhbXM6IG9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aFBhcmFtcyA9IGF1dGhQYXJhbXM7XG4gIH1cblxuICBhc3luYyBleGVjdXRlKGlucHV0czogb2JqZWN0IHwgb2JqZWN0W10gfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0cykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW5wdXRzIHNob3VsZCBiZSBhbiBhcnJheScpO1xuICAgIH1cblxuICAgIGNvbnN0IHR1bmVkaW5wdXRzID0gaW5wdXRzLm1hcCgoaW5wdXQ6IEtleVZhbHVlUGFpcikgPT4ge1xuICAgICAgaW5wdXRbJ3NjaV90b3RhbCddID0gaW5wdXRbJ3NjaSddICogMS4wNTtcblxuICAgICAgaWYgKGlzTmFOKGlucHV0WydzY2knXSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzY2kgbm90IGNvbXB1dGFibGUnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR1bmVkaW5wdXRzO1xuICB9XG5cbiAgYXN5bmMgY29uZmlndXJlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBzdGF0aWNQYXJhbXM6IG9iamVjdCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPElPdXRwdXRNb2RlbEludGVyZmFjZT4ge1xuICAgIHRoaXMuc3RhdGljUGFyYW1zID0gc3RhdGljUGFyYW1zO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtb2RlbElkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0NJX0FDQ0VOVFVSRTtcbiAgfVxufVxuIl19
|