@grnsft/if 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/.devcontainer/devcontainer.json +38 -0
  2. package/.editorconfig +8 -0
  3. package/.env.example +9 -0
  4. package/.eslintignore +4 -0
  5. package/.eslintrc.json +8 -0
  6. package/.github/ISSUE_TEMPLATE/agenda.md +36 -0
  7. package/.github/ISSUE_TEMPLATE/blank-issue.md +10 -0
  8. package/.github/ISSUE_TEMPLATE/feedback.md +42 -0
  9. package/.github/ISSUE_TEMPLATE/model-plugin.md +63 -0
  10. package/.github/ISSUE_TEMPLATE/user-story.md +10 -0
  11. package/.github/PULL_REQUEST_TEMPLATE.md +21 -0
  12. package/.github/workflows/nodejs-ci.yml +34 -0
  13. package/.gitmodules +3 -0
  14. package/.prettierrc.js +3 -0
  15. package/CONTRIBUTING.md +194 -0
  16. package/LICENSE +21 -0
  17. package/Makefile +16 -0
  18. package/README.md +67 -0
  19. package/build/__mocks__/azure/index.d.ts +11 -0
  20. package/build/__mocks__/azure/index.js +132 -0
  21. package/build/__mocks__/boavizta/countries.json +138 -0
  22. package/build/__mocks__/boavizta/instance_types.json +625 -0
  23. package/build/__mocks__/boavizta/providers.json +1 -0
  24. package/build/__mocks__/fs/index.d.ts +3 -0
  25. package/build/__mocks__/fs/index.js +56 -0
  26. package/build/__mocks__/model-universe/index.d.ts +33 -0
  27. package/build/__mocks__/model-universe/index.js +68 -0
  28. package/build/__mocks__/watt-time/data.json +119 -0
  29. package/build/__tests__/integration/ompl/index.test.d.ts +1 -0
  30. package/build/__tests__/integration/ompl/index.test.js +61 -0
  31. package/build/__tests__/unit/lib/azure-importer/index.test.d.ts +1 -0
  32. package/build/__tests__/unit/lib/azure-importer/index.test.js +152 -0
  33. package/build/__tests__/unit/lib/boavizta/index.test.d.ts +1 -0
  34. package/build/__tests__/unit/lib/boavizta/index.test.js +579 -0
  35. package/build/__tests__/unit/lib/case-studies/aveva.test.d.ts +1 -0
  36. package/build/__tests__/unit/lib/case-studies/aveva.test.js +36 -0
  37. package/build/__tests__/unit/lib/case-studies/emem.test.d.ts +1 -0
  38. package/build/__tests__/unit/lib/case-studies/emem.test.js +108 -0
  39. package/build/__tests__/unit/lib/case-studies/eshoppen.test.d.ts +1 -0
  40. package/build/__tests__/unit/lib/case-studies/eshoppen.test.js +53 -0
  41. package/build/__tests__/unit/lib/case-studies/sci-accenture.test.d.ts +1 -0
  42. package/build/__tests__/unit/lib/case-studies/sci-accenture.test.js +23 -0
  43. package/build/__tests__/unit/lib/ccf/index.test.d.ts +1 -0
  44. package/build/__tests__/unit/lib/ccf/index.test.js +223 -0
  45. package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.d.ts +1 -0
  46. package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.js +73 -0
  47. package/build/__tests__/unit/lib/sci/index.test.d.ts +1 -0
  48. package/build/__tests__/unit/lib/sci/index.test.js +106 -0
  49. package/build/__tests__/unit/lib/sci-e/index.test.d.ts +1 -0
  50. package/build/__tests__/unit/lib/sci-e/index.test.js +30 -0
  51. package/build/__tests__/unit/lib/sci-m/index.test.d.ts +1 -0
  52. package/build/__tests__/unit/lib/sci-m/index.test.js +58 -0
  53. package/build/__tests__/unit/lib/sci-o/index.test.d.ts +1 -0
  54. package/build/__tests__/unit/lib/sci-o/index.test.js +42 -0
  55. package/build/__tests__/unit/lib/shell-imp/index.test.d.ts +1 -0
  56. package/build/__tests__/unit/lib/shell-imp/index.test.js +21 -0
  57. package/build/__tests__/unit/lib/tdp-finder/index.test.d.ts +1 -0
  58. package/build/__tests__/unit/lib/tdp-finder/index.test.js +62 -0
  59. package/build/__tests__/unit/lib/teads-aws/index.test.d.ts +1 -0
  60. package/build/__tests__/unit/lib/teads-aws/index.test.js +170 -0
  61. package/build/__tests__/unit/lib/teads-curve/index.test.d.ts +1 -0
  62. package/build/__tests__/unit/lib/teads-curve/index.test.js +146 -0
  63. package/build/__tests__/unit/lib/watt-time/index.test.d.ts +1 -0
  64. package/build/__tests__/unit/lib/watt-time/index.test.js +106 -0
  65. package/build/__tests__/unit/util/args.test.d.ts +1 -0
  66. package/build/__tests__/unit/util/args.test.js +92 -0
  67. package/build/__tests__/unit/util/models-universe.test.d.ts +1 -0
  68. package/build/__tests__/unit/util/models-universe.test.js +211 -0
  69. package/build/__tests__/unit/util/observatory.test.d.ts +1 -0
  70. package/build/__tests__/unit/util/observatory.test.js +91 -0
  71. package/build/__tests__/unit/util/supercomputer.test.d.ts +1 -0
  72. package/build/__tests__/unit/util/supercomputer.test.js +231 -0
  73. package/build/__tests__/unit/util/yaml.test.d.ts +1 -0
  74. package/build/__tests__/unit/util/yaml.test.js +59 -0
  75. package/build/config/config.d.ts +32 -0
  76. package/build/config/config.js +74 -0
  77. package/build/config/index.d.ts +2 -0
  78. package/build/config/index.js +8 -0
  79. package/build/config/strings.d.ts +14 -0
  80. package/build/config/strings.js +30 -0
  81. package/build/index.d.ts +1 -0
  82. package/build/index.js +46 -0
  83. package/build/lib/azure-importer/index.d.ts +55 -0
  84. package/build/lib/azure-importer/index.js +314 -0
  85. package/build/lib/boavizta/index.d.ts +53 -0
  86. package/build/lib/boavizta/index.js +254 -0
  87. package/build/lib/case-studies/aveva-model.d.ts +29 -0
  88. package/build/lib/case-studies/aveva-model.js +53 -0
  89. package/build/lib/case-studies/emem-model.d.ts +42 -0
  90. package/build/lib/case-studies/emem-model.js +93 -0
  91. package/build/lib/case-studies/eshoppen-model.d.ts +24 -0
  92. package/build/lib/case-studies/eshoppen-model.js +123 -0
  93. package/build/lib/case-studies/index.d.ts +4 -0
  94. package/build/lib/case-studies/index.js +21 -0
  95. package/build/lib/case-studies/sci-accenture-model.d.ts +10 -0
  96. package/build/lib/case-studies/sci-accenture-model.js +37 -0
  97. package/build/lib/ccf/aws-embodied.json +5591 -0
  98. package/build/lib/ccf/aws-instances.json +21116 -0
  99. package/build/lib/ccf/aws-use.json +79 -0
  100. package/build/lib/ccf/azure-embodied.json +6547 -0
  101. package/build/lib/ccf/azure-instances.json +8332 -0
  102. package/build/lib/ccf/azure-use.json +58 -0
  103. package/build/lib/ccf/gcp-embodied.json +3049 -0
  104. package/build/lib/ccf/gcp-instances.json +3880 -0
  105. package/build/lib/ccf/gcp-use.json +58 -0
  106. package/build/lib/ccf/index.d.ts +63 -0
  107. package/build/lib/ccf/index.js +338 -0
  108. package/build/lib/cloud-instance-metadata/aws-instances.json +1 -0
  109. package/build/lib/cloud-instance-metadata/azure-instances.json +1 -0
  110. package/build/lib/cloud-instance-metadata/index.d.ts +15 -0
  111. package/build/lib/cloud-instance-metadata/index.js +104 -0
  112. package/build/lib/index.d.ts +15 -0
  113. package/build/lib/index.js +32 -0
  114. package/build/lib/interfaces/ccf.d.ts +19 -0
  115. package/build/lib/interfaces/ccf.js +3 -0
  116. package/build/lib/interfaces/index.d.ts +7 -0
  117. package/build/lib/interfaces/index.js +18 -0
  118. package/build/lib/sci/index.d.ts +13 -0
  119. package/build/lib/sci/index.js +131 -0
  120. package/build/lib/sci-e/index.d.ts +38 -0
  121. package/build/lib/sci-e/index.js +85 -0
  122. package/build/lib/sci-m/index.d.ts +10 -0
  123. package/build/lib/sci-m/index.js +124 -0
  124. package/build/lib/sci-o/index.d.ts +17 -0
  125. package/build/lib/sci-o/index.js +52 -0
  126. package/build/lib/shell-imp/index.d.ts +32 -0
  127. package/build/lib/shell-imp/index.js +82 -0
  128. package/build/lib/tdp-finder/index.d.ts +19 -0
  129. package/build/lib/tdp-finder/index.js +98 -0
  130. package/build/lib/teads-aws/aws-embodied.json +1 -0
  131. package/build/lib/teads-aws/aws-instances.json +1 -0
  132. package/build/lib/teads-aws/index.d.ts +58 -0
  133. package/build/lib/teads-aws/index.js +208 -0
  134. package/build/lib/teads-curve/index.d.ts +52 -0
  135. package/build/lib/teads-curve/index.js +158 -0
  136. package/build/lib/watt-time/index.d.ts +18 -0
  137. package/build/lib/watt-time/index.js +204 -0
  138. package/build/types/azure-importer.d.ts +29 -0
  139. package/build/types/azure-importer.js +3 -0
  140. package/build/types/boavizta.d.ts +7 -0
  141. package/build/types/boavizta.js +3 -0
  142. package/build/types/common.d.ts +7 -0
  143. package/build/types/common.js +9 -0
  144. package/build/types/impl.d.ts +40 -0
  145. package/build/types/impl.js +3 -0
  146. package/build/types/models-universe.d.ts +24 -0
  147. package/build/types/models-universe.js +3 -0
  148. package/build/types/process-args.d.ts +7 -0
  149. package/build/types/process-args.js +3 -0
  150. package/build/types/supercomputer.d.ts +4 -0
  151. package/build/types/supercomputer.js +3 -0
  152. package/build/util/args.d.ts +8 -0
  153. package/build/util/args.js +48 -0
  154. package/build/util/errors.d.ts +6 -0
  155. package/build/util/errors.js +22 -0
  156. package/build/util/helpers.d.ts +4 -0
  157. package/build/util/helpers.js +18 -0
  158. package/build/util/models-universe.d.ts +28 -0
  159. package/build/util/models-universe.js +95 -0
  160. package/build/util/observatory.d.ts +20 -0
  161. package/build/util/observatory.js +31 -0
  162. package/build/util/supercomputer.d.ts +30 -0
  163. package/build/util/supercomputer.js +109 -0
  164. package/build/util/validations.d.ts +25 -0
  165. package/build/util/validations.js +52 -0
  166. package/build/util/yaml.d.ts +13 -0
  167. package/build/util/yaml.js +36 -0
  168. package/coverage/clover.xml +1172 -0
  169. package/coverage/coverage-final.json +27 -0
  170. package/coverage/lcov-report/base.css +224 -0
  171. package/coverage/lcov-report/block-navigation.js +87 -0
  172. package/coverage/lcov-report/config/config.ts.html +310 -0
  173. package/coverage/lcov-report/config/index.html +146 -0
  174. package/coverage/lcov-report/config/index.ts.html +91 -0
  175. package/coverage/lcov-report/config/strings.ts.html +118 -0
  176. package/coverage/lcov-report/favicon.png +0 -0
  177. package/coverage/lcov-report/index.html +341 -0
  178. package/coverage/lcov-report/lib/boavizta/index.html +116 -0
  179. package/coverage/lcov-report/lib/boavizta/index.ts.html +1171 -0
  180. package/coverage/lcov-report/lib/case-studies/aveva-model.ts.html +277 -0
  181. package/coverage/lcov-report/lib/case-studies/emem-model.ts.html +439 -0
  182. package/coverage/lcov-report/lib/case-studies/eshoppen-model.ts.html +550 -0
  183. package/coverage/lcov-report/lib/case-studies/index.html +176 -0
  184. package/coverage/lcov-report/lib/case-studies/index.ts.html +97 -0
  185. package/coverage/lcov-report/lib/case-studies/sci-accenture-model.ts.html +232 -0
  186. package/coverage/lcov-report/lib/ccf/index.html +116 -0
  187. package/coverage/lcov-report/lib/ccf/index.ts.html +1339 -0
  188. package/coverage/lcov-report/lib/cloud-instance-metadata/index.html +116 -0
  189. package/coverage/lcov-report/lib/cloud-instance-metadata/index.ts.html +370 -0
  190. package/coverage/lcov-report/lib/index.html +116 -0
  191. package/coverage/lcov-report/lib/index.ts.html +121 -0
  192. package/coverage/lcov-report/lib/sci/index.html +116 -0
  193. package/coverage/lcov-report/lib/sci/index.ts.html +571 -0
  194. package/coverage/lcov-report/lib/sci-e/index.html +116 -0
  195. package/coverage/lcov-report/lib/sci-e/index.ts.html +403 -0
  196. package/coverage/lcov-report/lib/sci-m/index.html +116 -0
  197. package/coverage/lcov-report/lib/sci-m/index.ts.html +487 -0
  198. package/coverage/lcov-report/lib/sci-o/index.html +116 -0
  199. package/coverage/lcov-report/lib/sci-o/index.ts.html +265 -0
  200. package/coverage/lcov-report/lib/shell-imp/index.html +116 -0
  201. package/coverage/lcov-report/lib/shell-imp/index.ts.html +376 -0
  202. package/coverage/lcov-report/lib/teads-aws/index.html +116 -0
  203. package/coverage/lcov-report/lib/teads-aws/index.ts.html +823 -0
  204. package/coverage/lcov-report/lib/teads-curve/index.html +116 -0
  205. package/coverage/lcov-report/lib/teads-curve/index.ts.html +625 -0
  206. package/coverage/lcov-report/lib/watt-time/index.html +116 -0
  207. package/coverage/lcov-report/lib/watt-time/index.ts.html +829 -0
  208. package/coverage/lcov-report/prettify.css +1 -0
  209. package/coverage/lcov-report/prettify.js +2 -0
  210. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  211. package/coverage/lcov-report/sorter.js +196 -0
  212. package/coverage/lcov-report/types/common.ts.html +109 -0
  213. package/coverage/lcov-report/types/index.html +116 -0
  214. package/coverage/lcov-report/util/args.ts.html +244 -0
  215. package/coverage/lcov-report/util/index.html +176 -0
  216. package/coverage/lcov-report/util/models-universe.ts.html +679 -0
  217. package/coverage/lcov-report/util/observatory.ts.html +229 -0
  218. package/coverage/lcov-report/util/supercomputer.ts.html +466 -0
  219. package/coverage/lcov-report/util/yaml.ts.html +193 -0
  220. package/coverage/lcov.info +2094 -0
  221. package/docs/implementations/tdp-finder.md +36 -0
  222. package/examples/impls/case-studies/accenture.yml +155 -0
  223. package/examples/impls/case-studies/aveva.yaml +48 -0
  224. package/examples/impls/case-studies/azure-yassine.yaml +67 -0
  225. package/examples/impls/case-studies/boavizta.yml +26 -0
  226. package/examples/impls/case-studies/dow_msft.yml +173 -0
  227. package/examples/impls/case-studies/farm-insights.yaml +35 -0
  228. package/examples/impls/case-studies/gsf-website.yaml +93 -0
  229. package/examples/impls/case-studies/msft-eshoppen.yaml +162 -0
  230. package/examples/impls/case-studies/msft-green-ai.yaml +58 -0
  231. package/examples/impls/case-studies/ntt-data-on-premise.yaml +201 -0
  232. package/examples/impls/tdp-finder-test.yml +19 -0
  233. package/examples/impls/test/azure.yml +26 -0
  234. package/examples/impls/test/ccf.yml +19 -0
  235. package/examples/impls/test/complex-pipeline.yml +67 -0
  236. package/examples/impls/test/if-demo.yml +51 -0
  237. package/examples/impls/test/metadata.yml +20 -0
  238. package/examples/impls/test/nesting.yml +65 -0
  239. package/examples/impls/test/sci-e.yml +21 -0
  240. package/examples/impls/test/sci-m.yml +24 -0
  241. package/examples/impls/test/sci-o.yml +28 -0
  242. package/examples/impls/test/sci.yml +27 -0
  243. package/examples/impls/test/shell.yml +18 -0
  244. package/examples/impls/test/toto.yaml +22 -0
  245. package/examples/ompls/azure.yml +145 -0
  246. package/examples/ompls/ccf.yml +27 -0
  247. package/examples/ompls/complex-pipeline.yml +105 -0
  248. package/examples/ompls/full-sci.yml +64 -0
  249. package/examples/ompls/if-demo.yml +493 -0
  250. package/examples/ompls/metadata.yml +29 -0
  251. package/examples/ompls/nesting.yml +107 -0
  252. package/examples/ompls/sci-e.yml +23 -0
  253. package/examples/ompls/sci-m.yml +33 -0
  254. package/examples/ompls/sci-o.yml +29 -0
  255. package/examples/ompls/sci.yml +36 -0
  256. package/examples/ompls/shell.yml +23 -0
  257. package/jest.config.js +14 -0
  258. package/package.json +71 -0
  259. package/scripts/impact-test.sh +12 -0
  260. package/src/__mocks__/boavizta/countries.json +138 -0
  261. package/src/__mocks__/boavizta/instance_types.json +625 -0
  262. package/src/__mocks__/boavizta/providers.json +1 -0
  263. package/src/__mocks__/watt-time/data.json +119 -0
  264. package/src/config/units.yaml +125 -0
  265. package/src/lib/ccf/aws-embodied.json +5591 -0
  266. package/src/lib/ccf/aws-instances.json +21116 -0
  267. package/src/lib/ccf/aws-use.json +79 -0
  268. package/src/lib/ccf/azure-embodied.json +6547 -0
  269. package/src/lib/ccf/azure-instances.json +8332 -0
  270. package/src/lib/ccf/azure-use.json +58 -0
  271. package/src/lib/ccf/gcp-embodied.json +3049 -0
  272. package/src/lib/ccf/gcp-instances.json +3880 -0
  273. package/src/lib/ccf/gcp-use.json +58 -0
  274. package/src/lib/cloud-instance-metadata/aws-instances.json +1 -0
  275. package/src/lib/cloud-instance-metadata/azure-instances.json +1 -0
  276. package/src/lib/shell-imp/sampler +30 -0
  277. package/src/lib/tdp-finder/README.md +7 -0
  278. package/src/lib/tdp-finder/boavizta_data.csv +1768 -0
  279. package/src/lib/tdp-finder/data.csv +4460 -0
  280. package/src/lib/tdp-finder/data2.csv +2162 -0
  281. package/src/lib/teads-aws/aws-embodied.json +1 -0
  282. package/src/lib/teads-aws/aws-instances.json +1 -0
  283. package/tsconfig.test.json +39 -0
  284. package/tsconfig.tsbuildinfo +1 -0
  285. package/yarn-error.log +5854 -0
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudInstanceMetadataModel = void 0;
4
+ const config_1 = require("../../config");
5
+ const AWS_INSTANCES = require("./aws-instances.json");
6
+ const AZURE_INSTANCES = require("./azure-instances.json");
7
+ const { MODEL_IDS } = config_1.CONFIG;
8
+ const { CLOUD_INSTANCE_METADATA } = MODEL_IDS;
9
+ class CloudInstanceMetadataModel {
10
+ constructor() {
11
+ this.authParams = undefined;
12
+ }
13
+ authenticate(authParams) {
14
+ this.authParams = authParams;
15
+ }
16
+ /**
17
+ * Each input require:
18
+ * @param {Object[]} inputs
19
+ * @param {string} inputs[].timestamp RFC3339 timestamp string
20
+ */
21
+ async execute(inputs) {
22
+ if (inputs === undefined) {
23
+ throw new Error('Required Parameters not provided');
24
+ }
25
+ else if (!Array.isArray(inputs)) {
26
+ throw new Error('inputs must be an array');
27
+ }
28
+ return inputs.map((input) => {
29
+ let vendor = '';
30
+ let instance_type = '';
31
+ if ('cloud-vendor' in input) {
32
+ vendor = input['cloud-vendor'];
33
+ }
34
+ else {
35
+ throw new Error('Each input must contain a cloud-vendor key');
36
+ }
37
+ // if ('cloud-region' in input) {
38
+ // region = input['cloud-region'];
39
+ // } else {
40
+ // throw new Error('Each input must contain a cloud-region key');
41
+ // }
42
+ if ('cloud-instance-type' in input) {
43
+ instance_type = input['cloud-instance-type'];
44
+ }
45
+ else {
46
+ throw new Error('Each input must contain a cloud-instance-type key');
47
+ }
48
+ // console.log(['aws', 'azure'].includes(vendor));
49
+ if (!['aws', 'azure'].includes(vendor)) {
50
+ throw new Error('cloud-vendor: Only `aws`/`azure` is currently supported');
51
+ }
52
+ if (vendor === 'aws') {
53
+ const instance = AWS_INSTANCES.find(instance => instance['Instance type'] === instance_type);
54
+ if (instance) {
55
+ input['vcpus-allocated'] = instance['Instance vCPU'];
56
+ input['vcpus-total'] = instance['Platform Total Number of vCPU'];
57
+ input['memory-available'] = instance['Instance Memory (in GB)'];
58
+ const cpuType = instance['Platform CPU Name'];
59
+ let platform = '';
60
+ if (cpuType.startsWith('EPYC')) {
61
+ platform = 'AMD';
62
+ }
63
+ else if (cpuType.startsWith('Xeon')) {
64
+ platform = 'Intel';
65
+ }
66
+ else if (cpuType.startsWith('Graviton')) {
67
+ platform = 'AWS';
68
+ }
69
+ else if (cpuType.startsWith('Core')) {
70
+ platform = 'Intel';
71
+ }
72
+ input['physical-processor'] = `${platform} ${cpuType}`;
73
+ }
74
+ else {
75
+ throw new Error(`cloud-instance-type: ${instance_type} is not supported in vendor: ${vendor}`);
76
+ }
77
+ }
78
+ else if (vendor === 'azure') {
79
+ const instance = AZURE_INSTANCES.find(instance => instance['instance-type'] === instance_type);
80
+ if (instance) {
81
+ input['vcpus-allocated'] = instance['cpu-cores-utilized'];
82
+ input['vcpus-total'] = instance['cpu-cores-available'];
83
+ input['physical-processor'] = instance['cpu-model-name'];
84
+ input['memory-available'] = instance['memory-available'];
85
+ input['thermal-design-power'] = instance['thermal-design-power'];
86
+ }
87
+ else {
88
+ throw new Error(`cloud-instance-type: ${instance_type} is not supported in vendor: ${vendor}`);
89
+ }
90
+ }
91
+ return input;
92
+ });
93
+ }
94
+ async configure(name, staticParams) {
95
+ this.staticParams = staticParams;
96
+ this.name = name;
97
+ return this;
98
+ }
99
+ modelIdentifier() {
100
+ return CLOUD_INSTANCE_METADATA;
101
+ }
102
+ }
103
+ exports.CloudInstanceMetadataModel = CloudInstanceMetadataModel;
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Nsb3VkLWluc3RhbmNlLW1ldGFkYXRhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHlDQUFvQztBQUdwQyxzREFBc0Q7QUFDdEQsMERBQTBEO0FBRTFELE1BQU0sRUFBQyxTQUFTLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDM0IsTUFBTSxFQUFDLHVCQUF1QixFQUFDLEdBQUcsU0FBUyxDQUFDO0FBRTVDLE1BQWEsMEJBQTBCO0lBQXZDO1FBQ0UsZUFBVSxHQUF1QixTQUFTLENBQUM7SUFxRzdDLENBQUM7SUFqR0MsWUFBWSxDQUFDLFVBQWtCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFxQztRQUNqRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1NBQ3JEO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQ3hDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNoQixJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxjQUFjLElBQUksS0FBSyxFQUFFO2dCQUMzQixNQUFNLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQzthQUMvRDtZQUNELGlDQUFpQztZQUNqQyxvQ0FBb0M7WUFDcEMsV0FBVztZQUNY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SUFBWSxFQUNaLFlBQWdDO1FBRWhDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQXRHRCxnRUFzR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lPdXRwdXRNb2RlbEludGVyZmFjZX0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7Q09ORklHfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5pbXBvcnQge0tleVZhbHVlUGFpcn0gZnJvbSAnLi4vLi4vdHlwZXMvY29tbW9uJztcbmltcG9ydCAqIGFzIEFXU19JTlNUQU5DRVMgZnJvbSAnLi9hd3MtaW5zdGFuY2VzLmpzb24nO1xuaW1wb3J0ICogYXMgQVpVUkVfSU5TVEFOQ0VTIGZyb20gJy4vYXp1cmUtaW5zdGFuY2VzLmpzb24nO1xuXG5jb25zdCB7TU9ERUxfSURTfSA9IENPTkZJRztcbmNvbnN0IHtDTE9VRF9JTlNUQU5DRV9NRVRBREFUQX0gPSBNT0RFTF9JRFM7XG5cbmV4cG9ydCBjbGFzcyBDbG91ZEluc3RhbmNlTWV0YWRhdGFNb2RlbCBpbXBsZW1lbnRzIElPdXRwdXRNb2RlbEludGVyZmFjZSB7XG4gIGF1dGhQYXJhbXM6IG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgc3RhdGljUGFyYW1zOiBvYmplY3QgfCB1bmRlZmluZWQ7XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBhdXRoZW50aWNhdGUoYXV0aFBhcmFtczogb2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5hdXRoUGFyYW1zID0gYXV0aFBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFYWNoIGlucHV0IHJlcXVpcmU6XG4gICAqIEBwYXJhbSB7T2JqZWN0W119IGlucHV0c1xuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5wdXRzW10udGltZXN0YW1wIFJGQzMzMzkgdGltZXN0YW1wIHN0cmluZ1xuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dHM6IG9iamVjdCB8IG9iamVjdFtdIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGlmIChpbnB1dHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBQYXJhbWV0ZXJzIG5vdCBwcm92aWRlZCcpO1xuICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnB1dHMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dHMubWFwKChpbnB1dDogS2V5VmFsdWVQYWlyKSA9PiB7XG4gICAgICBsZXQgdmVuZG9yID0gJyc7XG4gICAgICBsZXQgaW5zdGFuY2VfdHlwZSA9ICcnO1xuICAgICAgaWYgKCdjbG91ZC12ZW5kb3InIGluIGlucHV0KSB7XG4gICAgICAgIHZlbmRvciA9IGlucHV0WydjbG91ZC12ZW5kb3InXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRWFjaCBpbnB1dCBtdXN0IGNvbnRhaW4gYSBjbG91ZC12ZW5kb3Iga2V5Jyk7XG4gICAgICB9XG4gICAgICAvLyBpZiAoJ2Nsb3VkLXJlZ2lvbicgaW4gaW5wdXQpIHtcbiAgICAgIC8vICAgcmVnaW9uID0gaW5wdXRbJ2Nsb3VkLXJlZ2lvbiddO1xuICAgICAgLy8gfSBlbHNlIHtcbiAgICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKCdFYWNoIGlucHV0IG11c3QgY29udGFpbiBhIGNsb3VkLXJlZ2lvbiBrZXknKTtcbiAgICAgIC8vIH1cbiAgICAgIGlmICgnY2xvdWQtaW5zdGFuY2UtdHlwZScgaW4gaW5wdXQpIHtcbiAgICAgICAgaW5zdGFuY2VfdHlwZSA9IGlucHV0WydjbG91ZC1pbnN0YW5jZS10eXBlJ107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VhY2ggaW5wdXQgbXVzdCBjb250YWluIGEgY2xvdWQtaW5zdGFuY2UtdHlwZSBrZXknKTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKFsnYXdzJywgJ2F6dXJlJ10uaW5jbHVkZXModmVuZG9yKSk7XG4gICAgICBpZiAoIVsnYXdzJywgJ2F6dXJlJ10uaW5jbHVkZXModmVuZG9yKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2Nsb3VkLXZlbmRvcjogT25seSBgYXdzYC9gYXp1cmVgIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodmVuZG9yID09PSAnYXdzJykge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IEFXU19JTlNUQU5DRVMuZmluZChcbiAgICAgICAgICBpbnN0YW5jZSA9PiBpbnN0YW5jZVsnSW5zdGFuY2UgdHlwZSddID09PSBpbnN0YW5jZV90eXBlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgIGlucHV0Wyd2Y3B1cy1hbGxvY2F0ZWQnXSA9IGluc3RhbmNlWydJbnN0YW5jZSB2Q1BVJ107XG4gICAgICAgICAgaW5wdXRbJ3ZjcHVzLXRvdGFsJ10gPSBpbnN0YW5jZVsnUGxhdGZvcm0gVG90YWwgTnVtYmVyIG9mIHZDUFUnXTtcbiAgICAgICAgICBpbnB1dFsnbWVtb3J5LWF2YWlsYWJsZSddID0gaW5zdGFuY2VbJ0luc3RhbmNlIE1lbW9yeSAoaW4gR0IpJ107XG4gICAgICAgICAgY29uc3QgY3B1VHlwZSA9IGluc3RhbmNlWydQbGF0Zm9ybSBDUFUgTmFtZSddO1xuICAgICAgICAgIGxldCBwbGF0Zm9ybSA9ICcnO1xuICAgICAgICAgIGlmIChjcHVUeXBlLnN0YXJ0c1dpdGgoJ0VQWUMnKSkge1xuICAgICAgICAgICAgcGxhdGZvcm0gPSAnQU1EJztcbiAgICAgICAgICB9IGVsc2UgaWYgKGNwdVR5cGUuc3RhcnRzV2l0aCgnWGVvbicpKSB7XG4gICAgICAgICAgICBwbGF0Zm9ybSA9ICdJbnRlbCc7XG4gICAgICAgICAgfSBlbHNlIGlmIChjcHVUeXBlLnN0YXJ0c1dpdGgoJ0dyYXZpdG9uJykpIHtcbiAgICAgICAgICAgIHBsYXRmb3JtID0gJ0FXUyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChjcHVUeXBlLnN0YXJ0c1dpdGgoJ0NvcmUnKSkge1xuICAgICAgICAgICAgcGxhdGZvcm0gPSAnSW50ZWwnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dFsncGh5c2ljYWwtcHJvY2Vzc29yJ10gPSBgJHtwbGF0Zm9ybX0gJHtjcHVUeXBlfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYGNsb3VkLWluc3RhbmNlLXR5cGU6ICR7aW5zdGFuY2VfdHlwZX0gaXMgbm90IHN1cHBvcnRlZCBpbiB2ZW5kb3I6ICR7dmVuZG9yfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHZlbmRvciA9PT0gJ2F6dXJlJykge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IEFaVVJFX0lOU1RBTkNFUy5maW5kKFxuICAgICAgICAgIGluc3RhbmNlID0+IGluc3RhbmNlWydpbnN0YW5jZS10eXBlJ10gPT09IGluc3RhbmNlX3R5cGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgaW5wdXRbJ3ZjcHVzLWFsbG9jYXRlZCddID0gaW5zdGFuY2VbJ2NwdS1jb3Jlcy11dGlsaXplZCddO1xuICAgICAgICAgIGlucHV0Wyd2Y3B1cy10b3RhbCddID0gaW5zdGFuY2VbJ2NwdS1jb3Jlcy1hdmFpbGFibGUnXTtcbiAgICAgICAgICBpbnB1dFsncGh5c2ljYWwtcHJvY2Vzc29yJ10gPSBpbnN0YW5jZVsnY3B1LW1vZGVsLW5hbWUnXTtcbiAgICAgICAgICBpbnB1dFsnbWVtb3J5LWF2YWlsYWJsZSddID0gaW5zdGFuY2VbJ21lbW9yeS1hdmFpbGFibGUnXTtcbiAgICAgICAgICBpbnB1dFsndGhlcm1hbC1kZXNpZ24tcG93ZXInXSA9IGluc3RhbmNlWyd0aGVybWFsLWRlc2lnbi1wb3dlciddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBjbG91ZC1pbnN0YW5jZS10eXBlOiAke2luc3RhbmNlX3R5cGV9IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVuZG9yOiAke3ZlbmRvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29uZmlndXJlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBzdGF0aWNQYXJhbXM6IG9iamVjdCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPElPdXRwdXRNb2RlbEludGVyZmFjZT4ge1xuICAgIHRoaXMuc3RhdGljUGFyYW1zID0gc3RhdGljUGFyYW1zO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtb2RlbElkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ0xPVURfSU5TVEFOQ0VfTUVUQURBVEE7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ export * from './azure-importer';
2
+ export * from './boavizta';
3
+ export * from './case-studies';
4
+ export * from './ccf';
5
+ export * from './cloud-instance-metadata';
6
+ export * from './shell-imp';
7
+ export * from './sci';
8
+ export * from './sci-e';
9
+ export * from './sci-m';
10
+ export * from './sci-o';
11
+ export * from './shell-imp';
12
+ export * from './teads-aws';
13
+ export * from './teads-curve';
14
+ export * from './watt-time';
15
+ export * from './tdp-finder';
@@ -0,0 +1,32 @@
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("./azure-importer"), exports);
18
+ __exportStar(require("./boavizta"), exports);
19
+ __exportStar(require("./case-studies"), exports);
20
+ __exportStar(require("./ccf"), exports);
21
+ __exportStar(require("./cloud-instance-metadata"), exports);
22
+ __exportStar(require("./shell-imp"), exports);
23
+ __exportStar(require("./sci"), exports);
24
+ __exportStar(require("./sci-e"), exports);
25
+ __exportStar(require("./sci-m"), exports);
26
+ __exportStar(require("./sci-o"), exports);
27
+ __exportStar(require("./shell-imp"), exports);
28
+ __exportStar(require("./teads-aws"), exports);
29
+ __exportStar(require("./teads-curve"), exports);
30
+ __exportStar(require("./watt-time"), exports);
31
+ __exportStar(require("./tdp-finder"), exports);
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsNkNBQTJCO0FBQzNCLGlEQUErQjtBQUMvQix3Q0FBc0I7QUFDdEIsNERBQTBDO0FBQzFDLDhDQUE0QjtBQUM1Qix3Q0FBc0I7QUFDdEIsMENBQXdCO0FBQ3hCLDBDQUF3QjtBQUN4QiwwQ0FBd0I7QUFDeEIsOENBQTRCO0FBQzVCLDhDQUE0QjtBQUM1QixnREFBOEI7QUFDOUIsOENBQTRCO0FBQzVCLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXp1cmUtaW1wb3J0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9ib2F2aXp0YSc7XG5leHBvcnQgKiBmcm9tICcuL2Nhc2Utc3R1ZGllcyc7XG5leHBvcnQgKiBmcm9tICcuL2NjZic7XG5leHBvcnQgKiBmcm9tICcuL2Nsb3VkLWluc3RhbmNlLW1ldGFkYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vc2hlbGwtaW1wJztcbmV4cG9ydCAqIGZyb20gJy4vc2NpJztcbmV4cG9ydCAqIGZyb20gJy4vc2NpLWUnO1xuZXhwb3J0ICogZnJvbSAnLi9zY2ktbSc7XG5leHBvcnQgKiBmcm9tICcuL3NjaS1vJztcbmV4cG9ydCAqIGZyb20gJy4vc2hlbGwtaW1wJztcbmV4cG9ydCAqIGZyb20gJy4vdGVhZHMtYXdzJztcbmV4cG9ydCAqIGZyb20gJy4vdGVhZHMtY3VydmUnO1xuZXhwb3J0ICogZnJvbSAnLi93YXR0LXRpbWUnO1xuZXhwb3J0ICogZnJvbSAnLi90ZHAtZmluZGVyJztcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ export interface IConsumption {
2
+ idle?: number;
3
+ tenPercent?: number;
4
+ fiftyPercent?: number;
5
+ hundredPercent?: number;
6
+ minWatts?: number;
7
+ maxWatts?: number;
8
+ }
9
+ export interface IComputeInstance {
10
+ consumption: IConsumption;
11
+ embodiedEmission?: number;
12
+ name: string;
13
+ vCPUs?: number;
14
+ maxVCPUs?: number;
15
+ }
16
+ export interface ICcfResult {
17
+ energy: number;
18
+ embodied_emissions: number;
19
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2NmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnRlcmZhY2VzL2NjZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY29uc3VtcHRpb24gaW5mb3JtYXRpb24gZm9yIGEgc2luZ2xlIGluc3RhbmNlXG5leHBvcnQgaW50ZXJmYWNlIElDb25zdW1wdGlvbiB7XG4gIGlkbGU/OiBudW1iZXI7XG4gIHRlblBlcmNlbnQ/OiBudW1iZXI7XG4gIGZpZnR5UGVyY2VudD86IG51bWJlcjtcbiAgaHVuZHJlZFBlcmNlbnQ/OiBudW1iZXI7XG4gIG1pbldhdHRzPzogbnVtYmVyO1xuICBtYXhXYXR0cz86IG51bWJlcjtcbn1cblxuLy8gaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgY29tcHV0ZSBpbnN0YW5jZVxuZXhwb3J0IGludGVyZmFjZSBJQ29tcHV0ZUluc3RhbmNlIHtcbiAgY29uc3VtcHRpb246IElDb25zdW1wdGlvbjtcbiAgZW1ib2RpZWRFbWlzc2lvbj86IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB2Q1BVcz86IG51bWJlcjtcbiAgbWF4VkNQVXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNjZlJlc3VsdCB7XG4gIGVuZXJneTogbnVtYmVyO1xuICBlbWJvZGllZF9lbWlzc2lvbnM6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export interface IOutputModelInterface {
2
+ modelIdentifier(): string;
3
+ configure(name: string, staticParams: object | undefined): Promise<IOutputModelInterface>;
4
+ authenticate(authParams: object): void;
5
+ execute(inputs: object | object[] | undefined): Promise<any[]>;
6
+ }
7
+ export * from './ccf';
@@ -0,0 +1,18 @@
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("./ccf"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSU91dHB1dE1vZGVsSW50ZXJmYWNlIHtcbiAgbW9kZWxJZGVudGlmaWVyKCk6IHN0cmluZztcblxuICBjb25maWd1cmUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHN0YXRpY1BhcmFtczogb2JqZWN0IHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8SU91dHB1dE1vZGVsSW50ZXJmYWNlPjtcblxuICBhdXRoZW50aWNhdGUoYXV0aFBhcmFtczogb2JqZWN0KTogdm9pZDtcblxuICBleGVjdXRlKGlucHV0czogb2JqZWN0IHwgb2JqZWN0W10gfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueVtdPjtcbn1cbmV4cG9ydCAqIGZyb20gJy4vY2NmJztcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { IOutputModelInterface } from '../interfaces';
2
+ export declare class SciModel implements IOutputModelInterface {
3
+ authParams: object | undefined;
4
+ staticParams: object | undefined;
5
+ name: string | undefined;
6
+ time: string | unknown;
7
+ functionalUnit: string;
8
+ functionalUnitDuration: number;
9
+ authenticate(authParams: object): void;
10
+ execute(inputs: object | object[] | undefined): Promise<any[]>;
11
+ configure(name: string, staticParams: object | undefined): Promise<IOutputModelInterface>;
12
+ modelIdentifier(): string;
13
+ }
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SciModel = void 0;
4
+ const config_1 = require("../../config");
5
+ const { MODEL_IDS } = config_1.CONFIG;
6
+ const { SCI } = MODEL_IDS;
7
+ class SciModel {
8
+ constructor() {
9
+ this.authParams = undefined;
10
+ this.functionalUnit = 'none';
11
+ this.functionalUnitDuration = 1;
12
+ }
13
+ authenticate(authParams) {
14
+ this.authParams = authParams;
15
+ }
16
+ async execute(inputs) {
17
+ if (!Array.isArray(inputs)) {
18
+ throw new Error('inputs should be an array');
19
+ }
20
+ const tunedinputs = inputs.map((input) => {
21
+ if (!('operational-carbon' in input)) {
22
+ throw new Error('input missing `operational-carbon`');
23
+ }
24
+ if (!('embodied-carbon' in input)) {
25
+ throw new Error('input missing `embodied-carbon`');
26
+ }
27
+ const operational = parseFloat(input['operational-carbon']);
28
+ const embodied = parseFloat(input['embodied-carbon']);
29
+ /*
30
+ If `carbon` is in inputs, use it.
31
+ If not, calculate it from operational and embodied carbon.
32
+ Divide by input[duration] to ensure time unit is /s
33
+ */
34
+ let sci_secs = 0;
35
+ if ('carbon' in input) {
36
+ sci_secs = input['carbon'] / input['duration'];
37
+ }
38
+ else {
39
+ sci_secs = (operational + embodied) / parseFloat(input['duration']); // sci in time units of /s
40
+ }
41
+ let sci_timed = sci_secs;
42
+ let sci_timed_duration = sci_secs;
43
+ /*
44
+ Convert C to desired time unit
45
+ */
46
+ if (this.time === 's' ||
47
+ this.time === 'second' ||
48
+ this.time === 'seconds' ||
49
+ this.time === 'secs' ||
50
+ this.time === '' ||
51
+ this.time === null ||
52
+ this.time === 'none') {
53
+ sci_timed = sci_secs;
54
+ }
55
+ if (this.time === 'minute' ||
56
+ this.time === 'minutes' ||
57
+ this.time === 'mins' ||
58
+ this.time === 'm') {
59
+ sci_timed = sci_secs * 60;
60
+ }
61
+ if (this.time === 'hour' ||
62
+ this.time === 'hours' ||
63
+ this.time === 'hr' ||
64
+ this.time === 'h') {
65
+ sci_timed = sci_secs * 60 * 60;
66
+ }
67
+ if (this.time === 'day' || this.time === 'days' || this.time === 'd') {
68
+ sci_timed = sci_secs * 60 * 60 * 24;
69
+ }
70
+ if (this.time === 'week' || this.time === 'weeks' || this.time === 'd') {
71
+ sci_timed = sci_secs * 60 * 60 * 24 * 7;
72
+ }
73
+ if (this.time === 'month' || this.time === 'months') {
74
+ sci_timed = sci_secs * 60 * 60 * 24 * 7 * 4;
75
+ }
76
+ if (this.time === 'year' ||
77
+ this.time === 'years' ||
78
+ this.time === 'yr' ||
79
+ this.time === 'y') {
80
+ sci_timed = sci_secs * 60 * 60 * 24 * 365;
81
+ }
82
+ /*
83
+ sci currently in whole single units of time - multiply by duration to
84
+ convert to user-defined span of time.
85
+ */
86
+ sci_timed_duration = sci_timed * this.functionalUnitDuration;
87
+ const functionalUnit = this.functionalUnit;
88
+ if (this.functionalUnit !== 'none') {
89
+ const factor = parseFloat(input[functionalUnit]);
90
+ input['sci'] = sci_timed_duration / factor;
91
+ return input;
92
+ }
93
+ else {
94
+ input['sci'] = sci_timed_duration;
95
+ return input;
96
+ }
97
+ });
98
+ return tunedinputs;
99
+ }
100
+ async configure(name, staticParams) {
101
+ if (staticParams === undefined) {
102
+ throw new Error('Required Parameters not provided');
103
+ }
104
+ this.staticParams = staticParams;
105
+ this.name = name;
106
+ if ('functional-unit-time' in staticParams) {
107
+ this.time = staticParams['functional-unit-time'];
108
+ }
109
+ if ('functional-unit-duration' in staticParams &&
110
+ typeof staticParams['functional-unit-duration'] === 'number') {
111
+ this.functionalUnitDuration = staticParams['functional-unit-duration'];
112
+ }
113
+ else {
114
+ throw new Error('Functional unit duration is not a valid number: provide number of seconds represented by input');
115
+ }
116
+ if ('functional-unit' in staticParams &&
117
+ typeof staticParams['functional-unit'] === 'string' &&
118
+ staticParams['functional-unit'] !== '') {
119
+ this.functionalUnit = staticParams['functional-unit'];
120
+ }
121
+ else {
122
+ this.functionalUnit = 'none';
123
+ }
124
+ return this;
125
+ }
126
+ modelIdentifier() {
127
+ return SCI;
128
+ }
129
+ }
130
+ exports.SciModel = SciModel;
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NjaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx5Q0FBb0M7QUFJcEMsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUMzQixNQUFNLEVBQUMsR0FBRyxFQUFDLEdBQUcsU0FBUyxDQUFDO0FBRXhCLE1BQWEsUUFBUTtJQUFyQjtRQUNFLGVBQVUsR0FBdUIsU0FBUyxDQUFDO1FBSTNDLG1CQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLDJCQUFzQixHQUFHLENBQUMsQ0FBQztJQWdKN0IsQ0FBQztJQTlJQyxZQUFZLENBQUMsVUFBa0I7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBcUM7UUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQzlDO1FBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsQ0FBQyxvQkFBb0IsSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsSUFBSSxDQUFDLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQzthQUNwRDtZQUVELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FB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LENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN2RDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7U0FDOUI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0Y7QUF0SkQsNEJBc0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJT3V0cHV0TW9kZWxJbnRlcmZhY2V9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge0NPTkZJR30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuaW1wb3J0IHtLZXlWYWx1ZVBhaXJ9IGZyb20gJy4uLy4uL3R5cGVzL2NvbW1vbic7XG5cbmNvbnN0IHtNT0RFTF9JRFN9ID0gQ09ORklHO1xuY29uc3Qge1NDSX0gPSBNT0RFTF9JRFM7XG5cbmV4cG9ydCBjbGFzcyBTY2lNb2RlbCBpbXBsZW1lbnRzIElPdXRwdXRNb2RlbEludGVyZmFjZSB7XG4gIGF1dGhQYXJhbXM6IG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgc3RhdGljUGFyYW1zOiBvYmplY3QgfCB1bmRlZmluZWQ7XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdGltZTogc3RyaW5nIHwgdW5rbm93bjtcbiAgZnVuY3Rpb25hbFVuaXQgPSAnbm9uZSc7XG4gIGZ1bmN0aW9uYWxVbml0RHVyYXRpb24gPSAxO1xuXG4gIGF1dGhlbnRpY2F0ZShhdXRoUGFyYW1zOiBvYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhQYXJhbXMgPSBhdXRoUGFyYW1zO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dHM6IG9iamVjdCB8IG9iamVjdFtdIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShpbnB1dHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lucHV0cyBzaG91bGQgYmUgYW4gYXJyYXknKTtcbiAgICB9XG5cbiAgICBjb25zdCB0dW5lZGlucHV0cyA9IGlucHV0cy5tYXAoKGlucHV0OiBLZXlWYWx1ZVBhaXIpID0+IHtcbiAgICAgIGlmICghKCdvcGVyYXRpb25hbC1jYXJib24nIGluIGlucHV0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lucHV0IG1pc3NpbmcgYG9wZXJhdGlvbmFsLWNhcmJvbmAnKTtcbiAgICAgIH1cbiAgICAgIGlmICghKCdlbWJvZGllZC1jYXJib24nIGluIGlucHV0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lucHV0IG1pc3NpbmcgYGVtYm9kaWVkLWNhcmJvbmAnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3BlcmF0aW9uYWwgPSBwYXJzZUZsb2F0KGlucHV0WydvcGVyYXRpb25hbC1jYXJib24nXSk7XG4gICAgICBjb25zdCBlbWJvZGllZCA9IHBhcnNlRmxvYXQoaW5wdXRbJ2VtYm9kaWVkLWNhcmJvbiddKTtcblxuICAgICAgLypcbiAgICAgIElmIGBjYXJib25gIGlzIGluIGlucHV0cywgdXNlIGl0LlxuICAgICAgSWYgbm90LCBjYWxjdWxhdGUgaXQgZnJvbSBvcGVyYXRpb25hbCBhbmQgZW1ib2RpZWQgY2FyYm9uLlxuICAgICAgRGl2aWRlIGJ5IGlucHV0W2R1cmF0aW9uXSB0byBlbnN1cmUgdGltZSB1bml0IGlzIC9zXG4gICAgICAqL1xuICAgICAgbGV0IHNjaV9zZWNzID0gMDtcbiAgICAgIGlmICgnY2FyYm9uJyBpbiBpbnB1dCkge1xuICAgICAgICBzY2lfc2VjcyA9IGlucHV0WydjYXJib24nXSAvIGlucHV0WydkdXJhdGlvbiddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2NpX3NlY3MgPSAob3BlcmF0aW9uYWwgKyBlbWJvZGllZCkgLyBwYXJzZUZsb2F0KGlucHV0WydkdXJhdGlvbiddKTsgLy8gc2NpIGluIHRpbWUgdW5pdHMgb2YgL3NcbiAgICAgIH1cblxuICAgICAgbGV0IHNjaV90aW1lZDogbnVtYmVyID0gc2NpX3NlY3M7XG4gICAgICBsZXQgc2NpX3RpbWVkX2R1cmF0aW9uOiBudW1iZXIgPSBzY2lfc2VjcztcblxuICAgICAgLypcbiAgICAgIENvbnZlcnQgQyB0byBkZXNpcmVkIHRpbWUgdW5pdFxuICAgICAgKi9cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy50aW1lID09PSAncycgfHxcbiAgICAgICAgdGhpcy50aW1lID09PSAnc2Vjb25kJyB8fFxuICAgICAgICB0aGlzLnRpbWUgPT09ICdzZWNvbmRzJyB8fFxuICAgICAgICB0aGlzLnRpbWUgPT09ICdzZWNzJyB8fFxuICAgICAgICB0aGlzLnRpbWUgPT09ICcnIHx8XG4gICAgICAgIHRoaXMudGltZSA9PT0gbnVsbCB8fFxuICAgICAgICB0aGlzLnRpbWUgPT09ICdub25lJ1xuICAgICAgKSB7XG4gICAgICAgIHNjaV90aW1lZCA9IHNjaV9zZWNzO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnRpbWUgPT09ICdtaW51dGUnIHx8XG4gICAgICAgIHRoaXMudGltZSA9PT0gJ21pbnV0ZXMnIHx8XG4gICAgICAgIHRoaXMudGltZSA9PT0gJ21pbnMnIHx8XG4gICAgICAgIHRoaXMudGltZSA9PT0gJ20nXG4gICAgICApIHtcbiAgICAgICAgc2NpX3RpbWVkID0gc2NpX3NlY3MgKiA2MDtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy50aW1lID09PSAnaG91cicgfHxcbiAgICAgICAgdGhpcy50aW1lID09PSAnaG91cnMnIHx8XG4gICAgICAgIHRoaXMudGltZSA9PT0gJ2hyJyB8fFxuICAgICAgICB0aGlzLnRpbWUgPT09ICdoJ1xuICAgICAgKSB7XG4gICAgICAgIHNjaV90aW1lZCA9IHNjaV9zZWNzICogNjAgKiA2MDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRpbWUgPT09ICdkYXknIHx8IHRoaXMudGltZSA9PT0gJ2RheXMnIHx8IHRoaXMudGltZSA9PT0gJ2QnKSB7XG4gICAgICAgIHNjaV90aW1lZCA9IHNjaV9zZWNzICogNjAgKiA2MCAqIDI0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGltZSA9PT0gJ3dlZWsnIHx8IHRoaXMudGltZSA9PT0gJ3dlZWtzJyB8fCB0aGlzLnRpbWUgPT09ICdkJykge1xuICAgICAgICBzY2lfdGltZWQgPSBzY2lfc2VjcyAqIDYwICogNjAgKiAyNCAqIDc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50aW1lID09PSAnbW9udGgnIHx8IHRoaXMudGltZSA9PT0gJ21vbnRocycpIHtcbiAgICAgICAgc2NpX3RpbWVkID0gc2NpX3NlY3MgKiA2MCAqIDYwICogMjQgKiA3ICogNDtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy50aW1lID09PSAneWVhcicgfHxcbiAgICAgICAgdGhpcy50aW1lID09PSAneWVhcnMnIHx8XG4gICAgICAgIHRoaXMudGltZSA9PT0gJ3lyJyB8fFxuICAgICAgICB0aGlzLnRpbWUgPT09ICd5J1xuICAgICAgKSB7XG4gICAgICAgIHNjaV90aW1lZCA9IHNjaV9zZWNzICogNjAgKiA2MCAqIDI0ICogMzY1O1xuICAgICAgfVxuICAgICAgLypcbiAgICAgIHNjaSBjdXJyZW50bHkgaW4gd2hvbGUgc2luZ2xlIHVuaXRzIG9mIHRpbWUgLSBtdWx0aXBseSBieSBkdXJhdGlvbiB0b1xuICAgICAgY29udmVydCB0byB1c2VyLWRlZmluZWQgc3BhbiBvZiB0aW1lLlxuICAgICAgKi9cbiAgICAgIHNjaV90aW1lZF9kdXJhdGlvbiA9IHNjaV90aW1lZCAqIHRoaXMuZnVuY3Rpb25hbFVuaXREdXJhdGlvbjtcbiAgICAgIGNvbnN0IGZ1bmN0aW9uYWxVbml0ID0gdGhpcy5mdW5jdGlvbmFsVW5pdDtcblxuICAgICAgaWYgKHRoaXMuZnVuY3Rpb25hbFVuaXQgIT09ICdub25lJykge1xuICAgICAgICBjb25zdCBmYWN0b3IgPSBwYXJzZUZsb2F0KGlucHV0W2Z1bmN0aW9uYWxVbml0XSk7XG4gICAgICAgIGlucHV0WydzY2knXSA9IHNjaV90aW1lZF9kdXJhdGlvbiAvIGZhY3RvcjtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5wdXRbJ3NjaSddID0gc2NpX3RpbWVkX2R1cmF0aW9uO1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHVuZWRpbnB1dHM7XG4gIH1cblxuICBhc3luYyBjb25maWd1cmUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHN0YXRpY1BhcmFtczogb2JqZWN0IHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8SU91dHB1dE1vZGVsSW50ZXJmYWNlPiB7XG4gICAgaWYgKHN0YXRpY1BhcmFtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIFBhcmFtZXRlcnMgbm90IHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0aWNQYXJhbXMgPSBzdGF0aWNQYXJhbXM7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcblxuICAgIGlmICgnZnVuY3Rpb25hbC11bml0LXRpbWUnIGluIHN0YXRpY1BhcmFtcykge1xuICAgICAgdGhpcy50aW1lID0gc3RhdGljUGFyYW1zWydmdW5jdGlvbmFsLXVuaXQtdGltZSddIGFzIG51bWJlcjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgJ2Z1bmN0aW9uYWwtdW5pdC1kdXJhdGlvbicgaW4gc3RhdGljUGFyYW1zICYmXG4gICAgICB0eXBlb2Ygc3RhdGljUGFyYW1zWydmdW5jdGlvbmFsLXVuaXQtZHVyYXRpb24nXSA9PT0gJ251bWJlcidcbiAgICApIHtcbiAgICAgIHRoaXMuZnVuY3Rpb25hbFVuaXREdXJhdGlvbiA9IHN0YXRpY1BhcmFtc1snZnVuY3Rpb25hbC11bml0LWR1cmF0aW9uJ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Z1bmN0aW9uYWwgdW5pdCBkdXJhdGlvbiBpcyBub3QgYSB2YWxpZCBudW1iZXI6IHByb3ZpZGUgbnVtYmVyIG9mIHNlY29uZHMgcmVwcmVzZW50ZWQgYnkgaW5wdXQnXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAnZnVuY3Rpb25hbC11bml0JyBpbiBzdGF0aWNQYXJhbXMgJiZcbiAgICAgIHR5cGVvZiBzdGF0aWNQYXJhbXNbJ2Z1bmN0aW9uYWwtdW5pdCddID09PSAnc3RyaW5nJyAmJlxuICAgICAgc3RhdGljUGFyYW1zWydmdW5jdGlvbmFsLXVuaXQnXSAhPT0gJydcbiAgICApIHtcbiAgICAgIHRoaXMuZnVuY3Rpb25hbFVuaXQgPSBzdGF0aWNQYXJhbXNbJ2Z1bmN0aW9uYWwtdW5pdCddO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZ1bmN0aW9uYWxVbml0ID0gJ25vbmUnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbW9kZWxJZGVudGlmaWVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNDSTtcbiAgfVxufVxuIl19
@@ -0,0 +1,38 @@
1
+ import { IOutputModelInterface } from '../interfaces';
2
+ export declare class SciEModel implements IOutputModelInterface {
3
+ authParams: object | undefined;
4
+ name: string | undefined;
5
+ /**
6
+ * Defined for compatibility. Not used in energy-network.
7
+ */
8
+ authenticate(authParams: object): void;
9
+ /**
10
+ * Configures the sci-e Plugin for IEF
11
+ * @param {string} name name of the resource
12
+ * @param {Object} staticParams static parameters for the resource
13
+ */
14
+ configure(name: string, staticParams?: object | undefined): Promise<IOutputModelInterface>;
15
+ /**
16
+ * Calculate the total emissions for a list of inputs.
17
+ *
18
+ * Each input require:
19
+ * @param {Object[]} inputs
20
+ * @param {string} inputs[].timestamp RFC3339 timestamp string
21
+ */
22
+ execute(inputs: object | object[] | undefined): Promise<any[]>;
23
+ /**
24
+ * Returns model identifier
25
+ */
26
+ modelIdentifier(): string;
27
+ /**
28
+ * Calculates the sum of the energy components
29
+ *
30
+ * energy-cpu: cpu energy in kwh
31
+ * energy-memory: energy due to memory usage in kwh
32
+ * energy-network: energy due to network data in kwh
33
+ * timestamp: RFC3339 timestamp string
34
+ *
35
+ * adds energy + e_net + e_mum
36
+ */
37
+ private calculateEnergy;
38
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SciEModel = void 0;
4
+ const config_1 = require("../../config");
5
+ const { MODEL_IDS } = config_1.CONFIG;
6
+ const { SCI_E } = MODEL_IDS;
7
+ class SciEModel {
8
+ /**
9
+ * Defined for compatibility. Not used in energy-network.
10
+ */
11
+ authenticate(authParams) {
12
+ this.authParams = authParams;
13
+ }
14
+ /**
15
+ * Configures the sci-e Plugin for IEF
16
+ * @param {string} name name of the resource
17
+ * @param {Object} staticParams static parameters for the resource
18
+ */
19
+ async configure(name, staticParams = undefined) {
20
+ this.name = name;
21
+ if (staticParams === undefined) {
22
+ throw new Error('Required Parameters not provided');
23
+ }
24
+ return this;
25
+ }
26
+ /**
27
+ * Calculate the total emissions for a list of inputs.
28
+ *
29
+ * Each input require:
30
+ * @param {Object[]} inputs
31
+ * @param {string} inputs[].timestamp RFC3339 timestamp string
32
+ */
33
+ async execute(inputs) {
34
+ if (inputs === undefined) {
35
+ throw new Error('Required Parameters not provided');
36
+ }
37
+ else if (!Array.isArray(inputs)) {
38
+ throw new Error('inputs must be an array');
39
+ }
40
+ return inputs.map((input) => {
41
+ this.configure(this.name, input);
42
+ input['energy'] = this.calculateEnergy(input);
43
+ return input;
44
+ });
45
+ }
46
+ /**
47
+ * Returns model identifier
48
+ */
49
+ modelIdentifier() {
50
+ return SCI_E;
51
+ }
52
+ /**
53
+ * Calculates the sum of the energy components
54
+ *
55
+ * energy-cpu: cpu energy in kwh
56
+ * energy-memory: energy due to memory usage in kwh
57
+ * energy-network: energy due to network data in kwh
58
+ * timestamp: RFC3339 timestamp string
59
+ *
60
+ * adds energy + e_net + e_mum
61
+ */
62
+ calculateEnergy(input) {
63
+ let e_mem = 0;
64
+ let e_net = 0;
65
+ let e_cpu = 0;
66
+ if (!('energy-cpu' in input) &&
67
+ !('energy-memory' in input) &&
68
+ !('energy-network' in input)) {
69
+ throw new Error('Required Parameters not provided: at least one of energy-memory, energy-network or energy must be present in input');
70
+ }
71
+ // If the user gives a negative value it will default to zero.
72
+ if ('energy-cpu' in input && input['energy-cpu'] > 0) {
73
+ e_cpu = input['energy-cpu'];
74
+ }
75
+ if ('energy-memory' in input && input['energy-memory'] > 0) {
76
+ e_mem = input['energy-memory'];
77
+ }
78
+ if ('energy-network' in input && input['energy-network'] > 0) {
79
+ e_net = input['energy-network'];
80
+ }
81
+ return e_cpu + e_net + e_mem;
82
+ }
83
+ }
84
+ exports.SciEModel = SciEModel;
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NjaS1lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHlDQUFvQztBQUlwQyxNQUFNLEVBQUMsU0FBUyxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBQzNCLE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxTQUFTLENBQUM7QUFFMUIsTUFBYSxTQUFTO0lBSXBCOztPQUVHO0lBQ0gsWUFBWSxDQUFDLFVBQWtCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FDYixJQUFZLEVBQ1osZUFBbUMsU0FBUztRQUU1QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFxQztRQUNqRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1NBQ3JEO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU5QyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNLLGVBQWUsQ0FBQyxLQUFtQjtRQUN6QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFZCxJQUNFLENBQUMsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsRUFDNUI7WUFDQSxNQUFNLElBQUksS0FBSyxDQUNiLG9IQUFvSCxDQUNySCxDQUFDO1NBQ0g7UUFFRCw4REFBOEQ7UUFDOUQsSUFBSSxZQUFZLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEQsS0FBSyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM3QjtRQUNELElBQUksZUFBZSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFELEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLGdCQUFnQixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUQsS0FBSyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsT0FBTyxLQUFLLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFoR0QsOEJBZ0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJT3V0cHV0TW9kZWxJbnRlcmZhY2V9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge0NPTkZJR30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuaW1wb3J0IHtLZXlWYWx1ZVBhaXJ9IGZyb20gJy4uLy4uL3R5cGVzL2NvbW1vbic7XG5cbmNvbnN0IHtNT0RFTF9JRFN9ID0gQ09ORklHO1xuY29uc3Qge1NDSV9FfSA9IE1PREVMX0lEUztcblxuZXhwb3J0IGNsYXNzIFNjaUVNb2RlbCBpbXBsZW1lbnRzIElPdXRwdXRNb2RlbEludGVyZmFjZSB7XG4gIGF1dGhQYXJhbXM6IG9iamVjdCB8IHVuZGVmaW5lZDsgLy8gRGVmaW5lZCBmb3IgY29tcGF0aWJpbGl0eS4gTm90IHVzZWQgaW4gdGhpIHNtb2RlbC5cbiAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvLyBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZVxuXG4gIC8qKlxuICAgKiBEZWZpbmVkIGZvciBjb21wYXRpYmlsaXR5LiBOb3QgdXNlZCBpbiBlbmVyZ3ktbmV0d29yay5cbiAgICovXG4gIGF1dGhlbnRpY2F0ZShhdXRoUGFyYW1zOiBvYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhQYXJhbXMgPSBhdXRoUGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgdGhlIHNjaS1lIFBsdWdpbiBmb3IgSUVGXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIG5hbWUgb2YgdGhlIHJlc291cmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0aWNQYXJhbXMgc3RhdGljIHBhcmFtZXRlcnMgZm9yIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgYXN5bmMgY29uZmlndXJlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBzdGF0aWNQYXJhbXM6IG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPElPdXRwdXRNb2RlbEludGVyZmFjZT4ge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG5cbiAgICBpZiAoc3RhdGljUGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgUGFyYW1ldGVycyBub3QgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIHRvdGFsIGVtaXNzaW9ucyBmb3IgYSBsaXN0IG9mIGlucHV0cy5cbiAgICpcbiAgICogRWFjaCBpbnB1dCByZXF1aXJlOlxuICAgKiBAcGFyYW0ge09iamVjdFtdfSBpbnB1dHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlucHV0c1tdLnRpbWVzdGFtcCBSRkMzMzM5IHRpbWVzdGFtcCBzdHJpbmdcbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUoaW5wdXRzOiBvYmplY3QgfCBvYmplY3RbXSB8IHVuZGVmaW5lZCk6IFByb21pc2U8YW55W10+IHtcbiAgICBpZiAoaW5wdXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgUGFyYW1ldGVycyBub3QgcHJvdmlkZWQnKTtcbiAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0cykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW5wdXRzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRzLm1hcCgoaW5wdXQ6IEtleVZhbHVlUGFpcikgPT4ge1xuICAgICAgdGhpcy5jb25maWd1cmUodGhpcy5uYW1lISwgaW5wdXQpO1xuICAgICAgaW5wdXRbJ2VuZXJneSddID0gdGhpcy5jYWxjdWxhdGVFbmVyZ3koaW5wdXQpO1xuXG4gICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBtb2RlbCBpZGVudGlmaWVyXG4gICAqL1xuICBtb2RlbElkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0NJX0U7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgc3VtIG9mIHRoZSBlbmVyZ3kgY29tcG9uZW50c1xuICAgKlxuICAgKiBlbmVyZ3ktY3B1OiBjcHUgZW5lcmd5IGluIGt3aFxuICAgKiBlbmVyZ3ktbWVtb3J5OiBlbmVyZ3kgZHVlIHRvIG1lbW9yeSB1c2FnZSBpbiBrd2hcbiAgICogZW5lcmd5LW5ldHdvcms6IGVuZXJneSBkdWUgdG8gbmV0d29yayBkYXRhIGluIGt3aFxuICAgKiB0aW1lc3RhbXA6IFJGQzMzMzkgdGltZXN0YW1wIHN0cmluZ1xuICAgKlxuICAgKiBhZGRzIGVuZXJneSArIGVfbmV0ICsgZV9tdW1cbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlRW5lcmd5KGlucHV0OiBLZXlWYWx1ZVBhaXIpIHtcbiAgICBsZXQgZV9tZW0gPSAwO1xuICAgIGxldCBlX25ldCA9IDA7XG4gICAgbGV0IGVfY3B1ID0gMDtcblxuICAgIGlmIChcbiAgICAgICEoJ2VuZXJneS1jcHUnIGluIGlucHV0KSAmJlxuICAgICAgISgnZW5lcmd5LW1lbW9yeScgaW4gaW5wdXQpICYmXG4gICAgICAhKCdlbmVyZ3ktbmV0d29yaycgaW4gaW5wdXQpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdSZXF1aXJlZCBQYXJhbWV0ZXJzIG5vdCBwcm92aWRlZDogYXQgbGVhc3Qgb25lIG9mIGVuZXJneS1tZW1vcnksIGVuZXJneS1uZXR3b3JrIG9yIGVuZXJneSBtdXN0IGJlIHByZXNlbnQgaW4gaW5wdXQnXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSB1c2VyIGdpdmVzIGEgbmVnYXRpdmUgdmFsdWUgaXQgd2lsbCBkZWZhdWx0IHRvIHplcm8uXG4gICAgaWYgKCdlbmVyZ3ktY3B1JyBpbiBpbnB1dCAmJiBpbnB1dFsnZW5lcmd5LWNwdSddID4gMCkge1xuICAgICAgZV9jcHUgPSBpbnB1dFsnZW5lcmd5LWNwdSddO1xuICAgIH1cbiAgICBpZiAoJ2VuZXJneS1tZW1vcnknIGluIGlucHV0ICYmIGlucHV0WydlbmVyZ3ktbWVtb3J5J10gPiAwKSB7XG4gICAgICBlX21lbSA9IGlucHV0WydlbmVyZ3ktbWVtb3J5J107XG4gICAgfVxuICAgIGlmICgnZW5lcmd5LW5ldHdvcmsnIGluIGlucHV0ICYmIGlucHV0WydlbmVyZ3ktbmV0d29yayddID4gMCkge1xuICAgICAgZV9uZXQgPSBpbnB1dFsnZW5lcmd5LW5ldHdvcmsnXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZV9jcHUgKyBlX25ldCArIGVfbWVtO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { IOutputModelInterface } from '../interfaces';
2
+ export declare class SciMModel 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
+ }