@docoi/mys-sdk 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bridge.d.ts CHANGED
@@ -1,11 +1,50 @@
1
- import { default as JSBridgeSdk, CallOptions, DebugOptions, JSBridgeInterface } from '@docoi/jsbridge-sdk';
2
- import { Callbacks, NativeResponse } from './types';
1
+ import { default as JSBridgeSdk } from '@docoi/jsbridge-sdk';
2
+ import { Callbacks, ChannelDebugOptions, InvokeOptions, ListenOptions, NativeHandler, NativeResponse, RouteInfo, Transport } from './types';
3
3
  export { JSBridgeSdk };
4
- export type NativeHandler<TData = unknown, TResult = unknown> = (data: TData) => TResult | Promise<TResult>;
5
- declare const bridge: JSBridgeInterface;
6
- export declare const setDebug: (enabled: boolean, options?: Partial<DebugOptions>) => JSBridgeInterface;
7
- export default bridge;
8
- export declare function registerNativeHandler<TData = unknown, TResult = unknown>(name: string, handler: NativeHandler<TData, TResult>): JSBridgeInterface;
4
+ declare const bridge: Transport;
5
+ /** 同时作用于两个通道 */
6
+ export declare const setDebug: (enabled: boolean, options?: ChannelDebugOptions) => void;
7
+ /** 监听每次 invoke 的路由结果(走哪个通道、实际发送的方法与参数),仅供调试,只保留一个监听器 */
8
+ export declare const onRoute: (listener?: (info: RouteInfo) => void) => void;
9
+ /** 是否走旧通道:since 大于当前 App 版本(compareVersions 返回 -1)说明 App 还不支持新通道;不在 App 内保持走新通道 */
10
+ export declare function shouldUseLegacy(since?: string): boolean;
11
+ /**
12
+ * 监听 Native 事件,按 since 选择通道,返回取消该次监听的函数。
13
+ * once 由本文件实现(handler 触发时自行取消),不走 lib 的 once:旧通道没有该方法,统一实现行为才一致。
14
+ */
15
+ export declare function listen<T = unknown>(event: string, callback: (payload: T) => void, options?: ListenOptions<T>): () => void;
16
+ /** 取消 listen 登记的监听;不传 callback 时取消该事件下全部监听 */
17
+ export declare function unlisten(event: string, callback?: object): void;
18
+ /**
19
+ * 注册供 Native 调用的方法,按 since 选择通道,返回注销该次注册的函数。
20
+ * 新通道返回值会包装成 NativeResponse,旧通道直接返回原始值。
21
+ */
22
+ export declare function registerHandler<TData = unknown, TResult = unknown>(name: string, handler: NativeHandler<TData, TResult>, since?: string): () => void;
23
+ /** 取消 registerHandler 注册的方法,通道选择规则与注册时一致 */
24
+ export declare function unregisterHandler(name: string, since?: string): void;
25
+ /**
26
+ * 注册供 Native 调用的方法,固定走新通道,返回注销该次注册的函数。
27
+ *
28
+ * @note 需要按 App 版本选择通道时用 registerHandler。
29
+ */
30
+ export declare function registerNativeHandler<TData = unknown, TResult = unknown>(name: string, handler: NativeHandler<TData, TResult>): () => void;
31
+ /** SDK 层参数校验失败,不调用 Native。errMsg 为 `<fn>:fail parameter error: <msg>`,按 1002 走 fail → complete → reject */
9
32
  export declare function rejectParamError<T = void>(fnName: string, msg: string, options?: Callbacks<T>): Promise<never>;
10
- export declare function isNativeResponse(value: unknown): value is NativeResponse;
11
- export declare function invoke<T = void>(fnName: string, data?: object, options?: Callbacks<T>, callOptions?: CallOptions): Promise<NativeResponse<T>>;
33
+ /** 当前环境不支持该能力(如 App 版本过低且没有旧版对应页面):不调用 Native。errMsg 为 `<fn>:fail unsupported: <reason>`,按 5002 走 fail → complete → reject */
34
+ export declare function rejectUnsupported<T = void>(fnName: string, reason: string, options?: Callbacks<T>): Promise<never>;
35
+ /**
36
+ * 执行不经过 Native 的本地动作(location.href、postMessage 等),回调调度与 invoke 一致。
37
+ * 动作发出即视为成功,动作的返回值作为 NativeResponse.result(无返回值的动作为 {});动作抛错按失败处理。
38
+ */
39
+ export declare function invokeLocal<T = void>(fnName: string, detail: Record<string, unknown>, action: () => T, options?: Callbacks<T>): Promise<NativeResponse<T>>;
40
+ export declare function invoke<T = void>(fnName: string, data?: object, options?: Callbacks<T>, invokeOptions?: InvokeOptions): Promise<NativeResponse<T>>;
41
+ /**
42
+ * 同 invoke,供 Demo Inspector 验证错误归一:可以指定任意方法名和通道。
43
+ *
44
+ * 非 App 环境两个通道都得到 BRIDGE_ERROR(5001,管道不存在);App 内调一个不存在的方法名,
45
+ * 新通道取 Native 回的 1001,旧通道由 toLegacyFailure 按 LegacyChannelError.kind 归成 1001。
46
+ *
47
+ * 不在对外 API 清单里,不承诺兼容,随时可能移除。
48
+ */
49
+ export declare const invokeDebug: typeof invoke;
50
+ export default bridge;
@@ -5,9 +5,9 @@
5
5
  */
