static/js/util/cookie.js (53 lines of code) (raw):
var cookieUtils = {
isCookiesEnabled: function () {
return navigator.cookieEnabled;
},
/**
* @param name
* @returns {string|null}
*/
getCookie: function (name) {
var regexp = new RegExp('(?:^|; )' + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + '=([^;]*)');
var matches = document.cookie.match(regexp);
return matches ? decodeURIComponent(matches[1]) : null;
},
/**
* @param {string} name
* @returns {boolean}
*/
hasCookie: function (name) {
var cookie = this.getCookie(name);
return cookie !== null;
},
/**
* @param {string} name
* @param {string} value
* @param {object} options
* options.expires (number (in seconds), Date, null)
* options.path (string)
* options.domain (string)
* options.secure (boolean)
* @returns void
*/
setCookie: function (name, value, options) {
options = options || {};
var expires = options.expires;
if (typeof expires === 'number' && expires) {
var d = new Date();
d.setTime(d.getTime() + expires * 1000);
expires = options.expires = d;
}
if (expires && expires.toUTCString) {
options.expires = expires.toUTCString();
}
value = encodeURIComponent(value);
var updatedCookie = name + '=' + value;
for (var propName in options) {
updatedCookie += '; ' + propName;
var propValue = options[propName];
if (propValue !== true) {
updatedCookie += "=" + propValue;
}
}
document.cookie = updatedCookie;
},
/**
* @param {string} name
* @returns void
*/
removeCookie: function (name) {
this.setCookie(name, '', {expires: -1});
}
};
module.exports = cookieUtils;