@heybox/hb-sdk 0.1.3 → 0.2.0-alpha.1

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.
Files changed (67) hide show
  1. package/README.md +149 -345
  2. package/bin/hb-sdk.cjs +3 -0
  3. package/dist/cli.cjs +10117 -0
  4. package/dist/devtools/mock-host/index.html +252 -0
  5. package/dist/devtools/mock-host/main.js +975 -0
  6. package/dist/index.cjs.js +474 -85
  7. package/dist/index.esm.js +465 -71
  8. package/dist/protocol.cjs.js +163 -0
  9. package/dist/protocol.esm.js +148 -0
  10. package/dist/templates/vue3-vite-ts/.gitignore.ejs +5 -0
  11. package/dist/templates/vue3-vite-ts/README.md.ejs +42 -0
  12. package/dist/templates/vue3-vite-ts/index.html.ejs +12 -0
  13. package/dist/templates/vue3-vite-ts/package.json.ejs +28 -0
  14. package/dist/templates/vue3-vite-ts/src/App.vue +63 -0
  15. package/dist/templates/vue3-vite-ts/src/__tests__/App.spec.ts +67 -0
  16. package/dist/templates/vue3-vite-ts/src/main.ts +5 -0
  17. package/dist/templates/vue3-vite-ts/src/styles.css +60 -0
  18. package/dist/templates/vue3-vite-ts/src/vite-env.d.ts +1 -0
  19. package/dist/templates/vue3-vite-ts/tsconfig.app.json +17 -0
  20. package/dist/templates/vue3-vite-ts/tsconfig.json +11 -0
  21. package/dist/templates/vue3-vite-ts/tsconfig.node.json +11 -0
  22. package/dist/templates/vue3-vite-ts/vite.config.ts +6 -0
  23. package/dist/templates/vue3-vite-ts/vitest.config.ts +10 -0
  24. package/package.json +30 -5
  25. package/skill/SKILL.md +95 -0
  26. package/skill/references/api-protocol.md +135 -0
  27. package/skill/references/api-root.md +346 -0
  28. package/skill/references/cli.md +360 -0
  29. package/skill/references/examples.md +107 -0
  30. package/skill/references/llms-index.md +44 -0
  31. package/skill/references/recipes.md +374 -0
  32. package/skill/references/safety-boundaries.md +28 -0
  33. package/skill/references/smoke-evaluation.md +24 -0
  34. package/skill/scripts/check-references.mjs +14 -0
  35. package/skill/scripts/package-skill.mjs +60 -0
  36. package/skill/scripts/package-skill.sh +6 -0
  37. package/skill/scripts/skill-metadata.mjs +74 -0
  38. package/skill/scripts/sync-references.mjs +541 -0
  39. package/skill/scripts/validate-skill.mjs +233 -0
  40. package/skill/skill.json +11 -0
  41. package/types/core/client.d.ts +23 -3
  42. package/types/core/errors.d.ts +45 -2
  43. package/types/core/sdk.d.ts +78 -10
  44. package/types/core/singleton.d.ts +33 -7
  45. package/types/core/utils.d.ts +2 -0
  46. package/types/index.d.ts +14 -6
  47. package/types/modules/auth/index.d.ts +35 -0
  48. package/types/modules/network/index.d.ts +120 -0
  49. package/types/modules/share/index.d.ts +9 -5
  50. package/types/modules/share/screenshot.d.ts +9 -3
  51. package/types/modules/share/show-share-menu.d.ts +9 -3
  52. package/types/modules/share/types.d.ts +24 -4
  53. package/types/modules/storage/index.d.ts +56 -0
  54. package/types/modules/user/get-info.d.ts +6 -2
  55. package/types/modules/user/index.d.ts +8 -10
  56. package/types/modules/user/types.d.ts +1 -0
  57. package/types/modules/viewport/index.d.ts +71 -0
  58. package/types/protocol/capabilities.d.ts +180 -0
  59. package/types/protocol/guards.d.ts +6 -1
  60. package/types/protocol/types.d.ts +19 -4
  61. package/types/protocol.d.ts +13 -0
  62. package/types/modules/system/get-storage.d.ts +0 -15
  63. package/types/modules/system/get-window-info.d.ts +0 -16
  64. package/types/modules/system/index.d.ts +0 -23
  65. package/types/modules/system/set-storage.d.ts +0 -12
  66. package/types/modules/system/types.d.ts +0 -34
  67. package/types/modules/user/login.d.ts +0 -18
