@parkingboss/api
Version:
The Parking Boss API
85 lines (84 loc) • 2.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.interval = exports.intervalString = exports.isInterval = exports.isValid = exports.intervalIsValid = exports.validToInterval = void 0;
const date_fns_1 = require("date-fns");
function intervalMin(valid) {
if (!valid)
return;
if (valid.min) {
return new Date(typeof valid.min === "string" ? valid.min : valid.min.utc);
}
else if (valid.interval && valid.interval.split) {
let val = valid.interval.split("/")[0];
if (val)
return new Date(val);
}
else if (valid.utc && valid.utc.split) {
let val = valid.utc.split("/")[0];
if (val)
return new Date(val);
}
}
function intervalMax(valid) {
if (!valid)
return;
if (valid.max) {
return new Date(typeof valid.max === "string" ? valid.max : valid.max.utc);
}
else if (valid.interval && valid.interval.split) {
let val = valid.interval.split("/")[1];
if (val)
return new Date(val);
}
else if (valid.utc && valid.utc.split) {
let val = valid.utc.split("/")[1];
if (val)
return new Date(val);
}
}
function validToInterval(valid) {
const start = intervalMin(valid);
const end = intervalMax(valid);
return { start, end };
}
exports.validToInterval = validToInterval;
function intervalIsValid(interval, now) {
if (!interval)
return false;
now = now || new Date();
if (interval.end && interval.start) {
return date_fns_1.isWithinInterval(now, interval);
}
else if (interval.end) {
return date_fns_1.isAfter(interval.end, now);
}
else if (interval.start) {
return date_fns_1.isAfter(now, interval.start);
}
}
exports.intervalIsValid = intervalIsValid;
function isValid(valid, now) {
now = now || new Date();
const interval = validToInterval(valid);
return intervalIsValid(interval, now);
}
exports.isValid = isValid;
function isInterval(x) {
return x && (x.start instanceof Date || x.end instanceof Date);
}
exports.isInterval = isInterval;
function intervalString(interval) {
const { start, end } = interval;
const startStr = start ? start.toISOString() : "";
const endStr = end ? end.toISOString() : "";
return `${startStr}/${endStr}`;
}
exports.intervalString = intervalString;
function interval(from, to, now) {
now = now || new Date();
return {
start: from == null ? undefined : date_fns_1.addDays(now, from),
end: to == null ? undefined : date_fns_1.addDays(now, to),
};
}
exports.interval = interval;