@grnsft/if 0.4.0-beta.0 → 0.4.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 (181) hide show
  1. package/CONTRIBUTING.md +3 -0
  2. package/README.md +6 -0
  3. package/build/builtins/coefficient/index.d.ts +3 -0
  4. package/build/builtins/coefficient/index.js +51 -0
  5. package/build/builtins/coefficient/types.d.ts +5 -0
  6. package/build/builtins/coefficient/types.js +3 -0
  7. package/build/builtins/csv-lookup/index.d.ts +2 -0
  8. package/build/builtins/csv-lookup/index.js +181 -0
  9. package/build/builtins/divide/index.d.ts +2 -0
  10. package/build/builtins/divide/index.js +67 -0
  11. package/build/builtins/exponent/index.d.ts +3 -0
  12. package/build/builtins/exponent/index.js +72 -0
  13. package/build/builtins/exponent/types.d.ts +5 -0
  14. package/build/builtins/exponent/types.js +3 -0
  15. package/build/builtins/export-csv-raw.js +4 -1
  16. package/build/builtins/export-csv.js +4 -1
  17. package/build/builtins/export-log.js +4 -2
  18. package/build/builtins/export-yaml.js +4 -1
  19. package/build/builtins/index.d.ts +13 -0
  20. package/build/builtins/index.js +28 -2
  21. package/build/builtins/interpolation/index.d.ts +2 -0
  22. package/build/builtins/interpolation/index.js +146 -0
  23. package/build/builtins/interpolation/types.d.ts +5 -0
  24. package/build/builtins/interpolation/types.js +10 -0
  25. package/build/builtins/mock-observations/helpers/common-generator.d.ts +3 -0
  26. package/build/builtins/mock-observations/helpers/common-generator.js +32 -0
  27. package/build/builtins/mock-observations/helpers/rand-int-generator.d.ts +3 -0
  28. package/build/builtins/mock-observations/helpers/rand-int-generator.js +58 -0
  29. package/build/builtins/mock-observations/index.d.ts +3 -0
  30. package/build/builtins/mock-observations/index.js +116 -0
  31. package/build/builtins/mock-observations/interfaces/index.d.ts +6 -0
  32. package/build/builtins/mock-observations/interfaces/index.js +3 -0
  33. package/build/builtins/mock-observations/types.d.ts +13 -0
  34. package/build/builtins/mock-observations/types.js +3 -0
  35. package/build/builtins/multiply/index.d.ts +3 -0
  36. package/build/builtins/multiply/index.js +63 -0
  37. package/build/builtins/multiply/types.d.ts +4 -0
  38. package/build/builtins/multiply/types.js +3 -0
  39. package/build/builtins/regex/index.d.ts +3 -0
  40. package/build/builtins/regex/index.js +78 -0
  41. package/build/builtins/sci/config.d.ts +1 -0
  42. package/build/builtins/sci/config.js +44 -0
  43. package/build/builtins/sci/index.d.ts +3 -0
  44. package/build/builtins/sci/index.js +69 -0
  45. package/build/builtins/sci-embodied/index.d.ts +2 -0
  46. package/build/builtins/sci-embodied/index.js +115 -0
  47. package/build/builtins/shell/index.d.ts +3 -0
  48. package/build/builtins/shell/index.js +58 -0
  49. package/build/builtins/subtract/index.d.ts +3 -0
  50. package/build/builtins/subtract/index.js +75 -0
  51. package/build/builtins/subtract/types.d.ts +4 -0
  52. package/build/builtins/subtract/types.js +3 -0
  53. package/build/builtins/sum/index.d.ts +3 -0
  54. package/build/builtins/sum/index.js +61 -0
  55. package/build/builtins/sum/types.d.ts +4 -0
  56. package/build/builtins/sum/types.js +3 -0
  57. package/build/config/config.d.ts +8 -2
  58. package/build/config/config.js +34 -1
  59. package/build/config/strings.d.ts +22 -0
  60. package/build/config/strings.js +23 -1
  61. package/build/diff.d.ts +2 -0
  62. package/build/diff.js +46 -0
  63. package/build/index.js +8 -4
  64. package/build/lib/aggregate.js +5 -1
  65. package/build/lib/compare.d.ts +10 -0
  66. package/build/lib/compare.js +56 -0
  67. package/build/lib/compute.js +9 -1
  68. package/build/lib/environment.js +9 -3
  69. package/build/lib/exhaust.js +3 -2
  70. package/build/lib/initialize.js +5 -2
  71. package/build/lib/load.d.ts +48 -0
  72. package/build/lib/load.js +49 -2
  73. package/build/lib/parameterize.js +8 -4
  74. package/build/types/common.d.ts +4 -0
  75. package/build/types/common.js +3 -0
  76. package/build/types/helpers.d.ts +4 -0
  77. package/build/types/helpers.js +3 -0
  78. package/build/types/interface.d.ts +2 -1
  79. package/build/types/interface.js +1 -1
  80. package/build/types/lib/compare.d.ts +7 -0
  81. package/build/types/lib/compare.js +3 -0
  82. package/build/types/process-args.d.ts +7 -1
  83. package/build/types/process-args.js +1 -1
  84. package/build/types/util/args.d.ts +5 -0
  85. package/build/types/util/args.js +3 -0
  86. package/build/util/args.d.ts +7 -2
  87. package/build/util/args.js +49 -11
  88. package/build/util/debug-logger.d.ts +4 -0
  89. package/build/util/debug-logger.js +117 -0
  90. package/build/util/errors.d.ts +1 -1
  91. package/build/util/errors.js +6 -1
  92. package/build/util/helpers.d.ts +23 -0
  93. package/build/util/helpers.js +116 -2
  94. package/build/util/log-memoize.d.ts +1 -1
  95. package/build/util/log-memoize.js +1 -1
  96. package/build/util/validations.d.ts +59 -51
  97. package/build/util/validations.js +49 -18
  98. package/github-processes.md +39 -0
  99. package/package.json +1 -1
  100. package/.env +0 -5
  101. package/coverage/clover.xml +0 -1590
  102. package/coverage/coverage-final.json +0 -50
  103. package/coverage/lcov-report/base.css +0 -224
  104. package/coverage/lcov-report/block-navigation.js +0 -87
  105. package/coverage/lcov-report/builtins/coefficient/index.html +0 -116
  106. package/coverage/lcov-report/builtins/coefficient/index.ts.html +0 -295
  107. package/coverage/lcov-report/builtins/csv-lookup/index.html +0 -116
  108. package/coverage/lcov-report/builtins/csv-lookup/index.ts.html +0 -832
  109. package/coverage/lcov-report/builtins/divide/index.html +0 -116
  110. package/coverage/lcov-report/builtins/divide/index.ts.html +0 -361
  111. package/coverage/lcov-report/builtins/exponent/index.html +0 -116
  112. package/coverage/lcov-report/builtins/exponent/index.ts.html +0 -355
  113. package/coverage/lcov-report/builtins/export-csv-raw.ts.html +0 -553
  114. package/coverage/lcov-report/builtins/export-csv.ts.html +0 -433
  115. package/coverage/lcov-report/builtins/export-log.ts.html +0 -145
  116. package/coverage/lcov-report/builtins/export-yaml.ts.html +0 -184
  117. package/coverage/lcov-report/builtins/group-by.ts.html +0 -364
  118. package/coverage/lcov-report/builtins/index.html +0 -206
  119. package/coverage/lcov-report/builtins/index.ts.html +0 -130
  120. package/coverage/lcov-report/builtins/interpolation/index.html +0 -131
  121. package/coverage/lcov-report/builtins/interpolation/index.ts.html +0 -670
  122. package/coverage/lcov-report/builtins/interpolation/types.ts.html +0 -100
  123. package/coverage/lcov-report/builtins/mock-observations/helpers/common-generator.ts.html +0 -181
  124. package/coverage/lcov-report/builtins/mock-observations/helpers/index.html +0 -131
  125. package/coverage/lcov-report/builtins/mock-observations/helpers/rand-int-generator.ts.html +0 -295
  126. package/coverage/lcov-report/builtins/mock-observations/index.html +0 -116
  127. package/coverage/lcov-report/builtins/mock-observations/index.ts.html +0 -613
  128. package/coverage/lcov-report/builtins/multiply/index.html +0 -116
  129. package/coverage/lcov-report/builtins/multiply/index.ts.html +0 -337
  130. package/coverage/lcov-report/builtins/regex/index.html +0 -116
  131. package/coverage/lcov-report/builtins/regex/index.ts.html +0 -379
  132. package/coverage/lcov-report/builtins/sci/config.ts.html +0 -205
  133. package/coverage/lcov-report/builtins/sci/index.html +0 -116
  134. package/coverage/lcov-report/builtins/sci/index.ts.html +0 -331
  135. package/coverage/lcov-report/builtins/sci-embodied/index.html +0 -116
  136. package/coverage/lcov-report/builtins/sci-embodied/index.ts.html +0 -481
  137. package/coverage/lcov-report/builtins/shell/index.html +0 -116
  138. package/coverage/lcov-report/builtins/shell/index.ts.html +0 -283
  139. package/coverage/lcov-report/builtins/subtract/index.html +0 -116
  140. package/coverage/lcov-report/builtins/subtract/index.ts.html +0 -373
  141. package/coverage/lcov-report/builtins/sum/index.html +0 -116
  142. package/coverage/lcov-report/builtins/sum/index.ts.html +0 -340
  143. package/coverage/lcov-report/builtins/time-sync.ts.html +0 -1459
  144. package/coverage/lcov-report/config/config.ts.html +0 -334
  145. package/coverage/lcov-report/config/index.html +0 -161
  146. package/coverage/lcov-report/config/index.ts.html +0 -94
  147. package/coverage/lcov-report/config/params.ts.html +0 -697
  148. package/coverage/lcov-report/config/strings.ts.html +0 -415
  149. package/coverage/lcov-report/favicon.png +0 -0
  150. package/coverage/lcov-report/index.html +0 -386
  151. package/coverage/lcov-report/lib/aggregate.ts.html +0 -331
  152. package/coverage/lcov-report/lib/compare.ts.html +0 -283
  153. package/coverage/lcov-report/lib/compute.ts.html +0 -391
  154. package/coverage/lcov-report/lib/environment.ts.html +0 -343
  155. package/coverage/lcov-report/lib/exhaust.ts.html +0 -283
  156. package/coverage/lcov-report/lib/index.html +0 -221
  157. package/coverage/lcov-report/lib/initialize.ts.html +0 -388
  158. package/coverage/lcov-report/lib/load.ts.html +0 -268
  159. package/coverage/lcov-report/lib/parameterize.ts.html +0 -283
  160. package/coverage/lcov-report/prettify.css +0 -1
  161. package/coverage/lcov-report/prettify.js +0 -2
  162. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  163. package/coverage/lcov-report/sorter.js +0 -196
  164. package/coverage/lcov-report/types/aggregation.ts.html +0 -94
  165. package/coverage/lcov-report/types/index.html +0 -146
  166. package/coverage/lcov-report/types/interface.ts.html +0 -181
  167. package/coverage/lcov-report/types/parameters.ts.html +0 -106
  168. package/coverage/lcov-report/util/aggregation-helper.ts.html +0 -286
  169. package/coverage/lcov-report/util/args.ts.html +0 -508
  170. package/coverage/lcov-report/util/errors.ts.html +0 -232
  171. package/coverage/lcov-report/util/helpers.ts.html +0 -613
  172. package/coverage/lcov-report/util/index.html +0 -266
  173. package/coverage/lcov-report/util/json.ts.html +0 -115
  174. package/coverage/lcov-report/util/log-memoize.ts.html +0 -145
  175. package/coverage/lcov-report/util/logger.ts.html +0 -151
  176. package/coverage/lcov-report/util/os-checker.ts.html +0 -421
  177. package/coverage/lcov-report/util/plugin-storage.ts.html +0 -199
  178. package/coverage/lcov-report/util/validations.ts.html +0 -526
  179. package/coverage/lcov-report/util/yaml.ts.html +0 -193
  180. package/coverage/lcov.info +0 -2811
  181. package/src/__tests__/integration/manifest/sci-e.yaml +0 -23
