"use strict"; const units = require("./units.js"); const constants = require("./constants-DR3SPJ7u.js"); const normalizeUnit = require("./normalizeUnit-Cn0hUyBC.js"); const { DATE, DAY, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, TIME, YEAR } = units; const mapping = { [YEAR]: "FullYear", [MONTH]: "Month", [DATE]: "Date", [DAY]: "Day", [HOUR]: "Hours", [MINUTE]: "Minutes", [SECOND]: "Seconds", [MILLISECOND]: "Milliseconds", [TIME]: "Time" }; const setting = {}; const getting = {}; Object.entries(mapping).forEach(([key, method]) => { if (key === DAY) { setting[key] = function(date, val) { const day = date.getDay(); if (val !== day) { date.setTime(+date + (val - day) * constants.MS_IN_DAY); } }; } else { setting[key] = function(date, val) { date[`set${method}`](val); }; } getting[key] = function(date) { return date[`get${method}`](); }; }); function get(date, unit) { const fn = getting[normalizeUnit.normalizeUnit(unit)]; return fn ? fn(date) : 0; } function set(date, unit, val) { const fn = setting[normalizeUnit.normalizeUnit(unit)]; fn && fn(date, val); return date; } exports.get = get; exports.set = set;