iso-weeks-year
Version:
Library to view week numbers for a year
48 lines • 1.66 kB
JavaScript
;
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