@grnsft/if 0.6.0-beta.0 → 0.7.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 (354) hide show
  1. package/Refactor-migration-guide.md +68 -82
  2. package/github-processes.md +3 -9
  3. package/manifests/examples/builtins/coefficient/failure-invalid-config-input-param.yml +2 -4
  4. package/manifests/examples/builtins/coefficient/failure-output-param-is-null.yaml +1 -3
  5. package/manifests/examples/builtins/coefficient/success.yml +1 -3
  6. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +1 -2
  7. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +3 -4
  8. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yml +2 -3
  9. package/manifests/examples/builtins/csv-lookup/cloud-metadata/success.yml +1 -2
  10. package/manifests/examples/builtins/csv-lookup/region-metadata/failure-missing-column.yml +1 -1
  11. package/manifests/examples/builtins/csv-lookup/region-metadata/failure-missing-output.yml +2 -2
  12. package/manifests/examples/builtins/csv-lookup/region-metadata/success-renaming.yml +1 -1
  13. package/manifests/examples/builtins/csv-lookup/region-metadata/success.yml +1 -1
  14. package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-missing-input-param.yml +1 -2
  15. package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yml +1 -2
  16. package/manifests/examples/builtins/csv-lookup/tdp-finder/success.yml +1 -2
  17. package/manifests/examples/builtins/divide/failure-invalid-config-denominator.yml +3 -5
  18. package/manifests/examples/builtins/divide/failure-missing-numerator.yml +2 -4
  19. package/manifests/examples/builtins/divide/success.yml +2 -2
  20. package/manifests/examples/builtins/exponent/success.yml +1 -1
  21. package/manifests/examples/builtins/interpolation/success.yml +1 -1
  22. package/manifests/examples/builtins/mock-observations/failure-invalid-config-cpu-range.yml +2 -2
  23. package/manifests/examples/builtins/mock-observations/failure-invalid-memory-utilization-range.yml +1 -1
  24. package/manifests/examples/builtins/mock-observations/failure-missing-timestamp-from-param.yml +1 -1
  25. package/manifests/examples/builtins/mock-observations/success.yml +1 -1
  26. package/manifests/examples/builtins/multiply/failure-input-parameter-is-missing.yml +1 -1
  27. package/manifests/examples/builtins/multiply/success-with-multiple-inputs.yml +1 -1
  28. package/manifests/examples/builtins/multiply/success.yml +1 -1
  29. package/manifests/examples/builtins/regex/failure-missing-input-param.yml +1 -1
  30. package/manifests/examples/builtins/regex/failure-not-matching-with-regex.yml +2 -2
  31. package/manifests/examples/builtins/regex/success.yml +1 -1
  32. package/manifests/examples/builtins/sci/failure-invalid-config-value.yml +3 -4
  33. package/manifests/examples/builtins/sci/failure-missing-input-param.yml +1 -1
  34. package/manifests/examples/builtins/sci/success.yml +1 -1
  35. package/manifests/examples/builtins/sci-embodied/scenario-1.yml +27 -0
  36. package/manifests/examples/builtins/sci-embodied/scenario-2.yml +37 -0
  37. package/manifests/examples/builtins/sci-embodied/success.yml +13 -0
  38. package/manifests/examples/builtins/shell/failure-invalid-command.yml +2 -2
  39. package/manifests/examples/builtins/shell/success.yml +2 -2
  40. package/manifests/examples/builtins/subtract/success.yml +1 -1
  41. package/manifests/examples/builtins/sum/failure-missing-input-param.yml +2 -2
  42. package/manifests/examples/builtins/sum/failure-missing-output-param.yml +2 -2
  43. package/manifests/examples/builtins/sum/success.yml +1 -1
  44. package/manifests/examples/builtins/time-converter/success.yaml +24 -0
  45. package/manifests/examples/builtins/time-sync/failure-config-start-later-end.yml +10 -12
  46. package/manifests/examples/builtins/time-sync/{failure-missing-global-config.yml → failure-missing-config.yml} +3 -8
  47. package/manifests/examples/builtins/time-sync/success.yml +2 -2
  48. package/manifests/examples/features/regroup/failure-missing-cloud-instance-type.yml +1 -1
  49. package/manifests/examples/features/regroup/success.yml +1 -1
  50. package/manifests/examples/pipelines/generics.yml +8 -8
  51. package/manifests/examples/pipelines/instance-metadata.yml +2 -2
  52. package/manifests/examples/pipelines/nesting.yml +75 -33
  53. package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-aggregate.yaml +166 -122
  54. package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-mocks.yaml +130 -70
  55. package/manifests/examples/pipelines/pipeline-teads-sci.yml +15 -15
  56. package/manifests/examples/pipelines/pipeline-with-aggregate.yml +57 -27
  57. package/manifests/examples/pipelines/pipeline-with-mocks.yml +99 -41
  58. package/manifests/examples/pipelines/scenario-3.yml +1 -1
  59. package/manifests/examples/pipelines/scenario-4.yml +5 -5
  60. package/manifests/examples/pipelines/scenario-5.yml +3 -3
  61. package/manifests/examples/pipelines/sci.yml +12 -12
  62. package/manifests/examples/pipelines/teads-curve.yml +10 -10
  63. package/manifests/examples/pipelines/zeros.yml +23 -23
  64. package/manifests/outputs/bugs/aggregation-error-wrong-metric.yaml +40 -40
  65. package/manifests/outputs/bugs/input-error-missing-duration.yaml +1 -1
  66. package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +2 -2
  67. package/manifests/outputs/bugs/pipeline-error-naming-mismatch.yaml +1 -1
  68. package/manifests/outputs/bugs/pipeline-error-uninitialized-plugin.yaml +1 -1
  69. package/manifests/outputs/bugs/pipeline-ordering-error.yaml +6 -6
  70. package/manifests/outputs/builtins/coefficient/failure-invalid-config-input-param.yaml +2 -2
  71. package/manifests/outputs/builtins/coefficient/failure-output-param-is-null.yaml +1 -1
  72. package/manifests/outputs/builtins/coefficient/success.yaml +23 -22
  73. package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +1 -1
  74. package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +76 -0
  75. package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yaml +22 -21
  76. package/manifests/outputs/builtins/csv-lookup/cloud-metadata/success.yaml +1 -1
  77. package/manifests/outputs/builtins/csv-lookup/region-metadata/failure-missing-column.yaml +1 -1
  78. package/manifests/outputs/builtins/csv-lookup/region-metadata/failure-missing-output.yaml +21 -20
  79. package/manifests/outputs/builtins/csv-lookup/region-metadata/success-renaming.yaml +1 -1
  80. package/manifests/outputs/builtins/csv-lookup/region-metadata/success.yaml +1 -1
  81. package/manifests/outputs/builtins/csv-lookup/tdp-finder/failure-missing-input-param.yaml +1 -1
  82. package/manifests/outputs/builtins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yaml +1 -1
  83. package/manifests/outputs/builtins/csv-lookup/tdp-finder/success.yaml +1 -1
  84. package/manifests/outputs/builtins/divide/failure-invalid-config-denominator.yaml +41 -25
  85. package/manifests/outputs/builtins/divide/failure-missing-numerator.yaml +32 -23
  86. package/manifests/outputs/builtins/divide/success-denominator-equal-zero.yaml +2 -2
  87. package/manifests/outputs/builtins/divide/success.yaml +2 -2
  88. package/manifests/outputs/builtins/exponent/success.yaml +1 -1
  89. package/manifests/outputs/builtins/interpolation/interpolation.yaml +1 -1
  90. package/manifests/outputs/builtins/interpolation/success.yaml +1 -1
  91. package/manifests/outputs/builtins/mock-observations/failure-invalid-config-cpu-range.yaml +3 -3
  92. package/manifests/outputs/builtins/mock-observations/failure-invalid-memory-utilization-range.yaml +2 -2
  93. package/manifests/outputs/builtins/mock-observations/failure-missing-timestamp-from-param.yaml +1 -1
  94. package/manifests/outputs/builtins/mock-observations/success.yaml +49 -190
  95. package/manifests/outputs/builtins/multiply/failure-input-parameter-is-missing.yaml +1 -1
  96. package/manifests/outputs/builtins/multiply/success-with-multiple-inputs.yaml +1 -1
  97. package/manifests/outputs/builtins/multiply/success.yaml +1 -1
  98. package/manifests/outputs/builtins/regex/failure-missing-input-param.yaml +1 -1
  99. package/manifests/outputs/builtins/regex/failure-not-matching-with-regex.yaml +72 -0
  100. package/manifests/outputs/builtins/regex/success.yaml +1 -1
  101. package/manifests/outputs/builtins/sci/failure-invalid-config-value.yaml +22 -23
  102. package/manifests/outputs/builtins/sci/failure-missing-input-param.yaml +1 -1
  103. package/manifests/outputs/builtins/sci/success.yaml +1 -1
  104. package/manifests/outputs/builtins/sci-embodied/failure-invalid-default-emission-value.yaml +22 -26
  105. package/manifests/outputs/builtins/sci-embodied/scenario-1.yaml +100 -0
  106. package/manifests/outputs/builtins/sci-embodied/scenario-2.yaml +101 -0
  107. package/manifests/outputs/builtins/sci-embodied/success.yaml +44 -20
  108. package/manifests/outputs/builtins/shell/failure-invalid-command.yaml +2 -2
  109. package/manifests/outputs/builtins/shell/success.yaml +1 -1
  110. package/manifests/outputs/builtins/subtract/success.yaml +1 -1
  111. package/manifests/outputs/builtins/sum/failure-missing-input-param.yaml +2 -2
  112. package/manifests/outputs/builtins/sum/failure-missing-output-param.yaml +2 -2
  113. package/manifests/outputs/builtins/sum/success.yaml +1 -1
  114. package/manifests/outputs/builtins/time-converter/success.yaml +73 -0
  115. package/manifests/outputs/builtins/time-sync/failure-config-start-later-end.yaml +3 -3
  116. package/manifests/outputs/builtins/time-sync/failure-missing-config.yaml +74 -0
  117. package/manifests/outputs/builtins/time-sync/success.yaml +50 -59
  118. package/manifests/outputs/features/aggregate-failure-invalid-metrics.yaml +1 -1
  119. package/manifests/outputs/features/aggregate-failure-missing-metric-in-inputs.yaml +1 -1
  120. package/manifests/outputs/features/aggregate-horizontal.yaml +4 -2
  121. package/manifests/outputs/features/aggregate-vertical.yaml +4 -2
  122. package/manifests/outputs/features/aggregate.yaml +4 -2
  123. package/manifests/outputs/features/regroup/failure-invalid-regroup.yaml +87 -0
  124. package/manifests/outputs/features/regroup/failure-missing-cloud-instance-type.yaml +87 -0
  125. package/manifests/outputs/pipelines/cloud-metadata-divide.yaml +2 -2
  126. package/manifests/outputs/pipelines/generics.yaml +28 -28
  127. package/manifests/outputs/pipelines/instance-metadata.yaml +14 -14
  128. package/manifests/outputs/pipelines/nesting.yaml +713 -486
  129. package/manifests/outputs/pipelines/pipeline-teads-sci.yaml +63 -32
  130. package/manifests/outputs/pipelines/scenario-4.yaml +105 -0
  131. package/manifests/outputs/pipelines/sci.yaml +56 -32
  132. package/manifests/outputs/pipelines/teads-curve.yaml +18 -18
  133. package/manifests/outputs/pipelines/zeros.yaml +27 -27
  134. package/package.json +7 -5
  135. package/src/__mocks__/mock-manifest.yaml +1 -2
  136. package/src/if-env/config/env-template.yml +1 -2
  137. package/src/if-run/builtins/coefficient/README.md +41 -17
  138. package/src/if-run/builtins/copy-param/README.md +28 -8
  139. package/src/if-run/builtins/csv-lookup/README.md +31 -11
  140. package/src/if-run/builtins/divide/README.md +34 -12
  141. package/src/if-run/builtins/exponent/README.md +29 -11
  142. package/src/if-run/builtins/interpolation/README.md +37 -22
  143. package/src/if-run/builtins/mock-observations/README.md +27 -7
  144. package/src/if-run/builtins/multiply/README.md +27 -9
  145. package/src/if-run/builtins/regex/README.md +31 -11
  146. package/src/if-run/builtins/sci/README.md +29 -8
  147. package/src/if-run/builtins/sci-embodied/README.md +76 -75
  148. package/src/if-run/builtins/shell/README.md +15 -7
  149. package/src/if-run/builtins/subtract/README.md +28 -11
  150. package/src/if-run/builtins/sum/README.md +47 -14
  151. package/src/if-run/builtins/time-converter/README.md +136 -0
  152. package/src/if-run/builtins/time-sync/README.md +44 -22
  153. package/.gitmodules +0 -3
  154. package/build/common/config/index.d.ts +0 -1
  155. package/build/common/config/index.js +0 -6
  156. package/build/common/config/strings.d.ts +0 -8
  157. package/build/common/config/strings.js +0 -16
  158. package/build/common/lib/load.d.ts +0 -6
  159. package/build/common/lib/load.js +0 -18
  160. package/build/common/types/manifest.d.ts +0 -13
  161. package/build/common/types/manifest.js +0 -3
  162. package/build/common/util/debug-logger.d.ts +0 -4
  163. package/build/common/util/debug-logger.js +0 -115
  164. package/build/common/util/fs.d.ts +0 -20
  165. package/build/common/util/fs.js +0 -94
  166. package/build/common/util/helpers.d.ts +0 -15
  167. package/build/common/util/helpers.js +0 -80
  168. package/build/common/util/logger.d.ts +0 -5
  169. package/build/common/util/logger.js +0 -39
  170. package/build/common/util/validations.d.ts +0 -367
  171. package/build/common/util/validations.js +0 -141
  172. package/build/common/util/yaml.d.ts +0 -12
  173. package/build/common/util/yaml.js +0 -59
  174. package/build/if-check/config/config.d.ts +0 -6
  175. package/build/if-check/config/config.js +0 -31
  176. package/build/if-check/config/index.d.ts +0 -2
  177. package/build/if-check/config/index.js +0 -8
  178. package/build/if-check/config/strings.d.ts +0 -12
  179. package/build/if-check/config/strings.js +0 -16
  180. package/build/if-check/index.d.ts +0 -2
  181. package/build/if-check/index.js +0 -98
  182. package/build/if-check/types/process-args.d.ts +0 -4
  183. package/build/if-check/types/process-args.js +0 -3
  184. package/build/if-check/util/args.d.ts +0 -10
  185. package/build/if-check/util/args.js +0 -56
  186. package/build/if-check/util/helpers.d.ts +0 -4
  187. package/build/if-check/util/helpers.js +0 -18
  188. package/build/if-check/util/npm.d.ts +0 -4
  189. package/build/if-check/util/npm.js +0 -59
  190. package/build/if-csv/config/config.d.ts +0 -6
  191. package/build/if-csv/config/config.js +0 -37
  192. package/build/if-csv/config/index.d.ts +0 -2
  193. package/build/if-csv/config/index.js +0 -8
  194. package/build/if-csv/config/strings.d.ts +0 -4
  195. package/build/if-csv/config/strings.js +0 -8
  196. package/build/if-csv/index.d.ts +0 -2
  197. package/build/if-csv/index.js +0 -63
  198. package/build/if-csv/types/csv.d.ts +0 -7
  199. package/build/if-csv/types/csv.js +0 -3
  200. package/build/if-csv/types/process-args.d.ts +0 -5
  201. package/build/if-csv/types/process-args.js +0 -3
  202. package/build/if-csv/util/args.d.ts +0 -12
  203. package/build/if-csv/util/args.js +0 -51
  204. package/build/if-csv/util/helpers.d.ts +0 -9
  205. package/build/if-csv/util/helpers.js +0 -95
  206. package/build/if-diff/config/config.d.ts +0 -6
  207. package/build/if-diff/config/config.js +0 -31
  208. package/build/if-diff/config/index.d.ts +0 -2
  209. package/build/if-diff/config/index.js +0 -8
  210. package/build/if-diff/config/strings.d.ts +0 -6
  211. package/build/if-diff/config/strings.js +0 -10
  212. package/build/if-diff/index.d.ts +0 -2
  213. package/build/if-diff/index.js +0 -46
  214. package/build/if-diff/lib/compare.d.ts +0 -10
  215. package/build/if-diff/lib/compare.js +0 -56
  216. package/build/if-diff/lib/load.d.ts +0 -55
  217. package/build/if-diff/lib/load.js +0 -51
  218. package/build/if-diff/types/args.d.ts +0 -5
  219. package/build/if-diff/types/args.js +0 -3
  220. package/build/if-diff/types/compare.d.ts +0 -7
  221. package/build/if-diff/types/compare.js +0 -3
  222. package/build/if-diff/types/process-args.d.ts +0 -4
  223. package/build/if-diff/types/process-args.js +0 -3
  224. package/build/if-diff/util/args.d.ts +0 -5
  225. package/build/if-diff/util/args.js +0 -51
  226. package/build/if-diff/util/helpers.d.ts +0 -13
  227. package/build/if-diff/util/helpers.js +0 -75
  228. package/build/if-env/config/config.d.ts +0 -6
  229. package/build/if-env/config/config.js +0 -37
  230. package/build/if-env/config/index.d.ts +0 -2
  231. package/build/if-env/config/index.js +0 -8
  232. package/build/if-env/config/strings.d.ts +0 -7
  233. package/build/if-env/config/strings.js +0 -11
  234. package/build/if-env/index.d.ts +0 -2
  235. package/build/if-env/index.js +0 -40
  236. package/build/if-env/types/if-env.d.ts +0 -8
  237. package/build/if-env/types/if-env.js +0 -3
  238. package/build/if-env/types/npm.d.ts +0 -9
  239. package/build/if-env/types/npm.js +0 -3
  240. package/build/if-env/types/process-args.d.ts +0 -5
  241. package/build/if-env/types/process-args.js +0 -3
  242. package/build/if-env/util/args.d.ts +0 -12
  243. package/build/if-env/util/args.js +0 -47
  244. package/build/if-env/util/helpers.d.ts +0 -20
  245. package/build/if-env/util/helpers.js +0 -94
  246. package/build/if-env/util/npm.d.ts +0 -24
  247. package/build/if-env/util/npm.js +0 -126
  248. package/build/if-run/builtins/coefficient/index.d.ts +0 -2
  249. package/build/if-run/builtins/coefficient/index.js +0 -67
  250. package/build/if-run/builtins/copy-param/index.d.ts +0 -2
  251. package/build/if-run/builtins/copy-param/index.js +0 -70
  252. package/build/if-run/builtins/csv-lookup/index.d.ts +0 -2
  253. package/build/if-run/builtins/csv-lookup/index.js +0 -190
  254. package/build/if-run/builtins/divide/index.d.ts +0 -2
  255. package/build/if-run/builtins/divide/index.js +0 -80
  256. package/build/if-run/builtins/exponent/index.d.ts +0 -2
  257. package/build/if-run/builtins/exponent/index.js +0 -60
  258. package/build/if-run/builtins/export-log.d.ts +0 -4
  259. package/build/if-run/builtins/export-log.js +0 -44
  260. package/build/if-run/builtins/export-yaml.d.ts +0 -4
  261. package/build/if-run/builtins/export-yaml.js +0 -30
  262. package/build/if-run/builtins/index.d.ts +0 -15
  263. package/build/if-run/builtins/index.js +0 -34
  264. package/build/if-run/builtins/interpolation/index.d.ts +0 -2
  265. package/build/if-run/builtins/interpolation/index.js +0 -151
  266. package/build/if-run/builtins/mock-observations/helpers/common-generator.d.ts +0 -3
  267. package/build/if-run/builtins/mock-observations/helpers/common-generator.js +0 -29
  268. package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.d.ts +0 -3
  269. package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.js +0 -48
  270. package/build/if-run/builtins/mock-observations/index.d.ts +0 -2
  271. package/build/if-run/builtins/mock-observations/index.js +0 -116
  272. package/build/if-run/builtins/mock-observations/interfaces/index.d.ts +0 -6
  273. package/build/if-run/builtins/mock-observations/interfaces/index.js +0 -3
  274. package/build/if-run/builtins/multiply/index.d.ts +0 -2
  275. package/build/if-run/builtins/multiply/index.js +0 -59
  276. package/build/if-run/builtins/regex/index.d.ts +0 -2
  277. package/build/if-run/builtins/regex/index.js +0 -76
  278. package/build/if-run/builtins/sci/config.d.ts +0 -1
  279. package/build/if-run/builtins/sci/config.js +0 -44
  280. package/build/if-run/builtins/sci/index.d.ts +0 -2
  281. package/build/if-run/builtins/sci/index.js +0 -92
  282. package/build/if-run/builtins/sci-embodied/index.d.ts +0 -2
  283. package/build/if-run/builtins/sci-embodied/index.js +0 -156
  284. package/build/if-run/builtins/shell/index.d.ts +0 -2
  285. package/build/if-run/builtins/shell/index.js +0 -60
  286. package/build/if-run/builtins/subtract/index.d.ts +0 -2
  287. package/build/if-run/builtins/subtract/index.js +0 -61
  288. package/build/if-run/builtins/sum/index.d.ts +0 -2
  289. package/build/if-run/builtins/sum/index.js +0 -66
  290. package/build/if-run/builtins/time-sync/index.d.ts +0 -17
  291. package/build/if-run/builtins/time-sync/index.js +0 -339
  292. package/build/if-run/config/config.d.ts +0 -9
  293. package/build/if-run/config/config.js +0 -73
  294. package/build/if-run/config/index.d.ts +0 -2
  295. package/build/if-run/config/index.js +0 -8
  296. package/build/if-run/config/strings.d.ts +0 -64
  297. package/build/if-run/config/strings.js +0 -76
  298. package/build/if-run/index.d.ts +0 -2
  299. package/build/if-run/index.js +0 -63
  300. package/build/if-run/lib/aggregate.d.ts +0 -15
  301. package/build/if-run/lib/aggregate.js +0 -123
  302. package/build/if-run/lib/compute.d.ts +0 -5
  303. package/build/if-run/lib/compute.js +0 -136
  304. package/build/if-run/lib/environment.d.ts +0 -5
  305. package/build/if-run/lib/environment.js +0 -75
  306. package/build/if-run/lib/exhaust.d.ts +0 -7
  307. package/build/if-run/lib/exhaust.js +0 -27
  308. package/build/if-run/lib/explain.d.ts +0 -9
  309. package/build/if-run/lib/explain.js +0 -43
  310. package/build/if-run/lib/initialize.d.ts +0 -6
  311. package/build/if-run/lib/initialize.js +0 -109
  312. package/build/if-run/lib/regroup.d.ts +0 -5
  313. package/build/if-run/lib/regroup.js +0 -64
  314. package/build/if-run/types/aggregation.d.ts +0 -5
  315. package/build/if-run/types/aggregation.js +0 -6
  316. package/build/if-run/types/compute.d.ts +0 -29
  317. package/build/if-run/types/compute.js +0 -3
  318. package/build/if-run/types/environment.d.ts +0 -18
  319. package/build/if-run/types/environment.js +0 -3
  320. package/build/if-run/types/exhaust-plugin-interface.d.ts +0 -7
  321. package/build/if-run/types/exhaust-plugin-interface.js +0 -3
  322. package/build/if-run/types/explain.d.ts +0 -10
  323. package/build/if-run/types/explain.js +0 -3
  324. package/build/if-run/types/interface.d.ts +0 -3
  325. package/build/if-run/types/interface.js +0 -6
  326. package/build/if-run/types/plugin-storage.d.ts +0 -6
  327. package/build/if-run/types/plugin-storage.js +0 -3
  328. package/build/if-run/types/process-args.d.ts +0 -25
  329. package/build/if-run/types/process-args.js +0 -3
  330. package/build/if-run/types/time-sync.d.ts +0 -17
  331. package/build/if-run/types/time-sync.js +0 -3
  332. package/build/if-run/util/aggregation-helper.d.ts +0 -7
  333. package/build/if-run/util/aggregation-helper.js +0 -47
  334. package/build/if-run/util/args.d.ts +0 -9
  335. package/build/if-run/util/args.js +0 -60
  336. package/build/if-run/util/helpers.d.ts +0 -14
  337. package/build/if-run/util/helpers.js +0 -57
  338. package/build/if-run/util/log-memoize.d.ts +0 -3
  339. package/build/if-run/util/log-memoize.js +0 -19
  340. package/build/if-run/util/os-checker.d.ts +0 -7
  341. package/build/if-run/util/os-checker.js +0 -97
  342. package/build/if-run/util/plugin-storage.d.ts +0 -14
  343. package/build/if-run/util/plugin-storage.js +0 -34
  344. package/grafana/IF_GRAFANA_SETUP.md +0 -71
  345. package/grafana/if_grafana_config.json +0 -370
  346. package/manifests/examples/builtins/divide/failure-denominator-equal-zero.yml +0 -38
  347. package/manifests/examples/builtins/interpolation/interpolation.yml +0 -24
  348. package/manifests/examples/builtins/sci-embodied/failure-invalid-default-emission-value.yml +0 -23
  349. package/manifests/examples/builtins/sci-embodied/failure-missing-expected-lifespan.yml +0 -23
  350. package/manifests/examples/pipelines/scenario-1.yml +0 -34
  351. package/manifests/examples/pipelines/scenario-2.yml +0 -52
  352. package/manifests/outputs/bugs/sci-embodied-missing-resources-total.yaml +0 -72
  353. package/manifests/outputs/builtins/sci-embodied/failure-missing-expected-lifespan.yaml +0 -69
  354. package/manifests/outputs/pipelines/mock-obs-time-sync.yaml +0 -449
