@heybox/hb-sdk 0.8.1 → 0.8.2-alpha.2

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 (64) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +2 -2
  3. package/dist/cli-chunks/{build-DPe1Ycjd.cjs → build-bVThH3Z5.cjs} +4 -4
  4. package/dist/cli-chunks/{context-BSUhAv3Z.cjs → context-DpKqGnjp.cjs} +2 -2
  5. package/dist/cli-chunks/{create-CaiKrGnb.cjs → create-BWC2343y.cjs} +1 -1
  6. package/dist/cli-chunks/{dev-BG1o8Q-0.cjs → dev-t14YpHHY.cjs} +9 -9
  7. package/dist/cli-chunks/{doctor-DutO2P5H.cjs → doctor-BWkrE0Hj.cjs} +1 -1
  8. package/dist/cli-chunks/{index-CKIyipP9.cjs → index-CDtcZVWv.cjs} +15 -15
  9. package/dist/cli-chunks/{index-Bur0U2z1.cjs → index-D3FMcOZq.cjs} +2 -2
  10. package/dist/cli-chunks/{index.esm-BPlpP-O0.cjs → index.esm-BrJBaJWS.cjs} +7 -7
  11. package/dist/cli-chunks/{login-C1JlLEza.cjs → login-DRMl7nFH.cjs} +2 -2
  12. package/dist/cli-chunks/{project-vite-Bd0WzAqQ.cjs → project-vite-CXgdzIYw.cjs} +1 -1
  13. package/dist/cli-chunks/{remote-DTFEf3Dj.cjs → remote-ibQybNiM.cjs} +6 -6
  14. package/dist/cli-chunks/{runtime-permission-env-C2S34ldj.cjs → runtime-permission-env-DiTeD75Q.cjs} +576 -20
  15. package/dist/cli-chunks/{session-zXVkHuhY.cjs → session-CIoBspg-.cjs} +1 -1
  16. package/dist/cli-chunks/{skill-CCB3DyXk.cjs → skill-5labzuWk.cjs} +2 -2
  17. package/dist/cli-chunks/{version-0qwlEyZC.cjs → version-QiVEs76a.cjs} +1 -1
  18. package/dist/cli.cjs +1 -1
  19. package/dist/devtools/browser-dev-host/assets/browser-dev-host-DxzOkljJ.js +101 -0
  20. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-DOfl5YvO.js → desktop-app-launch-B4KsgItx.js} +1 -1
  21. package/dist/devtools/browser-dev-host/assets/{index-CFr28-0O.js → index-9Nb3XhtI.js} +3 -3
  22. package/dist/devtools/browser-dev-host/index.html +2 -2
  23. package/dist/index.cjs.js +948 -44
  24. package/dist/index.esm.js +948 -44
  25. package/dist/miniapp-publish.cjs.js +536 -30
  26. package/dist/miniapp-publish.esm.js +536 -30
  27. package/dist/protocol.cjs.js +807 -2
  28. package/dist/protocol.esm.js +807 -2
  29. package/dist/vite.cjs.js +184 -1
  30. package/dist/vite.esm.js +184 -1
  31. package/package.json +7 -7
  32. package/skill/references/api-root.md +192 -8
  33. package/skill/references/recipes.md +45 -7
  34. package/skill/skill.json +5 -5
  35. package/types/core/errors.d.ts +33 -9
  36. package/types/core/handshake-state.d.ts +32 -2
  37. package/types/core/singleton.d.ts +265 -6
  38. package/types/miniapp-manifest/bindings.d.ts +65 -0
  39. package/types/miniapp-manifest/schema.d.ts +136 -19
  40. package/types/miniapp-publish/index.d.ts +425 -29
  41. package/types/modules/auth/index.d.ts +159 -5
  42. package/types/modules/cloud/index.d.ts +514 -40
  43. package/types/modules/companion/index.d.ts +1518 -17
  44. package/types/modules/device/index.d.ts +140 -9
  45. package/types/modules/environment/index.d.ts +172 -4
  46. package/types/modules/files/types.d.ts +1396 -21
  47. package/types/modules/navigation/app-pages/types.d.ts +81 -24
  48. package/types/modules/navigation/index.d.ts +230 -7
  49. package/types/modules/network/index.d.ts +297 -26
  50. package/types/modules/share/copy-link.d.ts +35 -5
  51. package/types/modules/share/index.d.ts +210 -0
  52. package/types/modules/share/screenshot.d.ts +23 -5
  53. package/types/modules/share/show-share-menu.d.ts +18 -5
  54. package/types/modules/share/types.d.ts +148 -23
  55. package/types/modules/storage/index.d.ts +139 -9
  56. package/types/modules/ui/index.d.ts +249 -18
  57. package/types/modules/user/get-info.d.ts +29 -8
  58. package/types/modules/user/index.d.ts +157 -0
  59. package/types/modules/user/revoke-authorization.d.ts +26 -2
  60. package/types/modules/user/steam-game-list.d.ts +96 -15
  61. package/types/modules/viewport/index.d.ts +158 -22
  62. package/types/protocol/types.d.ts +19 -1
  63. package/types/vite/index.d.ts +159 -1
  64. package/dist/devtools/browser-dev-host/assets/browser-dev-host-pUcws1MK.js +0 -101
