@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,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lib_1 = require("../../../lib");
4
+ const observatory_1 = require("../../../util/observatory");
5
+ describe('util/observatory: ', () => {
6
+ const expectedValue = [
7
+ {
8
+ timestamp: '2023-07-06T00:00',
9
+ duration: 3600,
10
+ 'cpu-util': 18.392,
11
+ 'energy-cpu': 2.5,
12
+ 'embodied-carbon': 0.619,
13
+ },
14
+ {
15
+ timestamp: '2023-08-06T00:00',
16
+ duration: 3600,
17
+ 'cpu-util': 16,
18
+ 'energy-cpu': 2.5,
19
+ 'embodied-carbon': 0.619,
20
+ },
21
+ ]; // model.execute method's result (output mock).
22
+ describe('init Observatory: ', () => {
23
+ it('initializes object with required properties.', () => {
24
+ const inputs = [];
25
+ const lab = new observatory_1.Observatory(inputs);
26
+ expect(lab).toHaveProperty('doInvestigationsWith');
27
+ expect(lab).toHaveProperty('getOutputs');
28
+ });
29
+ });
30
+ describe('doInvestgationsWith(): ', () => {
31
+ const inputs = [
32
+ {
33
+ timestamp: '2023-07-06T00:00',
34
+ duration: 3600,
35
+ 'cpu-util': 18.392,
36
+ },
37
+ {
38
+ timestamp: '2023-08-06T00:00',
39
+ duration: 3600,
40
+ 'cpu-util': 16,
41
+ },
42
+ ];
43
+ const params = {
44
+ 'core-units': 24,
45
+ 'physical-processor': 'Intel® Core™ i7-1185G7',
46
+ allocation: 'LINEAR',
47
+ verbose: true,
48
+ };
49
+ it('returns Observatory class.', async () => {
50
+ const lab = new observatory_1.Observatory(inputs);
51
+ const boaviztaModel = await new lib_1.BoaviztaCpuOutputModel().configure('test', params);
52
+ boaviztaModel.execute = jest.fn(() => Promise.resolve(expectedValue));
53
+ const result = await lab.doInvestigationsWith(boaviztaModel);
54
+ expect(result).toBeInstanceOf(observatory_1.Observatory);
55
+ });
56
+ });
57
+ describe('getOutputs(): ', () => {
58
+ const inputs = [
59
+ {
60
+ timestamp: '2023-07-06T00:00',
61
+ duration: 3600,
62
+ 'cpu-util': 18.392,
63
+ },
64
+ {
65
+ timestamp: '2023-08-06T00:00',
66
+ duration: 3600,
67
+ 'cpu-util': 16,
68
+ },
69
+ ];
70
+ const params = {
71
+ 'core-units': 24,
72
+ 'physical-processor': 'Intel® Core™ i7-1185G7',
73
+ allocation: 'LINEAR',
74
+ verbose: true,
75
+ };
76
+ it('returns empty outputs data.', () => {
77
+ const lab = new observatory_1.Observatory(inputs);
78
+ const expectedValue = [];
79
+ expect(lab.getOutputs()).toEqual(expectedValue);
80
+ });
81
+ it('returns executed outputs data.', async () => {
82
+ const lab = new observatory_1.Observatory(inputs);
83
+ const boaviztaModel = await new lib_1.BoaviztaCpuOutputModel().configure('test', params);
84
+ boaviztaModel.execute = jest.fn(() => Promise.resolve(expectedValue));
85
+ const result = await lab.doInvestigationsWith(boaviztaModel);
86
+ expect(result).toBeInstanceOf(observatory_1.Observatory);
87
+ expect(lab.getOutputs()).toEqual(expectedValue);
88
+ });
89
+ });
90
+ });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YXRvcnkudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC91dGlsL29ic2VydmF0b3J5LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBb0Q7QUFFcEQsMkRBQXNEO0FBRXRELFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7SUFDbEMsTUFBTSxhQUFhLEdBQUc7UUFDcEI7WUFDRSxTQUFTLEVBQUUsa0JBQWtCO1lBQzdCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsVUFBVSxFQUFFLE1BQU07WUFDbEIsWUFBWSxFQUFFLEdBQUc7WUFDakIsaUJBQWlCLEVBQUUsS0FBSztTQUN6QjtRQUNEO1lBQ0UsU0FBUyxFQUFFLGtCQUFrQjtZQUM3QixRQUFRLEVBQUUsSUFBSTtZQUNkLFVBQVUsRUFBRSxFQUFFO1lBQ2QsWUFBWSxFQUFFLEdBQUc7WUFDakIsaUJBQWlCLEVBQUUsS0FBSztTQUN6QjtLQUNGLENBQUMsQ0FBQywrQ0FBK0M7SUFFbEQsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtRQUNsQyxFQUFFLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1lBQ3RELE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztZQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLHlCQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFcEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7UUFDdkMsTUFBTSxNQUFNLEdBQVE7WUFDbEI7Z0JBQ0UsU0FBUyxFQUFFLGtCQUFrQjtnQkFD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aXp0YUNwdU91dHB1dE1vZGVsfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbXBvcnQge09ic2VydmF0b3J5fSBmcm9tICcuLi8uLi8uLi91dGlsL29ic2VydmF0b3J5JztcblxuZGVzY3JpYmUoJ3V0aWwvb2JzZXJ2YXRvcnk6ICcsICgpID0+IHtcbiAgY29uc3QgZXhwZWN0ZWRWYWx1ZSA9IFtcbiAgICB7XG4gICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgJ2NwdS11dGlsJzogMTguMzkyLFxuICAgICAgJ2VuZXJneS1jcHUnOiAyLjUsXG4gICAgICAnZW1ib2RpZWQtY2FyYm9uJzogMC42MTksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aW1lc3RhbXA6ICcyMDIzLTA4LTA2VDAwOjAwJyxcbiAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgJ2NwdS11dGlsJzogMTYsXG4gICAgICAnZW5lcmd5LWNwdSc6IDIuNSxcbiAgICAgICdlbWJvZGllZC1jYXJib24nOiAwLjYxOSxcbiAgICB9LFxuICBdOyAvLyBtb2RlbC5leGVjdXRlIG1ldGhvZCdzIHJlc3VsdCAob3V0cHV0IG1vY2spLlxuXG4gIGRlc2NyaWJlKCdpbml0IE9ic2VydmF0b3J5OiAnLCAoKSA9PiB7XG4gICAgaXQoJ2luaXRpYWxpemVzIG9iamVjdCB3aXRoIHJlcXVpcmVkIHByb3BlcnRpZXMuJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXRzOiBhbnkgPSBbXTtcbiAgICAgIGNvbnN0IGxhYiA9IG5ldyBPYnNlcnZhdG9yeShpbnB1dHMpO1xuXG4gICAgICBleHBlY3QobGFiKS50b0hhdmVQcm9wZXJ0eSgnZG9JbnZlc3RpZ2F0aW9uc1dpdGgnKTtcbiAgICAgIGV4cGVjdChsYWIpLnRvSGF2ZVByb3BlcnR5KCdnZXRPdXRwdXRzJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkb0ludmVzdGdhdGlvbnNXaXRoKCk6ICcsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dHM6IGFueSA9IFtcbiAgICAgIHtcbiAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0wNy0wNlQwMDowMCcsXG4gICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAnY3B1LXV0aWwnOiAxOC4zOTIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA4LTA2VDAwOjAwJyxcbiAgICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAgICdjcHUtdXRpbCc6IDE2LFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgJ2NvcmUtdW5pdHMnOiAyNCxcbiAgICAgICdwaHlzaWNhbC1wcm9jZXNzb3InOiAnSW50ZWzCriBDb3Jl4oSiIGk3LTExODVHNycsXG4gICAgICBhbGxvY2F0aW9uOiAnTElORUFSJyxcbiAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgfTtcblxuICAgIGl0KCdyZXR1cm5zIE9ic2VydmF0b3J5IGNsYXNzLicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGxhYiA9IG5ldyBPYnNlcnZhdG9yeShpbnB1dHMpO1xuXG4gICAgICBjb25zdCBib2F2aXp0YU1vZGVsID0gYXdhaXQgbmV3IEJvYXZpenRhQ3B1T3V0cHV0TW9kZWwoKS5jb25maWd1cmUoXG4gICAgICAgICd0ZXN0JyxcbiAgICAgICAgcGFyYW1zXG4gICAgICApO1xuXG4gICAgICBib2F2aXp0YU1vZGVsLmV4ZWN1dGUgPSBqZXN0LmZuKCgpID0+IFByb21pc2UucmVzb2x2ZShleHBlY3RlZFZhbHVlKSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGxhYi5kb0ludmVzdGlnYXRpb25zV2l0aChib2F2aXp0YU1vZGVsKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVJbnN0YW5jZU9mKE9ic2VydmF0b3J5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldE91dHB1dHMoKTogJywgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0czogYW55ID0gW1xuICAgICAge1xuICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAgICdjcHUtdXRpbCc6IDE4LjM5MixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDgtMDZUMDA6MDAnLFxuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTYsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAnY29yZS11bml0cyc6IDI0LFxuICAgICAgJ3BoeXNpY2FsLXByb2Nlc3Nvcic6ICdJbnRlbMKuIENvcmXihKIgaTctMTE4NUc3JyxcbiAgICAgIGFsbG9jYXRpb246ICdMSU5FQVInLFxuICAgICAgdmVyYm9zZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgaXQoJ3JldHVybnMgZW1wdHkgb3V0cHV0cyBkYXRhLicsICgpID0+IHtcbiAgICAgIGNvbnN0IGxhYiA9IG5ldyBPYnNlcnZhdG9yeShpbnB1dHMpO1xuXG4gICAgICBjb25zdCBleHBlY3RlZFZhbHVlOiBhbnkgPSBbXTtcblxuICAgICAgZXhwZWN0KGxhYi5nZXRPdXRwdXRzKCkpLnRvRXF1YWwoZXhwZWN0ZWRWYWx1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBleGVjdXRlZCBvdXRwdXRzIGRhdGEuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbGFiID0gbmV3IE9ic2VydmF0b3J5KGlucHV0cyk7XG4gICAgICBjb25zdCBib2F2aXp0YU1vZGVsID0gYXdhaXQgbmV3IEJvYXZpenRhQ3B1T3V0cHV0TW9kZWwoKS5jb25maWd1cmUoXG4gICAgICAgICd0ZXN0JyxcbiAgICAgICAgcGFyYW1zXG4gICAgICApO1xuXG4gICAgICBib2F2aXp0YU1vZGVsLmV4ZWN1dGUgPSBqZXN0LmZuKCgpID0+IFByb21pc2UucmVzb2x2ZShleHBlY3RlZFZhbHVlKSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsYWIuZG9JbnZlc3RpZ2F0aW9uc1dpdGgoYm9hdml6dGFNb2RlbCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVJbnN0YW5jZU9mKE9ic2VydmF0b3J5KTtcbiAgICAgIGV4cGVjdChsYWIuZ2V0T3V0cHV0cygpKS50b0VxdWFsKGV4cGVjdGVkVmFsdWUpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const model_universe_1 = require("../../../__mocks__/model-universe");
4
+ jest.mock('../../../util/models-universe', () => ({
5
+ __esModule: true,
6
+ ModelsUniverse: model_universe_1.ModelsUniverse,
7
+ }));
8
+ const supercomputer_1 = require("../../../util/supercomputer");
9
+ const models_universe_1 = require("../../../util/models-universe");
10
+ const config_1 = require("../../../config");
11
+ const { NOT_INITIALIZED_MODEL } = config_1.STRINGS;
12
+ describe('util/supercomputer: ', () => {
13
+ const impl = {
14
+ name: 'gsf-demo',
15
+ description: 'Hello',
16
+ tags: {
17
+ kind: 'web',
18
+ complexity: 'moderate',
19
+ category: 'cloud',
20
+ },
21
+ initialize: {
22
+ models: [
23
+ {
24
+ name: 'boavizta-cpu',
25
+ kind: 'plugin',
26
+ config: {
27
+ allocation: 'LINEAR',
28
+ verbose: true,
29
+ },
30
+ },
31
+ ],
32
+ },
33
+ graph: {
34
+ children: {
35
+ 'front-end': {
36
+ pipeline: ['boavizta-cpu'],
37
+ config: {
38
+ 'boavizta-cpu': {
39
+ 'core-units': 24,
40
+ processor: 'Intel® Core™ i7-1185G7',
41
+ },
42
+ },
43
+ inputs: [
44
+ {
45
+ timestamp: '2023-07-06T00:00',
46
+ duration: 3600,
47
+ 'cpu-util': 18.392,
48
+ },
49
+ {
50
+ timestamp: '2023-08-06T00:00',
51
+ duration: 3600,
52
+ 'cpu-util': 16,
53
+ },
54
+ ],
55
+ },
56
+ },
57
+ },
58
+ };
59
+ describe('init Supercomputer: ', () => {
60
+ it('initializes object with required properties.', () => {
61
+ const impl = {};
62
+ const modelsHandbook = new models_universe_1.ModelsUniverse();
63
+ const aterui = new supercomputer_1.Supercomputer(impl, modelsHandbook);
64
+ expect(aterui).toHaveProperty('compute');
65
+ });
66
+ });
67
+ describe('compute(): ', () => {
68
+ const implWithNestedChildren = {
69
+ name: 'ntt-data-on-premise',
70
+ description: 'https://github.com/Green-Software-Foundation/sci-guide/blob/dev/use-case-submissions/nttdatta-On-Premise-Web-system.md',
71
+ tags: {
72
+ kind: 'web',
73
+ complexity: 'moderate',
74
+ category: 'on-premise',
75
+ },
76
+ initialize: {
77
+ models: [
78
+ {
79
+ name: 'sci-e',
80
+ kind: 'plugin',
81
+ verbose: false,
82
+ path: '',
83
+ },
84
+ {
85
+ name: 'sci-m',
86
+ kind: 'plugin',
87
+ verbose: false,
88
+ path: '',
89
+ },
90
+ {
91
+ name: 'sci-o',
92
+ kind: 'plugin',
93
+ verbose: false,
94
+ path: '',
95
+ },
96
+ ],
97
+ },
98
+ graph: {
99
+ children: {
100
+ 'layer-3-switch': {
101
+ pipeline: ['sci-e', 'sci-m', 'sci-o'],
102
+ config: {
103
+ 'sci-m': {
104
+ te: 251000,
105
+ tir: 3600,
106
+ el: 126144000,
107
+ rr: 1,
108
+ tor: 1,
109
+ },
110
+ 'sci-o': {
111
+ 'grid-carbon-intensity': 457,
112
+ },
113
+ },
114
+ inputs: [
115
+ {
116
+ timestamp: '2023-07-06T00:00',
117
+ duration: 3600,
118
+ 'five-min-input-rate': 100,
119
+ 'five-min-output-rate': 100,
120
+ 'grid-carbon-intensity': 457,
121
+ 'energy-network': 0.00496,
122
+ requests: 38032740,
123
+ },
124
+ ],
125
+ },
126
+ 'layer-2-switch': {
127
+ pipeline: ['sci-e', 'sci-m', 'sci-o'],
128
+ config: {
129
+ 'sci-m': {
130
+ te: 251000,
131
+ tir: 3600,
132
+ el: 126144000,
133
+ rr: 1,
134
+ tor: 1,
135
+ },
136
+ 'sci-o': {
137
+ grid_ci: 457,
138
+ },
139
+ },
140
+ children: {
141
+ 'switch-1': {
142
+ inputs: [
143
+ {
144
+ timestamp: '2023-07-06T00:00',
145
+ duration: 1,
146
+ 'energy-network': 0.000811,
147
+ 'grid-carbon-intensity': 457,
148
+ requests: 38032740,
149
+ },
150
+ ],
151
+ },
152
+ 'switch-2': {
153
+ inputs: [
154
+ {
155
+ timestamp: '2023-07-06T00:00',
156
+ duration: 1,
157
+ 'energy-network': 0,
158
+ 'grid-carbon-intensity': 457,
159
+ requests: 38032740,
160
+ },
161
+ ],
162
+ },
163
+ 'switch-3': {
164
+ inputs: [
165
+ {
166
+ timestamp: '2023-07-06T00:00',
167
+ duration: 1,
168
+ 'energy-network': 0.000955,
169
+ 'grid-carbon-intensity': 457,
170
+ requests: 38032740,
171
+ },
172
+ ],
173
+ },
174
+ 'switch-4': {
175
+ inputs: [
176
+ {
177
+ timestamp: '2023-07-06T00:00',
178
+ duration: 1,
179
+ 'energy-network': 1.14e-8,
180
+ 'grid-carbon-intensity': 457,
181
+ requests: 38032740,
182
+ },
183
+ ],
184
+ },
185
+ },
186
+ },
187
+ },
188
+ },
189
+ };
190
+ it('rejects with model is not initialized.', async () => {
191
+ expect.assertions(2);
192
+ const modelsHandbook = new models_universe_1.ModelsUniverse();
193
+ const aterui = new supercomputer_1.Supercomputer(impl, modelsHandbook);
194
+ const expectedMessage = NOT_INITIALIZED_MODEL('boavizta-cpu');
195
+ try {
196
+ await aterui.compute();
197
+ }
198
+ catch (error) {
199
+ if (error instanceof Error) {
200
+ expect(error).toBeInstanceOf(Error);
201
+ expect(error.message).toBe(expectedMessage);
202
+ }
203
+ }
204
+ });
205
+ it('applies computing to given impl.', async () => {
206
+ expect.assertions(1);
207
+ const modelsHandbook = new models_universe_1.ModelsUniverse();
208
+ impl.initialize.models.forEach((model) => modelsHandbook.writeDown(model));
209
+ const ateruiComputer = new supercomputer_1.Supercomputer(impl, modelsHandbook);
210
+ const ompl = await ateruiComputer.compute();
211
+ const children = ompl.graph.children;
212
+ const childrenNames = Object.keys(children);
213
+ expect(ompl.graph.children[childrenNames[0]]).toHaveProperty('outputs');
214
+ });
215
+ it('applies computing to nested children components.', async () => {
216
+ expect.assertions(4);
217
+ const modelsHandbook = new models_universe_1.ModelsUniverse();
218
+ implWithNestedChildren.initialize.models.forEach((model) => modelsHandbook.writeDown(model));
219
+ const ateruiComputer = new supercomputer_1.Supercomputer(implWithNestedChildren, modelsHandbook);
220
+ const ompl = await ateruiComputer.compute();
221
+ const children = ompl.graph.children;
222
+ const childrenNames = Object.keys(children);
223
+ const oneWithNested = childrenNames[1];
224
+ const nestedChildren = children[oneWithNested].children;
225
+ Object.keys(nestedChildren).forEach((child) => {
226
+ expect(nestedChildren[child]).toHaveProperty('outputs');
227
+ });
228
+ });
229
+ });
230
+ });
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwZXJjb21wdXRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL19fdGVzdHNfXy91bml0L3V0aWwvc3VwZXJjb21wdXRlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0VBQXNGO0FBRXRGLElBQUksQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRCxVQUFVLEVBQUUsSUFBSTtJQUNoQixjQUFjLEVBQUUsK0JBQWlCO0NBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBRUosK0RBQTBEO0FBQzFELG1FQUE2RDtBQUU3RCw0Q0FBd0M7QUFFeEMsTUFBTSxFQUFDLHFCQUFxQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUV4QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ3BDLE1BQU0sSUFBSSxHQUFRO1FBQ2hCLElBQUksRUFBRSxVQUFVO1FBQ2hCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxLQUFLO1lBQ1gsVUFBVSxFQUFFLFVBQVU7WUFDdEIsUUFBUSxFQUFFLE9BQU87U0FDbEI7UUFDRCxVQUFVLEVBQUU7WUFDVixNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLElBQUksRUFBRSxRQUFRO29CQUNkLE1BQU0sRUFBRTt3QkFDTixVQUFVLEVBQUUsUUFBUTt3QkFDcEIsT0FBTyxFQUFFLElBQUk7cUJBQ2Q7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsUUFBUSxFQUFFO2dCQUNSLFdBQVcsRUFBRTtvQkFDWCxRQUFRLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzFCLE1BQU0sRUFBRTt3QkFDTixjQUFjLEVBQUU7NEJBQ2QsWUFBWSxFQUFFLEVBQUU7NEJBQ2hCLFNBQVMsRUFBRSx3QkFBd0I7eUJBQ3BDO3FCQUNGO29CQUNELE1BQU0sRUFB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QUUsQ0FBQyxrREFBa0QsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNoRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJCLE1BQU0sY0FBYyxHQUFHLElBQUksZ0NBQWMsRUFBRSxDQUFDO1lBQzVDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDOUQsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDaEMsQ0FBQztZQUVGLE1BQU0sY0FBYyxHQUFHLElBQUksNkJBQWEsQ0FDdEMsc0JBQXNCLEVBQ3RCLGNBQWMsQ0FDZixDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUcsTUFBTSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDckMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdkMsTUFBTSxjQUFjLEdBQVEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUU3RCxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNqRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbHNVbml2ZXJzZSBhcyBNb2NrTW9kZWxVbml2ZXJzZX0gZnJvbSAnLi4vLi4vLi4vX19tb2Nrc19fL21vZGVsLXVuaXZlcnNlJztcblxuamVzdC5tb2NrKCcuLi8uLi8uLi91dGlsL21vZGVscy11bml2ZXJzZScsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIE1vZGVsc1VuaXZlcnNlOiBNb2NrTW9kZWxVbml2ZXJzZSxcbn0pKTtcblxuaW1wb3J0IHtTdXBlcmNvbXB1dGVyfSBmcm9tICcuLi8uLi8uLi91dGlsL3N1cGVyY29tcHV0ZXInO1xuaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi4vLi4vLi4vdXRpbC9tb2RlbHMtdW5pdmVyc2UnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uLy4uLy4uL2NvbmZpZyc7XG5cbmNvbnN0IHtOT1RfSU5JVElBTElaRURfTU9ERUx9ID0gU1RSSU5HUztcblxuZGVzY3JpYmUoJ3V0aWwvc3VwZXJjb21wdXRlcjogJywgKCkgPT4ge1xuICBjb25zdCBpbXBsOiBhbnkgPSB7XG4gICAgbmFtZTogJ2dzZi1kZW1vJyxcbiAgICBkZXNjcmlwdGlvbjogJ0hlbGxvJyxcbiAgICB0YWdzOiB7XG4gICAgICBraW5kOiAnd2ViJyxcbiAgICAgIGNvbXBsZXhpdHk6ICdtb2RlcmF0ZScsXG4gICAgICBjYXRlZ29yeTogJ2Nsb3VkJyxcbiAgICB9LFxuICAgIGluaXRpYWxpemU6IHtcbiAgICAgIG1vZGVsczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2JvYXZpenRhLWNwdScsXG4gICAgICAgICAga2luZDogJ3BsdWdpbicsXG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBhbGxvY2F0aW9uOiAnTElORUFSJyxcbiAgICAgICAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICBncmFwaDoge1xuICAgICAgY2hpbGRyZW46IHtcbiAgICAgICAgJ2Zyb250LWVuZCc6IHtcbiAgICAgICAgICBwaXBlbGluZTogWydib2F2aXp0YS1jcHUnXSxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICdib2F2aXp0YS1jcHUnOiB7XG4gICAgICAgICAgICAgICdjb3JlLXVuaXRzJzogMjQsXG4gICAgICAgICAgICAgIHByb2Nlc3NvcjogJ0ludGVswq4gQ29yZeKEoiBpNy0xMTg1RzcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAgICAgICAgICdjcHUtdXRpbCc6IDE4LjM5MixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDgtMDZUMDA6MDAnLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAgICAgJ2NwdS11dGlsJzogMTYsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgZGVzY3JpYmUoJ2luaXQgU3VwZXJjb21wdXRlcjogJywgKCkgPT4ge1xuICAgIGl0KCdpbml0aWFsaXplcyBvYmplY3Qgd2l0aCByZXF1aXJlZCBwcm9wZXJ0aWVzLicsICgpID0+IHtcbiAgICAgIGNvbnN0IGltcGw6IGFueSA9IHt9O1xuICAgICAgY29uc3QgbW9kZWxzSGFuZGJvb2sgPSBuZXcgTW9kZWxzVW5pdmVyc2UoKTtcbiAgICAgIGNvbnN0IGF0ZXJ1aSA9IG5ldyBTdXBlcmNvbXB1dGVyKGltcGwsIG1vZGVsc0hhbmRib29rKTtcblxuICAgICAgZXhwZWN0KGF0ZXJ1aSkudG9IYXZlUHJvcGVydHkoJ2NvbXB1dGUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NvbXB1dGUoKTogJywgKCkgPT4ge1xuICAgIGNvbnN0IGltcGxXaXRoTmVzdGVkQ2hpbGRyZW46IGFueSA9IHtcbiAgICAgIG5hbWU6ICdudHQtZGF0YS1vbi1wcmVtaXNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL0dyZWVuLVNvZnR3YXJlLUZvdW5kYXRpb24vc2NpLWd1aWRlL2Jsb2IvZGV2L3VzZS1jYXNlLXN1Ym1pc3Npb25zL250dGRhdHRhLU9uLVByZW1pc2UtV2ViLXN5c3RlbS5tZCcsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIGtpbmQ6ICd3ZWInLFxuICAgICAgICBjb21wbGV4aXR5OiAnbW9kZXJhdGUnLFxuICAgICAgICBjYXRlZ29yeTogJ29uLXByZW1pc2UnLFxuICAgICAgfSxcbiAgICAgIGluaXRpYWxpemU6IHtcbiAgICAgICAgbW9kZWxzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3NjaS1lJyxcbiAgICAgICAgICAgIGtpbmQ6ICdwbHVnaW4nLFxuICAgICAgICAgICAgdmVyYm9zZTogZmFsc2UsXG4gICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdzY2ktbScsXG4gICAgICAgICAgICBraW5kOiAncGx1Z2luJyxcbiAgICAgICAgICAgIHZlcmJvc2U6IGZhbHNlLFxuICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnc2NpLW8nLFxuICAgICAgICAgICAga2luZDogJ3BsdWdpbicsXG4gICAgICAgICAgICB2ZXJib3NlOiBmYWxzZSxcbiAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgZ3JhcGg6IHtcbiAgICAgICAgY2hpbGRyZW46IHtcbiAgICAgICAgICAnbGF5ZXItMy1zd2l0Y2gnOiB7XG4gICAgICAgICAgICBwaXBlbGluZTogWydzY2ktZScsICdzY2ktbScsICdzY2ktbyddLFxuICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICdzY2ktbSc6IHtcbiAgICAgICAgICAgICAgICB0ZTogMjUxMDAwLFxuICAgICAgICAgICAgICAgIHRpcjogMzYwMCxcbiAgICAgICAgICAgICAgICBlbDogMTI2MTQ0MDAwLFxuICAgICAgICAgICAgICAgIHJyOiAxLFxuICAgICAgICAgICAgICAgIHRvcjogMSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ3NjaS1vJzoge1xuICAgICAgICAgICAgICAgICdncmlkLWNhcmJvbi1pbnRlbnNpdHknOiA0NTcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAgICAgICAnZml2ZS1taW4taW5wdXQtcmF0ZSc6IDEwMCxcbiAgICAgICAgICAgICAgICAnZml2ZS1taW4tb3V0cHV0LXJhdGUnOiAxMDAsXG4gICAgICAgICAgICAgICAgJ2dyaWQtY2FyYm9uLWludGVuc2l0eSc6IDQ1NyxcbiAgICAgICAgICAgICAgICAnZW5lcmd5LW5ldHdvcmsnOiAwLjAwNDk2LFxuICAgICAgICAgICAgICAgIHJlcXVlc3RzOiAzODAzMjc0MCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnbGF5ZXItMi1zd2l0Y2gnOiB7XG4gICAgICAgICAgICBwaXBlbGluZTogWydzY2ktZScsICdzY2ktbScsICdzY2ktbyddLFxuICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICdzY2ktbSc6IHtcbiAgICAgICAgICAgICAgICB0ZTogMjUxMDAwLFxuICAgICAgICAgICAgICAgIHRpcjogMzYwMCxcbiAgICAgICAgICAgICAgICBlbDogMTI2MTQ0MDAwLFxuICAgICAgICAgICAgICAgIHJyOiAxLFxuICAgICAgICAgICAgICAgIHRvcjogMSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ3NjaS1vJzoge1xuICAgICAgICAgICAgICAgIGdyaWRfY2k6IDQ1NyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZHJlbjoge1xuICAgICAgICAgICAgICAnc3dpdGNoLTEnOiB7XG4gICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDctMDZUMDA6MDAnLFxuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMSxcbiAgICAgICAgICAgICAgICAgICAgJ2VuZXJneS1uZXR3b3JrJzogMC4wMDA4MTEsXG4gICAgICAgICAgICAgICAgICAgICdncmlkLWNhcmJvbi1pbnRlbnNpdHknOiA0NTcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzOiAzODAzMjc0MCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ3N3aXRjaC0yJzoge1xuICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgICAgICAgICAgICAgICdlbmVyZ3ktbmV0d29yayc6IDAsXG4gICAgICAgICAgICAgICAgICAgICdncmlkLWNhcmJvbi1pbnRlbnNpdHknOiA0NTcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzOiAzODAzMjc0MCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ3N3aXRjaC0zJzoge1xuICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgICAgICAgICAgICAgICdlbmVyZ3ktbmV0d29yayc6IDAuMDAwOTU1LFxuICAgICAgICAgICAgICAgICAgICAnZ3JpZC1jYXJib24taW50ZW5zaXR5JzogNDU3LFxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0czogMzgwMzI3NDAsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICdzd2l0Y2gtNCc6IHtcbiAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0wNy0wNlQwMDowMCcsXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxLFxuICAgICAgICAgICAgICAgICAgICAnZW5lcmd5LW5ldHdvcmsnOiAxLjE0ZS04LFxuICAgICAgICAgICAgICAgICAgICAnZ3JpZC1jYXJib24taW50ZW5zaXR5JzogNDU3LFxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0czogMzgwMzI3NDAsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpdCgncmVqZWN0cyB3aXRoIG1vZGVsIGlzIG5vdCBpbml0aWFsaXplZC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBleHBlY3QuYXNzZXJ0aW9ucygyKTtcblxuICAgICAgY29uc3QgbW9kZWxzSGFuZGJvb2sgPSBuZXcgTW9kZWxzVW5pdmVyc2UoKTtcbiAgICAgIGNvbnN0IGF0ZXJ1aSA9IG5ldyBTdXBlcmNvbXB1dGVyKGltcGwsIG1vZGVsc0hhbmRib29rKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRNZXNzYWdlID0gTk9UX0lOSVRJQUxJWkVEX01PREVMKCdib2F2aXp0YS1jcHUnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXRlcnVpLmNvbXB1dGUoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yKS50b0JlSW5zdGFuY2VPZihFcnJvcik7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvQmUoZXhwZWN0ZWRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ2FwcGxpZXMgY29tcHV0aW5nIHRvIGdpdmVuIGltcGwuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgZXhwZWN0LmFzc2VydGlvbnMoMSk7XG5cbiAgICAgIGNvbnN0IG1vZGVsc0hhbmRib29rID0gbmV3IE1vZGVsc1VuaXZlcnNlKCk7XG4gICAgICBpbXBsLmluaXRpYWxpemUubW9kZWxzLmZvckVhY2goKG1vZGVsOiBhbnkpID0+XG4gICAgICAgIG1vZGVsc0hhbmRib29rLndyaXRlRG93bihtb2RlbClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGF0ZXJ1aUNvbXB1dGVyID0gbmV3IFN1cGVyY29tcHV0ZXIoaW1wbCwgbW9kZWxzSGFuZGJvb2spO1xuICAgICAgY29uc3Qgb21wbCA9IGF3YWl0IGF0ZXJ1aUNvbXB1dGVyLmNvbXB1dGUoKTtcblxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBvbXBsLmdyYXBoLmNoaWxkcmVuO1xuICAgICAgY29uc3QgY2hpbGRyZW5OYW1lcyA9IE9iamVjdC5rZXlzKGNoaWxkcmVuKTtcblxuICAgICAgZXhwZWN0KG9tcGwuZ3JhcGguY2hpbGRyZW5bY2hpbGRyZW5OYW1lc1swXV0pLnRvSGF2ZVByb3BlcnR5KCdvdXRwdXRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYXBwbGllcyBjb21wdXRpbmcgdG8gbmVzdGVkIGNoaWxkcmVuIGNvbXBvbmVudHMuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgZXhwZWN0LmFzc2VydGlvbnMoNCk7XG5cbiAgICAgIGNvbnN0IG1vZGVsc0hhbmRib29rID0gbmV3IE1vZGVsc1VuaXZlcnNlKCk7XG4gICAgICBpbXBsV2l0aE5lc3RlZENoaWxkcmVuLmluaXRpYWxpemUubW9kZWxzLmZvckVhY2goKG1vZGVsOiBhbnkpID0+XG4gICAgICAgIG1vZGVsc0hhbmRib29rLndyaXRlRG93bihtb2RlbClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGF0ZXJ1aUNvbXB1dGVyID0gbmV3IFN1cGVyY29tcHV0ZXIoXG4gICAgICAgIGltcGxXaXRoTmVzdGVkQ2hpbGRyZW4sXG4gICAgICAgIG1vZGVsc0hhbmRib29rXG4gICAgICApO1xuICAgICAgY29uc3Qgb21wbCA9IGF3YWl0IGF0ZXJ1aUNvbXB1dGVyLmNvbXB1dGUoKTtcblxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBvbXBsLmdyYXBoLmNoaWxkcmVuO1xuICAgICAgY29uc3QgY2hpbGRyZW5OYW1lcyA9IE9iamVjdC5rZXlzKGNoaWxkcmVuKTtcbiAgICAgIGNvbnN0IG9uZVdpdGhOZXN0ZWQgPSBjaGlsZHJlbk5hbWVzWzFdO1xuXG4gICAgICBjb25zdCBuZXN0ZWRDaGlsZHJlbjogYW55ID0gY2hpbGRyZW5bb25lV2l0aE5lc3RlZF0uY2hpbGRyZW47XG5cbiAgICAgIE9iamVjdC5rZXlzKG5lc3RlZENoaWxkcmVuKS5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgIGV4cGVjdChuZXN0ZWRDaGlsZHJlbltjaGlsZF0pLnRvSGF2ZVByb3BlcnR5KCdvdXRwdXRzJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ jest.mock('fs/promises', () => require('../../../__mocks__/fs'));
4
+ const yaml_1 = require("../../../util/yaml");
5
+ describe('util/yaml: ', () => {
6
+ describe('checkIfFileIsYaml(): ', () => {
7
+ it('returns false, in case of not yaml file.', () => {
8
+ const fileName = 'mock-filename';
9
+ const check = (0, yaml_1.checkIfFileIsYaml)(fileName);
10
+ expect(check).toBeFalsy();
11
+ });
12
+ it('returns true, in case of `yml` file.', () => {
13
+ const fileName = 'mock-filename.yml';
14
+ const check = (0, yaml_1.checkIfFileIsYaml)(fileName);
15
+ expect(check).toBeTruthy();
16
+ });
17
+ it('returns true, in case of `yaml` file.', () => {
18
+ const fileName = 'mock-filename.yaml';
19
+ const check = (0, yaml_1.checkIfFileIsYaml)(fileName);
20
+ expect(check).toBeTruthy();
21
+ });
22
+ });
23
+ describe('openYamlFileAsObject(): ', () => {
24
+ it('should load and serve yaml as object.', async () => {
25
+ expect.assertions(2);
26
+ const result = await (0, yaml_1.openYamlFileAsObject)('mock');
27
+ const expectedType = 'object';
28
+ const expectedYamlName = 'gsf-demo';
29
+ expect(typeof result).toBe(expectedType);
30
+ expect(result.name).toBe(expectedYamlName);
31
+ });
32
+ });
33
+ describe('saveYamlFileAs(): ', () => {
34
+ it('saves yaml file with passed object and path.', async () => {
35
+ const object = {
36
+ name: 'mock-name',
37
+ };
38
+ const pathToFile = 'mock-pathToFile';
39
+ await (0, yaml_1.saveYamlFileAs)(object, pathToFile);
40
+ });
41
+ it('throws error in case if something wrong with path.', async () => {
42
+ const object = {
43
+ name: 'mock-name',
44
+ };
45
+ const pathToFile = 'reject'; // Mock value for rejection.
46
+ const expectedErrorMessage = 'Wrong file path';
47
+ try {
48
+ await (0, yaml_1.saveYamlFileAs)(object, pathToFile);
49
+ }
50
+ catch (error) {
51
+ if (error instanceof Error) {
52
+ expect(error).toBeInstanceOf(Error);
53
+ expect(error.message).toBe(expectedErrorMessage);
54
+ }
55
+ }
56
+ });
57
+ });
58
+ });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL19fdGVzdHNfXy91bml0L3V0aWwveWFtbC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztBQUVqRSw2Q0FJNEI7QUFFNUIsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtRQUNyQyxFQUFFLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO1lBQ2xELE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztZQUVqQyxNQUFNLEtBQUssR0FBRyxJQUFBLHdCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7WUFDOUMsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUM7WUFFckMsTUFBTSxLQUFLLEdBQUcsSUFBQSx3QkFBaUIsRUFBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1lBQy9DLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDO1lBRXRDLE1BQU0sS0FBSyxHQUFHLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1FBQ3hDLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSwyQkFBb0IsRUFBQyxNQUFNLENBQUMsQ0FBQztZQUNsRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUM7WUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7WUFFcEMsTUFBTSxDQUFDLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7UUFDbEMsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVELE1BQU0sTUFBTSxHQUFHO2dCQUNiLElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUM7WUFDRixNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztZQUVyQyxNQUFNLElBQUEscUJBQWMsRUFBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0RBQW9ELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbEUsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsSUFBSSxFQUFFLFdBQVc7YUFDbEIsQ0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLDRCQUE0QjtZQUV6RCxNQUFNLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDO1lBRS9DLElBQUk7Z0JBQ0YsTUFBTSxJQUFBLHFCQUFjLEVBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzFDO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO29CQUMxQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2lCQUNsRDthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiamVzdC5tb2NrKCdmcy9wcm9taXNlcycsICgpID0+IHJlcXVpcmUoJy4uLy4uLy4uL19fbW9ja3NfXy9mcycpKTtcblxuaW1wb3J0IHtcbiAgY2hlY2tJZkZpbGVJc1lhbWwsXG4gIG9wZW5ZYW1sRmlsZUFzT2JqZWN0LFxuICBzYXZlWWFtbEZpbGVBcyxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbC95YW1sJztcblxuZGVzY3JpYmUoJ3V0aWwveWFtbDogJywgKCkgPT4ge1xuICBkZXNjcmliZSgnY2hlY2tJZkZpbGVJc1lhbWwoKTogJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIGZhbHNlLCBpbiBjYXNlIG9mIG5vdCB5YW1sIGZpbGUuJywgKCkgPT4ge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSAnbW9jay1maWxlbmFtZSc7XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gY2hlY2tJZkZpbGVJc1lhbWwoZmlsZU5hbWUpO1xuICAgICAgZXhwZWN0KGNoZWNrKS50b0JlRmFsc3koKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIHRydWUsIGluIGNhc2Ugb2YgYHltbGAgZmlsZS4nLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWxlTmFtZSA9ICdtb2NrLWZpbGVuYW1lLnltbCc7XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gY2hlY2tJZkZpbGVJc1lhbWwoZmlsZU5hbWUpO1xuICAgICAgZXhwZWN0KGNoZWNrKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyB0cnVlLCBpbiBjYXNlIG9mIGB5YW1sYCBmaWxlLicsICgpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gJ21vY2stZmlsZW5hbWUueWFtbCc7XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gY2hlY2tJZkZpbGVJc1lhbWwoZmlsZU5hbWUpO1xuICAgICAgZXhwZWN0KGNoZWNrKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdvcGVuWWFtbEZpbGVBc09iamVjdCgpOiAnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBsb2FkIGFuZCBzZXJ2ZSB5YW1sIGFzIG9iamVjdC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBleHBlY3QuYXNzZXJ0aW9ucygyKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3BlbllhbWxGaWxlQXNPYmplY3QoJ21vY2snKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVHlwZSA9ICdvYmplY3QnO1xuICAgICAgY29uc3QgZXhwZWN0ZWRZYW1sTmFtZSA9ICdnc2YtZGVtbyc7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2YgcmVzdWx0KS50b0JlKGV4cGVjdGVkVHlwZSk7XG4gICAgICBleHBlY3QocmVzdWx0Lm5hbWUpLnRvQmUoZXhwZWN0ZWRZYW1sTmFtZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzYXZlWWFtbEZpbGVBcygpOiAnLCAoKSA9PiB7XG4gICAgaXQoJ3NhdmVzIHlhbWwgZmlsZSB3aXRoIHBhc3NlZCBvYmplY3QgYW5kIHBhdGguJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0ID0ge1xuICAgICAgICBuYW1lOiAnbW9jay1uYW1lJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBwYXRoVG9GaWxlID0gJ21vY2stcGF0aFRvRmlsZSc7XG5cbiAgICAgIGF3YWl0IHNhdmVZYW1sRmlsZUFzKG9iamVjdCwgcGF0aFRvRmlsZSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIGVycm9yIGluIGNhc2UgaWYgc29tZXRoaW5nIHdyb25nIHdpdGggcGF0aC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBvYmplY3QgPSB7XG4gICAgICAgIG5hbWU6ICdtb2NrLW5hbWUnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHBhdGhUb0ZpbGUgPSAncmVqZWN0JzsgLy8gTW9jayB2YWx1ZSBmb3IgcmVqZWN0aW9uLlxuXG4gICAgICBjb25zdCBleHBlY3RlZEVycm9yTWVzc2FnZSA9ICdXcm9uZyBmaWxlIHBhdGgnO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBzYXZlWWFtbEZpbGVBcyhvYmplY3QsIHBhdGhUb0ZpbGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgICAgICAgICBleHBlY3QoZXJyb3IubWVzc2FnZSkudG9CZShleHBlY3RlZEVycm9yTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { ArgumentConfig } from 'ts-command-line-args';
2
+ import { impactProcessArgs } from '../types/process-args';
3
+ export declare const CONFIG: {
4
+ MODEL_IDS: {
5
+ AZURE_IMPORTER: string;
6
+ BOAVIZTA_CPU: string;
7
+ BOAVIZTA_CLOUD: string;
8
+ AVEVA: string;
9
+ EMEM: string;
10
+ ESHOPPEN: string;
11
+ ESHOPPEN_CPU: string;
12
+ ESHOPPEN_MEM: string;
13
+ ESHOPPEN_NET: string;
14
+ SCI_ACCENTURE: string;
15
+ CCF: string;
16
+ SCI: string;
17
+ SCI_E: string;
18
+ SCI_M: string;
19
+ SCI_O: string;
20
+ SHELL_MODEL: string;
21
+ TDP: string;
22
+ TEADS_AWS: string;
23
+ TEADS_CURVE: string;
24
+ WATT_TIME: string;
25
+ CLOUD_INSTANCE_METADATA: string;
26
+ };
27
+ impact: {
28
+ ARGS: ArgumentConfig<impactProcessArgs>;
29
+ HELP: string;
30
+ };
31
+ GITHUB_PATH: string;
32
+ };
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONFIG = void 0;
4
+ exports.CONFIG = {
5
+ MODEL_IDS: {
6
+ AZURE_IMPORTER: 'org.gsf.azure-importer',
7
+ BOAVIZTA_CPU: 'org.boavizta.cpu.sci',
8
+ BOAVIZTA_CLOUD: 'org.boavizta.cloud.sci',
9
+ AVEVA: 'aveva',
10
+ EMEM: 'energy-memory',
11
+ ESHOPPEN: 'org.gsf.eshoppen',
12
+ ESHOPPEN_CPU: 'org.gsf.eshoppen-cpu',
13
+ ESHOPPEN_MEM: 'org.gsf.eshoppen-mem',
14
+ ESHOPPEN_NET: 'org.gsf.eshoppen-net',
15
+ SCI_ACCENTURE: 'org.gsf.sci-o',
16
+ CCF: 'ccf.cloud.sci',
17
+ SCI: 'org.gsf.sci',
18
+ SCI_E: 'sci-e',
19
+ SCI_M: 'org.gsf.sci-m',
20
+ SCI_O: 'org.gsf.sci-o',
21
+ SHELL_MODEL: 'shellModel',
22
+ TDP: 'tdp',
23
+ TEADS_AWS: 'teads.cloud.sci',
24
+ TEADS_CURVE: 'teads.curve',
25
+ WATT_TIME: 'org.wattime.grid',
26
+ CLOUD_INSTANCE_METADATA: 'org.gsf.cloud-instance-metadata',
27
+ },
28
+ impact: {
29
+ ARGS: {
30
+ impl: {
31
+ type: String,
32
+ optional: true,
33
+ alias: 'i',
34
+ description: 'Path to an input IMPL file.',
35
+ },
36
+ ompl: {
37
+ type: String,
38
+ optional: true,
39
+ description: 'Path to the output IMPL file where the results as saved, if none is provided it prints to stdout.',
40
+ },
41
+ format: {
42
+ type: String,
43
+ optional: true,
44
+ description: 'The output file format. default to yaml but if csv is specified then it formats the outputs as a csv file for loading into another program.',
45
+ defaultValue: 'yaml',
46
+ },
47
+ verbose: {
48
+ type: Boolean,
49
+ optional: true,
50
+ description: 'How much information to output about the calculation to aid investigation and debugging.',
51
+ },
52
+ help: {
53
+ type: Boolean,
54
+ optional: true,
55
+ alias: 'h',
56
+ description: 'Prints this usage guide.',
57
+ },
58
+ },
59
+ HELP: `impact
60
+ -impl [path to the input impl file]
61
+ -ompl [path to the output impl file]
62
+ -format [yaml|csv]
63
+ -verbose
64
+ -help
65
+ impl: path to an input IMPL file
66
+ ompl: path to the output IMPL file where the results as saved, if none is provided it prints to stdout.
67
+ format: the output file format. default to yaml but if csv is specified then it formats the outputs as a csv file for loading into another program.
68
+ verbose: how much information to output about the calculation to aid investigation and debugging.
69
+ help: prints out the above help instruction.
70
+ `,
71
+ },
72
+ GITHUB_PATH: 'https://github.com',
73
+ };
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSWEsUUFBQSxNQUFNLEdBQUc7SUFDcEIsU0FBUyxFQUFFO1FBQ1QsY0FBYyxFQUFFLHdCQUF3QjtRQUN4QyxZQUFZLEVBQUUsc0JBQXNCO1FBQ3BDLGNBQWMsRUFBRSx3QkFBd0I7UUFDeEMsS0FBSyxFQUFFLE9BQU87UUFDZCxJQUFJLEVBQUUsZUFBZTtRQUNyQixRQUFRLEVBQUUsa0JBQWtCO1FBQzVCLFlBQVksRUFBRSxzQkFBc0I7UUFDcEMsWUFBWSxFQUFFLHNCQUFzQjtRQUNwQyxZQUFZLEVBQUUsc0JBQXNCO1FBQ3BDLGFBQWEsRUFBRSxlQUFlO1FBQzlCLEdBQUcsRUFBRSxlQUFlO1FBQ3BCLEdBQUcsRUFBRSxhQUFhO1FBQ2xCLEtBQUssRUFBRSxPQUFPO1FBQ2QsS0FBSyxFQUFFLGVBQWU7UUFDdEIsS0FBSyxFQUFFLGVBQWU7UUFDdEIsV0FBVyxFQUFFLFlBQVk7UUFDekIsR0FBRyxFQUFFLEtBQUs7UUFDVixTQUFTLEVBQUUsaUJBQWlCO1FBQzVCLFdBQVcsRUFBRSxhQUFhO1FBQzFCLFNBQVMsRUFBRSxrQkFBa0I7UUFDN0IsdUJBQXVCLEVBQUUsaUNBQWlDO0tBQzNEO0lBQ0QsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSw2QkFBNkI7YUFDM0M7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLElBQUk7Z0JBQ2QsV0FBVyxFQUNULG1HQUFtRzthQUN0RztZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsTUFBTTtnQkFDWixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQ1QsNklBQTZJO2dCQUMvSSxZQUFZLEVBQUUsTUFBTTthQUNyQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsT0FBTztnQkFDYixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQ1QsMEZBQTBGO2FBQzdGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSwwQkFBMEI7YUFDeEM7U0FDbUM7UUFDdEMsSUFBSSxFQUFFOzs7Ozs7Ozs7OztHQVdQO0tBQ0E7SUFDRCxXQUFXLEVBQUUsb0JBQW9CO0NBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FyZ3VtZW50Q29uZmlnfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7aW1wYWN0UHJvY2Vzc0FyZ3N9IGZyb20gJy4uL3R5cGVzL3Byb2Nlc3MtYXJncyc7XG5cbmV4cG9ydCBjb25zdCBDT05GSUcgPSB7XG4gIE1PREVMX0lEUzoge1xuICAgIEFaVVJFX0lNUE9SVEVSOiAnb3JnLmdzZi5henVyZS1pbXBvcnRlcicsXG4gICAgQk9BVklaVEFfQ1BVOiAnb3JnLmJvYXZpenRhLmNwdS5zY2knLFxuICAgIEJPQVZJWlRBX0NMT1VEOiAnb3JnLmJvYXZpenRhLmNsb3VkLnNjaScsXG4gICAgQVZFVkE6ICdhdmV2YScsXG4gICAgRU1FTTogJ2VuZXJneS1tZW1vcnknLFxuICAgIEVTSE9QUEVOOiAnb3JnLmdzZi5lc2hvcHBlbicsXG4gICAgRVNIT1BQRU5fQ1BVOiAnb3JnLmdzZi5lc2hvcHBlbi1jcHUnLFxuICAgIEVTSE9QUEVOX01FTTogJ29yZy5nc2YuZXNob3BwZW4tbWVtJyxcbiAgICBFU0hPUFBFTl9ORVQ6ICdvcmcuZ3NmLmVzaG9wcGVuLW5ldCcsXG4gICAgU0NJX0FDQ0VOVFVSRTogJ29yZy5nc2Yuc2NpLW8nLFxuICAgIENDRjogJ2NjZi5jbG91ZC5zY2knLFxuICAgIFNDSTogJ29yZy5nc2Yuc2NpJyxcbiAgICBTQ0lfRTogJ3NjaS1lJyxcbiAgICBTQ0lfTTogJ29yZy5nc2Yuc2NpLW0nLFxuICAgIFNDSV9POiAnb3JnLmdzZi5zY2ktbycsXG4gICAgU0hFTExfTU9ERUw6ICdzaGVsbE1vZGVsJyxcbiAgICBURFA6ICd0ZHAnLFxuICAgIFRFQURTX0FXUzogJ3RlYWRzLmNsb3VkLnNjaScsXG4gICAgVEVBRFNfQ1VSVkU6ICd0ZWFkcy5jdXJ2ZScsXG4gICAgV0FUVF9USU1FOiAnb3JnLndhdHRpbWUuZ3JpZCcsXG4gICAgQ0xPVURfSU5TVEFOQ0VfTUVUQURBVEE6ICdvcmcuZ3NmLmNsb3VkLWluc3RhbmNlLW1ldGFkYXRhJyxcbiAgfSxcbiAgaW1wYWN0OiB7XG4gICAgQVJHUzoge1xuICAgICAgaW1wbDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2knLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYW4gaW5wdXQgSU1QTCBmaWxlLicsXG4gICAgICB9LFxuICAgICAgb21wbDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnUGF0aCB0byB0aGUgb3V0cHV0IElNUEwgZmlsZSB3aGVyZSB0aGUgcmVzdWx0cyBhcyBzYXZlZCwgaWYgbm9uZSBpcyBwcm92aWRlZCBpdCBwcmludHMgdG8gc3Rkb3V0LicsXG4gICAgICB9LFxuICAgICAgZm9ybWF0OiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICdUaGUgb3V0cHV0IGZpbGUgZm9ybWF0LiBkZWZhdWx0IHRvIHlhbWwgYnV0IGlmIGNzdiBpcyBzcGVjaWZpZWQgdGhlbiBpdCBmb3JtYXRzIHRoZSBvdXRwdXRzIGFzIGEgY3N2IGZpbGUgZm9yIGxvYWRpbmcgaW50byBhbm90aGVyIHByb2dyYW0uJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAneWFtbCcsXG4gICAgICB9LFxuICAgICAgdmVyYm9zZToge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ0hvdyBtdWNoIGluZm9ybWF0aW9uIHRvIG91dHB1dCBhYm91dCB0aGUgY2FsY3VsYXRpb24gdG8gYWlkIGludmVzdGlnYXRpb24gYW5kIGRlYnVnZ2luZy4nLFxuICAgICAgfSxcbiAgICAgIGhlbHA6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnaCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnRzIHRoaXMgdXNhZ2UgZ3VpZGUuJyxcbiAgICAgIH0sXG4gICAgfSBhcyBBcmd1bWVudENvbmZpZzxpbXBhY3RQcm9jZXNzQXJncz4sXG4gICAgSEVMUDogYGltcGFjdCBcbiAgLWltcGwgW3BhdGggdG8gdGhlIGlucHV0IGltcGwgZmlsZV1cbiAgLW9tcGwgW3BhdGggdG8gdGhlIG91dHB1dCBpbXBsIGZpbGVdXG4gIC1mb3JtYXQgW3lhbWx8Y3N2XSBcbiAgLXZlcmJvc2VcbiAgLWhlbHAgXG4gIGltcGw6IHBhdGggdG8gYW4gaW5wdXQgSU1QTCBmaWxlXG4gIG9tcGw6IHBhdGggdG8gdGhlIG91dHB1dCBJTVBMIGZpbGUgd2hlcmUgdGhlIHJlc3VsdHMgYXMgc2F2ZWQsIGlmIG5vbmUgaXMgcHJvdmlkZWQgaXQgcHJpbnRzIHRvIHN0ZG91dC5cbiAgZm9ybWF0OiB0aGUgb3V0cHV0IGZpbGUgZm9ybWF0LiBkZWZhdWx0IHRvIHlhbWwgYnV0IGlmIGNzdiBpcyBzcGVjaWZpZWQgdGhlbiBpdCBmb3JtYXRzIHRoZSBvdXRwdXRzIGFzIGEgY3N2IGZpbGUgZm9yIGxvYWRpbmcgaW50byBhbm90aGVyIHByb2dyYW0uXG4gIHZlcmJvc2U6IGhvdyBtdWNoIGluZm9ybWF0aW9uIHRvIG91dHB1dCBhYm91dCB0aGUgY2FsY3VsYXRpb24gdG8gYWlkIGludmVzdGlnYXRpb24gYW5kIGRlYnVnZ2luZy5cbiAgaGVscDogcHJpbnRzIG91dCB0aGUgYWJvdmUgaGVscCBpbnN0cnVjdGlvbi5cbiAgYCxcbiAgfSxcbiAgR0lUSFVCX1BBVEg6ICdodHRwczovL2dpdGh1Yi5jb20nLFxufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { CONFIG } from './config';
2
+ export { STRINGS } from './strings';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRINGS = exports.CONFIG = void 0;
4
+ var config_1 = require("./config");
5
+ Object.defineProperty(exports, "CONFIG", { enumerable: true, get: function () { return config_1.CONFIG; } });
6
+ var strings_1 = require("./strings");
7
+ Object.defineProperty(exports, "STRINGS", { enumerable: true, get: function () { return strings_1.STRINGS; } });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFnQztBQUF4QixnR0FBQSxNQUFNLE9BQUE7QUFDZCxxQ0FBa0M7QUFBMUIsa0dBQUEsT0FBTyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtDT05GSUd9IGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCB7U1RSSU5HU30gZnJvbSAnLi9zdHJpbmdzJztcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ export declare const STRINGS: {
2
+ FILE_IS_NOT_YAML: string;
3
+ IMPL_IS_MISSING: string;
4
+ MISSING_CLASSNAME: string;
5
+ MISSING_PATH: string;
6
+ MODEL_DOESNT_EXIST: string;
7
+ NOT_OUTPUT_MODEL_EXTENSION: string;
8
+ STRUCTURE_MALFORMED: (childName: string) => string;
9
+ NOT_INITIALIZED_MODEL: (modelName: string) => string;
10
+ DISCLAIMER_MESSAGE: string;
11
+ NOT_NATIVE_MODEL: string;
12
+ SOMETHING_WRONG: string;
13
+ ISSUE_TEMPLATE: string;
14
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRINGS = void 0;
4
+ exports.STRINGS = {
5
+ FILE_IS_NOT_YAML: 'Provided impl file is not in yaml format.',
6
+ IMPL_IS_MISSING: 'Impl file is missing.',
7
+ MISSING_CLASSNAME: 'Initalization param `model` is missing.',
8
+ MISSING_PATH: 'Initalization param `path` is missing.',
9
+ MODEL_DOESNT_EXIST: 'Provided model class does not belong to any model.',
10
+ NOT_OUTPUT_MODEL_EXTENSION: 'Provided model does not extend ModelInterface.',
11
+ STRUCTURE_MALFORMED: (childName) => `Graph is malformed: graph.children.${childName} is not valid.`,
12
+ NOT_INITIALIZED_MODEL: (modelName) => `You're trying to use not initalized model: ${modelName}.`,
13
+ DISCLAIMER_MESSAGE: `
14
+ [!important] Incubation Project
15
+
16
+ This project is an incubation project being run inside the Green Software Foundation; as such, we *DON’T recommend using it in any critical use case.
17
+ Incubation projects are experimental, offer no support guarantee, have minimal governance and process, and may be retired at any moment. This project may one day graduate, in which case this disclaimer will be removed.
18
+ `,
19
+ NOT_NATIVE_MODEL: `
20
+ [!important]
21
+
22
+ You are using models that are not part of the Impact Framework standard library. You should do your own research to ensure the models are up to date and accurate. They may not be actively maintained.
23
+ `,
24
+ SOMETHING_WRONG: 'Something wrong with cli arguments. Please check docs.',
25
+ ISSUE_TEMPLATE: `
26
+ Impact Framework is an alpha release from the Green Software Foundation and is released to capture early feedback. If you'd like to offer some feedback, please use this issue template:
27
+ https://github.com/Green-Software-Foundation/if/issues/new?assignees=&labels=feedback&projects=&template=feedback.md&title=Feedback+-+
28
+ `,
29
+ };
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLE9BQU8sR0FBRztJQUNyQixnQkFBZ0IsRUFBRSwyQ0FBMkM7SUFDN0QsZUFBZSxFQUFFLHVCQUF1QjtJQUN4QyxpQkFBaUIsRUFBRSx5Q0FBeUM7SUFDNUQsWUFBWSxFQUFFLHdDQUF3QztJQUN0RCxrQkFBa0IsRUFBRSxvREFBb0Q7SUFDeEUsMEJBQTBCLEVBQUUsZ0RBQWdEO0lBQzVFLG1CQUFtQixFQUFFLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQ3pDLHNDQUFzQyxTQUFTLGdCQUFnQjtJQUNqRSxxQkFBcUIsRUFBRSxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUMzQyw4Q0FBOEMsU0FBUyxHQUFHO0lBQzVELGtCQUFrQixFQUFFOzs7OztDQUtyQjtJQUNDLGdCQUFnQixFQUFFOzs7O0NBSW5CO0lBQ0MsZUFBZSxFQUFFLHdEQUF3RDtJQUN6RSxjQUFjLEVBQUU7OztDQUdqQjtDQUNBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU1RSSU5HUyA9IHtcbiAgRklMRV9JU19OT1RfWUFNTDogJ1Byb3ZpZGVkIGltcGwgZmlsZSBpcyBub3QgaW4geWFtbCBmb3JtYXQuJyxcbiAgSU1QTF9JU19NSVNTSU5HOiAnSW1wbCBmaWxlIGlzIG1pc3NpbmcuJyxcbiAgTUlTU0lOR19DTEFTU05BTUU6ICdJbml0YWxpemF0aW9uIHBhcmFtIGBtb2RlbGAgaXMgbWlzc2luZy4nLFxuICBNSVNTSU5HX1BBVEg6ICdJbml0YWxpemF0aW9uIHBhcmFtIGBwYXRoYCBpcyBtaXNzaW5nLicsXG4gIE1PREVMX0RPRVNOVF9FWElTVDogJ1Byb3ZpZGVkIG1vZGVsIGNsYXNzIGRvZXMgbm90IGJlbG9uZyB0byBhbnkgbW9kZWwuJyxcbiAgTk9UX09VVFBVVF9NT0RFTF9FWFRFTlNJT046ICdQcm92aWRlZCBtb2RlbCBkb2VzIG5vdCBleHRlbmQgTW9kZWxJbnRlcmZhY2UuJyxcbiAgU1RSVUNUVVJFX01BTEZPUk1FRDogKGNoaWxkTmFtZTogc3RyaW5nKSA9PlxuICAgIGBHcmFwaCBpcyBtYWxmb3JtZWQ6IGdyYXBoLmNoaWxkcmVuLiR7Y2hpbGROYW1lfSBpcyBub3QgdmFsaWQuYCxcbiAgTk9UX0lOSVRJQUxJWkVEX01PREVMOiAobW9kZWxOYW1lOiBzdHJpbmcpID0+XG4gICAgYFlvdSdyZSB0cnlpbmcgdG8gdXNlIG5vdCBpbml0YWxpemVkIG1vZGVsOiAke21vZGVsTmFtZX0uYCxcbiAgRElTQ0xBSU1FUl9NRVNTQUdFOiBgXG5bIWltcG9ydGFudF0gSW5jdWJhdGlvbiBQcm9qZWN0XG5cblRoaXMgcHJvamVjdCBpcyBhbiBpbmN1YmF0aW9uIHByb2plY3QgYmVpbmcgcnVuIGluc2lkZSB0aGUgR3JlZW4gU29mdHdhcmUgRm91bmRhdGlvbjsgYXMgc3VjaCwgd2UgKkRPTuKAmVQgcmVjb21tZW5kIHVzaW5nIGl0IGluIGFueSBjcml0aWNhbCB1c2UgY2FzZS4gXG5JbmN1YmF0aW9uIHByb2plY3RzIGFyZSBleHBlcmltZW50YWwsIG9mZmVyIG5vIHN1cHBvcnQgZ3VhcmFudGVlLCBoYXZlIG1pbmltYWwgZ292ZXJuYW5jZSBhbmQgcHJvY2VzcywgYW5kIG1heSBiZSByZXRpcmVkIGF0IGFueSBtb21lbnQuIFRoaXMgcHJvamVjdCBtYXkgb25lIGRheSBncmFkdWF0ZSwgaW4gd2hpY2ggY2FzZSB0aGlzIGRpc2NsYWltZXIgd2lsbCBiZSByZW1vdmVkLlxuYCxcbiAgTk9UX05BVElWRV9NT0RFTDogYFxuWyFpbXBvcnRhbnRdXG5cbllvdSBhcmUgdXNpbmcgbW9kZWxzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBJbXBhY3QgRnJhbWV3b3JrIHN0YW5kYXJkIGxpYnJhcnkuIFlvdSBzaG91bGQgZG8geW91ciBvd24gcmVzZWFyY2ggdG8gZW5zdXJlIHRoZSBtb2RlbHMgYXJlIHVwIHRvIGRhdGUgYW5kIGFjY3VyYXRlLiBUaGV5IG1heSBub3QgYmUgYWN0aXZlbHkgbWFpbnRhaW5lZC4gIFxuYCxcbiAgU09NRVRISU5HX1dST05HOiAnU29tZXRoaW5nIHdyb25nIHdpdGggY2xpIGFyZ3VtZW50cy4gUGxlYXNlIGNoZWNrIGRvY3MuJyxcbiAgSVNTVUVfVEVNUExBVEU6IGBcbkltcGFjdCBGcmFtZXdvcmsgaXMgYW4gYWxwaGEgcmVsZWFzZSBmcm9tIHRoZSBHcmVlbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIGFuZCBpcyByZWxlYXNlZCB0byBjYXB0dXJlIGVhcmx5IGZlZWRiYWNrLiBJZiB5b3UnZCBsaWtlIHRvIG9mZmVyIHNvbWUgZmVlZGJhY2ssIHBsZWFzZSB1c2UgdGhpcyBpc3N1ZSB0ZW1wbGF0ZTogXG5odHRwczovL2dpdGh1Yi5jb20vR3JlZW4tU29mdHdhcmUtRm91bmRhdGlvbi9pZi9pc3N1ZXMvbmV3P2Fzc2lnbmVlcz0mbGFiZWxzPWZlZWRiYWNrJnByb2plY3RzPSZ0ZW1wbGF0ZT1mZWVkYmFjay5tZCZ0aXRsZT1GZWVkYmFjaystK1xuYCxcbn07XG4iXX0=
@@ -0,0 +1 @@
1
+ export {};