Source: utils/cookies.js

/**
 * @namespace qui.utils.cookies
 */

/**
 * Return the value of a cookie.
 * @alias qui.utils.cookies.get
 * @param {String} name cookie name
 * @param {*} def default value to return if cookie not found
 * @returns {?String}
 */
export function get(name, def = null) {
    let cookie = document.cookie.substring(0)

    if (cookie.length <= 0) {
        return def
    }

    let start = cookie.indexOf(`${name}=`)
    if (start === -1) {
        return def
    }

    start = start + name.length + 1
    let end = cookie.indexOf(';', start)
    if (end === -1) {
        end = cookie.length
    }

    return cookie.substring(start, end)
}

/**
 * Set the value of a cookie, optionally indicating a validity period.
 * @alias qui.utils.cookies.set
 * @param {String} name cookie name
 * @param {String} value cookie value
 * @param {Number} [validDays] number of days of validity; defaults to `null`, in which case cookie never expires
 */
export function set(name, value, validDays = null) {
    let date, expires
    if (validDays) {
        date = new Date()
        date.setTime(date.getTime() + (validDays * 24 * 60 * 60 * 1000))
        expires = `expires=${date.toUTCString()}`
    }
    else {
        expires = ''
    }

    document.cookie = `${name}=${value}; ${expires}; path=/`
}

/**
 * Clear a cookie.
 * @alias qui.utils.cookies.clear
 * @param {String} name cookie name
 */
export function clear(name) {
    let date = new Date()
    date.setTime(date.getTime() + (-1 * 24 * 60 * 60 * 1000))
    let expires = `expires=${date.toUTCString()}`

    document.cookie = `${name}=; ${expires}; path=/`
}