UNPKG

react-cookies

Version:

Load and save cookies with React

172 lines (136 loc) 4.1 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; exports.load = load; exports.loadAll = loadAll; exports.select = select; exports.save = save; exports.remove = remove; exports.setRawCookie = setRawCookie; exports.plugToRequest = plugToRequest; var _cookie = require('cookie'); var _cookie2 = _interopRequireDefault(_cookie); var _objectAssign = require('object-assign'); var _objectAssign2 = _interopRequireDefault(_objectAssign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var IS_NODE = typeof document === 'undefined' || typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test'; var _rawCookie = {}; var _res = void 0; function _isResWritable() { return _res && !_res.headersSent; } function load(name, doNotParse) { var cookies = IS_NODE ? _rawCookie : _cookie2.default.parse(document.cookie); var cookieVal = cookies && cookies[name]; if (typeof doNotParse === 'undefined') { doNotParse = !cookieVal || cookieVal[0] !== '{' && cookieVal[0] !== '['; } if (!doNotParse) { try { cookieVal = JSON.parse(cookieVal); } catch (err) { // Not serialized object } } return cookieVal; } function loadAll(doNotParse) { var cookies = IS_NODE ? _rawCookie : _cookie2.default.parse(document.cookie); var cookieVal = cookies; if (typeof doNotParse === 'undefined') { doNotParse = !cookieVal || cookieVal[0] !== '{' && cookieVal[0] !== '['; } if (!doNotParse) { try { cookieVal = JSON.parse(cookieVal); } catch (err) { // Not serialized object } } return cookieVal; } function select(regex) { var cookies = IS_NODE ? _rawCookie : _cookie2.default.parse(document.cookie); if (!cookies) { return {}; } if (!regex) { return cookies; } return Object.keys(cookies).reduce(function (accumulator, name) { if (!regex.test(name)) { return accumulator; } var newCookie = {}; newCookie[name] = cookies[name]; return (0, _objectAssign2.default)({}, accumulator, newCookie); }, {}); } function save(name, val, opt) { _rawCookie[name] = val; // Allow you to work with cookies as objects. if ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object') { _rawCookie[name] = JSON.stringify(val); } // Cookies only work in the browser if (!IS_NODE) { document.cookie = _cookie2.default.serialize(name, _rawCookie[name], opt); } if (_isResWritable() && _res.cookie) { _res.cookie(name, val, opt); } } function remove(name, opt) { delete _rawCookie[name]; if (typeof opt === 'undefined') { opt = {}; } else if (typeof opt === 'string') { // Will be deprecated in future versions opt = { path: opt }; } else { // Prevent mutation of opt below opt = (0, _objectAssign2.default)({}, opt); } if (typeof document !== 'undefined') { opt.expires = new Date(1970, 1, 1, 0, 0, 1); opt.maxAge = 0; document.cookie = _cookie2.default.serialize(name, '', opt); } if (_isResWritable() && _res.clearCookie) { _res.clearCookie(name, opt); } } function setRawCookie(rawCookie) { if (rawCookie) { _rawCookie = _cookie2.default.parse(rawCookie); } else { _rawCookie = {}; } } function plugToRequest(req, res) { if (req.cookie) { _rawCookie = req.cookie; } else if (req.cookies) { _rawCookie = req.cookies; } else if (req.headers && req.headers.cookie) { setRawCookie(req.headers.cookie); } else { _rawCookie = {}; } _res = res; return function unplug() { _res = null; _rawCookie = {}; }; } exports.default = { setRawCookie: setRawCookie, load: load, loadAll: loadAll, select: select, save: save, remove: remove, plugToRequest: plugToRequest };