@heybox/hb-sdk 0.9.1-alpha.4 → 0.9.1-alpha.6

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 (112) hide show
  1. package/CHANGELOG.md +23 -2
  2. package/README.md +33 -0
  3. package/dist/card-controller.cjs.js +194 -0
  4. package/dist/card-controller.esm.js +159 -0
  5. package/dist/cli-chunks/browser-DUdEZCyq.cjs +15 -0
  6. package/dist/cli-chunks/{build-BZg2rHkW.cjs → build-DYYWRiaY.cjs} +22 -10
  7. package/dist/cli-chunks/{context-YrzmEOau.cjs → context-Bo4L-Cx_.cjs} +12 -12
  8. package/dist/cli-chunks/{create-fPvlqLbS.cjs → create-CKC4yp0J.cjs} +12 -5
  9. package/dist/cli-chunks/{dev-X8_kbp78.cjs → dev-BMX6UXUe.cjs} +58 -13
  10. package/dist/cli-chunks/{doctor-DdiucYs9.cjs → doctor-DqEYRo4I.cjs} +13 -6
  11. package/dist/cli-chunks/{index-BdbwsefW.cjs → index-DmCWB_hF.cjs} +4 -7
  12. package/dist/cli-chunks/{index-BGh-Izf8.cjs → index-J4uQvKT_.cjs} +8780 -4464
  13. package/dist/cli-chunks/{index.esm-WYIrPjkF.cjs → index.esm-eNPTDv6W.cjs} +18 -19
  14. package/dist/cli-chunks/{login-DWmNuhWc.cjs → login-BL2OE6r9.cjs} +32 -33
  15. package/dist/cli-chunks/{project-vite-BVDIeoHB.cjs → project-vite-Du1m7Y_3.cjs} +1 -1
  16. package/dist/cli-chunks/{remote-BHJFxXyc.cjs → remote-ZHJUtx6l.cjs} +49 -38
  17. package/dist/cli-chunks/runtime-gate-DedD3ynE.cjs +201950 -0
  18. package/dist/cli-chunks/{runtime-permission-env-eiq8vE62.cjs → runtime-permission-env-DWaPlchd.cjs} +9396 -2929
  19. package/dist/cli-chunks/{skill-DC3cfPj2.cjs → skill-D4z_a_BH.cjs} +14 -7
  20. package/dist/cli-chunks/{version-DYFkOykv.cjs → version-tzrFwpkl.cjs} +1 -1
  21. package/dist/cli.cjs +14 -6
  22. package/dist/devtools/browser-dev-host/assets/browser-dev-host-BL1URvGR.js +102 -0
  23. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-CZsodKbP.js → desktop-app-launch-D6QZYpUq.js} +3 -3
  24. package/dist/devtools/browser-dev-host/assets/{index-B9tOX3zG.js → index-Bqsp608m.js} +4 -4
  25. package/dist/devtools/browser-dev-host/index.html +2 -2
  26. package/dist/index.cjs.js +6224 -275
  27. package/dist/index.esm.js +6224 -276
  28. package/dist/miniapp-publish.cjs.js +6612 -168
  29. package/dist/miniapp-publish.esm.js +6612 -169
  30. package/dist/protocol.cjs.js +5805 -0
  31. package/dist/protocol.esm.js +5805 -0
  32. package/dist/vite.cjs.js +7475 -217
  33. package/dist/vite.esm.js +7474 -218
  34. package/dist/workspace-card-build-sandbox-worker.mjs +72 -0
  35. package/package.json +25 -11
  36. package/skill/SKILL.md +15 -0
  37. package/skill/skill.json +5 -5
  38. package/types/card-controller.d.ts +3682 -0
  39. package/types/index.d.ts +7532 -35
  40. package/types/miniapp-publish/index.d.ts +542 -64
  41. package/types/protocol.d.ts +2083 -9
  42. package/types/vite/index.d.ts +25 -12
  43. package/dist/cli-chunks/browser-RAy8e8cV.cjs +0 -635
  44. package/dist/cli-chunks/runtime-gate-CR0dRMpQ.cjs +0 -65
  45. package/dist/cli-chunks/session-Dz1cGg0E.cjs +0 -3403
  46. package/dist/devtools/browser-dev-host/assets/browser-dev-host-CO2_03W0.js +0 -102
  47. package/types/core/client.d.ts +0 -108
  48. package/types/core/csp-violation.d.ts +0 -5
  49. package/types/core/errors.d.ts +0 -78
  50. package/types/core/event-bus.d.ts +0 -11
  51. package/types/core/handshake-state.d.ts +0 -54
  52. package/types/core/history-observer.d.ts +0 -4
  53. package/types/core/mini-dev-console.d.ts +0 -36
  54. package/types/core/network-sanitize.d.ts +0 -31
  55. package/types/core/sdk.d.ts +0 -104
  56. package/types/core/singleton.d.ts +0 -372
  57. package/types/core/utils.d.ts +0 -10
  58. package/types/core/version.d.ts +0 -2
  59. package/types/devtools/device-logs.d.ts +0 -48
  60. package/types/miniapp-manifest/basic-info-browser.d.ts +0 -37
  61. package/types/miniapp-manifest/basic-info-image-header.d.ts +0 -6
  62. package/types/miniapp-manifest/basic-info-node.d.ts +0 -17
  63. package/types/miniapp-manifest/basic-info-placeholder.d.ts +0 -1
  64. package/types/miniapp-manifest/basic-info.d.ts +0 -33
  65. package/types/miniapp-manifest/bindings.d.ts +0 -70
  66. package/types/miniapp-manifest/category.d.ts +0 -11
  67. package/types/miniapp-manifest/companion-directory.d.ts +0 -2
  68. package/types/miniapp-manifest/companion-executable.d.ts +0 -4
  69. package/types/miniapp-manifest/companion-types.d.ts +0 -63
  70. package/types/miniapp-manifest/companions.d.ts +0 -17
  71. package/types/miniapp-manifest/index.d.ts +0 -7
  72. package/types/miniapp-manifest/node.d.ts +0 -22
  73. package/types/miniapp-manifest/permissions.d.ts +0 -48
  74. package/types/miniapp-manifest/runtime-gate.d.ts +0 -12
  75. package/types/miniapp-manifest/schema.d.ts +0 -302
  76. package/types/modules/auth/index.d.ts +0 -204
  77. package/types/modules/cloud/index.d.ts +0 -669
  78. package/types/modules/companion/index.d.ts +0 -1619
  79. package/types/modules/device/index.d.ts +0 -269
  80. package/types/modules/environment/index.d.ts +0 -238
  81. package/types/modules/files/index.d.ts +0 -5
  82. package/types/modules/files/registry.d.ts +0 -35
  83. package/types/modules/files/types.d.ts +0 -1548
  84. package/types/modules/navigation/app-pages/index.d.ts +0 -4
  85. package/types/modules/navigation/app-pages/types.d.ts +0 -135
  86. package/types/modules/navigation/index.d.ts +0 -312
  87. package/types/modules/network/index.d.ts +0 -457
  88. package/types/modules/network/observability.d.ts +0 -38
  89. package/types/modules/network/request-shape.d.ts +0 -44
  90. package/types/modules/share/copy-link.d.ts +0 -46
  91. package/types/modules/share/extra.d.ts +0 -5
  92. package/types/modules/share/index.d.ts +0 -294
  93. package/types/modules/share/screenshot.d.ts +0 -34
  94. package/types/modules/share/show-share-menu.d.ts +0 -29
  95. package/types/modules/share/types.d.ts +0 -201
  96. package/types/modules/storage/index.d.ts +0 -214
  97. package/types/modules/ui/index.d.ts +0 -315
  98. package/types/modules/user/get-info.d.ts +0 -44
  99. package/types/modules/user/index.d.ts +0 -245
  100. package/types/modules/user/revoke-authorization.d.ts +0 -31
  101. package/types/modules/user/steam-game-list.d.ts +0 -153
  102. package/types/modules/user/types.d.ts +0 -2
  103. package/types/modules/viewport/index.d.ts +0 -319
  104. package/types/protocol/capabilities.d.ts +0 -2
  105. package/types/protocol/constants.d.ts +0 -1
  106. package/types/protocol/dev-session.d.ts +0 -74
  107. package/types/protocol/guards.d.ts +0 -1
  108. package/types/protocol/runtime-permissions.d.ts +0 -2
  109. package/types/protocol/types.d.ts +0 -22
  110. package/types/skill-metadata.d.ts +0 -18
  111. package/types/vite/html-policy.d.ts +0 -6
  112. package/types/vite/runtime-permission-env.d.ts +0 -9
