|
| 1 | +import cookie from 'cookie'; |
| 2 | + |
1 | 3 | const setCookie = (cookieName: string, cookieValue: string, expireDays: number): void => { |
2 | 4 | if (typeof document === 'undefined') { |
3 | 5 | return; |
4 | 6 | } |
| 7 | + |
5 | 8 | const date = new Date(); |
6 | 9 | date.setTime(date.getTime() + expireDays * 24 * 60 * 60 * 1000); |
7 | | - const expires = 'expires=' + date.toUTCString(); |
8 | | - document.cookie = `${cookieName}=${cookieValue};${expires};path=/`; |
| 10 | + |
| 11 | + document.cookie = cookie.serialize(cookieName, cookieValue, { |
| 12 | + expires: date, |
| 13 | + path: '/' |
| 14 | + }); |
9 | 15 | }; |
10 | 16 |
|
11 | 17 | const getCookie = (cookieName: string): string | undefined => { |
12 | 18 | if (typeof document === 'undefined') { |
13 | 19 | return; |
14 | 20 | } |
15 | | - const name = `${cookieName}=`; |
16 | | - const decodedCookie = decodeURIComponent(document.cookie); |
17 | | - const cookieArray = decodedCookie.split(';'); |
18 | | - for (let i = 0; i < cookieArray.length; i++) { |
19 | | - let cookie = cookieArray[i]; |
20 | | - while (cookie.charAt(0) === ' ') { |
21 | | - cookie = cookie.substring(1); |
22 | | - } |
23 | | - if (cookie.indexOf(name) === 0) { |
24 | | - return cookie.substring(name.length, cookie.length); |
25 | | - } |
| 21 | + |
| 22 | + try { |
| 23 | + const cookies = cookie.parse(document.cookie); |
| 24 | + return cookies[cookieName]; |
| 25 | + } catch (error) { |
| 26 | + console.debug('Error parsing cookies:', error); |
| 27 | + return undefined; |
26 | 28 | } |
27 | | - return undefined; |
28 | 29 | }; |
29 | 30 |
|
30 | 31 | const deleteCookie = (name: string): void => { |
31 | 32 | if (typeof document === 'undefined') { |
32 | 33 | return; |
33 | 34 | } |
34 | | - document.cookie = `${name}=; Path=/; Expires=Thu, 01 Jan 2000 00:00:01 GMT;`; |
| 35 | + |
| 36 | + document.cookie = cookie.serialize(name, '', { |
| 37 | + expires: new Date(0), |
| 38 | + path: '/' |
| 39 | + }); |
35 | 40 | }; |
36 | 41 |
|
37 | 42 | export { setCookie, getCookie, deleteCookie }; |
0 commit comments