chore: init read-star monorepo
This commit is contained in:
61
packages/axios/src/options.ts
Normal file
61
packages/axios/src/options.ts
Normal file
@ -0,0 +1,61 @@
|
||||
import type { CreateAxiosDefaults } from 'axios'
|
||||
import type { IAxiosRetryConfig } from 'axios-retry'
|
||||
import type { RequestOption } from './type'
|
||||
import { stringify } from 'qs'
|
||||
import { isHttpSuccess } from './shared'
|
||||
|
||||
export function createDefaultOptions<
|
||||
ResponseData,
|
||||
ApiData = ResponseData,
|
||||
State extends Record<string, unknown> = Record<string, unknown>,
|
||||
>(options?: Partial<RequestOption<ResponseData, ApiData, State>>) {
|
||||
const opts: RequestOption<ResponseData, ApiData, State> = {
|
||||
defaultState: {} as State,
|
||||
transform: async response => response.data as unknown as ApiData,
|
||||
transformBackendResponse: async response => response.data as unknown as ApiData,
|
||||
onRequest: async config => config,
|
||||
isBackendSuccess: _response => true,
|
||||
onBackendFail: async () => {},
|
||||
onError: async () => {},
|
||||
}
|
||||
|
||||
if (options?.transform) {
|
||||
opts.transform = options.transform
|
||||
}
|
||||
else {
|
||||
opts.transform = options?.transformBackendResponse || opts.transform
|
||||
}
|
||||
|
||||
Object.assign(opts, options)
|
||||
|
||||
return opts
|
||||
}
|
||||
|
||||
export function createRetryOptions(config?: Partial<CreateAxiosDefaults>) {
|
||||
const retryConfig: IAxiosRetryConfig = {
|
||||
retries: 0,
|
||||
}
|
||||
|
||||
Object.assign(retryConfig, config)
|
||||
|
||||
return retryConfig
|
||||
}
|
||||
|
||||
export function createAxiosConfig(config?: Partial<CreateAxiosDefaults>) {
|
||||
const TEN_SECONDS = 10 * 1000
|
||||
|
||||
const axiosConfig: CreateAxiosDefaults = {
|
||||
timeout: TEN_SECONDS,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
validateStatus: isHttpSuccess,
|
||||
paramsSerializer: (params) => {
|
||||
return stringify(params)
|
||||
},
|
||||
}
|
||||
|
||||
Object.assign(axiosConfig, config)
|
||||
|
||||
return axiosConfig
|
||||
}
|
||||
Reference in New Issue
Block a user