Skip to content

Instantly share code, notes, and snippets.

@tysonnero
Created July 27, 2017 03:10
Show Gist options
  • Save tysonnero/ceb4ff79e3b8363b710ebc379d03c5dd to your computer and use it in GitHub Desktop.
Save tysonnero/ceb4ff79e3b8363b710ebc379d03c5dd to your computer and use it in GitHub Desktop.
ES6 Cookie Library
export function getCookie(name) {
if (!name || !hasItem(name)) { return null; }
return decodeURIComponent(document.cookie.replace(new RegExp(`(?:^|.*;\\s*)${encodeURIComponent(name).replace(/[\-\.\+\*]/g, '\\$&')}\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*`), '$1'));
}
export function setCookie(name, value, options) {
if (!name || /^(?:expires|max\-age|path|domain|secure)$/.test(name)) { return; }
const { expires, path, domain, secure } = options;
let expiresAttr = '';
if (expires) {
switch (typeof expires) {
case 'number':
expiresAttr = `; max-age=${expires}`;
break;
case 'string':
expiresAttr = `; expires=${expires}`;
break;
case 'object':
if (expires.hasOwnProperty('toGMTString')) { expiresAttr = `; expires=${expires.toGMTString()}`; }
break;
}
}
document.cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}${expiresAttr}${domain ? `; domain=${domain}` : ''}${path ? `; path=${path}` : ''}${secure ? '; secure' : ''}`;
}
export function removeCookie(name) {
if (!name || !hasItem(name)) { return; }
const expires = new Date();
expires.setDate(expires.getDate() - 1);
document.cookie = `${decodeURIComponent(name)}=; expires=${expires.toGMTString()}; path=/`;
}
export function hasItem(sKey) {
return (new RegExp(`(?:^|;\\s*)${encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&')}\\s*\\=`)).test(document.cookie);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment