Skip to content

Commit

Permalink
Releasing 0.4.5
Browse files Browse the repository at this point in the history
  • Loading branch information
eXon committed Feb 16, 2016
1 parent fb2f2a8 commit f27f576
Show file tree
Hide file tree
Showing 3 changed files with 254 additions and 1 deletion.
252 changes: 252 additions & 0 deletions dist/react-cookie.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var cookie = require('cookie');

var _rawCookie = {};
var _res = undefined;

function load(name, doNotParse) {
var cookies = (typeof document === 'undefined') ? _rawCookie : cookie.parse(document.cookie);
var cookieVal = cookies && cookies[name];

if (!doNotParse) {
try {
cookieVal = JSON.parse(cookieVal);
} catch(e) {
// Not serialized object
}
}

return cookieVal;
}

function save(name, val, opt) {
_rawCookie[name] = val;

// allow you to work with cookies as objects.
if (typeof val === 'object') {
_rawCookie[name] = JSON.stringify(val);
}

// Cookies only work in the browser
if (typeof document !== 'undefined') {
document.cookie = cookie.serialize(name, _rawCookie[name], opt);
}

if (_res && _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 };
}

if (typeof document !== 'undefined') {
opt.expires = new Date(1970, 1, 1, 0, 0, 1);
document.cookie = cookie.serialize(name, '', opt);
}

if (_res && _res.clearCookie) {
_res.clearCookie(name, opt);
}
}

function setRawCookie(rawCookie) {
if (rawCookie) {
_rawCookie = cookie.parse(rawCookie);
} else {
_rawCookie = {};
}
}

function plugToRequest(req, res) {
if (req.cookie) {
_rawCookie = req.cookie;
} else if (req.headers && req.headers.cookie) {
setRawCookie(req.headers.cookie);
} else {
_rawCookie = {};
}

_res = res;
}

var reactCookie = {
load: load,
save: save,
remove: remove,
setRawCookie: setRawCookie,
plugToRequest: plugToRequest
};

if (typeof window !== 'undefined') {
window['reactCookie'] = reactCookie;
}

module.exports = reactCookie;

},{"cookie":2}],2:[function(require,module,exports){
/*!
* cookie
* Copyright(c) 2012-2014 Roman Shtylman
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/

/**
* Module exports.
* @public
*/

exports.parse = parse;
exports.serialize = serialize;

/**
* Module variables.
* @private
*/

var decode = decodeURIComponent;
var encode = encodeURIComponent;

/**
* RegExp to match field-content in RFC 7230 sec 3.2
*
* field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
* field-vchar = VCHAR / obs-text
* obs-text = %x80-FF
*/

var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;

/**
* Parse a cookie header.
*
* Parse the given cookie header string into an object
* The object has the various cookies as keys(names) => values
*
* @param {string} str
* @param {object} [options]
* @return {object}
* @public
*/

function parse(str, options) {
if (typeof str !== 'string') {
throw new TypeError('argument str must be a string');
}

var obj = {}
var opt = options || {};
var pairs = str.split(/; */);
var dec = opt.decode || decode;

pairs.forEach(function(pair) {
var eq_idx = pair.indexOf('=')

// skip things that don't look like key=value
if (eq_idx < 0) {
return;
}

var key = pair.substr(0, eq_idx).trim()
var val = pair.substr(++eq_idx, pair.length).trim();

// quoted values
if ('"' == val[0]) {
val = val.slice(1, -1);
}

// only assign once
if (undefined == obj[key]) {
obj[key] = tryDecode(val, dec);
}
});

return obj;
}

/**
* Serialize data into a cookie header.
*
* Serialize the a name value pair into a cookie string suitable for
* http headers. An optional options object specified cookie parameters.
*
* serialize('foo', 'bar', { httpOnly: true })
* => "foo=bar; httpOnly"
*
* @param {string} name
* @param {string} val
* @param {object} [options]
* @return {string}
* @public
*/

function serialize(name, val, options) {
var opt = options || {};
var enc = opt.encode || encode;

if (!fieldContentRegExp.test(name)) {
throw new TypeError('argument name is invalid');
}

var value = enc(val);

if (value && !fieldContentRegExp.test(value)) {
throw new TypeError('argument val is invalid');
}

var pairs = [name + '=' + value];

if (null != opt.maxAge) {
var maxAge = opt.maxAge - 0;
if (isNaN(maxAge)) throw new Error('maxAge should be a Number');
pairs.push('Max-Age=' + maxAge);
}

if (opt.domain) {
if (!fieldContentRegExp.test(opt.domain)) {
throw new TypeError('option domain is invalid');
}

pairs.push('Domain=' + opt.domain);
}

if (opt.path) {
if (!fieldContentRegExp.test(opt.path)) {
throw new TypeError('option path is invalid');
}

pairs.push('Path=' + opt.path);
}

if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString());
if (opt.httpOnly) pairs.push('HttpOnly');
if (opt.secure) pairs.push('Secure');

return pairs.join('; ');
}

/**
* Try decoding a string using a decoding function.
*
* @param {string} str
* @param {function} decode
* @private
*/

function tryDecode(str, decode) {
try {
return decode(str);
} catch (e) {
return str;
}
}

},{}]},{},[1]);
1 change: 1 addition & 0 deletions dist/react-cookie.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-cookie",
"version": "0.4.3",
"version": "0.4.5",
"description": "Load and save cookies within your React application",
"main": "index.js",
"files": [
Expand Down

0 comments on commit f27f576

Please sign in to comment.