UNPKG

statement-parser-fab

Version:

Parse bank and credit card statements. Updated fork with FAB (First Abu Dhabi Bank) support and maintained dependencies.

64 lines (63 loc) 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dateWithinRange = void 0; const augment_vir_1 = require("augment-vir"); const global_1 = require("../global"); /** * Creates a date object that's between the two dates given. If a valid date cannot be created with * the given inputs, a date is created that is at least earlier than the given endDate. * * @param startDate Optional. The earlier (date wise) bounds for creating the new Date object. If * this is not provided, a date is created that is as close to, but earlier than, the given * endDate. * @param endDate Required. The later bounds for creating the new Date object. * @param monthNumber Month number for the new Date object. This is 1 indexed. So a `1` here * corresponds to January. * @param dayNumber Number for the month for the new Date object. This is 1 indexed; the first day * of the mont is `1`. */ function dateWithinRange(startDate, endDate, monthNumber, dayNumber) { const errorString = `${JSON.stringify({ startDate, endDate, monthNumber, dayNumber, })}`; const month = monthNumber < 10 ? `0${monthNumber}` : String(monthNumber); const day = dayNumber < 10 ? `0${dayNumber}` : String(dayNumber); if (!startDate || startDate.getUTCFullYear() === endDate.getUTCFullYear()) { const newDate = (0, augment_vir_1.createDateFromUtcIsoFormat)(`${endDate.getUTCFullYear()}-${month}-${day}`); if (newDate <= endDate) { return newDate; } else { return (0, augment_vir_1.createDateFromUtcIsoFormat)(`${endDate.getUTCFullYear() - 1}-${month}-${day}`); } } else if (startDate) { const dateFromStartYear = (0, augment_vir_1.createDateFromUtcIsoFormat)(`${startDate.getUTCFullYear()}-${month}-${day}`); const dateFromStartYearPlus = (0, augment_vir_1.createDateFromUtcIsoFormat)(`${startDate.getUTCFullYear() + 1}-${month}-${day}`); const dateFromEndYear = (0, augment_vir_1.createDateFromUtcIsoFormat)(`${endDate.getUTCFullYear()}-${month}-${day}`); if (dateFromStartYear <= endDate && startDate <= dateFromStartYear) { return dateFromStartYear; } else if (dateFromEndYear <= endDate && startDate <= dateFromEndYear) { return dateFromEndYear; } else if (dateFromStartYearPlus <= endDate && startDate <= dateFromStartYearPlus) { return dateFromStartYearPlus; } else { if ((0, global_1.isSanitizerMode)()) { return dateFromStartYear; } else { throw new Error(`Invalid potential dates generated, none fit between start and end: ${errorString}`); } } } else { throw new Error(`Invalid inputs: ${errorString}`); } } exports.dateWithinRange = dateWithinRange;