@heybox/hb-sdk 0.8.3-alpha.1 → 0.8.3-alpha.3
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 -0
- package/README.md +39 -1
- package/dist/cli-chunks/{build-DUtuGfHf.cjs → build-Dydd4Rzd.cjs} +11 -7
- package/dist/cli-chunks/{context-DebQqIXh.cjs → context-DcuY0bGO.cjs} +2 -2
- package/dist/cli-chunks/{create-BYQb0ptI.cjs → create-DKVTlorM.cjs} +1 -1
- package/dist/cli-chunks/{dev-ILhZhsHN.cjs → dev-DbrUeTqi.cjs} +9 -9
- package/dist/cli-chunks/{doctor-KSe4lGEv.cjs → doctor-D184dg_h.cjs} +1 -1
- package/dist/cli-chunks/{index-IBIMsIDt.cjs → index-BG8JJ9pA.cjs} +2 -2
- package/dist/cli-chunks/{index-PKu0Zv8R.cjs → index-B_HjHK3d.cjs} +15 -15
- package/dist/cli-chunks/{index.esm-Sczt7W37.cjs → index.esm-42g2R7qD.cjs} +7 -7
- package/dist/cli-chunks/{login-i8NtyI10.cjs → login-D3MBcgNb.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-BU2-_Krd.cjs → project-vite-CUh6Dsv5.cjs} +1 -1
- package/dist/cli-chunks/{remote-B-f9D0yj.cjs → remote-EBGDOJL3.cjs} +11 -7
- package/dist/cli-chunks/{runtime-gate-xuikbF7W.cjs → runtime-gate-CE1ln9xc.cjs} +1 -1
- package/dist/cli-chunks/{runtime-permission-env-Bl2jhPQm.cjs → runtime-permission-env-CVt4QPbX.cjs} +20 -1
- package/dist/cli-chunks/{session-CySUtnTY.cjs → session-CKuEz-ih.cjs} +1 -1
- package/dist/cli-chunks/{skill-BN_mjQ_T.cjs → skill-oLEQS_U6.cjs} +2 -2
- package/dist/cli-chunks/{version-BTkX3iYg.cjs → version-BNNxfn8M.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-u03IcCCS.js +101 -0
- package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-DulYZqY1.js → desktop-app-launch-EnOYLhEx.js} +1 -1
- package/dist/devtools/browser-dev-host/assets/{index-BOHssdFQ.js → index-8YA6OLi7.js} +3 -3
- package/dist/devtools/browser-dev-host/index.html +2 -2
- package/dist/index.cjs.js +17 -1
- package/dist/index.esm.js +17 -1
- package/dist/miniapp-publish.cjs.js +15 -0
- package/dist/miniapp-publish.esm.js +15 -1
- package/dist/protocol.cjs.js +9 -0
- package/dist/protocol.esm.js +9 -1
- package/dist/templates/vanilla-vite-js/README.md.ejs +2 -0
- package/dist/templates/vanilla-vite-js/package.json.ejs +1 -0
- package/dist/vite.cjs.js +20 -1
- package/dist/vite.esm.js +20 -1
- package/package.json +4 -4
- package/skill/skill.json +4 -4
- package/types/index.d.ts +2 -2
- package/types/miniapp-manifest/category.d.ts +4 -0
- package/types/miniapp-manifest/index.d.ts +1 -0
- package/types/miniapp-manifest/node.d.ts +1 -0
- package/types/miniapp-manifest/schema.d.ts +3 -0
- package/types/miniapp-publish/index.d.ts +1 -0
- package/types/modules/viewport/index.d.ts +33 -2
- package/types/protocol/capabilities.d.ts +1 -1
- package/types/protocol.d.ts +2 -2
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-BhsV0yKM.js +0 -101
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
本文件随 `@heybox/hb-sdk` npm 包公开分发,只记录外部小程序开发者可观察到的变化。
|
|
4
4
|
|
|
5
|
+
## 0.8.3-alpha.3 - 2026-09-20
|
|
6
|
+
|
|
7
|
+
> 摘要:新增移动端横竖屏与全屏设置,并提供宿主退出全屏入口和展示状态通知。
|
|
8
|
+
> 影响级别:常规
|
|
9
|
+
> 开发者动作:按需调用 `viewport.setDisplay()`,并根据 `supported` 与实际窗口信息适配页面。
|
|
10
|
+
> 兼容范围:现有 API 保持兼容;原生能力不可用时返回 `supported: false`,不代表已完成转屏或完整全屏。
|
|
11
|
+
|
|
12
|
+
### 新增能力
|
|
13
|
+
|
|
14
|
+
- [`viewport.setDisplay`](https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/viewport/setDisplay) 支持横竖屏与全屏设置;横屏统一全屏,返回普通页面时联合设置竖屏与非全屏。
|
|
15
|
+
- `display_change` 通知已确认的展示状态,通过 `source` 区分 API 调用与用户点击退出按钮;窗口尺寸与安全区继续通过 `viewport_change` 获取。
|
|
16
|
+
|
|
17
|
+
### 行为调整
|
|
18
|
+
|
|
19
|
+
- 全屏时提供贴右边缘的退出按钮,一秒后收起并保留可点击入口;用户退出时恢复竖屏、非全屏。
|
|
20
|
+
- 展示设置支持状态去重、并发淘汰、超时取消和退出恢复;页面按实际 WebView 窗口与安全区适配。
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## 0.8.3-alpha.2
|
|
24
|
+
|
|
25
|
+
### 新增能力
|
|
26
|
+
|
|
27
|
+
- 支持在 `package.json#heybox.category` 声明小程序类别(`tool`、`game`、`other`);构建写入 Manifest,CLI 与 Open 提审自动采用,类别随版本审核、发布生效。
|
|
28
|
+
|
|
29
|
+
### 必须操作
|
|
30
|
+
|
|
31
|
+
- 新上传版本(含已有小程序更新)必须声明类别;缺少类别的项目需补配置后重新构建上传。开发者提审页不展示或提供手动选择类别,也不发送独立的 `category` 参数。
|
|
32
|
+
- `manifest.category` 是本版本发布合同的硬切字段。早于本版本构建、且缺少类别的历史产物不能直接重新上传或提审;旧项目必须在 `package.json#heybox.category` 补齐类别并使用当前 SDK 重新构建。已发布版本不受影响,COA 运营维护存量分类的入口继续保留。
|
|
33
|
+
|
|
5
34
|
## 0.8.3-alpha.1
|
|
6
35
|
|
|
7
36
|
### 问题修复
|
package/README.md
CHANGED
|
@@ -120,6 +120,8 @@ async function revokeAuthorizationFromUserAction() {
|
|
|
120
120
|
}
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
+
小程序类别需在 `package.json#heybox.category` 声明为 `tool`、`game` 或 `other`,构建后写入 Manifest,CLI/Open 提审自动采用,发布后生效。开发者提审页不展示或提供手动选择类别;新上传版本(含已有小程序更新)必须声明,缺少类别的项目须补配置后重新构建上传,详见 [小程序类别](https://docs.xiaoheihe.cn/hb_sdk/guide/cli#小程序类别)。
|
|
124
|
+
|
|
123
125
|
`bindAppIds` 只接受规范十进制字符串(形如 `/^[1-9]\d*$/`,拒绝前导零、空串与非数字),每项必须是正 int32(最大 `2147483647`),数组内不允许重复,最多 20 项,并按数值升序写入 Manifest。它不是权限,构建不联网;游戏真实性在远端预检和提审时校验。字段缺失或 `[]` 都表示清空绑定。PC 展示仍受 `platforms` 过滤。
|
|
124
126
|
|
|
125
127
|
再启用构建插件:
|
|
@@ -251,6 +253,40 @@ V1 仅支持普通权限启动;Manifest 的 `elevation` 只能省略或设为
|
|
|
251
253
|
`displayName` 最多 120 个 Unicode code point;args 最多 64 项,单项最多 1024 UTF-8 bytes、总计最多
|
|
252
254
|
16384 UTF-8 bytes,并拒绝 NUL、CR 和 LF。
|
|
253
255
|
|
|
256
|
+
## 横竖屏与胶囊
|
|
257
|
+
|
|
258
|
+
```ts
|
|
259
|
+
const { supported } = await hbSDK.viewport.setDisplay({ orientation: 'landscape', fullscreen: true });
|
|
260
|
+
if (!supported) {
|
|
261
|
+
// 原生方向与胶囊保持现状,继续按实际窗口尺寸提供可用布局。
|
|
262
|
+
}
|
|
263
|
+
// 横屏始终全屏;返回普通页面时联合恢复默认展示。
|
|
264
|
+
await hbSDK.viewport.setDisplay({ orientation: 'portrait', fullscreen: false });
|
|
265
|
+
|
|
266
|
+
const stopViewport = hbSDK.on('viewport_change', (windowInfo) => {
|
|
267
|
+
console.log(windowInfo.windowWidth, windowInfo.windowHeight, windowInfo.safeArea);
|
|
268
|
+
});
|
|
269
|
+
// 页面销毁时调用 stopViewport()。
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
新容器默认竖屏、非全屏,配置持续到下次调用或退出容器。SPA 路由应在进入页面时设置目标状态。
|
|
273
|
+
`setDisplay` 至少传一个字段;省略字段保持当前目标值,合并后横屏强制 `fullscreen: true`,竖屏才按 `fullscreen` 控制。后续设置先合并目标,再替换不同的在途设置,旧调用以 `ORIENTATION_SUPERSEDED` 失败;重复设置会合并。
|
|
274
|
+
支持原生能力时,Promise 在宿主布局稳定后返回 `{ supported: true }`。缺少能力时 SDK 返回 `{ supported: false }`,原生方向与胶囊保持现状;新版 H5 宿主仍尽力收起额外顶部栏。`false` 不代表已经实现完整全屏。超时仍返回 `ORIENTATION_TIMEOUT`,取消、参数及其它执行错误也不被吞掉。布局应适配当前窗口与四边安全区,
|
|
275
|
+
不能依赖固定竖屏宽度;首次读取使用 `viewport.getWindowInfo()`,后续使用 `viewport_change`。
|
|
276
|
+
`display_change` 在宿主确认方向或全屏状态发生变化后发送 `{ orientation, fullscreen, source }`,包括开发者调用 `setDisplay()` 和用户点击宿主退出全屏按钮。事件报告归一化后的实际状态:横屏始终全屏,用户点击退出按钮后恢复竖屏、非全屏。重复状态、不支持(`supported: false`)、失败、超时、取消及被后续请求替换的设置不发送事件。事件不回放初始状态,新容器默认竖屏、非全屏;它不监听手机旋转传感器,窗口尺寸与安全区仍通过 `viewport_change` 获取。请在调用设置前注册监听,并在页面销毁时取消。
|
|
277
|
+
|
|
278
|
+
```ts
|
|
279
|
+
const stopDisplay = hbSDK.on('display_change', ({ orientation, fullscreen }) => {
|
|
280
|
+
console.log('当前方向', orientation, '当前全屏状态', fullscreen)
|
|
281
|
+
})
|
|
282
|
+
|
|
283
|
+
// 页面销毁时调用 stopDisplay()。
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
全屏同时收起胶囊和宿主额外顶部栏,不保证原生内容铺满容器;页面应按实际 WebView 窗口和安全区适配;这不代表系统状态栏、手势条被隐藏或设备安全区消失,重要控件仍应按实际窗口信息避让。宿主 Runtime 统一提供小尺寸“退出全屏”浮动按钮:首次出现和点击右侧边缘重新唤出后,均在 1 秒后淡出并收至边缘,保留可点击的唤出入口。展开时点击按钮会调用 `setDisplay({ orientation: 'portrait', fullscreen: false })`,恢复竖屏、非全屏;退出全屏或销毁会话时移除按钮。H5 无需另行提供退出控件,也可按需提供自己的入口。业务也可通过 `navigation.close()` 提供退出入口;窗口变化事件本身不代表设备方向发生变化。
|
|
287
|
+
|
|
288
|
+
该 API 为实验能力,自 SDK `0.8.1-alpha.4` 提供,Android/iOS 原生能力最低客户端版本为 `1.3.396`,实际以桥接能力为准。SDK 将 `METHOD_FORBIDDEN`、`METHOD_NOT_FOUND` 和 `REQUEST_UNSUPPORTED` 统一转换为 `{ supported: false }`。本地 Web/PC Host 不伪造方向或胶囊支持,请在已接入的移动端真机验收。
|
|
289
|
+
|
|
254
290
|
## 错误处理
|
|
255
291
|
|
|
256
292
|
握手失败会保留在持久状态中,可在订阅回放时直接处理原始错误:
|
|
@@ -282,7 +318,7 @@ SDK 还提供 `getHandshakeState()` / `onHandshakeStateChange()` 管理持久握
|
|
|
282
318
|
| `ui` | 展示 Toast 和 Loading |
|
|
283
319
|
| `device` | 调用振动和剪贴板能力 |
|
|
284
320
|
| `navigation` | 关闭、刷新页面或打开小黑盒页面 |
|
|
285
|
-
| `viewport` |
|
|
321
|
+
| `viewport` | 读取窗口信息、设置方向/胶囊及导航栏样式 |
|
|
286
322
|
| `storage` | 读写当前小程序的隔离存储 |
|
|
287
323
|
| `files` | 声明受控 sandbox 与用户选择授权的文件、目录操作 |
|
|
288
324
|
| `cloud` | 使用小程序云端排行榜 |
|
|
@@ -419,6 +455,8 @@ hb-sdk remote deploy --release-note "本次更新说明"
|
|
|
419
455
|
|
|
420
456
|
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)。
|
|
421
457
|
|
|
458
|
+
`display_change.source` 区分变化来源:`api` 为开发者调用,`user` 为用户点击宿主退出全屏按钮。同目标并发合并时保留首次发起操作的来源;重复状态不额外发事件。旧宿主可能不含 source,不能将缺失来源推断为用户操作。仅用户退出时跳页,应判断 `source === 'user' && !fullscreen`,确认已恢复竖屏、非全屏后按业务需要跳转。
|
|
459
|
+
|
|
422
460
|
## 版本名称与图片(0.8.2)
|
|
423
461
|
|
|
424
462
|
在 `package.json#heybox` 配置 `name`、`icon`、`coverImages`。图片为项目内文件,icon 200×200、封面 1–5 张,单张不超过 10 MiB 和 4000 万像素。构建原样复制到版本产物,发布时才更新线上资料。全缺失配置可通过 bind/dev/deploy 从当前正式发布快照自动迁移;离线 build 不迁移。详见[版本资料与迁移指南](https://docs.xiaoheihe.cn/hb_sdk/guide/version-profile)。
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
var fs$1 = require('node:fs');
|
|
4
4
|
var fs = require('node:fs/promises');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
6
|
+
var runtimePermissionEnv = require('./runtime-permission-env-CVt4QPbX.cjs');
|
|
7
7
|
require('node:crypto');
|
|
8
8
|
require('node:zlib');
|
|
9
|
-
var runtimeGate = require('./runtime-gate-
|
|
10
|
-
var index = require('./index-
|
|
11
|
-
var projectVite = require('./project-vite-
|
|
12
|
-
require('./version-
|
|
9
|
+
var runtimeGate = require('./runtime-gate-CE1ln9xc.cjs');
|
|
10
|
+
var index = require('./index-B_HjHK3d.cjs');
|
|
11
|
+
var projectVite = require('./project-vite-CUh6Dsv5.cjs');
|
|
12
|
+
require('./version-BNNxfn8M.cjs');
|
|
13
13
|
require('node:async_hooks');
|
|
14
14
|
require('node:module');
|
|
15
15
|
require('path');
|
|
@@ -36,6 +36,7 @@ async function runBuildCommand(_options = {}, runtime = {}) {
|
|
|
36
36
|
const declaredPlatforms = runtimePermissionEnv.readMiniappPlatformsFromPackageJson(projectRoot);
|
|
37
37
|
const declaredWindow = runtimePermissionEnv.readMiniappWindowFromPackageJson(projectRoot);
|
|
38
38
|
const declaredBindAppIds = runtimePermissionEnv.readMiniappBindAppIdsFromPackageJson(projectRoot);
|
|
39
|
+
const declaredCategory = runtimePermissionEnv.readMiniappCategoryFromPackageJson(projectRoot);
|
|
39
40
|
runtimePermissionEnv.readMiniappPermissionsFromPackageJson(projectRoot, runtimePermissionEnv.resolveMiniappSdkVersion());
|
|
40
41
|
await fs.rm(distDir, { force: true, recursive: true });
|
|
41
42
|
try {
|
|
@@ -54,7 +55,7 @@ async function runBuildCommand(_options = {}, runtime = {}) {
|
|
|
54
55
|
write: true,
|
|
55
56
|
},
|
|
56
57
|
}), { successText: 'Vite 构建完成' });
|
|
57
|
-
const result = await validateBuildOutput(projectRoot, logger, declaredPlatforms, declaredWindow, declaredBindAppIds);
|
|
58
|
+
const result = await validateBuildOutput(projectRoot, logger, declaredPlatforms, declaredWindow, declaredBindAppIds, declaredCategory);
|
|
58
59
|
logger.success(`构建完成: dist/ | manifest version ${result.version} | sdkVersion ${result.sdkVersion} | 待上传文件 ${result.fileCount} 个 | ${formatSize(result.totalBytes)}`);
|
|
59
60
|
return result;
|
|
60
61
|
}, env);
|
|
@@ -83,7 +84,7 @@ function createFixedBuildOutputPlugin(projectRoot) {
|
|
|
83
84
|
},
|
|
84
85
|
};
|
|
85
86
|
}
|
|
86
|
-
async function validateBuildOutput(projectRoot, logger, declaredPlatforms, declaredWindow, declaredBindAppIds) {
|
|
87
|
+
async function validateBuildOutput(projectRoot, logger, declaredPlatforms, declaredWindow, declaredBindAppIds, declaredCategory) {
|
|
87
88
|
const distDir = path.join(projectRoot, 'dist');
|
|
88
89
|
const entryHtmlPath = path.join(distDir, 'index.html');
|
|
89
90
|
const manifestPath = path.join(distDir, 'manifest.json');
|
|
@@ -104,6 +105,9 @@ async function validateBuildOutput(projectRoot, logger, declaredPlatforms, decla
|
|
|
104
105
|
const validated = runtimePermissionEnv.validateMiniappManifestForDeploy(manifest);
|
|
105
106
|
const { platforms, sdkVersion, version, permissions, window } = validated;
|
|
106
107
|
const bindAppIds = validated.bindAppIds ?? [];
|
|
108
|
+
if (validated.category !== declaredCategory) {
|
|
109
|
+
throw new Error('dist/manifest.json.category 与 package.json#heybox.category 不一致,请重新 build');
|
|
110
|
+
}
|
|
107
111
|
if (!runtimePermissionEnv.areMiniappPlatformsEqual(platforms, declaredPlatforms)) {
|
|
108
112
|
throw new Error('dist/manifest.json.platforms 与 package.json#heybox.platforms 不一致,请重新 build');
|
|
109
113
|
}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var node_crypto = require('node:crypto');
|
|
4
4
|
var fs = require('node:fs/promises');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
6
|
+
var runtimePermissionEnv = require('./runtime-permission-env-CVt4QPbX.cjs');
|
|
7
7
|
var fs$1 = require('node:fs');
|
|
8
8
|
var sharp = require('sharp');
|
|
9
|
-
var session = require('./session-
|
|
9
|
+
var session = require('./session-CKuEz-ih.cjs');
|
|
10
10
|
|
|
11
11
|
async function inspectBasicInfoImage(bytes, sourcePath, kind) {
|
|
12
12
|
const inspected = await inspectDecodedBasicInfoImage(bytes, kind);
|
|
@@ -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-B_HjHK3d.cjs');
|
|
9
9
|
require('node:module');
|
|
10
10
|
require('os');
|
|
11
11
|
require('node:crypto');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var context = require('./context-
|
|
3
|
+
var context = require('./context-DcuY0bGO.cjs');
|
|
4
4
|
var node_crypto = require('node:crypto');
|
|
5
5
|
var fs = require('node:fs');
|
|
6
6
|
var os = require('node:os');
|
|
@@ -9,16 +9,16 @@ var net = require('node:net');
|
|
|
9
9
|
var promises = require('node:dns/promises');
|
|
10
10
|
var node_http = require('node:http');
|
|
11
11
|
var node_module = require('node:module');
|
|
12
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
12
|
+
var runtimePermissionEnv = require('./runtime-permission-env-CVt4QPbX.cjs');
|
|
13
13
|
var undici = require('undici');
|
|
14
14
|
var fs$1 = require('node:fs/promises');
|
|
15
|
-
var index = require('./index-
|
|
15
|
+
var index = require('./index-B_HjHK3d.cjs');
|
|
16
16
|
var require$$0$1 = require('crypto');
|
|
17
17
|
var require$$0 = require('buffer');
|
|
18
|
-
var session = require('./session-
|
|
18
|
+
var session = require('./session-CKuEz-ih.cjs');
|
|
19
19
|
var browser = require('./browser-RAy8e8cV.cjs');
|
|
20
|
-
var projectVite = require('./project-vite-
|
|
21
|
-
var version = require('./version-
|
|
20
|
+
var projectVite = require('./project-vite-CUh6Dsv5.cjs');
|
|
21
|
+
var version = require('./version-BNNxfn8M.cjs');
|
|
22
22
|
require('node:zlib');
|
|
23
23
|
|
|
24
24
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
@@ -1950,8 +1950,8 @@ const DEFAULT_CHANNEL_TRANSPORT = {
|
|
|
1950
1950
|
};
|
|
1951
1951
|
const IPV4_LOOPBACK_ADDRESSES = new net.BlockList();
|
|
1952
1952
|
IPV4_LOOPBACK_ADDRESSES.addSubnet('127.0.0.0', 8, 'ipv4');
|
|
1953
|
-
const { WebSocket, WebSocketServer } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-
|
|
1954
|
-
const { parse: parseHtml } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-
|
|
1953
|
+
const { WebSocket, WebSocketServer } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-DbrUeTqi.cjs', document.baseURI).href)))('ws');
|
|
1954
|
+
const { parse: parseHtml } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-DbrUeTqi.cjs', document.baseURI).href)))('parse5');
|
|
1955
1955
|
const BROWSER_DEV_HOST_ROOT_CANDIDATES = [
|
|
1956
1956
|
path.resolve(__dirname, 'devtools/browser-dev-host'),
|
|
1957
1957
|
path.resolve(__dirname, '../devtools/browser-dev-host'),
|
|
@@ -11049,7 +11049,7 @@ function assertNodeRuntimeCapabilities(ctx, settings) {
|
|
|
11049
11049
|
function createNodeRealtimeDriverRegistry() {
|
|
11050
11050
|
const registry = createRuntimeRealtimeDriverRegistry();
|
|
11051
11051
|
registry.registerLazy('node-websocket', async () => {
|
|
11052
|
-
const mod = await Promise.resolve().then(function () { return require('./index.esm-
|
|
11052
|
+
const mod = await Promise.resolve().then(function () { return require('./index.esm-42g2R7qD.cjs'); });
|
|
11053
11053
|
return mod.createNodeWebSocketRuntimeDriver();
|
|
11054
11054
|
});
|
|
11055
11055
|
return registry;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index$2 = require('./index-
|
|
3
|
+
var index$2 = require('./index-B_HjHK3d.cjs');
|
|
4
4
|
var require$$0$3 = require('fs');
|
|
5
5
|
var require$$0$2 = require('crypto');
|
|
6
6
|
var require$$1$2 = require('path');
|
|
7
7
|
var require$$0$5 = require('assert');
|
|
8
8
|
var require$$0$4 = require('events');
|
|
9
9
|
var require$$1$1 = require('util');
|
|
10
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
10
|
+
var runtimePermissionEnv = require('./runtime-permission-env-CVt4QPbX.cjs');
|
|
11
11
|
var require$$0$7 = require('net');
|
|
12
12
|
var require$$0$6 = require('url');
|
|
13
13
|
var require$$2$1 = require('http');
|
|
@@ -235,19 +235,19 @@ function requireArgument () {
|
|
|
235
235
|
|
|
236
236
|
var command = {};
|
|
237
237
|
|
|
238
|
-
const require$5 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
238
|
+
const require$5 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-B_HjHK3d.cjs', document.baseURI).href)));
|
|
239
239
|
function __require$4() { return require$5("node:events"); }
|
|
240
240
|
|
|
241
|
-
const require$4 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
241
|
+
const require$4 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-B_HjHK3d.cjs', document.baseURI).href)));
|
|
242
242
|
function __require$3() { return require$4("node:child_process"); }
|
|
243
243
|
|
|
244
|
-
const require$3 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
244
|
+
const require$3 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-B_HjHK3d.cjs', document.baseURI).href)));
|
|
245
245
|
function __require$2() { return require$3("node:path"); }
|
|
246
246
|
|
|
247
|
-
const require$2 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
247
|
+
const require$2 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-B_HjHK3d.cjs', document.baseURI).href)));
|
|
248
248
|
function __require$1() { return require$2("node:fs"); }
|
|
249
249
|
|
|
250
|
-
const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
250
|
+
const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-B_HjHK3d.cjs', document.baseURI).href)));
|
|
251
251
|
function __require() { return require$1("node:process"); }
|
|
252
252
|
|
|
253
253
|
var help = {};
|
|
@@ -13467,7 +13467,7 @@ function getPathname(pathWithQuery) {
|
|
|
13467
13467
|
}
|
|
13468
13468
|
|
|
13469
13469
|
const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
|
|
13470
|
-
const BUILT_CLI_VERSION = '0.8.3-alpha.
|
|
13470
|
+
const BUILT_CLI_VERSION = '0.8.3-alpha.3';
|
|
13471
13471
|
const PACKAGE_JSON_CANDIDATES = [
|
|
13472
13472
|
path.resolve(__dirname, '..', '..', 'package.json'),
|
|
13473
13473
|
path.resolve(__dirname, '..', 'package.json'),
|
|
@@ -13826,39 +13826,39 @@ function createCommandLoggerResolver(options) {
|
|
|
13826
13826
|
};
|
|
13827
13827
|
}
|
|
13828
13828
|
const defaultClearLoginStatus = async (...args) => {
|
|
13829
|
-
const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-
|
|
13829
|
+
const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-D3MBcgNb.cjs'); });
|
|
13830
13830
|
return clearLoginStatus(...args);
|
|
13831
13831
|
};
|
|
13832
13832
|
const defaultLoginToHeybox = async (...args) => {
|
|
13833
|
-
const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-
|
|
13833
|
+
const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-D3MBcgNb.cjs'); });
|
|
13834
13834
|
return loginToHeybox(...args);
|
|
13835
13835
|
};
|
|
13836
13836
|
const defaultPrintLoginStatus = async (...args) => {
|
|
13837
|
-
const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-
|
|
13837
|
+
const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-D3MBcgNb.cjs'); });
|
|
13838
13838
|
return printLoginStatus(...args);
|
|
13839
13839
|
};
|
|
13840
13840
|
const defaultRunBuildCommand = async (...args) => {
|
|
13841
|
-
const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-
|
|
13841
|
+
const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-Dydd4Rzd.cjs'); });
|
|
13842
13842
|
return runBuildCommand(...args);
|
|
13843
13843
|
};
|
|
13844
13844
|
const defaultRunCreateCommand = async (...args) => {
|
|
13845
|
-
const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-
|
|
13845
|
+
const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-DKVTlorM.cjs'); });
|
|
13846
13846
|
return runCreateCommand(...args);
|
|
13847
13847
|
};
|
|
13848
13848
|
const defaultRunDevCommand = async (...args) => {
|
|
13849
|
-
const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-
|
|
13849
|
+
const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-DbrUeTqi.cjs'); }).then(function (n) { return n.dev; });
|
|
13850
13850
|
return runDevCommand(...args);
|
|
13851
13851
|
};
|
|
13852
13852
|
const defaultRunDoctorCommand = async (...args) => {
|
|
13853
|
-
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-
|
|
13853
|
+
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-D184dg_h.cjs'); });
|
|
13854
13854
|
return runDoctorCommand(...args);
|
|
13855
13855
|
};
|
|
13856
13856
|
const defaultRunSkillInstallCommand = async (...args) => {
|
|
13857
|
-
const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-
|
|
13857
|
+
const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-oLEQS_U6.cjs'); });
|
|
13858
13858
|
return runSkillInstallCommand(...args);
|
|
13859
13859
|
};
|
|
13860
13860
|
const defaultRunRemoteCommand = async (...args) => {
|
|
13861
|
-
const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-
|
|
13861
|
+
const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-EBGDOJL3.cjs'); });
|
|
13862
13862
|
return runRemoteCommand(...args);
|
|
13863
13863
|
};
|
|
13864
13864
|
function resolveStandaloneLogger(options, verbose) {
|
|
@@ -11,8 +11,8 @@ var require$$0$4 = require('url');
|
|
|
11
11
|
var require$$0 = require('zlib');
|
|
12
12
|
var require$$0$1 = require('buffer');
|
|
13
13
|
var require$$1 = require('util');
|
|
14
|
-
var index = require('./index-
|
|
15
|
-
var dev = require('./dev-
|
|
14
|
+
var index = require('./index-B_HjHK3d.cjs');
|
|
15
|
+
var dev = require('./dev-DbrUeTqi.cjs');
|
|
16
16
|
require('node:module');
|
|
17
17
|
require('node:fs');
|
|
18
18
|
require('node:fs/promises');
|
|
@@ -23,12 +23,12 @@ require('node:crypto');
|
|
|
23
23
|
require('readline');
|
|
24
24
|
require('tty');
|
|
25
25
|
require('assert');
|
|
26
|
-
require('./context-
|
|
27
|
-
require('./runtime-permission-env-
|
|
28
|
-
require('./version-
|
|
26
|
+
require('./context-DcuY0bGO.cjs');
|
|
27
|
+
require('./runtime-permission-env-CVt4QPbX.cjs');
|
|
28
|
+
require('./version-BNNxfn8M.cjs');
|
|
29
29
|
require('node:async_hooks');
|
|
30
30
|
require('sharp');
|
|
31
|
-
require('./session-
|
|
31
|
+
require('./session-CKuEz-ih.cjs');
|
|
32
32
|
require('fs');
|
|
33
33
|
require('constants');
|
|
34
34
|
require('node:os');
|
|
@@ -42,7 +42,7 @@ require('node:buffer');
|
|
|
42
42
|
require('node:url');
|
|
43
43
|
require('node:util');
|
|
44
44
|
require('node:child_process');
|
|
45
|
-
require('./project-vite-
|
|
45
|
+
require('./project-vite-CUh6Dsv5.cjs');
|
|
46
46
|
require('node:zlib');
|
|
47
47
|
|
|
48
48
|
var bufferUtil = {exports: {}};
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
var promises = require('node:readline/promises');
|
|
4
4
|
var node_crypto = require('node:crypto');
|
|
5
5
|
var node_http = require('node:http');
|
|
6
|
-
var session = require('./session-
|
|
6
|
+
var session = require('./session-CKuEz-ih.cjs');
|
|
7
7
|
var browser = require('./browser-RAy8e8cV.cjs');
|
|
8
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./index-B_HjHK3d.cjs');
|
|
9
9
|
require('node:path');
|
|
10
10
|
require('fs');
|
|
11
11
|
require('constants');
|
|
@@ -5,7 +5,7 @@ var fs$1 = require('node:fs/promises');
|
|
|
5
5
|
var node_module = require('node:module');
|
|
6
6
|
var path = require('node:path');
|
|
7
7
|
var node_url = require('node:url');
|
|
8
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./index-B_HjHK3d.cjs');
|
|
9
9
|
|
|
10
10
|
function findProjectRoot(startDir) {
|
|
11
11
|
let current = path.resolve(startDir);
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
4
|
-
var context = require('./context-
|
|
3
|
+
var runtimePermissionEnv = require('./runtime-permission-env-CVt4QPbX.cjs');
|
|
4
|
+
var context = require('./context-DcuY0bGO.cjs');
|
|
5
5
|
var promises = require('node:readline/promises');
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var session = require('./session-
|
|
6
|
+
var index = require('./index-B_HjHK3d.cjs');
|
|
7
|
+
var session = require('./session-CKuEz-ih.cjs');
|
|
8
8
|
var childProcess = require('node:child_process');
|
|
9
9
|
var fs = require('node:fs');
|
|
10
10
|
var fs$1 = require('node:fs/promises');
|
|
11
11
|
var path = require('node:path');
|
|
12
12
|
var node_crypto = require('node:crypto');
|
|
13
13
|
require('node:zlib');
|
|
14
|
-
var runtimeGate = require('./runtime-gate-
|
|
15
|
-
require('./version-
|
|
14
|
+
var runtimeGate = require('./runtime-gate-CE1ln9xc.cjs');
|
|
15
|
+
require('./version-BNNxfn8M.cjs');
|
|
16
16
|
require('node:async_hooks');
|
|
17
17
|
require('sharp');
|
|
18
18
|
require('node:module');
|
|
@@ -274,7 +274,7 @@ function createDefaultCosClient(uploadToken, COS) {
|
|
|
274
274
|
};
|
|
275
275
|
}
|
|
276
276
|
async function loadCosConstructor() {
|
|
277
|
-
const cosModule = await Promise.resolve().then(function () { return require('./index-
|
|
277
|
+
const cosModule = await Promise.resolve().then(function () { return require('./index-BG8JJ9pA.cjs'); }).then(function (n) { return n.index; });
|
|
278
278
|
return cosModule.default;
|
|
279
279
|
}
|
|
280
280
|
function formatSize(bytes) {
|
|
@@ -517,6 +517,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
517
517
|
const declaredPlatforms = runtimePermissionEnv.readMiniappPlatformsFromPackageJson(projectRoot);
|
|
518
518
|
const declaredWindow = runtimePermissionEnv.readMiniappWindowFromPackageJson(projectRoot);
|
|
519
519
|
const declaredBindAppIds = runtimePermissionEnv.readMiniappBindAppIdsFromPackageJson(projectRoot);
|
|
520
|
+
const declaredCategory = runtimePermissionEnv.readMiniappCategoryFromPackageJson(projectRoot);
|
|
520
521
|
const releaseNote = await resolveDeployReleaseNote(options, runtime);
|
|
521
522
|
const session$1 = await logger.task('正在校验 Heybox 登录态', () => (runtime.requireAuthSession ?? session.requireHeyboxAuthSession)({ loginBaseUrl }), { successText: 'Heybox 登录态有效' });
|
|
522
523
|
logger.debug(`Heybox API: ${apiBaseUrl}`);
|
|
@@ -590,6 +591,9 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
590
591
|
const distDir = path.join(projectRoot, 'dist');
|
|
591
592
|
const parsedManifest = await readDeployManifest(projectRoot, logger);
|
|
592
593
|
({ manifest, version } = parsedManifest);
|
|
594
|
+
if (manifest.category !== declaredCategory) {
|
|
595
|
+
throw new Error('dist/manifest.json.category 与 package.json#heybox.category 不一致,请重新 build 后再 deploy');
|
|
596
|
+
}
|
|
593
597
|
if (!declaredPlatforms || !runtimePermissionEnv.areMiniappPlatformsEqual(parsedManifest.platforms, declaredPlatforms)) {
|
|
594
598
|
throw new Error('dist/manifest.json.platforms 与 package.json#heybox.platforms 不一致,请重新 build 后再 deploy');
|
|
595
599
|
}
|
package/dist/cli-chunks/{runtime-permission-env-Bl2jhPQm.cjs → runtime-permission-env-CVt4QPbX.cjs}
RENAMED
|
@@ -2,10 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
var fs = require('node:fs');
|
|
4
4
|
var path = require('node:path');
|
|
5
|
-
var version = require('./version-
|
|
5
|
+
var version = require('./version-BNNxfn8M.cjs');
|
|
6
6
|
require('node:crypto');
|
|
7
7
|
var node_async_hooks = require('node:async_hooks');
|
|
8
8
|
|
|
9
|
+
/** 校验配置或产物中的类别,省略与显式非法值严格区分。 */
|
|
10
|
+
function parseMiniappCategory(value, sourceLabel = 'package.json#heybox.category') {
|
|
11
|
+
if (value === undefined)
|
|
12
|
+
return undefined;
|
|
13
|
+
if (value === 'tool' || value === 'game' || value === 'other')
|
|
14
|
+
return value;
|
|
15
|
+
throw new Error(`${sourceLabel} 必须是 tool、game 或 other`);
|
|
16
|
+
}
|
|
17
|
+
|
|
9
18
|
var re = {exports: {}};
|
|
10
19
|
|
|
11
20
|
var constants;
|
|
@@ -3467,6 +3476,10 @@ function validateMiniappManifestForDeploy(manifest) {
|
|
|
3467
3476
|
});
|
|
3468
3477
|
const companions = validateGeneratedCompanions(manifest.companions);
|
|
3469
3478
|
const window = validateMiniappWindow(manifest.window, 'manifest.window');
|
|
3479
|
+
const category = parseMiniappCategory(manifest.category, 'manifest.category');
|
|
3480
|
+
if (category === undefined) {
|
|
3481
|
+
throw new Error('manifest.category 缺失,请在 package.json#heybox.category 声明 tool、game 或 other 后重新构建');
|
|
3482
|
+
}
|
|
3470
3483
|
const bindAppIds = parseMiniappBindAppIds(manifest.bindAppIds, { sourceLabel: 'manifest.bindAppIds' });
|
|
3471
3484
|
return {
|
|
3472
3485
|
version,
|
|
@@ -3477,6 +3490,7 @@ function validateMiniappManifestForDeploy(manifest) {
|
|
|
3477
3490
|
...(companions === undefined ? {} : { companions }),
|
|
3478
3491
|
...(window === undefined ? {} : { window }),
|
|
3479
3492
|
...(bindAppIds.length === 0 ? {} : { bindAppIds }),
|
|
3493
|
+
...(category === undefined ? {} : { category }),
|
|
3480
3494
|
};
|
|
3481
3495
|
}
|
|
3482
3496
|
function validateGeneratedCompanions(value) {
|
|
@@ -12603,6 +12617,10 @@ function readMiniappBindAppIdsFromPackageJson(root) {
|
|
|
12603
12617
|
const heybox = readMiniappHeyboxConfig(packageJson);
|
|
12604
12618
|
return parseMiniappBindAppIds(heybox?.bindAppIds);
|
|
12605
12619
|
}
|
|
12620
|
+
function readMiniappCategoryFromPackageJson(root) {
|
|
12621
|
+
const { packageJson } = readMiniappPackageJson(root);
|
|
12622
|
+
return parseMiniappCategory(readMiniappHeyboxConfig(packageJson)?.category);
|
|
12623
|
+
}
|
|
12606
12624
|
function resolveMiniappSdkVersion() {
|
|
12607
12625
|
if (!version.HB_SDK_VERSION.startsWith('__HB_SDK_'))
|
|
12608
12626
|
return version.HB_SDK_VERSION;
|
|
@@ -12764,6 +12782,7 @@ exports.parseMiniappBasicInfo = parseMiniappBasicInfo;
|
|
|
12764
12782
|
exports.parseMiniappManifestJson = parseMiniappManifestJson;
|
|
12765
12783
|
exports.prepareMiniappArtifactFiles = prepareMiniappArtifactFiles;
|
|
12766
12784
|
exports.readMiniappBindAppIdsFromPackageJson = readMiniappBindAppIdsFromPackageJson;
|
|
12785
|
+
exports.readMiniappCategoryFromPackageJson = readMiniappCategoryFromPackageJson;
|
|
12767
12786
|
exports.readMiniappPermissionsFromPackageJson = readMiniappPermissionsFromPackageJson;
|
|
12768
12787
|
exports.readMiniappPlatformsFromPackageJson = readMiniappPlatformsFromPackageJson;
|
|
12769
12788
|
exports.readMiniappWindowFromPackageJson = readMiniappWindowFromPackageJson;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var version = require('./version-
|
|
3
|
+
var version = require('./version-BNNxfn8M.cjs');
|
|
4
4
|
var fs = require('node:fs/promises');
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var childProcess = require('node:child_process');
|
|
7
|
-
var index = require('./index-
|
|
7
|
+
var index = require('./index-B_HjHK3d.cjs');
|
|
8
8
|
require('node:module');
|
|
9
9
|
require('node:fs');
|
|
10
10
|
require('path');
|