UNPKG

@technobuddha/library

Version:
59 lines (58 loc) 1.45 kB
/* eslint-disable unicorn/no-document-cookie */ import formatDate from '../formatDate'; let yummy; /** * Initialize the cookie system with the browsers cookies * Parse a string containing cookies for use by other cookie method * * @param input string to be decoded */ export function init(input = document.cookie) { if (typeof yummy === 'undefined') { yummy = Object.fromEntries(input.split(';').map(cookie => cookie.split('=').map(crumb => decodeURIComponent(crumb.trim())))); } } /** * Get the value of a cookie * * @param name name of a cookie */ export function get(name) { init(); return yummy[name]; } /** * Get the names of all cookies * * @returns array of cookie names */ export function names() { init(); return Object.keys(yummy); } /** * Add or update a cookie * * @param name name of the cookie * @param value value of the cookie * @param expires Expiration date */ export function add(name, value, expires) { init(); let cookie = `${name}=${encodeURIComponent(value)}; Path=/`; if (expires) cookie += `; Expires=${formatDate(new Date(expires), 'cookie', { UTC: true })}`; document.cookie = cookie; yummy[name] = value; } /** * Delete a cookie * * @param name */ export function del(name) { init(); document.cookie = `${name}=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT`; delete yummy[name]; } export default { init, get, names, add, del };