UNPKG

formstone

Version:

Library of modular front end components.

73 lines (54 loc) 1.68 kB
import { type, extend, } from './utils.js'; // Class class Cookie { static #_defaults = { domain: null, expires: 604800000, // 7 days path: null, samesite: 'Lax', secure: null }; static defaults(options) { this.#_defaults = extend(true, this.#_defaults, options); } // static set(key, value, options) { let expiration = false; let date = new Date(); options = extend(true, this.#_defaults, options || {}); // Check Expiration Date if (type(options.expires) === 'number') { date.setTime(date.getTime() + options.expires); expiration = date.toGMTString(); } let domain = (options.domain) ? '; domain=' + options.domain : ''; let expires = (expiration) ? '; expires=' + expiration : ''; let maxAge = (expiration) ? '; max-age=' + (options.expires / 1000) : ''; // to seconds let path = (options.path) ? '; path=' + options.path : ''; let samesite = (options.samesite) ? '; samesite=' + options.samesite : ''; let secure = (options.secure) ? '; secure' : ''; // Set Cookie document.cookie = `${key}=${value}${expires}${maxAge}${domain}${path}${samesite}${secure}`; } static get(key) { let keyString = `${key}=`; let cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { let cookie = cookies[i].trim(); if (cookie.indexOf(keyString) === 0) { return cookie.substring(keyString.length, cookie.length); } } return null; } static delete(key, options) { this.set(key, '', extend({}, options, { expires: -604800000 // -7 days })); } }; // Export export default Cookie;