@heybox/hb-sdk 0.7.3 → 0.7.4-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -1
- package/README.md +5 -0
- package/dist/cli-chunks/{build-0sZ873iU.cjs → build-Cej8ObyY.cjs} +2 -2
- package/dist/cli-chunks/{context-DNQEI7m7.cjs → context-DATgeHkI.cjs} +6 -19
- package/dist/cli-chunks/{create-BkE71M2U.cjs → create-LXHV_lW5.cjs} +1 -1
- package/dist/cli-chunks/{dev-_tBlQ2WO.cjs → dev-CDuVyGm9.cjs} +798 -139
- package/dist/cli-chunks/{doctor-B1wk8IpC.cjs → doctor-BqmQrPaV.cjs} +1 -1
- package/dist/cli-chunks/{index-CIucOD2H.cjs → index-BCd2vU5D.cjs} +24 -21
- package/dist/cli-chunks/{index-BbDsxI94.cjs → index-Ck7X1LRP.cjs} +1 -1
- package/dist/cli-chunks/{login-CnjEKlFT.cjs → login-BLTILOf-.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-ESaxoAE1.cjs → project-vite-BtIYxLkt.cjs} +1 -1
- package/dist/cli-chunks/{remote-BaGzge7R.cjs → remote-Bp9SK8C3.cjs} +4 -4
- package/dist/cli-chunks/{session-C9KHqijL.cjs → session-9ZWPGpqB.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/{mock-host → browser-dev-host}/index.html +3 -7
- package/dist/devtools/browser-dev-host/main.js +9657 -0
- package/dist/index.cjs.js +40 -118
- package/dist/index.esm.js +40 -118
- package/dist/protocol.cjs.js +71 -346
- package/dist/protocol.esm.js +72 -342
- package/dist/vite.cjs.js +1 -4
- package/dist/vite.esm.js +1 -4
- package/package.json +26 -9
- package/skill/SKILL.md +5 -5
- package/skill/references/api-protocol.md +102 -114
- package/skill/references/api-root.md +1 -1
- package/skill/references/cli.md +4 -2
- package/skill/references/safety-boundaries.md +1 -0
- package/skill/scripts/sync-references.mjs +5 -1
- package/skill/skill.json +4 -4
- package/types/core/network-sanitize.d.ts +1 -1
- package/types/modules/auth/index.d.ts +3 -1
- package/types/modules/user/types.d.ts +2 -53
- package/types/protocol/capabilities.d.ts +2 -352
- package/types/protocol/constants.d.ts +1 -14
- package/types/protocol/dev-session.d.ts +3 -3
- package/types/protocol/guards.d.ts +1 -8
- package/types/protocol/runtime-permissions.d.ts +2 -41
- package/types/protocol/types.d.ts +3 -150
- package/types/protocol.d.ts +8 -23
- package/dist/devtools/mock-host/main.js +0 -7751
- package/types/protocol/network-policy.d.ts +0 -10
- package/types/protocol/trusted-user-gesture.d.ts +0 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.4-alpha.1
|
|
4
|
+
|
|
5
|
+
### Breaking / Host Runtime
|
|
6
|
+
|
|
7
|
+
- Runtime 已硬切到 `ports` + Capability Module 架构:移除 `platformAdapter`、Heybox Runtime factory 和独立 Mock Runtime。Host 集成改用 `@heybox/hb-sdk-runtime` 的 `createMiniProgramRuntime()`、`host-contract` 与 `web-host` 入口。
|
|
8
|
+
- 新增零依赖 `@heybox/hb-sdk-protocol` 作为 wire contract owner;`@heybox/hb-sdk/protocol` 仅保留兼容 re-export。Runtime 内部不再提供独立 `runtime-request`/Transport facade,所有 Runtime 网络 I/O 经过 `HostNetworkPort`。
|
|
9
|
+
- 这是 Host/Runtime 集成的 breaking change;小程序业务 API(`auth`、`user`、`share`、`network` 等)保持公开契约,DOM/network helper 与旧 mock-host 仅允许按迁移文档清理。
|
|
10
|
+
- 同步记录 network security hardening(敏感 header、受保护 endpoint 和显式 credential realm)与 typed-void result correction(void method 统一返回 `undefined`;排行榜删除仍返回 `{ deleted }`)。
|
|
11
|
+
|
|
12
|
+
### SDK
|
|
13
|
+
|
|
14
|
+
- 统一服务端密钥名称并补充接入文档 (@heybox-spa/open).
|
|
15
|
+
- Browser Dev Host 未配置外部 one-time code / PKCE 服务时明确禁用登录入口,避免把 CLI 登录态或 credential 暴露给调试页面。
|
|
16
|
+
|
|
17
|
+
### Runtime
|
|
18
|
+
|
|
19
|
+
- 完成 Runtime Host 分层硬切 (@heybox/hb-sdk-runtime).
|
|
20
|
+
- 修复 Mobile storage 对象读取、PC Host 重试与公开网络能力声明,并保证 terminal abort 后截图 chrome cleanup 可跨独立发布入口恢复。
|
|
21
|
+
|
|
22
|
+
### Release
|
|
23
|
+
|
|
24
|
+
- Protocol、Runtime 与 SDK 改为版本锁步的 release family,固定按 Protocol、Runtime、SDK candidate 发布并最后提升 SDK dist-tag;支持无副作用 dry-run、失败续跑和显式 dist-tag rollback。
|
|
25
|
+
- Runtime 与 SDK 发布产物精确锁定同版本 Protocol,避免后续 Protocol patch 改变已发布版本的安装图。
|
|
26
|
+
|
|
27
|
+
### SDK / Runtime
|
|
28
|
+
|
|
29
|
+
- 保留无网络模式 `user.getInfo()` 对 `identity` 与 `profile` 的隐式 full-scope 授权,并迁移到新的 Protocol/Capability owner。
|
|
30
|
+
|
|
3
31
|
## 0.7.3
|
|
4
32
|
|
|
5
33
|
### SDK
|
|
@@ -219,7 +247,7 @@
|
|
|
219
247
|
|
|
220
248
|
- 将截图来源身份绑定到启动详情返回的小程序 ID,避免信任未经绑定的宿主 URL 参数 (@heybox/hb-sdk-runtime)。
|
|
221
249
|
- 自定义 `resolveLaunchUrl` 可通过 `helpers.bindCanonicalIdentity` 回填可信小程序身份,避免 cloud / 截图来源在覆盖启动解析时丢失 identity (@heybox/hb-sdk-runtime)。
|
|
222
|
-
- Mock Runtime 支持显式 `identity`,并在注释中标明
|
|
250
|
+
- Mock Runtime 支持显式 `identity`,并在注释中标明 browser dev host URL 与生产启动详情信任边界的差异 (@heybox/hb-sdk-runtime)。
|
|
223
251
|
|
|
224
252
|
## 0.6.6
|
|
225
253
|
|
package/README.md
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
SDK 只提供面向小程序开发者的稳定接口,不提供客户端内部协议、登录凭据或私有实现入口。本地浏览器调试请使用 `hb-sdk dev` 提供的 Mock 环境,发布前仍需在小黑盒 APP 中完成真机验收。
|
|
6
6
|
|
|
7
|
+
宿主集成边界:`@heybox/hb-sdk-runtime` 运行在 iframe 外并负责 bridge/Host Port;跨 iframe 的 wire contract 唯一维护在零依赖 `@heybox/hb-sdk-protocol`。业务页面不需要创建 Runtime、实现 Host Port 或导入协议包;客户端 SDK 只依赖已兼容 re-export 的 `@heybox/hb-sdk/protocol`。
|
|
8
|
+
|
|
7
9
|
## 快速开始
|
|
8
10
|
|
|
9
11
|
### 创建新项目
|
|
@@ -190,3 +192,6 @@ hb-sdk remote deploy --release-note "本次更新说明"
|
|
|
190
192
|
- [Recipes](https://docs.xiaoheihe.cn/hb_sdk/recipes/)
|
|
191
193
|
- [API Reference](https://docs.xiaoheihe.cn/hb_sdk/reference/)
|
|
192
194
|
- [小程序工坊上架规则](https://docs.xiaoheihe.cn/hb_sdk/guide/mini-program-publishing-rules)
|
|
195
|
+
- [Runtime Host 迁移](./docs/runtime-host-migration.md)
|
|
196
|
+
|
|
197
|
+
Host/Runtime 集成维护者请先阅读 [`@heybox/hb-sdk-runtime` README](../hb-sdk-runtime/README.md)、[Runtime Reference](../hb-sdk-runtime/docs/reference/) 和 [`@heybox/hb-sdk-protocol` README](../hb-sdk-protocol/README.md)。
|
|
@@ -5,8 +5,8 @@ var fs = require('node:fs/promises');
|
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
|
|
7
7
|
var runtimeGate = require('./runtime-gate-CtV7rWyX.cjs');
|
|
8
|
-
var index = require('./index-
|
|
9
|
-
var projectVite = require('./project-vite-
|
|
8
|
+
var index = require('./index-BCd2vU5D.cjs');
|
|
9
|
+
var projectVite = require('./project-vite-BtIYxLkt.cjs');
|
|
10
10
|
require('node:async_hooks');
|
|
11
11
|
require('node:module');
|
|
12
12
|
require('path');
|
|
@@ -1,27 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var session = require('./session-
|
|
3
|
+
var session = require('./session-9ZWPGpqB.cjs');
|
|
4
4
|
var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
|
|
5
5
|
var fs$1 = require('node:fs');
|
|
6
6
|
var fs = require('node:fs/promises');
|
|
7
7
|
var path = require('node:path');
|
|
8
8
|
|
|
9
9
|
const MANAGED_RUNTIME_PERMISSION_KEYS = new Set(['network.request']);
|
|
10
|
-
/**
|
|
11
|
-
* 判断 permission key 是否由 Runtime 权限快照管理。
|
|
12
|
-
*
|
|
13
|
-
* @param key 待判断的 permission key。
|
|
14
|
-
* @returns 该 key 需要读取 Runtime 权限快照时返回 `true`。
|
|
15
|
-
*/
|
|
16
10
|
function isManagedMiniProgramRuntimePermissionKey(key) {
|
|
17
11
|
return MANAGED_RUNTIME_PERMISSION_KEYS.has(key);
|
|
18
12
|
}
|
|
19
|
-
/**
|
|
20
|
-
* 解析服务端权限快照;格式不完整时整份快照失效并 fail closed。
|
|
21
|
-
*
|
|
22
|
-
* @param snapshot 待校验的服务端权限快照。
|
|
23
|
-
* @returns 解析状态和通过校验的受管权限。
|
|
24
|
-
*/
|
|
25
13
|
function parseMiniProgramRuntimePermissions(snapshot) {
|
|
26
14
|
if (!isRecord(snapshot) || snapshot.schema_version !== 1 || !Array.isArray(snapshot.entries)) {
|
|
27
15
|
return { valid: false, permissions: {} };
|
|
@@ -40,9 +28,8 @@ function parseMiniProgramRuntimePermissions(snapshot) {
|
|
|
40
28
|
return { valid: false, permissions: {} };
|
|
41
29
|
}
|
|
42
30
|
seenKeys.add(key);
|
|
43
|
-
if (!isManagedMiniProgramRuntimePermissionKey(key))
|
|
31
|
+
if (!isManagedMiniProgramRuntimePermissionKey(key))
|
|
44
32
|
continue;
|
|
45
|
-
}
|
|
46
33
|
if (key === 'network.request' && typeof rawEntry.config.useOfficialDomain !== 'boolean') {
|
|
47
34
|
return { valid: false, permissions: {} };
|
|
48
35
|
}
|
|
@@ -69,7 +56,7 @@ const DEFAULT_PERMISSION_STATE = {
|
|
|
69
56
|
useOfficialDomain: false,
|
|
70
57
|
},
|
|
71
58
|
};
|
|
72
|
-
function
|
|
59
|
+
function createBrowserDevPermissionState(context) {
|
|
73
60
|
const parsed = parseMiniProgramRuntimePermissions(context.runtimePermissions);
|
|
74
61
|
const networkRequest = parsed.permissions['network.request'];
|
|
75
62
|
return parsed.valid && networkRequest
|
|
@@ -81,7 +68,7 @@ function createMiniProgramMockPermissionState(context) {
|
|
|
81
68
|
}
|
|
82
69
|
: cloneDefaultPermissionState();
|
|
83
70
|
}
|
|
84
|
-
function
|
|
71
|
+
function createBrowserDevRuntimePermissions(state) {
|
|
85
72
|
return {
|
|
86
73
|
schema_version: 1,
|
|
87
74
|
entries: [
|
|
@@ -409,9 +396,9 @@ function isTruthyEnvFlag(value) {
|
|
|
409
396
|
}
|
|
410
397
|
|
|
411
398
|
exports.MiniProgramProjectBindingError = MiniProgramProjectBindingError;
|
|
399
|
+
exports.createBrowserDevPermissionState = createBrowserDevPermissionState;
|
|
400
|
+
exports.createBrowserDevRuntimePermissions = createBrowserDevRuntimePermissions;
|
|
412
401
|
exports.createLocalDevLaunchToken = createLocalDevLaunchToken;
|
|
413
|
-
exports.createMiniProgramMockPermissionState = createMiniProgramMockPermissionState;
|
|
414
|
-
exports.createMiniProgramMockRuntimePermissions = createMiniProgramMockRuntimePermissions;
|
|
415
402
|
exports.createRemoteApiClientForEnvironment = createRemoteApiClientForEnvironment;
|
|
416
403
|
exports.getBoundMiniProgram = getBoundMiniProgram;
|
|
417
404
|
exports.parseMiniProgramRuntimePermissions = parseMiniProgramRuntimePermissions;
|
|
@@ -5,7 +5,7 @@ var fs = require('node:fs/promises');
|
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var require$$0 = require('fs');
|
|
7
7
|
var require$$1 = require('path');
|
|
8
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./index-BCd2vU5D.cjs');
|
|
9
9
|
require('node:module');
|
|
10
10
|
require('os');
|
|
11
11
|
require('readline');
|