function eachMonthOfInterval(dirtyInterval) {
  __WEBPACK_IMPORTED_MODULE_1__lib_requiredArgs_index_js__["a" /* default */](1, arguments);
  var interval = dirtyInterval || {};
  var startDate = __WEBPACK_IMPORTED_MODULE_0__toDate_index_js__["a" /* default */](interval.start);
  var endDate = __WEBPACK_IMPORTED_MODULE_0__toDate_index_js__["a" /* default */](interval.end);
  var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`

  if (!(startDate.getTime() <= endTime)) {
    throw new RangeError('Invalid interval');
  }

  var dates = [];
  var currentDate = startDate;
  currentDate.setHours(0, 0, 0, 0);
  currentDate.setDate(1);

  while (currentDate.getTime() <= endTime) {
    dates.push(__WEBPACK_IMPORTED_MODULE_0__toDate_index_js__["a" /* default */](currentDate));
    currentDate.setMonth(currentDate.getMonth() + 1);
  }

  return dates;
}
@name eachQuarterOfInterval
@category Interval Helpers
@summary Return the array of quarters within the specified time interval.

@description
Return the array of quarters within the specified time interval.

@param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}
@returns {Date[]} the array with starts of quarters from the quarter of the interval start to the quarter of the interval end
@throws {TypeError} 1 argument required
@throws {RangeError} The start of an interval cannot be after its end
@throws {RangeError} Date in interval cannot be `Invalid Date`

@example
// Each quarter within interval 6 February 2014 - 10 August 2014:
var result = eachQuarterOfInterval({
  start: new Date(2014, 1, 6),
  end: new Date(2014, 7, 10)
})
//=> [
//   Wed Jan 01 2014 00:00:00,
//   Tue Apr 01 2014 00:00:00,
//   Tue Jul 01 2014 00:00:00,
// ]