UNPKG

@grnsft/if

Version:

Impact Framework

55 lines 7.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Regex = void 0; const zod_1 = require("zod"); const utils_1 = require("@grnsft/if-core/utils"); const validations_1 = require("../../../common/util/validations"); const config_1 = require("../../config"); const interfaces_1 = require("@grnsft/if-core/interfaces"); const { MissingInputDataError, ConfigError, RegexMismatchError } = utils_1.ERRORS; const { MISSING_CONFIG, MISSING_INPUT_DATA, REGEX_MISMATCH } = config_1.STRINGS; exports.Regex = (0, interfaces_1.PluginFactory)({ configValidation: (config) => { if (!config || !Object.keys(config)?.length) { throw new ConfigError(MISSING_CONFIG); } const schema = zod_1.z.object({ parameter: zod_1.z.string().min(1), match: zod_1.z.string().min(1), output: zod_1.z.string(), }); return (0, validations_1.validate)(schema, config); }, inputValidation: (input, config) => { const parameter = config['parameter']; if (!input[parameter]) { throw new MissingInputDataError(MISSING_INPUT_DATA(parameter)); } return input; }, implementation: async (inputs, config) => { const { parameter: parameter, match, output } = config; return inputs.map(input => ({ ...input, [output]: extractMatching(input, parameter, match), })); }, }); /** * Extracts a substring from the given input parameter that matches the provided regular expression pattern. */ const extractMatching = (input, parameter, match) => { if (!match.startsWith('/')) { match = '/' + match; } if (!match.endsWith('/g') && !match.endsWith('/')) { match += '/'; } const regex = eval(match); const matchedItems = input[parameter].match(regex); if (!matchedItems || matchedItems.length === 0) { throw new RegexMismatchError(REGEX_MISMATCH(input[parameter], match)); } return matchedItems.join(' '); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3JlZ2V4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUFzQjtBQUN0QixpREFBNkM7QUFJN0Msa0VBQTBEO0FBRTFELHlDQUFxQztBQUNyQywyREFBeUQ7QUFFekQsTUFBTSxFQUFDLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBQyxHQUFHLGNBQU0sQ0FBQztBQUN4RSxNQUFNLEVBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFeEQsUUFBQSxLQUFLLEdBQUcsSUFBQSwwQkFBYSxFQUFDO0lBQ2pDLGdCQUFnQixFQUFFLENBQUMsTUFBb0IsRUFBRSxFQUFFO1FBQ3pDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRTtZQUMzQyxNQUFNLElBQUksV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN0QixTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUIsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1NBQ25CLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBQSxzQkFBUSxFQUF5QixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELGVBQWUsRUFBRSxDQUFDLEtBQW1CLEVBQUUsTUFBb0IsRUFBRSxFQUFFO1FBQzdELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ2hFO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdkMsTUFBTSxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUVyRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEdBQUcsS0FBSztZQUNSLENBQUMsTUFBTSxDQUFDLEVBQUUsZUFBZSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDO1NBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsS0FBbUIsRUFDbkIsU0FBaUIsRUFDakIsS0FBYSxFQUNiLEVBQUU7SUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxQixLQUFLLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztLQUNyQjtJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqRCxLQUFLLElBQUksR0FBRyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVuRCxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQzlDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDdkU7SUFFRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB7Q29uZmlnUGFyYW1zLCBQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3ZhbGlkYXRpb25zJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHtQbHVnaW5GYWN0b3J5fSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvaW50ZXJmYWNlcyc7XG5cbmNvbnN0IHtNaXNzaW5nSW5wdXREYXRhRXJyb3IsIENvbmZpZ0Vycm9yLCBSZWdleE1pc21hdGNoRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge01JU1NJTkdfQ09ORklHLCBNSVNTSU5HX0lOUFVUX0RBVEEsIFJFR0VYX01JU01BVENIfSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBSZWdleCA9IFBsdWdpbkZhY3Rvcnkoe1xuICBjb25maWdWYWxpZGF0aW9uOiAoY29uZmlnOiBDb25maWdQYXJhbXMpID0+IHtcbiAgICBpZiAoIWNvbmZpZyB8fCAhT2JqZWN0LmtleXMoY29uZmlnKT8ubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmlnRXJyb3IoTUlTU0lOR19DT05GSUcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAgIHBhcmFtZXRlcjogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICBtYXRjaDogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICBvdXRwdXQ6IHouc3RyaW5nKCksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2Ygc2NoZW1hPj4oc2NoZW1hLCBjb25maWcpO1xuICB9LFxuICBpbnB1dFZhbGlkYXRpb246IChpbnB1dDogUGx1Z2luUGFyYW1zLCBjb25maWc6IENvbmZpZ1BhcmFtcykgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlciA9IGNvbmZpZ1sncGFyYW1ldGVyJ107XG5cbiAgICBpZiAoIWlucHV0W3BhcmFtZXRlcl0pIHtcbiAgICAgIHRocm93IG5ldyBNaXNzaW5nSW5wdXREYXRhRXJyb3IoTUlTU0lOR19JTlBVVF9EQVRBKHBhcmFtZXRlcikpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dDtcbiAgfSxcbiAgaW1wbGVtZW50YXRpb246IGFzeW5jIChpbnB1dHMsIGNvbmZpZykgPT4ge1xuICAgIGNvbnN0IHtwYXJhbWV0ZXI6IHBhcmFtZXRlciwgbWF0Y2gsIG91dHB1dH0gPSBjb25maWc7XG5cbiAgICByZXR1cm4gaW5wdXRzLm1hcChpbnB1dCA9PiAoe1xuICAgICAgLi4uaW5wdXQsXG4gICAgICBbb3V0cHV0XTogZXh0cmFjdE1hdGNoaW5nKGlucHV0LCBwYXJhbWV0ZXIsIG1hdGNoKSxcbiAgICB9KSk7XG4gIH0sXG59KTtcblxuLyoqXG4gKiBFeHRyYWN0cyBhIHN1YnN0cmluZyBmcm9tIHRoZSBnaXZlbiBpbnB1dCBwYXJhbWV0ZXIgdGhhdCBtYXRjaGVzIHRoZSBwcm92aWRlZCByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbiAqL1xuY29uc3QgZXh0cmFjdE1hdGNoaW5nID0gKFxuICBpbnB1dDogUGx1Z2luUGFyYW1zLFxuICBwYXJhbWV0ZXI6IHN0cmluZyxcbiAgbWF0Y2g6IHN0cmluZ1xuKSA9PiB7XG4gIGlmICghbWF0Y2guc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgbWF0Y2ggPSAnLycgKyBtYXRjaDtcbiAgfVxuXG4gIGlmICghbWF0Y2guZW5kc1dpdGgoJy9nJykgJiYgIW1hdGNoLmVuZHNXaXRoKCcvJykpIHtcbiAgICBtYXRjaCArPSAnLyc7XG4gIH1cblxuICBjb25zdCByZWdleCA9IGV2YWwobWF0Y2gpO1xuICBjb25zdCBtYXRjaGVkSXRlbXMgPSBpbnB1dFtwYXJhbWV0ZXJdLm1hdGNoKHJlZ2V4KTtcblxuICBpZiAoIW1hdGNoZWRJdGVtcyB8fCBtYXRjaGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJlZ2V4TWlzbWF0Y2hFcnJvcihSRUdFWF9NSVNNQVRDSChpbnB1dFtwYXJhbWV0ZXJdLCBtYXRjaCkpO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoZWRJdGVtcy5qb2luKCcgJyk7XG59O1xuIl19