@@ -11,7 +11,7 @@ export type HeadersObject =
11
11
| IncomingHttpHeaders
12
12
| OutgoingHttpHeaders
13
13
| Headers
14
- | { [ key : string ] : unknown }
14
+ | { [ key : string ] : string | string [ ] }
15
15
export type ResponseOrHeadersObject = ResponseObject | HeadersObject
16
16
17
17
export function parseRateLimit (
@@ -70,23 +70,42 @@ function parseHeadersObject(
70
70
let reset : Date | undefined
71
71
const resetRaw = getHeader ( input , `${ prefix } reset` )
72
72
const resetType = options ?. reset
73
- if ( resetType == 'date' ) reset = parseResetDate ( resetRaw ?? '' )
74
- else if ( resetType == 'unix' ) reset = parseResetUnix ( resetRaw ?? '' )
75
- else if ( resetType == 'seconds' ) reset = parseResetSeconds ( resetRaw ?? '' )
76
- else if ( resetType == 'milliseconds' )
77
- reset = parseResetMilliseconds ( resetRaw ?? '' )
78
- else if ( resetRaw ) reset = parseResetAuto ( resetRaw )
79
- else {
80
- // Fallback to retry-after
81
- const retryAfter = getHeader ( input , 'retry-after' )
82
- if ( retryAfter ) {
83
- reset = parseResetUnix ( retryAfter )
73
+ switch ( resetType ) {
74
+ case 'date' : {
75
+ reset = parseResetDate ( resetRaw ?? '' )
76
+ break
77
+ }
78
+
79
+ case 'unix' : {
80
+ reset = parseResetUnix ( resetRaw ?? '' )
81
+ break
82
+ }
83
+
84
+ case 'seconds' : {
85
+ reset = parseResetSeconds ( resetRaw ?? '' )
86
+ break
87
+ }
88
+
89
+ case 'milliseconds' : {
90
+ reset = parseResetMilliseconds ( resetRaw ?? '' )
91
+ break
92
+ }
93
+
94
+ default : {
95
+ if ( resetRaw ) reset = parseResetAuto ( resetRaw )
96
+ else {
97
+ // Fallback to retry-after
98
+ const retryAfter = getHeader ( input , 'retry-after' )
99
+ if ( retryAfter ) {
100
+ reset = parseResetUnix ( retryAfter )
101
+ }
102
+ }
84
103
}
85
104
}
86
105
87
106
return {
88
- limit : isNaN ( limit ) ? used + remaining : limit , // Reddit omits
89
- used : isNaN ( used ) ? limit - remaining : used , // Most omit
107
+ limit : Number . isNaN ( limit ) ? used + remaining : limit , // Reddit omits
108
+ used : Number . isNaN ( used ) ? limit - remaining : used , // Most omit
90
109
remaining,
91
110
reset,
92
111
}
@@ -125,7 +144,7 @@ function getHeader(headers: HeadersObject, name: string): string | undefined {
125
144
}
126
145
127
146
if ( name in headers && typeof ( headers as any ) [ name ] === 'string' ) {
128
- return ( headers as any ) [ name ]
147
+ return ( headers as any ) [ name ] as string
129
148
}
130
149
131
150
return undefined
0 commit comments