init commit
This commit is contained in:
71
shared/components/src/utils/cookie.ts
Normal file
71
shared/components/src/utils/cookie.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
export function getCookie(name: string): string | null {
|
||||
if (typeof document === 'undefined') {
|
||||
return null;
|
||||
}
|
||||
|
||||
const prefix = `${name}=`;
|
||||
const cookie = document.cookie
|
||||
.split(';')
|
||||
.map((value) => value.trimStart())
|
||||
.filter((value) => value.startsWith(prefix))[0];
|
||||
|
||||
if (!cookie) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return cookie.substr(prefix.length);
|
||||
}
|
||||
|
||||
export function setCookie(
|
||||
name: string,
|
||||
value: string,
|
||||
domain: string,
|
||||
expires = 0,
|
||||
path = '/',
|
||||
): void {
|
||||
if (typeof document === 'undefined') {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// Get any potential existing instances of this particular cookie
|
||||
const existingCookie = getCookie(name);
|
||||
let cookieValue = value;
|
||||
|
||||
if (existingCookie) {
|
||||
// If exisitng cookie name does not include the value we are trying to set,
|
||||
// then add it, otherwise use the existing cookie value
|
||||
cookieValue = !existingCookie.includes(value)
|
||||
? `${existingCookie}+${value}`
|
||||
: existingCookie;
|
||||
}
|
||||
|
||||
let cookieString = `${name}=${cookieValue}; path=${path}; domain=${domain};`;
|
||||
|
||||
if (expires) {
|
||||
const date = new Date();
|
||||
date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);
|
||||
|
||||
cookieString += ` expires=${date.toUTCString()};`;
|
||||
}
|
||||
|
||||
document.cookie = cookieString;
|
||||
|
||||
// Returning undefined because of ESLint's "consistent-return" rule
|
||||
return undefined;
|
||||
}
|
||||
|
||||
export function clearCookie(name: string, domain: string, path = '/'): void {
|
||||
if (typeof document === 'undefined') {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// Get any potential existing instances of this particular cookie
|
||||
const existingCookie = getCookie(name);
|
||||
|
||||
if (existingCookie) {
|
||||
// Set the cookie's expiration date to a past date
|
||||
setCookie(name, '', domain, -1, path);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
Reference in New Issue
Block a user