Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(types): fixed AxiosHeaders to handle spread syntax by making all methods non-enumerable; #5499

Merged
merged 16 commits into from
Jan 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
3f2f496
chore(ci): Add release-it script;
DigitalBrainJS Dec 10, 2022
1bfc41b
Merge branch 'chore/release-it' into v1.x
DigitalBrainJS Dec 10, 2022
acaf0f4
Merge branch 'v1.x' of https://github.com/axios/axios into v1.x
DigitalBrainJS Dec 15, 2022
8a5de86
Merge branch 'v1.x' of https://github.com/axios/axios into v1.x
DigitalBrainJS Dec 15, 2022
cff9271
Merge branch 'v1.x' of https://github.com/axios/axios into v1.x
DigitalBrainJS Dec 17, 2022
67afe20
Merge branch 'v1.x' of https://github.com/axios/axios into v1.x
DigitalBrainJS Dec 19, 2022
dc7b66d
Merge branch 'v1.x' of https://github.com/axios/axios into v1.x
DigitalBrainJS Dec 22, 2022
716eb59
Merge branch 'v1.x' of https://github.com/axios/axios into v1.x
DigitalBrainJS Dec 23, 2022
10216bf
Merge branch 'v1.x' of https://github.com/axios/axios into v1.x
DigitalBrainJS Dec 29, 2022
e8fb2d6
fix(types): fixed AxiosRequestConfig header interface by refactoring …
DigitalBrainJS Dec 29, 2022
523a04f
Merge branch 'v1.x' of https://github.com/axios/axios into fix/types
DigitalBrainJS Jan 19, 2023
e0f936d
fix(types): fixed `AxiosHeaders` iterator declaration
DigitalBrainJS Jan 19, 2023
54e6282
Merge branch 'v1.x' of https://github.com/axios/axios into fix/types
DigitalBrainJS Jan 21, 2023
4921ee3
fix(types): renamed `AxiosRequestConfig` to `InternalAxiosRequestConf…
DigitalBrainJS Jan 21, 2023
c585a9c
fix(types): added hotfix for RawAxiosHeaders to handle a spread opera…
DigitalBrainJS Jan 25, 2023
d922a37
Merge branch 'v1.x' of https://github.com/axios/axios into fix/types
DigitalBrainJS Jan 26, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
61 changes: 32 additions & 29 deletions index.d.cts
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,6 @@ type MethodsHeaders = Partial<{

type AxiosHeaderMatcher = (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean;

type AxiosHeaderSetter = (value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher) => AxiosHeaders;

type AxiosHeaderGetter = ((parser?: RegExp) => RegExpExecArray | null) |
((matcher?: AxiosHeaderMatcher) => AxiosHeaderValue);

type AxiosHeaderTester = (matcher?: AxiosHeaderMatcher) => boolean;

declare class AxiosHeaders {
constructor(
headers?: RawAxiosHeaders | AxiosHeaders
Expand All @@ -38,35 +31,45 @@ declare class AxiosHeaders {

normalize(format: boolean): AxiosHeaders;

concat(...targets: Array<AxiosHeaders | RawAxiosHeaders | string>): AxiosHeaders;
concat(...targets: Array<AxiosHeaders | RawAxiosHeaders | string | undefined | null>): AxiosHeaders;

toJSON(asStrings?: boolean): RawAxiosHeaders;

static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders;

static accessor(header: string | string[]): AxiosHeaders;

static concat(...targets: Array<AxiosHeaders | RawAxiosHeaders | string>): AxiosHeaders;

setContentType: AxiosHeaderSetter;
getContentType: AxiosHeaderGetter;
hasContentType: AxiosHeaderTester;

setContentLength: AxiosHeaderSetter;
getContentLength: AxiosHeaderGetter;
hasContentLength: AxiosHeaderTester;

setAccept: AxiosHeaderSetter;
getAccept: AxiosHeaderGetter;
hasAccept: AxiosHeaderTester;

setUserAgent: AxiosHeaderSetter;
getUserAgent: AxiosHeaderGetter;
hasUserAgent: AxiosHeaderTester;

setContentEncoding: AxiosHeaderSetter;
getContentEncoding: AxiosHeaderGetter;
hasContentEncoding: AxiosHeaderTester;
static concat(...targets: Array<AxiosHeaders | RawAxiosHeaders | string | undefined | null>): AxiosHeaders;

setContentType(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getContentType(parser?: RegExp): RegExpExecArray | null;
getContentType(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasContentType(matcher?: AxiosHeaderMatcher): boolean;

setContentLength(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getContentLength(parser?: RegExp): RegExpExecArray | null;
getContentLength(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasContentLength(matcher?: AxiosHeaderMatcher): boolean;

setAccept(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getAccept(parser?: RegExp): RegExpExecArray | null;
getAccept(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasAccept(matcher?: AxiosHeaderMatcher): boolean;

setUserAgent(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getUserAgent(parser?: RegExp): RegExpExecArray | null;
getUserAgent(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasUserAgent(matcher?: AxiosHeaderMatcher): boolean;

setContentEncoding(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getContentEncoding(parser?: RegExp): RegExpExecArray | null;
getContentEncoding(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean;

setAuthorization(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getAuthorization(parser?: RegExp): RegExpExecArray | null;
getAuthorization(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasAuthorization(matcher?: AxiosHeaderMatcher): boolean;

[Symbol.iterator](): IterableIterator<[string, AxiosHeaderValue]>;
}
Expand Down
53 changes: 28 additions & 25 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,6 @@ type MethodsHeaders = Partial<{

type AxiosHeaderMatcher = (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean;

type AxiosHeaderSetter = (value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher) => AxiosHeaders;

type AxiosHeaderGetter = ((parser?: RegExp) => RegExpExecArray | null) |
((matcher?: AxiosHeaderMatcher) => AxiosHeaderValue);

type AxiosHeaderTester = (matcher?: AxiosHeaderMatcher) => boolean;

export class AxiosHeaders {
constructor(
headers?: RawAxiosHeaders | AxiosHeaders
Expand All @@ -39,40 +32,50 @@ export class AxiosHeaders {

normalize(format: boolean): AxiosHeaders;

concat(...targets: Array<AxiosHeaders | RawAxiosHeaders | string>): AxiosHeaders;
concat(...targets: Array<AxiosHeaders | RawAxiosHeaders | string | undefined | null>): AxiosHeaders;

toJSON(asStrings?: boolean): RawAxiosHeaders;

static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders;

static accessor(header: string | string[]): AxiosHeaders;

static concat(...targets: Array<AxiosHeaders | RawAxiosHeaders | string>): AxiosHeaders;
static concat(...targets: Array<AxiosHeaders | RawAxiosHeaders | string | undefined | null>): AxiosHeaders;

setContentType(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getContentType(parser?: RegExp): RegExpExecArray | null;
getContentType(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasContentType(matcher?: AxiosHeaderMatcher): boolean;

setContentType: AxiosHeaderSetter;
getContentType: AxiosHeaderGetter;
hasContentType: AxiosHeaderTester;
setContentLength(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getContentLength(parser?: RegExp): RegExpExecArray | null;
getContentLength(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasContentLength(matcher?: AxiosHeaderMatcher): boolean;

setContentLength: AxiosHeaderSetter;
getContentLength: AxiosHeaderGetter;
hasContentLength: AxiosHeaderTester;
setAccept(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getAccept(parser?: RegExp): RegExpExecArray | null;
getAccept(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasAccept(matcher?: AxiosHeaderMatcher): boolean;

setAccept: AxiosHeaderSetter;
getAccept: AxiosHeaderGetter;
hasAccept: AxiosHeaderTester;
setUserAgent(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getUserAgent(parser?: RegExp): RegExpExecArray | null;
getUserAgent(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasUserAgent(matcher?: AxiosHeaderMatcher): boolean;

setUserAgent: AxiosHeaderSetter;
getUserAgent: AxiosHeaderGetter;
hasUserAgent: AxiosHeaderTester;
setContentEncoding(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getContentEncoding(parser?: RegExp): RegExpExecArray | null;
getContentEncoding(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean;

setContentEncoding: AxiosHeaderSetter;
getContentEncoding: AxiosHeaderGetter;
hasContentEncoding: AxiosHeaderTester;
setAuthorization(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
getAuthorization(parser?: RegExp): RegExpExecArray | null;
getAuthorization(matcher?: AxiosHeaderMatcher): AxiosHeaderValue;
hasAuthorization(matcher?: AxiosHeaderMatcher): boolean;

[Symbol.iterator](): IterableIterator<[string, AxiosHeaderValue]>;
}

type CommonRequestHeadersList = 'Accept' | 'Content-Type' | 'Content-Length' | 'User-Agent'| 'Content-Encoding';
type CommonRequestHeadersList = 'Accept' | 'Content-Type' | 'Content-Length' | 'User-Agent' | 'Content-Encoding' | 'Authorization';

export type RawAxiosRequestHeaders = Partial<RawAxiosHeaders & {
[Key in CommonRequestHeadersList]: AxiosHeaderValue;
Expand Down
11 changes: 11 additions & 0 deletions test/module/typings/cjs/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -496,3 +496,14 @@ for (const [header, value] of headers) {
(error: any) => Promise.reject(error)
);
}

{
const config: axios.AxiosRequestConfig = {headers: new axios.AxiosHeaders({foo: 1})};

axios.get('', {
headers: {
bar: 2,
...config.headers
}
});
}
11 changes: 11 additions & 0 deletions test/module/typings/esm/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -616,3 +616,14 @@ for (const [header, value] of headers) {
(error: any) => Promise.reject(error)
);
}

{
const config: AxiosRequestConfig = {headers: new AxiosHeaders({foo: 1})};

axios.get('', {
headers: {
bar: 2,
...config.headers
}
});
}