@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
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONFIG = void 0;
4
+ const config_1 = require("../../common/config");
5
+ const { DISCLAIMER_MESSAGE } = config_1.STRINGS;
6
+ /**
7
+ * Configuration for if-api.
8
+ */
9
+ exports.CONFIG = {
10
+ ARGS: {
11
+ debug: {
12
+ type: Boolean,
13
+ alias: 'd',
14
+ description: 'Print debug logs to the console',
15
+ defaultValue: false,
16
+ },
17
+ disableExternalPluginWarning: {
18
+ type: Boolean,
19
+ alias: 'w',
20
+ description: 'Disable external plugin warning',
21
+ defaultValue: false,
22
+ },
23
+ disabledPlugins: {
24
+ type: String,
25
+ alias: 'f',
26
+ description: 'Filename that contains plugin names to be disabled',
27
+ optional: true,
28
+ },
29
+ port: {
30
+ type: String,
31
+ alias: 'p',
32
+ description: 'Port to listen on',
33
+ defaultValue: process.env.PORT ?? '3000',
34
+ },
35
+ host: {
36
+ type: String,
37
+ alias: 'b',
38
+ description: 'Host to listen on',
39
+ defaultValue: process.env.HOST ?? 'localhost',
40
+ },
41
+ help: {
42
+ type: Boolean,
43
+ alias: 'h',
44
+ description: 'Show help',
45
+ optional: true,
46
+ },
47
+ },
48
+ HELP: {
49
+ helpArg: 'help',
50
+ headerContentSections: [
51
+ { header: 'Impact Framework', content: 'Helpful keywords:' },
52
+ ],
53
+ footerContentSections: [
54
+ { header: 'Green Software Foundation', content: DISCLAIMER_MESSAGE },
55
+ ],
56
+ },
57
+ };
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLWFwaS9jb25maWcvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUE0QztBQUk1QyxNQUFNLEVBQUMsa0JBQWtCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXJDOztHQUVHO0FBQ1UsUUFBQSxNQUFNLEdBQUc7SUFDcEIsSUFBSSxFQUFFO1FBQ0osS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsR0FBRztZQUNWLFdBQVcsRUFBRSxpQ0FBaUM7WUFDOUMsWUFBWSxFQUFFLEtBQUs7U0FDcEI7UUFDRCw0QkFBNEIsRUFBRTtZQUM1QixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxHQUFHO1lBQ1YsV0FBVyxFQUFFLGlDQUFpQztZQUM5QyxZQUFZLEVBQUUsS0FBSztTQUNwQjtRQUNELGVBQWUsRUFBRTtZQUNmLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEdBQUc7WUFDVixXQUFXLEVBQUUsb0RBQW9EO1lBQ2pFLFFBQVEsRUFBRSxJQUFJO1NBQ2Y7UUFDRCxJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxHQUFHO1lBQ1YsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksTUFBTTtTQUN6QztRQUNELElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEdBQUc7WUFDVixXQUFXLEVBQUUsbUJBQW1CO1lBQ2hDLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxXQUFXO1NBQzlDO1FBQ0QsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsR0FBRztZQUNWLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFFBQVEsRUFBRSxJQUFJO1NBQ2Y7S0FDMkI7SUFDOUIsSUFBSSxFQUFFO1FBQ0osT0FBTyxFQUFFLE1BQU07UUFDZixxQkFBcUIsRUFBRTtZQUNyQixFQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUM7U0FDM0Q7UUFDRCxxQkFBcUIsRUFBRTtZQUNyQixFQUFDLE1BQU0sRUFBRSwyQkFBMkIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUM7U0FDbkU7S0FDeUI7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtBcmd1bWVudENvbmZpZywgUGFyc2VPcHRpb25zfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29tbW9uL2NvbmZpZyc7XG5cbmltcG9ydCB0eXBlIHtJZkFwaUFyZ3N9IGZyb20gJy4uL3R5cGVzL3Byb2Nlc3MtYXJncyc7XG5cbmNvbnN0IHtESVNDTEFJTUVSX01FU1NBR0V9ID0gU1RSSU5HUztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBpZi1hcGkuXG4gKi9cbmV4cG9ydCBjb25zdCBDT05GSUcgPSB7XG4gIEFSR1M6IHtcbiAgICBkZWJ1Zzoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGFsaWFzOiAnZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1ByaW50IGRlYnVnIGxvZ3MgdG8gdGhlIGNvbnNvbGUnLFxuICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICB9LFxuICAgIGRpc2FibGVFeHRlcm5hbFBsdWdpbldhcm5pbmc6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBhbGlhczogJ3cnLFxuICAgICAgZGVzY3JpcHRpb246ICdEaXNhYmxlIGV4dGVybmFsIHBsdWdpbiB3YXJuaW5nJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgfSxcbiAgICBkaXNhYmxlZFBsdWdpbnM6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGFsaWFzOiAnZicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ZpbGVuYW1lIHRoYXQgY29udGFpbnMgcGx1Z2luIG5hbWVzIHRvIGJlIGRpc2FibGVkJyxcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0sXG4gICAgcG9ydDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgYWxpYXM6ICdwJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUG9ydCB0byBsaXN0ZW4gb24nLFxuICAgICAgZGVmYXVsdFZhbHVlOiBwcm9jZXNzLmVudi5QT1JUID8/ICczMDAwJyxcbiAgICB9LFxuICAgIGhvc3Q6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGFsaWFzOiAnYicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0hvc3QgdG8gbGlzdGVuIG9uJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogcHJvY2Vzcy5lbnYuSE9TVCA/PyAnbG9jYWxob3N0JyxcbiAgICB9LFxuICAgIGhlbHA6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBhbGlhczogJ2gnLFxuICAgICAgZGVzY3JpcHRpb246ICdTaG93IGhlbHAnLFxuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfSxcbiAgfSBhcyBBcmd1bWVudENvbmZpZzxJZkFwaUFyZ3M+LFxuICBIRUxQOiB7XG4gICAgaGVscEFyZzogJ2hlbHAnLFxuICAgIGhlYWRlckNvbnRlbnRTZWN0aW9uczogW1xuICAgICAge2hlYWRlcjogJ0ltcGFjdCBGcmFtZXdvcmsnLCBjb250ZW50OiAnSGVscGZ1bCBrZXl3b3JkczonfSxcbiAgICBdLFxuICAgIGZvb3RlckNvbnRlbnRTZWN0aW9uczogW1xuICAgICAge2hlYWRlcjogJ0dyZWVuIFNvZnR3YXJlIEZvdW5kYXRpb24nLCBjb250ZW50OiBESVNDTEFJTUVSX01FU1NBR0V9LFxuICAgIF0sXG4gIH0gYXMgUGFyc2VPcHRpb25zPElmQXBpQXJncz4sXG59IGFzIGNvbnN0O1xuIl19
@@ -0,0 +1,2 @@
1
+ export { CONFIG } from './config';
2
+ export { STRINGS } from './strings';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRINGS = exports.CONFIG = void 0;
4
+ var config_1 = require("./config");
5
+ Object.defineProperty(exports, "CONFIG", { enumerable: true, get: function () { return config_1.CONFIG; } });
6
+ var strings_1 = require("./strings");
7
+ Object.defineProperty(exports, "STRINGS", { enumerable: true, get: function () { return strings_1.STRINGS; } });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtYXBpL2NvbmZpZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBZ0M7QUFBeEIsZ0dBQUEsTUFBTSxPQUFBO0FBQ2QscUNBQWtDO0FBQTFCLGtHQUFBLE9BQU8sT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7Q09ORklHfSBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQge1NUUklOR1N9IGZyb20gJy4vc3RyaW5ncyc7XG4iXX0=
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Strings for if-api.
3
+ */
4
+ export declare const STRINGS: {
5
+ readonly SERVER_STARTED: (addr: string) => string;
6
+ readonly SERVER_START_FAILED: (err: Error) => string;
7
+ readonly PROCESSING_REQUEST: "Processing request";
8
+ readonly INTERNAL_SERVER_ERROR: "Internal Server Error";
9
+ readonly INVALID_JSON: "Invalid JSON format";
10
+ readonly INVALID_YAML: "Invalid YAML format";
11
+ readonly MISSING_MANIFEST: "Missing manifest in request body";
12
+ readonly UNSUPPORTED_CONTENT_TYPE: "Unsupported content type. Supported types are: application/json, application/yaml";
13
+ readonly DISCLAIMER_MESSAGE: "Impact Framework API - Green Software Foundation";
14
+ readonly INVALID_DISABLED_PLUGINS: (line: string) => string;
15
+ readonly INVALID_PORT_NUMBER: (port: string) => string;
16
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRINGS = void 0;
4
+ /**
5
+ * Strings for if-api.
6
+ */
7
+ exports.STRINGS = {
8
+ SERVER_STARTED: (addr) => `Server started on ${addr}`,
9
+ SERVER_START_FAILED: (err) => `Failed to start server: ${err}`,
10
+ PROCESSING_REQUEST: 'Processing request',
11
+ INTERNAL_SERVER_ERROR: 'Internal Server Error',
12
+ INVALID_JSON: 'Invalid JSON format',
13
+ INVALID_YAML: 'Invalid YAML format',
14
+ MISSING_MANIFEST: 'Missing manifest in request body',
15
+ UNSUPPORTED_CONTENT_TYPE: 'Unsupported content type. Supported types are: application/json, application/yaml',
16
+ DISCLAIMER_MESSAGE: 'Impact Framework API - Green Software Foundation',
17
+ INVALID_DISABLED_PLUGINS: (line) => `Invalid DisabledPlugins settings:${line}`,
18
+ INVALID_PORT_NUMBER: (port) => `Invalid port number \`${port}\`. The port number should be a number between 0 and 65535.`,
19
+ };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1hcGkvY29uZmlnL3N0cmluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDVSxRQUFBLE9BQU8sR0FBRztJQUNyQixjQUFjLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixJQUFJLEVBQUU7SUFDN0QsbUJBQW1CLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRSxDQUFDLDJCQUEyQixHQUFHLEVBQUU7SUFDckUsa0JBQWtCLEVBQUUsb0JBQW9CO0lBQ3hDLHFCQUFxQixFQUFFLHVCQUF1QjtJQUM5QyxZQUFZLEVBQUUscUJBQXFCO0lBQ25DLFlBQVksRUFBRSxxQkFBcUI7SUFDbkMsZ0JBQWdCLEVBQUUsa0NBQWtDO0lBQ3BELHdCQUF3QixFQUN0QixtRkFBbUY7SUFDckYsa0JBQWtCLEVBQUUsa0RBQWtEO0lBQ3RFLHdCQUF3QixFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDekMsb0NBQW9DLElBQUksRUFBRTtJQUM1QyxtQkFBbUIsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQ3BDLHlCQUF5QixJQUFJLDZEQUE2RDtDQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdHJpbmdzIGZvciBpZi1hcGkuXG4gKi9cbmV4cG9ydCBjb25zdCBTVFJJTkdTID0ge1xuICBTRVJWRVJfU1RBUlRFRDogKGFkZHI6IHN0cmluZykgPT4gYFNlcnZlciBzdGFydGVkIG9uICR7YWRkcn1gLFxuICBTRVJWRVJfU1RBUlRfRkFJTEVEOiAoZXJyOiBFcnJvcikgPT4gYEZhaWxlZCB0byBzdGFydCBzZXJ2ZXI6ICR7ZXJyfWAsXG4gIFBST0NFU1NJTkdfUkVRVUVTVDogJ1Byb2Nlc3NpbmcgcmVxdWVzdCcsXG4gIElOVEVSTkFMX1NFUlZFUl9FUlJPUjogJ0ludGVybmFsIFNlcnZlciBFcnJvcicsXG4gIElOVkFMSURfSlNPTjogJ0ludmFsaWQgSlNPTiBmb3JtYXQnLFxuICBJTlZBTElEX1lBTUw6ICdJbnZhbGlkIFlBTUwgZm9ybWF0JyxcbiAgTUlTU0lOR19NQU5JRkVTVDogJ01pc3NpbmcgbWFuaWZlc3QgaW4gcmVxdWVzdCBib2R5JyxcbiAgVU5TVVBQT1JURURfQ09OVEVOVF9UWVBFOlxuICAgICdVbnN1cHBvcnRlZCBjb250ZW50IHR5cGUuIFN1cHBvcnRlZCB0eXBlcyBhcmU6IGFwcGxpY2F0aW9uL2pzb24sIGFwcGxpY2F0aW9uL3lhbWwnLFxuICBESVNDTEFJTUVSX01FU1NBR0U6ICdJbXBhY3QgRnJhbWV3b3JrIEFQSSAtIEdyZWVuIFNvZnR3YXJlIEZvdW5kYXRpb24nLFxuICBJTlZBTElEX0RJU0FCTEVEX1BMVUdJTlM6IChsaW5lOiBzdHJpbmcpID0+XG4gICAgYEludmFsaWQgRGlzYWJsZWRQbHVnaW5zIHNldHRpbmdzOiR7bGluZX1gLFxuICBJTlZBTElEX1BPUlRfTlVNQkVSOiAocG9ydDogc3RyaW5nKSA9PlxuICAgIGBJbnZhbGlkIHBvcnQgbnVtYmVyIFxcYCR7cG9ydH1cXGAuIFRoZSBwb3J0IG51bWJlciBzaG91bGQgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA2NTUzNS5gLFxufSBhcyBjb25zdDtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,268 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const promises_1 = require("fs/promises");
8
+ const express_1 = __importDefault(require("express"));
9
+ const js_yaml_1 = require("js-yaml");
10
+ const utils_1 = require("@grnsft/if-core/utils");
11
+ const debug_logger_1 = require("../common/util/debug-logger");
12
+ const logger_1 = require("../common/util/logger");
13
+ const storage_1 = require("../common/util/storage");
14
+ const validations_1 = require("../common/util/validations");
15
+ const aggregate_1 = require("../if-run/lib/aggregate");
16
+ const environment_1 = require("../if-run/lib/environment");
17
+ const initialize_1 = require("../if-run/lib/initialize");
18
+ const compute_1 = require("../if-run/lib/compute");
19
+ const explain_1 = require("../if-run/lib/explain");
20
+ const config_1 = require("./config");
21
+ const args_1 = require("./util/args");
22
+ const { DISCLAIMER_MESSAGE, INTERNAL_SERVER_ERROR, INVALID_DISABLED_PLUGINS, INVALID_JSON, INVALID_YAML, MISSING_MANIFEST, PROCESSING_REQUEST, SERVER_STARTED, SERVER_START_FAILED, UNSUPPORTED_CONTENT_TYPE, } = config_1.STRINGS;
23
+ const CT_YAML = 'application/yaml';
24
+ const CT_JSON = 'application/json';
25
+ const CT_VALID = [CT_YAML, CT_JSON];
26
+ const ERROR_LIST = Object.values(utils_1.ERRORS);
27
+ /**
28
+ * Determine response type.
29
+ */
30
+ const determineResponseType = (req) => {
31
+ const acceptHeader = req.get('Accept');
32
+ if (acceptHeader && acceptHeader !== '*/*') {
33
+ // Determine based on request Accept header
34
+ const responseType = req.accepts(CT_VALID);
35
+ if (responseType) {
36
+ return responseType;
37
+ }
38
+ }
39
+ // Determine based on request Content-Type
40
+ return req.get('Content-Type');
41
+ };
42
+ /**
43
+ * Send the response in the appropriate format.
44
+ */
45
+ const sendResponse = (req, res, manifest, status) => {
46
+ const responseType = determineResponseType(req);
47
+ if (responseType === CT_YAML) {
48
+ const yamlData = (0, js_yaml_1.dump)(manifest, { noRefs: true });
49
+ res.set('Content-Type', responseType);
50
+ res.status(status).send(yamlData);
51
+ }
52
+ else {
53
+ res.set('Content-Type', responseType);
54
+ res.status(status).json(manifest);
55
+ }
56
+ };
57
+ /**
58
+ * Parse disabled plugins file
59
+ * @param filename Filename that contains plugin names to be disabled
60
+ * @returns Set of disabledPlugins
61
+ */
62
+ const parseDisabledPlugins = async (filename) => {
63
+ // If no filename is specified, disable builtin:Shell, builtin:CSVImport, builtin:CSVLookup by default.
64
+ if (!filename) {
65
+ return new Set([
66
+ 'builtin:Shell',
67
+ 'builtin:CSVImport',
68
+ 'builtin:CSVLookup',
69
+ ]);
70
+ }
71
+ const disabledPlugins = new Set();
72
+ const file = await (0, promises_1.open)(filename);
73
+ try {
74
+ for await (const line of file.readLines()) {
75
+ const words = line.split(/ *: */);
76
+ switch (words.length) {
77
+ case 1:
78
+ disabledPlugins.add(`builtin:${words[0]}`);
79
+ break;
80
+ case 2:
81
+ disabledPlugins.add(`${words[0]}:${words[1]}`);
82
+ break;
83
+ default:
84
+ throw new Error(INVALID_DISABLED_PLUGINS(line));
85
+ }
86
+ }
87
+ }
88
+ finally {
89
+ await file.close();
90
+ }
91
+ return disabledPlugins;
92
+ };
93
+ const formatAddr = (addr) => {
94
+ if (typeof addr === 'string') {
95
+ return addr;
96
+ }
97
+ else if (addr === null) {
98
+ return 'unknown';
99
+ }
100
+ else if (addr.family === 'IPv6') {
101
+ return `[${addr.address}]:${addr.port}`;
102
+ }
103
+ else {
104
+ return `${addr.address}:${addr.port}`;
105
+ }
106
+ };
107
+ /**
108
+ * Start the API server.
109
+ */
110
+ const startServer = async () => {
111
+ const options = (0, args_1.parseIfApiProcessArgs)();
112
+ debug_logger_1.debugLogger.overrideConsoleMethods(options.debug);
113
+ logger_1.logger.info(DISCLAIMER_MESSAGE);
114
+ (0, initialize_1.setExternalPluginWarning)(!options.disableExternalPluginWarning);
115
+ const disabledPlugins = await parseDisabledPlugins(options.disabledPlugins);
116
+ (0, initialize_1.setDisabledPlugins)(disabledPlugins);
117
+ // Get execution information (command, environment).
118
+ const execution = await (0, environment_1.getExecution)();
119
+ const app = (0, express_1.default)();
120
+ // Middleware for JSON requests
121
+ app.use(express_1.default.json({ type: CT_JSON }));
122
+ // Custom middleware for YAML requests
123
+ app.use(express_1.default.text({ type: CT_YAML }), (req, res, next) => {
124
+ if (req.is(CT_YAML)) {
125
+ try {
126
+ req.body = (0, js_yaml_1.load)(req.body);
127
+ }
128
+ catch (err) {
129
+ res.status(400).json({
130
+ error: INVALID_YAML,
131
+ detail: err.message,
132
+ });
133
+ return;
134
+ }
135
+ }
136
+ next();
137
+ });
138
+ // Add request context storage
139
+ app.use((_req, _res, next) => (0, storage_1.executeWithContext)(next));
140
+ // Health check endpoint
141
+ app.get('/health', (_req, res) => {
142
+ res.status(200).send('OK');
143
+ });
144
+ // Process manifest endpoint
145
+ app.post('/v1/run', async (req, res) => {
146
+ logger_1.logger.info(PROCESSING_REQUEST);
147
+ // Check if request body exists
148
+ if (!req.body) {
149
+ res.status(400).json({ error: MISSING_MANIFEST });
150
+ return;
151
+ }
152
+ // Check request Content-Type
153
+ if (!req.is(CT_VALID)) {
154
+ res.status(415).json({ error: UNSUPPORTED_CONTENT_TYPE });
155
+ return;
156
+ }
157
+ // Create manifest with execution information
158
+ const envManifest = {
159
+ ...req.body,
160
+ execution: {
161
+ command: execution.command,
162
+ environment: {
163
+ ...execution.environment,
164
+ 'date-time': `${new Date().toISOString()} (UTC)`,
165
+ },
166
+ status: execution.status,
167
+ },
168
+ };
169
+ try {
170
+ const { tree, ...context } = (0, validations_1.validateManifest)(envManifest);
171
+ const pluginStorage = await (0, initialize_1.initialize)(context);
172
+ const computedTree = await (0, compute_1.compute)(tree, {
173
+ context,
174
+ pluginStorage,
175
+ observe: req.query.observe === 'true',
176
+ regroup: req.query.regroup === 'true',
177
+ compute: req.query.compute === 'true',
178
+ append: false,
179
+ });
180
+ const aggregatedTree = (0, aggregate_1.aggregate)(computedTree, context.aggregation);
181
+ envManifest.explainer && (context.explain = (0, explain_1.explain)());
182
+ // Prepare response data
183
+ const responseData = { tree: aggregatedTree, ...context };
184
+ // Return response in the determined format
185
+ sendResponse(req, res, responseData, 200);
186
+ }
187
+ catch (err) {
188
+ // If it's one of the errors in ERRORS, terminate with status code 400
189
+ if (ERROR_LIST.some(val => err instanceof val)) {
190
+ /** Execution block exists because manifest is already processed. Set's status to `fail`. */
191
+ envManifest.execution.status = 'fail';
192
+ envManifest.execution.error = err.toString();
193
+ // Return response in the determined format
194
+ sendResponse(req, res, envManifest, 400);
195
+ return;
196
+ }
197
+ // Set Content-Type to application/json
198
+ res.set('Content-Type', CT_JSON);
199
+ // For all other cases, terminate with status code 500
200
+ if (err instanceof Error) {
201
+ res.status(500).json({
202
+ error: INTERNAL_SERVER_ERROR,
203
+ detail: err.message,
204
+ });
205
+ return;
206
+ }
207
+ res.status(500).json({ error: INTERNAL_SERVER_ERROR });
208
+ }
209
+ });
210
+ // Set up custom error handler
211
+ app.use(
212
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
213
+ (err, _req, res, _next) => {
214
+ // Set Content-Type to application/json
215
+ res.set('Content-Type', CT_JSON);
216
+ // If SyntaxError (JSON parse error), terminate with status code 400
217
+ if (err.status === 400 && err instanceof SyntaxError && 'body' in err) {
218
+ res.status(400).json({
219
+ error: INVALID_JSON,
220
+ detail: err.message,
221
+ });
222
+ }
223
+ else if (err instanceof Error) {
224
+ if ('status' in err) {
225
+ res.status(err.status).json({
226
+ error: err.message,
227
+ });
228
+ }
229
+ else {
230
+ res.status(500).json({
231
+ error: INTERNAL_SERVER_ERROR,
232
+ detail: err.message,
233
+ });
234
+ }
235
+ }
236
+ else {
237
+ res.status(500).json({
238
+ error: INTERNAL_SERVER_ERROR,
239
+ });
240
+ }
241
+ });
242
+ // Start the server
243
+ const { port, host } = options;
244
+ const server = app.listen(port, host, (err) => {
245
+ if (err) {
246
+ logger_1.logger.error(SERVER_START_FAILED(err));
247
+ // eslint-disable-next-line no-process-exit
248
+ process.exit(2);
249
+ }
250
+ logger_1.logger.info(SERVER_STARTED(formatAddr(server.address())));
251
+ });
252
+ // Handle Signal
253
+ const handler = (err) => {
254
+ logger_1.logger.debug(`${err} signal received: closing HTTP server`);
255
+ server.close(() => {
256
+ logger_1.logger.debug('HTTP server closed');
257
+ });
258
+ };
259
+ process.once('SIGTERM', handler);
260
+ process.once('SIGINT', handler);
261
+ };
262
+ // Start the server
263
+ startServer().catch(err => {
264
+ logger_1.logger.error(SERVER_START_FAILED(err));
265
+ // eslint-disable-next-line no-process-exit
266
+ process.exit(2);
267
+ });
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWYtYXBpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLDBDQUFpQztBQUdqQyxzREFBOEI7QUFFOUIscUNBQW1DO0FBQ25DLGlEQUE2QztBQUc3Qyw4REFBd0Q7QUFDeEQsa0RBQTZDO0FBQzdDLG9EQUEwRDtBQUMxRCw0REFBNEQ7QUFFNUQsdURBQWtEO0FBQ2xELDJEQUF1RDtBQUN2RCx5REFJa0M7QUFDbEMsbURBQThDO0FBQzlDLG1EQUE4QztBQUU5QyxxQ0FBaUM7QUFDakMsc0NBQWtEO0FBRWxELE1BQU0sRUFDSixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osWUFBWSxFQUNaLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsR0FBRyxnQkFBTyxDQUFDO0FBRVosTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7QUFDbkMsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7QUFDbkMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFcEMsTUFBTSxVQUFVLEdBQWdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBTSxDQUFDLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsR0FBb0IsRUFBRSxFQUFFO0lBQ3JELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsSUFBSSxZQUFZLElBQUksWUFBWSxLQUFLLEtBQUssRUFBRTtRQUMxQywyQ0FBMkM7UUFDM0MsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLFlBQVksRUFBRTtZQUNoQixPQUFPLFlBQVksQ0FBQztT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QWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0lBRUgsZ0JBQWdCO0lBQ2hCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBbUIsRUFBRSxFQUFFO1FBQ3RDLGVBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLHVDQUF1QyxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDaEIsZUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBRUYsbUJBQW1CO0FBQ25CLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUN4QixlQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkMsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQge29wZW59IGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCB0eXBlIHtBZGRyZXNzSW5mb30gZnJvbSAnbmV0JztcblxuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgdHlwZSB7TmV4dEZ1bmN0aW9uLCBSZXF1ZXN0LCBSZXNwb25zZX0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQge2R1bXAsIGxvYWR9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB0eXBlIHtNYW5pZmVzdH0gZnJvbSAnLi4vY29tbW9uL3R5cGVzL21hbmlmZXN0JztcbmltcG9ydCB7ZGVidWdMb2dnZXJ9IGZyb20gJy4uL2NvbW1vbi91dGlsL2RlYnVnLWxvZ2dlcic7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vY29tbW9uL3V0aWwvbG9nZ2VyJztcbmltcG9ydCB7ZXhlY3V0ZVdpdGhDb250ZXh0fSBmcm9tICcuLi9jb21tb24vdXRpbC9zdG9yYWdlJztcbmltcG9ydCB7dmFsaWRhdGVNYW5pZmVzdH0gZnJvbSAnLi4vY29tbW9uL3V0aWwvdmFsaWRhdGlvbnMnO1xuXG5pbXBvcnQge2FnZ3JlZ2F0ZX0gZnJvbSAnLi4vaWYtcnVuL2xpYi9hZ2dyZWdhdGUnO1xuaW1wb3J0IHtnZXRFeGVjdXRpb259IGZyb20gJy4uL2lmLXJ1bi9saWIvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHtcbiAgaW5pdGlhbGl6ZSxcbiAgc2V0RXh0ZXJuYWxQbHVnaW5XYXJuaW5nLFxuICBzZXREaXNhYmxlZFBsdWdpbnMsXG59IGZyb20gJy4uL2lmLXJ1bi9saWIvaW5pdGlhbGl6ZSc7XG5pbXBvcnQge2NvbXB1dGV9IGZyb20gJy4uL2lmLXJ1bi9saWIvY29tcHV0ZSc7XG5pbXBvcnQge2V4cGxhaW59IGZyb20gJy4uL2lmLXJ1bi9saWIvZXhwbGFpbic7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtwYXJzZUlmQXBpUHJvY2Vzc0FyZ3N9IGZyb20gJy4vdXRpbC9hcmdzJztcblxuY29uc3Qge1xuICBESVNDTEFJTUVSX01FU1NBR0UsXG4gIElOVEVSTkFMX1NFUlZFUl9FUlJPUixcbiAgSU5WQUxJRF9ESVNBQkxFRF9QTFVHSU5TLFxuICBJTlZBTElEX0pTT04sXG4gIElOVkFMSURfWUFNTCxcbiAgTUlTU0lOR19NQU5JRkVTVCxcbiAgUFJPQ0VTU0lOR19SRVFVRVNULFxuICBTRVJWRVJfU1RBUlRFRCxcbiAgU0VSVkVSX1NUQVJUX0ZBSUxFRCxcbiAgVU5TVVBQT1JURURfQ09OVEVOVF9UWVBFLFxufSA9IFNUUklOR1M7XG5cbmNvbnN0IENUX1lBTUwgPSAnYXBwbGljYXRpb24veWFtbCc7XG5jb25zdCBDVF9KU09OID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuY29uc3QgQ1RfVkFMSUQgPSBbQ1RfWUFNTCwgQ1RfSlNPTl07XG5cbmNvbnN0IEVSUk9SX0xJU1Q6IHJlYWRvbmx5IEVycm9yQ29uc3RydWN0b3JbXSA9IE9iamVjdC52YWx1ZXMoRVJST1JTKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgcmVzcG9uc2UgdHlwZS5cbiAqL1xuY29uc3QgZGV0ZXJtaW5lUmVzcG9uc2VUeXBlID0gKHJlcTogZXhwcmVzcy5SZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IGFjY2VwdEhlYWRlciA9IHJlcS5nZXQoJ0FjY2VwdCcpO1xuICBpZiAoYWNjZXB0SGVhZGVyICYmIGFjY2VwdEhlYWRlciAhPT0gJyovKicpIHtcbiAgICAvLyBEZXRlcm1pbmUgYmFzZWQgb24gcmVxdWVzdCBBY2NlcHQgaGVhZGVyXG4gICAgY29uc3QgcmVzcG9uc2VUeXBlID0gcmVxLmFjY2VwdHMoQ1RfVkFMSUQpO1xuICAgIGlmIChyZXNwb25zZVR5cGUpIHtcbiAgICAgIHJldHVybiByZXNwb25zZVR5cGU7XG4gICAgfVxuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIGJhc2VkIG9uIHJlcXVlc3QgQ29udGVudC1UeXBlXG4gIHJldHVybiByZXEuZ2V0KCdDb250ZW50LVR5cGUnKTtcbn07XG5cbi8qKlxuICogU2VuZCB0aGUgcmVzcG9uc2UgaW4gdGhlIGFwcHJvcHJpYXRlIGZvcm1hdC5cbiAqL1xuY29uc3Qgc2VuZFJlc3BvbnNlID0gKFxuICByZXE6IFJlcXVlc3QsXG4gIHJlczogUmVzcG9uc2UsXG4gIG1hbmlmZXN0OiBNYW5pZmVzdCxcbiAgc3RhdHVzOiBudW1iZXJcbikgPT4ge1xuICBjb25zdCByZXNwb25zZVR5cGUgPSBkZXRlcm1pbmVSZXNwb25zZVR5cGUocmVxKTtcbiAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gQ1RfWUFNTCkge1xuICAgIGNvbnN0IHlhbWxEYXRhID0gZHVtcChtYW5pZmVzdCwge25vUmVmczogdHJ1ZX0pO1xuICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIHJlc3BvbnNlVHlwZSk7XG4gICAgcmVzLnN0YXR1cyhzdGF0dXMpLnNlbmQoeWFtbERhdGEpO1xuICB9IGVsc2Uge1xuICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIHJlc3BvbnNlVHlwZSk7XG4gICAgcmVzLnN0YXR1cyhzdGF0dXMpLmpzb24obWFuaWZlc3QpO1xuICB9XG59O1xuXG4vKipcbiAqIFBhcnNlIGRpc2FibGVkIHBsdWdpbnMgZmlsZVxuICogQHBhcmFtIGZpbGVuYW1lIEZpbGVuYW1lIHRoYXQgY29udGFpbnMgcGx1Z2luIG5hbWVzIHRvIGJlIGRpc2FibGVkXG4gKiBAcmV0dXJucyBTZXQgb2YgZGlzYWJsZWRQbHVnaW5zXG4gKi9cbmNvbnN0IHBhcnNlRGlzYWJsZWRQbHVnaW5zID0gYXN5bmMgKGZpbGVuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcbiAgLy8gSWYgbm8gZmlsZW5hbWUgaXMgc3BlY2lmaWVkLCBkaXNhYmxlIGJ1aWx0aW46U2hlbGwsIGJ1aWx0aW46Q1NWSW1wb3J0LCBidWlsdGluOkNTVkxvb2t1cCBieSBkZWZhdWx0LlxuICBpZiAoIWZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPihbXG4gICAgICAnYnVpbHRpbjpTaGVsbCcsXG4gICAgICAnYnVpbHRpbjpDU1ZJbXBvcnQnLFxuICAgICAgJ2J1aWx0aW46Q1NWTG9va3VwJyxcbiAgICBdKTtcbiAgfVxuXG4gIGNvbnN0IGRpc2FibGVkUGx1Z2lucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBmaWxlID0gYXdhaXQgb3BlbihmaWxlbmFtZSk7XG4gIHRyeSB7XG4gICAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIGZpbGUucmVhZExpbmVzKCkpIHtcbiAgICAgIGNvbnN0IHdvcmRzID0gbGluZS5zcGxpdCgvICo6ICovKTtcbiAgICAgIHN3aXRjaCAod29yZHMubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBkaXNhYmxlZFBsdWdpbnMuYWRkKGBidWlsdGluOiR7d29yZHNbMF19YCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBkaXNhYmxlZFBsdWdpbnMuYWRkKGAke3dvcmRzWzBdfToke3dvcmRzWzFdfWApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RJU0FCTEVEX1BMVUdJTlMobGluZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmaWxlLmNsb3NlKCk7XG4gIH1cbiAgcmV0dXJuIGRpc2FibGVkUGx1Z2lucztcbn07XG5cbmNvbnN0IGZvcm1hdEFkZHIgPSAoYWRkcjogc3RyaW5nIHwgQWRkcmVzc0luZm8gfCBudWxsKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBhZGRyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhZGRyO1xuICB9IGVsc2UgaWYgKGFkZHIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJ3Vua25vd24nO1xuICB9IGVsc2UgaWYgKGFkZHIuZmFtaWx5ID09PSAnSVB2NicpIHtcbiAgICByZXR1cm4gYFske2FkZHIuYWRkcmVzc31dOiR7YWRkci5wb3J0fWA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGAke2FkZHIuYWRkcmVzc306JHthZGRyLnBvcnR9YDtcbiAgfVxufTtcblxuLyoqXG4gKiBTdGFydCB0aGUgQVBJIHNlcnZlci5cbiAqL1xuY29uc3Qgc3RhcnRTZXJ2ZXIgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUlmQXBpUHJvY2Vzc0FyZ3MoKTtcblxuICBkZWJ1Z0xvZ2dlci5vdmVycmlkZUNvbnNvbGVNZXRob2RzKG9wdGlvbnMuZGVidWcpO1xuXG4gIGxvZ2dlci5pbmZvKERJU0NMQUlNRVJfTUVTU0FHRSk7XG5cbiAgc2V0RXh0ZXJuYWxQbHVnaW5XYXJuaW5nKCFvcHRpb25zLmRpc2FibGVFeHRlcm5hbFBsdWdpbldhcm5pbmcpO1xuXG4gIGNvbnN0IGRpc2FibGVkUGx1Z2lucyA9IGF3YWl0IHBhcnNlRGlzYWJsZWRQbHVnaW5zKG9wdGlvbnMuZGlzYWJsZWRQbHVnaW5zKTtcbiAgc2V0RGlzYWJsZWRQbHVnaW5zKGRpc2FibGVkUGx1Z2lucyk7XG5cbiAgLy8gR2V0IGV4ZWN1dGlvbiBpbmZvcm1hdGlvbiAoY29tbWFuZCwgZW52aXJvbm1lbnQpLlxuICBjb25zdCBleGVjdXRpb24gPSBhd2FpdCBnZXRFeGVjdXRpb24oKTtcblxuICBjb25zdCBhcHAgPSBleHByZXNzKCk7XG5cbiAgLy8gTWlkZGxld2FyZSBmb3IgSlNPTiByZXF1ZXN0c1xuICBhcHAudXNlKGV4cHJlc3MuanNvbih7dHlwZTogQ1RfSlNPTn0pKTtcblxuICAvLyBDdXN0b20gbWlkZGxld2FyZSBmb3IgWUFNTCByZXF1ZXN0c1xuICBhcHAudXNlKFxuICAgIGV4cHJlc3MudGV4dCh7dHlwZTogQ1RfWUFNTH0pLFxuICAgIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKHJlcS5pcyhDVF9ZQU1MKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcS5ib2R5ID0gbG9hZChyZXEuYm9keSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgICAgICAgZXJyb3I6IElOVkFMSURfWUFNTCxcbiAgICAgICAgICAgIGRldGFpbDogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuZXh0KCk7XG4gICAgfVxuICApO1xuXG4gIC8vIEFkZCByZXF1ZXN0IGNvbnRleHQgc3RvcmFnZVxuICBhcHAudXNlKChfcmVxOiBSZXF1ZXN0LCBfcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PlxuICAgIGV4ZWN1dGVXaXRoQ29udGV4dChuZXh0KVxuICApO1xuXG4gIC8vIEhlYWx0aCBjaGVjayBlbmRwb2ludFxuICBhcHAuZ2V0KCcvaGVhbHRoJywgKF9yZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpOiB2b2lkID0+IHtcbiAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCgnT0snKTtcbiAgfSk7XG5cbiAgLy8gUHJvY2VzcyBtYW5pZmVzdCBlbmRwb2ludFxuICBhcHAucG9zdCgnL3YxL3J1bicsIGFzeW5jIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBsb2dnZXIuaW5mbyhQUk9DRVNTSU5HX1JFUVVFU1QpO1xuXG4gICAgLy8gQ2hlY2sgaWYgcmVxdWVzdCBib2R5IGV4aXN0c1xuICAgIGlmICghcmVxLmJvZHkpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtlcnJvcjogTUlTU0lOR19NQU5JRkVTVH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIHJlcXVlc3QgQ29udGVudC1UeXBlXG4gICAgaWYgKCFyZXEuaXMoQ1RfVkFMSUQpKSB7XG4gICAgICByZXMuc3RhdHVzKDQxNSkuanNvbih7ZXJyb3I6IFVOU1VQUE9SVEVEX0NPTlRFTlRfVFlQRX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBtYW5pZmVzdCB3aXRoIGV4ZWN1dGlvbiBpbmZvcm1hdGlvblxuICAgIGNvbnN0IGVudk1hbmlmZXN0OiBNYW5pZmVzdCA9IHtcbiAgICAgIC4uLnJlcS5ib2R5LFxuICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgIGNvbW1hbmQ6IGV4ZWN1dGlvbi5jb21tYW5kLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIC4uLmV4ZWN1dGlvbi5lbnZpcm9ubWVudCxcbiAgICAgICAgICAnZGF0ZS10aW1lJzogYCR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfSAoVVRDKWAsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogZXhlY3V0aW9uLnN0YXR1cyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7dHJlZSwgLi4uY29udGV4dH0gPSB2YWxpZGF0ZU1hbmlmZXN0KGVudk1hbmlmZXN0KTtcblxuICAgICAgY29uc3QgcGx1Z2luU3RvcmFnZSA9IGF3YWl0IGluaXRpYWxpemUoY29udGV4dCk7XG5cbiAgICAgIGNvbnN0IGNvbXB1dGVkVHJlZSA9IGF3YWl0IGNvbXB1dGUodHJlZSwge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBwbHVnaW5TdG9yYWdlLFxuICAgICAgICBvYnNlcnZlOiByZXEucXVlcnkub2JzZXJ2ZSA9PT0gJ3RydWUnLFxuICAgICAgICByZWdyb3VwOiByZXEucXVlcnkucmVncm91cCA9PT0gJ3RydWUnLFxuICAgICAgICBjb21wdXRlOiByZXEucXVlcnkuY29tcHV0ZSA9PT0gJ3RydWUnLFxuICAgICAgICBhcHBlbmQ6IGZhbHNlLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGFnZ3JlZ2F0ZWRUcmVlID0gYWdncmVnYXRlKGNvbXB1dGVkVHJlZSwgY29udGV4dC5hZ2dyZWdhdGlvbik7XG5cbiAgICAgIGVudk1hbmlmZXN0LmV4cGxhaW5lciAmJiAoY29udGV4dC5leHBsYWluID0gZXhwbGFpbigpKTtcblxuICAgICAgLy8gUHJlcGFyZSByZXNwb25zZSBkYXRhXG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSB7dHJlZTogYWdncmVnYXRlZFRyZWUsIC4uLmNvbnRleHR9O1xuXG4gICAgICAvLyBSZXR1cm4gcmVzcG9uc2UgaW4gdGhlIGRldGVybWluZWQgZm9ybWF0XG4gICAgICBzZW5kUmVzcG9uc2UocmVxLCByZXMsIHJlc3BvbnNlRGF0YSwgMjAwKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIElmIGl0J3Mgb25lIG9mIHRoZSBlcnJvcnMgaW4gRVJST1JTLCB0ZXJtaW5hdGUgd2l0aCBzdGF0dXMgY29kZSA0MDBcbiAgICAgIGlmIChFUlJPUl9MSVNULnNvbWUodmFsID0+IGVyciBpbnN0YW5jZW9mIHZhbCkpIHtcbiAgICAgICAgLyoqIEV4ZWN1dGlvbiBibG9jayBleGlzdHMgYmVjYXVzZSBtYW5pZmVzdCBpcyBhbHJlYWR5IHByb2Nlc3NlZC4gU2V0J3Mgc3RhdHVzIHRvIGBmYWlsYC4gKi9cbiAgICAgICAgZW52TWFuaWZlc3QuZXhlY3V0aW9uIS5zdGF0dXMgPSAnZmFpbCc7XG4gICAgICAgIGVudk1hbmlmZXN0LmV4ZWN1dGlvbiEuZXJyb3IgPSAoZXJyIGFzIEVycm9yKS50b1N0cmluZygpO1xuXG4gICAgICAgIC8vIFJldHVybiByZXNwb25zZSBpbiB0aGUgZGV0ZXJtaW5lZCBmb3JtYXRcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcSwgcmVzLCBlbnZNYW5pZmVzdCwgNDAwKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgQ29udGVudC1UeXBlIHRvIGFwcGxpY2F0aW9uL2pzb25cbiAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIENUX0pTT04pO1xuICAgICAgLy8gRm9yIGFsbCBvdGhlciBjYXNlcywgdGVybWluYXRlIHdpdGggc3RhdHVzIGNvZGUgNTAwXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgICAgIGVycm9yOiBJTlRFUk5BTF9TRVJWRVJfRVJST1IsXG4gICAgICAgICAgZGV0YWlsOiBlcnIubWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtlcnJvcjogSU5URVJOQUxfU0VSVkVSX0VSUk9SfSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBTZXQgdXAgY3VzdG9tIGVycm9yIGhhbmRsZXJcbiAgYXBwLnVzZShcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgKGVycjogYW55LCBfcmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBfbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgICAvLyBTZXQgQ29udGVudC1UeXBlIHRvIGFwcGxpY2F0aW9uL2pzb25cbiAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIENUX0pTT04pO1xuXG4gICAgICAvLyBJZiBTeW50YXhFcnJvciAoSlNPTiBwYXJzZSBlcnJvciksIHRlcm1pbmF0ZSB3aXRoIHN0YXR1cyBjb2RlIDQwMFxuICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwMCAmJiBlcnIgaW5zdGFuY2VvZiBTeW50YXhFcnJvciAmJiAnYm9keScgaW4gZXJyKSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgICAgICBlcnJvcjogSU5WQUxJRF9KU09OLFxuICAgICAgICAgIGRldGFpbDogZXJyLm1lc3NhZ2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBpZiAoJ3N0YXR1cycgaW4gZXJyKSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyhlcnIuc3RhdHVzIGFzIG51bWJlcikuanNvbih7XG4gICAgICAgICAgICBlcnJvcjogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgICAgICAgZXJyb3I6IElOVEVSTkFMX1NFUlZFUl9FUlJPUixcbiAgICAgICAgICAgIGRldGFpbDogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgICAgICBlcnJvcjogSU5URVJOQUxfU0VSVkVSX0VSUk9SLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgLy8gU3RhcnQgdGhlIHNlcnZlclxuICBjb25zdCB7cG9ydCwgaG9zdH0gPSBvcHRpb25zO1xuICBjb25zdCBzZXJ2ZXIgPSBhcHAubGlzdGVuKHBvcnQsIGhvc3QsIChlcnI/OiBFcnJvcikgPT4ge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihTRVJWRVJfU1RBUlRfRkFJTEVEKGVycikpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZXhpdFxuICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgIH1cbiAgICBsb2dnZXIuaW5mbyhTRVJWRVJfU1RBUlRFRChmb3JtYXRBZGRyKHNlcnZlci5hZGRyZXNzKCkpKSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTaWduYWxcbiAgY29uc3QgaGFuZGxlciA9IChlcnI6IE5vZGVKUy5TaWduYWxzKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGAke2Vycn0gc2lnbmFsIHJlY2VpdmVkOiBjbG9zaW5nIEhUVFAgc2VydmVyYCk7XG4gICAgc2VydmVyLmNsb3NlKCgpID0+IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnSFRUUCBzZXJ2ZXIgY2xvc2VkJyk7XG4gICAgfSk7XG4gIH07XG4gIHByb2Nlc3Mub25jZSgnU0lHVEVSTScsIGhhbmRsZXIpO1xuICBwcm9jZXNzLm9uY2UoJ1NJR0lOVCcsIGhhbmRsZXIpO1xufTtcblxuLy8gU3RhcnQgdGhlIHNlcnZlclxuc3RhcnRTZXJ2ZXIoKS5jYXRjaChlcnIgPT4ge1xuICBsb2dnZXIuZXJyb3IoU0VSVkVSX1NUQVJUX0ZBSUxFRChlcnIpKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZXhpdFxuICBwcm9jZXNzLmV4aXQoMik7XG59KTtcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Interface for if-api process arguments.
3
+ */
4
+ export interface IfApiArgs {
5
+ debug: boolean;
6
+ disableExternalPluginWarning: boolean;
7
+ disabledPlugins?: string;
8
+ port: string;
9
+ host: string;
10
+ help?: boolean;
11
+ }
12
+ export interface IfApiOptions {
13
+ debug: boolean;
14
+ disableExternalPluginWarning: boolean;
15
+ disabledPlugins: string | undefined;
16
+ port: number;
17
+ host: string;
18
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hcmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLWFwaS90eXBlcy9wcm9jZXNzLWFyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZXJmYWNlIGZvciBpZi1hcGkgcHJvY2VzcyBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWZBcGlBcmdzIHtcbiAgZGVidWc6IGJvb2xlYW47XG4gIGRpc2FibGVFeHRlcm5hbFBsdWdpbldhcm5pbmc6IGJvb2xlYW47XG4gIGRpc2FibGVkUGx1Z2lucz86IHN0cmluZztcbiAgcG9ydDogc3RyaW5nO1xuICBob3N0OiBzdHJpbmc7XG4gIGhlbHA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElmQXBpT3B0aW9ucyB7XG4gIGRlYnVnOiBib29sZWFuO1xuICBkaXNhYmxlRXh0ZXJuYWxQbHVnaW5XYXJuaW5nOiBib29sZWFuO1xuICBkaXNhYmxlZFBsdWdpbnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcG9ydDogbnVtYmVyO1xuICBob3N0OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import type { IfApiOptions } from '../types/process-args';
2
+ /**
3
+ * Parse command line arguments for `if-api`.
4
+ */
5
+ export declare const parseIfApiProcessArgs: () => IfApiOptions;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseIfApiProcessArgs = void 0;
4
+ const ts_command_line_args_1 = require("ts-command-line-args");
5
+ const config_1 = require("../config");
6
+ const { ARGS, HELP } = config_1.CONFIG;
7
+ const { INVALID_PORT_NUMBER } = config_1.STRINGS;
8
+ /**
9
+ * Validates `if-api` process arguments.
10
+ */
11
+ const validateAndParseProcessArgs = () => {
12
+ try {
13
+ return (0, ts_command_line_args_1.parse)(ARGS, HELP);
14
+ }
15
+ catch (error) {
16
+ if (error instanceof Error) {
17
+ console.log(error.message);
18
+ console.log('Here are the supported flags for the `if-api` command:');
19
+ (0, ts_command_line_args_1.parse)(ARGS, { ...HELP, argv: ['--help'], processExitCode: 1 });
20
+ }
21
+ throw error;
22
+ }
23
+ };
24
+ /**
25
+ * Parse command line arguments for `if-api`.
26
+ */
27
+ const parseIfApiProcessArgs = () => {
28
+ const options = validateAndParseProcessArgs();
29
+ const port = parseInt(options.port, 10);
30
+ if (Number.isNaN(port) || port < 0 || port > 65535) {
31
+ throw new Error(INVALID_PORT_NUMBER(options.port));
32
+ }
33
+ return {
34
+ debug: options.debug,
35
+ disableExternalPluginWarning: options.disableExternalPluginWarning,
36
+ disabledPlugins: options.disabledPlugins,
37
+ port,
38
+ host: options.host,
39
+ };
40
+ };
41
+ exports.parseIfApiProcessArgs = parseIfApiProcessArgs;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1hcGkvdXRpbC9hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUEyQztBQUUzQyxzQ0FBMEM7QUFHMUMsTUFBTSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDNUIsTUFBTSxFQUFDLG1CQUFtQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sMkJBQTJCLEdBQUcsR0FBYyxFQUFFO0lBQ2xELElBQUk7UUFDRixPQUFPLElBQUEsNEJBQUssRUFBWSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDckM7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7WUFDdEUsSUFBQSw0QkFBSyxFQUFZLElBQUksRUFBRSxFQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBQ0QsTUFBTSxLQUFLLENBQUM7S0FDYjtBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0ksTUFBTSxxQkFBcUIsR0FBRyxHQUFpQixFQUFFO0lBQ3RELE1BQU0sT0FBTyxHQUFHLDJCQUEyQixFQUFFLENBQUM7SUFDOUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRTtRQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3BEO0lBRUQsT0FBTztRQUNMLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQiw0QkFBNEIsRUFBRSxPQUFPLENBQUMsNEJBQTRCO1FBQ2xFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtRQUN4QyxJQUFJO1FBQ0osSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUM7QUFDSixDQUFDLENBQUM7QUFkVyxRQUFBLHFCQUFxQix5QkFjaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhcnNlfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7Q09ORklHLCBTVFJJTkdTfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHR5cGUge0lmQXBpQXJncywgSWZBcGlPcHRpb25zfSBmcm9tICcuLi90eXBlcy9wcm9jZXNzLWFyZ3MnO1xuXG5jb25zdCB7QVJHUywgSEVMUH0gPSBDT05GSUc7XG5jb25zdCB7SU5WQUxJRF9QT1JUX05VTUJFUn0gPSBTVFJJTkdTO1xuXG4vKipcbiAqIFZhbGlkYXRlcyBgaWYtYXBpYCBwcm9jZXNzIGFyZ3VtZW50cy5cbiAqL1xuY29uc3QgdmFsaWRhdGVBbmRQYXJzZVByb2Nlc3NBcmdzID0gKCk6IElmQXBpQXJncyA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlPElmQXBpQXJncz4oQVJHUywgSEVMUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgY29uc29sZS5sb2coJ0hlcmUgYXJlIHRoZSBzdXBwb3J0ZWQgZmxhZ3MgZm9yIHRoZSBgaWYtYXBpYCBjb21tYW5kOicpO1xuICAgICAgcGFyc2U8SWZBcGlBcmdzPihBUkdTLCB7Li4uSEVMUCwgYXJndjogWyctLWhlbHAnXSwgcHJvY2Vzc0V4aXRDb2RlOiAxfSk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG4vKipcbiAqIFBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZm9yIGBpZi1hcGlgLlxuICovXG5leHBvcnQgY29uc3QgcGFyc2VJZkFwaVByb2Nlc3NBcmdzID0gKCk6IElmQXBpT3B0aW9ucyA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSB2YWxpZGF0ZUFuZFBhcnNlUHJvY2Vzc0FyZ3MoKTtcbiAgY29uc3QgcG9ydCA9IHBhcnNlSW50KG9wdGlvbnMucG9ydCwgMTApO1xuICBpZiAoTnVtYmVyLmlzTmFOKHBvcnQpIHx8IHBvcnQgPCAwIHx8IHBvcnQgPiA2NTUzNSkge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX1BPUlRfTlVNQkVSKG9wdGlvbnMucG9ydCkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZWJ1Zzogb3B0aW9ucy5kZWJ1ZyxcbiAgICBkaXNhYmxlRXh0ZXJuYWxQbHVnaW5XYXJuaW5nOiBvcHRpb25zLmRpc2FibGVFeHRlcm5hbFBsdWdpbldhcm5pbmcsXG4gICAgZGlzYWJsZWRQbHVnaW5zOiBvcHRpb25zLmRpc2FibGVkUGx1Z2lucyxcbiAgICBwb3J0LFxuICAgIGhvc3Q6IG9wdGlvbnMuaG9zdCxcbiAgfTtcbn07XG4iXX0=
@@ -46,13 +46,7 @@ const IfCheck = async () => {
46
46
  }
47
47
  catch (error) {
48
48
  const fileName = path.basename(manifest);
49
- const executedFile = manifest
50
- .replace(fileName, `re-${fileName}`)
51
- .replace('yml', 'yaml');
52
- const manifestDirPath = path.dirname(manifest);
53
49
  (0, helpers_1.logStdoutFailMessage)(error, fileName);
54
- await (0, fs_1.removeFileIfExists)(`${manifestDirPath}/package.json`);
55
- await (0, fs_1.removeFileIfExists)(executedFile);
56
50
  }
57
51
  }
58
52
  else {
@@ -71,13 +65,9 @@ const IfCheck = async () => {
71
65
  }
72
66
  catch (error) {
73
67
  const fileName = path.basename(file);
74
- const executedFile = file
75
- .replace(fileName, `re-${fileName}`)
76
- .replace('yml', 'yaml');
77
68
  const failedFilesLog = (0, helpers_1.logStdoutFailMessage)(error, fileName);
78
69
  failedLogs.message = failedLogs.message.concat(failedFilesLog);
79
70
  failedLogs.count++;
80
- await (0, fs_1.removeFileIfExists)(executedFile);
81
71
  }
82
72
  }
83
73
  if (failedLogs.count > 0) {
@@ -95,4 +85,4 @@ IfCheck().catch(error => {
95
85
  process.exit(2);
96
86
  }
97
87
  });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWYtY2hlY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvQ0FBb0M7QUFDcEMsMkNBQTZCO0FBRTdCLDBDQUFtRTtBQUNuRSw4REFBd0Q7QUFDeEQsa0RBQTZDO0FBRTdDLDRDQUFvRDtBQUNwRCxzQ0FBNkM7QUFDN0Msb0NBQTJDO0FBRTNDLHFDQUFpQztBQUVqQyxNQUFNLEVBQ0osUUFBUSxFQUNSLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLGtCQUFrQixHQUNuQixHQUFHLGdCQUFPLENBQUM7QUFFWixNQUFNLE9BQU8sR0FBRyxLQUFLLElBQUksRUFBRTtJQUN6Qix5RUFBeUU7SUFDekUsMEJBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUxQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUEsdUJBQWdCLEdBQUUsQ0FBQztJQUU3QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUU3QixJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDeEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUV0QyxJQUFJO1lBQ0YsTUFBTSxJQUFBLHFCQUFlLEVBQUMsUUFBUSxDQUFDLENBQUM7U0FDakM7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVE7aUJBQzFCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxRQUFRLEVBQUUsQ0FBQztpQkFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRS9DLElBQUEsOEJBQW9CLEVBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXRDLE1BQU0sSUFBQSx1QkFBa0IsRUFBQyxHQUFHLGVBQWUsZUFBZSxDQUFDLENBQUM7WUFDNUQsTUFBTSxJQUFBLHVCQUFrQixFQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3hDO0tBQ0Y7U0FBTTtRQUNMLE1BQU0sVUFBVSxHQUFHLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsaUJBQVksRUFBQyxTQUFVLENBQUMsQ0FBQztRQUU3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUN4QyxJQUFJLENBQ0wsQ0FBQztZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBRWxELElBQUk7Z0JBQ0YsTUFBTSxJQUFBLHFCQUFlLEVBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0I7WUFBQyxPQUFPLEtBQVUsRUFBRTtnQkFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsTUFBTSxZQUFZLEdBQUcsSUFBSTtxQkFDdEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLFFBQVEsRUFBRSxDQUFDO3FCQUNuQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUUxQixNQUFNLGNBQWMsR0FBRyxJQUFBLDhCQUFvQixFQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDN0QsVUFBVSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDL0QsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUVuQixNQUFNLElBQUEsdUJBQWtCLEVBQUMsWUFBWSxDQUFDLENBQUM7YUFDeEM7U0FDRjtRQUVELElBQUksVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFFekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtLQUNGO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3RCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQixlQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb2Nlc3MtZXhpdCAqL1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtnZXRZYW1sRmlsZXMsIHJlbW92ZUZpbGVJZkV4aXN0c30gZnJvbSAnLi4vY29tbW9uL3V0aWwvZnMnO1xuaW1wb3J0IHtkZWJ1Z0xvZ2dlcn0gZnJvbSAnLi4vY29tbW9uL3V0aWwvZGVidWctbG9nZ2VyJztcbmltcG9ydCB7bG9nZ2VyfSBmcm9tICcuLi9jb21tb24vdXRpbC9sb2dnZXInO1xuXG5pbXBvcnQge2xvZ1N0ZG91dEZhaWxNZXNzYWdlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge3BhcnNlSWZDaGVja0FyZ3N9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7ZXhlY3V0ZUNvbW1hbmRzfSBmcm9tICcuL3V0aWwvbnBtJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuL2NvbmZpZyc7XG5cbmNvbnN0IHtcbiAgQ0hFQ0tJTkcsXG4gIERJUkVDVE9SWV9ZQU1MX0ZJTEVTX05PVF9GT1VORCxcbiAgSUZfQ0hFQ0tfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVTLFxuICBJRl9DSEVDS19TVU1NQVJZX0xPRyxcbiAgSUZfQ0hFQ0tfRVhFQ1VUSU5HLFxufSA9IFNUUklOR1M7XG5cbmNvbnN0IElmQ2hlY2sgPSBhc3luYyAoKSA9PiB7XG4gIC8vIENhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIGZhbHNlIHBhcmFtZXRlciB0byBwcmV2ZW50IGxvZyBkZWJ1ZyBtZXNzYWdlcy5cbiAgZGVidWdMb2dnZXIub3ZlcnJpZGVDb25zb2xlTWV0aG9kcyhmYWxzZSk7XG5cbiAgY29uc3QgY29tbWFuZEFyZ3MgPSBhd2FpdCBwYXJzZUlmQ2hlY2tBcmdzKCk7XG5cbiAgY29uc29sZS5sb2coYCR7Q0hFQ0tJTkd9XFxuYCk7XG5cbiAgaWYgKGNvbW1hbmRBcmdzLm1hbmlmZXN0KSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBjb21tYW5kQXJncy5tYW5pZmVzdDtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjdXRlQ29tbWFuZHMobWFuaWZlc3QpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShtYW5pZmVzdCk7XG4gICAgICBjb25zdCBleGVjdXRlZEZpbGUgPSBtYW5pZmVzdFxuICAgICAgICAucmVwbGFjZShmaWxlTmFtZSwgYHJlLSR7ZmlsZU5hbWV9YClcbiAgICAgICAgLnJlcGxhY2UoJ3ltbCcsICd5YW1sJyk7XG4gICAgICBjb25zdCBtYW5pZmVzdERpclBhdGggPSBwYXRoLmRpcm5hbWUobWFuaWZlc3QpO1xuXG4gICAgICBsb2dTdGRvdXRGYWlsTWVzc2FnZShlcnJvciwgZmlsZU5hbWUpO1xuXG4gICAgICBhd2FpdCByZW1vdmVGaWxlSWZFeGlzdHMoYCR7bWFuaWZlc3REaXJQYXRofS9wYWNrYWdlLmpzb25gKTtcbiAgICAgIGF3YWl0IHJlbW92ZUZpbGVJZkV4aXN0cyhleGVjdXRlZEZpbGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmYWlsZWRMb2dzID0ge2NvdW50OiAwLCBtZXNzYWdlOiAnJ307XG4gICAgY29uc3QgZGlyZWN0b3J5ID0gY29tbWFuZEFyZ3MuZGlyZWN0b3J5O1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2V0WWFtbEZpbGVzKGRpcmVjdG9yeSEpO1xuXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coRElSRUNUT1JZX1lBTUxfRklMRVNfTk9UX0ZPVU5EKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGVSZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKFxuICAgICAgICBwcm9jZXNzLmVudi5DVVJSRU5UX0RJUiB8fCBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBmaWxlXG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coSUZfQ0hFQ0tfRVhFQ1VUSU5HKGZpbGVSZWxhdGl2ZVBhdGgpKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZXhlY3V0ZUNvbW1hbmRzKGZpbGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZSk7XG4gICAgICAgIGNvbnN0IGV4ZWN1dGVkRmlsZSA9IGZpbGVcbiAgICAgICAgICAucmVwbGFjZShmaWxlTmFtZSwgYHJlLSR7ZmlsZU5hbWV9YClcbiAgICAgICAgICAucmVwbGFjZSgneW1sJywgJ3lhbWwnKTtcblxuICAgICAgICBjb25zdCBmYWlsZWRGaWxlc0xvZyA9IGxvZ1N0ZG91dEZhaWxNZXNzYWdlKGVycm9yLCBmaWxlTmFtZSk7XG4gICAgICAgIGZhaWxlZExvZ3MubWVzc2FnZSA9IGZhaWxlZExvZ3MubWVzc2FnZS5jb25jYXQoZmFpbGVkRmlsZXNMb2cpO1xuICAgICAgICBmYWlsZWRMb2dzLmNvdW50Kys7XG5cbiAgICAgICAgYXdhaXQgcmVtb3ZlRmlsZUlmRXhpc3RzKGV4ZWN1dGVkRmlsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZhaWxlZExvZ3MuY291bnQgPiAwKSB7XG4gICAgICBjb25zdCBwYXNzZWRGaWxlc0NvdW50ID0gZmlsZXMubGVuZ3RoIC0gZmFpbGVkTG9ncy5jb3VudDtcblxuICAgICAgY29uc29sZS5sb2coSUZfQ0hFQ0tfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVTKTtcbiAgICAgIGNvbnNvbGUubG9nKGZhaWxlZExvZ3MubWVzc2FnZSk7XG4gICAgICBjb25zb2xlLmxvZyhJRl9DSEVDS19TVU1NQVJZX0xPRyhwYXNzZWRGaWxlc0NvdW50LCBmaWxlcy5sZW5ndGgpKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbn07XG5cbklmQ2hlY2soKS5jYXRjaChlcnJvciA9PiB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICBwcm9jZXNzLmV4aXQoMik7XG4gIH1cbn0pO1xuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWYtY2hlY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvQ0FBb0M7QUFDcEMsMkNBQTZCO0FBRTdCLDBDQUErQztBQUMvQyw4REFBd0Q7QUFDeEQsa0RBQTZDO0FBRTdDLDRDQUFvRDtBQUNwRCxzQ0FBNkM7QUFDN0Msb0NBQTJDO0FBRTNDLHFDQUFpQztBQUVqQyxNQUFNLEVBQ0osUUFBUSxFQUNSLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLGtCQUFrQixHQUNuQixHQUFHLGdCQUFPLENBQUM7QUFFWixNQUFNLE9BQU8sR0FBRyxLQUFLLElBQUksRUFBRTtJQUN6Qix5RUFBeUU7SUFDekUsMEJBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUxQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUEsdUJBQWdCLEdBQUUsQ0FBQztJQUU3QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUU3QixJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDeEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUV0QyxJQUFJO1lBQ0YsTUFBTSxJQUFBLHFCQUFlLEVBQUMsUUFBUSxDQUFDLENBQUM7U0FDakM7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLElBQUEsOEJBQW9CLEVBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZDO0tBQ0Y7U0FBTTtRQUNMLE1BQU0sVUFBVSxHQUFHLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsaUJBQVksRUFBQyxTQUFVLENBQUMsQ0FBQztRQUU3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUN4QyxJQUFJLENBQ0wsQ0FBQztZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBRWxELElBQUk7Z0JBQ0YsTUFBTSxJQUFBLHFCQUFlLEVBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0I7WUFBQyxPQUFPLEtBQVUsRUFBRTtnQkFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsTUFBTSxjQUFjLEdBQUcsSUFBQSw4QkFBb0IsRUFBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdELFVBQVUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQy9ELFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNwQjtTQUNGO1FBRUQsSUFBSSxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUV6RCxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNsRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCO0tBQ0Y7QUFDSCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDdEIsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1FBQzFCLGVBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtBQUNILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvY2Vzcy1leGl0ICovXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge2dldFlhbWxGaWxlc30gZnJvbSAnLi4vY29tbW9uL3V0aWwvZnMnO1xuaW1wb3J0IHtkZWJ1Z0xvZ2dlcn0gZnJvbSAnLi4vY29tbW9uL3V0aWwvZGVidWctbG9nZ2VyJztcbmltcG9ydCB7bG9nZ2VyfSBmcm9tICcuLi9jb21tb24vdXRpbC9sb2dnZXInO1xuXG5pbXBvcnQge2xvZ1N0ZG91dEZhaWxNZXNzYWdlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge3BhcnNlSWZDaGVja0FyZ3N9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7ZXhlY3V0ZUNvbW1hbmRzfSBmcm9tICcuL3V0aWwvbnBtJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuL2NvbmZpZyc7XG5cbmNvbnN0IHtcbiAgQ0hFQ0tJTkcsXG4gIERJUkVDVE9SWV9ZQU1MX0ZJTEVTX05PVF9GT1VORCxcbiAgSUZfQ0hFQ0tfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVTLFxuICBJRl9DSEVDS19TVU1NQVJZX0xPRyxcbiAgSUZfQ0hFQ0tfRVhFQ1VUSU5HLFxufSA9IFNUUklOR1M7XG5cbmNvbnN0IElmQ2hlY2sgPSBhc3luYyAoKSA9PiB7XG4gIC8vIENhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIGZhbHNlIHBhcmFtZXRlciB0byBwcmV2ZW50IGxvZyBkZWJ1ZyBtZXNzYWdlcy5cbiAgZGVidWdMb2dnZXIub3ZlcnJpZGVDb25zb2xlTWV0aG9kcyhmYWxzZSk7XG5cbiAgY29uc3QgY29tbWFuZEFyZ3MgPSBhd2FpdCBwYXJzZUlmQ2hlY2tBcmdzKCk7XG5cbiAgY29uc29sZS5sb2coYCR7Q0hFQ0tJTkd9XFxuYCk7XG5cbiAgaWYgKGNvbW1hbmRBcmdzLm1hbmlmZXN0KSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBjb21tYW5kQXJncy5tYW5pZmVzdDtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjdXRlQ29tbWFuZHMobWFuaWZlc3QpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShtYW5pZmVzdCk7XG4gICAgICBsb2dTdGRvdXRGYWlsTWVzc2FnZShlcnJvciwgZmlsZU5hbWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmYWlsZWRMb2dzID0ge2NvdW50OiAwLCBtZXNzYWdlOiAnJ307XG4gICAgY29uc3QgZGlyZWN0b3J5ID0gY29tbWFuZEFyZ3MuZGlyZWN0b3J5O1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2V0WWFtbEZpbGVzKGRpcmVjdG9yeSEpO1xuXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coRElSRUNUT1JZX1lBTUxfRklMRVNfTk9UX0ZPVU5EKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGVSZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKFxuICAgICAgICBwcm9jZXNzLmVudi5DVVJSRU5UX0RJUiB8fCBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBmaWxlXG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coSUZfQ0hFQ0tfRVhFQ1VUSU5HKGZpbGVSZWxhdGl2ZVBhdGgpKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZXhlY3V0ZUNvbW1hbmRzKGZpbGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZSk7XG4gICAgICAgIGNvbnN0IGZhaWxlZEZpbGVzTG9nID0gbG9nU3Rkb3V0RmFpbE1lc3NhZ2UoZXJyb3IsIGZpbGVOYW1lKTtcbiAgICAgICAgZmFpbGVkTG9ncy5tZXNzYWdlID0gZmFpbGVkTG9ncy5tZXNzYWdlLmNvbmNhdChmYWlsZWRGaWxlc0xvZyk7XG4gICAgICAgIGZhaWxlZExvZ3MuY291bnQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmFpbGVkTG9ncy5jb3VudCA+IDApIHtcbiAgICAgIGNvbnN0IHBhc3NlZEZpbGVzQ291bnQgPSBmaWxlcy5sZW5ndGggLSBmYWlsZWRMb2dzLmNvdW50O1xuXG4gICAgICBjb25zb2xlLmxvZyhJRl9DSEVDS19WRVJJRklDQVRJT05fRkFJTFVSRVMpO1xuICAgICAgY29uc29sZS5sb2coZmFpbGVkTG9ncy5tZXNzYWdlKTtcbiAgICAgIGNvbnNvbGUubG9nKElGX0NIRUNLX1NVTU1BUllfTE9HKHBhc3NlZEZpbGVzQ291bnQsIGZpbGVzLmxlbmd0aCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfVxufTtcblxuSWZDaGVjaygpLmNhdGNoKGVycm9yID0+IHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICBsb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgfVxufSk7XG4iXX0=
@@ -1,4 +1,4 @@
1
1
  /**
2
- * Executes a series of npm commands based on the provided manifest file.
2
+ * Executes a series of Impact Framework commands based on the provided manifest file.
3
3
  */
4
4
  export declare const executeCommands: (manifest: string) => Promise<void>;