@accounter/israeli-vat-scraper
Version:
Scraper app for fetching Israeli VAT data
42 lines (35 loc) • 1.32 kB
text/typescript
import { createRequire } from 'node:module';
import { config } from 'dotenv';
import { getEnvCredentials, updateCredentials } from './handlers/login-handler.js';
import { homePageHandler } from './handlers/main-page-handler.js';
import { validateSchema } from './utils/schema-validator.js';
import type { Config, Report, UserCredentials } from './utils/types.js';
config({ path: [`.env`, `../../.env`] });
const defaultConfig: Config = {
visibleBrowser: false,
expandData: true,
sortDescending: false,
validate: true,
printErrors: true,
years: undefined,
logger: console,
};
export const vatScraper = async (
credentials?: UserCredentials,
userConfig: Partial<Config> = {},
): Promise<Report[]> => {
try {
updateCredentials(credentials || getEnvCredentials());
const config = { ...defaultConfig, ...userConfig };
const reports = await homePageHandler(config);
if (config.validate) {
const requireFile = createRequire(__dirname); // construct the require method
const schema = requireFile('./src/vatSchema.json'); // use the require method
const validation = await validateSchema(schema, reports);
config.logger.log(validation);
}
return reports;
} catch (e) {
throw new Error(`VatScraper - ${(e as Error)?.message || e}`, { cause: e });
}
};