@@ -104,55 +104,6 @@ export default class Headers extends URLSearchParams {
104
104
[ ] ;
105
105
106
106
super ( result ) ;
107
-
108
- // Returning a Proxy that will lowercase key names, validate parameters and sort keys
109
- // eslint-disable-next-line no-constructor-return
110
- return new Proxy ( this , {
111
- get ( target , p , receiver ) {
112
- switch ( p ) {
113
- case 'append' :
114
- case 'set' :
115
- /**
116
- * @param {string } name
117
- * @param {string } value
118
- */
119
- return ( name , value ) => {
120
- validateHeaderName ( name ) ;
121
- validateHeaderValue ( name , String ( value ) ) ;
122
- return URLSearchParams . prototype [ p ] . call (
123
- target ,
124
- String ( name ) . toLowerCase ( ) ,
125
- String ( value )
126
- ) ;
127
- } ;
128
-
129
- case 'delete' :
130
- case 'has' :
131
- case 'getAll' :
132
- /**
133
- * @param {string } name
134
- */
135
- return name => {
136
- validateHeaderName ( name ) ;
137
- // @ts -ignore
138
- return URLSearchParams . prototype [ p ] . call (
139
- target ,
140
- String ( name ) . toLowerCase ( )
141
- ) ;
142
- } ;
143
-
144
- case 'keys' :
145
- return ( ) => {
146
- target . sort ( ) ;
147
- return new Set ( URLSearchParams . prototype . keys . call ( target ) ) . keys ( ) ;
148
- } ;
149
-
150
- default :
151
- return Reflect . get ( target , p , receiver ) ;
152
- }
153
- }
154
- /* c8 ignore next */
155
- } ) ;
156
107
}
157
108
158
109
get [ Symbol . toStringTag ] ( ) {
@@ -181,6 +132,56 @@ export default class Headers extends URLSearchParams {
181
132
return value ;
182
133
}
183
134
135
+ /**
136
+ * @param {string } name
137
+ */
138
+ getAll ( name ) {
139
+ validateHeaderName ( name ) ;
140
+ return super . getAll ( String ( name ) . toLowerCase ( ) ) ;
141
+ }
142
+
143
+ /**
144
+ * @param {string } name
145
+ * @param {string } value
146
+ */
147
+ append ( name , value ) {
148
+ validateHeaderName ( name ) ;
149
+ validateHeaderValue ( name , String ( value ) ) ;
150
+ return super . append (
151
+ String ( name ) . toLowerCase ( ) ,
152
+ String ( value )
153
+ ) ;
154
+ }
155
+
156
+ /**
157
+ * @param {string } name
158
+ */
159
+ delete ( name ) {
160
+ validateHeaderName ( name ) ;
161
+ return super . delete ( String ( name ) . toLowerCase ( ) ) ;
162
+ }
163
+
164
+ /**
165
+ * @param {string } name
166
+ */
167
+ has ( name ) {
168
+ validateHeaderName ( name ) ;
169
+ return super . has ( String ( name ) . toLowerCase ( ) ) ;
170
+ }
171
+
172
+ /**
173
+ * @param {string } name
174
+ * @param {string } value
175
+ */
176
+ set ( name , value ) {
177
+ validateHeaderName ( name ) ;
178
+ validateHeaderValue ( name , String ( value ) ) ;
179
+ return super . set (
180
+ String ( name ) . toLowerCase ( ) ,
181
+ String ( value )
182
+ ) ;
183
+ }
184
+
184
185
/**
185
186
* @param {(value: string, key: string, parent: this) => void } callback
186
187
* @param {any } thisArg
@@ -199,6 +200,11 @@ export default class Headers extends URLSearchParams {
199
200
}
200
201
}
201
202
203
+ keys ( ) {
204
+ this . sort ( ) ;
205
+ return new Set ( super . keys ( ) ) . keys ( ) ;
206
+ }
207
+
202
208
/**
203
209
* @returns {IterableIterator<string> }
204
210
*/
@@ -272,7 +278,18 @@ export default class Headers extends URLSearchParams {
272
278
*/
273
279
Object . defineProperties (
274
280
Headers . prototype ,
275
- [ 'get' , 'entries' , 'forEach' , 'values' ] . reduce ( ( result , property ) => {
281
+ [
282
+ 'append' ,
283
+ 'delete' ,
284
+ 'entries' ,
285
+ 'forEach' ,
286
+ 'get' ,
287
+ 'getAll' ,
288
+ 'has' ,
289
+ 'keys' ,
290
+ 'set' ,
291
+ 'values'
292
+ ] . reduce ( ( result , property ) => {
276
293
result [ property ] = { enumerable : true } ;
277
294
return result ;
278
295
} , /** @type {Record<string, {enumerable:true}> } */ ( { } ) )
0 commit comments