UNPKG

@forzalabs/remora

Version:

A powerful CLI tool for seamless data translation.

68 lines (67 loc) 3.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class RequestExecutorClass { constructor() { this.evaluateFilter = (record, filter) => { const evaluate = (baseRecord, baseFilter) => { const { member, operator, values } = baseFilter; const value = baseRecord[member]; const singleValue = values[0]; switch (operator) { case 'equals': return value === singleValue; case 'notEquals': return value !== singleValue; case 'contains': return typeof value === 'string' && value.includes(singleValue); case 'notContains': return typeof value === 'string' && !value.includes(singleValue); case 'startsWith': return typeof value === 'string' && value.startsWith(singleValue); case 'endsWith': return typeof value === 'string' && value.endsWith(singleValue); case 'greaterThan': return typeof value === 'number' && value > Number(singleValue); case 'greaterThanOrEquals': return typeof value === 'number' && value >= Number(singleValue); case 'lessThan': return typeof value === 'number' && value < Number(singleValue); case 'lessThanOrEquals': return typeof value === 'number' && value <= Number(singleValue); case 'in': return values.includes(value); case 'notIn': return !values.includes(value); case 'between': return values.length === 2 && value >= values[0] && value <= values[1]; case 'notBetween': return values.length === 2 && (value < values[0] || value > values[1]); case 'isNull': return value === null || value === undefined; case 'isNotNull': return value !== null && value !== undefined; case 'true': return value === true; case 'false': return value === false; case 'matches': return typeof value === 'string' && new RegExp(singleValue).test(value); case 'notMatches': return typeof value === 'string' && !new RegExp(singleValue).test(value); default: throw new Error(`Unsupported filter operator: ${operator}`); } }; const { and, or } = filter; const baseResult = evaluate(record, filter); if (and) return baseResult && and.every(subFilter => this.evaluateFilter(record, subFilter)); if (or) return baseResult || or.some(subFilter => this.evaluateFilter(record, subFilter)); else return baseResult; }; } } const RequestExecutor = new RequestExecutorClass(); exports.default = RequestExecutor;