function roundToNearestMinutes(dirtyDate, options) {
  if (arguments.length < 1) {
    throw new TypeError('1 argument required, but only none provided present');
  }

  var nearestTo = options && 'nearestTo' in options ? __WEBPACK_IMPORTED_MODULE_1__lib_toInteger_index_js__["a" /* default */](options.nearestTo) : 1;

  if (nearestTo < 1 || nearestTo > 30) {
    throw new RangeError('`options.nearestTo` must be between 1 and 30');
  }

  var date = __WEBPACK_IMPORTED_MODULE_0__toDate_index_js__["a" /* default */](dirtyDate);
  var seconds = date.getSeconds(); // relevant if nearestTo is 1, which is the default case

  var minutes = date.getMinutes() + seconds / 60;
  var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo;
  var remainderMinutes = minutes % nearestTo;
  var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo;
  return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), roundedMinutes + addedMinutes);
}
@name set
@category Common Helpers
@summary Set date values to a given date.

@description
Set date values to a given date.

Sets time values to date from object `values`.
A value is not set if it is undefined or null or doesn't exist in `values`.

Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts
to use native `Date#setX` methods. If you use this function, you may not want to include the
other `setX` functions that date-fns provides if you are concerned about the bundle size.

@param {Date|Number} date - the date to be changed
@param {Object} values - an object with options
@param {Number} [values.year] - the number of years to be set
@param {Number} [values.month] - the number of months to be set
@param {Number} [values.date] - the number of days to be set
@param {Number} [values.hours] - the number of hours to be set
@param {Number} [values.minutes] - the number of minutes to be set
@param {Number} [values.seconds] - the number of seconds to be set
@param {Number} [values.milliseconds] - the number of milliseconds to be set
@returns {Date} the new date with options set
@throws {TypeError} 2 arguments required
@throws {RangeError} `values` must be an object

@example
// Transform 1 September 2014 into 20 October 2015 in a single line:
var result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })
//=> Tue Oct 20 2015 00:00:00

@example
// Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:
var result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })
//=> Mon Sep 01 2014 12:23:45