@grnsft/if 1.0.1 → 1.1.0-beta.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 (319) hide show
  1. package/.dockerignore +10 -0
  2. package/CONTAINER.md +148 -0
  3. package/Dockerfile +73 -0
  4. package/HELM_CHART.md +96 -0
  5. package/README.md +56 -0
  6. package/bin/docker-entrypoint.sh +15 -0
  7. package/build/common/types/manifest.d.ts +1 -0
  8. package/build/common/types/manifest.js +1 -1
  9. package/build/common/util/debug-logger.js +4 -18
  10. package/build/common/util/helpers.d.ts +3 -2
  11. package/build/common/util/helpers.js +6 -18
  12. package/build/common/util/storage.d.ts +9 -0
  13. package/build/common/util/storage.js +24 -0
  14. package/build/if-api/config/config.d.ts +9 -0
  15. package/build/if-api/config/config.js +58 -0
  16. package/build/if-api/config/index.d.ts +2 -0
  17. package/build/if-api/config/index.js +8 -0
  18. package/build/if-api/config/strings.d.ts +16 -0
  19. package/build/if-api/config/strings.js +20 -0
  20. package/build/if-api/index.d.ts +2 -0
  21. package/build/if-api/index.js +268 -0
  22. package/build/if-api/types/process-args.d.ts +18 -0
  23. package/build/if-api/types/process-args.js +3 -0
  24. package/build/if-api/util/args.d.ts +5 -0
  25. package/build/if-api/util/args.js +42 -0
  26. package/build/if-check/index.js +1 -11
  27. package/build/if-check/util/npm.d.ts +1 -1
  28. package/build/if-check/util/npm.js +31 -74
  29. package/build/if-metadata-check/config/config.d.ts +5 -0
  30. package/build/if-metadata-check/config/config.js +26 -0
  31. package/build/if-metadata-check/config/strings.d.ts +5 -0
  32. package/build/if-metadata-check/config/strings.js +9 -0
  33. package/build/if-metadata-check/index.d.ts +2 -0
  34. package/build/if-metadata-check/index.js +30 -0
  35. package/build/if-metadata-check/types/plugin.d.ts +7 -0
  36. package/build/if-metadata-check/types/plugin.js +3 -0
  37. package/build/if-metadata-check/types/process-args.d.ts +5 -0
  38. package/build/if-metadata-check/types/process-args.js +3 -0
  39. package/build/if-metadata-check/util/args.d.ts +57 -0
  40. package/build/if-metadata-check/util/args.js +29 -0
  41. package/build/if-metadata-check/util/metadata-checker.d.ts +44 -0
  42. package/build/if-metadata-check/util/metadata-checker.js +99 -0
  43. package/build/if-run/builtins/divide/index.js +2 -2
  44. package/build/if-run/builtins/sci/index.js +2 -2
  45. package/build/if-run/config/strings.js +3 -3
  46. package/build/if-run/index.js +1 -1
  47. package/build/if-run/lib/aggregate.d.ts +2 -2
  48. package/build/if-run/lib/aggregate.js +5 -19
  49. package/build/if-run/lib/compute.d.ts +1 -1
  50. package/build/if-run/lib/compute.js +10 -9
  51. package/build/if-run/lib/environment.d.ts +5 -1
  52. package/build/if-run/lib/environment.js +30 -29
  53. package/build/if-run/lib/initialize.d.ts +12 -0
  54. package/build/if-run/lib/initialize.js +37 -3
  55. package/build/if-run/lib/regroup.d.ts +3 -2
  56. package/build/if-run/lib/regroup.js +13 -9
  57. package/build/if-run/types/compute.d.ts +1 -1
  58. package/build/if-run/types/compute.js +1 -1
  59. package/build/if-run/util/os-checker.js +14 -10
  60. package/helm-chart/.helmignore +23 -0
  61. package/helm-chart/Chart.yaml +24 -0
  62. package/helm-chart/templates/NOTES.txt +22 -0
  63. package/helm-chart/templates/_helpers.tpl +62 -0
  64. package/helm-chart/templates/additionalPlugins.yaml +13 -0
  65. package/helm-chart/templates/deployment.yaml +144 -0
  66. package/helm-chart/templates/disabledPlugins.yaml +11 -0
  67. package/helm-chart/templates/env-configmap.yaml +10 -0
  68. package/helm-chart/templates/env-secret.yaml +10 -0
  69. package/helm-chart/templates/hpa.yaml +32 -0
  70. package/helm-chart/templates/ingress.yaml +43 -0
  71. package/helm-chart/templates/npmrc.yaml +11 -0
  72. package/helm-chart/templates/service.yaml +24 -0
  73. package/helm-chart/templates/serviceaccount.yaml +13 -0
  74. package/helm-chart/templates/tests/test-connection.yaml +15 -0
  75. package/helm-chart/values.yaml +175 -0
  76. package/jest.config.js +6 -2
  77. package/manifests/examples/bugs/aggregation-error-wrong-metric.yml +173 -0
  78. package/manifests/examples/bugs/input-error-missing-duration.yml +25 -0
  79. package/manifests/examples/bugs/mock-observations-failure-duration-is-zero.yml +33 -0
  80. package/manifests/examples/bugs/pipeline-error-naming-mismatch.yml +32 -0
  81. package/manifests/examples/bugs/pipeline-error-uninitialized-plugin.yml +33 -0
  82. package/manifests/examples/bugs/pipeline-ordering-error.yml +91 -0
  83. package/manifests/examples/builtins/divide/success-denominator-equal-zero.yml +36 -0
  84. package/manifests/examples/builtins/mock-observations/failure-invalid-config-cpu-range.yml +0 -1
  85. package/manifests/examples/builtins/mock-observations/failure-invalid-memory-utilization-range.yml +0 -1
  86. package/manifests/examples/builtins/mock-observations/failure-missing-timestamp-from-param.yml +0 -1
  87. package/manifests/examples/builtins/mock-observations/success.yml +0 -1
  88. package/manifests/examples/builtins/sci/failure-invalid-config-value.yml +0 -1
  89. package/manifests/examples/builtins/sci/failure-missing-input-param.yml +0 -1
  90. package/manifests/examples/builtins/sci/success.yml +0 -1
  91. package/manifests/examples/builtins/sci-embodied/failure-invalid-default-emission-value.yml +22 -0
  92. package/manifests/examples/builtins/time-sync/failure-missing-config.yml +0 -2
  93. package/manifests/examples/builtins/time-sync/success.yml +0 -2
  94. package/manifests/examples/features/aggregate-failure-invalid-metrics.yml +50 -0
  95. package/manifests/examples/features/aggregate-failure-missing-metric-in-inputs.yml +50 -0
  96. package/manifests/examples/features/aggregate-horizontal.yml +58 -0
  97. package/manifests/examples/features/aggregate-vertical.yml +58 -0
  98. package/manifests/examples/features/aggregate.yml +58 -0
  99. package/manifests/examples/pipelines/cloud-metadata-divide.yml +36 -0
  100. package/manifests/examples/pipelines/pipeline-with-mocks.yml +0 -1
  101. package/manifests/examples/pipelines/scenario-5.yml +0 -1
  102. package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +0 -1
  103. package/manifests/outputs/builtins/mock-observations/failure-invalid-config-cpu-range.yaml +0 -1
  104. package/manifests/outputs/builtins/mock-observations/failure-invalid-memory-utilization-range.yaml +0 -1
  105. package/manifests/outputs/builtins/mock-observations/failure-missing-timestamp-from-param.yaml +0 -1
  106. package/manifests/outputs/builtins/sci/failure-invalid-config-value.yaml +0 -1
  107. package/manifests/outputs/builtins/sci/failure-missing-input-param.yaml +0 -1
  108. package/manifests/outputs/builtins/time-sync/failure-missing-config.yaml +0 -2
  109. package/manifests/outputs/features/regroup/success.yaml +72 -0
  110. package/manifests/outputs/pipelines/pipeline-with-aggregate.yaml +1291 -0
  111. package/manifests/outputs/pipelines/scenario-3.yaml +126 -0
  112. package/openapi.yaml +424 -0
  113. package/package.json +17 -12
  114. package/with-plugins/Dockerfile +59 -0
  115. package/.env +0 -5
  116. package/coverage/clover.xml +0 -2062
  117. package/coverage/coverage-final.json +0 -58
  118. package/coverage/lcov-report/base.css +0 -224
  119. package/coverage/lcov-report/block-navigation.js +0 -87
  120. package/coverage/lcov-report/builtins/coefficient/index.html +0 -116
  121. package/coverage/lcov-report/builtins/coefficient/index.ts.html +0 -298
  122. package/coverage/lcov-report/builtins/csv-lookup/index.html +0 -116
  123. package/coverage/lcov-report/builtins/csv-lookup/index.ts.html +0 -826
  124. package/coverage/lcov-report/builtins/divide/index.html +0 -116
  125. package/coverage/lcov-report/builtins/divide/index.ts.html +0 -358
  126. package/coverage/lcov-report/builtins/exponent/index.html +0 -116
  127. package/coverage/lcov-report/builtins/exponent/index.ts.html +0 -361
  128. package/coverage/lcov-report/builtins/export-csv-raw.ts.html +0 -553
  129. package/coverage/lcov-report/builtins/export-csv.ts.html +0 -436
  130. package/coverage/lcov-report/builtins/export-log.ts.html +0 -148
  131. package/coverage/lcov-report/builtins/export-yaml.ts.html +0 -193
  132. package/coverage/lcov-report/builtins/group-by.ts.html +0 -370
  133. package/coverage/lcov-report/builtins/index.html +0 -206
  134. package/coverage/lcov-report/builtins/index.ts.html +0 -130
  135. package/coverage/lcov-report/builtins/interpolation/index.html +0 -116
  136. package/coverage/lcov-report/builtins/interpolation/index.ts.html +0 -676
  137. package/coverage/lcov-report/builtins/interpolation/types.ts.html +0 -100
  138. package/coverage/lcov-report/builtins/mock-observations/helpers/common-generator.ts.html +0 -184
  139. package/coverage/lcov-report/builtins/mock-observations/helpers/index.html +0 -131
  140. package/coverage/lcov-report/builtins/mock-observations/helpers/rand-int-generator.ts.html +0 -289
  141. package/coverage/lcov-report/builtins/mock-observations/index.html +0 -116
  142. package/coverage/lcov-report/builtins/mock-observations/index.ts.html +0 -619
  143. package/coverage/lcov-report/builtins/multiply/index.html +0 -116
  144. package/coverage/lcov-report/builtins/multiply/index.ts.html +0 -343
  145. package/coverage/lcov-report/builtins/regex/index.html +0 -116
  146. package/coverage/lcov-report/builtins/regex/index.ts.html +0 -373
  147. package/coverage/lcov-report/builtins/sci/config.ts.html +0 -205
  148. package/coverage/lcov-report/builtins/sci/index.html +0 -116
  149. package/coverage/lcov-report/builtins/sci/index.ts.html +0 -325
  150. package/coverage/lcov-report/builtins/sci-embodied/index.html +0 -116
  151. package/coverage/lcov-report/builtins/sci-embodied/index.ts.html +0 -478
  152. package/coverage/lcov-report/builtins/shell/index.html +0 -116
  153. package/coverage/lcov-report/builtins/shell/index.ts.html +0 -280
  154. package/coverage/lcov-report/builtins/subtract/index.html +0 -116
  155. package/coverage/lcov-report/builtins/subtract/index.ts.html +0 -379
  156. package/coverage/lcov-report/builtins/sum/index.html +0 -116
  157. package/coverage/lcov-report/builtins/sum/index.ts.html +0 -334
  158. package/coverage/lcov-report/builtins/time-sync.ts.html +0 -1462
  159. package/coverage/lcov-report/common/config/index.html +0 -131
  160. package/coverage/lcov-report/common/config/index.ts.html +0 -88
  161. package/coverage/lcov-report/common/config/strings.ts.html +0 -121
  162. package/coverage/lcov-report/common/lib/index.html +0 -116
  163. package/coverage/lcov-report/common/lib/load.ts.html +0 -139
  164. package/coverage/lcov-report/common/util/debug-logger.ts.html +0 -514
  165. package/coverage/lcov-report/common/util/fs.ts.html +0 -289
  166. package/coverage/lcov-report/common/util/helpers.ts.html +0 -355
  167. package/coverage/lcov-report/common/util/index.html +0 -191
  168. package/coverage/lcov-report/common/util/logger.ts.html +0 -151
  169. package/coverage/lcov-report/common/util/validations.ts.html +0 -628
  170. package/coverage/lcov-report/common/util/yaml.ts.html +0 -226
  171. package/coverage/lcov-report/config/config.ts.html +0 -463
  172. package/coverage/lcov-report/config/index.html +0 -161
  173. package/coverage/lcov-report/config/index.ts.html +0 -94
  174. package/coverage/lcov-report/config/params.ts.html +0 -697
  175. package/coverage/lcov-report/config/strings.ts.html +0 -490
  176. package/coverage/lcov-report/favicon.png +0 -0
  177. package/coverage/lcov-report/if-check/config/config.ts.html +0 -184
  178. package/coverage/lcov-report/if-check/config/index.html +0 -146
  179. package/coverage/lcov-report/if-check/config/index.ts.html +0 -91
  180. package/coverage/lcov-report/if-check/config/strings.ts.html +0 -142
  181. package/coverage/lcov-report/if-check/util/args.ts.html +0 -310
  182. package/coverage/lcov-report/if-check/util/helpers.ts.html +0 -136
  183. package/coverage/lcov-report/if-check/util/index.html +0 -146
  184. package/coverage/lcov-report/if-check/util/npm.ts.html +0 -376
  185. package/coverage/lcov-report/if-csv/util/args.ts.html +0 -256
  186. package/coverage/lcov-report/if-csv/util/helpers.ts.html +0 -346
  187. package/coverage/lcov-report/if-csv/util/index.html +0 -131
  188. package/coverage/lcov-report/if-diff/config/config.ts.html +0 -184
  189. package/coverage/lcov-report/if-diff/config/index.html +0 -146
  190. package/coverage/lcov-report/if-diff/config/index.ts.html +0 -91
  191. package/coverage/lcov-report/if-diff/config/strings.ts.html +0 -100
  192. package/coverage/lcov-report/if-diff/lib/compare.ts.html +0 -286
  193. package/coverage/lcov-report/if-diff/lib/index.html +0 -131
  194. package/coverage/lcov-report/if-diff/lib/load.ts.html +0 -199
  195. package/coverage/lcov-report/if-diff/util/args.ts.html +0 -274
  196. package/coverage/lcov-report/if-diff/util/helpers.ts.html +0 -337
  197. package/coverage/lcov-report/if-diff/util/index.html +0 -131
  198. package/coverage/lcov-report/if-env/config/config.ts.html +0 -211
  199. package/coverage/lcov-report/if-env/config/index.html +0 -146
  200. package/coverage/lcov-report/if-env/config/index.ts.html +0 -91
  201. package/coverage/lcov-report/if-env/config/strings.ts.html +0 -109
  202. package/coverage/lcov-report/if-env/util/args.ts.html +0 -256
  203. package/coverage/lcov-report/if-env/util/index.html +0 -131
  204. package/coverage/lcov-report/if-env/util/npm.ts.html +0 -526
  205. package/coverage/lcov-report/if-merge/util/args.ts.html +0 -301
  206. package/coverage/lcov-report/if-merge/util/helpers.ts.html +0 -313
  207. package/coverage/lcov-report/if-merge/util/index.html +0 -131
  208. package/coverage/lcov-report/if-run/builtins/coefficient/index.html +0 -116
  209. package/coverage/lcov-report/if-run/builtins/coefficient/index.ts.html +0 -286
  210. package/coverage/lcov-report/if-run/builtins/copy-param/index.html +0 -116
  211. package/coverage/lcov-report/if-run/builtins/copy-param/index.ts.html +0 -301
  212. package/coverage/lcov-report/if-run/builtins/csv-import/index.html +0 -116
  213. package/coverage/lcov-report/if-run/builtins/csv-import/index.ts.html +0 -364
  214. package/coverage/lcov-report/if-run/builtins/csv-lookup/index.html +0 -116
  215. package/coverage/lcov-report/if-run/builtins/csv-lookup/index.ts.html +0 -478
  216. package/coverage/lcov-report/if-run/builtins/divide/index.html +0 -116
  217. package/coverage/lcov-report/if-run/builtins/divide/index.ts.html +0 -346
  218. package/coverage/lcov-report/if-run/builtins/exponent/index.html +0 -116
  219. package/coverage/lcov-report/if-run/builtins/exponent/index.ts.html +0 -319
  220. package/coverage/lcov-report/if-run/builtins/export-csv-raw.ts.html +0 -553
  221. package/coverage/lcov-report/if-run/builtins/export-csv.ts.html +0 -436
  222. package/coverage/lcov-report/if-run/builtins/export-log.ts.html +0 -148
  223. package/coverage/lcov-report/if-run/builtins/export-yaml.ts.html +0 -193
  224. package/coverage/lcov-report/if-run/builtins/group-by.ts.html +0 -370
  225. package/coverage/lcov-report/if-run/builtins/index.html +0 -146
  226. package/coverage/lcov-report/if-run/builtins/index.ts.html +0 -136
  227. package/coverage/lcov-report/if-run/builtins/interpolation/index.html +0 -116
  228. package/coverage/lcov-report/if-run/builtins/interpolation/index.ts.html +0 -643
  229. package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/common-generator.ts.html +0 -184
  230. package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/index.html +0 -131
  231. package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/rand-int-generator.ts.html +0 -289
  232. package/coverage/lcov-report/if-run/builtins/mock-observations/index.html +0 -116
  233. package/coverage/lcov-report/if-run/builtins/mock-observations/index.ts.html +0 -607
  234. package/coverage/lcov-report/if-run/builtins/multiply/index.html +0 -116
  235. package/coverage/lcov-report/if-run/builtins/multiply/index.ts.html +0 -289
  236. package/coverage/lcov-report/if-run/builtins/regex/index.html +0 -116
  237. package/coverage/lcov-report/if-run/builtins/regex/index.ts.html +0 -298
  238. package/coverage/lcov-report/if-run/builtins/sci/index.html +0 -116
  239. package/coverage/lcov-report/if-run/builtins/sci/index.ts.html +0 -418
  240. package/coverage/lcov-report/if-run/builtins/sci-embodied/index.html +0 -116
  241. package/coverage/lcov-report/if-run/builtins/sci-embodied/index.ts.html +0 -664
  242. package/coverage/lcov-report/if-run/builtins/shell/index.html +0 -116
  243. package/coverage/lcov-report/if-run/builtins/shell/index.ts.html +0 -256
  244. package/coverage/lcov-report/if-run/builtins/subtract/index.html +0 -116
  245. package/coverage/lcov-report/if-run/builtins/subtract/index.ts.html +0 -298
  246. package/coverage/lcov-report/if-run/builtins/sum/index.html +0 -116
  247. package/coverage/lcov-report/if-run/builtins/sum/index.ts.html +0 -238
  248. package/coverage/lcov-report/if-run/builtins/time-converter/config.ts.html +0 -205
  249. package/coverage/lcov-report/if-run/builtins/time-converter/index.html +0 -131
  250. package/coverage/lcov-report/if-run/builtins/time-converter/index.ts.html +0 -328
  251. package/coverage/lcov-report/if-run/builtins/time-sync/index.html +0 -116
  252. package/coverage/lcov-report/if-run/builtins/time-sync/index.ts.html +0 -1804
  253. package/coverage/lcov-report/if-run/builtins/time-sync.ts.html +0 -1462
  254. package/coverage/lcov-report/if-run/builtins/util/csv-helpers.ts.html +0 -376
  255. package/coverage/lcov-report/if-run/builtins/util/index.html +0 -116
  256. package/coverage/lcov-report/if-run/config/config.ts.html +0 -271
  257. package/coverage/lcov-report/if-run/config/index.html +0 -161
  258. package/coverage/lcov-report/if-run/config/index.ts.html +0 -94
  259. package/coverage/lcov-report/if-run/config/params.ts.html +0 -679
  260. package/coverage/lcov-report/if-run/config/strings.ts.html +0 -460
  261. package/coverage/lcov-report/if-run/lib/aggregate.ts.html +0 -577
  262. package/coverage/lcov-report/if-run/lib/compute.ts.html +0 -733
  263. package/coverage/lcov-report/if-run/lib/environment.ts.html +0 -373
  264. package/coverage/lcov-report/if-run/lib/exhaust.ts.html +0 -193
  265. package/coverage/lcov-report/if-run/lib/explain.ts.html +0 -484
  266. package/coverage/lcov-report/if-run/lib/index.html +0 -206
  267. package/coverage/lcov-report/if-run/lib/initialize.ts.html +0 -490
  268. package/coverage/lcov-report/if-run/lib/parameterize.ts.html +0 -322
  269. package/coverage/lcov-report/if-run/lib/regroup.ts.html +0 -349
  270. package/coverage/lcov-report/if-run/lib/time-sync.ts.html +0 -1510
  271. package/coverage/lcov-report/if-run/types/aggregation.ts.html +0 -94
  272. package/coverage/lcov-report/if-run/types/index.html +0 -146
  273. package/coverage/lcov-report/if-run/types/interface.ts.html +0 -112
  274. package/coverage/lcov-report/if-run/types/parameters.ts.html +0 -106
  275. package/coverage/lcov-report/if-run/util/aggregation-helper.ts.html +0 -277
  276. package/coverage/lcov-report/if-run/util/args.ts.html +0 -325
  277. package/coverage/lcov-report/if-run/util/helpers.ts.html +0 -208
  278. package/coverage/lcov-report/if-run/util/index.html +0 -191
  279. package/coverage/lcov-report/if-run/util/json.ts.html +0 -115
  280. package/coverage/lcov-report/if-run/util/log-memoize.ts.html +0 -145
  281. package/coverage/lcov-report/if-run/util/os-checker.ts.html +0 -421
  282. package/coverage/lcov-report/if-run/util/plugin-storage.ts.html +0 -202
  283. package/coverage/lcov-report/index.html +0 -551
  284. package/coverage/lcov-report/lib/aggregate.ts.html +0 -358
  285. package/coverage/lcov-report/lib/compare.ts.html +0 -286
  286. package/coverage/lcov-report/lib/compute.ts.html +0 -436
  287. package/coverage/lcov-report/lib/environment.ts.html +0 -376
  288. package/coverage/lcov-report/lib/exhaust.ts.html +0 -289
  289. package/coverage/lcov-report/lib/index.html +0 -221
  290. package/coverage/lcov-report/lib/initialize.ts.html +0 -430
  291. package/coverage/lcov-report/lib/load.ts.html +0 -268
  292. package/coverage/lcov-report/lib/parameterize.ts.html +0 -316
  293. package/coverage/lcov-report/prettify.css +0 -1
  294. package/coverage/lcov-report/prettify.js +0 -2
  295. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  296. package/coverage/lcov-report/sorter.js +0 -196
  297. package/coverage/lcov-report/types/aggregation.ts.html +0 -94
  298. package/coverage/lcov-report/types/index.html +0 -146
  299. package/coverage/lcov-report/types/interface.ts.html +0 -112
  300. package/coverage/lcov-report/types/parameters.ts.html +0 -106
  301. package/coverage/lcov-report/util/aggregation-helper.ts.html +0 -289
  302. package/coverage/lcov-report/util/args.ts.html +0 -649
  303. package/coverage/lcov-report/util/debug-logger.ts.html +0 -481
  304. package/coverage/lcov-report/util/errors.ts.html +0 -232
  305. package/coverage/lcov-report/util/fs.ts.html +0 -124
  306. package/coverage/lcov-report/util/helpers.ts.html +0 -895
  307. package/coverage/lcov-report/util/index.html +0 -296
  308. package/coverage/lcov-report/util/json.ts.html +0 -115
  309. package/coverage/lcov-report/util/log-memoize.ts.html +0 -145
  310. package/coverage/lcov-report/util/logger.ts.html +0 -151
  311. package/coverage/lcov-report/util/npm.ts.html +0 -499
  312. package/coverage/lcov-report/util/os-checker.ts.html +0 -421
  313. package/coverage/lcov-report/util/plugin-storage.ts.html +0 -202
  314. package/coverage/lcov-report/util/validations.ts.html +0 -544
  315. package/coverage/lcov-report/util/yaml.ts.html +0 -193
  316. package/coverage/lcov.info +0 -3548
  317. package/manifests/outputs/builtins/interpolation/interpolation.yaml +0 -81
  318. package/manifests/outputs/features/failure-invalid-regroup.yaml +0 -87
  319. package/manifests/outputs/features/failure-missing-cloud-instance-type.yaml +0 -86
