Source: cookie.js

const { toString } = {};

/**
 * 设置cookie
 * @param {string} key 键
 * @param {string} val 值
 * @param {Date|number} days 过期时间|过期天数
 * @param {number} hours 过期小时数
 */
function setItem (key, val, days, hours) {
  let str = `${key}=${encodeURIComponent(val)}`;

  let expire;
  // days参数是一个日期
  if (toString.call(days) === '[object Date]') {
    expire = days;
  }
  // 过期天数
  else if (typeof days === 'number') {
    expire = new Date();
    expire.setDate(expire.getDate() + days);
  }
  // 过期小时数
  else if (typeof hours === 'number') {
    expire = new Date();
    expire.setHours(expire.getHours() + hours);
  }

  expire && (str += `;expires=${expire.toUTCString()}`);
  document.cookie = str;
}

/**
 * 获取cookie
 * @param {string} key 键
 * @returns {string} cookie值
 */
function getItem (key) {
  const { cookie } = document;
  const index = cookie.indexOf(`${key}=`);

  if (index !== -1) {
    const start = index + key.length + 1;
    let end = cookie.indexOf(';', start);

    // 最后一个
    end === -1 && (end = cookie.length);
    return decodeURIComponent(cookie.slice(start, end));
  }
}

/**
 * 清除cookie
 * @param {string} key 键
 */
function removeItem (key) {
  document.cookie = `${key}=_;expires=${new Date().toUTCString()}`;
}

export default {
  setItem,
  getItem,
  removeItem,
};