UNPKG

@parkingboss/api

Version:
85 lines (84 loc) 2.66 kB
"use strict"; 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;