refactor: 新的目录结构

pull/49/head
zjx0905 2023-04-21 18:09:32 +08:00
parent 2d691b69cb
commit cd65ce4a91
21 changed files with 57 additions and 42 deletions

View File

@ -1,12 +1,16 @@
import {
CancelToken,
CancelTokenConstructor,
isCancel,
} from './request/cancel';
import { isAxiosError } from './request/createError';
import { mergeConfig } from './core/mergeConfig';
import { AxiosDomainRequest } from './core/AxiosDomain';
import Axios, {
AxiosConstructor,
AxiosRequestConfig,
AxiosRequestHeaders,
} from './core/Axios';
import { CancelToken, CancelTokenConstructor, isCancel } from './core/cancel';
import { isAxiosError } from './core/createError';
import { mergeConfig } from './core/mergeConfig';
import { createAdapter } from './adapter';
import defaults from './defaults';
import { version } from './version';

View File

@ -2,6 +2,9 @@ import { buildURL } from '../helpers/buildURL';
import { isAbsoluteURL } from '../helpers/isAbsoluteURL';
import { combineURL } from '../helpers/combineURL';
import { isString } from '../helpers/isTypes';
import { CancelToken } from '../request/cancel';
import { dispatchRequest } from '../request/dispatchRequest';
import { AxiosTransformer } from '../request/transformData';
import {
AxiosAdapter,
AxiosAdapterRequestMethod,
@ -11,9 +14,6 @@ import {
} from '../adapter';
import InterceptorManager, { Interceptor } from './InterceptorManager';
import { mergeConfig } from './mergeConfig';
import { CancelToken } from './cancel';
import { dispatchRequest } from './dispatchRequest';
import { AxiosTransformer } from './transformData';
import AxiosDomain from './AxiosDomain';
/**

View File

@ -36,9 +36,9 @@ export type {
AxiosStatic,
} from './axios';
export { CancelToken, isCancel } from './core/cancel';
export { CancelToken, isCancel } from './request/cancel';
export { isAxiosError } from './request/createError';
export { default as Axios } from './core/Axios';
export { isAxiosError } from './core/createError';
export { createAdapter } from './adapter';
export { version } from './version';

View File

@ -1,6 +1,10 @@
import { cleanStack } from '../helpers/error';
import {
AxiosRequestConfig,
AxiosResponse,
AxiosResponseError,
} from '../core/Axios';
import { AxiosAdapterPlatformTask } from '../adapter';
import { AxiosRequestConfig, AxiosResponse, AxiosResponseError } from './Axios';
export type AxiosErrorResponse = AxiosResponse | AxiosResponseError;

View File

@ -1,13 +1,17 @@
import { isFunction, isString } from '../helpers/isTypes';
import { assert } from '../helpers/error';
import { requestMethodWithDataNames } from '../core/AxiosDomain';
import {
AxiosRequestConfig,
AxiosRequestMethod,
AxiosResponse,
} from '../core/Axios';
import { Cancel, isCancel, isCancelToken } from './cancel';
import { flattenHeaders } from './flattenHeaders';
import { AxiosTransformer, transformData } from './transformData';
import { request } from './request';
import { AxiosRequestConfig, AxiosRequestMethod, AxiosResponse } from './Axios';
import { transformURL } from './transformURL';
import { AxiosErrorResponse } from './createError';
import { requestMethodWithDataNames } from './AxiosDomain';
/**
* data

View File

@ -1,6 +1,6 @@
import { isPlainObject } from '../helpers/isTypes';
import { ignore } from '../helpers/ignore';
import { AxiosRequestConfig, AxiosRequestHeaders } from './Axios';
import { AxiosRequestConfig, AxiosRequestHeaders } from '../core/Axios';
export function flattenHeaders(
config: AxiosRequestConfig,

View File

@ -1,5 +1,5 @@
import { AxiosRequestConfig } from '../core/Axios';
import { AxiosAdapterRequestType } from '../adapter';
import { AxiosRequestConfig } from './Axios';
export function generateType(config: AxiosRequestConfig) {
let requestType: AxiosAdapterRequestType = 'request';

View File

@ -1,4 +1,9 @@
import { isFunction, isPlainObject } from '../helpers/isTypes';
import {
AxiosRequestConfig,
AxiosResponse,
AxiosResponseError,
} from '../core/Axios';
import {
AxiosAdapterRequestConfig,
AxiosAdapterRequestMethod,
@ -6,7 +11,7 @@ import {
AxiosAdapterResponseError,
AxiosAdapterPlatformTask,
} from '../adapter';
import { AxiosRequestConfig, AxiosResponse, AxiosResponseError } from './Axios';
import { isCancelToken } from './cancel';
import { AxiosErrorResponse, createError } from './createError';
import { generateType } from './generateType';

View File

@ -3,17 +3,15 @@ import { buildURL } from '../helpers/buildURL';
import { combineURL } from '../helpers/combineURL';
import { dynamicURL } from '../helpers/dynamicURL';
import { isAbsoluteURL } from '../helpers/isAbsoluteURL';
import { AxiosRequestConfig } from './Axios';
import { AxiosRequestConfig } from '../core/Axios';
export function transformURL(config: AxiosRequestConfig) {
let url = config.url ?? '';
if (!isAbsoluteURL(url)) url = combineURL(config.baseURL ?? '', url);
url = dynamicURL(
url,
config.params,
isPlainObject(config.data) ? config.data : {},
);
const data = isPlainObject(config.data) ? config.data : {};
url = dynamicURL(url, config.params, data);
url = buildURL(url, config.params, config.paramsSerializer);
return url;

View File

@ -1,11 +1,11 @@
import { describe, test, expect } from 'vitest';
import { eachMethods } from 'scripts/test.utils';
import { CancelToken, isCancel } from '@/request/cancel';
import { isAxiosError } from '@/request/createError';
import Axios from '@/core/Axios';
import { CancelToken, isCancel } from '@/core/cancel';
import { isAxiosError } from '@/core/createError';
import defaults from '@/defaults';
import { createAdapter } from '@/adapter';
import axios from '@/axios';
import defaults from '@/defaults';
import { eachMethods } from 'scripts/test.utils';
describe('src/axios.ts', () => {
test('应该有这些静态属性', () => {

View File

@ -1,7 +1,7 @@
import { describe, test, expect, vi } from 'vitest';
import { ignore } from '@/helpers/ignore';
import { CancelToken } from '@/request/cancel';
import { mergeConfig } from '@/core/mergeConfig';
import { CancelToken } from '@/core/cancel';
describe('src/core/mergeConfig.ts', () => {
test('应该支持空参数', () => {

View File

@ -6,16 +6,16 @@ import {
noop,
asyncTimeout,
} from 'scripts/test.utils';
import axios from 'src/axios';
import {
Cancel,
isCancel,
CancelToken,
isCancelToken,
CancelAction,
} from '@/core/cancel';
} from '@/request/cancel';
import axios from '@/axios';
describe('src/helpers/cancel.ts', () => {
describe('src/request/cancel.ts', () => {
test('应该支持空参数', () => {
const c = new Cancel();

View File

@ -1,8 +1,8 @@
import { describe, test, expect } from 'vitest';
import { checkStack } from 'scripts/test.utils';
import { createError, isAxiosError } from '@/core/createError';
import { createError, isAxiosError } from '@/request/createError';
describe('src/core/createError.ts', () => {
describe('src/request/createError.ts', () => {
test('应该支持空参数', () => {
const c = {};
const r = {} as any;

View File

@ -1,6 +1,6 @@
import { describe, test, expect, vi } from 'vitest';
import { asyncNext, mockAdapter, testEachMethods } from 'scripts/test.utils';
import { dispatchRequest } from '@/core/dispatchRequest';
import { dispatchRequest } from '@/request/dispatchRequest';
import {
requestMethodNames,
requestMethodWithDataNames,
@ -10,7 +10,7 @@ import {
import axios from '@/axios';
import _defaults from '@/defaults';
describe('src/core/dispatchRequest.ts', () => {
describe('src/request/dispatchRequest.ts', () => {
const defaults = {
..._defaults,
adapter: mockAdapter(),

View File

@ -1,8 +1,8 @@
import { describe, test, expect } from 'vitest';
import { flattenHeaders } from '@/core/flattenHeaders';
import { eachMethods, methods } from 'scripts/test.utils';
import { flattenHeaders } from '@/request/flattenHeaders';
describe('src/core/flattenHeaders.ts', () => {
describe('src/request/flattenHeaders.ts', () => {
const baseHeaders = Object.fromEntries(
methods.map((k) => [k, { v1: `${k}1`, v2: `${k}2` }]),
) as unknown as Record<(typeof methods)[number], AnyObject>;

View File

@ -1,8 +1,8 @@
import { describe, test, expect } from 'vitest';
import { generateType } from '@/core/generateType';
import { testEachMethods } from 'scripts/test.utils';
import { generateType } from '@/request/generateType';
describe('src/core/generateType.ts', () => {
describe('src/request/generateType.ts', () => {
testEachMethods('%s 应该是一个 reuqest', (k) => {
expect(generateType({ method: k })).toBe('request');
});

View File

@ -7,10 +7,10 @@ import {
mockAdapterFail,
testEachMethods,
} from 'scripts/test.utils';
import { request } from '@/core/request';
import { request } from '@/request/request';
import axios from '@/axios';
describe('src/core/request.ts', () => {
describe('src/request/request.ts', () => {
testEachMethods('%s 方法应该返回正确的响应体结构', (k) => {
const c = {
adapter: mockAdapter(),

View File

@ -1,7 +1,7 @@
import { describe, test, expect } from 'vitest';
import { transformData } from '@/core/transformData';
import { transformData } from '@/request/transformData';
describe('src/core/transformData.ts', () => {
describe('src/request/transformData.ts', () => {
test('应该支持空配置', () => {
expect(transformData()).toBeUndefined();
expect(transformData({})).toEqual({});

View File

@ -1,7 +1,7 @@
import { describe, test, expect } from 'vitest';
import { transformURL } from '@/core/transformURL';
import { transformURL } from '@/request/transformURL';
describe('src/core/transformURL.ts', () => {
describe('src/request/transformURL.ts', () => {
test('应该支持空配置', () => {
expect(transformURL({})).toBe('');
expect(transformURL({ baseURL: 'http://api.com' })).toBe('http://api.com');