2
0
mirror of https://github.com/tenrok/axios.git synced 2026-05-15 11:59:42 +03:00

fix(headers): added support for setting header names that overlap with class methods; (#5831)

This commit is contained in:
Dmitriy Mozgovoy
2023-08-25 21:07:51 +03:00
committed by GitHub
parent 3f53eb6960
commit d8b4ca0ea5
4 changed files with 26 additions and 3 deletions
+1
View File
@@ -10,5 +10,6 @@ module.exports = {
"sourceType": "module"
},
"rules": {
"no-cond-assign": 0
}
}
+11 -1
View File
@@ -282,7 +282,17 @@ class AxiosHeaders {
AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);
utils.freezeMethods(AxiosHeaders.prototype);
// reserved names hotfix
utils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {
let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`
return {
get: () => value,
set(headerValue) {
this[mapped] = headerValue;
}
}
});
utils.freezeMethods(AxiosHeaders);
export default AxiosHeaders;
+3 -2
View File
@@ -540,8 +540,9 @@ const reduceDescriptors = (obj, reducer) => {
const reducedDescriptors = {};
forEach(descriptors, (descriptor, name) => {
if (reducer(descriptor, name, obj) !== false) {
reducedDescriptors[name] = descriptor;
let ret;
if ((ret = reducer(descriptor, name, obj)) !== false) {
reducedDescriptors[name] = ret || descriptor;
}
});
+11
View File
@@ -76,6 +76,17 @@ describe('AxiosHeaders', function () {
})
});
it('should support uppercase name mapping for names overlapped by class methods', () => {
const headers = new AxiosHeaders({
set: 'foo'
});
headers.set('get', 'bar');
assert.strictEqual(headers.get('Set'), 'foo');
assert.strictEqual(headers.get('Get'), 'bar');
});
describe('get', function () {
describe('filter', function() {
it('should support RegExp', function () {