63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
import type { InitHttpCallback } from './init-http'
|
|
import type { CramiHttpOptions } from './typing'
|
|
|
|
export interface HttpObjType extends Partial<InitHttpCallback>{
|
|
__isMerging?: boolean
|
|
[key: string]: any
|
|
}
|
|
// 去除vue中的白名单
|
|
const ALLOW_WHITE_LIST = [
|
|
'__isVue',
|
|
'__v_isRef',
|
|
'__v_isReadonly',
|
|
'__v_isReactive',
|
|
]
|
|
|
|
const ERROR_LIST = [
|
|
'request',
|
|
'get',
|
|
'post',
|
|
'put',
|
|
'delete',
|
|
'option',
|
|
]
|
|
|
|
const httpObj: HttpObjType = {
|
|
__isMerging: false,
|
|
}
|
|
export const Http: InitHttpCallback = new Proxy(
|
|
httpObj, {
|
|
get: (target, key) => {
|
|
const isExist = Reflect.has(target, key)
|
|
// 如果我们想要的属性不存在,就给他报错
|
|
if (!isExist && !target.__isMerging && !ALLOW_WHITE_LIST.includes(String(key))) {
|
|
if (ERROR_LIST.includes(String(key)))
|
|
console.error(`Http.${String(key)} is not exist,maybe you forgot to import {createHttp} from "@crami/http" to init it`)
|
|
|
|
return undefined
|
|
}
|
|
return Reflect.get(target, key)
|
|
},
|
|
set(target, key, value) {
|
|
return Reflect.set(target, key, value)
|
|
},
|
|
},
|
|
) as InitHttpCallback
|
|
|
|
interface AppOptions{
|
|
hooks: Omit<CramiHttpOptions, 'headers'>
|
|
}
|
|
|
|
export const app: AppOptions = {
|
|
hooks: {},
|
|
}
|
|
|
|
export enum ContentTypeEnum {
|
|
// json
|
|
JSON = 'application/json;charset=UTF-8',
|
|
// form-data qs
|
|
FORM = 'application/x-www-form-urlencoded;charset=UTF-8',
|
|
// form-data upload
|
|
UPLOAD = 'multipart/form-data;charset=UTF-8',
|
|
}
|