@heybox/hb-sdk 0.9.2-alpha.7 → 0.9.2-alpha.9

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 (43) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +4 -2
  3. package/dist/card-controller.cjs.js +35 -3
  4. package/dist/card-controller.esm.js +35 -3
  5. package/dist/cli-chunks/{build-Do22AWbq.cjs → build-DvHmPnZZ.cjs} +5 -5
  6. package/dist/cli-chunks/{context-DQhjWa7X.cjs → context-DYlZV8UG.cjs} +2 -2
  7. package/dist/cli-chunks/{create-QuI_mw8x.cjs → create-CJ0cyrJG.cjs} +1 -1
  8. package/dist/cli-chunks/deploy-lock-CmKl9M1c.cjs +148 -0
  9. package/dist/cli-chunks/{dev-KAhj5UTy.cjs → dev-DhEZBjd6.cjs} +8 -8
  10. package/dist/cli-chunks/{doctor-DNoQWBpo.cjs → doctor-B8q0UuXs.cjs} +1 -1
  11. package/dist/cli-chunks/games-CmO-AKXg.cjs +140 -0
  12. package/dist/cli-chunks/{index-DZUYwb3h.cjs → index-CRwNLk5w.cjs} +1 -1
  13. package/dist/cli-chunks/{index-bZIxID9N.cjs → index-hYvQR19Q.cjs} +35 -16
  14. package/dist/cli-chunks/{index.esm-EWleN3S5.cjs → index.esm-DU7YhFWI.cjs} +6 -6
  15. package/dist/cli-chunks/{login-BYM3Nwau.cjs → login-DMJ45_Bs.cjs} +1 -1
  16. package/dist/cli-chunks/{project-vite-6eLmb4Em.cjs → project-vite-BGy9w-Bx.cjs} +1 -1
  17. package/dist/cli-chunks/{remote-dvOjaxJu.cjs → remote-CSuwqlKA.cjs} +33 -146
  18. package/dist/cli-chunks/{runtime-gate-BKc2zPV-.cjs → runtime-gate-BvcLwvzi.cjs} +3 -2
  19. package/dist/cli-chunks/{runtime-permission-env-B9SqoP85.cjs → runtime-permission-env-CbqmHz0r.cjs} +14 -2
  20. package/dist/cli-chunks/{skill-DFXZ0SK_.cjs → skill-CtKW2J0U.cjs} +2 -2
  21. package/dist/cli-chunks/{version-CwEOrhL1.cjs → version-BQMfLqms.cjs} +1 -1
  22. package/dist/cli.cjs +1 -1
  23. package/dist/devtools/browser-dev-host/assets/{browser-dev-host-BitDUIsy.js → browser-dev-host-Cjw0mAi_.js} +1 -1
  24. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-B0yrI7xe.js → desktop-app-launch-D9lPBkUV.js} +1 -1
  25. package/dist/devtools/browser-dev-host/assets/{index-D_mC4Hvt.js → index-DrbZkH9C.js} +3 -3
  26. package/dist/devtools/browser-dev-host/index.html +2 -2
  27. package/dist/index.cjs.js +13 -5
  28. package/dist/index.esm.js +13 -5
  29. package/dist/miniapp-publish.cjs.js +35 -81
  30. package/dist/miniapp-publish.esm.js +35 -80
  31. package/dist/protocol.cjs.js +13 -0
  32. package/dist/protocol.esm.js +13 -0
  33. package/dist/templates/vanilla-vite-js/README.md.ejs +4 -0
  34. package/dist/vite.cjs.js +51 -3
  35. package/dist/vite.esm.js +51 -3
  36. package/package.json +5 -4
  37. package/skill/SKILL.md +9 -0
  38. package/skill/skill.json +5 -5
  39. package/types/card-controller.d.ts +35 -3
  40. package/types/index.d.ts +51 -51
  41. package/types/miniapp-publish/index.d.ts +28 -60
  42. package/types/protocol.d.ts +10 -10
  43. package/types/vite/index.d.ts +8 -1
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <meta name="theme-color" content="#f4f5f7" />
7
7
  <title>小程序工坊调试台</title>
8
- <script type="module" crossorigin src="/assets/index-D_mC4Hvt.js"></script>
9
- <link rel="modulepreload" crossorigin href="/assets/desktop-app-launch-B0yrI7xe.js">
8
+ <script type="module" crossorigin src="/assets/index-DrbZkH9C.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/desktop-app-launch-D9lPBkUV.js">
10
10
  <link rel="stylesheet" crossorigin href="/assets/index-7Cq8iNcD.css">
11
11
  </head>
12
12
  <body>
