210 lines
6.8 KiB
TypeScript
210 lines
6.8 KiB
TypeScript
export interface IErrorMessage {
|
||
/** the error code */
|
||
errorCode?: string;
|
||
/** the error message */
|
||
errorMessage?: string;
|
||
}
|
||
export interface ICallbackOption<S> {
|
||
onSuccess?(data: S): void;
|
||
onFail?(err: IErrorMessage): void;
|
||
onCancel?(err: IErrorMessage): void;
|
||
}
|
||
export declare type IJSBridge = (method: string, params: any) => Promise<any>;
|
||
export declare type ICommonAPI<S, T> = (params: S & ICallbackOption<T>) => Promise<T>;
|
||
export interface IInvokeAPIConfigMap {
|
||
[platform: string]: IAPIConfig | undefined;
|
||
}
|
||
export interface IAPIConfig {
|
||
/** the minSupport version about the API */
|
||
vs: string | {
|
||
[platformSub: string]: string;
|
||
};
|
||
invokeName?: string;
|
||
/**
|
||
* 应返回新的转换后的参数,不应直接修改传入的变量
|
||
*/
|
||
paramsDeal?: (params: any) => any | Promise<any>;
|
||
/**
|
||
* 应返回新的转换后的参数,不应直接修改传入的变量
|
||
*/
|
||
resultDeal?: (res: any) => any;
|
||
}
|
||
export interface IJSBridgeMap {
|
||
[platform: string]: IJSBridge | undefined;
|
||
}
|
||
export interface IInvokeAPIConfigMapByMethod {
|
||
[method: string]: IInvokeAPIConfigMap | undefined;
|
||
}
|
||
export declare function isFunction(param: any): boolean;
|
||
/**
|
||
* when origin >= target ,return true
|
||
* 关于为什么没有跟otherApi保持一致,主要是当初因为otherApi里的方法是复制旧版jsapi的,有一定缺陷
|
||
* 但是担心线上环境利用了缺陷来做逻辑,所以没有保持一致使用同一个方法
|
||
* TODO: 但其实另起方法太冗余,以及丑陋,后续还是需要整个统一掉
|
||
* @param origin
|
||
* @param target
|
||
*/
|
||
export declare function compareVersion(origin: string, target: string): boolean;
|
||
/**
|
||
* 客户端错误码
|
||
*/
|
||
export declare enum ERROR_CODE {
|
||
cancel = "-1",
|
||
not_exist = "1",
|
||
no_permission = "7"
|
||
}
|
||
export declare enum ENV_ENUM {
|
||
pc = "pc",
|
||
android = "android",
|
||
ios = "ios",
|
||
gdtPc = "gdtPc",
|
||
/**
|
||
* gdt Android mpaas 容器
|
||
*/
|
||
gdtAndroid = "gdtAndroid",
|
||
/**
|
||
* gdt Ios mpaas 容器
|
||
*/
|
||
gdtIos = "gdtIos",
|
||
/**
|
||
* gdt Android 标准 容器
|
||
*/
|
||
gdtStandardAndroid = "gdtStandardAndroid",
|
||
/**
|
||
* gdt Ios 标准 容器
|
||
*/
|
||
gdtStandardIos = "gdtStandardIos",
|
||
notInDingTalk = "notInDingTalk",
|
||
windows = "windows",
|
||
mac = "mac",
|
||
harmony = "harmony"
|
||
}
|
||
export declare enum ENV_ENUM_SUB {
|
||
mac = "mac",
|
||
win = "win",
|
||
noSub = "noSub"
|
||
}
|
||
export declare enum APP_TYPE {
|
||
WEB = "WEB",
|
||
MINI_APP = "MINI_APP",
|
||
WEEX = "WEEX",
|
||
WEBVIEW_IN_MINIAPP = "WEBVIEW_IN_MINIAPP",
|
||
WEEX_WIDGET = "WEEX_WIDGET"
|
||
}
|
||
export interface IENV {
|
||
/** current platform (iOS or Android or PC or NotInDingTalk) */
|
||
platform: ENV_ENUM;
|
||
/** current sub platform (support mac & win) */
|
||
platformSub?: ENV_ENUM_SUB;
|
||
/** current client version */
|
||
version?: string;
|
||
/** @deprecated recommend use navigator.language to get current language */
|
||
language?: string;
|
||
/** current appType (web or eapp or weex) */
|
||
appType: APP_TYPE;
|
||
[key: string]: any;
|
||
}
|
||
export interface IConfigParams {
|
||
jsApiList?: string[];
|
||
[key: string]: any;
|
||
}
|
||
export interface IDevConfigParams {
|
||
/** 是否开启调试模式 */
|
||
debug?: boolean;
|
||
/** 是否校验Api是否支持等 */
|
||
isAuthApi?: boolean;
|
||
/** 废除兼容性处理 */
|
||
isDisableDeal?: boolean;
|
||
/** 部分接口废除兼容性处理 */
|
||
disbaleDealApiWhiteList?: string[];
|
||
/** 接口层面开启兼容性处理,优先级大于废除逻辑 */
|
||
forceEnableDealApiFnMap?: {
|
||
[apiName: string]: (params: any) => boolean;
|
||
};
|
||
onBeforeInvokeAPI?: (data: {
|
||
invokeId: string;
|
||
method: string;
|
||
startTime: number;
|
||
params: any;
|
||
}) => void;
|
||
onAfterInvokeAPI?: (data: {
|
||
invokeId: string;
|
||
method: string;
|
||
params: any;
|
||
payload: any;
|
||
duration: number;
|
||
startTime: number;
|
||
isSuccess: boolean;
|
||
}) => void;
|
||
extraPlatform?: IPlatformConfig;
|
||
}
|
||
export interface IEvent {
|
||
preventDefault: () => void;
|
||
}
|
||
export declare enum LogLevel {
|
||
INFO = 1,
|
||
WARNING = 2,
|
||
ERROR = 3
|
||
}
|
||
export interface ILog {
|
||
level: LogLevel;
|
||
text: any[];
|
||
time: Date;
|
||
}
|
||
export declare type ILogFn = (option: ILog) => void;
|
||
export interface IPlatformConfig {
|
||
platform: string;
|
||
authMethod: string;
|
||
authParamsDeal?: (params: object) => object;
|
||
bridgeInit: () => Promise<IJSBridge>;
|
||
event?: {
|
||
on: (type: string, handler: (e: IEvent) => void) => void;
|
||
off: (type: string, handler: (e: IEvent) => void) => void;
|
||
};
|
||
}
|
||
export interface ICheckJsApiParams {
|
||
jsApiList?: string[];
|
||
}
|
||
export interface ICheckJsApiResult {
|
||
[jsApi: string]: boolean;
|
||
}
|
||
export declare type ICheckJsApiFn = (params: ICheckJsApiParams) => Promise<ICheckJsApiResult>;
|
||
export interface IUNCore {
|
||
/** 当config权限校验成功时触发readyCallback */
|
||
ready: (readyCallback: () => void) => void;
|
||
/** 当config权限校验成功时触发readyCallback */
|
||
error: (callback: (err: any) => void) => void;
|
||
/** 配置权限校验参数, 即可启动校验,启动校验成功后可以让本没有权限的接口获取权限,如果你的域名是白名单或者调用的接口不需要校验,可不用调用此接口 */
|
||
config: (configParams: IConfigParams) => void;
|
||
/** 配置开发选项 */
|
||
devConfig: (devConfigParams: IDevConfigParams) => void;
|
||
/** 推荐使用on绑定方法, 替代原本document的方式 */
|
||
on: (methodName: string, listener: (e: IEvent | any) => void) => void;
|
||
/** 推荐使用off解绑方法,替代document的方式 */
|
||
off: (methodName: string, listener: (e: IEvent | any) => void) => void;
|
||
/** 当前运行时的环境变量 */
|
||
env: IENV;
|
||
/**
|
||
* 提供检测jsapi能力的接口
|
||
* @description 本接口原理依赖于 JSAPI 的静态支持版本数据,故存在一定的误差
|
||
* @deprecated 移动端上推荐使用 plugin/checkJsApi.ts 来检测真实环境下的支持情况
|
||
*/
|
||
checkJsApi: ICheckJsApiFn;
|
||
/** 直接通过method名调用jsapi,新的接口基本不存在多端不一致的问题,可以使用此接口代替。注意:但如果直接调用旧的jsapi接口,且没有引入对应接口库,将不会对入参出参进行兼容操作 */
|
||
_invoke: (method: string, params?: any) => Promise<any>;
|
||
}
|
||
export interface IConfigCoreMap {
|
||
[platform: string]: IPlatformConfig | undefined;
|
||
}
|
||
export interface IApiMiddlewareContext {
|
||
method: string;
|
||
params: any;
|
||
isAuthApi: boolean;
|
||
invokeName?: string;
|
||
callParams?: any;
|
||
JSBridge?: IJSBridge;
|
||
apiConfig?: IAPIConfig;
|
||
}
|
||
export declare type IApiMiddlewareNextFn = () => Promise<any>;
|
||
export declare type IApiMiddlewareFn = (context: IApiMiddlewareContext, next: IApiMiddlewareNextFn) => Promise<any>;
|