GoScrobble/web/node_modules/universal-cookie/es6/utils.js

54 lines
1.7 KiB
JavaScript
Raw Normal View History

2022-04-25 02:47:15 +00:00
import * as cookie from 'cookie';
export function hasDocumentCookie() {
// Can we get/set cookies on document.cookie?
return typeof document === 'object' && typeof document.cookie === 'string';
}
export function cleanCookies() {
document.cookie.split(';').forEach(function (c) {
document.cookie = c
.replace(/^ +/, '')
.replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');
});
}
export function parseCookies(cookies, options) {
if (typeof cookies === 'string') {
return cookie.parse(cookies, options);
}
else if (typeof cookies === 'object' && cookies !== null) {
return cookies;
}
else {
return {};
}
}
export function isParsingCookie(value, doNotParse) {
if (typeof doNotParse === 'undefined') {
// We guess if the cookie start with { or [, it has been serialized
doNotParse =
!value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '"');
}
return !doNotParse;
}
export function readCookie(value, options) {
if (options === void 0) { options = {}; }
var cleanValue = cleanupCookieValue(value);
if (isParsingCookie(cleanValue, options.doNotParse)) {
try {
return JSON.parse(cleanValue);
}
catch (e) {
// At least we tried
}
}
// Ignore clean value if we failed the deserialization
// It is not relevant anymore to trim those values
return value;
}
function cleanupCookieValue(value) {
// express prepend j: before serializing a cookie
if (value && value[0] === 'j' && value[1] === ':') {
return value.substr(2);
}
return value;
}