6
6
  /** 业务成功。 */
7
7
  export declare const SUCCESS = 0;
8
- /** 系统异常。由异常工厂方法使用,业务方不应主动赋值。 */
8
+ /** 系统异常。由 SDK 内部使用,业务方不应主动赋值。 */
9
9
  export declare const SYSTEM_EXCEPTION = -1;
10
- /** 通用业务错误:方法不存在(兜底返回)。 */
10
+ /** 通用业务错误:方法不存在。两个通道的「方法不支持」都归一到这个码。 */
11
11
  export declare const METHOD_NOT_FOUND = 1001;
12
12
  /** 参数错误段起点:参数解析失败、入参校验失败、参数缺失、格式错误等。 */
13
13
  export declare const PARAMS_ERROR = 1002;
@@ -17,5 +17,13 @@ export declare const NOT_LOGGED_IN = 2002;
17
17
  export declare const PERMISSION_DENIED = 3002;
18
18
  /** 网络错误段起点:网络异常、服务端 5xx、超时等。 */
19
19
  export declare const NETWORK_ERROR = 4002;
20
+ /** 环境错误段起点:通信链路问题。 */
21
+ export declare const BRIDGE_ERROR = 5001;
22
+ /** 环境不支持:当前 App 版本没有该能力,SDK 直接返回,不调用 Native。运行环境没有原生通道属于 BRIDGE_ERROR。 */
23
+ export declare const ENV_UNSUPPORTED = 5002;
20
24
  /** 业务自定义错误段起点:业务方自定义错误兜底。 */
21
25
  export declare const CUSTOM = 9002;
