Untitled

 avatar
unknown
plain_text
a year ago
795 B
6
Indexable
  const { cycleWeekInterval } = config;

  // const totalValidNextRun = cycleWeekInterval * daysOfWeeks.length;
  // run 20 times of cron
  const totalValidNextRun = 20;
  const allValidNextRun = [];
  for (let i = 0; i < totalValidNextRun; i++) {
    allValidNextRun.push(dayjs(interval.next()));
  }

  // group by week
  const groupByWeek = _groupBy(allValidNextRun, (d) => d.week());
  const weeks = Object.keys(groupByWeek);

  // split by valid week
  let validDates = [];
  let prevIndex = 0;
  for (let i = 0; i < weeks.length; i++) {
    prevIndex = prevIndex + cycleWeekInterval;

    if (i === 0) {
      validDates.push(weeks[i]);
    }

    if (weeks[prevIndex]) {
      validDates.push(weeks[prevIndex]);
    }
  }

  return _flatten(validDates.map((index) => groupByWeek[index]));
Editor is loading...
Leave a Comment