@varlet/axle 0.2.3 → 0.2.4-alpha.1701343124078
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/index.d.ts +1 -0
- package/es/index.js +1 -0
- package/es/instance.d.ts +10 -1
- package/es/instance.js +8 -0
- package/es/interceptors/index.d.ts +2 -0
- package/es/interceptors/index.js +2 -0
- package/es/interceptors/requestHeadersInterceptor.d.ts +7 -0
- package/es/interceptors/requestHeadersInterceptor.js +18 -0
- package/es/interceptors/responseBlobInterceptor.d.ts +7 -0
- package/es/interceptors/responseBlobInterceptor.js +15 -0
- package/package.json +1 -1
package/es/index.d.ts
CHANGED
package/es/index.js
CHANGED
package/es/instance.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, HeadersDefaults, ResponseType } from 'axios';
|
|
1
|
+
import type { AxiosInstance, AxiosInterceptorOptions, AxiosRequestConfig, AxiosResponse, HeadersDefaults, InternalAxiosRequestConfig, ResponseType } from 'axios';
|
|
2
2
|
export type AxleRequestConfig = AxiosRequestConfig & {
|
|
3
3
|
exceptionMessage?: any;
|
|
4
4
|
};
|
|
@@ -7,6 +7,13 @@ export type ModifyRunner = <T = any, R = AxiosResponse<T>>(url: string, params?:
|
|
|
7
7
|
export type FetchMethod = 'get' | 'delete' | 'options' | 'head';
|
|
8
8
|
export type ModifyMethod = 'post' | 'put' | 'patch';
|
|
9
9
|
export type RunnerMethod = keyof Omit<AxleInstance, 'axios' | 'getHeaders' | 'setHeader' | 'removeHeader'>;
|
|
10
|
+
export interface Interceptor<V> {
|
|
11
|
+
onFulfilled?: ((value: V) => any) | null;
|
|
12
|
+
onRejected?: ((error: any) => any) | null;
|
|
13
|
+
options?: AxiosInterceptorOptions;
|
|
14
|
+
}
|
|
15
|
+
export type RequestInterceptor = Interceptor<InternalAxiosRequestConfig>;
|
|
16
|
+
export type ResponseInterceptor<V = AxiosResponse<any, any>> = Interceptor<V>;
|
|
10
17
|
export type AxleInstance = {
|
|
11
18
|
get: FetchRunner;
|
|
12
19
|
getBlob: FetchRunner;
|
|
@@ -44,6 +51,8 @@ export type AxleInstance = {
|
|
|
44
51
|
getHeaders(): HeadersDefaults['common'];
|
|
45
52
|
setHeader(key: string, value: string): void;
|
|
46
53
|
removeHeader(key: string | string[]): void;
|
|
54
|
+
useRequestInterceptor(interceptor: RequestInterceptor): void;
|
|
55
|
+
useResponseInterceptor(interceptor: ResponseInterceptor): void;
|
|
47
56
|
axios: AxiosInstance;
|
|
48
57
|
};
|
|
49
58
|
export declare function createFetchRunner(service: AxiosInstance, method: FetchMethod, responseType: ResponseType): <T, R = AxiosResponse<T, any>>(url: string, params?: any, config?: AxleRequestConfig) => Promise<R>;
|
package/es/instance.js
CHANGED
|
@@ -51,6 +51,12 @@ export function createAxle(config = {}) {
|
|
|
51
51
|
}
|
|
52
52
|
key.forEach((k) => Reflect.deleteProperty(service.defaults.headers['common'], k));
|
|
53
53
|
}
|
|
54
|
+
function useRequestInterceptor(interceptor) {
|
|
55
|
+
service.interceptors.request.use(interceptor.onFulfilled, interceptor.onRejected, interceptor.options);
|
|
56
|
+
}
|
|
57
|
+
function useResponseInterceptor(interceptor) {
|
|
58
|
+
service.interceptors.response.use(interceptor.onFulfilled, interceptor.onRejected, interceptor.options);
|
|
59
|
+
}
|
|
54
60
|
return {
|
|
55
61
|
get: createFetchRunner(service, 'get', 'json'),
|
|
56
62
|
getBlob: createFetchRunner(service, 'get', 'blob'),
|
|
@@ -88,6 +94,8 @@ export function createAxle(config = {}) {
|
|
|
88
94
|
getHeaders,
|
|
89
95
|
setHeader,
|
|
90
96
|
removeHeader,
|
|
97
|
+
useRequestInterceptor,
|
|
98
|
+
useResponseInterceptor,
|
|
91
99
|
axios: service,
|
|
92
100
|
};
|
|
93
101
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RequestInterceptor } from '../instance';
|
|
2
|
+
import type { AxiosInterceptorOptions } from 'axios';
|
|
3
|
+
export interface RequestHeadersInterceptorOptions {
|
|
4
|
+
headers?: Record<string, string> | (() => Record<string, string>);
|
|
5
|
+
axiosInterceptorOptions?: AxiosInterceptorOptions;
|
|
6
|
+
}
|
|
7
|
+
export declare function requestHeadersInterceptor(options?: RequestHeadersInterceptorOptions): RequestInterceptor;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isFunction } from '@varlet/shared';
|
|
2
|
+
export function requestHeadersInterceptor(options = {}) {
|
|
3
|
+
const { headers: headersOrGetter } = options;
|
|
4
|
+
return {
|
|
5
|
+
onFulfilled(config) {
|
|
6
|
+
var _a;
|
|
7
|
+
const headers = (_a = (isFunction(headersOrGetter) ? headersOrGetter() : headersOrGetter)) !== null && _a !== void 0 ? _a : {};
|
|
8
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
9
|
+
config.headers[key] = value;
|
|
10
|
+
});
|
|
11
|
+
return config;
|
|
12
|
+
},
|
|
13
|
+
onRejected(error) {
|
|
14
|
+
return Promise.reject(error);
|
|
15
|
+
},
|
|
16
|
+
options: options.axiosInterceptorOptions
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AxiosInterceptorOptions, AxiosResponse } from 'axios';
|
|
2
|
+
import type { ResponseInterceptor } from '../instance';
|
|
3
|
+
export interface ResponseBlobInterceptorOptions {
|
|
4
|
+
data?: (response: AxiosResponse<any, any>) => any;
|
|
5
|
+
axiosInterceptorOptions?: AxiosInterceptorOptions;
|
|
6
|
+
}
|
|
7
|
+
export declare function responseBlobInterceptor(options?: ResponseBlobInterceptorOptions): ResponseInterceptor;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function responseBlobInterceptor(options = {}) {
|
|
2
|
+
return {
|
|
3
|
+
onFulfilled(response) {
|
|
4
|
+
var _a, _b;
|
|
5
|
+
if (response.request.responseType === 'blob') {
|
|
6
|
+
return (_b = (_a = options.data) === null || _a === void 0 ? void 0 : _a.call(options, response)) !== null && _b !== void 0 ? _b : response;
|
|
7
|
+
}
|
|
8
|
+
return response;
|
|
9
|
+
},
|
|
10
|
+
onRejected(error) {
|
|
11
|
+
return Promise.reject(error);
|
|
12
|
+
},
|
|
13
|
+
options: options.axiosInterceptorOptions,
|
|
14
|
+
};
|
|
15
|
+
}
|