A handy set of APIs to manage browser cookies.
- You Can use it in NodeJs or any Browser.
- You don't have to worry about character encoding.
- dependency-free.
- JSON support out of the box.
- Base64 encoding/decoding out of the box.
- Pre-compressed version included.
- Tiny (2.8 kb UMD minified).
- Available through NPM or JsDelivr CDN.
- Available as API style and Builder class style.
- Compatible with Angular, React and Vue.
- Strictly typed, build with the lovely TypeScript ❤️.
API is a set of functions for adding reading deleting cookies and so on.
Function | Definition |
---|---|
addCookie | Add a new cookie to the document only if no cookie exists with the same name. |
setCookie | Set a new cookie to the document, this will override any existing cookie with the same name. |
getAllCookies | Get all visible cookies as { name: value } pairs. |
getCookie | Get cookie's value by its name or return the default value. |
getCookieDecoded | Get cookie's decoded value by its name or return the default value. |
deleteCookie | Delete a cookie by its name. |
deleteAllCookies | Delete all visible cookies. |
cookieExists | Check if a cookie exists by its name. |
cookieHasValue | Check if a cookie exists by the given name and whether or not it has the given value. |
Setting a cookie.
import { setCookie, getAllCookies } from 'cookie-api';
setCookie('name', 'value');
console.log(getAllCookies()); // returns { name: "value" }
Setting a cookie with options.
import { setCookie, getAllCookies } from 'cookie-api';
setCookie('name', 'value', { maxAge: 1000 * 60 * 60 * 24, secure: true });
console.log(getAllCookies()); // returns { name: "value" }
Setting a cookie with encoded value.
import { setCookie, getCookie, getCookieDecoded } from 'cookie-api';
setCookie('name', 'value', { encode: true });
console.log(getCookie('name')); // returns "dmFsdWU%3D"
console.log(getCookieDecoded('name')); // returns "value"
Setting a cookie with JSON value.
import { setCookie, getCookie } from 'cookie-api';
setCookie('name', { key: 'value' });
console.log(getCookie('name')); // returns '{ "key": "value" }'
Reading a cookie.
import { getCookie } from 'cookie-api';
console.log(getCookie('name')); // returns the value of "name" or empty string
Reading a cookie with default value.
import { getCookie } from 'cookie-api';
console.log(getCookie('name', 'defaultValue')); // returns the value of "name" or "defaultValue"
Deleting a cookie.
import { deleteCookie } from 'cookie-api';
deleteCookie('name');
Deleting all visible cookies.
import { deleteAllCookies } from 'cookie-api';
deleteAllCookies();
Cookie builder is a builder class that have the exact same functionality as API style but in a fluent way.
Function | Definition |
---|---|
static get | Creates new cookie builder class based on an existing cookie. |
static getDecoded | Creates new cookie builder class with an encoded value based on an existing cookie. |
setName | Set Cookie's name. |
getName | Get Cookie's name. |
setValue | Set cookie's value. |
getValue | Get cookie's value if exists, otherwise the default value. |
setPath | Set cookie's path. |
getPath | Get cookie's path. |
setDomain | Set cookie's domain. |
getDomain | Get cookie's domain. |
setExpDate | Set cookie's expiration date. |
getExpDate | Get cookie's expiration date. |
setMaxAge | Set cookie's maxAge. |
getMaxAge | Get cookie's maxAge. |
setSecure | Set cookie's secure flag. |
isSecure | Get cookie's secure flag. |
setEncode | Set cookie's encode option. |
isEncoded | Get cookie's encode option. |
save | Save this cookie to the document. |
Setting a cookie.
import { Cookie } from 'cookie-api';
new Cookie('name', 'value').save();
// or
new Cookie()
.setName('name')
.setValue('value')
.save();
console.log(Cookie.get('name').getValue()); // returns "value"
Setting a cookie with options.
import { Cookie } from 'cookie-api';
new Cookie('name', 'value', {
path: '/',
expDate: 'Tue, 13 Aug 2020 10:29:45 GMT'
}).save();
// or
new Cookie()
.setName('name')
.setValue('value')
.setPath('/')
.setExpDate('Tue, 13 Aug 2020 10:29:45 GMT')
.save();
console.log(Cookie.get('name').getValue()); // returns "value"
Setting a cookie with encoded value.
import { Cookie } from 'cookie-api';
new Cookie('name', 'value', { encode: true }).save();
// or
new Cookie()
.setName('name')
.setValue('value')
.setEncode(true)
.save();
console.log(Cookie.get('name').getValue()); // returns "value"
console.log(Cookie.getDecoded('name').getValue()); // returns "value"
Setting a cookie with JSON value.
import { Cookie } from 'cookie-api';
new Cookie('name', { key: 'value' }).save();
// or
new Cookie()
.setName('name')
.setValue({ key: 'value' })
.save();
console.log(Cookie.get('name').getValue()); // returns '{ "key": "value" }'
Reading a cookie.
import { Cookie } from 'cookie-api';
console.log(Cookie.get('name').getValue()); // returns the value of "name" or empty string
Reading a cookie with default value.
import { Cookie } from 'cookie-api';
console.log(Cookie.get('name', 'defaultValue').getValue()); // returns the value of "name" or "defaultValue"
Using the builder class will not save any changes to the document untill you call the save
function.
import { Cookie } from 'cookie-api';
// name and value are saved in memory but takes no effect at the document.
const cookie = new Cookie().setName('name').setValue('value');
// you have to call save to actually save it.
cookie.save();
Available cookie options for both API and Builder class.
Option | Type | Default |
---|---|---|
path | string |
'' |
domain | string |
'' |
expDate (aka expires) | string or Date |
'' |
maxAge | number |
-1 |
secure | boolean |
false |
encode | boolean |
false |
You can import it directly in the browser by adding the script below in your web page.
<script src="https://cdn.jsdelivr.net/npm/cookie-api2.0.2/dist/umd/index.js"></script>
Both the API and the builder class are available under the CookieAPI
namespace.
<script src="https://cdn.jsdelivr.net/npm/cookie-api2.0.2/dist/umd/index.js"></script>
<script>
CookieAPI.setCookie('name', 'value');
console.log(CookieAPI.getAllCookies()); // returns { name: "value" }
</script>