@@ -1,23 +1,165 @@
1
1
  import type { LoginScope as ProtocolLoginScope } from '@heybox/hb-sdk-protocol';
2
2
  import type { MiniProgramRequester } from '../../core/client';
3
3
  export { AUTH_LOGIN_METHOD } from '../../protocol/capabilities';
4
- /** 登录 scope 与 Protocol canonical 用户信息 scope 保持同源。 */
4
+ /**
5
+ * 登录时可请求的用户信息 scope。
6
+ *
7
+ * @remarks
8
+ * - `identity`:允许开发者服务端取得当前用户在当前小程序内稳定、隔离的
9
+ * `app_user_id`。它不是黑盒用户 ID,也不能跨小程序关联用户。
10
+ * - `profile`:允许开发者服务端读取当前用户的昵称和头像。用户可以只同意
11
+ * `identity`,因此请求 `profile` 不代表最终一定获得该 scope。
12
+ *
13
+ * `identity` 是登录流程的必选 scope:调用方可以不传它,平台仍会把它加入实际授权
14
+ * 结果。scope 只描述授权码和后续 OpenAPI token 可访问的资料,不是 token、客户端权限
15
+ * 或 `package.json#heybox.permissions` 中的开发者权限声明。
16
+ *
17
+ * @see {@link LoginOptions.scopes}
18
+ * @see {@link LoginResult.scopes}
19
+ * @see [用户身份与登录](https://docs.xiaoheihe.cn/hb_sdk/guide/auth)
20
+ */
5
21
  export type LoginScope = ProtocolLoginScope;
22
+ /**
23
+ * `auth.login` 的可选配置。
24
+ *
25
+ * @remarks
26
+ * 整个参数、省略的 `scopes` 和 `scopes: undefined` 都表示只申请平台隐式包含的
27
+ * `identity`。配置中不接收小程序 ID、用户 ID、手势标记、应用密钥或 token;这些值由
28
+ * Host 的可信上下文提供,不能由页面覆盖。
29
+ *
30
+ * @see {@link LoginScope}
31
+ * @see [权限声明](https://docs.xiaoheihe.cn/hb_sdk/guide/permissions)
32
+ */
6
33
  export interface LoginOptions {
34
+ /**
35
+ * 要申请的可选资料 scope。
36
+ *
37
+ * @remarks
38
+ * 通常只在需要昵称和头像时传 `['profile']`;`identity` 无需显式填写。空数组不会产生
39
+ * 匿名授权,成功结果仍包含 `identity`。数组中的值必须属于 {@link LoginScope} 且不能
40
+ * 重复;JavaScript 调用传入未知值、重复值、`null` 或非数组值时,Promise 以
41
+ * `HbMiniProgramSDKError.code === 'INVALID_PARAMS'` 拒绝。
42
+ *
43
+ * @defaultValue `undefined`,即只申请隐式的 `identity`。
44
+ * @see {@link LoginResult.scopes}
45
+ */
7
46
  scopes?: LoginScope[];
8
47
  }
48
+ /** `auth.login` 的请求载荷;不传配置时为 `undefined`。 */
9
49
  export type LoginPayload = LoginOptions | undefined;
