polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
118 lines • 3.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MAX_AUDIENCE_TIME_RANGE_DAYS = exports.MAX_TIME_RANGE_MS = exports.MAX_DATE_RANGE_DAYS = void 0;
exports.isValidDateFormat = isValidDateFormat;
exports.isStartDateBeforeEndDate = isStartDateBeforeEndDate;
exports.validateDateRange = validateDateRange;
exports.isValidTimestamp = isValidTimestamp;
exports.validateTimestampRange = validateTimestampRange;
exports.validate90DayTimestampRange = validate90DayTimestampRange;
exports.MAX_DATE_RANGE_DAYS = 60;
exports.MAX_TIME_RANGE_MS = 3 * 30 * 24 * 60 * 60 * 1000;
exports.MAX_AUDIENCE_TIME_RANGE_DAYS = 90;
const DATE_FORMAT_REGEX = /^\d{4}-\d{2}-\d{2}$/;
function isValidDateFormat(dateStr) {
if (!dateStr || typeof dateStr !== 'string') {
return false;
}
if (!DATE_FORMAT_REGEX.test(dateStr)) {
return false;
}
const date = new Date(dateStr);
if (isNaN(date.getTime())) {
return false;
}
const [year, month, day] = dateStr.split('-').map(Number);
return (date.getFullYear() === year &&
date.getMonth() + 1 === month &&
date.getDate() === day);
}
function isStartDateBeforeEndDate(startDay, endDay) {
const startDate = new Date(startDay);
const endDate = new Date(endDay);
return startDate <= endDate;
}
function validateDateRange(startDay, endDay, maxDays = exports.MAX_DATE_RANGE_DAYS) {
if (!isStartDateBeforeEndDate(startDay, endDay)) {
return {
valid: false,
error: 'startDay must be before or equal to endDay',
};
}
const startDate = new Date(startDay);
const endDate = new Date(endDay);
const diffTime = endDate.getTime() - startDate.getTime();
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
if (diffDays > maxDays) {
return {
valid: false,
error: `Date range cannot exceed ${maxDays} days`,
daysDiff: diffDays,
};
}
return { valid: true, daysDiff: diffDays };
}
function isValidTimestamp(value) {
if (value === null || value === undefined) {
return false;
}
let timestamp;
if (typeof value === 'number') {
timestamp = value;
}
else if (typeof value === 'string') {
const parsed = parseInt(value, 10);
if (isNaN(parsed)) {
return false;
}
timestamp = parsed;
}
else if (typeof value === 'bigint') {
timestamp = Number(value);
}
else {
return false;
}
if (timestamp < 946684800000 || timestamp > 4102444800000) {
return false;
}
const date = new Date(timestamp);
return !isNaN(date.getTime());
}
function validateTimestampRange(startTime, endTime, maxMs = exports.MAX_TIME_RANGE_MS) {
if (startTime > endTime) {
return {
valid: false,
error: 'startTime must be before or equal to endTime',
};
}
const diffMs = endTime - startTime;
if (diffMs > maxMs) {
const maxDays = Math.floor(maxMs / (1000 * 60 * 60 * 24));
return {
valid: false,
error: `Time range cannot exceed ${maxDays} days (~3 months)`,
msDiff: diffMs,
};
}
return { valid: true, msDiff: diffMs };
}
function validate90DayTimestampRange(startTime, endTime) {
if (startTime > endTime) {
return {
valid: false,
error: 'startTime must be before or equal to endTime',
};
}
const diffMs = endTime - startTime;
const diffDays = Math.ceil(diffMs / (1000 * 60 * 60 * 24));
if (diffDays > exports.MAX_AUDIENCE_TIME_RANGE_DAYS) {
return {
valid: false,
error: `Time range cannot exceed ${exports.MAX_AUDIENCE_TIME_RANGE_DAYS} days`,
daysDiff: diffDays,
};
}
return { valid: true, daysDiff: diffDays };
}
//# sourceMappingURL=date-validation.js.map