Skip to content

Commit f1293f1

Browse files
authored
fix: only update session cookie when changed (#416)
1 parent 67d2882 commit f1293f1

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@blinkk/root': patch
3+
---
4+
5+
fix: only update session cookie when changed

packages/root/src/middleware/session.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ export function sessionMiddleware(options?: SessionMiddlewareOptions) {
2626
req.session = session;
2727
res.session = session;
2828
res.saveSession = (saveSessionOptions?: SaveSessionOptions) => {
29+
if (!session.hasChanges) {
30+
return;
31+
}
2932
// "secure" cookies require https, so disable "secure" when in development.
3033
const secureCookie = Boolean(process.env.NODE_ENV !== 'development');
3134
const cookieValue = session.toString();
@@ -54,6 +57,7 @@ export function sessionMiddleware(options?: SessionMiddlewareOptions) {
5457

5558
export class Session {
5659
private data: Record<string, string> = {};
60+
hasChanges = false;
5761

5862
constructor(data?: Record<string, string>) {
5963
this.data = data || {};
@@ -82,10 +86,12 @@ export class Session {
8286

8387
setItem(key: string, value: string) {
8488
this.data[key] = value;
89+
this.hasChanges = true;
8590
}
8691

8792
removeItem(key: string) {
8893
delete this.data[key];
94+
this.hasChanges = true;
8995
}
9096

9197
toString(): string {

0 commit comments

Comments
 (0)