@grnsft/if
Version:
Impact Framework
45 lines • 7.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Coefficient = void 0;
const zod_1 = require("zod");
const utils_1 = require("@grnsft/if-core/utils");
const interfaces_1 = require("@grnsft/if-core/interfaces");
const validations_1 = require("../../../common/util/validations");
const config_1 = require("../../config");
const { ConfigError } = utils_1.ERRORS;
const { MISSING_CONFIG } = config_1.STRINGS;
exports.Coefficient = (0, interfaces_1.PluginFactory)({
configValidation: (config) => {
if (!config || !Object.keys(config)?.length) {
throw new ConfigError(MISSING_CONFIG);
}
const configSchema = zod_1.z.object({
coefficient: zod_1.z.preprocess(value => (0, utils_1.validateArithmeticExpression)('coefficient', value, 'number'), zod_1.z.number()),
'input-parameter': zod_1.z.string().min(1),
'output-parameter': zod_1.z.string().min(1),
});
return (0, validations_1.validate)(configSchema, config);
},
inputValidation: (input, config) => {
const inputData = {
'input-parameter': input[config['input-parameter']],
};
const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
(0, validations_1.validate)(validationSchema, inputData);
return input;
},
implementation: async (inputs, config) => {
const { 'input-parameter': inputParameter, 'output-parameter': outputParameter, coefficient, } = config;
return inputs.map(input => ({
...input,
[outputParameter]: calculateProduct(input, inputParameter, coefficient),
}));
},
allowArithmeticExpressions: ['input-parameter', 'coefficient'],
});
/**
* Calculates the product of the energy components.
*/
const calculateProduct = (input, inputParameter, coefficient) => (isNaN(Number(inputParameter)) ? input[inputParameter] : inputParameter) *
coefficient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2NvZWZmaWNpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUErQjtBQUUvQixpREFBMkU7QUFFM0UsMkRBQXlEO0FBRXpELGtFQUEwRDtBQUUxRCx5Q0FBcUM7QUFFckMsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLGNBQU0sQ0FBQztBQUM3QixNQUFNLEVBQUMsY0FBYyxFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUVwQixRQUFBLFdBQVcsR0FBRyxJQUFBLDBCQUFhLEVBQUM7SUFDdkMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFvQixFQUFFLEVBQUU7UUFDekMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDdkM7UUFFRCxNQUFNLFlBQVksR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQzVCLFdBQVcsRUFBRSxPQUFDLENBQUMsVUFBVSxDQUN2QixLQUFLLENBQUMsRUFBRSxDQUFDLElBQUEsb0NBQTRCLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsRUFDckUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUNYO1lBQ0QsaUJBQWlCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDcEMsa0JBQWtCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdEMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLHNCQUFRLEVBQ2IsWUFBNEIsRUFDNUIsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBQ0QsZUFBZSxFQUFFLENBQUMsS0FBbUIsRUFBRSxNQUFvQixFQUFFLEVBQUU7UUFDN0QsTUFBTSxTQUFTLEdBQUc7WUFDaEIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3BELENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUEsc0JBQVEsRUFBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV0QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE1BQU0sRUFDSixpQkFBaUIsRUFBRSxjQUFjLEVBQ2pDLGtCQUFrQixFQUFFLGVBQWUsRUFDbkMsV0FBVyxHQUNaLEdBQUcsTUFBTSxDQUFDO1FBRVgsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQixHQUFHLEtBQUs7WUFDUixDQUFDLGVBQWUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDO1NBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUNELDBCQUEwQixFQUFFLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDO0NBQy9ELENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUN2QixLQUFtQixFQUNuQixjQUErQixFQUMvQixXQUFtQixFQUNuQixFQUFFLENBQ0YsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQ3hFLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7eiwgWm9kVHlwZX0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtFUlJPUlMsIHZhbGlkYXRlQXJpdGhtZXRpY0V4cHJlc3Npb259IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5pbXBvcnQge0NvbmZpZ1BhcmFtcywgUGx1Z2luUGFyYW1zfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuaW1wb3J0IHtQbHVnaW5GYWN0b3J5fSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7Q29uZmlnRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge01JU1NJTkdfQ09ORklHfSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBDb2VmZmljaWVudCA9IFBsdWdpbkZhY3Rvcnkoe1xuICBjb25maWdWYWxpZGF0aW9uOiAoY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICBpZiAoIWNvbmZpZyB8fCAhT2JqZWN0LmtleXMoY29uZmlnKT8ubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmlnRXJyb3IoTUlTU0lOR19DT05GSUcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAgIGNvZWZmaWNpZW50OiB6LnByZXByb2Nlc3MoXG4gICAgICAgIHZhbHVlID0+IHZhbGlkYXRlQXJpdGhtZXRpY0V4cHJlc3Npb24oJ2NvZWZmaWNpZW50JywgdmFsdWUsICdudW1iZXInKSxcbiAgICAgICAgei5udW1iZXIoKVxuICAgICAgKSxcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXInOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICAgICdvdXRwdXQtcGFyYW1ldGVyJzogei5zdHJpbmcoKS5taW4oMSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2YgY29uZmlnU2NoZW1hPj4oXG4gICAgICBjb25maWdTY2hlbWEgYXMgWm9kVHlwZTxhbnk+LFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgfSxcbiAgaW5wdXRWYWxpZGF0aW9uOiAoaW5wdXQ6IFBsdWdpblBhcmFtcywgY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICBjb25zdCBpbnB1dERhdGEgPSB7XG4gICAgICAnaW5wdXQtcGFyYW1ldGVyJzogaW5wdXRbY29uZmlnWydpbnB1dC1wYXJhbWV0ZXInXV0sXG4gICAgfTtcbiAgICBjb25zdCB2YWxpZGF0aW9uU2NoZW1hID0gei5yZWNvcmQoei5zdHJpbmcoKSwgei5udW1iZXIoKSk7XG4gICAgdmFsaWRhdGUodmFsaWRhdGlvblNjaGVtYSwgaW5wdXREYXRhKTtcblxuICAgIHJldHVybiBpbnB1dDtcbiAgfSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICdpbnB1dC1wYXJhbWV0ZXInOiBpbnB1dFBhcmFtZXRlcixcbiAgICAgICdvdXRwdXQtcGFyYW1ldGVyJzogb3V0cHV0UGFyYW1ldGVyLFxuICAgICAgY29lZmZpY2llbnQsXG4gICAgfSA9IGNvbmZpZztcblxuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+ICh7XG4gICAgICAuLi5pbnB1dCxcbiAgICAgIFtvdXRwdXRQYXJhbWV0ZXJdOiBjYWxjdWxhdGVQcm9kdWN0KGlucHV0LCBpbnB1dFBhcmFtZXRlciwgY29lZmZpY2llbnQpLFxuICAgIH0pKTtcbiAgfSxcbiAgYWxsb3dBcml0aG1ldGljRXhwcmVzc2lvbnM6IFsnaW5wdXQtcGFyYW1ldGVyJywgJ2NvZWZmaWNpZW50J10sXG59KTtcblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBwcm9kdWN0IG9mIHRoZSBlbmVyZ3kgY29tcG9uZW50cy5cbiAqL1xuY29uc3QgY2FsY3VsYXRlUHJvZHVjdCA9IChcbiAgaW5wdXQ6IFBsdWdpblBhcmFtcyxcbiAgaW5wdXRQYXJhbWV0ZXI6IHN0cmluZyB8IG51bWJlcixcbiAgY29lZmZpY2llbnQ6IG51bWJlclxuKSA9PlxuICAoaXNOYU4oTnVtYmVyKGlucHV0UGFyYW1ldGVyKSkgPyBpbnB1dFtpbnB1dFBhcmFtZXRlcl0gOiBpbnB1dFBhcmFtZXRlcikgKlxuICBjb2VmZmljaWVudDtcbiJdfQ==