@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,33 @@
1
+ import { IOutputModelInterface } from '../../lib';
2
+ import { ImplInitializeModel, InitalizedModels } from '../../types/models-universe';
3
+ export declare class MockModel implements IOutputModelInterface {
4
+ modelIdentifier(): string;
5
+ configure(): Promise<IOutputModelInterface>;
6
+ execute(): Promise<any[]>;
7
+ authenticate(): void;
8
+ }
9
+ /**
10
+ * Models Initialization Lifecycle.
11
+ */
12
+ export declare class ModelsUniverse {
13
+ /**
14
+ * Models list.
15
+ */
16
+ initalizedModels: InitalizedModels;
17
+ /**
18
+ * Gets model class by provided `name` param.
19
+ */
20
+ private handBuiltinModel;
21
+ /**
22
+ * Gets model based on `name` and `kind` params.
23
+ */
24
+ private handModelByCriteria;
25
+ /**
26
+ * Initializes and registers model.
27
+ */
28
+ writeDown(model: ImplInitializeModel): InitalizedModels;
29
+ /**
30
+ * Returns existing model by `name`.
31
+ */
32
+ getInitializedModel(modelName: string, config: any): Promise<IOutputModelInterface>;
33
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelsUniverse = exports.MockModel = void 0;
4
+ const config_1 = require("../../config");
5
+ const { NOT_INITIALIZED_MODEL } = config_1.STRINGS;
6
+ class MockModel {
7
+ modelIdentifier() {
8
+ return 'mock';
9
+ }
10
+ configure() {
11
+ return Promise.resolve(this);
12
+ }
13
+ execute() {
14
+ return Promise.resolve([{ data: 'mock-data' }]);
15
+ }
16
+ authenticate() { }
17
+ }
18
+ exports.MockModel = MockModel;
19
+ /**
20
+ * Models Initialization Lifecycle.
21
+ */
22
+ class ModelsUniverse {
23
+ constructor() {
24
+ /**
25
+ * Models list.
26
+ */
27
+ this.initalizedModels = {};
28
+ }
29
+ /**
30
+ * Gets model class by provided `name` param.
31
+ */
32
+ handBuiltinModel() {
33
+ return MockModel;
34
+ }
35
+ /**
36
+ * Gets model based on `name` and `kind` params.
37
+ */
38
+ handModelByCriteria() {
39
+ return this.handBuiltinModel();
40
+ }
41
+ /**
42
+ * Initializes and registers model.
43
+ */
44
+ writeDown(model) {
45
+ const { name } = model;
46
+ const Model = this.handModelByCriteria();
47
+ const callback = async () => {
48
+ const initalizedModel = await new Model().configure();
49
+ return initalizedModel;
50
+ };
51
+ this.initalizedModels = {
52
+ ...this.initalizedModels,
53
+ [name]: callback,
54
+ };
55
+ return this.initalizedModels;
56
+ }
57
+ /**
58
+ * Returns existing model by `name`.
59
+ */
60
+ async getInitializedModel(modelName, config) {
61
+ if (this.initalizedModels[modelName]) {
62
+ return await this.initalizedModels[modelName](config);
63
+ }
64
+ throw new Error(NOT_INITIALIZED_MODEL(modelName));
65
+ }
66
+ }
67
+ exports.ModelsUniverse = ModelsUniverse;
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvX19tb2Nrc19fL21vZGVsLXVuaXZlcnNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHlDQUFxQztBQU9yQyxNQUFNLEVBQUMscUJBQXFCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXhDLE1BQWEsU0FBUztJQUNwQixlQUFlO1FBQ2IsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU87UUFDTCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELFlBQVksS0FBVSxDQUFDO0NBQ3hCO0FBWkQsOEJBWUM7QUFFRDs7R0FFRztBQUNILE1BQWEsY0FBYztJQUEzQjtRQUNFOztXQUVHO1FBQ0kscUJBQWdCLEdBQXFCLEVBQUUsQ0FBQztJQWdEakQsQ0FBQztJQTlDQzs7T0FFRztJQUNLLGdCQUFnQjtRQUN0QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsS0FBMEI7UUFDekMsTUFBTSxFQUFDLElBQUksRUFBQyxHQUFHLEtBQUssQ0FBQztRQUVyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUV6QyxNQUFNLFFBQVEsR0FBRyxLQUFLLElBQUksRUFBRTtZQUMxQixNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFdEQsT0FBTyxlQUFlLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUN4QixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVE7U0FDakIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE1BQVc7UUFDN0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2RDtRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUFwREQsd0NBb0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJT3V0cHV0TW9kZWxJbnRlcmZhY2V9IGZyb20gJy4uLy4uL2xpYic7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuaW1wb3J0IHtcbiAgSW1wbEluaXRpYWxpemVNb2RlbCxcbiAgSW5pdGFsaXplZE1vZGVscyxcbn0gZnJvbSAnLi4vLi4vdHlwZXMvbW9kZWxzLXVuaXZlcnNlJztcblxuY29uc3Qge05PVF9JTklUSUFMSVpFRF9NT0RFTH0gPSBTVFJJTkdTO1xuXG5leHBvcnQgY2xhc3MgTW9ja01vZGVsIGltcGxlbWVudHMgSU91dHB1dE1vZGVsSW50ZXJmYWNlIHtcbiAgbW9kZWxJZGVudGlmaWVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdtb2NrJztcbiAgfVxuXG4gIGNvbmZpZ3VyZSgpOiBQcm9taXNlPElPdXRwdXRNb2RlbEludGVyZmFjZT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcyk7XG4gIH1cbiAgZXhlY3V0ZSgpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbe2RhdGE6ICdtb2NrLWRhdGEnfV0pO1xuICB9XG4gIGF1dGhlbnRpY2F0ZSgpOiB2b2lkIHt9XG59XG5cbi8qKlxuICogTW9kZWxzIEluaXRpYWxpemF0aW9uIExpZmVjeWNsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vZGVsc1VuaXZlcnNlIHtcbiAgLyoqXG4gICAqIE1vZGVscyBsaXN0LlxuICAgKi9cbiAgcHVibGljIGluaXRhbGl6ZWRNb2RlbHM6IEluaXRhbGl6ZWRNb2RlbHMgPSB7fTtcblxuICAvKipcbiAgICogR2V0cyBtb2RlbCBjbGFzcyBieSBwcm92aWRlZCBgbmFtZWAgcGFyYW0uXG4gICAqL1xuICBwcml2YXRlIGhhbmRCdWlsdGluTW9kZWwoKSB7XG4gICAgcmV0dXJuIE1vY2tNb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIG1vZGVsIGJhc2VkIG9uIGBuYW1lYCBhbmQgYGtpbmRgIHBhcmFtcy5cbiAgICovXG4gIHByaXZhdGUgaGFuZE1vZGVsQnlDcml0ZXJpYSgpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kQnVpbHRpbk1vZGVsKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYW5kIHJlZ2lzdGVycyBtb2RlbC5cbiAgICovXG4gIHB1YmxpYyB3cml0ZURvd24obW9kZWw6IEltcGxJbml0aWFsaXplTW9kZWwpIHtcbiAgICBjb25zdCB7bmFtZX0gPSBtb2RlbDtcblxuICAgIGNvbnN0IE1vZGVsID0gdGhpcy5oYW5kTW9kZWxCeUNyaXRlcmlhKCk7XG5cbiAgICBjb25zdCBjYWxsYmFjayA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRhbGl6ZWRNb2RlbCA9IGF3YWl0IG5ldyBNb2RlbCgpLmNvbmZpZ3VyZSgpO1xuXG4gICAgICByZXR1cm4gaW5pdGFsaXplZE1vZGVsO1xuICAgIH07XG5cbiAgICB0aGlzLmluaXRhbGl6ZWRNb2RlbHMgPSB7XG4gICAgICAuLi50aGlzLmluaXRhbGl6ZWRNb2RlbHMsXG4gICAgICBbbmFtZV06IGNhbGxiYWNrLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5pbml0YWxpemVkTW9kZWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZXhpc3RpbmcgbW9kZWwgYnkgYG5hbWVgLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEluaXRpYWxpemVkTW9kZWwobW9kZWxOYW1lOiBzdHJpbmcsIGNvbmZpZzogYW55KSB7XG4gICAgaWYgKHRoaXMuaW5pdGFsaXplZE1vZGVsc1ttb2RlbE5hbWVdKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5pbml0YWxpemVkTW9kZWxzW21vZGVsTmFtZV0oY29uZmlnKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoTk9UX0lOSVRJQUxJWkVEX01PREVMKG1vZGVsTmFtZSkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,119 @@
1
+ [
2
+ {
3
+ "point_time": "2021-01-01T01:00:00.000Z",
4
+ "value": 942,
5
+ "frequency": 300,
6
+ "market": "RTM",
7
+ "ba": "CAISO_NORTH",
8
+ "datatype": "MOER",
9
+ "version": "3.2"
10
+ },
11
+ {
12
+ "point_time": "2021-01-01T00:55:00.000Z",
13
+ "value": 931,
14
+ "frequency": 300,
15
+ "market": "RTM",
16
+ "ba": "CAISO_NORTH",
17
+ "datatype": "MOER",
18
+ "version": "3.2"
19
+ },
20
+ {
21
+ "point_time": "2021-01-01T00:50:00.000Z",
22
+ "value": 930,
23
+ "frequency": 300,
24
+ "market": "RTM",
25
+ "ba": "CAISO_NORTH",
26
+ "datatype": "MOER",
27
+ "version": "3.2"
28
+ },
29
+ {
30
+ "point_time": "2021-01-01T00:45:00.000Z",
31
+ "value": 930,
32
+ "frequency": 300,
33
+ "market": "RTM",
34
+ "ba": "CAISO_NORTH",
35
+ "datatype": "MOER",
36
+ "version": "3.2"
37
+ },
38
+ {
39
+ "point_time": "2021-01-01T00:40:00.000Z",
40
+ "value": 927,
41
+ "frequency": 300,
42
+ "market": "RTM",
43
+ "ba": "CAISO_NORTH",
44
+ "datatype": "MOER",
45
+ "version": "3.2"
46
+ },
47
+ {
48
+ "point_time": "2021-01-01T00:35:00.000Z",
49
+ "value": 934,
50
+ "frequency": 300,
51
+ "market": "RTM",
52
+ "ba": "CAISO_NORTH",
53
+ "datatype": "MOER",
54
+ "version": "3.2"
55
+ },
56
+ {
57
+ "point_time": "2021-01-01T00:30:00.000Z",
58
+ "value": 933,
59
+ "frequency": 300,
60
+ "market": "RTM",
61
+ "ba": "CAISO_NORTH",
62
+ "datatype": "MOER",
63
+ "version": "3.2"
64
+ },
65
+ {
66
+ "point_time": "2021-01-01T00:25:00.000Z",
67
+ "value": 934,
68
+ "frequency": 300,
69
+ "market": "RTM",
70
+ "ba": "CAISO_NORTH",
71
+ "datatype": "MOER",
72
+ "version": "3.2"
73
+ },
74
+ {
75
+ "point_time": "2021-01-01T00:20:00.000Z",
76
+ "value": 935,
77
+ "frequency": 300,
78
+ "market": "RTM",
79
+ "ba": "CAISO_NORTH",
80
+ "datatype": "MOER",
81
+ "version": "3.2"
82
+ },
83
+ {
84
+ "point_time": "2021-01-01T00:15:00.000Z",
85
+ "value": 986,
86
+ "frequency": 300,
87
+ "market": "RTM",
88
+ "ba": "CAISO_NORTH",
89
+ "datatype": "MOER",
90
+ "version": "3.2"
91
+ },
92
+ {
93
+ "point_time": "2021-01-01T00:10:00.000Z",
94
+ "value": 989,
95
+ "frequency": 300,
96
+ "market": "RTM",
97
+ "ba": "CAISO_NORTH",
98
+ "datatype": "MOER",
99
+ "version": "3.2"
100
+ },
101
+ {
102
+ "point_time": "2021-01-01T00:05:00.000Z",
103
+ "value": 993,
104
+ "frequency": 300,
105
+ "market": "RTM",
106
+ "ba": "CAISO_NORTH",
107
+ "datatype": "MOER",
108
+ "version": "3.2"
109
+ },
110
+ {
111
+ "point_time": "2021-01-01T00:00:00.000Z",
112
+ "value": 997,
113
+ "frequency": 300,
114
+ "market": "RTM",
115
+ "ba": "CAISO_NORTH",
116
+ "datatype": "MOER",
117
+ "version": "3.2"
118
+ }
119
+ ]
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs = require("fs");
4
+ const globals_1 = require("@jest/globals");
5
+ const yaml_1 = require("../../../util/yaml");
6
+ const node_test_1 = require("node:test");
7
+ globals_1.jest.setTimeout(30000);
8
+ (0, node_test_1.describe)('ompls: ', () => {
9
+ const path = 'examples/ompls';
10
+ const files = fs.readdirSync(path);
11
+ /*
12
+ * If there are no files in examples/ompls, prompt user to run ompl-test bash script
13
+ */
14
+ if (files.length === 0) {
15
+ throw 'no ompl files available. Please run scripts/impact-test.sh before running these tests.';
16
+ }
17
+ (0, node_test_1.describe)('computing(): ', () => {
18
+ /*
19
+ * For each file in examples/ompls, load it and run test
20
+ */
21
+ files.forEach(file => {
22
+ if (file.includes('nesting')) {
23
+ (0, globals_1.it)('check nested ompls have outputs field', async () => {
24
+ globals_1.expect.assertions(2);
25
+ const ompl = await (0, yaml_1.openYamlFileAsObject)(path + '/' + file);
26
+ const expectedProperty = 'outputs';
27
+ (0, globals_1.expect)(ompl['graph']['children']['child']['children']['child-1']).toHaveProperty(expectedProperty);
28
+ (0, globals_1.expect)(ompl['graph']['children']['child']['children']['child-2']).toHaveProperty(expectedProperty);
29
+ });
30
+ }
31
+ else {
32
+ (0, globals_1.it)('check ompls have outputs field', async () => {
33
+ globals_1.expect.assertions(1);
34
+ const ompl = await (0, yaml_1.openYamlFileAsObject)(path + '/' + file);
35
+ const expectedProperty = 'outputs';
36
+ (0, globals_1.expect)(ompl['graph']['children']['child']).toHaveProperty(expectedProperty);
37
+ });
38
+ }
39
+ if (file.includes('sci-m')) {
40
+ (0, globals_1.it)('checks `sci-m` ompl to have outputs property.', async () => {
41
+ const ompl = await (0, yaml_1.openYamlFileAsObject)(`${path}/${file}`);
42
+ const outputData = JSON.stringify(ompl['graph']['children']['child']['outputs']);
43
+ const response = outputData.includes('m');
44
+ (0, globals_1.expect)(response).toBeTruthy();
45
+ });
46
+ }
47
+ if (file.includes('complex-pipeline')) {
48
+ (0, globals_1.it)('checks `complex-pipeline` to have `energy-memory`, `energy-cpu`, etc. properties in output.', async () => {
49
+ const ompl = await (0, yaml_1.openYamlFileAsObject)(`${path}/${file}`);
50
+ const res = JSON.stringify(ompl['graph']['children']['child']['outputs'][0]);
51
+ (0, globals_1.expect)(res.includes('energy-memory') &&
52
+ res.includes('energy-cpu') &&
53
+ res.includes('energy-network') &&
54
+ res.includes('energy') &&
55
+ res.includes('operational-carbon')).toBeTruthy();
56
+ });
57
+ }
58
+ });
59
+ });
60
+ });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vaW50ZWdyYXRpb24vb21wbC9pbmRleC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUJBQXlCO0FBQ3pCLDJDQUErQztBQUUvQyw2Q0FBd0Q7QUFDeEQseUNBQW1DO0FBRW5DLGNBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFdkIsSUFBQSxvQkFBUSxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDdkIsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7SUFDOUIsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQzs7T0FFRztJQUNILElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdEIsTUFBTSx3RkFBd0YsQ0FBQztLQUNoRztJQUVELElBQUEsb0JBQVEsRUFBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1FBQzdCOztXQUVHO1FBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzVCLElBQUEsWUFBRSxFQUFDLHVDQUF1QyxFQUFFLEtBQUssSUFBSSxFQUFFO29CQUNyRCxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckIsTUFBTSxJQUFJLEdBQVEsTUFBTSxJQUFBLDJCQUFvQixFQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7b0JBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO29CQUVuQyxJQUFBLGdCQUFNLEVBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUMxRCxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUNuQyxJQUFBLGdCQUFNLEVBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUMxRCxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUEsWUFBRSxFQUFDLGdDQUFnQyxFQUFFLEtBQUssSUFBSSxFQUFFO29CQUM5QyxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLDJCQUFvQixFQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7b0JBQzNELE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO29CQUVuQyxJQUFBLGdCQUFNLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUN2RCxnQkFBZ0IsQ0FDakIsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMxQixJQUFBLFlBQUUsRUFBQywrQ0FBK0MsRUFBRSxLQUFLLElBQUksRUFBRTtvQkFDN0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLDJCQUFvQixFQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7b0JBRTNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDOUMsQ0FBQztvQkFDRixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUUxQyxJQUFBLGdCQUFNLEVBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQkFDckMsSUFBQSxZQUFFLEVBQUMsNkZBQTZGLEVBQUUsS0FBSyxJQUFJLEVBQUU7b0JBQzNHLE1BQU0sSUFBSSxHQUFRLE1BQU0sSUFBQSwyQkFBb0IsRUFBQyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNoRSxNQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pELENBQUM7b0JBRUYsSUFBQSxnQkFBTSxFQUNKLEdBQUcsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO3dCQUMzQixHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQzt3QkFDMUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDOUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7d0JBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FDckMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDakIsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7ZXhwZWN0LCBqZXN0LCBpdH0gZnJvbSAnQGplc3QvZ2xvYmFscyc7XG5cbmltcG9ydCB7b3BlbllhbWxGaWxlQXNPYmplY3R9IGZyb20gJy4uLy4uLy4uL3V0aWwveWFtbCc7XG5pbXBvcnQge2Rlc2NyaWJlfSBmcm9tICdub2RlOnRlc3QnO1xuXG5qZXN0LnNldFRpbWVvdXQoMzAwMDApO1xuXG5kZXNjcmliZSgnb21wbHM6ICcsICgpID0+IHtcbiAgY29uc3QgcGF0aCA9ICdleGFtcGxlcy9vbXBscyc7XG4gIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMocGF0aCk7XG4gIC8qXG4gICAqIElmIHRoZXJlIGFyZSBubyBmaWxlcyBpbiBleGFtcGxlcy9vbXBscywgcHJvbXB0IHVzZXIgdG8gcnVuIG9tcGwtdGVzdCBiYXNoIHNjcmlwdFxuICAgKi9cbiAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93ICdubyBvbXBsIGZpbGVzIGF2YWlsYWJsZS4gUGxlYXNlIHJ1biBzY3JpcHRzL2ltcGFjdC10ZXN0LnNoIGJlZm9yZSBydW5uaW5nIHRoZXNlIHRlc3RzLic7XG4gIH1cblxuICBkZXNjcmliZSgnY29tcHV0aW5nKCk6ICcsICgpID0+IHtcbiAgICAvKlxuICAgICAqIEZvciBlYWNoIGZpbGUgaW4gZXhhbXBsZXMvb21wbHMsIGxvYWQgaXQgYW5kIHJ1biB0ZXN0XG4gICAgICovXG4gICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgIGlmIChmaWxlLmluY2x1ZGVzKCduZXN0aW5nJykpIHtcbiAgICAgICAgaXQoJ2NoZWNrIG5lc3RlZCBvbXBscyBoYXZlIG91dHB1dHMgZmllbGQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0LmFzc2VydGlvbnMoMik7XG4gICAgICAgICAgY29uc3Qgb21wbDogYW55ID0gYXdhaXQgb3BlbllhbWxGaWxlQXNPYmplY3QocGF0aCArICcvJyArIGZpbGUpO1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkUHJvcGVydHkgPSAnb3V0cHV0cyc7XG5cbiAgICAgICAgICBleHBlY3QoXG4gICAgICAgICAgICBvbXBsWydncmFwaCddWydjaGlsZHJlbiddWydjaGlsZCddWydjaGlsZHJlbiddWydjaGlsZC0xJ11cbiAgICAgICAgICApLnRvSGF2ZVByb3BlcnR5KGV4cGVjdGVkUHJvcGVydHkpO1xuICAgICAgICAgIGV4cGVjdChcbiAgICAgICAgICAgIG9tcGxbJ2dyYXBoJ11bJ2NoaWxkcmVuJ11bJ2NoaWxkJ11bJ2NoaWxkcmVuJ11bJ2NoaWxkLTInXVxuICAgICAgICAgICkudG9IYXZlUHJvcGVydHkoZXhwZWN0ZWRQcm9wZXJ0eSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXQoJ2NoZWNrIG9tcGxzIGhhdmUgb3V0cHV0cyBmaWVsZCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBleHBlY3QuYXNzZXJ0aW9ucygxKTtcbiAgICAgICAgICBjb25zdCBvbXBsID0gYXdhaXQgb3BlbllhbWxGaWxlQXNPYmplY3QocGF0aCArICcvJyArIGZpbGUpO1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkUHJvcGVydHkgPSAnb3V0cHV0cyc7XG5cbiAgICAgICAgICBleHBlY3Qob21wbFsnZ3JhcGgnXVsnY2hpbGRyZW4nXVsnY2hpbGQnXSkudG9IYXZlUHJvcGVydHkoXG4gICAgICAgICAgICBleHBlY3RlZFByb3BlcnR5XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWxlLmluY2x1ZGVzKCdzY2ktbScpKSB7XG4gICAgICAgIGl0KCdjaGVja3MgYHNjaS1tYCBvbXBsIHRvIGhhdmUgb3V0cHV0cyBwcm9wZXJ0eS4nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb21wbCA9IGF3YWl0IG9wZW5ZYW1sRmlsZUFzT2JqZWN0KGAke3BhdGh9LyR7ZmlsZX1gKTtcblxuICAgICAgICAgIGNvbnN0IG91dHB1dERhdGEgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIG9tcGxbJ2dyYXBoJ11bJ2NoaWxkcmVuJ11bJ2NoaWxkJ11bJ291dHB1dHMnXVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBvdXRwdXREYXRhLmluY2x1ZGVzKCdtJyk7XG5cbiAgICAgICAgICBleHBlY3QocmVzcG9uc2UpLnRvQmVUcnV0aHkoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWxlLmluY2x1ZGVzKCdjb21wbGV4LXBpcGVsaW5lJykpIHtcbiAgICAgICAgaXQoJ2NoZWNrcyBgY29tcGxleC1waXBlbGluZWAgdG8gaGF2ZSBgZW5lcmd5LW1lbW9yeWAsIGBlbmVyZ3ktY3B1YCwgZXRjLiBwcm9wZXJ0aWVzIGluIG91dHB1dC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb21wbDogYW55ID0gYXdhaXQgb3BlbllhbWxGaWxlQXNPYmplY3QoYCR7cGF0aH0vJHtmaWxlfWApO1xuICAgICAgICAgIGNvbnN0IHJlczogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBvbXBsWydncmFwaCddWydjaGlsZHJlbiddWydjaGlsZCddWydvdXRwdXRzJ11bMF1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZXhwZWN0KFxuICAgICAgICAgICAgcmVzLmluY2x1ZGVzKCdlbmVyZ3ktbWVtb3J5JykgJiZcbiAgICAgICAgICAgICAgcmVzLmluY2x1ZGVzKCdlbmVyZ3ktY3B1JykgJiZcbiAgICAgICAgICAgICAgcmVzLmluY2x1ZGVzKCdlbmVyZ3ktbmV0d29yaycpICYmXG4gICAgICAgICAgICAgIHJlcy5pbmNsdWRlcygnZW5lcmd5JykgJiZcbiAgICAgICAgICAgICAgcmVzLmluY2x1ZGVzKCdvcGVyYXRpb25hbC1jYXJib24nKVxuICAgICAgICAgICkudG9CZVRydXRoeSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const azure_1 = require("../../../../__mocks__/azure");
4
+ jest.mock('@azure/identity', () => ({
5
+ __esModule: true,
6
+ DefaultAzureCredential: azure_1.MockAzureCredentials,
7
+ }));
8
+ jest.mock('@azure/arm-monitor', () => ({
9
+ __esModule: true,
10
+ MonitorClient: azure_1.MockMonitorClient,
11
+ }));
12
+ jest.mock('@azure/arm-compute', () => ({
13
+ __esModule: true,
14
+ ComputeManagementClient: azure_1.MockComputeManagementClient,
15
+ }));
16
+ const azure_importer_1 = require("../../../../lib/azure-importer");
17
+ jest.setTimeout(30000);
18
+ describe('lib/azure-importer: ', () => {
19
+ describe('init AzureImporterModel: ', () => {
20
+ it('initalizes object with properties.', async () => {
21
+ const azureModel = await new azure_importer_1.AzureImporterModel();
22
+ expect(azureModel).toHaveProperty('authenticate');
23
+ expect(azureModel).toHaveProperty('configure');
24
+ expect(azureModel).toHaveProperty('execute');
25
+ });
26
+ });
27
+ describe('configure(): ', () => {
28
+ it('configures model instance with given params.', async () => {
29
+ const name = 'mock-name';
30
+ const params = {};
31
+ const model = await new azure_importer_1.AzureImporterModel().configure(name, params);
32
+ expect(model).toBeInstanceOf(azure_importer_1.AzureImporterModel);
33
+ });
34
+ });
35
+ describe('authenticate(): ', () => {
36
+ it('authenticate is undefined', async () => {
37
+ const azureModel = await new azure_importer_1.AzureImporterModel().configure('name', {});
38
+ expect(azureModel).toBeInstanceOf(azure_importer_1.AzureImporterModel);
39
+ await expect(azureModel.authenticate({})).toBe(undefined);
40
+ });
41
+ });
42
+ describe('configure(): ', () => {
43
+ it('configure returns name and empty config', async () => {
44
+ const azureModel = new azure_importer_1.AzureImporterModel();
45
+ await expect(azureModel.configure('azure', {})).resolves.toBeInstanceOf(azure_importer_1.AzureImporterModel);
46
+ expect(azureModel.name).toBe('azure');
47
+ expect(azureModel.staticParams).toStrictEqual({});
48
+ });
49
+ });
50
+ describe('modelIdentifier(): ', () => {
51
+ it('modelIdendifier() returns expected name', async () => {
52
+ const azureModel = new azure_importer_1.AzureImporterModel();
53
+ expect(azureModel.modelIdentifier()).toBe('azure');
54
+ });
55
+ });
56
+ describe('execute(): ', () => {
57
+ it('throws error for missing input field.', async () => {
58
+ const azureModel = new azure_importer_1.AzureImporterModel();
59
+ expect.assertions(2);
60
+ expect(await azureModel.configure('azure', {})).toBeInstanceOf(azure_importer_1.AzureImporterModel);
61
+ try {
62
+ await azureModel.execute([
63
+ {
64
+ timestamp: '2023-11-02T10:35:31.820Z',
65
+ duration: 3600,
66
+ 'azure-observation-aggregation': 'average',
67
+ 'azure-subscription-id': '9de7e19f-8a18-4e73-9451-45fc74e7d0d3',
68
+ 'azure-resource-group': 'vm1_group',
69
+ 'azure-vm-name': 'vm1',
70
+ },
71
+ ]);
72
+ }
73
+ catch (error) {
74
+ if (error instanceof Error) {
75
+ expect(error).toBeInstanceOf(Error);
76
+ }
77
+ }
78
+ });
79
+ it('throws error if time is provided in seconds.', async () => {
80
+ const azureModel = new azure_importer_1.AzureImporterModel();
81
+ expect.assertions(2);
82
+ try {
83
+ await azureModel.execute([
84
+ {
85
+ timestamp: '2023-11-02T10:35:31.820Z',
86
+ duration: 3600,
87
+ 'azure-observation-window': '5 sec',
88
+ 'azure-observation-aggregation': 'average',
89
+ 'azure-subscription-id': '9de7e19f-8a18-4e73-9451-45fc74e7d0d3',
90
+ 'azure-resource-group': 'vm1_group',
91
+ 'azure-vm-name': 'vm1',
92
+ },
93
+ ]);
94
+ }
95
+ catch (error) {
96
+ if (error instanceof Error) {
97
+ expect(error).toBeInstanceOf(Error);
98
+ expect(error.message).toEqual('The minimum unit of time for azure importer is minutes');
99
+ }
100
+ }
101
+ });
102
+ it('throws error for time unit of seconds ', async () => {
103
+ const azureModel = new azure_importer_1.AzureImporterModel();
104
+ await expect(azureModel.execute([
105
+ {
106
+ timestamp: '2023-11-02T10:35:31.820Z',
107
+ duration: 3600,
108
+ 'azure-observation-window': '5 sec',
109
+ 'azure-observation-aggregation': 'average',
110
+ 'azure-subscription-id': '9de7e19f-8a18-4e73-9451-45fc74e7d0d3',
111
+ 'azure-resource-group': 'vm1_group',
112
+ 'azure-vm-name': 'vm1',
113
+ },
114
+ ])).rejects.toStrictEqual(Error('The minimum unit of time for azure importer is minutes'));
115
+ });
116
+ it('returns valid data.', async () => {
117
+ const azureModel = new azure_importer_1.AzureImporterModel();
118
+ await expect(azureModel.execute([
119
+ {
120
+ timestamp: '2023-11-02T10:35:00.000Z',
121
+ duration: 300,
122
+ 'azure-observation-window': '5 mins',
123
+ 'azure-observation-aggregation': 'average',
124
+ 'azure-subscription-id': '9de7e19f-8a18-4e73-9451-45fc74e7d0d3',
125
+ 'azure-resource-group': 'vm1_group',
126
+ 'azure-vm-name': 'vm1',
127
+ 'grid-carbon-intensity': 951,
128
+ },
129
+ ])).resolves.toEqual([
130
+ {
131
+ timestamp: '2023-11-02T10:35:00.000Z',
132
+ duration: 300,
133
+ 'grid-carbon-intensity': 951,
134
+ 'azure-observation-aggregation': 'average',
135
+ 'azure-observation-window': '5 mins',
136
+ 'azure-resource-group': 'vm1_group',
137
+ 'azure-subscription-id': '9de7e19f-8a18-4e73-9451-45fc74e7d0d3',
138
+ 'azure-vm-name': 'vm1',
139
+ 'cpu-util': '3.14',
140
+ 'mem-availableGB': 0.5,
141
+ 'mem-usedGB': 0.5,
142
+ 'total-memoryGB': 1,
143
+ 'mem-util': 50,
144
+ location: 'uksouth',
145
+ 'cloud-instance-type': 'Standard_B1s',
146
+ 'cloud-vendor': 'azure',
147
+ },
148
+ ]);
149
+ });
150
+ });
151
+ });
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC9saWIvYXp1cmUtaW1wb3J0ZXIvaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVEQUlxQztBQUVyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEMsVUFBVSxFQUFFLElBQUk7SUFDaEIsc0JBQXNCLEVBQUUsNEJBQW9CO0NBQzdDLENBQUMsQ0FBQyxDQUFDO0FBRUosSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGFBQWEsRUFBRSx5QkFBaUI7Q0FDakMsQ0FBQyxDQUFDLENBQUM7QUFFSixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckMsVUFBVSxFQUFFLElBQUk7SUFDaEIsdUJBQXVCLEVBQUUsbUNBQTJCO0NBQ3JELENBQUMsQ0FBQyxDQUFDO0FBRUosbUVBQWtFO0FBRWxFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFdkIsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxRQUFRLENBQUMsMkJBQTJCLEVBQUUsR0FBRyxFQUFFO1FBQ3pDLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNsRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksbUNBQWtCLEVBQUUsQ0FBQztZQUNsRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxD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RztvQkFDakIsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDbkIsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLHFCQUFxQixFQUFFLGNBQWM7b0JBQ3JDLGNBQWMsRUFBRSxPQUFPO2lCQUN4QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1vY2tBenVyZUNyZWRlbnRpYWxzLFxuICBNb2NrTW9uaXRvckNsaWVudCxcbiAgTW9ja0NvbXB1dGVNYW5hZ2VtZW50Q2xpZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi9fX21vY2tzX18vYXp1cmUnO1xuXG5qZXN0Lm1vY2soJ0BhenVyZS9pZGVudGl0eScsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIERlZmF1bHRBenVyZUNyZWRlbnRpYWw6IE1vY2tBenVyZUNyZWRlbnRpYWxzLFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BhenVyZS9hcm0tbW9uaXRvcicsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIE1vbml0b3JDbGllbnQ6IE1vY2tNb25pdG9yQ2xpZW50LFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BhenVyZS9hcm0tY29tcHV0ZScsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIENvbXB1dGVNYW5hZ2VtZW50Q2xpZW50OiBNb2NrQ29tcHV0ZU1hbmFnZW1lbnRDbGllbnQsXG59KSk7XG5cbmltcG9ydCB7QXp1cmVJbXBvcnRlck1vZGVsfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvYXp1cmUtaW1wb3J0ZXInO1xuXG5qZXN0LnNldFRpbWVvdXQoMzAwMDApO1xuXG5kZXNjcmliZSgnbGliL2F6dXJlLWltcG9ydGVyOiAnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdpbml0IEF6dXJlSW1wb3J0ZXJNb2RlbDogJywgKCkgPT4ge1xuICAgIGl0KCdpbml0YWxpemVzIG9iamVjdCB3aXRoIHByb3BlcnRpZXMuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYXp1cmVNb2RlbCA9IGF3YWl0IG5ldyBBenVyZUltcG9ydGVyTW9kZWwoKTtcbiAgICAgIGV4cGVjdChhenVyZU1vZGVsKS50b0hhdmVQcm9wZXJ0eSgnYXV0aGVudGljYXRlJyk7XG4gICAgICBleHBlY3QoYXp1cmVNb2RlbCkudG9IYXZlUHJvcGVydHkoJ2NvbmZpZ3VyZScpO1xuICAgICAgZXhwZWN0KGF6dXJlTW9kZWwpLnRvSGF2ZVByb3BlcnR5KCdleGVjdXRlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb25maWd1cmUoKTogJywgKCkgPT4ge1xuICAgIGl0KCdjb25maWd1cmVzIG1vZGVsIGluc3RhbmNlIHdpdGggZ2l2ZW4gcGFyYW1zLicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSAnbW9jay1uYW1lJztcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgICAgY29uc3QgbW9kZWwgPSBhd2FpdCBuZXcgQXp1cmVJbXBvcnRlck1vZGVsKCkuY29uZmlndXJlKG5hbWUsIHBhcmFtcyk7XG5cbiAgICAgIGV4cGVjdChtb2RlbCkudG9CZUluc3RhbmNlT2YoQXp1cmVJbXBvcnRlck1vZGVsKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2F1dGhlbnRpY2F0ZSgpOiAnLCAoKSA9PiB7XG4gICAgaXQoJ2F1dGhlbnRpY2F0ZSBpcyB1bmRlZmluZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhenVyZU1vZGVsID0gYXdhaXQgbmV3IEF6dXJlSW1wb3J0ZXJNb2RlbCgpLmNvbmZpZ3VyZSgnbmFtZScsIHt9KTtcbiAgICAgIGV4cGVjdChhenVyZU1vZGVsKS50b0JlSW5zdGFuY2VPZihBenVyZUltcG9ydGVyTW9kZWwpO1xuICAgICAgYXdhaXQgZXhwZWN0KGF6dXJlTW9kZWwuYXV0aGVudGljYXRlKHt9KSkudG9CZSh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29uZmlndXJlKCk6ICcsICgpID0+IHtcbiAgICBpdCgnY29uZmlndXJlIHJldHVybnMgbmFtZSBhbmQgZW1wdHkgY29uZmlnJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYXp1cmVNb2RlbCA9IG5ldyBBenVyZUltcG9ydGVyTW9kZWwoKTtcbiAgICAgIGF3YWl0IGV4cGVjdChhenVyZU1vZGVsLmNvbmZpZ3VyZSgnYXp1cmUnLCB7fSkpLnJlc29sdmVzLnRvQmVJbnN0YW5jZU9mKFxuICAgICAgICBBenVyZUltcG9ydGVyTW9kZWxcbiAgICAgICk7XG4gICAgICBleHBlY3QoYXp1cmVNb2RlbC5uYW1lKS50b0JlKCdhenVyZScpO1xuICAgICAgZXhwZWN0KGF6dXJlTW9kZWwuc3RhdGljUGFyYW1zKS50b1N0cmljdEVxdWFsKHt9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ21vZGVsSWRlbnRpZmllcigpOiAnLCAoKSA9PiB7XG4gICAgaXQoJ21vZGVsSWRlbmRpZmllcigpIHJldHVybnMgZXhwZWN0ZWQgbmFtZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGF6dXJlTW9kZWwgPSBuZXcgQXp1cmVJbXBvcnRlck1vZGVsKCk7XG4gICAgICBleHBlY3QoYXp1cmVNb2RlbC5tb2RlbElkZW50aWZpZXIoKSkudG9CZSgnYXp1cmUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2V4ZWN1dGUoKTogJywgKCkgPT4ge1xuICAgIGl0KCd0aHJvd3MgZXJyb3IgZm9yIG1pc3NpbmcgaW5wdXQgZmllbGQuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYXp1cmVNb2RlbCA9IG5ldyBBenVyZUltcG9ydGVyTW9kZWwoKTtcbiAgICAgIGV4cGVjdC5hc3NlcnRpb25zKDIpO1xuICAgICAgZXhwZWN0KGF3YWl0IGF6dXJlTW9kZWwuY29uZmlndXJlKCdhenVyZScsIHt9KSkudG9CZUluc3RhbmNlT2YoXG4gICAgICAgIEF6dXJlSW1wb3J0ZXJNb2RlbFxuICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGF6dXJlTW9kZWwuZXhlY3V0ZShbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0xMS0wMlQxMDozNTozMS44MjBaJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAgICAgJ2F6dXJlLW9ic2VydmF0aW9uLWFnZ3JlZ2F0aW9uJzogJ2F2ZXJhZ2UnLFxuICAgICAgICAgICAgJ2F6dXJlLXN1YnNjcmlwdGlvbi1pZCc6ICc5ZGU3ZTE5Zi04YTE4LTRlNzMtOTQ1MS00NWZjNzRlN2QwZDMnLFxuICAgICAgICAgICAgJ2F6dXJlLXJlc291cmNlLWdyb3VwJzogJ3ZtMV9ncm91cCcsXG4gICAgICAgICAgICAnYXp1cmUtdm0tbmFtZSc6ICd2bTEnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBlcnJvciBpZiB0aW1lIGlzIHByb3ZpZGVkIGluIHNlY29uZHMuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYXp1cmVNb2RlbCA9IG5ldyBBenVyZUltcG9ydGVyTW9kZWwoKTtcblxuICAgICAgZXhwZWN0LmFzc2VydGlvbnMoMik7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGF6dXJlTW9kZWwuZXhlY3V0ZShbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0xMS0wMlQxMDozNTozMS44MjBaJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAgICAgJ2F6dXJlLW9ic2VydmF0aW9uLXdpbmRvdyc6ICc1IHNlYycsXG4gICAgICAgICAgICAnYXp1cmUtb2JzZXJ2YXRpb24tYWdncmVnYXRpb24nOiAnYXZlcmFnZScsXG4gICAgICAgICAgICAnYXp1cmUtc3Vic2NyaXB0aW9uLWlkJzogJzlkZTdlMTlmLThhMTgtNGU3My05NDUxLTQ1ZmM3NGU3ZDBkMycsXG4gICAgICAgICAgICAnYXp1cmUtcmVzb3VyY2UtZ3JvdXAnOiAndm0xX2dyb3VwJyxcbiAgICAgICAgICAgICdhenVyZS12bS1uYW1lJzogJ3ZtMScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGV4cGVjdChlcnJvcikudG9CZUluc3RhbmNlT2YoRXJyb3IpO1xuICAgICAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0VxdWFsKFxuICAgICAgICAgICAgJ1RoZSBtaW5pbXVtIHVuaXQgb2YgdGltZSBmb3IgYXp1cmUgaW1wb3J0ZXIgaXMgbWludXRlcydcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIGVycm9yIGZvciB0aW1lIHVuaXQgb2Ygc2Vjb25kcyAnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhenVyZU1vZGVsID0gbmV3IEF6dXJlSW1wb3J0ZXJNb2RlbCgpO1xuICAgICAgYXdhaXQgZXhwZWN0KFxuICAgICAgICBhenVyZU1vZGVsLmV4ZWN1dGUoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMTEtMDJUMTA6MzU6MzEuODIwWicsXG4gICAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAgICdhenVyZS1vYnNlcnZhdGlvbi13aW5kb3cnOiAnNSBzZWMnLFxuICAgICAgICAgICAgJ2F6dXJlLW9ic2VydmF0aW9uLWFnZ3JlZ2F0aW9uJzogJ2F2ZXJhZ2UnLFxuICAgICAgICAgICAgJ2F6dXJlLXN1YnNjcmlwdGlvbi1pZCc6ICc5ZGU3ZTE5Zi04YTE4LTRlNzMtOTQ1MS00NWZjNzRlN2QwZDMnLFxuICAgICAgICAgICAgJ2F6dXJlLXJlc291cmNlLWdyb3VwJzogJ3ZtMV9ncm91cCcsXG4gICAgICAgICAgICAnYXp1cmUtdm0tbmFtZSc6ICd2bTEnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICApLnJlamVjdHMudG9TdHJpY3RFcXVhbChcbiAgICAgICAgRXJyb3IoJ1RoZSBtaW5pbXVtIHVuaXQgb2YgdGltZSBmb3IgYXp1cmUgaW1wb3J0ZXIgaXMgbWludXRlcycpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgdmFsaWQgZGF0YS4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhenVyZU1vZGVsID0gbmV3IEF6dXJlSW1wb3J0ZXJNb2RlbCgpO1xuICAgICAgYXdhaXQgZXhwZWN0KFxuICAgICAgICBhenVyZU1vZGVsLmV4ZWN1dGUoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMTEtMDJUMTA6MzU6MDAuMDAwWicsXG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwLFxuICAgICAgICAgICAgJ2F6dXJlLW9ic2VydmF0aW9uLXdpbmRvdyc6ICc1IG1pbnMnLFxuICAgICAgICAgICAgJ2F6dXJlLW9ic2VydmF0aW9uLWFnZ3JlZ2F0aW9uJzogJ2F2ZXJhZ2UnLFxuICAgICAgICAgICAgJ2F6dXJlLXN1YnNjcmlwdGlvbi1pZCc6ICc5ZGU3ZTE5Zi04YTE4LTRlNzMtOTQ1MS00NWZjNzRlN2QwZDMnLFxuICAgICAgICAgICAgJ2F6dXJlLXJlc291cmNlLWdyb3VwJzogJ3ZtMV9ncm91cCcsXG4gICAgICAgICAgICAnYXp1cmUtdm0tbmFtZSc6ICd2bTEnLFxuICAgICAgICAgICAgJ2dyaWQtY2FyYm9uLWludGVuc2l0eSc6IDk1MSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKS5yZXNvbHZlcy50b0VxdWFsKFtcbiAgICAgICAge1xuICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMTEtMDJUMTA6MzU6MDAuMDAwWicsXG4gICAgICAgICAgZHVyYXRpb246IDMwMCxcbiAgICAgICAgICAnZ3JpZC1jYXJib24taW50ZW5zaXR5JzogOTUxLFxuICAgICAgICAgICdhenVyZS1vYnNlcnZhdGlvbi1hZ2dyZWdhdGlvbic6ICdhdmVyYWdlJyxcbiAgICAgICAgICAnYXp1cmUtb2JzZXJ2YXRpb24td2luZG93JzogJzUgbWlucycsXG4gICAgICAgICAgJ2F6dXJlLXJlc291cmNlLWdyb3VwJzogJ3ZtMV9ncm91cCcsXG4gICAgICAgICAgJ2F6dXJlLXN1YnNjcmlwdGlvbi1pZCc6ICc5ZGU3ZTE5Zi04YTE4LTRlNzMtOTQ1MS00NWZjNzRlN2QwZDMnLFxuICAgICAgICAgICdhenVyZS12bS1uYW1lJzogJ3ZtMScsXG4gICAgICAgICAgJ2NwdS11dGlsJzogJzMuMTQnLFxuICAgICAgICAgICdtZW0tYXZhaWxhYmxlR0InOiAwLjUsXG4gICAgICAgICAgJ21lbS11c2VkR0InOiAwLjUsXG4gICAgICAgICAgJ3RvdGFsLW1lbW9yeUdCJzogMSxcbiAgICAgICAgICAnbWVtLXV0aWwnOiA1MCxcbiAgICAgICAgICBsb2NhdGlvbjogJ3Vrc291dGgnLFxuICAgICAgICAgICdjbG91ZC1pbnN0YW5jZS10eXBlJzogJ1N0YW5kYXJkX0IxcycsXG4gICAgICAgICAgJ2Nsb3VkLXZlbmRvcic6ICdhenVyZScsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};