@@ -1,269 +0,0 @@
1
- import type { MiniProgramRequester } from '../../core/client';
2
- import type { ExecuteProtocolInput } from '@heybox/hb-sdk-protocol';
3
- export { DEVICE_EXECUTE_PROTOCOL_METHOD, DEVICE_SET_CLIPBOARD_METHOD, DEVICE_VIBRATE_METHOD, } from '../../protocol/capabilities';
4
- export type { ExecuteProtocolInput, ExecuteProtocolObject, ExecuteProtocolResult } from '@heybox/hb-sdk-protocol';
5
- /**
6
- * 震动强度。
7
- *
8
- * @remarks
9
- * `light`、`medium`、`heavy` 由 Host 映射到平台可用的反馈等级;具体时长和马达
10
- * 强度由宿主决定,小程序不应据此推断精确的毫秒数。
11
- */
12
- export type MiniProgramVibrateIntensity = 'light' | 'medium' | 'heavy';
13
- /**
14
- * `device.vibrate` 入参。
15
- *
16
- * @remarks
17
- * 只接受 `intensity` 与 `delay`;额外字段会以 `INVALID_PARAMS` 拒绝。两项都省略时等价于
18
- * `{ intensity: 'light', delay: 0 }`。
19
- */
20
- export interface VibratePayload {
21
- /**
22
- * 语义震动强度,默认 `light`。
23
- *
24
- * @remarks
25
- * 只接受精确的小写值 `light`、`medium` 或 `heavy`。Host 会把语义等级映射到当前平台、
26
- * 硬件与系统设置可用的反馈,实际马达强度、时长和触感不构成跨平台保证。
27
- */
28
- intensity?: MiniProgramVibrateIntensity;
29
- /**
30
- * Host 调度震动前的延迟毫秒数,默认 `0`。
31
- *
32
- * @remarks
33
- * 必须是 `0` 至 `5000`(含边界)的有限整数;负数、小数、`NaN`、`Infinity` 和超过
34
- * `5000` 的值会以 `INVALID_PARAMS` 拒绝。该值不是震动持续时长,SDK 也不会先在 iframe
35
- * 中等待再发请求,而是把经校验的延迟交给 Host 调度。
36
- */
37
- delay?: number;
38
- }
39
- /**
40
- * `device.vibrate` 的空结果。
41
- *
42
- * @remarks
43
- * `void` 只表示 Host 已接受并完成本次调用,不表示用户一定感知到震动,也不表示延迟期或
44
- * 物理反馈已经结束。静音/触觉设置、硬件能力与系统策略仍可能改变或抑制实际反馈。
45
- */
46
- export type VibrateResult = void;
47
- /**
48
- * `device.setClipboard` 入参。
49
- *
50
- * @remarks
51
- * 只接受 `text` 字段;额外字段会以 `INVALID_PARAMS` 拒绝。该对象不能指定剪贴板格式、
52
- * 追加模式或目标设备,调用会整段替换当前 Host 的系统文本剪贴板。
53
- */
54
- export interface SetClipboardPayload {
55
- /**
56
- * 要写入系统剪贴板的文本。
57
- *
58
- * @remarks
59
- * 必须是字符串,且按 JavaScript `trim()` 检查后至少包含一个非空白字符;空字符串和
60
- * 纯空格、换行或制表符文本会以 `INVALID_PARAMS` 拒绝。`trim()` 只用于校验,Runtime
61
- * 不会实际裁剪、编码或 Unicode 归一化,开头与结尾的空白会原样传给 Host。
62
- *
63
- * 长度上限为 `10000` 个 JavaScript UTF-16 code units(即 `text.length`),不是 UTF-8
64
- * 字节数、Unicode code points 或用户感知字符数;例如多数 emoji 会占用两个 code units。
65
- * 恰好 `10000` 个 code units 可通过 Runtime 校验,Host 或操作系统仍可能拒绝写入。
66
- */
67
- text: string;
68
- }
69
- /** `device.setClipboard` 无稳定返回值。 */
70
- export type SetClipboardResult = void;
71
- export type { MiniProgramDeviceMethod } from '../../protocol/capabilities';
72
- /** 外部小程序可调用的 device 模块。 */
73
- export interface MiniProgramDeviceModule {
74
- /**
75
- * 请求 Host 调度一次触觉震动反馈。
76
- *
77
- * @param options - 可选的语义强度与 Host 调度延迟;省略、JavaScript `null` 或传空对象时使用
78
- * `intensity: 'light'`、`delay: 0`。
79
- * @returns Host 接受并完成本次调用后 resolve `undefined`;不会等待 `delay` 倒计时或
80
- * 物理反馈结束,也不会返回实际强度、时长或是否被系统抑制。
81
- * @throws {@link HbMiniProgramSDKError} `INVALID_PARAMS`:除兼容 `null` 外的 `options` 不是对象、包含未知字段、
82
- * `intensity` 不是 `light` / `medium` / `heavy`,或 `delay` 不是 `0` 至 `5000` 的整数。
83
- * @throws {@link HbMiniProgramSDKError} `METHOD_FORBIDDEN`:当前 Host 未开放震动能力;新 PC
84
- * Host 的 Windows / macOS 桌面环境属于此分支。Host 无法支持请求形状时可返回
85
- * `REQUEST_UNSUPPORTED`。其他握手、bridge 超时与 Host 调用失败会保留对应错误码。
86
- *
87
- * @remarks
88
- * 该 API 无需在 `package.json#heybox.permissions` 中声明权限,也不要求平台批准、用户
89
- * 授权或可信用户手势。Runtime 不对连续调用增加频率限制或合并策略;每次合法调用都会
90
- * 交给 Host,但 Host 或操作系统仍可能节流、合并或忽略反馈。
91
- *
92
- * 移动 Host 会将 `light`、`medium`、`heavy` 映射到平台可用的反馈等级,并将 `delay`
93
- * 交给平台调度。等级不是精确马达参数,`delay` 也不是计时器;不要用 Promise 完成时点、
94
- * 震动强度或触感推进业务状态、安全确认或无障碍信息。
95
- *
96
- * 震动只提供触觉反馈,不会显示文案、Toast、Loading 或错误提示。需要可见反馈时应独立
97
- * 调用 {@link https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/ui/showToast | ui.showToast};
98
- * 桌面环境可在震动返回 `METHOD_FORBIDDEN` 时降级为 Toast,但两次调用拥有独立的 Promise
99
- * 与失败结果。
100
- *
101
- * @example
102
- * ```ts
103
- * import hbSDK, { HbMiniProgramSDKError } from '@heybox/hb-sdk'
104
- *
105
- * try {
106
- * await hbSDK.device.vibrate({ intensity: 'medium', delay: 120 })
107
- * } catch (error) {
108
- * // 桌面 Host 没有触觉反馈时,改用可见反馈。
109
- * if (error instanceof HbMiniProgramSDKError && error.code === 'METHOD_FORBIDDEN') {
110
- * await hbSDK.ui.showToast({ message: '操作完成', status: 'success' })
111
- * } else {
112
- * throw error
113
- * }
114
- * }
115
- * ```
116
- *
117
- * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/ui/showToast | ui.showToast}
118
- * @see {@link https://docs.xiaoheihe.cn/hb_sdk/guide/permissions | 权限声明}
119
- *
120
- * @since 0.4.4
121
- * @hbPlatform android
122
- * @hbPlatform ios
123
- * @hbPlatform ohos
124
- * @hbPlatform windows
125
- * @hbPlatform macos
126
- * @hbClient android none
127
- * @hbClient ios none
128
- * @hbClient ohos none
129
- * @hbClient windows none
130
- * @hbClient macos none
131
- */
132
- vibrate(options?: VibratePayload): Promise<void>;
133
- /**
134
- * 将调用方提供的纯文本写入 Host 的系统剪贴板。
135
- *
136
- * @param options - 剪贴板写入参数;`options.text` 必须符合
137
- * {@link SetClipboardPayload.text} 的非空白与 UTF-16 长度约束。
138
- * @returns Host 确认系统剪贴板写入完成后 resolve `undefined`;不会返回或回读剪贴板内容。
139
- * @throws {@link HbMiniProgramSDKError} `INVALID_PARAMS`:`options` 不是对象、包含 `text`
140
- * 以外的字段,或 `text` 不是字符串、全为空白、超过 `10000` 个 UTF-16 code units。
141
- * @throws {@link HbMiniProgramSDKError} `PERMISSION_NOT_DECLARED` / `PERMISSION_DENIED`:当前
142
- * 版本未声明或未启用 `clipboard` 权限。
143
- * @throws {@link HbMiniProgramSDKError} `METHOD_FORBIDDEN` / `METHOD_NOT_FOUND`:当前 Host
144
- * 未开放或尚不认识该能力;Host 不支持本次写入形状时可返回 `REQUEST_UNSUPPORTED`。
145
- * 其他握手、bridge 超时和 Host / 系统剪贴板失败会保留对应错误码。
146
- *
147
- * @remarks
148
- * 该 API 需要在 `package.json#heybox.permissions` 声明并启用 `clipboard`,不需要平台
149
- * 批准、用户授权或可信用户手势。它通过 Host 原语写入系统剪贴板,不调用浏览器
150
- * `navigator.clipboard`,因此浏览器 Clipboard API 的权限与手势规则不适用;调用方仍应
151
- * 在明确的用户操作后写入,避免意外覆盖用户剪贴板。
152
- *
153
- * Runtime 仅用 `trim()` 判断文本是否全为空白,然后把原始字符串完整交给 Host;前后
154
- * 空格、换行和制表符都会保留。成功只表示 Host 已完成纯文本写入,不会追加内容、复制
155
- * 富文本或图片、打开分享面板,也不会自动显示“复制成功”提示。
156
- *
157
- * 复制任意业务文本或已有 URL 时使用本方法。要生成并复制当前小程序的标准分享链接,
158
- * 使用 {@link https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/share/copyLink | share.copyLink}:
159
- * 它要求 `share` 而不是 `clipboard` 权限、同样不要求可信用户手势,并在 Host 写入后返回
160
- * 生成的完整链接。
161
- *
162
- * @example
163
- * ```ts
164
- * import hbSDK from '@heybox/hb-sdk'
165
- *
166
- * await hbSDK.device.setClipboard({
167
- * // 前后空格会保留;该调用不会自动显示成功提示。
168
- * text: ' 房间码: HB-2048 ',
169
- * })
170
- * showCopiedToast()
171
- * ```
172
- *
173
- * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/share/copyLink | share.copyLink}
174
- * @see {@link https://docs.xiaoheihe.cn/hb_sdk/guide/permissions | 权限声明}
175
- *
176
- * @since 0.4.4
177
- * @hbPlatform android
178
- * @hbPlatform ios
179
- * @hbPlatform ohos
180
- * @hbPlatform windows
181
- * @hbPlatform macos
182
- * @hbClient android none
183
- * @hbClient ios none
184
- * @hbClient ohos none
185
- * @hbClient windows none
186
- * @hbClient macos none
187
- */
188
- setClipboard(options: SetClipboardPayload): Promise<void>;
189
- /**
190
- * 执行一条任意小黑盒客户端协议。
191
- *
192
- * **暂不对外开放。** `device.executeProtocol()` 与 `appProtocol` 权限当前仅为预留能力,
193
- * 不提供开发者申请入口;请勿在对外发布的小程序中依赖此 API。本地临时授权不代表对外开放。
194
- *
195
- * @param protocol - 完整协议字符串(如 `heybox://<encodeURIComponent(JSON)>`)或包含
196
- * `protocol_type` 的 JSON 协议对象。
197
- * @returns 协议投递成功后 resolve `undefined`。成功只表示已交给 Host 投递,不表示协议业务
198
- * 动作已经完成;协议自身的业务返回值与回调不会转发给调用方。
199
- * @throws {@link HbMiniProgramSDKError} `INVALID_PARAMS`:输入既不是非空字符串,也不是带非空
200
- * 字符串 `protocol_type` 的 JSON 可序列化对象(含函数、`symbol`、`BigInt`、非有限数字或循环
201
- * 引用时会失败),此时不会产生任何投递。
202
- * @throws {@link HbMiniProgramSDKError} `PERMISSION_NOT_DECLARED` / `PERMISSION_DENIED`:当前
203
- * 版本未声明 `appProtocol`,或该权限未启用/未获平台批准;不会产生协议副作用。
204
- * @throws {@link HbMiniProgramSDKError} `METHOD_FORBIDDEN` / `METHOD_NOT_FOUND`:当前 Host 未
205
- * 开放或尚不认识通用协议执行能力;旧 PC Host 属于此分支。Host 明确拒绝的协议也可能映射为
206
- * 不支持错误。
207
- * @throws {@link HbMiniProgramSDKError} 其它握手、bridge 超时、Runtime 销毁与 Host 投递失败会保留
208
- * 对应错误码。底层明确投递失败时一定 reject,不会把失败当作成功。
209
- *
210
- * @remarks
211
- * **最高危险等级。** 该 API 与 `appProtocol` 权限均为当前最高危险等级 `high`:平台批准后,
212
- * 该入口可以执行任意小黑盒协议,并**绕过**其他 SDK 能力权限及其专用授权流程(例如网络类协议
213
- * 不再要求 `network`,读取用户资料不再要求 `userInfo`)。`appProtocol` 只作用于
214
- * `device.executeProtocol()`,不会让其它 SDK 方法免除自身权限。底层协议工具、客户端与操作
215
- * 系统原本的支持范围、可信手势与执行规则继续生效;未获批准或未声明的调用不会产生任何副作用。
216
- *
217
- * SDK 不维护协议类型白名单,也不把对象重组为
218
- * {@link https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/navigation/openAppPage | navigation.openAppPage}
219
- * 的目标联合;字符串与对象都交给各端已有协议实现处理,因此各端实际支持的协议范围由已有工具
220
- * 决定,移动端与 PC 不保证逐条一致。本方法不自动重试,避免副作用协议被重复执行。
221
- *
222
- * 本地调试时可在 `hb-sdk dev` 中声明 `appProtocol`,经 Host 确认后获得当前 Dev Session 的临时
223
- * 授权;临时授权不代表平台批准,`remote deploy` 与生产构建仍按线上批准执行。
224
- *
225
- * @example
226
- * ```ts
227
- * import hbSDK from '@heybox/hb-sdk'
228
- *
229
- * // 自行构造协议对象。
230
- * await hbSDK.device.executeProtocol({
231
- * protocol_type: 'openRouterPath',
232
- * path: '/game/detail',
233
- * params: { app_id: '570' },
234
- * })
235
- *
236
- * // 后端下发的完整协议字符串也可直接传入。
237
- * const protocol = { protocol_type: 'openRouterPath', path: '/game/detail', params: { app_id: '570' } }
238
- * await hbSDK.device.executeProtocol(`heybox://${encodeURIComponent(JSON.stringify(protocol))}`)
239
- * ```
240
- *
241
- * @see {@link https://docs.xiaoheihe.cn/hb_sdk/guide/permissions | 权限声明}
242
- * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/navigation/openAppPage | navigation.openAppPage}
243
- *
244
- * @since 0.9.1-alpha.4
245
- * @hbPlatform android
246
- * @hbPlatform ios
247
- * @hbPlatform ohos
248
- * @hbPlatform windows
249
- * @hbPlatform macos
250
- * @hbClient android none
251
- * @hbClient ios none
252
- * @hbClient ohos none
253
- * @hbClient windows none
254
- * @hbClient macos none
255
- */
256
- executeProtocol(protocol: ExecuteProtocolInput): Promise<void>;
257
- }
258
- /** 触发宿主震动反馈。 */
259
- export declare function vibrate(requester: MiniProgramRequester, options?: VibratePayload): Promise<void>;
260
- /** 写入系统文本剪贴板。 */
261
- export declare function setClipboard(requester: MiniProgramRequester, options: SetClipboardPayload): Promise<void>;
262
- /**
263
- * 执行任意小黑盒客户端协议。
264
- *
265
- * 形态校验由 Runtime 在 Host 投递前完成;本函数只负责把输入原样交给 bridge。
266
- */
267
- export declare function executeProtocol(requester: MiniProgramRequester, protocol: ExecuteProtocolInput): Promise<void>;
268
- /** 创建设备能力模块。 */
269
- export declare function createDeviceModule(requester: MiniProgramRequester): MiniProgramDeviceModule;
@@ -1,238 +0,0 @@
1
- import type { MiniProgramOperatingSystemName, MiniProgramRuntimeMode } from '@heybox/hb-sdk-protocol';
2
- /**
3
- * 小程序环境信息中的运行模式。
4
- *
5
- * @remarks
6
- * `production` 表示已发布版本,`preview` 表示版本预览,`development` 表示本地或
7
- * Browser Dev Host 调试;旧版 Host 或无法识别的值会归一化为 `unknown`。
8
- */
9
- export type { MiniProgramRuntimeMode } from '@heybox/hb-sdk-protocol';
10
- /**
11
- * 小程序环境信息中的操作系统名称。
12
- *
13
- * @remarks
14
- * 该值由 Host 提供,不由小程序 iframe 的 User-Agent 推断。无法识别或缺失时为
15
- * `unknown`。
16
- */
17
- export type { MiniProgramOperatingSystemName } from '@heybox/hb-sdk-protocol';
18
- /**
19
- * 当前小程序实例的只读环境快照。
20
- *
21
- * @remarks
22
- * 返回对象及其嵌套对象均已冻结。除 `sdk.version` 外,版本字段都是 Host 提供的
23
- * 不透明字符串,不保证符合 SemVer,也不适合做大小比较。旧版 Host 缺失字段时
24
- * 使用固定结构,并将字符串字段设为 `null`、枚举字段设为 `unknown`。
25
- */
26
- export interface MiniProgramEnvironmentInfo {
27
- readonly runtime: {
28
- /** 当前小程序实例的运行模式。 */
29
- readonly mode: MiniProgramRuntimeMode;
30
- };
31
- readonly host: {
32
- /** 当前小黑盒 App 版本;Host 未提供时为 `null`。 */
33
- readonly appVersion: string | null;
34
- };
35
- readonly miniProgram: {
36
- /** 平台确认的 canonical 小程序 ID;Host 未提供时为 `null`。 */
37
- readonly id: string | null;
38
- /** 当前加载的小程序版本;Host 未提供时为 `null`。 */
39
- readonly version: string | null;
40
- };
41
- readonly operatingSystem: {
42
- /** Host 提供的标准操作系统枚举。 */
43
- readonly name: MiniProgramOperatingSystemName;
44
- /** Host 提供的操作系统版本;Host 未提供时为 `null`。 */
45
- readonly version: string | null;
46
- };
47
- readonly sdk: {
48
- /** 当前页面实际运行的 `@heybox/hb-sdk` 版本。 */
49
- readonly version: string;
50
- };
51
- }
52
- /** SDK 内部读取环境快照所需的最小能力。 */
53
- export interface MiniProgramEnvironmentReader {
54
- getEnvironmentInfo(): Promise<MiniProgramEnvironmentInfo>;
55
- getEnvironmentInfoSync(): MiniProgramEnvironmentInfo;
56
- }
57
- /** 外部小程序可调用的 environment 模块。 */
58
- export interface MiniProgramEnvironmentModule {
59
- /**
60
- * 获取当前小程序实例的环境快照,并在必要时自动等待 SDK 握手。
61
- *
62
- * @returns 握手完成后 resolve 的同一份深度冻结环境快照,包含:
63
- *
64
- * - `runtime.mode`:`production`、`preview`、`development` 或 `unknown`;
65
- * - `host.appVersion`:Host 提供的小黑盒 App 版本,缺失或非法时为 `null`;
66
- * - `miniProgram.id`:平台确认的 canonical 小程序 ID,缺失或非法时为 `null`;
67
- * - `miniProgram.version`:当前加载的小程序版本,缺失或非法时为 `null`;
68
- * - `operatingSystem.name`:Host 提供的标准系统枚举,缺失或非法时为 `unknown`;
69
- * - `operatingSystem.version`:Host 提供的系统版本,缺失或非法时为 `null`;
70
- * - `sdk.version`:当前页面实际运行的 `@heybox/hb-sdk` 版本。
71
- *
72
- * @throws {@link HbMiniProgramSDKError} 初始握手进入 `failed` 时拒绝。常见错误码包括
73
- * `NOT_IN_IFRAME`、`MISSING_NONCE`、`READY_TIMEOUT`、`HANDSHAKE_FAILED`,以及握手完成前
74
- * Runtime 卸载产生的 `RUNTIME_UNAVAILABLE`。本异步 API 在 `connecting` 状态会等待,不会抛出
75
- * `ENVIRONMENT_NOT_READY`。
76
- *
77
- * @remarks
78
- * 该方法不接收参数。导入根包时 SDK 已自动启动握手;调用发生在 `connecting` 状态时会等待
79
- * 持久握手状态进入 `ready`,随后直接返回握手阶段缓存的快照。并发或重复调用不会重新请求
80
- * Host,并会得到引用相同的对象;快照和所有嵌套对象均不可变,也不会随页面生命周期继续更新。
81
- *
82
- * Host 下发的非空字符串会去除首尾空白。旧版 Host 未下发环境信息,或某个字段类型、枚举值
83
- * 非法时,只降级对应字段并保持完整返回结构,不会因此阻断握手。除 `sdk.version` 遵循 npm
84
- * SemVer 外,其他版本字段均为不透明字符串,不能用于版本大小判断。
85
- *
86
- * 该 API 无需在 `package.json#heybox.permissions` 中声明权限,不触发用户授权,也不返回设备唯一
87
- * 标识或账号信息。结果只适合界面适配、兼容降级、埋点和诊断;小程序可修改发往服务端的值,
88
- * 因而不能将其作为鉴权、权限控制或风控依据。
89
- *
90
- * Android、iOS、OHOS、Windows 与 macOS 的最低客户端要求见本页兼容性元数据。本地 Browser
91
- * Dev Host 中 `runtime.mode` 为 `development`,操作系统名称来自当前设备预设,不从 iframe 的
92
- * User-Agent 推断。
93
- *
94
- * 已经确认握手为 `ready` 且必须同步读取时,可改用
95
- * [environment.getInfoSync()](/reference/sdk/environment/getInfoSync);需要驱动加载或失败界面时,
96
- * 使用 [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState) 或
97
- * [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange),不要依赖不会重放的
98
- * `ready` 生命周期事件。
99
- *
100
- * @example
101
- * ```ts
102
- * import hbSDK from '@heybox/hb-sdk'
103
- *
104
- * const info = await hbSDK.environment.getInfo()
105
- *
106
- * console.log({
107
- * mode: info.runtime.mode,
108
- * miniProgramId: info.miniProgram.id ?? 'unknown',
109
- * appVersion: info.host.appVersion ?? 'unknown',
110
- * platform: info.operatingSystem.name,
111
- * sdkVersion: info.sdk.version,
112
- * })
113
- * ```
114
- *
115
- * @example
116
- * ```ts
117
- * import hbSDK, { HbMiniProgramSDKError } from '@heybox/hb-sdk'
118
- *
119
- * try {
120
- * const info = await hbSDK.environment.getInfo()
121
- * applyPlatformLayout(info.operatingSystem.name)
122
- * } catch (error) {
123
- * if (error instanceof HbMiniProgramSDKError) {
124
- * showEnvironmentUnavailable(error.code)
125
- * } else {
126
- * throw error
127
- * }
128
- * }
129
- * ```
130
- *
131
- * @see [environment.getInfoSync()](/reference/sdk/environment/getInfoSync) 同步读取同一份握手快照。
132
- * @see [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState) 同步检查持久握手状态。
133
- * @see [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 订阅当前状态及后续唯一一次迁移。
134
- *
135
- * @since 0.8.1-alpha.2
136
- * @hbPlatform android
137
- * @hbPlatform ios
138
- * @hbPlatform ohos
139
- * @hbPlatform windows
140
- * @hbPlatform macos
141
- * @hbClient android none
142
- * @hbClient ios none
143
- * @hbClient ohos none
144
- * @hbClient windows none
145
- * @hbClient macos none
146
- */
147
- getInfo(): Promise<MiniProgramEnvironmentInfo>;
148
- /**
149
- * 同步读取握手完成后缓存的环境快照。
150
- *
151
- * @returns 握手阶段缓存的同一份
152
- * [MiniProgramEnvironmentInfo](/reference/symbols/root/interfaces/MiniProgramEnvironmentInfo) 深度冻结快照,包含:
153
- *
154
- * - `runtime.mode`:当前实例的
155
- * [MiniProgramRuntimeMode](/reference/symbols/root/types/MiniProgramRuntimeMode);
156
- * - `host.appVersion`:Host 提供的小黑盒 App 版本,缺失或非法时为 `null`;
157
- * - `miniProgram.id`:平台确认的 canonical 小程序 ID,缺失或非法时为 `null`;
158
- * - `miniProgram.version`:当前加载的小程序版本,缺失或非法时为 `null`;
159
- * - `operatingSystem.name`:Host 提供的
160
- * [MiniProgramOperatingSystemName](/reference/symbols/root/types/MiniProgramOperatingSystemName);
161
- * - `operatingSystem.version`:Host 提供的系统版本,缺失或非法时为 `null`;
162
- * - `sdk.version`:当前页面实际运行的 `@heybox/hb-sdk` 版本。
163
- *
164
- * @throws [HbMiniProgramSDKError](/reference/symbols/root/classes/HbMiniProgramSDKError)
165
- * 当前握手状态为 `connecting` 时同步抛出
166
- * `ENVIRONMENT_NOT_READY`。这也包括 Host 已返回握手响应、但 SDK 尚未收到 `ready` 事件的短暂阶段。
167
- * @throws [HbMiniProgramSDKError](/reference/symbols/root/classes/HbMiniProgramSDKError)
168
- * 当前握手状态为 `failed` 时原样重抛
169
- * `state.error`;其错误码可能是 `NOT_IN_IFRAME`、`MISSING_NONCE`、`READY_TIMEOUT`、
170
- * `HANDSHAKE_FAILED`、`RUNTIME_UNAVAILABLE` 或 `SDK_DESTROYED` 等握手错误,而不是
171
- * `ENVIRONMENT_NOT_READY`。
172
- *
173
- * @remarks
174
- * 该方法不接收参数、不等待握手,也不会向 Host 发起新请求。它严格按当前持久握手状态同步返回
175
- * 或抛错:`connecting` 抛出 `ENVIRONMENT_NOT_READY`,`failed` 重抛原始握手错误,只有 `ready`
176
- * 返回快照。一般业务代码应优先使用会自动等待握手的
177
- * [environment.getInfo()](/reference/sdk/environment/getInfo);本方法适用于已经由同步控制流确认
178
- * `ready`,且调用方不能引入异步边界的场景。
179
- *
180
- * SDK 会在发布 `ready` 状态前缓存快照,因此在
181
- * [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 的 `ready` 分支中可立即
182
- * 调用。也可以先检查 [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState),但检查与读取
183
- * 应在同一段同步代码中完成。不要依赖不会重放的 `ready` 生命周期事件判断当前状态。
184
- *
185
- * 首次成功读取、后续同步读取和异步 `getInfo()` 都返回引用相同的对象,不会重新请求、重新创建或
186
- * 随页面生命周期更新。返回对象及全部嵌套对象均已冻结;旧版 Host 缺失环境信息时仍返回固定结构,
187
- * 字符串字段以 `null`、枚举字段以 `unknown` 表示未知值。除 `sdk.version` 外,版本字段都是不透明
188
- * 字符串,不能用于版本大小判断。
189
- *
190
- * 该 API 无需权限且不触发用户授权。快照适合在同步渲染、界面适配、兼容降级、埋点或诊断中使用;
191
- * 它不包含账号信息或设备唯一标识,也不能作为鉴权、权限控制或风控依据。
192
- *
193
- * @example
194
- * ```ts
195
- * import {
196
- * environment,
197
- * onHandshakeStateChange,
198
- * } from '@heybox/hb-sdk'
199
- *
200
- * const unsubscribe = onHandshakeStateChange(state => {
201
- * if (state.status === 'connecting') return
202
- *
203
- * if (state.status === 'failed') {
204
- * console.error('SDK 握手失败', state.error.code)
205
- * return
206
- * }
207
- *
208
- * // ready 发布前快照已经缓存,这里不会抛 ENVIRONMENT_NOT_READY。
209
- * const info = environment.getInfoSync()
210
- * renderForPlatform(info.operatingSystem.name)
211
- * })
212
- *
213
- * window.addEventListener('unload', unsubscribe, { once: true })
214
- * ```
215
- *
216
- * @see [environment.getInfo()](/reference/sdk/environment/getInfo) 自动等待握手后读取同一份快照。
217
- * @see [MiniProgramEnvironmentInfo](/reference/symbols/root/interfaces/MiniProgramEnvironmentInfo) 返回字段、空值与枚举语义。
218
- * @see [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState) 同步读取当前持久握手状态。
219
- * @see [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 立即接收当前状态并订阅唯一一次迁移。
220
- *
221
- * @since 0.8.1-alpha.2
222
- * @hbPlatform android
223
- * @hbPlatform ios
224
- * @hbPlatform ohos
225
- * @hbPlatform windows
226
- * @hbPlatform macos
227
- * @hbClient android none
228
- * @hbClient ios none
229
- * @hbClient ohos none
230
- * @hbClient windows none
231
- * @hbClient macos none
232
- */
233
- getInfoSync(): MiniProgramEnvironmentInfo;
234
- }
235
- /** 创建环境信息模块。 */
236
- export declare function createEnvironmentModule(reader: MiniProgramEnvironmentReader): MiniProgramEnvironmentModule;
237
- /** 将不可信 wire 值逐字段降级为固定、深度冻结的公开快照。 */
238
- export declare function normalizeMiniProgramEnvironmentInfo(value: unknown): MiniProgramEnvironmentInfo;
@@ -1,5 +0,0 @@
1
- import type { MiniProgramRequester } from '../../core/client';
2
- import type { FilesModule } from './types';
3
- export type { CreateOptions, DirectoryHandle, FileHandle, FileMode, FileStat, FileSystem, FileSystemEntity, FilesModule, ListOptions, PathRoot, PickDirectoryOptions, PickFilesOptions, RemoveOptions, SaveFileOptions, } from './types';
4
- /** 创建当前 SDK session 的 files 模块。 */
5
- export declare function createFilesModule(requester: MiniProgramRequester): FilesModule;
@@ -1,35 +0,0 @@
1
- import type { MiniProgramRequester } from '../../core/client';
2
- import type { MiniProgramDirectoryDescriptor, MiniProgramDirectoryRef, MiniProgramFileDescriptor, MiniProgramFileMode, MiniProgramFileRef, MiniProgramFileSystemEntityDescriptor } from '@heybox/hb-sdk-protocol';
3
- import type { DirectoryHandle, FileHandle, FileSystem, FileSystemEntity } from './types';
4
- interface FileHandleState {
5
- ref: MiniProgramFileRef;
6
- mode: MiniProgramFileMode;
7
- }
8
- interface DirectoryHandleState {
9
- ref: MiniProgramDirectoryRef;
10
- mode: MiniProgramFileMode;
11
- }
12
- /** 校验并返回平台无关的 `/` 分隔逻辑相对路径。 */
13
- export declare function normalizeRelativePath(value: unknown): string;
14
- export declare class MiniProgramFileHandleRegistry {
15
- private readonly requester;
16
- private readonly fileStates;
17
- private readonly directoryStates;
18
- private readonly pathRootStates;
19
- private sandboxRoot?;
20
- constructor(requester: MiniProgramRequester);
21
- getSandbox(): FileSystem;
22
- createFile(descriptor: MiniProgramFileDescriptor): FileHandle;
23
- createDirectFile(descriptor: MiniProgramFileDescriptor): FileHandle;
24
- createDirectory(descriptor: MiniProgramDirectoryDescriptor): DirectoryHandle;
25
- createDirectDirectory(descriptor: MiniProgramDirectoryDescriptor): DirectoryHandle;
26
- createEntity(descriptor: MiniProgramFileSystemEntityDescriptor): FileSystemEntity;
27
- requireFile(handle: unknown): FileHandleState;
28
- requireDirectory(handle: unknown): DirectoryHandleState;
29
- private definePathRootMethods;
30
- private assertFileDescriptor;
31
- private assertDirectoryDescriptor;
32
- }
33
- export declare function getFileHandleRegistry(requester: MiniProgramRequester): MiniProgramFileHandleRegistry;
34
- export declare function isMiniProgramFileSystemValue(value: unknown): value is FileSystem | FileSystemEntity;
35
- export {};