const { where, gte, lte, flip } = require('ramda');
const gteR = flip(gte);
const lteR = flip(lte);
// Esta ha sido mi función inspiradora (encontrada por stackoverflow)
// const intersectsRange = ([x1,x2]) => ([y1, y2]) => x2 >= y1 && x1 <= y2;
const intersectsRange = ({ tsStart, tsEnd }) => where({ tsEnd: gteR(tsStart), tsStart: lteR(tsEnd) });
const filterDates = { tsStart: 10, tsEnd: 20 };
const queryDates_1 = { tsStart: 5, tsEnd: 12 };
const queryDates_2 = { tsStart: 12, tsEnd: 15 };
const queryDates_3 = { tsStart: 15, tsEnd: 25 };
console.log('Is valid range 5-12 Marzo?', intersectsRange(queryDates_1)(filterDates));
console.log('Is valid range 12-15 Marzo?', intersectsRange(queryDates_2)(filterDates));
console.log('Is valid range 15-25 Marzo?', intersectsRange(queryDates_3)(filterDates));