Skip to content

Commit 4ea572d

Browse files
authored
Merge pull request #84 from AddSearch/sc-11776/js-client-error-handling-when-cookies-contain-uri-incompatible-characters
Sc 11776/js client error handling when cookies contain uri incompatible characters
2 parents 27c7993 + ca6e316 commit 4ea572d

File tree

3 files changed

+33
-18
lines changed

3 files changed

+33
-18
lines changed

package-lock.json

+11-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "addsearch-js-client",
3-
"version": "1.0.3",
3+
"version": "1.0.4",
44
"description": "AddSearch API JavaScript client",
55
"repository": {
66
"type": "git",
@@ -48,6 +48,7 @@
4848
"dependencies": {
4949
"axios": "^1.7.2",
5050
"buffer": "^6.0.3",
51+
"cookie": "^1.0.2",
5152
"es6-promise": "^4.2.8",
5253
"js-base64": "^3.6.0",
5354
"uuid": "^11.0.3"

src/cookie.ts

+20-15
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,42 @@
1+
import cookie from 'cookie';
2+
13
const setCookie = (cookieName: string, cookieValue: string, expireDays: number): void => {
24
if (typeof document === 'undefined') {
35
return;
46
}
7+
58
const date = new Date();
69
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+
});
915
};
1016

1117
const getCookie = (cookieName: string): string | undefined => {
1218
if (typeof document === 'undefined') {
1319
return;
1420
}
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;
2628
}
27-
return undefined;
2829
};
2930

3031
const deleteCookie = (name: string): void => {
3132
if (typeof document === 'undefined') {
3233
return;
3334
}
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+
});
3540
};
3641

3742
export { setCookie, getCookie, deleteCookie };

0 commit comments

Comments
 (0)