UNPKG

kyper-matter

Version:

Library to provide simple application functionality like authentication and local/session/token storage for Tesselate applications.

73 lines (69 loc) 2.03 kB
import log from './logger' import { includes } from 'lodash' /** * @description Gets cookie value by cookie name. * * @param {String} cookieName - cookie name * @returns {String} cookieValue - value for given cookie name * */ export function getCookie (cookieName) { if (typeof window === 'undefined' || typeof document === 'undefined') { return '' } let name = cookieName + '=' let ca = document.cookie.split(';') for (let i = 0; i < ca.length; i++) { let c = ca[i] while (c.charAt(0) === ' ') { c = c.substring(1) } try { if (includes(c, name)) { return c.substring(name.length, c.length) } } catch (error) { log.warn({ description: 'Cookie cannot be loaded.', cookieName, error, func: 'getCookie', obj: 'cookiesUtil' }) return '' } } return '' } /** * @description Sets cookie at domain's root path. * * @param {String} cookieName - cookie name * @param {String} cookieValue - cookie value * @param {Integer} expDays - expiration day(s) * */ export function setCookie (cookieName, cookieValue, expDays) { const d = new Date() d.setTime(d.getTime() + (expDays * 24 * 60 * 60 * 1000)) const expires = 'expires=' + d.toUTCString() try { document.cookie = cookieName + '=' + cookieValue + '; Path=/; ' + expires } catch (e) { log.warn({ description: 'Cookie cannot be set because browser is not capable.', cookieName, func: 'setCookie', obj: 'cookiesUtil' }) } } /** * @description Deletes cookie at domain's root path. * @param {String} cookieName - cookie name * */ export function deleteCookie (cookieName) { if (getCookie(cookieName)) { document.cookie = cookieName + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;' log.debug({ description: 'Cookie deleted.', cookieName, func: 'deleteCookie' }) } else { log.warn({ description: 'Cookie cannot be deleted because it does not exist.', cookieName, func: 'deleteCookie', obj: 'cookiesUtil' }) } }