2026-07-05 06:41:32 +00:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = eachMinuteOfInterval ;
2026-07-07 07:11:50 +00:00
2026-07-05 06:41:32 +00:00
var _index = _interopRequireDefault ( require ( "../addMinutes/index.js" ) ) ;
2026-07-07 07:11:50 +00:00
2026-07-05 06:41:32 +00:00
var _index2 = _interopRequireDefault ( require ( "../toDate/index.js" ) ) ;
2026-07-07 07:11:50 +00:00
2026-07-05 06:41:32 +00:00
var _index3 = _interopRequireDefault ( require ( "../startOfMinute/index.js" ) ) ;
2026-07-07 07:11:50 +00:00
2026-07-05 06:41:32 +00:00
var _index4 = _interopRequireDefault ( require ( "../_lib/requiredArgs/index.js" ) ) ;
2026-07-07 07:11:50 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
2026-07-05 06:41:32 +00:00
/**
* @name eachMinuteOfInterval
* @category Interval Helpers
* @summary Return the array of minutes within the specified time interval.
*
* @description
* Returns the array of minutes within the specified time interval.
*
* @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
* @param {Object} [options] - an object with options.
2026-07-07 07:11:50 +00:00
* @param {Number} [options.step=1] - the step to increment by. The starts of minutes from the hour of the interval start to the hour of the interval end
* @throws {TypeError} 1 argument requie value should be more than 1.
* @returns {Date[]} the array withred
* @throws {RangeError} `options.step` must be a number equal or greater than 1
2026-07-05 06:41:32 +00:00
* @throws {RangeError} The start of an interval cannot be after its end
* @throws {RangeError} Date in interval cannot be `Invalid Date`
*
* @example
* // Each minute between 14 October 2020, 13:00 and 14 October 2020, 13:03
* const result = eachMinuteOfInterval({
* start: new Date(2014, 9, 14, 13),
* end: new Date(2014, 9, 14, 13, 3)
* })
* //=> [
* // Wed Oct 14 2014 13:00:00,
* // Wed Oct 14 2014 13:01:00,
* // Wed Oct 14 2014 13:02:00,
* // Wed Oct 14 2014 13:03:00
* // ]
*/
function eachMinuteOfInterval ( interval , options ) {
( 0 , _index4 . default ) ( 1 , arguments ) ;
var startDate = ( 0 , _index3 . default ) ( ( 0 , _index2 . default ) ( interval . start ) ) ;
2026-07-07 07:11:50 +00:00
var endDate = ( 0 , _index3 . default ) ( ( 0 , _index2 . default ) ( interval . end ) ) ;
2026-07-05 06:41:32 +00:00
var startTime = startDate . getTime ( ) ;
var endTime = endDate . getTime ( ) ;
2026-07-07 07:11:50 +00:00
2026-07-05 06:41:32 +00:00
if ( startTime >= endTime ) {
throw new RangeError ( 'Invalid interval' ) ;
}
2026-07-07 07:11:50 +00:00
2026-07-05 06:41:32 +00:00
var dates = [ ] ;
var currentDate = startDate ;
2026-07-07 07:11:50 +00:00
var step = options && 'step' in options ? Number ( options . step ) : 1 ;
if ( step < 1 || isNaN ( step ) ) throw new RangeError ( '`options.step` must be a number equal or greater than 1' ) ;
2026-07-05 06:41:32 +00:00
while ( currentDate . getTime ( ) <= endTime ) {
dates . push ( ( 0 , _index2 . default ) ( currentDate ) ) ;
currentDate = ( 0 , _index . default ) ( currentDate , step ) ;
}
2026-07-07 07:11:50 +00:00
2026-07-05 06:41:32 +00:00
return dates ;
}
2026-07-07 07:11:50 +00:00
2026-07-05 06:41:32 +00:00
module . exports = exports . default ;