172 lines
4.0 KiB
JavaScript
172 lines
4.0 KiB
JavaScript
'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
|
|
}; |