@grnsft/if 0.0.5 → 0.1.0

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 (146) hide show
  1. package/.examples/ompls/azure.yml +205 -0
  2. package/.github/workflows/nodejs-ci.yml +0 -8
  3. package/README.md +48 -9
  4. package/build/config/config.d.ts +0 -23
  5. package/build/config/config.js +1 -24
  6. package/build/index.js +3 -4
  7. package/build/lib/models-universe.js +95 -0
  8. package/build/lib/observatory.js +31 -0
  9. package/build/lib/supercomputer.js +109 -0
  10. package/examples/impls/test/azure.yml +8 -8
  11. package/examples/impls/test/ccf.yml +5 -3
  12. package/examples/impls/test/if-demo.yml +19 -9
  13. package/examples/impls/test/metadata.yml +3 -2
  14. package/examples/impls/test/nesting.yml +10 -13
  15. package/examples/impls/test/sci-e.yml +1 -1
  16. package/examples/impls/test/sci-m.yml +2 -2
  17. package/examples/impls/test/sci-o.yml +2 -4
  18. package/examples/impls/test/sci.yml +1 -2
  19. package/examples/impls/test/shell.yml +2 -1
  20. package/examples/impls/{tdp-finder-test.yml → test/tdp-finder.yml} +8 -8
  21. package/examples/ompls/ccf.yml +3 -1
  22. package/examples/ompls/if-demo.yml +46 -22
  23. package/package.json +12 -5
  24. package/tsconfig.build.json +7 -0
  25. package/tsconfig.build.tsbuildinfo +1 -0
  26. package/build/__mocks__/azure/index.d.ts +0 -11
  27. package/build/__mocks__/azure/index.js +0 -132
  28. package/build/__mocks__/boavizta/countries.json +0 -138
  29. package/build/__mocks__/boavizta/instance_types.json +0 -625
  30. package/build/__mocks__/boavizta/providers.json +0 -1
  31. package/build/__mocks__/fs/index.d.ts +0 -3
  32. package/build/__mocks__/fs/index.js +0 -56
  33. package/build/__mocks__/model-universe/index.d.ts +0 -31
  34. package/build/__mocks__/model-universe/index.js +0 -64
  35. package/build/__mocks__/watt-time/data.json +0 -119
  36. package/build/__tests__/integration/ompl/index.test.d.ts +0 -1
  37. package/build/__tests__/integration/ompl/index.test.js +0 -61
  38. package/build/__tests__/unit/lib/azure-importer/index.test.d.ts +0 -1
  39. package/build/__tests__/unit/lib/azure-importer/index.test.js +0 -152
  40. package/build/__tests__/unit/lib/boavizta/index.test.d.ts +0 -1
  41. package/build/__tests__/unit/lib/boavizta/index.test.js +0 -579
  42. package/build/__tests__/unit/lib/case-studies/aveva.test.d.ts +0 -1
  43. package/build/__tests__/unit/lib/case-studies/aveva.test.js +0 -36
  44. package/build/__tests__/unit/lib/case-studies/emem.test.d.ts +0 -1
  45. package/build/__tests__/unit/lib/case-studies/emem.test.js +0 -108
  46. package/build/__tests__/unit/lib/case-studies/eshoppen.test.d.ts +0 -1
  47. package/build/__tests__/unit/lib/case-studies/eshoppen.test.js +0 -53
  48. package/build/__tests__/unit/lib/case-studies/sci-accenture.test.d.ts +0 -1
  49. package/build/__tests__/unit/lib/case-studies/sci-accenture.test.js +0 -23
  50. package/build/__tests__/unit/lib/ccf/index.test.d.ts +0 -1
  51. package/build/__tests__/unit/lib/ccf/index.test.js +0 -223
  52. package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.d.ts +0 -1
  53. package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.js +0 -73
  54. package/build/__tests__/unit/lib/sci/index.test.d.ts +0 -1
  55. package/build/__tests__/unit/lib/sci/index.test.js +0 -106
  56. package/build/__tests__/unit/lib/sci-e/index.test.d.ts +0 -1
  57. package/build/__tests__/unit/lib/sci-e/index.test.js +0 -30
  58. package/build/__tests__/unit/lib/sci-m/index.test.d.ts +0 -1
  59. package/build/__tests__/unit/lib/sci-m/index.test.js +0 -58
  60. package/build/__tests__/unit/lib/sci-o/index.test.d.ts +0 -1
  61. package/build/__tests__/unit/lib/sci-o/index.test.js +0 -42
  62. package/build/__tests__/unit/lib/shell-imp/index.test.d.ts +0 -1
  63. package/build/__tests__/unit/lib/shell-imp/index.test.js +0 -21
  64. package/build/__tests__/unit/lib/tdp-finder/index.test.d.ts +0 -1
  65. package/build/__tests__/unit/lib/tdp-finder/index.test.js +0 -62
  66. package/build/__tests__/unit/lib/teads-aws/index.test.d.ts +0 -1
  67. package/build/__tests__/unit/lib/teads-aws/index.test.js +0 -170
  68. package/build/__tests__/unit/lib/teads-curve/index.test.d.ts +0 -1
  69. package/build/__tests__/unit/lib/teads-curve/index.test.js +0 -146
  70. package/build/__tests__/unit/lib/watt-time/index.test.d.ts +0 -1
  71. package/build/__tests__/unit/lib/watt-time/index.test.js +0 -106
  72. package/build/__tests__/unit/util/args.test.d.ts +0 -1
  73. package/build/__tests__/unit/util/args.test.js +0 -92
  74. package/build/__tests__/unit/util/models-universe.test.d.ts +0 -1
  75. package/build/__tests__/unit/util/models-universe.test.js +0 -193
  76. package/build/__tests__/unit/util/observatory.test.d.ts +0 -1
  77. package/build/__tests__/unit/util/observatory.test.js +0 -99
  78. package/build/__tests__/unit/util/supercomputer.test.d.ts +0 -1
  79. package/build/__tests__/unit/util/supercomputer.test.js +0 -231
  80. package/build/__tests__/unit/util/yaml.test.d.ts +0 -1
  81. package/build/__tests__/unit/util/yaml.test.js +0 -59
  82. package/build/lib/azure-importer/index.d.ts +0 -55
  83. package/build/lib/azure-importer/index.js +0 -314
  84. package/build/lib/boavizta/index.d.ts +0 -53
  85. package/build/lib/boavizta/index.js +0 -254
  86. package/build/lib/case-studies/aveva-model.d.ts +0 -29
  87. package/build/lib/case-studies/aveva-model.js +0 -53
  88. package/build/lib/case-studies/emem-model.d.ts +0 -42
  89. package/build/lib/case-studies/emem-model.js +0 -93
  90. package/build/lib/case-studies/eshoppen-model.d.ts +0 -24
  91. package/build/lib/case-studies/eshoppen-model.js +0 -123
  92. package/build/lib/case-studies/index.d.ts +0 -4
  93. package/build/lib/case-studies/index.js +0 -21
  94. package/build/lib/case-studies/sci-accenture-model.d.ts +0 -10
  95. package/build/lib/case-studies/sci-accenture-model.js +0 -37
  96. package/build/lib/ccf/aws-embodied.json +0 -5591
  97. package/build/lib/ccf/aws-instances.json +0 -21116
  98. package/build/lib/ccf/aws-use.json +0 -79
  99. package/build/lib/ccf/azure-embodied.json +0 -6547
  100. package/build/lib/ccf/azure-instances.json +0 -8332
  101. package/build/lib/ccf/azure-use.json +0 -58
  102. package/build/lib/ccf/gcp-embodied.json +0 -3049
  103. package/build/lib/ccf/gcp-instances.json +0 -3880
  104. package/build/lib/ccf/gcp-use.json +0 -58
  105. package/build/lib/ccf/index.d.ts +0 -63
  106. package/build/lib/ccf/index.js +0 -338
  107. package/build/lib/cloud-instance-metadata/aws-instances.json +0 -1
  108. package/build/lib/cloud-instance-metadata/azure-instances.json +0 -1
  109. package/build/lib/cloud-instance-metadata/index.d.ts +0 -15
  110. package/build/lib/cloud-instance-metadata/index.js +0 -104
  111. package/build/lib/index.d.ts +0 -14
  112. package/build/lib/index.js +0 -32
  113. package/build/lib/interfaces/ccf.d.ts +0 -19
  114. package/build/lib/interfaces/ccf.js +0 -3
  115. package/build/lib/interfaces/index.d.ts +0 -7
  116. package/build/lib/interfaces/index.js +0 -18
  117. package/build/lib/sci/index.d.ts +0 -13
  118. package/build/lib/sci/index.js +0 -131
  119. package/build/lib/sci-e/index.d.ts +0 -38
  120. package/build/lib/sci-e/index.js +0 -85
  121. package/build/lib/sci-m/index.d.ts +0 -10
  122. package/build/lib/sci-m/index.js +0 -124
  123. package/build/lib/sci-o/index.d.ts +0 -17
  124. package/build/lib/sci-o/index.js +0 -52
  125. package/build/lib/shell-imp/index.d.ts +0 -32
  126. package/build/lib/shell-imp/index.js +0 -82
  127. package/build/lib/tdp-finder/index.d.ts +0 -19
  128. package/build/lib/tdp-finder/index.js +0 -98
  129. package/build/lib/teads-aws/aws-embodied.json +0 -1
  130. package/build/lib/teads-aws/aws-instances.json +0 -1
  131. package/build/lib/teads-aws/index.d.ts +0 -58
  132. package/build/lib/teads-aws/index.js +0 -208
  133. package/build/lib/teads-curve/index.d.ts +0 -52
  134. package/build/lib/teads-curve/index.js +0 -158
  135. package/build/lib/watt-time/index.d.ts +0 -18
  136. package/build/lib/watt-time/index.js +0 -204
  137. package/build/util/models-universe.js +0 -95
  138. package/build/util/observatory.js +0 -31
  139. package/build/util/supercomputer.js +0 -109
  140. package/docs/implementations/tdp-finder.md +0 -36
  141. package/examples/impls/test/complex-pipeline.yml +0 -67
  142. package/examples/impls/test/toto.yaml +0 -22
  143. package/tsconfig.tsbuildinfo +0 -1
  144. /package/build/{util → lib}/models-universe.d.ts +0 -0
  145. /package/build/{util → lib}/observatory.d.ts +0 -0
  146. /package/build/{util → lib}/supercomputer.d.ts +0 -0