26
+ /** 录音:已有录音在进行,重复调用 startRecordAudio 被拒绝,H5 需要先 cancelRecordAudio 再重试。 */
27
+ export declare const RECORD_BUSY = 9101;
28
+ /** 录音:其他录音失败,如麦克风被占用、启动期间被取消、录音器初始化失败、录音中编码或写文件失败,具体原因见 errMsg。 */
29
+ export declare const RECORD_FAILED = 9102;
package/dist/index.d.ts CHANGED
@@ -1,47 +1,26 @@
1
- import { default as bridge, registerNativeHandler, setDebug, JSBridgeSdk } from './bridge';
2
- import { DebugOptions, JSBridgeInterface } from '@docoi/jsbridge-sdk';
3
- import { Callbacks, LoginResult, NativeResponse, GetTokenResult, GetCircleInfoResult, ShareWebCardParams, ShareImageParams, ShareImageResult, BindGameRoleParams, ShowAdParams, ShowToastParams, TriggerVibrateParams, KeyboardHeightChangeCallback, EventListenOptions, CommentPanelChangeCallback, PlayMediaParams, ChooseMediaParams, ChooseMediaResult, UploadFilesParams, UploadFilesResult, SaveImageToPhotosAlbumParams, SaveVideoToPhotosAlbumParams, StartRecordParams, SystemInfoResult, NetworkTypeResult, SetClipboardDataParams, GetClipboardDataResult, CheckPermissionParams, CheckPermissionResult, OpenPhoneSettingParams, OpenInExternalBrowserParams } from './types';
4
- declare const mys: {
5
- setDebug: (enabled: boolean, options?: Partial< DebugOptions>) => JSBridgeInterface;
6
- registerNativeHandler: typeof registerNativeHandler;
7
- login(params?: Callbacks<LoginResult>): Promise< NativeResponse<LoginResult>>;
8
- getToken(params?: Callbacks<GetTokenResult>): Promise< NativeResponse<GetTokenResult>>;
9
- getCurrentCircleInfo(params?: Callbacks<GetCircleInfoResult>): Promise< NativeResponse<GetCircleInfoResult>>;
10
- shareWebCard(params: ShareWebCardParams): Promise< NativeResponse<void>>;
11
- shareImage(params: ShareImageParams): Promise< NativeResponse<ShareImageResult>>;
12
- openAddCustomEmoji(params?: Callbacks): Promise< NativeResponse<void>>;
13
- toBindGameRole(params: BindGameRoleParams): Promise< NativeResponse<void>>;
14
- showAd(params: ShowAdParams): Promise< NativeResponse<void>>;
15
- showToast(params: ShowToastParams): Promise< NativeResponse<void>>;
16
- triggerVibrate(params?: TriggerVibrateParams): Promise< NativeResponse<void>>;
17
- stopVibrate(params?: Callbacks): Promise< NativeResponse<void>>;
18
- hideKeyboard(params?: Callbacks): Promise< NativeResponse<void>>;
19
- onKeyboardHeightChange(callback: KeyboardHeightChangeCallback, options?: EventListenOptions): void;
20
- offKeyboardHeightChange(callback?: KeyboardHeightChangeCallback): void;
21
- onCommentPanelChange(callback: CommentPanelChangeCallback, options?: EventListenOptions): void;
22
- offCommentPanelChange(callback?: CommentPanelChangeCallback): void;
23
- previewImage(params: PlayMediaParams): Promise< NativeResponse<void>>;
24
- previewVideo(params: PlayMediaParams): Promise< NativeResponse<void>>;
25
- chooseMedia(params?: ChooseMediaParams): Promise< NativeResponse<ChooseMediaResult>>;
26
- uploadFiles(params: UploadFilesParams): Promise< NativeResponse<UploadFilesResult>>;
27
- saveImageToPhotosAlbum(params: SaveImageToPhotosAlbumParams): Promise< NativeResponse<void>>;
28
- saveVideoToPhotosAlbum(params: SaveVideoToPhotosAlbumParams): Promise< NativeResponse<void>>;
29
- startRecord(params?: StartRecordParams): Promise< NativeResponse<void>>;
30
- stopRecord(params?: Callbacks): Promise< NativeResponse<void>>;
31
- getSystemInfo(params?: Callbacks<SystemInfoResult>): Promise< NativeResponse<SystemInfoResult>>;
32
- getNetworkType(params?: Callbacks<NetworkTypeResult>): Promise< NativeResponse<NetworkTypeResult>>;
33
- setClipboardData(params: SetClipboardDataParams): Promise< NativeResponse<void>>;
34
- getClipboardData(params?: Callbacks<GetClipboardDataResult>): Promise< NativeResponse<GetClipboardDataResult>>;
35
- checkPermission(params: CheckPermissionParams): Promise< NativeResponse<CheckPermissionResult>>;
36
- openPhoneSetting(params: OpenPhoneSettingParams): Promise< NativeResponse<void>>;
37
- closeWebView(params?: Callbacks): Promise< NativeResponse<void>>;
38
- openInExternalBrowser(params: OpenInExternalBrowserParams): Promise< NativeResponse<void>>;
39
- };
1
+ /**
2
+ * 主入口:默认导出聚合对象 mys,同时命名导出所有 API、工具与类型。
3
+ * 所有 API 返回 Promise,并兼容 success / fail / complete 回调。
4
+ *
5
+ * @module index
6
+ */
7
+ import * as basicApi from './api/basic';
8
+ import * as bizApi from './api/biz';
9
+ import * as routerApi from './api/router';
10
+ import * as bridgeApi from './bridge';
11
+ /**
12
+ * 聚合对象的类型:用各模块命名空间的交叉,属性类型保持对原函数的符号引用。
13
+ * 直接写对象字面量会被推断成匿名函数类型,JSDoc 附着不到属性上,IDE 里 mys.xxx 就没有悬浮说明。
14
+ */
15
+ type ApiNamespace = typeof basicApi & typeof routerApi & typeof bizApi & Pick<typeof bridgeApi, 'setDebug' | 'registerNativeHandler'>;
16
+ /** mys-sdk 的全部 API 与工具,各 API 也都有等价的命名导出 */
17
+ declare const mys: ApiNamespace;
40
18
  export default mys;
41
19
  export * from './api/basic';
20
+ export * from './api/router';
42
21
  export * from './api/biz';
43
- export { setDebug, registerNativeHandler, bridge };
44
- export { JSBridgeSdk };
45
- export { ToastDuration } from './types';
22
+ export { setDebug, registerNativeHandler, onRoute, invokeDebug } from './bridge';
23
+ export { getAppBaseInfo, isInApp, compareVersions } from './utils/app';
24
+ export { ToastDuration, ShareType } from './types';
46
25
  export * from './constants/code';
47
26
  export type * from './types';