Skip to content

Commit ca73eb8

Browse files
author
夜葬
authored
feat: export getAdapter function (#5324)
1 parent 9a414bb commit ca73eb8

File tree

7 files changed

+42
-0
lines changed

7 files changed

+42
-0
lines changed

index.d.cts

+1
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,7 @@ declare namespace axios {
523523
isAxiosError<T = any, D = any>(payload: any): payload is AxiosError<T, D>;
524524
toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData;
525525
formToJSON(form: GenericFormData|GenericHTMLFormElement): object;
526+
getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter;
526527
AxiosHeaders: typeof AxiosHeaders;
527528
}
528529
}

index.d.ts

+3
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,8 @@ export interface GenericHTMLFormElement {
512512
submit(): void;
513513
}
514514

515+
export function getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter;
516+
515517
export function toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData;
516518

517519
export function formToJSON(form: GenericFormData|GenericHTMLFormElement): object;
@@ -538,6 +540,7 @@ export interface AxiosStatic extends AxiosInstance {
538540
isAxiosError: typeof isAxiosError;
539541
toFormData: typeof toFormData;
540542
formToJSON: typeof formToJSON;
543+
getAdapter: typeof getAdapter;
541544
CanceledError: typeof CanceledError;
542545
AxiosHeaders: typeof AxiosHeaders;
543546
}

index.js

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const {
1818
AxiosHeaders,
1919
HttpStatusCode,
2020
formToJSON,
21+
getAdapter,
2122
mergeConfig
2223
} = axios;
2324

@@ -37,5 +38,6 @@ export {
3738
AxiosHeaders,
3839
HttpStatusCode,
3940
formToJSON,
41+
getAdapter,
4042
mergeConfig
4143
}

lib/axios.js

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import AxiosError from './core/AxiosError.js';
1515
import spread from './helpers/spread.js';
1616
import isAxiosError from './helpers/isAxiosError.js';
1717
import AxiosHeaders from "./core/AxiosHeaders.js";
18+
import adapters from './adapters/adapters.js';
1819
import HttpStatusCode from './helpers/HttpStatusCode.js';
1920

2021
/**
@@ -78,6 +79,8 @@ axios.AxiosHeaders = AxiosHeaders;
7879

7980
axios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);
8081

82+
axios.getAdapter = adapters.getAdapter;
83+
8184
axios.HttpStatusCode = HttpStatusCode;
8285

8386
axios.default = axios;

test/module/typings/esm/index.ts

+28
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import axios, {
1616
ParamsSerializerOptions,
1717
toFormData,
1818
formToJSON,
19+
getAdapter,
1920
all,
2021
isCancel,
2122
isAxiosError,
@@ -570,6 +571,33 @@ axios.get('/user', {
570571
adapter: ['xhr', 'http']
571572
});
572573

574+
575+
{
576+
// getAdapter
577+
578+
getAdapter(axios.create().defaults.adapter);
579+
getAdapter(undefined);
580+
getAdapter([]);
581+
getAdapter(['xhr']);
582+
getAdapter([adapter]);
583+
getAdapter(['xhr', 'http']);
584+
getAdapter([adapter, 'xhr']);
585+
getAdapter([adapter, adapter]);
586+
getAdapter('xhr');
587+
getAdapter(adapter);
588+
const _: AxiosAdapter = getAdapter('xhr');
589+
const __: AxiosAdapter = getAdapter(['xhr']);
590+
591+
// @ts-expect-error
592+
getAdapter();
593+
// @ts-expect-error
594+
getAdapter(123);
595+
// @ts-expect-error
596+
getAdapter([123]);
597+
// @ts-expect-error
598+
getAdapter('xhr', 'http');
599+
}
600+
573601
// AxiosHeaders
574602

575603
// iterator

test/specs/api.spec.js

+4
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ describe('static api', function () {
5454
it('should have mergeConfig properties', function () {
5555
expect(typeof axios.mergeConfig).toEqual('function');
5656
});
57+
58+
it('should have getAdapter properties', function () {
59+
expect(typeof axios.getAdapter).toEqual('function');
60+
});
5761
});
5862

5963
describe('instance api', function () {

test/specs/instance.spec.js

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ describe('instance', function () {
2424
'getUri',
2525
'isAxiosError',
2626
'mergeConfig',
27+
'getAdapter',
2728
'VERSION',
2829
'default',
2930
'toFormData',

0 commit comments

Comments
 (0)