@grnsft/if 0.1.8 → 0.2.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 (208) hide show
  1. package/.commitlintrc.js +45 -0
  2. package/.husky/commit-msg +4 -0
  3. package/.husky/pre-commit +6 -0
  4. package/CONTRIBUTING.md +81 -98
  5. package/README.md +16 -12
  6. package/build/config/config.d.ts +4 -5
  7. package/build/config/config.js +16 -12
  8. package/build/config/index.d.ts +1 -0
  9. package/build/config/index.js +4 -2
  10. package/build/config/params.d.ts +2 -0
  11. package/build/config/params.js +146 -0
  12. package/build/config/strings.d.ts +14 -8
  13. package/build/config/strings.js +18 -12
  14. package/build/index.js +18 -38
  15. package/build/lib/aggregate.d.ts +6 -0
  16. package/build/lib/aggregate.js +72 -0
  17. package/build/lib/compute.d.ts +5 -0
  18. package/build/lib/compute.js +84 -0
  19. package/build/lib/exhaust.d.ts +6 -0
  20. package/build/lib/exhaust.js +47 -0
  21. package/build/lib/initialize.d.ts +6 -0
  22. package/build/lib/initialize.js +98 -0
  23. package/build/lib/load.d.ts +6 -0
  24. package/build/lib/load.js +24 -0
  25. package/build/lib/parameterize.d.ts +5 -0
  26. package/build/lib/parameterize.js +49 -0
  27. package/build/models/export-csv.d.ts +2 -0
  28. package/build/models/export-csv.js +129 -0
  29. package/build/models/export-log.d.ts +4 -0
  30. package/build/models/export-log.js +18 -0
  31. package/build/models/export-yaml.d.ts +4 -0
  32. package/build/models/export-yaml.js +24 -0
  33. package/build/models/group-by.d.ts +11 -0
  34. package/build/models/group-by.js +56 -0
  35. package/build/models/index.d.ts +2 -1
  36. package/build/models/index.js +5 -3
  37. package/build/models/time-sync.d.ts +2 -54
  38. package/build/models/time-sync.js +216 -147
  39. package/build/types/aggregation.d.ts +3 -0
  40. package/build/types/aggregation.js +5 -0
  41. package/build/types/compute.d.ts +25 -0
  42. package/build/types/compute.js +3 -0
  43. package/build/types/exhaust-plugin-interface.d.ts +7 -0
  44. package/build/types/exhaust-plugin-interface.js +3 -0
  45. package/build/types/group-by.d.ts +3 -0
  46. package/build/types/group-by.js +3 -0
  47. package/build/types/initialize.d.ts +4 -0
  48. package/build/types/initialize.js +3 -0
  49. package/build/types/interface.d.ts +8 -0
  50. package/build/types/interface.js +3 -0
  51. package/build/types/load.d.ts +7 -0
  52. package/build/types/load.js +3 -0
  53. package/build/types/manifest.d.ts +40 -0
  54. package/build/types/manifest.js +3 -0
  55. package/build/types/parameters.d.ts +15 -0
  56. package/build/types/parameters.js +5 -0
  57. package/build/types/process-args.d.ts +4 -5
  58. package/build/types/process-args.js +1 -1
  59. package/build/types/time-sync.d.ts +10 -2
  60. package/build/types/time-sync.js +1 -1
  61. package/build/util/aggregation-helper.d.ts +6 -0
  62. package/build/util/aggregation-helper.js +56 -0
  63. package/build/util/args.d.ts +7 -3
  64. package/build/util/args.js +46 -18
  65. package/build/util/errors.d.ts +1 -1
  66. package/build/util/errors.js +8 -4
  67. package/build/util/helpers.d.ts +4 -0
  68. package/build/util/helpers.js +23 -4
  69. package/build/util/json.d.ts +4 -0
  70. package/build/util/json.js +16 -0
  71. package/build/util/logger.d.ts +5 -0
  72. package/build/util/logger.js +40 -0
  73. package/build/util/validations.d.ts +30 -21
  74. package/build/util/validations.js +54 -55
  75. package/build/util/yaml.js +27 -4
  76. package/examples/manifests/azure-importer.yml +24 -0
  77. package/examples/manifests/basic-demo.yml +75 -0
  78. package/examples/manifests/basic.yml +27 -0
  79. package/examples/manifests/boavizta-pipeline.yml +85 -0
  80. package/examples/{impls/case-studies → manifests}/boavizta.yml +14 -14
  81. package/examples/{impls/test → manifests}/ccf.yml +9 -10
  82. package/examples/manifests/cim.yml +20 -0
  83. package/examples/manifests/cloud-metadata.yml +41 -0
  84. package/examples/manifests/co2js.yml +30 -0
  85. package/examples/manifests/coefficient.yml +23 -0
  86. package/examples/manifests/csv-export.yml +34 -0
  87. package/examples/manifests/e-mem.yml +21 -0
  88. package/examples/{impls/test → manifests}/e-net.yml +9 -8
  89. package/examples/manifests/generics.yml +71 -0
  90. package/examples/manifests/group-by.yml +48 -0
  91. package/examples/manifests/mock-observation.yml +33 -0
  92. package/examples/manifests/multiply.yml +23 -0
  93. package/examples/manifests/nesting-demo.yml +89 -0
  94. package/examples/manifests/nesting.yml +215 -0
  95. package/examples/manifests/pipeline-demo-1.yml +85 -0
  96. package/examples/manifests/pipeline-demo-2.yml +149 -0
  97. package/examples/manifests/pipeline-demo.yml +128 -0
  98. package/examples/manifests/pipeline-teads-sci.yml +82 -0
  99. package/examples/manifests/pipeline-with-generics.yml +147 -0
  100. package/examples/manifests/pipeline-with-mocks.yml +146 -0
  101. package/examples/{impls/test → manifests}/sci-e.yml +6 -8
  102. package/examples/manifests/sci-m.yml +23 -0
  103. package/examples/{impls/test → manifests}/sci-o.yml +10 -10
  104. package/examples/{impls/test → manifests}/sci.yml +10 -9
  105. package/examples/manifests/shell.yml +20 -0
  106. package/examples/manifests/sum.yml +23 -0
  107. package/examples/{impls/test → manifests}/tdp-finder.yml +6 -7
  108. package/examples/manifests/teads-aws.yml +22 -0
  109. package/examples/manifests/teads-curve.yml +20 -0
  110. package/examples/manifests/time-sync.yml +32 -0
  111. package/examples/manifests/watt-time.yml +42 -0
  112. package/jest.config.js +6 -1
  113. package/package.json +13 -8
  114. package/src/__tests__/integration/templates/integration.yaml +16 -0
  115. package/src/models/README.md +9 -7
  116. package/tsconfig.test.json +1 -1
  117. package/Makefile +0 -16
  118. package/build/config/units.yaml +0 -112
  119. package/build/lib/models-universe.d.ts +0 -36
  120. package/build/lib/models-universe.js +0 -113
  121. package/build/lib/observatory.d.ts +0 -20
  122. package/build/lib/observatory.js +0 -31
  123. package/build/lib/planet-aggregator.d.ts +0 -6
  124. package/build/lib/planet-aggregator.js +0 -35
  125. package/build/lib/supercomputer.d.ts +0 -37
  126. package/build/lib/supercomputer.js +0 -148
  127. package/build/types/helpers.d.ts +0 -1
  128. package/build/types/helpers.js +0 -3
  129. package/build/types/impl.d.ts +0 -45
  130. package/build/types/impl.js +0 -5
  131. package/build/types/model-interface.d.ts +0 -14
  132. package/build/types/model-interface.js +0 -3
  133. package/build/types/models-universe.d.ts +0 -23
  134. package/build/types/models-universe.js +0 -3
  135. package/build/types/planet-aggregator.d.ts +0 -6
  136. package/build/types/planet-aggregator.js +0 -3
  137. package/build/types/supercomputer.d.ts +0 -4
  138. package/build/types/supercomputer.js +0 -3
  139. package/build/types/units-dealer.d.ts +0 -3
  140. package/build/types/units-dealer.js +0 -3
  141. package/build/types/units.d.ts +0 -11
  142. package/build/types/units.js +0 -37
  143. package/build/util/units-dealer.d.ts +0 -10
  144. package/build/util/units-dealer.js +0 -32
  145. package/coverage/clover.xml +0 -379
  146. package/coverage/coverage-final.json +0 -14
  147. package/coverage/lcov-report/base.css +0 -224
  148. package/coverage/lcov-report/block-navigation.js +0 -87
  149. package/coverage/lcov-report/config/config.ts.html +0 -250
  150. package/coverage/lcov-report/config/index.html +0 -146
  151. package/coverage/lcov-report/config/index.ts.html +0 -91
  152. package/coverage/lcov-report/config/strings.ts.html +0 -208
  153. package/coverage/lcov-report/favicon.png +0 -0
  154. package/coverage/lcov-report/index.html +0 -161
  155. package/coverage/lcov-report/lib/index.html +0 -161
  156. package/coverage/lcov-report/lib/models-universe.ts.html +0 -517
  157. package/coverage/lcov-report/lib/observatory.ts.html +0 -187
  158. package/coverage/lcov-report/lib/planet-aggregator.ts.html +0 -274
  159. package/coverage/lcov-report/lib/supercomputer.ts.html +0 -472
  160. package/coverage/lcov-report/models/index.html +0 -131
  161. package/coverage/lcov-report/models/index.ts.html +0 -88
  162. package/coverage/lcov-report/models/planet-aggregator.ts.html +0 -271
  163. package/coverage/lcov-report/models/time-sync.ts.html +0 -1165
  164. package/coverage/lcov-report/prettify.css +0 -1
  165. package/coverage/lcov-report/prettify.js +0 -2
  166. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  167. package/coverage/lcov-report/sorter.js +0 -196
  168. package/coverage/lcov-report/util/args.ts.html +0 -289
  169. package/coverage/lcov-report/util/errors.ts.html +0 -166
  170. package/coverage/lcov-report/util/index.html +0 -161
  171. package/coverage/lcov-report/util/units-dealer.ts.html +0 -199
  172. package/coverage/lcov-report/util/yaml.ts.html +0 -193
  173. package/coverage/lcov.info +0 -637
  174. package/examples/impls/case-studies/accenture.yml +0 -155
  175. package/examples/impls/case-studies/aggregation.yml +0 -97
  176. package/examples/impls/case-studies/aveva.yaml +0 -48
  177. package/examples/impls/case-studies/azure-yassine.yaml +0 -67
  178. package/examples/impls/case-studies/dow_msft.yml +0 -173
  179. package/examples/impls/case-studies/farm-insights.yaml +0 -35
  180. package/examples/impls/case-studies/gsf-website.yaml +0 -93
  181. package/examples/impls/case-studies/msft-eshoppen.yaml +0 -162
  182. package/examples/impls/case-studies/msft-green-ai.yaml +0 -58
  183. package/examples/impls/case-studies/ntt-data-on-premise.yaml +0 -201
  184. package/examples/impls/test/aggregation-test.yml +0 -109
  185. package/examples/impls/test/azure.yml +0 -26
  186. package/examples/impls/test/if-demo.yml +0 -61
  187. package/examples/impls/test/large-impl.yml +0 -257303
  188. package/examples/impls/test/metadata.yml +0 -21
  189. package/examples/impls/test/nesting.yml +0 -113
  190. package/examples/impls/test/sci-m.yml +0 -24
  191. package/examples/impls/test/shell.yml +0 -19
  192. package/examples/impls/test/time-sync.yml +0 -75
  193. package/examples/ompls/aggregation-test.yml +0 -340
  194. package/examples/ompls/azure.yml +0 -145
  195. package/examples/ompls/ccf.yml +0 -29
  196. package/examples/ompls/complex-pipeline.yml +0 -105
  197. package/examples/ompls/full-sci.yml +0 -64
  198. package/examples/ompls/if-demo.yml +0 -517
  199. package/examples/ompls/metadata.yml +0 -29
  200. package/examples/ompls/nesting.yml +0 -113
  201. package/examples/ompls/sci-e.yml +0 -23
  202. package/examples/ompls/sci-m.yml +0 -33
  203. package/examples/ompls/sci-o.yml +0 -29
  204. package/examples/ompls/sci.yml +0 -37
  205. package/examples/ompls/shell.yml +0 -23
  206. package/examples/ompls/time-sync.yml +0 -212
  207. package/src/config/units.yaml +0 -112
  208. package/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PARAMETERS = void 0;