@@ -0,0 +1,120 @@
1
+ import type { MiniProgramRequester } from '../../core/client';
2
+ export { NETWORK_REQUEST_METHOD } from '../../protocol/capabilities';
3
+ /** `network.request` 请求头。 */
4
+ export type MiniProgramNetworkHeaders = Record<string, string>;
5
+ /** `network.request` 查询参数。 */
6
+ export type MiniProgramNetworkParams = Record<string, unknown>;
7
+ /** `network.request` 支持的 HTTP 方法。 */
8
+ export type MiniProgramNetworkRequestMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
9
+ /**
10
+ * SDK 侧可配置的状态校验函数。
11
+ *
12
+ * @param status 标准化后的 HTTP 状态码。
13
+ * @returns 返回 `true` 时表示本次响应应视为成功。
14
+ *
15
+ * @remarks
16
+ * 该函数只在 SDK 侧执行,不会跨 bridge 传输到父容器 runtime。
17
+ */
18
+ export type MiniProgramNetworkValidateStatus = (status: number) => boolean;
19
+ /**
20
+ * 对外开放的网络请求配置。
21
+ *
22
+ * @remarks
23
+ * 该配置面向业务层,保持 axios-like 的窄接口,不暴露 `sendRequestV2`
24
+ * 等宿主协议的原始字段。
25
+ */
26
+ export interface MiniProgramNetworkRequestConfig {
27
+ /** 请求地址。 */
28
+ url: string;
29
+ /** HTTP 方法,默认 `GET`。 */
30
+ method?: MiniProgramNetworkRequestMethod;
31
+ /** 查询参数,会被编码到请求 URL。 */
32
+ params?: MiniProgramNetworkParams;
33
+ /** 请求体。 */
34
+ data?: unknown;
35
+ /** 请求头。 */
36
+ headers?: MiniProgramNetworkHeaders;
37
+ /** 超时时间,单位毫秒。 */
38
+ timeout?: number;
39
+ /** 是否携带凭据意图;具体策略由宿主运行时决定。 */
40
+ withCredentials?: boolean;
41
+ /** SDK 侧状态校验;不会跨 bridge 传输函数值。 */
42
+ validateStatus?: MiniProgramNetworkValidateStatus;
43
+ }
44
+ /**
45
+ * bridge / runtime 可消费的网络请求 payload。
46
+ *
47
+ * @remarks
48
+ * 这是从公开配置中裁剪得到的可序列化请求载荷,不包含函数值或内部实现细节。
49
+ */
50
+ export interface NetworkRequestPayload {
51
+ url: string;
52
+ method?: MiniProgramNetworkRequestMethod;
53
+ params?: MiniProgramNetworkParams;
54
+ data?: unknown;
55
+ headers?: MiniProgramNetworkHeaders;
56
+ timeout?: number;
57
+ withCredentials?: boolean;
58
+ }
59
+ /**
60
+ * bridge / runtime 返回的标准化 HTTP 响应。
61
+ *
62
+ * @typeParam T 标准化响应数据的类型。
63
+ */
64
+ export interface NetworkResponsePayload<T = unknown> {
65
+ data: T;
66
+ status: number;
67
+ statusText?: string;
68
+ headers: MiniProgramNetworkHeaders;
69
+ }
70
+ /**
71
+ * SDK 对外暴露的网络响应。
72
+ *
73
+ * @typeParam T 标准化响应数据的类型。
74
+ */
75
+ export interface MiniProgramNetworkResponse<T = unknown> extends NetworkResponsePayload<T> {
76
+ /** 发起请求时的 SDK 公共配置快照。 */
77
+ config: MiniProgramNetworkRequestConfig;
78
+ }
79
+ export type { MiniProgramNetworkMethod } from '../../protocol/capabilities';
80
+ /** 外部小程序可调用的网络模块。 */
81
+ export interface MiniProgramNetworkModule {
82
+ /**
83
+ * 发起网络请求。
84
+ *
85
+ * @param config 面向业务层的网络请求配置。
86
+ * @returns 标准化网络响应;HTTP 2xx 默认返回 resolve。
87
+ * @throws {HbMiniProgramNetworkError} 当请求已完成但 HTTP 状态不满足 `validateStatus` 时抛出。
88
+ * @throws {HbMiniProgramSDKError} 当 bridge、运行时或宿主能力调用失败时抛出。
89
+ */
90
+ request<T = unknown>(config: MiniProgramNetworkRequestConfig): Promise<MiniProgramNetworkResponse<T>>;
91
+ }
92
+ /**
93
+ * 发起网络请求并返回标准化响应。
94
+ *
95
+ * @param requester 底层 bridge 请求能力。
96
+ * @param config 面向业务层的网络请求配置。
97
+ * @returns 标准化网络响应。HTTP 2xx 默认返回 resolve。
98
+ * @throws {HbMiniProgramNetworkError} 当请求已完成但 HTTP 状态不满足 `validateStatus` 时抛出。
99
+ * @throws {HbMiniProgramSDKError} 当 bridge、运行时或宿主能力调用失败时抛出。
100
+ *
101
+ * @remarks
102
+ * `validateStatus` 仅在 SDK 侧执行,不会跨 bridge 传输函数值。
103
+ * 公开配置与返回结构都保持 axios-like 的窄接口,不暴露宿主原始协议字段。
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const result = await request(requester, {
108
+ * url: 'https://api.xiaoheihe.cn/demo',
109
+ * method: 'GET',
110
+ * })
111
+ * ```
112
+ */
113
+ export declare function request<T = unknown>(requester: MiniProgramRequester, config: MiniProgramNetworkRequestConfig): Promise<MiniProgramNetworkResponse<T>>;
114
+ /**
115
+ * 创建 network 模块。
116
+ *
117
+ * @param requester 底层 bridge 请求能力。
118
+ * @returns 面向业务层的网络模块对象。
119
+ */
120
+ export declare function createNetworkModule(requester: MiniProgramRequester): MiniProgramNetworkModule;
@@ -1,12 +1,11 @@
1
1
  import type { MiniProgramRequester } from '../../core/client';
