修改持续集成脚本

pull/1/head
early-autumn 2020-05-05 16:45:39 +08:00
parent 2b2be5ba17
commit 7fb43d4842
15 changed files with 20 additions and 137 deletions

2
.idea/.gitignore vendored
View File

@ -1,2 +0,0 @@
# Default ignored files
/workspace.xml

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
</project>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/axios-miniprogram.iml" filepath="$PROJECT_DIR$/.idea/axios-miniprogram.iml" />
</modules>
</component>
</project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -6,4 +6,6 @@ cache:
install:
- npm install
script:
- npm run prettier
- npm run lint
- npm run coverage

View File

@ -459,9 +459,9 @@ const uri = axios.getUri({
});
```
### `axios.create(config)`
### `axios.create(defaults)`
创建一个`自定义实例`,传入的自定义配置`config`会和`axios`的默认配置`axios.defaults`合并成`自定义实例`的默认配置。
创建一个`自定义实例`,传入的自定义默认配置`defaults`会和`axios`的默认配置`axios.defaults`合并成`自定义实例`的默认配置。
`自定义实例`拥有和`axios`相同的调用方式和请求方法的别名。
@ -484,9 +484,9 @@ instance.get('/test');
### `axios.Axios`
`axios.Axios`是一个类,其实`axios`就是`axios.Axios`类的实例改造而来的,`axios.create(config)`创建的也是`axios.Axios`的实例。
`axios.Axios`是一个类,其实`axios`就是`axios.Axios`类的实例改造而来的,`axios.create(defaults)`创建的也是`axios.Axios`的实例。
直接实例化`axios.Axios`可以得到一个`纯净的实例`,不能当函数调用,传入的自定义配置就是`纯净的实例`的默认配置,而不会像`axios.create(config)`一样去合并`axios`中的默认配置。
直接实例化`axios.Axios`可以得到一个`纯净的实例`,不能当函数调用,传入的自定义配置就是`纯净的实例`的默认配置,而不会像`axios.create(defaults)`一样去合并`axios`中的默认配置。
```typescript
axios.defaults.baseURL = 'https://www.xxx.com';

View File

