@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,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const globals_1 = require("@jest/globals");
4
+ const index_1 = require("../../../../lib/sci/index");
5
+ globals_1.jest.setTimeout(30000);
6
+ (0, globals_1.describe)('sci:configure test', () => {
7
+ (0, globals_1.test)('initialize and test', async () => {
8
+ const model = await new index_1.SciModel().configure('name', {
9
+ 'functional-unit-time': 'minutes',
10
+ 'functional-unit': 'users',
11
+ 'functional-unit-duration': 1,
12
+ });
13
+ (0, globals_1.expect)(model).toBeInstanceOf(index_1.SciModel);
14
+ await (0, globals_1.expect)(model.execute([
15
+ {
16
+ 'operational-carbon': 0.02,
17
+ 'embodied-carbon': 5,
18
+ users: 100,
19
+ duration: 1,
20
+ },
21
+ ])).resolves.toStrictEqual([
22
+ {
23
+ 'operational-carbon': 0.02,
24
+ 'embodied-carbon': 5,
25
+ users: 100,
26
+ duration: 1,
27
+ sci: 3.012,
28
+ },
29
+ ]);
30
+ await (0, globals_1.expect)(model.execute([
31
+ {
32
+ 'operational-carbon': 20,
33
+ 'embodied-carbon': 0.005,
34
+ users: 1000,
35
+ duration: 1,
36
+ },
37
+ ])).resolves.toStrictEqual([
38
+ {
39
+ 'operational-carbon': 20,
40
+ 'embodied-carbon': 0.005,
41
+ users: 1000,
42
+ duration: 1,
43
+ sci: 1.2003,
44
+ },
45
+ ]);
46
+ });
47
+ (0, globals_1.test)('initialize and test: vary input duration ', async () => {
48
+ const model = await new index_1.SciModel().configure('name', {
49
+ 'functional-unit-time': 'days',
50
+ 'functional-unit': '',
51
+ 'functional-unit-duration': 1,
52
+ });
53
+ (0, globals_1.expect)(model).toBeInstanceOf(index_1.SciModel);
54
+ await (0, globals_1.expect)(model.execute([
55
+ {
56
+ 'operational-carbon': 0.2,
57
+ 'embodied-carbon': 0.05,
58
+ duration: 100,
59
+ },
60
+ ])).resolves.toStrictEqual([
61
+ {
62
+ 'operational-carbon': 0.2,
63
+ 'embodied-carbon': 0.05,
64
+ duration: 100,
65
+ sci: 216,
66
+ },
67
+ ]);
68
+ await (0, globals_1.expect)(model.execute([
69
+ {
70
+ 'operational-carbon': 0.002,
71
+ 'embodied-carbon': 0.0005,
72
+ duration: 2,
73
+ },
74
+ ])).resolves.toStrictEqual([
75
+ {
76
+ 'operational-carbon': 0.002,
77
+ 'embodied-carbon': 0.0005,
78
+ duration: 2,
79
+ sci: 108,
80
+ },
81
+ ]);
82
+ });
83
+ (0, globals_1.test)('initialize and test: vary functional-unit-duration', async () => {
84
+ const model = await new index_1.SciModel().configure('name', {
85
+ 'functional-unit-time': 'days',
86
+ 'functional-unit': '',
87
+ 'functional-unit-duration': 2,
88
+ });
89
+ (0, globals_1.expect)(model).toBeInstanceOf(index_1.SciModel);
90
+ await (0, globals_1.expect)(model.execute([
91
+ {
92
+ 'operational-carbon': 0.002,
93
+ 'embodied-carbon': 0.0005,
94
+ duration: 1,
95
+ },
96
+ ])).resolves.toStrictEqual([
97
+ {
98
+ 'operational-carbon': 0.002,
99
+ 'embodied-carbon': 0.0005,
100
+ duration: 1,
101
+ sci: 432,
102
+ },
103
+ ]);
104
+ });
105
+ });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC9saWIvc2NpL2luZGV4LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQ0FBMkQ7QUFDM0QscURBQW1EO0FBQ25ELGNBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFdkIsSUFBQSxrQkFBUSxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtJQUNsQyxJQUFBLGNBQUksRUFBQyxxQkFBcUIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksZ0JBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDbkQsc0JBQXNCLEVBQUUsU0FBUztZQUNqQyxpQkFBaUIsRUFBRSxPQUFPO1lBQzFCLDBCQUEwQixFQUFFLENBQUM7U0FDOUIsQ0FBQyxDQUFDO1FBQ0gsSUFBQSxnQkFBTSxFQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxnQkFBUSxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFBLGdCQUFNLEVBQ1YsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNaO2dCQUNFLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLEtBQUssRUFBRSxHQUFHO2dCQUNWLFFBQVEsRUFBRSxDQUFDO2FBQ1o7U0FDRixDQUFDLENBQ0gsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ3ZCO2dCQUNFLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLEtBQUssRUFBRSxHQUFHO2dCQUNWLFFBQVEsRUFBRSxDQUFDO2dCQUNYLEdBQUcsRUFBRSxLQUFLO2FBQ1g7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUEsZ0JBQU0sRUFDVixLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ1o7Z0JBQ0Usb0JBQW9CLEVBQUUsRUFBRTtnQkFDeEIsaUJBQWlCLEVBQUUsS0FBSztnQkFDeEIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsUUFBUSxFQUFFLENBQUM7YUFDWjtTQUNGLENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDdkI7Z0JBQ0Usb0JBQW9CLEVBQUUsRUFBRTtnQkFDeEIsaUJBQWlCLEVBQUUsS0FBSztnQkFDeEIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsR0FBRyxFQUFFLE1BQU07YUFDWjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBQSxjQUFJLEVBQUMsMkNBQTJDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLGdCQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQ25ELHNCQUFzQixFQUFFLE1BQU07WUFDOUIsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQiwwQkFBMEIsRUFBRSxDQUFDO1NBQzlCLENBQUMsQ0FBQztRQUNILElBQUEsZ0JBQU0sRUFBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsZ0JBQVEsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBQSxnQkFBTSxFQUNWLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDWjtnQkFDRSxvQkFBb0IsRUFBRSxHQUFHO2dCQUN6QixpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixRQUFRLEVBQUUsR0FBRzthQUNkO1NBQ0YsQ0FBQyxDQUNILENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUN2QjtnQkFDRSxvQkFBb0IsRUFBRSxHQUFHO2dCQUN6QixpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixRQUFRLEVBQUUsR0FBRztnQkFDYixHQUFHLEVBQUUsR0FBRzthQUNUO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFBLGdCQUFNLEVBQ1YsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNaO2dCQUNFLG9CQUFvQixFQUFFLEtBQUs7Z0JBQzNCLGlCQUFpQixFQUFFLE1BQU07Z0JBQ3pCLFFBQVEsRUFBRSxDQUFDO2FBQ1o7U0FDRixDQUFDLENBQ0gsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ3ZCO2dCQUNFLG9CQUFvQixFQUFFLEtBQUs7Z0JBQzNCLGlCQUFpQixFQUFFLE1BQU07Z0JBQ3pCLFFBQVEsRUFBRSxDQUFDO2dCQUNYLEdBQUcsRUFBRSxHQUFHO2FBQ1Q7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILElBQUEsY0FBSSxFQUFDLG9EQUFvRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxnQkFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNuRCxzQkFBc0IsRUFBRSxNQUFNO1lBQzlCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsMEJBQTBCLEVBQUUsQ0FBQztTQUM5QixDQUFDLENBQUM7UUFDSCxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLGdCQUFRLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUEsZ0JBQU0sRUFDVixLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ1o7Z0JBQ0Usb0JBQW9CLEVBQUUsS0FBSztnQkFDM0IsaUJBQWlCLEVBQUUsTUFBTTtnQkFDekIsUUFBUSxFQUFFLENBQUM7YUFDWjtTQUNGLENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDdkI7Z0JBQ0Usb0JBQW9CLEVBQUUsS0FBSztnQkFDM0IsaUJBQWlCLEVBQUUsTUFBTTtnQkFDekIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsR0FBRyxFQUFFLEdBQUc7YUFDVDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Rlc2NyaWJlLCBleHBlY3QsIGplc3QsIHRlc3R9IGZyb20gJ0BqZXN0L2dsb2JhbHMnO1xuaW1wb3J0IHtTY2lNb2RlbH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL3NjaS9pbmRleCc7XG5qZXN0LnNldFRpbWVvdXQoMzAwMDApO1xuXG5kZXNjcmliZSgnc2NpOmNvbmZpZ3VyZSB0ZXN0JywgKCkgPT4ge1xuICB0ZXN0KCdpbml0aWFsaXplIGFuZCB0ZXN0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgbmV3IFNjaU1vZGVsKCkuY29uZmlndXJlKCduYW1lJywge1xuICAgICAgJ2Z1bmN0aW9uYWwtdW5pdC10aW1lJzogJ21pbnV0ZXMnLFxuICAgICAgJ2Z1bmN0aW9uYWwtdW5pdCc6ICd1c2VycycsXG4gICAgICAnZnVuY3Rpb25hbC11bml0LWR1cmF0aW9uJzogMSxcbiAgICB9KTtcbiAgICBleHBlY3QobW9kZWwpLnRvQmVJbnN0YW5jZU9mKFNjaU1vZGVsKTtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtb2RlbC5leGVjdXRlKFtcbiAgICAgICAge1xuICAgICAgICAgICdvcGVyYXRpb25hbC1jYXJib24nOiAwLjAyLFxuICAgICAgICAgICdlbWJvZGllZC1jYXJib24nOiA1LFxuICAgICAgICAgIHVzZXJzOiAxMDAsXG4gICAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICkucmVzb2x2ZXMudG9TdHJpY3RFcXVhbChbXG4gICAgICB7XG4gICAgICAgICdvcGVyYXRpb25hbC1jYXJib24nOiAwLjAyLFxuICAgICAgICAnZW1ib2RpZWQtY2FyYm9uJzogNSxcbiAgICAgICAgdXNlcnM6IDEwMCxcbiAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgIHNjaTogMy4wMTIsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIG1vZGVsLmV4ZWN1dGUoW1xuICAgICAgICB7XG4gICAgICAgICAgJ29wZXJhdGlvbmFsLWNhcmJvbic6IDIwLFxuICAgICAgICAgICdlbWJvZGllZC1jYXJib24nOiAwLjAwNSxcbiAgICAgICAgICB1c2VyczogMTAwMCxcbiAgICAgICAgICBkdXJhdGlvbjogMSxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS5yZXNvbHZlcy50b1N0cmljdEVxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgJ29wZXJhdGlvbmFsLWNhcmJvbic6IDIwLFxuICAgICAgICAnZW1ib2RpZWQtY2FyYm9uJzogMC4wMDUsXG4gICAgICAgIHVzZXJzOiAxMDAwLFxuICAgICAgICBkdXJhdGlvbjogMSxcbiAgICAgICAgc2NpOiAxLjIwMDMsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcbiAgdGVzdCgnaW5pdGlhbGl6ZSBhbmQgdGVzdDogdmFyeSBpbnB1dCBkdXJhdGlvbiAnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBuZXcgU2NpTW9kZWwoKS5jb25maWd1cmUoJ25hbWUnLCB7XG4gICAgICAnZnVuY3Rpb25hbC11bml0LXRpbWUnOiAnZGF5cycsXG4gICAgICAnZnVuY3Rpb25hbC11bml0JzogJycsXG4gICAgICAnZnVuY3Rpb25hbC11bml0LWR1cmF0aW9uJzogMSxcbiAgICB9KTtcbiAgICBleHBlY3QobW9kZWwpLnRvQmVJbnN0YW5jZU9mKFNjaU1vZGVsKTtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtb2RlbC5leGVjdXRlKFtcbiAgICAgICAge1xuICAgICAgICAgICdvcGVyYXRpb25hbC1jYXJib24nOiAwLjIsXG4gICAgICAgICAgJ2VtYm9kaWVkLWNhcmJvbic6IDAuMDUsXG4gICAgICAgICAgZHVyYXRpb246IDEwMCxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS5yZXNvbHZlcy50b1N0cmljdEVxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgJ29wZXJhdGlvbmFsLWNhcmJvbic6IDAuMixcbiAgICAgICAgJ2VtYm9kaWVkLWNhcmJvbic6IDAuMDUsXG4gICAgICAgIGR1cmF0aW9uOiAxMDAsXG4gICAgICAgIHNjaTogMjE2LFxuICAgICAgfSxcbiAgICBdKTtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtb2RlbC5leGVjdXRlKFtcbiAgICAgICAge1xuICAgICAgICAgICdvcGVyYXRpb25hbC1jYXJib24nOiAwLjAwMixcbiAgICAgICAgICAnZW1ib2RpZWQtY2FyYm9uJzogMC4wMDA1LFxuICAgICAgICAgIGR1cmF0aW9uOiAyLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApLnJlc29sdmVzLnRvU3RyaWN0RXF1YWwoW1xuICAgICAge1xuICAgICAgICAnb3BlcmF0aW9uYWwtY2FyYm9uJzogMC4wMDIsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiAwLjAwMDUsXG4gICAgICAgIGR1cmF0aW9uOiAyLFxuICAgICAgICBzY2k6IDEwOCxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xuICB0ZXN0KCdpbml0aWFsaXplIGFuZCB0ZXN0OiB2YXJ5IGZ1bmN0aW9uYWwtdW5pdC1kdXJhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2RlbCA9IGF3YWl0IG5ldyBTY2lNb2RlbCgpLmNvbmZpZ3VyZSgnbmFtZScsIHtcbiAgICAgICdmdW5jdGlvbmFsLXVuaXQtdGltZSc6ICdkYXlzJyxcbiAgICAgICdmdW5jdGlvbmFsLXVuaXQnOiAnJyxcbiAgICAgICdmdW5jdGlvbmFsLXVuaXQtZHVyYXRpb24nOiAyLFxuICAgIH0pO1xuICAgIGV4cGVjdChtb2RlbCkudG9CZUluc3RhbmNlT2YoU2NpTW9kZWwpO1xuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIG1vZGVsLmV4ZWN1dGUoW1xuICAgICAgICB7XG4gICAgICAgICAgJ29wZXJhdGlvbmFsLWNhcmJvbic6IDAuMDAyLFxuICAgICAgICAgICdlbWJvZGllZC1jYXJib24nOiAwLjAwMDUsXG4gICAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICkucmVzb2x2ZXMudG9TdHJpY3RFcXVhbChbXG4gICAgICB7XG4gICAgICAgICdvcGVyYXRpb25hbC1jYXJib24nOiAwLjAwMixcbiAgICAgICAgJ2VtYm9kaWVkLWNhcmJvbic6IDAuMDAwNSxcbiAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgIHNjaTogNDMyLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const globals_1 = require("@jest/globals");
4
+ const index_1 = require("../../../../lib/sci-e/index");
5
+ globals_1.jest.setTimeout(30000);
6
+ (0, globals_1.describe)('sci-e:configure test', () => {
7
+ (0, globals_1.test)('initialize with params', async () => {
8
+ const outputModel = new index_1.SciEModel();
9
+ await outputModel.configure('test', {});
10
+ await (0, globals_1.expect)(outputModel.execute([
11
+ {
12
+ duration: 3600,
13
+ 'energy-cpu': 1,
14
+ 'energy-network': 1,
15
+ 'energy-memory': 1,
16
+ timestamp: '2021-01-01T00:00:00Z',
17
+ },
18
+ ])).resolves.toStrictEqual([
19
+ {
20
+ duration: 3600,
21
+ 'energy-cpu': 1,
22
+ 'energy-network': 1,
23
+ 'energy-memory': 1,
24
+ energy: 3,
25
+ timestamp: '2021-01-01T00:00:00Z',
26
+ },
27
+ ]);
28
+ });
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC9saWIvc2NpLWUvaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJDQUEyRDtBQUMzRCx1REFBc0Q7QUFFdEQsY0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV2QixJQUFBLGtCQUFRLEVBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ3BDLElBQUEsY0FBSSxFQUFDLHdCQUF3QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3hDLE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQVMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsTUFBTSxJQUFBLGdCQUFNLEVBQ1YsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUNsQjtnQkFDRSxRQUFRLEVBQUUsSUFBSTtnQkFDZCxZQUFZLEVBQUUsQ0FBQztnQkFDZixnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQixlQUFlLEVBQUUsQ0FBQztnQkFDbEIsU0FBUyxFQUFFLHNCQUFzQjthQUNsQztTQUNGLENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDdkI7Z0JBQ0UsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsWUFBWSxFQUFFLENBQUM7Z0JBQ2YsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbkIsZUFBZSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sRUFBRSxDQUFDO2dCQUNULFNBQVMsRUFBRSxzQkFBc0I7YUFDbEM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZXNjcmliZSwgZXhwZWN0LCBqZXN0LCB0ZXN0fSBmcm9tICdAamVzdC9nbG9iYWxzJztcbmltcG9ydCB7U2NpRU1vZGVsfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvc2NpLWUvaW5kZXgnO1xuXG5qZXN0LnNldFRpbWVvdXQoMzAwMDApO1xuXG5kZXNjcmliZSgnc2NpLWU6Y29uZmlndXJlIHRlc3QnLCAoKSA9PiB7XG4gIHRlc3QoJ2luaXRpYWxpemUgd2l0aCBwYXJhbXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0TW9kZWwgPSBuZXcgU2NpRU1vZGVsKCk7XG4gICAgYXdhaXQgb3V0cHV0TW9kZWwuY29uZmlndXJlKCd0ZXN0Jywge30pO1xuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIG91dHB1dE1vZGVsLmV4ZWN1dGUoW1xuICAgICAgICB7XG4gICAgICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAgICAgJ2VuZXJneS1jcHUnOiAxLFxuICAgICAgICAgICdlbmVyZ3ktbmV0d29yayc6IDEsXG4gICAgICAgICAgJ2VuZXJneS1tZW1vcnknOiAxLFxuICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjEtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS5yZXNvbHZlcy50b1N0cmljdEVxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAgICdlbmVyZ3ktY3B1JzogMSxcbiAgICAgICAgJ2VuZXJneS1uZXR3b3JrJzogMSxcbiAgICAgICAgJ2VuZXJneS1tZW1vcnknOiAxLFxuICAgICAgICBlbmVyZ3k6IDMsXG4gICAgICAgIHRpbWVzdGFtcDogJzIwMjEtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const globals_1 = require("@jest/globals");
4
+ const index_1 = require("../../../../lib/sci-m/index");
5
+ globals_1.jest.setTimeout(30000);
6
+ (0, globals_1.describe)('sci-o:configure test', () => {
7
+ (0, globals_1.test)('initialize and test', async () => {
8
+ const model = await new index_1.SciMModel().configure('sci-o', {});
9
+ (0, globals_1.expect)(model).toBeInstanceOf(index_1.SciMModel);
10
+ await (0, globals_1.expect)(model.execute([
11
+ {
12
+ 'total-embodied-emissions': 200,
13
+ 'time-reserved': 60 * 60 * 24 * 30,
14
+ 'expected-lifespan': 60 * 60 * 24 * 365 * 4,
15
+ 'resources-reserved': 1,
16
+ 'total-resources': 1,
17
+ },
18
+ {
19
+ 'total-embodied-emissions': 200,
20
+ duration: 60 * 60 * 24 * 30 * 2,
21
+ 'time-reserved': 'duration',
22
+ 'expected-lifespan': 60 * 60 * 24 * 365 * 4,
23
+ 'resources-reserved': 1,
24
+ 'total-resources': 1,
25
+ },
26
+ ])).resolves.toStrictEqual([
27
+ {
28
+ 'total-embodied-emissions': 200,
29
+ 'time-reserved': 60 * 60 * 24 * 30,
30
+ 'expected-lifespan': 60 * 60 * 24 * 365 * 4,
31
+ 'resources-reserved': 1,
32
+ 'total-resources': 1,
33
+ 'embodied-carbon': 4.10958904109589,
34
+ },
35
+ {
36
+ 'total-embodied-emissions': 200,
37
+ duration: 60 * 60 * 24 * 30 * 2,
38
+ 'time-reserved': 'duration',
39
+ 'expected-lifespan': 60 * 60 * 24 * 365 * 4,
40
+ 'resources-reserved': 1,
41
+ 'total-resources': 1,
42
+ 'embodied-carbon': 4.10958904109589 * 2,
43
+ },
44
+ ]);
45
+ await (0, globals_1.expect)(model.execute([
46
+ {
47
+ tee: 200,
48
+ duration: 60 * 60 * 24 * 30 * 2,
49
+ 'time-reserved': 'duration',
50
+ 'expected-lifespan': 60 * 60 * 24 * 365 * 4,
51
+ 'resources-reserved': 1,
52
+ 'total-resources': 1,
53
+ 'embodied-carbon': 4.10958904109589 * 2,
54
+ },
55
+ ])).rejects.toThrowError();
56
+ });
57
+ });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC9saWIvc2NpLW0vaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJDQUEyRDtBQUMzRCx1REFBc0Q7QUFDdEQsY0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV2QixJQUFBLGtCQUFRLEVBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ3BDLElBQUEsY0FBSSxFQUFDLHFCQUFxQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxpQkFBUyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRCxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFTLENBQUMsQ0FBQztRQUN4QyxNQUFNLElBQUEsZ0JBQU0sRUFDVixLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ1o7Z0JBQ0UsMEJBQTBCLEVBQUUsR0FBRztnQkFDL0IsZUFBZSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7Z0JBQ2xDLG1CQUFtQixFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDO2dCQUMzQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUN2QixpQkFBaUIsRUFBRSxDQUFDO2FBQ3JCO1lBQ0Q7Z0JBQ0UsMEJBQTBCLEVBQUUsR0FBRztnQkFDL0IsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUMvQixlQUFlLEVBQUUsVUFBVTtnQkFDM0IsbUJBQW1CLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQzNDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZCLGlCQUFpQixFQUFFLENBQUM7YUFDckI7U0FDRixDQUFDLENBQ0gsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ3ZCO2dCQUNFLDBCQUEwQixFQUFFLEdBQUc7Z0JBQy9CLGVBQWUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNsQyxtQkFBbUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDM0Msb0JBQW9CLEVBQUUsQ0FBQztnQkFDdkIsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsaUJBQWlCLEVBQUUsZ0JBQWdCO2FBQ3BDO1lBQ0Q7Z0JBQ0UsMEJBQTBCLEVBQUUsR0FBRztnQkFDL0IsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUMvQixlQUFlLEVBQUUsVUFBVTtnQkFDM0IsbUJBQW1CLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQzNDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZCLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLGlCQUFpQixFQUFFLGdCQUFnQixHQUFHLENBQUM7YUFDeEM7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUEsZ0JBQU0sRUFDVixLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ1o7Z0JBQ0UsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUMvQixlQUFlLEVBQUUsVUFBVTtnQkFDM0IsbUJBQW1CLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQzNDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZCLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLGlCQUFpQixFQUFFLGdCQUFnQixHQUFHLENBQUM7YUFDeEM7U0FDRixDQUFDLENBQ0gsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVzY3JpYmUsIGV4cGVjdCwgamVzdCwgdGVzdH0gZnJvbSAnQGplc3QvZ2xvYmFscyc7XG5pbXBvcnQge1NjaU1Nb2RlbH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL3NjaS1tL2luZGV4Jztcbmplc3Quc2V0VGltZW91dCgzMDAwMCk7XG5cbmRlc2NyaWJlKCdzY2ktbzpjb25maWd1cmUgdGVzdCcsICgpID0+IHtcbiAgdGVzdCgnaW5pdGlhbGl6ZSBhbmQgdGVzdCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2RlbCA9IGF3YWl0IG5ldyBTY2lNTW9kZWwoKS5jb25maWd1cmUoJ3NjaS1vJywge30pO1xuICAgIGV4cGVjdChtb2RlbCkudG9CZUluc3RhbmNlT2YoU2NpTU1vZGVsKTtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtb2RlbC5leGVjdXRlKFtcbiAgICAgICAge1xuICAgICAgICAgICd0b3RhbC1lbWJvZGllZC1lbWlzc2lvbnMnOiAyMDAsXG4gICAgICAgICAgJ3RpbWUtcmVzZXJ2ZWQnOiA2MCAqIDYwICogMjQgKiAzMCxcbiAgICAgICAgICAnZXhwZWN0ZWQtbGlmZXNwYW4nOiA2MCAqIDYwICogMjQgKiAzNjUgKiA0LFxuICAgICAgICAgICdyZXNvdXJjZXMtcmVzZXJ2ZWQnOiAxLFxuICAgICAgICAgICd0b3RhbC1yZXNvdXJjZXMnOiAxLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgJ3RvdGFsLWVtYm9kaWVkLWVtaXNzaW9ucyc6IDIwMCxcbiAgICAgICAgICBkdXJhdGlvbjogNjAgKiA2MCAqIDI0ICogMzAgKiAyLFxuICAgICAgICAgICd0aW1lLXJlc2VydmVkJzogJ2R1cmF0aW9uJyxcbiAgICAgICAgICAnZXhwZWN0ZWQtbGlmZXNwYW4nOiA2MCAqIDYwICogMjQgKiAzNjUgKiA0LFxuICAgICAgICAgICdyZXNvdXJjZXMtcmVzZXJ2ZWQnOiAxLFxuICAgICAgICAgICd0b3RhbC1yZXNvdXJjZXMnOiAxLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApLnJlc29sdmVzLnRvU3RyaWN0RXF1YWwoW1xuICAgICAge1xuICAgICAgICAndG90YWwtZW1ib2RpZWQtZW1pc3Npb25zJzogMjAwLFxuICAgICAgICAndGltZS1yZXNlcnZlZCc6IDYwICogNjAgKiAyNCAqIDMwLFxuICAgICAgICAnZXhwZWN0ZWQtbGlmZXNwYW4nOiA2MCAqIDYwICogMjQgKiAzNjUgKiA0LFxuICAgICAgICAncmVzb3VyY2VzLXJlc2VydmVkJzogMSxcbiAgICAgICAgJ3RvdGFsLXJlc291cmNlcyc6IDEsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiA0LjEwOTU4OTA0MTA5NTg5LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgJ3RvdGFsLWVtYm9kaWVkLWVtaXNzaW9ucyc6IDIwMCxcbiAgICAgICAgZHVyYXRpb246IDYwICogNjAgKiAyNCAqIDMwICogMixcbiAgICAgICAgJ3RpbWUtcmVzZXJ2ZWQnOiAnZHVyYXRpb24nLFxuICAgICAgICAnZXhwZWN0ZWQtbGlmZXNwYW4nOiA2MCAqIDYwICogMjQgKiAzNjUgKiA0LFxuICAgICAgICAncmVzb3VyY2VzLXJlc2VydmVkJzogMSxcbiAgICAgICAgJ3RvdGFsLXJlc291cmNlcyc6IDEsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiA0LjEwOTU4OTA0MTA5NTg5ICogMixcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgbW9kZWwuZXhlY3V0ZShbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWU6IDIwMCxcbiAgICAgICAgICBkdXJhdGlvbjogNjAgKiA2MCAqIDI0ICogMzAgKiAyLFxuICAgICAgICAgICd0aW1lLXJlc2VydmVkJzogJ2R1cmF0aW9uJyxcbiAgICAgICAgICAnZXhwZWN0ZWQtbGlmZXNwYW4nOiA2MCAqIDYwICogMjQgKiAzNjUgKiA0LFxuICAgICAgICAgICdyZXNvdXJjZXMtcmVzZXJ2ZWQnOiAxLFxuICAgICAgICAgICd0b3RhbC1yZXNvdXJjZXMnOiAxLFxuICAgICAgICAgICdlbWJvZGllZC1jYXJib24nOiA0LjEwOTU4OTA0MTA5NTg5ICogMixcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS5yZWplY3RzLnRvVGhyb3dFcnJvcigpO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const globals_1 = require("@jest/globals");
4
+ const index_1 = require("../../../../lib/sci-o/index");
5
+ globals_1.jest.setTimeout(30000);
6
+ (0, globals_1.describe)('ccf:configure test', () => {
7
+ (0, globals_1.test)('initialize and test', async () => {
8
+ const model = await new index_1.SciOModel().configure('ccf', {});
9
+ (0, globals_1.expect)(model).toBeInstanceOf(index_1.SciOModel);
10
+ await (0, globals_1.expect)(model.execute([
11
+ {
12
+ 'grid-carbon-intensity': 200.0,
13
+ energy: 100.0,
14
+ },
15
+ ])).resolves.toStrictEqual([
16
+ {
17
+ 'grid-carbon-intensity': 200.0,
18
+ energy: 100.0,
19
+ 'operational-carbon': 100.0 * 200.0,
20
+ },
21
+ ]);
22
+ await (0, globals_1.expect)(model.execute([
23
+ {
24
+ 'grid-carbon-intensity': 212.1,
25
+ energy: 100.0,
26
+ },
27
+ ])).resolves.toStrictEqual([
28
+ {
29
+ 'grid-carbon-intensity': 212.1,
30
+ energy: 100.0,
31
+ 'operational-carbon': 100.0 * 212.1,
32
+ },
33
+ ]);
34
+ await (0, globals_1.expect)(model.execute([
35
+ {
36
+ 'grid-carbon-intensityd': 212.1,
37
+ energy: 100.0,
38
+ },
39
+ ])).rejects.toThrowError();
40
+ });
41
+ });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC9saWIvc2NpLW8vaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJDQUEyRDtBQUMzRCx1REFBc0Q7QUFDdEQsY0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV2QixJQUFBLGtCQUFRLEVBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLElBQUEsY0FBSSxFQUFDLHFCQUFxQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxpQkFBUyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFTLENBQUMsQ0FBQztRQUN4QyxNQUFNLElBQUEsZ0JBQU0sRUFDVixLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ1o7Z0JBQ0UsdUJBQXVCLEVBQUUsS0FBSztnQkFDOUIsTUFBTSxFQUFFLEtBQUs7YUFDZDtTQUNGLENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDdkI7Z0JBQ0UsdUJBQXVCLEVBQUUsS0FBSztnQkFDOUIsTUFBTSxFQUFFLEtBQUs7Z0JBQ2Isb0JBQW9CLEVBQUUsS0FBSyxHQUFHLEtBQUs7YUFDcEM7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUEsZ0JBQU0sRUFDVixLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ1o7Z0JBQ0UsdUJBQXVCLEVBQUUsS0FBSztnQkFDOUIsTUFBTSxFQUFFLEtBQUs7YUFDZDtTQUNGLENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDdkI7Z0JBQ0UsdUJBQXVCLEVBQUUsS0FBSztnQkFDOUIsTUFBTSxFQUFFLEtBQUs7Z0JBQ2Isb0JBQW9CLEVBQUUsS0FBSyxHQUFHLEtBQUs7YUFDcEM7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUEsZ0JBQU0sRUFDVixLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ1o7Z0JBQ0Usd0JBQXdCLEVBQUUsS0FBSztnQkFDL0IsTUFBTSxFQUFFLEtBQUs7YUFDZDtTQUNGLENBQUMsQ0FDSCxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZXNjcmliZSwgZXhwZWN0LCBqZXN0LCB0ZXN0fSBmcm9tICdAamVzdC9nbG9iYWxzJztcbmltcG9ydCB7U2NpT01vZGVsfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvc2NpLW8vaW5kZXgnO1xuamVzdC5zZXRUaW1lb3V0KDMwMDAwKTtcblxuZGVzY3JpYmUoJ2NjZjpjb25maWd1cmUgdGVzdCcsICgpID0+IHtcbiAgdGVzdCgnaW5pdGlhbGl6ZSBhbmQgdGVzdCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2RlbCA9IGF3YWl0IG5ldyBTY2lPTW9kZWwoKS5jb25maWd1cmUoJ2NjZicsIHt9KTtcbiAgICBleHBlY3QobW9kZWwpLnRvQmVJbnN0YW5jZU9mKFNjaU9Nb2RlbCk7XG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgbW9kZWwuZXhlY3V0ZShbXG4gICAgICAgIHtcbiAgICAgICAgICAnZ3JpZC1jYXJib24taW50ZW5zaXR5JzogMjAwLjAsXG4gICAgICAgICAgZW5lcmd5OiAxMDAuMCxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS5yZXNvbHZlcy50b1N0cmljdEVxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgJ2dyaWQtY2FyYm9uLWludGVuc2l0eSc6IDIwMC4wLFxuICAgICAgICBlbmVyZ3k6IDEwMC4wLFxuICAgICAgICAnb3BlcmF0aW9uYWwtY2FyYm9uJzogMTAwLjAgKiAyMDAuMCxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgbW9kZWwuZXhlY3V0ZShbXG4gICAgICAgIHtcbiAgICAgICAgICAnZ3JpZC1jYXJib24taW50ZW5zaXR5JzogMjEyLjEsXG4gICAgICAgICAgZW5lcmd5OiAxMDAuMCxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS5yZXNvbHZlcy50b1N0cmljdEVxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgJ2dyaWQtY2FyYm9uLWludGVuc2l0eSc6IDIxMi4xLFxuICAgICAgICBlbmVyZ3k6IDEwMC4wLFxuICAgICAgICAnb3BlcmF0aW9uYWwtY2FyYm9uJzogMTAwLjAgKiAyMTIuMSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgbW9kZWwuZXhlY3V0ZShbXG4gICAgICAgIHtcbiAgICAgICAgICAnZ3JpZC1jYXJib24taW50ZW5zaXR5ZCc6IDIxMi4xLFxuICAgICAgICAgIGVuZXJneTogMTAwLjAsXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICkucmVqZWN0cy50b1Rocm93RXJyb3IoKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const globals_1 = require("@jest/globals");
4
+ const index_1 = require("../../../../lib/shell-imp/index");
5
+ globals_1.jest.setTimeout(30000);
6
+ (0, globals_1.describe)('lib/shell-imp: ', () => {
7
+ (0, globals_1.describe)('shell:configure', () => {
8
+ (0, globals_1.test)('initialize with params', async () => {
9
+ const outputModel = new index_1.ShellModel();
10
+ await outputModel.configure('test', {
11
+ executable: '/usr/local/bin/sampler',
12
+ });
13
+ await (0, globals_1.expect)(outputModel.execute([
14
+ { duration: 3600, cpu: 0.5, datetime: '2021-01-01T00:00:00Z' },
15
+ ])).resolves.toStrictEqual([
16
+ { duration: 3600, cpu: 0.5, datetime: '2021-01-01T00:00:00Z', energy: 1 },
17
+ ]);
18
+ });
19
+ });
20
+ });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC9saWIvc2hlbGwtaW1wL2luZGV4LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQ0FBMkQ7QUFDM0QsMkRBQTJEO0FBRTNELGNBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFdkIsSUFBQSxrQkFBUSxFQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtJQUMvQixJQUFBLGtCQUFRLEVBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLElBQUEsY0FBSSxFQUFDLHdCQUF3QixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hDLE1BQU0sV0FBVyxHQUFHLElBQUksa0JBQVUsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xDLFVBQVUsRUFBRSx3QkFBd0I7YUFDckMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxJQUFBLGdCQUFNLEVBQ1YsV0FBVyxDQUFDLE9BQU8sQ0FBQztnQkFDbEIsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFDO2FBQzdELENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7Z0JBQ3ZCLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFDO2FBQ3hFLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVzY3JpYmUsIGV4cGVjdCwgamVzdCwgdGVzdH0gZnJvbSAnQGplc3QvZ2xvYmFscyc7XG5pbXBvcnQge1NoZWxsTW9kZWx9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi9zaGVsbC1pbXAvaW5kZXgnO1xuXG5qZXN0LnNldFRpbWVvdXQoMzAwMDApO1xuXG5kZXNjcmliZSgnbGliL3NoZWxsLWltcDogJywgKCkgPT4ge1xuICBkZXNjcmliZSgnc2hlbGw6Y29uZmlndXJlJywgKCkgPT4ge1xuICAgIHRlc3QoJ2luaXRpYWxpemUgd2l0aCBwYXJhbXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXRNb2RlbCA9IG5ldyBTaGVsbE1vZGVsKCk7XG4gICAgICBhd2FpdCBvdXRwdXRNb2RlbC5jb25maWd1cmUoJ3Rlc3QnLCB7XG4gICAgICAgIGV4ZWN1dGFibGU6ICcvdXNyL2xvY2FsL2Jpbi9zYW1wbGVyJyxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgZXhwZWN0KFxuICAgICAgICBvdXRwdXRNb2RlbC5leGVjdXRlKFtcbiAgICAgICAgICB7ZHVyYXRpb246IDM2MDAsIGNwdTogMC41LCBkYXRldGltZTogJzIwMjEtMDEtMDFUMDA6MDA6MDBaJ30sXG4gICAgICAgIF0pXG4gICAgICApLnJlc29sdmVzLnRvU3RyaWN0RXF1YWwoW1xuICAgICAgICB7ZHVyYXRpb246IDM2MDAsIGNwdTogMC41LCBkYXRldGltZTogJzIwMjEtMDEtMDFUMDA6MDA6MDBaJywgZW5lcmd5OiAxfSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const globals_1 = require("@jest/globals");
4
+ const lib_1 = require("../../../../lib");
5
+ globals_1.jest.setTimeout(30000);
6
+ (0, globals_1.describe)('tdp-finder:configure test', () => {
7
+ (0, globals_1.test)('initialize and test', async () => {
8
+ const model = await new lib_1.TdpFinderModel().configure('tdp', {});
9
+ (0, globals_1.expect)(model).toBeInstanceOf(lib_1.TdpFinderModel);
10
+ await (0, globals_1.expect)(model.execute([
11
+ {
12
+ 'physical-processor': 'AMD 3020e',
13
+ },
14
+ ])).resolves.toStrictEqual([
15
+ {
16
+ 'physical-processor': 'AMD 3020e',
17
+ 'thermal-design-power': 6.0,
18
+ },
19
+ ]);
20
+ await (0, globals_1.expect)(model.execute([
21
+ {
22
+ 'physical-processor': 'Intel Xeon E5-2676 v3',
23
+ },
24
+ ])).resolves.toStrictEqual([
25
+ {
26
+ 'physical-processor': 'Intel Xeon E5-2676 v3',
27
+ 'thermal-design-power': 120.0,
28
+ },
29
+ ]);
30
+ await (0, globals_1.expect)(model.execute([
31
+ {
32
+ 'physical-processor': 'Intel Xeon Platinum 8175M,AMD A8-9600',
33
+ },
34
+ ])).resolves.toStrictEqual([
35
+ {
36
+ 'physical-processor': 'Intel Xeon Platinum 8175M,AMD A8-9600',
37
+ 'thermal-design-power': 240.0,
38
+ },
39
+ ]);
40
+ await (0, globals_1.expect)(model.execute([
41
+ {
42
+ 'physical-processor': 'Intel Xeon Platinum 8175M,AMD A8-9600f',
43
+ },
44
+ ])).rejects.toThrowError();
45
+ await (0, globals_1.expect)(model.execute([
46
+ {
47
+ 'physical-processor': 'AMD A8-9600',
48
+ },
49
+ ])).resolves.toStrictEqual([
50
+ {
51
+ 'physical-processor': 'AMD A8-9600',
52
+ 'thermal-design-power': 65,
53
+ },
54
+ ]);
55
+ await (0, globals_1.expect)(model.execute([
56
+ {
57
+ 'physical-processor': 'AMD 3020ef',
58
+ },
59
+ ])).rejects.toThrowError();
60
+ });
61
+ });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC9saWIvdGRwLWZpbmRlci9pbmRleC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQTJEO0FBQzNELHlDQUErQztBQUUvQyxjQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXZCLElBQUEsa0JBQVEsRUFBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7SUFDekMsSUFBQSxjQUFJLEVBQUMscUJBQXFCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLG9CQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUEsZ0JBQU0sRUFBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsb0JBQWMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sSUFBQSxnQkFBTSxFQUNWLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDWjtnQkFDRSxvQkFBb0IsRUFBRSxXQUFXO2FBQ2xDO1NBQ0YsQ0FBQyxDQUNILENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUN2QjtnQkFDRSxvQkFBb0IsRUFBRSxXQUFXO2dCQUNqQyxzQkFBc0IsRUFBRSxHQUFHO2FBQzVCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFBLGdCQUFNLEVBQ1YsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNaO2dCQUNFLG9CQUFvQixFQUFFLHVCQUF1QjthQUM5QztTQUNGLENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDdkI7Z0JBQ0Usb0JBQW9CLEVBQUUsdUJBQXVCO2dCQUM3QyxzQkFBc0IsRUFBRSxLQUFLO2FBQzlCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFBLGdCQUFNLEVBQ1YsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNaO2dCQUNFLG9CQUFvQixFQUFFLHVDQUF1QzthQUM5RDtTQUNGLENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDdkI7Z0JBQ0Usb0JBQW9CLEVBQUUsdUNBQXVDO2dCQUM3RCxzQkFBc0IsRUFBRSxLQUFLO2FBQzlCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFBLGdCQUFNLEVBQ1YsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNaO2dCQUNFLG9CQUFvQixFQUFFLHdDQUF3QzthQUMvRDtTQUNGLENBQUMsQ0FDSCxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUEsZ0JBQU0sRUFDVixLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ1o7Z0JBQ0Usb0JBQW9CLEVBQUUsYUFBYTthQUNwQztTQUNGLENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDdkI7Z0JBQ0Usb0JBQW9CLEVBQUUsYUFBYTtnQkFDbkMsc0JBQXNCLEVBQUUsRUFBRTthQUMzQjtTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBQSxnQkFBTSxFQUNWLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDWjtnQkFDRSxvQkFBb0IsRUFBRSxZQUFZO2FBQ25DO1NBQ0YsQ0FBQyxDQUNILENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Rlc2NyaWJlLCBleHBlY3QsIGplc3QsIHRlc3R9IGZyb20gJ0BqZXN0L2dsb2JhbHMnO1xuaW1wb3J0IHtUZHBGaW5kZXJNb2RlbH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliJztcblxuamVzdC5zZXRUaW1lb3V0KDMwMDAwKTtcblxuZGVzY3JpYmUoJ3RkcC1maW5kZXI6Y29uZmlndXJlIHRlc3QnLCAoKSA9PiB7XG4gIHRlc3QoJ2luaXRpYWxpemUgYW5kIHRlc3QnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBuZXcgVGRwRmluZGVyTW9kZWwoKS5jb25maWd1cmUoJ3RkcCcsIHt9KTtcbiAgICBleHBlY3QobW9kZWwpLnRvQmVJbnN0YW5jZU9mKFRkcEZpbmRlck1vZGVsKTtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtb2RlbC5leGVjdXRlKFtcbiAgICAgICAge1xuICAgICAgICAgICdwaHlzaWNhbC1wcm9jZXNzb3InOiAnQU1EIDMwMjBlJyxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS5yZXNvbHZlcy50b1N0cmljdEVxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgJ3BoeXNpY2FsLXByb2Nlc3Nvcic6ICdBTUQgMzAyMGUnLFxuICAgICAgICAndGhlcm1hbC1kZXNpZ24tcG93ZXInOiA2LjAsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIG1vZGVsLmV4ZWN1dGUoW1xuICAgICAgICB7XG4gICAgICAgICAgJ3BoeXNpY2FsLXByb2Nlc3Nvcic6ICdJbnRlbCBYZW9uIEU1LTI2NzYgdjMnLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApLnJlc29sdmVzLnRvU3RyaWN0RXF1YWwoW1xuICAgICAge1xuICAgICAgICAncGh5c2ljYWwtcHJvY2Vzc29yJzogJ0ludGVsIFhlb24gRTUtMjY3NiB2MycsXG4gICAgICAgICd0aGVybWFsLWRlc2lnbi1wb3dlcic6IDEyMC4wLFxuICAgICAgfSxcbiAgICBdKTtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtb2RlbC5leGVjdXRlKFtcbiAgICAgICAge1xuICAgICAgICAgICdwaHlzaWNhbC1wcm9jZXNzb3InOiAnSW50ZWwgWGVvbiBQbGF0aW51bSA4MTc1TSxBTUQgQTgtOTYwMCcsXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICkucmVzb2x2ZXMudG9TdHJpY3RFcXVhbChbXG4gICAgICB7XG4gICAgICAgICdwaHlzaWNhbC1wcm9jZXNzb3InOiAnSW50ZWwgWGVvbiBQbGF0aW51bSA4MTc1TSxBTUQgQTgtOTYwMCcsXG4gICAgICAgICd0aGVybWFsLWRlc2lnbi1wb3dlcic6IDI0MC4wLFxuICAgICAgfSxcbiAgICBdKTtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtb2RlbC5leGVjdXRlKFtcbiAgICAgICAge1xuICAgICAgICAgICdwaHlzaWNhbC1wcm9jZXNzb3InOiAnSW50ZWwgWGVvbiBQbGF0aW51bSA4MTc1TSxBTUQgQTgtOTYwMGYnLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApLnJlamVjdHMudG9UaHJvd0Vycm9yKCk7XG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgbW9kZWwuZXhlY3V0ZShbXG4gICAgICAgIHtcbiAgICAgICAgICAncGh5c2ljYWwtcHJvY2Vzc29yJzogJ0FNRCBBOC05NjAwJyxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS5yZXNvbHZlcy50b1N0cmljdEVxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgJ3BoeXNpY2FsLXByb2Nlc3Nvcic6ICdBTUQgQTgtOTYwMCcsXG4gICAgICAgICd0aGVybWFsLWRlc2lnbi1wb3dlcic6IDY1LFxuICAgICAgfSxcbiAgICBdKTtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtb2RlbC5leGVjdXRlKFtcbiAgICAgICAge1xuICAgICAgICAgICdwaHlzaWNhbC1wcm9jZXNzb3InOiAnQU1EIDMwMjBlZicsXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICkucmVqZWN0cy50b1Rocm93RXJyb3IoKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const globals_1 = require("@jest/globals");
4
+ const index_1 = require("../../../../lib/teads-aws/index");
5
+ const common_1 = require("../../../../types/common");
6
+ globals_1.jest.setTimeout(30000);
7
+ (0, globals_1.describe)('teads:configure test', () => {
8
+ (0, globals_1.test)('initialize with params', async () => {
9
+ const outputModel = new index_1.TeadsAWS();
10
+ await outputModel.configure('test', {
11
+ interpolation: common_1.Interpolation.LINEAR,
12
+ 'instance-type': 't2.micro',
13
+ });
14
+ await (0, globals_1.expect)(outputModel.execute([
15
+ {
16
+ duration: 3600,
17
+ 'cpu-util': 50,
18
+ timestamp: '2021-01-01T00:00:00Z',
19
+ },
20
+ ])).resolves.toStrictEqual([
21
+ {
22
+ duration: 3600,
23
+ 'cpu-util': 50,
24
+ timestamp: '2021-01-01T00:00:00Z',
25
+ energy: 0.004900000000000001,
26
+ 'embodied-carbon': 0.04216723744292237 * 1000,
27
+ },
28
+ ]);
29
+ });
30
+ (0, globals_1.test)('teads:initialize with params: spline', async () => {
31
+ const outputModel = new index_1.TeadsAWS();
32
+ await outputModel.configure('test', {
33
+ 'instance-type': 'm5n.large',
34
+ interpolation: common_1.Interpolation.SPLINE,
35
+ });
36
+ await (0, globals_1.expect)(outputModel.execute([
37
+ {
38
+ duration: 3600,
39
+ 'cpu-util': 10,
40
+ timestamp: '2021-01-01T00:00:00Z',
41
+ },
42
+ {
43
+ duration: 3600,
44
+ 'cpu-util': 50,
45
+ timestamp: '2021-01-01T00:00:00Z',
46
+ },
47
+ {
48
+ duration: 3600,
49
+ 'cpu-util': 100,
50
+ timestamp: '2021-01-01T00:00:00Z',
51
+ },
52
+ ])).resolves.toStrictEqual([
53
+ {
54
+ duration: 3600,
55
+ 'cpu-util': 10,
56
+ timestamp: '2021-01-01T00:00:00Z',
57
+ energy: 0.0067,
58
+ 'embodied-carbon': 91.94006849315068,
59
+ },
60
+ {
61
+ duration: 3600,
62
+ 'cpu-util': 50,
63
+ timestamp: '2021-01-01T00:00:00Z',
64
+ energy: 0.011800000000000001,
65
+ 'embodied-carbon': 91.94006849315068,
66
+ },
67
+ {
68
+ duration: 3600,
69
+ 'cpu-util': 100,
70
+ timestamp: '2021-01-01T00:00:00Z',
71
+ energy: 0.016300000000000002,
72
+ 'embodied-carbon': 91.94006849315068,
73
+ },
74
+ ]);
75
+ });
76
+ (0, globals_1.test)('teads:initialize with params: linear', async () => {
77
+ const outputModel = new index_1.TeadsAWS();
78
+ await outputModel.configure('test', {
79
+ 'instance-type': 'm5n.large',
80
+ interpolation: common_1.Interpolation.LINEAR,
81
+ });
82
+ await (0, globals_1.expect)(outputModel.execute([
83
+ {
84
+ duration: 3600,
85
+ 'cpu-util': 10,
86
+ timestamp: '2021-01-01T00:00:00Z',
87
+ },
88
+ {
89
+ duration: 3600,
90
+ 'cpu-util': 50,
91
+ timestamp: '2021-01-01T00:00:00Z',
92
+ },
93
+ {
94
+ duration: 3600,
95
+ 'cpu-util': 100,
96
+ timestamp: '2021-01-01T00:00:00Z',
97
+ },
98
+ ])).resolves.toStrictEqual([
99
+ {
100
+ duration: 3600,
101
+ 'cpu-util': 10,
102
+ timestamp: '2021-01-01T00:00:00Z',
103
+ energy: 0.0067,
104
+ 'embodied-carbon': 91.94006849315068,
105
+ },
106
+ {
107
+ duration: 3600,
108
+ 'cpu-util': 50,
109
+ timestamp: '2021-01-01T00:00:00Z',
110
+ energy: 0.011800000000000001,
111
+ 'embodied-carbon': 91.94006849315068,
112
+ },
113
+ {
114
+ duration: 3600,
115
+ 'cpu-util': 100,
116
+ timestamp: '2021-01-01T00:00:00Z',
117
+ energy: 0.016300000000000002,
118
+ 'embodied-carbon': 91.94006849315068,
119
+ },
120
+ ]);
121
+ });
122
+ (0, globals_1.test)('teads:initialize with params: linear 2', async () => {
123
+ const outputModel = new index_1.TeadsAWS();
124
+ await outputModel.configure('test', {
125
+ 'instance-type': 'm5n.large',
126
+ interpolation: common_1.Interpolation.LINEAR,
127
+ 'expected-lifespan': 8 * 365 * 24 * 3600,
128
+ });
129
+ await (0, globals_1.expect)(outputModel.execute([
130
+ {
131
+ duration: 3600,
132
+ 'cpu-util': 10,
133
+ timestamp: '2021-01-01T00:00:00Z',
134
+ },
135
+ {
136
+ duration: 3600,
137
+ 'cpu-util': 50,
138
+ timestamp: '2021-01-01T00:00:00Z',
139
+ },
140
+ {
141
+ duration: 3600,
142
+ 'cpu-util': 100,
143
+ timestamp: '2021-01-01T00:00:00Z',
144
+ },
145
+ ])).resolves.toStrictEqual([
146
+ {
147
+ duration: 3600,
148
+ 'cpu-util': 10,
149
+ timestamp: '2021-01-01T00:00:00Z',
150
+ energy: 0.0067,
151
+ 'embodied-carbon': 45.97003424657534,
152
+ },
153
+ {
154
+ duration: 3600,
155
+ 'cpu-util': 50,
156
+ timestamp: '2021-01-01T00:00:00Z',
157
+ energy: 0.011800000000000001,
158
+ 'embodied-carbon': 45.97003424657534,
159
+ },
160
+ {
161
+ duration: 3600,
162
+ 'cpu-util': 100,
163
+ timestamp: '2021-01-01T00:00:00Z',
164
+ energy: 0.016300000000000002,
165
+ 'embodied-carbon': 45.97003424657534,
166
+ },
167
+ ]);
168
+ });
169
+ });
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC9saWIvdGVhZHMtYXdzL2luZGV4LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQ0FBMkQ7QUFDM0QsMkRBQXlEO0FBRXpELHFEQUF1RDtBQUV2RCxjQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXZCLElBQUEsa0JBQVEsRUFBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7SUFDcEMsSUFBQSxjQUFJLEVBQUMsd0JBQXdCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxnQkFBUSxFQUFFLENBQUM7UUFDbkMsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNsQyxhQUFhLEVBQUUsc0JBQWEsQ0FBQyxNQUFNO1lBQ25DLGVBQWUsRUFBRSxVQUFVO1NBQzVCLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBQSxnQkFBTSxFQUNWLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDbEI7Z0JBQ0UsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsU0FBUyxFQUFFLHNCQUFzQjthQUNsQztTQUNGLENBQUMsQ0FDSCxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDdkI7Z0JBQ0UsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsU0FBUyxFQUFFLHNCQUFzQjtnQkFDakMsTUFBTSxFQUFFLG9CQUFvQjtnQkFDNUIsaUJBQWlCLEVBQUUsbUJBQW1CLEdBQUcsSUFBSTthQUM5QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBQSxjQUFJLEVBQUMsc0NBQXNDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxnQkFBUSxFQUFFLENBQUM7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Q3JDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVzY3JpYmUsIGV4cGVjdCwgamVzdCwgdGVzdH0gZnJvbSAnQGplc3QvZ2xvYmFscyc7XG5pbXBvcnQge1RlYWRzQVdTfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvdGVhZHMtYXdzL2luZGV4JztcblxuaW1wb3J0IHtJbnRlcnBvbGF0aW9ufSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy9jb21tb24nO1xuXG5qZXN0LnNldFRpbWVvdXQoMzAwMDApO1xuXG5kZXNjcmliZSgndGVhZHM6Y29uZmlndXJlIHRlc3QnLCAoKSA9PiB7XG4gIHRlc3QoJ2luaXRpYWxpemUgd2l0aCBwYXJhbXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0TW9kZWwgPSBuZXcgVGVhZHNBV1MoKTtcbiAgICBhd2FpdCBvdXRwdXRNb2RlbC5jb25maWd1cmUoJ3Rlc3QnLCB7XG4gICAgICBpbnRlcnBvbGF0aW9uOiBJbnRlcnBvbGF0aW9uLkxJTkVBUixcbiAgICAgICdpbnN0YW5jZS10eXBlJzogJ3QyLm1pY3JvJyxcbiAgICB9KTtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBvdXRwdXRNb2RlbC5leGVjdXRlKFtcbiAgICAgICAge1xuICAgICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAgICdjcHUtdXRpbCc6IDUwLFxuICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjEtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKS5yZXNvbHZlcy50b1N0cmljdEVxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAgICdjcHUtdXRpbCc6IDUwLFxuICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIGVuZXJneTogMC4wMDQ5MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiAwLjA0MjE2NzIzNzQ0MjkyMjM3ICogMTAwMCxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xuICB0ZXN0KCd0ZWFkczppbml0aWFsaXplIHdpdGggcGFyYW1zOiBzcGxpbmUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0TW9kZWwgPSBuZXcgVGVhZHNBV1MoKTtcbiAgICBhd2FpdCBvdXRwdXRNb2RlbC5jb25maWd1cmUoJ3Rlc3QnLCB7XG4gICAgICAnaW5zdGFuY2UtdHlwZSc6ICdtNW4ubGFyZ2UnLFxuICAgICAgaW50ZXJwb2xhdGlvbjogSW50ZXJwb2xhdGlvbi5TUExJTkUsXG4gICAgfSk7XG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgb3V0cHV0TW9kZWwuZXhlY3V0ZShbXG4gICAgICAgIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAnY3B1LXV0aWwnOiAxMCxcbiAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAnY3B1LXV0aWwnOiA1MCxcbiAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAnY3B1LXV0aWwnOiAxMDAsXG4gICAgICAgICAgdGltZXN0YW1wOiAnMjAyMS0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApLnJlc29sdmVzLnRvU3RyaWN0RXF1YWwoW1xuICAgICAge1xuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTAsXG4gICAgICAgIHRpbWVzdGFtcDogJzIwMjEtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgICAgZW5lcmd5OiAwLjAwNjcsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiA5MS45NDAwNjg0OTMxNTA2OCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAnY3B1LXV0aWwnOiA1MCxcbiAgICAgICAgdGltZXN0YW1wOiAnMjAyMS0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICBlbmVyZ3k6IDAuMDExODAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAnZW1ib2RpZWQtY2FyYm9uJzogOTEuOTQwMDY4NDkzMTUwNjgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTAwLFxuICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIGVuZXJneTogMC4wMTYzMDAwMDAwMDAwMDAwMDIsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiA5MS45NDAwNjg0OTMxNTA2OCxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xuICB0ZXN0KCd0ZWFkczppbml0aWFsaXplIHdpdGggcGFyYW1zOiBsaW5lYXInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0TW9kZWwgPSBuZXcgVGVhZHNBV1MoKTtcbiAgICBhd2FpdCBvdXRwdXRNb2RlbC5jb25maWd1cmUoJ3Rlc3QnLCB7XG4gICAgICAnaW5zdGFuY2UtdHlwZSc6ICdtNW4ubGFyZ2UnLFxuICAgICAgaW50ZXJwb2xhdGlvbjogSW50ZXJwb2xhdGlvbi5MSU5FQVIsXG4gICAgfSk7XG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgb3V0cHV0TW9kZWwuZXhlY3V0ZShbXG4gICAgICAgIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAnY3B1LXV0aWwnOiAxMCxcbiAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAnY3B1LXV0aWwnOiA1MCxcbiAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAnY3B1LXV0aWwnOiAxMDAsXG4gICAgICAgICAgdGltZXN0YW1wOiAnMjAyMS0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApLnJlc29sdmVzLnRvU3RyaWN0RXF1YWwoW1xuICAgICAge1xuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTAsXG4gICAgICAgIHRpbWVzdGFtcDogJzIwMjEtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgICAgZW5lcmd5OiAwLjAwNjcsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiA5MS45NDAwNjg0OTMxNTA2OCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAnY3B1LXV0aWwnOiA1MCxcbiAgICAgICAgdGltZXN0YW1wOiAnMjAyMS0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICBlbmVyZ3k6IDAuMDExODAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAnZW1ib2RpZWQtY2FyYm9uJzogOTEuOTQwMDY4NDkzMTUwNjgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTAwLFxuICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIGVuZXJneTogMC4wMTYzMDAwMDAwMDAwMDAwMDIsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiA5MS45NDAwNjg0OTMxNTA2OCxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xuICB0ZXN0KCd0ZWFkczppbml0aWFsaXplIHdpdGggcGFyYW1zOiBsaW5lYXIgMicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvdXRwdXRNb2RlbCA9IG5ldyBUZWFkc0FXUygpO1xuICAgIGF3YWl0IG91dHB1dE1vZGVsLmNvbmZpZ3VyZSgndGVzdCcsIHtcbiAgICAgICdpbnN0YW5jZS10eXBlJzogJ201bi5sYXJnZScsXG4gICAgICBpbnRlcnBvbGF0aW9uOiBJbnRlcnBvbGF0aW9uLkxJTkVBUixcbiAgICAgICdleHBlY3RlZC1saWZlc3Bhbic6IDggKiAzNjUgKiAyNCAqIDM2MDAsXG4gICAgfSk7XG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgb3V0cHV0TW9kZWwuZXhlY3V0ZShbXG4gICAgICAgIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAnY3B1LXV0aWwnOiAxMCxcbiAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAnY3B1LXV0aWwnOiA1MCxcbiAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAnY3B1LXV0aWwnOiAxMDAsXG4gICAgICAgICAgdGltZXN0YW1wOiAnMjAyMS0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApLnJlc29sdmVzLnRvU3RyaWN0RXF1YWwoW1xuICAgICAge1xuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTAsXG4gICAgICAgIHRpbWVzdGFtcDogJzIwMjEtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgICAgZW5lcmd5OiAwLjAwNjcsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiA0NS45NzAwMzQyNDY1NzUzNCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAnY3B1LXV0aWwnOiA1MCxcbiAgICAgICAgdGltZXN0YW1wOiAnMjAyMS0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICBlbmVyZ3k6IDAuMDExODAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAnZW1ib2RpZWQtY2FyYm9uJzogNDUuOTcwMDM0MjQ2NTc1MzQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTAwLFxuICAgICAgICB0aW1lc3RhbXA6ICcyMDIxLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgIGVuZXJneTogMC4wMTYzMDAwMDAwMDAwMDAwMDIsXG4gICAgICAgICdlbWJvZGllZC1jYXJib24nOiA0NS45NzAwMzQyNDY1NzUzNCxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xufSk7XG4iXX0=