@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,16 @@
1
+ import { ConfigParams, PluginParams } from '@grnsft/if-core/types';
2
+ export declare const CSVLookup: (config: ConfigParams | undefined, parametersMetadata: import("@grnsft/if-core/types").PluginParametersMetadata, mapping: import("@grnsft/if-core/types").MappingParams) => {
3
+ metadata: {
4
+ inputs: {
5
+ [x: string]: {
6
+ description: string;
7
+ unit: string;
8
+ 'aggregation-method': import("@grnsft/if-core/types").AggregationOptions;
9
+ };
10
+ };
11
+ outputs: import("@grnsft/if-core/types").ParameterMetadata;
12
+ };
13
+ execute: (inputs: PluginParams[]) => Promise<{
14
+ [x: string]: any;
15
+ }[]>;
16
+ };
@@ -0,0 +1,175 @@
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 interfaces_1 = require("@grnsft/if-core/interfaces");
13
+ const utils_1 = require("@grnsft/if-core/utils");
14
+ const config_1 = require("../../config");
15
+ const { FILE_FETCH_FAILED, FILE_READ_FAILED, MISSING_CSV_COLUMN, MISSING_CONFIG, NO_QUERY_DATA, } = config_1.STRINGS;
16
+ const { FetchingFileError, ReadFileError, MissingCSVColumnError, QueryDataNotFoundError, ConfigError, CSVParseError, } = utils_1.ERRORS;
17
+ exports.CSVLookup = (0, interfaces_1.PluginFactory)({
18
+ configValidation: (config) => {
19
+ if (!config || !Object.keys(config)?.length) {
20
+ throw new ConfigError(MISSING_CONFIG);
21
+ }
22
+ const configSchema = zod_1.z.object({
23
+ filepath: zod_1.z.string(),
24
+ query: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
25
+ output: zod_1.z
26
+ .string()
27
+ .or(zod_1.z.array(zod_1.z.string()))
28
+ .or(zod_1.z.array(zod_1.z.array(zod_1.z.string()))),
29
+ });
30
+ return (0, utils_1.validate)(configSchema, config);
31
+ },
32
+ implementation: async (inputs, config) => {
33
+ /**
34
+ * 1. Tries to retrieve given file (with url or local path).
35
+ * 2. Parses given CSV.
36
+ * 3. Filters requested information from CSV.
37
+ */
38
+ const { filepath, query, output } = config;
39
+ const file = await retrieveFile(filepath);
40
+ const parsedCSV = parseCSVFile(file);
41
+ return inputs.map(input => {
42
+ /** Collects query values from input. */
43
+ const queryData = {};
44
+ const queryKeys = Object.keys(query);
45
+ queryKeys.forEach(queryKey => {
46
+ const queryValue = query[queryKey];
47
+ queryData[queryKey] = input[queryValue];
48
+ });
49
+ /** Gets related data from CSV. */
50
+ const relatedData = parsedCSV.find(withCriteria(queryData));
51
+ if (!relatedData) {
52
+ throw new QueryDataNotFoundError(NO_QUERY_DATA);
53
+ }
54
+ return {
55
+ ...input,
56
+ ...filterOutput(relatedData, { output, query }),
57
+ };
58
+ });
59
+ },
60
+ });
61
+ /**
62
+ * Checks if given string is URL.
63
+ */
64
+ const isURL = (filepath) => {
65
+ try {
66
+ new URL(filepath);
67
+ return true;
68
+ }
69
+ catch (error) {
70
+ return false;
71
+ }
72
+ };
73
+ /**
74
+ * Checks if given `filepath` is url, then tries to fetch it.
75
+ * Otherwise tries to read file.
76
+ */
77
+ const retrieveFile = async (filepath) => {
78
+ if (isURL(filepath)) {
79
+ const { data } = await axios_1.default.get(filepath).catch(error => {
80
+ throw new FetchingFileError(FILE_FETCH_FAILED(filepath, error.response.message));
81
+ });
82
+ return data;
83
+ }
84
+ return (0, promises_1.readFile)(filepath).catch(error => {
85
+ throw new ReadFileError(FILE_READ_FAILED(filepath, error));
86
+ });
87
+ };
88
+ /**
89
+ * Checks if value is invalid: `undefined`, `null` or an empty string, then sets `nan` instead.
90
+ */
91
+ const setNanValue = (value) => value == null || value === '' ? 'nan' : value;
92
+ /**
93
+ * Converts empty values to `nan`.
94
+ */
95
+ const nanifyEmptyValues = (object) => {
96
+ if (typeof object === 'object') {
97
+ const keys = Object.keys(object);
98
+ keys.forEach(key => {
99
+ const value = object[key];
100
+ object[key] = setNanValue(value);
101
+ });
102
+ return object;
103
+ }
104
+ return setNanValue(object);
105
+ };
106
+ /**
107
+ * If `field` is missing from `object`, then reject with error.
108
+ * Otherwise nanify empty values and return data.
109
+ */
110
+ const fieldAccessor = (field, object) => {
111
+ if (!(`${field}` in object)) {
112
+ throw new MissingCSVColumnError(MISSING_CSV_COLUMN(field));
113
+ }
114
+ return nanifyEmptyValues(object[field]);
115
+ };
116
+ /**
117
+ * 1. If output is anything, then removes query data from csv record to escape duplicates.
118
+ * 2. Otherwise checks if it's a miltidimensional array, then grabs multiple fields ().
119
+ * 3. If not, then returns single field.
120
+ * 4. In case if it's string, then
121
+ */
122
+ const filterOutput = (dataFromCSV, params) => {
123
+ const { output, query } = params;
124
+ if (output === '*') {
125
+ const keys = Object.keys(query);
126
+ keys.forEach(key => {
127
+ delete dataFromCSV[key];
128
+ });
129
+ return nanifyEmptyValues(dataFromCSV);
130
+ }
131
+ if (Array.isArray(output)) {
132
+ /** Check if it's a multidimensional array. */
133
+ if (Array.isArray(output[0])) {
134
+ const result = {};
135
+ output.forEach(outputField => {
136
+ /** Check if there is no renaming request, then export as is */
137
+ const outputTitle = outputField[1] || outputField[0];
138
+ result[outputTitle] = fieldAccessor(outputField[0], dataFromCSV);
139
+ });
140
+ return result;
141
+ }
142
+ const outputTitle = output[1] || output[0];
143
+ return {
144
+ [outputTitle]: fieldAccessor(output[0], dataFromCSV),
145
+ };
146
+ }
147
+ return {
148
+ [output]: fieldAccessor(output, dataFromCSV),
149
+ };
150
+ };
151
+ /**
152
+ * Asserts CSV record with query data.
153
+ */
154
+ const withCriteria = (queryData) => (csvRecord) => {
155
+ const ifMatchesCriteria = Object.keys(queryData).map((key) => csvRecord[key] == queryData[key]);
156
+ return ifMatchesCriteria.every(value => value === true);
157
+ };
158
+ /**
159
+ * Parses CSV file.
160
+ */
161
+ const parseCSVFile = (file) => {
162
+ try {
163
+ const parsedCSV = (0, sync_1.parse)(file, {
164
+ columns: true,
165
+ skip_empty_lines: true,
166
+ cast: true,
167
+ });
168
+ return parsedCSV;
169
+ }
170
+ catch (error) {
171
+ console.error(error);
172
+ throw new CSVParseError(error);
173
+ }
174
+ };
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2Nzdi1sb29rdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkJBQTJCO0FBQzNCLDBDQUFxQztBQUNyQyxrREFBMEI7QUFDMUIsNkJBQXNCO0FBQ3RCLHlDQUFxQztBQUdyQywyREFBeUQ7QUFDekQsaURBQXVEO0FBRXZELHlDQUFxQztBQUVyQyxNQUFNLEVBQ0osaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLGFBQWEsR0FDZCxHQUFHLGdCQUFPLENBQUM7QUFFWixNQUFNLEVBQ0osaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCxhQUFhLEdBQ2QsR0FBRyxjQUFNLENBQUM7QUFFRSxRQUFBLFNBQVMsR0FBRyxJQUFBLDBCQUFhLEVBQUM7SUFDckMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFvQixFQUFFLEVBQUU7UUFDekMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDdkM7UUFFRCxNQUFNLFlBQVksR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQzVCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3BCLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkMsTUFBTSxFQUFFLE9BQUM7aUJBQ04sTUFBTSxFQUFFO2lCQUNSLEVBQUUsQ0FBQyxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2lC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LENBQUMsR0FBRyxDQUNsRCxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FDbEQsQ0FBQztJQUVGLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFxQixFQUFFLEVBQUU7SUFDN0MsSUFBSTtRQUNGLE1BQU0sU0FBUyxHQUFVLElBQUEsWUFBSyxFQUFDLElBQUksRUFBRTtZQUNuQyxPQUFPLEVBQUUsSUFBSTtZQUNiLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDLENBQUM7UUFFSCxPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUFDLE9BQU8sS0FBVSxFQUFFO1FBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNoQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuaW1wb3J0IHtyZWFkRmlsZX0gZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB7cGFyc2V9IGZyb20gJ2Nzdi1wYXJzZS9zeW5jJztcblxuaW1wb3J0IHtDb25maWdQYXJhbXMsIFBsdWdpblBhcmFtc30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcbmltcG9ydCB7UGx1Z2luRmFjdG9yeX0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtFUlJPUlMsIHZhbGlkYXRlfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cbmNvbnN0IHtcbiAgRklMRV9GRVRDSF9GQUlMRUQsXG4gIEZJTEVfUkVBRF9GQUlMRUQsXG4gIE1JU1NJTkdfQ1NWX0NPTFVNTixcbiAgTUlTU0lOR19DT05GSUcsXG4gIE5PX1FVRVJZX0RBVEEsXG59ID0gU1RSSU5HUztcblxuY29uc3Qge1xuICBGZXRjaGluZ0ZpbGVFcnJvcixcbiAgUmVhZEZpbGVFcnJvcixcbiAgTWlzc2luZ0NTVkNvbHVtbkVycm9yLFxuICBRdWVyeURhdGFOb3RGb3VuZEVycm9yLFxuICBDb25maWdFcnJvcixcbiAgQ1NWUGFyc2VFcnJvcixcbn0gPSBFUlJPUlM7XG5cbmV4cG9ydCBjb25zdCBDU1ZMb29rdXAgPSBQbHVnaW5GYWN0b3J5KHtcbiAgY29uZmlnVmFsaWRhdGlvbjogKGNvbmZpZzogQ29uZmlnUGFyYW1zKSA9PiB7XG4gICAgaWYgKCFjb25maWcgfHwgIU9iamVjdC5rZXlzKGNvbmZpZyk/Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IENvbmZpZ0Vycm9yKE1JU1NJTkdfQ09ORklHKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICBmaWxlcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIHF1ZXJ5OiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKSxcbiAgICAgIG91dHB1dDogelxuICAgICAgICAuc3RyaW5nKClcbiAgICAgICAgLm9yKHouYXJyYXkoei5zdHJpbmcoKSkpXG4gICAgICAgIC5vcih6LmFycmF5KHouYXJyYXkoei5zdHJpbmcoKSkpKSxcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBjb25maWdTY2hlbWE+Pihjb25maWdTY2hlbWEsIGNvbmZpZyk7XG4gIH0sXG4gIGltcGxlbWVudGF0aW9uOiBhc3luYyAoaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSwgY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICAvKipcbiAgICAgKiAxLiBUcmllcyB0byByZXRyaWV2ZSBnaXZlbiBmaWxlICh3aXRoIHVybCBvciBsb2NhbCBwYXRoKS5cbiAgICAgKiAyLiBQYXJzZXMgZ2l2ZW4gQ1NWLlxuICAgICAqIDMuIEZpbHRlcnMgcmVxdWVzdGVkIGluZm9ybWF0aW9uIGZyb20gQ1NWLlxuICAgICAqL1xuICAgIGNvbnN0IHtmaWxlcGF0aCwgcXVlcnksIG91dHB1dH0gPSBjb25maWc7XG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHJldHJpZXZlRmlsZShmaWxlcGF0aCk7XG4gICAgY29uc3QgcGFyc2VkQ1NWID0gcGFyc2VDU1ZGaWxlKGZpbGUpO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoaW5wdXQgPT4ge1xuICAgICAgLyoqIENvbGxlY3RzIHF1ZXJ5IHZhbHVlcyBmcm9tIGlucHV0LiAqL1xuICAgICAgY29uc3QgcXVlcnlEYXRhOiBhbnkgPSB7fTtcbiAgICAgIGNvbnN0IHF1ZXJ5S2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcbiAgICAgIHF1ZXJ5S2V5cy5mb3JFYWNoKHF1ZXJ5S2V5ID0+IHtcbiAgICAgICAgY29uc3QgcXVlcnlWYWx1ZSA9IHF1ZXJ5W3F1ZXJ5S2V5XTtcbiAgICAgICAgcXVlcnlEYXRhW3F1ZXJ5S2V5XSA9IGlucHV0W3F1ZXJ5VmFsdWVdO1xuICAgICAgfSk7XG5cbiAgICAgIC8qKiBHZXRzIHJlbGF0ZWQgZGF0YSBmcm9tIENTVi4gKi9cbiAgICAgIGNvbnN0IHJlbGF0ZWREYXRhID0gcGFyc2VkQ1NWLmZpbmQod2l0aENyaXRlcmlhKHF1ZXJ5RGF0YSkpO1xuXG4gICAgICBpZiAoIXJlbGF0ZWREYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBRdWVyeURhdGFOb3RGb3VuZEVycm9yKE5PX1FVRVJZX0RBVEEpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgLi4uZmlsdGVyT3V0cHV0KHJlbGF0ZWREYXRhLCB7b3V0cHV0LCBxdWVyeX0pLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG4vKipcbiAqIENoZWNrcyBpZiBnaXZlbiBzdHJpbmcgaXMgVVJMLlxuICovXG5jb25zdCBpc1VSTCA9IChmaWxlcGF0aDogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgbmV3IFVSTChmaWxlcGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBnaXZlbiBgZmlsZXBhdGhgIGlzIHVybCwgdGhlbiB0cmllcyB0byBmZXRjaCBpdC5cbiAqIE90aGVyd2lzZSB0cmllcyB0byByZWFkIGZpbGUuXG4gKi9cbmNvbnN0IHJldHJpZXZlRmlsZSA9IGFzeW5jIChmaWxlcGF0aDogc3RyaW5nKSA9PiB7XG4gIGlmIChpc1VSTChmaWxlcGF0aCkpIHtcbiAgICBjb25zdCB7ZGF0YX0gPSBhd2FpdCBheGlvcy5nZXQoZmlsZXBhdGgpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIHRocm93IG5ldyBGZXRjaGluZ0ZpbGVFcnJvcihcbiAgICAgICAgRklMRV9GRVRDSF9GQUlMRUQoZmlsZXBhdGgsIGVycm9yLnJlc3BvbnNlLm1lc3NhZ2UpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICByZXR1cm4gcmVhZEZpbGUoZmlsZXBhdGgpLmNhdGNoKGVycm9yID0+IHtcbiAgICB0aHJvdyBuZXcgUmVhZEZpbGVFcnJvcihGSUxFX1JFQURfRkFJTEVEKGZpbGVwYXRoLCBlcnJvcikpO1xuICB9KTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHZhbHVlIGlzIGludmFsaWQ6IGB1bmRlZmluZWRgLCBgbnVsbGAgb3IgYW4gZW1wdHkgc3RyaW5nLCB0aGVuIHNldHMgYG5hbmAgaW5zdGVhZC5cbiAqL1xuY29uc3Qgc2V0TmFuVmFsdWUgPSAodmFsdWU6IGFueSkgPT5cbiAgdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycgPyAnbmFuJyA6IHZhbHVlO1xuXG4vKipcbiAqIENvbnZlcnRzIGVtcHR5IHZhbHVlcyB0byBgbmFuYC5cbiAqL1xuY29uc3QgbmFuaWZ5RW1wdHlWYWx1ZXMgPSAob2JqZWN0OiBhbnkpID0+IHtcbiAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgICBvYmplY3Rba2V5XSA9IHNldE5hblZhbHVlKHZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cblxuICByZXR1cm4gc2V0TmFuVmFsdWUob2JqZWN0KTtcbn07XG5cbi8qKlxuICogSWYgYGZpZWxkYCBpcyBtaXNzaW5nIGZyb20gYG9iamVjdGAsIHRoZW4gcmVqZWN0IHdpdGggZXJyb3IuXG4gKiBPdGhlcndpc2UgbmFuaWZ5IGVtcHR5IHZhbHVlcyBhbmQgcmV0dXJuIGRhdGEuXG4gKi9cbmNvbnN0IGZpZWxkQWNjZXNzb3IgPSAoZmllbGQ6IHN0cmluZywgb2JqZWN0OiBhbnkpID0+IHtcbiAgaWYgKCEoYCR7ZmllbGR9YCBpbiBvYmplY3QpKSB7XG4gICAgdGhyb3cgbmV3IE1pc3NpbmdDU1ZDb2x1bW5FcnJvcihNSVNTSU5HX0NTVl9DT0xVTU4oZmllbGQpKTtcbiAgfVxuXG4gIHJldHVybiBuYW5pZnlFbXB0eVZhbHVlcyhvYmplY3RbZmllbGRdKTtcbn07XG5cbi8qKlxuICogMS4gSWYgb3V0cHV0IGlzIGFueXRoaW5nLCB0aGVuIHJlbW92ZXMgcXVlcnkgZGF0YSBmcm9tIGNzdiByZWNvcmQgdG8gZXNjYXBlIGR1cGxpY2F0ZXMuXG4gKiAyLiBPdGhlcndpc2UgY2hlY2tzIGlmIGl0J3MgYSBtaWx0aWRpbWVuc2lvbmFsIGFycmF5LCB0aGVuIGdyYWJzIG11bHRpcGxlIGZpZWxkcyAoKS5cbiAqIDMuIElmIG5vdCwgdGhlbiByZXR1cm5zIHNpbmdsZSBmaWVsZC5cbiAqIDQuIEluIGNhc2UgaWYgaXQncyBzdHJpbmcsIHRoZW5cbiAqL1xuY29uc3QgZmlsdGVyT3V0cHV0ID0gKFxuICBkYXRhRnJvbUNTVjogYW55LFxuICBwYXJhbXM6IHtcbiAgICBvdXRwdXQ6IHN0cmluZyB8IHN0cmluZ1tdIHwgc3RyaW5nW11bXTtcbiAgICBxdWVyeTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgfVxuKSA9PiB7XG4gIGNvbnN0IHtvdXRwdXQsIHF1ZXJ5fSA9IHBhcmFtcztcblxuICBpZiAob3V0cHV0ID09PSAnKicpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocXVlcnkpO1xuXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBkZWxldGUgZGF0YUZyb21DU1Zba2V5XTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuYW5pZnlFbXB0eVZhbHVlcyhkYXRhRnJvbUNTVik7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShvdXRwdXQpKSB7XG4gICAgLyoqIENoZWNrIGlmIGl0J3MgYSBtdWx0aWRpbWVuc2lvbmFsIGFycmF5LiAqL1xuICAgIGlmIChBcnJheS5pc0FycmF5KG91dHB1dFswXSkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge307XG5cbiAgICAgIG91dHB1dC5mb3JFYWNoKG91dHB1dEZpZWxkID0+IHtcbiAgICAgICAgLyoqIENoZWNrIGlmIHRoZXJlIGlzIG5vIHJlbmFtaW5nIHJlcXVlc3QsIHRoZW4gZXhwb3J0IGFzIGlzICovXG4gICAgICAgIGNvbnN0IG91dHB1dFRpdGxlID0gb3V0cHV0RmllbGRbMV0gfHwgb3V0cHV0RmllbGRbMF07XG4gICAgICAgIHJlc3VsdFtvdXRwdXRUaXRsZV0gPSBmaWVsZEFjY2Vzc29yKG91dHB1dEZpZWxkWzBdLCBkYXRhRnJvbUNTVik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXRUaXRsZSA9IG91dHB1dFsxXSB8fCBvdXRwdXRbMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgW291dHB1dFRpdGxlIGFzIHN0cmluZ106IGZpZWxkQWNjZXNzb3Iob3V0cHV0WzBdLCBkYXRhRnJvbUNTViksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgW291dHB1dF06IGZpZWxkQWNjZXNzb3Iob3V0cHV0LCBkYXRhRnJvbUNTViksXG4gIH07XG59O1xuXG4vKipcbiAqIEFzc2VydHMgQ1NWIHJlY29yZCB3aXRoIHF1ZXJ5IGRhdGEuXG4gKi9cbmNvbnN0IHdpdGhDcml0ZXJpYSA9IChxdWVyeURhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IChjc3ZSZWNvcmQ6IGFueSkgPT4ge1xuICBjb25zdCBpZk1hdGNoZXNDcml0ZXJpYSA9IE9iamVjdC5rZXlzKHF1ZXJ5RGF0YSkubWFwKFxuICAgIChrZXk6IHN0cmluZykgPT4gY3N2UmVjb3JkW2tleV0gPT0gcXVlcnlEYXRhW2tleV1cbiAgKTtcblxuICByZXR1cm4gaWZNYXRjaGVzQ3JpdGVyaWEuZXZlcnkodmFsdWUgPT4gdmFsdWUgPT09IHRydWUpO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgQ1NWIGZpbGUuXG4gKi9cbmNvbnN0IHBhcnNlQ1NWRmlsZSA9IChmaWxlOiBzdHJpbmcgfCBCdWZmZXIpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWRDU1Y6IGFueVtdID0gcGFyc2UoZmlsZSwge1xuICAgICAgY29sdW1uczogdHJ1ZSxcbiAgICAgIHNraXBfZW1wdHlfbGluZXM6IHRydWUsXG4gICAgICBjYXN0OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhcnNlZENTVjtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHRocm93IG5ldyBDU1ZQYXJzZUVycm9yKGVycm9yKTtcbiAgfVxufTtcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { ConfigParams, PluginParams } from '@grnsft/if-core/types';
2
+ export declare const Divide: (config: ConfigParams | undefined, parametersMetadata: import("@grnsft/if-core/types").PluginParametersMetadata, mapping: import("@grnsft/if-core/types").MappingParams) => {
3
+ metadata: {
4
+ inputs: {
5
+ [x: string]: {
6
+ description: string;
7
+ unit: string;
8
+ 'aggregation-method': import("@grnsft/if-core/types").AggregationOptions;
9
+ };
10
+ };
11
+ outputs: import("@grnsft/if-core/types").ParameterMetadata;
12
+ };
13
+ execute: (inputs: PluginParams[]) => Promise<{
14
+ [x: string]: any;
15
+ }[]>;
16
+ };
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Divide = void 0;
4
+ const zod_1 = require("zod");
5
+ const interfaces_1 = require("@grnsft/if-core/interfaces");
6
+ const utils_1 = require("@grnsft/if-core/utils");
7
+ const validations_1 = require("../../../common/util/validations");
8
+ const config_1 = require("../../config");
9
+ const { MissingInputDataError, ConfigError } = utils_1.ERRORS;
10
+ const { MISSING_INPUT_DATA, ZERO_DIVISION, MISSING_CONFIG } = config_1.STRINGS;
11
+ exports.Divide = (0, interfaces_1.PluginFactory)({
12
+ configValidation: (config) => {
13
+ if (!config || !Object.keys(config)?.length) {
14
+ throw new ConfigError(MISSING_CONFIG);
15
+ }
16
+ const schema = zod_1.z.object({
17
+ numerator: zod_1.z.string().min(1),
18
+ denominator: zod_1.z.string().or(zod_1.z.number()),
19
+ output: zod_1.z.string(),
20
+ });
21
+ return (0, validations_1.validate)(schema, config);
22
+ },
23
+ inputValidation: (input, config) => {
24
+ const { numerator, denominator } = config;
25
+ const schema = zod_1.z
26
+ .object({
27
+ [numerator]: zod_1.z.number(),
28
+ [denominator]: zod_1.z.number().optional(),
29
+ })
30
+ .refine(() => {
31
+ if (typeof denominator === 'string' && !input[denominator]) {
32
+ throw new MissingInputDataError(MISSING_INPUT_DATA(denominator));
33
+ }
34
+ return true;
35
+ });
36
+ return (0, validations_1.validate)(schema, input);
37
+ },
38
+ implementation: async (inputs, config) => {
39
+ const { numerator, denominator, output } = config;
40
+ return inputs.map((input, index) => {
41
+ const calculatedResult = calculateDivide(input, index, {
42
+ numerator: input.numerator || numerator,
43
+ denominator: input.denominator || denominator,
44
+ });
45
+ return {
46
+ ...input,
47
+ [output]: calculatedResult,
48
+ };
49
+ });
50
+ },
51
+ allowArithmeticExpressions: ['numerator', 'denominator'],
52
+ });
53
+ /**
54
+ * Calculates the division of the given parameter.
55
+ */
56
+ const calculateDivide = (input, index, params) => {
57
+ const { denominator, numerator } = params;
58
+ const finalDenominator = typeof denominator === 'number'
59
+ ? denominator
60
+ : input[denominator] || denominator;
61
+ const finalNumerator = typeof numerator === 'number' ? numerator : input[numerator];
62
+ if (finalDenominator === 0) {
63
+ console.warn(ZERO_DIVISION(exports.Divide.name, index));
64
+ return finalNumerator;
65
+ }
66
+ return finalNumerator / finalDenominator;
67
+ };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2RpdmlkZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFHdEIsMkRBQXlEO0FBQ3pELGlEQUE2QztBQUU3QyxrRUFBMEQ7QUFFMUQseUNBQXFDO0FBRXJDLE1BQU0sRUFBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDcEQsTUFBTSxFQUFDLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXZELFFBQUEsTUFBTSxHQUFHLElBQUEsMEJBQWEsRUFBQztJQUNsQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQW9CLEVBQUUsRUFBRTtRQUN6QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsTUFBTSxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2QztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtTQUNuQixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxlQUFlLEVBQUUsQ0FBQyxLQUFtQixFQUFFLE1BQW9CLEVBQUUsRUFBRTtRQUM3RCxNQUFNLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUV4QyxNQUFNLE1BQU0sR0FBRyxPQUFDO2FBQ2IsTUFBTSxDQUFDO1lBQ04sQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtTQUNyQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUMxRCxNQUFNLElBQUkscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUNsRTtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLElBQUEsc0JBQVEsRUFBeUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE1BQU0sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUVoRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFDckQsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksU0FBUztnQkFDdkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksV0FBVzthQUM5QyxDQUFDLENBQUM7WUFFSCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQjthQUMzQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsMEJBQTBCLEVBQUUsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDO0NBQ3pELENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsS0FBbUIsRUFDbkIsS0FBYSxFQUNiLE1BR0MsRUFDRCxFQUFFO0lBQ0YsTUFBTSxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsR0FBRyxNQUFNLENBQUM7SUFDeEMsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxXQUFXLEtBQUssUUFBUTtRQUM3QixDQUFDLENBQUMsV0FBVztRQUNiLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxDQUFDO0lBQ3hDLE1BQU0sY0FBYyxHQUNsQixPQUFPLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRS9ELElBQUksZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRCxPQUFPLGNBQWMsQ0FBQztLQUN2QjtJQUVELE9BQU8sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQzNDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtDb25maWdQYXJhbXMsIFBsdWdpblBhcmFtc30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcbmltcG9ydCB7UGx1Z2luRmFjdG9yeX0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7TWlzc2luZ0lucHV0RGF0YUVycm9yLCBDb25maWdFcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7TUlTU0lOR19JTlBVVF9EQVRBLCBaRVJPX0RJVklTSU9OLCBNSVNTSU5HX0NPTkZJR30gPSBTVFJJTkdTO1xuXG5leHBvcnQgY29uc3QgRGl2aWRlID0gUGx1Z2luRmFjdG9yeSh7XG4gIGNvbmZpZ1ZhbGlkYXRpb246IChjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGlmICghY29uZmlnIHx8ICFPYmplY3Qua2V5cyhjb25maWcpPy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBDb25maWdFcnJvcihNSVNTSU5HX0NPTkZJRyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZW1hID0gei5vYmplY3Qoe1xuICAgICAgbnVtZXJhdG9yOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICAgIGRlbm9taW5hdG9yOiB6LnN0cmluZygpLm9yKHoubnVtYmVyKCkpLFxuICAgICAgb3V0cHV0OiB6LnN0cmluZygpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIHNjaGVtYT4+KHNjaGVtYSwgY29uZmlnKTtcbiAgfSxcbiAgaW5wdXRWYWxpZGF0aW9uOiAoaW5wdXQ6IFBsdWdpblBhcmFtcywgY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICBjb25zdCB7bnVtZXJhdG9yLCBkZW5vbWluYXRvcn0gPSBjb25maWc7XG5cbiAgICBjb25zdCBzY2hlbWEgPSB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgW251bWVyYXRvcl06IHoubnVtYmVyKCksXG4gICAgICAgIFtkZW5vbWluYXRvcl06IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICAgIH0pXG4gICAgICAucmVmaW5lKCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBkZW5vbWluYXRvciA9PT0gJ3N0cmluZycgJiYgIWlucHV0W2Rlbm9taW5hdG9yXSkge1xuICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nSW5wdXREYXRhRXJyb3IoTUlTU0lOR19JTlBVVF9EQVRBKGRlbm9taW5hdG9yKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIHNjaGVtYT4+KHNjaGVtYSwgaW5wdXQpO1xuICB9LFxuICBpbXBsZW1lbnRhdGlvbjogYXN5bmMgKGlucHV0czogUGx1Z2luUGFyYW1zW10sIGNvbmZpZzogQ29uZmlnUGFyYW1zKSA9PiB7XG4gICAgY29uc3Qge251bWVyYXRvciwgZGVub21pbmF0b3IsIG91dHB1dH0gPSBjb25maWc7XG5cbiAgICByZXR1cm4gaW5wdXRzLm1hcCgoaW5wdXQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkUmVzdWx0ID0gY2FsY3VsYXRlRGl2aWRlKGlucHV0LCBpbmRleCwge1xuICAgICAgICBudW1lcmF0b3I6IGlucHV0Lm51bWVyYXRvciB8fCBudW1lcmF0b3IsXG4gICAgICAgIGRlbm9taW5hdG9yOiBpbnB1dC5kZW5vbWluYXRvciB8fCBkZW5vbWluYXRvcixcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgW291dHB1dF06IGNhbGN1bGF0ZWRSZXN1bHQsXG4gICAgICB9O1xuICAgIH0pO1xuICB9LFxuICBhbGxvd0FyaXRobWV0aWNFeHByZXNzaW9uczogWydudW1lcmF0b3InLCAnZGVub21pbmF0b3InXSxcbn0pO1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRpdmlzaW9uIG9mIHRoZSBnaXZlbiBwYXJhbWV0ZXIuXG4gKi9cbmNvbnN0IGNhbGN1bGF0ZURpdmlkZSA9IChcbiAgaW5wdXQ6IFBsdWdpblBhcmFtcyxcbiAgaW5kZXg6IG51bWJlcixcbiAgcGFyYW1zOiB7XG4gICAgbnVtZXJhdG9yOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgZGVub21pbmF0b3I6IG51bWJlciB8IHN0cmluZztcbiAgfVxuKSA9PiB7XG4gIGNvbnN0IHtkZW5vbWluYXRvciwgbnVtZXJhdG9yfSA9IHBhcmFtcztcbiAgY29uc3QgZmluYWxEZW5vbWluYXRvciA9XG4gICAgdHlwZW9mIGRlbm9taW5hdG9yID09PSAnbnVtYmVyJ1xuICAgICAgPyBkZW5vbWluYXRvclxuICAgICAgOiBpbnB1dFtkZW5vbWluYXRvcl0gfHwgZGVub21pbmF0b3I7XG4gIGNvbnN0IGZpbmFsTnVtZXJhdG9yID1cbiAgICB0eXBlb2YgbnVtZXJhdG9yID09PSAnbnVtYmVyJyA/IG51bWVyYXRvciA6IGlucHV0W251bWVyYXRvcl07XG5cbiAgaWYgKGZpbmFsRGVub21pbmF0b3IgPT09IDApIHtcbiAgICBjb25zb2xlLndhcm4oWkVST19ESVZJU0lPTihEaXZpZGUubmFtZSwgaW5kZXgpKTtcbiAgICByZXR1cm4gZmluYWxOdW1lcmF0b3I7XG4gIH1cblxuICByZXR1cm4gZmluYWxOdW1lcmF0b3IgLyBmaW5hbERlbm9taW5hdG9yO1xufTtcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { PluginParams, ConfigParams } from '@grnsft/if-core/types';
2
+ export declare const Exponent: (config: ConfigParams | undefined, parametersMetadata: import("@grnsft/if-core/types").PluginParametersMetadata, mapping: import("@grnsft/if-core/types").MappingParams) => {
3
+ metadata: {
4
+ inputs: {
5
+ [x: string]: {
6
+ description: string;
7
+ unit: string;
8
+ 'aggregation-method': import("@grnsft/if-core/types").AggregationOptions;
9
+ };
10
+ };
11
+ outputs: import("@grnsft/if-core/types").ParameterMetadata;
12
+ };
13
+ execute: (inputs: PluginParams[]) => Promise<{
14
+ [x: string]: any;
15
+ }[]>;
16
+ };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Exponent = void 0;
4
+ const zod_1 = require("zod");
5
+ const interfaces_1 = require("@grnsft/if-core/interfaces");
6
+ const utils_1 = require("@grnsft/if-core/utils");
7
+ const validations_1 = require("../../../common/util/validations");
8
+ const config_1 = require("../../config");
9
+ const { ConfigError } = utils_1.ERRORS;
10
+ const { MISSING_CONFIG } = config_1.STRINGS;
11
+ exports.Exponent = (0, interfaces_1.PluginFactory)({
12
+ configValidation: (config) => {
13
+ if (!config || !Object.keys(config)?.length) {
14
+ throw new ConfigError(MISSING_CONFIG);
15
+ }
16
+ const configSchema = zod_1.z.object({
17
+ 'input-parameter': zod_1.z.string().min(1),
18
+ exponent: zod_1.z.number(),
19
+ 'output-parameter': zod_1.z.string().min(1),
20
+ });
21
+ return (0, validations_1.validate)(configSchema, config);
22
+ },
23
+ inputValidation: (input, config) => {
24
+ const inputParameter = config['input-parameter'];
25
+ const inputData = {
26
+ [inputParameter]: typeof inputParameter === 'number'
27
+ ? inputParameter
28
+ : input[inputParameter],
29
+ };
30
+ const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
31
+ return (0, validations_1.validate)(validationSchema, inputData);
32
+ },
33
+ implementation: async (inputs, config = {}) => {
34
+ const { 'input-parameter': inputParameter, exponent, 'output-parameter': outputParameter, } = config;
35
+ return inputs.map(input => {
36
+ const calculatedResult = calculateExponent(input, inputParameter, exponent);
37
+ return {
38
+ ...input,
39
+ [outputParameter]: calculatedResult,
40
+ };
41
+ });
42
+ },
43
+ allowArithmeticExpressions: ['input-parameter', 'exponent'],
44
+ });
45
+ /**
46
+ * Calculates the input param raised by the power of a given exponent.
47
+ */
48
+ const calculateExponent = (input, inputParameter, exponent) => {
49
+ const base = typeof inputParameter === 'number' ? inputParameter : input[inputParameter];
50
+ return Math.pow(base, exponent);
51
+ };
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2V4cG9uZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUErQjtBQUcvQiwyREFBeUQ7QUFDekQsaURBQTZDO0FBRTdDLGtFQUEwRDtBQUUxRCx5Q0FBcUM7QUFFckMsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLGNBQU0sQ0FBQztBQUM3QixNQUFNLEVBQUMsY0FBYyxFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUVwQixRQUFBLFFBQVEsR0FBRyxJQUFBLDBCQUFhLEVBQUM7SUFDcEMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFvQixFQUFFLEVBQUU7UUFDekMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDdkM7UUFFRCxNQUFNLFlBQVksR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQzVCLGlCQUFpQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3BCLGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3RDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBQSxzQkFBUSxFQUNiLFlBQTRCLEVBQzVCLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUNELGVBQWUsRUFBRSxDQUFDLEtBQW1CLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQzdELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sU0FBUyxHQUFHO1lBQ2hCLENBQUMsY0FBYyxDQUFDLEVBQ2QsT0FBTyxjQUFjLEtBQUssUUFBUTtnQkFDaEMsQ0FBQyxDQUFDLGNBQWM7Z0JBQ2hCLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1NBQzVCLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTFELE9BQU8sSUFBQSxzQkFBUSxFQUNiLGdCQUFnQixFQUNoQixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsU0FBdUIsRUFBRSxFQUFFLEVBQUU7UUFDMUUsTUFBTSxFQUNKLGlCQUFpQixFQUFFLGNBQWMsRUFDakMsUUFBUSxFQUNSLGtCQUFrQixFQUFFLGVBQWUsR0FDcEMsR0FBRyxNQUFNLENBQUM7UUFFWCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FDeEMsS0FBSyxFQUNMLGNBQWMsRUFDZCxRQUFRLENBQ1QsQ0FBQztZQUVGLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLENBQUMsZUFBZSxDQUFDLEVBQUUsZ0JBQWdCO2FBQ3BDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCwwQkFBMEIsRUFBRSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQztDQUM1RCxDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsS0FBbUIsRUFDbkIsY0FBK0IsRUFDL0IsUUFBZ0IsRUFDaEIsRUFBRTtJQUNGLE1BQU0sSUFBSSxHQUNSLE9BQU8sY0FBYyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFOUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3osIFpvZFR5cGV9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7UGx1Z2luUGFyYW1zLCBDb25maWdQYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5pbXBvcnQge1BsdWdpbkZhY3Rvcnl9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuY29uc3Qge0NvbmZpZ0Vycm9yfSA9IEVSUk9SUztcbmNvbnN0IHtNSVNTSU5HX0NPTkZJR30gPSBTVFJJTkdTO1xuXG5leHBvcnQgY29uc3QgRXhwb25lbnQgPSBQbHVnaW5GYWN0b3J5KHtcbiAgY29uZmlnVmFsaWRhdGlvbjogKGNvbmZpZzogQ29uZmlnUGFyYW1zKSA9PiB7XG4gICAgaWYgKCFjb25maWcgfHwgIU9iamVjdC5rZXlzKGNvbmZpZyk/Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IENvbmZpZ0Vycm9yKE1JU1NJTkdfQ09ORklHKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICAnaW5wdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICBleHBvbmVudDogei5udW1iZXIoKSxcbiAgICAgICdvdXRwdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2YgY29uZmlnU2NoZW1hPj4oXG4gICAgICBjb25maWdTY2hlbWEgYXMgWm9kVHlwZTxhbnk+LFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgfSxcbiAgaW5wdXRWYWxpZGF0aW9uOiAoaW5wdXQ6IFBsdWdpblBhcmFtcywgY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICBjb25zdCBpbnB1dFBhcmFtZXRlciA9IGNvbmZpZ1snaW5wdXQtcGFyYW1ldGVyJ107XG4gICAgY29uc3QgaW5wdXREYXRhID0ge1xuICAgICAgW2lucHV0UGFyYW1ldGVyXTpcbiAgICAgICAgdHlwZW9mIGlucHV0UGFyYW1ldGVyID09PSAnbnVtYmVyJ1xuICAgICAgICAgID8gaW5wdXRQYXJhbWV0ZXJcbiAgICAgICAgICA6IGlucHV0W2lucHV0UGFyYW1ldGVyXSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbGlkYXRpb25TY2hlbWEgPSB6LnJlY29yZCh6LnN0cmluZygpLCB6Lm51bWJlcigpKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiB2YWxpZGF0aW9uU2NoZW1hPj4oXG4gICAgICB2YWxpZGF0aW9uU2NoZW1hLFxuICAgICAgaW5wdXREYXRhXG4gICAgKTtcbiAgfSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBjb25maWc6IENvbmZpZ1BhcmFtcyA9IHt9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgJ2lucHV0LXBhcmFtZXRlcic6IGlucHV0UGFyYW1ldGVyLFxuICAgICAgZXhwb25lbnQsXG4gICAgICAnb3V0cHV0LXBhcmFtZXRlcic6IG91dHB1dFBhcmFtZXRlcixcbiAgICB9ID0gY29uZmlnO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoaW5wdXQgPT4ge1xuICAgICAgY29uc3QgY2FsY3VsYXRlZFJlc3VsdCA9IGNhbGN1bGF0ZUV4cG9uZW50KFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgaW5wdXRQYXJhbWV0ZXIsXG4gICAgICAgIGV4cG9uZW50XG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgW291dHB1dFBhcmFtZXRlcl06IGNhbGN1bGF0ZWRSZXN1bHQsXG4gICAgICB9O1xuICAgIH0pO1xuICB9LFxuICBhbGxvd0FyaXRobWV0aWNFeHByZXNzaW9uczogWydpbnB1dC1wYXJhbWV0ZXInLCAnZXhwb25lbnQnXSxcbn0pO1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGlucHV0IHBhcmFtIHJhaXNlZCBieSB0aGUgcG93ZXIgb2YgYSBnaXZlbiBleHBvbmVudC5cbiAqL1xuY29uc3QgY2FsY3VsYXRlRXhwb25lbnQgPSAoXG4gIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gIGlucHV0UGFyYW1ldGVyOiBzdHJpbmcgfCBudW1iZXIsXG4gIGV4cG9uZW50OiBudW1iZXJcbikgPT4ge1xuICBjb25zdCBiYXNlID1cbiAgICB0eXBlb2YgaW5wdXRQYXJhbWV0ZXIgPT09ICdudW1iZXInID8gaW5wdXRQYXJhbWV0ZXIgOiBpbnB1dFtpbnB1dFBhcmFtZXRlcl07XG5cbiAgcmV0dXJuIE1hdGgucG93KGJhc2UsIGV4cG9uZW50KTtcbn07XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { Context } from '../../common/types/manifest';
2
+ export declare const ExportLog: () => {
3
+ execute: (tree: any, context: Context) => Promise<void>;
4
+ };
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ExportLog = void 0;
27
+ const YAML = __importStar(require("js-yaml"));
28
+ const ExportLog = () => {
29
+ /**
30
+ * Logs output manifest in console.
31
+ */
32
+ const execute = async (tree, context) => {
33
+ const outputFile = {
34
+ ...context,
35
+ tree,
36
+ };
37
+ console.log(`# start
38
+ ${YAML.dump(outputFile, { noRefs: true })}
39
+ # end`);
40
+ };
41
+ return { execute };
42
+ };
43
+ exports.ExportLog = ExportLog;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vYnVpbHRpbnMvZXhwb3J0LWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUFnQztBQUl6QixNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUU7SUFDNUI7O09BRUc7SUFDSCxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBUyxFQUFFLE9BQWdCLEVBQUUsRUFBRTtRQUNwRCxNQUFNLFVBQVUsR0FBRztZQUNqQixHQUFHLE9BQU87WUFDVixJQUFJO1NBQ0wsQ0FBQztRQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUM7RUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQztNQUNqQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7SUFFRixPQUFPLEVBQUMsT0FBTyxFQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBaEJXLFFBQUEsU0FBUyxhQWdCcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBZQU1MIGZyb20gJ2pzLXlhbWwnO1xuXG5pbXBvcnQge0NvbnRleHR9IGZyb20gJy4uLy4uL2NvbW1vbi90eXBlcy9tYW5pZmVzdCc7XG5cbmV4cG9ydCBjb25zdCBFeHBvcnRMb2cgPSAoKSA9PiB7XG4gIC8qKlxuICAgKiBMb2dzIG91dHB1dCBtYW5pZmVzdCBpbiBjb25zb2xlLlxuICAgKi9cbiAgY29uc3QgZXhlY3V0ZSA9IGFzeW5jICh0cmVlOiBhbnksIGNvbnRleHQ6IENvbnRleHQpID0+IHtcbiAgICBjb25zdCBvdXRwdXRGaWxlID0ge1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIHRyZWUsXG4gICAgfTtcblxuICAgIGNvbnNvbGUubG9nKGAjIHN0YXJ0XG4ke1lBTUwuZHVtcChvdXRwdXRGaWxlLCB7bm9SZWZzOiB0cnVlfSl9XG4jIGVuZGApO1xuICB9O1xuXG4gIHJldHVybiB7ZXhlY3V0ZX07XG59O1xuIl19
@@ -0,0 +1,4 @@
1
+ import { Context } from '../../common/types/manifest';
2
+ export declare const ExportYaml: () => {
3
+ execute: (tree: any, context: Context, outputPath: string) => Promise<void>;
4
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExportYaml = void 0;
4
+ const utils_1 = require("@grnsft/if-core/utils");
5
+ const yaml_1 = require("../../common/util/yaml");
6
+ const config_1 = require("../config");
7
+ const { ExhaustOutputArgError } = utils_1.ERRORS;
8
+ const { OUTPUT_REQUIRED, EXPORTING_TO_YAML_FILE } = config_1.STRINGS;
9
+ const ExportYaml = () => {
10
+ /**
11
+ * Saves output file in YAML format.
12
+ */
13
+ const execute = async (tree, context, outputPath) => {
14
+ if (!outputPath) {
15
+ throw new ExhaustOutputArgError(OUTPUT_REQUIRED);
16
+ }
17
+ const outputFile = {
18
+ ...context,
19
+ tree,
20
+ };
21
+ const pathWithoutExtension = outputPath.split('.').length > 1
22
+ ? outputPath.split('.').slice(0, -1).join('.')
23
+ : outputPath;
24
+ console.debug(EXPORTING_TO_YAML_FILE(pathWithoutExtension));
25
+ await (0, yaml_1.saveYamlFileAs)(outputFile, `${pathWithoutExtension}.yaml`);
26
+ };
27
+ return { execute };
28
+ };
29
+ exports.ExportYaml = ExportYaml;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXlhbWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2V4cG9ydC15YW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUE2QztBQUU3QyxpREFBc0Q7QUFFdEQsc0NBQWtDO0FBSWxDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxHQUFHLGNBQU0sQ0FBQztBQUN2QyxNQUFNLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUVuRCxNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUU7SUFDN0I7O09BRUc7SUFDSCxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBUyxFQUFFLE9BQWdCLEVBQUUsVUFBa0IsRUFBRSxFQUFFO1FBQ3hFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixNQUFNLElBQUkscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDbEQ7UUFFRCxNQUFNLFVBQVUsR0FBRztZQUNqQixHQUFHLE9BQU87WUFDVixJQUFJO1NBQ0wsQ0FBQztRQUNGLE1BQU0sb0JBQW9CLEdBQ3hCLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDOUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUVqQixPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUU1RCxNQUFNLElBQUEscUJBQWMsRUFBQyxVQUFVLEVBQUUsR0FBRyxvQkFBb0IsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDO0lBRUYsT0FBTyxFQUFDLE9BQU8sRUFBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQXhCVyxRQUFBLFVBQVUsY0F3QnJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB7c2F2ZVlhbWxGaWxlQXN9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL3lhbWwnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7Q29udGV4dH0gZnJvbSAnLi4vLi4vY29tbW9uL3R5cGVzL21hbmlmZXN0JztcblxuY29uc3Qge0V4aGF1c3RPdXRwdXRBcmdFcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7T1VUUFVUX1JFUVVJUkVELCBFWFBPUlRJTkdfVE9fWUFNTF9GSUxFfSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBFeHBvcnRZYW1sID0gKCkgPT4ge1xuICAvKipcbiAgICogU2F2ZXMgb3V0cHV0IGZpbGUgaW4gWUFNTCBmb3JtYXQuXG4gICAqL1xuICBjb25zdCBleGVjdXRlID0gYXN5bmMgKHRyZWU6IGFueSwgY29udGV4dDogQ29udGV4dCwgb3V0cHV0UGF0aDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFvdXRwdXRQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXhoYXVzdE91dHB1dEFyZ0Vycm9yKE9VVFBVVF9SRVFVSVJFRCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0RmlsZSA9IHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICB0cmVlLFxuICAgIH07XG4gICAgY29uc3QgcGF0aFdpdGhvdXRFeHRlbnNpb24gPVxuICAgICAgb3V0cHV0UGF0aC5zcGxpdCgnLicpLmxlbmd0aCA+IDFcbiAgICAgICAgPyBvdXRwdXRQYXRoLnNwbGl0KCcuJykuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKVxuICAgICAgICA6IG91dHB1dFBhdGg7XG5cbiAgICBjb25zb2xlLmRlYnVnKEVYUE9SVElOR19UT19ZQU1MX0ZJTEUocGF0aFdpdGhvdXRFeHRlbnNpb24pKTtcblxuICAgIGF3YWl0IHNhdmVZYW1sRmlsZUFzKG91dHB1dEZpbGUsIGAke3BhdGhXaXRob3V0RXh0ZW5zaW9ufS55YW1sYCk7XG4gIH07XG5cbiAgcmV0dXJuIHtleGVjdXRlfTtcbn07XG4iXX0=
@@ -0,0 +1,16 @@
1
+ export { Interpolation } from './interpolation';
2
+ export { MockObservations } from './mock-observations';
3
+ export { Divide } from './divide';
4
+ export { Subtract } from './subtract';
5
+ export { Coefficient } from './coefficient';
6
+ export { Multiply } from './multiply';
7
+ export { Sum } from './sum';
8
+ export { SciEmbodied } from './sci-embodied';
9
+ export { Sci } from './sci';
10
+ export { Exponent } from './exponent';
11
+ export { CSVLookup } from './csv-lookup';
12
+ export { Shell } from './shell';
13
+ export { Regex } from './regex';
14
+ export { Copy } from './copy-param';
15
+ export { TimeConverter } from './time-converter';
16
+ export { TimeSync } from './time-sync';
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeSync = exports.TimeConverter = exports.Copy = exports.Regex = exports.Shell = exports.CSVLookup = exports.Exponent = exports.Sci = exports.SciEmbodied = exports.Sum = exports.Multiply = exports.Coefficient = exports.Subtract = exports.Divide = exports.MockObservations = exports.Interpolation = void 0;
4
+ var interpolation_1 = require("./interpolation");
5
+ Object.defineProperty(exports, "Interpolation", { enumerable: true, get: function () { return interpolation_1.Interpolation; } });
6
+ var mock_observations_1 = require("./mock-observations");
7
+ Object.defineProperty(exports, "MockObservations", { enumerable: true, get: function () { return mock_observations_1.MockObservations; } });
8
+ var divide_1 = require("./divide");
9
+ Object.defineProperty(exports, "Divide", { enumerable: true, get: function () { return divide_1.Divide; } });
10
+ var subtract_1 = require("./subtract");
11
+ Object.defineProperty(exports, "Subtract", { enumerable: true, get: function () { return subtract_1.Subtract; } });
12
+ var coefficient_1 = require("./coefficient");
13
+ Object.defineProperty(exports, "Coefficient", { enumerable: true, get: function () { return coefficient_1.Coefficient; } });
14
+ var multiply_1 = require("./multiply");
15
+ Object.defineProperty(exports, "Multiply", { enumerable: true, get: function () { return multiply_1.Multiply; } });
16
+ var sum_1 = require("./sum");
17
+ Object.defineProperty(exports, "Sum", { enumerable: true, get: function () { return sum_1.Sum; } });
18
+ var sci_embodied_1 = require("./sci-embodied");
19
+ Object.defineProperty(exports, "SciEmbodied", { enumerable: true, get: function () { return sci_embodied_1.SciEmbodied; } });
20
+ var sci_1 = require("./sci");
21
+ Object.defineProperty(exports, "Sci", { enumerable: true, get: function () { return sci_1.Sci; } });
22
+ var exponent_1 = require("./exponent");
23
+ Object.defineProperty(exports, "Exponent", { enumerable: true, get: function () { return exponent_1.Exponent; } });
24
+ var csv_lookup_1 = require("./csv-lookup");
25
+ Object.defineProperty(exports, "CSVLookup", { enumerable: true, get: function () { return csv_lookup_1.CSVLookup; } });
26
+ var shell_1 = require("./shell");
27
+ Object.defineProperty(exports, "Shell", { enumerable: true, get: function () { return shell_1.Shell; } });
28
+ var regex_1 = require("./regex");
29
+ Object.defineProperty(exports, "Regex", { enumerable: true, get: function () { return regex_1.Regex; } });
30
+ var copy_param_1 = require("./copy-param");
31
+ Object.defineProperty(exports, "Copy", { enumerable: true, get: function () { return copy_param_1.Copy; } });
32
+ var time_converter_1 = require("./time-converter");
33
+ Object.defineProperty(exports, "TimeConverter", { enumerable: true, get: function () { return time_converter_1.TimeConverter; } });
34
+ var time_sync_1 = require("./time-sync");
35
+ Object.defineProperty(exports, "TimeSync", { enumerable: true, get: function () { return time_sync_1.TimeSync; } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUE4QztBQUF0Qyw4R0FBQSxhQUFhLE9BQUE7QUFDckIseURBQXFEO0FBQTdDLHFIQUFBLGdCQUFnQixPQUFBO0FBQ3hCLG1DQUFnQztBQUF4QixnR0FBQSxNQUFNLE9BQUE7QUFDZCx1Q0FBb0M7QUFBNUIsb0dBQUEsUUFBUSxPQUFBO0FBQ2hCLDZDQUEwQztBQUFsQywwR0FBQSxXQUFXLE9BQUE7QUFDbkIsdUNBQW9DO0FBQTVCLG9HQUFBLFFBQVEsT0FBQTtBQUNoQiw2QkFBMEI7QUFBbEIsMEZBQUEsR0FBRyxPQUFBO0FBQ1gsK0NBQTJDO0FBQW5DLDJHQUFBLFdBQVcsT0FBQTtBQUNuQiw2QkFBMEI7QUFBbEIsMEZBQUEsR0FBRyxPQUFBO0FBQ1gsdUNBQW9DO0FBQTVCLG9HQUFBLFFBQVEsT0FBQTtBQUNoQiwyQ0FBdUM7QUFBL0IsdUdBQUEsU0FBUyxPQUFBO0FBQ2pCLGlDQUE4QjtBQUF0Qiw4RkFBQSxLQUFLLE9BQUE7QUFDYixpQ0FBOEI7QUFBdEIsOEZBQUEsS0FBSyxPQUFBO0FBQ2IsMkNBQWtDO0FBQTFCLGtHQUFBLElBQUksT0FBQTtBQUNaLG1EQUErQztBQUF2QywrR0FBQSxhQUFhLE9BQUE7QUFDckIseUNBQXFDO0FBQTdCLHFHQUFBLFFBQVEsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7SW50ZXJwb2xhdGlvbn0gZnJvbSAnLi9pbnRlcnBvbGF0aW9uJztcbmV4cG9ydCB7TW9ja09ic2VydmF0aW9uc30gZnJvbSAnLi9tb2NrLW9ic2VydmF0aW9ucyc7XG5leHBvcnQge0RpdmlkZX0gZnJvbSAnLi9kaXZpZGUnO1xuZXhwb3J0IHtTdWJ0cmFjdH0gZnJvbSAnLi9zdWJ0cmFjdCc7XG5leHBvcnQge0NvZWZmaWNpZW50fSBmcm9tICcuL2NvZWZmaWNpZW50JztcbmV4cG9ydCB7TXVsdGlwbHl9IGZyb20gJy4vbXVsdGlwbHknO1xuZXhwb3J0IHtTdW19IGZyb20gJy4vc3VtJztcbmV4cG9ydCB7U2NpRW1ib2RpZWR9IGZyb20gJy4vc2NpLWVtYm9kaWVkJztcbmV4cG9ydCB7U2NpfSBmcm9tICcuL3NjaSc7XG5leHBvcnQge0V4cG9uZW50fSBmcm9tICcuL2V4cG9uZW50JztcbmV4cG9ydCB7Q1NWTG9va3VwfSBmcm9tICcuL2Nzdi1sb29rdXAnO1xuZXhwb3J0IHtTaGVsbH0gZnJvbSAnLi9zaGVsbCc7XG5leHBvcnQge1JlZ2V4fSBmcm9tICcuL3JlZ2V4JztcbmV4cG9ydCB7Q29weX0gZnJvbSAnLi9jb3B5LXBhcmFtJztcbmV4cG9ydCB7VGltZUNvbnZlcnRlcn0gZnJvbSAnLi90aW1lLWNvbnZlcnRlcic7XG5leHBvcnQge1RpbWVTeW5jfSBmcm9tICcuL3RpbWUtc3luYyc7XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { PluginParams, ConfigParams } from '@grnsft/if-core/types';
2
+ export declare const Interpolation: (config: ConfigParams | undefined, parametersMetadata: import("@grnsft/if-core/types").PluginParametersMetadata, mapping: import("@grnsft/if-core/types").MappingParams) => {
3
+ metadata: {
4
+ inputs: {
5
+ [x: string]: {
6
+ description: string;
7
+ unit: string;
8
+ 'aggregation-method': import("@grnsft/if-core/types").AggregationOptions;
9
+ };
10
+ };
11
+ outputs: import("@grnsft/if-core/types").ParameterMetadata;
12
+ };
13
+ execute: (inputs: PluginParams[]) => Promise<{
14
+ [x: string]: any;
15
+ }[]>;
16
+ };