Skip to content

Commit 968bbb7

Browse files
committed
refactor: 拆分模块
1 parent 5aad9a8 commit 968bbb7

22 files changed

+360
-170
lines changed

scripts/test.utils.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { test } from 'vitest';
22
import {
3-
requestMethodNames,
4-
requestMethodWithParamsNames,
5-
requestMethodWithDataNames,
6-
} from '@/core/AxiosDomain';
7-
import { AxiosAdapterRequestConfig } from '@/adapter';
3+
PLAIN_METHODS,
4+
WITH_PARAMS_METHODS,
5+
WITH_DATA_METHODS,
6+
} from '@/constants/methods';
7+
import { AxiosAdapterRequestConfig } from '@/adpater/createAdapter';
88

99
export function asyncNext() {
1010
return Promise.resolve().then;
@@ -114,9 +114,9 @@ export function mockAdapterFail(options: MockAdapterOptions = {}) {
114114
}
115115

116116
export const methods = [
117-
...requestMethodNames,
118-
...requestMethodWithParamsNames,
119-
...requestMethodWithDataNames,
117+
...PLAIN_METHODS,
118+
...WITH_PARAMS_METHODS,
119+
...WITH_DATA_METHODS,
120120
];
121121

122122
export const testEachMethods = test.each(methods);

src/adapter.ts renamed to src/adpater/createAdapter.ts

Lines changed: 3 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { isFunction, isPlainObject } from './helpers/isTypes';
2-
import { assert } from './helpers/error';
1+
import { isFunction, isPlainObject } from '../helpers/isTypes';
2+
import { assert } from '../helpers/error';
33
import {
44
AxiosProgressEvent,
55
AxiosRequestFormData,
66
AxiosRequestHeaders,
7-
} from './core/Axios';
7+
} from '../core/Axios';
88

99
/**
1010
* 适配器请求类型
@@ -240,59 +240,6 @@ export interface AxiosAdapter {
240240
(config: AxiosAdapterRequestConfig): AxiosAdapterPlatformTask;
241241
}
242242

243-
/**
244-
* 获取支持的平台适配器
245-
*/
246-
export function getDefaultAdapter() {
247-
const platform = revisePlatformApiNames(getPlatform());
248-
249-
function getPlatform() {
250-
const undef = 'undefined';
251-
252-
if (typeof uni !== undef) {
253-
return {
254-
request: uni.request,
255-
downloadFile: uni.downloadFile,
256-
uploadFile: uni.uploadFile,
257-
};
258-
} else if (typeof wx !== undef) {
259-
return wx;
260-
} else if (typeof my !== undef) {
261-
return my;
262-
} else if (typeof swan !== undef) {
263-
return swan;
264-
} else if (typeof tt !== undef) {
265-
return tt;
266-
} else if (typeof qq !== undef) {
267-
return qq;
268-
} else if (typeof qh !== undef) {
269-
return qh;
270-
} else if (typeof ks !== undef) {
271-
return ks;
272-
} else if (typeof dd !== undef) {
273-
return dd;
274-
} else if (typeof jd !== undef) {
275-
return jd;
276-
}
277-
}
278-
279-
function revisePlatformApiNames(platform?: AnyObject) {
280-
return (
281-
platform && {
282-
request: platform.request ?? platform.httpRequest,
283-
upload: platform.upload ?? platform.uploadFile,
284-
download: platform.download ?? platform.downloadFile,
285-
}
286-
);
287-
}
288-
289-
if (!isPlatform(platform)) {
290-
return;
291-
}
292-
293-
return createAdapter(platform);
294-
}
295-
296243
/**
297244
* 创建适配器
298245
*
@@ -400,12 +347,3 @@ export function createAdapter(platform: AxiosAdapterPlatform) {
400347

401348
return adapter;
402349
}
403-
404-
export function isPlatform(value: any): value is AxiosAdapterPlatform {
405-
return (
406-
isPlainObject(value) &&
407-
isFunction(value.request) &&
408-
isFunction(value.upload) &&
409-
isFunction(value.download)
410-
);
411-
}

src/adpater/getDefaultAdapter.ts

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { isFunction, isPlainObject } from '../helpers/isTypes';
2+
import { AxiosAdapterPlatform, createAdapter } from './createAdapter';
3+
4+
/**
5+
* 获取支持的平台适配器
6+
*/
7+
export function getDefaultAdapter() {
8+
const platform = revisePlatformApiNames(getPlatform());
9+
if (!isPlatform(platform)) {
10+
return;
11+
}
12+
13+
function getPlatform() {
14+
const undef = 'undefined';
15+
16+
if (typeof uni !== undef) {
17+
return {
18+
request: uni.request,
19+
downloadFile: uni.downloadFile,
20+
uploadFile: uni.uploadFile,
21+
};
22+
} else if (typeof wx !== undef) {
23+
return wx;
24+
} else if (typeof my !== undef) {
25+
return my;
26+
} else if (typeof swan !== undef) {
27+
return swan;
28+
} else if (typeof tt !== undef) {
29+
return tt;
30+
} else if (typeof qq !== undef) {
31+
return qq;
32+
} else if (typeof qh !== undef) {
33+
return qh;
34+
} else if (typeof ks !== undef) {
35+
return ks;
36+
} else if (typeof dd !== undef) {
37+
return dd;
38+
} else if (typeof jd !== undef) {
39+
return jd;
40+
}
41+
}
42+
43+
function revisePlatformApiNames(platform?: AnyObject) {
44+
return (
45+
platform && {
46+
request: platform.request ?? platform.httpRequest,
47+
upload: platform.upload ?? platform.uploadFile,
48+
download: platform.download ?? platform.downloadFile,
49+
}
50+
);
51+
}
52+
53+
function isPlatform(value: any): value is AxiosAdapterPlatform {
54+
return (
55+
isPlainObject(value) &&
56+
isFunction(value.request) &&
57+
isFunction(value.upload) &&
58+
isFunction(value.download)
59+
);
60+
}
61+
62+
return createAdapter(platform);
63+
}