10
- /** 小程序服务端用于换取当前用户身份的短期授权码。 */
50
+ /**
51
+ * 小程序服务端用于换取当前用户身份的短期授权码。
52
+ *
53
+ * @remarks
54
+ * 页面应立即把 `code` 通过 HTTPS 提交给开发者自己的服务端;服务端再使用仅保存在
55
+ * 服务端的应用凭据换取 OpenAPI token。不要把结果写入 DOM、日志、localStorage 或其他
56
+ * 持久化存储,也不要把 `code` 当作 `app_user_id` 或业务 session 使用。
57
+ *
58
+ * @see {@link LoginOptions}
59
+ * @see [服务端换票流程](https://docs.xiaoheihe.cn/hb_sdk/guide/auth#后端-openapi)
60
+ */
11
61
  export interface LoginResult {
62
+ /**
63
+ * 一次性短期授权码。
64
+ *
65
+ * @remarks
66
+ * 该不透明字符串只属于当前小程序,提交给开发者服务端并成功换票后立即失效。过期、
67
+ * 重复使用或提交给其他小程序都会换票失败;此时应由新的明确用户操作再次调用
68
+ * `auth.login()`,不要重试或解析旧 code。
69
+ */
12
70
  code: string;
71
+ /**
72
+ * 授权码剩余有效期,单位为秒。
73
+ *
74
+ * @remarks
75
+ * 返回值是正整数;当前服务端通常返回 `300`,但调用方必须以本字段为准并尽快换票,
76
+ * 不要把 `300` 硬编码为长期契约。该值不是换票后 access token 或业务 session 的有效期。
77
+ */
13
78
  expiresIn: number;
79
+ /**
80
+ * 本次授权码实际包含的 scope。
81
+ *
82
+ * @remarks
83
+ * 数组无重复项且始终包含 `identity`。它可能少于 {@link LoginOptions.scopes} 中请求的
84
+ * scope;只有这里实际包含 `profile` 时,服务端才应读取或依赖昵称、头像字段。
85
+ */
14
86
  scopes: LoginScope[];
15
87
  }
16
88
  export type { MiniProgramAuthMethod } from '../../protocol/capabilities';
17
89
  /** 外部小程序可调用的授权模块。 */