@@ -1,67 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Coefficient = void 0;
4
- const zod_1 = require("zod");
5
- const utils_1 = require("@grnsft/if-core/utils");
6
- const validations_1 = require("../../../common/util/validations");
7
- const config_1 = require("../../config");
8
- const { GlobalConfigError } = utils_1.ERRORS;
9
- const { MISSING_GLOBAL_CONFIG } = config_1.STRINGS;
10
- const Coefficient = (globalConfig, parametersMetadata) => {
11
- const metadata = {
12
- kind: 'execute',
13
- inputs: parametersMetadata?.inputs,
14
- outputs: parametersMetadata?.outputs,
15
- };
16
- /**
17
- * Calculate the product of each input parameter.
18
- */
19
- const execute = (inputs) => {
20
- const safeGlobalConfig = validateGlobalConfig();
21
- const inputParameter = safeGlobalConfig['input-parameter'];
22
- const outputParameter = safeGlobalConfig['output-parameter'];
23
- const coefficient = safeGlobalConfig['coefficient'];
24
- return inputs.map(input => {
25
- validateSingleInput(input, inputParameter);
26
- return {
27
- ...input,
28
- [outputParameter]: calculateProduct(input, inputParameter, coefficient),
29
- };
30
- });
31
- };
32
- /**
33
- * Checks for required fields in input.
34
- */
35
- const validateSingleInput = (input, inputParameter) => {
36
- const inputData = {
37
- 'input-parameter': input[inputParameter],
38
- };
39
- const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
40
- (0, validations_1.validate)(validationSchema, inputData);
41
- return input;
42
- };
43
- /**
44
- * Calculates the product of the energy components.
45
- */
46
- const calculateProduct = (input, inputParameter, coefficient) => input[inputParameter] * coefficient;
47
- /**
48
- * Checks global config value are valid.
49
- */
50
- const validateGlobalConfig = () => {
51
- if (!globalConfig) {
52
- throw new GlobalConfigError(MISSING_GLOBAL_CONFIG);
53
- }
54
- const globalConfigSchema = zod_1.z.object({
55
- coefficient: zod_1.z.number(),
56
- 'input-parameter': zod_1.z.string().min(1),
57
- 'output-parameter': zod_1.z.string().min(1),
58
- });
59
- return (0, validations_1.validate)(globalConfigSchema, globalConfig);
60
- };
61
- return {
62
- metadata,
63
- execute,
64
- };
65
- };
66
- exports.Coefficient = Coefficient;
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2NvZWZmaWNpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUFzQjtBQUN0QixpREFBNkM7QUFRN0Msa0VBQTBEO0FBRTFELHlDQUFxQztBQUVyQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDbkMsTUFBTSxFQUFDLHFCQUFxQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUVqQyxNQUFNLFdBQVcsR0FBRyxDQUN6QixZQUErQixFQUMvQixrQkFBNEMsRUFDN0IsRUFBRTtJQUNqQixNQUFNLFFBQVEsR0FBRztRQUNmLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE1BQU07UUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU87S0FDckMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFzQixFQUFFLEVBQUU7UUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2hELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0QsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3RCxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVwRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRTNDLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLENBQUMsZUFBZSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUM7YUFDeEUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBbUIsRUFBRSxjQUFzQixFQUFFLEVBQUU7UUFDMUUsTUFBTSxTQUFTLEdBQUc7WUFDaEIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUN6QyxDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFBLHNCQUFRLEVBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFdEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FDdkIsS0FBbUIsRUFDbkIsY0FBc0IsRUFDdEIsV0FBbUIsRUFDbkIsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxXQUFXLENBQUM7SUFFekM7O09BRUc7SUFDSCxNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRTtRQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2xDLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLGlCQUFpQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3RDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBQSxzQkFBUSxFQUNiLGtCQUFrQixFQUNsQixZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE9BQU87UUFDTCxRQUFRO1FBQ1IsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDLENBQUM7QUEzRVcsUUFBQSxXQUFXLGVBMkV0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ29lZmZpY2llbnRDb25maWcsXG4gIEV4ZWN1dGVQbHVnaW4sXG4gIFBsdWdpblBhcmFtZXRlcnNNZXRhZGF0YSxcbiAgUGx1Z2luUGFyYW1zLFxufSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuY29uc3Qge0dsb2JhbENvbmZpZ0Vycm9yfSA9IEVSUk9SUztcbmNvbnN0IHtNSVNTSU5HX0dMT0JBTF9DT05GSUd9ID0gU1RSSU5HUztcblxuZXhwb3J0IGNvbnN0IENvZWZmaWNpZW50ID0gKFxuICBnbG9iYWxDb25maWc6IENvZWZmaWNpZW50Q29uZmlnLFxuICBwYXJhbWV0ZXJzTWV0YWRhdGE6IFBsdWdpblBhcmFtZXRlcnNNZXRhZGF0YVxuKTogRXhlY3V0ZVBsdWdpbiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgIGtpbmQ6ICdleGVjdXRlJyxcbiAgICBpbnB1dHM6IHBhcmFtZXRlcnNNZXRhZGF0YT8uaW5wdXRzLFxuICAgIG91dHB1dHM6IHBhcmFtZXRlcnNNZXRhZGF0YT8ub3V0cHV0cyxcbiAgfTtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlIHRoZSBwcm9kdWN0IG9mIGVhY2ggaW5wdXQgcGFyYW1ldGVyLlxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IChpbnB1dHM6IFBsdWdpblBhcmFtc1tdKSA9PiB7XG4gICAgY29uc3Qgc2FmZUdsb2JhbENvbmZpZyA9IHZhbGlkYXRlR2xvYmFsQ29uZmlnKCk7XG4gICAgY29uc3QgaW5wdXRQYXJhbWV0ZXIgPSBzYWZlR2xvYmFsQ29uZmlnWydpbnB1dC1wYXJhbWV0ZXInXTtcbiAgICBjb25zdCBvdXRwdXRQYXJhbWV0ZXIgPSBzYWZlR2xvYmFsQ29uZmlnWydvdXRwdXQtcGFyYW1ldGVyJ107XG4gICAgY29uc3QgY29lZmZpY2llbnQgPSBzYWZlR2xvYmFsQ29uZmlnWydjb2VmZmljaWVudCddO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoaW5wdXQgPT4ge1xuICAgICAgdmFsaWRhdGVTaW5nbGVJbnB1dChpbnB1dCwgaW5wdXRQYXJhbWV0ZXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgW291dHB1dFBhcmFtZXRlcl06IGNhbGN1bGF0ZVByb2R1Y3QoaW5wdXQsIGlucHV0UGFyYW1ldGVyLCBjb2VmZmljaWVudCksXG4gICAgICB9O1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIHJlcXVpcmVkIGZpZWxkcyBpbiBpbnB1dC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlU2luZ2xlSW5wdXQgPSAoaW5wdXQ6IFBsdWdpblBhcmFtcywgaW5wdXRQYXJhbWV0ZXI6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGlucHV0RGF0YSA9IHtcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXInOiBpbnB1dFtpbnB1dFBhcmFtZXRlcl0sXG4gICAgfTtcbiAgICBjb25zdCB2YWxpZGF0aW9uU2NoZW1hID0gei5yZWNvcmQoei5zdHJpbmcoKSwgei5udW1iZXIoKSk7XG4gICAgdmFsaWRhdGUodmFsaWRhdGlvblNjaGVtYSwgaW5wdXREYXRhKTtcblxuICAgIHJldHVybiBpbnB1dDtcbiAgfTtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgcHJvZHVjdCBvZiB0aGUgZW5lcmd5IGNvbXBvbmVudHMuXG4gICAqL1xuICBjb25zdCBjYWxjdWxhdGVQcm9kdWN0ID0gKFxuICAgIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gICAgaW5wdXRQYXJhbWV0ZXI6IHN0cmluZyxcbiAgICBjb2VmZmljaWVudDogbnVtYmVyXG4gICkgPT4gaW5wdXRbaW5wdXRQYXJhbWV0ZXJdICogY29lZmZpY2llbnQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBnbG9iYWwgY29uZmlnIHZhbHVlIGFyZSB2YWxpZC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgR2xvYmFsQ29uZmlnRXJyb3IoTUlTU0lOR19HTE9CQUxfQ09ORklHKTtcbiAgICB9XG5cbiAgICBjb25zdCBnbG9iYWxDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICBjb2VmZmljaWVudDogei5udW1iZXIoKSxcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXInOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICAgICdvdXRwdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2YgZ2xvYmFsQ29uZmlnU2NoZW1hPj4oXG4gICAgICBnbG9iYWxDb25maWdTY2hlbWEsXG4gICAgICBnbG9iYWxDb25maWdcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbWV0YWRhdGEsXG4gICAgZXhlY3V0ZSxcbiAgfTtcbn07XG4iXX0=
@@ -1,2 +0,0 @@
1
- import { ExecutePlugin, PluginParametersMetadata } from '@grnsft/if-core/types';
2
- export declare const Copy: (globalConfig: Record<string, any>, parametersMetadata: PluginParametersMetadata) => ExecutePlugin;
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Copy = void 0;
4
- const zod_1 = require("zod");
5
- const utils_1 = require("@grnsft/if-core/utils");
6
- const validations_1 = require("../../../common/util/validations");
7
- const config_1 = require("../../config");
8
- const { MISSING_GLOBAL_CONFIG } = config_1.STRINGS;
9
- const { GlobalConfigError } = utils_1.ERRORS;
10
- // keep-existing: true/false (whether to remove the parameter you are copying from)
11
- // from-param: the parameter you are copying from (e.g. cpu/name)
12
- // to-field: the parameter you are copying to (e.g. cpu/processor-name)
13
- const Copy = (globalConfig, parametersMetadata) => {
14
- const metadata = {
15
- kind: 'execute',
16
- inputs: parametersMetadata?.inputs,
17
- outputs: parametersMetadata?.outputs,
18
- };
19
- /**
20
- * Checks global config value are valid.
21
- */
22
- const validateGlobalConfig = () => {
23
- if (!globalConfig) {
24
- throw new GlobalConfigError(MISSING_GLOBAL_CONFIG);
25
- }
26
- const globalConfigSchema = zod_1.z.object({
27
- 'keep-existing': zod_1.z.boolean(),
28
- from: zod_1.z.string().min(1),
29
- to: zod_1.z.string().min(1),
30
- });
31
- return (0, validations_1.validate)(globalConfigSchema, globalConfig);
32
- };
33
- /**
34
- * Checks for required fields in input.
35
- */
36
- const validateSingleInput = (input, inputParameters) => {
37
- const inputData = inputParameters.reduce((acc, param) => {
38
- acc[param] = input[param];
39
- return acc;
40
- }, {});
41
- const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.string());
42
- (0, validations_1.validate)(validationSchema, inputData);
43
- return input;
44
- };
45
- const execute = (inputs) => {
46
- const safeGlobalConfig = validateGlobalConfig();
47
- const keepExisting = safeGlobalConfig['keep-existing'] === true;
48
- const from = safeGlobalConfig['from'];
49
- const to = safeGlobalConfig['to'];
50
- return inputs.map(input => {
51
- const safeInput = validateSingleInput(input, [from]);
52
- const outputValue = safeInput[from];
53
- if (safeInput[from]) {
54
- if (!keepExisting) {
55
- delete safeInput[from];
56
- }
57
- }
58
- return {
59
- ...safeInput,
60
- [to]: outputValue,
61
- };
62
- });
63
- };
64
- return {
65
- metadata,
66
- execute,
67
- };
68
- };
69
- exports.Copy = Copy;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2NvcHktcGFyYW0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXNCO0FBQ3RCLGlEQUE2QztBQU83QyxrRUFBMEQ7QUFFMUQseUNBQXFDO0FBRXJDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFDeEMsTUFBTSxFQUFDLGlCQUFpQixFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQ25DLHFGQUFxRjtBQUNyRixtRUFBbUU7QUFDbkUseUVBQXlFO0FBRWxFLE1BQU0sSUFBSSxHQUFHLENBQ2xCLFlBQWlDLEVBQ2pDLGtCQUE0QyxFQUM3QixFQUFFO0lBQ2pCLE1BQU0sUUFBUSxHQUFHO1FBQ2YsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTTtRQUNsQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTztLQUNyQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRTtRQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2xDLGVBQWUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFO1lBQzVCLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QixFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLHNCQUFRLEVBQ2Isa0JBQWtCLEVBQ2xCLFlBQVksQ0FDYixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQzFCLEtBQW1CLEVBQ25CLGVBQXlCLEVBQ3pCLEVBQUU7UUFDRixNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUN0QyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNiLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFMUIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQ0QsRUFBNEIsQ0FDN0IsQ0FBQztRQUVGLE1BQU0sZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFMUQsSUFBQSxzQkFBUSxFQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXRDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFzQixFQUFFLEVBQUU7UUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksQ0FBQztRQUNoRSxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVyRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ2pCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4QjthQUNGO1lBRUQsT0FBTztnQkFDTCxHQUFHLFNBQVM7Z0JBQ1osQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXO2FBQ2xCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGLE9BQU87UUFDTCxRQUFRO1FBQ1IsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDLENBQUM7QUFoRlcsUUFBQSxJQUFJLFFBZ0ZmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBFeGVjdXRlUGx1Z2luLFxuICBQbHVnaW5QYXJhbWV0ZXJzTWV0YWRhdGEsXG4gIFBsdWdpblBhcmFtcyxcbn0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcblxuaW1wb3J0IHt2YWxpZGF0ZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWwvdmFsaWRhdGlvbnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cbmNvbnN0IHtNSVNTSU5HX0dMT0JBTF9DT05GSUd9ID0gU1RSSU5HUztcbmNvbnN0IHtHbG9iYWxDb25maWdFcnJvcn0gPSBFUlJPUlM7XG4vLyAgIGtlZXAtZXhpc3Rpbmc6IHRydWUvZmFsc2UgKHdoZXRoZXIgdG8gcmVtb3ZlIHRoZSBwYXJhbWV0ZXIgeW91IGFyZSBjb3B5aW5nIGZyb20pXG4vLyAgIGZyb20tcGFyYW06IHRoZSBwYXJhbWV0ZXIgeW91IGFyZSBjb3B5aW5nIGZyb20gKGUuZy4gY3B1L25hbWUpXG4vLyAgIHRvLWZpZWxkOiB0aGUgcGFyYW1ldGVyIHlvdSBhcmUgY29weWluZyB0byAoZS5nLiBjcHUvcHJvY2Vzc29yLW5hbWUpXG5cbmV4cG9ydCBjb25zdCBDb3B5ID0gKFxuICBnbG9iYWxDb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIHBhcmFtZXRlcnNNZXRhZGF0YTogUGx1Z2luUGFyYW1ldGVyc01ldGFkYXRhXG4pOiBFeGVjdXRlUGx1Z2luID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAga2luZDogJ2V4ZWN1dGUnLFxuICAgIGlucHV0czogcGFyYW1ldGVyc01ldGFkYXRhPy5pbnB1dHMsXG4gICAgb3V0cHV0czogcGFyYW1ldGVyc01ldGFkYXRhPy5vdXRwdXRzLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgZ2xvYmFsIGNvbmZpZyB2YWx1ZSBhcmUgdmFsaWQuXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZUdsb2JhbENvbmZpZyA9ICgpID0+IHtcbiAgICBpZiAoIWdsb2JhbENvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEdsb2JhbENvbmZpZ0Vycm9yKE1JU1NJTkdfR0xPQkFMX0NPTkZJRyk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2xvYmFsQ29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICAgICAgJ2tlZXAtZXhpc3RpbmcnOiB6LmJvb2xlYW4oKSxcbiAgICAgIGZyb206IHouc3RyaW5nKCkubWluKDEpLFxuICAgICAgdG86IHouc3RyaW5nKCkubWluKDEpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIGdsb2JhbENvbmZpZ1NjaGVtYT4+KFxuICAgICAgZ2xvYmFsQ29uZmlnU2NoZW1hLFxuICAgICAgZ2xvYmFsQ29uZmlnXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGZvciByZXF1aXJlZCBmaWVsZHMgaW4gaW5wdXQuXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZVNpbmdsZUlucHV0ID0gKFxuICAgIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gICAgaW5wdXRQYXJhbWV0ZXJzOiBzdHJpbmdbXVxuICApID0+IHtcbiAgICBjb25zdCBpbnB1dERhdGEgPSBpbnB1dFBhcmFtZXRlcnMucmVkdWNlKFxuICAgICAgKGFjYywgcGFyYW0pID0+IHtcbiAgICAgICAgYWNjW3BhcmFtXSA9IGlucHV0W3BhcmFtXTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgICApO1xuXG4gICAgY29uc3QgdmFsaWRhdGlvblNjaGVtYSA9IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpO1xuXG4gICAgdmFsaWRhdGUodmFsaWRhdGlvblNjaGVtYSwgaW5wdXREYXRhKTtcblxuICAgIHJldHVybiBpbnB1dDtcbiAgfTtcblxuICBjb25zdCBleGVjdXRlID0gKGlucHV0czogUGx1Z2luUGFyYW1zW10pID0+IHtcbiAgICBjb25zdCBzYWZlR2xvYmFsQ29uZmlnID0gdmFsaWRhdGVHbG9iYWxDb25maWcoKTtcbiAgICBjb25zdCBrZWVwRXhpc3RpbmcgPSBzYWZlR2xvYmFsQ29uZmlnWydrZWVwLWV4aXN0aW5nJ10gPT09IHRydWU7XG4gICAgY29uc3QgZnJvbSA9IHNhZmVHbG9iYWxDb25maWdbJ2Zyb20nXTtcbiAgICBjb25zdCB0byA9IHNhZmVHbG9iYWxDb25maWdbJ3RvJ107XG5cbiAgICByZXR1cm4gaW5wdXRzLm1hcChpbnB1dCA9PiB7XG4gICAgICBjb25zdCBzYWZlSW5wdXQgPSB2YWxpZGF0ZVNpbmdsZUlucHV0KGlucHV0LCBbZnJvbV0pO1xuXG4gICAgICBjb25zdCBvdXRwdXRWYWx1ZSA9IHNhZmVJbnB1dFtmcm9tXTtcbiAgICAgIGlmIChzYWZlSW5wdXRbZnJvbV0pIHtcbiAgICAgICAgaWYgKCFrZWVwRXhpc3RpbmcpIHtcbiAgICAgICAgICBkZWxldGUgc2FmZUlucHV0W2Zyb21dO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnNhZmVJbnB1dCwgLy8gbmVlZCB0byByZXR1cm4gb3Igd2hhdCB5b3UgcHJvdmlkZSB3b24ndCBiZSBvdXRwdXR0ZWQsIGRvbid0IGJlIGV2aWwhXG4gICAgICAgIFt0b106IG91dHB1dFZhbHVlLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG1ldGFkYXRhLFxuICAgIGV4ZWN1dGUsXG4gIH07XG59O1xuIl19
@@ -1,2 +0,0 @@
1
- import { ExecutePlugin, PluginParametersMetadata } from '@grnsft/if-core/types';
2
- export declare const CSVLookup: (globalConfig: any, parametersMetadata: PluginParametersMetadata) => ExecutePlugin;
@@ -1,190 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CSVLookup = void 0;
7
- /* eslint-disable eqeqeq */
8
- const promises_1 = require("fs/promises");
9
- const axios_1 = __importDefault(require("axios"));
10
- const zod_1 = require("zod");
11
- const sync_1 = require("csv-parse/sync");
12
- const utils_1 = require("@grnsft/if-core/utils");
13
- const validations_1 = require("../../../common/util/validations");
14
- const config_1 = require("../../config");
15
- const { FILE_FETCH_FAILED, FILE_READ_FAILED, MISSING_CSV_COLUMN, NO_QUERY_DATA, MISSING_GLOBAL_CONFIG, } = config_1.STRINGS;
16
- const { FetchingFileError, ReadFileError, MissingCSVColumnError, QueryDataNotFoundError, GlobalConfigError, CSVParseError, } = utils_1.ERRORS;
17
- const CSVLookup = (globalConfig, parametersMetadata) => {
18
- const metadata = {
19
- kind: 'execute',
20
- inputs: parametersMetadata?.inputs,
21
- outputs: parametersMetadata?.outputs,
22
- };
23
- /**
24
- * Checks if given string is URL.
25
- */
26
- const isURL = (filepath) => {
27
- try {
28
- new URL(filepath);
29
- return true;
30
- }
31
- catch (error) {
32
- return false;
33
- }
34
- };
35
- /**
36
- * Checks if given `filepath` is url, then tries to fetch it.
37
- * Otherwise tries to read file.
38
- */
39
- const retrieveFile = async (filepath) => {
40
- if (isURL(filepath)) {
41
- const { data } = await axios_1.default.get(filepath).catch(error => {
42
- throw new FetchingFileError(FILE_FETCH_FAILED(filepath, error.response.message));
43
- });
44
- return data;
45
- }
46
- return (0, promises_1.readFile)(filepath).catch(error => {
47
- throw new ReadFileError(FILE_READ_FAILED(filepath, error));
48
- });
49
- };
50
- /**
51
- * Checks if value is invalid: `undefined`, `null` or an empty string, then sets `nan` instead.
52
- */
53
- const setNanValue = (value) => value == null || value === '' ? 'nan' : value;
54
- /**
55
- * Converts empty values to `nan`.
56
- */
57
- const nanifyEmptyValues = (object) => {
58
- if (typeof object === 'object') {
59
- const keys = Object.keys(object);
60
- keys.forEach(key => {
61
- const value = object[key];
62
- object[key] = setNanValue(value);
63
- });
64
- return object;
65
- }
66
- return setNanValue(object);
67
- };
68
- /**
69
- * If `field` is missing from `object`, then reject with error.
70
- * Otherwise nanify empty values and return data.
71
- */
72
- const fieldAccessor = (field, object) => {
73
- if (!(`${field}` in object)) {
74
- throw new MissingCSVColumnError(MISSING_CSV_COLUMN(field));
75
- }
76
- return nanifyEmptyValues(object[field]);
77
- };
78
- /**
79
- * 1. If output is anything, then removes query data from csv record to escape duplicates.
80
- * 2. Otherwise checks if it's a miltidimensional array, then grabs multiple fields ().
81
- * 3. If not, then returns single field.
82
- * 4. In case if it's string, then
83
- */
84
- const filterOutput = (dataFromCSV, params) => {
85
- const { output, query } = params;
86
- if (output === '*') {
87
- const keys = Object.keys(query);
88
- keys.forEach(key => {
89
- delete dataFromCSV[key];
90
- });
91
- return nanifyEmptyValues(dataFromCSV);
92
- }
93
- if (Array.isArray(output)) {
94
- /** Check if it's a multidimensional array. */
95
- if (Array.isArray(output[0])) {
96
- const result = {};
97
- output.forEach(outputField => {
98
- /** Check if there is no renaming request, then export as is */
99
- const outputTitle = outputField[1] || outputField[0];
100
- result[outputTitle] = fieldAccessor(outputField[0], dataFromCSV);
101
- });
102
- return result;
103
- }
104
- const outputTitle = output[1] || output[0];
105
- return {
106
- [outputTitle]: fieldAccessor(output[0], dataFromCSV),
107
- };
108
- }
109
- return {
110
- [output]: fieldAccessor(output, dataFromCSV),
111
- };
112
- };
113
- /**
114
- * Asserts CSV record with query data.
115
- */
116
- const withCriteria = (queryData) => (csvRecord) => {
117
- const ifMatchesCriteria = Object.keys(queryData).map((key) => csvRecord[key] == queryData[key]);
118
- return ifMatchesCriteria.every(value => value === true);
119
- };
120
- /**
121
- * Parses CSV file.
122
- */
123
- const parseCSVFile = (file) => {
124
- try {
125
- const parsedCSV = (0, sync_1.parse)(file, {
126
- columns: true,
127
- skip_empty_lines: true,
128
- cast: true,
129
- });
130
- return parsedCSV;
131
- }
132
- catch (error) {
133
- console.error(error);
134
- throw new CSVParseError(error);
135
- }
136
- };
137
- /**
138
- * 1. Validates global config.
139
- * 2. Tries to retrieve given file (with url or local path).
140
- * 3. Parses given CSV.
141
- * 4. Filters requested information from CSV.
142
- */
143
- const execute = async (inputs) => {
144
- const safeGlobalConfig = validateGlobalConfig();
145
- const { filepath, query, output } = safeGlobalConfig;
146
- const file = await retrieveFile(filepath);
147
- const parsedCSV = parseCSVFile(file);
148
- return inputs.map(input => {
149
- /** Collects query values from input. */
150
- const queryData = {};
151
- const queryKeys = Object.keys(query);
152
- queryKeys.forEach(queryKey => {
153
- const queryValue = query[queryKey];
154
- queryData[queryKey] = input[queryValue];
155
- });
156
- /** Gets related data from CSV. */
157
- const relatedData = parsedCSV.find(withCriteria(queryData));
158
- if (!relatedData) {
159
- throw new QueryDataNotFoundError(NO_QUERY_DATA);
160
- }
161
- return {
162
- ...input,
163
- ...filterOutput(relatedData, { output, query }),
164
- };
165
- });
166
- };
167
- /**
168
- * Checks for `filepath`, `query` and `output` fields in global config.
169
- */
170
- const validateGlobalConfig = () => {
171
- if (!globalConfig) {
172
- throw new GlobalConfigError(MISSING_GLOBAL_CONFIG);
173
- }
174
- const globalConfigSchema = zod_1.z.object({
175
- filepath: zod_1.z.string(),
176
- query: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
177
- output: zod_1.z
178
- .string()
179
- .or(zod_1.z.array(zod_1.z.string()))
180
- .or(zod_1.z.array(zod_1.z.array(zod_1.z.string()))),
181
- });
182
- return (0, validations_1.validate)(globalConfigSchema, globalConfig);
183
- };
184
- return {
185
- metadata,
186
- execute,
187
- };
188
- };
189
- exports.CSVLookup = CSVLookup;
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2Nzdi1sb29rdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkJBQTJCO0FBQzNCLDBDQUFxQztBQUVyQyxrREFBMEI7QUFDMUIsNkJBQXNCO0FBQ3RCLHlDQUFxQztBQUNyQyxpREFBNkM7QUFPN0Msa0VBQTBEO0FBRTFELHlDQUFxQztBQUVyQyxNQUFNLEVBQ0osaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLHFCQUFxQixHQUN0QixHQUFHLGdCQUFPLENBQUM7QUFFWixNQUFNLEVBQ0osaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixhQUFhLEdBQ2QsR0FBRyxjQUFNLENBQUM7QUFFSixNQUFNLFNBQVMsR0FBRyxDQUN2QixZQUFpQixFQUNqQixrQkFBNEMsRUFDN0IsRUFBRTtJQUNqQixNQUFNLFFBQVEsR0FBRztRQUNmLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE1BQU07UUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU87S0FDckMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxLQUFLLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUU7UUFDakMsSUFBSTtZQUNGLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsUUFBZ0IsRUFBRSxFQUFFO1FBQzlDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25CLE1B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QUFLO2dCQUNSLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsQ0FBQzthQUM5QyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsTUFBTSxJQUFJLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDcEQ7UUFFRCxNQUFNLGtCQUFrQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDbEMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7WUFDcEIsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEVBQUUsT0FBQztpQkFDTixNQUFNLEVBQUU7aUJBQ1IsRUFBRSxDQUFDLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7aUJBQ3ZCLEVBQUUsQ0FBQyxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsUUFBUTtRQUNSLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBN05XLFFBQUEsU0FBUyxhQTZOcEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cbmltcG9ydCB7cmVhZEZpbGV9IGZyb20gJ2ZzL3Byb21pc2VzJztcblxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB7cGFyc2V9IGZyb20gJ2Nzdi1wYXJzZS9zeW5jJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgRXhlY3V0ZVBsdWdpbixcbiAgUGx1Z2luUGFyYW1ldGVyc01ldGFkYXRhLFxuICBQbHVnaW5QYXJhbXMsXG59IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7XG4gIEZJTEVfRkVUQ0hfRkFJTEVELFxuICBGSUxFX1JFQURfRkFJTEVELFxuICBNSVNTSU5HX0NTVl9DT0xVTU4sXG4gIE5PX1FVRVJZX0RBVEEsXG4gIE1JU1NJTkdfR0xPQkFMX0NPTkZJRyxcbn0gPSBTVFJJTkdTO1xuXG5jb25zdCB7XG4gIEZldGNoaW5nRmlsZUVycm9yLFxuICBSZWFkRmlsZUVycm9yLFxuICBNaXNzaW5nQ1NWQ29sdW1uRXJyb3IsXG4gIFF1ZXJ5RGF0YU5vdEZvdW5kRXJyb3IsXG4gIEdsb2JhbENvbmZpZ0Vycm9yLFxuICBDU1ZQYXJzZUVycm9yLFxufSA9IEVSUk9SUztcblxuZXhwb3J0IGNvbnN0IENTVkxvb2t1cCA9IChcbiAgZ2xvYmFsQ29uZmlnOiBhbnksXG4gIHBhcmFtZXRlcnNNZXRhZGF0YTogUGx1Z2luUGFyYW1ldGVyc01ldGFkYXRhXG4pOiBFeGVjdXRlUGx1Z2luID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAga2luZDogJ2V4ZWN1dGUnLFxuICAgIGlucHV0czogcGFyYW1ldGVyc01ldGFkYXRhPy5pbnB1dHMsXG4gICAgb3V0cHV0czogcGFyYW1ldGVyc01ldGFkYXRhPy5vdXRwdXRzLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgZ2l2ZW4gc3RyaW5nIGlzIFVSTC5cbiAgICovXG4gIGNvbnN0IGlzVVJMID0gKGZpbGVwYXRoOiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IFVSTChmaWxlcGF0aCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGdpdmVuIGBmaWxlcGF0aGAgaXMgdXJsLCB0aGVuIHRyaWVzIHRvIGZldGNoIGl0LlxuICAgKiBPdGhlcndpc2UgdHJpZXMgdG8gcmVhZCBmaWxlLlxuICAgKi9cbiAgY29uc3QgcmV0cmlldmVGaWxlID0gYXN5bmMgKGZpbGVwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNVUkwoZmlsZXBhdGgpKSB7XG4gICAgICBjb25zdCB7ZGF0YX0gPSBhd2FpdCBheGlvcy5nZXQoZmlsZXBhdGgpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEZldGNoaW5nRmlsZUVycm9yKFxuICAgICAgICAgIEZJTEVfRkVUQ0hfRkFJTEVEKGZpbGVwYXRoLCBlcnJvci5yZXNwb25zZS5tZXNzYWdlKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHJldHVybiByZWFkRmlsZShmaWxlcGF0aCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgdGhyb3cgbmV3IFJlYWRGaWxlRXJyb3IoRklMRV9SRUFEX0ZBSUxFRChmaWxlcGF0aCwgZXJyb3IpKTtcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHZhbHVlIGlzIGludmFsaWQ6IGB1bmRlZmluZWRgLCBgbnVsbGAgb3IgYW4gZW1wdHkgc3RyaW5nLCB0aGVuIHNldHMgYG5hbmAgaW5zdGVhZC5cbiAgICovXG4gIGNvbnN0IHNldE5hblZhbHVlID0gKHZhbHVlOiBhbnkpID0+XG4gICAgdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycgPyAnbmFuJyA6IHZhbHVlO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBlbXB0eSB2YWx1ZXMgdG8gYG5hbmAuXG4gICAqL1xuICBjb25zdCBuYW5pZnlFbXB0eVZhbHVlcyA9IChvYmplY3Q6IGFueSkgPT4ge1xuICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtrZXldO1xuICAgICAgICBvYmplY3Rba2V5XSA9IHNldE5hblZhbHVlKHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIHJldHVybiBzZXROYW5WYWx1ZShvYmplY3QpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJZiBgZmllbGRgIGlzIG1pc3NpbmcgZnJvbSBgb2JqZWN0YCwgdGhlbiByZWplY3Qgd2l0aCBlcnJvci5cbiAgICogT3RoZXJ3aXNlIG5hbmlmeSBlbXB0eSB2YWx1ZXMgYW5kIHJldHVybiBkYXRhLlxuICAgKi9cbiAgY29uc3QgZmllbGRBY2Nlc3NvciA9IChmaWVsZDogc3RyaW5nLCBvYmplY3Q6IGFueSkgPT4ge1xuICAgIGlmICghKGAke2ZpZWxkfWAgaW4gb2JqZWN0KSkge1xuICAgICAgdGhyb3cgbmV3IE1pc3NpbmdDU1ZDb2x1bW5FcnJvcihNSVNTSU5HX0NTVl9DT0xVTU4oZmllbGQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFuaWZ5RW1wdHlWYWx1ZXMob2JqZWN0W2ZpZWxkXSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIDEuIElmIG91dHB1dCBpcyBhbnl0aGluZywgdGhlbiByZW1vdmVzIHF1ZXJ5IGRhdGEgZnJvbSBjc3YgcmVjb3JkIHRvIGVzY2FwZSBkdXBsaWNhdGVzLlxuICAgKiAyLiBPdGhlcndpc2UgY2hlY2tzIGlmIGl0J3MgYSBtaWx0aWRpbWVuc2lvbmFsIGFycmF5LCB0aGVuIGdyYWJzIG11bHRpcGxlIGZpZWxkcyAoKS5cbiAgICogMy4gSWYgbm90LCB0aGVuIHJldHVybnMgc2luZ2xlIGZpZWxkLlxuICAgKiA0LiBJbiBjYXNlIGlmIGl0J3Mgc3RyaW5nLCB0aGVuXG4gICAqL1xuICBjb25zdCBmaWx0ZXJPdXRwdXQgPSAoXG4gICAgZGF0YUZyb21DU1Y6IGFueSxcbiAgICBwYXJhbXM6IHtcbiAgICAgIG91dHB1dDogc3RyaW5nIHwgc3RyaW5nW10gfCBzdHJpbmdbXVtdO1xuICAgICAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgfVxuICApID0+IHtcbiAgICBjb25zdCB7b3V0cHV0LCBxdWVyeX0gPSBwYXJhbXM7XG5cbiAgICBpZiAob3V0cHV0ID09PSAnKicpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhxdWVyeSk7XG5cbiAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBkZWxldGUgZGF0YUZyb21DU1Zba2V5XTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmFuaWZ5RW1wdHlWYWx1ZXMoZGF0YUZyb21DU1YpO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KG91dHB1dCkpIHtcbiAgICAgIC8qKiBDaGVjayBpZiBpdCdzIGEgbXVsdGlkaW1lbnNpb25hbCBhcnJheS4gKi9cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG91dHB1dFswXSkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcblxuICAgICAgICBvdXRwdXQuZm9yRWFjaChvdXRwdXRGaWVsZCA9PiB7XG4gICAgICAgICAgLyoqIENoZWNrIGlmIHRoZXJlIGlzIG5vIHJlbmFtaW5nIHJlcXVlc3QsIHRoZW4gZXhwb3J0IGFzIGlzICovXG4gICAgICAgICAgY29uc3Qgb3V0cHV0VGl0bGUgPSBvdXRwdXRGaWVsZFsxXSB8fCBvdXRwdXRGaWVsZFswXTtcbiAgICAgICAgICByZXN1bHRbb3V0cHV0VGl0bGVdID0gZmllbGRBY2Nlc3NvcihvdXRwdXRGaWVsZFswXSwgZGF0YUZyb21DU1YpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvdXRwdXRUaXRsZSA9IG91dHB1dFsxXSB8fCBvdXRwdXRbMF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtvdXRwdXRUaXRsZSBhcyBzdHJpbmddOiBmaWVsZEFjY2Vzc29yKG91dHB1dFswXSwgZGF0YUZyb21DU1YpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgW291dHB1dF06IGZpZWxkQWNjZXNzb3Iob3V0cHV0LCBkYXRhRnJvbUNTViksXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogQXNzZXJ0cyBDU1YgcmVjb3JkIHdpdGggcXVlcnkgZGF0YS5cbiAgICovXG4gIGNvbnN0IHdpdGhDcml0ZXJpYSA9IChxdWVyeURhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IChjc3ZSZWNvcmQ6IGFueSkgPT4ge1xuICAgIGNvbnN0IGlmTWF0Y2hlc0NyaXRlcmlhID0gT2JqZWN0LmtleXMocXVlcnlEYXRhKS5tYXAoXG4gICAgICAoa2V5OiBzdHJpbmcpID0+IGNzdlJlY29yZFtrZXldID09IHF1ZXJ5RGF0YVtrZXldXG4gICAgKTtcblxuICAgIHJldHVybiBpZk1hdGNoZXNDcml0ZXJpYS5ldmVyeSh2YWx1ZSA9PiB2YWx1ZSA9PT0gdHJ1ZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBDU1YgZmlsZS5cbiAgICovXG4gIGNvbnN0IHBhcnNlQ1NWRmlsZSA9IChmaWxlOiBzdHJpbmcgfCBCdWZmZXIpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkQ1NWOiBhbnlbXSA9IHBhcnNlKGZpbGUsIHtcbiAgICAgICAgY29sdW1uczogdHJ1ZSxcbiAgICAgICAgc2tpcF9lbXB0eV9saW5lczogdHJ1ZSxcbiAgICAgICAgY2FzdDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcGFyc2VkQ1NWO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IENTVlBhcnNlRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogMS4gVmFsaWRhdGVzIGdsb2JhbCBjb25maWcuXG4gICAqIDIuIFRyaWVzIHRvIHJldHJpZXZlIGdpdmVuIGZpbGUgKHdpdGggdXJsIG9yIGxvY2FsIHBhdGgpLlxuICAgKiAzLiBQYXJzZXMgZ2l2ZW4gQ1NWLlxuICAgKiA0LiBGaWx0ZXJzIHJlcXVlc3RlZCBpbmZvcm1hdGlvbiBmcm9tIENTVi5cbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSBhc3luYyAoaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSkgPT4ge1xuICAgIGNvbnN0IHNhZmVHbG9iYWxDb25maWcgPSB2YWxpZGF0ZUdsb2JhbENvbmZpZygpO1xuICAgIGNvbnN0IHtmaWxlcGF0aCwgcXVlcnksIG91dHB1dH0gPSBzYWZlR2xvYmFsQ29uZmlnO1xuXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHJldHJpZXZlRmlsZShmaWxlcGF0aCk7XG4gICAgY29uc3QgcGFyc2VkQ1NWID0gcGFyc2VDU1ZGaWxlKGZpbGUpO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoaW5wdXQgPT4ge1xuICAgICAgLyoqIENvbGxlY3RzIHF1ZXJ5IHZhbHVlcyBmcm9tIGlucHV0LiAqL1xuICAgICAgY29uc3QgcXVlcnlEYXRhOiBhbnkgPSB7fTtcbiAgICAgIGNvbnN0IHF1ZXJ5S2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcbiAgICAgIHF1ZXJ5S2V5cy5mb3JFYWNoKHF1ZXJ5S2V5ID0+IHtcbiAgICAgICAgY29uc3QgcXVlcnlWYWx1ZSA9IHF1ZXJ5W3F1ZXJ5S2V5XTtcbiAgICAgICAgcXVlcnlEYXRhW3F1ZXJ5S2V5XSA9IGlucHV0W3F1ZXJ5VmFsdWVdO1xuICAgICAgfSk7XG5cbiAgICAgIC8qKiBHZXRzIHJlbGF0ZWQgZGF0YSBmcm9tIENTVi4gKi9cbiAgICAgIGNvbnN0IHJlbGF0ZWREYXRhID0gcGFyc2VkQ1NWLmZpbmQod2l0aENyaXRlcmlhKHF1ZXJ5RGF0YSkpO1xuXG4gICAgICBpZiAoIXJlbGF0ZWREYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBRdWVyeURhdGFOb3RGb3VuZEVycm9yKE5PX1FVRVJZX0RBVEEpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgLi4uZmlsdGVyT3V0cHV0KHJlbGF0ZWREYXRhLCB7b3V0cHV0LCBxdWVyeX0pLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGZvciBgZmlsZXBhdGhgLCBgcXVlcnlgIGFuZCBgb3V0cHV0YCBmaWVsZHMgaW4gZ2xvYmFsIGNvbmZpZy5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgR2xvYmFsQ29uZmlnRXJyb3IoTUlTU0lOR19HTE9CQUxfQ09ORklHKTtcbiAgICB9XG5cbiAgICBjb25zdCBnbG9iYWxDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICBmaWxlcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIHF1ZXJ5OiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKSxcbiAgICAgIG91dHB1dDogelxuICAgICAgICAuc3RyaW5nKClcbiAgICAgICAgLm9yKHouYXJyYXkoei5zdHJpbmcoKSkpXG4gICAgICAgIC5vcih6LmFycmF5KHouYXJyYXkoei5zdHJpbmcoKSkpKSxcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBnbG9iYWxDb25maWdTY2hlbWE+PihcbiAgICAgIGdsb2JhbENvbmZpZ1NjaGVtYSxcbiAgICAgIGdsb2JhbENvbmZpZ1xuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBtZXRhZGF0YSxcbiAgICBleGVjdXRlLFxuICB9O1xufTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- import { ExecutePlugin, ConfigParams, PluginParametersMetadata } from '@grnsft/if-core/types';
2
- export declare const Divide: (globalConfig: ConfigParams, parametersMetadata: PluginParametersMetadata) => ExecutePlugin;
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Divide = void 0;
4
- const zod_1 = require("zod");
5
- const utils_1 = require("@grnsft/if-core/utils");
6
- const validations_1 = require("../../../common/util/validations");
7
- const config_1 = require("../../config");
8
- const { GlobalConfigError, MissingInputDataError } = utils_1.ERRORS;
9
- const { MISSING_GLOBAL_CONFIG, MISSING_INPUT_DATA, ZERO_DIVISION } = config_1.STRINGS;
10
- const Divide = (globalConfig, parametersMetadata) => {
11
- const metadata = {
12
- kind: 'execute',
13
- inputs: parametersMetadata?.inputs,
14
- outputs: parametersMetadata?.outputs,
15
- };
16
- /**
17
- * Calculate the division of each input parameter.
18
- */
19
- const execute = (inputs) => {
20
- const safeGlobalConfig = validateGlobalConfig();
21
- const { numerator, denominator, output } = safeGlobalConfig;
22
- return inputs.map((input, index) => {
23
- const safeInput = Object.assign({}, input, validateSingleInput(input, { numerator, denominator }));
24
- return {
25
- ...input,
26
- [output]: calculateDivide(safeInput, index, { numerator, denominator }),
27
- };
28
- });
29
- };
30
- /**
31
- * Checks global config value are valid.
32
- */
33
- const validateGlobalConfig = () => {
34
- if (!globalConfig) {
35
- throw new GlobalConfigError(MISSING_GLOBAL_CONFIG);
36
- }
37
- const schema = zod_1.z.object({
38
- numerator: zod_1.z.string().min(1),
39
- denominator: zod_1.z.string().or(zod_1.z.number()),
40
- output: zod_1.z.string(),
41
- });
42
- return (0, validations_1.validate)(schema, globalConfig);
43
- };
44
- /**
45
- * Checks for required fields in input.
46
- */
47
- const validateSingleInput = (input, params) => {
48
- const { numerator, denominator } = params;
49
- const schema = zod_1.z
50
- .object({
51
- [numerator]: zod_1.z.number(),
52
- [denominator]: zod_1.z.number().optional(),
53
- })
54
- .refine(() => {
55
- if (typeof denominator === 'string' && !input[denominator]) {
56
- throw new MissingInputDataError(MISSING_INPUT_DATA(denominator));
57
- }
58
- return true;
59
- });
60
- return (0, validations_1.validate)(schema, input);
61
- };
62
- /**
63
- * Calculates the division of the given parameter.
64
- */
65
- const calculateDivide = (input, index, params) => {
66
- const { denominator, numerator } = params;
67
- const finalDenominator = input[denominator] || denominator;
68
- if (finalDenominator === 0) {
69
- console.warn(ZERO_DIVISION(exports.Divide.name, index));
70
- return input[numerator];
71
- }
72
- return input[numerator] / finalDenominator;
73
- };
74
- return {
75
- metadata,
76
- execute,
77
- };
78
- };
79
- exports.Divide = Divide;
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2RpdmlkZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFDdEIsaURBQTZDO0FBUTdDLGtFQUEwRDtBQUUxRCx5Q0FBcUM7QUFFckMsTUFBTSxFQUFDLGlCQUFpQixFQUFFLHFCQUFxQixFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQzFELE1BQU0sRUFBQyxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXBFLE1BQU0sTUFBTSxHQUFHLENBQ3BCLFlBQTBCLEVBQzFCLGtCQUE0QyxFQUM3QixFQUFFO0lBQ2pCLE1BQU0sUUFBUSxHQUFHO1FBQ2YsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTTtRQUNsQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTztLQUNyQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQXNCLEVBQUUsRUFBRTtRQUN6QyxNQUFNLGdCQUFnQixHQUFHLG9CQUFvQixFQUFFLENBQUM7UUFDaEQsTUFBTSxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFFMUQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzdCLEVBQUUsRUFDRixLQUFLLEVBQ0wsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQ3JELENBQUM7WUFFRixPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLE1BQU0sQ0FBQyxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDO2FBQ3RFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixNQUFNLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNwRDtRQUVELE1BQU0sTUFBTSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtTQUNuQixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxtQkFBbUIsR0FBRyxDQUMxQixLQUFtQixFQUNuQixNQUdDLEVBQ0QsRUFBRTtRQUNGLE1BQU0sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFDLEdBQUcsTUFBTSxDQUFDO1FBRXhDLE1BQU0sTUFBTSxHQUFHLE9BQUM7YUFDYixNQUFNLENBQUM7WUFDTixDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7WUFDdkIsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1NBQ3JDLENBQUM7YUFDRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzFELE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQ2xFO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sSUFBQSxzQkFBUSxFQUF5QixNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUFtQixFQUNuQixLQUFhLEVBQ2IsTUFHQyxFQUNELEVBQUU7UUFDRixNQUFNLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUN4QyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLENBQUM7UUFFM0QsSUFBSSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7SUFDN0MsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLFFBQVE7UUFDUixPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXRHVyxRQUFBLE1BQU0sVUFzR2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBFeGVjdXRlUGx1Z2luLFxuICBQbHVnaW5QYXJhbXMsXG4gIENvbmZpZ1BhcmFtcyxcbiAgUGx1Z2luUGFyYW1ldGVyc01ldGFkYXRhLFxufSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuY29uc3Qge0dsb2JhbENvbmZpZ0Vycm9yLCBNaXNzaW5nSW5wdXREYXRhRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge01JU1NJTkdfR0xPQkFMX0NPTkZJRywgTUlTU0lOR19JTlBVVF9EQVRBLCBaRVJPX0RJVklTSU9OfSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBEaXZpZGUgPSAoXG4gIGdsb2JhbENvbmZpZzogQ29uZmlnUGFyYW1zLFxuICBwYXJhbWV0ZXJzTWV0YWRhdGE6IFBsdWdpblBhcmFtZXRlcnNNZXRhZGF0YVxuKTogRXhlY3V0ZVBsdWdpbiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgIGtpbmQ6ICdleGVjdXRlJyxcbiAgICBpbnB1dHM6IHBhcmFtZXRlcnNNZXRhZGF0YT8uaW5wdXRzLFxuICAgIG91dHB1dHM6IHBhcmFtZXRlcnNNZXRhZGF0YT8ub3V0cHV0cyxcbiAgfTtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlIHRoZSBkaXZpc2lvbiBvZiBlYWNoIGlucHV0IHBhcmFtZXRlci5cbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSAoaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSkgPT4ge1xuICAgIGNvbnN0IHNhZmVHbG9iYWxDb25maWcgPSB2YWxpZGF0ZUdsb2JhbENvbmZpZygpO1xuICAgIGNvbnN0IHtudW1lcmF0b3IsIGRlbm9taW5hdG9yLCBvdXRwdXR9ID0gc2FmZUdsb2JhbENvbmZpZztcblxuICAgIHJldHVybiBpbnB1dHMubWFwKChpbnB1dCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHNhZmVJbnB1dCA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgdmFsaWRhdGVTaW5nbGVJbnB1dChpbnB1dCwge251bWVyYXRvciwgZGVub21pbmF0b3J9KVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIFtvdXRwdXRdOiBjYWxjdWxhdGVEaXZpZGUoc2FmZUlucHV0LCBpbmRleCwge251bWVyYXRvciwgZGVub21pbmF0b3J9KSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENoZWNrcyBnbG9iYWwgY29uZmlnIHZhbHVlIGFyZSB2YWxpZC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgR2xvYmFsQ29uZmlnRXJyb3IoTUlTU0lOR19HTE9CQUxfQ09ORklHKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICBudW1lcmF0b3I6IHouc3RyaW5nKCkubWluKDEpLFxuICAgICAgZGVub21pbmF0b3I6IHouc3RyaW5nKCkub3Ioei5udW1iZXIoKSksXG4gICAgICBvdXRwdXQ6IHouc3RyaW5nKCksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2Ygc2NoZW1hPj4oc2NoZW1hLCBnbG9iYWxDb25maWcpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIHJlcXVpcmVkIGZpZWxkcyBpbiBpbnB1dC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlU2luZ2xlSW5wdXQgPSAoXG4gICAgaW5wdXQ6IFBsdWdpblBhcmFtcyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIG51bWVyYXRvcjogc3RyaW5nO1xuICAgICAgZGVub21pbmF0b3I6IG51bWJlciB8IHN0cmluZztcbiAgICB9XG4gICkgPT4ge1xuICAgIGNvbnN0IHtudW1lcmF0b3IsIGRlbm9taW5hdG9yfSA9IHBhcmFtcztcblxuICAgIGNvbnN0IHNjaGVtYSA9IHpcbiAgICAgIC5vYmplY3Qoe1xuICAgICAgICBbbnVtZXJhdG9yXTogei5udW1iZXIoKSxcbiAgICAgICAgW2Rlbm9taW5hdG9yXTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgICAgfSlcbiAgICAgIC5yZWZpbmUoKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGRlbm9taW5hdG9yID09PSAnc3RyaW5nJyAmJiAhaW5wdXRbZGVub21pbmF0b3JdKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IE1pc3NpbmdJbnB1dERhdGFFcnJvcihNSVNTSU5HX0lOUFVUX0RBVEEoZGVub21pbmF0b3IpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2Ygc2NoZW1hPj4oc2NoZW1hLCBpbnB1dCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRpdmlzaW9uIG9mIHRoZSBnaXZlbiBwYXJhbWV0ZXIuXG4gICAqL1xuICBjb25zdCBjYWxjdWxhdGVEaXZpZGUgPSAoXG4gICAgaW5wdXQ6IFBsdWdpblBhcmFtcyxcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIHBhcmFtczoge1xuICAgICAgbnVtZXJhdG9yOiBzdHJpbmc7XG4gICAgICBkZW5vbWluYXRvcjogbnVtYmVyIHwgc3RyaW5nO1xuICAgIH1cbiAgKSA9PiB7XG4gICAgY29uc3Qge2Rlbm9taW5hdG9yLCBudW1lcmF0b3J9ID0gcGFyYW1zO1xuICAgIGNvbnN0IGZpbmFsRGVub21pbmF0b3IgPSBpbnB1dFtkZW5vbWluYXRvcl0gfHwgZGVub21pbmF0b3I7XG5cbiAgICBpZiAoZmluYWxEZW5vbWluYXRvciA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKFpFUk9fRElWSVNJT04oRGl2aWRlLm5hbWUsIGluZGV4KSk7XG4gICAgICByZXR1cm4gaW5wdXRbbnVtZXJhdG9yXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRbbnVtZXJhdG9yXSAvIGZpbmFsRGVub21pbmF0b3I7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBtZXRhZGF0YSxcbiAgICBleGVjdXRlLFxuICB9O1xufTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- import { ExecutePlugin, ExponentConfig, PluginParametersMetadata } from '@grnsft/if-core/types';
2
- export declare const Exponent: (globalConfig: ExponentConfig, parametersMetadata: PluginParametersMetadata) => ExecutePlugin;
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Exponent = void 0;
4
- const zod_1 = require("zod");
5
- const validations_1 = require("../../../common/util/validations");
6
- const Exponent = (globalConfig, parametersMetadata) => {
7
- const metadata = {
8
- kind: 'execute',
9
- inputs: parametersMetadata?.inputs,
10
- outputs: parametersMetadata?.outputs,
11
- };
12
- /**
13
- * Checks global config value are valid.
14
- */
15
- const validateGlobalConfig = () => {
16
- const globalConfigSchema = zod_1.z.object({
17
- 'input-parameter': zod_1.z.string().min(1),
18
- exponent: zod_1.z.number(),
19
- 'output-parameter': zod_1.z.string().min(1),
20
- });
21
- return (0, validations_1.validate)(globalConfigSchema, globalConfig);
22
- };
23
- /**
24
- * Checks for required fields in input.
25
- */
26
- const validateSingleInput = (input, inputParameter) => {
27
- const inputData = {
28
- 'input-parameter': input[inputParameter],
29
- };
30
- const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
31
- (0, validations_1.validate)(validationSchema, inputData);
32
- return input;
33
- };
34
- /**
35
- * Calculate the input param raised by to the power of the given exponent.
36
- */
37
- const execute = (inputs) => {
38
- const { 'input-parameter': inputParameter, exponent, 'output-parameter': outputParameter, } = validateGlobalConfig();
39
- return inputs.map(input => {
40
- validateSingleInput(input, inputParameter);
41
- return {
42
- ...input,
43
- [outputParameter]: calculateExponent(input, inputParameter, exponent),
44
- };
45
- });
46
- };
47
- /**
48
- * Calculates the input param raised by the power of a given exponent.
49
- */
50
- const calculateExponent = (input, inputParameter, exponent) => {
51
- const base = input[inputParameter];
52
- return Math.pow(base, exponent);
53
- };
54
- return {
55
- metadata,
56
- execute,
57
- };
58
- };
59
- exports.Exponent = Exponent;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2V4cG9uZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUFzQjtBQVF0QixrRUFBMEQ7QUFFbkQsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsWUFBNEIsRUFDNUIsa0JBQTRDLEVBQzdCLEVBQUU7SUFDakIsTUFBTSxRQUFRLEdBQUc7UUFDZixJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNO1FBQ2xDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPO0tBQ3JDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLE1BQU0sa0JBQWtCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwQyxRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNwQixrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0QyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFtQixFQUFFLGNBQXNCLEVBQUUsRUFBRTtRQUMxRSxNQUFNLFNBQVMsR0FBRztZQUNoQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDO1NBQ3pDLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUEsc0JBQVEsRUFBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV0QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFzQixFQUFrQixFQUFFO1FBQ3pELE1BQU0sRUFDSixpQkFBaUIsRUFBRSxjQUFjLEVBQ2pDLFFBQVEsRUFDUixrQkFBa0IsRUFBRSxlQUFlLEdBQ3BDLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUUzQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRTNDLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLENBQUMsZUFBZSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUM7YUFDdEUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLEtBQW1CLEVBQ25CLGNBQXNCLEVBQ3RCLFFBQWdCLEVBQ2hCLEVBQUU7UUFDRixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsUUFBUTtRQUNSLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBNUVXLFFBQUEsUUFBUSxZQTRFbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5pbXBvcnQge1xuICBFeGVjdXRlUGx1Z2luLFxuICBQbHVnaW5QYXJhbXMsXG4gIEV4cG9uZW50Q29uZmlnLFxuICBQbHVnaW5QYXJhbWV0ZXJzTWV0YWRhdGEsXG59IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuZXhwb3J0IGNvbnN0IEV4cG9uZW50ID0gKFxuICBnbG9iYWxDb25maWc6IEV4cG9uZW50Q29uZmlnLFxuICBwYXJhbWV0ZXJzTWV0YWRhdGE6IFBsdWdpblBhcmFtZXRlcnNNZXRhZGF0YVxuKTogRXhlY3V0ZVBsdWdpbiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgIGtpbmQ6ICdleGVjdXRlJyxcbiAgICBpbnB1dHM6IHBhcmFtZXRlcnNNZXRhZGF0YT8uaW5wdXRzLFxuICAgIG91dHB1dHM6IHBhcmFtZXRlcnNNZXRhZGF0YT8ub3V0cHV0cyxcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGdsb2JhbCBjb25maWcgdmFsdWUgYXJlIHZhbGlkLlxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVHbG9iYWxDb25maWcgPSAoKSA9PiB7XG4gICAgY29uc3QgZ2xvYmFsQ29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICAgICAgJ2lucHV0LXBhcmFtZXRlcic6IHouc3RyaW5nKCkubWluKDEpLFxuICAgICAgZXhwb25lbnQ6IHoubnVtYmVyKCksXG4gICAgICAnb3V0cHV0LXBhcmFtZXRlcic6IHouc3RyaW5nKCkubWluKDEpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIGdsb2JhbENvbmZpZ1NjaGVtYT4+KFxuICAgICAgZ2xvYmFsQ29uZmlnU2NoZW1hLFxuICAgICAgZ2xvYmFsQ29uZmlnXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGZvciByZXF1aXJlZCBmaWVsZHMgaW4gaW5wdXQuXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZVNpbmdsZUlucHV0ID0gKGlucHV0OiBQbHVnaW5QYXJhbXMsIGlucHV0UGFyYW1ldGVyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBpbnB1dERhdGEgPSB7XG4gICAgICAnaW5wdXQtcGFyYW1ldGVyJzogaW5wdXRbaW5wdXRQYXJhbWV0ZXJdLFxuICAgIH07XG4gICAgY29uc3QgdmFsaWRhdGlvblNjaGVtYSA9IHoucmVjb3JkKHouc3RyaW5nKCksIHoubnVtYmVyKCkpO1xuICAgIHZhbGlkYXRlKHZhbGlkYXRpb25TY2hlbWEsIGlucHV0RGF0YSk7XG5cbiAgICByZXR1cm4gaW5wdXQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aGUgaW5wdXQgcGFyYW0gcmFpc2VkIGJ5IHRvIHRoZSBwb3dlciBvZiB0aGUgZ2l2ZW4gZXhwb25lbnQuXG4gICAqL1xuICBjb25zdCBleGVjdXRlID0gKGlucHV0czogUGx1Z2luUGFyYW1zW10pOiBQbHVnaW5QYXJhbXNbXSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgJ2lucHV0LXBhcmFtZXRlcic6IGlucHV0UGFyYW1ldGVyLFxuICAgICAgZXhwb25lbnQsXG4gICAgICAnb3V0cHV0LXBhcmFtZXRlcic6IG91dHB1dFBhcmFtZXRlcixcbiAgICB9ID0gdmFsaWRhdGVHbG9iYWxDb25maWcoKTtcblxuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgIHZhbGlkYXRlU2luZ2xlSW5wdXQoaW5wdXQsIGlucHV0UGFyYW1ldGVyKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIFtvdXRwdXRQYXJhbWV0ZXJdOiBjYWxjdWxhdGVFeHBvbmVudChpbnB1dCwgaW5wdXRQYXJhbWV0ZXIsIGV4cG9uZW50KSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGlucHV0IHBhcmFtIHJhaXNlZCBieSB0aGUgcG93ZXIgb2YgYSBnaXZlbiBleHBvbmVudC5cbiAgICovXG4gIGNvbnN0IGNhbGN1bGF0ZUV4cG9uZW50ID0gKFxuICAgIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gICAgaW5wdXRQYXJhbWV0ZXI6IHN0cmluZyxcbiAgICBleHBvbmVudDogbnVtYmVyXG4gICkgPT4ge1xuICAgIGNvbnN0IGJhc2UgPSBpbnB1dFtpbnB1dFBhcmFtZXRlcl07XG5cbiAgICByZXR1cm4gTWF0aC5wb3coYmFzZSwgZXhwb25lbnQpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbWV0YWRhdGEsXG4gICAgZXhlY3V0ZSxcbiAgfTtcbn07XG4iXX0=
@@ -1,4 +0,0 @@
1
- import { Context } from '../../common/types/manifest';
2
- export declare const ExportLog: () => {
3
- execute: (tree: any, context: Context) => Promise<void>;
4
- };
@@ -1,44 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.ExportLog = void 0;
27
- const YAML = __importStar(require("js-yaml"));
28
- const ExportLog = () => {
29
- /**
30
- * Logs output manifest in console.
31
- */
32
- const execute = async (tree, context) => {
33
- const outputFile = {
34
- ...context,
35
- tree,
36
- };
37
- console.log(`# start
38
- ${YAML.dump(outputFile, { noRefs: true })}
39
- # end`);
40
- };
41
- return { execute };
42
- };
43
- exports.ExportLog = ExportLog;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vYnVpbHRpbnMvZXhwb3J0LWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUFnQztBQUl6QixNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUU7SUFDNUI7O09BRUc7SUFDSCxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBUyxFQUFFLE9BQWdCLEVBQUUsRUFBRTtRQUNwRCxNQUFNLFVBQVUsR0FBRztZQUNqQixHQUFHLE9BQU87WUFDVixJQUFJO1NBQ0wsQ0FBQztRQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUM7RUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQztNQUNqQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7SUFFRixPQUFPLEVBQUMsT0FBTyxFQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBaEJXLFFBQUEsU0FBUyxhQWdCcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBZQU1MIGZyb20gJ2pzLXlhbWwnO1xuXG5pbXBvcnQge0NvbnRleHR9IGZyb20gJy4uLy4uL2NvbW1vbi90eXBlcy9tYW5pZmVzdCc7XG5cbmV4cG9ydCBjb25zdCBFeHBvcnRMb2cgPSAoKSA9PiB7XG4gIC8qKlxuICAgKiBMb2dzIG91dHB1dCBtYW5pZmVzdCBpbiBjb25zb2xlLlxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IGFzeW5jICh0cmVlOiBhbnksIGNvbnRleHQ6IENvbnRleHQpID0+IHtcbiAgICBjb25zdCBvdXRwdXRGaWxlID0ge1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIHRyZWUsXG4gICAgfTtcblxuICAgIGNvbnNvbGUubG9nKGAjIHN0YXJ0XG4ke1lBTUwuZHVtcChvdXRwdXRGaWxlLCB7bm9SZWZzOiB0cnVlfSl9XG4jIGVuZGApO1xuICB9O1xuXG4gIHJldHVybiB7ZXhlY3V0ZX07XG59O1xuIl19
@@ -1,4 +0,0 @@
1
- import { Context } from '../../common/types/manifest';
2
- export declare const ExportYaml: () => {
3
- execute: (tree: any, context: Context, outputPath: string) => Promise<void>;
4
- };