@@ -16,6 +16,11 @@ interface WorkersKVSessionStorageOptions {
16
16
* The KVNamespace used to store the sessions.
17
17
*/
18
18
kv : KVNamespace ;
19
+
20
+ /**
21
+ * Optional prefix for the session keys in the KV store.
22
+ */
23
+ prefix ?: string ;
19
24
}
20
25
21
26
/**
@@ -30,6 +35,7 @@ export function createWorkersKVSessionStorage<
30
35
> ( {
31
36
cookie,
32
37
kv,
38
+ prefix,
33
39
} : WorkersKVSessionStorageOptions ) : SessionStorage < Data , FlashData > {
34
40
return createSessionStorage ( {
35
41
cookie,
@@ -44,11 +50,11 @@ export function createWorkersKVSessionStorage<
44
50
. map ( ( x ) => x . toString ( 16 ) . padStart ( 2 , "0" ) )
45
51
. join ( "" ) ;
46
52
47
- if ( await kv . get ( id , "json" ) ) {
53
+ if ( await kv . get ( ` ${ prefix } ${ id } ` , "json" ) ) {
48
54
continue ;
49
55
}
50
56
51
- await kv . put ( id , JSON . stringify ( data ) , {
57
+ await kv . put ( ` ${ prefix } ${ id } ` , JSON . stringify ( data ) , {
52
58
expiration : expires
53
59
? Math . round ( expires . getTime ( ) / 1000 )
54
60
: undefined ,
@@ -58,7 +64,7 @@ export function createWorkersKVSessionStorage<
58
64
}
59
65
} ,
60
66
async readData ( id ) {
61
- let session = await kv . get ( id ) ;
67
+ let session = await kv . get ( ` ${ prefix } ${ id } ` ) ;
62
68
63
69
if ( ! session ) {
64
70
return null ;
@@ -67,12 +73,12 @@ export function createWorkersKVSessionStorage<
67
73
return JSON . parse ( session ) ;
68
74
} ,
69
75
async updateData ( id , data , expires ) {
70
- await kv . put ( id , JSON . stringify ( data ) , {
76
+ await kv . put ( ` ${ prefix } ${ id } ` , JSON . stringify ( data ) , {
71
77
expiration : expires ? Math . round ( expires . getTime ( ) / 1000 ) : undefined ,
72
78
} ) ;
73
79
} ,
74
80
async deleteData ( id ) {
75
- await kv . delete ( id ) ;
81
+ await kv . delete ( ` ${ prefix } ${ id } ` ) ;
76
82
} ,
77
83
} ) ;
78
84
}
0 commit comments