@just4/cookie
Version:
Just for cookie manipulation in browser.
1 lines • 1.26 kB
JavaScript
import{assignProps}from"@just4/util/object";import{isDate}from"@just4/util/type";import{addRelativeTime}from"@just4/util/date";export function getCookie(e,o){const t=assignProps({},o);t.encode=t.encode||encodeURIComponent,t.decode=t.decode||decodeURIComponent,e="; "+t.encode(e)+"=";const n="; "+document.cookie;let i=n.indexOf(e);if(-1===i)return null;i+=e.length;let s=n.indexOf(";",i);return-1===s&&(s=n.length),t.decode(n.substring(i,s))}export function setCookie(e,o,t){const n=assignProps({},t);n.encode=n.encode||encodeURIComponent;let i=n.encode(e)+"="+n.encode(o);null!=n.expires&&(i+="; expires="+(isDate(n.expires)?n.expires:addRelativeTime(new Date,n.expires)).toUTCString()),n.path&&(i+="; path="+n.path),n.domain&&(i+="; domain="+n.domain),!0===n.secure&&(i+="; secure"),n.sameSite&&(i+="; samesite="+n.sameSite),document.cookie=i}const shouldSetEmptyBeforeRemove=function(){if("undefined"==typeof document)return!1;let e="test__expired";for(;-1!==document.cookie.indexOf(e+"=");)e="_"+e;return document.cookie=e+"=1",document.cookie=e+"=;expires=Thu, 01 Jan 1970 00:00:00 GMT",!!getCookie(e)}();export function removeCookie(e,o){shouldSetEmptyBeforeRemove&&setCookie(e,"",o);const t=assignProps({},o);t.expires=new Date(0),setCookie(e,"",t)}