/** * @fileoverview Date iteration utilities for generating date sequences */ /** * Generate an array of dates for each day in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Array of dates, one per day * @example * eachDay(new Date('2024-01-01'), new Date('2024-01-05')) * // [Jan 1, Jan 2, Jan 3, Jan 4, Jan 5] */ export declare function eachDay(start: Date, end: Date): Date[]; /** * Generate an array of dates for each weekday (Mon-Fri) in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Array of weekday dates * @example * eachWeekday(new Date('2024-01-01'), new Date('2024-01-07')) * // [Jan 1 (Mon), Jan 2 (Tue), Jan 3 (Wed), Jan 4 (Thu), Jan 5 (Fri)] */ export declare function eachWeekday(start: Date, end: Date): Date[]; /** * Generate an array of dates for each weekend day (Sat-Sun) in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Array of weekend dates */ export declare function eachWeekend(start: Date, end: Date): Date[]; /** * Generate an array of dates for each week start in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @param weekStartsOn - Day week starts on (0=Sunday, 1=Monday, default: 0) * @returns Array of week start dates * @example * eachWeek(new Date('2024-01-01'), new Date('2024-01-31')) * // [Jan 7, Jan 14, Jan 21, Jan 28] (Sundays) */ export declare function eachWeek(start: Date, end: Date, weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6): Date[]; /** * Generate an array of dates for the first day of each month in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Array of first-of-month dates * @example * eachMonth(new Date('2024-01-15'), new Date('2024-04-15')) * // [Feb 1, Mar 1, Apr 1] */ export declare function eachMonth(start: Date, end: Date): Date[]; /** * Generate an array of dates for the first day of each quarter in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Array of quarter start dates */ export declare function eachQuarter(start: Date, end: Date): Date[]; /** * Generate an array of dates for January 1st of each year in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Array of year start dates */ export declare function eachYear(start: Date, end: Date): Date[]; /** * Generate an array of dates at regular hour intervals * @param start - Start date/time (inclusive) * @param end - End date/time (inclusive) * @param step - Hour interval (default: 1) * @returns Array of dates at each interval * @example * eachHour(new Date('2024-01-01T09:00'), new Date('2024-01-01T12:00')) * // [9:00, 10:00, 11:00, 12:00] */ export declare function eachHour(start: Date, end: Date, step?: number): Date[]; /** * Generate an array of dates at regular minute intervals * @param start - Start date/time (inclusive) * @param end - End date/time (inclusive) * @param step - Minute interval (default: 1) * @returns Array of dates at each interval * @example * eachMinute(new Date('2024-01-01T09:00'), new Date('2024-01-01T09:05')) * // [9:00, 9:01, 9:02, 9:03, 9:04, 9:05] */ export declare function eachMinute(start: Date, end: Date, step?: number): Date[]; /** * Generate an array of dates for a specific day of the week in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @param dayOfWeek - Day of week (0=Sunday, 1=Monday, ..., 6=Saturday) * @returns Array of dates for that day of week * @example * eachDayOfWeek(new Date('2024-01-01'), new Date('2024-01-31'), 1) * // All Mondays in January 2024 */ export declare function eachDayOfWeek(start: Date, end: Date, dayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6): Date[]; /** * Generate dates at a custom interval * @param start - Start date (inclusive) * @param end - End date (inclusive) * @param interval - Interval configuration * @returns Array of dates at each interval * @example * eachInterval(start, end, { days: 3 }) // Every 3 days * eachInterval(start, end, { weeks: 2 }) // Every 2 weeks * eachInterval(start, end, { hours: 6 }) // Every 6 hours */ export declare function eachInterval(start: Date, end: Date, interval: { years?: number; months?: number; weeks?: number; days?: number; hours?: number; minutes?: number; seconds?: number; }): Date[]; /** * Count the number of days in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Number of days */ export declare function countDays(start: Date, end: Date): number; /** * Count the number of weekdays in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Number of weekdays */ export declare function countWeekdays(start: Date, end: Date): number; /** * Count the number of weekend days in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Number of weekend days */ export declare function countWeekendDays(start: Date, end: Date): number; /** * Count the number of weeks (complete or partial) in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Number of weeks */ export declare function countWeeks(start: Date, end: Date): number; /** * Count the number of months in a range * @param start - Start date (inclusive) * @param end - End date (inclusive) * @returns Number of months (partial months count as 1) */ export declare function countMonths(start: Date, end: Date): number; /** * Iterator for lazy date generation (memory efficient for large ranges) * @param start - Start date (inclusive) * @param end - End date (inclusive) * @param step - Step function to advance the date * @yields Date objects */ export declare function iterateDates(start: Date, end: Date, step?: (current: Date) => void): Generator; /** * Create a lazy day iterator * @param start - Start date * @param end - End date * @yields Each day in the range */ export declare function iterateDays(start: Date, end: Date): Generator; /** * Create a lazy weekday iterator * @param start - Start date * @param end - End date * @yields Each weekday in the range */ export declare function iterateWeekdays(start: Date, end: Date): Generator; /** * Create a lazy month iterator * @param start - Start date * @param end - End date * @yields First day of each month in the range */ export declare function iterateMonths(start: Date, end: Date): Generator; /** * Generate dates by applying a filter to a range * @param start - Start date * @param end - End date * @param filter - Filter function (return true to include date) * @returns Array of filtered dates * @example * // Get all 15th days of each month * filterDays(start, end, d => d.getDate() === 15) */ export declare function filterDays(start: Date, end: Date, filter: (date: Date) => boolean): Date[]; /** * Generate the last day of each month in a range * @param start - Start date * @param end - End date * @returns Array of last-of-month dates */ export declare function eachMonthEnd(start: Date, end: Date): Date[]; /** * Generate specific day of each month in a range * @param start - Start date * @param end - End date * @param dayOfMonth - Day of month (1-31, will cap at month's max) * @returns Array of dates * @example * eachNthDayOfMonth(start, end, 15) // 15th of each month * eachNthDayOfMonth(start, end, 31) // Last day of short months, 31st otherwise */ export declare function eachNthDayOfMonth(start: Date, end: Date, dayOfMonth: number): Date[]; /** * Get all weekend days (Sat + Sun) in a specific month * @param year - year * @param month - month (0-11) * @returns Array of weekend dates */ export declare function eachWeekendOfMonth(year: number, month: number): Date[]; /** * Get all weekend days (Sat + Sun) in a specific year * @param year - year * @returns Array of weekend dates */ export declare function eachWeekendOfYear(year: number): Date[]; /** * Get the previous occurrence of a specific day of week * @param date - reference date * @param dayOfWeek - target day (0=Sunday, 6=Saturday) * @returns The previous occurrence (not including date itself) */ export declare function previousDay(date: Date, dayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6): Date; /** * Get the next occurrence of a specific day of week * @param date - reference date * @param dayOfWeek - target day (0=Sunday, 6=Saturday) * @returns The next occurrence (not including date itself) */ export declare function nextDay(date: Date, dayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6): Date; /** Get the previous Sunday */ export declare function previousSunday(date: Date): Date; /** Get the previous Monday */ export declare function previousMonday(date: Date): Date; /** Get the previous Tuesday */ export declare function previousTuesday(date: Date): Date; /** Get the previous Wednesday */ export declare function previousWednesday(date: Date): Date; /** Get the previous Thursday */ export declare function previousThursday(date: Date): Date; /** Get the previous Friday */ export declare function previousFriday(date: Date): Date; /** Get the previous Saturday */ export declare function previousSaturday(date: Date): Date; /** Get the next Sunday */ export declare function nextSunday(date: Date): Date; /** Get the next Monday */ export declare function nextMonday(date: Date): Date; /** Get the next Tuesday */ export declare function nextTuesday(date: Date): Date; /** Get the next Wednesday */ export declare function nextWednesday(date: Date): Date; /** Get the next Thursday */ export declare function nextThursday(date: Date): Date; /** Get the next Friday */ export declare function nextFriday(date: Date): Date; /** Get the next Saturday */ export declare function nextSaturday(date: Date): Date; //# sourceMappingURL=iterate.d.ts.map