@@ -30,89 +30,46 @@ const fs_1 = require("../../common/util/fs");
30
30
  const config_1 = require("../config");
31
31
  const { IF_CHECK_VERIFIED } = config_1.STRINGS;
32
32
  /**
33
- * Escapes shell characters that could be dangerous in a command.
33
+ * Executes a single Impact Framework command.
34
34
  */
35
- const escapeShellArg = (str) => str.replace(/([`$\\&;|*?<>])/g, '\\$1');
35
+ const executeCommand = (command, args, executionOptions) => {
36
+ const commandPath = process.argv[1].replace(/(?<=[/\\])if-check(?:[/\\]index(?:\.[jt]s)?)?$/, command);
37
+ return (0, child_process_1.execFileSync)(process.execPath, [...process.execArgv, commandPath, ...args], executionOptions);
38
+ };
36
39
  /**
37
- * Executes a series of npm commands based on the provided manifest file.
40
+ * Executes a series of Impact Framework commands based on the provided manifest file.
38
41
  */
39
42
  const executeCommands = async (manifest) => {
40
- // Determine if the npm command should be run globally
41
- const isGlobal = !!process.env.npm_config_global;
43
+ // Get fullpath of the manifest
44
+ if (!path.isAbsolute(manifest)) {
45
+ manifest = path.resolve(process.env.CURRENT_DIR || process.cwd(), manifest);
46
+ }
42
47
  // Get the directory path and file name of the manifest
43
48
  const manifestDirPath = path.dirname(manifest);
44
49
  const manifestFileName = (0, fs_1.getFileName)(manifest);
45
50
  // Create a path for the executed manifest file
46
51
  const executedManifest = path.join(manifestDirPath, `re-${manifestFileName}`);
47
- // Determine the prefix flag if the CURRENT_DIR environment variable is set and different from the current working directory
48
- const prefixFlag = process.env.CURRENT_DIR && process.env.CURRENT_DIR !== process.cwd()
49
- ? `--prefix=${path.relative(process.env.CURRENT_DIR, process.cwd())}`
50
- : '';
51
- // Escape shell characters in the manifest paths
52
- const sanitizedManifest = escapeShellArg(manifest);
53
- const sanitizedExecutedManifest = escapeShellArg(executedManifest);
54
- // Construct the if-env command
55
- const ifEnvCommand = [
56
- isGlobal ? 'if-env' : 'npm',
57
- ...(isGlobal ? [] : ['run', 'if-env']),
58
- isGlobal ? '' : '--',
59
- ...(prefixFlag === '' ? [] : [prefixFlag]),
60
- '-m',
61
- sanitizedManifest,
62
- ];
63
- // Construct the if-run command
64
- const ifRunCommand = [
65
- isGlobal ? 'if-run' : 'npm',
66
- ...(isGlobal ? [] : ['run', 'if-run']),
67
- isGlobal ? '' : '--',
68
- ...(prefixFlag === '' ? [] : [prefixFlag]),
69
- '-m',
70
- sanitizedManifest,
71
- '-o',
72
- sanitizedExecutedManifest,
73
- ];
74
- // Construct the tty command to check if the process is running in a TTY context
75
- const ttyCommand = ['node', '-p', 'Boolean(process.stdout.isTTY)'];
76
- // Construct the if-diff command
77
- const ifDiffCommand = [
78
- isGlobal ? 'if-diff' : 'npm',
79
- ...(isGlobal ? [] : ['run', 'if-diff']),
80
- isGlobal ? '' : '--',
81
- ...(prefixFlag === '' ? [] : [prefixFlag]),
82
- '-s',
83
- `${sanitizedExecutedManifest}.yaml`,
84
- '-t',
85
- sanitizedManifest,
86
- ];
87
- const executionOptions = {
88
- cwd: process.env.CURRENT_DIR || process.cwd(),
89
- };
90
- // Execute the if-env command
91
- (0, child_process_1.execFileSync)(ifEnvCommand[0], ifEnvCommand.slice(1), {
92
- ...executionOptions,
93
- shell: true,
94
- });
95
- // Execute the if-run command
96
- (0, child_process_1.execFileSync)(ifRunCommand[0], ifRunCommand.slice(1), executionOptions);
97
- // Execute the tty command to check if the process is running in a TTY context
98
- (0, child_process_1.execFileSync)(ttyCommand[0], ttyCommand.slice(1), executionOptions);
99
- // Get the result of the tty command
100
- const ttyResult = (0, child_process_1.execFileSync)(ttyCommand[0], ttyCommand.slice(1), executionOptions);
101
- // Determine if the process is running in a TTY context
102
- const tty = ttyResult && ttyResult.toString().trim();
103
- // Construct the full command to execute if-diff, optionally piping through tty
104
- const fullCommand = `${tty === 'true' ? 'tty |' : ''} ${ifDiffCommand.join(' ')}`;
105
- // Execute the full command
106
- (0, child_process_1.execFileSync)(fullCommand, {
107
- ...executionOptions,
108
- stdio: 'inherit',
109
- shell: true,
110
- });
111
- // Remove the package.json file if it exists
112
- await (0, fs_1.removeFileIfExists)(`${manifestDirPath}/package.json`);
113
- // Remove the executed manifest file if it exists
114
- await (0, fs_1.removeFileIfExists)(`${executedManifest}.yaml`);
52
+ try {
53
+ // Execute the if-env command
54
+ executeCommand('if-env', ['-m', manifest], {
55
+ stdio: 'ignore',
56
+ });
57
+ // Execute the if-run command
58
+ executeCommand('if-run', ['-m', manifest, '-o', executedManifest], {
59
+ stdio: 'ignore',
60
+ });
61
+ // Execute the if-diff command
62
+ executeCommand('if-diff', ['-s', `${executedManifest}.yaml`, '-t', manifest], {
63
+ stdio: 'inherit',
64
+ });
65
+ }
66
+ finally {
67
+ // Remove the package.json file if it exists
68
+ await (0, fs_1.removeFileIfExists)(`${manifestDirPath}/package.json`);
69
+ // Remove the executed manifest file if it exists
70
+ await (0, fs_1.removeFileIfExists)(`${executedManifest}.yaml`);
71
+ }
115
72
  console.log(IF_CHECK_VERIFIED(path.basename(manifest)));
116
73
  };
117
74
  exports.executeCommands = executeCommands;
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLWNoZWNrL3V0aWwvbnBtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQWtDO0FBQ2xDLGlEQUEyQztBQUMzQyw2Q0FBcUU7QUFDckUsc0NBQWtDO0FBRWxDLE1BQU0sRUFBQyxpQkFBaUIsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFcEM7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVoRjs7R0FFRztBQUNJLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxRQUFnQixFQUFFLEVBQUU7SUFDeEQsc0RBQXNEO0lBQ3RELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO0lBQ2pELHVEQUF1RDtJQUN2RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSxnQkFBVyxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLCtDQUErQztJQUMvQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRTlFLDRIQUE0SDtJQUM1SCxNQUFNLFVBQVUsR0FDZCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ2xFLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUU7UUFDdEUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVULGdEQUFnRDtJQUNoRCxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxNQUFNLHlCQUF5QixHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRW5FLCtCQUErQjtJQUMvQixNQUFNLFlBQVksR0FBRztRQUNuQixRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUMzQixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQ3BCLEdBQUcsQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsSUFBSTtRQUNKLGlCQUFpQjtLQUNsQixDQUFDO0lBRUYsK0JBQStCO0lBQy9CLE1BQU0sWUFBWSxHQUFHO1FBQ25CLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLO1FBQzNCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDcEIsR0FBRyxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxJQUFJO1FBQ0osaUJBQWlCO1FBQ2pCLElBQUk7UUFDSix5QkFBeUI7S0FDMUIsQ0FBQztJQUVGLGdGQUFnRjtJQUNoRixNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsK0JBQStCLENBQUMsQ0FBQztJQUVuRSxnQ0FBZ0M7SUFDaEMsTUFBTSxhQUFhLEdBQUc7UUFDcEIsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDNUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2QyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUNwQixHQUFHLENBQUMsVUFBVSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUk7UUFDSixHQUFHLHlCQUF5QixPQUFPO1FBQ25DLElBQUk7UUFDSixpQkFBaUI7S0FDbEIsQ0FBQztJQUVGLE1BQU0sZ0JBQWdCLEdBQUc7UUFDdkIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7S0FDOUMsQ0FBQztJQUVGLDZCQUE2QjtJQUM3QixJQUFBLDRCQUFZLEVBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDbkQsR0FBRyxnQkFBZ0I7UUFDbkIsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDLENBQUM7SUFFSCw2QkFBNkI7SUFDN0IsSUFBQSw0QkFBWSxFQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFFdkUsOEVBQThFO0lBQzlFLElBQUEsNEJBQVksRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBRW5FLG9DQUFvQztJQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFBLDRCQUFZLEVBQzVCLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFDYixVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNuQixnQkFBZ0IsQ0FDakIsQ0FBQztJQUVGLHVEQUF1RDtJQUN2RCxNQUFNLEdBQUcsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JELCtFQUErRTtJQUMvRSxNQUFNLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQ3hFLEdBQUcsQ0FDSixFQUFFLENBQUM7SUFFSiwyQkFBMkI7SUFDM0IsSUFBQSw0QkFBWSxFQUFDLFdBQVcsRUFBRTtRQUN4QixHQUFHLGdCQUFnQjtRQUNuQixLQUFLLEVBQUUsU0FBUztRQUNoQixLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUMsQ0FBQztJQUVILDRDQUE0QztJQUM1QyxNQUFNLElBQUEsdUJBQWtCLEVBQUMsR0FBRyxlQUFlLGVBQWUsQ0FBQyxDQUFDO0lBQzVELGlEQUFpRDtJQUNqRCxNQUFNLElBQUEsdUJBQWtCLEVBQUMsR0FBRyxnQkFBZ0IsT0FBTyxDQUFDLENBQUM7SUFFckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFuR1csUUFBQSxlQUFlLG1CQW1HMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQge2V4ZWNGaWxlU3luY30gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQge2dldEZpbGVOYW1lLCByZW1vdmVGaWxlSWZFeGlzdHN9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2ZzJztcbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnJztcblxuY29uc3Qge0lGX0NIRUNLX1ZFUklGSUVEfSA9IFNUUklOR1M7XG5cbi8qKlxuICogRXNjYXBlcyBzaGVsbCBjaGFyYWN0ZXJzIHRoYXQgY291bGQgYmUgZGFuZ2Vyb3VzIGluIGEgY29tbWFuZC5cbiAqL1xuY29uc3QgZXNjYXBlU2hlbGxBcmcgPSAoc3RyOiBzdHJpbmcpID0+IHN0ci5yZXBsYWNlKC8oW2AkXFxcXCY7fCo/PD5dKS9nLCAnXFxcXCQxJyk7XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBzZXJpZXMgb2YgbnBtIGNvbW1hbmRzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBtYW5pZmVzdCBmaWxlLlxuICovXG5leHBvcnQgY29uc3QgZXhlY3V0ZUNvbW1hbmRzID0gYXN5bmMgKG1hbmlmZXN0OiBzdHJpbmcpID0+IHtcbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBucG0gY29tbWFuZCBzaG91bGQgYmUgcnVuIGdsb2JhbGx5XG4gIGNvbnN0IGlzR2xvYmFsID0gISFwcm9jZXNzLmVudi5ucG1fY29uZmlnX2dsb2JhbDtcbiAgLy8gR2V0IHRoZSBkaXJlY3RvcnkgcGF0aCBhbmQgZmlsZSBuYW1lIG9mIHRoZSBtYW5pZmVzdFxuICBjb25zdCBtYW5pZmVzdERpclBhdGggPSBwYXRoLmRpcm5hbWUobWFuaWZlc3QpO1xuICBjb25zdCBtYW5pZmVzdEZpbGVOYW1lID0gZ2V0RmlsZU5hbWUobWFuaWZlc3QpO1xuICAvLyBDcmVhdGUgYSBwYXRoIGZvciB0aGUgZXhlY3V0ZWQgbWFuaWZlc3QgZmlsZVxuICBjb25zdCBleGVjdXRlZE1hbmlmZXN0ID0gcGF0aC5qb2luKG1hbmlmZXN0RGlyUGF0aCwgYHJlLSR7bWFuaWZlc3RGaWxlTmFtZX1gKTtcblxuICAvLyBEZXRlcm1pbmUgdGhlIHByZWZpeCBmbGFnIGlmIHRoZSBDVVJSRU5UX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgYW5kIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XG4gIGNvbnN0IHByZWZpeEZsYWcgPVxuICAgIHByb2Nlc3MuZW52LkNVUlJFTlRfRElSICYmIHByb2Nlc3MuZW52LkNVUlJFTlRfRElSICE9PSBwcm9jZXNzLmN3ZCgpXG4gICAgICA/IGAtLXByZWZpeD0ke3BhdGgucmVsYXRpdmUocHJvY2Vzcy5lbnYuQ1VSUkVOVF9ESVIhLCBwcm9jZXNzLmN3ZCgpKX1gXG4gICAgICA6ICcnO1xuXG4gIC8vIEVzY2FwZSBzaGVsbCBjaGFyYWN0ZXJzIGluIHRoZSBtYW5pZmVzdCBwYXRoc1xuICBjb25zdCBzYW5pdGl6ZWRNYW5pZmVzdCA9IGVzY2FwZVNoZWxsQXJnKG1hbmlmZXN0KTtcbiAgY29uc3Qgc2FuaXRpemVkRXhlY3V0ZWRNYW5pZmVzdCA9IGVzY2FwZVNoZWxsQXJnKGV4ZWN1dGVkTWFuaWZlc3QpO1xuXG4gIC8vIENvbnN0cnVjdCB0aGUgaWYtZW52IGNvbW1hbmRcbiAgY29uc3QgaWZFbnZDb21tYW5kID0gW1xuICAgIGlzR2xvYmFsID8gJ2lmLWVudicgOiAnbnBtJyxcbiAgICAuLi4oaXNHbG9iYWwgPyBbXSA6IFsncnVuJywgJ2lmLWVudiddKSxcbiAgICBpc0dsb2JhbCA/ICcnIDogJy0tJyxcbiAgICAuLi4ocHJlZml4RmxhZyA9PT0gJycgPyBbXSA6IFtwcmVmaXhGbGFnXSksXG4gICAgJy1tJyxcbiAgICBzYW5pdGl6ZWRNYW5pZmVzdCxcbiAgXTtcblxuICAvLyBDb25zdHJ1Y3QgdGhlIGlmLXJ1biBjb21tYW5kXG4gIGNvbnN0IGlmUnVuQ29tbWFuZCA9IFtcbiAgICBpc0dsb2JhbCA/ICdpZi1ydW4nIDogJ25wbScsXG4gICAgLi4uKGlzR2xvYmFsID8gW10gOiBbJ3J1bicsICdpZi1ydW4nXSksXG4gICAgaXNHbG9iYWwgPyAnJyA6ICctLScsXG4gICAgLi4uKHByZWZpeEZsYWcgPT09ICcnID8gW10gOiBbcHJlZml4RmxhZ10pLFxuICAgICctbScsXG4gICAgc2FuaXRpemVkTWFuaWZlc3QsXG4gICAgJy1vJyxcbiAgICBzYW5pdGl6ZWRFeGVjdXRlZE1hbmlmZXN0LFxuICBdO1xuXG4gIC8vIENvbnN0cnVjdCB0aGUgdHR5IGNvbW1hbmQgdG8gY2hlY2sgaWYgdGhlIHByb2Nlc3MgaXMgcnVubmluZyBpbiBhIFRUWSBjb250ZXh0XG4gIGNvbnN0IHR0eUNvbW1hbmQgPSBbJ25vZGUnLCAnLXAnLCAnQm9vbGVhbihwcm9jZXNzLnN0ZG91dC5pc1RUWSknXTtcblxuICAvLyBDb25zdHJ1Y3QgdGhlIGlmLWRpZmYgY29tbWFuZFxuICBjb25zdCBpZkRpZmZDb21tYW5kID0gW1xuICAgIGlzR2xvYmFsID8gJ2lmLWRpZmYnIDogJ25wbScsXG4gICAgLi4uKGlzR2xvYmFsID8gW10gOiBbJ3J1bicsICdpZi1kaWZmJ10pLFxuICAgIGlzR2xvYmFsID8gJycgOiAnLS0nLFxuICAgIC4uLihwcmVmaXhGbGFnID09PSAnJyA/IFtdIDogW3ByZWZpeEZsYWddKSxcbiAgICAnLXMnLFxuICAgIGAke3Nhbml0aXplZEV4ZWN1dGVkTWFuaWZlc3R9LnlhbWxgLFxuICAgICctdCcsXG4gICAgc2FuaXRpemVkTWFuaWZlc3QsXG4gIF07XG5cbiAgY29uc3QgZXhlY3V0aW9uT3B0aW9ucyA9IHtcbiAgICBjd2Q6IHByb2Nlc3MuZW52LkNVUlJFTlRfRElSIHx8IHByb2Nlc3MuY3dkKCksXG4gIH07XG5cbiAgLy8gRXhlY3V0ZSB0aGUgaWYtZW52IGNvbW1hbmRcbiAgZXhlY0ZpbGVTeW5jKGlmRW52Q29tbWFuZFswXSwgaWZFbnZDb21tYW5kLnNsaWNlKDEpLCB7XG4gICAgLi4uZXhlY3V0aW9uT3B0aW9ucyxcbiAgICBzaGVsbDogdHJ1ZSxcbiAgfSk7XG5cbiAgLy8gRXhlY3V0ZSB0aGUgaWYtcnVuIGNvbW1hbmRcbiAgZXhlY0ZpbGVTeW5jKGlmUnVuQ29tbWFuZFswXSwgaWZSdW5Db21tYW5kLnNsaWNlKDEpLCBleGVjdXRpb25PcHRpb25zKTtcblxuICAvLyBFeGVjdXRlIHRoZSB0dHkgY29tbWFuZCB0byBjaGVjayBpZiB0aGUgcHJvY2VzcyBpcyBydW5uaW5nIGluIGEgVFRZIGNvbnRleHRcbiAgZXhlY0ZpbGVTeW5jKHR0eUNvbW1hbmRbMF0sIHR0eUNvbW1hbmQuc2xpY2UoMSksIGV4ZWN1dGlvbk9wdGlvbnMpO1xuXG4gIC8vIEdldCB0aGUgcmVzdWx0IG9mIHRoZSB0dHkgY29tbWFuZFxuICBjb25zdCB0dHlSZXN1bHQgPSBleGVjRmlsZVN5bmMoXG4gICAgdHR5Q29tbWFuZFswXSxcbiAgICB0dHlDb21tYW5kLnNsaWNlKDEpLFxuICAgIGV4ZWN1dGlvbk9wdGlvbnNcbiAgKTtcblxuICAvLyBEZXRlcm1pbmUgaWYgdGhlIHByb2Nlc3MgaXMgcnVubmluZyBpbiBhIFRUWSBjb250ZXh0XG4gIGNvbnN0IHR0eSA9IHR0eVJlc3VsdCAmJiB0dHlSZXN1bHQudG9TdHJpbmcoKS50cmltKCk7XG4gIC8vIENvbnN0cnVjdCB0aGUgZnVsbCBjb21tYW5kIHRvIGV4ZWN1dGUgaWYtZGlmZiwgb3B0aW9uYWxseSBwaXBpbmcgdGhyb3VnaCB0dHlcbiAgY29uc3QgZnVsbENvbW1hbmQgPSBgJHt0dHkgPT09ICd0cnVlJyA/ICd0dHkgfCcgOiAnJ30gJHtpZkRpZmZDb21tYW5kLmpvaW4oXG4gICAgJyAnXG4gICl9YDtcblxuICAvLyBFeGVjdXRlIHRoZSBmdWxsIGNvbW1hbmRcbiAgZXhlY0ZpbGVTeW5jKGZ1bGxDb21tYW5kLCB7XG4gICAgLi4uZXhlY3V0aW9uT3B0aW9ucyxcbiAgICBzdGRpbzogJ2luaGVyaXQnLFxuICAgIHNoZWxsOiB0cnVlLFxuICB9KTtcblxuICAvLyBSZW1vdmUgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlmIGl0IGV4aXN0c1xuICBhd2FpdCByZW1vdmVGaWxlSWZFeGlzdHMoYCR7bWFuaWZlc3REaXJQYXRofS9wYWNrYWdlLmpzb25gKTtcbiAgLy8gUmVtb3ZlIHRoZSBleGVjdXRlZCBtYW5pZmVzdCBmaWxlIGlmIGl0IGV4aXN0c1xuICBhd2FpdCByZW1vdmVGaWxlSWZFeGlzdHMoYCR7ZXhlY3V0ZWRNYW5pZmVzdH0ueWFtbGApO1xuXG4gIGNvbnNvbGUubG9nKElGX0NIRUNLX1ZFUklGSUVEKHBhdGguYmFzZW5hbWUobWFuaWZlc3QpKSk7XG59O1xuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLWNoZWNrL3V0aWwvbnBtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQWtDO0FBQ2xDLGlEQUFxRTtBQUNyRSw2Q0FBcUU7QUFDckUsc0NBQWtDO0FBRWxDLE1BQU0sRUFBQyxpQkFBaUIsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFcEM7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUNyQixPQUFlLEVBQ2YsSUFBdUIsRUFDdkIsZ0JBQXFDLEVBQ3JDLEVBQUU7SUFDRixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDekMsZ0RBQWdELEVBQ2hELE9BQU8sQ0FDUixDQUFDO0lBRUYsT0FBTyxJQUFBLDRCQUFZLEVBQ2pCLE9BQU8sQ0FBQyxRQUFRLEVBQ2hCLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUMzQyxnQkFBZ0IsQ0FDakIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0ksTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN4RCwrQkFBK0I7SUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDOUIsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzdFO0lBQ0QsdURBQXVEO0lBQ3ZELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLGdCQUFXLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsK0NBQStDO0lBQy9DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFOUUsSUFBSTtRQUNGLDZCQUE2QjtRQUM3QixjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ3pDLEtBQUssRUFBRSxRQUFRO1NBQ2hCLENBQUMsQ0FBQztRQUVILDZCQUE2QjtRQUM3QixjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtZQUNqRSxLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFDLENBQUM7UUFFSCw4QkFBOEI7UUFDOUIsY0FBYyxDQUNaLFNBQVMsRUFDVCxDQUFDLElBQUksRUFBRSxHQUFHLGdCQUFnQixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUNsRDtZQUNFLEtBQUssRUFBRSxTQUFTO1NBQ2pCLENBQ0YsQ0FBQztLQUNIO1lBQVM7UUFDUiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFBLHVCQUFrQixFQUFDLEdBQUcsZUFBZSxlQUFlLENBQUMsQ0FBQztRQUM1RCxpREFBaUQ7UUFDakQsTUFBTSxJQUFBLHVCQUFrQixFQUFDLEdBQUcsZ0JBQWdCLE9BQU8sQ0FBQyxDQUFDO0tBQ3REO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUF0Q1csUUFBQSxlQUFlLG1CQXNDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQge2V4ZWNGaWxlU3luYywgdHlwZSBFeGVjRmlsZVN5bmNPcHRpb25zfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7Z2V0RmlsZU5hbWUsIHJlbW92ZUZpbGVJZkV4aXN0c30gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvZnMnO1xuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi9jb25maWcnO1xuXG5jb25zdCB7SUZfQ0hFQ0tfVkVSSUZJRUR9ID0gU1RSSU5HUztcblxuLyoqXG4gKiBFeGVjdXRlcyBhIHNpbmdsZSBJbXBhY3QgRnJhbWV3b3JrIGNvbW1hbmQuXG4gKi9cbmNvbnN0IGV4ZWN1dGVDb21tYW5kID0gKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIGFyZ3M6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBleGVjdXRpb25PcHRpb25zOiBFeGVjRmlsZVN5bmNPcHRpb25zXG4pID0+IHtcbiAgY29uc3QgY29tbWFuZFBhdGggPSBwcm9jZXNzLmFyZ3ZbMV0ucmVwbGFjZShcbiAgICAvKD88PVsvXFxcXF0paWYtY2hlY2soPzpbL1xcXFxdaW5kZXgoPzpcXC5banRdcyk/KT8kLyxcbiAgICBjb21tYW5kXG4gICk7XG5cbiAgcmV0dXJuIGV4ZWNGaWxlU3luYyhcbiAgICBwcm9jZXNzLmV4ZWNQYXRoLFxuICAgIFsuLi5wcm9jZXNzLmV4ZWNBcmd2LCBjb21tYW5kUGF0aCwgLi4uYXJnc10sXG4gICAgZXhlY3V0aW9uT3B0aW9uc1xuICApO1xufTtcblxuLyoqXG4gKiBFeGVjdXRlcyBhIHNlcmllcyBvZiBJbXBhY3QgRnJhbWV3b3JrIGNvbW1hbmRzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBtYW5pZmVzdCBmaWxlLlxuICovXG5leHBvcnQgY29uc3QgZXhlY3V0ZUNvbW1hbmRzID0gYXN5bmMgKG1hbmlmZXN0OiBzdHJpbmcpID0+IHtcbiAgLy8gR2V0IGZ1bGxwYXRoIG9mIHRoZSBtYW5pZmVzdFxuICBpZiAoIXBhdGguaXNBYnNvbHV0ZShtYW5pZmVzdCkpIHtcbiAgICBtYW5pZmVzdCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5DVVJSRU5UX0RJUiB8fCBwcm9jZXNzLmN3ZCgpLCBtYW5pZmVzdCk7XG4gIH1cbiAgLy8gR2V0IHRoZSBkaXJlY3RvcnkgcGF0aCBhbmQgZmlsZSBuYW1lIG9mIHRoZSBtYW5pZmVzdFxuICBjb25zdCBtYW5pZmVzdERpclBhdGggPSBwYXRoLmRpcm5hbWUobWFuaWZlc3QpO1xuICBjb25zdCBtYW5pZmVzdEZpbGVOYW1lID0gZ2V0RmlsZU5hbWUobWFuaWZlc3QpO1xuICAvLyBDcmVhdGUgYSBwYXRoIGZvciB0aGUgZXhlY3V0ZWQgbWFuaWZlc3QgZmlsZVxuICBjb25zdCBleGVjdXRlZE1hbmlmZXN0ID0gcGF0aC5qb2luKG1hbmlmZXN0RGlyUGF0aCwgYHJlLSR7bWFuaWZlc3RGaWxlTmFtZX1gKTtcblxuICB0cnkge1xuICAgIC8vIEV4ZWN1dGUgdGhlIGlmLWVudiBjb21tYW5kXG4gICAgZXhlY3V0ZUNvbW1hbmQoJ2lmLWVudicsIFsnLW0nLCBtYW5pZmVzdF0sIHtcbiAgICAgIHN0ZGlvOiAnaWdub3JlJyxcbiAgICB9KTtcblxuICAgIC8vIEV4ZWN1dGUgdGhlIGlmLXJ1biBjb21tYW5kXG4gICAgZXhlY3V0ZUNvbW1hbmQoJ2lmLXJ1bicsIFsnLW0nLCBtYW5pZmVzdCwgJy1vJywgZXhlY3V0ZWRNYW5pZmVzdF0sIHtcbiAgICAgIHN0ZGlvOiAnaWdub3JlJyxcbiAgICB9KTtcblxuICAgIC8vIEV4ZWN1dGUgdGhlIGlmLWRpZmYgY29tbWFuZFxuICAgIGV4ZWN1dGVDb21tYW5kKFxuICAgICAgJ2lmLWRpZmYnLFxuICAgICAgWyctcycsIGAke2V4ZWN1dGVkTWFuaWZlc3R9LnlhbWxgLCAnLXQnLCBtYW5pZmVzdF0sXG4gICAgICB7XG4gICAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgICB9XG4gICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBSZW1vdmUgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlmIGl0IGV4aXN0c1xuICAgIGF3YWl0IHJlbW92ZUZpbGVJZkV4aXN0cyhgJHttYW5pZmVzdERpclBhdGh9L3BhY2thZ2UuanNvbmApO1xuICAgIC8vIFJlbW92ZSB0aGUgZXhlY3V0ZWQgbWFuaWZlc3QgZmlsZSBpZiBpdCBleGlzdHNcbiAgICBhd2FpdCByZW1vdmVGaWxlSWZFeGlzdHMoYCR7ZXhlY3V0ZWRNYW5pZmVzdH0ueWFtbGApO1xuICB9XG5cbiAgY29uc29sZS5sb2coSUZfQ0hFQ0tfVkVSSUZJRUQocGF0aC5iYXNlbmFtZShtYW5pZmVzdCkpKTtcbn07XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import { ArgumentConfig } from 'ts-command-line-args';
2
+ import { IFCheckMetadataArgs } from '../types/process-args';
3
+ export declare const CONFIG: {
4
+ ARGS: ArgumentConfig<IFCheckMetadataArgs>;
5
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONFIG = void 0;
4
+ exports.CONFIG = {
5
+ ARGS: {
6
+ manifest: {
7
+ type: String,
8
+ alias: 'm',
9
+ description: 'Path of the manifest file',
10
+ },
11
+ parameters: {
12
+ type: String,
13
+ alias: 'p',
14
+ description: 'List of parameters to check',
15
+ multiple: true,
16
+ defaultValue: [],
17
+ },
18
+ help: {
19
+ type: Boolean,
20
+ alias: 'h',
21
+ description: 'Prints out the help instruction',
22
+ optional: true,
23
+ },
24
+ },
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLW1ldGFkYXRhLWNoZWNrL2NvbmZpZy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR2EsUUFBQSxNQUFNLEdBQUc7SUFDcEIsSUFBSSxFQUFFO1FBQ0osUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsR0FBRztZQUNWLFdBQVcsRUFBRSwyQkFBMkI7U0FDekM7UUFDRCxVQUFVLEVBQUU7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxHQUFHO1lBQ1YsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxRQUFRLEVBQUUsSUFBSTtZQUNkLFlBQVksRUFBRSxFQUFFO1NBQ2pCO1FBQ0QsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsR0FBRztZQUNWLFdBQVcsRUFBRSxpQ0FBaUM7WUFDOUMsUUFBUSxFQUFFLElBQUk7U0FDZjtLQUNxQztDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcmd1bWVudENvbmZpZ30gZnJvbSAndHMtY29tbWFuZC1saW5lLWFyZ3MnO1xuaW1wb3J0IHtJRkNoZWNrTWV0YWRhdGFBcmdzfSBmcm9tICcuLi90eXBlcy9wcm9jZXNzLWFyZ3MnO1xuXG5leHBvcnQgY29uc3QgQ09ORklHID0ge1xuICBBUkdTOiB7XG4gICAgbWFuaWZlc3Q6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGFsaWFzOiAnbScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BhdGggb2YgdGhlIG1hbmlmZXN0IGZpbGUnLFxuICAgIH0sXG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgYWxpYXM6ICdwJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBvZiBwYXJhbWV0ZXJzIHRvIGNoZWNrJyxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBbXSxcbiAgICB9LFxuICAgIGhlbHA6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBhbGlhczogJ2gnLFxuICAgICAgZGVzY3JpcHRpb246ICdQcmludHMgb3V0IHRoZSBoZWxwIGluc3RydWN0aW9uJyxcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0sXG4gIH0gYXMgQXJndW1lbnRDb25maWc8SUZDaGVja01ldGFkYXRhQXJncz4sXG59O1xuIl19
@@ -0,0 +1,5 @@
1
+ export declare const STRINGS: {
2
+ PARAMETERS_MISSING_METADATA: string;
3
+ ALL_PARAMETERS_HAVE_METADATA: string;
4
+ PERCENTAGE_COVERAGE: string;
5
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRINGS = void 0;
4
+ exports.STRINGS = {
5
+ PARAMETERS_MISSING_METADATA: 'The following parameters are missing metadata: ',
6
+ ALL_PARAMETERS_HAVE_METADATA: 'All parameters have associated metadata.',
7
+ PERCENTAGE_COVERAGE: 'Metadata coverage percentage: ',
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1tZXRhZGF0YS1jaGVjay9jb25maWcvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLE9BQU8sR0FBRztJQUNyQiwyQkFBMkIsRUFDekIsaURBQWlEO0lBQ25ELDRCQUE0QixFQUFFLDBDQUEwQztJQUN4RSxtQkFBbUIsRUFBRSxnQ0FBZ0M7Q0FDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTVFJJTkdTID0ge1xuICBQQVJBTUVURVJTX01JU1NJTkdfTUVUQURBVEE6XG4gICAgJ1RoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgbWlzc2luZyBtZXRhZGF0YTogJyxcbiAgQUxMX1BBUkFNRVRFUlNfSEFWRV9NRVRBREFUQTogJ0FsbCBwYXJhbWV0ZXJzIGhhdmUgYXNzb2NpYXRlZCBtZXRhZGF0YS4nLFxuICBQRVJDRU5UQUdFX0NPVkVSQUdFOiAnTWV0YWRhdGEgY292ZXJhZ2UgcGVyY2VudGFnZTogJyxcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ #!/user/bin/env node
2
+ export {};
@@ -0,0 +1,30 @@
1
+ #!/user/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const args_1 = require("./util/args");
5
+ const metadata_checker_1 = require("./util/metadata-checker");
6
+ const debug_logger_1 = require("../common/util/debug-logger");
7
+ const logger_1 = require("../common/util/logger");
8
+ const strings_1 = require("./config/strings");
9
+ const { PERCENTAGE_COVERAGE, ALL_PARAMETERS_HAVE_METADATA, PARAMETERS_MISSING_METADATA, } = strings_1.STRINGS;
10
+ const IfCheckMetadata = async () => {
11
+ debug_logger_1.debugLogger.overrideConsoleMethods(false);
12
+ const { parameters, ...manifestData } = await (0, args_1.parseIFCheckMetadataArgs)();
13
+ const parameterSet = (0, metadata_checker_1.getParameters)(Object.values(manifestData.initialize.plugins), parameters);
14
+ const parameterWithMetadataSet = (0, metadata_checker_1.getParametersWithMetadata)(Object.values(manifestData.initialize.plugins));
15
+ const { percentage, missingParameters } = (0, metadata_checker_1.calculateMetadataCoverage)(parameterSet, parameterWithMetadataSet);
16
+ console.log(`${PERCENTAGE_COVERAGE} ${percentage.toFixed(2)}%`);
17
+ if (missingParameters.length > 0) {
18
+ console.log(PARAMETERS_MISSING_METADATA);
19
+ missingParameters.forEach(parameter => console.log(` - ${parameter}`));
20
+ }
21
+ else {
22
+ console.log(ALL_PARAMETERS_HAVE_METADATA);
23
+ }
24
+ };
25
+ IfCheckMetadata().catch(error => {
26
+ if (error instanceof Error)
27
+ logger_1.logger.error(`${error.message}`);
28
+ throw error;
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWYtbWV0YWRhdGEtY2hlY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0Esc0NBQXFEO0FBQ3JELDhEQUlpQztBQUNqQyw4REFBd0Q7QUFDeEQsa0RBQTZDO0FBQzdDLDhDQUF5QztBQUV6QyxNQUFNLEVBQ0osbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1QiwyQkFBMkIsR0FDNUIsR0FBRyxpQkFBTyxDQUFDO0FBRVosTUFBTSxlQUFlLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDakMsMEJBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxNQUFNLEVBQUMsVUFBVSxFQUFFLEdBQUcsWUFBWSxFQUFDLEdBQUcsTUFBTSxJQUFBLCtCQUF3QixHQUFFLENBQUM7SUFFdkUsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQ0FBYSxFQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFlLEVBQzVELFVBQVUsQ0FDWCxDQUFDO0lBQ0YsTUFBTSx3QkFBd0IsR0FBRyxJQUFBLDRDQUF5QixFQUN4RCxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFlLENBQzdELENBQUM7SUFDRixNQUFNLEVBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFDLEdBQUcsSUFBQSw0Q0FBeUIsRUFDL0QsWUFBWSxFQUNaLHdCQUF3QixDQUN6QixDQUFDO0lBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLElBQUksaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDekMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN6RTtTQUFNO1FBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0tBQzNDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQzlCLElBQUksS0FBSyxZQUFZLEtBQUs7UUFBRSxlQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDN0QsTUFBTSxLQUFLLENBQUM7QUFDZCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3VzZXIvYmluL2VudiBub2RlXG5cbmltcG9ydCB7SUZQbHVnaW59IGZyb20gJy4vdHlwZXMvcGx1Z2luJztcbmltcG9ydCB7cGFyc2VJRkNoZWNrTWV0YWRhdGFBcmdzfSBmcm9tICcuL3V0aWwvYXJncyc7XG5pbXBvcnQge1xuICBnZXRQYXJhbWV0ZXJzLFxuICBnZXRQYXJhbWV0ZXJzV2l0aE1ldGFkYXRhLFxuICBjYWxjdWxhdGVNZXRhZGF0YUNvdmVyYWdlLFxufSBmcm9tICcuL3V0aWwvbWV0YWRhdGEtY2hlY2tlcic7XG5pbXBvcnQge2RlYnVnTG9nZ2VyfSBmcm9tICcuLi9jb21tb24vdXRpbC9kZWJ1Zy1sb2dnZXInO1xuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4uL2NvbW1vbi91dGlsL2xvZ2dlcic7XG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4vY29uZmlnL3N0cmluZ3MnO1xuXG5jb25zdCB7XG4gIFBFUkNFTlRBR0VfQ09WRVJBR0UsXG4gIEFMTF9QQVJBTUVURVJTX0hBVkVfTUVUQURBVEEsXG4gIFBBUkFNRVRFUlNfTUlTU0lOR19NRVRBREFUQSxcbn0gPSBTVFJJTkdTO1xuXG5jb25zdCBJZkNoZWNrTWV0YWRhdGEgPSBhc3luYyAoKSA9PiB7XG4gIGRlYnVnTG9nZ2VyLm92ZXJyaWRlQ29uc29sZU1ldGhvZHMoZmFsc2UpO1xuICBjb25zdCB7cGFyYW1ldGVycywgLi4ubWFuaWZlc3REYXRhfSA9IGF3YWl0IHBhcnNlSUZDaGVja01ldGFkYXRhQXJncygpO1xuXG4gIGNvbnN0IHBhcmFtZXRlclNldCA9IGdldFBhcmFtZXRlcnMoXG4gICAgT2JqZWN0LnZhbHVlcyhtYW5pZmVzdERhdGEuaW5pdGlhbGl6ZS5wbHVnaW5zKSBhcyBJRlBsdWdpbltdLFxuICAgIHBhcmFtZXRlcnNcbiAgKTtcbiAgY29uc3QgcGFyYW1ldGVyV2l0aE1ldGFkYXRhU2V0ID0gZ2V0UGFyYW1ldGVyc1dpdGhNZXRhZGF0YShcbiAgICBPYmplY3QudmFsdWVzKG1hbmlmZXN0RGF0YS5pbml0aWFsaXplLnBsdWdpbnMpIGFzIElGUGx1Z2luW11cbiAgKTtcbiAgY29uc3Qge3BlcmNlbnRhZ2UsIG1pc3NpbmdQYXJhbWV0ZXJzfSA9IGNhbGN1bGF0ZU1ldGFkYXRhQ292ZXJhZ2UoXG4gICAgcGFyYW1ldGVyU2V0LFxuICAgIHBhcmFtZXRlcldpdGhNZXRhZGF0YVNldFxuICApO1xuICBjb25zb2xlLmxvZyhgJHtQRVJDRU5UQUdFX0NPVkVSQUdFfSAke3BlcmNlbnRhZ2UudG9GaXhlZCgyKX0lYCk7XG4gIGlmIChtaXNzaW5nUGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgY29uc29sZS5sb2coUEFSQU1FVEVSU19NSVNTSU5HX01FVEFEQVRBKTtcbiAgICBtaXNzaW5nUGFyYW1ldGVycy5mb3JFYWNoKHBhcmFtZXRlciA9PiBjb25zb2xlLmxvZyhgICAtICR7cGFyYW1ldGVyfWApKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhBTExfUEFSQU1FVEVSU19IQVZFX01FVEFEQVRBKTtcbiAgfVxufTtcblxuSWZDaGVja01ldGFkYXRhKCkuY2F0Y2goZXJyb3IgPT4ge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgbG9nZ2VyLmVycm9yKGAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gIHRocm93IGVycm9yO1xufSk7XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { PluginParametersMetadata } from '@grnsft/if-core/types';
2
+ export interface IFPlugin {
3
+ path: string;
4
+ method: string;
5
+ config?: Record<string, any>;
6
+ 'parameter-metadata'?: PluginParametersMetadata;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLW1ldGFkYXRhLWNoZWNrL3R5cGVzL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQbHVnaW5QYXJhbWV0ZXJzTWV0YWRhdGF9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZQbHVnaW4ge1xuICBwYXRoOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAncGFyYW1ldGVyLW1ldGFkYXRhJz86IFBsdWdpblBhcmFtZXRlcnNNZXRhZGF0YTtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export interface IFCheckMetadataArgs {
2
+ manifest: string;
3
+ parameters: string[];
4
+ help?: boolean;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hcmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLW1ldGFkYXRhLWNoZWNrL3R5cGVzL3Byb2Nlc3MtYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJRkNoZWNrTWV0YWRhdGFBcmdzIHtcbiAgbWFuaWZlc3Q6IHN0cmluZztcbiAgcGFyYW1ldGVyczogc3RyaW5nW107XG4gIGhlbHA/OiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,57 @@
1
+ export declare const parseIFCheckMetadataArgs: () => Promise<{
2
+ parameters: string[];
3
+ name: string;
4
+ initialize: {
5
+ plugins: Record<string, {
6
+ path: string;
7
+ method: string;
8
+ mapping?: Record<string, string> | undefined;
9
+ config?: Record<string, any> | undefined;
10
+ 'parameter-metadata'?: {
11
+ inputs?: Record<string, {
12
+ unit: string;
13
+ description: string;
14
+ 'aggregation-method': {
15
+ time: "sum" | "avg" | "none" | "copy";
16
+ component: "sum" | "avg" | "none" | "copy";
17
+ };
18
+ }> | null | undefined;
19
+ outputs?: Record<string, {
20
+ unit: string;
21
+ description: string;
22
+ 'aggregation-method': {
23
+ time: "sum" | "avg" | "none" | "copy";
24
+ component: "sum" | "avg" | "none" | "copy";
25
+ };
26
+ }> | null | undefined;
27
+ } | undefined;
28
+ } | undefined>;
29
+ };
30
+ tree: Record<string, any>;
31
+ description?: string | null | undefined;
32
+ tags?: {
33
+ kind?: string | null | undefined;
34
+ complexity?: string | null | undefined;
35
+ category?: string | null | undefined;
36
+ } | null | undefined;
37
+ explainer?: boolean | undefined;
38
+ explain?: Record<string, any> | undefined;
39
+ aggregation?: {
40
+ type: "horizontal" | "time" | "vertical" | "component" | "both";
41
+ metrics: string[];
42
+ 'skip-components'?: string[] | undefined;
43
+ } | null | undefined;
44
+ execution?: {
45
+ status: string;
46
+ command?: string | undefined;
47
+ environment?: {
48
+ 'if-version': string;
49
+ os: string;
50
+ 'os-version': string;
51
+ 'node-version': string;
52
+ 'date-time': string;
53
+ dependencies: string[];
54
+ } | undefined;
55
+ error?: string | undefined;
56
+ } | undefined;
57
+ }>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseIFCheckMetadataArgs = void 0;
4
+ const ts_command_line_args_1 = require("ts-command-line-args");
5
+ const config_1 = require("../config/config");
6
+ const helpers_1 = require("../../common/util/helpers");
7
+ const load_1 = require("../../common/lib/load");
8
+ const validations_1 = require("../../common/util/validations");
9
+ const { ARGS } = config_1.CONFIG;
10
+ const validateAndParseIFCheckMetadataArgs = () => {
11
+ try {
12
+ return (0, ts_command_line_args_1.parse)(ARGS);
13
+ }
14
+ catch (error) {
15
+ if (error instanceof Error) {
16
+ console.log(error.message);
17
+ (0, helpers_1.runHelpCommand)('if-check-metadata');
18
+ }
19
+ throw error;
20
+ }
21
+ };
22
+ const parseIFCheckMetadataArgs = async () => {
23
+ const { manifest, parameters } = validateAndParseIFCheckMetadataArgs();
24
+ const { rawManifest } = await (0, load_1.load)(manifest);
25
+ const validatedManifest = (0, validations_1.validateManifest)(rawManifest);
26
+ return { ...validatedManifest, parameters };
27
+ };
28
+ exports.parseIFCheckMetadataArgs = parseIFCheckMetadataArgs;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1tZXRhZGF0YS1jaGVjay91dGlsL2FyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0RBQTJDO0FBQzNDLDZDQUF3QztBQUN4Qyx1REFBeUQ7QUFDekQsZ0RBQTJDO0FBQzNDLCtEQUErRDtBQUUvRCxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRXRCLE1BQU0sbUNBQW1DLEdBQUcsR0FBd0IsRUFBRTtJQUNwRSxJQUFJO1FBQ0YsT0FBTyxJQUFBLDRCQUFLLEVBQXNCLElBQUksQ0FBQyxDQUFDO0tBQ3pDO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7WUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0IsSUFBQSx3QkFBYyxFQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDckM7UUFDRCxNQUFNLEtBQUssQ0FBQztLQUNiO0FBQ0gsQ0FBQyxDQUFDO0FBRUssTUFBTSx3QkFBd0IsR0FBRyxLQUFLLElBQUksRUFBRTtJQUNqRCxNQUFNLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxHQUFHLG1DQUFtQyxFQUFFLENBQUM7SUFDckUsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLE1BQU0sSUFBQSxXQUFJLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLDhCQUFnQixFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sRUFBQyxHQUFHLGlCQUFpQixFQUFFLFVBQVUsRUFBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUxXLFFBQUEsd0JBQXdCLDRCQUtuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SUZDaGVja01ldGFkYXRhQXJnc30gZnJvbSAnLi4vdHlwZXMvcHJvY2Vzcy1hcmdzJztcbmltcG9ydCB7cGFyc2V9IGZyb20gJ3RzLWNvbW1hbmQtbGluZS1hcmdzJztcbmltcG9ydCB7Q09ORklHfSBmcm9tICcuLi9jb25maWcvY29uZmlnJztcbmltcG9ydCB7cnVuSGVscENvbW1hbmR9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2hlbHBlcnMnO1xuaW1wb3J0IHtsb2FkfSBmcm9tICcuLi8uLi9jb21tb24vbGliL2xvYWQnO1xuaW1wb3J0IHt2YWxpZGF0ZU1hbmlmZXN0fSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmNvbnN0IHtBUkdTfSA9IENPTkZJRztcblxuY29uc3QgdmFsaWRhdGVBbmRQYXJzZUlGQ2hlY2tNZXRhZGF0YUFyZ3MgPSAoKTogSUZDaGVja01ldGFkYXRhQXJncyA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlPElGQ2hlY2tNZXRhZGF0YUFyZ3M+KEFSR1MpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTtcbiAgICAgIHJ1bkhlbHBDb21tYW5kKCdpZi1jaGVjay1tZXRhZGF0YScpO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlSUZDaGVja01ldGFkYXRhQXJncyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3Qge21hbmlmZXN0LCBwYXJhbWV0ZXJzfSA9IHZhbGlkYXRlQW5kUGFyc2VJRkNoZWNrTWV0YWRhdGFBcmdzKCk7XG4gIGNvbnN0IHtyYXdNYW5pZmVzdH0gPSBhd2FpdCBsb2FkKG1hbmlmZXN0KTtcbiAgY29uc3QgdmFsaWRhdGVkTWFuaWZlc3QgPSB2YWxpZGF0ZU1hbmlmZXN0KHJhd01hbmlmZXN0KTtcbiAgcmV0dXJuIHsuLi52YWxpZGF0ZWRNYW5pZmVzdCwgcGFyYW1ldGVyc307XG59O1xuIl19
@@ -0,0 +1,44 @@
1
+ import { IFPlugin } from '../types/plugin';
2
+ /**
3
+ * Extracts a set of parameter values from the configurations of the provided plugins.
4
+ *
5
+ * @param plugins - An array of plugins, each containing configuration data.
6
+ * @param parameters - Additional parameter keys to extract from the plugin configurations.
7
+ * @returns A set of parameter values extracted from the plugin configurations.
8
+ */
9
+ export declare const getParameters: (plugins: IFPlugin[], parameters: string[]) => Set<string>;
10
+ /**
11
+ * Extracts a set of parameters that have defined metadata from the provided plugins.
12
+ *
13
+ * @param plugins - An array of plugins, each containing metadata information.
14
+ * @returns A set of parameter names that have associated metadata.
15
+ */
16
+ export declare const getParametersWithMetadata: (plugins: IFPlugin[]) => Set<string>;
17
+ /**
18
+ * Extracts parameters with metadata from a single plugin.
19
+ *
20
+ * @param plugin - A plugin object containing metadata information.
21
+ * @returns An array of parameter names that have associated metadata, including inputs and outputs.
22
+ */
23
+ export declare const extractParametersWithMetadata: (plugin: IFPlugin) => string[];
24
+ /**
25
+ * Extracts parameter values from a plugin's configuration based on specified keys.
26
+ *
27
+ * @param config - The configuration object of a plugin.
28
+ * @param keys - An array of keys to look for in the configuration object.
29
+ * @returns An array of parameter values corresponding to the specified keys.
30
+ */
31
+ export declare const extractParameters: (config: Record<string, any> | undefined, keys: string[]) => any[];
32
+ /**
33
+ * Calculates the coverage of metadata for a given set of parameters.
34
+ *
35
+ * @param parameterSet - A set of all parameters extracted from plugin configurations.
36
+ * @param parameterWithMetadataSet - A set of parameters that have associated metadata.
37
+ * @returns An object containing:
38
+ * - `percentage`: The percentage of parameters with metadata coverage.
39
+ * - `missingParameters`: An array of parameters that lack metadata coverage.
40
+ */
41
+ export declare const calculateMetadataCoverage: (parameterSet: Set<string>, parameterWithMetadataSet: Set<string>) => {
42
+ percentage: number;
43
+ missingParameters: string[];
44
+ };
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateMetadataCoverage = exports.extractParameters = exports.extractParametersWithMetadata = exports.getParametersWithMetadata = exports.getParameters = void 0;
4
+ /**
5
+ * Extracts a set of parameter values from the configurations of the provided plugins.
6
+ *
7
+ * @param plugins - An array of plugins, each containing configuration data.
8
+ * @param parameters - Additional parameter keys to extract from the plugin configurations.
9
+ * @returns A set of parameter values extracted from the plugin configurations.
10
+ */
11
+ const getParameters = (plugins, parameters) => {
12
+ return new Set(plugins.flatMap(plugin => (0, exports.extractParameters)(plugin.config, [
13
+ 'input-parameter',
14
+ 'output-parameter',
15
+ 'input-parameters',
16
+ 'output',
17
+ ...parameters,
18
+ ])));
19
+ };
20
+ exports.getParameters = getParameters;
21
+ /**
22
+ * Extracts a set of parameters that have defined metadata from the provided plugins.
23
+ *
24
+ * @param plugins - An array of plugins, each containing metadata information.
25
+ * @returns A set of parameter names that have associated metadata.
26
+ */
27
+ const getParametersWithMetadata = (plugins) => {
28
+ return new Set(plugins.flatMap(plugin => (0, exports.extractParametersWithMetadata)(plugin)));
29
+ };
30
+ exports.getParametersWithMetadata = getParametersWithMetadata;
31
+ /**
32
+ * Extracts parameters with metadata from a single plugin.
33
+ *
34
+ * @param plugin - A plugin object containing metadata information.
35
+ * @returns An array of parameter names that have associated metadata, including inputs and outputs.
36
+ */
37
+ const extractParametersWithMetadata = (plugin) => {
38
+ if (!plugin['parameter-metadata'])
39
+ return [];
40
+ const { inputs, outputs } = plugin['parameter-metadata'];
41
+ return [
42
+ ...(inputs ? Object.keys(inputs) : []),
43
+ ...(outputs ? Object.keys(outputs) : []),
44
+ ];
45
+ };
46
+ exports.extractParametersWithMetadata = extractParametersWithMetadata;
47
+ /**
48
+ * Extracts parameter values from a plugin's configuration based on specified keys.
49
+ *
50
+ * @param config - The configuration object of a plugin.
51
+ * @param keys - An array of keys to look for in the configuration object.
52
+ * @returns An array of parameter values corresponding to the specified keys.
53
+ */
54
+ const extractParameters = (config, keys) => {
55
+ if (!config)
56
+ return [];
57
+ return keys.flatMap(key => {
58
+ if (key in config && isStringOrStringArray(config[key])) {
59
+ return config[key];
60
+ }
61
+ return [];
62
+ });
63
+ };
64
+ exports.extractParameters = extractParameters;
65
+ /**
66
+ * Calculates the coverage of metadata for a given set of parameters.
67
+ *
68
+ * @param parameterSet - A set of all parameters extracted from plugin configurations.
69
+ * @param parameterWithMetadataSet - A set of parameters that have associated metadata.
70
+ * @returns An object containing:
71
+ * - `percentage`: The percentage of parameters with metadata coverage.
72
+ * - `missingParameters`: An array of parameters that lack metadata coverage.
73
+ */
74
+ const calculateMetadataCoverage = (parameterSet, parameterWithMetadataSet) => {
75
+ const totalParameters = parameterSet.size;
76
+ const parametersWithMetadata = [...parameterSet].filter(param => parameterWithMetadataSet.has(param)).length;
77
+ const percentage = totalParameters === 0
78
+ ? 100
79
+ : (parametersWithMetadata / totalParameters) * 100;
80
+ const missingParameters = [...parameterSet].filter(parameter => !parameterWithMetadataSet.has(parameter));
81
+ return { percentage, missingParameters };
82
+ };
83
+ exports.calculateMetadataCoverage = calculateMetadataCoverage;
84
+ /**
85
+ * Checks if the given parameter is a string or an array of strings.
86
+ *
87
+ * @param parameter - The parameter to validate.
88
+ * @returns `true` if the parameter is a string or an array of strings, otherwise `false`.
89
+ */
90
+ const isStringOrStringArray = (parameter) => {
91
+ if (typeof parameter === 'string') {
92
+ return true;
93
+ }
94
+ if (Array.isArray(parameter)) {
95
+ return parameter.every(item => typeof item === 'string');
96
+ }
97
+ return false;
98
+ };
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1tZXRhZGF0YS1jaGVjay91dGlsL21ldGFkYXRhLWNoZWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7Ozs7OztHQU1HO0FBQ0ksTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFtQixFQUFFLFVBQW9CLEVBQUUsRUFBRTtJQUN6RSxPQUFPLElBQUksR0FBRyxDQUNaLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDdkIsSUFBQSx5QkFBaUIsRUFBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQy9CLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsa0JBQWtCO1FBQ2xCLFFBQVE7UUFDUixHQUFHLFVBQVU7S0FDZCxDQUFDLENBQ0gsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBWlcsUUFBQSxhQUFhLGlCQVl4QjtBQUVGOzs7OztHQUtHO0FBQ0ksTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE9BQW1CLEVBQUUsRUFBRTtJQUMvRCxPQUFPLElBQUksR0FBRyxDQUNaLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFBLHFDQUE2QixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ2pFLENBQUM7QUFDSixDQUFDLENBQUM7QUFKVyxRQUFBLHlCQUF5Qiw2QkFJcEM7QUFFRjs7Ozs7R0FLRztBQUNJLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxNQUFnQixFQUFFLEVBQUU7SUFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzdDLE1BQU0sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkQsT0FBTztRQUNMLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDekMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVBXLFFBQUEsNkJBQTZCLGlDQU94QztBQUVGOzs7Ozs7R0FNRztBQUNJLE1BQU0saUJBQWlCLEdBQUcsQ0FDL0IsTUFBdUMsRUFDdkMsSUFBYyxFQUNkLEVBQUU7SUFDRixJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN4QixJQUFJLEdBQUcsSUFBSSxNQUFNLElBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDdkQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBWFcsUUFBQSxpQkFBaUIscUJBVzVCO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSSxNQUFNLHlCQUF5QixHQUFHLENBQ3ZDLFlBQXlCLEVBQ3pCLHdCQUFxQyxFQUNyQyxFQUFFO0lBQ0YsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztJQUMxQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDOUQsd0JBQXdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUNwQyxDQUFDLE1BQU0sQ0FBQztJQUNULE1BQU0sVUFBVSxHQUNkLGVBQWUsS0FBSyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxHQUFHO1FBQ0wsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBRXZELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FDaEQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FDdEQsQ0FBQztJQUVGLE9BQU8sRUFBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFsQlcsUUFBQSx5QkFBeUIsNkJBa0JwQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFNBQWtCLEVBQVcsRUFBRTtJQUM1RCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtRQUNqQyxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQzVCLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0tBQzFEO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lGUGx1Z2lufSBmcm9tICcuLi90eXBlcy9wbHVnaW4nO1xuXG4vKipcbiAqIEV4dHJhY3RzIGEgc2V0IG9mIHBhcmFtZXRlciB2YWx1ZXMgZnJvbSB0aGUgY29uZmlndXJhdGlvbnMgb2YgdGhlIHByb3ZpZGVkIHBsdWdpbnMuXG4gKlxuICogQHBhcmFtIHBsdWdpbnMgLSBBbiBhcnJheSBvZiBwbHVnaW5zLCBlYWNoIGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbiBkYXRhLlxuICogQHBhcmFtIHBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIHBhcmFtZXRlciBrZXlzIHRvIGV4dHJhY3QgZnJvbSB0aGUgcGx1Z2luIGNvbmZpZ3VyYXRpb25zLlxuICogQHJldHVybnMgQSBzZXQgb2YgcGFyYW1ldGVyIHZhbHVlcyBleHRyYWN0ZWQgZnJvbSB0aGUgcGx1Z2luIGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgY29uc3QgZ2V0UGFyYW1ldGVycyA9IChwbHVnaW5zOiBJRlBsdWdpbltdLCBwYXJhbWV0ZXJzOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbmV3IFNldDxzdHJpbmc+KFxuICAgIHBsdWdpbnMuZmxhdE1hcChwbHVnaW4gPT5cbiAgICAgIGV4dHJhY3RQYXJhbWV0ZXJzKHBsdWdpbi5jb25maWcsIFtcbiAgICAgICAgJ2lucHV0LXBhcmFtZXRlcicsXG4gICAgICAgICdvdXRwdXQtcGFyYW1ldGVyJyxcbiAgICAgICAgJ2lucHV0LXBhcmFtZXRlcnMnLFxuICAgICAgICAnb3V0cHV0JyxcbiAgICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgIF0pXG4gICAgKVxuICApO1xufTtcblxuLyoqXG4gKiBFeHRyYWN0cyBhIHNldCBvZiBwYXJhbWV0ZXJzIHRoYXQgaGF2ZSBkZWZpbmVkIG1ldGFkYXRhIGZyb20gdGhlIHByb3ZpZGVkIHBsdWdpbnMuXG4gKlxuICogQHBhcmFtIHBsdWdpbnMgLSBBbiBhcnJheSBvZiBwbHVnaW5zLCBlYWNoIGNvbnRhaW5pbmcgbWV0YWRhdGEgaW5mb3JtYXRpb24uXG4gKiBAcmV0dXJucyBBIHNldCBvZiBwYXJhbWV0ZXIgbmFtZXMgdGhhdCBoYXZlIGFzc29jaWF0ZWQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQYXJhbWV0ZXJzV2l0aE1ldGFkYXRhID0gKHBsdWdpbnM6IElGUGx1Z2luW10pID0+IHtcbiAgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPihcbiAgICBwbHVnaW5zLmZsYXRNYXAocGx1Z2luID0+IGV4dHJhY3RQYXJhbWV0ZXJzV2l0aE1ldGFkYXRhKHBsdWdpbikpXG4gICk7XG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIHBhcmFtZXRlcnMgd2l0aCBtZXRhZGF0YSBmcm9tIGEgc2luZ2xlIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gQSBwbHVnaW4gb2JqZWN0IGNvbnRhaW5pbmcgbWV0YWRhdGEgaW5mb3JtYXRpb24uXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwYXJhbWV0ZXIgbmFtZXMgdGhhdCBoYXZlIGFzc29jaWF0ZWQgbWV0YWRhdGEsIGluY2x1ZGluZyBpbnB1dHMgYW5kIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBjb25zdCBleHRyYWN0UGFyYW1ldGVyc1dpdGhNZXRhZGF0YSA9IChwbHVnaW46IElGUGx1Z2luKSA9PiB7XG4gIGlmICghcGx1Z2luWydwYXJhbWV0ZXItbWV0YWRhdGEnXSkgcmV0dXJuIFtdO1xuICBjb25zdCB7aW5wdXRzLCBvdXRwdXRzfSA9IHBsdWdpblsncGFyYW1ldGVyLW1ldGFkYXRhJ107XG4gIHJldHVybiBbXG4gICAgLi4uKGlucHV0cyA/IE9iamVjdC5rZXlzKGlucHV0cykgOiBbXSksXG4gICAgLi4uKG91dHB1dHMgPyBPYmplY3Qua2V5cyhvdXRwdXRzKSA6IFtdKSxcbiAgXTtcbn07XG5cbi8qKlxuICogRXh0cmFjdHMgcGFyYW1ldGVyIHZhbHVlcyBmcm9tIGEgcGx1Z2luJ3MgY29uZmlndXJhdGlvbiBiYXNlZCBvbiBzcGVjaWZpZWQga2V5cy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG9mIGEgcGx1Z2luLlxuICogQHBhcmFtIGtleXMgLSBBbiBhcnJheSBvZiBrZXlzIHRvIGxvb2sgZm9yIGluIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHBhcmFtZXRlciB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgc3BlY2lmaWVkIGtleXMuXG4gKi9cbmV4cG9ydCBjb25zdCBleHRyYWN0UGFyYW1ldGVycyA9IChcbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkLFxuICBrZXlzOiBzdHJpbmdbXVxuKSA9PiB7XG4gIGlmICghY29uZmlnKSByZXR1cm4gW107XG4gIHJldHVybiBrZXlzLmZsYXRNYXAoa2V5ID0+IHtcbiAgICBpZiAoa2V5IGluIGNvbmZpZyAmJiBpc1N0cmluZ09yU3RyaW5nQXJyYXkoY29uZmlnW2tleV0pKSB7XG4gICAgICByZXR1cm4gY29uZmlnW2tleV07XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhIGZvciBhIGdpdmVuIHNldCBvZiBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSBwYXJhbWV0ZXJTZXQgLSBBIHNldCBvZiBhbGwgcGFyYW1ldGVycyBleHRyYWN0ZWQgZnJvbSBwbHVnaW4gY29uZmlndXJhdGlvbnMuXG4gKiBAcGFyYW0gcGFyYW1ldGVyV2l0aE1ldGFkYXRhU2V0IC0gQSBzZXQgb2YgcGFyYW1ldGVycyB0aGF0IGhhdmUgYXNzb2NpYXRlZCBtZXRhZGF0YS5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nOlxuICogICAtIGBwZXJjZW50YWdlYDogVGhlIHBlcmNlbnRhZ2Ugb2YgcGFyYW1ldGVycyB3aXRoIG1ldGFkYXRhIGNvdmVyYWdlLlxuICogICAtIGBtaXNzaW5nUGFyYW1ldGVyc2A6IEFuIGFycmF5IG9mIHBhcmFtZXRlcnMgdGhhdCBsYWNrIG1ldGFkYXRhIGNvdmVyYWdlLlxuICovXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlTWV0YWRhdGFDb3ZlcmFnZSA9IChcbiAgcGFyYW1ldGVyU2V0OiBTZXQ8c3RyaW5nPixcbiAgcGFyYW1ldGVyV2l0aE1ldGFkYXRhU2V0OiBTZXQ8c3RyaW5nPlxuKSA9PiB7XG4gIGNvbnN0IHRvdGFsUGFyYW1ldGVycyA9IHBhcmFtZXRlclNldC5zaXplO1xuICBjb25zdCBwYXJhbWV0ZXJzV2l0aE1ldGFkYXRhID0gWy4uLnBhcmFtZXRlclNldF0uZmlsdGVyKHBhcmFtID0+XG4gICAgcGFyYW1ldGVyV2l0aE1ldGFkYXRhU2V0LmhhcyhwYXJhbSlcbiAgKS5sZW5ndGg7XG4gIGNvbnN0IHBlcmNlbnRhZ2UgPVxuICAgIHRvdGFsUGFyYW1ldGVycyA9PT0gMFxuICAgICAgPyAxMDBcbiAgICAgIDogKHBhcmFtZXRlcnNXaXRoTWV0YWRhdGEgLyB0b3RhbFBhcmFtZXRlcnMpICogMTAwO1xuXG4gIGNvbnN0IG1pc3NpbmdQYXJhbWV0ZXJzID0gWy4uLnBhcmFtZXRlclNldF0uZmlsdGVyKFxuICAgIHBhcmFtZXRlciA9PiAhcGFyYW1ldGVyV2l0aE1ldGFkYXRhU2V0LmhhcyhwYXJhbWV0ZXIpXG4gICk7XG5cbiAgcmV0dXJuIHtwZXJjZW50YWdlLCBtaXNzaW5nUGFyYW1ldGVyc307XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gcGFyYW1ldGVyIGlzIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHBhcmFtZXRlciAtIFRoZSBwYXJhbWV0ZXIgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhcmFtZXRlciBpcyBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuY29uc3QgaXNTdHJpbmdPclN0cmluZ0FycmF5ID0gKHBhcmFtZXRlcjogdW5rbm93bik6IGJvb2xlYW4gPT4ge1xuICBpZiAodHlwZW9mIHBhcmFtZXRlciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXIpKSB7XG4gICAgcmV0dXJuIHBhcmFtZXRlci5ldmVyeShpdGVtID0+IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiJdfQ==
@@ -58,9 +58,9 @@ const calculateDivide = (input, index, params) => {
58
58
  const finalDenominator = typeof denominator === 'number' ? denominator : input[denominator];
59
59
  const finalNumerator = typeof numerator === 'number' ? numerator : input[numerator];
60
60
  if (finalDenominator === 0) {
61
- console.warn(ZERO_DIVISION(exports.Divide.name, index));
61
+ console.warn(ZERO_DIVISION('Divide', index));
62
62
  return finalNumerator;
63
63
  }
64
64
  return finalNumerator / finalDenominator;
65
65
  };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2RpdmlkZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFHdEIsMkRBQXlEO0FBQ3pELGlEQUE2QztBQUU3QyxrRUFBMEQ7QUFFMUQseUNBQXFDO0FBRXJDLE1BQU0sRUFBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDcEQsTUFBTSxFQUFDLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXZELFFBQUEsTUFBTSxHQUFHLElBQUEsMEJBQWEsRUFBQztJQUNsQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQW9CLEVBQUUsRUFBRTtRQUN6QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsTUFBTSxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2QztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtTQUNuQixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxlQUFlLEVBQUUsQ0FBQyxLQUFtQixFQUFFLE1BQW9CLEVBQUUsRUFBRTtRQUM3RCxNQUFNLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUV4QyxNQUFNLE1BQU0sR0FBRyxPQUFDO2FBQ2IsTUFBTSxDQUFDO1lBQ04sQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtTQUNyQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUMxRCxNQUFNLElBQUkscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUNsRTtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE1BQU0sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUVoRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFDckQsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksU0FBUztnQkFDdkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksV0FBVzthQUM5QyxDQUFDLENBQUM7WUFFSCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQjthQUMzQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsMEJBQTBCLEVBQUUsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDO0NBQ3pELENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsS0FBbUIsRUFDbkIsS0FBYSxFQUNiLE1BR0MsRUFDRCxFQUFFO0lBQ0YsTUFBTSxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsR0FBRyxNQUFNLENBQUM7SUFDeEMsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxXQUFXLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRSxNQUFNLGNBQWMsR0FDbEIsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUvRCxJQUFJLGdCQUFnQixLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxjQUFjLENBQUM7S0FDdkI7SUFFRCxPQUFPLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUMzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7Q29uZmlnUGFyYW1zLCBQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5pbXBvcnQge1BsdWdpbkZhY3Rvcnl9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuY29uc3Qge01pc3NpbmdJbnB1dERhdGFFcnJvciwgQ29uZmlnRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge01JU1NJTkdfSU5QVVRfREFUQSwgWkVST19ESVZJU0lPTiwgTUlTU0lOR19DT05GSUd9ID0gU1RSSU5HUztcblxuZXhwb3J0IGNvbnN0IERpdmlkZSA9IFBsdWdpbkZhY3Rvcnkoe1xuICBjb25maWdWYWxpZGF0aW9uOiAoY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICBpZiAoIWNvbmZpZyB8fCAhT2JqZWN0LmtleXMoY29uZmlnKT8ubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmlnRXJyb3IoTUlTU0lOR19DT05GSUcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAgIG51bWVyYXRvcjogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICBkZW5vbWluYXRvcjogei5zdHJpbmcoKS5vcih6Lm51bWJlcigpKSxcbiAgICAgIG91dHB1dDogei5zdHJpbmcoKSxcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBzY2hlbWE+PihzY2hlbWEsIGNvbmZpZyk7XG4gIH0sXG4gIGlucHV0VmFsaWRhdGlvbjogKGlucHV0OiBQbHVnaW5QYXJhbXMsIGNvbmZpZzogQ29uZmlnUGFyYW1zKSA9PiB7XG4gICAgY29uc3Qge251bWVyYXRvciwgZGVub21pbmF0b3J9ID0gY29uZmlnO1xuXG4gICAgY29uc3Qgc2NoZW1hID0gelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIFtudW1lcmF0b3JdOiB6Lm51bWJlcigpLFxuICAgICAgICBbZGVub21pbmF0b3JdOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICAgLnJlZmluZSgoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVub21pbmF0b3IgPT09ICdzdHJpbmcnICYmICFpbnB1dFtkZW5vbWluYXRvcl0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ0lucHV0RGF0YUVycm9yKE1JU1NJTkdfSU5QVVRfREFUQShkZW5vbWluYXRvcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBzY2hlbWE+PihzY2hlbWEsIGlucHV0KTtcbiAgfSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IHtudW1lcmF0b3IsIGRlbm9taW5hdG9yLCBvdXRwdXR9ID0gY29uZmlnO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoKGlucHV0LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY2FsY3VsYXRlZFJlc3VsdCA9IGNhbGN1bGF0ZURpdmlkZShpbnB1dCwgaW5kZXgsIHtcbiAgICAgICAgbnVtZXJhdG9yOiBpbnB1dC5udW1lcmF0b3IgfHwgbnVtZXJhdG9yLFxuICAgICAgICBkZW5vbWluYXRvcjogaW5wdXQuZGVub21pbmF0b3IgfHwgZGVub21pbmF0b3IsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIFtvdXRwdXRdOiBjYWxjdWxhdGVkUmVzdWx0LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSxcbiAgYWxsb3dBcml0aG1ldGljRXhwcmVzc2lvbnM6IFsnbnVtZXJhdG9yJywgJ2Rlbm9taW5hdG9yJ10sXG59KTtcblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBkaXZpc2lvbiBvZiB0aGUgZ2l2ZW4gcGFyYW1ldGVyLlxuICovXG5jb25zdCBjYWxjdWxhdGVEaXZpZGUgPSAoXG4gIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gIGluZGV4OiBudW1iZXIsXG4gIHBhcmFtczoge1xuICAgIG51bWVyYXRvcjogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGRlbm9taW5hdG9yOiBudW1iZXIgfCBzdHJpbmc7XG4gIH1cbikgPT4ge1xuICBjb25zdCB7ZGVub21pbmF0b3IsIG51bWVyYXRvcn0gPSBwYXJhbXM7XG4gIGNvbnN0IGZpbmFsRGVub21pbmF0b3IgPVxuICAgIHR5cGVvZiBkZW5vbWluYXRvciA9PT0gJ251bWJlcicgPyBkZW5vbWluYXRvciA6IGlucHV0W2Rlbm9taW5hdG9yXTtcbiAgY29uc3QgZmluYWxOdW1lcmF0b3IgPVxuICAgIHR5cGVvZiBudW1lcmF0b3IgPT09ICdudW1iZXInID8gbnVtZXJhdG9yIDogaW5wdXRbbnVtZXJhdG9yXTtcblxuICBpZiAoZmluYWxEZW5vbWluYXRvciA9PT0gMCkge1xuICAgIGNvbnNvbGUud2FybihaRVJPX0RJVklTSU9OKERpdmlkZS5uYW1lLCBpbmRleCkpO1xuICAgIHJldHVybiBmaW5hbE51bWVyYXRvcjtcbiAgfVxuXG4gIHJldHVybiBmaW5hbE51bWVyYXRvciAvIGZpbmFsRGVub21pbmF0b3I7XG59O1xuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2RpdmlkZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFHdEIsMkRBQXlEO0FBQ3pELGlEQUE2QztBQUU3QyxrRUFBMEQ7QUFFMUQseUNBQXFDO0FBRXJDLE1BQU0sRUFBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDcEQsTUFBTSxFQUFDLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXZELFFBQUEsTUFBTSxHQUFHLElBQUEsMEJBQWEsRUFBQztJQUNsQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQW9CLEVBQUUsRUFBRTtRQUN6QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsTUFBTSxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2QztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtTQUNuQixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxlQUFlLEVBQUUsQ0FBQyxLQUFtQixFQUFFLE1BQW9CLEVBQUUsRUFBRTtRQUM3RCxNQUFNLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUV4QyxNQUFNLE1BQU0sR0FBRyxPQUFDO2FBQ2IsTUFBTSxDQUFDO1lBQ04sQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtTQUNyQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUMxRCxNQUFNLElBQUkscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUNsRTtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE1BQU0sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUVoRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFDckQsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksU0FBUztnQkFDdkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksV0FBVzthQUM5QyxDQUFDLENBQUM7WUFFSCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQjthQUMzQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsMEJBQTBCLEVBQUUsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDO0NBQ3pELENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsS0FBbUIsRUFDbkIsS0FBYSxFQUNiLE1BR0MsRUFDRCxFQUFFO0lBQ0YsTUFBTSxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsR0FBRyxNQUFNLENBQUM7SUFDeEMsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxXQUFXLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRSxNQUFNLGNBQWMsR0FDbEIsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUvRCxJQUFJLGdCQUFnQixLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3QyxPQUFPLGNBQWMsQ0FBQztLQUN2QjtJQUVELE9BQU8sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQzNDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtDb25maWdQYXJhbXMsIFBsdWdpblBhcmFtc30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcbmltcG9ydCB7UGx1Z2luRmFjdG9yeX0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7TWlzc2luZ0lucHV0RGF0YUVycm9yLCBDb25maWdFcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7TUlTU0lOR19JTlBVVF9EQVRBLCBaRVJPX0RJVklTSU9OLCBNSVNTSU5HX0NPTkZJR30gPSBTVFJJTkdTO1xuXG5leHBvcnQgY29uc3QgRGl2aWRlID0gUGx1Z2luRmFjdG9yeSh7XG4gIGNvbmZpZ1ZhbGlkYXRpb246IChjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGlmICghY29uZmlnIHx8ICFPYmplY3Qua2V5cyhjb25maWcpPy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBDb25maWdFcnJvcihNSVNTSU5HX0NPTkZJRyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZW1hID0gei5vYmplY3Qoe1xuICAgICAgbnVtZXJhdG9yOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICAgIGRlbm9taW5hdG9yOiB6LnN0cmluZygpLm9yKHoubnVtYmVyKCkpLFxuICAgICAgb3V0cHV0OiB6LnN0cmluZygpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIHNjaGVtYT4+KHNjaGVtYSwgY29uZmlnKTtcbiAgfSxcbiAgaW5wdXRWYWxpZGF0aW9uOiAoaW5wdXQ6IFBsdWdpblBhcmFtcywgY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICBjb25zdCB7bnVtZXJhdG9yLCBkZW5vbWluYXRvcn0gPSBjb25maWc7XG5cbiAgICBjb25zdCBzY2hlbWEgPSB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgW251bWVyYXRvcl06IHoubnVtYmVyKCksXG4gICAgICAgIFtkZW5vbWluYXRvcl06IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICAgIH0pXG4gICAgICAucmVmaW5lKCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBkZW5vbWluYXRvciA9PT0gJ3N0cmluZycgJiYgIWlucHV0W2Rlbm9taW5hdG9yXSkge1xuICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nSW5wdXREYXRhRXJyb3IoTUlTU0lOR19JTlBVVF9EQVRBKGRlbm9taW5hdG9yKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIHNjaGVtYT4+KHNjaGVtYSwgaW5wdXQpO1xuICB9LFxuICBpbXBsZW1lbnRhdGlvbjogYXN5bmMgKGlucHV0czogUGx1Z2luUGFyYW1zW10sIGNvbmZpZzogQ29uZmlnUGFyYW1zKSA9PiB7XG4gICAgY29uc3Qge251bWVyYXRvciwgZGVub21pbmF0b3IsIG91dHB1dH0gPSBjb25maWc7XG5cbiAgICByZXR1cm4gaW5wdXRzLm1hcCgoaW5wdXQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkUmVzdWx0ID0gY2FsY3VsYXRlRGl2aWRlKGlucHV0LCBpbmRleCwge1xuICAgICAgICBudW1lcmF0b3I6IGlucHV0Lm51bWVyYXRvciB8fCBudW1lcmF0b3IsXG4gICAgICAgIGRlbm9taW5hdG9yOiBpbnB1dC5kZW5vbWluYXRvciB8fCBkZW5vbWluYXRvcixcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgW291dHB1dF06IGNhbGN1bGF0ZWRSZXN1bHQsXG4gICAgICB9O1xuICAgIH0pO1xuICB9LFxuICBhbGxvd0FyaXRobWV0aWNFeHByZXNzaW9uczogWydudW1lcmF0b3InLCAnZGVub21pbmF0b3InXSxcbn0pO1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRpdmlzaW9uIG9mIHRoZSBnaXZlbiBwYXJhbWV0ZXIuXG4gKi9cbmNvbnN0IGNhbGN1bGF0ZURpdmlkZSA9IChcbiAgaW5wdXQ6IFBsdWdpblBhcmFtcyxcbiAgaW5kZXg6IG51bWJlcixcbiAgcGFyYW1zOiB7XG4gICAgbnVtZXJhdG9yOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgZGVub21pbmF0b3I6IG51bWJlciB8IHN0cmluZztcbiAgfVxuKSA9PiB7XG4gIGNvbnN0IHtkZW5vbWluYXRvciwgbnVtZXJhdG9yfSA9IHBhcmFtcztcbiAgY29uc3QgZmluYWxEZW5vbWluYXRvciA9XG4gICAgdHlwZW9mIGRlbm9taW5hdG9yID09PSAnbnVtYmVyJyA/IGRlbm9taW5hdG9yIDogaW5wdXRbZGVub21pbmF0b3JdO1xuICBjb25zdCBmaW5hbE51bWVyYXRvciA9XG4gICAgdHlwZW9mIG51bWVyYXRvciA9PT0gJ251bWJlcicgPyBudW1lcmF0b3IgOiBpbnB1dFtudW1lcmF0b3JdO1xuXG4gIGlmIChmaW5hbERlbm9taW5hdG9yID09PSAwKSB7XG4gICAgY29uc29sZS53YXJuKFpFUk9fRElWSVNJT04oJ0RpdmlkZScsIGluZGV4KSk7XG4gICAgcmV0dXJuIGZpbmFsTnVtZXJhdG9yO1xuICB9XG5cbiAgcmV0dXJuIGZpbmFsTnVtZXJhdG9yIC8gZmluYWxEZW5vbWluYXRvcjtcbn07XG4iXX0=
@@ -74,7 +74,7 @@ exports.Sci = (0, interfaces_1.PluginFactory)({
74
74
  ? input[config['functional-unit']]
75
75
  : config['functional-unit'];
76
76
  if (functionalUnit === 0) {
77
- console.warn(ZERO_DIVISION(exports.Sci.name, index));
77
+ console.warn(ZERO_DIVISION('Sci', index));
78
78
  return {
79
79
  ...input,
80
80
  sci: input['carbon'],
@@ -89,4 +89,4 @@ exports.Sci = (0, interfaces_1.PluginFactory)({
89
89
  },
90
90
  allowArithmeticExpressions: ['functional-unit'],
91
91
  });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3NjaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFFdEIsMkRBQXlEO0FBR3pELGtFQUEwRDtBQUUxRCxpREFBNkM7QUFFN0Msa0VBQTREO0FBRTVELHlDQUFxQztBQUVyQyxNQUFNLEVBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQ3BELE1BQU0sRUFDSiw4QkFBOEIsRUFDOUIsNkJBQTZCLEVBQzdCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsY0FBYyxHQUNmLEdBQUcsZ0JBQU8sQ0FBQztBQUVDLFFBQUEsR0FBRyxHQUFHLElBQUEsMEJBQWEsRUFBQztJQUMvQixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUU7Z0JBQ04sV0FBVyxFQUFFLGlEQUFpRDtnQkFDOUQsSUFBSSxFQUFFLE9BQU87Z0JBQ2Isb0JBQW9CLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxLQUFLO29CQUNYLFNBQVMsRUFBRSxLQUFLO2lCQUNqQjthQUNGO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2pCLFdBQVcsRUFDVCx3R0FBd0c7Z0JBQzFHLElBQUksRUFBRSxNQUFNO2dCQUNaLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsS0FBSztvQkFDWCxTQUFTLEVBQUUsS0FBSztpQkFDakI7YUFDRjtTQUNGO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsR0FBRyxFQUFFO2dCQUNILFdBQVcsRUFBRSx3REFBd0Q7Z0JBQ3JFLElBQUksRUFBRSxPQUFPO2dCQUNiLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsS0FBSztvQkFDWCxTQUFTLEVBQUUsS0FBSztpQkFDakI7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRSxDQUFDLE1BQW9CLEVBQUUsRUFBRTtRQUN6QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsTUFBTSxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2QztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQUM7YUFDYixNQUFNLENBQUM7WUFDTixpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1NBQzlCLENBQUM7YUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUN2QyxPQUFPLEVBQUUsOEJBQThCO1NBQ3hDLENBQUMsQ0FBQztRQUVMLE9BQU8sSUFBQSxzQkFBUSxFQUF5QixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELGVBQWUsRUFBRSxDQUFDLEtBQW1CLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQzdELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQzVELE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hFO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBQzthQUNiLE1BQU0sQ0FBQztZQUNOLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6QixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUIsQ0FBQzthQUNELE1BQU0sQ0FBQyx3QkFBVSxFQUFFO1lBQ2xCLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4RCxDQUFDLENBQUM7UUFFTCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3JELENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUU5QixJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFN0MsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsR0FBRyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ3JCLENBQUM7YUFDSDtZQUNELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUUxRCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixHQUFHLEVBQUUsZ0JBQWdCO2FBQ3RCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCwwQkFBMEIsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0NBQ2hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtQbHVnaW5GYWN0b3J5fSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvaW50ZXJmYWNlcyc7XG5pbXBvcnQge0NvbmZpZ1BhcmFtcywgUGx1Z2luUGFyYW1zfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuXG5pbXBvcnQge2FsbERlZmluZWR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7TWlzc2luZ0lucHV0RGF0YUVycm9yLCBDb25maWdFcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7XG4gIE1JU1NJTkdfRlVOQ1RJT05BTF9VTklUX0NPTkZJRyxcbiAgTUlTU0lOR19GVU5DVElPTkFMX1VOSVRfSU5QVVQsXG4gIFNDSV9NSVNTSU5HX0ZOX1VOSVQsXG4gIFpFUk9fRElWSVNJT04sXG4gIE1JU1NJTkdfQ09ORklHLFxufSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBTY2kgPSBQbHVnaW5GYWN0b3J5KHtcbiAgbWV0YWRhdGE6IHtcbiAgICBpbnB1dHM6IHtcbiAgICAgIGNhcmJvbjoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ2FuIGFtb3VudCBvZiBjYXJib24gZW1pdHRlZCBpbnRvIHRoZSBhdG1vc3BoZXJlJyxcbiAgICAgICAgdW5pdDogJ2dDTzJlJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnc3VtJyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdzdW0nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICdmdW5jdGlvbmFsLXVuaXQnOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICd0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb25hbCB1bml0IGluIHdoaWNoIHRoZSBmaW5hbCBTQ0kgdmFsdWUgc2hvdWxkIGJlIGV4cHJlc3NlZCwgZS5nLiByZXF1ZXN0cywgdXNlcnMnLFxuICAgICAgICB1bml0OiAnbm9uZScsXG4gICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiB7XG4gICAgICAgICAgdGltZTogJ3N1bScsXG4gICAgICAgICAgY29tcG9uZW50OiAnc3VtJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRzOiB7XG4gICAgICBzY2k6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdjYXJib24gZXhwcmVzc2VkIGluIHRlcm1zIG9mIHRoZSBnaXZlbiBmdW5jdGlvbmFsIHVuaXQnLFxuICAgICAgICB1bml0OiAnZ0NPMmUnLFxuICAgICAgICAnYWdncmVnYXRpb24tbWV0aG9kJzoge1xuICAgICAgICAgIHRpbWU6ICdhdmcnLFxuICAgICAgICAgIGNvbXBvbmVudDogJ3N1bScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGNvbmZpZ1ZhbGlkYXRpb246IChjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGlmICghY29uZmlnIHx8ICFPYmplY3Qua2V5cyhjb25maWcpPy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBDb25maWdFcnJvcihNSVNTSU5HX0NPTkZJRyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZW1hID0gelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgICdmdW5jdGlvbmFsLXVuaXQnOiB6LnN0cmluZygpLFxuICAgICAgfSlcbiAgICAgIC5yZWZpbmUoZGF0YSA9PiBkYXRhWydmdW5jdGlvbmFsLXVuaXQnXSwge1xuICAgICAgICBtZXNzYWdlOiBNSVNTSU5HX0ZVTkNUSU9OQUxfVU5JVF9DT05GSUcsXG4gICAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBzY2hlbWE+PihzY2hlbWEsIGNvbmZpZyk7XG4gIH0sXG4gIGlucHV0VmFsaWRhdGlvbjogKGlucHV0OiBQbHVnaW5QYXJhbXMsIGNvbmZpZzogQ29uZmlnUGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZnVuY3Rpb25hbFVuaXQgPSBjb25maWdbJ2Z1bmN0aW9uYWwtdW5pdCddO1xuXG4gICAgaWYgKCEoZnVuY3Rpb25hbFVuaXQgaW4gaW5wdXQgJiYgaW5wdXRbZnVuY3Rpb25hbFVuaXRdID49IDApKSB7XG4gICAgICB0aHJvdyBuZXcgTWlzc2luZ0lucHV0RGF0YUVycm9yKE1JU1NJTkdfRlVOQ1RJT05BTF9VTklUX0lOUFVUKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlbWEgPSB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgY2FyYm9uOiB6Lm51bWJlcigpLmd0ZSgwKSxcbiAgICAgICAgZHVyYXRpb246IHoubnVtYmVyKCkuZ3RlKDEpLFxuICAgICAgfSlcbiAgICAgIC5yZWZpbmUoYWxsRGVmaW5lZCwge1xuICAgICAgICBtZXNzYWdlOiBTQ0lfTUlTU0lOR19GTl9VTklUKGNvbmZpZ1snZnVuY3Rpb25hbC11bml0J10pLFxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2Ygc2NoZW1hPj4oc2NoZW1hLCBpbnB1dCk7XG4gIH0sXG4gIGltcGxlbWVudGF0aW9uOiBhc3luYyAoaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSwgY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICByZXR1cm4gaW5wdXRzLm1hcCgoaW5wdXQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBmdW5jdGlvbmFsVW5pdCA9IGlzTmFOKGNvbmZpZ1snZnVuY3Rpb25hbC11bml0J10pXG4gICAgICAgID8gaW5wdXRbY29uZmlnWydmdW5jdGlvbmFsLXVuaXQnXV1cbiAgICAgICAgOiBjb25maWdbJ2Z1bmN0aW9uYWwtdW5pdCddO1xuXG4gICAgICBpZiAoZnVuY3Rpb25hbFVuaXQgPT09IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKFpFUk9fRElWSVNJT04oU2NpLm5hbWUsIGluZGV4KSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICBzY2k6IGlucHV0WydjYXJib24nXSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRSZXN1bHQgPSBpbnB1dFsnY2FyYm9uJ10gLyBmdW5jdGlvbmFsVW5pdDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIHNjaTogY2FsY3VsYXRlZFJlc3VsdCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH0sXG4gIGFsbG93QXJpdGhtZXRpY0V4cHJlc3Npb25zOiBbJ2Z1bmN0aW9uYWwtdW5pdCddLFxufSk7XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3NjaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFFdEIsMkRBQXlEO0FBR3pELGtFQUEwRDtBQUUxRCxpREFBNkM7QUFFN0Msa0VBQTREO0FBRTVELHlDQUFxQztBQUVyQyxNQUFNLEVBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQ3BELE1BQU0sRUFDSiw4QkFBOEIsRUFDOUIsNkJBQTZCLEVBQzdCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsY0FBYyxHQUNmLEdBQUcsZ0JBQU8sQ0FBQztBQUVDLFFBQUEsR0FBRyxHQUFHLElBQUEsMEJBQWEsRUFBQztJQUMvQixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUU7Z0JBQ04sV0FBVyxFQUFFLGlEQUFpRDtnQkFDOUQsSUFBSSxFQUFFLE9BQU87Z0JBQ2Isb0JBQW9CLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxLQUFLO29CQUNYLFNBQVMsRUFBRSxLQUFLO2lCQUNqQjthQUNGO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2pCLFdBQVcsRUFDVCx3R0FBd0c7Z0JBQzFHLElBQUksRUFBRSxNQUFNO2dCQUNaLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsS0FBSztvQkFDWCxTQUFTLEVBQUUsS0FBSztpQkFDakI7YUFDRjtTQUNGO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsR0FBRyxFQUFFO2dCQUNILFdBQVcsRUFBRSx3REFBd0Q7Z0JBQ3JFLElBQUksRUFBRSxPQUFPO2dCQUNiLG9CQUFvQixFQUFFO29CQUNwQixJQUFJLEVBQUUsS0FBSztvQkFDWCxTQUFTLEVBQUUsS0FBSztpQkFDakI7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRSxDQUFDLE1BQW9CLEVBQUUsRUFBRTtRQUN6QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsTUFBTSxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2QztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQUM7YUFDYixNQUFNLENBQUM7WUFDTixpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1NBQzlCLENBQUM7YUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUN2QyxPQUFPLEVBQUUsOEJBQThCO1NBQ3hDLENBQUMsQ0FBQztRQUVMLE9BQU8sSUFBQSxzQkFBUSxFQUF5QixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELGVBQWUsRUFBRSxDQUFDLEtBQW1CLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQzdELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQzVELE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hFO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBQzthQUNiLE1BQU0sQ0FBQztZQUNOLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6QixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUIsQ0FBQzthQUNELE1BQU0sQ0FBQyx3QkFBVSxFQUFFO1lBQ2xCLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4RCxDQUFDLENBQUM7UUFFTCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3JELENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUU5QixJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUUxQyxPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztpQkFDckIsQ0FBQzthQUNIO1lBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsY0FBYyxDQUFDO1lBRTFELE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLEdBQUcsRUFBRSxnQkFBZ0I7YUFDdEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELDBCQUEwQixFQUFFLENBQUMsaUJBQWlCLENBQUM7Q0FDaEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge1BsdWdpbkZhY3Rvcnl9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7Q29uZmlnUGFyYW1zLCBQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB7YWxsRGVmaW5lZH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWwvdmFsaWRhdGlvbnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cbmNvbnN0IHtNaXNzaW5nSW5wdXREYXRhRXJyb3IsIENvbmZpZ0Vycm9yfSA9IEVSUk9SUztcbmNvbnN0IHtcbiAgTUlTU0lOR19GVU5DVElPTkFMX1VOSVRfQ09ORklHLFxuICBNSVNTSU5HX0ZVTkNUSU9OQUxfVU5JVF9JTlBVVCxcbiAgU0NJX01JU1NJTkdfRk5fVU5JVCxcbiAgWkVST19ESVZJU0lPTixcbiAgTUlTU0lOR19DT05GSUcsXG59ID0gU1RSSU5HUztcblxuZXhwb3J0IGNvbnN0IFNjaSA9IFBsdWdpbkZhY3Rvcnkoe1xuICBtZXRhZGF0YToge1xuICAgIGlucHV0czoge1xuICAgICAgY2FyYm9uOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnYW4gYW1vdW50IG9mIGNhcmJvbiBlbWl0dGVkIGludG8gdGhlIGF0bW9zcGhlcmUnLFxuICAgICAgICB1bml0OiAnZ0NPMmUnLFxuICAgICAgICAnYWdncmVnYXRpb24tbWV0aG9kJzoge1xuICAgICAgICAgIHRpbWU6ICdzdW0nLFxuICAgICAgICAgIGNvbXBvbmVudDogJ3N1bScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJ2Z1bmN0aW9uYWwtdW5pdCc6IHtcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ3RoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbmFsIHVuaXQgaW4gd2hpY2ggdGhlIGZpbmFsIFNDSSB2YWx1ZSBzaG91bGQgYmUgZXhwcmVzc2VkLCBlLmcuIHJlcXVlc3RzLCB1c2VycycsXG4gICAgICAgIHVuaXQ6ICdub25lJyxcbiAgICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IHtcbiAgICAgICAgICB0aW1lOiAnc3VtJyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdzdW0nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIG91dHB1dHM6IHtcbiAgICAgIHNjaToge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ2NhcmJvbiBleHByZXNzZWQgaW4gdGVybXMgb2YgdGhlIGdpdmVuIGZ1bmN0aW9uYWwgdW5pdCcsXG4gICAgICAgIHVuaXQ6ICdnQ08yZScsXG4gICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiB7XG4gICAgICAgICAgdGltZTogJ2F2ZycsXG4gICAgICAgICAgY29tcG9uZW50OiAnc3VtJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgY29uZmlnVmFsaWRhdGlvbjogKGNvbmZpZzogQ29uZmlnUGFyYW1zKSA9PiB7XG4gICAgaWYgKCFjb25maWcgfHwgIU9iamVjdC5rZXlzKGNvbmZpZyk/Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IENvbmZpZ0Vycm9yKE1JU1NJTkdfQ09ORklHKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlbWEgPSB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgJ2Z1bmN0aW9uYWwtdW5pdCc6IHouc3RyaW5nKCksXG4gICAgICB9KVxuICAgICAgLnJlZmluZShkYXRhID0+IGRhdGFbJ2Z1bmN0aW9uYWwtdW5pdCddLCB7XG4gICAgICAgIG1lc3NhZ2U6IE1JU1NJTkdfRlVOQ1RJT05BTF9VTklUX0NPTkZJRyxcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIHNjaGVtYT4+KHNjaGVtYSwgY29uZmlnKTtcbiAgfSxcbiAgaW5wdXRWYWxpZGF0aW9uOiAoaW5wdXQ6IFBsdWdpblBhcmFtcywgY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICBjb25zdCBmdW5jdGlvbmFsVW5pdCA9IGNvbmZpZ1snZnVuY3Rpb25hbC11bml0J107XG5cbiAgICBpZiAoIShmdW5jdGlvbmFsVW5pdCBpbiBpbnB1dCAmJiBpbnB1dFtmdW5jdGlvbmFsVW5pdF0gPj0gMCkpIHtcbiAgICAgIHRocm93IG5ldyBNaXNzaW5nSW5wdXREYXRhRXJyb3IoTUlTU0lOR19GVU5DVElPTkFMX1VOSVRfSU5QVVQpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYSA9IHpcbiAgICAgIC5vYmplY3Qoe1xuICAgICAgICBjYXJib246IHoubnVtYmVyKCkuZ3RlKDApLFxuICAgICAgICBkdXJhdGlvbjogei5udW1iZXIoKS5ndGUoMSksXG4gICAgICB9KVxuICAgICAgLnJlZmluZShhbGxEZWZpbmVkLCB7XG4gICAgICAgIG1lc3NhZ2U6IFNDSV9NSVNTSU5HX0ZOX1VOSVQoY29uZmlnWydmdW5jdGlvbmFsLXVuaXQnXSksXG4gICAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBzY2hlbWE+PihzY2hlbWEsIGlucHV0KTtcbiAgfSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIHJldHVybiBpbnB1dHMubWFwKChpbnB1dCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGZ1bmN0aW9uYWxVbml0ID0gaXNOYU4oY29uZmlnWydmdW5jdGlvbmFsLXVuaXQnXSlcbiAgICAgICAgPyBpbnB1dFtjb25maWdbJ2Z1bmN0aW9uYWwtdW5pdCddXVxuICAgICAgICA6IGNvbmZpZ1snZnVuY3Rpb25hbC11bml0J107XG5cbiAgICAgIGlmIChmdW5jdGlvbmFsVW5pdCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLndhcm4oWkVST19ESVZJU0lPTignU2NpJywgaW5kZXgpKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmlucHV0LFxuICAgICAgICAgIHNjaTogaW5wdXRbJ2NhcmJvbiddLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY2FsY3VsYXRlZFJlc3VsdCA9IGlucHV0WydjYXJib24nXSAvIGZ1bmN0aW9uYWxVbml0O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgc2NpOiBjYWxjdWxhdGVkUmVzdWx0LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSxcbiAgYWxsb3dBcml0aG1ldGljRXhwcmVzc2lvbnM6IFsnZnVuY3Rpb25hbC11bml0J10sXG59KTtcbiJdfQ==