4
+ exports.PARAMETERS = {
5
+ carbon: {
6
+ description: 'an amount of carbon emitted into the atmosphere',
7
+ unit: 'gCO2e',
8
+ aggregation: 'sum',
9
+ },
10
+ 'cpu/number-cores': {
11
+ description: 'number of cores available',
12
+ unit: 'cores',
13
+ aggregation: 'none',
14
+ },
15
+ 'cpu/utilization': {
16
+ description: 'refers to CPU utilization.',
17
+ unit: 'percentage',
18
+ aggregation: 'avg',
19
+ },
20
+ 'disk-io': {
21
+ description: 'refers to GB of data written/read from disk',
22
+ unit: 'GB',
23
+ aggregation: 'sum',
24
+ },
25
+ duration: {
26
+ description: 'refers to the duration of the input',
27
+ unit: 'seconds',
28
+ aggregation: 'sum',
29
+ },
30
+ energy: {
31
+ description: 'amount of energy utilised by the component',
32
+ unit: 'kWh',
33
+ aggregation: 'sum',
34
+ },
35
+ 'cpu/energy': {
36
+ description: 'Energy consumed by the CPU of the component',
37
+ unit: 'kWh',
38
+ aggregation: 'sum',
39
+ },
40
+ 'device/expected-lifespan': {
41
+ description: 'Total Expected Lifespan of the Component in Seconds',
42
+ unit: 'seconds',
43
+ aggregation: 'sum',
44
+ },
45
+ 'memory/energy': {
46
+ description: 'Energy consumed by the Memory of the component',
47
+ unit: 'kWh',
48
+ aggregation: 'sum',
49
+ },
50
+ 'carbon-embodied': {
51
+ description: 'Embodied Emissions of the component',
52
+ unit: 'gCO2e',
53
+ aggregation: 'sum',
54
+ },
55
+ 'network/energy': {
56
+ description: 'Energy consumed by the Network of the component',
57
+ unit: 'kWh',
58
+ aggregation: 'sum',
59
+ },
60
+ 'functional-unit': {
61
+ description: 'the name of the functional unit in which the final SCI value should be expressed, e.g. requests, users',
62
+ unit: 'none',
63
+ aggregation: 'sum',
64
+ },
65
+ 'functional-unit-time': {
66
+ description: 'string describing the unit of time in which the final SCI calculation should be expressed, e.g. "1-min"',
67
+ unit: 'none',
68
+ aggregation: 'none',
69
+ },
70
+ 'gpu-util': {
71
+ description: 'refers to CPU utilization.',
72
+ unit: 'percentage',
73
+ aggregation: 'avg',
74
+ },
75
+ 'grid/carbon-intensity': {
76
+ description: 'Carbon intensity for the grid',
77
+ unit: 'gCO2eq/kWh',
78
+ aggregation: 'avg',
79
+ },
80
+ 'cloud/instance-type': {
81
+ description: 'Type of Cloud Instance name used in the cloud provider APIs',
82
+ unit: 'None',
83
+ aggregation: 'none',
84
+ },
85
+ geolocation: {
86
+ description: 'Geographic location of provider as string (for watt-time model it is provided as latitude and longitude, comma separated, in decimal degrees)',
87
+ unit: 'None (decimal degrees for watt-time model)',
88
+ aggregation: 'none',
89
+ },
90
+ 'carbon-operational': {
91
+ description: 'Operational Emissions of the component',
92
+ unit: 'gCO2e',
93
+ aggregation: 'sum',
94
+ },
95
+ 'cpu/name': {
96
+ description: 'Name of the physical processor',
97
+ unit: 'None',
98
+ aggregation: 'none',
99
+ },
100
+ 'cloud/vendor': {
101
+ description: 'Name of the cloud service provider in the ccf model. Can be aws, gcp or azure',
102
+ unit: 'None',
103
+ aggregation: 'none',
104
+ },
105
+ 'ram-alloc': {
106
+ description: 'refers to GB of memory allocated.',
107
+ unit: 'GB',
108
+ aggregation: 'avg',
109
+ },
110
+ 'ram-util': {
111
+ description: 'refers to percentage of memory utilized.',
112
+ unit: 'percentage',
113
+ aggregation: 'avg',
114
+ },
115
+ 'resources-reserved': {
116
+ description: 'resources reserved for an application',
117
+ unit: 'count',
118
+ aggregation: 'none',
119
+ },
120
+ 'cpu/thermal-design-power': {
121
+ description: 'thermal design power for a processor',
122
+ unit: 'kwh',
123
+ aggregation: 'avg',
124
+ },
125
+ 'device/emissions-embodied': {
126
+ description: 'total embodied emissions of some component',
127
+ unit: 'gCO2e',
128
+ aggregation: 'sum',
129
+ },
130
+ timestamp: {
131
+ description: 'refers to the time of occurrence of the input',
132
+ unit: 'RFC3339',
133
+ aggregation: 'none',
134
+ },
135
+ 'time-reserved': {
136
+ description: 'time reserved for a component',
137
+ unit: 'seconds',
138
+ aggregation: 'avg',
139
+ },
140
+ 'resources-total': {
141
+ description: 'total resources available',
142
+ unit: 'count',
143
+ aggregation: 'none',
144
+ },
145
+ };
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9wYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSxVQUFVLEdBQWU7SUFDcEMsTUFBTSxFQUFFO1FBQ04sV0FBVyxFQUFFLGlEQUFpRDtRQUM5RCxJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSxLQUFLO0tBQ25CO0lBQ0Qsa0JBQWtCLEVBQUU7UUFDbEIsV0FBVyxFQUFFLDJCQUEyQjtRQUN4QyxJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxJQUFJLEVBQUUsWUFBWTtRQUNsQixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELFNBQVMsRUFBRTtRQUNULFdBQVcsRUFBRSw2Q0FBNkM7UUFDMUQsSUFBSSxFQUFFLElBQUk7UUFDVixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELFFBQVEsRUFBRTtRQUNSLFdBQVcsRUFBRSxxQ0FBcUM7UUFDbEQsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELE1BQU0sRUFBRTtRQUNOLFdBQVcsRUFBRSw0Q0FBNEM7UUFDekQsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELFlBQVksRUFBRTtRQUNaLFdBQVcsRUFBRSw2Q0FBNkM7UUFDMUQsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELDBCQUEwQixFQUFFO1FBQzFCLFdBQVcsRUFBRSxxREFBcUQ7UUFDbEUsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGVBQWUsRUFBRTtRQUNmLFdBQVcsRUFBRSxnREFBZ0Q7UUFDN0QsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLFdBQVcsRUFBRSxxQ0FBcUM7UUFDbEQsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLFdBQVcsRUFBRSxpREFBaUQ7UUFDOUQsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLFdBQVcsRUFDVCx3R0FBd0c7UUFDMUcsSUFBSSxFQUFFLE1BQU07UUFDWixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELHNCQUFzQixFQUFFO1FBQ3RCLFdBQVcsRUFDVCx5R0FBeUc7UUFDM0csSUFBSSxFQUFFLE1BQU07UUFDWixXQUFXLEVBQUUsTUFBTTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUNWLFdBQVcsRUFBRSw0QkFBNEI7UUFDekMsSUFBSSxFQUFFLFlBQVk7UUFDbEIsV0FBVyxFQUFFLEtBQUs7S0FDbkI7SUFDRCx1QkFBdUIsRUFBRTtRQUN2QixXQUFXLEVBQUUsK0JBQStCO1FBQzVDLElBQUksRUFBRSxZQUFZO1FBQ2xCLFdBQVcsRUFBRSxLQUFLO0tBQ25CO0lBQ0QscUJBQXFCLEVBQUU7UUFDckIsV0FBVyxFQUFFLDZEQUE2RDtRQUMxRSxJQUFJLEVBQUUsTUFBTTtRQUNaLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsV0FBVyxFQUNULCtJQUErSTtRQUNqSixJQUFJLEVBQUUsNENBQTRDO1FBQ2xELFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDcEIsV0FBVyxFQUFFLHdDQUF3QztRQUNyRCxJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSxLQUFLO0tBQ25CO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxJQUFJLEVBQUUsTUFBTTtRQUNaLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsV0FBVyxFQUNULCtFQUErRTtRQUNqRixJQUFJLEVBQUUsTUFBTTtRQUNaLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsV0FBVyxFQUFFLG1DQUFtQztRQUNoRCxJQUFJLEVBQUUsSUFBSTtRQUNWLFdBQVcsRUFBRSxLQUFLO0tBQ25CO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsV0FBVyxFQUFFLDBDQUEwQztRQUN2RCxJQUFJLEVBQUUsWUFBWTtRQUNsQixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELG9CQUFvQixFQUFFO1FBQ3BCLFdBQVcsRUFBRSx1Q0FBdUM7UUFDcEQsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsTUFBTTtLQUNwQjtJQUNELDBCQUEwQixFQUFFO1FBQzFCLFdBQVcsRUFBRSxzQ0FBc0M7UUFDbkQsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELDJCQUEyQixFQUFFO1FBQzNCLFdBQVcsRUFBRSw0Q0FBNEM7UUFDekQsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELFNBQVMsRUFBRTtRQUNULFdBQVcsRUFBRSwrQ0FBK0M7UUFDNUQsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsTUFBTTtLQUNwQjtJQUNELGVBQWUsRUFBRTtRQUNmLFdBQVcsRUFBRSwrQkFBK0I7UUFDNUMsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsTUFBTTtLQUNwQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BhcmFtZXRlcnN9IGZyb20gJy4uL3R5cGVzL3BhcmFtZXRlcnMnO1xuXG5leHBvcnQgY29uc3QgUEFSQU1FVEVSUzogUGFyYW1ldGVycyA9IHtcbiAgY2FyYm9uOiB7XG4gICAgZGVzY3JpcHRpb246ICdhbiBhbW91bnQgb2YgY2FyYm9uIGVtaXR0ZWQgaW50byB0aGUgYXRtb3NwaGVyZScsXG4gICAgdW5pdDogJ2dDTzJlJyxcbiAgICBhZ2dyZWdhdGlvbjogJ3N1bScsXG4gIH0sXG4gICdjcHUvbnVtYmVyLWNvcmVzJzoge1xuICAgIGRlc2NyaXB0aW9uOiAnbnVtYmVyIG9mIGNvcmVzIGF2YWlsYWJsZScsXG4gICAgdW5pdDogJ2NvcmVzJyxcbiAgICBhZ2dyZWdhdGlvbjogJ25vbmUnLFxuICB9LFxuICAnY3B1L3V0aWxpemF0aW9uJzoge1xuICAgIGRlc2NyaXB0aW9uOiAncmVmZXJzIHRvIENQVSB1dGlsaXphdGlvbi4nLFxuICAgIHVuaXQ6ICdwZXJjZW50YWdlJyxcbiAgICBhZ2dyZWdhdGlvbjogJ2F2ZycsXG4gIH0sXG4gICdkaXNrLWlvJzoge1xuICAgIGRlc2NyaXB0aW9uOiAncmVmZXJzIHRvIEdCIG9mIGRhdGEgd3JpdHRlbi9yZWFkIGZyb20gZGlzaycsXG4gICAgdW5pdDogJ0dCJyxcbiAgICBhZ2dyZWdhdGlvbjogJ3N1bScsXG4gIH0sXG4gIGR1cmF0aW9uOiB7XG4gICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gdGhlIGR1cmF0aW9uIG9mIHRoZSBpbnB1dCcsXG4gICAgdW5pdDogJ3NlY29uZHMnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgZW5lcmd5OiB7XG4gICAgZGVzY3JpcHRpb246ICdhbW91bnQgb2YgZW5lcmd5IHV0aWxpc2VkIGJ5IHRoZSBjb21wb25lbnQnLFxuICAgIHVuaXQ6ICdrV2gnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgJ2NwdS9lbmVyZ3knOiB7XG4gICAgZGVzY3JpcHRpb246ICdFbmVyZ3kgY29uc3VtZWQgYnkgdGhlIENQVSBvZiB0aGUgY29tcG9uZW50JyxcbiAgICB1bml0OiAna1doJyxcbiAgICBhZ2dyZWdhdGlvbjogJ3N1bScsXG4gIH0sXG4gICdkZXZpY2UvZXhwZWN0ZWQtbGlmZXNwYW4nOiB7XG4gICAgZGVzY3JpcHRpb246ICdUb3RhbCBFeHBlY3RlZCBMaWZlc3BhbiBvZiB0aGUgQ29tcG9uZW50IGluIFNlY29uZHMnLFxuICAgIHVuaXQ6ICdzZWNvbmRzJyxcbiAgICBhZ2dyZWdhdGlvbjogJ3N1bScsXG4gIH0sXG4gICdtZW1vcnkvZW5lcmd5Jzoge1xuICAgIGRlc2NyaXB0aW9uOiAnRW5lcmd5IGNvbnN1bWVkIGJ5IHRoZSBNZW1vcnkgb2YgdGhlIGNvbXBvbmVudCcsXG4gICAgdW5pdDogJ2tXaCcsXG4gICAgYWdncmVnYXRpb246ICdzdW0nLFxuICB9LFxuICAnY2FyYm9uLWVtYm9kaWVkJzoge1xuICAgIGRlc2NyaXB0aW9uOiAnRW1ib2RpZWQgRW1pc3Npb25zIG9mIHRoZSBjb21wb25lbnQnLFxuICAgIHVuaXQ6ICdnQ08yZScsXG4gICAgYWdncmVnYXRpb246ICdzdW0nLFxuICB9LFxuICAnbmV0d29yay9lbmVyZ3knOiB7XG4gICAgZGVzY3JpcHRpb246ICdFbmVyZ3kgY29uc3VtZWQgYnkgdGhlIE5ldHdvcmsgb2YgdGhlIGNvbXBvbmVudCcsXG4gICAgdW5pdDogJ2tXaCcsXG4gICAgYWdncmVnYXRpb246ICdzdW0nLFxuICB9LFxuICAnZnVuY3Rpb25hbC11bml0Jzoge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ3RoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbmFsIHVuaXQgaW4gd2hpY2ggdGhlIGZpbmFsIFNDSSB2YWx1ZSBzaG91bGQgYmUgZXhwcmVzc2VkLCBlLmcuIHJlcXVlc3RzLCB1c2VycycsXG4gICAgdW5pdDogJ25vbmUnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgJ2Z1bmN0aW9uYWwtdW5pdC10aW1lJzoge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ3N0cmluZyBkZXNjcmliaW5nIHRoZSB1bml0IG9mIHRpbWUgaW4gd2hpY2ggdGhlIGZpbmFsIFNDSSBjYWxjdWxhdGlvbiBzaG91bGQgYmUgZXhwcmVzc2VkLCBlLmcuIFwiMS1taW5cIicsXG4gICAgdW5pdDogJ25vbmUnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnbm9uZScsXG4gIH0sXG4gICdncHUtdXRpbCc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ3JlZmVycyB0byBDUFUgdXRpbGl6YXRpb24uJyxcbiAgICB1bml0OiAncGVyY2VudGFnZScsXG4gICAgYWdncmVnYXRpb246ICdhdmcnLFxuICB9LFxuICAnZ3JpZC9jYXJib24taW50ZW5zaXR5Jzoge1xuICAgIGRlc2NyaXB0aW9uOiAnQ2FyYm9uIGludGVuc2l0eSBmb3IgdGhlIGdyaWQnLFxuICAgIHVuaXQ6ICdnQ08yZXEva1doJyxcbiAgICBhZ2dyZWdhdGlvbjogJ2F2ZycsXG4gIH0sXG4gICdjbG91ZC9pbnN0YW5jZS10eXBlJzoge1xuICAgIGRlc2NyaXB0aW9uOiAnVHlwZSBvZiBDbG91ZCBJbnN0YW5jZSBuYW1lIHVzZWQgaW4gdGhlIGNsb3VkIHByb3ZpZGVyIEFQSXMnLFxuICAgIHVuaXQ6ICdOb25lJyxcbiAgICBhZ2dyZWdhdGlvbjogJ25vbmUnLFxuICB9LFxuICBnZW9sb2NhdGlvbjoge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0dlb2dyYXBoaWMgbG9jYXRpb24gb2YgcHJvdmlkZXIgYXMgc3RyaW5nIChmb3Igd2F0dC10aW1lIG1vZGVsIGl0IGlzIHByb3ZpZGVkIGFzIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUsIGNvbW1hIHNlcGFyYXRlZCwgaW4gZGVjaW1hbCBkZWdyZWVzKScsXG4gICAgdW5pdDogJ05vbmUgKGRlY2ltYWwgZGVncmVlcyBmb3Igd2F0dC10aW1lIG1vZGVsKScsXG4gICAgYWdncmVnYXRpb246ICdub25lJyxcbiAgfSxcbiAgJ2NhcmJvbi1vcGVyYXRpb25hbCc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ09wZXJhdGlvbmFsIEVtaXNzaW9ucyBvZiB0aGUgY29tcG9uZW50JyxcbiAgICB1bml0OiAnZ0NPMmUnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgJ2NwdS9uYW1lJzoge1xuICAgIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgcGh5c2ljYWwgcHJvY2Vzc29yJyxcbiAgICB1bml0OiAnTm9uZScsXG4gICAgYWdncmVnYXRpb246ICdub25lJyxcbiAgfSxcbiAgJ2Nsb3VkL3ZlbmRvcic6IHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdOYW1lIG9mIHRoZSBjbG91ZCBzZXJ2aWNlIHByb3ZpZGVyIGluIHRoZSBjY2YgbW9kZWwuIENhbiBiZSBhd3MsIGdjcCBvciBhenVyZScsXG4gICAgdW5pdDogJ05vbmUnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnbm9uZScsXG4gIH0sXG4gICdyYW0tYWxsb2MnOiB7XG4gICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gR0Igb2YgbWVtb3J5IGFsbG9jYXRlZC4nLFxuICAgIHVuaXQ6ICdHQicsXG4gICAgYWdncmVnYXRpb246ICdhdmcnLFxuICB9LFxuICAncmFtLXV0aWwnOiB7XG4gICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gcGVyY2VudGFnZSBvZiBtZW1vcnkgdXRpbGl6ZWQuJyxcbiAgICB1bml0OiAncGVyY2VudGFnZScsXG4gICAgYWdncmVnYXRpb246ICdhdmcnLFxuICB9LFxuICAncmVzb3VyY2VzLXJlc2VydmVkJzoge1xuICAgIGRlc2NyaXB0aW9uOiAncmVzb3VyY2VzIHJlc2VydmVkIGZvciBhbiBhcHBsaWNhdGlvbicsXG4gICAgdW5pdDogJ2NvdW50JyxcbiAgICBhZ2dyZWdhdGlvbjogJ25vbmUnLFxuICB9LFxuICAnY3B1L3RoZXJtYWwtZGVzaWduLXBvd2VyJzoge1xuICAgIGRlc2NyaXB0aW9uOiAndGhlcm1hbCBkZXNpZ24gcG93ZXIgZm9yIGEgcHJvY2Vzc29yJyxcbiAgICB1bml0OiAna3doJyxcbiAgICBhZ2dyZWdhdGlvbjogJ2F2ZycsXG4gIH0sXG4gICdkZXZpY2UvZW1pc3Npb25zLWVtYm9kaWVkJzoge1xuICAgIGRlc2NyaXB0aW9uOiAndG90YWwgZW1ib2RpZWQgZW1pc3Npb25zIG9mIHNvbWUgY29tcG9uZW50JyxcbiAgICB1bml0OiAnZ0NPMmUnLFxuICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgfSxcbiAgdGltZXN0YW1wOiB7XG4gICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gdGhlIHRpbWUgb2Ygb2NjdXJyZW5jZSBvZiB0aGUgaW5wdXQnLFxuICAgIHVuaXQ6ICdSRkMzMzM5JyxcbiAgICBhZ2dyZWdhdGlvbjogJ25vbmUnLFxuICB9LFxuICAndGltZS1yZXNlcnZlZCc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ3RpbWUgcmVzZXJ2ZWQgZm9yIGEgY29tcG9uZW50JyxcbiAgICB1bml0OiAnc2Vjb25kcycsXG4gICAgYWdncmVnYXRpb246ICdhdmcnLFxuICB9LFxuICAncmVzb3VyY2VzLXRvdGFsJzoge1xuICAgIGRlc2NyaXB0aW9uOiAndG90YWwgcmVzb3VyY2VzIGF2YWlsYWJsZScsXG4gICAgdW5pdDogJ2NvdW50JyxcbiAgICBhZ2dyZWdhdGlvbjogJ25vbmUnLFxuICB9LFxufTtcbiJdfQ==
@@ -1,19 +1,25 @@
1
- import { ClassContainerParams } from '../types/models-universe';
1
+ import { ManifestParameter } from '../types/parameters';
2
2
  export declare const STRINGS: {
3
3
  FILE_IS_NOT_YAML: string;
4
- IMPL_IS_MISSING: string;
5
- MISSING_CLASSNAME: string;
4
+ MANIFEST_IS_MISSING: string;
5
+ MISSING_METHOD: string;
6
6
  MISSING_PATH: string;
7
- NOT_MODEL_PLUGIN_EXTENSION: string;
8
- STRUCTURE_MALFORMED: (childName: string) => string;
9
- NOT_INITIALIZED_MODEL: (className: string) => string;
7
+ UNSUPPORTED_PLUGIN: string;
8
+ OVERRIDE_WARNING: string;
10
9
  DISCLAIMER_MESSAGE: string;
11
- NOT_NATIVE_MODEL: string;
10
+ NOT_NATIVE_PLUGIN: string;
12
11
  SOMETHING_WRONG: string;
13
12
  ISSUE_TEMPLATE: string;
14
- NOT_CONSTRUCTABLE_MODEL: (params: ClassContainerParams) => string;
15
13
  INVALID_MODULE_PATH: (path: string) => string;
16
14
  INVALID_TIME_NORMALIZATION: string;
15
+ UNEXPECTED_TIME_CONFIG: string;
17
16
  INVALID_TIME_INTERVAL: string;
17
+ AVOIDING_PADDING: (description: string) => string;
18
+ AVOIDING_PADDING_BY_EDGES: (start: boolean, end: boolean) => string;
18
19
  INVALID_OBSERVATION_OVERLAP: string;
20
+ INVALID_AGGREGATION_METHOD: (metric: string) => string;
21
+ METRIC_MISSING: (metric: string, index: number) => string;
22
+ INVALID_GROUP_BY: (type: string) => string;
23
+ REJECTING_OVERRIDE: (param: ManifestParameter) => string;
24
+ INVALID_EXHAUST_PLUGIN: (pluginName: string) => string;
19
25
  };