@@ -0,0 +1,205 @@
1
+ name: ccf-demo
2
+ description: example impl invoking CCF model
3
+ tags: null
4
+ initialize:
5
+ models:
6
+ - name: azure-importer
7
+ kind: plugin
8
+ path: if-models
9
+ model: AzureImporterModel
10
+ graph:
11
+ children:
12
+ child:
13
+ pipeline:
14
+ - azure-importer
15
+ config:
16
+ azure-importer: null
17
+ inputs:
18
+ - timestamp: '2023-11-02T10:35:31.820Z'
19
+ duration: 3600
20
+ azure-observation-window: 5 min
21
+ azure-observation-aggregation: average
22
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
23
+ azure-resource-group: vm1_group
24
+ azure-vm-name: vm1
25
+ outputs:
26
+ - timestamp: '2023-11-02T10:35:31.820Z'
27
+ cloud-vendor: azure
28
+ cpu-util: '0.314'
29
+ mem-availableGB: 0.488636416
30
+ mem-usedGB: 0.5113635839999999
31
+ total-memoryGB: '1'
32
+ mem-util: 51.13635839999999
33
+ location: uksouth
34
+ cloud-instance-type: Standard_B1s
35
+ duration: 300
36
+ azure-observation-window: 5 min
37
+ azure-observation-aggregation: average
38
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
39
+ azure-resource-group: vm1_group
40
+ azure-vm-name: vm1
41
+ - timestamp: '2023-11-02T10:35:31.820Z'
42
+ cloud-vendor: azure
43
+ cpu-util: '0.314'
44
+ mem-availableGB: 0.48978984960000005
45
+ mem-usedGB: 0.5102101504
46
+ total-memoryGB: '1'
47
+ mem-util: 51.021015039999995
48
+ location: uksouth
49
+ cloud-instance-type: Standard_B1s
50
+ duration: 300
51
+ azure-observation-window: 5 min
52
+ azure-observation-aggregation: average
53
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
54
+ azure-resource-group: vm1_group
55
+ azure-vm-name: vm1
56
+ - timestamp: '2023-11-02T10:35:31.820Z'
57
+ cloud-vendor: azure
58
+ cpu-util: '0.301'
59
+ mem-availableGB: 0.490733568
60
+ mem-usedGB: 0.509266432
61
+ total-memoryGB: '1'
62
+ mem-util: 50.9266432
63
+ location: uksouth
64
+ cloud-instance-type: Standard_B1s
65
+ duration: 300
66
+ azure-observation-window: 5 min
67
+ azure-observation-aggregation: average
68
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
69
+ azure-resource-group: vm1_group
70
+ azure-vm-name: vm1
71
+ - timestamp: '2023-11-02T10:35:31.820Z'
72
+ cloud-vendor: azure
73
+ cpu-util: '0.298'
74
+ mem-availableGB: 0.490733568
75
+ mem-usedGB: 0.509266432
76
+ total-memoryGB: '1'
77
+ mem-util: 50.9266432
78
+ location: uksouth
79
+ cloud-instance-type: Standard_B1s
80
+ duration: 300
81
+ azure-observation-window: 5 min
82
+ azure-observation-aggregation: average
83
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
84
+ azure-resource-group: vm1_group
85
+ azure-vm-name: vm1
86
+ - timestamp: '2023-11-02T10:35:31.820Z'
87
+ cloud-vendor: azure
88
+ cpu-util: '0.301'
89
+ mem-availableGB: 0.49178214400000003
90
+ mem-usedGB: 0.5082178559999999
91
+ total-memoryGB: '1'
92
+ mem-util: 50.82178559999999
93
+ location: uksouth
94
+ cloud-instance-type: Standard_B1s
95
+ duration: 300
96
+ azure-observation-window: 5 min
97
+ azure-observation-aggregation: average
98
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
99
+ azure-resource-group: vm1_group
100
+ azure-vm-name: vm1
101
+ - timestamp: '2023-11-02T10:35:31.820Z'
102
+ cloud-vendor: azure
103
+ cpu-util: '0.298'
104
+ mem-availableGB: 0.49178214400000003
105
+ mem-usedGB: 0.5082178559999999
106
+ total-memoryGB: '1'
107
+ mem-util: 50.82178559999999
108
+ location: uksouth
109
+ cloud-instance-type: Standard_B1s
110
+ duration: 300
111
+ azure-observation-window: 5 min
112
+ azure-observation-aggregation: average
113
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
114
+ azure-resource-group: vm1_group
115
+ azure-vm-name: vm1
116
+ - timestamp: '2023-11-02T10:35:31.820Z'
117
+ cloud-vendor: azure
118
+ cpu-util: '0.304'
119
+ mem-availableGB: 0.492306432
120
+ mem-usedGB: 0.507693568
121
+ total-memoryGB: '1'
122
+ mem-util: 50.7693568
123
+ location: uksouth
124
+ cloud-instance-type: Standard_B1s
125
+ duration: 300
126
+ azure-observation-window: 5 min
127
+ azure-observation-aggregation: average
128
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
129
+ azure-resource-group: vm1_group
130
+ azure-vm-name: vm1
131
+ - timestamp: '2023-11-02T10:35:31.820Z'
132
+ cloud-vendor: azure
133
+ cpu-util: '0.3'
134
+ mem-availableGB: 0.49283072000000006
135
+ mem-usedGB: 0.50716928
136
+ total-memoryGB: '1'
137
+ mem-util: 50.716927999999996
138
+ location: uksouth
139
+ cloud-instance-type: Standard_B1s
140
+ duration: 300
141
+ azure-observation-window: 5 min
142
+ azure-observation-aggregation: average
143
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
144
+ azure-resource-group: vm1_group
145
+ azure-vm-name: vm1
146
+ - timestamp: '2023-11-02T10:35:31.820Z'
147
+ cloud-vendor: azure
148
+ cpu-util: '0.636'
149
+ mem-availableGB: 0.5062524928000001
150
+ mem-usedGB: 0.49374750719999994
151
+ total-memoryGB: '1'
152
+ mem-util: 49.374750719999994
153
+ location: uksouth
154
+ cloud-instance-type: Standard_B1s
155
+ duration: 300
156
+ azure-observation-window: 5 min
157
+ azure-observation-aggregation: average
158
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
159
+ azure-resource-group: vm1_group
160
+ azure-vm-name: vm1
161
+ - timestamp: '2023-11-02T10:35:31.820Z'
162
+ cloud-vendor: azure
163
+ cpu-util: '0.29500000000000004'
164
+ mem-availableGB: 0.509607936
165
+ mem-usedGB: 0.490392064
166
+ total-memoryGB: '1'
167
+ mem-util: 49.039206400000005
168
+ location: uksouth
169
+ cloud-instance-type: Standard_B1s
170
+ duration: 300
171
+ azure-observation-window: 5 min
172
+ azure-observation-aggregation: average
173
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
174
+ azure-resource-group: vm1_group
175
+ azure-vm-name: vm1
176
+ - timestamp: '2023-11-02T10:35:31.820Z'
177
+ cloud-vendor: azure
178
+ cpu-util: '0.309'
179
+ mem-availableGB: 0.5106565120000001
180
+ mem-usedGB: 0.48934348799999994
181
+ total-memoryGB: '1'
182
+ mem-util: 48.934348799999995
183
+ location: uksouth
184
+ cloud-instance-type: Standard_B1s
185
+ duration: 300
186
+ azure-observation-window: 5 min
187
+ azure-observation-aggregation: average
188
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
189
+ azure-resource-group: vm1_group
190
+ azure-vm-name: vm1
191
+ - timestamp: '2023-11-02T10:35:31.820Z'
192
+ cloud-vendor: azure
193
+ cpu-util: '0.484'
194
+ mem-availableGB: 0.5106565120000001
195
+ mem-usedGB: 0.48934348799999994
196
+ total-memoryGB: '1'
197
+ mem-util: 48.934348799999995
198
+ location: uksouth
199
+ cloud-instance-type: Standard_B1s
200
+ duration: 300
201
+ azure-observation-window: 5 min
202
+ azure-observation-aggregation: average
203
+ azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
204
+ azure-resource-group: vm1_group
205
+ azure-vm-name: vm1
@@ -16,17 +16,9 @@ jobs:
16
16
  node-version: 18
