"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("./util"); const weekdays = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']; /** * Only the first parameter is mandatory. Either the second, the third, or both * may be left out. * * If only one parameter is present, the function yeilds a true value on the * weekday that the parameter represents. If the string "GMT" is specified as * a second parameter, times are taken to be in GMT, otherwise in local timezone. * * If both wd1 and wd1 are defined, the condition is true if the current weekday * is in between those two weekdays. Bounds are inclusive. If the "GMT" parameter * is specified, times are taken to be in GMT, otherwise the local timezone is * used. * * Valid "weekday strings" are: * * SUN MON TUE WED THU FRI SAT * * Examples: * * ``` js * weekdayRange("MON", "FRI") * true Monday trhough Friday (local timezone). * * weekdayRange("MON", "FRI", "GMT") * same as above, but GMT timezone. * * weekdayRange("SAT") * true on Saturdays local time. * * weekdayRange("SAT", "GMT") * true on Saturdays GMT time. * * weekdayRange("FRI", "MON") * true Friday through Monday (note, order does matter!). * ``` * * * @param {String} wd1 one of the weekday strings. * @param {String} wd2 one of the weekday strings. * @param {String} gmt is either the string: GMT or is left out. * @return {Boolean} */ function weekdayRange(wd1, wd2, gmt) { let useGMTzone = false; let wd1Index = -1; let wd2Index = -1; let wd2IsGmt = false; if ((0, util_1.isGMT)(gmt)) { useGMTzone = true; } else if ((0, util_1.isGMT)(wd2)) { useGMTzone = true; wd2IsGmt = true; } wd1Index = weekdays.indexOf(wd1); if (!wd2IsGmt && isWeekday(wd2)) { wd2Index = weekdays.indexOf(wd2); } let todaysDay = getTodaysDay(useGMTzone); let result; if (wd2Index < 0) { result = todaysDay === wd1Index; } else if (wd1Index <= wd2Index) { result = valueInRange(wd1Index, todaysDay, wd2Index); } else { result = valueInRange(wd1Index, todaysDay, 6) || valueInRange(0, todaysDay, wd2Index); } return result; } exports.default = weekdayRange; function getTodaysDay(gmt) { return gmt ? new Date().getUTCDay() : new Date().getDay(); } // start <= value <= finish function valueInRange(start, value, finish) { return start <= value && value <= finish; } function isWeekday(v) { return weekdays.indexOf(v) !== -1; } //# sourceMappingURL=weekdayRange.js.map