@@ -63,12 +63,21 @@ export class AstroSession<TDriver extends SessionDriverName = any> {
63
63
} : Exclude < ResolvedSessionConfig < TDriver > , undefined > ,
64
64
) {
65
65
this . #cookies = cookies ;
66
+ let cookieConfigObject : AstroCookieSetOptions | undefined ;
66
67
if ( typeof cookieConfig === 'object' ) {
67
- this . #cookieConfig = cookieConfig ;
68
- this . #cookieName = cookieConfig . name || DEFAULT_COOKIE_NAME ;
68
+ const { name = DEFAULT_COOKIE_NAME , ...rest } = cookieConfig ;
69
+ this . #cookieName = name ;
70
+ cookieConfigObject = rest ;
69
71
} else {
70
72
this . #cookieName = cookieConfig || DEFAULT_COOKIE_NAME ;
71
73
}
74
+ this . #cookieConfig = {
75
+ sameSite : 'lax' ,
76
+ secure : true ,
77
+ path : '/' ,
78
+ ...cookieConfigObject ,
79
+ httpOnly : true ,
80
+ } ;
72
81
this . #config = config ;
73
82
}
74
83
@@ -258,15 +267,9 @@ export class AstroSession<TDriver extends SessionDriverName = any> {
258
267
message : 'Invalid cookie name. Cookie names can only contain letters, numbers, and dashes.' ,
259
268
} ) ;
260
269
}
261
- const cookieOptions : AstroCookieSetOptions = {
262
- sameSite : 'lax' ,
263
- secure : true ,
264
- path : '/' ,
265
- ...this . #cookieConfig,
266
- httpOnly : true ,
267
- } ;
270
+
268
271
const value = this . #ensureSessionID( ) ;
269
- this . #cookies. set ( this . #cookieName, value , cookieOptions ) ;
272
+ this . #cookies. set ( this . #cookieName, value , this . #cookieConfig ) ;
270
273
}
271
274
272
275
/**
@@ -345,7 +348,7 @@ export class AstroSession<TDriver extends SessionDriverName = any> {
345
348
this . #toDestroy. add ( this . #sessionID) ;
346
349
}
347
350
if ( this . #cookieName) {
348
- this . #cookies. delete ( this . #cookieName) ;
351
+ this . #cookies. delete ( this . #cookieName, this . #cookieConfig ) ;
349
352
}
350
353
this . #sessionID = undefined ;
351
354
this . #data = undefined ;
0 commit comments