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; }