import addDays from "./addDays.mjs"; import addHours from "./addHours.mjs"; import addMilliseconds from "./addMilliseconds.mjs"; import addMinutes from "./addMinutes.mjs"; import addMonths from "./addMonths.mjs"; import addSeconds from "./addSeconds.mjs"; import addYears from "./addYears.mjs"; import units from "./units.mjs"; import { n as normalizeUnit } from "./normalizeUnit-bp5SODxw.mjs"; import daysInMonth from "./daysInMonth.mjs"; import { c as MS_IN_SECOND, b as MS_IN_MINUTE, a as MS_IN_HOUR } from "./constants-BuFquuHl.mjs"; const { DAY: DAY$1, HOUR: HOUR$1, MINUTE: MINUTE$1, MONTH: MONTH$1, SECOND: SECOND$1, YEAR: YEAR$1 } = units; function addNumber(date, num, unit) { unit = normalizeUnit(unit); switch (unit) { case YEAR$1: return addYears(date, num); case MONTH$1: return addMonths(date, num); case DAY$1: return addDays(date, num); case HOUR$1: return addHours(date, num); case MINUTE$1: return addMinutes(date, num); case SECOND$1: return addSeconds(date, num); default: return addMilliseconds(date, num); } } const { DAY, HOUR, MINUTE, MONTH, SECOND, YEAR } = units; function addObject(date, obj, times) { let time = 0; let expectedMonth = 0; let expectedDay = 0; Object.entries(obj).forEach(([unit, num]) => { unit = normalizeUnit(unit); num *= times; switch (unit) { case YEAR: expectedMonth += num * 12; return; case MONTH: expectedMonth += date.getMonth() + num; return; case DAY: expectedDay = num; return; case HOUR: num *= MS_IN_HOUR; break; case MINUTE: num *= MS_IN_MINUTE; break; case SECOND: num *= MS_IN_SECOND; break; } time += num; }); if (expectedMonth) { const tempMaxDay = daysInMonth(new Date(date.getFullYear(), expectedMonth, 1, 0, 0, 0, 0)); const currentDay = date.getDate(); date.setMonth(expectedMonth, (currentDay > tempMaxDay ? tempMaxDay : currentDay) + expectedDay); } return addMilliseconds(date, time); } export { addObject as a, addNumber as b };