Source: utils/parseTimestamp.js

// @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 };