UNPKG

@grnsft/if

Version:

Impact Framework

58 lines 7.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Copy = 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; /** * keep-existing: true/false (whether to remove the parameter you are copying from) * from-param: the parameter you are copying from (e.g. cpu/name) * to-field: the parameter you are copying to (e.g. cpu/processor-name) */ exports.Copy = (0, interfaces_1.PluginFactory)({ configValidation: (config) => { if (!config || !Object.keys(config)?.length) { throw new ConfigError(MISSING_CONFIG); } const configSchema = zod_1.z.object({ 'keep-existing': zod_1.z.boolean(), from: zod_1.z.string().min(1), to: zod_1.z.string().min(1), }); const extractedFrom = (0, utils_1.getParameterFromArithmeticExpression)(config.from); const updatedConfig = config['keep-existing'] ? config : { ...config, 'pure-from': extractedFrom }; (0, validations_1.validate)(configSchema, updatedConfig); return updatedConfig; }, inputValidation: (input, config) => { const from = config.from; const inputData = { [from]: input[from], }; const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.string().or(zod_1.z.number())); return (0, validations_1.validate)(validationSchema, inputData); }, implementation: async (inputs, config) => { const keepExisting = config['keep-existing'] === true; const from = config['from']; const to = config['to']; return inputs.map(input => { const outputValue = !isNaN(from) ? from : input[from]; if (input[from] || (!isNaN(from) && !keepExisting)) { delete input[config['pure-from']]; } return { ...input, [to]: outputValue, }; }); }, allowArithmeticExpressions: ['from'], }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL2NvcHktcGFyYW0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXNCO0FBRXRCLGlEQUcrQjtBQUUvQiwyREFBeUQ7QUFFekQsa0VBQTBEO0FBRTFELHlDQUFxQztBQUVyQyxNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQzdCLE1BQU0sRUFBQyxjQUFjLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRWpDOzs7O0dBSUc7QUFFVSxRQUFBLElBQUksR0FBRyxJQUFBLDBCQUFhLEVBQUM7SUFDaEMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFvQixFQUFFLEVBQUU7UUFDekMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDdkM7UUFFRCxNQUFNLFlBQVksR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQzVCLGVBQWUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFO1lBQzVCLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QixFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxhQUFhLEdBQUcsSUFBQSw0Q0FBb0MsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUMzQyxDQUFDLENBQUMsTUFBTTtZQUNSLENBQUMsQ0FBQyxFQUFDLEdBQUcsTUFBTSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUMsQ0FBQztRQUU1QyxJQUFBLHNCQUFRLEVBQStCLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVwRSxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsZUFBZSxFQUFFLENBQUMsS0FBbUIsRUFBRSxNQUFvQixFQUFFLEVBQUU7UUFDN0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRztZQUNoQixDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDcEIsQ0FBQztRQUNGLE1BQU0sZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sSUFBQSxzQkFBUSxFQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQXNCLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQ3JFLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDdEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDbkM7WUFFRCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVc7YUFDbEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELDBCQUEwQixFQUFFLENBQUMsTUFBTSxDQUFDO0NBQ3JDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtcbiAgRVJST1JTLFxuICBnZXRQYXJhbWV0ZXJGcm9tQXJpdGhtZXRpY0V4cHJlc3Npb24sXG59IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5pbXBvcnQge0NvbmZpZ1BhcmFtcywgUGx1Z2luUGFyYW1zfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuaW1wb3J0IHtQbHVnaW5GYWN0b3J5fSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5jb25zdCB7Q29uZmlnRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge01JU1NJTkdfQ09ORklHfSA9IFNUUklOR1M7XG5cbi8qKlxuICoga2VlcC1leGlzdGluZzogdHJ1ZS9mYWxzZSAod2hldGhlciB0byByZW1vdmUgdGhlIHBhcmFtZXRlciB5b3UgYXJlIGNvcHlpbmcgZnJvbSlcbiAqIGZyb20tcGFyYW06IHRoZSBwYXJhbWV0ZXIgeW91IGFyZSBjb3B5aW5nIGZyb20gKGUuZy4gY3B1L25hbWUpXG4gKiB0by1maWVsZDogdGhlIHBhcmFtZXRlciB5b3UgYXJlIGNvcHlpbmcgdG8gKGUuZy4gY3B1L3Byb2Nlc3Nvci1uYW1lKVxuICovXG5cbmV4cG9ydCBjb25zdCBDb3B5ID0gUGx1Z2luRmFjdG9yeSh7XG4gIGNvbmZpZ1ZhbGlkYXRpb246IChjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGlmICghY29uZmlnIHx8ICFPYmplY3Qua2V5cyhjb25maWcpPy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBDb25maWdFcnJvcihNSVNTSU5HX0NPTkZJRyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICAgICAgJ2tlZXAtZXhpc3RpbmcnOiB6LmJvb2xlYW4oKSxcbiAgICAgIGZyb206IHouc3RyaW5nKCkubWluKDEpLFxuICAgICAgdG86IHouc3RyaW5nKCkubWluKDEpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZXh0cmFjdGVkRnJvbSA9IGdldFBhcmFtZXRlckZyb21Bcml0aG1ldGljRXhwcmVzc2lvbihjb25maWcuZnJvbSk7XG4gICAgY29uc3QgdXBkYXRlZENvbmZpZyA9IGNvbmZpZ1sna2VlcC1leGlzdGluZyddXG4gICAgICA/IGNvbmZpZ1xuICAgICAgOiB7Li4uY29uZmlnLCAncHVyZS1mcm9tJzogZXh0cmFjdGVkRnJvbX07XG5cbiAgICB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBjb25maWdTY2hlbWE+Pihjb25maWdTY2hlbWEsIHVwZGF0ZWRDb25maWcpO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRDb25maWc7XG4gIH0sXG4gIGlucHV0VmFsaWRhdGlvbjogKGlucHV0OiBQbHVnaW5QYXJhbXMsIGNvbmZpZzogQ29uZmlnUGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZnJvbSA9IGNvbmZpZy5mcm9tO1xuICAgIGNvbnN0IGlucHV0RGF0YSA9IHtcbiAgICAgIFtmcm9tXTogaW5wdXRbZnJvbV0sXG4gICAgfTtcbiAgICBjb25zdCB2YWxpZGF0aW9uU2NoZW1hID0gei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKS5vcih6Lm51bWJlcigpKSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGUodmFsaWRhdGlvblNjaGVtYSwgaW5wdXREYXRhKTtcbiAgfSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IGtlZXBFeGlzdGluZyA9IGNvbmZpZ1sna2VlcC1leGlzdGluZyddID09PSB0cnVlO1xuICAgIGNvbnN0IGZyb20gPSBjb25maWdbJ2Zyb20nXTtcbiAgICBjb25zdCB0byA9IGNvbmZpZ1sndG8nXTtcblxuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dFZhbHVlID0gIWlzTmFOKGZyb20pID8gZnJvbSA6IGlucHV0W2Zyb21dO1xuXG4gICAgICBpZiAoaW5wdXRbZnJvbV0gfHwgKCFpc05hTihmcm9tKSAmJiAha2VlcEV4aXN0aW5nKSkge1xuICAgICAgICBkZWxldGUgaW5wdXRbY29uZmlnWydwdXJlLWZyb20nXV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmlucHV0LFxuICAgICAgICBbdG9dOiBvdXRwdXRWYWx1ZSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH0sXG4gIGFsbG93QXJpdGhtZXRpY0V4cHJlc3Npb25zOiBbJ2Zyb20nXSxcbn0pO1xuIl19