Skip to content

Commit

Permalink
Release 0.2.5
Browse files Browse the repository at this point in the history
  • Loading branch information
eXon committed Jul 3, 2015
1 parent f7d6401 commit 83a8591
Show file tree
Hide file tree
Showing 5 changed files with 157 additions and 4 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ If you are within a non-browser environment, you can use `reactCookie.setRawCook
## Download
NPM: `npm install react-cookie`<br />
Bower: `bower install react-cookie`<br />
CDN: `https://cdnjs.cloudflare.com/ajax/libs/react-cookie/0.2.3/react-cookie.min.js`
CDN: `https://cdnjs.cloudflare.com/ajax/libs/react-cookie/0.2.5/react-cookie.min.js`

# Examples

Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "react-cookie",
"main": "dist/react-cookie.js",
"version": "0.2.3",
"version": "0.2.5",
"homepage": "https://github.com/eXon/react-cookie",
"authors": [
"Benoit Tremblay <[email protected]>"
Expand Down
152 changes: 152 additions & 0 deletions dist/react-cookie.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
(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 _rawCookies = {};
var _cookies = {};

if (typeof document !== 'undefined') {
setRawCookie(document.cookie);
}

function load(name, doNotParse) {
if (doNotParse) {
return _rawCookies[name];
}

return _cookies[name];
}

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

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

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

function remove(name) {
delete _rawCookies[name];
delete _cookies[name];

if (typeof document !== 'undefined') {
document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
}

function setRawCookie(rawCookie) {
if (!rawCookie) {
return;
}

var rawCookies = cookie.parse(rawCookie);

for (var key in rawCookies) {
_rawCookies[key] = rawCookies[key];

try {
_cookies[key] = JSON.parse(rawCookies[key]);
} catch(e) {
// Not serialized object
_cookies[key] = rawCookies[key];
}
}
}

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

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

module.exports = reactCookie;

},{"cookie":2}],2:[function(require,module,exports){

/// 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}
var serialize = function(name, val, opt){
opt = opt || {};
var enc = opt.encode || encode;
var pairs = [name + '=' + enc(val)];

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) pairs.push('Domain=' + opt.domain);
if (opt.path) 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('; ');
};

/// Parse the given cookie header string into an object
/// The object has the various cookies as keys(names) => values
/// @param {String} str
/// @return {Object}
var parse = function(str, opt) {
opt = opt || {};
var obj = {}
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]) {
try {
obj[key] = dec(val);
} catch (e) {
obj[key] = val;
}
}
});

return obj;
};

var encode = encodeURIComponent;
var decode = decodeURIComponent;

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

},{}]},{},[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.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-cookie",
"version": "0.2.3",
"version": "0.2.5",
"description": "Load and save cookies within your React application",
"main": "index.js",
"files": [
Expand All @@ -23,7 +23,7 @@
"author": "Benoit Tremblay <[email protected]>",
"license": "MIT",
"scripts": {
"build": "mkdir dist & browserify index.js > dist/react-cookie.js & uglifyjs dist/react-cookie.js -o dist/react-cookie.min.js",
"build": "mkdir -p dist && browserify index.js > dist/react-cookie.js && uglifyjs dist/react-cookie.js -o dist/react-cookie.min.js",
"test": "node_modules/.bin/minijasminenode2 test.js"
},
"dependencies": {
Expand Down

0 comments on commit 83a8591

Please sign in to comment.