index.ts 989 字节
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2
import { hasOwn } from '@vue/shared'

fxy060608's avatar
fxy060608 已提交
3 4 5 6 7
import { upx2px } from '@dcloudio/uni-api/src/service/base/upx2px'
import {
  addInterceptor,
  removeInterceptor,
} from '@dcloudio/uni-api/src/service/base/interceptor'
fxy060608's avatar
fxy060608 已提交
8

fxy060608's avatar
fxy060608 已提交
9
import { promisify } from './promise'
fxy060608's avatar
fxy060608 已提交
10
import { initWrapper } from './wrapper'
fxy060608's avatar
fxy060608 已提交
11

fxy060608's avatar
fxy060608 已提交
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
import { MPProtocols } from './protocols'

const baseApis = { upx2px, addInterceptor, removeInterceptor }

export function initUni(api: Record<string, any>, protocols: MPProtocols) {
  const wrapper = initWrapper(protocols)
  const UniProxyHandlers: ProxyHandler<any> = {
    get(target: object, key: string) {
      if (hasOwn(target, key)) {
        return target[key]
      }
      if (hasOwn(api, key)) {
        return promisify(key, api[key])
      }
      if (hasOwn(baseApis, key)) {
        return promisify(key, baseApis[key])
      }
      // event-api
      // provider-api?
      return promisify(key, wrapper(key, __GLOBAL__[key]))
32
    },
fxy060608's avatar
fxy060608 已提交
33 34 35
  }
  return new Proxy({}, UniProxyHandlers)
}