UNPKG

vue-cookie-next

Version:

A simple Vue.js plugin for handling browser cookies

7 lines (6 loc) 2.8 kB
/*! * vue-cookie-next v1.3.0 * (c) 2021 Anish George * @license MIT */ var VueCookieNext=function(e,t){"use strict";const o={expire:"1d",path:"; path=/",domain:"",secure:"",sameSite:"; SameSite=Lax"};return e.VueCookieNext={install:function(e){e.config.globalProperties.$cookie=this,e.provide("cookie",this)},config:function(e){const{expire:t,path:i,domain:a,secure:n,sameSite:r}=e;o.expire=t||"1d",o.path=i?"; path="+i:"; path=/",o.domain=a?"; domain="+a:"",o.secure=n?"; Secure":"",o.sameSite=r?"; SameSite="+r:"; SameSite=Lax"},getCookie:function(e){var t=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(t&&"{"===t.substring(0,1)&&"}"===t.substring(t.length-1,t.length))try{t=JSON.parse(t)}catch(e){return t}return t},setCookie:function(e,t,i){let{expire:a,path:n,domain:r,secure:s,sameSite:c}=i||{};if(!e)throw new Error("Cookie name is not find in first argument.");if(/^(?:expires|max\-age|path|domain|secure|SameSite)$/i.test(e))throw new Error('Cookie key name illegality, Cannot be set to ["expires","max-age","path","domain","secure","SameSite"]\t current key name: '+e);t&&t.constructor===Object&&(t=JSON.stringify(t));var m="";if(a=void 0===a?o.expire:a,a&&0!=a)switch(a.constructor){case Number:m=a===1/0||-1===a?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+a;break;case String:let e=a.toString();if(/^(?:\d+(y|m|d|h|min|s))$/i.test(e)){var u=e.replace(/^(\d+)(?:y|m|d|h|min|s)$/i,"$1");switch(e.replace(/^(?:\d+)(y|m|d|h|min|s)$/i,"$1").toLowerCase()){case"m":m="; max-age="+2592e3*+u;break;case"d":m="; max-age="+86400*+u;break;case"h":m="; max-age="+3600*+u;break;case"min":m="; max-age="+60*+u;break;case"s":m="; max-age="+u;break;case"y":m="; max-age="+31104e3*+u}}else m="; expires="+a;break;case Date:m="; expires="+a.toUTCString()}return document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+m+(r?"; domain="+r:o.domain)+(n?"; path="+n:o.path)+(void 0===s?o.secure:s?"; Secure":"")+(void 0===c?o.sameSite:c?"; SameSite="+c:""),this},removeCookie:function(e,t){const{path:i,domain:a}=t||{};return!(!e||!this.isCookieAvailable(e))&&(document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(a?"; domain="+a:o.domain)+(i?"; path="+i:o.path)+"; SameSite=Lax",this)},isCookieAvailable:function(e){return new RegExp("(?:^|;\\s*)"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(document.cookie)},keys:function(){if(!document.cookie)return[];for(var e=document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g,"").split(/\s*(?:\=[^;]*)?;\s*/),t=0;t<e.length;t++)e[t]=decodeURIComponent(e[t]);return e}},e.useCookie=function(){return t.inject("cookie")},e}({},Vue);