2
- import { SHARE_SCREENSHOT_METHOD, type ScreenshotResult } from './screenshot';
3
- import { SHARE_SHOW_SHARE_MENU_METHOD, type ShowShareMenuPayload, type ShowShareMenuResult } from './show-share-menu';
2
+ import { type ScreenshotResult } from './screenshot';
3
+ import { type ShowShareMenuPayload, type ShowShareMenuResult } from './show-share-menu';
4
4
  import type { MiniProgramScreenshotOptions } from './types';
5
5
  export * from './screenshot';
6
6
  export * from './show-share-menu';
7
7
  export * from './types';
8
- /** 分享模块开放的方法名。 */
9
- export type MiniProgramShareMethod = typeof SHARE_SHOW_SHARE_MENU_METHOD | typeof SHARE_SCREENSHOT_METHOD;
8
+ export type { MiniProgramShareMethod } from '../../protocol/capabilities';
10
9
  /** 外部小程序可调用的分享模块。 */
11
10
  export interface MiniProgramShareModule {
12
11
  /** 展示基础分享面板。 */
@@ -14,5 +13,10 @@ export interface MiniProgramShareModule {
14
13
  /** 截图并唤起分享。 */
15
14
  screenshot(options?: MiniProgramScreenshotOptions): Promise<ScreenshotResult>;
16
15
  }
17
- /** 创建分享模块。 */
16
+ /**
17
+ * 创建分享模块。
18
+ *
19
+ * @param requester 底层 bridge 请求能力。
20
+ * @returns 面向业务层的分享模块对象。
21
+ */
18
22
  export declare function createShareModule(requester: MiniProgramRequester): MiniProgramShareModule;
@@ -1,10 +1,16 @@
1
1
  import type { MiniProgramRequester } from '../../core/client';
2
2
  import type { MiniProgramScreenshotOptions } from './types';
3
- /** 截图分享能力方法名。 */
4
- export declare const SHARE_SCREENSHOT_METHOD: "share.screenshot";
3
+ export { SHARE_SCREENSHOT_METHOD } from '../../protocol/capabilities';
5
4
  /** `share.screenshot` 入参。 */
6
5
  export type ScreenshotPayload = MiniProgramScreenshotOptions | undefined;
7
6
  /** `share.screenshot` 返回值由客户端协议决定。 */
8
7
  export type ScreenshotResult = unknown;
9
- /** 截图并唤起分享。 */
8
+ /**
9
+ * 截图并唤起分享。
10
+ *
11
+ * @param requester 底层 bridge 请求能力。
12
+ * @param options 截图区域、延迟与保存相册等配置。
13
+ * @returns 由宿主客户端协议决定的结果。
14
+ * @throws {HbMiniProgramSDKError} 当 bridge、父容器或宿主能力调用失败时抛出。
15
+ */
10
16
  export declare function screenshot(requester: MiniProgramRequester, options?: MiniProgramScreenshotOptions): Promise<ScreenshotResult>;
@@ -1,10 +1,16 @@
1
1
  import type { MiniProgramRequester } from '../../core/client';
2
2
  import type { MiniProgramShowShareMenuOptions } from './types';
3
- /** 展示分享面板能力方法名。 */
4
- export declare const SHARE_SHOW_SHARE_MENU_METHOD: "share.showShareMenu";
3
+ export { SHARE_SHOW_SHARE_MENU_METHOD } from '../../protocol/capabilities';
5
4
  /** `share.showShareMenu` 入参。 */
6
5
  export type ShowShareMenuPayload = MiniProgramShowShareMenuOptions;
7
6
  /** `share.showShareMenu` 返回值由客户端协议决定。 */
8
7
  export type ShowShareMenuResult = unknown;
9
- /** 展示基础分享面板。 */
8
+ /**
9
+ * 展示基础分享面板。
10
+ *
11
+ * @param requester 底层 bridge 请求能力。
12
+ * @param options 基础分享参数。
13
+ * @returns 由宿主客户端协议决定的结果。
14
+ * @throws {HbMiniProgramSDKError} 当 bridge、父容器或宿主能力调用失败时抛出。
15
+ */
10
16
  export declare function showShareMenu(requester: MiniProgramRequester, options: ShowShareMenuPayload): Promise<ShowShareMenuResult>;
@@ -1,6 +1,16 @@
1
- /** 小程序可选分享渠道。 */
1
+ /**
2
+ * 小程序可选分享渠道。
3
+ *
4
+ * @remarks
5
+ * 不同宿主环境可支持的渠道集合可能不同;未传 `channel` 时由客户端自行展示默认分享面板。
6
+ */
2
7
  export type MiniProgramShareChannel = 'wechatSession' | 'wechatTimeline' | 'qqFriend' | 'qzone' | 'weibo';
3
- /** 展示基础分享面板的配置。 */
8
+ /**
9
+ * 展示基础分享面板的配置。
10
+ *
11
+ * @remarks
12
+ * 该配置只暴露基础分享字段,不暴露宿主内部上报、回调、自定义按钮等协议参数。
13
+ */
4
14
  export interface MiniProgramShowShareMenuOptions {
5
15
  /** 分享标题。 */
6
16
  title: string;
@@ -13,7 +23,12 @@ export interface MiniProgramShowShareMenuOptions {
13
23
  /** 指定分享渠道;不传则由客户端展示默认分享面板。 */
14
24
  channel?: MiniProgramShareChannel;
15
25
  }
16
- /** 截图区域。 */
26
+ /**
27
+ * 截图区域。
28
+ *
29
+ * @remarks
30
+ * 坐标与尺寸单位均为像素,基于当前小程序可见窗口坐标系。
31
+ */
17
32
  export interface MiniProgramScreenshotRect {
18
33
  /** 截图区域左边距。 */
19
34
  left: number;
@@ -24,7 +39,12 @@ export interface MiniProgramScreenshotRect {
24
39
  /** 截图区域高度。 */
25
40
  height: number;
26
41
  }
27
- /** 截图分享配置。 */
42
+ /**
43
+ * 截图分享配置。
44
+ *
45
+ * @remarks
46
+ * 该配置只暴露截图与保存相册相关基础字段,不暴露宿主内部上传、回调或样式扩展能力。
47
+ */
28
48
  export interface MiniProgramScreenshotOptions {
29
49
  /** 指定截图区域;不传则默认截当前可见窗口。 */
30
50
  rect?: MiniProgramScreenshotRect;
@@ -0,0 +1,56 @@
1
+ import type { MiniProgramRequester } from '../../core/client';
2
+ export { STORAGE_GET_STORAGE_METHOD, STORAGE_SET_STORAGE_METHOD } from '../../protocol/capabilities';
3
+ /** `storage.getStorage` 入参。 */
4
+ export interface GetStoragePayload {
5
+ /** storage key。 */
6
+ key: string;
7
+ }
8
+ /**
9
+ * `storage.getStorage` 返回值。
10
+ *
11
+ * @typeParam T 反序列化后的业务数据类型。
12
+ */
13
+ export interface GetStorageResult<T = unknown> {
14
+ /** key 对应的数据;不存在时为 undefined。 */
15
+ data: T | undefined;
16
+ }
17
+ /** `storage.setStorage` 入参。 */
18
+ export interface SetStoragePayload {
19
+ /** storage key。 */
20
+ key: string;
21
+ /** 需要写入的数据。 */
22
+ data: unknown;
23
+ }
24
+ export type { MiniProgramStorageMethod } from '../../protocol/capabilities';
25
+ /** 外部小程序可调用的 storage 模块。 */
26
+ export interface MiniProgramStorageModule {
27
+ /** 获取小程序隔离 storage。 */
28
+ getStorage<T = unknown>(options: GetStoragePayload): Promise<GetStorageResult<T>>;
29
+ /** 写入小程序隔离 storage。 */
30
+ setStorage(options: SetStoragePayload): Promise<void>;
31
+ }
32
+ /**
33
+ * 获取小程序隔离 storage。
34
+ *
35
+ * @param requester 底层 bridge 请求能力。
36
+ * @param options 读取的 storage key。
37
+ * @returns 对应 key 的标准化读取结果。
38
+ * @throws {HbMiniProgramSDKError} 当 bridge、父容器或宿主能力调用失败时抛出。
39
+ */
40
+ export declare function getStorage<T = unknown>(requester: MiniProgramRequester, options: GetStoragePayload): Promise<GetStorageResult<T>>;
41
+ /**
42
+ * 写入小程序隔离 storage。
43
+ *
44
+ * @param requester 底层 bridge 请求能力。
45
+ * @param options 要写入的 storage key 与数据。
46
+ * @returns 当写入完成后 resolve。
47
+ * @throws {HbMiniProgramSDKError} 当 bridge、父容器或宿主能力调用失败时抛出。
48
+ */
49
+ export declare function setStorage(requester: MiniProgramRequester, options: SetStoragePayload): Promise<void>;
50
+ /**
51
+ * 创建 storage 模块。
52
+ *
53
+ * @param requester 底层 bridge 请求能力。
54
+ * @returns 面向业务层的 storage 模块对象。
55
+ */
56
+ export declare function createStorageModule(requester: MiniProgramRequester): MiniProgramStorageModule;
@@ -1,7 +1,6 @@
1
1
  import type { MiniProgramRequester } from '../../core/client';
2
2
  import type { MiniProgramUserInfoResult } from './types';
3
- /** 用户信息能力方法名。 */
4
- export declare const USER_GET_INFO_METHOD: "user.getInfo";
3
+ export { USER_GET_INFO_METHOD } from '../../protocol/capabilities';
5
4
  /**
6
5
  * `user.getInfo` 不需要入参。
7
6
  */
@@ -13,7 +12,12 @@ export type GetUserInfoResult = MiniProgramUserInfoResult;
13
12
  /**
14
13
  * 获取当前访问小程序用户的公开基础资料。
15
14
  *
15
+ * @param requester 底层 bridge 请求能力。
16
+ * @returns 当前用户的登录态与公开基础资料。
17
+ *
16
18
  * 该能力只返回 `heybox_id`、`nickname`、`avatar` 三个公开字段。
17
19
  * 未登录时不会触发登录流程,直接返回 `{ isLogin: false, userInfo: null }`。
20
+ *
21
+ * @throws {HbMiniProgramSDKError} 当 bridge、父容器或宿主运行时调用失败时抛出。
18
22
  */
19
23
  export declare function getInfo(requester: MiniProgramRequester): Promise<GetUserInfoResult>;
@@ -1,21 +1,19 @@
1
1
  import type { MiniProgramRequester } from '../../core/client';
2
- import { USER_GET_INFO_METHOD, type GetUserInfoResult } from './get-info';
3
- import { USER_LOGIN_METHOD, type LoginResult } from './login';
2
+ import { type GetUserInfoResult } from './get-info';
4
3
  export * from './get-info';
5
- export * from './login';
6
4
  export * from './types';
7
- /** 用户模块开放的方法名。 */
8
- export type MiniProgramUserMethod = typeof USER_GET_INFO_METHOD | typeof USER_LOGIN_METHOD;
5
+ export type { MiniProgramUserMethod } from '../../protocol/capabilities';
9
6
  /** 外部小程序可调用的用户模块。 */
10
7
  export interface MiniProgramUserModule {
11
8
  /**
12
9
  * 获取当前用户登录态与公开基础资料。
13
10
  */
14
11
  getInfo(): Promise<GetUserInfoResult>;
15
- /**
16
- * 唤起登录,并返回登录后的最新用户信息。
17
- */
18
- login(): Promise<LoginResult>;
19
12
  }
20
- /** 创建用户模块。 */
13
+ /**
14
+ * 创建用户模块。
15
+ *
16
+ * @param requester 底层 bridge 请求能力。
17
+ * @returns 面向业务层的用户模块对象。
18
+ */
21
19
  export declare function createUserModule(requester: MiniProgramRequester): MiniProgramUserModule;
@@ -15,6 +15,7 @@ export interface MiniProgramUserInfo {
15
15
  /**
16
16
  * 用户能力统一返回结构。
17
17
  *
18
+ * @remarks
18
19
  * 未登录时 `isLogin` 为 `false`,且 `userInfo` 固定为 `null`。
19
20
  * 已登录时 `isLogin` 为 `true`,`userInfo` 为公开基础资料。
20
21
  */
@@ -0,0 +1,71 @@
1
+ import type { MiniProgramRequester } from '../../core/client';
2
+ /**
3
+ * 小程序安全区域信息。
4
+ *
5
+ * @remarks
6
+ * 所有字段单位均为像素,基于当前小程序可用窗口坐标系。
7
+ */
8
+ export interface MiniProgramSafeArea {
9
+ /** 安全区域左上角横坐标。 */
10
+ left: number;
11
+ /** 安全区域右下角横坐标。 */
12
+ right: number;
13
+ /** 安全区域左上角纵坐标。 */
14
+ top: number;
15
+ /** 安全区域右下角纵坐标。 */
16
+ bottom: number;
17
+ /** 安全区域宽度,单位 px。 */
18
+ width: number;
19
+ /** 安全区域高度,单位 px。 */
20
+ height: number;
21
+ }
22
+ /**
23
+ * 小程序窗口信息。
24
+ *
25
+ * @remarks
26
+ * 该结构统一描述屏幕尺寸、可用窗口尺寸、安全区域与顶部偏移等容器信息。
27
+ */
28
+ export interface MiniProgramWindowInfoResult {
29
+ /** 设备像素比。 */
30
+ pixelRatio: number;
31
+ /** 屏幕宽度,单位 px。 */
32
+ screenWidth: number;
33
+ /** 屏幕高度,单位 px。 */
34
+ screenHeight: number;
35
+ /** 可使用窗口宽度,单位 px。 */
36
+ windowWidth: number;
37
+ /** 可使用窗口高度,单位 px。 */
38
+ windowHeight: number;
39
+ /** 状态栏高度;黑盒环境按顶部可用偏移兼容。 */
40
+ statusBarHeight: number;
41
+ /** 安全区域。 */
42
+ safeArea: MiniProgramSafeArea;
43
+ /** 窗口上边缘的 y 值。 */
44
+ screenTop: number;
45
+ }
46
+ export { VIEWPORT_GET_WINDOW_INFO_METHOD } from '../../protocol/capabilities';
47
+ /** `viewport.getWindowInfo` 不需要入参。 */
48
+ export type GetWindowInfoPayload = void;
49
+ /** `viewport.getWindowInfo` 返回当前小程序可用窗口信息。 */
50
+ export type GetWindowInfoResult = MiniProgramWindowInfoResult;
51
+ export type { MiniProgramViewportMethod } from '../../protocol/capabilities';
52
+ /** 外部小程序可调用的 Viewport 模块。 */
53
+ export interface MiniProgramViewportModule {
54
+ /** 获取当前小程序窗口信息。 */
55
+ getWindowInfo(): Promise<GetWindowInfoResult>;
56
+ }
57
+ /**
58
+ * 获取当前小程序窗口信息。
59
+ *
60
+ * @param requester 底层 bridge 请求能力。
61
+ * @returns 当前小程序可用窗口信息。
62
+ * @throws {HbMiniProgramSDKError} 当 bridge、父容器或宿主能力调用失败时抛出。
63
+ */
64
+ export declare function getWindowInfo(requester: MiniProgramRequester): Promise<GetWindowInfoResult>;
65
+ /**
66
+ * 创建 Viewport 模块。
67
+ *
68
+ * @param requester 底层 bridge 请求能力。
69
+ * @returns 面向业务层的 Viewport 模块对象。
70
+ */
71
+ export declare function createViewportModule(requester: MiniProgramRequester): MiniProgramViewportModule;
@@ -0,0 +1,180 @@
1
+ import type { LoginPayload, LoginResult } from '../modules/auth';
2
+ import type { NetworkRequestPayload, NetworkResponsePayload } from '../modules/network';
3
+ import type { ScreenshotPayload, ScreenshotResult, ShowShareMenuPayload, ShowShareMenuResult } from '../modules/share';
4
+ import type { GetStoragePayload, GetStorageResult, SetStoragePayload } from '../modules/storage';
5
+ import type { GetUserInfoPayload, GetUserInfoResult } from '../modules/user';
6
+ import type { GetWindowInfoPayload, GetWindowInfoResult } from '../modules/viewport';
7
+ /**
8
+ * 登录授权能力方法名。
9
+ *
10
+ * @remarks
11
+ * 供 SDK 与父容器 runtime 共享同一 bridge method 标识。
12
+ */
13
+ export declare const AUTH_LOGIN_METHOD: "auth.login";
14
+ /**
15
+ * 用户信息能力方法名。
16
+ *
17
+ * @remarks
18
+ * 供 SDK 与父容器 runtime 共享同一 bridge method 标识。
19
+ */
20
+ export declare const USER_GET_INFO_METHOD: "user.getInfo";
21
+ /**
22
+ * 展示分享面板能力方法名。
23
+ *
24
+ * @remarks
25
+ * 供 SDK 与父容器 runtime 共享同一 bridge method 标识。
26
+ */
27
+ export declare const SHARE_SHOW_SHARE_MENU_METHOD: "share.showShareMenu";
28
+ /**
29
+ * 截图分享能力方法名。
30
+ *
31
+ * @remarks
32
+ * 供 SDK 与父容器 runtime 共享同一 bridge method 标识。
33
+ */
34
+ export declare const SHARE_SCREENSHOT_METHOD: "share.screenshot";
35
+ /**
36
+ * 视口窗口信息能力方法名。
37
+ *
38
+ * @remarks
39
+ * 供 SDK 与父容器 runtime 共享同一 bridge method 标识。
40
+ */
41
+ export declare const VIEWPORT_GET_WINDOW_INFO_METHOD: "viewport.getWindowInfo";
42
+ /**
43
+ * 读取小程序隔离 storage 能力方法名。
44
+ *
45
+ * @remarks
46
+ * 供 SDK 与父容器 runtime 共享同一 bridge method 标识。
47
+ */
48
+ export declare const STORAGE_GET_STORAGE_METHOD: "storage.getStorage";
49
+ /**
50
+ * 写入小程序隔离 storage 能力方法名。
51
+ *
52
+ * @remarks
53
+ * 供 SDK 与父容器 runtime 共享同一 bridge method 标识。
54
+ */
55
+ export declare const STORAGE_SET_STORAGE_METHOD: "storage.setStorage";
56
+ /**
57
+ * 发起网络请求能力方法名。
58
+ *
59
+ * @remarks
60
+ * 供 SDK 与父容器 runtime 共享同一 bridge method 标识。
61
+ */
62
+ export declare const NETWORK_REQUEST_METHOD: "network.request";
63
+ /** 授权模块开放的方法名。 */
64
+ export type MiniProgramAuthMethod = typeof AUTH_LOGIN_METHOD;
65
+ /** 用户模块开放的方法名。 */
66
+ export type MiniProgramUserMethod = typeof USER_GET_INFO_METHOD;
67
+ /** 分享模块开放的方法名。 */
68
+ export type MiniProgramShareMethod = typeof SHARE_SHOW_SHARE_MENU_METHOD | typeof SHARE_SCREENSHOT_METHOD;
69
+ /** Viewport 模块开放的方法名。 */
70
+ export type MiniProgramViewportMethod = typeof VIEWPORT_GET_WINDOW_INFO_METHOD;
71
+ /** Storage 模块开放的方法名。 */
72
+ export type MiniProgramStorageMethod = typeof STORAGE_GET_STORAGE_METHOD | typeof STORAGE_SET_STORAGE_METHOD;
73
+ /** 网络模块开放的方法名。 */
74
+ export type MiniProgramNetworkMethod = typeof NETWORK_REQUEST_METHOD;
75
+ /** 父容器开放给小程序调用的 bridge method。 */
76
+ export type MiniProgramBridgeMethod = MiniProgramAuthMethod | MiniProgramUserMethod | MiniProgramShareMethod | MiniProgramViewportMethod | MiniProgramStorageMethod | MiniProgramNetworkMethod;
77
+ /** 小程序开放能力所属模块。 */
78
+ export type MiniProgramCapabilityModule = 'auth' | 'user' | 'share' | 'viewport' | 'storage' | 'network';
79
+ /** 小程序开放能力风险级别,用于权限、审计和灰度策略。 */
80
+ export type MiniProgramCapabilityRisk = 'low' | 'medium' | 'high';
81
+ /**
82
+ * 小程序开放能力定义。
83
+ *
84
+ * @remarks
85
+ * 这是 SDK 与 runtime 共享的能力目录元数据。runtime 可以在此基础上绑定 handler,
86
+ * 但 method、module、capability、permission 与 risk 不应在 runtime 侧重复维护。
87
+ */
88
+ export interface MiniProgramCapabilityDefinition {
89
+ /** bridge method exposed to iframe SDK. */
90
+ method: MiniProgramBridgeMethod;
91
+ /** Module that owns this capability. */
92
+ module: MiniProgramCapabilityModule;
93
+ /** Runtime instance switch key. */
94
+ capability: MiniProgramBridgeMethod;
95
+ /** Platform permission key reserved for mini-program level authorization. */
96
+ permission: string;
97
+ /** Audit / rollout hint for policy composition. */
98
+ risk: MiniProgramCapabilityRisk;
99
+ }
100
+ /**
101
+ * 小程序开放能力目录。
102
+ *
103
+ * @remarks
104
+ * 新增 bridge method 时应先更新这里,再分别补齐 SDK 模块、runtime handler 与测试。
105
+ */
106
+ export declare const MINI_PROGRAM_PROTOCOL_CAPABILITIES: readonly [{
107
+ readonly method: "auth.login";
108
+ readonly module: "auth";
109
+ readonly capability: "auth.login";
110
+ readonly permission: "auth.login";
111
+ readonly risk: "medium";
112
+ }, {
113
+ readonly method: "user.getInfo";
114
+ readonly module: "user";
115
+ readonly capability: "user.getInfo";
116
+ readonly permission: "user.getInfo";
117
+ readonly risk: "medium";
118
+ }, {
119
+ readonly method: "share.showShareMenu";
120
+ readonly module: "share";
121
+ readonly capability: "share.showShareMenu";
122
+ readonly permission: "share.basic";
123
+ readonly risk: "low";
124
+ }, {
125
+ readonly method: "share.screenshot";
126
+ readonly module: "share";
127
+ readonly capability: "share.screenshot";
128
+ readonly permission: "share.screenshot";
129
+ readonly risk: "medium";
130
+ }, {
131
+ readonly method: "viewport.getWindowInfo";
132
+ readonly module: "viewport";
133
+ readonly capability: "viewport.getWindowInfo";
134
+ readonly permission: "viewport.windowInfo";
135
+ readonly risk: "low";
136
+ }, {
137
+ readonly method: "storage.getStorage";
138
+ readonly module: "storage";
139
+ readonly capability: "storage.getStorage";
140
+ readonly permission: "storage.read";
141
+ readonly risk: "low";
142
+ }, {
143
+ readonly method: "storage.setStorage";
144
+ readonly module: "storage";
145
+ readonly capability: "storage.setStorage";
146
+ readonly permission: "storage.write";
147
+ readonly risk: "medium";
148
+ }, {
149
+ readonly method: "network.request";
150
+ readonly module: "network";
151
+ readonly capability: "network.request";
152
+ readonly permission: "network.request";
153
+ readonly risk: "high";
154
+ }];
155
+ /** bridge method 到请求 payload 的映射。 */
156
+ export interface MiniProgramCapabilityPayloadMap {
157
+ [AUTH_LOGIN_METHOD]: LoginPayload;
158
+ [USER_GET_INFO_METHOD]: GetUserInfoPayload;
159
+ [SHARE_SHOW_SHARE_MENU_METHOD]: ShowShareMenuPayload;
160
+ [SHARE_SCREENSHOT_METHOD]: ScreenshotPayload;
161
+ [VIEWPORT_GET_WINDOW_INFO_METHOD]: GetWindowInfoPayload;
162
+ [STORAGE_GET_STORAGE_METHOD]: GetStoragePayload;
163
+ [STORAGE_SET_STORAGE_METHOD]: SetStoragePayload;
164
+ [NETWORK_REQUEST_METHOD]: NetworkRequestPayload;
165
+ }
166
+ /** bridge method 到标准化响应 payload 的映射。 */
167
+ export interface MiniProgramCapabilityResultMap {
168
+ [AUTH_LOGIN_METHOD]: LoginResult;
169
+ [USER_GET_INFO_METHOD]: GetUserInfoResult;
170
+ [SHARE_SHOW_SHARE_MENU_METHOD]: ShowShareMenuResult;
171
+ [SHARE_SCREENSHOT_METHOD]: ScreenshotResult;
172
+ [VIEWPORT_GET_WINDOW_INFO_METHOD]: GetWindowInfoResult;
173
+ [STORAGE_GET_STORAGE_METHOD]: GetStorageResult;
174
+ [STORAGE_SET_STORAGE_METHOD]: void;
175
+ [NETWORK_REQUEST_METHOD]: NetworkResponsePayload;
176
+ }
177
+ /** 指定 bridge method 的请求 payload。 */
178
+ export type MiniProgramCapabilityPayload<T extends MiniProgramBridgeMethod> = MiniProgramCapabilityPayloadMap[T];
179
+ /** 指定 bridge method 的标准化响应 payload。 */
180
+ export type MiniProgramCapabilityResult<T extends MiniProgramBridgeMethod> = MiniProgramCapabilityResultMap[T];
@@ -1,3 +1,8 @@
1
1
  import type { MiniProgramBridgeMessage } from './types';
2
- /** 判断未知数据是否符合小程序 bridge 消息信封。 */
2
+ /**
3
+ * 判断未知数据是否符合小程序 bridge 消息信封。
4
+ *
5
+ * @param value 待判断的未知数据。
6
+ * @returns 当数据满足小程序 bridge 消息基础结构时返回 `true`。
7
+ */
3
8
  export declare function isMiniProgramBridgeMessage(value: unknown): value is MiniProgramBridgeMessage;
@@ -1,8 +1,18 @@
1
1
  import type { MiniProgramUserInfoResult } from '../modules/user/types';
2
2
  import type { MINI_PROGRAM_MESSAGE_NAMESPACE, MINI_PROGRAM_MESSAGE_VERSION } from './constants';
3
- /** 小程序沙盒消息类型。 */
3
+ /**
4
+ * 小程序沙盒消息类型。
5
+ *
6
+ * @remarks
7
+ * 当前协议区分握手、请求、响应与事件四类消息。
8
+ */
4
9
  export type MiniProgramBridgeMessageType = 'handshake' | 'request' | 'response' | 'event';
5
- /** 首版开放给外部小程序监听的生命周期与业务事件名。 */
10
+ /**
11
+ * 首版开放给外部小程序监听的生命周期与业务事件名。
12
+ *
13
+ * @remarks
14
+ * `on/off` 会基于该联合类型约束可监听的事件集合。
15
+ */
6
16
  export type MiniProgramEventName = 'launch' | 'ready' | 'show' | 'hide' | 'unload' | 'error' | 'authChange';
7
17
  /**
8
18
  * bridge 错误结构。
@@ -20,7 +30,7 @@ export interface MiniProgramBridgeError {
20
30
  /**
21
31
  * SDK 与沙盒之间统一的 postMessage 信封。
22
32
  *
23
- * 由于 iframe sandbox 不启用 `allow-same-origin`,协议不依赖 origin 校验,
33
+ * 当前 iframe sandbox 即使启用了 `allow-same-origin`,协议也不把 origin 当作信任依据,
24
34
  * 而是由父容器校验 `event.source === iframe.contentWindow` 与实例 nonce。
25
35
  */
26
36
  export interface MiniProgramBridgeMessage<TPayload = unknown> {
@@ -83,5 +93,10 @@ export interface MiniProgramEventPayloadMap {
83
93
  /** 登录状态发生变化后的最新用户信息。 */
84
94
  authChange: MiniProgramUserInfoResult;
85
95
  }
86
- /** 小程序事件监听函数。 */
96
+ /**
97
+ * 小程序事件监听函数。
98
+ *
99
+ * @typeParam T 要监听的事件名。
100
+ * @param payload 对应事件的标准化载荷。
101
+ */
87
102
  export type MiniProgramEventHandler<T extends MiniProgramEventName = MiniProgramEventName> = (payload: MiniProgramEventPayloadMap[T]) => void;