package/dist/index.cjs.js CHANGED
@@ -544,6 +544,7 @@ const COMPANION_SHOW_NOTIFICATION_METHOD = 'companion.showNotification';
544
544
  * @see [MINI_PROGRAM_BRIDGE_NONCE_PARAM](/reference/symbols/protocol/constants/MINI_PROGRAM_BRIDGE_NONCE_PARAM) iframe URL 中的 nonce 参数名。
545
545
  * @see [MINI_PROGRAM_PROTOCOL_CAPABILITIES](/reference/symbols/protocol/constants/MINI_PROGRAM_PROTOCOL_CAPABILITIES) 公开 method 与权限 requirement 目录。
546
546
  * @see [parseMiniProgramRuntimePermissions](/reference/symbols/protocol/functions/parseMiniProgramRuntimePermissions) Runtime 权限快照解析器。
547
+ * @since 0.3.1
547
548
  */
548
549
  function isMiniProgramBridgeMessage(value) {
549
550
  if (!isRecord$3(value))
@@ -628,6 +629,7 @@ function isMiniProgramBridgeMessage(value) {
628
629
  * @see [PathRoot](/reference/symbols/root/interfaces/PathRoot) 提供 `file()` / `directory()` 的 SDK 路径入口。
629
630
  * @see [FileSystem](/reference/symbols/root/interfaces/FileSystem) `files.sandbox` 逻辑路径能力。
630
631
  * @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 已授权目录下的相对路径能力。
632
+ * @since 0.8.0
631
633
  */
632
634
  function isMiniProgramRelativePath(value) {
633
635
  if (typeof value !== 'string' || !value || value.startsWith('/') || value.endsWith('/')) {
@@ -694,6 +696,7 @@ function isMiniProgramRelativePath(value) {
694
696
  * @see [PathRoot](/reference/symbols/root/interfaces/PathRoot) SDK 公开的逻辑路径 root 能力。
695
697
  * @see [FilesModule](/reference/symbols/root/interfaces/FilesModule) 提供 `files.sandbox` 与目录 picker 的入口。
696
698
  * @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 可作为 derived path root 的目录代理。
699
+ * @since 0.8.0
697
700
  */
698
701
  function isMiniProgramPathRootRef(value) {
699
702
  if (!isRecord$3(value))
@@ -760,6 +763,7 @@ function isMiniProgramPathRootRef(value) {
760
763
  * @see [isMiniProgramFileDescriptor](/reference/symbols/protocol/functions/isMiniProgramFileDescriptor) 包含名称和 mode 的文件 descriptor guard。
761
764
  * @see [isMiniProgramDirectoryRef](/reference/symbols/protocol/functions/isMiniProgramDirectoryRef) 可用 `'.'` 指向 root 自身的目录引用 guard。
762
765
  * @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 使用文件引用的公开 I/O 代理。
766
+ * @since 0.8.0
763
767
  */
764
768
  function isMiniProgramFileRef(value) {
765
769
  if (!isRecord$3(value) || value.kind !== 'file')
@@ -827,6 +831,7 @@ function isMiniProgramFileRef(value) {
827
831
  * @see [isMiniProgramDirectoryDescriptor](/reference/symbols/protocol/functions/isMiniProgramDirectoryDescriptor) 包含名称和 mode 的目录 descriptor guard。
828
832
  * @see [isMiniProgramFileRef](/reference/symbols/protocol/functions/isMiniProgramFileRef) 不接受 root 自身 `'.'` 的文件引用 guard。
829
833
  * @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 使用目录引用的公开路径操作代理。
834
+ * @since 0.8.0
830
835
  */
831
836
  function isMiniProgramDirectoryRef(value) {
832
837
  if (!isRecord$3(value) || value.kind !== 'directory')
@@ -887,6 +892,7 @@ function isMiniProgramDirectoryRef(value) {
887
892
  * @see [CompanionStdio](/reference/symbols/root/interfaces/CompanionStdio) Companion 原始字节 stdin/stdout/stderr。
888
893
  * @see [isMiniProgramFileDescriptor](/reference/symbols/protocol/functions/isMiniProgramFileDescriptor) 文件 descriptor guard。
889
894
  * @see [isMiniProgramDirectoryDescriptor](/reference/symbols/protocol/functions/isMiniProgramDirectoryDescriptor) 目录 descriptor guard。
895
+ * @since 0.8.0
890
896
  */
891
897
  function isMiniProgramByteArray(value) {
892
898
  return value instanceof Uint8Array && value.buffer instanceof ArrayBuffer;
@@ -946,6 +952,7 @@ function isMiniProgramByteArray(value) {
946
952
  * @see [FileStatResult](/reference/symbols/protocol/types/FileStatResult) `file.stat` 的 wire 返回类型。
947
953
  * @see [FileStat](/reference/symbols/root/interfaces/FileStat) SDK 向业务返回的元数据快照。
948
954
  * @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 提供 `stat()` 的当前 session 文件代理。
955
+ * @since 0.8.0
949
956
  */
950
957
  function isMiniProgramFileStat(value) {
951
958
  return (isRecord$3(value) &&
@@ -1006,6 +1013,7 @@ function isMiniProgramFileStat(value) {
1006
1013
  * @see [DownloadProgress](/reference/symbols/root/interfaces/DownloadProgress) `onProgress` 接收的公开 SDK 进度类型。
1007
1014
  * @see [network.download](/reference/sdk/network/download) 产生并消费该进度的下载能力。
1008
1015
  * @see [isMiniProgramBridgeMessage](/reference/symbols/protocol/functions/isMiniProgramBridgeMessage) operation progress envelope 的最低校验。
1016
+ * @since 0.8.0
1009
1017
  */
1010
1018
  function isMiniProgramDownloadProgressPayload(value) {
1011
1019
  if (!isRecord$3(value) ||
@@ -7291,7 +7299,7 @@ function createMessageId() {
7291
7299
  /** 构建时替换为当前发布包的实际版本。 */
7292
7300
  const HB_SDK_VERSION = typeof undefined === 'string'
7293
7301
  ? undefined
7294
- : '0.9.2-alpha.7';
7302
+ : '0.9.2-alpha.9';
7295
7303
 
7296
7304
  const RUNTIME_MODES = new Set(['production', 'preview', 'development', 'unknown']);
7297
7305
  const OPERATING_SYSTEM_NAMES = new Set(['android', 'ios', 'ohos', 'windows', 'macos', 'linux', 'unknown']);
@@ -11595,7 +11603,7 @@ function getDefaultSDK() {
11595
11603
  * @see [on('ready')](/reference/sdk/lifecycle/on) 不可重放的生命周期边沿事件。
11596
11604
  * @see [environment.getInfoSync()](/reference/sdk/environment/getInfoSync) 在 `ready` 后同步读取环境快照。
11597
11605
  *
11598
- * @since 0.7.0-alpha.9
11606
+ * @since 0.7.0
11599
11607
  * @hbPlatform android
11600
11608
  * @hbPlatform ios
11601
11609
  * @hbPlatform ohos
@@ -11690,7 +11698,7 @@ function getHandshakeState() {
11690
11698
  * @see [environment.getInfoSync()](/reference/sdk/environment/getInfoSync) 在 `ready` handler 中同步读取环境。
11691
11699
  * @see [事件与生命周期](/guide/lifecycle) 握手与普通生命周期事件的使用建议。
11692
11700
  *
11693
- * @since 0.7.0-alpha.9
11701
+ * @since 0.7.0
11694
11702
  * @hbPlatform android
11695
11703
  * @hbPlatform ios
11696
11704
  * @hbPlatform ohos
@@ -11785,7 +11793,7 @@ function onHandshakeStateChange(handler) {
11785
11793
  * @see [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 订阅会立即回放的握手状态。
11786
11794
  * @see [事件与生命周期](/guide/lifecycle) 生命周期时机与清理建议。
11787
11795
  *
11788
- * @since 0.2.0-alpha.0
11796
+ * @since 0.3.1
11789
11797
  * @hbPlatform android
11790
11798
  * @hbPlatform ios
11791
11799
  * @hbPlatform ohos
@@ -11854,7 +11862,7 @@ function on(eventName, handler) {
11854
11862
  * @see [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 订阅会立即回放的握手状态。
11855
11863
  * @see [事件与生命周期](/guide/lifecycle) 生命周期事件列表与清理建议。
11856
11864
  *
11857
- * @since 0.2.0-alpha.0
11865
+ * @since 0.3.1
11858
11866
  * @hbPlatform android
11859
11867
  * @hbPlatform ios
11860
11868
  * @hbPlatform ohos
package/dist/index.esm.js CHANGED
@@ -540,6 +540,7 @@ const COMPANION_SHOW_NOTIFICATION_METHOD = 'companion.showNotification';
540
540
  * @see [MINI_PROGRAM_BRIDGE_NONCE_PARAM](/reference/symbols/protocol/constants/MINI_PROGRAM_BRIDGE_NONCE_PARAM) iframe URL 中的 nonce 参数名。
541
541
  * @see [MINI_PROGRAM_PROTOCOL_CAPABILITIES](/reference/symbols/protocol/constants/MINI_PROGRAM_PROTOCOL_CAPABILITIES) 公开 method 与权限 requirement 目录。
542
542
  * @see [parseMiniProgramRuntimePermissions](/reference/symbols/protocol/functions/parseMiniProgramRuntimePermissions) Runtime 权限快照解析器。
543
+ * @since 0.3.1
543
544
  */
544
545
  function isMiniProgramBridgeMessage(value) {
545
546
  if (!isRecord$3(value))
@@ -624,6 +625,7 @@ function isMiniProgramBridgeMessage(value) {
624
625
  * @see [PathRoot](/reference/symbols/root/interfaces/PathRoot) 提供 `file()` / `directory()` 的 SDK 路径入口。
625
626
  * @see [FileSystem](/reference/symbols/root/interfaces/FileSystem) `files.sandbox` 逻辑路径能力。
626
627
  * @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 已授权目录下的相对路径能力。
628
+ * @since 0.8.0
627
629
  */
628
630
  function isMiniProgramRelativePath(value) {
629
631
  if (typeof value !== 'string' || !value || value.startsWith('/') || value.endsWith('/')) {
@@ -690,6 +692,7 @@ function isMiniProgramRelativePath(value) {
690
692
  * @see [PathRoot](/reference/symbols/root/interfaces/PathRoot) SDK 公开的逻辑路径 root 能力。
691
693
  * @see [FilesModule](/reference/symbols/root/interfaces/FilesModule) 提供 `files.sandbox` 与目录 picker 的入口。
692
694
  * @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 可作为 derived path root 的目录代理。
695
+ * @since 0.8.0
693
696
  */
694
697
  function isMiniProgramPathRootRef(value) {
695
698
  if (!isRecord$3(value))
@@ -756,6 +759,7 @@ function isMiniProgramPathRootRef(value) {
756
759
  * @see [isMiniProgramFileDescriptor](/reference/symbols/protocol/functions/isMiniProgramFileDescriptor) 包含名称和 mode 的文件 descriptor guard。
757
760
  * @see [isMiniProgramDirectoryRef](/reference/symbols/protocol/functions/isMiniProgramDirectoryRef) 可用 `'.'` 指向 root 自身的目录引用 guard。
758
761
  * @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 使用文件引用的公开 I/O 代理。
762
+ * @since 0.8.0
759
763
  */
760
764
  function isMiniProgramFileRef(value) {
761
765
  if (!isRecord$3(value) || value.kind !== 'file')
@@ -823,6 +827,7 @@ function isMiniProgramFileRef(value) {
823
827
  * @see [isMiniProgramDirectoryDescriptor](/reference/symbols/protocol/functions/isMiniProgramDirectoryDescriptor) 包含名称和 mode 的目录 descriptor guard。
824
828
  * @see [isMiniProgramFileRef](/reference/symbols/protocol/functions/isMiniProgramFileRef) 不接受 root 自身 `'.'` 的文件引用 guard。
825
829
  * @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 使用目录引用的公开路径操作代理。
830
+ * @since 0.8.0
826
831
  */
827
832
  function isMiniProgramDirectoryRef(value) {
828
833
  if (!isRecord$3(value) || value.kind !== 'directory')
@@ -883,6 +888,7 @@ function isMiniProgramDirectoryRef(value) {
883
888
  * @see [CompanionStdio](/reference/symbols/root/interfaces/CompanionStdio) Companion 原始字节 stdin/stdout/stderr。
884
889
  * @see [isMiniProgramFileDescriptor](/reference/symbols/protocol/functions/isMiniProgramFileDescriptor) 文件 descriptor guard。
885
890
  * @see [isMiniProgramDirectoryDescriptor](/reference/symbols/protocol/functions/isMiniProgramDirectoryDescriptor) 目录 descriptor guard。
891
+ * @since 0.8.0
886
892
  */
887
893
  function isMiniProgramByteArray(value) {
888
894
  return value instanceof Uint8Array && value.buffer instanceof ArrayBuffer;
@@ -942,6 +948,7 @@ function isMiniProgramByteArray(value) {
942
948
  * @see [FileStatResult](/reference/symbols/protocol/types/FileStatResult) `file.stat` 的 wire 返回类型。
943
949
  * @see [FileStat](/reference/symbols/root/interfaces/FileStat) SDK 向业务返回的元数据快照。
944
950
  * @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 提供 `stat()` 的当前 session 文件代理。
951
+ * @since 0.8.0
945
952
  */
946
953
  function isMiniProgramFileStat(value) {
947
954
  return (isRecord$3(value) &&
@@ -1002,6 +1009,7 @@ function isMiniProgramFileStat(value) {
1002
1009
  * @see [DownloadProgress](/reference/symbols/root/interfaces/DownloadProgress) `onProgress` 接收的公开 SDK 进度类型。
1003
1010
  * @see [network.download](/reference/sdk/network/download) 产生并消费该进度的下载能力。
1004
1011
  * @see [isMiniProgramBridgeMessage](/reference/symbols/protocol/functions/isMiniProgramBridgeMessage) operation progress envelope 的最低校验。
1012
+ * @since 0.8.0
1005
1013
  */
1006
1014
  function isMiniProgramDownloadProgressPayload(value) {
1007
1015
  if (!isRecord$3(value) ||
@@ -7287,7 +7295,7 @@ function createMessageId() {
7287
7295
  /** 构建时替换为当前发布包的实际版本。 */
7288
7296
  const HB_SDK_VERSION = typeof undefined === 'string'
7289
7297
  ? undefined
7290
- : '0.9.2-alpha.7';
7298
+ : '0.9.2-alpha.9';
7291
7299
 
7292
7300
  const RUNTIME_MODES = new Set(['production', 'preview', 'development', 'unknown']);
7293
7301
  const OPERATING_SYSTEM_NAMES = new Set(['android', 'ios', 'ohos', 'windows', 'macos', 'linux', 'unknown']);
@@ -11591,7 +11599,7 @@ function getDefaultSDK() {
11591
11599
  * @see [on('ready')](/reference/sdk/lifecycle/on) 不可重放的生命周期边沿事件。
11592
11600
  * @see [environment.getInfoSync()](/reference/sdk/environment/getInfoSync) 在 `ready` 后同步读取环境快照。
11593
11601
  *
11594
- * @since 0.7.0-alpha.9
11602
+ * @since 0.7.0
11595
11603
  * @hbPlatform android
11596
11604
  * @hbPlatform ios
11597
11605
  * @hbPlatform ohos
@@ -11686,7 +11694,7 @@ function getHandshakeState() {
11686
11694
  * @see [environment.getInfoSync()](/reference/sdk/environment/getInfoSync) 在 `ready` handler 中同步读取环境。
11687
11695
  * @see [事件与生命周期](/guide/lifecycle) 握手与普通生命周期事件的使用建议。
11688
11696
  *
11689
- * @since 0.7.0-alpha.9
11697
+ * @since 0.7.0
11690
11698
  * @hbPlatform android
11691
11699
  * @hbPlatform ios
11692
11700
  * @hbPlatform ohos
@@ -11781,7 +11789,7 @@ function onHandshakeStateChange(handler) {
11781
11789
  * @see [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 订阅会立即回放的握手状态。
11782
11790
  * @see [事件与生命周期](/guide/lifecycle) 生命周期时机与清理建议。
11783
11791
  *
11784
- * @since 0.2.0-alpha.0
11792
+ * @since 0.3.1
11785
11793
  * @hbPlatform android
11786
11794
  * @hbPlatform ios
11787
11795
  * @hbPlatform ohos
@@ -11850,7 +11858,7 @@ function on(eventName, handler) {
11850
11858
  * @see [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 订阅会立即回放的握手状态。
11851
11859
  * @see [事件与生命周期](/guide/lifecycle) 生命周期事件列表与清理建议。
11852
11860
  *
11853
- * @since 0.2.0-alpha.0
11861
+ * @since 0.3.1
11854
11862
  * @hbPlatform android
11855
11863
  * @hbPlatform ios
11856
11864
  * @hbPlatform ohos
@@ -6595,6 +6595,7 @@ function validateWorkspaceCardReceiptV2(raw, controller) {
6595
6595
  * @param sourceLabel - 错误消息中的字段来源,默认 `package.json#heybox.category`。
6596
6596
  * @returns 合法类别原值;输入 `undefined` 时返回 `undefined`,由发布流程另行检查是否必填。
6597
6597
  * @throws `Error` 输入为其他值(包括 null 或空字符串)时抛出带字段来源的错误。
6598
+ * @since 0.8.3
6598
6599
  */
6599
6600
  function parseMiniappCategory(value, sourceLabel = 'package.json#heybox.category') {
6600
6601
  if (value === undefined)
@@ -9398,6 +9399,7 @@ const BASIC_INFO_MAX_PIXELS = 40_000_000;
9398
9399
  * @returns NFKC 规范化、去除首尾 Unicode White_Space 后的名称;不折叠规范化后的内部空白。
9399
9400
  * @throws `Error` 输入不是字符串,或规范化后不是 1–40 个 Unicode code point、不含文字或数字,或包含控制字符、
9400
9401
  * 格式字符、行/段分隔符以及 HTML 特殊字符 `<`、`>`、`&`、双引号或单引号时抛出。
9402
+ * @since 0.8.2
9401
9403
  */
9402
9404
  function normalizeBasicInfoName(raw) {
9403
9405
  if (typeof raw !== 'string')
@@ -9429,6 +9431,7 @@ function validateBasicInfoPath(raw) {
9429
9431
  * @remarks
9430
9432
  * 图片路径必须使用 `/` 分隔的非空相对路径,扩展名为 JPEG、PNG、GIF 或 WebP;拒绝 URL、点段、
9431
9433
  * 控制字符和构建/缓存等保留目录。此函数只校验声明,不读取文件,也不验证图片字节、尺寸或存在性。
9434
+ * @since 0.8.2
9432
9435
  */
9433
9436
  function parseMiniappBasicInfo(value, sdkVersion = '0.8.2') {
9434
9437
  sdkVersion = sdkVersion.trim();
@@ -9501,6 +9504,7 @@ const MINIAPP_BIND_APP_IDS_MAX_COUNT = 20;
9501
9504
  * @see [miniappManifest](/reference/symbols/vite/functions/miniappManifest)
9502
9505
  * @see [navigation.openAppPage](/reference/sdk/navigation/openAppPage)
9503
9506
  * @see [CLI 与远端发布](/guide/cli#生产构建)
9507
+ * @since 0.8.1
9504
9508
  */
9505
9509
  function parseMiniappBindAppIds(value, options = {}) {
9506
9510
  const sourceLabel = options.sourceLabel ?? 'package.json#heybox.bindAppIds';
@@ -9689,6 +9693,7 @@ const MINIAPP_WINDOW_ALLOWED_FIELDS = [...MINIAPP_WINDOW_NUMBER_FIELDS, 'resizab
9689
9693
  *
9690
9694
  * @see {@link resolveMiniappManifestPlatforms}
9691
9695
  * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
9696
+ * @since 0.3.1
9692
9697
  */
9693
9698
  function isValidMiniappManifestVersion(version) {
9694
9699
  return getMiniappManifestVersionError(version) === undefined;
@@ -9709,6 +9714,7 @@ function validateMiniappManifestVersion(version, sourceLabel = 'manifest.version
9709
9714
  * @remarks
9710
9715
  * 不修改输入对象,不执行文件 I/O;不会验证图片/归档是否存在、内容摘要是否匹配,也不查询远端发布资格。
9711
9716
  * 成功仅表示 Manifest 字段通过校验,不能替代文件检查与服务端发布预检。
9717
+ * @since 0.8.2
9712
9718
  */
9713
9719
  function validateMiniappManifestForDeploy(manifest) {
9714
9720
  const version = validateMiniappManifestVersion(manifest.version, 'manifest.version');
@@ -9882,6 +9888,7 @@ const NO_MINIAPP_PLATFORMS = Object.freeze([]);
9882
9888
  * @see {@link MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES}
9883
9889
  * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/miniapp-publish/functions/isValidVersion | isValidVersion}
9884
9890
  * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
9891
+ * @since 0.8.1
9885
9892
  */
9886
9893
  function resolveMiniappManifestPlatforms(sdkVersion, manifest) {
9887
9894
  if (!isRecord$1(manifest)) {
@@ -10079,6 +10086,7 @@ const BASIC_INFO_PLACEHOLDER_SHA256 = 'd14e54b30f5e6d1bcbf51267bc82b06a0af7c333f
10079
10086
  * }
10080
10087
  * }
10081
10088
  * ```
10089
+ * @since 0.8.2
10082
10090
  */
10083
10091
  async function previewMiniappBasicInfo(manifest, files) {
10084
10092
  const profile = parseMiniappBasicInfo(manifest, String(manifest.sdkVersion ?? ''));
@@ -18381,6 +18389,7 @@ const RUNTIME_GATE_BOOTSTRAP_MARKER = 'data-heybox-runtime-gate-bootstrap';
18381
18389
  * @param html - 待检查的完整 HTML 文本,使用 HTML parser 解析。
18382
18390
  * @returns Gate、隐藏样式及 bootstrap 标记均出现时返回 `true`,否则返回 `false`。
18383
18391
  * @remarks 只识别标记,不验证脚本内容、标记所在节点或宿主握手;不能据此判断页面安全或实际可运行。
18392
+ * @since 0.8.2
18384
18393
  */
18385
18394
  function hasMiniappRuntimeGate(html) {
18386
18395
  const document = parse(html);
@@ -18410,6 +18419,27 @@ function walk(node, visit) {
18410
18419
  walk(node.content, visit);
18411
18420
  }
18412
18421
 
18422
+ /** 根据当前项目声明或实际版本 Manifest 检查资料完整性,不联网、不修改输入。 */
18423
+ function getMiniappMetadataWarnings(metadata) {
18424
+ const warnings = [];
18425
+ if (metadata.desc === undefined || (typeof metadata.desc === 'string' && !metadata.desc.trim())) {
18426
+ warnings.push({
18427
+ code: 'MINIAPP_DESC_MISSING',
18428
+ field: 'desc',
18429
+ message: '尚未填写小程序简介。建议在 package.json#heybox.desc 中说明主要功能和适用场景,修改后重新构建。',
18430
+ });
18431
+ }
18432
+ if (metadata.category === 'tool' &&
18433
+ (metadata.bindAppIds === undefined || (Array.isArray(metadata.bindAppIds) && metadata.bindAppIds.length === 0))) {
18434
+ warnings.push({
18435
+ code: 'MINIAPP_TOOL_GAME_BINDING_MISSING',
18436
+ field: 'bindAppIds',
18437
+ message: '当前小程序为工具类,尚未关联游戏。如服务于特定 PC 游戏,可通过 hb-sdk remote games search "游戏名" 查询 appid 并填写 package.json#heybox.bindAppIds,修改后重新构建;通用工具可保持为空。',
18438
+ });
18439
+ }
18440
+ return warnings;
18441
+ }
18442
+
18413
18443
  /** CDN 上传接口使用的小程序产物业务 scope。 */
18414
18444
  const MINIAPP_UPLOAD_SCOPE = 'activity';
18415
18445
  /** 完整 CDN 上传 key 的默认长度上限;旧固定版本流程按字符计数,上传会话流程按 UTF-8 bytes 计数。 */
@@ -18492,6 +18522,7 @@ const textEncoder = new TextEncoder();
18492
18522
  * @see {@link relativePathContainsNodeModulesSegment}
18493
18523
  * @see {@link shouldUploadDistFile}
18494
18524
  * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/protocol/functions/isMiniProgramRelativePath | isMiniProgramRelativePath}
18525
+ * @since 0.3.1
18495
18526
  */
18496
18527
  function normalizeRelativePath(relativePath) {
18497
18528
  return String(relativePath || '')
@@ -18522,6 +18553,7 @@ function normalizeRelativePath(relativePath) {
18522
18553
  * @see [normalizeRelativePath](/reference/symbols/miniapp-publish/functions/normalizeRelativePath)
18523
18554
  * @see [shouldUploadDistFile](/reference/symbols/miniapp-publish/functions/shouldUploadDistFile)
18524
18555
  * @see [miniapp-publish](/reference/miniapp-publish/)
18556
+ * @since 0.3.1
18525
18557
  */
18526
18558
  function relativePathContainsNodeModulesSegment(relativePath) {
18527
18559
  return normalizeRelativePath(relativePath)
@@ -18549,85 +18581,6 @@ function getMiniProgramUploadAlias(miniProgramId) {
18549
18581
  }
18550
18582
  return hash.toString(36);
18551
18583
  }
18552
- /**
18553
- * 生成旧版固定版本 CDN 上传 key。
18554
- *
18555
- * @param input - 小程序 ID、版本和构建产物相对路径。
18556
- * @returns `/u/{alias}/{version}/{relativePath}` 形式的上传 key。
18557
- * @remarks 此函数不会校验版本、路径安全性或 key 长度;批量上传前应调用 {@link validateUploadPaths}。
18558
- * @example
18559
- * ```ts
18560
- * getMiniappUploadKey({
18561
- * miniProgramId: 'mp_example',
18562
- * version: '1.2.3',
18563
- * relativePath: 'assets\\app.js',
18564
- * }); // /u/<alias>/1.2.3/assets/app.js
18565
- * ```
18566
- */
18567
- function getMiniappUploadKey(input) {
18568
- const alias = getMiniProgramUploadAlias(input.miniProgramId);
18569
- const normalized = normalizeRelativePath(input.relativePath);
18570
- return `/u/${alias}/${input.version}/${normalized}`;
18571
- }
18572
- /**
18573
- * 校验旧版固定版本上传路径的格式、唯一性和完整 key 长度。
18574
- *
18575
- * @param items - 待上传条目;按数组顺序检查。
18576
- * @param options - 小程序 ID、版本和可选的 key 长度上限。
18577
- * @returns 第一个校验错误的中文提示;全部合法时返回 `undefined`。
18578
- * @remarks
18579
- * 路径会先统一分隔符,因此 `assets\\app.js` 与 `assets/app.js` 视为重复。
18580
- * 长度按 JavaScript 字符串 `length` 计算;上传会话的 UTF-8 字节限制应使用 {@link validateMiniappUploadPathLengths}。
18581
- * @example
18582
- * ```ts
18583
- * const error = validateUploadPaths(
18584
- * [{ relativePath: 'index.html' }, { relativePath: 'assets/app.js' }],
18585
- * { miniProgramId: 'mp_example', version: '1.2.3' },
18586
- * );
18587
- * if (error) throw new Error(error);
18588
- * ```
18589
- */
18590
- function validateUploadPaths(items, options) {
18591
- const limit = options.maxLength ?? ACTIVITY_UPLOAD_KEY_MAX_LENGTH;
18592
- const uploadKeys = new Set();
18593
- for (const item of items) {
18594
- const relativePath = String(item.relativePath ?? '');
18595
- const normalizedRelativePath = normalizeRelativePath(relativePath);
18596
- const invalidReason = getInvalidUploadPathReason(normalizedRelativePath);
18597
- if (invalidReason) {
18598
- return `构建产物文件路径不合法(${invalidReason}):${JSON.stringify(relativePath)}`;
18599
- }
18600
- const key = getMiniappUploadKey({
18601
- miniProgramId: options.miniProgramId,
18602
- version: options.version,
18603
- relativePath: normalizedRelativePath,
18604
- });
18605
- if (uploadKeys.has(key)) {
18606
- return `构建产物文件路径重复,无法上传到同一位置:${JSON.stringify(relativePath)}`;
18607
- }
18608
- uploadKeys.add(key);
18609
- if (key.length > limit) {
18610
- return `文件路径过长,请缩短构建产物文件名或目录层级:${relativePath}`;
18611
- }
18612
- }
18613
- return undefined;
18614
- }
18615
- function getInvalidUploadPathReason(relativePath) {
18616
- const segments = relativePath.replace(/\\/g, '/').split('/');
18617
- if (segments.some((segment) => !segment)) {
18618
- return '包含空路径段';
18619
- }
18620
- if (segments.some((segment) => segment === '.')) {
18621
- return '包含当前目录';
18622
- }
18623
- if (segments.some((segment) => segment === '..')) {
18624
- return '包含上级目录';
18625
- }
18626
- if (/[\u0000-\u001F\u007F]/.test(relativePath)) {
18627
- return '包含控制字符';
18628
- }
18629
- return undefined;
18630
- }
18631
18584
  /**
18632
18585
  * 校验一组构建产物的总大小是否超过给定上限。
18633
18586
  *
@@ -18684,6 +18637,7 @@ function getInvalidUploadPathReason(relativePath) {
18684
18637
  * @see {@link ValidateUploadTotalSizeOptions}
18685
18638
  * @see [shouldUploadDistFile](/reference/symbols/miniapp-publish/functions/shouldUploadDistFile)
18686
18639
  * @see [miniapp-publish](/reference/miniapp-publish/)
18640
+ * @since 0.4.7
18687
18641
  */
18688
18642
  function validateUploadTotalSize(items, options = {}) {
18689
18643
  const limit = options.limitBytes ?? MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES;
@@ -18776,6 +18730,7 @@ function validateMiniappUploadSizeBudgets(items, options = {}) {
18776
18730
  * @see [relativePathContainsNodeModulesSegment](/reference/symbols/miniapp-publish/functions/relativePathContainsNodeModulesSegment)
18777
18731
  * @see [validateUploadTotalSize](/reference/symbols/miniapp-publish/functions/validateUploadTotalSize)
18778
18732
  * @see [miniapp-publish](/reference/miniapp-publish/)
18733
+ * @since 0.3.1
18779
18734
  */
18780
18735
  function shouldUploadDistFile(relativePath) {
18781
18736
  const normalized = normalizeRelativePath(relativePath);
@@ -19198,7 +19153,7 @@ exports.WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH = WITHDRAW_USER_MINIPROGRAM_V
19198
19153
  exports.createMiniappArtifactFileHeader = createMiniappArtifactFileHeader;
19199
19154
  exports.createMiniappArtifactSignatureHeader = createMiniappArtifactSignatureHeader;
19200
19155
  exports.getMiniProgramUploadAlias = getMiniProgramUploadAlias;
19201
- exports.getMiniappUploadKey = getMiniappUploadKey;
19156
+ exports.getMiniappMetadataWarnings = getMiniappMetadataWarnings;
19202
19157
  exports.hasMiniappRuntimeGate = hasMiniappRuntimeGate;
19203
19158
  exports.isValidVersion = isValidMiniappManifestVersion;
19204
19159
  exports.normalizeBasicInfoName = normalizeBasicInfoName;
@@ -19217,5 +19172,4 @@ exports.validateMiniappManifestForDeploy = validateMiniappManifestForDeploy;
19217
19172
  exports.validateMiniappUploadPathLengths = validateMiniappUploadPathLengths;
19218
19173
  exports.validateMiniappUploadSizeBudgets = validateMiniappUploadSizeBudgets;
19219
19174
  exports.validateMiniappWorkspaceCardFileReceipts = validateMiniappWorkspaceCardFileReceipts;
19220
- exports.validateUploadPaths = validateUploadPaths;
19221
19175
  exports.validateUploadTotalSize = validateUploadTotalSize;