|
| 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