@@ -2,33 +2,39 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.STRINGS = void 0;
4
4
  exports.STRINGS = {
5
- FILE_IS_NOT_YAML: 'Provided impl file is not in yaml format.',
6
- IMPL_IS_MISSING: 'Impl file is missing.',
7
- MISSING_CLASSNAME: "Initalization param 'model' is missing.",
5
+ FILE_IS_NOT_YAML: 'Provided manifest is not in yaml format.',
6
+ MANIFEST_IS_MISSING: 'Manifest is missing.',
7
+ MISSING_METHOD: "Initalization param 'method' is missing.",
8
8
  MISSING_PATH: "Initalization param 'path' is missing.",
9
- NOT_MODEL_PLUGIN_EXTENSION: "Provided model does not extend 'ModelPluginInterface'.",
10
- STRUCTURE_MALFORMED: (childName) => `Graph is malformed: graph.children.${childName} is not valid.`,
11
- NOT_INITIALIZED_MODEL: (className) => `You're trying to use not initalized model: ${className}.`,
9
+ UNSUPPORTED_PLUGIN: "Plugin interface doesn't implement 'execute' or 'metadata' methods.",
10
+ OVERRIDE_WARNING: '\n**WARNING**: You are overriding the IF default parameters file. Please be extremely careful of unintended side-effects in your plugin pipeline!\n',
12
11
  DISCLAIMER_MESSAGE: `
13
12
  [!important] Incubation Project
14
13
 
15
- This project is an incubation project being run inside the Green Software Foundation; as such, we *DON’T recommend using it in any critical use case.
14
+ This project is an incubation project being run inside the Green Software Foundation; as such, we DON’T recommend using it in any critical use case.
16
15
  Incubation projects are experimental, offer no support guarantee, have minimal governance and process, and may be retired at any moment. This project may one day graduate, in which case this disclaimer will be removed.
17
16
  `,
18
- NOT_NATIVE_MODEL: `
17
+ NOT_NATIVE_PLUGIN: `
19
18
  [!important]
20
19
 
21
- You are using models that are not part of the Impact Framework standard library. You should do your own research to ensure the models are up to date and accurate. They may not be actively maintained.
20
+ You are using plugins that are not part of the Impact Framework standard library. You should do your own research to ensure the plugins are up to date and accurate. They may not be actively maintained.
22
21
  `,
23
22
  SOMETHING_WRONG: 'Something wrong with cli arguments. Please check docs.',
24
23
  ISSUE_TEMPLATE: `
25
24
  Impact Framework is an alpha release from the Green Software Foundation and is released to capture early feedback. If you'd like to offer some feedback, please use this issue template:
26
25
  https://github.com/Green-Software-Foundation/if/issues/new?assignees=&labels=feedback&projects=&template=feedback.md&title=Feedback+-+
27
26
  `,
28
- NOT_CONSTRUCTABLE_MODEL: (params) => `Provided model '${params.model}' is not constructable or does not belong to given plugin '${params.path}'.`,
29
- INVALID_MODULE_PATH: (path) => `Provided module path: '${path}' is invalid.`,
27
+ INVALID_MODULE_PATH: (path) => `Provided module path: '${path}' is invalid or not found.`,
30
28
  INVALID_TIME_NORMALIZATION: 'Start time or end time is missing.',
29
+ UNEXPECTED_TIME_CONFIG: 'Unexpected node-level config provided for time-sync plugin.',
31
30
  INVALID_TIME_INTERVAL: 'Interval is missing.',
31
+ AVOIDING_PADDING: (description) => `Avoiding padding at ${description}`,
32
+ AVOIDING_PADDING_BY_EDGES: (start, end) => `Avoiding padding at ${start && end ? 'start and end' : start ? 'start' : 'end'}`,
32
33
  INVALID_OBSERVATION_OVERLAP: 'Observation timestamps overlap.',
34
+ INVALID_AGGREGATION_METHOD: (metric) => `Aggregation is not possible for given ${metric} since method is 'none'.`,
35
+ METRIC_MISSING: (metric, index) => `Aggregation metric ${metric} is not found in inputs[${index}].`,
36
+ INVALID_GROUP_BY: (type) => `Invalid group ${type}.`,
37
+ REJECTING_OVERRIDE: (param) => `Rejecting overriding of canonical parameter: ${param.name}.`,
38
+ INVALID_EXHAUST_PLUGIN: (pluginName) => `Invalid exhaust plugin: ${pluginName}.`,
33
39
  };
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFYSxRQUFBLE9BQU8sR0FBRztJQUNyQixnQkFBZ0IsRUFBRSwyQ0FBMkM7SUFDN0QsZUFBZSxFQUFFLHVCQUF1QjtJQUN4QyxpQkFBaUIsRUFBRSx5Q0FBeUM7SUFDNUQsWUFBWSxFQUFFLHdDQUF3QztJQUN0RCwwQkFBMEIsRUFDeEIsd0RBQXdEO0lBQzFELG1CQUFtQixFQUFFLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQ3pDLHNDQUFzQyxTQUFTLGdCQUFnQjtJQUNqRSxxQkFBcUIsRUFBRSxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUMzQyw4Q0FBOEMsU0FBUyxHQUFHO0lBQzVELGtCQUFrQixFQUFFOzs7OztDQUtyQjtJQUNDLGdCQUFnQixFQUFFOzs7O0NBSW5CO0lBQ0MsZUFBZSxFQUFFLHdEQUF3RDtJQUN6RSxjQUFjLEVBQUU7OztDQUdqQjtJQUNDLHVCQUF1QixFQUFFLENBQUMsTUFBNEIsRUFBRSxFQUFFLENBQ3hELG1CQUFtQixNQUFNLENBQUMsS0FBSyw4REFBOEQsTUFBTSxDQUFDLElBQUksSUFBSTtJQUM5RyxtQkFBbUIsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQ3BDLDBCQUEwQixJQUFJLGVBQWU7SUFDL0MsMEJBQTBCLEVBQUUsb0NBQW9DO0lBQ2hFLHFCQUFxQixFQUFFLHNCQUFzQjtJQUM3QywyQkFBMkIsRUFBRSxpQ0FBaUM7Q0FDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2xhc3NDb250YWluZXJQYXJhbXN9IGZyb20gJy4uL3R5cGVzL21vZGVscy11bml2ZXJzZSc7XG5cbmV4cG9ydCBjb25zdCBTVFJJTkdTID0ge1xuICBGSUxFX0lTX05PVF9ZQU1MOiAnUHJvdmlkZWQgaW1wbCBmaWxlIGlzIG5vdCBpbiB5YW1sIGZvcm1hdC4nLFxuICBJTVBMX0lTX01JU1NJTkc6ICdJbXBsIGZpbGUgaXMgbWlzc2luZy4nLFxuICBNSVNTSU5HX0NMQVNTTkFNRTogXCJJbml0YWxpemF0aW9uIHBhcmFtICdtb2RlbCcgaXMgbWlzc2luZy5cIixcbiAgTUlTU0lOR19QQVRIOiBcIkluaXRhbGl6YXRpb24gcGFyYW0gJ3BhdGgnIGlzIG1pc3NpbmcuXCIsXG4gIE5PVF9NT0RFTF9QTFVHSU5fRVhURU5TSU9OOlxuICAgIFwiUHJvdmlkZWQgbW9kZWwgZG9lcyBub3QgZXh0ZW5kICdNb2RlbFBsdWdpbkludGVyZmFjZScuXCIsXG4gIFNUUlVDVFVSRV9NQUxGT1JNRUQ6IChjaGlsZE5hbWU6IHN0cmluZykgPT5cbiAgICBgR3JhcGggaXMgbWFsZm9ybWVkOiBncmFwaC5jaGlsZHJlbi4ke2NoaWxkTmFtZX0gaXMgbm90IHZhbGlkLmAsXG4gIE5PVF9JTklUSUFMSVpFRF9NT0RFTDogKGNsYXNzTmFtZTogc3RyaW5nKSA9PlxuICAgIGBZb3UncmUgdHJ5aW5nIHRvIHVzZSBub3QgaW5pdGFsaXplZCBtb2RlbDogJHtjbGFzc05hbWV9LmAsXG4gIERJU0NMQUlNRVJfTUVTU0FHRTogYFxuWyFpbXBvcnRhbnRdIEluY3ViYXRpb24gUHJvamVjdFxuXG5UaGlzIHByb2plY3QgaXMgYW4gaW5jdWJhdGlvbiBwcm9qZWN0IGJlaW5nIHJ1biBpbnNpZGUgdGhlIEdyZWVuIFNvZnR3YXJlIEZvdW5kYXRpb247IGFzIHN1Y2gsIHdlICpET07igJlUIHJlY29tbWVuZCB1c2luZyBpdCBpbiBhbnkgY3JpdGljYWwgdXNlIGNhc2UuIFxuSW5jdWJhdGlvbiBwcm9qZWN0cyBhcmUgZXhwZXJpbWVudGFsLCBvZmZlciBubyBzdXBwb3J0IGd1YXJhbnRlZSwgaGF2ZSBtaW5pbWFsIGdvdmVybmFuY2UgYW5kIHByb2Nlc3MsIGFuZCBtYXkgYmUgcmV0aXJlZCBhdCBhbnkgbW9tZW50LiBUaGlzIHByb2plY3QgbWF5IG9uZSBkYXkgZ3JhZHVhdGUsIGluIHdoaWNoIGNhc2UgdGhpcyBkaXNjbGFpbWVyIHdpbGwgYmUgcmVtb3ZlZC5cbmAsXG4gIE5PVF9OQVRJVkVfTU9ERUw6IGBcblshaW1wb3J0YW50XVxuXG5Zb3UgYXJlIHVzaW5nIG1vZGVscyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgSW1wYWN0IEZyYW1ld29yayBzdGFuZGFyZCBsaWJyYXJ5LiBZb3Ugc2hvdWxkIGRvIHlvdXIgb3duIHJlc2VhcmNoIHRvIGVuc3VyZSB0aGUgbW9kZWxzIGFyZSB1cCB0byBkYXRlIGFuZCBhY2N1cmF0ZS4gVGhleSBtYXkgbm90IGJlIGFjdGl2ZWx5IG1haW50YWluZWQuICBcbmAsXG4gIFNPTUVUSElOR19XUk9ORzogJ1NvbWV0aGluZyB3cm9uZyB3aXRoIGNsaSBhcmd1bWVudHMuIFBsZWFzZSBjaGVjayBkb2NzLicsXG4gIElTU1VFX1RFTVBMQVRFOiBgXG5JbXBhY3QgRnJhbWV3b3JrIGlzIGFuIGFscGhhIHJlbGVhc2UgZnJvbSB0aGUgR3JlZW4gU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgaXMgcmVsZWFzZWQgdG8gY2FwdHVyZSBlYXJseSBmZWVkYmFjay4gSWYgeW91J2QgbGlrZSB0byBvZmZlciBzb21lIGZlZWRiYWNrLCBwbGVhc2UgdXNlIHRoaXMgaXNzdWUgdGVtcGxhdGU6IFxuaHR0cHM6Ly9naXRodWIuY29tL0dyZWVuLVNvZnR3YXJlLUZvdW5kYXRpb24vaWYvaXNzdWVzL25ldz9hc3NpZ25lZXM9JmxhYmVscz1mZWVkYmFjayZwcm9qZWN0cz0mdGVtcGxhdGU9ZmVlZGJhY2subWQmdGl0bGU9RmVlZGJhY2srLStcbmAsXG4gIE5PVF9DT05TVFJVQ1RBQkxFX01PREVMOiAocGFyYW1zOiBDbGFzc0NvbnRhaW5lclBhcmFtcykgPT5cbiAgICBgUHJvdmlkZWQgbW9kZWwgJyR7cGFyYW1zLm1vZGVsfScgaXMgbm90IGNvbnN0cnVjdGFibGUgb3IgZG9lcyBub3QgYmVsb25nIHRvIGdpdmVuIHBsdWdpbiAnJHtwYXJhbXMucGF0aH0nLmAsXG4gIElOVkFMSURfTU9EVUxFX1BBVEg6IChwYXRoOiBzdHJpbmcpID0+XG4gICAgYFByb3ZpZGVkIG1vZHVsZSBwYXRoOiAnJHtwYXRofScgaXMgaW52YWxpZC5gLFxuICBJTlZBTElEX1RJTUVfTk9STUFMSVpBVElPTjogJ1N0YXJ0IHRpbWUgb3IgZW5kIHRpbWUgaXMgbWlzc2luZy4nLFxuICBJTlZBTElEX1RJTUVfSU5URVJWQUw6ICdJbnRlcnZhbCBpcyBtaXNzaW5nLicsXG4gIElOVkFMSURfT0JTRVJWQVRJT05fT1ZFUkxBUDogJ09ic2VydmF0aW9uIHRpbWVzdGFtcHMgb3ZlcmxhcC4nLFxufTtcbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFYSxRQUFBLE9BQU8sR0FBRztJQUNyQixnQkFBZ0IsRUFBRSwwQ0FBMEM7SUFDNUQsbUJBQW1CLEVBQUUsc0JBQXNCO0lBQzNDLGNBQWMsRUFBRSwwQ0FBMEM7SUFDMUQsWUFBWSxFQUFFLHdDQUF3QztJQUN0RCxrQkFBa0IsRUFDaEIscUVBQXFFO0lBQ3ZFLGdCQUFnQixFQUNkLHFKQUFxSjtJQUN2SixrQkFBa0IsRUFBRTs7Ozs7Q0FLckI7SUFDQyxpQkFBaUIsRUFBRTs7OztDQUlwQjtJQUNDLGVBQWUsRUFBRSx3REFBd0Q7SUFDekUsY0FBYyxFQUFFOzs7Q0FHakI7SUFDQyxtQkFBbUIsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQ3BDLDBCQUEwQixJQUFJLDRCQUE0QjtJQUM1RCwwQkFBMEIsRUFBRSxvQ0FBb0M7SUFDaEUsc0JBQXNCLEVBQ3BCLDZEQUE2RDtJQUMvRCxxQkFBcUIsRUFBRSxzQkFBc0I7SUFDN0MsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFtQixFQUFFLEVBQUUsQ0FDeEMsdUJBQXVCLFdBQVcsRUFBRTtJQUN0Qyx5QkFBeUIsRUFBRSxDQUFDLEtBQWMsRUFBRSxHQUFZLEVBQUUsRUFBRSxDQUMxRCx1QkFDRSxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUNyRCxFQUFFO0lBQ0osMkJBQTJCLEVBQUUsaUNBQWlDO0lBQzlELDBCQUEwQixFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FDN0MseUNBQXlDLE1BQU0sMEJBQTBCO0lBQzNFLGNBQWMsRUFBRSxDQUFDLE1BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUNoRCxzQkFBc0IsTUFBTSwyQkFBMkIsS0FBSyxJQUFJO0lBQ2xFLGdCQUFnQixFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsSUFBSSxHQUFHO0lBQzVELGtCQUFrQixFQUFFLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQy9DLGdEQUFnRCxLQUFLLENBQUMsSUFBSSxHQUFHO0lBQy9ELHNCQUFzQixFQUFFLENBQUMsVUFBa0IsRUFBRSxFQUFFLENBQzdDLDJCQUEyQixVQUFVLEdBQUc7Q0FDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFuaWZlc3RQYXJhbWV0ZXJ9IGZyb20gJy4uL3R5cGVzL3BhcmFtZXRlcnMnO1xuXG5leHBvcnQgY29uc3QgU1RSSU5HUyA9IHtcbiAgRklMRV9JU19OT1RfWUFNTDogJ1Byb3ZpZGVkIG1hbmlmZXN0IGlzIG5vdCBpbiB5YW1sIGZvcm1hdC4nLFxuICBNQU5JRkVTVF9JU19NSVNTSU5HOiAnTWFuaWZlc3QgaXMgbWlzc2luZy4nLFxuICBNSVNTSU5HX01FVEhPRDogXCJJbml0YWxpemF0aW9uIHBhcmFtICdtZXRob2QnIGlzIG1pc3NpbmcuXCIsXG4gIE1JU1NJTkdfUEFUSDogXCJJbml0YWxpemF0aW9uIHBhcmFtICdwYXRoJyBpcyBtaXNzaW5nLlwiLFxuICBVTlNVUFBPUlRFRF9QTFVHSU46XG4gICAgXCJQbHVnaW4gaW50ZXJmYWNlIGRvZXNuJ3QgaW1wbGVtZW50ICdleGVjdXRlJyBvciAnbWV0YWRhdGEnIG1ldGhvZHMuXCIsXG4gIE9WRVJSSURFX1dBUk5JTkc6XG4gICAgJ1xcbioqV0FSTklORyoqOiBZb3UgYXJlIG92ZXJyaWRpbmcgdGhlIElGIGRlZmF1bHQgcGFyYW1ldGVycyBmaWxlLiBQbGVhc2UgYmUgZXh0cmVtZWx5IGNhcmVmdWwgb2YgdW5pbnRlbmRlZCBzaWRlLWVmZmVjdHMgaW4geW91ciBwbHVnaW4gcGlwZWxpbmUhXFxuJyxcbiAgRElTQ0xBSU1FUl9NRVNTQUdFOiBgXG5bIWltcG9ydGFudF0gSW5jdWJhdGlvbiBQcm9qZWN0XG5cblRoaXMgcHJvamVjdCBpcyBhbiBpbmN1YmF0aW9uIHByb2plY3QgYmVpbmcgcnVuIGluc2lkZSB0aGUgR3JlZW4gU29mdHdhcmUgRm91bmRhdGlvbjsgYXMgc3VjaCwgd2UgRE9O4oCZVCByZWNvbW1lbmQgdXNpbmcgaXQgaW4gYW55IGNyaXRpY2FsIHVzZSBjYXNlLiBcbkluY3ViYXRpb24gcHJvamVjdHMgYXJlIGV4cGVyaW1lbnRhbCwgb2ZmZXIgbm8gc3VwcG9ydCBndWFyYW50ZWUsIGhhdmUgbWluaW1hbCBnb3Zlcm5hbmNlIGFuZCBwcm9jZXNzLCBhbmQgbWF5IGJlIHJldGlyZWQgYXQgYW55IG1vbWVudC4gVGhpcyBwcm9qZWN0IG1heSBvbmUgZGF5IGdyYWR1YXRlLCBpbiB3aGljaCBjYXNlIHRoaXMgZGlzY2xhaW1lciB3aWxsIGJlIHJlbW92ZWQuXG5gLFxuICBOT1RfTkFUSVZFX1BMVUdJTjogYFxuWyFpbXBvcnRhbnRdXG5cbllvdSBhcmUgdXNpbmcgcGx1Z2lucyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgSW1wYWN0IEZyYW1ld29yayBzdGFuZGFyZCBsaWJyYXJ5LiBZb3Ugc2hvdWxkIGRvIHlvdXIgb3duIHJlc2VhcmNoIHRvIGVuc3VyZSB0aGUgcGx1Z2lucyBhcmUgdXAgdG8gZGF0ZSBhbmQgYWNjdXJhdGUuIFRoZXkgbWF5IG5vdCBiZSBhY3RpdmVseSBtYWludGFpbmVkLiAgXG5gLFxuICBTT01FVEhJTkdfV1JPTkc6ICdTb21ldGhpbmcgd3Jvbmcgd2l0aCBjbGkgYXJndW1lbnRzLiBQbGVhc2UgY2hlY2sgZG9jcy4nLFxuICBJU1NVRV9URU1QTEFURTogYFxuSW1wYWN0IEZyYW1ld29yayBpcyBhbiBhbHBoYSByZWxlYXNlIGZyb20gdGhlIEdyZWVuIFNvZnR3YXJlIEZvdW5kYXRpb24gYW5kIGlzIHJlbGVhc2VkIHRvIGNhcHR1cmUgZWFybHkgZmVlZGJhY2suIElmIHlvdSdkIGxpa2UgdG8gb2ZmZXIgc29tZSBmZWVkYmFjaywgcGxlYXNlIHVzZSB0aGlzIGlzc3VlIHRlbXBsYXRlOiBcbmh0dHBzOi8vZ2l0aHViLmNvbS9HcmVlbi1Tb2Z0d2FyZS1Gb3VuZGF0aW9uL2lmL2lzc3Vlcy9uZXc/YXNzaWduZWVzPSZsYWJlbHM9ZmVlZGJhY2smcHJvamVjdHM9JnRlbXBsYXRlPWZlZWRiYWNrLm1kJnRpdGxlPUZlZWRiYWNrKy0rXG5gLFxuICBJTlZBTElEX01PRFVMRV9QQVRIOiAocGF0aDogc3RyaW5nKSA9PlxuICAgIGBQcm92aWRlZCBtb2R1bGUgcGF0aDogJyR7cGF0aH0nIGlzIGludmFsaWQgb3Igbm90IGZvdW5kLmAsXG4gIElOVkFMSURfVElNRV9OT1JNQUxJWkFUSU9OOiAnU3RhcnQgdGltZSBvciBlbmQgdGltZSBpcyBtaXNzaW5nLicsXG4gIFVORVhQRUNURURfVElNRV9DT05GSUc6XG4gICAgJ1VuZXhwZWN0ZWQgbm9kZS1sZXZlbCBjb25maWcgcHJvdmlkZWQgZm9yIHRpbWUtc3luYyBwbHVnaW4uJyxcbiAgSU5WQUxJRF9USU1FX0lOVEVSVkFMOiAnSW50ZXJ2YWwgaXMgbWlzc2luZy4nLFxuICBBVk9JRElOR19QQURESU5HOiAoZGVzY3JpcHRpb246IHN0cmluZykgPT5cbiAgICBgQXZvaWRpbmcgcGFkZGluZyBhdCAke2Rlc2NyaXB0aW9ufWAsXG4gIEFWT0lESU5HX1BBRERJTkdfQllfRURHRVM6IChzdGFydDogYm9vbGVhbiwgZW5kOiBib29sZWFuKSA9PlxuICAgIGBBdm9pZGluZyBwYWRkaW5nIGF0ICR7XG4gICAgICBzdGFydCAmJiBlbmQgPyAnc3RhcnQgYW5kIGVuZCcgOiBzdGFydCA/ICdzdGFydCcgOiAnZW5kJ1xuICAgIH1gLFxuICBJTlZBTElEX09CU0VSVkFUSU9OX09WRVJMQVA6ICdPYnNlcnZhdGlvbiB0aW1lc3RhbXBzIG92ZXJsYXAuJyxcbiAgSU5WQUxJRF9BR0dSRUdBVElPTl9NRVRIT0Q6IChtZXRyaWM6IHN0cmluZykgPT5cbiAgICBgQWdncmVnYXRpb24gaXMgbm90IHBvc3NpYmxlIGZvciBnaXZlbiAke21ldHJpY30gc2luY2UgbWV0aG9kIGlzICdub25lJy5gLFxuICBNRVRSSUNfTUlTU0lORzogKG1ldHJpYzogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgIGBBZ2dyZWdhdGlvbiBtZXRyaWMgJHttZXRyaWN9IGlzIG5vdCBmb3VuZCBpbiBpbnB1dHNbJHtpbmRleH1dLmAsXG4gIElOVkFMSURfR1JPVVBfQlk6ICh0eXBlOiBzdHJpbmcpID0+IGBJbnZhbGlkIGdyb3VwICR7dHlwZX0uYCxcbiAgUkVKRUNUSU5HX09WRVJSSURFOiAocGFyYW06IE1hbmlmZXN0UGFyYW1ldGVyKSA9PlxuICAgIGBSZWplY3Rpbmcgb3ZlcnJpZGluZyBvZiBjYW5vbmljYWwgcGFyYW1ldGVyOiAke3BhcmFtLm5hbWV9LmAsXG4gIElOVkFMSURfRVhIQVVTVF9QTFVHSU46IChwbHVnaW5OYW1lOiBzdHJpbmcpID0+XG4gICAgYEludmFsaWQgZXhoYXVzdCBwbHVnaW46ICR7cGx1Z2luTmFtZX0uYCxcbn07XG4iXX0=
package/build/index.js CHANGED
@@ -1,53 +1,33 @@
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
+ const aggregate_1 = require("./lib/aggregate");
5
+ const compute_1 = require("./lib/compute");
6
+ const exhaust_1 = require("./lib/exhaust");
7
+ const initialize_1 = require("./lib/initialize");
8
+ const load_1 = require("./lib/load");
9
+ const parameterize_1 = require("./lib/parameterize");
6
10
  const args_1 = require("./util/args");
7
11
  const errors_1 = require("./util/errors");
8
12
  const helpers_1 = require("./util/helpers");
9
- const validations_1 = require("./util/validations");
10
- const yaml_1 = require("./util/yaml");
13
+ const logger_1 = require("./util/logger");
11
14
  const config_1 = require("./config");
12
15
  const { CliInputError } = errors_1.ERRORS;
13
16
  const { DISCLAIMER_MESSAGE, SOMETHING_WRONG } = config_1.STRINGS;
14
- /**
15
- * 1. Parses yml input/output process arguments.
16
- * 2. Opens yaml file as an object.
17
- * 3. Validates given impl to match basic structure.
18
- * 4. Initializes requested models.
19
- * 5. Initializes graph, does computing.
20
- * 6. Saves processed object as a yaml file.
21
- * @example run `npm run impact-engine -- --impl ./test.yml --ompl ./result.yml`
22
- */
23
17
  const impactEngine = async () => {
24
- console.log(DISCLAIMER_MESSAGE);
25
- const processParams = (0, args_1.parseProcessArgument)();
26
- if (processParams) {
27
- const { inputPath, outputPath } = processParams;
28
- const rawImpl = await (0, yaml_1.openYamlFileAsObject)(inputPath);
29
- // Lifecycle Validation
30
- const impl = (0, validations_1.validateImpl)(rawImpl);
31
- // Lifecycle Initialize Models
32
- const modelsHandbook = new models_universe_1.ModelsUniverse();
33
- for (const model of impl.initialize.models) {
34
- await modelsHandbook.writeDown(model);
35
- }
36
- // Lifecycle Computing
37
- const engine = new supercomputer_1.Supercomputer(impl, modelsHandbook);
38
- const ompl = await engine.compute();
39
- if (impl.aggregation) {
40
- const aggregations = engine.calculateAggregation();
41
- ompl['aggregated-outputs'] = aggregations;
42
- }
43
- if (!outputPath) {
44
- console.log(JSON.stringify(ompl));
45
- return;
46
- }
47
- await (0, yaml_1.saveYamlFileAs)(ompl, outputPath);
18
+ logger_1.logger.info(DISCLAIMER_MESSAGE);
19
+ const options = (0, args_1.parseArgs)();
20
+ if (options) {
21
+ const { inputPath, outputPath, paramPath } = options;
22
+ const { tree, context, parameters } = await (0, load_1.load)(inputPath, paramPath);
23
+ parameterize_1.parameterize.combine(context.params, parameters);
24
+ const plugins = await (0, initialize_1.initalize)(context.initialize.plugins);
25
+ const computedTree = await (0, compute_1.compute)(tree, { context, plugins });
26
+ const aggregatedTree = (0, aggregate_1.aggregate)(computedTree, context.aggregation);
27
+ (0, exhaust_1.exhaust)(aggregatedTree, context, outputPath);
48
28
  return;
49
29
  }
50
30
  return Promise.reject(new CliInputError(SOMETHING_WRONG));
51
31
  };
52
32
  impactEngine().catch(helpers_1.andHandle);
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkRBQXFEO0FBQ3JELHVEQUFrRDtBQUVsRCxzQ0FBaUQ7QUFDakQsMENBQXFDO0FBQ3JDLDRDQUF5QztBQUN6QyxvREFBZ0Q7QUFDaEQsc0NBQWlFO0FBRWpFLHFDQUFpQztBQUlqQyxNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRS9CLE1BQU0sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXREOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRWhDLE1BQU0sYUFBYSxHQUFHLElBQUEsMkJBQW9CLEdBQUUsQ0FBQztJQUU3QyxJQUFJLGFBQWEsRUFBRTtRQUNqQixNQUFNLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBQyxHQUFHLGFBQWEsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEsMkJBQW9CLEVBQU8sU0FBUyxDQUFDLENBQUM7UUFFNUQsdUJBQXVCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUEsMEJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyw4QkFBOEI7UUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQ0FBYyxFQUFFLENBQUM7UUFDNUMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUMxQyxNQUFNLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFFRCxzQkFBc0I7UUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSw2QkFBYSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsWUFBWSxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE9BQU87U0FDUjtRQUVELE1BQU0sSUFBQSxxQkFBYyxFQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV2QyxPQUFPO0tBQ1I7SUFFRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUM7QUFFRixZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi9saWIvbW9kZWxzLXVuaXZlcnNlJztcbmltcG9ydCB7U3VwZXJjb21wdXRlcn0gZnJvbSAnLi9saWIvc3VwZXJjb21wdXRlcic7XG5cbmltcG9ydCB7cGFyc2VQcm9jZXNzQXJndW1lbnR9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICcuL3V0aWwvZXJyb3JzJztcbmltcG9ydCB7YW5kSGFuZGxlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge3ZhbGlkYXRlSW1wbH0gZnJvbSAnLi91dGlsL3ZhbGlkYXRpb25zJztcbmltcG9ydCB7b3BlbllhbWxGaWxlQXNPYmplY3QsIHNhdmVZYW1sRmlsZUFzfSBmcm9tICcuL3V0aWwveWFtbCc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi9jb25maWcnO1xuXG5pbXBvcnQge0ltcGx9IGZyb20gJy4vdHlwZXMvaW1wbCc7XG5cbmNvbnN0IHtDbGlJbnB1dEVycm9yfSA9IEVSUk9SUztcblxuY29uc3Qge0RJU0NMQUlNRVJfTUVTU0FHRSwgU09NRVRISU5HX1dST05HfSA9IFNUUklOR1M7XG5cbi8qKlxuICogMS4gUGFyc2VzIHltbCBpbnB1dC9vdXRwdXQgcHJvY2VzcyBhcmd1bWVudHMuXG4gKiAyLiBPcGVucyB5YW1sIGZpbGUgYXMgYW4gb2JqZWN0LlxuICogMy4gVmFsaWRhdGVzIGdpdmVuIGltcGwgdG8gbWF0Y2ggYmFzaWMgc3RydWN0dXJlLlxuICogNC4gSW5pdGlhbGl6ZXMgcmVxdWVzdGVkIG1vZGVscy5cbiAqIDUuIEluaXRpYWxpemVzIGdyYXBoLCBkb2VzIGNvbXB1dGluZy5cbiAqIDYuIFNhdmVzIHByb2Nlc3NlZCBvYmplY3QgYXMgYSB5YW1sIGZpbGUuXG4gKiBAZXhhbXBsZSBydW4gYG5wbSBydW4gaW1wYWN0LWVuZ2luZSAtLSAtLWltcGwgLi90ZXN0LnltbCAtLW9tcGwgLi9yZXN1bHQueW1sYFxuICovXG5jb25zdCBpbXBhY3RFbmdpbmUgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKERJU0NMQUlNRVJfTUVTU0FHRSk7XG5cbiAgY29uc3QgcHJvY2Vzc1BhcmFtcyA9IHBhcnNlUHJvY2Vzc0FyZ3VtZW50KCk7XG5cbiAgaWYgKHByb2Nlc3NQYXJhbXMpIHtcbiAgICBjb25zdCB7aW5wdXRQYXRoLCBvdXRwdXRQYXRofSA9IHByb2Nlc3NQYXJhbXM7XG4gICAgY29uc3QgcmF3SW1wbCA9IGF3YWl0IG9wZW5ZYW1sRmlsZUFzT2JqZWN0PEltcGw+KGlucHV0UGF0aCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgVmFsaWRhdGlvblxuICAgIGNvbnN0IGltcGwgPSB2YWxpZGF0ZUltcGwocmF3SW1wbCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgSW5pdGlhbGl6ZSBNb2RlbHNcbiAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgaW1wbC5pbml0aWFsaXplLm1vZGVscykge1xuICAgICAgYXdhaXQgbW9kZWxzSGFuZGJvb2sud3JpdGVEb3duKG1vZGVsKTtcbiAgICB9XG5cbiAgICAvLyBMaWZlY3ljbGUgQ29tcHV0aW5nXG4gICAgY29uc3QgZW5naW5lID0gbmV3IFN1cGVyY29tcHV0ZXIoaW1wbCwgbW9kZWxzSGFuZGJvb2spO1xuICAgIGNvbnN0IG9tcGwgPSBhd2FpdCBlbmdpbmUuY29tcHV0ZSgpO1xuXG4gICAgaWYgKGltcGwuYWdncmVnYXRpb24pIHtcbiAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IGVuZ2luZS5jYWxjdWxhdGVBZ2dyZWdhdGlvbigpO1xuICAgICAgb21wbFsnYWdncmVnYXRlZC1vdXRwdXRzJ10gPSBhZ2dyZWdhdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXRQYXRoKSB7XG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShvbXBsKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgc2F2ZVlhbWxGaWxlQXMob21wbCwgb3V0cHV0UGF0aCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IENsaUlucHV0RXJyb3IoU09NRVRISU5HX1dST05HKSk7XG59O1xuXG5pbXBhY3RFbmdpbmUoKS5jYXRjaChhbmRIYW5kbGUpO1xuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0NBQTBDO0FBQzFDLDJDQUFzQztBQUN0QywyQ0FBc0M7QUFDdEMsaURBQTJDO0FBQzNDLHFDQUFnQztBQUNoQyxxREFBZ0Q7QUFFaEQsc0NBQXNDO0FBQ3RDLDBDQUFxQztBQUNyQyw0Q0FBeUM7QUFDekMsMENBQXFDO0FBRXJDLHFDQUFpQztBQUVqQyxNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRS9CLE1BQU0sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXRELE1BQU0sWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzlCLGVBQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFBLGdCQUFTLEdBQUUsQ0FBQztJQUU1QixJQUFJLE9BQU8sRUFBRTtRQUNYLE1BQU0sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBQyxHQUFHLE9BQU8sQ0FBQztRQUVuRCxNQUFNLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsR0FBRyxNQUFNLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyRSwyQkFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxzQkFBUyxFQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLGlCQUFPLEVBQUMsSUFBSSxFQUFFLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDN0QsTUFBTSxjQUFjLEdBQUcsSUFBQSxxQkFBUyxFQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEUsSUFBQSxpQkFBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFN0MsT0FBTztLQUNSO0lBRUQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDO0FBRUYsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFTLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7YWdncmVnYXRlfSBmcm9tICcuL2xpYi9hZ2dyZWdhdGUnO1xuaW1wb3J0IHtjb21wdXRlfSBmcm9tICcuL2xpYi9jb21wdXRlJztcbmltcG9ydCB7ZXhoYXVzdH0gZnJvbSAnLi9saWIvZXhoYXVzdCc7XG5pbXBvcnQge2luaXRhbGl6ZX0gZnJvbSAnLi9saWIvaW5pdGlhbGl6ZSc7XG5pbXBvcnQge2xvYWR9IGZyb20gJy4vbGliL2xvYWQnO1xuaW1wb3J0IHtwYXJhbWV0ZXJpemV9IGZyb20gJy4vbGliL3BhcmFtZXRlcml6ZSc7XG5cbmltcG9ydCB7cGFyc2VBcmdzfSBmcm9tICcuL3V0aWwvYXJncyc7XG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi91dGlsL2Vycm9ycyc7XG5pbXBvcnQge2FuZEhhbmRsZX0gZnJvbSAnLi91dGlsL2hlbHBlcnMnO1xuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4vdXRpbC9sb2dnZXInO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4vY29uZmlnJztcblxuY29uc3Qge0NsaUlucHV0RXJyb3J9ID0gRVJST1JTO1xuXG5jb25zdCB7RElTQ0xBSU1FUl9NRVNTQUdFLCBTT01FVEhJTkdfV1JPTkd9ID0gU1RSSU5HUztcblxuY29uc3QgaW1wYWN0RW5naW5lID0gYXN5bmMgKCkgPT4ge1xuICBsb2dnZXIuaW5mbyhESVNDTEFJTUVSX01FU1NBR0UpO1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKCk7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBjb25zdCB7aW5wdXRQYXRoLCBvdXRwdXRQYXRoLCBwYXJhbVBhdGh9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IHt0cmVlLCBjb250ZXh0LCBwYXJhbWV0ZXJzfSA9IGF3YWl0IGxvYWQoaW5wdXRQYXRoLCBwYXJhbVBhdGgpO1xuICAgIHBhcmFtZXRlcml6ZS5jb21iaW5lKGNvbnRleHQucGFyYW1zLCBwYXJhbWV0ZXJzKTtcbiAgICBjb25zdCBwbHVnaW5zID0gYXdhaXQgaW5pdGFsaXplKGNvbnRleHQuaW5pdGlhbGl6ZS5wbHVnaW5zKTtcbiAgICBjb25zdCBjb21wdXRlZFRyZWUgPSBhd2FpdCBjb21wdXRlKHRyZWUsIHtjb250ZXh0LCBwbHVnaW5zfSk7XG4gICAgY29uc3QgYWdncmVnYXRlZFRyZWUgPSBhZ2dyZWdhdGUoY29tcHV0ZWRUcmVlLCBjb250ZXh0LmFnZ3JlZ2F0aW9uKTtcbiAgICBleGhhdXN0KGFnZ3JlZ2F0ZWRUcmVlLCBjb250ZXh0LCBvdXRwdXRQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQ2xpSW5wdXRFcnJvcihTT01FVEhJTkdfV1JPTkcpKTtcbn07XG5cbmltcGFjdEVuZ2luZSgpLmNhdGNoKGFuZEhhbmRsZSk7XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import { AggregationParams } from '../types/manifest';
2
+ /**
3
+ * If aggregation is disabled, then returns given `tree`.
4
+ * Otherwise creates copy of the tree, then applies aggregation to it.
5
+ */
6
+ export declare const aggregate: (tree: any, aggregationParams?: AggregationParams) => any;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.aggregate = void 0;
4
+ const aggregation_helper_1 = require("../util/aggregation-helper");
5
+ /**
6
+ * Gets `i`th element from all children outputs and collects them in single array.
7
+ */
8
+ const getIthElementsFromChildren = (children, i) => {
9
+ const values = Object.values(children);
10
+ return values.map((value) => {
11
+ const output = value.outputs;
12
+ return output[i];
13
+ });
14
+ };
15
+ /**
16
+ * 1. Gets the i'th element from each childrens outputs (treating children as rows and we are after a column of data).
17
+ * 2. Now we just aggregate over the `ithSliceOfOutputs` the same as we did for the normal outputs.
18
+ */
19
+ const temporalAggregation = (node, metrics) => {
20
+ const outputs = [];
21
+ const values = Object.values(node.children);
22
+ for (let i = 0; i < values[0].outputs.length; i++) {
23
+ const ithSliceOfOutputs = getIthElementsFromChildren(node.children, i);
24
+ outputs.push((0, aggregation_helper_1.aggregateInputsIntoOne)(ithSliceOfOutputs, metrics));
25
+ }
26
+ return outputs;
27
+ };
28
+ /**
29
+ * Navigates the tree depth first, bottom up,
30
+ * left to right aggregating the component nodes and then the grouping nodes will be aggregated
31
+ * only when all their child nodes have been aggregated.
32
+ * 1. Aggregates all the children.
33
+ * 2. At this point you can be positive all your children have been aggregated and so you can now work on aggregating yourself.
34
+ * 3. It's component node, аggregates just the outputs of THIS component node (horizontal/component aggregation).
35
+ * 4. Else it's grouping node, first does temporal aggregation. This assumes everything is on the same time-grid.
36
+ * The outputs of the grouping node are the aggregated time bucketed outputs of it's children.
37
+ * 5. Now a grouping node has it's own outputs, it can horizotnally aggregate them.
38
+ */
39
+ const aggregateNode = (node, aggregationParams) => {
40
+ const { metrics, type } = aggregationParams;
41
+ if (node.children) {
42
+ for (const child in node.children) {
43
+ aggregateNode(node.children[child], aggregationParams);
44
+ }
45
+ }
46
+ if (!node.children) {
47
+ if (type === 'horizontal' || type === 'both') {
48
+ node.aggregated = (0, aggregation_helper_1.aggregateInputsIntoOne)(node.outputs, metrics);
49
+ }
50
+ }
51
+ else {
52
+ if (type === 'vertical' || type === 'both') {
53
+ const outputs = temporalAggregation(node, metrics);
54
+ node.outputs = outputs;
55
+ node.aggregated = (0, aggregation_helper_1.aggregateInputsIntoOne)(outputs, metrics);
56
+ }
57
+ }
58
+ };
59
+ /**
60
+ * If aggregation is disabled, then returns given `tree`.
61
+ * Otherwise creates copy of the tree, then applies aggregation to it.
62
+ */
63
+ const aggregate = (tree, aggregationParams) => {
64
+ if (!aggregationParams || !aggregationParams.type) {
65
+ return tree;
66
+ }
67
+ const copyOfTree = structuredClone(tree);
68
+ aggregateNode(copyOfTree, aggregationParams);
69
+ return copyOfTree;
70
+ };
71
+ exports.aggregate = aggregate;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9hZ2dyZWdhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQWtFO0FBS2xFOztHQUVHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLFFBQWEsRUFBRSxDQUFTLEVBQUUsRUFBRTtJQUM5RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1FBQy9CLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFFN0IsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBUyxFQUFFLE9BQWlCLEVBQUUsRUFBRTtJQUMzRCxNQUFNLE9BQU8sR0FBbUIsRUFBRSxDQUFDO0lBQ25DLE1BQU0sTUFBTSxHQUFRLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWpELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNqRCxNQUFNLGlCQUFpQixHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFBLDJDQUFzQixFQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDbEU7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFTLEVBQUUsaUJBQW9DLEVBQUUsRUFBRTtJQUN4RSxNQUFNLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxHQUFHLGlCQUFpQixDQUFDO0lBRTFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNqQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztTQUN4RDtLQUNGO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDbEIsSUFBSSxJQUFJLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFBLDJDQUFzQixFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDakU7S0FDRjtTQUFNO1FBQ0wsSUFBSSxJQUFJLEtBQUssVUFBVSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDMUMsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBQSwyQ0FBc0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDNUQ7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNJLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBUyxFQUFFLGlCQUFxQyxFQUFFLEVBQUU7SUFDNUUsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsYUFBYSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBRTdDLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQVRXLFFBQUEsU0FBUyxhQVNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWdncmVnYXRlSW5wdXRzSW50b09uZX0gZnJvbSAnLi4vdXRpbC9hZ2dyZWdhdGlvbi1oZWxwZXInO1xuXG5pbXBvcnQge1BsdWdpblBhcmFtc30gZnJvbSAnLi4vdHlwZXMvaW50ZXJmYWNlJztcbmltcG9ydCB7QWdncmVnYXRpb25QYXJhbXN9IGZyb20gJy4uL3R5cGVzL21hbmlmZXN0JztcblxuLyoqXG4gKiBHZXRzIGBpYHRoIGVsZW1lbnQgZnJvbSBhbGwgY2hpbGRyZW4gb3V0cHV0cyBhbmQgY29sbGVjdHMgdGhlbSBpbiBzaW5nbGUgYXJyYXkuXG4gKi9cbmNvbnN0IGdldEl0aEVsZW1lbnRzRnJvbUNoaWxkcmVuID0gKGNoaWxkcmVuOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKGNoaWxkcmVuKTtcblxuICByZXR1cm4gdmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4ge1xuICAgIGNvbnN0IG91dHB1dCA9IHZhbHVlLm91dHB1dHM7XG5cbiAgICByZXR1cm4gb3V0cHV0W2ldO1xuICB9KTtcbn07XG5cbi8qKlxuICogMS4gR2V0cyB0aGUgaSd0aCBlbGVtZW50IGZyb20gZWFjaCBjaGlsZHJlbnMgb3V0cHV0cyAodHJlYXRpbmcgY2hpbGRyZW4gYXMgcm93cyBhbmQgd2UgYXJlIGFmdGVyIGEgY29sdW1uIG9mIGRhdGEpLlxuICogMi4gTm93IHdlIGp1c3QgYWdncmVnYXRlIG92ZXIgdGhlIGBpdGhTbGljZU9mT3V0cHV0c2AgdGhlIHNhbWUgYXMgd2UgZGlkIGZvciB0aGUgbm9ybWFsIG91dHB1dHMuXG4gKi9cbmNvbnN0IHRlbXBvcmFsQWdncmVnYXRpb24gPSAobm9kZTogYW55LCBtZXRyaWNzOiBzdHJpbmdbXSkgPT4ge1xuICBjb25zdCBvdXRwdXRzOiBQbHVnaW5QYXJhbXNbXSA9IFtdO1xuICBjb25zdCB2YWx1ZXM6IGFueSA9IE9iamVjdC52YWx1ZXMobm9kZS5jaGlsZHJlbik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXNbMF0ub3V0cHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGl0aFNsaWNlT2ZPdXRwdXRzID0gZ2V0SXRoRWxlbWVudHNGcm9tQ2hpbGRyZW4obm9kZS5jaGlsZHJlbiwgaSk7XG4gICAgb3V0cHV0cy5wdXNoKGFnZ3JlZ2F0ZUlucHV0c0ludG9PbmUoaXRoU2xpY2VPZk91dHB1dHMsIG1ldHJpY3MpKTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXRzO1xufTtcblxuLyoqXG4gKiBOYXZpZ2F0ZXMgdGhlIHRyZWUgZGVwdGggZmlyc3QsIGJvdHRvbSB1cCxcbiAqICBsZWZ0IHRvIHJpZ2h0IGFnZ3JlZ2F0aW5nIHRoZSBjb21wb25lbnQgbm9kZXMgYW5kIHRoZW4gdGhlIGdyb3VwaW5nIG5vZGVzIHdpbGwgYmUgYWdncmVnYXRlZFxuICogIG9ubHkgd2hlbiBhbGwgdGhlaXIgY2hpbGQgbm9kZXMgaGF2ZSBiZWVuIGFnZ3JlZ2F0ZWQuXG4gKiAxLiBBZ2dyZWdhdGVzIGFsbCB0aGUgY2hpbGRyZW4uXG4gKiAyLiBBdCB0aGlzIHBvaW50IHlvdSBjYW4gYmUgcG9zaXRpdmUgYWxsIHlvdXIgY2hpbGRyZW4gaGF2ZSBiZWVuIGFnZ3JlZ2F0ZWQgYW5kIHNvIHlvdSBjYW4gbm93IHdvcmsgb24gYWdncmVnYXRpbmcgeW91cnNlbGYuXG4gKiAzLiBJdCdzIGNvbXBvbmVudCBub2RlLCDQsGdncmVnYXRlcyBqdXN0IHRoZSBvdXRwdXRzIG9mIFRISVMgY29tcG9uZW50IG5vZGUgKGhvcml6b250YWwvY29tcG9uZW50IGFnZ3JlZ2F0aW9uKS5cbiAqIDQuIEVsc2UgaXQncyBncm91cGluZyBub2RlLCBmaXJzdCBkb2VzIHRlbXBvcmFsIGFnZ3JlZ2F0aW9uLiBUaGlzIGFzc3VtZXMgZXZlcnl0aGluZyBpcyBvbiB0aGUgc2FtZSB0aW1lLWdyaWQuXG4gKiAgICBUaGUgb3V0cHV0cyBvZiB0aGUgZ3JvdXBpbmcgbm9kZSBhcmUgdGhlIGFnZ3JlZ2F0ZWQgdGltZSBidWNrZXRlZCBvdXRwdXRzIG9mIGl0J3MgY2hpbGRyZW4uXG4gKiA1LiBOb3cgYSBncm91cGluZyBub2RlIGhhcyBpdCdzIG93biBvdXRwdXRzLCBpdCBjYW4gaG9yaXpvdG5hbGx5IGFnZ3JlZ2F0ZSB0aGVtLlxuICovXG5jb25zdCBhZ2dyZWdhdGVOb2RlID0gKG5vZGU6IGFueSwgYWdncmVnYXRpb25QYXJhbXM6IEFnZ3JlZ2F0aW9uUGFyYW1zKSA9PiB7XG4gIGNvbnN0IHttZXRyaWNzLCB0eXBlfSA9IGFnZ3JlZ2F0aW9uUGFyYW1zO1xuXG4gIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgZm9yIChjb25zdCBjaGlsZCBpbiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICBhZ2dyZWdhdGVOb2RlKG5vZGUuY2hpbGRyZW5bY2hpbGRdLCBhZ2dyZWdhdGlvblBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XG4gICAgaWYgKHR5cGUgPT09ICdob3Jpem9udGFsJyB8fCB0eXBlID09PSAnYm90aCcpIHtcbiAgICAgIG5vZGUuYWdncmVnYXRlZCA9IGFnZ3JlZ2F0ZUlucHV0c0ludG9PbmUobm9kZS5vdXRwdXRzLCBtZXRyaWNzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGUgPT09ICd2ZXJ0aWNhbCcgfHwgdHlwZSA9PT0gJ2JvdGgnKSB7XG4gICAgICBjb25zdCBvdXRwdXRzID0gdGVtcG9yYWxBZ2dyZWdhdGlvbihub2RlLCBtZXRyaWNzKTtcbiAgICAgIG5vZGUub3V0cHV0cyA9IG91dHB1dHM7XG4gICAgICBub2RlLmFnZ3JlZ2F0ZWQgPSBhZ2dyZWdhdGVJbnB1dHNJbnRvT25lKG91dHB1dHMsIG1ldHJpY3MpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBJZiBhZ2dyZWdhdGlvbiBpcyBkaXNhYmxlZCwgdGhlbiByZXR1cm5zIGdpdmVuIGB0cmVlYC5cbiAqIE90aGVyd2lzZSBjcmVhdGVzIGNvcHkgb2YgdGhlIHRyZWUsIHRoZW4gYXBwbGllcyBhZ2dyZWdhdGlvbiB0byBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IGFnZ3JlZ2F0ZSA9ICh0cmVlOiBhbnksIGFnZ3JlZ2F0aW9uUGFyYW1zPzogQWdncmVnYXRpb25QYXJhbXMpID0+IHtcbiAgaWYgKCFhZ2dyZWdhdGlvblBhcmFtcyB8fCAhYWdncmVnYXRpb25QYXJhbXMudHlwZSkge1xuICAgIHJldHVybiB0cmVlO1xuICB9XG5cbiAgY29uc3QgY29weU9mVHJlZSA9IHN0cnVjdHVyZWRDbG9uZSh0cmVlKTtcbiAgYWdncmVnYXRlTm9kZShjb3B5T2ZUcmVlLCBhZ2dyZWdhdGlvblBhcmFtcyk7XG5cbiAgcmV0dXJuIGNvcHlPZlRyZWU7XG59O1xuIl19
@@ -0,0 +1,5 @@
1
+ import { ComputeParams } from '../types/compute';
2
+ /**
3
+ * Creates copy of existing tree, then applies computing strategy.
4
+ */
5
+ export declare const compute: (tree: any, params: ComputeParams) => Promise<any>;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compute = void 0;
4
+ const helpers_1 = require("../util/helpers");
5
+ /**
6
+ * Traverses all child nodes based on children grouping.
7
+ */
8
+ const traverse = async (children, params) => {
9
+ for (const child in children) {
10
+ await computeNode(children[child], params);
11
+ }
12
+ };
13
+ /**
14
+ * Appends `default` values to `inputs`.
15
+ */
16
+ const mergeDefaults = (inputs, defaults) => {
17
+ if (inputs) {
18
+ const response = defaults
19
+ ? inputs.map(input => (0, helpers_1.mergeObjects)(input, defaults))
20
+ : inputs;
21
+ return response;
22
+ }
23
+ return [];
24
+ };
25
+ /**
26
+ * 1. If the node has it's own pipeline, defaults or config then use that,
27
+ * otherwise use whatever has been passed down from further up the tree.
28
+ * 2. If it's a grouping node, then first of all computes all it's children.
29
+ * This is doing a depth first traversal.
30
+ * 3. Otherwise merges the defaults into the inputs.
31
+ * 4. Goes through the pipeline plugins, by checking if it's `execute` plugin. If so sets outputs.
32
+ * If is a `groupby` plugin, it will return child components rather than outputs.
33
+ * 5. Since after `groupby`, there are new child components, then computes them.
34
+ * Note: `pipeline` now equals the remaining plu.gins to apply to each child
35
+ */
36
+ const computeNode = async (node, params) => {
37
+ const pipeline = (node.pipeline || params.pipeline);
38
+ const config = node.config || params.config;
39
+ const defaults = node.defaults || params.defaults;
40
+ if (node.children) {
41
+ return traverse(node.children, {
42
+ ...params,
43
+ pipeline,
44
+ defaults,
45
+ config,
46
+ });
47
+ }
48
+ let storage = node.inputs;
49
+ storage = mergeDefaults(storage, defaults);
50
+ const pipelineCopy = structuredClone(pipeline);
51
+ while (pipelineCopy.length !== 0) {
52
+ const pluginName = pipelineCopy.shift();
53
+ const plugin = params.plugins[pluginName];
54
+ const { execute, metadata } = plugin;
55
+ const nodeConfig = config && config[pluginName];
56
+ if (metadata.kind === 'execute') {
57
+ storage = await execute(storage, nodeConfig);
58
+ node.outputs = storage;
59
+ }
60
+ if (metadata.kind === 'groupby') {
61
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
62
+ // @ts-ignore
63
+ node.children = await execute(storage, nodeConfig);
64
+ delete node.inputs;
65
+ delete node.outputs;
66
+ await traverse(node.children, {
67
+ ...params,
68
+ pipeline: pipelineCopy,
69
+ defaults,
70
+ config,
71
+ });
72
+ }
73
+ }
74
+ };
75
+ /**
76
+ * Creates copy of existing tree, then applies computing strategy.
77
+ */
78
+ const compute = async (tree, params) => {
79
+ const copyOfTree = structuredClone(tree);
80
+ await computeNode(copyOfTree, params);
81
+ return copyOfTree;
82
+ };
83
+ exports.compute = compute;
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNkM7QUFLN0M7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsUUFBYSxFQUFFLE1BQWMsRUFBRSxFQUFFO0lBQ3ZELEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFO1FBQzVCLE1BQU0sV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM1QztBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FDcEIsTUFBc0IsRUFDdEIsUUFBa0MsRUFDbEMsRUFBRTtJQUNGLElBQUksTUFBTSxFQUFFO1FBQ1YsTUFBTSxRQUFRLEdBQUcsUUFBUTtZQUN2QixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUEsc0JBQVksRUFBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUVYLE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0lBRUQsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQVUsRUFBRSxNQUFjLEVBQWdCLEVBQUU7SUFDckUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQWEsQ0FBQztJQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDO0lBRWxELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNqQixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzdCLEdBQUcsTUFBTTtZQUNULFFBQVE7WUFDUixRQUFRO1lBQ1IsTUFBTTtTQUNQLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQXdCLENBQUM7SUFDNUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRS9DLE9BQU8sWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDaEMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBWSxDQUFDO1FBRWxELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsTUFBTSxFQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUMsR0FBRyxNQUFNLENBQUM7UUFDbkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVoRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQy9CLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7U0FDeEI7UUFFRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQy9CLDZEQUE2RDtZQUM3RCxhQUFhO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUVwQixNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUM1QixHQUFHLE1BQU07Z0JBQ1QsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLFFBQVE7Z0JBQ1IsTUFBTTthQUNQLENBQUMsQ0FBQztTQUNKO0tBQ0Y7QUFDSCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNJLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxJQUFTLEVBQUUsTUFBcUIsRUFBRSxFQUFFO0lBQ2hFLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV6QyxNQUFNLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFdEMsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBTlcsUUFBQSxPQUFPLFdBTWxCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttZXJnZU9iamVjdHN9IGZyb20gJy4uL3V0aWwvaGVscGVycyc7XG5cbmltcG9ydCB7Q29tcHV0ZVBhcmFtcywgTm9kZSwgUGFyYW1zfSBmcm9tICcuLi90eXBlcy9jb21wdXRlJztcbmltcG9ydCB7UGx1Z2luUGFyYW1zfSBmcm9tICcuLi90eXBlcy9pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFRyYXZlcnNlcyBhbGwgY2hpbGQgbm9kZXMgYmFzZWQgb24gY2hpbGRyZW4gZ3JvdXBpbmcuXG4gKi9cbmNvbnN0IHRyYXZlcnNlID0gYXN5bmMgKGNoaWxkcmVuOiBhbnksIHBhcmFtczogUGFyYW1zKSA9PiB7XG4gIGZvciAoY29uc3QgY2hpbGQgaW4gY2hpbGRyZW4pIHtcbiAgICBhd2FpdCBjb21wdXRlTm9kZShjaGlsZHJlbltjaGlsZF0sIHBhcmFtcyk7XG4gIH1cbn07XG5cbi8qKlxuICogQXBwZW5kcyBgZGVmYXVsdGAgdmFsdWVzIHRvIGBpbnB1dHNgLlxuICovXG5jb25zdCBtZXJnZURlZmF1bHRzID0gKFxuICBpbnB1dHM6IFBsdWdpblBhcmFtc1tdLFxuICBkZWZhdWx0czogUGx1Z2luUGFyYW1zIHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgaWYgKGlucHV0cykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gZGVmYXVsdHNcbiAgICAgID8gaW5wdXRzLm1hcChpbnB1dCA9PiBtZXJnZU9iamVjdHMoaW5wdXQsIGRlZmF1bHRzKSlcbiAgICAgIDogaW5wdXRzO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgcmV0dXJuIFtdO1xufTtcblxuLyoqXG4gKiAxLiBJZiB0aGUgbm9kZSBoYXMgaXQncyBvd24gcGlwZWxpbmUsIGRlZmF1bHRzIG9yIGNvbmZpZyB0aGVuIHVzZSB0aGF0LFxuICogICAgb3RoZXJ3aXNlIHVzZSB3aGF0ZXZlciBoYXMgYmVlbiBwYXNzZWQgZG93biBmcm9tIGZ1cnRoZXIgdXAgdGhlIHRyZWUuXG4gKiAyLiBJZiBpdCdzIGEgZ3JvdXBpbmcgbm9kZSwgdGhlbiBmaXJzdCBvZiBhbGwgY29tcHV0ZXMgYWxsIGl0J3MgY2hpbGRyZW4uXG4gKiAgICBUaGlzIGlzIGRvaW5nIGEgZGVwdGggZmlyc3QgdHJhdmVyc2FsLlxuICogMy4gT3RoZXJ3aXNlIG1lcmdlcyB0aGUgZGVmYXVsdHMgaW50byB0aGUgaW5wdXRzLlxuICogNC4gR29lcyB0aHJvdWdoIHRoZSBwaXBlbGluZSBwbHVnaW5zLCBieSBjaGVja2luZyBpZiBpdCdzIGBleGVjdXRlYCBwbHVnaW4uIElmIHNvIHNldHMgb3V0cHV0cy5cbiAqICAgIElmIGlzIGEgYGdyb3VwYnlgIHBsdWdpbiwgaXQgd2lsbCByZXR1cm4gY2hpbGQgY29tcG9uZW50cyByYXRoZXIgdGhhbiBvdXRwdXRzLlxuICogNS4gU2luY2UgYWZ0ZXIgYGdyb3VwYnlgLCB0aGVyZSBhcmUgbmV3IGNoaWxkIGNvbXBvbmVudHMsIHRoZW4gY29tcHV0ZXMgdGhlbS5cbiAqICAgIE5vdGU6IGBwaXBlbGluZWAgbm93IGVxdWFscyB0aGUgcmVtYWluaW5nIHBsdS5naW5zIHRvIGFwcGx5IHRvIGVhY2ggY2hpbGRcbiAqL1xuY29uc3QgY29tcHV0ZU5vZGUgPSBhc3luYyAobm9kZTogTm9kZSwgcGFyYW1zOiBQYXJhbXMpOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBwaXBlbGluZSA9IChub2RlLnBpcGVsaW5lIHx8IHBhcmFtcy5waXBlbGluZSkgYXMgc3RyaW5nW107XG4gIGNvbnN0IGNvbmZpZyA9IG5vZGUuY29uZmlnIHx8IHBhcmFtcy5jb25maWc7XG4gIGNvbnN0IGRlZmF1bHRzID0gbm9kZS5kZWZhdWx0cyB8fCBwYXJhbXMuZGVmYXVsdHM7XG5cbiAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICByZXR1cm4gdHJhdmVyc2Uobm9kZS5jaGlsZHJlbiwge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgcGlwZWxpbmUsXG4gICAgICBkZWZhdWx0cyxcbiAgICAgIGNvbmZpZyxcbiAgICB9KTtcbiAgfVxuXG4gIGxldCBzdG9yYWdlID0gbm9kZS5pbnB1dHMgYXMgUGx1Z2luUGFyYW1zW107XG4gIHN0b3JhZ2UgPSBtZXJnZURlZmF1bHRzKHN0b3JhZ2UsIGRlZmF1bHRzKTtcbiAgY29uc3QgcGlwZWxpbmVDb3B5ID0gc3RydWN0dXJlZENsb25lKHBpcGVsaW5lKTtcblxuICB3aGlsZSAocGlwZWxpbmVDb3B5Lmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IHBsdWdpbk5hbWUgPSBwaXBlbGluZUNvcHkuc2hpZnQoKSBhcyBzdHJpbmc7XG5cbiAgICBjb25zdCBwbHVnaW4gPSBwYXJhbXMucGx1Z2luc1twbHVnaW5OYW1lXTtcbiAgICBjb25zdCB7ZXhlY3V0ZSwgbWV0YWRhdGF9ID0gcGx1Z2luO1xuICAgIGNvbnN0IG5vZGVDb25maWcgPSBjb25maWcgJiYgY29uZmlnW3BsdWdpbk5hbWVdO1xuXG4gICAgaWYgKG1ldGFkYXRhLmtpbmQgPT09ICdleGVjdXRlJykge1xuICAgICAgc3RvcmFnZSA9IGF3YWl0IGV4ZWN1dGUoc3RvcmFnZSwgbm9kZUNvbmZpZyk7XG4gICAgICBub2RlLm91dHB1dHMgPSBzdG9yYWdlO1xuICAgIH1cblxuICAgIGlmIChtZXRhZGF0YS5raW5kID09PSAnZ3JvdXBieScpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBhd2FpdCBleGVjdXRlKHN0b3JhZ2UsIG5vZGVDb25maWcpO1xuICAgICAgZGVsZXRlIG5vZGUuaW5wdXRzO1xuICAgICAgZGVsZXRlIG5vZGUub3V0cHV0cztcblxuICAgICAgYXdhaXQgdHJhdmVyc2Uobm9kZS5jaGlsZHJlbiwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIHBpcGVsaW5lOiBwaXBlbGluZUNvcHksXG4gICAgICAgIGRlZmF1bHRzLFxuICAgICAgICBjb25maWcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ3JlYXRlcyBjb3B5IG9mIGV4aXN0aW5nIHRyZWUsIHRoZW4gYXBwbGllcyBjb21wdXRpbmcgc3RyYXRlZ3kuXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wdXRlID0gYXN5bmMgKHRyZWU6IGFueSwgcGFyYW1zOiBDb21wdXRlUGFyYW1zKSA9PiB7XG4gIGNvbnN0IGNvcHlPZlRyZWUgPSBzdHJ1Y3R1cmVkQ2xvbmUodHJlZSk7XG5cbiAgYXdhaXQgY29tcHV0ZU5vZGUoY29weU9mVHJlZSwgcGFyYW1zKTtcblxuICByZXR1cm4gY29weU9mVHJlZTtcbn07XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import { Context } from '../types/manifest';
2
+ /**
3
+ * Output manager - Exhaust.
4
+ * Grabs output plugins from context, executes every.
5
+ */
6
+ export declare const exhaust: (tree: any, context: Context, outputPath?: string) => void;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exhaust = void 0;
4
+ /**
5
+ * @todo This is temporary solution, will be refactored to support dynamic plugins.
6
+ */
7
+ const export_csv_1 = require("../models/export-csv");
8
+ const export_log_1 = require("../models/export-log");
9
+ const export_yaml_1 = require("../models/export-yaml");
10
+ const errors_1 = require("../util/errors");
11
+ const config_1 = require("../config");
12
+ const { ModuleInitializationError } = errors_1.ERRORS;
13
+ const { INVALID_EXHAUST_PLUGIN } = config_1.STRINGS;
14
+ /**
15
+ * Initialize exhaust plugins based on the provided config
16
+ */
17
+ const initializeExhaustPlugins = (plugins) => plugins.map(initializeExhaustPlugin);
18
+ /**
19
+ * factory method for exhaust plugins
20
+ */
21
+ const initializeExhaustPlugin = (name) => {
22
+ switch (name) {
23
+ case 'yaml':
24
+ return (0, export_yaml_1.ExportYaml)();
25
+ case 'csv':
26
+ return (0, export_csv_1.ExportCsv)();
27
+ case 'log':
28
+ return (0, export_log_1.ExportLog)();
29
+ default:
30
+ throw new ModuleInitializationError(INVALID_EXHAUST_PLUGIN(name));
31
+ }
32
+ };
33
+ /**
34
+ * Output manager - Exhaust.
35
+ * Grabs output plugins from context, executes every.
36
+ */
37
+ const exhaust = (tree, context, outputPath) => {
38
+ const outputPlugins = context.initialize.outputs;
39
+ if (!outputPlugins) {
40
+ (0, export_log_1.ExportLog)().execute(tree, context);
41
+ return;
42
+ }
43
+ const exhaustPlugins = initializeExhaustPlugins(outputPlugins);
44
+ exhaustPlugins.forEach(plugin => plugin.execute(tree, context, outputPath));
45
+ };
46
+ exports.exhaust = exhaust;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhoYXVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXhoYXVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILHFEQUErQztBQUMvQyxxREFBK0M7QUFDL0MsdURBQWlEO0FBRWpELDJDQUFzQztBQUV0QyxzQ0FBa0M7QUFLbEMsTUFBTSxFQUFDLHlCQUF5QixFQUFDLEdBQUcsZUFBTSxDQUFDO0FBQzNDLE1BQU0sRUFBQyxzQkFBc0IsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFekM7O0dBRUc7QUFDSCxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBaUIsRUFBRSxFQUFFLENBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUV2Qzs7R0FFRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxJQUFZLEVBQTBCLEVBQUU7SUFDdkUsUUFBUSxJQUFJLEVBQUU7UUFDWixLQUFLLE1BQU07WUFDVCxPQUFPLElBQUEsd0JBQVUsR0FBRSxDQUFDO1FBQ3RCLEtBQUssS0FBSztZQUNSLE9BQU8sSUFBQSxzQkFBUyxHQUFFLENBQUM7UUFDckIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxJQUFBLHNCQUFTLEdBQUUsQ0FBQztRQUNyQjtZQUNFLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3JFO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0ksTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFTLEVBQUUsT0FBZ0IsRUFBRSxVQUFtQixFQUFFLEVBQUU7SUFDMUUsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFFakQsSUFBSSxDQUFDLGFBQWEsRUFBRTtRQUNsQixJQUFBLHNCQUFTLEdBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLE9BQU87S0FDUjtJQUVELE1BQU0sY0FBYyxHQUFHLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUM7QUFYVyxRQUFBLE9BQU8sV0FXbEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0b2RvIFRoaXMgaXMgdGVtcG9yYXJ5IHNvbHV0aW9uLCB3aWxsIGJlIHJlZmFjdG9yZWQgdG8gc3VwcG9ydCBkeW5hbWljIHBsdWdpbnMuXG4gKi9cbmltcG9ydCB7RXhwb3J0Q3N2fSBmcm9tICcuLi9tb2RlbHMvZXhwb3J0LWNzdic7XG5pbXBvcnQge0V4cG9ydExvZ30gZnJvbSAnLi4vbW9kZWxzL2V4cG9ydC1sb2cnO1xuaW1wb3J0IHtFeHBvcnRZYW1sfSBmcm9tICcuLi9tb2RlbHMvZXhwb3J0LXlhbWwnO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi4vdXRpbC9lcnJvcnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7RXhoYXVzdFBsdWdpbkludGVyZmFjZX0gZnJvbSAnLi4vdHlwZXMvZXhoYXVzdC1wbHVnaW4taW50ZXJmYWNlJztcbmltcG9ydCB7Q29udGV4dH0gZnJvbSAnLi4vdHlwZXMvbWFuaWZlc3QnO1xuXG5jb25zdCB7TW9kdWxlSW5pdGlhbGl6YXRpb25FcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7SU5WQUxJRF9FWEhBVVNUX1BMVUdJTn0gPSBTVFJJTkdTO1xuXG4vKipcbiAqIEluaXRpYWxpemUgZXhoYXVzdCBwbHVnaW5zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb25maWdcbiAqL1xuY29uc3QgaW5pdGlhbGl6ZUV4aGF1c3RQbHVnaW5zID0gKHBsdWdpbnM6IHN0cmluZ1tdKSA9PlxuICBwbHVnaW5zLm1hcChpbml0aWFsaXplRXhoYXVzdFBsdWdpbik7XG5cbi8qKlxuICogZmFjdG9yeSBtZXRob2QgZm9yIGV4aGF1c3QgcGx1Z2luc1xuICovXG5jb25zdCBpbml0aWFsaXplRXhoYXVzdFBsdWdpbiA9IChuYW1lOiBzdHJpbmcpOiBFeGhhdXN0UGx1Z2luSW50ZXJmYWNlID0+IHtcbiAgc3dpdGNoIChuYW1lKSB7XG4gICAgY2FzZSAneWFtbCc6XG4gICAgICByZXR1cm4gRXhwb3J0WWFtbCgpO1xuICAgIGNhc2UgJ2Nzdic6XG4gICAgICByZXR1cm4gRXhwb3J0Q3N2KCk7XG4gICAgY2FzZSAnbG9nJzpcbiAgICAgIHJldHVybiBFeHBvcnRMb2coKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IE1vZHVsZUluaXRpYWxpemF0aW9uRXJyb3IoSU5WQUxJRF9FWEhBVVNUX1BMVUdJTihuYW1lKSk7XG4gIH1cbn07XG5cbi8qKlxuICogT3V0cHV0IG1hbmFnZXIgLSBFeGhhdXN0LlxuICogR3JhYnMgb3V0cHV0IHBsdWdpbnMgZnJvbSBjb250ZXh0LCBleGVjdXRlcyBldmVyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IGV4aGF1c3QgPSAodHJlZTogYW55LCBjb250ZXh0OiBDb250ZXh0LCBvdXRwdXRQYXRoPzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG91dHB1dFBsdWdpbnMgPSBjb250ZXh0LmluaXRpYWxpemUub3V0cHV0cztcblxuICBpZiAoIW91dHB1dFBsdWdpbnMpIHtcbiAgICBFeHBvcnRMb2coKS5leGVjdXRlKHRyZWUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZXhoYXVzdFBsdWdpbnMgPSBpbml0aWFsaXplRXhoYXVzdFBsdWdpbnMob3V0cHV0UGx1Z2lucyk7XG4gIGV4aGF1c3RQbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5leGVjdXRlKHRyZWUsIGNvbnRleHQsIG91dHB1dFBhdGgpKTtcbn07XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import { PluginsStorage } from '../types/initialize';
2
+ import { GlobalPlugins } from '../types/manifest';
3
+ /**
4
+ * Registers all plugins from `manifest`.`initalize` property.
5
+ */
6
+ export declare const initalize: (plugins: GlobalPlugins) => Promise<PluginsStorage>;