@ -20,7 +20,7 @@
},
"husky": {
"hooks": {
"pre-commit": "yarn lint && yarn prettier && yarn test:cov && git add ."
"pre-commit": "yarn prettier && yarn lint && yarn test:cov && git add ."
}
},
"jest": {

View File

@ -8,7 +8,7 @@ import fs from 'fs';
import path from 'path';
import nodeResolve from 'rollup-plugin-node-resolve';
import babel from 'rollup-plugin-babel';
import typescript from 'rollup-plugin-typescript2';
import typescript2 from 'rollup-plugin-typescript2';
function removeDir(name) {
try {
@ -34,7 +34,7 @@ export default function() {
},
plugins: [
nodeResolve({ extensions: ['.ts'] }),
typescript({ useTsconfigDeclarationDir: true }),
typescript2({ useTsconfigDeclarationDir: true }),
babel({ extensions: ['.ts'] }),
],
};

View File

@ -2,7 +2,7 @@
* @Author: early-autumn
* @Date: 2020-04-13 20:00:08
* @LastEditors: early-autumn
* @LastEditTime: 2020-05-02 17:43:27
* @LastEditTime: 2020-05-05 08:52:21
*/
import { CancelToken, CancelAction, CancelExecutor, CancelTokenSource } from '../types';
import Cancel from './Cancel';
@ -51,7 +51,7 @@ export default class CancelTokenClass implements CancelToken {
*
* CancelTokenSource.token
*/
static source(): CancelTokenSource {
public static source(): CancelTokenSource {
let cancel!: CancelAction;
const token = new CancelTokenClass(function executor(action) {

View File

@ -2,7 +2,7 @@
* @Author: early-autumn
* @Date: 2020-04-13 18:00:27
* @LastEditors: early-autumn
* @LastEditTime: 2020-04-25 09:23:14
* @LastEditTime: 2020-05-05 08:58:47
*/
import { Method, Params, Data, Interceptors, AxiosRequestConfig, AxiosResponse, Axios } from '../types';
import buildURL from '../helpers/buildURL';
@ -11,9 +11,6 @@ import InterceptorManager from './InterceptorManager';
import dispatchRequest from './dispatchRequest';
export default class AxiosClass implements Axios {
/**
* Axios
*/
public interceptors: Interceptors = {
request: new InterceptorManager<AxiosRequestConfig>(),
response: new InterceptorManager<AxiosResponse>(),
@ -24,22 +21,12 @@ export default class AxiosClass implements Axios {
*/
public constructor(public defaults: AxiosRequestConfig = {}) {}
/**
* url params URI
*
* @param config Axios
*/
public getUri(config: AxiosRequestConfig): string {
const { url = '', params, paramsSerializer } = mergeConfig(this.defaults, config);
return buildURL(url, params, paramsSerializer).replace(/^\?/, '');
}
/**
* HTTP
*
* @param config Axios
*/
public request<T extends Data>(config: AxiosRequestConfig): Promise<AxiosResponse<T>> {
const requestConfig = mergeConfig(this.defaults, config);
@ -51,97 +38,44 @@ export default class AxiosClass implements Axios {
}, 'reverse');
// 发送请求
let promiseResponse = promiseRequest.then(dispatchRequest) as Promise<AxiosResponse<T>>;
let promiseResponse = promiseRequest.then(dispatchRequest);
// 执行响应拦截器
this.interceptors.response.forEach(function executor({ resolved, rejected }) {
promiseResponse = promiseResponse.then(resolved, rejected);
});
return promiseResponse;
return promiseResponse as Promise<AxiosResponse<T>>;
}
/**
* HTTP OPTIONS
*
* @param url
* @param config
*/
public options<T extends Data>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
return this._requestMethodWithoutParams<T>('options', url, undefined, config);
}
/**
* HTTP GET
*
* @param url
* @param params
* @param config
*/
public get<T extends Data>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
return this._requestMethodWithoutParams<T>('get', url, params, config);
}
/**
* HTTP HEAD
*
* @param url
* @param params
* @param config
*/
public head<T extends Data>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
return this._requestMethodWithoutParams<T>('head', url, params, config);
}
/**
* HTTP POST
*
* @param url
* @param data
* @param config
*/
public post<T extends Data>(url: string, data?: Data, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
return this._requestMethodWithoutData<T>('post', url, data, config);
}
/**
* HTTP PUT
*
* @param url
* @param data
* @param config
*/
public put<T extends Data>(url: string, data?: Data, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
return this._requestMethodWithoutData<T>('put', url, data, config);
}
/**
* HTTP DELETE
*
* @param url
* @param params
* @param config
*/
public delete<T extends Data>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
return this._requestMethodWithoutParams<T>('delete', url, params, config);
}
/**
* HTTP TRACE
*
* @param url
* @param config
*/
public trace<T extends Data>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
return this._requestMethodWithoutParams<T>('trace', url, undefined, config);
}
/**
* HTTP CONNECT
*
* @param url
* @param config
*/
public connect<T extends Data>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
return this._requestMethodWithoutParams<T>('connect', url, undefined, config);
}

View File

@ -2,7 +2,7 @@
* @Author: early-autumn
* @Date: 2020-04-15 17:50:50
* @LastEditors: early-autumn
* @LastEditTime: 2020-05-02 14:30:56
* @LastEditTime: 2020-05-05 09:01:50
*/
import {
InterceptorResolved,
@ -26,12 +26,6 @@ export default class InterceptorManagerClass<T> implements InterceptorManager<T>
*/
private _interceptors: Record<number, Interceptor<T>> = {};
/**
*
*
* @param resolved
* @param rejected
*/
public use(resolved: InterceptorResolved<T>, rejected?: InterceptorRejected) {
this._interceptors[++this._id] = {
resolved,
@ -41,21 +35,10 @@ export default class InterceptorManagerClass<T> implements InterceptorManager<T>
return this._id;
}
/**
*
*
* @param id id
*/
public eject(id: number): void {
delete this._interceptors[id];
}
/**
*
*
* @param executor
* @param reverse
*/
public forEach(executor: InterceptorExecutor<T>, reverse?: 'reverse'): void {
let interceptors: Interceptor<T>[] = Object.values(this._interceptors);

View File

@ -2,7 +2,7 @@
* @Author: early-autumn
* @Date: 2020-04-14 23:22:52
* @LastEditors: early-autumn
* @LastEditTime: 2020-04-28 13:06:14
* @LastEditTime: 2020-05-02 22:44:34
*/
import axios from './axios';

View File

@ -2,7 +2,7 @@
* @Author: early-autumn
* @Date: 2020-04-13 15:23:53
* @LastEditors: early-autumn
* @LastEditTime: 2020-05-02 14:37:02
* @LastEditTime: 2020-05-05 09:02:12
*/
/**
@ -181,7 +181,7 @@ export declare interface AdapterRequestTask {
*
*/
export declare interface Adapter {
(config: AdapterRequestConfig): AdapterRequestTask | undefined;
(config: AdapterRequestConfig): AdapterRequestTask | void;
}
/**
@ -390,6 +390,7 @@ export declare interface InterceptorExecutor<T = any> {
*
*/
export declare interface InterceptorManager<T = any> {
[x: string]: any;
/**
*
*
@ -682,7 +683,7 @@ export declare interface AxiosInstance extends AxiosBaseInstance {
/**
* Axios
*
* @param config
* @param defaults
*/
create(defaults?: AxiosRequestConfig): AxiosBaseInstance;