@grnsft/if
Version:
Impact Framework
37 lines • 5.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Sum = void 0;
const zod_1 = require("zod");
const interfaces_1 = require("@grnsft/if-core/interfaces");
const validations_1 = require("../../../common/util/validations");
exports.Sum = (0, interfaces_1.PluginFactory)({
configValidation: zod_1.z.object({
'input-parameters': zod_1.z.array(zod_1.z.string()),
'output-parameter': zod_1.z.string().min(1),
}),
inputValidation: (input, config) => {
const inputParameters = config['input-parameters'];
const inputData = inputParameters.reduce((acc, param) => {
acc[param] = input[param];
return acc;
}, {});
const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
return (0, validations_1.validate)(validationSchema, inputData);
},
implementation: async (inputs, config) => {
const { 'input-parameters': inputParameters, 'output-parameter': outputParameter, } = config;
return inputs.map(input => {
const calculatedResult = calculateSum(input, inputParameters);
return {
...input,
[outputParameter]: calculatedResult,
};
});
},
allowArithmeticExpressions: [],
});
/**
* Calculates the sum of the energy components.
*/
const calculateSum = (input, inputParameters) => inputParameters.reduce((accumulator, metricToSum) => accumulator + input[metricToSum], 0);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3N1bS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFFdEIsMkRBQXlEO0FBR3pELGtFQUEwRDtBQUU3QyxRQUFBLEdBQUcsR0FBRyxJQUFBLDBCQUFhLEVBQUM7SUFDL0IsZ0JBQWdCLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN6QixrQkFBa0IsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QyxrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN0QyxDQUFDO0lBQ0YsZUFBZSxFQUFFLENBQUMsS0FBbUIsRUFBRSxNQUFvQixFQUFFLEVBQUU7UUFDN0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FDdEMsQ0FBQyxHQUF1QixFQUFFLEtBQXNCLEVBQUUsRUFBRTtZQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUNELEVBQTRCLENBQzdCLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBQSxzQkFBUSxFQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE1BQU0sRUFDSixrQkFBa0IsRUFBRSxlQUFlLEVBQ25DLGtCQUFrQixFQUFFLGVBQWUsR0FDcEMsR0FBRyxNQUFNLENBQUM7UUFFWCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBRTlELE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLENBQUMsZUFBZSxDQUFDLEVBQUUsZ0JBQWdCO2FBQ3BDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCwwQkFBMEIsRUFBRSxFQUFFO0NBQy9CLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFtQixFQUFFLGVBQXlCLEVBQUUsRUFBRSxDQUN0RSxlQUFlLENBQUMsTUFBTSxDQUNwQixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQzlELENBQUMsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge1BsdWdpbkZhY3Rvcnl9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7UGx1Z2luUGFyYW1zLCBDb25maWdQYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuZXhwb3J0IGNvbnN0IFN1bSA9IFBsdWdpbkZhY3Rvcnkoe1xuICBjb25maWdWYWxpZGF0aW9uOiB6Lm9iamVjdCh7XG4gICAgJ2lucHV0LXBhcmFtZXRlcnMnOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgICdvdXRwdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gIH0pLFxuICBpbnB1dFZhbGlkYXRpb246IChpbnB1dDogUGx1Z2luUGFyYW1zLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IGlucHV0UGFyYW1ldGVycyA9IGNvbmZpZ1snaW5wdXQtcGFyYW1ldGVycyddO1xuICAgIGNvbnN0IGlucHV0RGF0YSA9IGlucHV0UGFyYW1ldGVycy5yZWR1Y2UoXG4gICAgICAoYWNjOiB7W3g6IHN0cmluZ106IGFueX0sIHBhcmFtOiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgICAgYWNjW3BhcmFtXSA9IGlucHV0W3BhcmFtXTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj5cbiAgICApO1xuICAgIGNvbnN0IHZhbGlkYXRpb25TY2hlbWEgPSB6LnJlY29yZCh6LnN0cmluZygpLCB6Lm51bWJlcigpKTtcbiAgICByZXR1cm4gdmFsaWRhdGUodmFsaWRhdGlvblNjaGVtYSwgaW5wdXREYXRhKTtcbiAgfSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXJzJzogaW5wdXRQYXJhbWV0ZXJzLFxuICAgICAgJ291dHB1dC1wYXJhbWV0ZXInOiBvdXRwdXRQYXJhbWV0ZXIsXG4gICAgfSA9IGNvbmZpZztcblxuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRSZXN1bHQgPSBjYWxjdWxhdGVTdW0oaW5wdXQsIGlucHV0UGFyYW1ldGVycyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmlucHV0LFxuICAgICAgICBbb3V0cHV0UGFyYW1ldGVyXTogY2FsY3VsYXRlZFJlc3VsdCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH0sXG4gIGFsbG93QXJpdGhtZXRpY0V4cHJlc3Npb25zOiBbXSxcbn0pO1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHN1bSBvZiB0aGUgZW5lcmd5IGNvbXBvbmVudHMuXG4gKi9cbmNvbnN0IGNhbGN1bGF0ZVN1bSA9IChpbnB1dDogUGx1Z2luUGFyYW1zLCBpbnB1dFBhcmFtZXRlcnM6IHN0cmluZ1tdKSA9PlxuICBpbnB1dFBhcmFtZXRlcnMucmVkdWNlKFxuICAgIChhY2N1bXVsYXRvciwgbWV0cmljVG9TdW0pID0+IGFjY3VtdWxhdG9yICsgaW5wdXRbbWV0cmljVG9TdW1dLFxuICAgIDBcbiAgKTtcbiJdfQ==