@cloudbase/types
Version:
cloudbase javascript sdk types
105 lines (93 loc) • 2.85 kB
TypeScript
import { CloudbaseAdapter, SDKAdapterInterface } from '@cloudbase/adapter-interface'
import { ICloudbaseComponent, ICloudbaseHook } from './component'
import { ICloudbaseRequest } from './request'
import { ICloudbaseCache } from './cache'
import { ICloudbaseAuth } from './auth'
export enum LANGS {
ZH = 'zh-CN',
EN = 'en-US',
}
export type Persistence = 'local' | 'session' | 'none'
export interface KV<T> {
[key: string]: T
}
export interface KVstring {
[key: string]: string
}
export type EndPointKey = 'CLOUD_API' | 'GATEWAY'
export interface ICloudbaseConfig {
env: string
region?: string
timeout?: number
persistence?: Persistence
oauthClient?: any
debug?: boolean
_fromApp?: ICloudbase
clientId?: string
oauthInstance?: any
wxCloud?: any
i18n?: {
t: (text: string) => string
LANG_HEADER_KEY: string
lang: LANGS
}
accessKey?: string
endPointMode?: EndPointKey // auth请求域名模式,默认CLOUD_API
useWxCloud?: boolean // 是否使用微信云开发链路
}
// 可更新的配置字段
export type ICloudbaseUpgradedConfig = Pick<ICloudbaseConfig, 'persistence' | 'region' | 'debug'>
export interface ICloudbaseExtension {
name: string
invoke: (opts: any, app: ICloudbase) => Promise<any>
}
export interface ICloudbaseApis {
[apiName: string]: (apiName: string) => {
[method: string]: (callApiOptions: ICallApiOptions, opts: KV<any>) => Promise<ResponseObject['data']>
}
}
export interface ICloudbase {
config: ICloudbaseConfig
platform: ICloudbasePlatformInfo
cache: ICloudbaseCache
request: ICloudbaseRequest
oauthClient: any
localCache: ICloudbaseCache
authInstance?: ICloudbaseAuth
oauthInstance?: any
apis: ICloudbaseApis
init: (config: ICloudbaseConfig & { lang?: LANGS }) => ICloudbase
updateConfig: (config: ICloudbaseUpgradedConfig) => void
registerExtension: (ext: ICloudbaseExtension) => void
invokeExtension: (name: string, opts: any) => Promise<any>
useAdapters: (adapters: CloudbaseAdapter | CloudbaseAdapter[], options?: any) => void
registerComponent: (component: ICloudbaseComponent) => void
registerHook: (hook: ICloudbaseHook) => void
registerVersion: (version: string) => void
fire?: (...args: any[]) => void
updateLang?: (lang: LANGS) => void
getEndPointWithKey?: (key: EndPointKey) => {
BASE_URL: string;
PROTOCOL: string;
}
}
export interface ICloudbasePlatformInfo {
adapter?: SDKAdapterInterface
runtime?: string
}
export interface IGenericError<T extends string, P = any> extends Error {
type: T
payload: P
generic: boolean
}
export interface ICallApiOptions {
/** api标识 */
name: string
/** 请求的path */
path?: string
method?: string
headers?: KV<any>
/** 请求体,根据content-type可以是不同类型 */
body?: KV<any> | string
token?: string
}