18
90
  export interface MiniProgramAuthModule {
19
91
  /**
20
- * 获取短期授权码;不会向小程序暴露 token、cookie 或黑盒用户资料。
92
+ * 为当前小程序获取一次性短期授权码,由开发者服务端建立用户会话。
93
+ *
94
+ * @param options - 可选的授权配置。不传、传 `{}` 或 `scopes: undefined` 时只申请隐式
95
+ * `identity`;需要昵称和头像时传 `{ scopes: ['profile'] }`。
96
+ * @returns Promise 成功时返回 {@link LoginResult}。它只包含一次性 code、code 有效期和
97
+ * 实际授权 scope,不包含用户资料、`app_user_id`、access token、cookie 或应用密钥。
98
+ * @throws {@link HbMiniProgramSDKError} `INVALID_PARAMS`:`scopes` 不是数组、包含未知值或
99
+ * 重复值。
100
+ * @throws {@link HbMiniProgramSDKError} `PERMISSION_NOT_DECLARED` 或 `PERMISSION_DENIED`:
101
+ * 当前版本未声明或不可使用 `userInfo` 权限。
102
+ * @throws {@link HbMiniProgramSDKError} `USER_GESTURE_REQUIRED`:本次需要展示黑盒登录或
103
+ * 授权 UI,但调用没有可信用户手势;`AUTHORIZATION_CANCELLED`:用户取消、关闭授权页,
104
+ * 或没有同意必选的 `identity`。
105
+ * @throws {@link HbMiniProgramSDKError} `HEYBOX_APP_LOGIN_REQUIRED`:当前黑盒账号未登录或
106
+ * 登录态已失效;`AUTHORIZATION_CONTEXT_CHANGED`:授权期间发生账号切换、授权撤销等
107
+ * 上下文变化;`AUTHORIZATION_PRESENTATION_UNAVAILABLE`:Host 无法展示授权界面。
108
+ * @throws {@link HbMiniProgramSDKError} `REQUEST_FAILED`、`REQUEST_UNSUPPORTED`、
109
+ * `INVALID_RESPONSE`、`INVALID_STATE`、`METHOD_FORBIDDEN` 或 `RUNTIME_DESTROYED`:Host
110
+ * 请求、响应、身份上下文、能力支持或 Runtime 生命周期不满足调用要求。
111
+ * @throws {@link HbMiniProgramSDKError} SDK 握手、bridge 请求超时或 SDK 销毁时,抛出对应
112
+ * 初始化/transport 错误;业务应根据稳定的 `error.code` 分支,不比较 `message`。
113
+ *
114
+ * @remarks
115
+ * 在项目根 `package.json#heybox.permissions.userInfo.enabled` 中声明 `true` 后才能调用。
116
+ * `userInfo` 是开发者权限声明,{@link LoginOptions.scopes} 是用户资料授权,两层门禁互不
117
+ * 替代。
118
+ *
119
+ * SDK 会自动等待握手,但可能展示 UI 的调用必须直接发生在登录、绑定账号等明确的用户
120
+ * 操作回调中。页面应提前用 `getHandshakeState()` 和 `onHandshakeStateChange()` 启用按钮,
121
+ * 不要在点击后先等待其他异步工作。所需 scope 已授权时,Host 可以不展示 UI,直接签发
122
+ * 新 code;调用方仍不能假定以后每次都能静默完成。
123
+ *
124
+ * 本能力通过 Host 的受信请求完成登录,不要求公开 `network` 权限。页面若用
125
+ * `network.request()` 把 code 发给自己的服务端,该网络调用仍须另行声明并获得 `network`
126
+ * 平台批准。页面不能直接访问平台换票接口,也不能持有服务端应用凭据。
127
+ *
128
+ * @example
129
+ * ```ts
130
+ * import hbSDK, { HbMiniProgramSDKError } from '@heybox/hb-sdk'
131
+ *
132
+ * async function loginFromUserAction() {
133
+ * try {
134
+ * const result = await hbSDK.auth.login({ scopes: ['profile'] })
135
+ *
136
+ * // 这是开发者自己的 HTTPS 接口;服务端负责换票并建立业务 session。
137
+ * await hbSDK.network.request({
138
+ * url: 'https://api.example.com/session/heybox',
139
+ * method: 'POST',
140
+ * data: { code: result.code },
141
+ * })
142
+ *
143
+ * if (!result.scopes.includes('profile')) {
144
+ * renderWithoutProfile()
145
+ * }
146
+ * } catch (error) {
147
+ * if (error instanceof HbMiniProgramSDKError && error.code === 'AUTHORIZATION_CANCELLED') {
148
+ * return
149
+ * }
150
+ * throw error
151
+ * }
152
+ * }
153
+ * ```
154
+ *
155
+ * @see {@link LoginOptions}
156
+ * @see {@link LoginResult}
157
+ * @see [用户身份与登录](https://docs.xiaoheihe.cn/hb_sdk/guide/auth)
158
+ * @see [权限声明](https://docs.xiaoheihe.cn/hb_sdk/guide/permissions)
159
+ * @see [错误处理](https://docs.xiaoheihe.cn/hb_sdk/guide/error-handling)
160
+ * @see [user.getInfo](https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/user/getInfo)
161
+ * @see [user.revokeAuthorization](https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/user/revokeAuthorization)
162
+ * @see [network.request](https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/network/request)
21
163
  *
22
164
  * @since 0.2.0-alpha.0
23
165
  * @hbPlatform android
@@ -33,7 +175,19 @@ export interface MiniProgramAuthModule {
33
175
  */
34
176
  login(options?: LoginOptions): Promise<LoginResult>;
35
177
  }
36
- /** 获取短期授权码。 */
178
+ /**
179
+ * 获取短期授权码。
180
+ *
181
+ * @param requester - SDK 内部的能力请求器。
182
+ * @param options - 可选的资料 scope;不传时不附带请求载荷。
183
+ * @returns 与 {@link MiniProgramAuthModule.login} 相同的授权码结果。
184
+ * @throws {@link HbMiniProgramSDKError} 当 Host 拒绝请求、用户取消授权或 SDK 状态无效时抛出。
185
+ */
37
186
  export declare function login(requester: MiniProgramRequester, options?: LoginOptions): Promise<LoginResult>;
38
- /** 创建授权模块。 */
187
+ /**
188
+ * 创建授权模块。
189
+ *
190
+ * @param requester - SDK 内部的能力请求器。
191
+ * @returns 绑定到该 requester 的授权模块。
192
+ */
39
193
  export declare function createAuthModule(requester: MiniProgramRequester): MiniProgramAuthModule;