@@ -52,6 +52,10 @@ export class S3Cache<V extends Uint8Array = Uint8Array> extends BaseCache<V> {
52
52
} ) ,
53
53
) ;
54
54
55
+ if ( ! head . Metadata ) {
56
+ return undefined ;
57
+ }
58
+
55
59
const expiresAtStr = head . Metadata ?. [ 'expires-at' ] ;
56
60
if ( expiresAtStr && Date . now ( ) > Number . parseInt ( expiresAtStr ) ) {
57
61
await this . delete ( key ) ;
@@ -71,11 +75,17 @@ export class S3Cache<V extends Uint8Array = Uint8Array> extends BaseCache<V> {
71
75
return res . Body . transformToByteArray ( ) as Promise < V > ;
72
76
}
73
77
74
- public async set ( key : string , value : V , ttl ?: number , jitter ?: JitterMode | JitterFn ) : Promise < void > {
78
+ public async set (
79
+ key : string ,
80
+ value : V ,
81
+ ttl ?: number | undefined ,
82
+ jitter ?: JitterMode | JitterFn | undefined ,
83
+ ) : Promise < void > {
75
84
const s3Key = this . buildKey ( key ) ;
76
85
77
86
try {
78
87
let expiresAt : number | undefined ;
88
+ ttl = ttl ?? this . #options. defaultTTL ;
79
89
if ( ttl !== undefined ) {
80
90
const jitterFn = createJitter ( jitter ?? this . #options. defaultJitter ?? JitterMode . None ) ;
81
91
expiresAt = Date . now ( ) + Math . round ( jitterFn ( ttl ) ) ;
@@ -140,7 +150,8 @@ export class S3Cache<V extends Uint8Array = Uint8Array> extends BaseCache<V> {
140
150
}
141
151
142
152
public async clearPattern ( pattern : string ) : Promise < void > {
143
- const rx = new RegExp ( '^' + pattern . replace ( / \* / g, '.*' ) + '$' ) ;
153
+ const escapedPattern = pattern . replace ( / [ . * + ? ^ $ { } ( ) | [ \] \\ ] / g, '\\$&' ) ;
154
+ const rx = new RegExp ( '^' + escapedPattern . replace ( / \* / g, '.*' ) + '$' ) ;
144
155
const toDel : string [ ] = [ ] ;
145
156
for await ( const k of this . keys ( ) ) {
146
157
if ( rx . test ( k ) ) {
0 commit comments