src/axios.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import Axios, {
1111
AxiosRequestConfig,
1212
AxiosRequestHeaders,
1313
} from './core/Axios';
14-
import { createAdapter } from './adapter';
14+
import { createAdapter } from './adpater/createAdapter';
1515
import defaults from './defaults';
1616
import { version } from './version';
1717

src/constants/methods.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* 普通的请求方法名称
3+
*/
4+
export const PLAIN_METHODS = ['options', 'trace', 'connect'] as const;
5+
6+
/**
7+
* 带参数的请求方法名称
8+
*/
9+
export const WITH_PARAMS_METHODS = ['head', 'get', 'delete'] as const;
10+
11+
/**
12+
* 带数据的请求方法名称
13+
*/
14+
export const WITH_DATA_METHODS = ['post', 'put', 'patch'] as const;
15+
16+
/**
17+
* 可以携带 data 的请求方法
18+
*/
19+
export const WITH_DATA_RE = new RegExp(`^${WITH_DATA_METHODS.join('|')}`, 'i');

src/core/Axios.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
AxiosAdapterPlatformTask,
1212
AxiosAdapterRequestConfig,
1313
AxiosAdapterResponseData,
14-
} from '../adapter';
14+
} from '../adpater/createAdapter';
1515
import InterceptorManager, { Interceptor } from './InterceptorManager';
1616
import { mergeConfig } from './mergeConfig';
1717
import AxiosDomain from './AxiosDomain';

src/core/AxiosDomain.ts

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
import {
2+
PLAIN_METHODS,
3+
WITH_DATA_METHODS,
4+
WITH_PARAMS_METHODS,
5+
} from '../constants/methods';
16
import { isString, isUndefined } from '../helpers/isTypes';
27
import { deepMerge } from '../helpers/deepMerge';
38
import { mergeConfig } from './mergeConfig';
@@ -51,21 +56,6 @@ export type AxiosDomainRequestMethodWithData = <
5156
config?: AxiosRequestConfig,
5257
) => Promise<AxiosResponse<TData>>;
5358

54-
/**
55-
* 普通的请求方法名称
56-
*/
57-
export const requestMethodNames = ['options', 'trace', 'connect'] as const;
58-
59-
/**
60-
* 带参数的请求方法名称
61-
*/
62-
export const requestMethodWithParamsNames = ['head', 'get', 'delete'] as const;
63-
64-
/**
65-
* 带数据的请求方法名称
66-
*/
67-
export const requestMethodWithDataNames = ['post', 'put', 'patch'] as const;
68-
6959
export default class AxiosDomain {
7060
/**
7161
* 默认请求配置
@@ -147,7 +137,7 @@ export default class AxiosDomain {
147137
}
148138
}
149139

150-
for (const method of requestMethodNames) {
140+
for (const method of PLAIN_METHODS) {
151141
AxiosDomain.prototype[method] = function processRequestMethod(
152142
url,
153143
config = {},
@@ -157,7 +147,7 @@ for (const method of requestMethodNames) {
157147
};
158148
}
159149

160-
for (const method of requestMethodWithParamsNames) {
150+
for (const method of WITH_PARAMS_METHODS) {
161151
AxiosDomain.prototype[method] = function processRequestMethodWithParams(
162152
url,
163153
params = {},
@@ -169,7 +159,7 @@ for (const method of requestMethodWithParamsNames) {
169159
};
170160
}
171161

172-
for (const method of requestMethodWithDataNames) {
162+
for (const method of WITH_DATA_METHODS) {
173163
AxiosDomain.prototype[method] = function processRequestMethodWithData(
174164
url,
175165
data,

src/defaults.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { getDefaultAdapter } from './adapter';
1+
import { getDefaultAdapter } from './adpater/getDefaultAdapter';
22
import { AxiosInstanceDefaults } from './axios';
33

44
const defaults: AxiosInstanceDefaults = {

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export type {
2929
AxiosAdapterUploadOptions,
3030
AxiosAdapterPlatform,
3131
AxiosAdapterPlatformTask,
32-
} from './adapter';
32+
} from './adpater/createAdapter';
3333
export type {
3434
AxiosInstanceDefaults,
3535
AxiosInstance,
@@ -39,7 +39,7 @@ export type {
3939
export { CancelToken, isCancel } from './request/cancel';
4040
export { isAxiosError } from './request/createError';
4141
export { default as Axios } from './core/Axios';
42-
export { createAdapter } from './adapter';
42+
export { createAdapter } from './adpater/createAdapter';
4343
export { version } from './version';
4444

4545
export default axios;

src/request/createError.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { cleanStack } from '../helpers/error';
2+
import { AxiosAdapterPlatformTask } from '../adpater/createAdapter';
23
import {
34
AxiosRequestConfig,
45
AxiosResponse,
56
AxiosResponseError,
67
} from '../core/Axios';
7-
import { AxiosAdapterPlatformTask } from '../adapter';
88

99
export type AxiosErrorResponse = AxiosResponse | AxiosResponseError;
1010

0 commit comments

Comments
 (0)