js-cookie
Advanced tools
Comparing version 3.0.0-rc.0 to 3.0.0-rc.1
@@ -1,2 +0,2 @@ | ||
/*! js-cookie v3.0.0-rc.0 | MIT */ | ||
/*! js-cookie v3.0.0-rc.1 | MIT */ | ||
; | ||
@@ -25,6 +25,9 @@ (function (global, factory) { | ||
read: function (value) { | ||
return value.replace(/%3B/g, ';') | ||
return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent) | ||
}, | ||
write: function (value) { | ||
return value.replace(/;/g, '%3B') | ||
return encodeURIComponent(value).replace( | ||
/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, | ||
decodeURIComponent | ||
) | ||
} | ||
@@ -48,5 +51,7 @@ }; | ||
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); | ||
value = converter.write(value, key); | ||
@@ -65,2 +70,9 @@ 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]; | ||
@@ -84,8 +96,15 @@ } | ||
var value = parts.slice(1).join('='); | ||
var foundKey = defaultConverter.read(parts[0]).replace(/%3D/g, '='); | ||
jar[foundKey] = converter.read(value, foundKey); | ||
if (key === foundKey) { | ||
break | ||
if (value[0] === '"') { | ||
value = value.slice(1, -1); | ||
} | ||
try { | ||
var foundKey = defaultConverter.read(parts[0]); | ||
jar[foundKey] = converter.read(value, foundKey); | ||
if (key === foundKey) { | ||
break | ||
} | ||
} catch (e) {} | ||
} | ||
@@ -92,0 +111,0 @@ |
@@ -1,2 +0,2 @@ | ||
/*! js-cookie v3.0.0-rc.0 | 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:"/"})}); | ||
/*! js-cookie v3.0.0-rc.1 | 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";function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}var t={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)}};return function n(r,o){function i(t,n,i){if("undefined"!=typeof document){"number"==typeof(i=e({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape),n=r.write(n,t);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n+c}}return Object.create({set:i,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){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=t.read(c[0]);if(o[f]=r.read(u,f),e===f)break}catch(e){}}return e?o[e]:o}},remove:function(t,n){i(t,"",e({},n,{expires:-1}))},withAttributes:function(t){return n(this.converter,e({},this.attributes,t))},withConverter:function(t){return n(e({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(r)}})}(t,{path:"/"})}); |
{ | ||
"name": "js-cookie", | ||
"version": "3.0.0-rc.0", | ||
"version": "3.0.0-rc.1", | ||
"description": "A simple, lightweight JavaScript API for handling cookies", | ||
@@ -58,3 +58,6 @@ "browser": "dist/js.cookie.js", | ||
"standard": "^14.1.0" | ||
}, | ||
"engines": { | ||
"node": ">=10" | ||
} | ||
} |
@@ -5,3 +5,3 @@ <p align="center"> | ||
# JavaScript Cookie [![Build Status](https://travis-ci.org/js-cookie/js-cookie.svg?branch=master)](https://travis-ci.org/js-cookie/js-cookie) [![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=b3VDaHAxVDg0NDdCRmtUOWg0SlQzK2NsRVhWTjlDQS9qdGJoak1GMzJiVT0tLVhwZHNvdGRoY284YVRrRnI3eU1JTnc9PQ==--5e88ffb3ca116001d7ef2cfb97a4128ac31174c2)](https://www.browserstack.com/automate/public-build/b3VDaHAxVDg0NDdCRmtUOWg0SlQzK2NsRVhWTjlDQS9qdGJoak1GMzJiVT0tLVhwZHNvdGRoY284YVRrRnI3eU1JTnc9PQ==--5e88ffb3ca116001d7ef2cfb97a4128ac31174c2) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) [![Code Climate](https://codeclimate.com/github/js-cookie/js-cookie.svg)](https://codeclimate.com/github/js-cookie/js-cookie) [![npm](https://img.shields.io/github/package-json/v/js-cookie/js-cookie)](https://www.npmjs.com/package/js-cookie) [![size](https://img.shields.io/bundlephobia/minzip/js-cookie/beta)](https://www.npmjs.com/package/js-cookie) [![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/js-cookie/badge?style=rounded)](https://www.jsdelivr.com/package/npm/js-cookie) | ||
# JavaScript Cookie [![Build Status](https://travis-ci.org/js-cookie/js-cookie.svg?branch=master)](https://travis-ci.org/js-cookie/js-cookie) [![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=b3VDaHAxVDg0NDdCRmtUOWg0SlQzK2NsRVhWTjlDQS9qdGJoak1GMzJiVT0tLVhwZHNvdGRoY284YVRrRnI3eU1JTnc9PQ==--5e88ffb3ca116001d7ef2cfb97a4128ac31174c2)](https://www.browserstack.com/automate/public-build/b3VDaHAxVDg0NDdCRmtUOWg0SlQzK2NsRVhWTjlDQS9qdGJoak1GMzJiVT0tLVhwZHNvdGRoY284YVRrRnI3eU1JTnc9PQ==--5e88ffb3ca116001d7ef2cfb97a4128ac31174c2) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) [![Code Climate](https://codeclimate.com/github/js-cookie/js-cookie.svg)](https://codeclimate.com/github/js-cookie/js-cookie) [![npm](https://img.shields.io/github/package-json/v/js-cookie/js-cookie)](https://www.npmjs.com/package/js-cookie) [![size](https://img.shields.io/bundlephobia/minzip/js-cookie/rc)](https://www.npmjs.com/package/js-cookie) [![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/js-cookie/badge?style=rounded)](https://www.jsdelivr.com/package/npm/js-cookie) | ||
@@ -16,5 +16,6 @@ A simple, lightweight JavaScript API for handling cookies | ||
- 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) | ||
- **< 700 bytes** gzipped! | ||
- **< 800 bytes** gzipped! | ||
@@ -69,3 +70,3 @@ **If you're viewing this at https://github.com/js-cookie/js-cookie, you're reading the documentation for the master branch. | ||
```html | ||
<script src="https://cdn.jsdelivr.net/npm/js-cookie@beta/dist/js.cookie.min.js"></script> | ||
<script src="https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js"></script> | ||
``` | ||
@@ -78,3 +79,3 @@ | ||
type="module" | ||
src="https://cdn.jsdelivr.net/npm/js-cookie@beta/dist/js.cookie.min.mjs" | ||
src="https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.mjs" | ||
></script> | ||
@@ -172,5 +173,8 @@ ``` | ||
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). | ||
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. | ||
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 | ||
@@ -261,10 +265,12 @@ | ||
A [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String), with possible values `lax` or `strict`, prevents the browser from sending cookie along with cross-site requests. | ||
A [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String), allowing to control whether the browser is sending a cookie along with cross-site requests. | ||
Default: not set, i.e. include cookie in any request. | ||
Default: not set. | ||
**Note that more recent browsers are making "Lax" the default value even without specifiying anything here.** | ||
**Examples:** | ||
```javascript | ||
Cookies.set('name', 'value', { sameSite: 'lax' }) | ||
Cookies.set('name', 'value', { sameSite: 'strict' }) | ||
Cookies.get('name') // => 'value' | ||
@@ -333,3 +339,3 @@ Cookies.remove('name') | ||
For vulnerability reports, send an e-mail to `jscookieproject at gmail dot com` | ||
For vulnerability reports, send an e-mail to `js-cookie at googlegroups dot com` | ||
@@ -336,0 +342,0 @@ ## Releasing |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
27082
245
367