@grnsft/if 0.5.0 → 0.6.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 (469) hide show
  1. package/README.md +5 -17
  2. package/Refactor-migration-guide.md +110 -164
  3. package/build/common/config/index.d.ts +1 -0
  4. package/build/common/config/index.js +6 -0
  5. package/build/common/config/strings.d.ts +9 -0
  6. package/build/common/config/strings.js +17 -0
  7. package/build/common/lib/load.d.ts +6 -0
  8. package/build/common/lib/load.js +18 -0
  9. package/build/{types → common/types}/manifest.d.ts +4 -1
  10. package/build/common/types/manifest.js +3 -0
  11. package/build/common/util/debug-logger.js +115 -0
  12. package/build/common/util/fs.js +94 -0
  13. package/build/common/util/helpers.d.ts +15 -0
  14. package/build/common/util/helpers.js +80 -0
  15. package/build/{util → common/util}/logger.js +1 -1
  16. package/build/{util → common/util}/validations.d.ts +149 -47
  17. package/build/common/util/validations.js +141 -0
  18. package/build/common/util/yaml.js +59 -0
  19. package/build/if-check/config/config.d.ts +6 -0
  20. package/build/if-check/config/config.js +31 -0
  21. package/build/{config → if-check/config}/index.d.ts +0 -1
  22. package/build/if-check/config/index.js +8 -0
  23. package/build/if-check/config/strings.d.ts +11 -0
  24. package/build/if-check/config/strings.js +15 -0
  25. package/build/if-check/index.js +98 -0
  26. package/build/if-check/types/process-args.d.ts +4 -0
  27. package/build/if-check/types/process-args.js +3 -0
  28. package/build/if-check/util/args.d.ts +10 -0
  29. package/build/if-check/util/args.js +56 -0
  30. package/build/if-check/util/helpers.d.ts +4 -0
  31. package/build/if-check/util/helpers.js +18 -0
  32. package/build/if-check/util/npm.d.ts +4 -0
  33. package/build/if-check/util/npm.js +59 -0
  34. package/build/if-csv/config/config.d.ts +6 -0
  35. package/build/if-csv/config/config.js +36 -0
  36. package/build/if-csv/config/index.d.ts +2 -0
  37. package/build/if-csv/config/index.js +8 -0
  38. package/build/if-csv/config/strings.d.ts +3 -0
  39. package/build/if-csv/config/strings.js +7 -0
  40. package/build/if-csv/index.js +63 -0
  41. package/build/if-csv/types/csv.d.ts +7 -0
  42. package/build/if-csv/types/csv.js +3 -0
  43. package/build/if-csv/types/process-args.d.ts +5 -0
  44. package/build/if-csv/types/process-args.js +3 -0
  45. package/build/if-csv/util/args.d.ts +12 -0
  46. package/build/if-csv/util/args.js +47 -0
  47. package/build/if-csv/util/helpers.d.ts +9 -0
  48. package/build/if-csv/util/helpers.js +95 -0
  49. package/build/if-diff/config/config.d.ts +6 -0
  50. package/build/if-diff/config/config.js +31 -0
  51. package/build/if-diff/config/index.d.ts +2 -0
  52. package/build/if-diff/config/index.js +8 -0
  53. package/build/if-diff/config/strings.d.ts +6 -0
  54. package/build/if-diff/config/strings.js +10 -0
  55. package/build/if-diff/index.js +46 -0
  56. package/build/{lib → if-diff/lib}/compare.d.ts +1 -1
  57. package/build/if-diff/lib/compare.js +56 -0
  58. package/build/{lib → if-diff/lib}/load.d.ts +16 -18
  59. package/build/if-diff/lib/load.js +51 -0
  60. package/build/if-diff/types/args.js +3 -0
  61. package/build/if-diff/types/compare.js +3 -0
  62. package/build/if-diff/types/process-args.d.ts +4 -0
  63. package/build/if-diff/types/process-args.js +3 -0
  64. package/build/if-diff/util/args.d.ts +5 -0
  65. package/build/if-diff/util/args.js +51 -0
  66. package/build/if-diff/util/helpers.d.ts +13 -0
  67. package/build/if-diff/util/helpers.js +75 -0
  68. package/build/if-env/config/config.d.ts +6 -0
  69. package/build/if-env/config/config.js +37 -0
  70. package/build/if-env/config/index.d.ts +2 -0
  71. package/build/if-env/config/index.js +8 -0
  72. package/build/if-env/config/strings.d.ts +7 -0
  73. package/build/if-env/config/strings.js +11 -0
  74. package/build/if-env/index.js +40 -0
  75. package/build/if-env/types/if-env.js +3 -0
  76. package/build/if-env/types/npm.js +3 -0
  77. package/build/if-env/types/process-args.d.ts +5 -0
  78. package/build/if-env/types/process-args.js +3 -0
  79. package/build/if-env/util/args.d.ts +12 -0
  80. package/build/if-env/util/args.js +47 -0
  81. package/build/if-env/util/helpers.d.ts +20 -0
  82. package/build/if-env/util/helpers.js +94 -0
  83. package/build/{util → if-env/util}/npm.d.ts +0 -4
  84. package/build/if-env/util/npm.js +126 -0
  85. package/build/if-merge/config/config.d.ts +6 -0
  86. package/build/if-merge/config/config.js +43 -0
  87. package/build/if-merge/config/index.d.ts +2 -0
  88. package/build/if-merge/config/index.js +8 -0
  89. package/build/if-merge/config/strings.d.ts +5 -0
  90. package/build/if-merge/config/strings.js +9 -0
  91. package/build/if-merge/index.d.ts +2 -0
  92. package/build/if-merge/index.js +26 -0
  93. package/build/if-merge/types/process-args.d.ts +6 -0
  94. package/build/if-merge/types/process-args.js +3 -0
  95. package/build/if-merge/util/args.d.ts +9 -0
  96. package/build/if-merge/util/args.js +59 -0
  97. package/build/if-merge/util/helpers.d.ts +5 -0
  98. package/build/if-merge/util/helpers.js +83 -0
  99. package/build/if-run/builtins/coefficient/index.d.ts +2 -0
  100. package/build/if-run/builtins/coefficient/index.js +67 -0
  101. package/build/if-run/builtins/copy-param/index.d.ts +2 -0
  102. package/build/if-run/builtins/copy-param/index.js +70 -0
  103. package/build/if-run/builtins/csv-lookup/index.d.ts +2 -0
  104. package/build/if-run/builtins/csv-lookup/index.js +190 -0
  105. package/build/if-run/builtins/divide/index.d.ts +2 -0
  106. package/build/if-run/builtins/divide/index.js +80 -0
  107. package/build/if-run/builtins/exponent/index.d.ts +2 -0
  108. package/build/if-run/builtins/exponent/index.js +60 -0
  109. package/build/{builtins → if-run/builtins}/export-log.d.ts +1 -1
  110. package/build/{builtins → if-run/builtins}/export-log.js +1 -1
  111. package/build/{builtins → if-run/builtins}/export-yaml.d.ts +1 -1
  112. package/build/if-run/builtins/export-yaml.js +30 -0
  113. package/build/{builtins → if-run/builtins}/index.d.ts +2 -2
  114. package/build/{builtins → if-run/builtins}/index.js +6 -6
  115. package/build/if-run/builtins/interpolation/index.d.ts +2 -0
  116. package/build/if-run/builtins/interpolation/index.js +151 -0
  117. package/build/if-run/builtins/mock-observations/helpers/common-generator.js +29 -0
  118. package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.js +48 -0
  119. package/build/if-run/builtins/mock-observations/index.d.ts +2 -0
  120. package/build/if-run/builtins/mock-observations/index.js +116 -0
  121. package/build/if-run/builtins/mock-observations/interfaces/index.js +3 -0
  122. package/build/if-run/builtins/multiply/index.d.ts +2 -0
  123. package/build/if-run/builtins/multiply/index.js +59 -0
  124. package/build/if-run/builtins/regex/index.d.ts +2 -0
  125. package/build/if-run/builtins/regex/index.js +76 -0
  126. package/build/if-run/builtins/sci/index.d.ts +2 -0
  127. package/build/if-run/builtins/sci/index.js +92 -0
  128. package/build/if-run/builtins/sci-embodied/index.d.ts +2 -0
  129. package/build/if-run/builtins/sci-embodied/index.js +156 -0
  130. package/build/if-run/builtins/shell/index.d.ts +2 -0
  131. package/build/if-run/builtins/shell/index.js +60 -0
  132. package/build/if-run/builtins/subtract/index.d.ts +2 -0
  133. package/build/if-run/builtins/subtract/index.js +61 -0
  134. package/build/if-run/builtins/sum/index.d.ts +2 -0
  135. package/build/if-run/builtins/sum/index.js +66 -0
  136. package/build/if-run/builtins/time-converter/config.js +44 -0
  137. package/build/if-run/builtins/time-converter/index.d.ts +2 -0
  138. package/build/if-run/builtins/time-converter/index.js +79 -0
  139. package/build/if-run/builtins/time-sync/index.d.ts +17 -0
  140. package/build/if-run/builtins/time-sync/index.js +339 -0
  141. package/build/if-run/config/config.d.ts +9 -0
  142. package/build/if-run/config/config.js +73 -0
  143. package/build/if-run/config/index.d.ts +2 -0
  144. package/build/if-run/config/index.js +8 -0
  145. package/build/{config → if-run/config}/strings.d.ts +28 -54
  146. package/build/if-run/config/strings.js +76 -0
  147. package/build/if-run/index.d.ts +2 -0
  148. package/build/if-run/index.js +63 -0
  149. package/build/if-run/lib/aggregate.d.ts +15 -0
  150. package/build/if-run/lib/aggregate.js +123 -0
  151. package/build/if-run/lib/compute.js +142 -0
  152. package/build/{lib → if-run/lib}/environment.d.ts +1 -1
  153. package/build/if-run/lib/environment.js +75 -0
  154. package/build/{lib → if-run/lib}/exhaust.d.ts +1 -1
  155. package/build/if-run/lib/exhaust.js +27 -0
  156. package/build/if-run/lib/explain.d.ts +9 -0
  157. package/build/if-run/lib/explain.js +43 -0
  158. package/build/if-run/lib/initialize.d.ts +6 -0
  159. package/build/if-run/lib/initialize.js +109 -0
  160. package/build/if-run/lib/regroup.d.ts +5 -0
  161. package/build/if-run/lib/regroup.js +64 -0
  162. package/build/if-run/types/aggregation.d.ts +5 -0
  163. package/build/if-run/types/aggregation.js +6 -0
  164. package/build/{types → if-run/types}/compute.d.ts +12 -8
  165. package/build/if-run/types/compute.js +3 -0
  166. package/build/if-run/types/environment.js +3 -0
  167. package/build/{types → if-run/types}/exhaust-plugin-interface.d.ts +1 -1
  168. package/build/if-run/types/exhaust-plugin-interface.js +3 -0
  169. package/build/if-run/types/explain.d.ts +10 -0
  170. package/build/if-run/types/explain.js +3 -0
  171. package/build/if-run/types/interface.d.ts +3 -0
  172. package/build/if-run/types/interface.js +6 -0
  173. package/build/if-run/types/plugin-storage.js +3 -0
  174. package/build/if-run/types/process-args.d.ts +25 -0
  175. package/build/if-run/types/process-args.js +3 -0
  176. package/build/if-run/types/time-sync.js +3 -0
  177. package/build/{util → if-run/util}/aggregation-helper.d.ts +2 -1
  178. package/build/if-run/util/aggregation-helper.js +47 -0
  179. package/build/if-run/util/args.d.ts +9 -0
  180. package/build/if-run/util/args.js +60 -0
  181. package/build/if-run/util/helpers.d.ts +14 -0
  182. package/build/if-run/util/helpers.js +57 -0
  183. package/build/if-run/util/log-memoize.js +19 -0
  184. package/build/if-run/util/os-checker.js +97 -0
  185. package/build/{util → if-run/util}/plugin-storage.d.ts +1 -1
  186. package/build/if-run/util/plugin-storage.js +34 -0
  187. package/jest.config.js +2 -6
  188. package/manifests/examples/builtins/coefficient/failure-invalid-config-input-param.yml +2 -2
  189. package/manifests/examples/builtins/coefficient/failure-output-param-is-null.yaml +3 -3
  190. package/manifests/examples/builtins/coefficient/success.yml +2 -2
  191. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +3 -3
  192. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +3 -3
  193. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yml +3 -3
  194. package/manifests/examples/builtins/csv-lookup/cloud-metadata/success.yml +3 -3
  195. package/manifests/examples/builtins/csv-lookup/region-metadata/failure-missing-column.yml +3 -3
  196. package/manifests/examples/builtins/csv-lookup/region-metadata/failure-missing-output.yml +3 -3
  197. package/manifests/examples/builtins/csv-lookup/region-metadata/success-renaming.yml +4 -4
  198. package/manifests/examples/builtins/csv-lookup/region-metadata/success.yml +3 -3
  199. package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-missing-input-param.yml +2 -2
  200. package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yml +2 -2
  201. package/manifests/examples/builtins/csv-lookup/tdp-finder/success.yml +2 -2
  202. package/manifests/examples/builtins/divide/failure-denominator-equal-zero.yml +4 -4
  203. package/manifests/examples/builtins/divide/failure-invalid-config-denominator.yml +5 -5
  204. package/manifests/examples/builtins/divide/failure-missing-numerator.yml +4 -4
  205. package/manifests/examples/builtins/divide/success.yml +4 -6
  206. package/manifests/examples/builtins/exponent/success.yml +5 -7
  207. package/manifests/examples/builtins/interpolation/interpolation.yml +2 -2
  208. package/manifests/examples/builtins/interpolation/success.yml +2 -1
  209. package/manifests/examples/builtins/mock-observations/failure-invalid-config-cpu-range.yml +2 -2
  210. package/manifests/examples/builtins/mock-observations/failure-invalid-memory-utilization-range.yml +2 -2
  211. package/manifests/examples/builtins/mock-observations/failure-missing-timestamp-from-param.yml +2 -2
  212. package/manifests/examples/builtins/mock-observations/success.yml +2 -2
  213. package/manifests/examples/builtins/multiply/failure-input-parameter-is-missing.yml +2 -4
  214. package/manifests/examples/builtins/multiply/success-with-multiple-inputs.yml +2 -4
  215. package/manifests/examples/builtins/multiply/success.yml +3 -4
  216. package/manifests/examples/builtins/regex/failure-missing-input-param.yml +2 -4
  217. package/manifests/examples/builtins/regex/failure-not-matching-with-regex.yml +2 -4
  218. package/manifests/examples/builtins/regex/success.yml +2 -4
  219. package/manifests/examples/builtins/sci/failure-invalid-config-value.yml +2 -2
  220. package/manifests/examples/builtins/sci/failure-missing-input-param.yml +3 -2
  221. package/manifests/examples/builtins/sci/success.yml +2 -3
  222. package/manifests/examples/builtins/sci-embodied/failure-invalid-default-emission-value.yml +3 -3
  223. package/manifests/examples/builtins/sci-embodied/failure-missing-expected-lifespan.yml +2 -2
  224. package/manifests/examples/builtins/sci-embodied/success.yml +2 -2
  225. package/manifests/examples/builtins/shell/failure-invalid-command.yml +2 -2
  226. package/manifests/examples/builtins/shell/success.yml +2 -1
  227. package/manifests/examples/builtins/subtract/success.yml +6 -8
  228. package/manifests/examples/builtins/sum/failure-missing-input-param.yml +2 -4
  229. package/manifests/examples/builtins/sum/failure-missing-output-param.yml +3 -5
  230. package/manifests/examples/builtins/sum/success.yml +2 -4
  231. package/manifests/examples/builtins/time-converter/success.yaml +24 -0
  232. package/manifests/examples/builtins/time-sync/failure-config-start-later-end.yml +3 -3
  233. package/manifests/examples/builtins/time-sync/failure-missing-global-config.yml +3 -3
  234. package/manifests/examples/builtins/time-sync/success.yml +2 -2
  235. package/manifests/examples/{builtins/groupby/failure-invalid-config-group.yml → features/regroup/failure-invalid-regroup.yml} +4 -11
  236. package/manifests/examples/{builtins/groupby → features/regroup}/failure-missing-cloud-instance-type.yml +5 -12
  237. package/manifests/examples/{builtins/groupby → features/regroup}/success.yml +4 -11
  238. package/manifests/examples/pipelines/generics.yml +12 -13
  239. package/manifests/examples/pipelines/instance-metadata.yml +4 -5
  240. package/manifests/examples/pipelines/nesting.yml +157 -50
  241. package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-aggregate.yaml +997 -0
  242. package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-mocks.yaml +1059 -0
  243. package/manifests/examples/pipelines/pipeline-teads-sci.yml +11 -11
  244. package/manifests/examples/pipelines/pipeline-with-aggregate.yml +114 -37
  245. package/manifests/examples/pipelines/pipeline-with-mocks.yml +193 -103
  246. package/manifests/examples/pipelines/scenario-1.yml +34 -0
  247. package/manifests/examples/pipelines/scenario-2.yml +52 -0
  248. package/manifests/examples/pipelines/scenario-3.yml +86 -0
  249. package/manifests/examples/pipelines/scenario-4.yml +46 -0
  250. package/manifests/examples/pipelines/scenario-5.yml +46 -0
  251. package/manifests/examples/pipelines/sci.yml +15 -17
  252. package/manifests/examples/pipelines/teads-curve.yml +7 -6
  253. package/manifests/examples/pipelines/zeros.yml +15 -16
  254. package/manifests/outputs/bugs/aggregation-error-wrong-metric.yaml +51 -59
  255. package/manifests/outputs/bugs/input-error-missing-duration.yaml +14 -16
  256. package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +14 -16
  257. package/manifests/outputs/bugs/pipeline-error-naming-mismatch.yaml +14 -16
  258. package/manifests/outputs/bugs/pipeline-error-uninitialized-plugin.yaml +15 -17
  259. package/manifests/outputs/bugs/pipeline-ordering-error.yaml +23 -26
  260. package/manifests/outputs/bugs/sci-embodied-missing-resources-total.yaml +13 -14
  261. package/manifests/outputs/{plugins → builtins}/coefficient/failure-invalid-config-input-param.yaml +13 -17
  262. package/manifests/outputs/{plugins → builtins}/coefficient/failure-output-param-is-null.yaml +13 -17
  263. package/manifests/outputs/{plugins → builtins}/coefficient/success.yaml +11 -16
  264. package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +76 -0
  265. package/manifests/outputs/{plugins → builtins}/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yaml +16 -19
  266. package/manifests/outputs/{plugins → builtins}/csv-lookup/cloud-metadata/success.yaml +16 -19
  267. package/manifests/outputs/{plugins → builtins}/csv-lookup/region-metadata/failure-missing-column.yaml +14 -15
  268. package/manifests/outputs/{plugins → builtins}/csv-lookup/region-metadata/failure-missing-output.yaml +13 -15
  269. package/manifests/outputs/{plugins → builtins}/csv-lookup/region-metadata/success-renaming.yaml +13 -15
  270. package/manifests/outputs/{plugins → builtins}/csv-lookup/region-metadata/success.yaml +14 -16
  271. package/manifests/outputs/{plugins → builtins}/csv-lookup/tdp-finder/failure-missing-input-param.yaml +13 -16
  272. package/manifests/outputs/{plugins → builtins}/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yaml +13 -15
  273. package/manifests/outputs/{plugins → builtins}/csv-lookup/tdp-finder/success.yaml +13 -15
  274. package/manifests/outputs/{plugins → builtins}/divide/failure-invalid-config-denominator.yaml +13 -17
  275. package/manifests/outputs/{plugins → builtins}/divide/failure-missing-numerator.yaml +13 -15
  276. package/manifests/outputs/{plugins → builtins}/divide/success-denominator-equal-zero.yaml +14 -18
  277. package/manifests/outputs/{plugins → builtins}/divide/success.yaml +14 -18
  278. package/manifests/outputs/{plugins → builtins}/exponent/success.yaml +13 -17
  279. package/manifests/outputs/{plugins → builtins}/interpolation/interpolation.yaml +14 -16
  280. package/manifests/outputs/{plugins → builtins}/interpolation/success.yaml +14 -16
  281. package/manifests/outputs/{plugins → builtins}/mock-observations/failure-invalid-config-cpu-range.yaml +13 -15
  282. package/manifests/outputs/{plugins → builtins}/mock-observations/failure-invalid-memory-utilization-range.yaml +13 -15
  283. package/manifests/outputs/{plugins → builtins}/mock-observations/failure-missing-timestamp-from-param.yaml +13 -15
  284. package/manifests/outputs/builtins/mock-observations/success.yaml +358 -0
  285. package/manifests/outputs/{plugins → builtins}/multiply/failure-input-parameter-is-missing.yaml +13 -17
  286. package/manifests/outputs/{plugins → builtins}/multiply/success-with-multiple-inputs.yaml +13 -17
  287. package/manifests/outputs/{plugins → builtins}/multiply/success.yaml +13 -17
  288. package/manifests/outputs/{plugins → builtins}/regex/failure-missing-input-param.yaml +13 -17
  289. package/manifests/outputs/{plugins → builtins}/regex/success.yaml +14 -19
  290. package/manifests/outputs/{plugins → builtins}/sci/failure-invalid-config-value.yaml +14 -16
  291. package/manifests/outputs/{plugins → builtins}/sci/failure-missing-input-param.yaml +13 -15
  292. package/manifests/outputs/{plugins/sci/success.yml.yaml → builtins/sci/success.yaml} +13 -16
  293. package/manifests/outputs/{plugins → builtins}/sci-embodied/failure-invalid-default-emission-value.yaml +13 -15
  294. package/manifests/outputs/{plugins → builtins}/sci-embodied/failure-missing-expected-lifespan.yaml +13 -15
  295. package/manifests/outputs/{plugins → builtins}/sci-embodied/success.yaml +13 -15
  296. package/manifests/outputs/{plugins → builtins}/shell/failure-invalid-command.yaml +14 -16
  297. package/manifests/outputs/{plugins → builtins}/shell/success.yaml +14 -16
  298. package/manifests/outputs/{plugins → builtins}/subtract/success.yaml +13 -17
  299. package/manifests/outputs/{plugins → builtins}/sum/failure-missing-input-param.yaml +13 -17
  300. package/manifests/outputs/{plugins → builtins}/sum/failure-missing-output-param.yaml +13 -17
  301. package/manifests/outputs/{plugins → builtins}/sum/success.yaml +13 -17
  302. package/manifests/outputs/{plugins → builtins}/time-sync/failure-config-start-later-end.yaml +20 -23
  303. package/manifests/outputs/{plugins → builtins}/time-sync/success.yaml +38 -35
  304. package/manifests/outputs/features/aggregate-failure-invalid-metrics.yaml +17 -18
  305. package/manifests/outputs/features/aggregate-failure-missing-metric-in-inputs.yaml +17 -18
  306. package/manifests/outputs/features/aggregate-horizontal.yaml +27 -23
  307. package/manifests/outputs/features/aggregate-vertical.yaml +33 -29
  308. package/manifests/outputs/features/aggregate.yaml +33 -29
  309. package/manifests/outputs/{plugins/groupby/failure-invalid-config-group.yaml → features/failure-invalid-regroup.yaml} +16 -25
  310. package/manifests/outputs/{plugins/groupby → features}/failure-missing-cloud-instance-type.yaml +16 -25
  311. package/manifests/outputs/pipelines/cloud-metadata-divide.yaml +14 -18
  312. package/manifests/outputs/pipelines/generics.yaml +239 -0
  313. package/manifests/outputs/pipelines/instance-metadata.yaml +98 -0
  314. package/manifests/outputs/pipelines/mock-obs-time-sync.yaml +246 -147
  315. package/manifests/outputs/pipelines/nesting.yaml +1799 -0
  316. package/manifests/outputs/pipelines/pipeline-teads-sci.yaml +276 -0
  317. package/manifests/outputs/pipelines/sci.yaml +297 -0
  318. package/manifests/outputs/pipelines/teads-curve.yaml +188 -0
  319. package/manifests/outputs/pipelines/zeros.yaml +198 -0
  320. package/package.json +17 -16
  321. package/src/__mocks__/mock-manifest.yaml +2 -3
  322. package/src/{config → if-env/config}/env-template.yml +2 -3
  323. package/src/{builtins → if-run/builtins}/coefficient/README.md +31 -9
  324. package/src/{builtins → if-run/builtins}/copy-param/README.md +30 -11
  325. package/src/{builtins → if-run/builtins}/csv-lookup/README.md +32 -20
  326. package/src/{builtins → if-run/builtins}/divide/README.md +21 -8
  327. package/src/{builtins → if-run/builtins}/exponent/README.md +19 -8
  328. package/src/{builtins → if-run/builtins}/interpolation/README.md +21 -6
  329. package/src/{builtins → if-run/builtins}/mock-observations/README.md +18 -4
  330. package/src/{builtins → if-run/builtins}/multiply/README.md +20 -8
  331. package/src/{builtins → if-run/builtins}/regex/README.md +19 -9
  332. package/src/{builtins → if-run/builtins}/sci/README.md +19 -9
  333. package/src/{builtins → if-run/builtins}/sci-embodied/README.md +17 -5
  334. package/src/{builtins → if-run/builtins}/shell/README.md +19 -7
  335. package/src/{builtins → if-run/builtins}/subtract/README.md +17 -6
  336. package/src/{builtins → if-run/builtins}/sum/README.md +34 -8
  337. package/src/if-run/builtins/time-converter/README.md +136 -0
  338. package/src/if-run/builtins/time-sync/README.md +267 -0
  339. package/build/builtins/coefficient/index.d.ts +0 -2
  340. package/build/builtins/coefficient/index.js +0 -65
  341. package/build/builtins/copy-param/index.d.ts +0 -2
  342. package/build/builtins/copy-param/index.js +0 -68
  343. package/build/builtins/csv-lookup/index.d.ts +0 -2
  344. package/build/builtins/csv-lookup/index.js +0 -188
  345. package/build/builtins/divide/index.d.ts +0 -2
  346. package/build/builtins/divide/index.js +0 -78
  347. package/build/builtins/exponent/index.d.ts +0 -2
  348. package/build/builtins/exponent/index.js +0 -58
  349. package/build/builtins/export-csv-raw.d.ts +0 -4
  350. package/build/builtins/export-csv-raw.js +0 -132
  351. package/build/builtins/export-csv.d.ts +0 -10
  352. package/build/builtins/export-csv.js +0 -96
  353. package/build/builtins/export-yaml.js +0 -30
  354. package/build/builtins/group-by.d.ts +0 -5
  355. package/build/builtins/group-by.js +0 -71
  356. package/build/builtins/interpolation/index.d.ts +0 -2
  357. package/build/builtins/interpolation/index.js +0 -148
  358. package/build/builtins/mock-observations/helpers/common-generator.js +0 -29
  359. package/build/builtins/mock-observations/helpers/rand-int-generator.js +0 -48
  360. package/build/builtins/mock-observations/index.d.ts +0 -2
  361. package/build/builtins/mock-observations/index.js +0 -114
  362. package/build/builtins/mock-observations/interfaces/index.js +0 -3
  363. package/build/builtins/multiply/index.d.ts +0 -2
  364. package/build/builtins/multiply/index.js +0 -57
  365. package/build/builtins/regex/index.d.ts +0 -2
  366. package/build/builtins/regex/index.js +0 -74
  367. package/build/builtins/sci/config.js +0 -44
  368. package/build/builtins/sci/index.d.ts +0 -2
  369. package/build/builtins/sci/index.js +0 -70
  370. package/build/builtins/sci-embodied/index.d.ts +0 -2
  371. package/build/builtins/sci-embodied/index.js +0 -114
  372. package/build/builtins/shell/index.d.ts +0 -2
  373. package/build/builtins/shell/index.js +0 -58
  374. package/build/builtins/subtract/index.d.ts +0 -2
  375. package/build/builtins/subtract/index.js +0 -59
  376. package/build/builtins/sum/index.d.ts +0 -2
  377. package/build/builtins/sum/index.js +0 -64
  378. package/build/builtins/time-sync.d.ts +0 -2
  379. package/build/builtins/time-sync.js +0 -300
  380. package/build/check.js +0 -95
  381. package/build/config/config.d.ts +0 -29
  382. package/build/config/config.js +0 -147
  383. package/build/config/index.js +0 -10
  384. package/build/config/params.d.ts +0 -2
  385. package/build/config/params.js +0 -196
  386. package/build/config/strings.js +0 -105
  387. package/build/diff.js +0 -46
  388. package/build/env.js +0 -38
  389. package/build/index.js +0 -48
  390. package/build/lib/aggregate.d.ts +0 -6
  391. package/build/lib/aggregate.js +0 -77
  392. package/build/lib/compare.js +0 -56
  393. package/build/lib/compute.js +0 -91
  394. package/build/lib/environment.js +0 -75
  395. package/build/lib/exhaust.js +0 -53
  396. package/build/lib/initialize.d.ts +0 -6
  397. package/build/lib/initialize.js +0 -101
  398. package/build/lib/load.js +0 -70
  399. package/build/lib/parameterize.d.ts +0 -6
  400. package/build/lib/parameterize.js +0 -55
  401. package/build/types/aggregation.d.ts +0 -2
  402. package/build/types/aggregation.js +0 -5
  403. package/build/types/compute.js +0 -3
  404. package/build/types/environment.js +0 -3
  405. package/build/types/exhaust-plugin-interface.js +0 -3
  406. package/build/types/if-env.js +0 -3
  407. package/build/types/interface.d.ts +0 -4
  408. package/build/types/interface.js +0 -8
  409. package/build/types/lib/compare.js +0 -3
  410. package/build/types/manifest.js +0 -3
  411. package/build/types/npm.js +0 -3
  412. package/build/types/parameters.d.ts +0 -5
  413. package/build/types/parameters.js +0 -5
  414. package/build/types/plugin-storage.js +0 -3
  415. package/build/types/process-args.d.ts +0 -33
  416. package/build/types/process-args.js +0 -3
  417. package/build/types/time-sync.js +0 -3
  418. package/build/types/util/args.js +0 -3
  419. package/build/util/aggregation-helper.js +0 -55
  420. package/build/util/args.d.ts +0 -37
  421. package/build/util/args.js +0 -205
  422. package/build/util/debug-logger.js +0 -118
  423. package/build/util/fs.js +0 -94
  424. package/build/util/helpers.d.ts +0 -57
  425. package/build/util/helpers.js +0 -251
  426. package/build/util/json.d.ts +0 -4
  427. package/build/util/json.js +0 -36
  428. package/build/util/log-memoize.js +0 -19
  429. package/build/util/npm.js +0 -152
  430. package/build/util/os-checker.js +0 -97
  431. package/build/util/plugin-storage.js +0 -34
  432. package/build/util/validations.js +0 -124
  433. package/build/util/yaml.js +0 -59
  434. package/manifests/outputs/bugs/initialize-error-no-config.yaml +0 -78
  435. package/manifests/outputs/bugs/initialize-error-no-path.yaml +0 -91
  436. package/manifests/outputs/bugs/initialize-error-no-plugins.yaml +0 -74
  437. package/manifests/outputs/divide.yaml +0 -93
  438. package/manifests/outputs/pipelines/mock-obs-group-by-cloud-meta.yaml +0 -645
  439. package/manifests/outputs/pipelines/mock-obs-groupby.yaml +0 -178
  440. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +0 -27
  441. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +0 -27
  442. package/manifests/outputs/plugins/groupby/success.yaml +0 -101
  443. package/manifests/outputs/plugins/mock-observations/success.yaml +0 -220
  444. package/manifests/outputs/plugins/regex/failure-not-matching-with-regex.yaml +0 -76
  445. package/manifests/outputs/plugins/time-sync/failure-missing-global-config.yaml +0 -78
  446. package/src/__tests__/integration/templates/integration.yaml +0 -16
  447. package/src/builtins/README.md +0 -848
  448. /package/build/{util → common/util}/debug-logger.d.ts +0 -0
  449. /package/build/{util → common/util}/fs.d.ts +0 -0
  450. /package/build/{util → common/util}/logger.d.ts +0 -0
  451. /package/build/{util → common/util}/yaml.d.ts +0 -0
  452. /package/build/{index.d.ts → if-check/index.d.ts} +0 -0
  453. /package/build/{check.d.ts → if-csv/index.d.ts} +0 -0
  454. /package/build/{diff.d.ts → if-diff/index.d.ts} +0 -0
  455. /package/build/{types/util → if-diff/types}/args.d.ts +0 -0
  456. /package/build/{types/lib → if-diff/types}/compare.d.ts +0 -0
  457. /package/build/{env.d.ts → if-env/index.d.ts} +0 -0
  458. /package/build/{types → if-env/types}/if-env.d.ts +0 -0
  459. /package/build/{types → if-env/types}/npm.d.ts +0 -0
  460. /package/build/{builtins → if-run/builtins}/mock-observations/helpers/common-generator.d.ts +0 -0
  461. /package/build/{builtins → if-run/builtins}/mock-observations/helpers/rand-int-generator.d.ts +0 -0
  462. /package/build/{builtins → if-run/builtins}/mock-observations/interfaces/index.d.ts +0 -0
  463. /package/build/{builtins/sci → if-run/builtins/time-converter}/config.d.ts +0 -0
  464. /package/build/{lib → if-run/lib}/compute.d.ts +0 -0
  465. /package/build/{types → if-run/types}/environment.d.ts +0 -0
  466. /package/build/{types → if-run/types}/plugin-storage.d.ts +0 -0
  467. /package/build/{types → if-run/types}/time-sync.d.ts +0 -0
  468. /package/build/{util → if-run/util}/log-memoize.d.ts +0 -0
  469. /package/build/{util → if-run/util}/os-checker.d.ts +0 -0
