UNPKG

rule-filter-validator

Version:

A object and scope validator based on structured rules

49 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.renameFieldInFilter = renameFieldInFilter; /** * * @param filter Filter * @param oldField string name of field to rename * @param newField string new name of field * @param filterPath (optional) * @param _history (private) * @returns */ function renameFieldInFilter(filter, oldField, newField, filterPath = '', _history = '') { if (typeof filter !== 'object' || filter === null) { return filter; } const keys = Object.keys(filter); if (keys.length === 0) { return filter; } const alteredFilter = {}; keys.forEach(key => { const value = filter[key]; if (Array.isArray(value)) { const logicalKey = key; const logicalFilter = () => value .map((subFilter) => renameFieldInFilter(subFilter, oldField, newField, filterPath, `${_history}.${key}`)) .filter(Boolean); if (logicalKey === '_or') { alteredFilter._or = logicalFilter(); } else if (logicalKey === '_and') { alteredFilter._and = logicalFilter(); } else { alteredFilter[key] = value; } return; } const alteredValue = renameFieldInFilter(value, oldField, newField, filterPath, _history + '.' + key); if (key === oldField && (!filterPath || _history.endsWith(filterPath))) { alteredFilter[newField] = alteredValue; return; } alteredFilter[key] = alteredValue; }); return alteredFilter; } //# sourceMappingURL=rename-field-in-filter.js.map