UNPKG

@forestadmin/datasource-toolkit

Version:
52 lines 5.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const comparison_1 = __importDefault(require("./transforms/comparison")); const pattern_1 = __importDefault(require("./transforms/pattern")); const time_1 = __importDefault(require("./transforms/time")); class ConditionTreeEquivalent { static getEquivalentTree(leaf, operators, columnType, timezone) { const { operator } = leaf; const replacer = ConditionTreeEquivalent.getReplacer(operator, operators, columnType); if (!replacer) return leaf; return replacer ? replacer(leaf, timezone, columnType === 'Dateonly') : null; } static hasEquivalentTree(operator, operators, columnType) { return Boolean(ConditionTreeEquivalent.getReplacer(operator, operators, columnType)); } /** Find a way to replace an operator by recursively exploring the transforms graph */ static getReplacer(op, filterOperators, columnType, visited = []) { if (filterOperators?.has(op)) return leaf => leaf; for (const alt of ConditionTreeEquivalent.getAlternatives(op) ?? []) { const { replacer, dependsOn } = alt; const valid = !alt.forTypes || alt.forTypes.includes(columnType); if (valid && !visited.includes(alt)) { const dependsReplacers = dependsOn.map(replacement => { return this.getReplacer(replacement, filterOperators, columnType, [...visited, alt]); }); if (dependsReplacers.every(r => !!r)) { return (leaf, timezone, isDateOnly) => replacer(leaf, timezone, isDateOnly).replaceLeafs(subLeaf => dependsReplacers[dependsOn.indexOf(subLeaf.operator)](subLeaf, timezone, isDateOnly)); } } } return null; } static getAlternatives(operator) { // Init cache at first call to work around cyclic dependencies if (!ConditionTreeEquivalent.alternatives) { ConditionTreeEquivalent.alternatives = { ...(0, comparison_1.default)(), ...(0, pattern_1.default)(), ...(0, time_1.default)(), }; } return ConditionTreeEquivalent.alternatives[operator]; } } exports.default = ConditionTreeEquivalent; ConditionTreeEquivalent.alternatives = null; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1aXZhbGVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJmYWNlcy9xdWVyeS9jb25kaXRpb24tdHJlZS9lcXVpdmFsZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlFQUF5RDtBQUN6RCxtRUFBcUQ7QUFDckQsNkRBQStDO0FBZS9DLE1BQXFCLHVCQUF1QjtJQUcxQyxNQUFNLENBQUMsaUJBQWlCLENBQ3RCLElBQXVCLEVBQ3ZCLFNBQXdCLEVBQ3hCLFVBQXNCLEVBQ3RCLFFBQWdCO1FBRWhCLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFMUIsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdEYsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQztRQUUzQixPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FDdEIsUUFBa0IsRUFDbEIsU0FBd0IsRUFDeEIsVUFBc0I7UUFFdEIsT0FBTyxPQUFPLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsc0ZBQXNGO0lBQzlFLE1BQU0sQ0FBQyxXQUFXLENBQ3hCLEVBQVksRUFDWixlQUE4QixFQUM5QixVQUFzQixFQUN0QixVQUFxQixFQUFFO1FBRXZCLElBQUksZUFBZSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBRWxELEtBQUssTUFBTSxHQUFHLElBQUksdUJBQXVCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNwQyxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBNEIsQ0FBQyxDQUFDO1lBRW5GLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUNuRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN2RixDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDcEMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FDcEMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQzFELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FDckYsQ0FBQztpQkFDTDthQUNGO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQWtCO1FBQy9DLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFO1lBQ3pDLHVCQUF1QixDQUFDLFlBQVksR0FBRztnQkFDckMsR0FBRyxJQUFBLG9CQUFrQixHQUFFO2dCQUN2QixHQUFHLElBQUEsaUJBQWlCLEdBQUU7Z0JBQ3RCLEdBQUcsSUFBQSxjQUFjLEdBQUU7YUFDcEIsQ0FBQztTQUNIO1FBRUQsT0FBTyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7QUFuRUgsMENBb0VDO0FBbkVnQixvQ0FBWSxHQUE2QyxJQUFJLENBQUMifQ==