@@ -1,65 +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("../../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) => {
11
- const metadata = {
12
- kind: 'execute',
13
- };
14
- /**
15
- * Calculate the product of each input parameter.
16
- */
17
- const execute = (inputs) => {
18
- const safeGlobalConfig = validateGlobalConfig();
19
- const inputParameter = safeGlobalConfig['input-parameter'];
20
- const outputParameter = safeGlobalConfig['output-parameter'];
21
- const coefficient = safeGlobalConfig['coefficient'];
22
- return inputs.map(input => {
23
- validateSingleInput(input, inputParameter);
24
- return {
25
- ...input,
26
- [outputParameter]: calculateProduct(input, inputParameter, coefficient),
27
- };
28
- });
29
- };
30
- /**
31
- * Checks for required fields in input.
32
- */
33
- const validateSingleInput = (input, inputParameter) => {
34
- const inputData = {
35
- 'input-parameter': input[inputParameter],
36
- };
37
- const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
38
- (0, validations_1.validate)(validationSchema, inputData);
39
- return input;
40
- };
41
- /**
42
- * Calculates the product of the energy components.
43
- */
44
- const calculateProduct = (input, inputParameter, coefficient) => input[inputParameter] * coefficient;
45
- /**
46
- * Checks global config value are valid.
47
- */
48
- const validateGlobalConfig = () => {
49
- if (!globalConfig) {
50
- throw new GlobalConfigError(MISSING_GLOBAL_CONFIG);
51
- }
52
- const globalConfigSchema = zod_1.z.object({
53
- coefficient: zod_1.z.number(),
54
- 'input-parameter': zod_1.z.string().min(1),
55
- 'output-parameter': zod_1.z.string().min(1),
56
- });
57
- return (0, validations_1.validate)(globalConfigSchema, globalConfig);
58
- };
59
- return {
60
- metadata,
61
- execute,
62
- };
63
- };
64
- exports.Coefficient = Coefficient;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvY29lZmZpY2llbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXNCO0FBQ3RCLGlEQUE2QztBQU83Qyx3REFBZ0Q7QUFFaEQseUNBQXFDO0FBRXJDLE1BQU0sRUFBQyxpQkFBaUIsRUFBQyxHQUFHLGNBQU0sQ0FBQztBQUNuQyxNQUFNLEVBQUMscUJBQXFCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRWpDLE1BQU0sV0FBVyxHQUFHLENBQUMsWUFBK0IsRUFBaUIsRUFBRTtJQUM1RSxNQUFNLFFBQVEsR0FBRztRQUNmLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBc0IsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUNoRCxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNELE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztZQUUzQyxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLGVBQWUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDO2FBQ3hFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQW1CLEVBQUUsY0FBc0IsRUFBRSxFQUFFO1FBQzFFLE1BQU0sU0FBUyxHQUFHO1lBQ2hCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUM7U0FDekMsQ0FBQztRQUNGLE1BQU0sZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDMUQsSUFBQSxzQkFBUSxFQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXRDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQ3ZCLEtBQW1CLEVBQ25CLGNBQXNCLEVBQ3RCLFdBQW1CLEVBQ25CLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBRXpDOztPQUVHO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixNQUFNLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNwRDtRQUVELE1BQU0sa0JBQWtCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtZQUN2QixpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwQyxrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0QyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsUUFBUTtRQUNSLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBdEVXLFFBQUEsV0FBVyxlQXNFdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5pbXBvcnQge0VSUk9SU30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gIENvZWZmaWNpZW50Q29uZmlnLFxuICBFeGVjdXRlUGx1Z2luLFxuICBQbHVnaW5QYXJhbXMsXG59IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uL3V0aWwvdmFsaWRhdGlvbnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cbmNvbnN0IHtHbG9iYWxDb25maWdFcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7TUlTU0lOR19HTE9CQUxfQ09ORklHfSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBDb2VmZmljaWVudCA9IChnbG9iYWxDb25maWc6IENvZWZmaWNpZW50Q29uZmlnKTogRXhlY3V0ZVBsdWdpbiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgIGtpbmQ6ICdleGVjdXRlJyxcbiAgfTtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlIHRoZSBwcm9kdWN0IG9mIGVhY2ggaW5wdXQgcGFyYW1ldGVyLlxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IChpbnB1dHM6IFBsdWdpblBhcmFtc1tdKSA9PiB7XG4gICAgY29uc3Qgc2FmZUdsb2JhbENvbmZpZyA9IHZhbGlkYXRlR2xvYmFsQ29uZmlnKCk7XG4gICAgY29uc3QgaW5wdXRQYXJhbWV0ZXIgPSBzYWZlR2xvYmFsQ29uZmlnWydpbnB1dC1wYXJhbWV0ZXInXTtcbiAgICBjb25zdCBvdXRwdXRQYXJhbWV0ZXIgPSBzYWZlR2xvYmFsQ29uZmlnWydvdXRwdXQtcGFyYW1ldGVyJ107XG4gICAgY29uc3QgY29lZmZpY2llbnQgPSBzYWZlR2xvYmFsQ29uZmlnWydjb2VmZmljaWVudCddO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoaW5wdXQgPT4ge1xuICAgICAgdmFsaWRhdGVTaW5nbGVJbnB1dChpbnB1dCwgaW5wdXRQYXJhbWV0ZXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgW291dHB1dFBhcmFtZXRlcl06IGNhbGN1bGF0ZVByb2R1Y3QoaW5wdXQsIGlucHV0UGFyYW1ldGVyLCBjb2VmZmljaWVudCksXG4gICAgICB9O1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIHJlcXVpcmVkIGZpZWxkcyBpbiBpbnB1dC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlU2luZ2xlSW5wdXQgPSAoaW5wdXQ6IFBsdWdpblBhcmFtcywgaW5wdXRQYXJhbWV0ZXI6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGlucHV0RGF0YSA9IHtcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXInOiBpbnB1dFtpbnB1dFBhcmFtZXRlcl0sXG4gICAgfTtcbiAgICBjb25zdCB2YWxpZGF0aW9uU2NoZW1hID0gei5yZWNvcmQoei5zdHJpbmcoKSwgei5udW1iZXIoKSk7XG4gICAgdmFsaWRhdGUodmFsaWRhdGlvblNjaGVtYSwgaW5wdXREYXRhKTtcblxuICAgIHJldHVybiBpbnB1dDtcbiAgfTtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgcHJvZHVjdCBvZiB0aGUgZW5lcmd5IGNvbXBvbmVudHMuXG4gICAqL1xuICBjb25zdCBjYWxjdWxhdGVQcm9kdWN0ID0gKFxuICAgIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gICAgaW5wdXRQYXJhbWV0ZXI6IHN0cmluZyxcbiAgICBjb2VmZmljaWVudDogbnVtYmVyXG4gICkgPT4gaW5wdXRbaW5wdXRQYXJhbWV0ZXJdICogY29lZmZpY2llbnQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBnbG9iYWwgY29uZmlnIHZhbHVlIGFyZSB2YWxpZC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgR2xvYmFsQ29uZmlnRXJyb3IoTUlTU0lOR19HTE9CQUxfQ09ORklHKTtcbiAgICB9XG5cbiAgICBjb25zdCBnbG9iYWxDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICBjb2VmZmljaWVudDogei5udW1iZXIoKSxcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXInOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICAgICdvdXRwdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2YgZ2xvYmFsQ29uZmlnU2NoZW1hPj4oXG4gICAgICBnbG9iYWxDb25maWdTY2hlbWEsXG4gICAgICBnbG9iYWxDb25maWdcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbWV0YWRhdGEsXG4gICAgZXhlY3V0ZSxcbiAgfTtcbn07XG4iXX0=
@@ -1,2 +0,0 @@
1
- import { ExecutePlugin } from '@grnsft/if-core/types';
2
- export declare const Copy: (globalConfig: Record<string, any>) => ExecutePlugin;
@@ -1,68 +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("../../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) => {
14
- const metadata = {
15
- kind: 'execute',
16
- };
17
- /**
18
- * Checks global config value are valid.
19
- */
20
- const validateGlobalConfig = () => {
21
- if (!globalConfig) {
22
- throw new GlobalConfigError(MISSING_GLOBAL_CONFIG);
23
- }
24
- const globalConfigSchema = zod_1.z.object({
25
- 'keep-existing': zod_1.z.boolean(),
26
- from: zod_1.z.string().min(1),
27
- to: zod_1.z.string().min(1),
28
- });
29
- return (0, validations_1.validate)(globalConfigSchema, globalConfig);
30
- };
31
- /**
32
- * Checks for required fields in input.
33
- */
34
- const validateSingleInput = (input, inputParameters) => {
35
- const inputData = inputParameters.reduce((acc, param) => {
36
- acc[param] = input[param];
37
- return acc;
38
- }, {});
39
- const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.string());
40
- (0, validations_1.validate)(validationSchema, inputData);
41
- return input;
42
- };
43
- const execute = (inputs) => {
44
- const safeGlobalConfig = validateGlobalConfig();
45
- const keepExisting = safeGlobalConfig['keep-existing'] === true;
46
- const from = safeGlobalConfig['from'];
47
- const to = safeGlobalConfig['to'];
48
- return inputs.map(input => {
49
- const safeInput = validateSingleInput(input, [from]);
50
- const outputValue = safeInput[from];
51
- if (safeInput[from]) {
52
- if (!keepExisting) {
53
- delete safeInput[from];
54
- }
55
- }
56
- return {
57
- ...safeInput,
58
- [to]: outputValue,
59
- };
60
- });
61
- };
62
- return {
63
- metadata,
64
- execute,
65
- };
66
- };
67
- exports.Copy = Copy;
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvY29weS1wYXJhbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFDdEIsaURBQTZDO0FBRzdDLHdEQUFnRDtBQUVoRCx5Q0FBcUM7QUFFckMsTUFBTSxFQUFDLHFCQUFxQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUN4QyxNQUFNLEVBQUMsaUJBQWlCLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDbkMscUZBQXFGO0FBQ3JGLG1FQUFtRTtBQUNuRSx5RUFBeUU7QUFFbEUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxZQUFpQyxFQUFpQixFQUFFO0lBQ3ZFLE1BQU0sUUFBUSxHQUFHO1FBQ2YsSUFBSSxFQUFFLFNBQVM7S0FDaEIsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixNQUFNLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNwRDtRQUVELE1BQU0sa0JBQWtCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxlQUFlLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRTtZQUM1QixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3RCLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBQSxzQkFBUSxFQUNiLGtCQUFrQixFQUNsQixZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxtQkFBbUIsR0FBRyxDQUMxQixLQUFtQixFQUNuQixlQUF5QixFQUN6QixFQUFFO1FBQ0YsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FDdEMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDYixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUNELEVBQTRCLENBQzdCLENBQUM7UUFFRixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTFELElBQUEsc0JBQVEsRUFBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV0QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBc0IsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDaEUsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsTUFBTSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFckQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuQixJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNqQixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDeEI7YUFDRjtZQUNELE9BQU87Z0JBQ0wsR0FBRyxTQUFTO2dCQUNaLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVzthQUNsQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsUUFBUTtRQUNSLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBMUVXLFFBQUEsSUFBSSxRQTBFZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuaW1wb3J0IHtFeGVjdXRlUGx1Z2luLCBQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uL3V0aWwvdmFsaWRhdGlvbnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cbmNvbnN0IHtNSVNTSU5HX0dMT0JBTF9DT05GSUd9ID0gU1RSSU5HUztcbmNvbnN0IHtHbG9iYWxDb25maWdFcnJvcn0gPSBFUlJPUlM7XG4vLyAgIGtlZXAtZXhpc3Rpbmc6IHRydWUvZmFsc2UgKHdoZXRoZXIgdG8gcmVtb3ZlIHRoZSBwYXJhbWV0ZXIgeW91IGFyZSBjb3B5aW5nIGZyb20pXG4vLyAgIGZyb20tcGFyYW06IHRoZSBwYXJhbWV0ZXIgeW91IGFyZSBjb3B5aW5nIGZyb20gKGUuZy4gY3B1L25hbWUpXG4vLyAgIHRvLWZpZWxkOiB0aGUgcGFyYW1ldGVyIHlvdSBhcmUgY29weWluZyB0byAoZS5nLiBjcHUvcHJvY2Vzc29yLW5hbWUpXG5cbmV4cG9ydCBjb25zdCBDb3B5ID0gKGdsb2JhbENvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pik6IEV4ZWN1dGVQbHVnaW4gPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICBraW5kOiAnZXhlY3V0ZScsXG4gIH07XG5cbiAgLyoqXG4gICAqIENoZWNrcyBnbG9iYWwgY29uZmlnIHZhbHVlIGFyZSB2YWxpZC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgR2xvYmFsQ29uZmlnRXJyb3IoTUlTU0lOR19HTE9CQUxfQ09ORklHKTtcbiAgICB9XG5cbiAgICBjb25zdCBnbG9iYWxDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICAna2VlcC1leGlzdGluZyc6IHouYm9vbGVhbigpLFxuICAgICAgZnJvbTogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICB0bzogei5zdHJpbmcoKS5taW4oMSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2YgZ2xvYmFsQ29uZmlnU2NoZW1hPj4oXG4gICAgICBnbG9iYWxDb25maWdTY2hlbWEsXG4gICAgICBnbG9iYWxDb25maWdcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIHJlcXVpcmVkIGZpZWxkcyBpbiBpbnB1dC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlU2luZ2xlSW5wdXQgPSAoXG4gICAgaW5wdXQ6IFBsdWdpblBhcmFtcyxcbiAgICBpbnB1dFBhcmFtZXRlcnM6IHN0cmluZ1tdXG4gICkgPT4ge1xuICAgIGNvbnN0IGlucHV0RGF0YSA9IGlucHV0UGFyYW1ldGVycy5yZWR1Y2UoXG4gICAgICAoYWNjLCBwYXJhbSkgPT4ge1xuICAgICAgICBhY2NbcGFyYW1dID0gaW5wdXRbcGFyYW1dO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAgICk7XG5cbiAgICBjb25zdCB2YWxpZGF0aW9uU2NoZW1hID0gei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSk7XG5cbiAgICB2YWxpZGF0ZSh2YWxpZGF0aW9uU2NoZW1hLCBpbnB1dERhdGEpO1xuXG4gICAgcmV0dXJuIGlucHV0O1xuICB9O1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSAoaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSkgPT4ge1xuICAgIGNvbnN0IHNhZmVHbG9iYWxDb25maWcgPSB2YWxpZGF0ZUdsb2JhbENvbmZpZygpO1xuICAgIGNvbnN0IGtlZXBFeGlzdGluZyA9IHNhZmVHbG9iYWxDb25maWdbJ2tlZXAtZXhpc3RpbmcnXSA9PT0gdHJ1ZTtcbiAgICBjb25zdCBmcm9tID0gc2FmZUdsb2JhbENvbmZpZ1snZnJvbSddO1xuICAgIGNvbnN0IHRvID0gc2FmZUdsb2JhbENvbmZpZ1sndG8nXTtcblxuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgIGNvbnN0IHNhZmVJbnB1dCA9IHZhbGlkYXRlU2luZ2xlSW5wdXQoaW5wdXQsIFtmcm9tXSk7XG5cbiAgICAgIGNvbnN0IG91dHB1dFZhbHVlID0gc2FmZUlucHV0W2Zyb21dO1xuICAgICAgaWYgKHNhZmVJbnB1dFtmcm9tXSkge1xuICAgICAgICBpZiAoIWtlZXBFeGlzdGluZykge1xuICAgICAgICAgIGRlbGV0ZSBzYWZlSW5wdXRbZnJvbV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnNhZmVJbnB1dCwgLy8gbmVlZCB0byByZXR1cm4gb3Igd2hhdCB5b3UgcHJvdmlkZSB3b24ndCBiZSBvdXRwdXR0ZWQsIGRvbid0IGJlIGV2aWwhXG4gICAgICAgIFt0b106IG91dHB1dFZhbHVlLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG1ldGFkYXRhLFxuICAgIGV4ZWN1dGUsXG4gIH07XG59O1xuIl19
@@ -1,2 +0,0 @@
1
- import { ExecutePlugin } from '@grnsft/if-core/types';
2
- export declare const CSVLookup: (globalConfig: any) => ExecutePlugin;
@@ -1,188 +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("../../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) => {
18
- const metadata = {
19
- kind: 'execute',
20
- };
21
- /**
22
- * Checks if given string is URL.
23
- */
24
- const isURL = (filepath) => {
25
- try {
26
- new URL(filepath);
27
- return true;
28
- }
29
- catch (error) {
30
- return false;
31
- }
32
- };
33
- /**
34
- * Checks if given `filepath` is url, then tries to fetch it.
35
- * Otherwise tries to read file.
36
- */
37
- const retrieveFile = async (filepath) => {
38
- if (isURL(filepath)) {
39
- const { data } = await axios_1.default.get(filepath).catch(error => {
40
- throw new FetchingFileError(FILE_FETCH_FAILED(filepath, error.response.message));
41
- });
42
- return data;
43
- }
44
- return (0, promises_1.readFile)(filepath).catch(error => {
45
- throw new ReadFileError(FILE_READ_FAILED(filepath, error));
46
- });
47
- };
48
- /**
49
- * Checks if value is invalid: `undefined`, `null` or an empty string, then sets `nan` instead.
50
- */
51
- const setNanValue = (value) => value == null || value === '' ? 'nan' : value;
52
- /**
53
- * Converts empty values to `nan`.
54
- */
55
- const nanifyEmptyValues = (object) => {
56
- if (typeof object === 'object') {
57
- const keys = Object.keys(object);
58
- keys.forEach(key => {
59
- const value = object[key];
60
- object[key] = setNanValue(value);
61
- });
62
- return object;
63
- }
64
- return setNanValue(object);
65
- };
66
- /**
67
- * If `field` is missing from `object`, then reject with error.
68
- * Otherwise nanify empty values and return data.
69
- */
70
- const fieldAccessor = (field, object) => {
71
- if (!(`${field}` in object)) {
72
- throw new MissingCSVColumnError(MISSING_CSV_COLUMN(field));
73
- }
74
- return nanifyEmptyValues(object[field]);
75
- };
76
- /**
77
- * 1. If output is anything, then removes query data from csv record to escape duplicates.
78
- * 2. Otherwise checks if it's a miltidimensional array, then grabs multiple fields ().
79
- * 3. If not, then returns single field.
80
- * 4. In case if it's string, then
81
- */
82
- const filterOutput = (dataFromCSV, params) => {
83
- const { output, query } = params;
84
- if (output === '*') {
85
- const keys = Object.keys(query);
86
- keys.forEach(key => {
87
- delete dataFromCSV[key];
88
- });
89
- return nanifyEmptyValues(dataFromCSV);
90
- }
91
- if (Array.isArray(output)) {
92
- /** Check if it's a multidimensional array. */
93
- if (Array.isArray(output[0])) {
94
- const result = {};
95
- output.forEach(outputField => {
96
- /** Check if there is no renaming request, then export as is */
97
- const outputTitle = outputField[1] || outputField[0];
98
- result[outputTitle] = fieldAccessor(outputField[0], dataFromCSV);
99
- });
100
- return result;
101
- }
102
- const outputTitle = output[1] || output[0];
103
- return {
104
- [outputTitle]: fieldAccessor(output[0], dataFromCSV),
105
- };
106
- }
107
- return {
108
- [output]: fieldAccessor(output, dataFromCSV),
109
- };
110
- };
111
- /**
112
- * Asserts CSV record with query data.
113
- */
114
- const withCriteria = (queryData) => (csvRecord) => {
115
- const ifMatchesCriteria = Object.keys(queryData).map((key) => csvRecord[key] == queryData[key]);
116
- return ifMatchesCriteria.every(value => value === true);
117
- };
118
- /**
119
- * Parses CSV file.
120
- */
121
- const parseCSVFile = (file) => {
122
- try {
123
- const parsedCSV = (0, sync_1.parse)(file, {
124
- columns: true,
125
- skip_empty_lines: true,
126
- cast: true,
127
- });
128
- return parsedCSV;
129
- }
130
- catch (error) {
131
- console.error(error);
132
- throw new CSVParseError(error);
133
- }
134
- };
135
- /**
136
- * 1. Validates global config.
137
- * 2. Tries to retrieve given file (with url or local path).
138
- * 3. Parses given CSV.
139
- * 4. Filters requested information from CSV.
140
- */
141
- const execute = async (inputs) => {
142
- const safeGlobalConfig = validateGlobalConfig();
143
- const { filepath, query, output } = safeGlobalConfig;
144
- const file = await retrieveFile(filepath);
145
- const parsedCSV = parseCSVFile(file);
146
- return inputs.map(input => {
147
- /** Collects query values from input. */
148
- const queryData = {};
149
- const queryKeys = Object.keys(query);
150
- queryKeys.forEach(queryKey => {
151
- const queryValue = query[queryKey];
152
- queryData[queryKey] = input[queryValue];
153
- });
154
- /** Gets related data from CSV. */
155
- const relatedData = parsedCSV.find(withCriteria(queryData));
156
- if (!relatedData) {
157
- throw new QueryDataNotFoundError(NO_QUERY_DATA);
158
- }
159
- return {
160
- ...input,
161
- ...filterOutput(relatedData, { output, query }),
162
- };
163
- });
164
- };
165
- /**
166
- * Checks for `filepath`, `query` and `output` fields in global config.
167
- */
168
- const validateGlobalConfig = () => {
169
- if (!globalConfig) {
170
- throw new GlobalConfigError(MISSING_GLOBAL_CONFIG);
171
- }
172
- const globalConfigSchema = zod_1.z.object({
173
- filepath: zod_1.z.string(),
174
- query: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
175
- output: zod_1.z
176
- .string()
177
- .or(zod_1.z.array(zod_1.z.string()))
178
- .or(zod_1.z.array(zod_1.z.array(zod_1.z.string()))),
179
- });
180
- return (0, validations_1.validate)(globalConfigSchema, globalConfig);
181
- };
182
- return {
183
- metadata,
184
- execute,
185
- };
186
- };
187
- exports.CSVLookup = CSVLookup;
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvY3N2LWxvb2t1cC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBMkI7QUFDM0IsMENBQXFDO0FBRXJDLGtEQUEwQjtBQUMxQiw2QkFBc0I7QUFDdEIseUNBQXFDO0FBQ3JDLGlEQUE2QztBQUc3Qyx3REFBZ0Q7QUFFaEQseUNBQXFDO0FBRXJDLE1BQU0sRUFDSixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IscUJBQXFCLEdBQ3RCLEdBQUcsZ0JBQU8sQ0FBQztBQUVaLE1BQU0sRUFDSixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLGFBQWEsR0FDZCxHQUFHLGNBQU0sQ0FBQztBQUVKLE1BQU0sU0FBUyxHQUFHLENBQUMsWUFBaUIsRUFBaUIsRUFBRTtJQUM1RCxNQUFNLFFBQVEsR0FBRztRQUNmLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1FBQ2pDLElBQUk7WUFDRixJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtRQUM5QyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQixNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtn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QyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRTtRQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2xDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3BCLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkMsTUFBTSxFQUFFLE9BQUM7aUJBQ04sTUFBTSxFQUFFO2lCQUNSLEVBQUUsQ0FBQyxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2lCQUN2QixFQUFFLENBQUMsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLHNCQUFRLEVBQ2Isa0JBQWtCLEVBQ2xCLFlBQVksQ0FDYixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLFFBQVE7UUFDUixPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXhOVyxRQUFBLFNBQVMsYUF3TnBCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG5pbXBvcnQge3JlYWRGaWxlfSBmcm9tICdmcy9wcm9taXNlcyc7XG5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5pbXBvcnQge3BhcnNlfSBmcm9tICdjc3YtcGFyc2Uvc3luYyc7XG5pbXBvcnQge0VSUk9SU30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcbmltcG9ydCB7RXhlY3V0ZVBsdWdpbiwgUGx1Z2luUGFyYW1zfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7XG4gIEZJTEVfRkVUQ0hfRkFJTEVELFxuICBGSUxFX1JFQURfRkFJTEVELFxuICBNSVNTSU5HX0NTVl9DT0xVTU4sXG4gIE5PX1FVRVJZX0RBVEEsXG4gIE1JU1NJTkdfR0xPQkFMX0NPTkZJRyxcbn0gPSBTVFJJTkdTO1xuXG5jb25zdCB7XG4gIEZldGNoaW5nRmlsZUVycm9yLFxuICBSZWFkRmlsZUVycm9yLFxuICBNaXNzaW5nQ1NWQ29sdW1uRXJyb3IsXG4gIFF1ZXJ5RGF0YU5vdEZvdW5kRXJyb3IsXG4gIEdsb2JhbENvbmZpZ0Vycm9yLFxuICBDU1ZQYXJzZUVycm9yLFxufSA9IEVSUk9SUztcblxuZXhwb3J0IGNvbnN0IENTVkxvb2t1cCA9IChnbG9iYWxDb25maWc6IGFueSk6IEV4ZWN1dGVQbHVnaW4gPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICBraW5kOiAnZXhlY3V0ZScsXG4gIH07XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBnaXZlbiBzdHJpbmcgaXMgVVJMLlxuICAgKi9cbiAgY29uc3QgaXNVUkwgPSAoZmlsZXBhdGg6IHN0cmluZykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgVVJMKGZpbGVwYXRoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgZ2l2ZW4gYGZpbGVwYXRoYCBpcyB1cmwsIHRoZW4gdHJpZXMgdG8gZmV0Y2ggaXQuXG4gICAqIE90aGVyd2lzZSB0cmllcyB0byByZWFkIGZpbGUuXG4gICAqL1xuICBjb25zdCByZXRyaWV2ZUZpbGUgPSBhc3luYyAoZmlsZXBhdGg6IHN0cmluZykgPT4ge1xuICAgIGlmIChpc1VSTChmaWxlcGF0aCkpIHtcbiAgICAgIGNvbnN0IHtkYXRhfSA9IGF3YWl0IGF4aW9zLmdldChmaWxlcGF0aCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRmV0Y2hpbmdGaWxlRXJyb3IoXG4gICAgICAgICAgRklMRV9GRVRDSF9GQUlMRUQoZmlsZXBhdGgsIGVycm9yLnJlc3BvbnNlLm1lc3NhZ2UpXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlYWRGaWxlKGZpbGVwYXRoKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICB0aHJvdyBuZXcgUmVhZEZpbGVFcnJvcihGSUxFX1JFQURfRkFJTEVEKGZpbGVwYXRoLCBlcnJvcikpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdmFsdWUgaXMgaW52YWxpZDogYHVuZGVmaW5lZGAsIGBudWxsYCBvciBhbiBlbXB0eSBzdHJpbmcsIHRoZW4gc2V0cyBgbmFuYCBpbnN0ZWFkLlxuICAgKi9cbiAgY29uc3Qgc2V0TmFuVmFsdWUgPSAodmFsdWU6IGFueSkgPT5cbiAgICB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJyA/ICduYW4nIDogdmFsdWU7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGVtcHR5IHZhbHVlcyB0byBgbmFuYC5cbiAgICovXG4gIGNvbnN0IG5hbmlmeUVtcHR5VmFsdWVzID0gKG9iamVjdDogYW55KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgICAgIG9iamVjdFtrZXldID0gc2V0TmFuVmFsdWUodmFsdWUpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldE5hblZhbHVlKG9iamVjdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIElmIGBmaWVsZGAgaXMgbWlzc2luZyBmcm9tIGBvYmplY3RgLCB0aGVuIHJlamVjdCB3aXRoIGVycm9yLlxuICAgKiBPdGhlcndpc2UgbmFuaWZ5IGVtcHR5IHZhbHVlcyBhbmQgcmV0dXJuIGRhdGEuXG4gICAqL1xuICBjb25zdCBmaWVsZEFjY2Vzc29yID0gKGZpZWxkOiBzdHJpbmcsIG9iamVjdDogYW55KSA9PiB7XG4gICAgaWYgKCEoYCR7ZmllbGR9YCBpbiBvYmplY3QpKSB7XG4gICAgICB0aHJvdyBuZXcgTWlzc2luZ0NTVkNvbHVtbkVycm9yKE1JU1NJTkdfQ1NWX0NPTFVNTihmaWVsZCkpO1xuICAgIH1cblxuICAgIHJldHVybiBuYW5pZnlFbXB0eVZhbHVlcyhvYmplY3RbZmllbGRdKTtcbiAgfTtcblxuICAvKipcbiAgICogMS4gSWYgb3V0cHV0IGlzIGFueXRoaW5nLCB0aGVuIHJlbW92ZXMgcXVlcnkgZGF0YSBmcm9tIGNzdiByZWNvcmQgdG8gZXNjYXBlIGR1cGxpY2F0ZXMuXG4gICAqIDIuIE90aGVyd2lzZSBjaGVja3MgaWYgaXQncyBhIG1pbHRpZGltZW5zaW9uYWwgYXJyYXksIHRoZW4gZ3JhYnMgbXVsdGlwbGUgZmllbGRzICgpLlxuICAgKiAzLiBJZiBub3QsIHRoZW4gcmV0dXJucyBzaW5nbGUgZmllbGQuXG4gICAqIDQuIEluIGNhc2UgaWYgaXQncyBzdHJpbmcsIHRoZW5cbiAgICovXG4gIGNvbnN0IGZpbHRlck91dHB1dCA9IChcbiAgICBkYXRhRnJvbUNTVjogYW55LFxuICAgIHBhcmFtczoge1xuICAgICAgb3V0cHV0OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHN0cmluZ1tdW107XG4gICAgICBxdWVyeTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB9XG4gICkgPT4ge1xuICAgIGNvbnN0IHtvdXRwdXQsIHF1ZXJ5fSA9IHBhcmFtcztcblxuICAgIGlmIChvdXRwdXQgPT09ICcqJykge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcblxuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGRlbGV0ZSBkYXRhRnJvbUNTVltrZXldO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBuYW5pZnlFbXB0eVZhbHVlcyhkYXRhRnJvbUNTVik7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkob3V0cHV0KSkge1xuICAgICAgLyoqIENoZWNrIGlmIGl0J3MgYSBtdWx0aWRpbWVuc2lvbmFsIGFycmF5LiAqL1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3V0cHV0WzBdKSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHt9O1xuXG4gICAgICAgIG91dHB1dC5mb3JFYWNoKG91dHB1dEZpZWxkID0+IHtcbiAgICAgICAgICAvKiogQ2hlY2sgaWYgdGhlcmUgaXMgbm8gcmVuYW1pbmcgcmVxdWVzdCwgdGhlbiBleHBvcnQgYXMgaXMgKi9cbiAgICAgICAgICBjb25zdCBvdXRwdXRUaXRsZSA9IG91dHB1dEZpZWxkWzFdIHx8IG91dHB1dEZpZWxkWzBdO1xuICAgICAgICAgIHJlc3VsdFtvdXRwdXRUaXRsZV0gPSBmaWVsZEFjY2Vzc29yKG91dHB1dEZpZWxkWzBdLCBkYXRhRnJvbUNTVik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG91dHB1dFRpdGxlID0gb3V0cHV0WzFdIHx8IG91dHB1dFswXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW291dHB1dFRpdGxlIGFzIHN0cmluZ106IGZpZWxkQWNjZXNzb3Iob3V0cHV0WzBdLCBkYXRhRnJvbUNTViksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBbb3V0cHV0XTogZmllbGRBY2Nlc3NvcihvdXRwdXQsIGRhdGFGcm9tQ1NWKSxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBBc3NlcnRzIENTViByZWNvcmQgd2l0aCBxdWVyeSBkYXRhLlxuICAgKi9cbiAgY29uc3Qgd2l0aENyaXRlcmlhID0gKHF1ZXJ5RGF0YTogUmVjb3JkPHN0cmluZywgYW55PikgPT4gKGNzdlJlY29yZDogYW55KSA9PiB7XG4gICAgY29uc3QgaWZNYXRjaGVzQ3JpdGVyaWEgPSBPYmplY3Qua2V5cyhxdWVyeURhdGEpLm1hcChcbiAgICAgIChrZXk6IHN0cmluZykgPT4gY3N2UmVjb3JkW2tleV0gPT0gcXVlcnlEYXRhW2tleV1cbiAgICApO1xuXG4gICAgcmV0dXJuIGlmTWF0Y2hlc0NyaXRlcmlhLmV2ZXJ5KHZhbHVlID0+IHZhbHVlID09PSB0cnVlKTtcbiAgfTtcblxuICAvKipcbiAgICogUGFyc2VzIENTViBmaWxlLlxuICAgKi9cbiAgY29uc3QgcGFyc2VDU1ZGaWxlID0gKGZpbGU6IHN0cmluZyB8IEJ1ZmZlcikgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWRDU1Y6IGFueVtdID0gcGFyc2UoZmlsZSwge1xuICAgICAgICBjb2x1bW5zOiB0cnVlLFxuICAgICAgICBza2lwX2VtcHR5X2xpbmVzOiB0cnVlLFxuICAgICAgICBjYXN0OiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBwYXJzZWRDU1Y7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aHJvdyBuZXcgQ1NWUGFyc2VFcnJvcihlcnJvcik7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiAxLiBWYWxpZGF0ZXMgZ2xvYmFsIGNvbmZpZy5cbiAgICogMi4gVHJpZXMgdG8gcmV0cmlldmUgZ2l2ZW4gZmlsZSAod2l0aCB1cmwgb3IgbG9jYWwgcGF0aCkuXG4gICAqIDMuIFBhcnNlcyBnaXZlbiBDU1YuXG4gICAqIDQuIEZpbHRlcnMgcmVxdWVzdGVkIGluZm9ybWF0aW9uIGZyb20gQ1NWLlxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdKSA9PiB7XG4gICAgY29uc3Qgc2FmZUdsb2JhbENvbmZpZyA9IHZhbGlkYXRlR2xvYmFsQ29uZmlnKCk7XG4gICAgY29uc3Qge2ZpbGVwYXRoLCBxdWVyeSwgb3V0cHV0fSA9IHNhZmVHbG9iYWxDb25maWc7XG5cbiAgICBjb25zdCBmaWxlID0gYXdhaXQgcmV0cmlldmVGaWxlKGZpbGVwYXRoKTtcbiAgICBjb25zdCBwYXJzZWRDU1YgPSBwYXJzZUNTVkZpbGUoZmlsZSk7XG5cbiAgICByZXR1cm4gaW5wdXRzLm1hcChpbnB1dCA9PiB7XG4gICAgICAvKiogQ29sbGVjdHMgcXVlcnkgdmFsdWVzIGZyb20gaW5wdXQuICovXG4gICAgICBjb25zdCBxdWVyeURhdGE6IGFueSA9IHt9O1xuICAgICAgY29uc3QgcXVlcnlLZXlzID0gT2JqZWN0LmtleXMocXVlcnkpO1xuICAgICAgcXVlcnlLZXlzLmZvckVhY2gocXVlcnlLZXkgPT4ge1xuICAgICAgICBjb25zdCBxdWVyeVZhbHVlID0gcXVlcnlbcXVlcnlLZXldO1xuICAgICAgICBxdWVyeURhdGFbcXVlcnlLZXldID0gaW5wdXRbcXVlcnlWYWx1ZV07XG4gICAgICB9KTtcblxuICAgICAgLyoqIEdldHMgcmVsYXRlZCBkYXRhIGZyb20gQ1NWLiAqL1xuICAgICAgY29uc3QgcmVsYXRlZERhdGEgPSBwYXJzZWRDU1YuZmluZCh3aXRoQ3JpdGVyaWEocXVlcnlEYXRhKSk7XG5cbiAgICAgIGlmICghcmVsYXRlZERhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RGF0YU5vdEZvdW5kRXJyb3IoTk9fUVVFUllfREFUQSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmlucHV0LFxuICAgICAgICAuLi5maWx0ZXJPdXRwdXQocmVsYXRlZERhdGEsIHtvdXRwdXQsIHF1ZXJ5fSksXG4gICAgICB9O1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIGBmaWxlcGF0aGAsIGBxdWVyeWAgYW5kIGBvdXRwdXRgIGZpZWxkcyBpbiBnbG9iYWwgY29uZmlnLlxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVHbG9iYWxDb25maWcgPSAoKSA9PiB7XG4gICAgaWYgKCFnbG9iYWxDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBHbG9iYWxDb25maWdFcnJvcihNSVNTSU5HX0dMT0JBTF9DT05GSUcpO1xuICAgIH1cblxuICAgIGNvbnN0IGdsb2JhbENvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAgIGZpbGVwYXRoOiB6LnN0cmluZygpLFxuICAgICAgcXVlcnk6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLFxuICAgICAgb3V0cHV0OiB6XG4gICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAub3Ioei5hcnJheSh6LnN0cmluZygpKSlcbiAgICAgICAgLm9yKHouYXJyYXkoei5hcnJheSh6LnN0cmluZygpKSkpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIGdsb2JhbENvbmZpZ1NjaGVtYT4+KFxuICAgICAgZ2xvYmFsQ29uZmlnU2NoZW1hLFxuICAgICAgZ2xvYmFsQ29uZmlnXG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG1ldGFkYXRhLFxuICAgIGV4ZWN1dGUsXG4gIH07XG59O1xuIl19
@@ -1,2 +0,0 @@
1
- import { ExecutePlugin, ConfigParams } from '@grnsft/if-core/types';
2
- export declare const Divide: (globalConfig: ConfigParams) => ExecutePlugin;
@@ -1,78 +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("../../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) => {
11
- const metadata = {
12
- kind: 'execute',
13
- };
14
- /**
15
- * Calculate the division of each input parameter.
16
- */
17
- const execute = (inputs) => {
18
- const safeGlobalConfig = validateGlobalConfig();
19
- const { numerator, denominator, output } = safeGlobalConfig;
20
- return inputs.map((input, index) => {
21
- const safeInput = Object.assign({}, input, validateSingleInput(input, { numerator, denominator }));
22
- return {
23
- ...input,
24
- [output]: calculateDivide(safeInput, index, { numerator, denominator }),
25
- };
26
- });
27
- };
28
- /**
29
- * Checks global config value are valid.
30
- */
31
- const validateGlobalConfig = () => {
32
- if (!globalConfig) {
33
- throw new GlobalConfigError(MISSING_GLOBAL_CONFIG);
34
- }
35
- const schema = zod_1.z.object({
36
- numerator: zod_1.z.string().min(1),
37
- denominator: zod_1.z.string().or(zod_1.z.number()),
38
- output: zod_1.z.string(),
39
- });
40
- return (0, validations_1.validate)(schema, globalConfig);
41
- };
42
- /**
43
- * Checks for required fields in input.
44
- */
45
- const validateSingleInput = (input, params) => {
46
- const { numerator, denominator } = params;
47
- const schema = zod_1.z
48
- .object({
49
- [numerator]: zod_1.z.number(),
50
- [denominator]: zod_1.z.number().optional(),
51
- })
52
- .refine(() => {
53
- if (typeof denominator === 'string' && !input[denominator]) {
54
- throw new MissingInputDataError(MISSING_INPUT_DATA(denominator));
55
- }
56
- return true;
57
- });
58
- return (0, validations_1.validate)(schema, input);
59
- };
60
- /**
61
- * Calculates the division of the given parameter.
62
- */
63
- const calculateDivide = (input, index, params) => {
64
- const { denominator, numerator } = params;
65
- const finalDenominator = input[denominator] || denominator;
66
- if (finalDenominator === 0) {
67
- console.warn(ZERO_DIVISION(exports.Divide.name, index));
68
- return input[numerator];
69
- }
70
- return input[numerator] / finalDenominator;
71
- };
72
- return {
73
- metadata,
74
- execute,
75
- };
76
- };
77
- exports.Divide = Divide;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvZGl2aWRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUFzQjtBQUN0QixpREFBNkM7QUFHN0Msd0RBQWdEO0FBRWhELHlDQUFxQztBQUVyQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDMUQsTUFBTSxFQUFDLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFcEUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxZQUEwQixFQUFpQixFQUFFO0lBQ2xFLE1BQU0sUUFBUSxHQUFHO1FBQ2YsSUFBSSxFQUFFLFNBQVM7S0FDaEIsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFzQixFQUFFLEVBQUU7UUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2hELE1BQU0sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxHQUFHLGdCQUFnQixDQUFDO1FBRTFELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUM3QixFQUFFLEVBQ0YsS0FBSyxFQUNMLG1CQUFtQixDQUFDLEtBQUssRUFBRSxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUNyRCxDQUFDO1lBRUYsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsQ0FBQyxNQUFNLENBQUMsRUFBRSxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUMsQ0FBQzthQUN0RSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsTUFBTSxJQUFJLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDcEQ7UUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3RCLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM1QixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLHNCQUFRLEVBQXlCLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsS0FBbUIsRUFDbkIsTUFHQyxFQUNELEVBQUU7UUFDRixNQUFNLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUV4QyxNQUFNLE1BQU0sR0FBRyxPQUFDO2FBQ2IsTUFBTSxDQUFDO1lBQ04sQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtTQUNyQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUMxRCxNQUFNLElBQUkscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUNsRTtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsS0FBbUIsRUFDbkIsS0FBYSxFQUNiLE1BR0MsRUFDRCxFQUFFO1FBQ0YsTUFBTSxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsR0FBRyxNQUFNLENBQUM7UUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxDQUFDO1FBRTNELElBQUksZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoRCxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN6QjtRQUVELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO0lBQzdDLENBQUMsQ0FBQztJQUVGLE9BQU87UUFDTCxRQUFRO1FBQ1IsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDLENBQUM7QUFqR1csUUFBQSxNQUFNLFVBaUdqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuaW1wb3J0IHtFeGVjdXRlUGx1Z2luLCBQbHVnaW5QYXJhbXMsIENvbmZpZ1BhcmFtc30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcblxuaW1wb3J0IHt2YWxpZGF0ZX0gZnJvbSAnLi4vLi4vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuY29uc3Qge0dsb2JhbENvbmZpZ0Vycm9yLCBNaXNzaW5nSW5wdXREYXRhRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge01JU1NJTkdfR0xPQkFMX0NPTkZJRywgTUlTU0lOR19JTlBVVF9EQVRBLCBaRVJPX0RJVklTSU9OfSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBEaXZpZGUgPSAoZ2xvYmFsQ29uZmlnOiBDb25maWdQYXJhbXMpOiBFeGVjdXRlUGx1Z2luID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAga2luZDogJ2V4ZWN1dGUnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIGRpdmlzaW9uIG9mIGVhY2ggaW5wdXQgcGFyYW1ldGVyLlxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IChpbnB1dHM6IFBsdWdpblBhcmFtc1tdKSA9PiB7XG4gICAgY29uc3Qgc2FmZUdsb2JhbENvbmZpZyA9IHZhbGlkYXRlR2xvYmFsQ29uZmlnKCk7XG4gICAgY29uc3Qge251bWVyYXRvciwgZGVub21pbmF0b3IsIG91dHB1dH0gPSBzYWZlR2xvYmFsQ29uZmlnO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoKGlucHV0LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc2FmZUlucHV0ID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIGlucHV0LFxuICAgICAgICB2YWxpZGF0ZVNpbmdsZUlucHV0KGlucHV0LCB7bnVtZXJhdG9yLCBkZW5vbWluYXRvcn0pXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgW291dHB1dF06IGNhbGN1bGF0ZURpdmlkZShzYWZlSW5wdXQsIGluZGV4LCB7bnVtZXJhdG9yLCBkZW5vbWluYXRvcn0pLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGdsb2JhbCBjb25maWcgdmFsdWUgYXJlIHZhbGlkLlxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVHbG9iYWxDb25maWcgPSAoKSA9PiB7XG4gICAgaWYgKCFnbG9iYWxDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBHbG9iYWxDb25maWdFcnJvcihNSVNTSU5HX0dMT0JBTF9DT05GSUcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAgIG51bWVyYXRvcjogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICBkZW5vbWluYXRvcjogei5zdHJpbmcoKS5vcih6Lm51bWJlcigpKSxcbiAgICAgIG91dHB1dDogei5zdHJpbmcoKSxcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBzY2hlbWE+PihzY2hlbWEsIGdsb2JhbENvbmZpZyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENoZWNrcyBmb3IgcmVxdWlyZWQgZmllbGRzIGluIGlucHV0LlxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVTaW5nbGVJbnB1dCA9IChcbiAgICBpbnB1dDogUGx1Z2luUGFyYW1zLFxuICAgIHBhcmFtczoge1xuICAgICAgbnVtZXJhdG9yOiBzdHJpbmc7XG4gICAgICBkZW5vbWluYXRvcjogbnVtYmVyIHwgc3RyaW5nO1xuICAgIH1cbiAgKSA9PiB7XG4gICAgY29uc3Qge251bWVyYXRvciwgZGVub21pbmF0b3J9ID0gcGFyYW1zO1xuXG4gICAgY29uc3Qgc2NoZW1hID0gelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIFtudW1lcmF0b3JdOiB6Lm51bWJlcigpLFxuICAgICAgICBbZGVub21pbmF0b3JdOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICAgLnJlZmluZSgoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVub21pbmF0b3IgPT09ICdzdHJpbmcnICYmICFpbnB1dFtkZW5vbWluYXRvcl0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ0lucHV0RGF0YUVycm9yKE1JU1NJTkdfSU5QVVRfREFUQShkZW5vbWluYXRvcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBzY2hlbWE+PihzY2hlbWEsIGlucHV0KTtcbiAgfTtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZGl2aXNpb24gb2YgdGhlIGdpdmVuIHBhcmFtZXRlci5cbiAgICovXG4gIGNvbnN0IGNhbGN1bGF0ZURpdmlkZSA9IChcbiAgICBpbnB1dDogUGx1Z2luUGFyYW1zLFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgcGFyYW1zOiB7XG4gICAgICBudW1lcmF0b3I6IHN0cmluZztcbiAgICAgIGRlbm9taW5hdG9yOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgfVxuICApID0+IHtcbiAgICBjb25zdCB7ZGVub21pbmF0b3IsIG51bWVyYXRvcn0gPSBwYXJhbXM7XG4gICAgY29uc3QgZmluYWxEZW5vbWluYXRvciA9IGlucHV0W2Rlbm9taW5hdG9yXSB8fCBkZW5vbWluYXRvcjtcblxuICAgIGlmIChmaW5hbERlbm9taW5hdG9yID09PSAwKSB7XG4gICAgICBjb25zb2xlLndhcm4oWkVST19ESVZJU0lPTihEaXZpZGUubmFtZSwgaW5kZXgpKTtcbiAgICAgIHJldHVybiBpbnB1dFtudW1lcmF0b3JdO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dFtudW1lcmF0b3JdIC8gZmluYWxEZW5vbWluYXRvcjtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG1ldGFkYXRhLFxuICAgIGV4ZWN1dGUsXG4gIH07XG59O1xuIl19
@@ -1,2 +0,0 @@
1
- import { ExecutePlugin, ExponentConfig } from '@grnsft/if-core/types';
2
- export declare const Exponent: (globalConfig: ExponentConfig) => ExecutePlugin;
@@ -1,58 +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("../../util/validations");
6
- const Exponent = (globalConfig) => {
7
- const metadata = {
8
- kind: 'execute',
9
- };
10
- /**
11
- * Checks global config value are valid.
12
- */
13
- const validateGlobalConfig = () => {
14
- const globalConfigSchema = zod_1.z.object({
15
- 'input-parameter': zod_1.z.string().min(1),
16
- exponent: zod_1.z.number(),
17
- 'output-parameter': zod_1.z.string().min(1),
18
- });
19
- return (0, validations_1.validate)(globalConfigSchema, globalConfig);
20
- };
21
- /**
22
- * Checks for required fields in input.
23
- */
24
- const validateSingleInput = (input, inputParameter) => {
25
- const inputData = {
26
- 'input-parameter': input[inputParameter],
27
- };
28
- const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
29
- (0, validations_1.validate)(validationSchema, inputData);
30
- return input;
31
- };
32
- /**
33
- * Calculate the input param raised by to the power of the given exponent.
34
- */
35
- const execute = (inputs) => {
36
- const { 'input-parameter': inputParameter, exponent, 'output-parameter': outputParameter, } = validateGlobalConfig();
37
- return inputs.map(input => {
38
- validateSingleInput(input, inputParameter);
39
- return {
40
- ...input,
41
- [outputParameter]: calculateExponent(input, inputParameter, exponent),
42
- };
43
- });
44
- };
45
- /**
46
- * Calculates the input param raised by the power of a given exponent.
47
- */
48
- const calculateExponent = (input, inputParameter, exponent) => {
49
- const base = input[inputParameter];
50
- return Math.pow(base, exponent);
51
- };
52
- return {
53
- metadata,
54
- execute,
55
- };
56
- };
57
- exports.Exponent = Exponent;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvZXhwb25lbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXNCO0FBT3RCLHdEQUFnRDtBQUV6QyxNQUFNLFFBQVEsR0FBRyxDQUFDLFlBQTRCLEVBQWlCLEVBQUU7SUFDdEUsTUFBTSxRQUFRLEdBQUc7UUFDZixJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRTtRQUNoQyxNQUFNLGtCQUFrQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDbEMsaUJBQWlCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDcEMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7WUFDcEIsa0JBQWtCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdEMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLHNCQUFRLEVBQ2Isa0JBQWtCLEVBQ2xCLFlBQVksQ0FDYixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBbUIsRUFBRSxjQUFzQixFQUFFLEVBQUU7UUFDMUUsTUFBTSxTQUFTLEdBQUc7WUFDaEIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUN6QyxDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFBLHNCQUFRLEVBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFdEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBc0IsRUFBa0IsRUFBRTtRQUN6RCxNQUFNLEVBQ0osaUJBQWlCLEVBQUUsY0FBYyxFQUNqQyxRQUFRLEVBQ1Isa0JBQWtCLEVBQUUsZUFBZSxHQUNwQyxHQUFHLG9CQUFvQixFQUFFLENBQUM7UUFFM0IsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztZQUUzQyxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLGVBQWUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDO2FBQ3RFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixLQUFtQixFQUNuQixjQUFzQixFQUN0QixRQUFnQixFQUNoQixFQUFFO1FBQ0YsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRW5DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLFFBQVE7UUFDUixPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXZFVyxRQUFBLFFBQVEsWUF1RW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtcbiAgRXhlY3V0ZVBsdWdpbixcbiAgUGx1Z2luUGFyYW1zLFxuICBFeHBvbmVudENvbmZpZyxcbn0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcblxuaW1wb3J0IHt2YWxpZGF0ZX0gZnJvbSAnLi4vLi4vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBFeHBvbmVudCA9IChnbG9iYWxDb25maWc6IEV4cG9uZW50Q29uZmlnKTogRXhlY3V0ZVBsdWdpbiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgIGtpbmQ6ICdleGVjdXRlJyxcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGdsb2JhbCBjb25maWcgdmFsdWUgYXJlIHZhbGlkLlxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVHbG9iYWxDb25maWcgPSAoKSA9PiB7XG4gICAgY29uc3QgZ2xvYmFsQ29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICAgICAgJ2lucHV0LXBhcmFtZXRlcic6IHouc3RyaW5nKCkubWluKDEpLFxuICAgICAgZXhwb25lbnQ6IHoubnVtYmVyKCksXG4gICAgICAnb3V0cHV0LXBhcmFtZXRlcic6IHouc3RyaW5nKCkubWluKDEpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIGdsb2JhbENvbmZpZ1NjaGVtYT4+KFxuICAgICAgZ2xvYmFsQ29uZmlnU2NoZW1hLFxuICAgICAgZ2xvYmFsQ29uZmlnXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGZvciByZXF1aXJlZCBmaWVsZHMgaW4gaW5wdXQuXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZVNpbmdsZUlucHV0ID0gKGlucHV0OiBQbHVnaW5QYXJhbXMsIGlucHV0UGFyYW1ldGVyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBpbnB1dERhdGEgPSB7XG4gICAgICAnaW5wdXQtcGFyYW1ldGVyJzogaW5wdXRbaW5wdXRQYXJhbWV0ZXJdLFxuICAgIH07XG4gICAgY29uc3QgdmFsaWRhdGlvblNjaGVtYSA9IHoucmVjb3JkKHouc3RyaW5nKCksIHoubnVtYmVyKCkpO1xuICAgIHZhbGlkYXRlKHZhbGlkYXRpb25TY2hlbWEsIGlucHV0RGF0YSk7XG5cbiAgICByZXR1cm4gaW5wdXQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aGUgaW5wdXQgcGFyYW0gcmFpc2VkIGJ5IHRvIHRoZSBwb3dlciBvZiB0aGUgZ2l2ZW4gZXhwb25lbnQuXG4gICAqL1xuICBjb25zdCBleGVjdXRlID0gKGlucHV0czogUGx1Z2luUGFyYW1zW10pOiBQbHVnaW5QYXJhbXNbXSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgJ2lucHV0LXBhcmFtZXRlcic6IGlucHV0UGFyYW1ldGVyLFxuICAgICAgZXhwb25lbnQsXG4gICAgICAnb3V0cHV0LXBhcmFtZXRlcic6IG91dHB1dFBhcmFtZXRlcixcbiAgICB9ID0gdmFsaWRhdGVHbG9iYWxDb25maWcoKTtcblxuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgIHZhbGlkYXRlU2luZ2xlSW5wdXQoaW5wdXQsIGlucHV0UGFyYW1ldGVyKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIFtvdXRwdXRQYXJhbWV0ZXJdOiBjYWxjdWxhdGVFeHBvbmVudChpbnB1dCwgaW5wdXRQYXJhbWV0ZXIsIGV4cG9uZW50KSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGlucHV0IHBhcmFtIHJhaXNlZCBieSB0aGUgcG93ZXIgb2YgYSBnaXZlbiBleHBvbmVudC5cbiAgICovXG4gIGNvbnN0IGNhbGN1bGF0ZUV4cG9uZW50ID0gKFxuICAgIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gICAgaW5wdXRQYXJhbWV0ZXI6IHN0cmluZyxcbiAgICBleHBvbmVudDogbnVtYmVyXG4gICkgPT4ge1xuICAgIGNvbnN0IGJhc2UgPSBpbnB1dFtpbnB1dFBhcmFtZXRlcl07XG5cbiAgICByZXR1cm4gTWF0aC5wb3coYmFzZSwgZXhwb25lbnQpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbWV0YWRhdGEsXG4gICAgZXhlY3V0ZSxcbiAgfTtcbn07XG4iXX0=
@@ -1,4 +0,0 @@
1
- import { Context } from '../types/manifest';
2
- export declare const ExportCSVRaw: () => {
3
- execute: (tree: any, _context: Context, outputPath: string) => Promise<void>;
4
- };