@@ -30,16 +30,7 @@ export function parseUrl(request: Request): URL | undefined {
3030}
3131
3232export function parseConditionalHeaders ( headers : Headers ) : ConditionalHeaders {
33- let ifModifiedSince = headers . has ( 'if-modified-since' )
34- ? new Date ( headers . get ( 'if-modified-since' ) ! )
35- : undefined ;
36-
37- if ( ifModifiedSince instanceof Date ) {
38- ifModifiedSince . setSeconds ( ifModifiedSince . getSeconds ( ) + 1 ) ;
39- } else {
40- // Invalid date
41- ifModifiedSince = undefined ;
42- }
33+ const ifModifiedSince = getDateFromHeader ( headers . get ( 'if-modified-since' ) )
4334
4435 const ifMatch = headers . has ( 'if-match' )
4536 ? headers . get ( 'if-match' ) ! . replaceAll ( '"' , '' )
@@ -49,14 +40,7 @@ export function parseConditionalHeaders(headers: Headers): ConditionalHeaders {
4940 ? headers . get ( 'if-none-match' ) ! . replaceAll ( '"' , '' )
5041 : undefined ;
5142
52- let ifUnmodifiedSince = headers . has ( 'if-unmodified-since' )
53- ? new Date ( headers . get ( 'if-unmodified-since' ) ! )
54- : undefined ;
55-
56- if ( ! ( ifUnmodifiedSince instanceof Date ) ) {
57- // Invalid date
58- ifUnmodifiedSince = undefined ;
59- }
43+ const ifUnmodifiedSince = getDateFromHeader ( headers . get ( 'if-unmodified-since' ) )
6044
6145 const range = headers . has ( 'range' )
6246 ? parseRangeHeader ( headers . get ( 'range' ) ! )
@@ -71,6 +55,17 @@ export function parseConditionalHeaders(headers: Headers): ConditionalHeaders {
7155 } ;
7256}
7357
58+ function getDateFromHeader ( dateString : string | null ) : Date | undefined {
59+ if ( dateString === null ) {
60+ return undefined ;
61+ }
62+
63+ const date = new Date ( dateString ) ;
64+
65+ // @ts -expect-error date to number conversion
66+ return date instanceof Date && ! isNaN ( date ) ? date : undefined ;
67+ }
68+
7469/**
7570 * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range
7671 * @returns undefined if header is invalid
0 commit comments