Eu resolvi com uma função
function getEasterDate(year) {
const a = year % 19;
const b = Math.floor(year / 100);
const c = year % 100;
const d = Math.floor(b / 4);
const e = b % 4;
const f = Math.floor((b + / 25);
const g = Math.floor((b - f + 1) / 3);
const h = (19 * a + b - d - g + 15) % 30;
const i = Math.floor(c / 4);
const k = c % 4;
const l = (32 + 2 * e + 2 * i - h - k) % 7;
const m = Math.floor((a + 11 * h + 22 * l) / 451);
const month = Math.floor((h + l - 7 * m + 114) / 31);
const day = ((h + l - 7 * m + 114) % 31) + 1;
return new Date(year, month - 1, day);
}
function getBankNonBusinessDays(year) {
const set = new Set();
function add(date) { set.add(formatDateISO(date)); }
add(new Date(year, 0, 1));
add(new Date(year, 3, 21));
add(new Date(year, 4, 1));
add(new Date(year, 8, 7));
add(new Date(year, 9, 12));
add(new Date(year, 10, 2));
add(new Date(year, 10, 15));
add(new Date(year, 10, 20));
add(new Date(year, 11, 25));
const easter = getEasterDate(year);
add(addDays(easter, -48));
add(addDays(easter, -47));
add(addDays(easter, -2));
add(addDays(easter, 60));
return set;
}
function isWeekend(date) {
const day = date.getDay();
return day === 0 || day === 6;
}
function isBankNonBusinessDay(date) {
const iso = formatDateISO(date);
const holidays = getBankNonBusinessDays(date.getFullYear());
return isWeekend(date) || holidays.has(iso);
}
function nextBusinessDay(date) {
let d = new Date(date.getFullYear(), date.getMonth(), date.getDate());
while (isBankNonBusinessDay(d)) {
d = addDays(d, 1);
}
return d;
}
function plusBusinessDays(date, qtd) {
let d = nextBusinessDay(date);
let added = 0;
while (added < qtd) {
d = addDays(d, 1);
d = nextBusinessDay(d);
added++;
}
return d;
}