17
17
  cache: 'yarn'
18
18
 
19
- - name: 'setup python'
20
- uses: actions/setup-python@v4
21
- with:
22
- python-version: '3.11'
23
-
24
19
  - name: Install dependencies
25
20
  run: yarn install
26
21
 
27
- - name: Copy Sample CLI Mocker to bin folder
28
- run: pip3 install pyyaml && cp src/lib/shell-imp/sampler /usr/local/bin/sampler && chmod +x /usr/local/bin/sampler
29
-
30
22
  - name: Run lint
31
23
  run: yarn lint
32
24
 
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # Impact Engine Framework
1
+ # Impact Framework
2
2
 
3
- [Impact Engine Framework](https://greensoftwarefoundation.atlassian.net/wiki/spaces/~612dd45e45cd76006a84071a/pages/17072136/Opensource+Impact+Engine+Framework) is an [Incubation](https://oc.greensoftware.foundation/project-lifecycle.html#incubation) project from the [Open Source Working Group](https://greensoftwarefoundation.atlassian.net/wiki/spaces/~612dd45e45cd76006a84071a/pages/852049/Open+Source+Working+Group) in the [Green Software Foundation](https://greensoftware.foundation/).
3
+ [Impact Framework](https://greensoftwarefoundation.atlassian.net/wiki/spaces/~612dd45e45cd76006a84071a/pages/17072136/Opensource+Impact+Engine+Framework) (IF) is an [Incubation](https://oc.greensoftware.foundation/project-lifecycle.html#incubation) project from the [Open Source Working Group](https://greensoftwarefoundation.atlassian.net/wiki/spaces/~612dd45e45cd76006a84071a/pages/852049/Open+Source+Working+Group) in the [Green Software Foundation](https://greensoftware.foundation/).
4
4
 
5
- **IEF** is a framework to **M**odel, **M**easure, si**M**ulate and **M**onitor the environmental impacts of software
5
+ **IF** is a framework to **M**odel, **M**easure, si**M**ulate and **M**onitor the environmental impacts of software
6
6
 
7
7
  Modern applications are composed of many smaller pieces of software (components) running on many different environments, for example, private cloud, public cloud, bare-metal, virtualized, containerized, mobile, laptops, and desktops.
8
8
 
@@ -15,12 +15,51 @@ Read the [specification and design docs](https://github.com/Green-Software-Found
15
15
 
16
16
  ## Get started
17
17
 
18
- The first thing to understand is that IF is a framework for running model plugins. This means that in order to do some calculations, you need to load some models from some external resource. We provide a [standard library of models](https://github.com/Green-Software-Foundation/if-models) and a repository of [community models](https://github.com/Green-Software-Foundation/if-community-models) to get you started.
18
+ The first thing to understand is that IF is a framework for running model plugins. This means that in order to do some calculations, you need to load some models from some external resource. We provide a [standard library of models](https://github.com/Green-Software-Foundation/if-models) and a repository of [community models](https://github.com/Green-Software-Foundation/if-unofficial-models) to get you started.
19
19
 
20
- Start by installing some models:
20
+ Start by installing framework itself:
21
21
 
22
22
  ```sh
23
- yarn add https://github.com/Green-Software-Foundation/if-models
23
+ npm install -g "@grnsft/if"
24
+ ```
25
+ Then installing some models:
26
+
27
+ ```sh
28
+ npm install -g "@grnsft/if-models"
29
+ ```
30
+
31
+ Then create an `impl` file that describes your application (see our docs for a detailed explanation).
32
+
33
+ Then, run `impact-engine` using the following command:
34
+
35
+ ```sh
36
+ impact-engine --impl <path-to-your-impl-file>
37
+ ```
38
+
39
+ You can also add an optional savepath for your output yaml (if you do not provide one, the output will be printed to the console):
40
+
41
+ ```sh
42
+ impact-engine --impl <path-to-your-impl-file> --ompl <your-savepath>
43
+ ```
44
+
45
+ The `impact-engine` CLI tool will configure and run the models defined in your input `yaml` (`impl`) and return the results as an output `yaml` (`ompl`).
46
+
47
+ ### Alternate version
48
+
49
+ Start by cloning repository locally:
50
+
51
+ ```sh
52
+ git clone https://github.com/Green-Software-Foundation/if
53
+
54
+ cd if
55
+
56
+ yarn install
57
+ ```
58
+
59
+ Then installing some models:
60
+
61
+ ```sh
62
+ yarn add "@grnsft/if-models"
24
63
  ```
25
64
 
26
65
  Then create an `impl` file that describes your application (see our docs for a detailed explanation).
@@ -28,24 +67,24 @@ Then create an `impl` file that describes your application (see our docs for a d
28
67
  Then, run `impact-engine` using the following command:
29
68
 
30
69
  ```sh
31
- npx ts-node impact-engine.ts --impl <path-to-your-impl-file>
70
+ yarn impact-engine -- --impl <path-to-your-impl-file>
32
71
  ```
33
72
 
34
73
  You can also add an optional savepath for your output yaml (if you do not provide one, the output will be printed to the console):
35
74
 
36
75
  ```sh
37
- npx ts-node impact-engine.ts --impl <path-to-your-impl-file> --ompl <your-savepath>
76
+ yarn impact-engine -- --impl <path-to-your-impl-file> --ompl <your-savepath>
38
77
  ```
39
78
 
40
79
  The `impact-engine` CLI tool will configure and run the models defined in your input `yaml` (`impl`) and return the results as an output `yaml` (`ompl`).
41
80
 
81
+
42
82
  ## Video walk-through
43
83
 
44
84
  Watch this video to learn how to create and run an `impl`.
45
85
 
46
86
  [![Watch the walk-through video](https://i3.ytimg.com/vi/R-6eDM8AsvY/maxresdefault.jpg)](https://youtu.be/R-6eDM8AsvY)
47
87
 
48
-
49
88
  ## Run tests
50
89
 
51
90
  To run the complete set of tests simply run
@@ -1,29 +1,6 @@
1
1
  import { ArgumentConfig } from 'ts-command-line-args';
2
2
  import { impactProcessArgs } from '../types/process-args';
3
3
  export declare const CONFIG: {
4
- MODEL_IDS: {
5
- AZURE_IMPORTER: string;
6
- BOAVIZTA_CPU: string;
7
- BOAVIZTA_CLOUD: string;
8
- AVEVA: string;
9
- EMEM: string;
10
- ESHOPPEN: string;
11
- ESHOPPEN_CPU: string;
12
- ESHOPPEN_MEM: string;
13
- ESHOPPEN_NET: string;
14
- SCI_ACCENTURE: string;
15
- CCF: string;
16
- SCI: string;
17
- SCI_E: string;
18
- SCI_M: string;
19
- SCI_O: string;
20
- SHELL_MODEL: string;
21
- TDP: string;
22
- TEADS_AWS: string;
23
- TEADS_CURVE: string;
24
- WATT_TIME: string;
25
- CLOUD_INSTANCE_METADATA: string;
26
- };
27
4
  impact: {
28
5
  ARGS: ArgumentConfig<impactProcessArgs>;
29
6
  HELP: string;
@@ -2,29 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CONFIG = void 0;
4
4
  exports.CONFIG = {
5
- MODEL_IDS: {
6
- AZURE_IMPORTER: 'org.gsf.azure-importer',
7
- BOAVIZTA_CPU: 'org.boavizta.cpu.sci',
8
- BOAVIZTA_CLOUD: 'org.boavizta.cloud.sci',
9
- AVEVA: 'aveva',
10
- EMEM: 'energy-memory',
11
- ESHOPPEN: 'org.gsf.eshoppen',
12
- ESHOPPEN_CPU: 'org.gsf.eshoppen-cpu',
13
- ESHOPPEN_MEM: 'org.gsf.eshoppen-mem',
14
- ESHOPPEN_NET: 'org.gsf.eshoppen-net',
15
- SCI_ACCENTURE: 'org.gsf.sci-o',
16
- CCF: 'ccf.cloud.sci',
17
- SCI: 'org.gsf.sci',
18
- SCI_E: 'sci-e',
19
- SCI_M: 'org.gsf.sci-m',
20
- SCI_O: 'org.gsf.sci-o',
21
- SHELL_MODEL: 'shellModel',
22
- TDP: 'tdp',
23
- TEADS_AWS: 'teads.cloud.sci',
24
- TEADS_CURVE: 'teads.curve',
25
- WATT_TIME: 'org.wattime.grid',
26
- CLOUD_INSTANCE_METADATA: 'org.gsf.cloud-instance-metadata',
27
- },
28
5
  impact: {
29
6
  ARGS: {
30
7
  impl: {
@@ -71,4 +48,4 @@ exports.CONFIG = {
71
48
  },
72
49
  GITHUB_PATH: 'https://github.com',
73
50
  };
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSWEsUUFBQSxNQUFNLEdBQUc7SUFDcEIsU0FBUyxFQUFFO1FBQ1QsY0FBYyxFQUFFLHdCQUF3QjtRQUN4QyxZQUFZLEVBQUUsc0JBQXNCO1FBQ3BDLGNBQWMsRUFBRSx3QkFBd0I7UUFDeEMsS0FBSyxFQUFFLE9BQU87UUFDZCxJQUFJLEVBQUUsZUFBZTtRQUNyQixRQUFRLEVBQUUsa0JBQWtCO1FBQzVCLFlBQVksRUFBRSxzQkFBc0I7UUFDcEMsWUFBWSxFQUFFLHNCQUFzQjtRQUNwQyxZQUFZLEVBQUUsc0JBQXNCO1FBQ3BDLGFBQWEsRUFBRSxlQUFlO1FBQzlCLEdBQUcsRUFBRSxlQUFlO1FBQ3BCLEdBQUcsRUFBRSxhQUFhO1FBQ2xCLEtBQUssRUFBRSxPQUFPO1FBQ2QsS0FBSyxFQUFFLGVBQWU7UUFDdEIsS0FBSyxFQUFFLGVBQWU7UUFDdEIsV0FBVyxFQUFFLFlBQVk7UUFDekIsR0FBRyxFQUFFLEtBQUs7UUFDVixTQUFTLEVBQUUsaUJBQWlCO1FBQzVCLFdBQVcsRUFBRSxhQUFhO1FBQzFCLFNBQVMsRUFBRSxrQkFBa0I7UUFDN0IsdUJBQXVCLEVBQUUsaUNBQWlDO0tBQzNEO0lBQ0QsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSw2QkFBNkI7YUFDM0M7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLElBQUk7Z0JBQ2QsV0FBVyxFQUNULG1HQUFtRzthQUN0RztZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsTUFBTTtnQkFDWixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQ1QsNklBQTZJO2dCQUMvSSxZQUFZLEVBQUUsTUFBTTthQUNyQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsT0FBTztnQkFDYixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQ1QsMEZBQTBGO2FBQzdGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSwwQkFBMEI7YUFDeEM7U0FDbUM7UUFDdEMsSUFBSSxFQUFFOzs7Ozs7Ozs7OztHQVdQO0tBQ0E7SUFDRCxXQUFXLEVBQUUsb0JBQW9CO0NBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FyZ3VtZW50Q29uZmlnfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7aW1wYWN0UHJvY2Vzc0FyZ3N9IGZyb20gJy4uL3R5cGVzL3Byb2Nlc3MtYXJncyc7XG5cbmV4cG9ydCBjb25zdCBDT05GSUcgPSB7XG4gIE1PREVMX0lEUzoge1xuICAgIEFaVVJFX0lNUE9SVEVSOiAnb3JnLmdzZi5henVyZS1pbXBvcnRlcicsXG4gICAgQk9BVklaVEFfQ1BVOiAnb3JnLmJvYXZpenRhLmNwdS5zY2knLFxuICAgIEJPQVZJWlRBX0NMT1VEOiAnb3JnLmJvYXZpenRhLmNsb3VkLnNjaScsXG4gICAgQVZFVkE6ICdhdmV2YScsXG4gICAgRU1FTTogJ2VuZXJneS1tZW1vcnknLFxuICAgIEVTSE9QUEVOOiAnb3JnLmdzZi5lc2hvcHBlbicsXG4gICAgRVNIT1BQRU5fQ1BVOiAnb3JnLmdzZi5lc2hvcHBlbi1jcHUnLFxuICAgIEVTSE9QUEVOX01FTTogJ29yZy5nc2YuZXNob3BwZW4tbWVtJyxcbiAgICBFU0hPUFBFTl9ORVQ6ICdvcmcuZ3NmLmVzaG9wcGVuLW5ldCcsXG4gICAgU0NJX0FDQ0VOVFVSRTogJ29yZy5nc2Yuc2NpLW8nLFxuICAgIENDRjogJ2NjZi5jbG91ZC5zY2knLFxuICAgIFNDSTogJ29yZy5nc2Yuc2NpJyxcbiAgICBTQ0lfRTogJ3NjaS1lJyxcbiAgICBTQ0lfTTogJ29yZy5nc2Yuc2NpLW0nLFxuICAgIFNDSV9POiAnb3JnLmdzZi5zY2ktbycsXG4gICAgU0hFTExfTU9ERUw6ICdzaGVsbE1vZGVsJyxcbiAgICBURFA6ICd0ZHAnLFxuICAgIFRFQURTX0FXUzogJ3RlYWRzLmNsb3VkLnNjaScsXG4gICAgVEVBRFNfQ1VSVkU6ICd0ZWFkcy5jdXJ2ZScsXG4gICAgV0FUVF9USU1FOiAnb3JnLndhdHRpbWUuZ3JpZCcsXG4gICAgQ0xPVURfSU5TVEFOQ0VfTUVUQURBVEE6ICdvcmcuZ3NmLmNsb3VkLWluc3RhbmNlLW1ldGFkYXRhJyxcbiAgfSxcbiAgaW1wYWN0OiB7XG4gICAgQVJHUzoge1xuICAgICAgaW1wbDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2knLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gYW4gaW5wdXQgSU1QTCBmaWxlLicsXG4gICAgICB9LFxuICAgICAgb21wbDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnUGF0aCB0byB0aGUgb3V0cHV0IElNUEwgZmlsZSB3aGVyZSB0aGUgcmVzdWx0cyBhcyBzYXZlZCwgaWYgbm9uZSBpcyBwcm92aWRlZCBpdCBwcmludHMgdG8gc3Rkb3V0LicsXG4gICAgICB9LFxuICAgICAgZm9ybWF0OiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICdUaGUgb3V0cHV0IGZpbGUgZm9ybWF0LiBkZWZhdWx0IHRvIHlhbWwgYnV0IGlmIGNzdiBpcyBzcGVjaWZpZWQgdGhlbiBpdCBmb3JtYXRzIHRoZSBvdXRwdXRzIGFzIGEgY3N2IGZpbGUgZm9yIGxvYWRpbmcgaW50byBhbm90aGVyIHByb2dyYW0uJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAneWFtbCcsXG4gICAgICB9LFxuICAgICAgdmVyYm9zZToge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ0hvdyBtdWNoIGluZm9ybWF0aW9uIHRvIG91dHB1dCBhYm91dCB0aGUgY2FsY3VsYXRpb24gdG8gYWlkIGludmVzdGlnYXRpb24gYW5kIGRlYnVnZ2luZy4nLFxuICAgICAgfSxcbiAgICAgIGhlbHA6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnaCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnRzIHRoaXMgdXNhZ2UgZ3VpZGUuJyxcbiAgICAgIH0sXG4gICAgfSBhcyBBcmd1bWVudENvbmZpZzxpbXBhY3RQcm9jZXNzQXJncz4sXG4gICAgSEVMUDogYGltcGFjdCBcbiAgLWltcGwgW3BhdGggdG8gdGhlIGlucHV0IGltcGwgZmlsZV1cbiAgLW9tcGwgW3BhdGggdG8gdGhlIG91dHB1dCBpbXBsIGZpbGVdXG4gIC1mb3JtYXQgW3lhbWx8Y3N2XSBcbiAgLXZlcmJvc2VcbiAgLWhlbHAgXG4gIGltcGw6IHBhdGggdG8gYW4gaW5wdXQgSU1QTCBmaWxlXG4gIG9tcGw6IHBhdGggdG8gdGhlIG91dHB1dCBJTVBMIGZpbGUgd2hlcmUgdGhlIHJlc3VsdHMgYXMgc2F2ZWQsIGlmIG5vbmUgaXMgcHJvdmlkZWQgaXQgcHJpbnRzIHRvIHN0ZG91dC5cbiAgZm9ybWF0OiB0aGUgb3V0cHV0IGZpbGUgZm9ybWF0LiBkZWZhdWx0IHRvIHlhbWwgYnV0IGlmIGNzdiBpcyBzcGVjaWZpZWQgdGhlbiBpdCBmb3JtYXRzIHRoZSBvdXRwdXRzIGFzIGEgY3N2IGZpbGUgZm9yIGxvYWRpbmcgaW50byBhbm90aGVyIHByb2dyYW0uXG4gIHZlcmJvc2U6IGhvdyBtdWNoIGluZm9ybWF0aW9uIHRvIG91dHB1dCBhYm91dCB0aGUgY2FsY3VsYXRpb24gdG8gYWlkIGludmVzdGlnYXRpb24gYW5kIGRlYnVnZ2luZy5cbiAgaGVscDogcHJpbnRzIG91dCB0aGUgYWJvdmUgaGVscCBpbnN0cnVjdGlvbi5cbiAgYCxcbiAgfSxcbiAgR0lUSFVCX1BBVEg6ICdodHRwczovL2dpdGh1Yi5jb20nLFxufTtcbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSWEsUUFBQSxNQUFNLEdBQUc7SUFDcEIsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSw2QkFBNkI7YUFDM0M7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLElBQUk7Z0JBQ2QsV0FBVyxFQUNULG1HQUFtRzthQUN0RztZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsTUFBTTtnQkFDWixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQ1QsNklBQTZJO2dCQUMvSSxZQUFZLEVBQUUsTUFBTTthQUNyQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsT0FBTztnQkFDYixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQ1QsMEZBQTBGO2FBQzdGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSwwQkFBMEI7YUFDeEM7U0FDbUM7UUFDdEMsSUFBSSxFQUFFOzs7Ozs7Ozs7OztHQVdQO0tBQ0E7SUFDRCxXQUFXLEVBQUUsb0JBQW9CO0NBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FyZ3VtZW50Q29uZmlnfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7aW1wYWN0UHJvY2Vzc0FyZ3N9IGZyb20gJy4uL3R5cGVzL3Byb2Nlc3MtYXJncyc7XG5cbmV4cG9ydCBjb25zdCBDT05GSUcgPSB7XG4gIGltcGFjdDoge1xuICAgIEFSR1M6IHtcbiAgICAgIGltcGw6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdpJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGFuIGlucHV0IElNUEwgZmlsZS4nLFxuICAgICAgfSxcbiAgICAgIG9tcGw6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ1BhdGggdG8gdGhlIG91dHB1dCBJTVBMIGZpbGUgd2hlcmUgdGhlIHJlc3VsdHMgYXMgc2F2ZWQsIGlmIG5vbmUgaXMgcHJvdmlkZWQgaXQgcHJpbnRzIHRvIHN0ZG91dC4nLFxuICAgICAgfSxcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnVGhlIG91dHB1dCBmaWxlIGZvcm1hdC4gZGVmYXVsdCB0byB5YW1sIGJ1dCBpZiBjc3YgaXMgc3BlY2lmaWVkIHRoZW4gaXQgZm9ybWF0cyB0aGUgb3V0cHV0cyBhcyBhIGNzdiBmaWxlIGZvciBsb2FkaW5nIGludG8gYW5vdGhlciBwcm9ncmFtLicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ3lhbWwnLFxuICAgICAgfSxcbiAgICAgIHZlcmJvc2U6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICdIb3cgbXVjaCBpbmZvcm1hdGlvbiB0byBvdXRwdXQgYWJvdXQgdGhlIGNhbGN1bGF0aW9uIHRvIGFpZCBpbnZlc3RpZ2F0aW9uIGFuZCBkZWJ1Z2dpbmcuJyxcbiAgICAgIH0sXG4gICAgICBoZWxwOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2gnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1ByaW50cyB0aGlzIHVzYWdlIGd1aWRlLicsXG4gICAgICB9LFxuICAgIH0gYXMgQXJndW1lbnRDb25maWc8aW1wYWN0UHJvY2Vzc0FyZ3M+LFxuICAgIEhFTFA6IGBpbXBhY3QgXG4gIC1pbXBsIFtwYXRoIHRvIHRoZSBpbnB1dCBpbXBsIGZpbGVdXG4gIC1vbXBsIFtwYXRoIHRvIHRoZSBvdXRwdXQgaW1wbCBmaWxlXVxuICAtZm9ybWF0IFt5YW1sfGNzdl0gXG4gIC12ZXJib3NlXG4gIC1oZWxwIFxuICBpbXBsOiBwYXRoIHRvIGFuIGlucHV0IElNUEwgZmlsZVxuICBvbXBsOiBwYXRoIHRvIHRoZSBvdXRwdXQgSU1QTCBmaWxlIHdoZXJlIHRoZSByZXN1bHRzIGFzIHNhdmVkLCBpZiBub25lIGlzIHByb3ZpZGVkIGl0IHByaW50cyB0byBzdGRvdXQuXG4gIGZvcm1hdDogdGhlIG91dHB1dCBmaWxlIGZvcm1hdC4gZGVmYXVsdCB0byB5YW1sIGJ1dCBpZiBjc3YgaXMgc3BlY2lmaWVkIHRoZW4gaXQgZm9ybWF0cyB0aGUgb3V0cHV0cyBhcyBhIGNzdiBmaWxlIGZvciBsb2FkaW5nIGludG8gYW5vdGhlciBwcm9ncmFtLlxuICB2ZXJib3NlOiBob3cgbXVjaCBpbmZvcm1hdGlvbiB0byBvdXRwdXQgYWJvdXQgdGhlIGNhbGN1bGF0aW9uIHRvIGFpZCBpbnZlc3RpZ2F0aW9uIGFuZCBkZWJ1Z2dpbmcuXG4gIGhlbHA6IHByaW50cyBvdXQgdGhlIGFib3ZlIGhlbHAgaW5zdHJ1Y3Rpb24uXG4gIGAsXG4gIH0sXG4gIEdJVEhVQl9QQVRIOiAnaHR0cHM6Ly9naXRodWIuY29tJyxcbn07XG4iXX0=
package/build/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ const models_universe_1 = require("./lib/models-universe");
5
+ const supercomputer_1 = require("./lib/supercomputer");
4
6
  const args_1 = require("./util/args");
5
7
  const errors_1 = require("./util/errors");
6
8
  const helpers_1 = require("./util/helpers");
7
- const models_universe_1 = require("./util/models-universe");
8
- const supercomputer_1 = require("./util/supercomputer");
9
9
  const validations_1 = require("./util/validations");
10
10
  const yaml_1 = require("./util/yaml");
11
11
  const config_1 = require("./config");
@@ -17,7 +17,6 @@ const { DISCLAIMER_MESSAGE, SOMETHING_WRONG } = config_1.STRINGS;
17
17
  * 3. Initializes models.
18
18
  * 4. Initializes graph, does computing.
19
19
  * 5. Saves processed object as a yaml file.
20
- * @example run `npx ts-node impact-engine.ts --impl ./test.yml --ompl ./result.yml`
21
20
  * @example run `npm run impact-engine -- --impl ./test.yml --ompl ./result.yml`
22
21
  */
23
22
  const impactEngine = async () => {
@@ -44,4 +43,4 @@ const impactEngine = async () => {
44
43
  return Promise.reject(new CliInputError(SOMETHING_WRONG));
45
44
  };
46
45
  impactEngine().catch(helpers_1.andHandle);
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0NBQWlEO0FBQ2pELDBDQUFxQztBQUNyQyw0Q0FBeUM7QUFDekMsNERBQXNEO0FBQ3RELHdEQUFtRDtBQUNuRCxvREFBZ0Q7QUFDaEQsc0NBQWlFO0FBRWpFLHFDQUFpQztBQUVqQyxNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRS9CLE1BQU0sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXREOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRWhDLE1BQU0sYUFBYSxHQUFHLElBQUEsMkJBQW9CLEdBQUUsQ0FBQztJQUU3QyxJQUFJLGFBQWEsRUFBRTtRQUNqQixNQUFNLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBQyxHQUFHLGFBQWEsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEsMkJBQW9CLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEQsdUJBQXVCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUEsMEJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyw4QkFBOEI7UUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQ0FBYyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDNUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDaEMsQ0FBQztRQUVGLHNCQUFzQjtRQUN0QixNQUFNLGNBQWMsR0FBRyxJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sSUFBSSxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTVDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLElBQUEscUJBQWMsRUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdkMsT0FBTztLQUNSO0lBRUQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDO0FBRUYsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFTLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7cGFyc2VQcm9jZXNzQXJndW1lbnR9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICcuL3V0aWwvZXJyb3JzJztcbmltcG9ydCB7YW5kSGFuZGxlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge01vZGVsc1VuaXZlcnNlfSBmcm9tICcuL3V0aWwvbW9kZWxzLXVuaXZlcnNlJztcbmltcG9ydCB7U3VwZXJjb21wdXRlcn0gZnJvbSAnLi91dGlsL3N1cGVyY29tcHV0ZXInO1xuaW1wb3J0IHt2YWxpZGF0ZUltcGx9IGZyb20gJy4vdXRpbC92YWxpZGF0aW9ucyc7XG5pbXBvcnQge29wZW5ZYW1sRmlsZUFzT2JqZWN0LCBzYXZlWWFtbEZpbGVBc30gZnJvbSAnLi91dGlsL3lhbWwnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4vY29uZmlnJztcblxuY29uc3Qge0NsaUlucHV0RXJyb3J9ID0gRVJST1JTO1xuXG5jb25zdCB7RElTQ0xBSU1FUl9NRVNTQUdFLCBTT01FVEhJTkdfV1JPTkd9ID0gU1RSSU5HUztcblxuLyoqXG4gKiAxLiBQYXJzZXMgeW1sIGlucHV0L291dHB1dCBwcm9jZXNzIGFyZ3VtZW50cy5cbiAqIDIuIE9wZW5zIHlhbWwgZmlsZSBhcyBhbiBvYmplY3QuXG4gKiAzLiBJbml0aWFsaXplcyBtb2RlbHMuXG4gKiA0LiBJbml0aWFsaXplcyBncmFwaCwgZG9lcyBjb21wdXRpbmcuXG4gKiA1LiBTYXZlcyBwcm9jZXNzZWQgb2JqZWN0IGFzIGEgeWFtbCBmaWxlLlxuICogQGV4YW1wbGUgcnVuIGBucHggdHMtbm9kZSBpbXBhY3QtZW5naW5lLnRzIC0taW1wbCAuL3Rlc3QueW1sIC0tb21wbCAuL3Jlc3VsdC55bWxgXG4gKiBAZXhhbXBsZSBydW4gYG5wbSBydW4gaW1wYWN0LWVuZ2luZSAtLSAtLWltcGwgLi90ZXN0LnltbCAtLW9tcGwgLi9yZXN1bHQueW1sYFxuICovXG5jb25zdCBpbXBhY3RFbmdpbmUgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKERJU0NMQUlNRVJfTUVTU0FHRSk7XG5cbiAgY29uc3QgcHJvY2Vzc1BhcmFtcyA9IHBhcnNlUHJvY2Vzc0FyZ3VtZW50KCk7XG5cbiAgaWYgKHByb2Nlc3NQYXJhbXMpIHtcbiAgICBjb25zdCB7aW5wdXRQYXRoLCBvdXRwdXRQYXRofSA9IHByb2Nlc3NQYXJhbXM7XG4gICAgY29uc3QgcmF3SW1wbCA9IGF3YWl0IG9wZW5ZYW1sRmlsZUFzT2JqZWN0KGlucHV0UGF0aCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgVmFsaWRhdGlvblxuICAgIGNvbnN0IGltcGwgPSB2YWxpZGF0ZUltcGwocmF3SW1wbCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgSW5pdGlhbGl6ZSBNb2RlbHNcbiAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgIGltcGwuaW5pdGlhbGl6ZS5tb2RlbHMuZm9yRWFjaCgobW9kZWw6IGFueSkgPT5cbiAgICAgIG1vZGVsc0hhbmRib29rLndyaXRlRG93bihtb2RlbClcbiAgICApO1xuXG4gICAgLy8gTGlmZWN5Y2xlIENvbXB1dGluZ1xuICAgIGNvbnN0IGF0ZXJ1aUNvbXB1dGVyID0gbmV3IFN1cGVyY29tcHV0ZXIoaW1wbCwgbW9kZWxzSGFuZGJvb2spO1xuICAgIGNvbnN0IG9tcGwgPSBhd2FpdCBhdGVydWlDb21wdXRlci5jb21wdXRlKCk7XG5cbiAgICBpZiAoIW91dHB1dFBhdGgpIHtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KG9tcGwpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCBzYXZlWWFtbEZpbGVBcyhvbXBsLCBvdXRwdXRQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQ2xpSW5wdXRFcnJvcihTT01FVEhJTkdfV1JPTkcpKTtcbn07XG5cbmltcGFjdEVuZ2luZSgpLmNhdGNoKGFuZEhhbmRsZSk7XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkRBQXFEO0FBQ3JELHVEQUFrRDtBQUVsRCxzQ0FBaUQ7QUFDakQsMENBQXFDO0FBQ3JDLDRDQUF5QztBQUN6QyxvREFBZ0Q7QUFDaEQsc0NBQWlFO0FBRWpFLHFDQUFpQztBQUVqQyxNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRS9CLE1BQU0sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXREOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFlBQVksR0FBRyxLQUFLLElBQUksRUFBRTtJQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFaEMsTUFBTSxhQUFhLEdBQUcsSUFBQSwyQkFBb0IsR0FBRSxDQUFDO0lBRTdDLElBQUksYUFBYSxFQUFFO1FBQ2pCLE1BQU0sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFDLEdBQUcsYUFBYSxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSwyQkFBb0IsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUV0RCx1QkFBdUI7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBQSwwQkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLDhCQUE4QjtRQUM5QixNQUFNLGNBQWMsR0FBRyxJQUFJLGdDQUFjLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUM1QyxjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUNoQyxDQUFDO1FBRUYsc0JBQXNCO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLElBQUksNkJBQWEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFNUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE9BQU87U0FDUjtRQUVELE1BQU0sSUFBQSxxQkFBYyxFQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV2QyxPQUFPO0tBQ1I7SUFFRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUM7QUFFRixZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi9saWIvbW9kZWxzLXVuaXZlcnNlJztcbmltcG9ydCB7U3VwZXJjb21wdXRlcn0gZnJvbSAnLi9saWIvc3VwZXJjb21wdXRlcic7XG5cbmltcG9ydCB7cGFyc2VQcm9jZXNzQXJndW1lbnR9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICcuL3V0aWwvZXJyb3JzJztcbmltcG9ydCB7YW5kSGFuZGxlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge3ZhbGlkYXRlSW1wbH0gZnJvbSAnLi91dGlsL3ZhbGlkYXRpb25zJztcbmltcG9ydCB7b3BlbllhbWxGaWxlQXNPYmplY3QsIHNhdmVZYW1sRmlsZUFzfSBmcm9tICcuL3V0aWwveWFtbCc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi9jb25maWcnO1xuXG5jb25zdCB7Q2xpSW5wdXRFcnJvcn0gPSBFUlJPUlM7XG5cbmNvbnN0IHtESVNDTEFJTUVSX01FU1NBR0UsIFNPTUVUSElOR19XUk9OR30gPSBTVFJJTkdTO1xuXG4vKipcbiAqIDEuIFBhcnNlcyB5bWwgaW5wdXQvb3V0cHV0IHByb2Nlc3MgYXJndW1lbnRzLlxuICogMi4gT3BlbnMgeWFtbCBmaWxlIGFzIGFuIG9iamVjdC5cbiAqIDMuIEluaXRpYWxpemVzIG1vZGVscy5cbiAqIDQuIEluaXRpYWxpemVzIGdyYXBoLCBkb2VzIGNvbXB1dGluZy5cbiAqIDUuIFNhdmVzIHByb2Nlc3NlZCBvYmplY3QgYXMgYSB5YW1sIGZpbGUuXG4gKiBAZXhhbXBsZSBydW4gYG5wbSBydW4gaW1wYWN0LWVuZ2luZSAtLSAtLWltcGwgLi90ZXN0LnltbCAtLW9tcGwgLi9yZXN1bHQueW1sYFxuICovXG5jb25zdCBpbXBhY3RFbmdpbmUgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKERJU0NMQUlNRVJfTUVTU0FHRSk7XG5cbiAgY29uc3QgcHJvY2Vzc1BhcmFtcyA9IHBhcnNlUHJvY2Vzc0FyZ3VtZW50KCk7XG5cbiAgaWYgKHByb2Nlc3NQYXJhbXMpIHtcbiAgICBjb25zdCB7aW5wdXRQYXRoLCBvdXRwdXRQYXRofSA9IHByb2Nlc3NQYXJhbXM7XG4gICAgY29uc3QgcmF3SW1wbCA9IGF3YWl0IG9wZW5ZYW1sRmlsZUFzT2JqZWN0KGlucHV0UGF0aCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgVmFsaWRhdGlvblxuICAgIGNvbnN0IGltcGwgPSB2YWxpZGF0ZUltcGwocmF3SW1wbCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgSW5pdGlhbGl6ZSBNb2RlbHNcbiAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgIGltcGwuaW5pdGlhbGl6ZS5tb2RlbHMuZm9yRWFjaCgobW9kZWw6IGFueSkgPT5cbiAgICAgIG1vZGVsc0hhbmRib29rLndyaXRlRG93bihtb2RlbClcbiAgICApO1xuXG4gICAgLy8gTGlmZWN5Y2xlIENvbXB1dGluZ1xuICAgIGNvbnN0IGF0ZXJ1aUNvbXB1dGVyID0gbmV3IFN1cGVyY29tcHV0ZXIoaW1wbCwgbW9kZWxzSGFuZGJvb2spO1xuICAgIGNvbnN0IG9tcGwgPSBhd2FpdCBhdGVydWlDb21wdXRlci5jb21wdXRlKCk7XG5cbiAgICBpZiAoIW91dHB1dFBhdGgpIHtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KG9tcGwpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCBzYXZlWWFtbEZpbGVBcyhvbXBsLCBvdXRwdXRQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQ2xpSW5wdXRFcnJvcihTT01FVEhJTkdfV1JPTkcpKTtcbn07XG5cbmltcGFjdEVuZ2luZSgpLmNhdGNoKGFuZEhhbmRsZSk7XG4iXX0=
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelsUniverse = void 0;
4
+ const errors_1 = require("../util/errors");
5
+ const config_1 = require("../config");
6
+ const { ModelInitializationError, ModelCredentialError } = errors_1.ERRORS;
7
+ const { GITHUB_PATH } = config_1.CONFIG;
8
+ const { MISSING_CLASSNAME, NOT_OUTPUT_MODEL_EXTENSION, NOT_INITIALIZED_MODEL, MISSING_PATH, MODEL_DOESNT_EXIST, NOT_NATIVE_MODEL, } = config_1.STRINGS;
9
+ /**
10
+ * Models Initialization Lifecycle.
11
+ */
12
+ class ModelsUniverse {
13
+ constructor() {
14
+ /**
15
+ * Models list.
16
+ */
17
+ this.initalizedModels = {};
18
+ }
19
+ /**
20
+ * Checks if model is instance of `IOutputModelInterface`.
21
+ */
22
+ instanceOfModel(ClassContainer) {
23
+ try {
24
+ const testModel = new ClassContainer();
25
+ const boolable = 'configure' in testModel && 'execute' in testModel;
26
+ return boolable;
27
+ }
28
+ catch (error) {
29
+ throw ModelInitializationError(MODEL_DOESNT_EXIST);
30
+ }
31
+ }
32
+ /**
33
+ * Returns plugin model. Checks if model is missing then rejects with error.
34
+ * Then checks if `path` is starting with github, then grabs the repository name.
35
+ * Imports module, then checks if it's a class which implements input model interface.
36
+ */
37
+ async handPluginModel(model, path) {
38
+ if (!model) {
39
+ throw new ModelCredentialError(MISSING_CLASSNAME);
40
+ }
41
+ if (!path) {
42
+ throw new ModelCredentialError(MISSING_PATH);
43
+ }
44
+ if (path?.startsWith(GITHUB_PATH)) {
45
+ const parts = path.split('/');
46
+ path = parts[parts.length - 1];
47
+ }
48
+ if (!path.includes('if-models')) {
49
+ console.log(NOT_NATIVE_MODEL);
50
+ }
51
+ const pluginModule = await Promise.resolve(`${path}`).then(s => require(s));
52
+ if (this.instanceOfModel(pluginModule[model])) {
53
+ return pluginModule[model];
54
+ }
55
+ throw new Error(NOT_OUTPUT_MODEL_EXTENSION);
56
+ }
57
+ /**
58
+ * Initializes and registers model.
59
+ */
60
+ writeDown(modelToInitalize) {
61
+ const { name, config, model, path } = modelToInitalize;
62
+ const callback = async (graphOptions) => {
63
+ const Model = await this.handPluginModel(model, path);
64
+ const params = {
65
+ ...config,
66
+ ...graphOptions,
67
+ };
68
+ const initalizedModel = await new Model().configure(params);
69
+ return initalizedModel;
70
+ };
71
+ this.initalizedModels = {
72
+ ...this.initalizedModels,
73
+ [name]: callback,
74
+ };
75
+ return this.initalizedModels;
76
+ }
77
+ /**
78
+ * Returns existing model by `name`.
79
+ */
80
+ async getInitializedModel(modelName, config) {
81
+ try {
82
+ if (this.initalizedModels[modelName]) {
83
+ return await this.initalizedModels[modelName](config);
84
+ }
85
+ }
86
+ catch (error) {
87
+ if (error instanceof Error) {
88
+ throw new ModelInitializationError(error.message);
89
+ }
90
+ }
91
+ throw new ModelInitializationError(NOT_INITIALIZED_MODEL(modelName));
92
+ }
93
+ }
94
+ exports.ModelsUniverse = ModelsUniverse;
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLXVuaXZlcnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9tb2RlbHMtdW5pdmVyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXNDO0FBRXRDLHNDQUEwQztBQVExQyxNQUFNLEVBQUMsd0JBQXdCLEVBQUUsb0JBQW9CLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFaEUsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUM3QixNQUFNLEVBQ0osaUJBQWlCLEVBQ2pCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsR0FBRyxnQkFBTyxDQUFDO0FBRVo7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFBM0I7UUFDRTs7V0FFRztRQUNJLHFCQUFnQixHQUFxQixFQUFFLENBQUM7SUE0RmpELENBQUM7SUExRkM7O09BRUc7SUFDSyxlQUFlLENBQUMsY0FBbUI7UUFDekMsSUFBSTtZQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7WUFFdkMsTUFBTSxRQUFRLEdBQUcsV0FBVyxJQUFJLFNBQVMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDO1lBRXBFLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLHdCQUF3QixDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBYyxFQUFFLElBQWE7UUFDekQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM5QztRQUVELElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQjtRQUVELE1BQU0sWUFBWSxHQUFHLHlCQUFhLElBQUkseUJBQUMsQ0FBQztRQUV4QyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDN0MsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUyxDQUFDLGdCQUFxQztRQUNwRCxNQUFNLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFFckQsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLFlBQTBCLEVBQUUsRUFBRTtZQUNwRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXRELE1BQU0sTUFBTSxHQUFHO2dCQUNiLEdBQUcsTUFBTTtnQkFDVCxHQUFHLFlBQVk7YUFDaEIsQ0FBQztZQUVGLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFNUQsT0FBTyxlQUFlLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUN4QixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVE7U0FDakIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE1BQVc7UUFDN0QsSUFBSTtZQUNGLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNwQyxPQUFPLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtnQkFDMUIsTUFBTSxJQUFJLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNuRDtTQUNGO1FBRUQsTUFBTSxJQUFJLHdCQUF3QixDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBaEdELHdDQWdHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RVJST1JTfSBmcm9tICcuLi91dGlsL2Vycm9ycyc7XG5cbmltcG9ydCB7Q09ORklHLCBTVFJJTkdTfSBmcm9tICcuLi9jb25maWcnO1xuXG5pbXBvcnQge1xuICBHcmFwaE9wdGlvbnMsXG4gIEltcGxJbml0aWFsaXplTW9kZWwsXG4gIEluaXRhbGl6ZWRNb2RlbHMsXG59IGZyb20gJy4uL3R5cGVzL21vZGVscy11bml2ZXJzZSc7XG5cbmNvbnN0IHtNb2RlbEluaXRpYWxpemF0aW9uRXJyb3IsIE1vZGVsQ3JlZGVudGlhbEVycm9yfSA9IEVSUk9SUztcblxuY29uc3Qge0dJVEhVQl9QQVRIfSA9IENPTkZJRztcbmNvbnN0IHtcbiAgTUlTU0lOR19DTEFTU05BTUUsXG4gIE5PVF9PVVRQVVRfTU9ERUxfRVhURU5TSU9OLFxuICBOT1RfSU5JVElBTElaRURfTU9ERUwsXG4gIE1JU1NJTkdfUEFUSCxcbiAgTU9ERUxfRE9FU05UX0VYSVNULFxuICBOT1RfTkFUSVZFX01PREVMLFxufSA9IFNUUklOR1M7XG5cbi8qKlxuICogTW9kZWxzIEluaXRpYWxpemF0aW9uIExpZmVjeWNsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vZGVsc1VuaXZlcnNlIHtcbiAgLyoqXG4gICAqIE1vZGVscyBsaXN0LlxuICAgKi9cbiAgcHVibGljIGluaXRhbGl6ZWRNb2RlbHM6IEluaXRhbGl6ZWRNb2RlbHMgPSB7fTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG1vZGVsIGlzIGluc3RhbmNlIG9mIGBJT3V0cHV0TW9kZWxJbnRlcmZhY2VgLlxuICAgKi9cbiAgcHJpdmF0ZSBpbnN0YW5jZU9mTW9kZWwoQ2xhc3NDb250YWluZXI6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0ZXN0TW9kZWwgPSBuZXcgQ2xhc3NDb250YWluZXIoKTtcblxuICAgICAgY29uc3QgYm9vbGFibGUgPSAnY29uZmlndXJlJyBpbiB0ZXN0TW9kZWwgJiYgJ2V4ZWN1dGUnIGluIHRlc3RNb2RlbDtcblxuICAgICAgcmV0dXJuIGJvb2xhYmxlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBNb2RlbEluaXRpYWxpemF0aW9uRXJyb3IoTU9ERUxfRE9FU05UX0VYSVNUKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBwbHVnaW4gbW9kZWwuIENoZWNrcyBpZiBtb2RlbCBpcyBtaXNzaW5nIHRoZW4gcmVqZWN0cyB3aXRoIGVycm9yLlxuICAgKiBUaGVuIGNoZWNrcyBpZiBgcGF0aGAgaXMgc3RhcnRpbmcgd2l0aCBnaXRodWIsIHRoZW4gZ3JhYnMgdGhlIHJlcG9zaXRvcnkgbmFtZS5cbiAgICogSW1wb3J0cyBtb2R1bGUsIHRoZW4gY2hlY2tzIGlmIGl0J3MgYSBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIGlucHV0IG1vZGVsIGludGVyZmFjZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaGFuZFBsdWdpbk1vZGVsKG1vZGVsPzogc3RyaW5nLCBwYXRoPzogc3RyaW5nKSB7XG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IE1vZGVsQ3JlZGVudGlhbEVycm9yKE1JU1NJTkdfQ0xBU1NOQU1FKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBNb2RlbENyZWRlbnRpYWxFcnJvcihNSVNTSU5HX1BBVEgpO1xuICAgIH1cblxuICAgIGlmIChwYXRoPy5zdGFydHNXaXRoKEdJVEhVQl9QQVRIKSkge1xuICAgICAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KCcvJyk7XG4gICAgICBwYXRoID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgaWYgKCFwYXRoLmluY2x1ZGVzKCdpZi1tb2RlbHMnKSkge1xuICAgICAgY29uc29sZS5sb2coTk9UX05BVElWRV9NT0RFTCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGx1Z2luTW9kdWxlID0gYXdhaXQgaW1wb3J0KHBhdGgpO1xuXG4gICAgaWYgKHRoaXMuaW5zdGFuY2VPZk1vZGVsKHBsdWdpbk1vZHVsZVttb2RlbF0pKSB7XG4gICAgICByZXR1cm4gcGx1Z2luTW9kdWxlW21vZGVsXTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoTk9UX09VVFBVVF9NT0RFTF9FWFRFTlNJT04pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGFuZCByZWdpc3RlcnMgbW9kZWwuXG4gICAqL1xuICBwdWJsaWMgd3JpdGVEb3duKG1vZGVsVG9Jbml0YWxpemU6IEltcGxJbml0aWFsaXplTW9kZWwpIHtcbiAgICBjb25zdCB7bmFtZSwgY29uZmlnLCBtb2RlbCwgcGF0aH0gPSBtb2RlbFRvSW5pdGFsaXplO1xuXG4gICAgY29uc3QgY2FsbGJhY2sgPSBhc3luYyAoZ3JhcGhPcHRpb25zOiBHcmFwaE9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IE1vZGVsID0gYXdhaXQgdGhpcy5oYW5kUGx1Z2luTW9kZWwobW9kZWwsIHBhdGgpO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgLi4uZ3JhcGhPcHRpb25zLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaW5pdGFsaXplZE1vZGVsID0gYXdhaXQgbmV3IE1vZGVsKCkuY29uZmlndXJlKHBhcmFtcyk7XG5cbiAgICAgIHJldHVybiBpbml0YWxpemVkTW9kZWw7XG4gICAgfTtcblxuICAgIHRoaXMuaW5pdGFsaXplZE1vZGVscyA9IHtcbiAgICAgIC4uLnRoaXMuaW5pdGFsaXplZE1vZGVscyxcbiAgICAgIFtuYW1lXTogY2FsbGJhY2ssXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmluaXRhbGl6ZWRNb2RlbHM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBleGlzdGluZyBtb2RlbCBieSBgbmFtZWAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SW5pdGlhbGl6ZWRNb2RlbChtb2RlbE5hbWU6IHN0cmluZywgY29uZmlnOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuaW5pdGFsaXplZE1vZGVsc1ttb2RlbE5hbWVdKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmluaXRhbGl6ZWRNb2RlbHNbbW9kZWxOYW1lXShjb25maWcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgTW9kZWxJbml0aWFsaXphdGlvbkVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBNb2RlbEluaXRpYWxpemF0aW9uRXJyb3IoTk9UX0lOSVRJQUxJWkVEX01PREVMKG1vZGVsTmFtZSkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Observatory = void 0;
4
+ /**
5
+ * Observatory is responsible for output calculations based on the `inputs` and the `model`.
6
+ */
7
+ class Observatory {
8
+ /**
9
+ * Init inputs object.
10
+ */
11
+ constructor(inputs) {
12
+ this.outputs = [];
13
+ this.inputs = inputs;
14
+ }
15
+ /**
16
+ * Does investigations by given `output` information
17
+ */
18
+ async doInvestigationsWith(modelInstance) {
19
+ const reuseCalculation = this.outputs.length ? this.outputs : this.inputs;
20
+ this.outputs = await modelInstance.execute(reuseCalculation);
21
+ return this;
22
+ }
23
+ /**
24
+ * Getter for output data.
25
+ */
26
+ getOutputs() {
27
+ return this.outputs;
28
+ }
29
+ }
30
+ exports.Observatory = Observatory;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL29ic2VydmF0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBSXRCOztPQUVHO0lBQ0gsWUFBWSxNQUFXO1FBTGYsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQU0xQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsYUFBbUM7UUFDbkUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUUxRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTdELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0NBQ0Y7QUE1QkQsa0NBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbFBsdWdpbkludGVyZmFjZX0gZnJvbSAnLi4vdHlwZXMvbW9kZWwtaW50ZXJmYWNlJztcblxuLyoqXG4gKiBPYnNlcnZhdG9yeSBpcyByZXNwb25zaWJsZSBmb3Igb3V0cHV0IGNhbGN1bGF0aW9ucyBiYXNlZCBvbiB0aGUgYGlucHV0c2AgYW5kIHRoZSBgbW9kZWxgLlxuICovXG5leHBvcnQgY2xhc3MgT2JzZXJ2YXRvcnkge1xuICBwcml2YXRlIGlucHV0czogYW55W107XG4gIHByaXZhdGUgb3V0cHV0czogYW55W10gPSBbXTtcblxuICAvKipcbiAgICogSW5pdCBpbnB1dHMgb2JqZWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3IoaW5wdXRzOiBhbnkpIHtcbiAgICB0aGlzLmlucHV0cyA9IGlucHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBEb2VzIGludmVzdGlnYXRpb25zIGJ5IGdpdmVuIGBvdXRwdXRgIGluZm9ybWF0aW9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZG9JbnZlc3RpZ2F0aW9uc1dpdGgobW9kZWxJbnN0YW5jZTogTW9kZWxQbHVnaW5JbnRlcmZhY2UpIHtcbiAgICBjb25zdCByZXVzZUNhbGN1bGF0aW9uID0gdGhpcy5vdXRwdXRzLmxlbmd0aCA/IHRoaXMub3V0cHV0cyA6IHRoaXMuaW5wdXRzO1xuXG4gICAgdGhpcy5vdXRwdXRzID0gYXdhaXQgbW9kZWxJbnN0YW5jZS5leGVjdXRlKHJldXNlQ2FsY3VsYXRpb24pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIGZvciBvdXRwdXQgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBnZXRPdXRwdXRzKCkge1xuICAgIHJldHVybiB0aGlzLm91dHB1dHM7XG4gIH1cbn1cbiJdfQ==