@grnsft/if 0.7.0 → 0.7.2

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 (203) hide show
  1. package/build/common/config/index.d.ts +1 -0
  2. package/build/common/config/index.js +6 -0
  3. package/build/common/config/strings.d.ts +13 -0
  4. package/build/common/config/strings.js +21 -0
  5. package/build/common/lib/load.d.ts +6 -0
  6. package/build/common/lib/load.js +18 -0
  7. package/build/common/types/manifest.d.ts +13 -0
  8. package/build/common/types/manifest.js +3 -0
  9. package/build/common/util/debug-logger.d.ts +4 -0
  10. package/build/common/util/debug-logger.js +124 -0
  11. package/build/common/util/fs.d.ts +20 -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/common/util/logger.d.ts +5 -0
  16. package/build/common/util/logger.js +39 -0
  17. package/build/common/util/validations.d.ts +465 -0
  18. package/build/common/util/validations.js +148 -0
  19. package/build/common/util/yaml.d.ts +12 -0
  20. package/build/common/util/yaml.js +59 -0
  21. package/build/if-check/config/config.d.ts +6 -0
  22. package/build/if-check/config/config.js +31 -0
  23. package/build/if-check/config/index.d.ts +2 -0
  24. package/build/if-check/config/index.js +8 -0
  25. package/build/if-check/config/strings.d.ts +11 -0
  26. package/build/if-check/config/strings.js +15 -0
  27. package/build/if-check/index.d.ts +2 -0
  28. package/build/if-check/index.js +98 -0
  29. package/build/if-check/types/process-args.d.ts +4 -0
  30. package/build/if-check/types/process-args.js +3 -0
  31. package/build/if-check/util/args.d.ts +10 -0
  32. package/build/if-check/util/args.js +56 -0
  33. package/build/if-check/util/helpers.d.ts +4 -0
  34. package/build/if-check/util/helpers.js +18 -0
  35. package/build/if-check/util/npm.d.ts +4 -0
  36. package/build/if-check/util/npm.js +59 -0
  37. package/build/if-csv/config/config.d.ts +6 -0
  38. package/build/if-csv/config/config.js +36 -0
  39. package/build/if-csv/config/index.d.ts +2 -0
  40. package/build/if-csv/config/index.js +8 -0
  41. package/build/if-csv/config/strings.d.ts +3 -0
  42. package/build/if-csv/config/strings.js +7 -0
  43. package/build/if-csv/index.d.ts +2 -0
  44. package/build/if-csv/index.js +63 -0
  45. package/build/if-csv/types/csv.d.ts +7 -0
  46. package/build/if-csv/types/csv.js +3 -0
  47. package/build/if-csv/types/process-args.d.ts +5 -0
  48. package/build/if-csv/types/process-args.js +3 -0
  49. package/build/if-csv/util/args.d.ts +12 -0
  50. package/build/if-csv/util/args.js +47 -0
  51. package/build/if-csv/util/helpers.d.ts +9 -0
  52. package/build/if-csv/util/helpers.js +95 -0
  53. package/build/if-diff/config/config.d.ts +6 -0
  54. package/build/if-diff/config/config.js +31 -0
  55. package/build/if-diff/config/index.d.ts +2 -0
  56. package/build/if-diff/config/index.js +8 -0
  57. package/build/if-diff/config/strings.d.ts +6 -0
  58. package/build/if-diff/config/strings.js +10 -0
  59. package/build/if-diff/index.d.ts +2 -0
  60. package/build/if-diff/index.js +46 -0
  61. package/build/if-diff/lib/compare.d.ts +10 -0
  62. package/build/if-diff/lib/compare.js +56 -0
  63. package/build/if-diff/lib/load.d.ts +63 -0
  64. package/build/if-diff/lib/load.js +51 -0
  65. package/build/if-diff/types/args.d.ts +5 -0
  66. package/build/if-diff/types/args.js +3 -0
  67. package/build/if-diff/types/compare.d.ts +7 -0
  68. package/build/if-diff/types/compare.js +3 -0
  69. package/build/if-diff/types/process-args.d.ts +4 -0
  70. package/build/if-diff/types/process-args.js +3 -0
  71. package/build/if-diff/util/args.d.ts +5 -0
  72. package/build/if-diff/util/args.js +51 -0
  73. package/build/if-diff/util/helpers.d.ts +13 -0
  74. package/build/if-diff/util/helpers.js +75 -0
  75. package/build/if-env/config/config.d.ts +6 -0
  76. package/build/if-env/config/config.js +37 -0
  77. package/build/if-env/config/index.d.ts +2 -0
  78. package/build/if-env/config/index.js +8 -0
  79. package/build/if-env/config/strings.d.ts +7 -0
  80. package/build/if-env/config/strings.js +11 -0
  81. package/build/if-env/index.d.ts +2 -0
  82. package/build/if-env/index.js +40 -0
  83. package/build/if-env/types/if-env.d.ts +8 -0
  84. package/build/if-env/types/if-env.js +3 -0
  85. package/build/if-env/types/npm.d.ts +9 -0
  86. package/build/if-env/types/npm.js +3 -0
  87. package/build/if-env/types/process-args.d.ts +5 -0
  88. package/build/if-env/types/process-args.js +3 -0
  89. package/build/if-env/util/args.d.ts +12 -0
  90. package/build/if-env/util/args.js +47 -0
  91. package/build/if-env/util/helpers.d.ts +20 -0
  92. package/build/if-env/util/helpers.js +94 -0
  93. package/build/if-env/util/npm.d.ts +24 -0
  94. package/build/if-env/util/npm.js +126 -0
  95. package/build/if-merge/config/config.d.ts +6 -0
  96. package/build/if-merge/config/config.js +43 -0
  97. package/build/if-merge/config/index.d.ts +2 -0
  98. package/build/if-merge/config/index.js +8 -0
  99. package/build/if-merge/config/strings.d.ts +5 -0
  100. package/build/if-merge/config/strings.js +9 -0
  101. package/build/if-merge/index.d.ts +2 -0
  102. package/build/if-merge/index.js +26 -0
  103. package/build/if-merge/types/process-args.d.ts +6 -0
  104. package/build/if-merge/types/process-args.js +3 -0
  105. package/build/if-merge/util/args.d.ts +9 -0
  106. package/build/if-merge/util/args.js +59 -0
  107. package/build/if-merge/util/helpers.d.ts +5 -0
  108. package/build/if-merge/util/helpers.js +83 -0
  109. package/build/if-run/builtins/coefficient/index.d.ts +16 -0
  110. package/build/if-run/builtins/coefficient/index.js +45 -0
  111. package/build/if-run/builtins/copy-param/index.d.ts +21 -0
  112. package/build/if-run/builtins/copy-param/index.js +58 -0
  113. package/build/if-run/builtins/csv-lookup/index.d.ts +16 -0
  114. package/build/if-run/builtins/csv-lookup/index.js +175 -0
  115. package/build/if-run/builtins/divide/index.d.ts +16 -0
  116. package/build/if-run/builtins/divide/index.js +68 -0
  117. package/build/if-run/builtins/exponent/index.d.ts +16 -0
  118. package/build/if-run/builtins/exponent/index.js +52 -0
  119. package/build/if-run/builtins/export-log.d.ts +4 -0
  120. package/build/if-run/builtins/export-log.js +44 -0
  121. package/build/if-run/builtins/export-yaml.d.ts +4 -0
  122. package/build/if-run/builtins/export-yaml.js +30 -0
  123. package/build/if-run/builtins/index.d.ts +16 -0
  124. package/build/if-run/builtins/index.js +36 -0
  125. package/build/if-run/builtins/interpolation/index.d.ts +16 -0
  126. package/build/if-run/builtins/interpolation/index.js +146 -0
  127. package/build/if-run/builtins/mock-observations/helpers/common-generator.d.ts +3 -0
  128. package/build/if-run/builtins/mock-observations/helpers/common-generator.js +29 -0
  129. package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.d.ts +3 -0
  130. package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.js +48 -0
  131. package/build/if-run/builtins/mock-observations/index.d.ts +16 -0
  132. package/build/if-run/builtins/mock-observations/index.js +108 -0
  133. package/build/if-run/builtins/mock-observations/interfaces/index.d.ts +6 -0
  134. package/build/if-run/builtins/mock-observations/interfaces/index.js +3 -0
  135. package/build/if-run/builtins/multiply/index.d.ts +16 -0
  136. package/build/if-run/builtins/multiply/index.js +47 -0
  137. package/build/if-run/builtins/regex/index.d.ts +16 -0
  138. package/build/if-run/builtins/regex/index.js +55 -0
  139. package/build/if-run/builtins/sci/index.d.ts +16 -0
  140. package/build/if-run/builtins/sci/index.js +92 -0
  141. package/build/if-run/builtins/sci-embodied/index.d.ts +16 -0
  142. package/build/if-run/builtins/sci-embodied/index.js +142 -0
  143. package/build/if-run/builtins/shell/index.d.ts +16 -0
  144. package/build/if-run/builtins/shell/index.js +50 -0
  145. package/build/if-run/builtins/subtract/index.d.ts +16 -0
  146. package/build/if-run/builtins/subtract/index.js +51 -0
  147. package/build/if-run/builtins/sum/index.d.ts +16 -0
  148. package/build/if-run/builtins/sum/index.js +37 -0
  149. package/build/if-run/builtins/time-converter/config.d.ts +1 -0
  150. package/build/if-run/builtins/time-converter/config.js +44 -0
  151. package/build/if-run/builtins/time-converter/index.d.ts +16 -0
  152. package/build/if-run/builtins/time-converter/index.js +63 -0
  153. package/build/if-run/builtins/time-sync/index.d.ts +31 -0
  154. package/build/if-run/builtins/time-sync/index.js +371 -0
  155. package/build/if-run/config/config.d.ts +9 -0
  156. package/build/if-run/config/config.js +79 -0
  157. package/build/if-run/config/index.d.ts +2 -0
  158. package/build/if-run/config/index.js +8 -0
  159. package/build/if-run/config/strings.d.ts +62 -0
  160. package/build/if-run/config/strings.js +81 -0
  161. package/build/if-run/index.d.ts +2 -0
  162. package/build/if-run/index.js +58 -0
  163. package/build/if-run/lib/aggregate.d.ts +14 -0
  164. package/build/if-run/lib/aggregate.js +130 -0
  165. package/build/if-run/lib/compute.d.ts +5 -0
  166. package/build/if-run/lib/compute.js +162 -0
  167. package/build/if-run/lib/environment.d.ts +5 -0
  168. package/build/if-run/lib/environment.js +75 -0
  169. package/build/if-run/lib/exhaust.d.ts +7 -0
  170. package/build/if-run/lib/exhaust.js +27 -0
  171. package/build/if-run/lib/explain.d.ts +9 -0
  172. package/build/if-run/lib/explain.js +97 -0
  173. package/build/if-run/lib/initialize.d.ts +10 -0
  174. package/build/if-run/lib/initialize.js +113 -0
  175. package/build/if-run/lib/regroup.d.ts +5 -0
  176. package/build/if-run/lib/regroup.js +59 -0
  177. package/build/if-run/types/aggregation.d.ts +2 -0
  178. package/build/if-run/types/aggregation.js +11 -0
  179. package/build/if-run/types/compute.d.ts +33 -0
  180. package/build/if-run/types/compute.js +3 -0
  181. package/build/if-run/types/environment.d.ts +18 -0
  182. package/build/if-run/types/environment.js +3 -0
  183. package/build/if-run/types/explain.d.ts +12 -0
  184. package/build/if-run/types/explain.js +3 -0
  185. package/build/if-run/types/plugin-storage.d.ts +6 -0
  186. package/build/if-run/types/plugin-storage.js +3 -0
  187. package/build/if-run/types/process-args.d.ts +27 -0
  188. package/build/if-run/types/process-args.js +3 -0
  189. package/build/if-run/util/aggregation-helper.d.ts +6 -0
  190. package/build/if-run/util/aggregation-helper.js +52 -0
  191. package/build/if-run/util/args.d.ts +9 -0
  192. package/build/if-run/util/args.js +61 -0
  193. package/build/if-run/util/helpers.d.ts +8 -0
  194. package/build/if-run/util/helpers.js +37 -0
  195. package/build/if-run/util/log-memoize.d.ts +3 -0
  196. package/build/if-run/util/log-memoize.js +19 -0
  197. package/build/if-run/util/os-checker.d.ts +7 -0
  198. package/build/if-run/util/os-checker.js +97 -0
  199. package/build/if-run/util/plugin-storage.d.ts +14 -0
  200. package/build/if-run/util/plugin-storage.js +34 -0
  201. package/manifests/examples/builtins/interpolation/success-with-off.yml +24 -0
  202. package/package.json +10 -9
  203. package/src/if-run/builtins/interpolation/README.md +1 -1
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.injectEnvironment = void 0;
4
+ const luxon_1 = require("luxon");
5
+ const os_checker_1 = require("../util/os-checker");
6
+ const helpers_1 = require("../../common/util/helpers");
7
+ const strings_1 = require("../config/strings");
8
+ const packageJson = require('../../../package.json');
9
+ const { CAPTURING_RUNTIME_ENVIRONMENT_DATA } = strings_1.STRINGS;
10
+ /**
11
+ * 1. Gets the high-resolution real time when the application starts.
12
+ * 2. Converts the high-resolution time to milliseconds.
13
+ * 3. Gets the current DateTime.
14
+ * 4. Subtracts the milliseconds from the current DateTime.
15
+ */
16
+ const getProcessStartingTimestamp = () => {
17
+ const startTime = process.hrtime();
18
+ const [seconds, nanoseconds] = process.hrtime(startTime);
19
+ const milliseconds = seconds * 1000 + nanoseconds / 1e6;
20
+ const currentDateTime = luxon_1.DateTime.local();
21
+ const applicationStartDateTime = currentDateTime.minus({
22
+ milliseconds: milliseconds,
23
+ });
24
+ return applicationStartDateTime.toUTC().toString();
25
+ };
26
+ /**
27
+ * Goes through the dependencies, converts them into oneliner.
28
+ */
29
+ const flattenDependencies = (dependencies) => dependencies.map(dependency => {
30
+ const [packageName, versionInfo] = dependency;
31
+ const { version, extraneous, resolved } = versionInfo;
32
+ const ifExtraneous = extraneous ? ` extraneous -> ${resolved}` : '';
33
+ const ifFromGithub = resolved && resolved.startsWith('git') ? ` (${resolved})` : '';
34
+ const formattedString = `${packageName}@${version}${ifExtraneous || ifFromGithub}`;
35
+ return formattedString;
36
+ });
37
+ /**
38
+ * 1. Runs `npm list --json`.
39
+ * 2. Parses json data and converts to list.
40
+ */
41
+ const listDependencies = async () => {
42
+ const { stdout } = await (0, helpers_1.execPromise)('npm list --json');
43
+ const npmListResponse = JSON.parse(stdout);
44
+ if (npmListResponse.dependencies) {
45
+ const dependencies = Object.entries(npmListResponse.dependencies);
46
+ return flattenDependencies(dependencies);
47
+ }
48
+ return [];
49
+ };
50
+ /**
51
+ * Injects execution information (command, environment) to existing manifest.
52
+ */
53
+ const injectEnvironment = async (manifest) => {
54
+ console.debug(CAPTURING_RUNTIME_ENVIRONMENT_DATA);
55
+ const dependencies = await listDependencies();
56
+ const info = await (0, os_checker_1.osInfo)();
57
+ const dateTime = `${getProcessStartingTimestamp()} (UTC)`;
58
+ return {
59
+ ...manifest,
60
+ execution: {
61
+ status: 'success',
62
+ command: process.argv.join(' '),
63
+ environment: {
64
+ 'if-version': packageJson.version,
65
+ os: info.os,
66
+ 'os-version': info['os-version'],
67
+ 'node-version': process.versions.node,
68
+ 'date-time': dateTime,
69
+ dependencies,
70
+ },
71
+ },
72
+ };
73
+ };
74
+ exports.injectEnvironment = injectEnvironment;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL2xpYi9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBK0I7QUFFL0IsbURBQTBDO0FBQzFDLHVEQUFzRDtBQUd0RCwrQ0FBMEM7QUFHMUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFckQsTUFBTSxFQUFDLGtDQUFrQyxFQUFDLEdBQUcsaUJBQU8sQ0FBQztBQUVyRDs7Ozs7R0FLRztBQUNILE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxFQUFFO0lBQ3ZDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUVuQyxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQUcsT0FBTyxHQUFHLElBQUksR0FBRyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBRXhELE1BQU0sZUFBZSxHQUFHLGdCQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFekMsTUFBTSx3QkFBd0IsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDO1FBQ3JELFlBQVksRUFBRSxZQUFZO0tBQzNCLENBQUMsQ0FBQztJQUVILE9BQU8sd0JBQXdCLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsWUFBMkMsRUFBRSxFQUFFLENBQzFFLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDNUIsTUFBTSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDOUMsTUFBTSxFQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLEdBQUcsV0FBVyxDQUFDO0lBQ3BELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEUsTUFBTSxZQUFZLEdBQ2hCLFFBQVEsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakUsTUFBTSxlQUFlLEdBQUcsR0FBRyxXQUFXLElBQUksT0FBTyxHQUMvQyxZQUFZLElBQUksWUFDbEIsRUFBRSxDQUFDO0lBRUgsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUM7QUFFTDs7O0dBR0c7QUFDSCxNQUFNLGdCQUFnQixHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ2xDLE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxNQUFNLElBQUEscUJBQVcsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sZUFBZSxHQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTVELElBQUksZUFBZSxDQUFDLFlBQVksRUFBRTtRQUNoQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVsRSxPQUFPLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQzFDO0lBRUQsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNJLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUNwQyxRQUFrQixFQUNDLEVBQUU7SUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBRWxELE1BQU0sWUFBWSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztJQUM5QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsbUJBQU0sR0FBRSxDQUFDO0lBQzVCLE1BQU0sUUFBUSxHQUFHLEdBQUcsMkJBQTJCLEVBQUUsUUFBUSxDQUFDO0lBRTFELE9BQU87UUFDTCxHQUFHLFFBQVE7UUFDWCxTQUFTLEVBQUU7WUFDVCxNQUFNLEVBQUUsU0FBUztZQUNqQixPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQy9CLFdBQVcsRUFBRTtnQkFDWCxZQUFZLEVBQUUsV0FBVyxDQUFDLE9BQU87Z0JBQ2pDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDWCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDaEMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSTtnQkFDckMsV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLFlBQVk7YUFDYjtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXhCVyxRQUFBLGlCQUFpQixxQkF3QjVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRlVGltZX0gZnJvbSAnbHV4b24nO1xuXG5pbXBvcnQge29zSW5mb30gZnJvbSAnLi4vdXRpbC9vcy1jaGVja2VyJztcbmltcG9ydCB7ZXhlY1Byb21pc2V9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2hlbHBlcnMnO1xuaW1wb3J0IHtNYW5pZmVzdH0gZnJvbSAnLi4vLi4vY29tbW9uL3R5cGVzL21hbmlmZXN0JztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi9jb25maWcvc3RyaW5ncyc7XG5pbXBvcnQge05wbUxpc3RSZXNwb25zZSwgUGFja2FnZURlcGVuZGVuY3l9IGZyb20gJy4uL3R5cGVzL2Vudmlyb25tZW50JztcblxuY29uc3QgcGFja2FnZUpzb24gPSByZXF1aXJlKCcuLi8uLi8uLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3Qge0NBUFRVUklOR19SVU5USU1FX0VOVklST05NRU5UX0RBVEF9ID0gU1RSSU5HUztcblxuLyoqXG4gKiAxLiBHZXRzIHRoZSBoaWdoLXJlc29sdXRpb24gcmVhbCB0aW1lIHdoZW4gdGhlIGFwcGxpY2F0aW9uIHN0YXJ0cy5cbiAqIDIuIENvbnZlcnRzIHRoZSBoaWdoLXJlc29sdXRpb24gdGltZSB0byBtaWxsaXNlY29uZHMuXG4gKiAzLiBHZXRzIHRoZSBjdXJyZW50IERhdGVUaW1lLlxuICogNC4gU3VidHJhY3RzIHRoZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgY3VycmVudCBEYXRlVGltZS5cbiAqL1xuY29uc3QgZ2V0UHJvY2Vzc1N0YXJ0aW5nVGltZXN0YW1wID0gKCkgPT4ge1xuICBjb25zdCBzdGFydFRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuXG4gIGNvbnN0IFtzZWNvbmRzLCBuYW5vc2Vjb25kc10gPSBwcm9jZXNzLmhydGltZShzdGFydFRpbWUpO1xuICBjb25zdCBtaWxsaXNlY29uZHMgPSBzZWNvbmRzICogMTAwMCArIG5hbm9zZWNvbmRzIC8gMWU2O1xuXG4gIGNvbnN0IGN1cnJlbnREYXRlVGltZSA9IERhdGVUaW1lLmxvY2FsKCk7XG5cbiAgY29uc3QgYXBwbGljYXRpb25TdGFydERhdGVUaW1lID0gY3VycmVudERhdGVUaW1lLm1pbnVzKHtcbiAgICBtaWxsaXNlY29uZHM6IG1pbGxpc2Vjb25kcyxcbiAgfSk7XG5cbiAgcmV0dXJuIGFwcGxpY2F0aW9uU3RhcnREYXRlVGltZS50b1VUQygpLnRvU3RyaW5nKCk7XG59O1xuXG4vKipcbiAqIEdvZXMgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzLCBjb252ZXJ0cyB0aGVtIGludG8gb25lbGluZXIuXG4gKi9cbmNvbnN0IGZsYXR0ZW5EZXBlbmRlbmNpZXMgPSAoZGVwZW5kZW5jaWVzOiBbc3RyaW5nLCBQYWNrYWdlRGVwZW5kZW5jeV1bXSkgPT5cbiAgZGVwZW5kZW5jaWVzLm1hcChkZXBlbmRlbmN5ID0+IHtcbiAgICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25JbmZvXSA9IGRlcGVuZGVuY3k7XG4gICAgY29uc3Qge3ZlcnNpb24sIGV4dHJhbmVvdXMsIHJlc29sdmVkfSA9IHZlcnNpb25JbmZvO1xuICAgIGNvbnN0IGlmRXh0cmFuZW91cyA9IGV4dHJhbmVvdXMgPyBgIGV4dHJhbmVvdXMgLT4gJHtyZXNvbHZlZH1gIDogJyc7XG4gICAgY29uc3QgaWZGcm9tR2l0aHViID1cbiAgICAgIHJlc29sdmVkICYmIHJlc29sdmVkLnN0YXJ0c1dpdGgoJ2dpdCcpID8gYCAoJHtyZXNvbHZlZH0pYCA6ICcnO1xuICAgIGNvbnN0IGZvcm1hdHRlZFN0cmluZyA9IGAke3BhY2thZ2VOYW1lfUAke3ZlcnNpb259JHtcbiAgICAgIGlmRXh0cmFuZW91cyB8fCBpZkZyb21HaXRodWJcbiAgICB9YDtcblxuICAgIHJldHVybiBmb3JtYXR0ZWRTdHJpbmc7XG4gIH0pO1xuXG4vKipcbiAqIDEuIFJ1bnMgYG5wbSBsaXN0IC0tanNvbmAuXG4gKiAyLiBQYXJzZXMganNvbiBkYXRhIGFuZCBjb252ZXJ0cyB0byBsaXN0LlxuICovXG5jb25zdCBsaXN0RGVwZW5kZW5jaWVzID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWNQcm9taXNlKCducG0gbGlzdCAtLWpzb24nKTtcbiAgY29uc3QgbnBtTGlzdFJlc3BvbnNlOiBOcG1MaXN0UmVzcG9uc2UgPSBKU09OLnBhcnNlKHN0ZG91dCk7XG5cbiAgaWYgKG5wbUxpc3RSZXNwb25zZS5kZXBlbmRlbmNpZXMpIHtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBPYmplY3QuZW50cmllcyhucG1MaXN0UmVzcG9uc2UuZGVwZW5kZW5jaWVzKTtcblxuICAgIHJldHVybiBmbGF0dGVuRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7XG4gIH1cblxuICByZXR1cm4gW107XG59O1xuXG4vKipcbiAqIEluamVjdHMgZXhlY3V0aW9uIGluZm9ybWF0aW9uIChjb21tYW5kLCBlbnZpcm9ubWVudCkgdG8gZXhpc3RpbmcgbWFuaWZlc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RFbnZpcm9ubWVudCA9IGFzeW5jIChcbiAgbWFuaWZlc3Q6IE1hbmlmZXN0XG4pOiBQcm9taXNlPE1hbmlmZXN0PiA9PiB7XG4gIGNvbnNvbGUuZGVidWcoQ0FQVFVSSU5HX1JVTlRJTUVfRU5WSVJPTk1FTlRfREFUQSk7XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gYXdhaXQgbGlzdERlcGVuZGVuY2llcygpO1xuICBjb25zdCBpbmZvID0gYXdhaXQgb3NJbmZvKCk7XG4gIGNvbnN0IGRhdGVUaW1lID0gYCR7Z2V0UHJvY2Vzc1N0YXJ0aW5nVGltZXN0YW1wKCl9IChVVEMpYDtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hbmlmZXN0LFxuICAgIGV4ZWN1dGlvbjoge1xuICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICBjb21tYW5kOiBwcm9jZXNzLmFyZ3Yuam9pbignICcpLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgJ2lmLXZlcnNpb24nOiBwYWNrYWdlSnNvbi52ZXJzaW9uLFxuICAgICAgICBvczogaW5mby5vcyxcbiAgICAgICAgJ29zLXZlcnNpb24nOiBpbmZvWydvcy12ZXJzaW9uJ10sXG4gICAgICAgICdub2RlLXZlcnNpb24nOiBwcm9jZXNzLnZlcnNpb25zLm5vZGUsXG4gICAgICAgICdkYXRlLXRpbWUnOiBkYXRlVGltZSxcbiAgICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufTtcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { Options } from '../types/process-args';
2
+ import { Context } from '../../common/types/manifest';
3
+ /**
4
+ * Output manager - Exhaust.
5
+ * Grabs output plugins from context, executes every.
6
+ */
7
+ export declare const exhaust: (tree: any, context: Context, outputOptions: Options) => Promise<void>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exhaust = void 0;
4
+ /**
5
+ * @todo This is temporary solution, will be refactored to support dynamic plugins.
6
+ */
7
+ const export_log_1 = require("../builtins/export-log");
8
+ const export_yaml_1 = require("../builtins/export-yaml");
9
+ const config_1 = require("../config");
10
+ const { PREPARING_OUTPUT_DATA } = config_1.STRINGS;
11
+ /**
12
+ * Output manager - Exhaust.
13
+ * Grabs output plugins from context, executes every.
14
+ */
15
+ const exhaust = async (tree, context, outputOptions) => {
16
+ console.debug(PREPARING_OUTPUT_DATA(), '\n');
17
+ if (!outputOptions.noOutput && !outputOptions.outputPath) {
18
+ (0, export_log_1.ExportLog)().execute(tree, context);
19
+ }
20
+ if (!outputOptions.outputPath) {
21
+ return;
22
+ }
23
+ const exportYaml = (0, export_yaml_1.ExportYaml)();
24
+ await exportYaml.execute(tree, context, outputOptions.outputPath);
25
+ };
26
+ exports.exhaust = exhaust;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhoYXVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vbGliL2V4aGF1c3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCx1REFBaUQ7QUFDakQseURBQW1EO0FBRW5ELHNDQUFrQztBQUtsQyxNQUFNLEVBQUMscUJBQXFCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXhDOzs7R0FHRztBQUNJLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFDMUIsSUFBUyxFQUNULE9BQWdCLEVBQ2hCLGFBQXNCLEVBQ3RCLEVBQUU7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFO1FBQ3hELElBQUEsc0JBQVMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDcEM7SUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRTtRQUM3QixPQUFPO0tBQ1I7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFBLHdCQUFVLEdBQUUsQ0FBQztJQUVoQyxNQUFNLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDcEUsQ0FBQyxDQUFDO0FBbEJXLFFBQUEsT0FBTyxXQWtCbEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0b2RvIFRoaXMgaXMgdGVtcG9yYXJ5IHNvbHV0aW9uLCB3aWxsIGJlIHJlZmFjdG9yZWQgdG8gc3VwcG9ydCBkeW5hbWljIHBsdWdpbnMuXG4gKi9cbmltcG9ydCB7RXhwb3J0TG9nfSBmcm9tICcuLi9idWlsdGlucy9leHBvcnQtbG9nJztcbmltcG9ydCB7RXhwb3J0WWFtbH0gZnJvbSAnLi4vYnVpbHRpbnMvZXhwb3J0LXlhbWwnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7T3B0aW9uc30gZnJvbSAnLi4vdHlwZXMvcHJvY2Vzcy1hcmdzJztcbmltcG9ydCB7Q29udGV4dH0gZnJvbSAnLi4vLi4vY29tbW9uL3R5cGVzL21hbmlmZXN0JztcblxuY29uc3Qge1BSRVBBUklOR19PVVRQVVRfREFUQX0gPSBTVFJJTkdTO1xuXG4vKipcbiAqIE91dHB1dCBtYW5hZ2VyIC0gRXhoYXVzdC5cbiAqIEdyYWJzIG91dHB1dCBwbHVnaW5zIGZyb20gY29udGV4dCwgZXhlY3V0ZXMgZXZlcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBleGhhdXN0ID0gYXN5bmMgKFxuICB0cmVlOiBhbnksXG4gIGNvbnRleHQ6IENvbnRleHQsXG4gIG91dHB1dE9wdGlvbnM6IE9wdGlvbnNcbikgPT4ge1xuICBjb25zb2xlLmRlYnVnKFBSRVBBUklOR19PVVRQVVRfREFUQSgpLCAnXFxuJyk7XG5cbiAgaWYgKCFvdXRwdXRPcHRpb25zLm5vT3V0cHV0ICYmICFvdXRwdXRPcHRpb25zLm91dHB1dFBhdGgpIHtcbiAgICBFeHBvcnRMb2coKS5leGVjdXRlKHRyZWUsIGNvbnRleHQpO1xuICB9XG5cbiAgaWYgKCFvdXRwdXRPcHRpb25zLm91dHB1dFBhdGgpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBleHBvcnRZYW1sID0gRXhwb3J0WWFtbCgpO1xuXG4gIGF3YWl0IGV4cG9ydFlhbWwuZXhlY3V0ZSh0cmVlLCBjb250ZXh0LCBvdXRwdXRPcHRpb25zLm91dHB1dFBhdGgpO1xufTtcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { ExplainParams, ExplainStorageType } from '../types/explain';
2
+ /**
3
+ * Retrieves stored explain data.
4
+ */
5
+ export declare const explain: () => ExplainStorageType;
6
+ /**
7
+ * Adds new explain data to the stored explain data.
8
+ */
9
+ export declare const addExplainData: (params: ExplainParams) => void;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addExplainData = exports.explain = void 0;
4
+ const utils_1 = require("@grnsft/if-core/utils");
5
+ const config_1 = require("../../common/config");
6
+ const logger_1 = require("../../common/util/logger");
7
+ const { ManifestValidationError } = utils_1.ERRORS;
8
+ const { AGGREGATION_UNITS_NOT_MATCH, AGGREGATION_METHODS_NOT_MATCH, MISSING_INPUTS_PARAMETER, MISSING_OUTPUTS_PARAMETER, } = config_1.STRINGS;
9
+ /**
10
+ * Retrieves stored explain data.
11
+ */
12
+ const explain = () => storeExplainData.plugins;
13
+ exports.explain = explain;
14
+ /**
15
+ * Manages the storage of explain data.
16
+ */
17
+ const storeExplainData = (() => {
18
+ let plugins = {};
19
+ const pluginManager = {
20
+ get plugins() {
21
+ return plugins;
22
+ },
23
+ set plugins(value) {
24
+ plugins = value;
25
+ },
26
+ };
27
+ return pluginManager;
28
+ })();
29
+ /**
30
+ * Adds new explain data to the stored explain data.
31
+ */
32
+ const addExplainData = (params) => {
33
+ const { pluginName, metadata } = params;
34
+ const plugin = {
35
+ [pluginName]: {
36
+ inputs: metadata?.inputs ?? {},
37
+ outputs: metadata?.outputs ?? {},
38
+ },
39
+ };
40
+ const isInputsMissing = !Object.keys(plugin[pluginName].inputs || {}).length;
41
+ const isOutputsMissing = !Object.keys(plugin[pluginName].outputs || {})
42
+ .length;
43
+ if (isInputsMissing) {
44
+ delete plugin[pluginName].inputs;
45
+ logger_1.logger.warn(MISSING_INPUTS_PARAMETER(pluginName));
46
+ }
47
+ if (isOutputsMissing) {
48
+ delete plugin[pluginName].outputs;
49
+ logger_1.logger.warn(MISSING_OUTPUTS_PARAMETER(pluginName));
50
+ }
51
+ checkMetadatas(metadata);
52
+ if (!isInputsMissing || !isOutputsMissing) {
53
+ storeExplainData.plugins = {
54
+ ...storeExplainData.plugins,
55
+ ...plugin,
56
+ };
57
+ }
58
+ };
59
+ exports.addExplainData = addExplainData;
60
+ /**
61
+ * Checks if the 'unit' and 'aggregation-method' of the parameter are the same throughout the manifest
62
+ */
63
+ const checkMetadatas = (metadata) => {
64
+ const inputsOutputsMetadata = { ...metadata?.inputs, ...metadata?.outputs };
65
+ const storedParameters = {};
66
+ // Populate stored parameters with metadata from each plugin
67
+ Object.values(storeExplainData.plugins).forEach(plugin => {
68
+ const storedInputOutputMetadata = { ...plugin.inputs, ...plugin.outputs };
69
+ Object.keys(storedInputOutputMetadata).forEach(parameter => {
70
+ if (!storedParameters[parameter]) {
71
+ storedParameters[parameter] = {
72
+ unit: storedInputOutputMetadata[parameter].unit,
73
+ 'aggregation-method': storedInputOutputMetadata[parameter]['aggregation-method'],
74
+ };
75
+ }
76
+ });
77
+ });
78
+ // Validate input-output metadata against stored parameters
79
+ Object.keys(inputsOutputsMetadata).forEach(parameterName => {
80
+ const parameter = inputsOutputsMetadata[parameterName];
81
+ const storedParameter = storedParameters[parameterName];
82
+ if (parameter &&
83
+ Object.keys(storedParameters).includes(parameterName) &&
84
+ storedParameter.unit !== parameter.unit) {
85
+ throw new ManifestValidationError(AGGREGATION_UNITS_NOT_MATCH(parameterName));
86
+ }
87
+ // Check for aggregation-method mismatch
88
+ const inputAggregation = parameter['aggregation-method'];
89
+ if (storedParameter &&
90
+ (storedParameter['aggregation-method']?.component !==
91
+ inputAggregation?.component ||
92
+ storedParameter['aggregation-method']?.time !== inputAggregation?.time)) {
93
+ throw new ManifestValidationError(AGGREGATION_METHODS_NOT_MATCH(parameterName));
94
+ }
95
+ });
96
+ };
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vbGliL2V4cGxhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQTZDO0FBRTdDLGdEQUE0QztBQUU1QyxxREFBZ0Q7QUFJaEQsTUFBTSxFQUFDLHVCQUF1QixFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQ3pDLE1BQU0sRUFDSiwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLHdCQUF3QixFQUN4Qix5QkFBeUIsR0FDMUIsR0FBRyxnQkFBTyxDQUFDO0FBRVo7O0dBRUc7QUFDSSxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7QUFBekMsUUFBQSxPQUFPLFdBQWtDO0FBRXREOztHQUVHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUM3QixJQUFJLE9BQU8sR0FBdUIsRUFBRSxDQUFDO0lBRXJDLE1BQU0sYUFBYSxHQUFHO1FBQ3BCLElBQUksT0FBTztZQUNULE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUF5QjtZQUNuQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7S0FDRixDQUFDO0lBRUYsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVMOztHQUVHO0FBQ0ksTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFxQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUMsR0FBRyxNQUFNLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQXVCO1FBQ2pDLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDWixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxFQUFFO1lBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxJQUFJLEVBQUU7U0FDakM7S0FDRixDQUFDO0lBRUYs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QUUsU0FBUztnQkFDL0MsZ0JBQWdCLEVBQUUsU0FBUztnQkFDM0IsZUFBZSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxLQUFLLGdCQUFnQixFQUFFLElBQUksQ0FBQyxFQUN6RTtZQUNBLE1BQU0sSUFBSSx1QkFBdUIsQ0FDL0IsNkJBQTZCLENBQUMsYUFBYSxDQUFDLENBQzdDLENBQUM7U0FDSDtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQYXJhbWV0ZXJNZXRhZGF0YX0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uLy4uL2NvbW1vbi9jb25maWcnO1xuXG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvbG9nZ2VyJztcblxuaW1wb3J0IHtFeHBsYWluUGFyYW1zLCBFeHBsYWluU3RvcmFnZVR5cGV9IGZyb20gJy4uL3R5cGVzL2V4cGxhaW4nO1xuXG5jb25zdCB7TWFuaWZlc3RWYWxpZGF0aW9uRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge1xuICBBR0dSRUdBVElPTl9VTklUU19OT1RfTUFUQ0gsXG4gIEFHR1JFR0FUSU9OX01FVEhPRFNfTk9UX01BVENILFxuICBNSVNTSU5HX0lOUFVUU19QQVJBTUVURVIsXG4gIE1JU1NJTkdfT1VUUFVUU19QQVJBTUVURVIsXG59ID0gU1RSSU5HUztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgc3RvcmVkIGV4cGxhaW4gZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IGV4cGxhaW4gPSAoKSA9PiBzdG9yZUV4cGxhaW5EYXRhLnBsdWdpbnM7XG5cbi8qKlxuICogTWFuYWdlcyB0aGUgc3RvcmFnZSBvZiBleHBsYWluIGRhdGEuXG4gKi9cbmNvbnN0IHN0b3JlRXhwbGFpbkRhdGEgPSAoKCkgPT4ge1xuICBsZXQgcGx1Z2luczogRXhwbGFpblN0b3JhZ2VUeXBlID0ge307XG5cbiAgY29uc3QgcGx1Z2luTWFuYWdlciA9IHtcbiAgICBnZXQgcGx1Z2lucygpIHtcbiAgICAgIHJldHVybiBwbHVnaW5zO1xuICAgIH0sXG4gICAgc2V0IHBsdWdpbnModmFsdWU6IEV4cGxhaW5TdG9yYWdlVHlwZSkge1xuICAgICAgcGx1Z2lucyA9IHZhbHVlO1xuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIHBsdWdpbk1hbmFnZXI7XG59KSgpO1xuXG4vKipcbiAqIEFkZHMgbmV3IGV4cGxhaW4gZGF0YSB0byB0aGUgc3RvcmVkIGV4cGxhaW4gZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEV4cGxhaW5EYXRhID0gKHBhcmFtczogRXhwbGFpblBhcmFtcykgPT4ge1xuICBjb25zdCB7cGx1Z2luTmFtZSwgbWV0YWRhdGF9ID0gcGFyYW1zO1xuICBjb25zdCBwbHVnaW46IEV4cGxhaW5TdG9yYWdlVHlwZSA9IHtcbiAgICBbcGx1Z2luTmFtZV06IHtcbiAgICAgIGlucHV0czogbWV0YWRhdGE/LmlucHV0cyA/PyB7fSxcbiAgICAgIG91dHB1dHM6IG1ldGFkYXRhPy5vdXRwdXRzID8/IHt9LFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgaXNJbnB1dHNNaXNzaW5nID0gIU9iamVjdC5rZXlzKHBsdWdpbltwbHVnaW5OYW1lXS5pbnB1dHMgfHwge30pLmxlbmd0aDtcbiAgY29uc3QgaXNPdXRwdXRzTWlzc2luZyA9ICFPYmplY3Qua2V5cyhwbHVnaW5bcGx1Z2luTmFtZV0ub3V0cHV0cyB8fCB7fSlcbiAgICAubGVuZ3RoO1xuXG4gIGlmIChpc0lucHV0c01pc3NpbmcpIHtcbiAgICBkZWxldGUgcGx1Z2luW3BsdWdpbk5hbWVdLmlucHV0cztcblxuICAgIGxvZ2dlci53YXJuKE1JU1NJTkdfSU5QVVRTX1BBUkFNRVRFUihwbHVnaW5OYW1lKSk7XG4gIH1cblxuICBpZiAoaXNPdXRwdXRzTWlzc2luZykge1xuICAgIGRlbGV0ZSBwbHVnaW5bcGx1Z2luTmFtZV0ub3V0cHV0cztcblxuICAgIGxvZ2dlci53YXJuKE1JU1NJTkdfT1VUUFVUU19QQVJBTUVURVIocGx1Z2luTmFtZSkpO1xuICB9XG5cbiAgY2hlY2tNZXRhZGF0YXMobWV0YWRhdGEpO1xuXG4gIGlmICghaXNJbnB1dHNNaXNzaW5nIHx8ICFpc091dHB1dHNNaXNzaW5nKSB7XG4gICAgc3RvcmVFeHBsYWluRGF0YS5wbHVnaW5zID0ge1xuICAgICAgLi4uc3RvcmVFeHBsYWluRGF0YS5wbHVnaW5zLFxuICAgICAgLi4ucGx1Z2luLFxuICAgIH07XG4gIH1cbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSAndW5pdCcgYW5kICdhZ2dyZWdhdGlvbi1tZXRob2QnIG9mIHRoZSBwYXJhbWV0ZXIgYXJlIHRoZSBzYW1lIHRocm91Z2hvdXQgdGhlIG1hbmlmZXN0XG4gKi9cbmNvbnN0IGNoZWNrTWV0YWRhdGFzID0gKG1ldGFkYXRhOiB7XG4gIGlucHV0cz86IFBhcmFtZXRlck1ldGFkYXRhO1xuICBvdXRwdXRzPzogUGFyYW1ldGVyTWV0YWRhdGE7XG59KSA9PiB7XG4gIGNvbnN0IGlucHV0c091dHB1dHNNZXRhZGF0YSA9IHsuLi5tZXRhZGF0YT8uaW5wdXRzLCAuLi5tZXRhZGF0YT8ub3V0cHV0c307XG4gIGNvbnN0IHN0b3JlZFBhcmFtZXRlcnM6IGFueSA9IHt9O1xuXG4gIC8vIFBvcHVsYXRlIHN0b3JlZCBwYXJhbWV0ZXJzIHdpdGggbWV0YWRhdGEgZnJvbSBlYWNoIHBsdWdpblxuICBPYmplY3QudmFsdWVzKHN0b3JlRXhwbGFpbkRhdGEucGx1Z2lucykuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgIGNvbnN0IHN0b3JlZElucHV0T3V0cHV0TWV0YWRhdGEgPSB7Li4ucGx1Z2luLmlucHV0cywgLi4ucGx1Z2luLm91dHB1dHN9O1xuXG4gICAgT2JqZWN0LmtleXMoc3RvcmVkSW5wdXRPdXRwdXRNZXRhZGF0YSkuZm9yRWFjaChwYXJhbWV0ZXIgPT4ge1xuICAgICAgaWYgKCFzdG9yZWRQYXJhbWV0ZXJzW3BhcmFtZXRlcl0pIHtcbiAgICAgICAgc3RvcmVkUGFyYW1ldGVyc1twYXJhbWV0ZXJdID0ge1xuICAgICAgICAgIHVuaXQ6IHN0b3JlZElucHV0T3V0cHV0TWV0YWRhdGFbcGFyYW1ldGVyXS51bml0LFxuICAgICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOlxuICAgICAgICAgICAgc3RvcmVkSW5wdXRPdXRwdXRNZXRhZGF0YVtwYXJhbWV0ZXJdWydhZ2dyZWdhdGlvbi1tZXRob2QnXSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gVmFsaWRhdGUgaW5wdXQtb3V0cHV0IG1ldGFkYXRhIGFnYWluc3Qgc3RvcmVkIHBhcmFtZXRlcnNcbiAgT2JqZWN0LmtleXMoaW5wdXRzT3V0cHV0c01ldGFkYXRhKS5mb3JFYWNoKHBhcmFtZXRlck5hbWUgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlciA9IGlucHV0c091dHB1dHNNZXRhZGF0YVtwYXJhbWV0ZXJOYW1lXTtcbiAgICBjb25zdCBzdG9yZWRQYXJhbWV0ZXIgPSBzdG9yZWRQYXJhbWV0ZXJzW3BhcmFtZXRlck5hbWVdO1xuXG4gICAgaWYgKFxuICAgICAgcGFyYW1ldGVyICYmXG4gICAgICBPYmplY3Qua2V5cyhzdG9yZWRQYXJhbWV0ZXJzKS5pbmNsdWRlcyhwYXJhbWV0ZXJOYW1lKSAmJlxuICAgICAgc3RvcmVkUGFyYW1ldGVyLnVuaXQgIT09IHBhcmFtZXRlci51bml0XG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgTWFuaWZlc3RWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIEFHR1JFR0FUSU9OX1VOSVRTX05PVF9NQVRDSChwYXJhbWV0ZXJOYW1lKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgYWdncmVnYXRpb24tbWV0aG9kIG1pc21hdGNoXG4gICAgY29uc3QgaW5wdXRBZ2dyZWdhdGlvbiA9IHBhcmFtZXRlclsnYWdncmVnYXRpb24tbWV0aG9kJ107XG5cbiAgICBpZiAoXG4gICAgICBzdG9yZWRQYXJhbWV0ZXIgJiZcbiAgICAgIChzdG9yZWRQYXJhbWV0ZXJbJ2FnZ3JlZ2F0aW9uLW1ldGhvZCddPy5jb21wb25lbnQgIT09XG4gICAgICAgIGlucHV0QWdncmVnYXRpb24/LmNvbXBvbmVudCB8fFxuICAgICAgICBzdG9yZWRQYXJhbWV0ZXJbJ2FnZ3JlZ2F0aW9uLW1ldGhvZCddPy50aW1lICE9PSBpbnB1dEFnZ3JlZ2F0aW9uPy50aW1lKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IE1hbmlmZXN0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBBR0dSRUdBVElPTl9NRVRIT0RTX05PVF9NQVRDSChwYXJhbWV0ZXJOYW1lKVxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufTtcbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { Context } from '../../common/types/manifest';
2
+ import { PluginStorageInterface } from '../types/plugin-storage';
3
+ /**
4
+ * Registers all plugins from `manifest`.`initialize` property.
5
+ * 1. Initalizes plugin storage.
6
+ * 2. Iterates over plugin names array.
7
+ * 3. While iteration, initalizes current plugin, gathers it's parameters (input/output).
8
+ * Then stores the aggregation metrics for each parameter to override stub values.
9
+ */
10
+ export declare const initialize: (context: Context) => Promise<PluginStorageInterface>;
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.initialize = void 0;
27
+ const path = __importStar(require("node:path"));
28
+ const utils_1 = require("@grnsft/if-core/utils");
29
+ const aggregate_1 = require("./aggregate");
30
+ const logger_1 = require("../../common/util/logger");
31
+ const log_memoize_1 = require("../util/log-memoize");
32
+ const plugin_storage_1 = require("../util/plugin-storage");
33
+ const config_1 = require("../config");
34
+ const { PluginInitializationError, MissingPluginMethodError, MissingPluginPathError, } = utils_1.ERRORS;
35
+ const { GITHUB_PATH, NATIVE_PLUGIN } = config_1.CONFIG;
36
+ const { MISSING_METHOD, MISSING_PATH, NOT_NATIVE_PLUGIN, INVALID_MODULE_PATH, LOADING_PLUGIN_FROM_PATH, INITIALIZING_PLUGIN, INITIALIZING_PLUGINS, } = config_1.STRINGS;
37
+ /**
38
+ * Imports module by given `path`.
39
+ */
40
+ const importModuleFrom = async (path) => {
41
+ const module = await Promise.resolve(`${path}`).then(s => __importStar(require(s))).catch(error => {
42
+ throw new PluginInitializationError(INVALID_MODULE_PATH(path, error));
43
+ });
44
+ return module;
45
+ };
46
+ /**
47
+ * Imports `module` from given `path` and returns requested `method`.
48
+ */
49
+ const importAndVerifyModule = async (method, path) => {
50
+ const pluginModule = await importModuleFrom(path);
51
+ return pluginModule[method];
52
+ };
53
+ /**
54
+ * Checks if plugin is missing then rejects with error.
55
+ * Then checks if `path` is starting with github, then grabs the repository name.
56
+ * Imports module, then checks if it's a valid plugin.
57
+ */
58
+ const handModule = (method, pluginPath) => {
59
+ console.debug(LOADING_PLUGIN_FROM_PATH(method, pluginPath), '\n');
60
+ if (pluginPath === 'builtin') {
61
+ pluginPath = path.normalize(`${__dirname}/../builtins`);
62
+ }
63
+ else {
64
+ if (pluginPath?.startsWith(GITHUB_PATH)) {
65
+ const parts = pluginPath.split('/');
66
+ pluginPath = parts[parts.length - 1];
67
+ }
68
+ if (!pluginPath.includes(NATIVE_PLUGIN)) {
69
+ (0, log_memoize_1.memoizedLog)(logger_1.logger.warn, NOT_NATIVE_PLUGIN(pluginPath));
70
+ }
71
+ }
72
+ return importAndVerifyModule(method, pluginPath);
73
+ };
74
+ /**
75
+ * Initializes plugin with config.
76
+ */
77
+ const initPlugin = async (initPluginParams) => {
78
+ const { method, path, mapping, config, 'parameter-metadata': parameterMetadata, } = initPluginParams;
79
+ if (!method) {
80
+ throw new MissingPluginMethodError(MISSING_METHOD);
81
+ }
82
+ if (!path) {
83
+ throw new MissingPluginPathError(MISSING_PATH);
84
+ }
85
+ const plugin = await handModule(method, path);
86
+ return plugin(config, parameterMetadata, mapping);
87
+ };
88
+ /**
89
+ * Registers all plugins from `manifest`.`initialize` property.
90
+ * 1. Initalizes plugin storage.
91
+ * 2. Iterates over plugin names array.
92
+ * 3. While iteration, initalizes current plugin, gathers it's parameters (input/output).
93
+ * Then stores the aggregation metrics for each parameter to override stub values.
94
+ */
95
+ const initialize = async (context) => {
96
+ console.debug(INITIALIZING_PLUGINS, '\n');
97
+ const { plugins } = context.initialize;
98
+ const storage = (0, plugin_storage_1.pluginStorage)();
99
+ for await (const pluginName of Object.keys(plugins)) {
100
+ console.debug(INITIALIZING_PLUGIN(pluginName));
101
+ const plugin = await initPlugin(plugins[pluginName]);
102
+ const parameters = { ...plugin.metadata.inputs, ...plugin.metadata.outputs };
103
+ Object.keys(parameters).forEach(current => {
104
+ (0, aggregate_1.storeAggregationMetrics)({
105
+ [current]: parameters[current]['aggregation-method'],
106
+ });
107
+ });
108
+ storage.set(pluginName, plugin);
109
+ }
110
+ return storage;
111
+ };
112
+ exports.initialize = initialize;
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vbGliL2luaXRpYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFFbEMsaURBQTZDO0FBRzdDLDJDQUFvRDtBQUVwRCxxREFBZ0Q7QUFDaEQscURBQWdEO0FBQ2hELDJEQUFxRDtBQUVyRCxzQ0FBMEM7QUFLMUMsTUFBTSxFQUNKLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIsc0JBQXNCLEdBQ3ZCLEdBQUcsY0FBTSxDQUFDO0FBRVgsTUFBTSxFQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDNUMsTUFBTSxFQUNKLGNBQWMsRUFDZCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLG9CQUFvQixHQUNyQixHQUFHLGdCQUFPLENBQUM7QUFFWjs7R0FFRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBRSxFQUFFO0lBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sbUJBQU8sSUFBSSx3Q0FBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDOUMsTUFBTSxJQUFJLHlCQUF5QixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBRSxNQUFjLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDbkUsTUFBTSxZQUFZLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsRCxPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QixDQUFD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QUNqQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQXZCVyxRQUFBLFVBQVUsY0F1QnJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcbmltcG9ydCB7UGx1Z2luSW50ZXJmYWNlfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuXG5pbXBvcnQge3N0b3JlQWdncmVnYXRpb25NZXRyaWNzfSBmcm9tICcuL2FnZ3JlZ2F0ZSc7XG5cbmltcG9ydCB7bG9nZ2VyfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC9sb2dnZXInO1xuaW1wb3J0IHttZW1vaXplZExvZ30gZnJvbSAnLi4vdXRpbC9sb2ctbWVtb2l6ZSc7XG5pbXBvcnQge3BsdWdpblN0b3JhZ2V9IGZyb20gJy4uL3V0aWwvcGx1Z2luLXN0b3JhZ2UnO1xuXG5pbXBvcnQge0NPTkZJRywgU1RSSU5HU30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHtDb250ZXh0LCBQbHVnaW5PcHRpb25zfSBmcm9tICcuLi8uLi9jb21tb24vdHlwZXMvbWFuaWZlc3QnO1xuaW1wb3J0IHtQbHVnaW5TdG9yYWdlSW50ZXJmYWNlfSBmcm9tICcuLi90eXBlcy9wbHVnaW4tc3RvcmFnZSc7XG5cbmNvbnN0IHtcbiAgUGx1Z2luSW5pdGlhbGl6YXRpb25FcnJvcixcbiAgTWlzc2luZ1BsdWdpbk1ldGhvZEVycm9yLFxuICBNaXNzaW5nUGx1Z2luUGF0aEVycm9yLFxufSA9IEVSUk9SUztcblxuY29uc3Qge0dJVEhVQl9QQVRILCBOQVRJVkVfUExVR0lOfSA9IENPTkZJRztcbmNvbnN0IHtcbiAgTUlTU0lOR19NRVRIT0QsXG4gIE1JU1NJTkdfUEFUSCxcbiAgTk9UX05BVElWRV9QTFVHSU4sXG4gIElOVkFMSURfTU9EVUxFX1BBVEgsXG4gIExPQURJTkdfUExVR0lOX0ZST01fUEFUSCxcbiAgSU5JVElBTElaSU5HX1BMVUdJTixcbiAgSU5JVElBTElaSU5HX1BMVUdJTlMsXG59ID0gU1RSSU5HUztcblxuLyoqXG4gKiBJbXBvcnRzIG1vZHVsZSBieSBnaXZlbiBgcGF0aGAuXG4gKi9cbmNvbnN0IGltcG9ydE1vZHVsZUZyb20gPSBhc3luYyAocGF0aDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG1vZHVsZSA9IGF3YWl0IGltcG9ydChwYXRoKS5jYXRjaChlcnJvciA9PiB7XG4gICAgdGhyb3cgbmV3IFBsdWdpbkluaXRpYWxpemF0aW9uRXJyb3IoSU5WQUxJRF9NT0RVTEVfUEFUSChwYXRoLCBlcnJvcikpO1xuICB9KTtcblxuICByZXR1cm4gbW9kdWxlO1xufTtcblxuLyoqXG4gKiBJbXBvcnRzIGBtb2R1bGVgIGZyb20gZ2l2ZW4gYHBhdGhgIGFuZCByZXR1cm5zIHJlcXVlc3RlZCBgbWV0aG9kYC5cbiAqL1xuY29uc3QgaW1wb3J0QW5kVmVyaWZ5TW9kdWxlID0gYXN5bmMgKG1ldGhvZDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcGx1Z2luTW9kdWxlID0gYXdhaXQgaW1wb3J0TW9kdWxlRnJvbShwYXRoKTtcblxuICByZXR1cm4gcGx1Z2luTW9kdWxlW21ldGhvZF07XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBwbHVnaW4gaXMgbWlzc2luZyB0aGVuIHJlamVjdHMgd2l0aCBlcnJvci5cbiAqIFRoZW4gY2hlY2tzIGlmIGBwYXRoYCBpcyBzdGFydGluZyB3aXRoIGdpdGh1YiwgdGhlbiBncmFicyB0aGUgcmVwb3NpdG9yeSBuYW1lLlxuICogSW1wb3J0cyBtb2R1bGUsIHRoZW4gY2hlY2tzIGlmIGl0J3MgYSB2YWxpZCBwbHVnaW4uXG4gKi9cbmNvbnN0IGhhbmRNb2R1bGUgPSAobWV0aG9kOiBzdHJpbmcsIHBsdWdpblBhdGg6IHN0cmluZykgPT4ge1xuICBjb25zb2xlLmRlYnVnKExPQURJTkdfUExVR0lOX0ZST01fUEFUSChtZXRob2QsIHBsdWdpblBhdGgpLCAnXFxuJyk7XG5cbiAgaWYgKHBsdWdpblBhdGggPT09ICdidWlsdGluJykge1xuICAgIHBsdWdpblBhdGggPSBwYXRoLm5vcm1hbGl6ZShgJHtfX2Rpcm5hbWV9Ly4uL2J1aWx0aW5zYCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHBsdWdpblBhdGg/LnN0YXJ0c1dpdGgoR0lUSFVCX1BBVEgpKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IHBsdWdpblBhdGguc3BsaXQoJy8nKTtcbiAgICAgIHBsdWdpblBhdGggPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICBpZiAoIXBsdWdpblBhdGguaW5jbHVkZXMoTkFUSVZFX1BMVUdJTikpIHtcbiAgICAgIG1lbW9pemVkTG9nKGxvZ2dlci53YXJuLCBOT1RfTkFUSVZFX1BMVUdJTihwbHVnaW5QYXRoKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGltcG9ydEFuZFZlcmlmeU1vZHVsZShtZXRob2QsIHBsdWdpblBhdGgpO1xufTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBwbHVnaW4gd2l0aCBjb25maWcuXG4gKi9cbmNvbnN0IGluaXRQbHVnaW4gPSBhc3luYyAoXG4gIGluaXRQbHVnaW5QYXJhbXM6IFBsdWdpbk9wdGlvbnNcbik6IFByb21pc2U8UGx1Z2luSW50ZXJmYWNlPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBtZXRob2QsXG4gICAgcGF0aCxcbiAgICBtYXBwaW5nLFxuICAgIGNvbmZpZyxcbiAgICAncGFyYW1ldGVyLW1ldGFkYXRhJzogcGFyYW1ldGVyTWV0YWRhdGEsXG4gIH0gPSBpbml0UGx1Z2luUGFyYW1zITtcblxuICBpZiAoIW1ldGhvZCkge1xuICAgIHRocm93IG5ldyBNaXNzaW5nUGx1Z2luTWV0aG9kRXJyb3IoTUlTU0lOR19NRVRIT0QpO1xuICB9XG5cbiAgaWYgKCFwYXRoKSB7XG4gICAgdGhyb3cgbmV3IE1pc3NpbmdQbHVnaW5QYXRoRXJyb3IoTUlTU0lOR19QQVRIKTtcbiAgfVxuXG4gIGNvbnN0IHBsdWdpbiA9IGF3YWl0IGhhbmRNb2R1bGUobWV0aG9kLCBwYXRoKTtcblxuICByZXR1cm4gcGx1Z2luKGNvbmZpZywgcGFyYW1ldGVyTWV0YWRhdGEsIG1hcHBpbmcpO1xufTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgYWxsIHBsdWdpbnMgZnJvbSBgbWFuaWZlc3RgLmBpbml0aWFsaXplYCBwcm9wZXJ0eS5cbiAqIDEuIEluaXRhbGl6ZXMgcGx1Z2luIHN0b3JhZ2UuXG4gKiAyLiBJdGVyYXRlcyBvdmVyIHBsdWdpbiBuYW1lcyBhcnJheS5cbiAqIDMuIFdoaWxlIGl0ZXJhdGlvbiwgaW5pdGFsaXplcyBjdXJyZW50IHBsdWdpbiwgZ2F0aGVycyBpdCdzIHBhcmFtZXRlcnMgKGlucHV0L291dHB1dCkuXG4gKiAgICBUaGVuIHN0b3JlcyB0aGUgYWdncmVnYXRpb24gbWV0cmljcyBmb3IgZWFjaCBwYXJhbWV0ZXIgdG8gb3ZlcnJpZGUgc3R1YiB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBpbml0aWFsaXplID0gYXN5bmMgKFxuICBjb250ZXh0OiBDb250ZXh0XG4pOiBQcm9taXNlPFBsdWdpblN0b3JhZ2VJbnRlcmZhY2U+ID0+IHtcbiAgY29uc29sZS5kZWJ1ZyhJTklUSUFMSVpJTkdfUExVR0lOUywgJ1xcbicpO1xuICBjb25zdCB7cGx1Z2luc30gPSBjb250ZXh0LmluaXRpYWxpemU7XG4gIGNvbnN0IHN0b3JhZ2UgPSBwbHVnaW5TdG9yYWdlKCk7XG5cbiAgZm9yIGF3YWl0IChjb25zdCBwbHVnaW5OYW1lIG9mIE9iamVjdC5rZXlzKHBsdWdpbnMpKSB7XG4gICAgY29uc29sZS5kZWJ1ZyhJTklUSUFMSVpJTkdfUExVR0lOKHBsdWdpbk5hbWUpKTtcblxuICAgIGNvbnN0IHBsdWdpbiA9IGF3YWl0IGluaXRQbHVnaW4ocGx1Z2luc1twbHVnaW5OYW1lXSk7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHsuLi5wbHVnaW4ubWV0YWRhdGEuaW5wdXRzLCAuLi5wbHVnaW4ubWV0YWRhdGEub3V0cHV0c307XG5cbiAgICBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5mb3JFYWNoKGN1cnJlbnQgPT4ge1xuICAgICAgc3RvcmVBZ2dyZWdhdGlvbk1ldHJpY3Moe1xuICAgICAgICBbY3VycmVudF06IHBhcmFtZXRlcnNbY3VycmVudF1bJ2FnZ3JlZ2F0aW9uLW1ldGhvZCddLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBzdG9yYWdlLnNldChwbHVnaW5OYW1lLCBwbHVnaW4pO1xuICB9XG5cbiAgcmV0dXJuIHN0b3JhZ2U7XG59O1xuIl19
@@ -0,0 +1,5 @@
1
+ import { PluginParams } from '@grnsft/if-core/types';
2
+ /**
3
+ * Regroups inputs and outputs based on the given group keys.
4
+ */
5
+ export declare const Regroup: (inputs: PluginParams[], outputs: PluginParams[], groups: string[]) => any;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Regroup = void 0;
4
+ const zod_1 = require("zod");
5
+ const utils_1 = require("@grnsft/if-core/utils");
6
+ const validations_1 = require("../../common/util/validations");
7
+ const config_1 = require("../config");
8
+ const { InvalidGroupingError } = utils_1.ERRORS;
9
+ const { INVALID_GROUP_KEY, REGROUP_ERROR } = config_1.STRINGS;
10
+ /**
11
+ * Creates structure to insert inputs by groups.
12
+ */
13
+ const appendGroup = (value, object, target, groups) => {
14
+ if (groups.length === 0) {
15
+ object[target] = object[target] || [];
16
+ object[target].push(value);
17
+ return object;
18
+ }
19
+ const group = groups.shift();
20
+ object.children = object.children || {};
21
+ object.children[group] = object.children[group] || {};
22
+ return appendGroup(value, object.children[group], target, groups);
23
+ };
24
+ /**
25
+ * Validates the groups array.
26
+ */
27
+ const validateGroups = (groups) => {
28
+ const inputData = { regroup: groups };
29
+ const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.array(zod_1.z.string(), { message: REGROUP_ERROR }).min(1));
30
+ (0, validations_1.validate)(validationSchema, inputData);
31
+ return groups;
32
+ };
33
+ /**
34
+ * Looks up a group key value in the input.
35
+ */
36
+ const lookupGroupKey = (input, groupKey) => {
37
+ if (!input[groupKey]) {
38
+ throw new InvalidGroupingError(INVALID_GROUP_KEY(groupKey));
39
+ }
40
+ return input[groupKey];
41
+ };
42
+ /**
43
+ * Regroups inputs and outputs based on the given group keys.
44
+ */
45
+ const Regroup = (inputs, outputs, groups) => {
46
+ const validatedGroups = validateGroups(groups);
47
+ const appendToAccumulator = (items, acc, target) => {
48
+ for (const item of items) {
49
+ const groupsWithData = validatedGroups.map(groupKey => lookupGroupKey(item, groupKey));
50
+ appendGroup(item, acc, target, groupsWithData);
51
+ }
52
+ };
53
+ const acc = {};
54
+ appendToAccumulator(inputs, acc, 'inputs');
55
+ appendToAccumulator(outputs, acc, 'outputs');
56
+ return acc.children;
57
+ };
58
+ exports.Regroup = Regroup;
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vbGliL3JlZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXNCO0FBQ3RCLGlEQUE2QztBQUc3QywrREFBdUQ7QUFFdkQsc0NBQWtDO0FBRWxDLE1BQU0sRUFBQyxvQkFBb0IsRUFBQyxHQUFHLGNBQU0sQ0FBQztBQUN0QyxNQUFNLEVBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFHLENBQ2xCLEtBQW1CLEVBQ25CLE1BQVcsRUFDWCxNQUFjLEVBQ2QsTUFBZ0IsRUFDWCxFQUFFO0lBQ1AsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFHLENBQUM7SUFDOUIsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUN4QyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXRELE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRSxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBZ0IsRUFBWSxFQUFFO0lBQ3BELE1BQU0sU0FBUyxHQUFHLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3BDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FDL0IsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUNWLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNyRCxDQUFDO0lBRUYsSUFBQSxzQkFBUSxFQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFtQixFQUFFLFFBQWdCLEVBQVUsRUFBRTtJQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ3BCLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBQzdEO0lBRUQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSSxNQUFNLE9BQU8sR0FBRyxDQUNyQixNQUFzQixFQUN0QixPQUF1QixFQUN2QixNQUFnQixFQUNYLEVBQUU7SUFDUCxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFL0MsTUFBTSxtQkFBbUIsR0FBRyxDQUMxQixLQUFxQixFQUNyQixHQUFRLEVBQ1IsTUFBYyxFQUNkLEVBQUU7UUFDRixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN4QixNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ3BELGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQy9CLENBQUM7WUFDRixXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDLENBQUM7SUFFRixNQUFNLEdBQUcsR0FBRyxFQUFTLENBQUM7SUFDdEIsbUJBQW1CLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRTdDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUN0QixDQUFDLENBQUM7QUF6QlcsUUFBQSxPQUFPLFdBeUJsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuaW1wb3J0IHtQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi9jb25maWcnO1xuXG5jb25zdCB7SW52YWxpZEdyb3VwaW5nRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge0lOVkFMSURfR1JPVVBfS0VZLCBSRUdST1VQX0VSUk9SfSA9IFNUUklOR1M7XG5cbi8qKlxuICogQ3JlYXRlcyBzdHJ1Y3R1cmUgdG8gaW5zZXJ0IGlucHV0cyBieSBncm91cHMuXG4gKi9cbmNvbnN0IGFwcGVuZEdyb3VwID0gKFxuICB2YWx1ZTogUGx1Z2luUGFyYW1zLFxuICBvYmplY3Q6IGFueSxcbiAgdGFyZ2V0OiBzdHJpbmcsXG4gIGdyb3Vwczogc3RyaW5nW11cbik6IGFueSA9PiB7XG4gIGlmIChncm91cHMubGVuZ3RoID09PSAwKSB7XG4gICAgb2JqZWN0W3RhcmdldF0gPSBvYmplY3RbdGFyZ2V0XSB8fCBbXTtcbiAgICBvYmplY3RbdGFyZ2V0XS5wdXNoKHZhbHVlKTtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgY29uc3QgZ3JvdXAgPSBncm91cHMuc2hpZnQoKSE7XG4gIG9iamVjdC5jaGlsZHJlbiA9IG9iamVjdC5jaGlsZHJlbiB8fCB7fTtcbiAgb2JqZWN0LmNoaWxkcmVuW2dyb3VwXSA9IG9iamVjdC5jaGlsZHJlbltncm91cF0gfHwge307XG5cbiAgcmV0dXJuIGFwcGVuZEdyb3VwKHZhbHVlLCBvYmplY3QuY2hpbGRyZW5bZ3JvdXBdLCB0YXJnZXQsIGdyb3Vwcyk7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgZ3JvdXBzIGFycmF5LlxuICovXG5jb25zdCB2YWxpZGF0ZUdyb3VwcyA9IChncm91cHM6IHN0cmluZ1tdKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBpbnB1dERhdGEgPSB7cmVncm91cDogZ3JvdXBzfTtcbiAgY29uc3QgdmFsaWRhdGlvblNjaGVtYSA9IHoucmVjb3JkKFxuICAgIHouc3RyaW5nKCksXG4gICAgei5hcnJheSh6LnN0cmluZygpLCB7bWVzc2FnZTogUkVHUk9VUF9FUlJPUn0pLm1pbigxKVxuICApO1xuXG4gIHZhbGlkYXRlKHZhbGlkYXRpb25TY2hlbWEsIGlucHV0RGF0YSk7XG5cbiAgcmV0dXJuIGdyb3Vwcztcbn07XG5cbi8qKlxuICogTG9va3MgdXAgYSBncm91cCBrZXkgdmFsdWUgaW4gdGhlIGlucHV0LlxuICovXG5jb25zdCBsb29rdXBHcm91cEtleSA9IChpbnB1dDogUGx1Z2luUGFyYW1zLCBncm91cEtleTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFpbnB1dFtncm91cEtleV0pIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEdyb3VwaW5nRXJyb3IoSU5WQUxJRF9HUk9VUF9LRVkoZ3JvdXBLZXkpKTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dFtncm91cEtleV07XG59O1xuXG4vKipcbiAqIFJlZ3JvdXBzIGlucHV0cyBhbmQgb3V0cHV0cyBiYXNlZCBvbiB0aGUgZ2l2ZW4gZ3JvdXAga2V5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlZ3JvdXAgPSAoXG4gIGlucHV0czogUGx1Z2luUGFyYW1zW10sXG4gIG91dHB1dHM6IFBsdWdpblBhcmFtc1tdLFxuICBncm91cHM6IHN0cmluZ1tdXG4pOiBhbnkgPT4ge1xuICBjb25zdCB2YWxpZGF0ZWRHcm91cHMgPSB2YWxpZGF0ZUdyb3Vwcyhncm91cHMpO1xuXG4gIGNvbnN0IGFwcGVuZFRvQWNjdW11bGF0b3IgPSAoXG4gICAgaXRlbXM6IFBsdWdpblBhcmFtc1tdLFxuICAgIGFjYzogYW55LFxuICAgIHRhcmdldDogc3RyaW5nXG4gICkgPT4ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgY29uc3QgZ3JvdXBzV2l0aERhdGEgPSB2YWxpZGF0ZWRHcm91cHMubWFwKGdyb3VwS2V5ID0+XG4gICAgICAgIGxvb2t1cEdyb3VwS2V5KGl0ZW0sIGdyb3VwS2V5KVxuICAgICAgKTtcbiAgICAgIGFwcGVuZEdyb3VwKGl0ZW0sIGFjYywgdGFyZ2V0LCBncm91cHNXaXRoRGF0YSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFjYyA9IHt9IGFzIGFueTtcbiAgYXBwZW5kVG9BY2N1bXVsYXRvcihpbnB1dHMsIGFjYywgJ2lucHV0cycpO1xuICBhcHBlbmRUb0FjY3VtdWxhdG9yKG91dHB1dHMsIGFjYywgJ291dHB1dHMnKTtcblxuICByZXR1cm4gYWNjLmNoaWxkcmVuO1xufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export type AggregationResult = Record<string, number>;
2
+ export declare const AGGREGATION_TYPES: readonly ["horizontal", "time", "vertical", "component", "both"];
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AGGREGATION_TYPES = void 0;
4
+ exports.AGGREGATION_TYPES = [
5
+ 'horizontal',
6
+ 'time',
7
+ 'vertical',
8
+ 'component',
9
+ 'both',
10
+ ];
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL3R5cGVzL2FnZ3JlZ2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVhLFFBQUEsaUJBQWlCLEdBQUc7SUFDL0IsWUFBWTtJQUNaLE1BQU07SUFDTixVQUFVO0lBQ1YsV0FBVztJQUNYLE1BQU07Q0FDRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQWdncmVnYXRpb25SZXN1bHQgPSBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuXG5leHBvcnQgY29uc3QgQUdHUkVHQVRJT05fVFlQRVMgPSBbXG4gICdob3Jpem9udGFsJyxcbiAgJ3RpbWUnLFxuICAndmVydGljYWwnLFxuICAnY29tcG9uZW50JyxcbiAgJ2JvdGgnLFxuXSBhcyBjb25zdDtcbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { PluginParams } from '@grnsft/if-core/types';
2
+ import { PluginStorageInterface } from './plugin-storage';
3
+ import { Context } from '../../common/types/manifest';
4
+ /**
5
+ * @todo: remove NodeConfig after some period
6
+ */
7
+ export type NodeConfig = {
8
+ [key: string]: Record<string, any>;
9
+ };
10
+ export type PhasedPipeline = {
11
+ observe?: string[];
12
+ regroup?: string[];
13
+ compute?: string[];
14
+ };
15
+ export type ComputeParams = {
16
+ pluginStorage: PluginStorageInterface;
17
+ context: Context;
18
+ pipeline?: PhasedPipeline;
19
+ config?: NodeConfig;
20
+ defaults?: PluginParams;
21
+ observe?: Boolean;
22
+ regroup?: Boolean;
23
+ compute?: Boolean;
24
+ append?: boolean;
25
+ };
26
+ export type Node = {
27
+ children?: any;
28
+ pipeline?: PhasedPipeline;
29
+ config?: NodeConfig;
30
+ defaults?: PluginParams;
31
+ inputs?: PluginParams[];
32
+ outputs?: PluginParams[];
33
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vdHlwZXMvY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7UGx1Z2luU3RvcmFnZUludGVyZmFjZX0gZnJvbSAnLi9wbHVnaW4tc3RvcmFnZSc7XG5pbXBvcnQge0NvbnRleHR9IGZyb20gJy4uLy4uL2NvbW1vbi90eXBlcy9tYW5pZmVzdCc7XG5cbi8qKlxuICogQHRvZG86IHJlbW92ZSBOb2RlQ29uZmlnIGFmdGVyIHNvbWUgcGVyaW9kXG4gKi9cbmV4cG9ydCB0eXBlIE5vZGVDb25maWcgPSB7XG4gIFtrZXk6IHN0cmluZ106IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG5leHBvcnQgdHlwZSBQaGFzZWRQaXBlbGluZSA9IHtcbiAgb2JzZXJ2ZT86IHN0cmluZ1tdO1xuICByZWdyb3VwPzogc3RyaW5nW107XG4gIGNvbXB1dGU/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIENvbXB1dGVQYXJhbXMgPSB7XG4gIHBsdWdpblN0b3JhZ2U6IFBsdWdpblN0b3JhZ2VJbnRlcmZhY2U7XG4gIGNvbnRleHQ6IENvbnRleHQ7XG4gIHBpcGVsaW5lPzogUGhhc2VkUGlwZWxpbmU7XG4gIGNvbmZpZz86IE5vZGVDb25maWc7XG4gIGRlZmF1bHRzPzogUGx1Z2luUGFyYW1zO1xuICBvYnNlcnZlPzogQm9vbGVhbjtcbiAgcmVncm91cD86IEJvb2xlYW47XG4gIGNvbXB1dGU/OiBCb29sZWFuO1xuICBhcHBlbmQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTm9kZSA9IHtcbiAgY2hpbGRyZW4/OiBhbnk7XG4gIHBpcGVsaW5lPzogUGhhc2VkUGlwZWxpbmU7XG4gIGNvbmZpZz86IE5vZGVDb25maWc7XG4gIGRlZmF1bHRzPzogUGx1Z2luUGFyYW1zO1xuICBpbnB1dHM/OiBQbHVnaW5QYXJhbXNbXTtcbiAgb3V0cHV0cz86IFBsdWdpblBhcmFtc1tdO1xufTtcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ export type PackageDependency = {
2
+ version: string;
3
+ resolved?: string;
4
+ overridden: boolean;
5
+ extraneous?: boolean;
6
+ };
7
+ type PackageProblem = {
8
+ extraneous: string;
9
+ };
10
+ export type NpmListResponse = {
11
+ version: string;
12
+ name: string;
13
+ problems?: PackageProblem[];
14
+ dependencies: {
15
+ [key: string]: PackageDependency;
16
+ };
17
+ };
18
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL3R5cGVzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQYWNrYWdlRGVwZW5kZW5jeSA9IHtcbiAgdmVyc2lvbjogc3RyaW5nO1xuICByZXNvbHZlZD86IHN0cmluZztcbiAgb3ZlcnJpZGRlbjogYm9vbGVhbjtcbiAgZXh0cmFuZW91cz86IGJvb2xlYW47XG59O1xuXG50eXBlIFBhY2thZ2VQcm9ibGVtID0ge1xuICBleHRyYW5lb3VzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOcG1MaXN0UmVzcG9uc2UgPSB7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBwcm9ibGVtcz86IFBhY2thZ2VQcm9ibGVtW107XG4gIGRlcGVuZGVuY2llczoge1xuICAgIFtrZXk6IHN0cmluZ106IFBhY2thZ2VEZXBlbmRlbmN5O1xuICB9O1xufTtcbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { ParameterMetadata } from '@grnsft/if-core/types';
2
+ export type ExplainParams = {
3
+ pluginName: string;
4
+ metadata: {
5
+ inputs?: ParameterMetadata;
6
+ outputs?: ParameterMetadata;
7
+ };
8
+ };
9
+ export type ExplainStorageType = Record<string, {
10
+ inputs?: ParameterMetadata;
11
+ outputs?: ParameterMetadata;
12
+ }>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vdHlwZXMvZXhwbGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQYXJhbWV0ZXJNZXRhZGF0YX0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRXhwbGFpblBhcmFtcyA9IHtcbiAgcGx1Z2luTmFtZTogc3RyaW5nO1xuICBtZXRhZGF0YToge2lucHV0cz86IFBhcmFtZXRlck1ldGFkYXRhOyBvdXRwdXRzPzogUGFyYW1ldGVyTWV0YWRhdGF9O1xufTtcblxuZXhwb3J0IHR5cGUgRXhwbGFpblN0b3JhZ2VUeXBlID0gUmVjb3JkPFxuICBzdHJpbmcsXG4gIHtcbiAgICBpbnB1dHM/OiBQYXJhbWV0ZXJNZXRhZGF0YTtcbiAgICBvdXRwdXRzPzogUGFyYW1ldGVyTWV0YWRhdGE7XG4gIH1cbj47XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import { PluginInterface } from '@grnsft/if-core/types';
2
+ import { pluginStorage } from '../util/plugin-storage';
3
+ export type PluginStorage = {
4
+ [key: string]: PluginInterface;
5
+ };
6
+ export type PluginStorageInterface = ReturnType<typeof pluginStorage>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL3R5cGVzL3BsdWdpbi1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BsdWdpbkludGVyZmFjZX0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcbmltcG9ydCB7cGx1Z2luU3RvcmFnZX0gZnJvbSAnLi4vdXRpbC9wbHVnaW4tc3RvcmFnZSc7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblN0b3JhZ2UgPSB7XG4gIFtrZXk6IHN0cmluZ106IFBsdWdpbkludGVyZmFjZTtcbn07XG5cbmV4cG9ydCB0eXBlIFBsdWdpblN0b3JhZ2VJbnRlcmZhY2UgPSBSZXR1cm5UeXBlPHR5cGVvZiBwbHVnaW5TdG9yYWdlPjtcbiJdfQ==
@@ -0,0 +1,27 @@
1
+ export interface IfRunArgs {
2
+ manifest?: string;
3
+ output?: string;
4
+ 'no-output'?: boolean;
5
+ debug?: boolean;
6
+ observe?: boolean;
7
+ regroup?: boolean;
8
+ compute?: boolean;
9
+ append?: boolean;
10
+ }
11
+ export interface ProcessArgsOutputs {
12
+ inputPath: string;
13
+ outputOptions: {
14
+ outputPath?: string;
15
+ noOutput?: boolean;
16
+ };
17
+ paramPath?: string;
18
+ debug?: boolean;
19
+ observe?: boolean;
20
+ regroup?: boolean;
21
+ compute?: boolean;
22
+ append?: boolean;
23
+ }
24
+ export interface Options {
25
+ outputPath?: string;
26
+ noOutput?: boolean;
27
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hcmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLXJ1bi90eXBlcy9wcm9jZXNzLWFyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSWZSdW5BcmdzIHtcbiAgbWFuaWZlc3Q/OiBzdHJpbmc7XG4gIG91dHB1dD86IHN0cmluZztcbiAgJ25vLW91dHB1dCc/OiBib29sZWFuO1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIG9ic2VydmU/OiBib29sZWFuO1xuICByZWdyb3VwPzogYm9vbGVhbjtcbiAgY29tcHV0ZT86IGJvb2xlYW47XG4gIGFwcGVuZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0FyZ3NPdXRwdXRzIHtcbiAgaW5wdXRQYXRoOiBzdHJpbmc7XG4gIG91dHB1dE9wdGlvbnM6IHtcbiAgICBvdXRwdXRQYXRoPzogc3RyaW5nO1xuICAgIG5vT3V0cHV0PzogYm9vbGVhbjtcbiAgfTtcbiAgcGFyYW1QYXRoPzogc3RyaW5nO1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIG9ic2VydmU/OiBib29sZWFuO1xuICByZWdyb3VwPzogYm9vbGVhbjtcbiAgY29tcHV0ZT86IGJvb2xlYW47XG4gIGFwcGVuZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG4gIG5vT3V0cHV0PzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { PluginParams } from '@grnsft/if-core/types';
2
+ /**
3
+ * Aggregates child node level metrics. Appends aggregation additional params to metrics.
4
+ * Otherwise iterates over outputs by aggregating per given `metrics`.
5
+ */
6
+ export declare const aggregateOutputsIntoOne: (outputs: PluginParams[], metrics: string[], isTemporal?: boolean) => PluginParams;