All files query.js

100% Statements 15/15
85.71% Branches 12/14
100% Functions 1/1
100% Lines 15/15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27  7x 7x   7x 16x 16x   16x 4x 2x     2x 1x     2x 12x 12x 12x       5x    
export function rulesToQuery(rules, convert) {
  const query = {};
  const ignoreOperators = {};
 
  for (let i = 0; i < rules.length; i++) {
    const rule = rules[i];
    const op = rule.inverted ? '$and' : '$or';
 
    if (!rule.conditions) {
      if (rule.inverted) {
        return null;
      }
 
      if (query[op]) {
        delete query[op];
      }
 
      ignoreOperators[op] = true;
    } else Eif (!ignoreOperators.hasOwnProperty(op)) {
      query[op] = query[op] || [];
      query[op].push(convert(rule));
    }
  }
 
  return rules.length > 0 ? query : null;
}