UNPKG

glize

Version:

Glize is a clean and robust pure JavaScript library.

83 lines (72 loc) 2.19 kB
/** * @fileoverview Cookies utility methods. * * @see https://google.github.io/styleguide/javascriptguide.xml * @see https://developers.google.com/closure/compiler/docs/js-for-compiler * @module glize/dom/cookies * @requires glize/utils/number */ import { uint32 } from '../utils/number.js'; /** * Sets a cookie. * @param {string} key The name of the cookie. * @param {string} value The value of the cookie. * @param {number} expiration The days after the cookie expires. * @param {string=} opt_domain Optional, domain that the cookie belongs to. * @method */ export const set = (key, value, expiration, opt_domain) => { const expires = new Date(expiration * 864E5 + Date.now()).toGMTString(); document.cookie = escape(key) + '=' + escape(value || '') + '; expires=' + expires + '; path=/; domain=' + (opt_domain || document.domain); }; /** * Gets the value for the first cookie with the given name. * @param {string} key The name of the cookie to get. * @param {string=} opt_default The optional default value. * @return {string} The value of the cookie. If no cookie is set this * returns opt_default or undefined if opt_default is not provided. * @method */ export const get = (key, opt_default = '') => { const re = key + '=([^;].+?)(;|$)'; return unescape((document.cookie.match(re) || [])[1] || opt_default); }; /** * Removes and expires a cookie. * @param {string} key The cookie name. * @return {boolean} Whether the cookie existed before it was removed. * @method */ export const remove = (key) => { const value = get(key); set(key, '', 0); return !!value; }; /** * Removes and expires all cookie. * @method */ export const clear = () => { const names = keys(); let length = uint32(names.length); while (length--) { remove(names[length]); } }; /** * Gets list of stored keys. * @return {!Array<string>} Returns list of stored keys. * @method */ export const keys = () => { const re = /;\s*/; const parts = document.cookie.split(re); let length = uint32(parts.length); const keys = new Array(length - 1); while (length--) { keys[length] = (parts[length].split('=')[0]); } return keys; };