"use strict"; const addDays = require("./addDays.js"); const addHours = require("./addHours.js"); const addMilliseconds = require("./addMilliseconds.js"); const addMinutes = require("./addMinutes.js"); const addMonths = require("./addMonths.js"); const addSeconds = require("./addSeconds.js"); const addYears = require("./addYears.js"); const units = require("./units.js"); const normalizeUnit = require("./normalizeUnit-Cn0hUyBC.js"); const daysInMonth = require("./daysInMonth.js"); const constants = require("./constants-DR3SPJ7u.js"); 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.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.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 *= constants.MS_IN_HOUR; break; case MINUTE: num *= constants.MS_IN_MINUTE; break; case SECOND: num *= constants.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); } exports.addNumber = addNumber; exports.addObject = addObject;