UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

118 lines 3.96 kB
"use strict"; 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