40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.checkGregorianRange = exports.checkHijriRange = void 0;
|
|
const ummalqura_1 = require("./ummalqura");
|
|
const isoFormat_1 = require("./isoFormat");
|
|
const dateHelpersHijri_1 = require("./dateHelpersHijri");
|
|
/**
|
|
* Check date values if within valid range.
|
|
*/
|
|
function checkHijriRange(date) {
|
|
// check year
|
|
const [[minYear], [maxYear]] = ummalqura_1.HIJRI_RANGE;
|
|
if (date.year < minYear || maxYear < date.year) {
|
|
throw Error('date out of range');
|
|
}
|
|
// check month
|
|
const maxMonths = 12;
|
|
if (date.month < 1 || maxMonths < date.month) {
|
|
throw Error(`month must be in 1..${maxMonths}`);
|
|
}
|
|
// check day
|
|
const monthLen = (0, dateHelpersHijri_1.hijriDaysInMonth)(date.year, date.month);
|
|
if (date.day < 1 || monthLen < date.day) {
|
|
throw Error(`day must be in 1..${monthLen}`);
|
|
}
|
|
}
|
|
exports.checkHijriRange = checkHijriRange;
|
|
/**
|
|
* Check if Gregorian date is within valid range.
|
|
*/
|
|
function checkGregorianRange(date) {
|
|
const [minDate, maxDate] = ummalqura_1.GREGORIAN_RANGE;
|
|
const isoCurrentDate = (0, isoFormat_1.isoFormat)(date.year, date.month, date.day);
|
|
if ((0, isoFormat_1.isoFormat)(...minDate) > isoCurrentDate ||
|
|
(0, isoFormat_1.isoFormat)(...maxDate) < isoCurrentDate) {
|
|
throw Error('date out of range');
|
|
}
|
|
}
|
|
exports.checkGregorianRange = checkGregorianRange;
|