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
JavaScript
;
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;