@accounter/israeli-vat-scraper
Version:
Scraper app for fetching Israeli VAT data
59 lines (58 loc) • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.homePageHandler = void 0;
const browser_util_js_1 = require("../utils/browser-util.js");
const dates_js_1 = require("../utils/dates.js");
const evaluation_functions_js_1 = require("../utils/evaluation-functions.js");
const page_util_js_1 = require("../utils/page-util.js");
const user_prompt_js_1 = require("../utils/user-prompt.js");
const year_handler_js_1 = require("./year-handler.js");
const homePageHandler = async (config) => {
let page = null;
try {
const prompt = new user_prompt_js_1.UserPrompt();
page = await (0, browser_util_js_1.newHomePage)(config.visibleBrowser, config.logger);
config.logger.log('Logged in');
/* get available years */
await (0, page_util_js_1.waitForSelectorPlus)(page, '#ContentUsersPage_DdlTkufa', config.logger);
const taxYears = await page.evaluate(evaluation_functions_js_1.getSelectOptions, 'select#ContentUsersPage_DdlTkufa > option');
const reports = [];
const years = {};
if (config.years) {
for (const item of config.years) {
if (typeof item === 'number') {
years[item] = [];
}
else {
years[item[0]] = item[1];
}
}
}
await Promise.all(taxYears.map(async (year) => {
const numYear = parseInt(year.value);
if (!years || years[numYear]) {
const months = years[numYear]?.length ? years[numYear] : null;
const reportsYearHandler = new year_handler_js_1.YearHandler(config, prompt, [year.value], months);
return reportsYearHandler.handle(config.logger);
}
return [];
})).then(reportsLists => {
for (const list of reportsLists) {
reports.push(...list);
}
});
page.browser().close();
reports.sort((a, b) => (config.sortDescending
? (0, dates_js_1.parseDate)(a.reportMonth) < (0, dates_js_1.parseDate)(b.reportMonth) && 1
: (0, dates_js_1.parseDate)(a.reportMonth) > (0, dates_js_1.parseDate)(b.reportMonth) && 1) || -1);
if (config.printErrors) {
prompt.printErrors(config.logger);
}
return reports;
}
catch (e) {
page?.browser().close();
throw new Error(`reportsHandler - ${e?.message || e}`, { cause: e });
}
};
exports.homePageHandler = homePageHandler;