zhizhi/node_modules/dingtalk-jsapi/lib/sdk/sdkLib.d.ts

210 lines
6.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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>;