@heybox/hb-sdk 0.7.5-alpha.0 → 0.8.0-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.
- package/CHANGELOG.md +86 -0
- package/README.md +69 -16
- package/THIRD_PARTY_NOTICES.md +1755 -0
- package/dist/cli-chunks/{build-V1YBdpzY.cjs → build-CCLWgXyA.cjs} +6 -5
- package/dist/cli-chunks/{context-Ba1Je-wT.cjs → context-Brh56h56.cjs} +2 -27
- package/dist/cli-chunks/{create-CKGjqo9E.cjs → create-BZ-hi2s1.cjs} +1 -1
- package/dist/cli-chunks/{dev-XopYKLYZ.cjs → dev-CoSXtEYa.cjs} +336 -517
- package/dist/cli-chunks/{doctor-BHbrYQqT.cjs → doctor-EsCYJGhV.cjs} +1 -1
- package/dist/cli-chunks/{index-C9mpajVG.cjs → index-BL5eEPap.cjs} +14 -14
- package/dist/cli-chunks/{index-DKWfX6Ut.cjs → index-CS6Q0o5C.cjs} +2 -2
- package/dist/cli-chunks/{index.esm-SXAQ3WVR.cjs → index.esm-BoBHPfpq.cjs} +6 -6
- package/dist/cli-chunks/{login-BVWicWqe.cjs → login-CILLxGuf.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-CBb38HJ3.cjs → project-vite-Qu6Xe9Dn.cjs} +1 -1
- package/dist/cli-chunks/{remote-BG1u0NKT.cjs → remote-DRuTQ51u.cjs} +10 -8
- package/dist/cli-chunks/{runtime-gate-CtV7rWyX.cjs → runtime-gate-DFjw66kF.cjs} +20 -1
- package/dist/cli-chunks/{runtime-permission-env-D-8_jPG3.cjs → runtime-permission-env-CjsCe5bp.cjs} +13 -13
- package/dist/cli-chunks/{session-CJS_SEp9.cjs → session-D-_N3WVL.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-uq-Wac6k.js +97 -0
- package/dist/devtools/browser-dev-host/assets/heybox-logo-CogNENsk.svg +6 -0
- package/dist/devtools/browser-dev-host/assets/index-CeP6SLB3.js +567 -0
- package/dist/devtools/browser-dev-host/assets/index-KD2f3Jdz.css +1 -0
- package/dist/devtools/browser-dev-host/assets/workbench-state-D-1U0JRq.js +5 -0
- package/dist/devtools/browser-dev-host/index.html +6 -435
- package/dist/index.cjs.js +1036 -90
- package/dist/index.esm.js +1036 -91
- package/dist/miniapp-publish.cjs.js +13 -13
- package/dist/miniapp-publish.esm.js +13 -13
- package/dist/protocol.cjs.js +208 -6
- package/dist/protocol.esm.js +182 -7
- package/dist/templates/vue3-vite-ts/README.md.ejs +2 -0
- package/dist/templates/vue3-vite-ts/vite.config.ts +1 -1
- package/dist/vite.cjs.js +31 -4
- package/dist/vite.esm.js +31 -5
- package/package.json +28 -11
- package/skill/SKILL.md +9 -5
- package/skill/references/api-protocol.md +111 -3
- package/skill/references/api-root.md +170 -22
- package/skill/references/cli.md +21 -17
- package/skill/references/examples.md +30 -1
- package/skill/references/recipes.md +105 -1
- package/skill/references/safety-boundaries.md +12 -1
- package/skill/scripts/sync-references.mjs +37 -3
- package/skill/skill.json +4 -4
- package/types/core/client.d.ts +17 -1
- package/types/core/errors.d.ts +5 -5
- package/types/core/sdk.d.ts +8 -5
- package/types/core/singleton.d.ts +59 -6
- package/types/index.d.ts +4 -2
- package/types/miniapp-manifest/schema.d.ts +5 -0
- package/types/miniapp-publish/index.d.ts +8 -8
- package/types/modules/auth/index.d.ts +15 -1
- package/types/modules/cloud/index.d.ts +75 -5
- package/types/modules/device/index.d.ts +31 -3
- package/types/modules/files/index.d.ts +5 -0
- package/types/modules/files/registry.d.ts +35 -0
- package/types/modules/files/types.d.ts +159 -0
- package/types/modules/navigation/index.d.ts +46 -4
- package/types/modules/network/index.d.ts +72 -14
- package/types/modules/share/copy-link.d.ts +3 -3
- package/types/modules/share/index.d.ts +61 -5
- package/types/modules/share/screenshot.d.ts +3 -3
- package/types/modules/share/show-share-menu.d.ts +3 -3
- package/types/modules/storage/index.d.ts +38 -10
- package/types/modules/ui/index.d.ts +46 -4
- package/types/modules/user/get-info.d.ts +1 -1
- package/types/modules/user/index.d.ts +46 -4
- package/types/modules/user/steam-game-list.d.ts +2 -2
- package/types/modules/viewport/index.d.ts +36 -8
- package/types/protocol/capabilities.d.ts +2 -2
- package/types/protocol/constants.d.ts +1 -1
- package/types/protocol/guards.d.ts +1 -1
- package/types/protocol/types.d.ts +1 -1
- package/types/protocol.d.ts +4 -3
- package/types/vite/index.d.ts +15 -7
- package/dist/devtools/browser-dev-host/main.js +0 -12158
|
@@ -37,7 +37,7 @@ import hbSDK, { type MiniProgramSDKHandshakeState } from '@heybox/hb-sdk'
|
|
|
37
37
|
import { computed, onUnmounted, ref } from 'vue'
|
|
38
38
|
|
|
39
39
|
const handshakeState = ref<MiniProgramSDKHandshakeState>(hbSDK.getHandshakeState())
|
|
40
|
-
const stopHandshakeState = hbSDK.onHandshakeStateChange(
|
|
40
|
+
const stopHandshakeState = hbSDK.onHandshakeStateChange(state => {
|
|
41
41
|
handshakeState.value = state
|
|
42
42
|
})
|
|
43
43
|
const sdkReady = computed(() => handshakeState.value.status === 'ready')
|
|
@@ -93,6 +93,102 @@ async function loginFromUserAction() {
|
|
|
93
93
|
|
|
94
94
|
返回值与边界以[用户身份与登录](https://docs.xiaoheihe.cn/hb_sdk/guide/auth)为准。页面只把 `code` 提交给自己的服务端。不要在页面初始化阶段自动调用 `auth.login()`。
|
|
95
95
|
|
|
96
|
+
## 文件与下载
|
|
97
|
+
|
|
98
|
+
`files.sandbox` 是当前小程序隔离的逻辑根。`file()` / `directory()` 只创建 lazy proxy,不执行
|
|
99
|
+
I/O;第一次真实 I/O 仍由 Runtime 和 Host 校验当前 session、授权、mode、kind 和路径。
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
import hbSDK, { HbMiniProgramSDKError } from '@heybox/hb-sdk'
|
|
103
|
+
|
|
104
|
+
const exportDirectory = hbSDK.files.sandbox.directory('exports')
|
|
105
|
+
await exportDirectory.create({ recursive: true })
|
|
106
|
+
|
|
107
|
+
const controller = new AbortController()
|
|
108
|
+
|
|
109
|
+
try {
|
|
110
|
+
const file = await hbSDK.network.download({
|
|
111
|
+
url: 'https://cdn.example.com/report.json',
|
|
112
|
+
to: exportDirectory,
|
|
113
|
+
suggestedName: 'report.json',
|
|
114
|
+
overwrite: true,
|
|
115
|
+
maxBytes: 8 * 1024 * 1024,
|
|
116
|
+
signal: controller.signal,
|
|
117
|
+
onProgress({ loaded, total, lengthComputable }) {
|
|
118
|
+
console.log(lengthComputable ? `${loaded}/${total}` : loaded)
|
|
119
|
+
},
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
console.log(await file.readText())
|
|
123
|
+
} catch (error) {
|
|
124
|
+
if (error instanceof HbMiniProgramSDKError && error.code === 'METHOD_FORBIDDEN') {
|
|
125
|
+
// 当前 Host 不支持 V1 文件能力。
|
|
126
|
+
return
|
|
127
|
+
}
|
|
128
|
+
throw error
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
当前平台状态如下:
|
|
133
|
+
|
|
134
|
+
| Host | `files.sandbox` | 外部 picker | `network.download()` |
|
|
135
|
+
| ---------------- | --------------- | ----------- | -------------------- |
|
|
136
|
+
| 旧版 PC | 不支持 | 不支持 | 不支持 |
|
|
137
|
+
| Mobile | 不支持 | 不支持 | 不支持 |
|
|
138
|
+
| Web | 不支持 | 不支持 | 不支持 |
|
|
139
|
+
| Browser Dev Host | 不支持 | 不支持 | 不支持 |
|
|
140
|
+
|
|
141
|
+
当前 Runtime 认识但 Host 未实现时返回 `METHOD_FORBIDDEN`;旧 Runtime 收到新 method 时返回
|
|
142
|
+
`METHOD_NOT_FOUND`。此前曾实现面向旧版小黑盒 PC 的 Host 适配;由于新版 PC 即将启用,该适配
|
|
143
|
+
不再发布。文件/下载 API、协议和 Runtime 体系保持不变,后续直接按照新版 PC Host 架构接入。
|
|
144
|
+
当前任何 Host 都不提供 Blob 或内存假下载。
|
|
145
|
+
|
|
146
|
+
### 路径与创建
|
|
147
|
+
|
|
148
|
+
- 逻辑相对路径统一使用 `/`。拒绝空字符串、绝对路径、空 segment、`.`、`..`、反斜杠、尾分隔符、NUL 和控制字符。
|
|
149
|
+
- `create()` 的 `recursive` 与 `exclusive` 默认均为 `false`。默认行为是不截断内容的 ensure-exists;`exclusive: true` 在同名实体已存在时失败。
|
|
150
|
+
- `writeText()` / `writeBytes()` 可以在父目录存在时隐式创建目标,但不会自动创建父目录。
|
|
151
|
+
- `exists()` 在祖先/目标缺失或 kind mismatch 时返回 `false`;授权撤销、quota 与 I/O 错误仍抛出。
|
|
152
|
+
- `file.remove()` 与 `directory.remove()` 只删除 sandbox 对象;外部 picker/saveFile 授权调用删除时抛出 `FILE_ACCESS_DENIED`。
|
|
153
|
+
- 非空目录默认不能删除并抛出 `DIRECTORY_NOT_EMPTY`;确认删除整个目录树后显式调用 `directory.remove({ recursive: true })`。
|
|
154
|
+
- `directory.list()` 默认最多返回 1000 项,显式 `limit` 也不能超过 1000;超限抛出 `DIRECTORY_LIST_LIMIT_EXCEEDED`。
|
|
155
|
+
- Host 文件错误只暴露稳定 code 与 canonical 安全文案;原始 message、data、native path 和 credential 不会进入小程序。
|
|
156
|
+
- `FileStat.size` 是字节数;`modifiedAt` / `createdAt` 若存在,单位为 Unix epoch milliseconds。
|
|
157
|
+
|
|
158
|
+
### 外部授权与保存
|
|
159
|
+
|
|
160
|
+
`pickFiles()`、`pickDirectory()` 和 `saveFile()` 必须直接从按钮点击等可信用户操作调用。picker
|
|
161
|
+
取消会抛 `FILE_PICKER_CANCELLED`,不会返回空数组或 `undefined`。
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
async function saveFromUserAction(text: string) {
|
|
165
|
+
const file = await hbSDK.files.saveFile({ suggestedName: 'report.json' })
|
|
166
|
+
await file.writeText(text)
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
`saveFile()` 打开系统保存对话框并返回精确 File 授权,不会同时创建或保留 Directory
|
|
171
|
+
授权。V1 不接受 `accept`;扩展名过滤只属于 `pickFiles({ accept: ['.json'] })`。外部授权仅在当前
|
|
172
|
+
Runtime session 有效。
|
|
173
|
+
|
|
174
|
+
`pickFiles()` / `pickDirectory()` 默认返回 `mode: 'read'` 的授权;只有显式传入
|
|
175
|
+
`multiple: true` 时,`pickFiles()` 才允许 Host 返回多个文件。需要修改文件、在所选目录中创建
|
|
176
|
+
文件,或把外部授权用作下载目标时,必须在 picker options 中显式请求 `mode: 'readwrite'`。
|
|
177
|
+
|
|
178
|
+
单个 Runtime session 最多保留 1024 个 picker/saveFile direct handle;整批选择超过剩余额度时抛出 `FILE_QUOTA_EXCEEDED`,不会保留部分授权。Sandbox 派生项与目录枚举结果使用逻辑引用,不持续占用该额度。
|
|
179
|
+
|
|
180
|
+
### 下载边界
|
|
181
|
+
|
|
182
|
+
- 下载固定使用 GET,不接受 method、body、上传或 Range 字段。
|
|
183
|
+
- File target 必须已存在且为 `readwrite`,成功后返回同一个 File proxy;Directory target 必须存在且为 `readwrite`,成功后返回新的子 File proxy。
|
|
184
|
+
- Directory 默认不覆盖同名文件;只有显式 `overwrite: true` 才允许原子替换。
|
|
185
|
+
- Directory target 的子文件名按安全的 `Content-Disposition filename*` / `filename`、`suggestedName`、URL basename、`download.bin` 依次选择。
|
|
186
|
+
- `timeout` 是网络空闲超时,不是整个下载总时长。取消或失败不会改动原目标。
|
|
187
|
+
- `AbortSignal` 只发出取消意图并等待 Host 终态;如果 Host 已先完成原子提交,Promise 仍以成功结果 resolve,否则抛出 `DOWNLOAD_CANCELLED`。
|
|
188
|
+
- 公开 request 与 download 都不跟随重定向;3xx 或 partial representation 会失败。
|
|
189
|
+
- 进度从 `loaded: 0` 开始并单调不减;原子提交后、Promise resolve 前会再发送一次 final progress,因此空文件或 Host 已报告最终值时允许相邻值相同。只有无歧义、identity-encoded 的 `Content-Length` 才使 `lengthComputable=true`;压缩、chunked 或重复长度都视为未知 total,可信长度必须在提交前与实际字节数一致。
|
|
190
|
+
- `onProgress` 在本地同步执行;回调异常不会中断下载。成功时最后一次回调发生在文件提交后、Promise resolve 前。
|
|
191
|
+
|
|
96
192
|
## 默认单例
|
|
97
193
|
|
|
98
194
|
大多数小程序页面都应该使用默认实例。0.6 起不再对业务代码提供独立实例工厂。
|
|
@@ -316,6 +412,10 @@ try {
|
|
|
316
412
|
- `USER_GESTURE_REQUIRED` 表示潜在授权 UI 缺少可信用户手势,应让用户点击按钮后重试。
|
|
317
413
|
- `AUTHORIZATION_CANCELLED` 表示用户取消、拒绝或关闭授权页面,应正常结束当前操作。
|
|
318
414
|
- `SERVER_API_REQUIRED` 表示当前用户数据必须经开发者服务端 OpenAPI 获取,不应在页面重试对应 Host API。
|
|
415
|
+
- `METHOD_FORBIDDEN` 表示当前 Host 未实现或关闭对应能力。V1 files/download 在 Mobile、Web 和 Browser Dev Host 都会得到该错误。
|
|
416
|
+
- `FILE_PICKER_CANCELLED` 表示用户取消了外部文件或目录选择,应正常结束当前操作。
|
|
417
|
+
- `DOWNLOAD_CANCELLED` 表示取消意图先于 Host 提交生效;Host 已完成提交时仍返回成功。`DOWNLOAD_TIMEOUT` 表示网络空闲超时,失败不会改动原目标。
|
|
418
|
+
- `DOWNLOAD_HTTP_STATUS` 的 `data` 只包含脱敏后的 `status`、可选 `statusText` 和安全响应头。
|
|
319
419
|
- 超时或运行环境不可用时,允许用户重试或退出当前流程。
|
|
320
420
|
- 上报 `code`、`message` 和必要的业务上下文,不要上报用户凭据或敏感数据。
|
|
321
421
|
|
|
@@ -364,6 +464,10 @@ function reportSDKError(errorCode: string, message: string, data?: unknown) {
|
|
|
364
464
|
|
|
365
465
|
授权码在取得后立即交给开发者服务端交换,不要写入页面状态、DOM、日志或持久化存储。UI 只处理服务端会话是否建立成功。
|
|
366
466
|
|
|
467
|
+
文件与下载仍使用 `HbMiniProgramSDKError`,不会新增第三种错误类。业务根据 `error.code` 处理
|
|
468
|
+
picker 取消、授权撤销、文件缺失、quota、下载状态或取消,不依赖 `message` 文案,也不要记录
|
|
469
|
+
真实路径、内部 handle 或响应凭据头。
|
|
470
|
+
|
|
367
471
|
## Login gate recipe
|
|
368
472
|
|
|
369
473
|
|
|
@@ -21,10 +21,21 @@
|
|
|
21
21
|
- `user.revokeAuthorization()` 在两种网络模式下都要求可信用户手势;成功后必须停止使用并清理业务缓存的旧身份、资料和服务端会话。
|
|
22
22
|
- `on()` 返回取消监听函数,组件卸载或页面销毁时需要调用。
|
|
23
23
|
- 业务网络请求使用 `network.request()`,不要依赖浏览器原生网络出口。
|
|
24
|
+
- 公开 `network.request()` 与 `network.download()` 均使用 no-follow redirect policy;3xx 不会在 Host 内静默跳转。
|
|
24
25
|
- `network.request()` 不能访问平台保留的 runtime auth 与 OpenAPI 内部路径;页面不得持有或交换服务端应用凭据。
|
|
25
26
|
- `network.request` 不支持 `multipart/form-data`;App Host 仅支持 form(`application/x-www-form-urlencoded`)与 JSON。表单请用 `URLSearchParams#toString()` 作为 `data`,文件上传请走专用上传能力。
|
|
27
|
+
- 当前 Host(包括旧版 PC、Mobile、Web 与 Browser Dev Host)均未开放 `files` / `network.download()`;新版 PC 将按同一公开合同重新接入,期间不提供内存或 Blob 假实现。
|
|
28
|
+
- picker 必须来自可信用户手势;取消选择返回 `FILE_PICKER_CANCELLED`。`saveFile()` 只接受 `suggestedName`,不接受 `accept`。
|
|
29
|
+
- `pickFiles()` / `pickDirectory()` 默认只读;`pickFiles()` 仅在显式传入 `multiple: true` 时允许 Host 返回多个文件。要写入或作为下载目标时显式请求 `mode: 'readwrite'`。
|
|
30
|
+
- `file()` / `directory()` 只接受以 `/` 分隔的规范相对路径;拒绝绝对路径、空 segment、`.`、`..`、反斜杠、尾分隔符和控制字符。
|
|
31
|
+
- `create()` 的 `recursive` / `exclusive` 默认都是 `false`;`exists()` 仅把缺失祖先、缺失目标或 kind mismatch 归一为 `false`,不会吞授权和 I/O 错误。
|
|
32
|
+
- `remove()` 只允许删除 sandbox 对象;外部 picker/saveFile 授权返回 `FILE_ACCESS_DENIED`。非空目录默认返回 `DIRECTORY_NOT_EMPTY`,需显式调用 `remove({ recursive: true })`。
|
|
33
|
+
- `directory.list()` 默认最多返回 1000 项,`limit` 也不能超过 1000;超限返回 `DIRECTORY_LIST_LIMIT_EXCEEDED`。
|
|
34
|
+
- 单个 Runtime session 最多保留 1024 个 picker/saveFile direct handle;整批授权超限时返回 `FILE_QUOTA_EXCEEDED`,不会保留部分结果。
|
|
35
|
+
- Host 文件错误只保留稳定 code 与 canonical 安全文案;原始 message、data、native path 和 credential 不会进入小程序。
|
|
36
|
+
- `FileStat.size` 是非负 safe integer;`modifiedAt` / `createdAt` 若存在,单位为 Unix epoch milliseconds。
|
|
26
37
|
- 仅当远端已启用 `network.request` 时,`hb-sdk dev` 与 `hb-sdk remote deploy` 构建才会跳过平台 CSP;其他构建继续注入平台 CSP。`useOfficialDomain` 不参与 CSP 跳过判定。
|
|
27
|
-
- 构建必须启用 `miniappManifest()
|
|
38
|
+
- 构建必须启用 `miniappManifest({ platforms })` 并显式声明实际承诺适配的平台,推荐统一使用 `hb-sdk build`。新项目模板中的 `['android', 'ios', 'ohos']` 只是初始配置,不代表已经完成真机验收。
|
|
28
39
|
|
|
29
40
|
## Agent rules
|
|
30
41
|
|
|
@@ -78,6 +78,8 @@ function rewriteBundledProtocolIndexLinks(markdown) {
|
|
|
78
78
|
return markdown
|
|
79
79
|
.replaceAll('(./root/)', '(api-root.md)')
|
|
80
80
|
.replaceAll('(./protocol/)', '(#public-protocol-entrypoint)')
|
|
81
|
+
.replaceAll('(./compatibility)', '(https://docs.xiaoheihe.cn/hb_sdk/reference/compatibility)')
|
|
82
|
+
.replaceAll('](/reference/', '](https://docs.xiaoheihe.cn/hb_sdk/reference/')
|
|
81
83
|
.replaceAll('(./miniapp-publish/)', '(https://open.xiaoheihe.cn/docs/hb_sdk/reference/miniapp-publish/)')
|
|
82
84
|
.replaceAll('(./vite/)', '(https://open.xiaoheihe.cn/docs/hb_sdk/reference/vite/)')
|
|
83
85
|
.replaceAll('(./runtime/)', '(https://docs.xiaoheihe.cn/hb_sdk/reference/runtime/)')
|
|
@@ -381,7 +383,7 @@ files.set(
|
|
|
381
383
|
['Update reminders', 'update-reminders'],
|
|
382
384
|
])}## When to use the CLI
|
|
383
385
|
|
|
384
|
-
Use the bundled \`hb-sdk\` CLI to create a workshop mini-program, open the local debugging
|
|
386
|
+
Use the bundled \`hb-sdk\` CLI to create a workshop mini-program, open the local Browser debugging workbench, test in the Heybox mobile App, or manage and publish a remote mini-program.
|
|
385
387
|
|
|
386
388
|
\`hb-sdk login\` is for development and publishing commands only. It does not authorize mini-program users and does not change \`auth.login()\`, \`user.getInfo()\`, or \`network.request()\` inside a mini-program.
|
|
387
389
|
|
|
@@ -406,7 +408,9 @@ Agent rules:
|
|
|
406
408
|
|
|
407
409
|
${cliDevSection}
|
|
408
410
|
|
|
409
|
-
Use \`hb-sdk dev\` to open the local
|
|
411
|
+
Use \`hb-sdk dev\` to open the local Vue 3 debugging workbench. Browser debugging can start without CLI login, project binding, or a remote Dev Context; capabilities that need them fail explicitly. The upper-right QR popover is the only Mobile entry and requires selecting a LAN interface the phone can reach.
|
|
412
|
+
|
|
413
|
+
The workbench offers iPhone 16 Pro Max (\`440 x 956\`) and Pixel 9 Pro (\`410 x 914\`) presets. Switching presets preserves the iframe, Runtime session, and page state. Authorization/action dialogs, Toast, Loading, and vibration feedback render inside the preview. Do not suggest a debugging-page permission editor; it does not exist, and the validated remote permission snapshot remains canonical.
|
|
410
414
|
|
|
411
415
|
Browser Mock uses the Node \`hb-sdk login\` session to send Host \`heybox-session\` requests. Mini-program code must still call \`auth.login()\`; the debug page only shows an authorization dialog. Never copy pkey, cookies, tokens, or credential-bearing URLs into page JavaScript or logs. Phone debugging continues to use the App login, not the CLI session.
|
|
412
416
|
|
|
@@ -692,6 +696,34 @@ try {
|
|
|
692
696
|
}`,
|
|
693
697
|
)}
|
|
694
698
|
|
|
699
|
+
### Sandbox download contract (Host pending)
|
|
700
|
+
|
|
701
|
+
${fenced(
|
|
702
|
+
'ts',
|
|
703
|
+
`import { files, network, HbMiniProgramSDKError } from '@heybox/hb-sdk';
|
|
704
|
+
|
|
705
|
+
export async function downloadReport() {
|
|
706
|
+
const directory = files.sandbox.directory('exports');
|
|
707
|
+
await directory.create({ recursive: true });
|
|
708
|
+
|
|
709
|
+
try {
|
|
710
|
+
return await network.download({
|
|
711
|
+
url: 'https://cdn.example.com/report.json',
|
|
712
|
+
to: directory,
|
|
713
|
+
suggestedName: 'report.json',
|
|
714
|
+
onProgress: ({ loaded, total, lengthComputable }) => {
|
|
715
|
+
console.log(lengthComputable ? [loaded, total].join('/') : loaded);
|
|
716
|
+
},
|
|
717
|
+
});
|
|
718
|
+
} catch (error) {
|
|
719
|
+
if (error instanceof HbMiniProgramSDKError && error.code === 'METHOD_FORBIDDEN') {
|
|
720
|
+
return undefined;
|
|
721
|
+
}
|
|
722
|
+
throw error;
|
|
723
|
+
}
|
|
724
|
+
}`,
|
|
725
|
+
)}
|
|
726
|
+
|
|
695
727
|
### Host/runtime protocol import
|
|
696
728
|
|
|
697
729
|
${fenced(
|
|
@@ -735,7 +767,7 @@ import { defineConfig } from 'vite';
|
|
|
735
767
|
|
|
736
768
|
export default defineConfig({
|
|
737
769
|
base: './',
|
|
738
|
-
plugins: [miniappManifest()],
|
|
770
|
+
plugins: [miniappManifest({ platforms: ['android', 'ios', 'ohos'] })],
|
|
739
771
|
});`,
|
|
740
772
|
)}
|
|
741
773
|
|
|
@@ -749,6 +781,8 @@ export default defineConfig({
|
|
|
749
781
|
- Do not call unsupported storage delete/clear/info operations.
|
|
750
782
|
- Do not pass raw internal share/network protocol fields from mini-program code.
|
|
751
783
|
- Do not send \`multipart/form-data\` (or handcrafted multipart bodies) through \`network.request\`; use form-urlencoded string body or a dedicated upload capability.
|
|
784
|
+
- Do not pass string paths, browser File System Access handles, Blob targets, Range/resume fields, or upload bodies to \`network.download\`; use SDK-created File/Directory handles after a supporting Host is available.
|
|
785
|
+
- Do not treat any current Host, including legacy PC or Browser Dev Host, as evidence for files/download support. They return \`METHOD_FORBIDDEN\` and provide no memory fallback; the new PC Host will integrate the retained contract separately.
|
|
752
786
|
- Do not treat \`hb-sdk login\` as iframe SDK authentication state.
|
|
753
787
|
- Do not create a second mock runtime package when \`hb-sdk dev\` is the supported local mock workflow.
|
|
754
788
|
- Do not import \`@heybox/hb-sdk/vite\` from iframe business code or fetch a deployed \`manifest.json\` directly.
|
package/skill/skill.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hb-sdk",
|
|
3
|
-
"skillVersion": "0.
|
|
3
|
+
"skillVersion": "0.8.0-alpha.2+skill.417e5072238c",
|
|
4
4
|
"sdk": {
|
|
5
5
|
"package": "@heybox/hb-sdk",
|
|
6
|
-
"version": "0.
|
|
7
|
-
"compatibility": "0.
|
|
6
|
+
"version": "0.8.0-alpha.2",
|
|
7
|
+
"compatibility": "0.8.0-alpha.2"
|
|
8
8
|
},
|
|
9
9
|
"source": "https://open.xiaoheihe.cn/agent-skills/hb-sdk",
|
|
10
|
-
"integrity": "sha256-
|
|
10
|
+
"integrity": "sha256-417e5072238c0b2a53836824d60639046935ad28ca337a63d82016421c97127b"
|
|
11
11
|
}
|
package/types/core/client.d.ts
CHANGED
|
@@ -25,8 +25,18 @@ export interface MiniProgramRequester {
|
|
|
25
25
|
/** 向父容器调用指定开放能力。 */
|
|
26
26
|
request<Method extends MiniProgramBridgeMethod>(method: Method, ...args: MiniProgramRequesterArgs<Method>): Promise<MiniProgramCapabilityResult<Method>>;
|
|
27
27
|
}
|
|
28
|
+
/** 长操作使用的本地 observer 与取消配置,不进入 bridge payload。 */
|
|
29
|
+
export interface MiniProgramOperationOptions<TProgress = unknown> {
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
onProgress?: (progress: TProgress) => void;
|
|
32
|
+
createAbortError?: () => unknown;
|
|
33
|
+
}
|
|
34
|
+
/** 支持 request-scoped progress/cancel 的 bridge requester。 */
|
|
35
|
+
export interface MiniProgramOperationRequester extends MiniProgramRequester {
|
|
36
|
+
requestOperation<Method extends MiniProgramBridgeMethod, TProgress = unknown>(method: Method, payload: MiniProgramCapabilityPayload<Method>, options?: MiniProgramOperationOptions<TProgress>): Promise<MiniProgramCapabilityResult<Method>>;
|
|
37
|
+
}
|
|
28
38
|
/** 底层 bridge client,负责握手、请求响应、事件分发与超时清理。 */
|
|
29
|
-
export declare class MiniProgramBridgeClient implements
|
|
39
|
+
export declare class MiniProgramBridgeClient implements MiniProgramOperationRequester {
|
|
30
40
|
private readonly timeout;
|
|
31
41
|
private readonly selfWindow?;
|
|
32
42
|
private readonly targetWindow;
|
|
@@ -64,6 +74,9 @@ export declare class MiniProgramBridgeClient implements MiniProgramRequester {
|
|
|
64
74
|
off<T extends MiniProgramEventName>(eventName: T, handler: MiniProgramEventHandler<T>): void;
|
|
65
75
|
/** 调用父容器开放能力。 */
|
|
66
76
|
request<Method extends MiniProgramBridgeMethod>(method: Method, ...args: MiniProgramRequesterArgs<Method>): Promise<MiniProgramCapabilityResult<Method>>;
|
|
77
|
+
/** 发起不使用固定总时长 timer 的长操作。 */
|
|
78
|
+
requestOperation<Method extends MiniProgramBridgeMethod, TProgress = unknown>(method: Method, payload: MiniProgramCapabilityPayload<Method>, options?: MiniProgramOperationOptions<TProgress>): Promise<MiniProgramCapabilityResult<Method>>;
|
|
79
|
+
private performRequest;
|
|
67
80
|
/** 销毁 SDK 实例,并拒绝尚未完成的请求。 */
|
|
68
81
|
destroy(): void;
|
|
69
82
|
private ensureStarted;
|
|
@@ -73,6 +86,9 @@ export declare class MiniProgramBridgeClient implements MiniProgramRequester {
|
|
|
73
86
|
private postCSPViolation;
|
|
74
87
|
private handleEvent;
|
|
75
88
|
private handleResponse;
|
|
89
|
+
private handleOperationProgress;
|
|
90
|
+
private sendCancel;
|
|
91
|
+
private cleanupPending;
|
|
76
92
|
private postMessage;
|
|
77
93
|
private resolveHandshakeOnce;
|
|
78
94
|
private failHandshake;
|
package/types/core/errors.d.ts
CHANGED
|
@@ -18,9 +18,9 @@ export declare class HbMiniProgramSDKError extends Error {
|
|
|
18
18
|
/**
|
|
19
19
|
* 创建 SDK 标准错误。
|
|
20
20
|
*
|
|
21
|
-
* @param code 稳定错误码。
|
|
22
|
-
* @param message 面向开发者的错误说明。
|
|
23
|
-
* @param data 可选调试数据。
|
|
21
|
+
* @param code - 稳定错误码。
|
|
22
|
+
* @param message - 面向开发者的错误说明。
|
|
23
|
+
* @param data - 可选调试数据。
|
|
24
24
|
* @returns 标准化 `HbMiniProgramSDKError` 实例。
|
|
25
25
|
*
|
|
26
26
|
* @remarks
|
|
@@ -34,7 +34,7 @@ export declare function createSDKError(code: string, message: string, data?: unk
|
|
|
34
34
|
* 仅在请求已经成功走完 bridge / runtime / 宿主调用链、但最终 HTTP 状态不满足
|
|
35
35
|
* `validateStatus` 时抛出。它不表示握手失败或 bridge 级错误。
|
|
36
36
|
*
|
|
37
|
-
* @typeParam T 标准化响应数据的类型。
|
|
37
|
+
* @typeParam T - 标准化响应数据的类型。
|
|
38
38
|
*/
|
|
39
39
|
export declare class HbMiniProgramNetworkError<T = unknown> extends Error {
|
|
40
40
|
/** HTTP 状态码。 */
|
|
@@ -48,7 +48,7 @@ export declare class HbMiniProgramNetworkError<T = unknown> extends Error {
|
|
|
48
48
|
/** 完整标准化响应。 */
|
|
49
49
|
response: MiniProgramNetworkResponse<T>;
|
|
50
50
|
/**
|
|
51
|
-
* @param response 已完成请求的标准化网络响应。
|
|
51
|
+
* @param response - 已完成请求的标准化网络响应。
|
|
52
52
|
*/
|
|
53
53
|
constructor(response: MiniProgramNetworkResponse<T>);
|
|
54
54
|
}
|
package/types/core/sdk.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { type MiniProgramCloudModule } from '../modules/cloud';
|
|
|
4
4
|
import { type MiniProgramShareModule } from '../modules/share';
|
|
5
5
|
import { type MiniProgramStorageModule } from '../modules/storage';
|
|
6
6
|
import { type MiniProgramNetworkModule } from '../modules/network';
|
|
7
|
+
import { type FilesModule } from '../modules/files';
|
|
7
8
|
import { type MiniProgramViewportModule } from '../modules/viewport';
|
|
8
9
|
import { type MiniProgramUserModule } from '../modules/user';
|
|
9
10
|
import { type MiniProgramUiModule } from '../modules/ui';
|
|
@@ -37,6 +38,8 @@ export declare class MiniProgramSDK {
|
|
|
37
38
|
readonly storage: MiniProgramStorageModule;
|
|
38
39
|
/** 网络请求相关开放能力。 */
|
|
39
40
|
readonly network: MiniProgramNetworkModule;
|
|
41
|
+
/** 受控文件与目录能力。 */
|
|
42
|
+
readonly files: FilesModule;
|
|
40
43
|
/** UI 交互相关开放能力。 */
|
|
41
44
|
readonly ui: MiniProgramUiModule;
|
|
42
45
|
/** 设备相关开放能力。 */
|
|
@@ -53,16 +56,16 @@ export declare class MiniProgramSDK {
|
|
|
53
56
|
/**
|
|
54
57
|
* 注册小程序生命周期或业务事件。
|
|
55
58
|
*
|
|
56
|
-
* @param eventName 要监听的事件名。
|
|
57
|
-
* @param handler 事件处理函数。
|
|
59
|
+
* @param eventName - 要监听的事件名。
|
|
60
|
+
* @param handler - 事件处理函数。
|
|
58
61
|
* @returns 事件解绑函数。
|
|
59
62
|
*/
|
|
60
63
|
on<T extends MiniProgramEventName>(eventName: T, handler: MiniProgramEventHandler<T>): () => void;
|
|
61
64
|
/**
|
|
62
65
|
* 移除小程序生命周期或业务事件。
|
|
63
66
|
*
|
|
64
|
-
* @param eventName 要移除的事件名。
|
|
65
|
-
* @param handler 对应的事件处理函数。
|
|
67
|
+
* @param eventName - 要移除的事件名。
|
|
68
|
+
* @param handler - 对应的事件处理函数。
|
|
66
69
|
*/
|
|
67
70
|
off<T extends MiniProgramEventName>(eventName: T, handler: MiniProgramEventHandler<T>): void;
|
|
68
71
|
/**
|
|
@@ -77,7 +80,7 @@ export declare class MiniProgramSDK {
|
|
|
77
80
|
/**
|
|
78
81
|
* 创建独立 SDK 实例。
|
|
79
82
|
*
|
|
80
|
-
* @param options SDK 运行配置,例如超时时间、nonce 或测试环境注入的 window。
|
|
83
|
+
* @param options - SDK 运行配置,例如超时时间、nonce 或测试环境注入的 window。
|
|
81
84
|
* @returns 可独立管理生命周期的 `MiniProgramSDK` 实例。
|
|
82
85
|
*
|
|
83
86
|
* @remarks
|
|
@@ -3,6 +3,7 @@ import type { MiniProgramCloudModule } from '../modules/cloud';
|
|
|
3
3
|
import type { MiniProgramShareModule } from '../modules/share';
|
|
4
4
|
import type { MiniProgramStorageModule } from '../modules/storage';
|
|
5
5
|
import type { MiniProgramNetworkModule } from '../modules/network';
|
|
6
|
+
import type { FilesModule } from '../modules/files';
|
|
6
7
|
import type { MiniProgramViewportModule } from '../modules/viewport';
|
|
7
8
|
import type { MiniProgramUserModule } from '../modules/user';
|
|
8
9
|
import type { MiniProgramUiModule } from '../modules/ui';
|
|
@@ -10,24 +11,74 @@ import type { MiniProgramDeviceModule } from '../modules/device';
|
|
|
10
11
|
import type { MiniProgramNavigationModule } from '../modules/navigation';
|
|
11
12
|
import type { MiniProgramEventHandler, MiniProgramEventName } from '../protocol/types';
|
|
12
13
|
import type { MiniProgramSDKHandshakeState, MiniProgramSDKHandshakeStateHandler } from './handshake-state';
|
|
13
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* 获取默认 SDK 实例的当前握手状态。
|
|
16
|
+
*
|
|
17
|
+
* @since 0.7.0-alpha.9
|
|
18
|
+
* @hbPlatform android
|
|
19
|
+
* @hbPlatform ios
|
|
20
|
+
* @hbPlatform ohos
|
|
21
|
+
* @hbPlatform windows
|
|
22
|
+
* @hbPlatform macos
|
|
23
|
+
* @hbClient android none
|
|
24
|
+
* @hbClient ios none
|
|
25
|
+
* @hbClient ohos none
|
|
26
|
+
* @hbClient windows none
|
|
27
|
+
* @hbClient macos none
|
|
28
|
+
*/
|
|
14
29
|
export declare function getHandshakeState(): MiniProgramSDKHandshakeState;
|
|
15
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* 订阅默认 SDK 实例的握手状态,并立即接收当前状态。
|
|
32
|
+
*
|
|
33
|
+
* @since 0.7.0-alpha.9
|
|
34
|
+
* @hbPlatform android
|
|
35
|
+
* @hbPlatform ios
|
|
36
|
+
* @hbPlatform ohos
|
|
37
|
+
* @hbPlatform windows
|
|
38
|
+
* @hbPlatform macos
|
|
39
|
+
* @hbClient android none
|
|
40
|
+
* @hbClient ios none
|
|
41
|
+
* @hbClient ohos none
|
|
42
|
+
* @hbClient windows none
|
|
43
|
+
* @hbClient macos none
|
|
44
|
+
*/
|
|
16
45
|
export declare function onHandshakeStateChange(handler: MiniProgramSDKHandshakeStateHandler): () => void;
|
|
17
46
|
/**
|
|
18
47
|
* 注册默认 SDK 实例的事件监听。
|
|
19
48
|
*
|
|
20
|
-
* @param eventName 要监听的事件名。
|
|
21
|
-
* @param handler 事件处理函数。
|
|
49
|
+
* @param eventName - 要监听的事件名。
|
|
50
|
+
* @param handler - 事件处理函数。
|
|
22
51
|
* @returns 事件解绑函数。
|
|
52
|
+
* @since 0.2.0-alpha.0
|
|
53
|
+
* @hbPlatform android
|
|
54
|
+
* @hbPlatform ios
|
|
55
|
+
* @hbPlatform ohos
|
|
56
|
+
* @hbPlatform windows
|
|
57
|
+
* @hbPlatform macos
|
|
58
|
+
* @hbClient android none
|
|
59
|
+
* @hbClient ios none
|
|
60
|
+
* @hbClient ohos none
|
|
61
|
+
* @hbClient windows none
|
|
62
|
+
* @hbClient macos none
|
|
23
63
|
*/
|
|
24
64
|
export declare function on<T extends MiniProgramEventName>(eventName: T, handler: MiniProgramEventHandler<T>): () => void;
|
|
25
65
|
/**
|
|
26
66
|
* 移除默认 SDK 实例的事件监听。
|
|
27
67
|
*
|
|
28
|
-
* @param eventName 要移除的事件名。
|
|
29
|
-
* @param handler 对应的事件处理函数。
|
|
68
|
+
* @param eventName - 要移除的事件名。
|
|
69
|
+
* @param handler - 对应的事件处理函数。
|
|
30
70
|
* @returns 无返回值。
|
|
71
|
+
* @since 0.2.0-alpha.0
|
|
72
|
+
* @hbPlatform android
|
|
73
|
+
* @hbPlatform ios
|
|
74
|
+
* @hbPlatform ohos
|
|
75
|
+
* @hbPlatform windows
|
|
76
|
+
* @hbPlatform macos
|
|
77
|
+
* @hbClient android none
|
|
78
|
+
* @hbClient ios none
|
|
79
|
+
* @hbClient ohos none
|
|
80
|
+
* @hbClient windows none
|
|
81
|
+
* @hbClient macos none
|
|
31
82
|
*/
|
|
32
83
|
export declare function off<T extends MiniProgramEventName>(eventName: T, handler: MiniProgramEventHandler<T>): void;
|
|
33
84
|
/** 默认 SDK 实例的授权模块。 */
|
|
@@ -42,6 +93,8 @@ export declare const viewport: MiniProgramViewportModule;
|
|
|
42
93
|
export declare const storage: MiniProgramStorageModule;
|
|
43
94
|
/** 默认 SDK 实例的 network 模块。 */
|
|
44
95
|
export declare const network: MiniProgramNetworkModule;
|
|
96
|
+
/** 默认 SDK 实例的 files 模块。 */
|
|
97
|
+
export declare const files: FilesModule;
|
|
45
98
|
/** 默认 SDK 实例的 UI 模块。 */
|
|
46
99
|
export declare const ui: MiniProgramUiModule;
|
|
47
100
|
/** 默认 SDK 实例的 device 模块。 */
|
package/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { HbMiniProgramSDKError, HbMiniProgramNetworkError } from './core/errors';
|
|
2
|
-
export { getHandshakeState, onHandshakeStateChange, on, off, auth, user, share, viewport, storage, network, ui, device, navigation, cloud, } from './core/singleton';
|
|
2
|
+
export { getHandshakeState, onHandshakeStateChange, on, off, auth, user, share, viewport, storage, files, network, ui, device, navigation, cloud, } from './core/singleton';
|
|
3
3
|
export type { MiniProgramSDKHandshakeState, MiniProgramSDKHandshakeStateHandler } from './core/handshake-state';
|
|
4
4
|
export type { MiniProgramEventHandler, MiniProgramEventName, MiniProgramEventPayloadMap } from './protocol/types';
|
|
5
5
|
export type { LoginOptions, LoginPayload, LoginResult, LoginScope, MiniProgramAuthModule } from './modules/auth';
|
|
@@ -10,7 +10,8 @@ export type { UserInfoAuthorizationScope } from './modules/user';
|
|
|
10
10
|
export type { CopyLinkPayload, CopyLinkResult, MiniProgramCopyLinkOptions, MiniProgramScreenshotOptions, MiniProgramScreenshotRect, MiniProgramShareChannel, MiniProgramShareExtraValue, MiniProgramShareModule, MiniProgramSharePostOptions, MiniProgramShowShareMenuOptions, ScreenshotPayload, ScreenshotResult, ShowShareMenuPayload, ShowShareMenuResult, } from './modules/share';
|
|
11
11
|
export type { GetWindowInfoPayload, GetWindowInfoResult, MiniProgramNavigationBarForegroundStyle, MiniProgramSafeArea, MiniProgramSetNavigationBarStyleOptions, MiniProgramViewportModule, MiniProgramWindowInfoResult, SetNavigationBarStylePayload, SetNavigationBarStyleResult, } from './modules/viewport';
|
|
12
12
|
export type { GetStoragePayload, GetStorageResult, MiniProgramStorageModule, SetStoragePayload } from './modules/storage';
|
|
13
|
-
export type { MiniProgramNetworkHeaders, MiniProgramNetworkModule, MiniProgramNetworkParams, MiniProgramNetworkRequestConfig, MiniProgramNetworkRequestMethod, MiniProgramNetworkResponse, MiniProgramNetworkValidateStatus, NetworkRequestPayload, NetworkResponsePayload, } from './modules/network';
|
|
13
|
+
export type { DownloadBaseOptions, DownloadOptions, DownloadProgress, MiniProgramNetworkHeaders, MiniProgramNetworkModule, MiniProgramNetworkParams, MiniProgramNetworkRequestConfig, MiniProgramNetworkRequestMethod, MiniProgramNetworkResponse, MiniProgramNetworkValidateStatus, NetworkRequestPayload, NetworkResponsePayload, } from './modules/network';
|
|
14
|
+
export type { CreateOptions, DirectoryHandle, FileHandle, FileMode, FileStat, FileSystem, FileSystemEntity, FilesModule, ListOptions, PathRoot, PickDirectoryOptions, PickFilesOptions, RemoveOptions, SaveFileOptions, } from './modules/files';
|
|
14
15
|
export type { HideLoadingPayload, HideLoadingResult, MiniProgramToastStatus, MiniProgramUiModule, ShowLoadingPayload, ShowLoadingResult, ShowToastPayload, ShowToastResult, } from './modules/ui';
|
|
15
16
|
export type { MiniProgramDeviceModule, MiniProgramVibrateIntensity, SetClipboardPayload, SetClipboardResult, VibratePayload, VibrateResult, } from './modules/device';
|
|
16
17
|
export type { ClosePayload, CloseResult, MiniProgramAppPageTarget, MiniProgramGameDetailGameType, MiniProgramGameDetailPage, MiniProgramNavigationModule, OpenAppPageOptions, OpenAppPagePayload, OpenAppPageResult, OpenGameDetailAppPagePayload, OpenGameDetailAppPageOptions, OpenPostDetailAppPagePayload, OpenPostDetailAppPageOptions, OpenUserDetailAppPagePayload, OpenUserDetailAppPageOptions, ReloadPayload, ReloadResult, } from './modules/navigation';
|
|
@@ -25,6 +26,7 @@ declare const hbSDK: {
|
|
|
25
26
|
share: import(".").MiniProgramShareModule;
|
|
26
27
|
viewport: import(".").MiniProgramViewportModule;
|
|
27
28
|
storage: import(".").MiniProgramStorageModule;
|
|
29
|
+
files: import(".").FilesModule;
|
|
28
30
|
network: import(".").MiniProgramNetworkModule;
|
|
29
31
|
ui: import(".").MiniProgramUiModule;
|
|
30
32
|
device: import(".").MiniProgramDeviceModule;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
export declare const MINIAPP_TEMPLATE_VERSION = "0.0.0";
|
|
2
|
+
export declare const MINIAPP_PLATFORM_VALUES: readonly ["android", "ios", "ohos", "windows", "macos", "linux"];
|
|
3
|
+
export type MiniappPlatform = (typeof MINIAPP_PLATFORM_VALUES)[number];
|
|
2
4
|
export interface MiniappManifest {
|
|
3
5
|
[key: string]: unknown;
|
|
4
6
|
sdkVersion: string;
|
|
5
7
|
version: string;
|
|
8
|
+
platforms: readonly MiniappPlatform[];
|
|
6
9
|
}
|
|
7
10
|
export interface ParseMiniappManifestResult {
|
|
8
11
|
manifest: MiniappManifest;
|
|
@@ -16,5 +19,7 @@ export declare function parseMiniappManifestJson(raw: string, sourceLabel?: stri
|
|
|
16
19
|
export declare function validateMiniappManifestForDeploy(manifest: MiniappManifest): {
|
|
17
20
|
version: string;
|
|
18
21
|
sdkVersion: string;
|
|
22
|
+
platforms: readonly ("android" | "ios" | "ohos" | "windows" | "macos" | "linux")[];
|
|
19
23
|
};
|
|
24
|
+
export declare function validateMiniappPlatforms(platforms: unknown, sourceLabel?: string): readonly MiniappPlatform[];
|
|
20
25
|
export declare function validateSdkVersion(version: unknown, sourceLabel?: string): string;
|
|
@@ -71,7 +71,7 @@ export interface MiniappUploadSessionFile {
|
|
|
71
71
|
/**
|
|
72
72
|
* 校验构建产物路径和大小,并按路径 UTF-8 字节序排序。
|
|
73
73
|
*
|
|
74
|
-
* @param files 待处理的构建产物文件。
|
|
74
|
+
* @param files - 待处理的构建产物文件。
|
|
75
75
|
* @returns 保留输入附加字段的有序文件列表。
|
|
76
76
|
* @throws 路径不规范、路径重复或文件大小非法时抛出错误。
|
|
77
77
|
*/
|
|
@@ -81,8 +81,8 @@ export declare function prepareMiniappArtifactFiles<T extends MiniappArtifactFil
|
|
|
81
81
|
/**
|
|
82
82
|
* 按服务端 session key 前缀校验最终上传路径的 UTF-8 字节长度。
|
|
83
83
|
*
|
|
84
|
-
* @param files 待上传的构建产物文件。
|
|
85
|
-
* @param options 小程序和长度限制配置。
|
|
84
|
+
* @param files - 待上传的构建产物文件。
|
|
85
|
+
* @param options - 小程序和长度限制配置。
|
|
86
86
|
* @returns 第一个超长路径的错误提示;全部合法时返回 `undefined`。
|
|
87
87
|
*/
|
|
88
88
|
export declare function validateMiniappUploadPathLengths(files: readonly Pick<MiniappArtifactFile, 'relativePath'>[], options: {
|
|
@@ -92,7 +92,7 @@ export declare function validateMiniappUploadPathLengths(files: readonly Pick<Mi
|
|
|
92
92
|
/**
|
|
93
93
|
* 创建 v1 整包签名头。
|
|
94
94
|
*
|
|
95
|
-
* @param fileCount 参与签名的文件数量。
|
|
95
|
+
* @param fileCount - 参与签名的文件数量。
|
|
96
96
|
* @returns 包含协议标识和文件数量的字节数组。
|
|
97
97
|
* @throws 文件数量超出协议范围时抛出错误。
|
|
98
98
|
*/
|
|
@@ -100,7 +100,7 @@ export declare function createMiniappArtifactSignatureHeader(fileCount: number):
|
|
|
100
100
|
/**
|
|
101
101
|
* 创建单个文件的 v1 framing header。
|
|
102
102
|
*
|
|
103
|
-
* @param file 已规范化或待校验的构建产物文件。
|
|
103
|
+
* @param file - 已规范化或待校验的构建产物文件。
|
|
104
104
|
* @returns 包含路径长度、路径和文件大小的字节数组。
|
|
105
105
|
* @throws 文件路径或大小非法时抛出错误。
|
|
106
106
|
*/
|
|
@@ -108,9 +108,9 @@ export declare function createMiniappArtifactFileHeader(file: MiniappArtifactFil
|
|
|
108
108
|
/**
|
|
109
109
|
* 校验服务端 session 文件映射,并计算仍需上传的文件。
|
|
110
110
|
*
|
|
111
|
-
* @param localFiles 本地构建产物文件。
|
|
112
|
-
* @param serverFiles 服务端签发的文件映射。
|
|
113
|
-
* @param uploadedKeys 服务端已确认上传成功的 key。
|
|
111
|
+
* @param localFiles - 本地构建产物文件。
|
|
112
|
+
* @param serverFiles - 服务端签发的文件映射。
|
|
113
|
+
* @param uploadedKeys - 服务端已确认上传成功的 key。
|
|
114
114
|
* @returns 完整映射、待上传文件和已确认 key。
|
|
115
115
|
* @throws 服务端映射与本地产物不一致时抛出错误。
|
|
116
116
|
*/
|
|
@@ -16,7 +16,21 @@ export interface LoginResult {
|
|
|
16
16
|
export type { MiniProgramAuthMethod } from '../../protocol/capabilities';
|
|
17
17
|
/** 外部小程序可调用的授权模块。 */
|
|
18
18
|
export interface MiniProgramAuthModule {
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* 获取短期授权码;不会向小程序暴露 token、cookie 或黑盒用户资料。
|
|
21
|
+
*
|
|
22
|
+
* @since 0.2.0-alpha.0
|
|
23
|
+
* @hbPlatform android
|
|
24
|
+
* @hbPlatform ios
|
|
25
|
+
* @hbPlatform ohos
|
|
26
|
+
* @hbPlatform windows
|
|
27
|
+
* @hbPlatform macos
|
|
28
|
+
* @hbClient android none
|
|
29
|
+
* @hbClient ios none
|
|
30
|
+
* @hbClient ohos none
|
|
31
|
+
* @hbClient windows none
|
|
32
|
+
* @hbClient macos none
|
|
33
|
+
*/
|
|
20
34
|
login(options?: LoginOptions): Promise<LoginResult>;
|
|
21
35
|
}
|
|
22
36
|
/** 获取短期授权码。 */
|