UNPKG

iso-weeks-year

Version:
48 lines 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.weekNumberToDate = exports.weekNumberToYear = void 0; const weeksInMonth_1 = require("./utils/weeksInMonth"); const weekNumberToDate_1 = require("./utils/weekNumberToDate"); Object.defineProperty(exports, "weekNumberToDate", { enumerable: true, get: function () { return weekNumberToDate_1.weekNumberToDate; } }); const order_1 = require("./utils/order"); const duplicateReduce = (acc, item) => { return acc.length ? acc.some((t) => t.isoWeek === item.isoWeek) ? acc : [...acc, item] : [...acc, item]; }; const mapIsoWeek = (w) => { const date = new Date(w.year, w.month, w.data[1]); const weekNumber = weekNumberToDate_1.weekNumberToDate(date); date.setDate(date.getDate() + 6); return { from: { day: w.data[1], month: w.month, year: w.year, }, to: { day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), }, isoWeek: weekNumber, }; }; const isoWeekNormalized = (weeks) => { const data = weeks.reduce((acc, item) => { const itemData = item.map(mapIsoWeek); return [...acc, ...itemData]; }, []); return order_1.orderBy(data.reduce(duplicateReduce, []), ['isoWeek'], ['asc']); }; exports.weekNumberToYear = (year) => { const weeks = []; for (let i = 0; i <= 11; i++) { const weeksMonth = weeksInMonth_1.weeksInMonth(i, year); weeks.push(weeksMonth); } return isoWeekNormalized(weeks); }; //# sourceMappingURL=index.js.map