Comparing version
@@ -1,2 +0,2 @@ | ||
/*! js-cookie v3.0.0-beta.3 | MIT */ | ||
/*! js-cookie v3.0.0-beta.4 | MIT */ | ||
; | ||
@@ -13,14 +13,2 @@ (function (global, factory) { | ||
var rfc6265Converter = { | ||
read: function (value) { | ||
return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent) | ||
}, | ||
write: function (value) { | ||
return encodeURIComponent(value).replace( | ||
/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, | ||
decodeURIComponent | ||
) | ||
} | ||
}; | ||
function assign (target) { | ||
@@ -36,2 +24,11 @@ for (var i = 1; i < arguments.length; i++) { | ||
var defaultConverter = { | ||
read: function (value) { | ||
return value.replace(/%3B/g, ';') | ||
}, | ||
write: function (value) { | ||
return value.replace(/;/g, '%3B') | ||
} | ||
}; | ||
function init (converter, defaultAttributes) { | ||
@@ -52,7 +49,5 @@ function set (key, value, attributes) { | ||
value = converter.write(value, key); | ||
key = defaultConverter.write(key).replace(/=/g, '%3D'); | ||
key = encodeURIComponent(key) | ||
.replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent) | ||
.replace(/[()]/g, escape); | ||
value = converter.write(String(value), key); | ||
@@ -71,9 +66,2 @@ var stringifiedAttributes = ''; | ||
// Considers RFC 6265 section 5.2: | ||
// ... | ||
// 3. If the remaining unparsed-attributes contains a %x3B (";") | ||
// character: | ||
// Consume the characters of the unparsed-attributes up to, | ||
// not including, the first %x3B (";") character. | ||
// ... | ||
stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]; | ||
@@ -97,15 +85,8 @@ } | ||
var cookie = parts.slice(1).join('='); | ||
var name = defaultConverter.read(parts[0]).replace(/%3D/g, '='); | ||
jar[name] = converter.read(cookie, name); | ||
if (cookie[0] === '"') { | ||
cookie = cookie.slice(1, -1); | ||
if (key === name) { | ||
break | ||
} | ||
try { | ||
var name = rfc6265Converter.read(parts[0]); | ||
jar[name] = converter.read(cookie, name); | ||
if (key === name) { | ||
break | ||
} | ||
} catch (e) {} | ||
} | ||
@@ -143,3 +124,3 @@ | ||
var api = init(rfc6265Converter, { path: '/' }); | ||
var api = init(defaultConverter, { path: '/' }); | ||
@@ -146,0 +127,0 @@ return api; |
@@ -1,2 +0,2 @@ | ||
/*! js-cookie v3.0.0-beta.3 | MIT */ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,r=e.Cookies=t();r.noConflict=function(){return e.Cookies=n,r}}())}(this,function(){"use strict";var e={read:function(e){return e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}};function t(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}return function n(r,o){function i(e,n,i){if("undefined"!=typeof document){"number"==typeof(i=t({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),n=r.write(n,e),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=e+"="+n+c}}return Object.create({set:i,get:function(t){if("undefined"!=typeof document&&(!arguments.length||t)){for(var n=document.cookie?document.cookie.split("; "):[],o={},i=0;i<n.length;i++){var c=n[i].split("="),u=c.slice(1).join("=");'"'===u[0]&&(u=u.slice(1,-1));try{var f=e.read(c[0]);if(o[f]=r.read(u,f),t===f)break}catch(e){}}return t?o[t]:o}},remove:function(e,n){i(e,"",t({},n,{expires:-1}))},withAttributes:function(e){return n(this.converter,t({},this.attributes,e))},withConverter:function(e){return n(t({},this.converter,e),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(r)}})}(e,{path:"/"})}); | ||
/*! js-cookie v3.0.0-beta.4 | MIT */ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var r=e.Cookies,n=e.Cookies=t();n.noConflict=function(){return e.Cookies=r,n}}())}(this,function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)e[n]=r[n]}return e}var t={read:function(e){return e.replace(/%3B/g,";")},write:function(e){return e.replace(/;/g,"%3B")}};return function r(n,i){function o(r,o,u){if("undefined"!=typeof document){"number"==typeof(u=e({},i,u)).expires&&(u.expires=new Date(Date.now()+864e5*u.expires)),u.expires&&(u.expires=u.expires.toUTCString()),r=t.write(r).replace(/=/g,"%3D"),o=n.write(String(o),r);var c="";for(var f in u)u[f]&&(c+="; "+f,!0!==u[f]&&(c+="="+u[f].split(";")[0]));return document.cookie=r+"="+o+c}}return Object.create({set:o,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var r=document.cookie?document.cookie.split("; "):[],i={},o=0;o<r.length;o++){var u=r[o].split("="),c=u.slice(1).join("="),f=t.read(u[0]).replace(/%3D/g,"=");if(i[f]=n.read(c,f),e===f)break}return e?i[e]:i}},remove:function(t,r){o(t,"",e({},r,{expires:-1}))},withAttributes:function(t){return r(this.converter,e({},this.attributes,t))},withConverter:function(t){return r(e({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(i)},converter:{value:Object.freeze(n)}})}(t,{path:"/"})}); |
{ | ||
"name": "js-cookie", | ||
"version": "3.0.0-beta.3", | ||
"version": "3.0.0-beta.4", | ||
"description": "A simple, lightweight JavaScript API for handling cookies", | ||
@@ -5,0 +5,0 @@ "browser": "dist/js.cookie.js", |
@@ -15,6 +15,5 @@ <p align="center"> | ||
- Supports AMD/CommonJS | ||
- [RFC 6265](https://tools.ietf.org/html/rfc6265) compliant | ||
- Useful [Wiki](https://github.com/js-cookie/js-cookie/wiki) | ||
- Enable [custom encoding/decoding](#converters) | ||
- **< 800 bytes** gzipped! | ||
- **< 700 bytes** gzipped! | ||
@@ -170,8 +169,5 @@ **If you're viewing this at https://github.com/js-cookie/js-cookie, you're reading the documentation for the master branch. | ||
This project is [RFC 6265](http://tools.ietf.org/html/rfc6265#section-4.1.1) compliant. All special characters that are not allowed in the cookie-name or cookie-value are encoded with each one's UTF-8 Hex equivalent using [percent-encoding](http://en.wikipedia.org/wiki/Percent-encoding). | ||
The only character in cookie-name or cookie-value that is allowed and still encoded is the percent `%` character, it is escaped in order to interpret percent input as literal. | ||
Special characters that are not permitted in the cookie name (";" and "=") or cookie value (";") are encoded with their UTF-8 Hex equivalent using [percent-encoding](http://en.wikipedia.org/wiki/Percent-encoding). | ||
Please note that the default encoding/decoding strategy is meant to be interoperable [only between cookies that are read/written by js-cookie](https://github.com/js-cookie/js-cookie/pull/200#discussion_r63270778). To override the default encoding/decoding strategy you need to use a [converter](#converters). | ||
_Note: According to [RFC 6265](https://tools.ietf.org/html/rfc6265#section-6.1), your cookies may get deleted if they are too big or there are too many cookies in the same domain, [more details here](https://github.com/js-cookie/js-cookie/wiki/Frequently-Asked-Questions#why-are-my-cookies-being-deleted)._ | ||
## Cookie Attributes | ||
@@ -183,3 +179,3 @@ | ||
Define when the cookie will be removed. Value can be a [`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) which will be interpreted as days from time of creation or a [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) instance. If omitted, the cookie becomes a session cookie. | ||
Define when the cookie will be removed. Value must be a [`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) which will be interpreted as days from time of creation or a [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) instance. If omitted, the cookie becomes a session cookie. | ||
@@ -186,0 +182,0 @@ To create a cookie that expires in less than a day, you can check the [FAQ on the Wiki](https://github.com/js-cookie/js-cookie/wiki/Frequently-Asked-Questions#expire-cookies-in-less-than-a-day). |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
24831
-7.95%209
-14.69%361
-1.1%