package/CONTRIBUTING.md CHANGED
@@ -20,11 +20,14 @@ The following document is a rule set of guidelines for contributing.
20
20
  - [Naming conventions](#naming-conventions)
21
21
  - [Documentation](#documentation)
22
22
  - [Writing tests](#writing-tests)
23
+ - [How to report issues (bugs)](#how-to-report-issues-bugs)
23
24
 
24
25
  ## What and when to contribute
25
26
 
26
27
  You can contribute anything to the IF, but we are likely to close out unsolicited PRs without merging them. Our issue board is completely open and we have tags (`help-wanted`, `good-first-issue`) to help contributors to choose tasks to work on. We recommend speaking to the core team on Github before starting working on an issue. You can do this by raising an issue or commenting on an existing issue. This helps us to direct your energy in directions that are aligned with our roadmap, prevent multiple people working on the same task, and better manage our board. This all makes it much more likely that your work will get merged.
27
28
 
29
+ You can also contribute by participating in discussions on our mailing list at [if-community@greensoftware.foundation](https://groups.google.com/u/1/a/greensoftware.foundation/g/if-community). We send out weekly updates that includes what we've shipped, what we're working on and how you can get involved each week.
30
+
28
31
  ## Reporting bugs
29
32
 
30
33
  We appreciate bug reports! If you experience an issue with IF or one of our plugins, you can report it using our bug reporting template. To do this:
package/README.md CHANGED
@@ -97,6 +97,12 @@ Watch this video to learn how to create and run a `manifest`.
97
97
 
98
98
  [![Watch the walk-through video](https://i3.ytimg.com/vi/R-6eDM8AsvY/maxresdefault.jpg)](https://youtu.be/GW37Qd4AQbU)
99
99
 
100
+
101
+ ## Join our mailing list
102
+
103
+ We have a public mailing list at [if-community@greensoftware.foundation](https://groups.google.com/u/1/a/greensoftware.foundation/g/if-community). We send out weekly updates that explain what we've shipped, what we're working on and how you can get involved each week!
104
+
105
+
100
106
  ## Contributing
101
107
 
102
108
  To contribute to IF, please fork this repository and raise a pull request from your fork.
@@ -0,0 +1,3 @@
1
+ import { ExecutePlugin } from '../../types/interface';
2
+ import { CoefficientConfig } from './types';
3
+ export declare const Coefficient: (globalConfig: CoefficientConfig) => ExecutePlugin;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Coefficient = void 0;
4
+ const zod_1 = require("zod");
5
+ const validations_1 = require("../../util/validations");
6
+ const errors_1 = require("../../util/errors");
7
+ const { ConfigNotFoundError } = errors_1.ERRORS;
8
+ const Coefficient = (globalConfig) => {
9
+ const metadata = {
10
+ kind: 'execute',
11
+ };
12
+ /**
13
+ * Calculate the product of each input parameter.
14
+ */
15
+ const execute = (inputs) => {
16
+ const safeGlobalConfig = validateGlobalConfig();
17
+ const inputParameter = safeGlobalConfig['input-parameter'];
18
+ const outputParameter = safeGlobalConfig['output-parameter'];
19
+ const coefficient = safeGlobalConfig['coefficient'];
20
+ return inputs.map(input => {
21
+ return {
22
+ ...input,
23
+ [outputParameter]: calculateProduct(input, inputParameter, coefficient),
24
+ };
25
+ });
26
+ };
27
+ /**
28
+ * Calculates the product of the energy components.
29
+ */
30
+ const calculateProduct = (input, inputParameter, coefficient) => input[inputParameter] * coefficient;
31
+ /**
32
+ * Checks global config value are valid.
33
+ */
34
+ const validateGlobalConfig = () => {
35
+ if (!globalConfig) {
36
+ throw new ConfigNotFoundError('Global config is not provided.');
37
+ }
38
+ const globalConfigSchema = zod_1.z.object({
39
+ coefficient: zod_1.z.number(),
40
+ 'input-parameter': zod_1.z.string().min(1),
41
+ 'output-parameter': zod_1.z.string().min(1),
42
+ });
43
+ return (0, validations_1.validate)(globalConfigSchema, globalConfig);
44
+ };
45
+ return {
46
+ metadata,
47
+ execute,
48
+ };
49
+ };
50
+ exports.Coefficient = Coefficient;
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvY29lZmZpY2llbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXNCO0FBSXRCLHdEQUFnRDtBQUNoRCw4Q0FBeUM7QUFJekMsTUFBTSxFQUFDLG1CQUFtQixFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRTlCLE1BQU0sV0FBVyxHQUFHLENBQUMsWUFBK0IsRUFBaUIsRUFBRTtJQUM1RSxNQUFNLFFBQVEsR0FBRztRQUNmLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBc0IsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUNoRCxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNELE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLENBQUMsZUFBZSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUM7YUFDeEUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQ3ZCLEtBQW1CLEVBQ25CLGNBQXNCLEVBQ3RCLFdBQW1CLEVBQ25CLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBRXpDOztPQUVHO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixNQUFNLElBQUksbUJBQW1CLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNqRTtRQUVELE1BQU0sa0JBQWtCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtZQUN2QixpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwQyxrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0QyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsUUFBUTtRQUNSLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBdkRXLFFBQUEsV0FBVyxlQXVEdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7RXhlY3V0ZVBsdWdpbiwgUGx1Z2luUGFyYW1zfSBmcm9tICcuLi8uLi90eXBlcy9pbnRlcmZhY2UnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi91dGlsL3ZhbGlkYXRpb25zJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICcuLi8uLi91dGlsL2Vycm9ycyc7XG5cbmltcG9ydCB7Q29lZmZpY2llbnRDb25maWd9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCB7Q29uZmlnTm90Rm91bmRFcnJvcn0gPSBFUlJPUlM7XG5cbmV4cG9ydCBjb25zdCBDb2VmZmljaWVudCA9IChnbG9iYWxDb25maWc6IENvZWZmaWNpZW50Q29uZmlnKTogRXhlY3V0ZVBsdWdpbiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgIGtpbmQ6ICdleGVjdXRlJyxcbiAgfTtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlIHRoZSBwcm9kdWN0IG9mIGVhY2ggaW5wdXQgcGFyYW1ldGVyLlxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IChpbnB1dHM6IFBsdWdpblBhcmFtc1tdKSA9PiB7XG4gICAgY29uc3Qgc2FmZUdsb2JhbENvbmZpZyA9IHZhbGlkYXRlR2xvYmFsQ29uZmlnKCk7XG4gICAgY29uc3QgaW5wdXRQYXJhbWV0ZXIgPSBzYWZlR2xvYmFsQ29uZmlnWydpbnB1dC1wYXJhbWV0ZXInXTtcbiAgICBjb25zdCBvdXRwdXRQYXJhbWV0ZXIgPSBzYWZlR2xvYmFsQ29uZmlnWydvdXRwdXQtcGFyYW1ldGVyJ107XG4gICAgY29uc3QgY29lZmZpY2llbnQgPSBzYWZlR2xvYmFsQ29uZmlnWydjb2VmZmljaWVudCddO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoaW5wdXQgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIFtvdXRwdXRQYXJhbWV0ZXJdOiBjYWxjdWxhdGVQcm9kdWN0KGlucHV0LCBpbnB1dFBhcmFtZXRlciwgY29lZmZpY2llbnQpLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgcHJvZHVjdCBvZiB0aGUgZW5lcmd5IGNvbXBvbmVudHMuXG4gICAqL1xuICBjb25zdCBjYWxjdWxhdGVQcm9kdWN0ID0gKFxuICAgIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gICAgaW5wdXRQYXJhbWV0ZXI6IHN0cmluZyxcbiAgICBjb2VmZmljaWVudDogbnVtYmVyXG4gICkgPT4gaW5wdXRbaW5wdXRQYXJhbWV0ZXJdICogY29lZmZpY2llbnQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBnbG9iYWwgY29uZmlnIHZhbHVlIGFyZSB2YWxpZC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmlnTm90Rm91bmRFcnJvcignR2xvYmFsIGNvbmZpZyBpcyBub3QgcHJvdmlkZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2xvYmFsQ29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICAgICAgY29lZmZpY2llbnQ6IHoubnVtYmVyKCksXG4gICAgICAnaW5wdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICAnb3V0cHV0LXBhcmFtZXRlcic6IHouc3RyaW5nKCkubWluKDEpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIGdsb2JhbENvbmZpZ1NjaGVtYT4+KFxuICAgICAgZ2xvYmFsQ29uZmlnU2NoZW1hLFxuICAgICAgZ2xvYmFsQ29uZmlnXG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG1ldGFkYXRhLFxuICAgIGV4ZWN1dGUsXG4gIH07XG59O1xuIl19
@@ -0,0 +1,5 @@
1
+ export type CoefficientConfig = {
2
+ 'input-parameter': string;
3
+ coefficient: number;
4
+ 'output-parameter': string;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvY29lZmZpY2llbnQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENvZWZmaWNpZW50Q29uZmlnID0ge1xuICAnaW5wdXQtcGFyYW1ldGVyJzogc3RyaW5nO1xuICBjb2VmZmljaWVudDogbnVtYmVyO1xuICAnb3V0cHV0LXBhcmFtZXRlcic6IHN0cmluZztcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import { ExecutePlugin } from '../../types/interface';
2
+ export declare const CSVLookup: (globalConfig: any) => ExecutePlugin;
@@ -0,0 +1,181 @@
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 validations_1 = require("../../util/validations");
13
+ const errors_1 = require("../../util/errors");
14
+ const { ConfigNotFoundError, FileNotFoundError, InputValidationError } = errors_1.ERRORS;
15
+ const CSVLookup = (globalConfig) => {
16
+ const metadata = {
17
+ kind: 'execute',
18
+ };
19
+ /**
20
+ * Checks if given string is URL.
21
+ */
22
+ const isURL = (filepath) => {
23
+ try {
24
+ new URL(filepath);
25
+ return true;
26
+ }
27
+ catch (error) {
28
+ return false;
29
+ }
30
+ };
31
+ /**
32
+ * Checks if given `filepath` is url, then tries to fetch it.
33
+ * Otherwise tries to read file.
34
+ */
35
+ const retrieveFile = async (filepath) => {
36
+ if (isURL(filepath)) {
37
+ const { data } = await axios_1.default.get(filepath).catch(error => {
38
+ throw new FileNotFoundError(`Something went wrong while reading the file: ${filepath}.
39
+ ${error.response.message}`);
40
+ });
41
+ return data;
42
+ }
43
+ return (0, promises_1.readFile)(filepath).catch(error => {
44
+ throw new FileNotFoundError(`Something went wrong while reading the file: ${filepath}.
45
+ ${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 InputValidationError(`There is no column with name: ${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
+ * 1. Validates global config.
120
+ * 2. Tries to retrieve given file (with url or local path).
121
+ * 3. Parses given CSV.
122
+ * 4. Filters requested information from CSV.
123
+ */
124
+ const execute = async (inputs) => {
125
+ const safeGlobalConfig = validateGlobalConfig();
126
+ const { filepath, query, output } = safeGlobalConfig;
127
+ const file = await retrieveFile(filepath);
128
+ try {
129
+ const parsedCSV = (0, sync_1.parse)(file, {
130
+ columns: true,
131
+ skip_empty_lines: true,
132
+ cast: true,
133
+ });
134
+ return inputs.map(input => {
135
+ /** Collects query values from input. */
136
+ const queryData = {};
137
+ const queryKeys = Object.keys(query);
138
+ queryKeys.forEach(queryKey => {
139
+ const queryValue = query[queryKey];
140
+ queryData[queryKey] = input[queryValue];
141
+ });
142
+ /** Gets related data from CSV. */
143
+ const relatedData = parsedCSV.find(withCriteria(queryData));
144
+ if (!relatedData) {
145
+ throw new InputValidationError('One or more of the given query parameters are not found in the target CSV file column headers.');
146
+ }
147
+ return {
148
+ ...input,
149
+ ...filterOutput(relatedData, { output, query }),
150
+ };
151
+ });
152
+ }
153
+ catch (error) {
154
+ throw new InputValidationError(`Error happened while parsing given CSV file: ${filepath}
155
+ ${error}`);
156
+ }
157
+ };
158
+ /**
159
+ * Checks for `filepath`, `query` and `output` fields in global config.
160
+ */
161
+ const validateGlobalConfig = () => {
162
+ if (!globalConfig) {
163
+ throw new ConfigNotFoundError('Global config is not provided.');
164
+ }
165
+ const globalConfigSchema = zod_1.z.object({
166
+ filepath: zod_1.z.string(),
167
+ query: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
168
+ output: zod_1.z
169
+ .string()
170
+ .or(zod_1.z.array(zod_1.z.string()))
171
+ .or(zod_1.z.array(zod_1.z.array(zod_1.z.string()))),
172
+ });
173
+ return (0, validations_1.validate)(globalConfigSchema, globalConfig);
174
+ };
175
+ return {
176
+ metadata,
177
+ execute,
178
+ };
179
+ };
180
+ exports.CSVLookup = CSVLookup;
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvY3N2LWxvb2t1cC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBMkI7QUFDM0IsMENBQXFDO0FBRXJDLGtEQUEwQjtBQUMxQiw2QkFBc0I7QUFDdEIseUNBQXFDO0FBSXJDLHdEQUFnRDtBQUNoRCw4Q0FBeUM7QUFFekMsTUFBTSxFQUFDLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRXZFLE1BQU0sU0FBUyxHQUFHLENBQUMsWUFBaUIsRUFBaUIsRUFBRTtJQUM1RCxNQUFNLFFBQVEsR0FBRztRQUNmLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1FBQ2pDLElBQUk7WUFDRixJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtRQUM5QyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQixNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDckQsTUFBTSxJQUFJLGlCQUFpQixDQUFDLGdEQUFnRCxRQUFRO1VBQ2xGLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFP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QUFNLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEVBQUUsT0FBQztpQkFDTixNQUFNLEVBQUU7aUJBQ1IsRUFBRSxDQUFDLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7aUJBQ3ZCLEVBQUUsQ0FBQyxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsUUFBUTtRQUNSLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBcE5XLFFBQUEsU0FBUyxhQW9OcEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cbmltcG9ydCB7cmVhZEZpbGV9IGZyb20gJ2ZzL3Byb21pc2VzJztcblxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB7cGFyc2V9IGZyb20gJ2Nzdi1wYXJzZS9zeW5jJztcblxuaW1wb3J0IHtFeGVjdXRlUGx1Z2luLCBQbHVnaW5QYXJhbXN9IGZyb20gJy4uLy4uL3R5cGVzL2ludGVyZmFjZSc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uL3V0aWwvdmFsaWRhdGlvbnMnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJy4uLy4uL3V0aWwvZXJyb3JzJztcblxuY29uc3Qge0NvbmZpZ05vdEZvdW5kRXJyb3IsIEZpbGVOb3RGb3VuZEVycm9yLCBJbnB1dFZhbGlkYXRpb25FcnJvcn0gPSBFUlJPUlM7XG5cbmV4cG9ydCBjb25zdCBDU1ZMb29rdXAgPSAoZ2xvYmFsQ29uZmlnOiBhbnkpOiBFeGVjdXRlUGx1Z2luID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAga2luZDogJ2V4ZWN1dGUnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgZ2l2ZW4gc3RyaW5nIGlzIFVSTC5cbiAgICovXG4gIGNvbnN0IGlzVVJMID0gKGZpbGVwYXRoOiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IFVSTChmaWxlcGF0aCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGdpdmVuIGBmaWxlcGF0aGAgaXMgdXJsLCB0aGVuIHRyaWVzIHRvIGZldGNoIGl0LlxuICAgKiBPdGhlcndpc2UgdHJpZXMgdG8gcmVhZCBmaWxlLlxuICAgKi9cbiAgY29uc3QgcmV0cmlldmVGaWxlID0gYXN5bmMgKGZpbGVwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNVUkwoZmlsZXBhdGgpKSB7XG4gICAgICBjb25zdCB7ZGF0YX0gPSBhd2FpdCBheGlvcy5nZXQoZmlsZXBhdGgpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEZpbGVOb3RGb3VuZEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZyB3aGlsZSByZWFkaW5nIHRoZSBmaWxlOiAke2ZpbGVwYXRofS5cbiAgICAgICAgJHtlcnJvci5yZXNwb25zZS5tZXNzYWdlfWApO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHJldHVybiByZWFkRmlsZShmaWxlcGF0aCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgdGhyb3cgbmV3IEZpbGVOb3RGb3VuZEVycm9yKFxuICAgICAgICBgU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUgcmVhZGluZyB0aGUgZmlsZTogJHtmaWxlcGF0aH0uIFxuJHtlcnJvcn1gXG4gICAgICApO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdmFsdWUgaXMgaW52YWxpZDogYHVuZGVmaW5lZGAsIGBudWxsYCBvciBhbiBlbXB0eSBzdHJpbmcsIHRoZW4gc2V0cyBgbmFuYCBpbnN0ZWFkLlxuICAgKi9cbiAgY29uc3Qgc2V0TmFuVmFsdWUgPSAodmFsdWU6IGFueSkgPT5cbiAgICB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJyA/ICduYW4nIDogdmFsdWU7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGVtcHR5IHZhbHVlcyB0byBgbmFuYC5cbiAgICovXG4gIGNvbnN0IG5hbmlmeUVtcHR5VmFsdWVzID0gKG9iamVjdDogYW55KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgICAgIG9iamVjdFtrZXldID0gc2V0TmFuVmFsdWUodmFsdWUpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldE5hblZhbHVlKG9iamVjdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIElmIGBmaWVsZGAgaXMgbWlzc2luZyBmcm9tIGBvYmplY3RgLCB0aGVuIHJlamVjdCB3aXRoIGVycm9yLlxuICAgKiBPdGhlcndpc2UgbmFuaWZ5IGVtcHR5IHZhbHVlcyBhbmQgcmV0dXJuIGRhdGEuXG4gICAqL1xuICBjb25zdCBmaWVsZEFjY2Vzc29yID0gKGZpZWxkOiBzdHJpbmcsIG9iamVjdDogYW55KSA9PiB7XG4gICAgaWYgKCEoYCR7ZmllbGR9YCBpbiBvYmplY3QpKSB7XG4gICAgICB0aHJvdyBuZXcgSW5wdXRWYWxpZGF0aW9uRXJyb3IoYFRoZXJlIGlzIG5vIGNvbHVtbiB3aXRoIG5hbWU6ICR7ZmllbGR9LmApO1xuICAgIH1cblxuICAgIHJldHVybiBuYW5pZnlFbXB0eVZhbHVlcyhvYmplY3RbZmllbGRdKTtcbiAgfTtcblxuICAvKipcbiAgICogMS4gSWYgb3V0cHV0IGlzIGFueXRoaW5nLCB0aGVuIHJlbW92ZXMgcXVlcnkgZGF0YSBmcm9tIGNzdiByZWNvcmQgdG8gZXNjYXBlIGR1cGxpY2F0ZXMuXG4gICAqIDIuIE90aGVyd2lzZSBjaGVja3MgaWYgaXQncyBhIG1pbHRpZGltZW5zaW9uYWwgYXJyYXksIHRoZW4gZ3JhYnMgbXVsdGlwbGUgZmllbGRzICgpLlxuICAgKiAzLiBJZiBub3QsIHRoZW4gcmV0dXJucyBzaW5nbGUgZmllbGQuXG4gICAqIDQuIEluIGNhc2UgaWYgaXQncyBzdHJpbmcsIHRoZW5cbiAgICovXG4gIGNvbnN0IGZpbHRlck91dHB1dCA9IChcbiAgICBkYXRhRnJvbUNTVjogYW55LFxuICAgIHBhcmFtczoge1xuICAgICAgb3V0cHV0OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHN0cmluZ1tdW107XG4gICAgICBxdWVyeTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB9XG4gICkgPT4ge1xuICAgIGNvbnN0IHtvdXRwdXQsIHF1ZXJ5fSA9IHBhcmFtcztcblxuICAgIGlmIChvdXRwdXQgPT09ICcqJykge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcblxuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGRlbGV0ZSBkYXRhRnJvbUNTVltrZXldO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBuYW5pZnlFbXB0eVZhbHVlcyhkYXRhRnJvbUNTVik7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkob3V0cHV0KSkge1xuICAgICAgLyoqIENoZWNrIGlmIGl0J3MgYSBtdWx0aWRpbWVuc2lvbmFsIGFycmF5LiAqL1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3V0cHV0WzBdKSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHt9O1xuXG4gICAgICAgIG91dHB1dC5mb3JFYWNoKG91dHB1dEZpZWxkID0+IHtcbiAgICAgICAgICAvKiogQ2hlY2sgaWYgdGhlcmUgaXMgbm8gcmVuYW1pbmcgcmVxdWVzdCwgdGhlbiBleHBvcnQgYXMgaXMgKi9cbiAgICAgICAgICBjb25zdCBvdXRwdXRUaXRsZSA9IG91dHB1dEZpZWxkWzFdIHx8IG91dHB1dEZpZWxkWzBdO1xuICAgICAgICAgIHJlc3VsdFtvdXRwdXRUaXRsZV0gPSBmaWVsZEFjY2Vzc29yKG91dHB1dEZpZWxkWzBdLCBkYXRhRnJvbUNTVik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG91dHB1dFRpdGxlID0gb3V0cHV0WzFdIHx8IG91dHB1dFswXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW291dHB1dFRpdGxlIGFzIHN0cmluZ106IGZpZWxkQWNjZXNzb3Iob3V0cHV0WzBdLCBkYXRhRnJvbUNTViksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBbb3V0cHV0XTogZmllbGRBY2Nlc3NvcihvdXRwdXQsIGRhdGFGcm9tQ1NWKSxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBBc3NlcnRzIENTViByZWNvcmQgd2l0aCBxdWVyeSBkYXRhLlxuICAgKi9cbiAgY29uc3Qgd2l0aENyaXRlcmlhID0gKHF1ZXJ5RGF0YTogUmVjb3JkPHN0cmluZywgYW55PikgPT4gKGNzdlJlY29yZDogYW55KSA9PiB7XG4gICAgY29uc3QgaWZNYXRjaGVzQ3JpdGVyaWEgPSBPYmplY3Qua2V5cyhxdWVyeURhdGEpLm1hcChcbiAgICAgIChrZXk6IHN0cmluZykgPT4gY3N2UmVjb3JkW2tleV0gPT0gcXVlcnlEYXRhW2tleV1cbiAgICApO1xuXG4gICAgcmV0dXJuIGlmTWF0Y2hlc0NyaXRlcmlhLmV2ZXJ5KHZhbHVlID0+IHZhbHVlID09PSB0cnVlKTtcbiAgfTtcblxuICAvKipcbiAgICogMS4gVmFsaWRhdGVzIGdsb2JhbCBjb25maWcuXG4gICAqIDIuIFRyaWVzIHRvIHJldHJpZXZlIGdpdmVuIGZpbGUgKHdpdGggdXJsIG9yIGxvY2FsIHBhdGgpLlxuICAgKiAzLiBQYXJzZXMgZ2l2ZW4gQ1NWLlxuICAgKiA0LiBGaWx0ZXJzIHJlcXVlc3RlZCBpbmZvcm1hdGlvbiBmcm9tIENTVi5cbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSBhc3luYyAoaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSkgPT4ge1xuICAgIGNvbnN0IHNhZmVHbG9iYWxDb25maWcgPSB2YWxpZGF0ZUdsb2JhbENvbmZpZygpO1xuICAgIGNvbnN0IHtmaWxlcGF0aCwgcXVlcnksIG91dHB1dH0gPSBzYWZlR2xvYmFsQ29uZmlnO1xuXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHJldHJpZXZlRmlsZShmaWxlcGF0aCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkQ1NWOiBhbnlbXSA9IHBhcnNlKGZpbGUsIHtcbiAgICAgICAgY29sdW1uczogdHJ1ZSxcbiAgICAgICAgc2tpcF9lbXB0eV9saW5lczogdHJ1ZSxcbiAgICAgICAgY2FzdDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaW5wdXRzLm1hcChpbnB1dCA9PiB7XG4gICAgICAgIC8qKiBDb2xsZWN0cyBxdWVyeSB2YWx1ZXMgZnJvbSBpbnB1dC4gKi9cbiAgICAgICAgY29uc3QgcXVlcnlEYXRhOiBhbnkgPSB7fTtcbiAgICAgICAgY29uc3QgcXVlcnlLZXlzID0gT2JqZWN0LmtleXMocXVlcnkpO1xuICAgICAgICBxdWVyeUtleXMuZm9yRWFjaChxdWVyeUtleSA9PiB7XG4gICAgICAgICAgY29uc3QgcXVlcnlWYWx1ZSA9IHF1ZXJ5W3F1ZXJ5S2V5XTtcbiAgICAgICAgICBxdWVyeURhdGFbcXVlcnlLZXldID0gaW5wdXRbcXVlcnlWYWx1ZV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qKiBHZXRzIHJlbGF0ZWQgZGF0YSBmcm9tIENTVi4gKi9cbiAgICAgICAgY29uc3QgcmVsYXRlZERhdGEgPSBwYXJzZWRDU1YuZmluZCh3aXRoQ3JpdGVyaWEocXVlcnlEYXRhKSk7XG5cbiAgICAgICAgaWYgKCFyZWxhdGVkRGF0YSkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnB1dFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgICdPbmUgb3IgbW9yZSBvZiB0aGUgZ2l2ZW4gcXVlcnkgcGFyYW1ldGVycyBhcmUgbm90IGZvdW5kIGluIHRoZSB0YXJnZXQgQ1NWIGZpbGUgY29sdW1uIGhlYWRlcnMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmlucHV0LFxuICAgICAgICAgIC4uLmZpbHRlck91dHB1dChyZWxhdGVkRGF0YSwge291dHB1dCwgcXVlcnl9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSW5wdXRWYWxpZGF0aW9uRXJyb3IoYEVycm9yIGhhcHBlbmVkIHdoaWxlIHBhcnNpbmcgZ2l2ZW4gQ1NWIGZpbGU6ICR7ZmlsZXBhdGh9XG4ke2Vycm9yfWApO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGZvciBgZmlsZXBhdGhgLCBgcXVlcnlgIGFuZCBgb3V0cHV0YCBmaWVsZHMgaW4gZ2xvYmFsIGNvbmZpZy5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmlnTm90Rm91bmRFcnJvcignR2xvYmFsIGNvbmZpZyBpcyBub3QgcHJvdmlkZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2xvYmFsQ29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICAgICAgZmlsZXBhdGg6IHouc3RyaW5nKCksXG4gICAgICBxdWVyeTogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSksXG4gICAgICBvdXRwdXQ6IHpcbiAgICAgICAgLnN0cmluZygpXG4gICAgICAgIC5vcih6LmFycmF5KHouc3RyaW5nKCkpKVxuICAgICAgICAub3Ioei5hcnJheSh6LmFycmF5KHouc3RyaW5nKCkpKSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2YgZ2xvYmFsQ29uZmlnU2NoZW1hPj4oXG4gICAgICBnbG9iYWxDb25maWdTY2hlbWEsXG4gICAgICBnbG9iYWxDb25maWdcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbWV0YWRhdGEsXG4gICAgZXhlY3V0ZSxcbiAgfTtcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import { ExecutePlugin, ConfigParams } from '../../types/interface';
2
+ export declare const Divide: (globalConfig: ConfigParams) => ExecutePlugin;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Divide = void 0;
4
+ const zod_1 = require("zod");
5
+ const errors_1 = require("../../util/errors");
6
+ const validations_1 = require("../../util/validations");
7
+ const { InputValidationError, ConfigNotFoundError } = errors_1.ERRORS;
8
+ const Divide = (globalConfig) => {
9
+ const metadata = {
10
+ kind: 'execute',
11
+ };
12
+ /**
13
+ * Calculate the division of each input parameter.
14
+ */
15
+ const execute = (inputs) => {
16
+ const safeGlobalConfig = validateGlobalConfig();
17
+ const { numerator, denominator, output } = safeGlobalConfig;
18
+ return inputs.map(input => {
19
+ const safeInput = Object.assign({}, input, validateSingleInput(input, numerator, denominator));
20
+ return {
21
+ ...input,
22
+ [output]: calculateDivide(safeInput, numerator, denominator),
23
+ };
24
+ });
25
+ };
26
+ /**
27
+ * Checks global config value are valid.
28
+ */
29
+ const validateGlobalConfig = () => {
30
+ if (!globalConfig) {
31
+ throw new ConfigNotFoundError('Global config is not provided.');
32
+ }
33
+ const schema = zod_1.z.object({
34
+ numerator: zod_1.z.string().min(1),
35
+ denominator: zod_1.z.string().or(zod_1.z.number().gt(0)),
36
+ output: zod_1.z.string(),
37
+ });
38
+ return (0, validations_1.validate)(schema, globalConfig);
39
+ };
40
+ /**
41
+ * Checks for required fields in input.
42
+ */
43
+ const validateSingleInput = (input, numerator, denominator) => {
44
+ const schema = zod_1.z
45
+ .object({
46
+ [numerator]: zod_1.z.number(),
47
+ [denominator]: zod_1.z.number().optional(),
48
+ })
49
+ .refine(() => {
50
+ if (typeof denominator === 'string' && !input[denominator]) {
51
+ throw new InputValidationError(`\`${denominator}\` is missing from the input.`);
52
+ }
53
+ return true;
54
+ });
55
+ return (0, validations_1.validate)(schema, input);
56
+ };
57
+ /**
58
+ * Calculates the division of the given parameter.
59
+ */
60
+ const calculateDivide = (input, numerator, denominator) => input[numerator] / (input[denominator] || denominator);
61
+ return {
62
+ metadata,
63
+ execute,
64
+ };
65
+ };
66
+ exports.Divide = Divide;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvZGl2aWRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUFzQjtBQUV0Qiw4Q0FBeUM7QUFDekMsd0RBQWdEO0FBSWhELE1BQU0sRUFBQyxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxDQUFDLFlBQTBCLEVBQWlCLEVBQUU7SUFDbEUsTUFBTSxRQUFRLEdBQUc7UUFDZixJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQXNCLEVBQUUsRUFBRTtRQUN6QyxNQUFNLGdCQUFnQixHQUFHLG9CQUFvQixFQUFFLENBQUM7UUFDaEQsTUFBTSxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFFMUQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzdCLEVBQUUsRUFDRixLQUFLLEVBQ0wsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FDbkQsQ0FBQztZQUVGLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLENBQUMsTUFBTSxDQUFDLEVBQUUsZUFBZSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDO2FBQzdELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixNQUFNLElBQUksbUJBQW1CLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNqRTtRQUVELE1BQU0sTUFBTSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLHNCQUFRLEVBQXlCLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsS0FBbUIsRUFDbkIsU0FBaUIsRUFDakIsV0FBNEIsRUFDNUIsRUFBRTtRQUNGLE1BQU0sTUFBTSxHQUFHLE9BQUM7YUFDYixNQUFNLENBQUM7WUFDTixDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7WUFDdkIsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1NBQ3JDLENBQUM7YUFDRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzFELE1BQU0sSUFBSSxvQkFBb0IsQ0FDNUIsS0FBSyxXQUFXLCtCQUErQixDQUNoRCxDQUFDO2FBQ0g7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBRUwsT0FBTyxJQUFBLHNCQUFRLEVBQXlCLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sZUFBZSxHQUFHLENBQ3RCLEtBQW1CLEVBQ25CLFNBQWlCLEVBQ2pCLFdBQTRCLEVBQzVCLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7SUFFNUQsT0FBTztRQUNMLFFBQVE7UUFDUixPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQWpGVyxRQUFBLE1BQU0sVUFpRmpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi4vLi4vdXRpbC9lcnJvcnMnO1xuaW1wb3J0IHt2YWxpZGF0ZX0gZnJvbSAnLi4vLi4vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7RXhlY3V0ZVBsdWdpbiwgUGx1Z2luUGFyYW1zLCBDb25maWdQYXJhbXN9IGZyb20gJy4uLy4uL3R5cGVzL2ludGVyZmFjZSc7XG5cbmNvbnN0IHtJbnB1dFZhbGlkYXRpb25FcnJvciwgQ29uZmlnTm90Rm91bmRFcnJvcn0gPSBFUlJPUlM7XG5cbmV4cG9ydCBjb25zdCBEaXZpZGUgPSAoZ2xvYmFsQ29uZmlnOiBDb25maWdQYXJhbXMpOiBFeGVjdXRlUGx1Z2luID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAga2luZDogJ2V4ZWN1dGUnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIGRpdmlzaW9uIG9mIGVhY2ggaW5wdXQgcGFyYW1ldGVyLlxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IChpbnB1dHM6IFBsdWdpblBhcmFtc1tdKSA9PiB7XG4gICAgY29uc3Qgc2FmZUdsb2JhbENvbmZpZyA9IHZhbGlkYXRlR2xvYmFsQ29uZmlnKCk7XG4gICAgY29uc3Qge251bWVyYXRvciwgZGVub21pbmF0b3IsIG91dHB1dH0gPSBzYWZlR2xvYmFsQ29uZmlnO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoaW5wdXQgPT4ge1xuICAgICAgY29uc3Qgc2FmZUlucHV0ID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIGlucHV0LFxuICAgICAgICB2YWxpZGF0ZVNpbmdsZUlucHV0KGlucHV0LCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIFtvdXRwdXRdOiBjYWxjdWxhdGVEaXZpZGUoc2FmZUlucHV0LCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENoZWNrcyBnbG9iYWwgY29uZmlnIHZhbHVlIGFyZSB2YWxpZC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmlnTm90Rm91bmRFcnJvcignR2xvYmFsIGNvbmZpZyBpcyBub3QgcHJvdmlkZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZW1hID0gei5vYmplY3Qoe1xuICAgICAgbnVtZXJhdG9yOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICAgIGRlbm9taW5hdG9yOiB6LnN0cmluZygpLm9yKHoubnVtYmVyKCkuZ3QoMCkpLFxuICAgICAgb3V0cHV0OiB6LnN0cmluZygpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIHNjaGVtYT4+KHNjaGVtYSwgZ2xvYmFsQ29uZmlnKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGZvciByZXF1aXJlZCBmaWVsZHMgaW4gaW5wdXQuXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZVNpbmdsZUlucHV0ID0gKFxuICAgIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gICAgbnVtZXJhdG9yOiBzdHJpbmcsXG4gICAgZGVub21pbmF0b3I6IG51bWJlciB8IHN0cmluZ1xuICApID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgW251bWVyYXRvcl06IHoubnVtYmVyKCksXG4gICAgICAgIFtkZW5vbWluYXRvcl06IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICAgIH0pXG4gICAgICAucmVmaW5lKCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBkZW5vbWluYXRvciA9PT0gJ3N0cmluZycgJiYgIWlucHV0W2Rlbm9taW5hdG9yXSkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnB1dFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgIGBcXGAke2Rlbm9taW5hdG9yfVxcYCBpcyBtaXNzaW5nIGZyb20gdGhlIGlucHV0LmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2Ygc2NoZW1hPj4oc2NoZW1hLCBpbnB1dCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRpdmlzaW9uIG9mIHRoZSBnaXZlbiBwYXJhbWV0ZXIuXG4gICAqL1xuICBjb25zdCBjYWxjdWxhdGVEaXZpZGUgPSAoXG4gICAgaW5wdXQ6IFBsdWdpblBhcmFtcyxcbiAgICBudW1lcmF0b3I6IHN0cmluZyxcbiAgICBkZW5vbWluYXRvcjogbnVtYmVyIHwgc3RyaW5nXG4gICkgPT4gaW5wdXRbbnVtZXJhdG9yXSAvIChpbnB1dFtkZW5vbWluYXRvcl0gfHwgZGVub21pbmF0b3IpO1xuXG4gIHJldHVybiB7XG4gICAgbWV0YWRhdGEsXG4gICAgZXhlY3V0ZSxcbiAgfTtcbn07XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { ExecutePlugin } from '../../types/interface';
2
+ import { ExponentConfig } from './types';
3
+ export declare const Exponent: (globalConfig: ExponentConfig) => ExecutePlugin;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Exponent = void 0;
4
+ const zod_1 = require("zod");
5
+ const errors_1 = require("../../util/errors");
6
+ const helpers_1 = require("../../util/helpers");
7
+ const validations_1 = require("../../util/validations");
8
+ const { InputValidationError } = errors_1.ERRORS;
9
+ const Exponent = (globalConfig) => {
10
+ const errorBuilder = (0, helpers_1.buildErrorMessage)(exports.Exponent.name);
11
+ const metadata = {
12
+ kind: 'execute',
13
+ };
14
+ /**
15
+ * Checks global config value are valid.
16
+ */
17
+ const validateGlobalConfig = () => {
18
+ const globalConfigSchema = zod_1.z.object({
19
+ 'input-parameter': zod_1.z.string().min(1),
20
+ exponent: zod_1.z.number().min(1),
21
+ 'output-parameter': zod_1.z.string().min(1),
22
+ });
23
+ return (0, validations_1.validate)(globalConfigSchema, globalConfig);
24
+ };
25
+ /**
26
+ * Checks for required fields in input.
27
+ */
28
+ const validateSingleInput = (input, inputParameter) => {
29
+ validateParamExists(input, inputParameter);
30
+ validateNumericString(input[inputParameter]);
31
+ };
32
+ const validateParamExists = (input, param) => {
33
+ if (input[param] === undefined) {
34
+ throw new InputValidationError(errorBuilder({
35
+ message: `${param} is missing from the input array`,
36
+ }));
37
+ }
38
+ };
39
+ const validateNumericString = (str) => {
40
+ if (isNaN(+Number(str))) {
41
+ throw new InputValidationError(errorBuilder({
42
+ message: `${str} is not numeric`,
43
+ }));
44
+ }
45
+ };
46
+ /**
47
+ * Calculate the input param raised by to the power of the given exponent.
48
+ */
49
+ const execute = (inputs) => {
50
+ const { 'input-parameter': inputParameter, exponent: exponent, 'output-parameter': outputParameter, } = validateGlobalConfig();
51
+ return inputs.map(input => {
52
+ validateSingleInput(input, inputParameter);
53
+ return {
54
+ ...input,
55
+ [outputParameter]: calculateExponent(input, inputParameter, exponent),
56
+ };
57
+ });
58
+ };
59
+ /**
60
+ * Calculates the input param raised by the power of a given exponent.
61
+ */
62
+ const calculateExponent = (input, inputParameter, exponent) => {
63
+ const base = input[inputParameter];
64
+ return Math.pow(base, exponent);
65
+ };
66
+ return {
67
+ metadata,
68
+ execute,
69
+ };
70
+ };
71
+ exports.Exponent = Exponent;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvZXhwb25lbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXNCO0FBRXRCLDhDQUF5QztBQUN6QyxnREFBcUQ7QUFDckQsd0RBQWdEO0FBS2hELE1BQU0sRUFBQyxvQkFBb0IsRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUUvQixNQUFNLFFBQVEsR0FBRyxDQUFDLFlBQTRCLEVBQWlCLEVBQUU7SUFDdEUsTUFBTSxZQUFZLEdBQUcsSUFBQSwyQkFBaUIsRUFBQyxnQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHO1FBQ2YsSUFBSSxFQUFFLFNBQVM7S0FDaEIsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxrQkFBa0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2xDLGlCQUFpQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzQixrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0QyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFtQixFQUFFLGNBQXNCLEVBQUUsRUFBRTtRQUMxRSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDM0MscUJBQXFCLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDO0lBRUYsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQW1CLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDakUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxvQkFBb0IsQ0FDNUIsWUFBWSxDQUFDO2dCQUNYLE9BQU8sRUFBRSxHQUFHLEtBQUssa0NBQWtDO2FBQ3BELENBQUMsQ0FDSCxDQUFDO1NBQ0g7SUFDSCxDQUFDLENBQUM7SUFFRixNQUFNLHFCQUFxQixHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7UUFDNUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN2QixNQUFNLElBQUksb0JBQW9CLENBQzVCLFlBQVksQ0FBQztnQkFDWCxPQUFPLEVBQUUsR0FBRyxHQUFHLGlCQUFpQjthQUNqQyxDQUFDLENBQ0gsQ0FBQztTQUNIO0lBQ0gsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQXNCLEVBQWtCLEVBQUU7UUFDekQsTUFBTSxFQUNKLGlCQUFpQixFQUFFLGNBQWMsRUFDakMsUUFBUSxFQUFFLFFBQVEsRUFDbEIsa0JBQWtCLEVBQUUsZUFBZSxHQUNwQyxHQUFHLG9CQUFvQixFQUFFLENBQUM7UUFDM0IsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztZQUUzQyxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLGVBQWUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDO2FBQ3RFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixLQUFtQixFQUNuQixjQUFzQixFQUN0QixRQUFnQixFQUNoQixFQUFFO1FBQ0YsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLFFBQVE7UUFDUixPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXJGVyxRQUFBLFFBQVEsWUFxRm5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi4vLi4vdXRpbC9lcnJvcnMnO1xuaW1wb3J0IHtidWlsZEVycm9yTWVzc2FnZX0gZnJvbSAnLi4vLi4vdXRpbC9oZWxwZXJzJztcbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uL3V0aWwvdmFsaWRhdGlvbnMnO1xuXG5pbXBvcnQge0V4ZWN1dGVQbHVnaW4sIFBsdWdpblBhcmFtc30gZnJvbSAnLi4vLi4vdHlwZXMvaW50ZXJmYWNlJztcbmltcG9ydCB7RXhwb25lbnRDb25maWd9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCB7SW5wdXRWYWxpZGF0aW9uRXJyb3J9ID0gRVJST1JTO1xuXG5leHBvcnQgY29uc3QgRXhwb25lbnQgPSAoZ2xvYmFsQ29uZmlnOiBFeHBvbmVudENvbmZpZyk6IEV4ZWN1dGVQbHVnaW4gPT4ge1xuICBjb25zdCBlcnJvckJ1aWxkZXIgPSBidWlsZEVycm9yTWVzc2FnZShFeHBvbmVudC5uYW1lKTtcbiAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAga2luZDogJ2V4ZWN1dGUnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgZ2xvYmFsIGNvbmZpZyB2YWx1ZSBhcmUgdmFsaWQuXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZUdsb2JhbENvbmZpZyA9ICgpID0+IHtcbiAgICBjb25zdCBnbG9iYWxDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICAnaW5wdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICBleHBvbmVudDogei5udW1iZXIoKS5taW4oMSksXG4gICAgICAnb3V0cHV0LXBhcmFtZXRlcic6IHouc3RyaW5nKCkubWluKDEpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIGdsb2JhbENvbmZpZ1NjaGVtYT4+KFxuICAgICAgZ2xvYmFsQ29uZmlnU2NoZW1hLFxuICAgICAgZ2xvYmFsQ29uZmlnXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGZvciByZXF1aXJlZCBmaWVsZHMgaW4gaW5wdXQuXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZVNpbmdsZUlucHV0ID0gKGlucHV0OiBQbHVnaW5QYXJhbXMsIGlucHV0UGFyYW1ldGVyOiBzdHJpbmcpID0+IHtcbiAgICB2YWxpZGF0ZVBhcmFtRXhpc3RzKGlucHV0LCBpbnB1dFBhcmFtZXRlcik7XG4gICAgdmFsaWRhdGVOdW1lcmljU3RyaW5nKGlucHV0W2lucHV0UGFyYW1ldGVyXSk7XG4gIH07XG5cbiAgY29uc3QgdmFsaWRhdGVQYXJhbUV4aXN0cyA9IChpbnB1dDogUGx1Z2luUGFyYW1zLCBwYXJhbTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlucHV0W3BhcmFtXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgSW5wdXRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGVycm9yQnVpbGRlcih7XG4gICAgICAgICAgbWVzc2FnZTogYCR7cGFyYW19IGlzIG1pc3NpbmcgZnJvbSB0aGUgaW5wdXQgYXJyYXlgLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdmFsaWRhdGVOdW1lcmljU3RyaW5nID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlzTmFOKCtOdW1iZXIoc3RyKSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnB1dFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgZXJyb3JCdWlsZGVyKHtcbiAgICAgICAgICBtZXNzYWdlOiBgJHtzdHJ9IGlzIG5vdCBudW1lcmljYCxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIGlucHV0IHBhcmFtIHJhaXNlZCBieSB0byB0aGUgcG93ZXIgb2YgdGhlIGdpdmVuIGV4cG9uZW50LlxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IChpbnB1dHM6IFBsdWdpblBhcmFtc1tdKTogUGx1Z2luUGFyYW1zW10gPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXInOiBpbnB1dFBhcmFtZXRlcixcbiAgICAgIGV4cG9uZW50OiBleHBvbmVudCxcbiAgICAgICdvdXRwdXQtcGFyYW1ldGVyJzogb3V0cHV0UGFyYW1ldGVyLFxuICAgIH0gPSB2YWxpZGF0ZUdsb2JhbENvbmZpZygpO1xuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgIHZhbGlkYXRlU2luZ2xlSW5wdXQoaW5wdXQsIGlucHV0UGFyYW1ldGVyKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIFtvdXRwdXRQYXJhbWV0ZXJdOiBjYWxjdWxhdGVFeHBvbmVudChpbnB1dCwgaW5wdXRQYXJhbWV0ZXIsIGV4cG9uZW50KSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGlucHV0IHBhcmFtIHJhaXNlZCBieSB0aGUgcG93ZXIgb2YgYSBnaXZlbiBleHBvbmVudC5cbiAgICovXG4gIGNvbnN0IGNhbGN1bGF0ZUV4cG9uZW50ID0gKFxuICAgIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gICAgaW5wdXRQYXJhbWV0ZXI6IHN0cmluZyxcbiAgICBleHBvbmVudDogbnVtYmVyXG4gICkgPT4ge1xuICAgIGNvbnN0IGJhc2UgPSBpbnB1dFtpbnB1dFBhcmFtZXRlcl07XG4gICAgcmV0dXJuIE1hdGgucG93KGJhc2UsIGV4cG9uZW50KTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG1ldGFkYXRhLFxuICAgIGV4ZWN1dGUsXG4gIH07XG59O1xuIl19
@@ -0,0 +1,5 @@
1
+ export type ExponentConfig = {
2
+ 'input-parameter': string;
3
+ exponent: number;
4
+ 'output-parameter': string;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbHRpbnMvZXhwb25lbnQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEV4cG9uZW50Q29uZmlnID0ge1xuICAnaW5wdXQtcGFyYW1ldGVyJzogc3RyaW5nO1xuICBleHBvbmVudDogbnVtYmVyO1xuICAnb3V0cHV0LXBhcmFtZXRlcic6IHN0cmluZztcbn07XG4iXX0=
@@ -26,7 +26,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.ExportCSVRaw = void 0;
27
27
  const fs = __importStar(require("fs/promises"));
28
28
  const errors_1 = require("../util/errors");
29
+ const strings_1 = require("../config/strings");
29
30
  const { ExhaustError } = errors_1.ERRORS;
31
+ const { EXPORTING_RAW_CSV_FILE } = strings_1.STRINGS;
30
32
  const ExportCSVRaw = () => {
31
33
  /**
32
34
  * handle a tree leaf, where there are no child nodes, by adding it as key->value pair to the flat map
@@ -118,6 +120,7 @@ const ExportCSVRaw = () => {
118
120
  if (!outputPath) {
119
121
  throw new ExhaustError('Output path is required.');
120
122
  }
123
+ console.debug(EXPORTING_RAW_CSV_FILE(outputPath));
121
124
  const [extractredFlatMap, extractedHeaders] = extractFlatMapAndHeaders(tree);
122
125
  const ids = new Set(Object.keys(extractredFlatMap).map(key => extractIdHelper(key)));
123
126
  const csvString = getCsvString(extractredFlatMap, extractedHeaders, ids);
@@ -126,4 +129,4 @@ const ExportCSVRaw = () => {
126
129
  return { execute };
127
130
  };
128
131
  exports.ExportCSVRaw = ExportCSVRaw;
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWNzdi1yYXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbHRpbnMvZXhwb3J0LWNzdi1yYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFFbEMsMkNBQXNDO0FBS3RDLE1BQU0sRUFBQyxZQUFZLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFdkIsTUFBTSxZQUFZLEdBQUcsR0FBMkIsRUFBRTtJQUN2RDs7O09BR0c7SUFDSCxNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsR0FBUSxFQUNSLE9BQTZCLEVBQzdCLE9BQW9CLEVBQ3BCLEVBQUU7UUFDRixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsT0FBNEIsRUFDNUIsT0FBb0IsRUFDcEIsRUFBRTtRQUNGLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTNFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDckQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztZQUVILFVBQVUsQ0FB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QUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2xEO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLElBQUksWUFBWSxDQUFDLDBCQUEwQixVQUFVLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLElBQVMsRUFBRSxRQUFpQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtRQUN6RSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsTUFBTSxJQUFJLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsTUFBTSxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLEdBQ3pDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2hFLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFekUsTUFBTSxlQUFlLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQztJQUVGLE9BQU8sRUFBQyxPQUFPLEVBQUMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUEvSVcsUUFBQSxZQUFZLGdCQStJdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5cbmltcG9ydCB7RVJST1JTfSBmcm9tICcuLi91dGlsL2Vycm9ycyc7XG5cbmltcG9ydCB7RXhoYXVzdFBsdWdpbkludGVyZmFjZX0gZnJvbSAnLi4vdHlwZXMvZXhoYXVzdC1wbHVnaW4taW50ZXJmYWNlJztcbmltcG9ydCB7Q29udGV4dH0gZnJvbSAnLi4vdHlwZXMvbWFuaWZlc3QnO1xuXG5jb25zdCB7RXhoYXVzdEVycm9yfSA9IEVSUk9SUztcblxuZXhwb3J0IGNvbnN0IEV4cG9ydENTVlJhdyA9ICgpOiBFeGhhdXN0UGx1Z2luSW50ZXJmYWNlID0+IHtcbiAgLyoqXG4gICAqIGhhbmRsZSBhIHRyZWUgbGVhZiwgd2hlcmUgdGhlcmUgYXJlIG5vIGNoaWxkIG5vZGVzLCBieSBhZGRpbmcgaXQgYXMga2V5LT52YWx1ZSBwYWlyIHRvIHRoZSBmbGF0IG1hcFxuICAgKiBhbmQgY2FwdHVyaW5nIGtleSBhcyBhIGhlYWRlclxuICAgKi9cbiAgY29uc3QgaGFuZGxlTGVhZlZhbHVlID0gKFxuICAgIHZhbHVlOiBhbnksXG4gICAgZnVsbFBhdGg6IHN0cmluZyxcbiAgICBrZXk6IGFueSxcbiAgICBmbGF0TWFwOiB7W2tleTogc3RyaW5nXTogYW55fSxcbiAgICBoZWFkZXJzOiBTZXQ8c3RyaW5nPlxuICApID0+IHtcbiAgICBpZiAoZnVsbFBhdGguaW5jbHVkZXMoJ291dHB1dHMnKSkge1xuICAgICAgaGVhZGVycy5hZGQoa2V5KTtcbiAgICAgIGZsYXRNYXBbZnVsbFBhdGhdID0gdmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBoYW5kbGUgYSB0cmVlIG5vZGUsIHJlY3Vyc2l2ZWx5IHRyYXZlcnNlIHRoZSBjaGlsZHJlbiBhbmQgYXBwZW5kIHRoZWlyIHJlc3VsdHMgdG8gdGhlIGZsYXQgbWFwIGFuZCBjYXB0dXJlZCBoZWFkZXJzXG4gICAqL1xuICBjb25zdCBoYW5kbGVOb2RlVmFsdWUgPSAoXG4gICAgdmFsdWU6IGFueSxcbiAgICBmdWxsUGF0aDogc3RyaW5nLFxuICAgIGZsYXRNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgaGVhZGVyczogU2V0PHN0cmluZz5cbiAgKSA9PiB7XG4gICAgY29uc3QgW3N1YkZsYXRNYXAsIHN1YkhlYWRlcnNdID0gZXh0cmFjdEZsYXRNYXBBbmRIZWFkZXJzKHZhbHVlLCBmdWxsUGF0aCk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoc3ViRmxhdE1hcCkubGVuZ3RoID4gMCkge1xuICAgICAgT2JqZWN0LmVudHJpZXMoc3ViRmxhdE1hcCkuZm9yRWFjaCgoW3N1YktleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGZsYXRNYXBbc3ViS2V5XSA9IHZhbHVlO1xuICAgICAgfSk7XG5cbiAgICAgIHN1YkhlYWRlcnMuZm9yRWFjaChzdWJIZWFkZXIgPT4ge1xuICAgICAgICBoZWFkZXJzLmFkZChzdWJIZWFkZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGEga2V5IGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHRyZWVcbiAgICovXG4gIGNvbnN0IGhhbmRsZUtleSA9IChcbiAgICB2YWx1ZTogYW55LFxuICAgIGtleTogYW55LFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIGZsYXRNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgaGVhZGVyczogU2V0PHN0cmluZz5cbiAgKSA9PiB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBwcmVmaXggPyBgJHtwcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGhhbmRsZU5vZGVWYWx1ZSh2YWx1ZSwgZnVsbFBhdGgsIGZsYXRNYXAsIGhlYWRlcnMpO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGVMZWFmVmFsdWUodmFsdWUsIGZ1bGxQYXRoLCBrZXksIGZsYXRNYXAsIGhlYWRlcnMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBleHRyYWN0IGEgZmxhdCBtYXAgYW5kIGhlYWRlcnMgZnJvbSB0aGUgaGllcmFyY2lhbCB0cmVlLlxuICAgKi9cbiAgY29uc3QgZXh0cmFjdEZsYXRNYXBBbmRIZWFkZXJzID0gKFxuICAgIHRyZWU6IGFueSxcbiAgICBwcmVmaXggPSAnJ1xuICApOiBbUmVjb3JkPHN0cmluZywgYW55PiwgU2V0PHN0cmluZz5dID0+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCBmbGF0TWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0cmVlKSB7XG4gICAgICBpZiAoa2V5IGluIHRyZWUpIHtcbiAgICAgICAgaGFuZGxlS2V5KHRyZWVba2V5XSwga2V5LCBwcmVmaXgsIGZsYXRNYXAsIGhlYWRlcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbZmxhdE1hcCwgaGVhZGVyc107XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3QgdGhlIGlkIG9mIHRoZSBrZXksIHRoYXQgaXMgcmVtb3ZpbmcgdGhlIGxhc3QgdG9rZW4gKHdoaWNoIGlzIHRoZSBpbmRleCkuXG4gICAqIGluIHRoaXMgbWFubmVyLCBtdWx0aXBsZSBrZXlzIHRoYXQgaWRlbnRpY2FsIGJlc2lkZXMgdGhlaXIgaW5kZXggc2hhcmUgdGhlIHNhbWUgaWQuXG4gICAqL1xuICBjb25zdCBleHRyYWN0SWRIZWxwZXIgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHBhcnRzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgcGFydHMucG9wKCk7XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignLicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZSBhIENTViBmb3JtYXR0ZWQgc3RyaW5nIGJhc2VkIG9uIGEgZmxhdCBrZXktPnZhbHVlIG1hcCwgaGVhZGVycyBhbmQgaWRzXG4gICAqL1xuICBjb25zdCBnZXRDc3ZTdHJpbmcgPSAoXG4gICAgbWFwOiB7W2tleTogc3RyaW5nXTogYW55fSxcbiAgICBoZWFkZXJzOiBTZXQ8c3RyaW5nPixcbiAgICBpZHM6IFNldDxzdHJpbmc+XG4gICk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgY3N2Um93czogc3RyaW5nW10gPSBbXTtcbiAgICBjc3ZSb3dzLnB1c2goWydpZCcsIC4uLmhlYWRlcnNdLmpvaW4oJywnKSk7XG5cbiAgICBpZHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCByb3dEYXRhID0gW2lkXTtcblxuICAgICAgaGVhZGVycy5mb3JFYWNoKGhlYWRlciA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbWFwW2Ake2lkfS4ke2hlYWRlcn1gXSA/PyAnJztcbiAgICAgICAgcm93RGF0YS5wdXNoKHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgfSk7XG4gICAgICBjc3ZSb3dzLnB1c2gocm93RGF0YS5qb2luKCcsJykpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNzdlJvd3Muam9pbignXFxuJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHdyaXRlIHRoZSBnaXZlbiBzdHJpbmcgY29udGVudCB0byBhIGZpbGUgYXQgdGhlIHByb3ZpZGVkIHBhdGhcbiAgICovXG4gIGNvbnN0IHdyaXRlT3V0cHV0RmlsZSA9IGFzeW5jIChjb250ZW50OiBzdHJpbmcsIG91dHB1dFBhdGg6IHN0cmluZykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUoYCR7b3V0cHV0UGF0aH0uY3N2YCwgY29udGVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFeGhhdXN0RXJyb3IoYEZhaWxlZCB0byB3cml0ZSBDU1YgdG8gJHtvdXRwdXRQYXRofTogJHtlcnJvcn1gKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4cG9ydCB0aGUgcHJvdmlkZWQgdHJlZSBjb250ZW50IHRvIGEgQ1NWIGZpbGUsIHJlcHJlc2VudGVkIGluIGEgZmxhdCBzdHJ1Y3R1cmVcbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSBhc3luYyAodHJlZTogYW55LCBfY29udGV4dDogQ29udGV4dCwgb3V0cHV0UGF0aDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFvdXRwdXRQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXhoYXVzdEVycm9yKCdPdXRwdXQgcGF0aCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBbZXh0cmFjdHJlZEZsYXRNYXAsIGV4dHJhY3RlZEhlYWRlcnNdID1cbiAgICAgIGV4dHJhY3RGbGF0TWFwQW5kSGVhZGVycyh0cmVlKTtcbiAgICBjb25zdCBpZHMgPSBuZXcgU2V0KFxuICAgICAgT2JqZWN0LmtleXMoZXh0cmFjdHJlZEZsYXRNYXApLm1hcChrZXkgPT4gZXh0cmFjdElkSGVscGVyKGtleSkpXG4gICAgKTtcbiAgICBjb25zdCBjc3ZTdHJpbmcgPSBnZXRDc3ZTdHJpbmcoZXh0cmFjdHJlZEZsYXRNYXAsIGV4dHJhY3RlZEhlYWRlcnMsIGlkcyk7XG5cbiAgICBhd2FpdCB3cml0ZU91dHB1dEZpbGUoY3N2U3RyaW5nLCBvdXRwdXRQYXRoKTtcbiAgfTtcblxuICByZXR1cm4ge2V4ZWN1dGV9O1xufTtcbiJdfQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWNzdi1yYXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbHRpbnMvZXhwb3J0LWNzdi1yYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFFbEMsMkNBQXNDO0FBS3RDLCtDQUEwQztBQUUxQyxNQUFNLEVBQUMsWUFBWSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBQzlCLE1BQU0sRUFBQyxzQkFBc0IsRUFBQyxHQUFHLGlCQUFPLENBQUM7QUFFbEMsTUFBTSxZQUFZLEdBQUcsR0FBMkIsRUFBRTtJQUN2RDs7O09BR0c7SUFDSCxNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsR0FBUSxFQUNSLE9BQTZCLEVBQzdCLE9BQW9CLEVBQ3BCLEVBQUU7UUFDRixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsT0FBNEIsRUFDNUIsT0FBb0IsRUFDcEIsRUFBRTtRQUNGLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTNFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDckQsT0FBTyxDQUFDLE1B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cnQge0VSUk9SU30gZnJvbSAnLi4vdXRpbC9lcnJvcnMnO1xuXG5pbXBvcnQge0V4aGF1c3RQbHVnaW5JbnRlcmZhY2V9IGZyb20gJy4uL3R5cGVzL2V4aGF1c3QtcGx1Z2luLWludGVyZmFjZSc7XG5pbXBvcnQge0NvbnRleHR9IGZyb20gJy4uL3R5cGVzL21hbmlmZXN0JztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi9jb25maWcvc3RyaW5ncyc7XG5cbmNvbnN0IHtFeGhhdXN0RXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge0VYUE9SVElOR19SQVdfQ1NWX0ZJTEV9ID0gU1RSSU5HUztcblxuZXhwb3J0IGNvbnN0IEV4cG9ydENTVlJhdyA9ICgpOiBFeGhhdXN0UGx1Z2luSW50ZXJmYWNlID0+IHtcbiAgLyoqXG4gICAqIGhhbmRsZSBhIHRyZWUgbGVhZiwgd2hlcmUgdGhlcmUgYXJlIG5vIGNoaWxkIG5vZGVzLCBieSBhZGRpbmcgaXQgYXMga2V5LT52YWx1ZSBwYWlyIHRvIHRoZSBmbGF0IG1hcFxuICAgKiBhbmQgY2FwdHVyaW5nIGtleSBhcyBhIGhlYWRlclxuICAgKi9cbiAgY29uc3QgaGFuZGxlTGVhZlZhbHVlID0gKFxuICAgIHZhbHVlOiBhbnksXG4gICAgZnVsbFBhdGg6IHN0cmluZyxcbiAgICBrZXk6IGFueSxcbiAgICBmbGF0TWFwOiB7W2tleTogc3RyaW5nXTogYW55fSxcbiAgICBoZWFkZXJzOiBTZXQ8c3RyaW5nPlxuICApID0+IHtcbiAgICBpZiAoZnVsbFBhdGguaW5jbHVkZXMoJ291dHB1dHMnKSkge1xuICAgICAgaGVhZGVycy5hZGQoa2V5KTtcbiAgICAgIGZsYXRNYXBbZnVsbFBhdGhdID0gdmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBoYW5kbGUgYSB0cmVlIG5vZGUsIHJlY3Vyc2l2ZWx5IHRyYXZlcnNlIHRoZSBjaGlsZHJlbiBhbmQgYXBwZW5kIHRoZWlyIHJlc3VsdHMgdG8gdGhlIGZsYXQgbWFwIGFuZCBjYXB0dXJlZCBoZWFkZXJzXG4gICAqL1xuICBjb25zdCBoYW5kbGVOb2RlVmFsdWUgPSAoXG4gICAgdmFsdWU6IGFueSxcbiAgICBmdWxsUGF0aDogc3RyaW5nLFxuICAgIGZsYXRNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgaGVhZGVyczogU2V0PHN0cmluZz5cbiAgKSA9PiB7XG4gICAgY29uc3QgW3N1YkZsYXRNYXAsIHN1YkhlYWRlcnNdID0gZXh0cmFjdEZsYXRNYXBBbmRIZWFkZXJzKHZhbHVlLCBmdWxsUGF0aCk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoc3ViRmxhdE1hcCkubGVuZ3RoID4gMCkge1xuICAgICAgT2JqZWN0LmVudHJpZXMoc3ViRmxhdE1hcCkuZm9yRWFjaCgoW3N1YktleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGZsYXRNYXBbc3ViS2V5XSA9IHZhbHVlO1xuICAgICAgfSk7XG5cbiAgICAgIHN1YkhlYWRlcnMuZm9yRWFjaChzdWJIZWFkZXIgPT4ge1xuICAgICAgICBoZWFkZXJzLmFkZChzdWJIZWFkZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGEga2V5IGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHRyZWVcbiAgICovXG4gIGNvbnN0IGhhbmRsZUtleSA9IChcbiAgICB2YWx1ZTogYW55LFxuICAgIGtleTogYW55LFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIGZsYXRNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgaGVhZGVyczogU2V0PHN0cmluZz5cbiAgKSA9PiB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBwcmVmaXggPyBgJHtwcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGhhbmRsZU5vZGVWYWx1ZSh2YWx1ZSwgZnVsbFBhdGgsIGZsYXRNYXAsIGhlYWRlcnMpO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGVMZWFmVmFsdWUodmFsdWUsIGZ1bGxQYXRoLCBrZXksIGZsYXRNYXAsIGhlYWRlcnMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBleHRyYWN0IGEgZmxhdCBtYXAgYW5kIGhlYWRlcnMgZnJvbSB0aGUgaGllcmFyY2lhbCB0cmVlLlxuICAgKi9cbiAgY29uc3QgZXh0cmFjdEZsYXRNYXBBbmRIZWFkZXJzID0gKFxuICAgIHRyZWU6IGFueSxcbiAgICBwcmVmaXggPSAnJ1xuICApOiBbUmVjb3JkPHN0cmluZywgYW55PiwgU2V0PHN0cmluZz5dID0+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCBmbGF0TWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0cmVlKSB7XG4gICAgICBpZiAoa2V5IGluIHRyZWUpIHtcbiAgICAgICAgaGFuZGxlS2V5KHRyZWVba2V5XSwga2V5LCBwcmVmaXgsIGZsYXRNYXAsIGhlYWRlcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbZmxhdE1hcCwgaGVhZGVyc107XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3QgdGhlIGlkIG9mIHRoZSBrZXksIHRoYXQgaXMgcmVtb3ZpbmcgdGhlIGxhc3QgdG9rZW4gKHdoaWNoIGlzIHRoZSBpbmRleCkuXG4gICAqIGluIHRoaXMgbWFubmVyLCBtdWx0aXBsZSBrZXlzIHRoYXQgaWRlbnRpY2FsIGJlc2lkZXMgdGhlaXIgaW5kZXggc2hhcmUgdGhlIHNhbWUgaWQuXG4gICAqL1xuICBjb25zdCBleHRyYWN0SWRIZWxwZXIgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHBhcnRzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgcGFydHMucG9wKCk7XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignLicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZSBhIENTViBmb3JtYXR0ZWQgc3RyaW5nIGJhc2VkIG9uIGEgZmxhdCBrZXktPnZhbHVlIG1hcCwgaGVhZGVycyBhbmQgaWRzXG4gICAqL1xuICBjb25zdCBnZXRDc3ZTdHJpbmcgPSAoXG4gICAgbWFwOiB7W2tleTogc3RyaW5nXTogYW55fSxcbiAgICBoZWFkZXJzOiBTZXQ8c3RyaW5nPixcbiAgICBpZHM6IFNldDxzdHJpbmc+XG4gICk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgY3N2Um93czogc3RyaW5nW10gPSBbXTtcbiAgICBjc3ZSb3dzLnB1c2goWydpZCcsIC4uLmhlYWRlcnNdLmpvaW4oJywnKSk7XG5cbiAgICBpZHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCByb3dEYXRhID0gW2lkXTtcblxuICAgICAgaGVhZGVycy5mb3JFYWNoKGhlYWRlciA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbWFwW2Ake2lkfS4ke2hlYWRlcn1gXSA/PyAnJztcbiAgICAgICAgcm93RGF0YS5wdXNoKHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgfSk7XG4gICAgICBjc3ZSb3dzLnB1c2gocm93RGF0YS5qb2luKCcsJykpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNzdlJvd3Muam9pbignXFxuJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHdyaXRlIHRoZSBnaXZlbiBzdHJpbmcgY29udGVudCB0byBhIGZpbGUgYXQgdGhlIHByb3ZpZGVkIHBhdGhcbiAgICovXG4gIGNvbnN0IHdyaXRlT3V0cHV0RmlsZSA9IGFzeW5jIChjb250ZW50OiBzdHJpbmcsIG91dHB1dFBhdGg6IHN0cmluZykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUoYCR7b3V0cHV0UGF0aH0uY3N2YCwgY29udGVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFeGhhdXN0RXJyb3IoYEZhaWxlZCB0byB3cml0ZSBDU1YgdG8gJHtvdXRwdXRQYXRofTogJHtlcnJvcn1gKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4cG9ydCB0aGUgcHJvdmlkZWQgdHJlZSBjb250ZW50IHRvIGEgQ1NWIGZpbGUsIHJlcHJlc2VudGVkIGluIGEgZmxhdCBzdHJ1Y3R1cmVcbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSBhc3luYyAodHJlZTogYW55LCBfY29udGV4dDogQ29udGV4dCwgb3V0cHV0UGF0aDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFvdXRwdXRQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXhoYXVzdEVycm9yKCdPdXRwdXQgcGF0aCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmRlYnVnKEVYUE9SVElOR19SQVdfQ1NWX0ZJTEUob3V0cHV0UGF0aCkpO1xuXG4gICAgY29uc3QgW2V4dHJhY3RyZWRGbGF0TWFwLCBleHRyYWN0ZWRIZWFkZXJzXSA9XG4gICAgICBleHRyYWN0RmxhdE1hcEFuZEhlYWRlcnModHJlZSk7XG4gICAgY29uc3QgaWRzID0gbmV3IFNldChcbiAgICAgIE9iamVjdC5rZXlzKGV4dHJhY3RyZWRGbGF0TWFwKS5tYXAoa2V5ID0+IGV4dHJhY3RJZEhlbHBlcihrZXkpKVxuICAgICk7XG4gICAgY29uc3QgY3N2U3RyaW5nID0gZ2V0Q3N2U3RyaW5nKGV4dHJhY3RyZWRGbGF0TWFwLCBleHRyYWN0ZWRIZWFkZXJzLCBpZHMpO1xuXG4gICAgYXdhaXQgd3JpdGVPdXRwdXRGaWxlKGNzdlN0cmluZywgb3V0cHV0UGF0aCk7XG4gIH07XG5cbiAgcmV0dXJuIHtleGVjdXRlfTtcbn07XG4iXX0=
@@ -4,7 +4,9 @@ exports.ExportCSV = void 0;
4
4
  const promises_1 = require("fs/promises");
5
5
  const sync_1 = require("csv-stringify/sync");
6
6
  const errors_1 = require("../util/errors");
7
+ const strings_1 = require("../config/strings");
7
8
  const { ExhaustError } = errors_1.ERRORS;
9
+ const { EXPORTING_TO_CSV_FILE } = strings_1.STRINGS;
8
10
  /**
9
11
  * Extension to IF that outputs the tree in a CSV format.
10
12
  */
@@ -17,6 +19,7 @@ const ExportCSV = () => {
17
19
  if (paths.length <= 1 || !criteria) {
18
20
  throw new ExhaustError('CSV export criteria is not found in output path. Please append it after --output <path>#.');
19
21
  }
22
+ console.debug(EXPORTING_TO_CSV_FILE(output));
20
23
  return {
21
24
  output,
22
25
  criteria,
@@ -93,4 +96,4 @@ const ExportCSV = () => {
93
96
  };
94
97
  };
95
98
  exports.ExportCSV = ExportCSV;
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWNzdi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsdGlucy9leHBvcnQtY3N2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBDQUFzQztBQUN0Qyw2Q0FBNkM7QUFFN0MsMkNBQXNDO0FBS3RDLE1BQU0sRUFBQyxZQUFZLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFOUI7O0dBRUc7QUFDSSxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUU7SUFDNUIsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtRQUNqRCxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXpDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEMsTUFBTSxJQUFJLFlBQVksQ0FDcEIsMkZBQTJGLENBQzVGLENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxNQUFNO1lBQ04sUUFBUTtTQUNULENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFrQixFQUFFLEVBQUU7UUFDaEQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE1BQU0sSUFBSSxZQUFZLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUNwRDtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcs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QUFPO1FBQ1AsUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLFNBQVM7U0FDaEI7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBeEdXLFFBQUEsU0FBUyxhQXdHcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3dyaXRlRmlsZX0gZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHtzdHJpbmdpZnl9IGZyb20gJ2Nzdi1zdHJpbmdpZnkvc3luYyc7XG5cbmltcG9ydCB7RVJST1JTfSBmcm9tICcuLi91dGlsL2Vycm9ycyc7XG5cbmltcG9ydCB7Q29udGV4dH0gZnJvbSAnLi4vdHlwZXMvbWFuaWZlc3QnO1xuaW1wb3J0IHtQbHVnaW5QYXJhbXN9IGZyb20gJy4uL3R5cGVzL2ludGVyZmFjZSc7XG5cbmNvbnN0IHtFeGhhdXN0RXJyb3J9ID0gRVJST1JTO1xuXG4vKipcbiAqIEV4dGVuc2lvbiB0byBJRiB0aGF0IG91dHB1dHMgdGhlIHRyZWUgaW4gYSBDU1YgZm9ybWF0LlxuICovXG5leHBvcnQgY29uc3QgRXhwb3J0Q1NWID0gKCkgPT4ge1xuICBjb25zdCBwYXJzZU91dHB1dEFuZEZpZWxkID0gKG91dHB1dFBhdGg6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRlZFBhdGggPSB2YWxpZGF0ZU91dHB1dFBhdGgob3V0cHV0UGF0aCk7XG5cbiAgICBjb25zdCBwYXRocyA9IHZhbGlkYXRlZFBhdGguc3BsaXQoJyMnKTtcbiAgICBjb25zdCBvdXRwdXQgPSBwYXRocy5zbGljZSgwLCBwYXRocy5sZW5ndGggLSAxKS5qb2luKCcnKTtcbiAgICBjb25zdCBjcml0ZXJpYSA9IHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKHBhdGhzLmxlbmd0aCA8PSAxIHx8ICFjcml0ZXJpYSkge1xuICAgICAgdGhyb3cgbmV3IEV4aGF1c3RFcnJvcihcbiAgICAgICAgJ0NTViBleHBvcnQgY3JpdGVyaWEgaXMgbm90IGZvdW5kIGluIG91dHB1dCBwYXRoLiBQbGVhc2UgYXBwZW5kIGl0IGFmdGVyIC0tb3V0cHV0IDxwYXRoPiMuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3V0cHV0LFxuICAgICAgY3JpdGVyaWEsXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIG91dHB1dCBwYXRoLlxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVPdXRwdXRQYXRoID0gKG91dHB1dFBhdGg6IHN0cmluZykgPT4ge1xuICAgIGlmICghb3V0cHV0UGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEV4aGF1c3RFcnJvcignT3V0cHV0IHBhdGggaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXRQYXRoLmluY2x1ZGVzKCcjJykpIHtcbiAgICAgIHRocm93IG5ldyBFeGhhdXN0RXJyb3IoJ091dHB1dCBwYXRoIHNob3VsZCBjb250YWluIGAjYC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0UGF0aDtcbiAgfTtcblxuICAvKipcbiAgICogR3JhYnMgb3V0cHV0IGFuZCBjcml0ZXJpYSBmcm9tIGNsaSBhcmdzLCB0aGVuIGNhbGwgdHJlZSB3YWxrZXIgdG8gY29sbGVjdCBjc3YgZGF0YS5cbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSBhc3luYyAodHJlZTogYW55LCBjb250ZXh0OiBDb250ZXh0LCBvdXRwdXRQYXRoOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBjb2x1bW5zID0gWydQYXRoJ107XG4gICAgY29uc3QgbWF0cml4ID0gW2NvbHVtbnNdO1xuICAgIGNvbnN0IHtvdXRwdXQsIGNyaXRlcmlhfSA9IHBhcnNlT3V0cHV0QW5kRmllbGQob3V0cHV0UGF0aCk7XG4gICAgY29uc3QgYWdncmVnYXRpb25Jc0VuYWJsZWQgPSAhIWNvbnRleHQuYWdncmVnYXRpb247XG5cbiAgICAvKipcbiAgICAgKiBXYWxrcyB0aHJvdWdoIGFsbCB0cmVlIGJyYW5jaGVzIGFuZCBsZWF2ZXMsIGNvbGxlY3RpbmcgdGhlIGRhdGFcbiAgICAgKi9cbiAgICBjb25zdCB0cmVlV2Fsa2VyID0gKG5vZGU6IGFueSwgY3JpdGVyaWE6IHN0cmluZywgcGF0aCA9ICd0cmVlJykgPT4ge1xuICAgICAgLyoqIEhtbSBhZ2dyZWdhdGVkLCB0aGVuIGNoZWNrcyBpZiBpdCdzIHRoZSBmaXJzdCBvbmUuIElmIHNvIGFkZHMgY29sdW1uLCBwdXNoZXMgdGhlIHZhbHVlLiAqL1xuICAgICAgaWYgKG5vZGUuYWdncmVnYXRlZCkge1xuICAgICAgICBpZiAocGF0aCA9PT0gJ3RyZWUnKSB7XG4gICAgICAgICAgY29sdW1ucy5wdXNoKCdBZ2dyZWdhdGVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBtYXRyaXgucHVzaChbYCR7cGF0aH0uJHtjcml0ZXJpYX1gLCBub2RlLmFnZ3JlZ2F0ZWRbY3JpdGVyaWFdXSk7XG4gICAgICB9XG5cbiAgICAgIC8qKiBTbyBpdCBoYXMgb3V0cHV0cywgd2hhdHMgdGhlbj8gY2hlY2tzIGlmIHRpbWVzdGFtcCBpcyBub3QgdGhlcmUsIGFkZHMgb25lLiBUaGVuIGFwcGVuZHMgdmFsdWVzIHRvIGl0LiAqL1xuICAgICAgaWYgKG5vZGUub3V0cHV0cykge1xuICAgICAgICBub2RlLm91dHB1dHMuZm9yRWFjaCgob3V0cHV0OiBQbHVnaW5QYXJhbXMpID0+IHtcbiAgICAgICAgICBjb25zdCB7dGltZXN0YW1wfSA9IG91dHB1dDtcblxuICAgICAgICAgIGlmICghY29sdW1ucy5pbmNsdWRlcyh0aW1lc3RhbXApKSB7XG4gICAgICAgICAgICBjb2x1bW5zLnB1c2gob3V0cHV0LnRpbWVzdGFtcCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbGFzdFJvdyA9IG1hdHJpeFttYXRyaXgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICBpZiAoYWdncmVnYXRpb25Jc0VuYWJsZWQpIHtcbiAgICAgICAgICAgIGxhc3RSb3cucHVzaChvdXRwdXRbY3JpdGVyaWFdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyoqIEhhbmRsZSB3aXRob3V0IGFnZ3JlZ2F0aW9uIGV4cG9ydCBzdHJhdGVneS4gKi9cbiAgICAgICAgICAgIGlmIChtYXRyaXgubGVuZ3RoID09PSAxIHx8IGxhc3RSb3cubGVuZ3RoID09PSBjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgICBtYXRyaXgucHVzaChbYCR7cGF0aH0uJHtjcml0ZXJpYX1gLCBvdXRwdXRbY3JpdGVyaWFdXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsYXN0Um93LnB1c2gob3V0cHV0W2NyaXRlcmlhXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLyoqIE9oaCBjaGlsZHJlbj8gdGhlbiBjYWxsIGV2ZXJ5IG9uZSBhbmQgZXhlY3V0ZS4gKi9cbiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgaW4gbm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgIHRyZWVXYWxrZXIoXG4gICAgICAgICAgICBub2RlLmNoaWxkcmVuW2NoaWxkXSxcbiAgICAgICAgICAgIGNyaXRlcmlhLFxuICAgICAgICAgICAgYCR7cGF0aH0uY2hpbGRyZW4uJHtjaGlsZH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB0cmVlV2Fsa2VyKHRyZWUsIGNyaXRlcmlhKTtcblxuICAgIGF3YWl0IHdyaXRlRmlsZShgJHtvdXRwdXR9LmNzdmAsIHN0cmluZ2lmeShtYXRyaXgsIHtjb2x1bW5zfSkpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZXhlY3V0ZSxcbiAgICBtZXRhZGF0YToge1xuICAgICAga2luZDogJ2V4aGF1c3QnLFxuICAgIH0sXG4gIH07XG59O1xuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWNzdi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsdGlucy9leHBvcnQtY3N2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBDQUFzQztBQUN0Qyw2Q0FBNkM7QUFFN0MsMkNBQXNDO0FBS3RDLCtDQUEwQztBQUUxQyxNQUFNLEVBQUMsWUFBWSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBQzlCLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxHQUFHLGlCQUFPLENBQUM7QUFFeEM7O0dBRUc7QUFDSSxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUU7SUFDNUIsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtRQUNqRCxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXpDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEMsTUFBTSxJQUFJLFlBQVksQ0FDcEIsMkZBQTJGLENBQzVGLENBQUM7U0FDSDtRQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUU3QyxPQUFPO1lBQ0wsTUFBTTtZQUNOLFFBQVE7U0FDVCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLGtCQUFrQixHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFF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UyxFQUFDLEdBQUcsTUFBTSxNQUFNLEVBQUUsSUFBQSxnQkFBUyxFQUFDLE1BQU0sRUFBRSxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsT0FBTztRQUNQLFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxTQUFTO1NBQ2hCO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQTFHVyxRQUFBLFNBQVMsYUEwR3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt3cml0ZUZpbGV9IGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCB7c3RyaW5naWZ5fSBmcm9tICdjc3Ytc3RyaW5naWZ5L3N5bmMnO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi4vdXRpbC9lcnJvcnMnO1xuXG5pbXBvcnQge0NvbnRleHR9IGZyb20gJy4uL3R5cGVzL21hbmlmZXN0JztcbmltcG9ydCB7UGx1Z2luUGFyYW1zfSBmcm9tICcuLi90eXBlcy9pbnRlcmZhY2UnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uL2NvbmZpZy9zdHJpbmdzJztcblxuY29uc3Qge0V4aGF1c3RFcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7RVhQT1JUSU5HX1RPX0NTVl9GSUxFfSA9IFNUUklOR1M7XG5cbi8qKlxuICogRXh0ZW5zaW9uIHRvIElGIHRoYXQgb3V0cHV0cyB0aGUgdHJlZSBpbiBhIENTViBmb3JtYXQuXG4gKi9cbmV4cG9ydCBjb25zdCBFeHBvcnRDU1YgPSAoKSA9PiB7XG4gIGNvbnN0IHBhcnNlT3V0cHV0QW5kRmllbGQgPSAob3V0cHV0UGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdGVkUGF0aCA9IHZhbGlkYXRlT3V0cHV0UGF0aChvdXRwdXRQYXRoKTtcblxuICAgIGNvbnN0IHBhdGhzID0gdmFsaWRhdGVkUGF0aC5zcGxpdCgnIycpO1xuICAgIGNvbnN0IG91dHB1dCA9IHBhdGhzLnNsaWNlKDAsIHBhdGhzLmxlbmd0aCAtIDEpLmpvaW4oJycpO1xuICAgIGNvbnN0IGNyaXRlcmlhID0gcGF0aHNbcGF0aHMubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAocGF0aHMubGVuZ3RoIDw9IDEgfHwgIWNyaXRlcmlhKSB7XG4gICAgICB0aHJvdyBuZXcgRXhoYXVzdEVycm9yKFxuICAgICAgICAnQ1NWIGV4cG9ydCBjcml0ZXJpYSBpcyBub3QgZm91bmQgaW4gb3V0cHV0IHBhdGguIFBsZWFzZSBhcHBlbmQgaXQgYWZ0ZXIgLS1vdXRwdXQgPHBhdGg+Iy4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZGVidWcoRVhQT1JUSU5HX1RPX0NTVl9GSUxFKG91dHB1dCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG91dHB1dCxcbiAgICAgIGNyaXRlcmlhLFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBvdXRwdXQgcGF0aC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlT3V0cHV0UGF0aCA9IChvdXRwdXRQYXRoOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIW91dHB1dFBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFeGhhdXN0RXJyb3IoJ091dHB1dCBwYXRoIGlzIHJlcXVpcmVkLicpO1xuICAgIH1cblxuICAgIGlmICghb3V0cHV0UGF0aC5pbmNsdWRlcygnIycpKSB7XG4gICAgICB0aHJvdyBuZXcgRXhoYXVzdEVycm9yKCdPdXRwdXQgcGF0aCBzaG91bGQgY29udGFpbiBgI2AuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dHB1dFBhdGg7XG4gIH07XG5cbiAgLyoqXG4gICAqIEdyYWJzIG91dHB1dCBhbmQgY3JpdGVyaWEgZnJvbSBjbGkgYXJncywgdGhlbiBjYWxsIHRyZWUgd2Fsa2VyIHRvIGNvbGxlY3QgY3N2IGRhdGEuXG4gICAqL1xuICBjb25zdCBleGVjdXRlID0gYXN5bmMgKHRyZWU6IGFueSwgY29udGV4dDogQ29udGV4dCwgb3V0cHV0UGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IFsnUGF0aCddO1xuICAgIGNvbnN0IG1hdHJpeCA9IFtjb2x1bW5zXTtcbiAgICBjb25zdCB7b3V0cHV0LCBjcml0ZXJpYX0gPSBwYXJzZU91dHB1dEFuZEZpZWxkKG91dHB1dFBhdGgpO1xuICAgIGNvbnN0IGFnZ3JlZ2F0aW9uSXNFbmFibGVkID0gISFjb250ZXh0LmFnZ3JlZ2F0aW9uO1xuXG4gICAgLyoqXG4gICAgICogV2Fsa3MgdGhyb3VnaCBhbGwgdHJlZSBicmFuY2hlcyBhbmQgbGVhdmVzLCBjb2xsZWN0aW5nIHRoZSBkYXRhXG4gICAgICovXG4gICAgY29uc3QgdHJlZVdhbGtlciA9IChub2RlOiBhbnksIGNyaXRlcmlhOiBzdHJpbmcsIHBhdGggPSAndHJlZScpID0+IHtcbiAgICAgIC8qKiBIbW0gYWdncmVnYXRlZCwgdGhlbiBjaGVja3MgaWYgaXQncyB0aGUgZmlyc3Qgb25lLiBJZiBzbyBhZGRzIGNvbHVtbiwgcHVzaGVzIHRoZSB2YWx1ZS4gKi9cbiAgICAgIGlmIChub2RlLmFnZ3JlZ2F0ZWQpIHtcbiAgICAgICAgaWYgKHBhdGggPT09ICd0cmVlJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCgnQWdncmVnYXRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWF0cml4LnB1c2goW2Ake3BhdGh9LiR7Y3JpdGVyaWF9YCwgbm9kZS5hZ2dyZWdhdGVkW2NyaXRlcmlhXV0pO1xuICAgICAgfVxuXG4gICAgICAvKiogU28gaXQgaGFzIG91dHB1dHMsIHdoYXRzIHRoZW4/IGNoZWNrcyBpZiB0aW1lc3RhbXAgaXMgbm90IHRoZXJlLCBhZGRzIG9uZS4gVGhlbiBhcHBlbmRzIHZhbHVlcyB0byBpdC4gKi9cbiAgICAgIGlmIChub2RlLm91dHB1dHMpIHtcbiAgICAgICAgbm9kZS5vdXRwdXRzLmZvckVhY2goKG91dHB1dDogUGx1Z2luUGFyYW1zKSA9PiB7XG4gICAgICAgICAgY29uc3Qge3RpbWVzdGFtcH0gPSBvdXRwdXQ7XG5cbiAgICAgICAgICBpZiAoIWNvbHVtbnMuaW5jbHVkZXModGltZXN0YW1wKSkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKG91dHB1dC50aW1lc3RhbXApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGxhc3RSb3cgPSBtYXRyaXhbbWF0cml4Lmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgaWYgKGFnZ3JlZ2F0aW9uSXNFbmFibGVkKSB7XG4gICAgICAgICAgICBsYXN0Um93LnB1c2gob3V0cHV0W2NyaXRlcmlhXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qKiBIYW5kbGUgd2l0aG91dCBhZ2dyZWdhdGlvbiBleHBvcnQgc3RyYXRlZ3kuICovXG4gICAgICAgICAgICBpZiAobWF0cml4Lmxlbmd0aCA9PT0gMSB8fCBsYXN0Um93Lmxlbmd0aCA9PT0gY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgbWF0cml4LnB1c2goW2Ake3BhdGh9LiR7Y3JpdGVyaWF9YCwgb3V0cHV0W2NyaXRlcmlhXV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbGFzdFJvdy5wdXNoKG91dHB1dFtjcml0ZXJpYV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8qKiBPaGggY2hpbGRyZW4/IHRoZW4gY2FsbCBldmVyeSBvbmUgYW5kIGV4ZWN1dGUuICovXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIGluIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICB0cmVlV2Fsa2VyKFxuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbltjaGlsZF0sXG4gICAgICAgICAgICBjcml0ZXJpYSxcbiAgICAgICAgICAgIGAke3BhdGh9LmNoaWxkcmVuLiR7Y2hpbGR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdHJlZVdhbGtlcih0cmVlLCBjcml0ZXJpYSk7XG5cbiAgICBhd2FpdCB3cml0ZUZpbGUoYCR7b3V0cHV0fS5jc3ZgLCBzdHJpbmdpZnkobWF0cml4LCB7Y29sdW1uc30pKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGV4ZWN1dGUsXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIGtpbmQ6ICdleGhhdXN0JyxcbiAgICB9LFxuICB9O1xufTtcbiJdfQ==