Skip to content

Commit 575460b

Browse files
tsctxcrysmags
authored andcommitted
fix: clear cache (nodejs#2519)
1 parent 5b61b9a commit 575460b

File tree

5 files changed

+80
-132
lines changed

5 files changed

+80
-132
lines changed

lib/fetch/headers.js

Lines changed: 21 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ function appendHeader (headers, name, value) {
114114
// forbidden response-header name, return.
115115

116116
// 7. Append (name, value) to headers’s header list.
117-
return headers[kHeadersList].append(name, value)
117+
return headers[kHeadersList].append(name, value, false)
118118

119119
// 8. If headers’s guard is "request-no-cors", then remove
120120
// privileged no-CORS request headers from headers
@@ -138,20 +138,14 @@ class HeadersList {
138138
/**
139139
* @see https://fetch.spec.whatwg.org/#header-list-contains
140140
* @param {string} name
141+
* @param {boolean} isLowerCase
141142
*/
142-
contains (name) {
143+
contains (name, isLowerCase) {
143144
// A header list list contains a header name name if list
144145
// contains a header whose name is a byte-case-insensitive
145146
// match for name.
146147

147-
return this[kHeadersMap].has(name.toLowerCase())
148-
}
149-
150-
/**
151-
* @param {string} name
152-
*/
153-
lowerCaseContains (name) {
154-
return this[kHeadersMap].has(name)
148+
return this[kHeadersMap].has(isLowerCase ? name : name.toLowerCase())
155149
}
156150

157151
clear () {
@@ -164,13 +158,14 @@ class HeadersList {
164158
* @see https://fetch.spec.whatwg.org/#concept-header-list-append
165159
* @param {string} name
166160
* @param {string} value
161+
* @param {boolean} isLowerCase
167162
*/
168-
append (name, value) {
163+
append (name, value, isLowerCase) {
169164
this[kHeadersSortedMap] = null
170165

171166
// 1. If list contains name, then set name to the first such
172167
// header’s name.
173-
const lowercaseName = name.toLowerCase()
168+
const lowercaseName = isLowerCase ? name : name.toLowerCase()
174169
const exists = this[kHeadersMap].get(lowercaseName)
175170

176171
// 2. Append (name, value) to list.
@@ -189,41 +184,15 @@ class HeadersList {
189184
}
190185
}
191186

192-
/**
193-
* @param {string} name
194-
* @param {string} value
195-
*/
196-
lowerCaseAppend (name, value) {
197-
this[kHeadersSortedMap] = null
198-
199-
// 1. If list contains name, then set name to the first such
200-
// header’s name.
201-
const exists = this[kHeadersMap].get(name)
202-
203-
// 2. Append (name, value) to list.
204-
if (exists) {
205-
const delimiter = name === 'cookie' ? '; ' : ', '
206-
this[kHeadersMap].set(name, {
207-
name: exists.name,
208-
value: `${exists.value}${delimiter}${value}`
209-
})
210-
} else {
211-
this[kHeadersMap].set(name, { name, value })
212-
}
213-
214-
if (name === 'set-cookie') {
215-
(this.cookies ??= []).push(value)
216-
}
217-
}
218-
219187
/**
220188
* @see https://fetch.spec.whatwg.org/#concept-header-list-set
221189
* @param {string} name
222190
* @param {string} value
191+
* @param {boolean} isLowerCase
223192
*/
224-
set (name, value) {
193+
set (name, value, isLowerCase) {
225194
this[kHeadersSortedMap] = null
226-
const lowercaseName = name.toLowerCase()
195+
const lowercaseName = isLowerCase ? name : name.toLowerCase()
227196

228197
if (lowercaseName === 'set-cookie') {
229198
this.cookies = [value]
@@ -236,35 +205,14 @@ class HeadersList {
236205
this[kHeadersMap].set(lowercaseName, { name, value })
237206
}
238207

239-
/**
240-
* @param {string} name
241-
* @param {string} value
242-
*/
243-
lowerCaseSet (name, value) {
244-
if (name === 'set-cookie') {
245-
this.cookies = [value]
246-
}
247-
248-
// 1. If list contains name, then set the value of
249-
// the first such header to value and remove the
250-
// others.
251-
// 2. Otherwise, append header (name, value) to list.
252-
this[kHeadersMap].set(name, { name, value })
253-
}
254-
255208
/**
256209
* @see https://fetch.spec.whatwg.org/#concept-header-list-delete
257210
* @param {string} name
211+
* @param {boolean} isLowerCase
258212
*/
259-
delete (name) {
260-
return this.lowerCaseDelete(name.toLowerCase())
261-
}
262-
263-
/**
264-
* @param {string} name
265-
*/
266-
lowerCaseDelete (name) {
213+
delete (name, isLowerCase) {
267214
this[kHeadersSortedMap] = null
215+
if (!isLowerCase) name = name.toLowerCase()
268216

269217
if (name === 'set-cookie') {
270218
this.cookies = null
@@ -276,24 +224,15 @@ class HeadersList {
276224
/**
277225
* @see https://fetch.spec.whatwg.org/#concept-header-list-get
278226
* @param {string} name
227+
* @param {boolean} isLowerCase
279228
* @returns {string | null}
280229
*/
281-
get (name) {
282-
const value = this[kHeadersMap].get(name.toLowerCase())
283-
230+
get (name, isLowerCase) {
284231
// 1. If list does not contain name, then return null.
285232
// 2. Return the values of all headers in list whose name
286233
// is a byte-case-insensitive match for name,
287234
// separated from each other by 0x2C 0x20, in order.
288-
return value === undefined ? null : value.value
289-
}
290-
291-
/**
292-
* @param {string} name
293-
* @returns {string | null}
294-
*/
295-
lowerCaseGet (name) {
296-
return this[kHeadersMap].get(name)?.value ?? null
235+
return this[kHeadersMap].get(isLowerCase ? name : name.toLowerCase())?.value ?? null
297236
}
298237

299238
* [Symbol.iterator] () {
@@ -383,14 +322,14 @@ class Headers {
383322

384323
// 6. If this’s header list does not contain name, then
385324
// return.
386-
if (!this[kHeadersList].contains(name)) {
325+
if (!this[kHeadersList].contains(name, false)) {
387326
return
388327
}
389328

390329
// 7. Delete name from this’s header list.
391330
// 8. If this’s guard is "request-no-cors", then remove
392331
// privileged no-CORS request headers from this.
393-
this[kHeadersList].delete(name)
332+
this[kHeadersList].delete(name, false)
394333
}
395334

396335
// https://fetch.spec.whatwg.org/#dom-headers-get
@@ -412,7 +351,7 @@ class Headers {
412351

413352
// 2. Return the result of getting name from this’s header
414353
// list.
415-
return this[kHeadersList].get(name)
354+
return this[kHeadersList].get(name, false)
416355
}
417356

418357
// https://fetch.spec.whatwg.org/#dom-headers-has
@@ -434,7 +373,7 @@ class Headers {
434373

435374
// 2. Return true if this’s header list contains name;
436375
// otherwise false.
437-
return this[kHeadersList].contains(name)
376+
return this[kHeadersList].contains(name, false)
438377
}
439378

440379
// https://fetch.spec.whatwg.org/#dom-headers-set
@@ -483,7 +422,7 @@ class Headers {
483422
// 7. Set (name, value) in this’s header list.
484423
// 8. If this’s guard is "request-no-cors", then remove
485424
// privileged no-CORS request headers from this
486-
this[kHeadersList].set(name, value)
425+
this[kHeadersList].set(name, value, false)
487426
}
488427

489428
// https://fetch.spec.whatwg.org/#dom-headers-getsetcookie

0 commit comments

Comments
 (0)