UNPKG

cookiesjs

Version:

Intuitive cookie manipulation library for the front-end

1 lines 1.7 kB
(function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t():typeof define==`function`&&define.amd?define([],t):(e=typeof globalThis<`u`?globalThis:e||self,e.cookies=t())})(this,function(){let e=function(t,n){let r=e;r.expires===void 0&&(r.expires=365*24*3600),r.path===void 0&&(r.path=`/`),r.secure===void 0&&(r.secure=window.location.protocol===`https:`),r.nulltoremove===void 0&&(r.nulltoremove=!0),r.autojson===void 0&&(r.autojson=!0),r.autoencode===void 0&&(r.autoencode=!0),r.encode===void 0&&(r.encode=encodeURIComponent),r.decode===void 0&&(r.decode=decodeURIComponent),r.fallback===void 0&&(r.fallback=!1);let i={expires:r.expires,path:r.path,secure:r.secure,nulltoremove:r.nulltoremove,autojson:r.autojson,autoencode:r.autoencode,encode:r.encode,decode:r.decode,fallback:r.fallback,domain:r.domain};if(n)for(let e in n){let t=n[e];t!==void 0&&(i[e]=t)}let a=i.encode??encodeURIComponent,o=i.decode??decodeURIComponent;function s(e){if(e instanceof Date)return e.toUTCString();let t=new Date;return t.setTime(t.getTime()+e*1e3),t.toUTCString()}if(typeof t==`string`){let e=i.autoencode?o:e=>e,n=document.cookie.split(/;\s*/).map(e).map(e=>e.split(`=`)).reduce((e,t)=>{let[n=``,...r]=t;return e[n]=r.join(`=`),e},{})[t];if(!i.autojson)return n;let r;try{r=JSON.parse(n)}catch{r=n}return r===void 0&&i.fallback&&(r=i.fallback(t,i)),r}if(t)for(let e in t){let n=t[e],r=n===void 0||i.nulltoremove===!0&&n===null,o=i.autojson?JSON.stringify(n):String(n),c=i.autoencode?a(o):o;r&&(c=``);let l=a(e)+`=`+c+(i.expires?`;expires=`+s(r?-1e4:i.expires):``)+`;path=`+(i.path??`/`)+(i.domain?`;domain=`+i.domain:``)+(i.secure?`;secure`:``);i.test?.(l),document.cookie=l}return e};return e});