@heybox/hb-sdk 0.1.3 → 0.2.0-alpha.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.
Files changed (49) hide show
  1. package/README.md +167 -37
  2. package/bin/hb-sdk.cjs +3 -0
  3. package/dist/cli.cjs +9639 -0
  4. package/dist/devtools/mock-host/index.html +626 -0
  5. package/dist/index.cjs.js +477 -75
  6. package/dist/index.esm.js +463 -70
  7. package/dist/protocol.cjs.js +104 -0
  8. package/dist/protocol.esm.js +90 -0
  9. package/dist/templates/vue3-vite-ts/.gitignore.ejs +5 -0
  10. package/dist/templates/vue3-vite-ts/README.md.ejs +46 -0
  11. package/dist/templates/vue3-vite-ts/index.html.ejs +12 -0
  12. package/dist/templates/vue3-vite-ts/package.json.ejs +29 -0
  13. package/dist/templates/vue3-vite-ts/src/App.vue +63 -0
  14. package/dist/templates/vue3-vite-ts/src/__tests__/App.spec.ts +67 -0
  15. package/dist/templates/vue3-vite-ts/src/main.ts +5 -0
  16. package/dist/templates/vue3-vite-ts/src/styles.css +60 -0
  17. package/dist/templates/vue3-vite-ts/src/vite-env.d.ts +1 -0
  18. package/dist/templates/vue3-vite-ts/tsconfig.app.json +17 -0
  19. package/dist/templates/vue3-vite-ts/tsconfig.json +11 -0
  20. package/dist/templates/vue3-vite-ts/tsconfig.node.json +11 -0
  21. package/dist/templates/vue3-vite-ts/vite.config.ts +6 -0
  22. package/dist/templates/vue3-vite-ts/vitest.config.ts +10 -0
  23. package/package.json +28 -5
  24. package/types/core/client.d.ts +23 -3
  25. package/types/core/errors.d.ts +45 -2
  26. package/types/core/sdk.d.ts +78 -10
  27. package/types/core/singleton.d.ts +33 -7
  28. package/types/core/utils.d.ts +2 -0
  29. package/types/index.d.ts +10 -4
  30. package/types/modules/auth/index.d.ts +42 -0
  31. package/types/modules/network/index.d.ts +125 -0
  32. package/types/modules/share/index.d.ts +12 -2
  33. package/types/modules/share/screenshot.d.ts +14 -2
  34. package/types/modules/share/show-share-menu.d.ts +14 -2
  35. package/types/modules/share/types.d.ts +24 -4
  36. package/types/modules/storage/index.d.ts +70 -0
  37. package/types/modules/user/get-info.d.ts +11 -1
  38. package/types/modules/user/index.d.ts +13 -9
  39. package/types/modules/user/types.d.ts +1 -0
  40. package/types/modules/viewport/index.d.ts +78 -0
  41. package/types/protocol/guards.d.ts +6 -1
  42. package/types/protocol/types.d.ts +19 -4
  43. package/types/protocol.d.ts +18 -0
  44. package/types/modules/system/get-storage.d.ts +0 -15
  45. package/types/modules/system/get-window-info.d.ts +0 -16
  46. package/types/modules/system/index.d.ts +0 -23
  47. package/types/modules/system/set-storage.d.ts +0 -12
  48. package/types/modules/system/types.d.ts +0 -34
  49. package/types/modules/user/login.d.ts +0 -18
@@ -1,21 +1,25 @@
1
1
  import type { MiniProgramRequester } from '../../core/client';
2
2
  import { USER_GET_INFO_METHOD, type GetUserInfoResult } from './get-info';
3
- import { USER_LOGIN_METHOD, type LoginResult } from './login';
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
+ /**
6
+ * 用户模块开放的方法名。
7
+ *
8
+ * @remarks
9
+ * 该联合类型用于约束用户模块向父容器发起的 bridge method 集合。
10
+ */
11
+ export type MiniProgramUserMethod = typeof USER_GET_INFO_METHOD;
9
12
  /** 外部小程序可调用的用户模块。 */
