import { getDomain } from './getDomain' let generalDomain: string export function setCustomCookie(name: string, value: string, days = 5) { let expires = '' if (days) { const date = new Date() date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000) expires = '; expires=' + date.toUTCString() } if (typeof window === 'undefined') { return } const { hostname } = window.location if (generalDomain && generalDomain.endsWith(getDomain(hostname))) { document.cookie = name + '=' + (value || '') + expires + `; path=/;domain=${generalDomain}` return } let previousDomain = undefined let domain = undefined do { previousDomain = domain domain = getDomain(hostname, undefined, previousDomain) document.cookie = name + '=' + (value || '') + expires + `; path=/;domain=${domain}` } while (getCookieByName(name) === '' && hostname !== domain) generalDomain = domain } export function getCookieByName(cname: string) { if (typeof window === 'undefined') return '' const name = cname + '=' const ca = document.cookie.split(';') for (let i = 0; i < ca.length; i++) { let c = ca[i] while (c.charAt(0) === ' ') { c = c.substring(1) } if (c.indexOf(name) === 0) { return c.substring(name.length, c.length) } } return '' } export function deleteCookieByName(name: string) { if (getCookieByName(name) === '') { return } if (typeof window === 'undefined') { return } const { hostname } = window.location if (generalDomain && generalDomain.endsWith(getDomain(hostname))) { document.cookie = name + `=; Path=/;domain=${generalDomain}; Expires=Thu, 01 Jan 1970 00:00:01 GMT;` return } let previousDomain = undefined let domain = undefined do { previousDomain = domain domain = getDomain(hostname, undefined, previousDomain) document.cookie = name + `=; Path=/;domain=${domain}; Expires=Thu, 01 Jan 1970 00:00:01 GMT;` } while (getCookieByName(name) !== '' && hostname !== domain) generalDomain = domain }