// @ts-check
/**
* Parse an incoming query timestamp parameter.
* Accepts a number or string (in milliseconds) and returns seconds (number) or null.
* Returns null for undefined, null, NaN, or empty string.
* @param {string|number|undefined|null} val
* @returns {number|null}
*/
export function parseTimestampToSeconds(val) {
if (val === undefined || val === null || val === '') return null;
// If value is a Buffer or other type, converting to Number will attempt cast.
const n = Number(val);
if (!Number.isFinite(n)) return null;
return n / 1000;
}
/**
* Parse an incoming timestamp value (milliseconds) and return a seconds value or fallback number.
* @param {string|number|undefined|null} val
* @param {number} fallback - fallback seconds value when val is not present
* @returns {number}
*/
export function parseTimestampToSecondsOrDefault(val, fallback = null) {
const ts = parseTimestampToSeconds(val);
return ts === null ? fallback : ts;
}
export default { parseTimestampToSeconds, parseTimestampToSecondsOrDefault };