10
13
  export interface MiniProgramUserModule {
11
14
  /**
12
15
  * 获取当前用户登录态与公开基础资料。
13
16
  */
14
17
  getInfo(): Promise<GetUserInfoResult>;
15
- /**
16
- * 唤起登录,并返回登录后的最新用户信息。
17
- */
18
- login(): Promise<LoginResult>;
19
18
  }
20
- /** 创建用户模块。 */
19
+ /**
20
+ * 创建用户模块。
21
+ *
22
+ * @param requester 底层 bridge 请求能力。
23
+ * @returns 面向业务层的用户模块对象。
24
+ */
21
25
  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,78 @@
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
+ /**
47
+ * 视口窗口信息能力方法名。
48
+ *
49
+ * @remarks
50
+ * 供 SDK 与父容器 runtime 共享同一 bridge method 标识。
51
+ */
52
+ export declare const VIEWPORT_GET_WINDOW_INFO_METHOD: "viewport.getWindowInfo";
53
+ /** `viewport.getWindowInfo` 不需要入参。 */
54
+ export type GetWindowInfoPayload = void;
55
+ /** `viewport.getWindowInfo` 返回当前小程序可用窗口信息。 */
56
+ export type GetWindowInfoResult = MiniProgramWindowInfoResult;
57
+ /** Viewport 模块开放的方法名。 */
58
+ export type MiniProgramViewportMethod = typeof VIEWPORT_GET_WINDOW_INFO_METHOD;
59
+ /** 外部小程序可调用的 Viewport 模块。 */
60
+ export interface MiniProgramViewportModule {
61
+ /** 获取当前小程序窗口信息。 */
62
+ getWindowInfo(): Promise<GetWindowInfoResult>;
63
+ }
64
+ /**
65
+ * 获取当前小程序窗口信息。
66
+ *
67
+ * @param requester 底层 bridge 请求能力。
68
+ * @returns 当前小程序可用窗口信息。
69
+ * @throws {HbMiniProgramSDKError} 当 bridge、父容器或宿主能力调用失败时抛出。
70
+ */
71
+ export declare function getWindowInfo(requester: MiniProgramRequester): Promise<GetWindowInfoResult>;
72
+ /**
73
+ * 创建 Viewport 模块。
74
+ *
75
+ * @param requester 底层 bridge 请求能力。
76
+ * @returns 面向业务层的 Viewport 模块对象。
77
+ */
78
+ export declare function createViewportModule(requester: MiniProgramRequester): MiniProgramViewportModule;
@@ -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;
@@ -0,0 +1,18 @@
1
+ export { MINI_PROGRAM_BRIDGE_NONCE_PARAM, MINI_PROGRAM_MESSAGE_NAMESPACE, MINI_PROGRAM_MESSAGE_VERSION, SDK_HANDSHAKE_METHOD, } from './protocol/constants';
2
+ export { isMiniProgramBridgeMessage } from './protocol/guards';
3
+ export type { MiniProgramBridgeError, MiniProgramBridgeMessage, MiniProgramBridgeMessageType, MiniProgramEventHandler, MiniProgramEventName, MiniProgramEventPayloadMap, } from './protocol/types';
4
+ export { AUTH_LOGIN_METHOD } from './modules/auth';
5
+ export type { LoginPayload, LoginResult, MiniProgramAuthMethod } from './modules/auth';
6
+ export { USER_GET_INFO_METHOD } from './modules/user';
7
+ export type { GetUserInfoPayload, GetUserInfoResult, MiniProgramUserInfo, MiniProgramUserInfoResult, MiniProgramUserMethod, } from './modules/user';
8
+ export { SHARE_SCREENSHOT_METHOD } from './modules/share/screenshot';
9
+ export type { ScreenshotPayload, ScreenshotResult } from './modules/share/screenshot';
10
+ export { SHARE_SHOW_SHARE_MENU_METHOD } from './modules/share/show-share-menu';
11
+ export type { ShowShareMenuPayload, ShowShareMenuResult } from './modules/share/show-share-menu';
12
+ export type { MiniProgramScreenshotOptions, MiniProgramScreenshotRect, MiniProgramShareChannel, MiniProgramShareMethod, MiniProgramShowShareMenuOptions, } from './modules/share';
13
+ export { STORAGE_GET_STORAGE_METHOD, STORAGE_SET_STORAGE_METHOD, } from './modules/storage';
14
+ export type { GetStoragePayload, GetStorageResult, MiniProgramStorageMethod, SetStoragePayload, } from './modules/storage';
15
+ export { VIEWPORT_GET_WINDOW_INFO_METHOD } from './modules/viewport';
16
+ export type { GetWindowInfoPayload, GetWindowInfoResult, MiniProgramSafeArea, MiniProgramViewportMethod, MiniProgramWindowInfoResult, } from './modules/viewport';
17
+ export { NETWORK_REQUEST_METHOD } from './modules/network';
18
+ export type { MiniProgramNetworkHeaders, MiniProgramNetworkMethod, MiniProgramNetworkParams, MiniProgramNetworkRequestConfig, MiniProgramNetworkResponse, MiniProgramNetworkValidateStatus, NetworkRequestPayload, NetworkResponsePayload, } from './modules/network';
@@ -1,15 +0,0 @@
1
- import type { MiniProgramRequester } from '../../core/client';
2
- /** 获取小程序隔离 storage 能力方法名。 */
3
- export declare const SYSTEM_GET_STORAGE_METHOD: "system.getStorage";
4
- /** `system.getStorage` 入参。 */
5
- export interface GetStoragePayload {
6
- /** storage key。 */
7
- key: string;
8
- }
9
- /** `system.getStorage` 返回值。 */
10
- export interface GetStorageResult<T = unknown> {
11
- /** key 对应的数据;不存在时为 undefined。 */
12
- data: T | undefined;
13
- }
14
- /** 获取小程序隔离 storage。 */
15
- export declare function getStorage<T = unknown>(requester: MiniProgramRequester, options: GetStoragePayload): Promise<GetStorageResult<T>>;
@@ -1,16 +0,0 @@
1
- import type { MiniProgramRequester } from '../../core/client';
2
- import type { MiniProgramWindowInfoResult } from './types';
3
- /** 系统窗口信息能力方法名。 */
4
- export declare const SYSTEM_GET_WINDOW_INFO_METHOD: "system.getWindowInfo";
5
- /**
6
- * `system.getWindowInfo` 不需要入参。
7
- */
8
- export type GetWindowInfoPayload = void;
9
- /**
10
- * `system.getWindowInfo` 返回当前小程序可用窗口信息。
11
- */
12
- export type GetWindowInfoResult = MiniProgramWindowInfoResult;
13
- /**
14
- * 获取当前小程序窗口信息。
15
- */
16
- export declare function getWindowInfo(requester: MiniProgramRequester): Promise<GetWindowInfoResult>;
@@ -1,23 +0,0 @@
1
- import type { MiniProgramRequester } from '../../core/client';
2
- import { SYSTEM_GET_WINDOW_INFO_METHOD, type GetWindowInfoResult } from './get-window-info';
3
- import { SYSTEM_GET_STORAGE_METHOD, type GetStoragePayload, type GetStorageResult } from './get-storage';
4
- import { SYSTEM_SET_STORAGE_METHOD, type SetStoragePayload } from './set-storage';
5
- export * from './get-window-info';
6
- export * from './get-storage';
7
- export * from './set-storage';
8
- export * from './types';
9
- /** 系统模块开放的方法名。 */
10
- export type MiniProgramSystemMethod = typeof SYSTEM_GET_WINDOW_INFO_METHOD | typeof SYSTEM_GET_STORAGE_METHOD | typeof SYSTEM_SET_STORAGE_METHOD;
11
- /** 外部小程序可调用的系统模块。 */
12
- export interface MiniProgramSystemModule {
13
- /**
14
- * 获取当前小程序窗口信息。
15
- */
16
- getWindowInfo(): Promise<GetWindowInfoResult>;
17
- /** 获取小程序隔离 storage。 */
18
- getStorage<T = unknown>(options: GetStoragePayload): Promise<GetStorageResult<T>>;
19
- /** 写入小程序隔离 storage。 */
20
- setStorage(options: SetStoragePayload): Promise<void>;
21
- }
22
- /** 创建系统模块。 */
23
- export declare function createSystemModule(requester: MiniProgramRequester): MiniProgramSystemModule;
@@ -1,12 +0,0 @@
1
- import type { MiniProgramRequester } from '../../core/client';
2
- /** 写入小程序隔离 storage 能力方法名。 */
3
- export declare const SYSTEM_SET_STORAGE_METHOD: "system.setStorage";
4
- /** `system.setStorage` 入参。 */
5
- export interface SetStoragePayload {
6
- /** storage key。 */
7
- key: string;
8
- /** 需要写入的数据。 */
9
- data: unknown;
10
- }
11
- /** 写入小程序隔离 storage。 */
12
- export declare function setStorage(requester: MiniProgramRequester, options: SetStoragePayload): Promise<void>;
@@ -1,34 +0,0 @@
1
- /** 小程序安全区域信息。 */
2
- export interface MiniProgramSafeArea {
3
- /** 安全区域左上角横坐标。 */
4
- left: number;
5
- /** 安全区域右下角横坐标。 */
6
- right: number;
7
- /** 安全区域左上角纵坐标。 */
8
- top: number;
9
- /** 安全区域右下角纵坐标。 */
10
- bottom: number;
11
- /** 安全区域宽度,单位 px。 */
12
- width: number;
13
- /** 安全区域高度,单位 px。 */
14
- height: number;
15
- }
16
- /** 小程序窗口信息。 */
17
- export interface MiniProgramWindowInfoResult {
18
- /** 设备像素比。 */
19
- pixelRatio: number;
20
- /** 屏幕宽度,单位 px。 */
21
- screenWidth: number;
22
- /** 屏幕高度,单位 px。 */
23
- screenHeight: number;
24
- /** 可使用窗口宽度,单位 px。 */
25
- windowWidth: number;
26
- /** 可使用窗口高度,单位 px。 */
27
- windowHeight: number;
28
- /** 状态栏高度;黑盒环境按顶部可用偏移兼容。 */
29
- statusBarHeight: number;
30
- /** 安全区域。 */
31
- safeArea: MiniProgramSafeArea;
32
- /** 窗口上边缘的 y 值。 */
33
- screenTop: number;
34
- }
@@ -1,18 +0,0 @@
1
- import type { MiniProgramRequester } from '../../core/client';
2
- import type { MiniProgramUserInfoResult } from './types';
3
- /** 用户登录能力方法名。 */
4
- export declare const USER_LOGIN_METHOD: "user.login";
5
- /**
6
- * `user.login` 不需要入参。
7
- */
8
- export type LoginPayload = void;
9
- /**
10
- * `user.login` 返回登录流程结束后的最新用户登录态与公开基础资料。
11
- */
12
- export type LoginResult = MiniProgramUserInfoResult;
13
- /**
14
- * 唤起黑盒登录流程,并在流程返回后刷新用户公开基础资料。
15
- *
16
- * 该能力不会向小程序暴露 token、cookie 或任何登录凭据。
17
- */
18
- export declare function login(requester: MiniProgramRequester): Promise<LoginResult>;