style: format code for all

This commit is contained in:
LZHD
2021-07-06 01:01:42 +08:00
committed by 踏学吾痕
parent e1200f2dbe
commit 77a1a47110
114 changed files with 7068 additions and 1068 deletions

View File

@@ -9,8 +9,8 @@ export const defaultConfig: AxiosRequestConfig = {
headers: {
Accept: "application/json, text/plain, */*",
"Content-Type": "application/json",
"X-Requested-With": "XMLHttpRequest",
},
"X-Requested-With": "XMLHttpRequest"
}
};
export function genConfig(config?: AxiosRequestConfig): AxiosRequestConfig {
@@ -22,7 +22,7 @@ export function genConfig(config?: AxiosRequestConfig): AxiosRequestConfig {
if (headers && typeof headers === "object") {
defaultConfig.headers = {
...defaultConfig.headers,
...headers,
...headers
};
}
return { ...excludeProps(config!, "headers"), ...defaultConfig };

View File

@@ -1,16 +1,14 @@
import Axios, {
AxiosRequestConfig,
CancelTokenStatic,
AxiosInstance,
Canceler
} from "axios"
AxiosInstance
} from "axios";
import NProgress from "../progress"
import NProgress from "../progress";
import { genConfig } from "./config"
import { genConfig } from "./config";
import { transformConfigByMethod } from "./utils"
import { transformConfigByMethod } from "./utils";
import {
cancelTokenType,
@@ -18,12 +16,12 @@ import {
EnclosureHttpRequestConfig,
EnclosureHttpResoponse,
EnclosureHttpError
} from "./types.d"
} from "./types.d";
class EnclosureHttp {
constructor() {
this.httpInterceptorsRequest()
this.httpInterceptorsResponse()
this.httpInterceptorsRequest();
this.httpInterceptorsResponse();
}
// 初始化配置对象
private static initConfig: EnclosureHttpRequestConfig = {};
@@ -32,7 +30,7 @@ class EnclosureHttp {
private static axiosInstance: AxiosInstance = Axios.create(genConfig());
// 保存 EnclosureHttp实例
private static EnclosureHttpInstance: EnclosureHttp
private static EnclosureHttpInstance: EnclosureHttp;
// axios取消对象
private CancelToken: CancelTokenStatic = Axios.CancelToken;
@@ -43,17 +41,19 @@ class EnclosureHttp {
// 记录当前这一次cancelToken的key
private currentCancelTokenKey = "";
private beforeRequestCallback: EnclosureHttpRequestConfig["beforeRequestCallback"] = undefined;
private beforeRequestCallback: EnclosureHttpRequestConfig["beforeRequestCallback"] =
undefined;
private beforeResponseCallback: EnclosureHttpRequestConfig["beforeResponseCallback"] = undefined;
private beforeResponseCallback: EnclosureHttpRequestConfig["beforeResponseCallback"] =
undefined;
public get cancelTokenList(): Array<cancelTokenType> {
return this.sourceTokenList
return this.sourceTokenList;
}
// eslint-disable-next-line class-methods-use-this
public set cancelTokenList(value) {
throw new Error("cancelTokenList不允许赋值")
throw new Error("cancelTokenList不允许赋值");
}
/**
@@ -68,8 +68,8 @@ class EnclosureHttp {
* @returns string
*/
// eslint-disable-next-line class-methods-use-this
private genUniqueKey(config: EnclosureHttpRequestConfig): string {
return `${config.url}--${JSON.stringify(config.data)}`
private static genUniqueKey(config: EnclosureHttpRequestConfig): string {
return `${config.url}--${JSON.stringify(config.data)}`;
}
/**
@@ -77,21 +77,21 @@ class EnclosureHttp {
* @returns void 0
*/
private cancelRepeatRequest(): void {
const temp: { [key: string]: boolean } = {}
const temp: { [key: string]: boolean } = {};
this.sourceTokenList = this.sourceTokenList.reduce<Array<cancelTokenType>>(
(res: Array<cancelTokenType>, cancelToken: cancelTokenType) => {
const { cancelKey, cancelExecutor } = cancelToken
const { cancelKey, cancelExecutor } = cancelToken;
if (!temp[cancelKey]) {
temp[cancelKey] = true
res.push(cancelToken)
temp[cancelKey] = true;
res.push(cancelToken);
} else {
cancelExecutor()
cancelExecutor();
}
return res
return res;
},
[]
)
);
}
/**
@@ -102,9 +102,9 @@ class EnclosureHttp {
this.sourceTokenList =
this.sourceTokenList.length < 1
? this.sourceTokenList.filter(
cancelToken => cancelToken.cancelKey !== cancelKey
)
: []
cancelToken => cancelToken.cancelKey !== cancelKey
)
: [];
}
/**
@@ -115,30 +115,32 @@ class EnclosureHttp {
private httpInterceptorsRequest(): void {
EnclosureHttp.axiosInstance.interceptors.request.use(
(config: EnclosureHttpRequestConfig) => {
const $config = config
NProgress.start() // 每次切换页面时,调用进度条
const cancelKey = this.genUniqueKey($config)
$config.cancelToken = new this.CancelToken((cancelExecutor: (cancel: any) => void) => {
this.sourceTokenList.push({ cancelKey, cancelExecutor })
})
this.cancelRepeatRequest()
this.currentCancelTokenKey = cancelKey
const $config = config;
NProgress.start(); // 每次切换页面时,调用进度条
const cancelKey = EnclosureHttp.genUniqueKey($config);
$config.cancelToken = new this.CancelToken(
(cancelExecutor: (cancel: any) => void) => {
this.sourceTokenList.push({ cancelKey, cancelExecutor });
}
);
this.cancelRepeatRequest();
this.currentCancelTokenKey = cancelKey;
// 优先判断post/get等方法是否传入回掉否则执行初始化设置等回掉
if (typeof this.beforeRequestCallback === "function") {
this.beforeRequestCallback($config)
this.beforeRequestCallback = undefined
return $config
this.beforeRequestCallback($config);
this.beforeRequestCallback = undefined;
return $config;
}
if (EnclosureHttp.initConfig.beforeRequestCallback) {
EnclosureHttp.initConfig.beforeRequestCallback($config)
return $config
EnclosureHttp.initConfig.beforeRequestCallback($config);
return $config;
}
return $config
return $config;
},
error => {
return Promise.reject(error)
return Promise.reject(error);
}
)
);
}
/**
@@ -146,7 +148,7 @@ class EnclosureHttp {
* @returns void 0
*/
public clearCancelTokenList(): void {
this.sourceTokenList.length = 0
this.sourceTokenList.length = 0;
}
/**
@@ -154,74 +156,75 @@ class EnclosureHttp {
* @returns void 0
*/
private httpInterceptorsResponse(): void {
const instance = EnclosureHttp.axiosInstance
const instance = EnclosureHttp.axiosInstance;
instance.interceptors.response.use(
(response: EnclosureHttpResoponse) => {
// 请求每次成功一次就删除当前canceltoken标记
const cancelKey = this.genUniqueKey(response.config)
this.deleteCancelTokenByCancelKey(cancelKey)
const cancelKey = EnclosureHttp.genUniqueKey(response.config);
this.deleteCancelTokenByCancelKey(cancelKey);
// 优先判断post/get等方法是否传入回掉否则执行初始化设置等回掉
if (typeof this.beforeResponseCallback === "function") {
this.beforeResponseCallback(response)
this.beforeResponseCallback = undefined
return response.data
this.beforeResponseCallback(response);
this.beforeResponseCallback = undefined;
return response.data;
}
if (EnclosureHttp.initConfig.beforeResponseCallback) {
EnclosureHttp.initConfig.beforeResponseCallback(response)
return response.data
EnclosureHttp.initConfig.beforeResponseCallback(response);
return response.data;
}
NProgress.done()
return response.data
NProgress.done();
return response.data;
},
(error: EnclosureHttpError) => {
const $error = error
const $error = error;
// 判断当前的请求中是否在 取消token数组理存在如果存在则移除单次请求流程
if (this.currentCancelTokenKey) {
const haskey = this.sourceTokenList.filter(
cancelToken => cancelToken.cancelKey === this.currentCancelTokenKey
).length
).length;
if (haskey) {
this.sourceTokenList = this.sourceTokenList.filter(
cancelToken =>
cancelToken.cancelKey !== this.currentCancelTokenKey
)
this.currentCancelTokenKey = ""
);
this.currentCancelTokenKey = "";
}
}
$error.isCancelRequest = Axios.isCancel($error)
$error.isCancelRequest = Axios.isCancel($error);
// 所有的响应异常 区分来源为取消请求/非取消请求
return Promise.reject($error)
return Promise.reject($error);
}
)
);
}
public request<T>(
method: RequestMethods,
url: string,
param?: AxiosRequestConfig,
axiosConfig?: EnclosureHttpRequestConfig,
axiosConfig?: EnclosureHttpRequestConfig
): Promise<T> {
const config = transformConfigByMethod(param, {
method,
url,
...axiosConfig
} as EnclosureHttpRequestConfig)
} as EnclosureHttpRequestConfig);
// 单独处理自定义请求/响应回掉
if (axiosConfig?.beforeRequestCallback) {
this.beforeRequestCallback = axiosConfig.beforeRequestCallback
this.beforeRequestCallback = axiosConfig.beforeRequestCallback;
}
if (axiosConfig?.beforeResponseCallback) {
this.beforeResponseCallback = axiosConfig.beforeResponseCallback
this.beforeResponseCallback = axiosConfig.beforeResponseCallback;
}
return new Promise((resolve, reject) => {
EnclosureHttp.axiosInstance.request(config)
EnclosureHttp.axiosInstance
.request(config)
.then((response: EnclosureHttpResoponse) => {
resolve(response)
resolve(response);
})
.catch((error: any) => {
reject(error)
})
})
reject(error);
});
});
}
public post<T>(
@@ -229,7 +232,7 @@ class EnclosureHttp {
params?: T,
config?: EnclosureHttpRequestConfig
): Promise<T> {
return this.request<T>("post", url, params, config)
return this.request<T>("post", url, params, config);
}
public get<T>(
@@ -237,8 +240,8 @@ class EnclosureHttp {
params?: T,
config?: EnclosureHttpRequestConfig
): Promise<T> {
return this.request<T>("get", url, params, config)
return this.request<T>("get", url, params, config);
}
}
export default EnclosureHttp
export default EnclosureHttp;

View File

@@ -1,3 +1,2 @@
import EnclosureHttp from "./core"
export const http = new EnclosureHttp()
import EnclosureHttp from "./core";
export const http = new EnclosureHttp();

View File

@@ -1,4 +1,4 @@
import { EnclosureHttpRequestConfig } from "./types.d"
import { EnclosureHttpRequestConfig } from "./types.d";
export function excludeProps<T extends { [key: string]: any }>(
origin: T,
@@ -7,23 +7,23 @@ export function excludeProps<T extends { [key: string]: any }>(
return Object.keys(origin)
.filter(key => !prop.includes(key))
.reduce((res, key) => {
res[key] = origin[key]
return res
}, {} as { [key: string]: T })
res[key] = origin[key];
return res;
}, {} as { [key: string]: T });
}
export function transformConfigByMethod(
params: any,
config: EnclosureHttpRequestConfig
): EnclosureHttpRequestConfig {
const { method } = config
const { method } = config;
const props = ["delete", "get", "head", "options"].includes(
method!.toLocaleLowerCase()
)
? "params"
: "data"
: "data";
return {
...config,
[props]: params
}
};
}