@cloudbase/utilities
Version:
cloudbase javascript sdk utilities
35 lines (30 loc) • 956 B
text/typescript
import { CloudbaseAdapter, SDKAdapterInterface, NodeAdapterInterface } from '@cloudbase/adapter-interface'
import * as Web from './platforms/web'
import { isArray } from '../libs/util'
export enum RUNTIME {
WEB = 'web',
WX_MP = 'wx_mp', // 微信小程序
}
type ICloudbaseAdapter = CloudbaseAdapter & {
genAdapter: (options?: any) => SDKAdapterInterface | NodeAdapterInterface
}
export function useAdapters(adapters: ICloudbaseAdapter | ICloudbaseAdapter[], options?: any) {
const adapterList: ICloudbaseAdapter[] = isArray(adapters)
? (adapters as ICloudbaseAdapter[])
: [adapters as ICloudbaseAdapter]
for (const adapter of adapterList) {
const { isMatch, genAdapter, runtime } = adapter
if (isMatch()) {
return {
adapter: { isMatch, ...genAdapter(options) },
runtime,
}
}
}
}
export function useDefaultAdapter() {
return {
adapter: Web.genAdapter(),
runtime: RUNTIME.WEB,
}
}