@heybox/hb-sdk 0.8.1-alpha.15 → 0.8.1-alpha.16

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 (34) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/cli-chunks/{build-6nkCiXV0.cjs → build-D3JxmtmD.cjs} +4 -4
  3. package/dist/cli-chunks/{context-DyeSJSqE.cjs → context-CcJDF3v_.cjs} +2 -2
  4. package/dist/cli-chunks/{create-wXBzkgmP.cjs → create-Cww0mYrn.cjs} +1 -1
  5. package/dist/cli-chunks/{dev-Caq_oO7n.cjs → dev-Dd2_LjFP.cjs} +9 -9
  6. package/dist/cli-chunks/{doctor-n4vISsD-.cjs → doctor-DTDwA9UZ.cjs} +1 -1
  7. package/dist/cli-chunks/{index-BTUkiKjC.cjs → index-B5jxW7GS.cjs} +15 -15
  8. package/dist/cli-chunks/{index-hyB5_A_G.cjs → index-BKbdNtX4.cjs} +2 -2
  9. package/dist/cli-chunks/{index.esm-DU-rsJ3-.cjs → index.esm-DxT8YC2x.cjs} +7 -7
  10. package/dist/cli-chunks/{login-CsXZXtCS.cjs → login-BZEWhweM.cjs} +2 -2
  11. package/dist/cli-chunks/{project-vite-87sg4Mnk.cjs → project-vite-DpQOovxh.cjs} +1 -1
  12. package/dist/cli-chunks/{remote-Cfr3wcGq.cjs → remote-zyWYZ-W8.cjs} +6 -6
  13. package/dist/cli-chunks/{runtime-permission-env-B3wQZF2c.cjs → runtime-permission-env-C7QvBZp0.cjs} +1 -1
  14. package/dist/cli-chunks/{session-YWsulrKF.cjs → session-DN0ZLQC2.cjs} +1 -1
  15. package/dist/cli-chunks/{skill-CS2JoOL8.cjs → skill-lsh9bXs0.cjs} +2 -2
  16. package/dist/cli-chunks/{version-DXjXtCXW.cjs → version-CoWxDzB4.cjs} +1 -1
  17. package/dist/cli.cjs +1 -1
  18. package/dist/devtools/browser-dev-host/assets/browser-dev-host-BgW__pJ2.js +101 -0
  19. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-BUVHeuGC.js → desktop-app-launch-CvKi6AqK.js} +1 -1
  20. package/dist/devtools/browser-dev-host/assets/{index-C3EtSrqt.js → index-BqskekK_.js} +3 -3
  21. package/dist/devtools/browser-dev-host/index.html +2 -2
  22. package/dist/index.cjs.js +1 -1
  23. package/dist/index.esm.js +1 -1
  24. package/dist/miniapp-publish.cjs.js +88 -0
  25. package/dist/miniapp-publish.esm.js +86 -1
  26. package/dist/vite.cjs.js +1 -1
  27. package/dist/vite.esm.js +1 -1
  28. package/package.json +4 -4
  29. package/skill/references/api-protocol.md +2 -2
  30. package/skill/references/api-root.md +1 -1
  31. package/skill/skill.json +5 -5
  32. package/types/miniapp-manifest/schema.d.ts +46 -0
  33. package/types/miniapp-publish/index.d.ts +1 -0
  34. package/dist/devtools/browser-dev-host/assets/browser-dev-host-GNgPrL3B.js +0 -101
@@ -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-C3EtSrqt.js"></script>
9
- <link rel="modulepreload" crossorigin href="/assets/desktop-app-launch-BUVHeuGC.js">
8
+ <script type="module" crossorigin src="/assets/index-BqskekK_.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/desktop-app-launch-CvKi6AqK.js">
10
10
  <link rel="stylesheet" crossorigin href="/assets/index-DXd5IZBz.css">
11
11
  </head>
12
12
  <body>
package/dist/index.cjs.js CHANGED
@@ -835,7 +835,7 @@ function createMessageId() {
835
835
  /** 构建时替换为当前发布包的实际版本。 */
836
836
  const HB_SDK_VERSION = typeof undefined === 'string'
837
837
  ? undefined
838
- : '0.8.1-alpha.15';
838
+ : '0.8.1-alpha.16';
839
839
 
840
840
  const RUNTIME_MODES = new Set(['production', 'preview', 'development', 'unknown']);
841
841
  const OPERATING_SYSTEM_NAMES = new Set(['android', 'ios', 'ohos', 'windows', 'macos', 'linux', 'unknown']);
package/dist/index.esm.js CHANGED
@@ -831,7 +831,7 @@ function createMessageId() {
831
831
  /** 构建时替换为当前发布包的实际版本。 */
832
832
  const HB_SDK_VERSION = typeof undefined === 'string'
833
833
  ? undefined
834
- : '0.8.1-alpha.15';
834
+ : '0.8.1-alpha.16';
835
835
 
836
836
  const RUNTIME_MODES = new Set(['production', 'preview', 'development', 'unknown']);
837
837
  const OPERATING_SYSTEM_NAMES = new Set(['android', 'ios', 'ohos', 'windows', 'macos', 'linux', 'unknown']);
@@ -2814,9 +2814,94 @@ function parseMiniappBindAppIds(value, options = {}) {
2814
2814
  return Object.freeze(appIds);
2815
2815
  }
2816
2816
 
2817
+ const MINIAPP_PLATFORM_VALUES = ['android', 'ios', 'ohos', 'windows', 'macos', 'linux'];
2818
+ /** 平台声明硬切点:产物 hb-sdk 版本达到该值时,必须显式声明非空 `platforms`。 */
2819
+ const MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION = '0.9.0';
2820
+ /**
2821
+ * 历史移动端兼容平台集合。
2822
+ *
2823
+ * @remarks
2824
+ * 仅在 `sdkVersion` 缺失或 SemVer precedence 低于 `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION`,
2825
+ * 且 Manifest 完全没有 `platforms` 字段时生效,不是任何非法声明的兜底。
2826
+ */
2827
+ const MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES = ['android', 'ios', 'ohos'];
2817
2828
  function isValidMiniappManifestVersion(version) {
2818
2829
  return getMiniappManifestVersionError(version) === undefined;
2819
2830
  }
2831
+ function validateMiniappPlatforms(platforms, sourceLabel = 'platforms') {
2832
+ if (!Array.isArray(platforms) || platforms.length === 0) {
2833
+ throw new Error(`${sourceLabel} 必须是非空平台数组`);
2834
+ }
2835
+ const allowedPlatforms = new Set(MINIAPP_PLATFORM_VALUES);
2836
+ const seen = new Set();
2837
+ for (const platform of platforms) {
2838
+ if (typeof platform !== 'string' || !allowedPlatforms.has(platform)) {
2839
+ throw new Error(`${sourceLabel} 包含不支持的平台:${String(platform)}`);
2840
+ }
2841
+ if (seen.has(platform)) {
2842
+ throw new Error(`${sourceLabel} 包含重复平台:${platform}`);
2843
+ }
2844
+ seen.add(platform);
2845
+ }
2846
+ return Object.freeze(MINIAPP_PLATFORM_VALUES.filter((platform) => seen.has(platform)));
2847
+ }
2848
+ const NO_MINIAPP_PLATFORMS = Object.freeze([]);
2849
+ /**
2850
+ * 解析 Manifest 平台声明,是 `0.9.0` 硬切规则的唯一实现。
2851
+ *
2852
+ * @remarks
2853
+ * 规则与后端领域层保持一致:
2854
+ * - 无 `platforms` 字段:`sdkVersion` 缺失或 SemVer precedence 低于
2855
+ * `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION` 时按历史移动端兼容;达到或高于硬切点即非法。
2856
+ * - 有 `platforms` 字段:复用 `validateMiniappPlatforms` 校验并规范化顺序;任何非法值
2857
+ * (空数组、非数组、未知值、重复值)都不回退到历史兼容,即使 `sdkVersion < 0.9.0`。
2858
+ * - 任何非法的 `sdkVersion` 都会抛出,不做字符串比较。
2859
+ * @param sdkVersion - 产物 hb-sdk 版本;历史产物可能缺失。
2860
+ * @param manifest - 待解析的 Manifest(不可信输入)。
2861
+ * @returns 冻结的平台解析结果。
2862
+ * @throws Manifest 不是对象、`sdkVersion` 不是合法 SemVer、达到硬切点仍缺失 `platforms`,
2863
+ * 或 `platforms` 声明非法时抛出。
2864
+ */
2865
+ function resolveMiniappManifestPlatforms(sdkVersion, manifest) {
2866
+ if (!isRecord$1(manifest)) {
2867
+ throw new Error('manifest 必须是 JSON 对象');
2868
+ }
2869
+ // 与后端 ResolvePlatforms 对齐:空串/纯空白按“缺失 SDK 版本”处理(历史产物),不报错。
2870
+ const trimmedSdkVersion = typeof sdkVersion === 'string' ? sdkVersion.trim() : undefined;
2871
+ const normalizedSdkVersion = trimmedSdkVersion ? validateSdkVersion(trimmedSdkVersion) : undefined;
2872
+ if (Object.prototype.hasOwnProperty.call(manifest, 'platforms')) {
2873
+ const platforms = validateMiniappPlatforms(manifest.platforms, 'manifest.platforms');
2874
+ return Object.freeze({
2875
+ declared: platforms,
2876
+ effective: platforms,
2877
+ platformsDeclared: true,
2878
+ policy: 'explicit',
2879
+ });
2880
+ }
2881
+ if (normalizedSdkVersion === undefined || semverExports.lt(normalizedSdkVersion, MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION)) {
2882
+ return Object.freeze({
2883
+ declared: NO_MINIAPP_PLATFORMS,
2884
+ effective: MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES,
2885
+ platformsDeclared: false,
2886
+ policy: 'legacy_mobile_default',
2887
+ });
2888
+ }
2889
+ throw new Error(`manifest.platforms 缺失:hb-sdk ${MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION} 起必须显式声明非空 platforms(当前 ${normalizedSdkVersion})`);
2890
+ }
2891
+ function validateSdkVersion(version, sourceLabel = 'sdkVersion') {
2892
+ if (typeof version !== 'string' || version.trim() === '') {
2893
+ throw new Error(`${sourceLabel} 必须是合法 SemVer:${String(version)}`);
2894
+ }
2895
+ const normalized = version.trim();
2896
+ const parsed = semverExports.parse(normalized);
2897
+ if (!parsed || parsed.version !== normalized || parsed.build.length > 0) {
2898
+ throw new Error(`${sourceLabel} 必须是合法 SemVer:${normalized}`);
2899
+ }
2900
+ return normalized;
2901
+ }
2902
+ function isRecord$1(value) {
2903
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
2904
+ }
2820
2905
  function getMiniappManifestVersionError(version) {
2821
2906
  if (typeof version !== 'string' || version.trim() === '') {
2822
2907
  return `必须是合法 SemVer:${String(version)}`;
@@ -3231,6 +3316,8 @@ exports.LIST_USER_MINIPROGRAM_API_PATH = LIST_USER_MINIPROGRAM_API_PATH;
3231
3316
  exports.LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH = LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
3232
3317
  exports.LIST_USER_MINIPROGRAM_VERSION_API_PATH = LIST_USER_MINIPROGRAM_VERSION_API_PATH;
3233
3318
  exports.MINIAPP_COMPANION_UPLOAD_TEMPORARY_SIZE_LIMIT_BYTES = MINIAPP_COMPANION_UPLOAD_TEMPORARY_SIZE_LIMIT_BYTES;
3319
+ exports.MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES = MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES;
3320
+ exports.MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION = MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION;
3234
3321
  exports.MINIAPP_UPLOAD_BATCH_SIZE = MINIAPP_UPLOAD_BATCH_SIZE;
3235
3322
  exports.MINIAPP_UPLOAD_SCOPE = MINIAPP_UPLOAD_SCOPE;
3236
3323
  exports.MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES = MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES;
@@ -3254,6 +3341,7 @@ exports.normalizeRelativePath = normalizeRelativePath;
3254
3341
  exports.parseMiniappBindAppIds = parseMiniappBindAppIds;
3255
3342
  exports.prepareMiniappArtifactFiles = prepareMiniappArtifactFiles;
3256
3343
  exports.relativePathContainsNodeModulesSegment = relativePathContainsNodeModulesSegment;
3344
+ exports.resolveMiniappManifestPlatforms = resolveMiniappManifestPlatforms;
3257
3345
  exports.resolveMiniappUploadSessionFiles = resolveMiniappUploadSessionFiles;
3258
3346
  exports.shouldUploadDistFile = shouldUploadDistFile;
3259
3347
  exports.validateMiniappCompanionFileReceipts = validateMiniappCompanionFileReceipts;
@@ -2812,9 +2812,94 @@ function parseMiniappBindAppIds(value, options = {}) {
2812
2812
  return Object.freeze(appIds);
2813
2813
  }
2814
2814
 
2815
+ const MINIAPP_PLATFORM_VALUES = ['android', 'ios', 'ohos', 'windows', 'macos', 'linux'];
2816
+ /** 平台声明硬切点:产物 hb-sdk 版本达到该值时,必须显式声明非空 `platforms`。 */
2817
+ const MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION = '0.9.0';
2818
+ /**
2819
+ * 历史移动端兼容平台集合。
2820
+ *
2821
+ * @remarks
2822
+ * 仅在 `sdkVersion` 缺失或 SemVer precedence 低于 `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION`,
2823
+ * 且 Manifest 完全没有 `platforms` 字段时生效,不是任何非法声明的兜底。
2824
+ */
2825
+ const MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES = ['android', 'ios', 'ohos'];
2815
2826
  function isValidMiniappManifestVersion(version) {
2816
2827
  return getMiniappManifestVersionError(version) === undefined;
2817
2828
  }
2829
+ function validateMiniappPlatforms(platforms, sourceLabel = 'platforms') {
2830
+ if (!Array.isArray(platforms) || platforms.length === 0) {
2831
+ throw new Error(`${sourceLabel} 必须是非空平台数组`);
2832
+ }
2833
+ const allowedPlatforms = new Set(MINIAPP_PLATFORM_VALUES);
2834
+ const seen = new Set();
2835
+ for (const platform of platforms) {
2836
+ if (typeof platform !== 'string' || !allowedPlatforms.has(platform)) {
2837
+ throw new Error(`${sourceLabel} 包含不支持的平台:${String(platform)}`);
2838
+ }
2839
+ if (seen.has(platform)) {
2840
+ throw new Error(`${sourceLabel} 包含重复平台:${platform}`);
2841
+ }
2842
+ seen.add(platform);
2843
+ }
2844
+ return Object.freeze(MINIAPP_PLATFORM_VALUES.filter((platform) => seen.has(platform)));
2845
+ }
2846
+ const NO_MINIAPP_PLATFORMS = Object.freeze([]);
2847
+ /**
2848
+ * 解析 Manifest 平台声明,是 `0.9.0` 硬切规则的唯一实现。
2849
+ *
2850
+ * @remarks
2851
+ * 规则与后端领域层保持一致:
2852
+ * - 无 `platforms` 字段:`sdkVersion` 缺失或 SemVer precedence 低于
2853
+ * `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION` 时按历史移动端兼容;达到或高于硬切点即非法。
2854
+ * - 有 `platforms` 字段:复用 `validateMiniappPlatforms` 校验并规范化顺序;任何非法值
2855
+ * (空数组、非数组、未知值、重复值)都不回退到历史兼容,即使 `sdkVersion < 0.9.0`。
2856
+ * - 任何非法的 `sdkVersion` 都会抛出,不做字符串比较。
2857
+ * @param sdkVersion - 产物 hb-sdk 版本;历史产物可能缺失。
2858
+ * @param manifest - 待解析的 Manifest(不可信输入)。
2859
+ * @returns 冻结的平台解析结果。
2860
+ * @throws Manifest 不是对象、`sdkVersion` 不是合法 SemVer、达到硬切点仍缺失 `platforms`,
2861
+ * 或 `platforms` 声明非法时抛出。
2862
+ */
2863
+ function resolveMiniappManifestPlatforms(sdkVersion, manifest) {
2864
+ if (!isRecord$1(manifest)) {
2865
+ throw new Error('manifest 必须是 JSON 对象');
2866
+ }
2867
+ // 与后端 ResolvePlatforms 对齐:空串/纯空白按“缺失 SDK 版本”处理(历史产物),不报错。
2868
+ const trimmedSdkVersion = typeof sdkVersion === 'string' ? sdkVersion.trim() : undefined;
2869
+ const normalizedSdkVersion = trimmedSdkVersion ? validateSdkVersion(trimmedSdkVersion) : undefined;
2870
+ if (Object.prototype.hasOwnProperty.call(manifest, 'platforms')) {
2871
+ const platforms = validateMiniappPlatforms(manifest.platforms, 'manifest.platforms');
2872
+ return Object.freeze({
2873
+ declared: platforms,
2874
+ effective: platforms,
2875
+ platformsDeclared: true,
2876
+ policy: 'explicit',
2877
+ });
2878
+ }
2879
+ if (normalizedSdkVersion === undefined || semverExports.lt(normalizedSdkVersion, MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION)) {
2880
+ return Object.freeze({
2881
+ declared: NO_MINIAPP_PLATFORMS,
2882
+ effective: MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES,
2883
+ platformsDeclared: false,
2884
+ policy: 'legacy_mobile_default',
2885
+ });
2886
+ }
2887
+ throw new Error(`manifest.platforms 缺失:hb-sdk ${MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION} 起必须显式声明非空 platforms(当前 ${normalizedSdkVersion})`);
2888
+ }
2889
+ function validateSdkVersion(version, sourceLabel = 'sdkVersion') {
2890
+ if (typeof version !== 'string' || version.trim() === '') {
2891
+ throw new Error(`${sourceLabel} 必须是合法 SemVer:${String(version)}`);
2892
+ }
2893
+ const normalized = version.trim();
2894
+ const parsed = semverExports.parse(normalized);
2895
+ if (!parsed || parsed.version !== normalized || parsed.build.length > 0) {
2896
+ throw new Error(`${sourceLabel} 必须是合法 SemVer:${normalized}`);
2897
+ }
2898
+ return normalized;
2899
+ }
2900
+ function isRecord$1(value) {
2901
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
2902
+ }
2818
2903
  function getMiniappManifestVersionError(version) {
2819
2904
  if (typeof version !== 'string' || version.trim() === '') {
2820
2905
  return `必须是合法 SemVer:${String(version)}`;
@@ -3216,4 +3301,4 @@ function compareBytes(left, right) {
3216
3301
  return left.length - right.length;
3217
3302
  }
3218
3303
 
3219
- export { ACTIVITY_UPLOAD_KEY_MAX_LENGTH, CREATE_USER_MINIPROGRAM_API_PATH, CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH, DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, DETAIL_USER_MINIPROGRAM_API_PATH, DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH, DEVELOPER_ENTITY_LIST_API_PATH, DEVELOPER_ENTITY_SWITCH_API_PATH, LIST_USER_MINIPROGRAM_API_PATH, LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH, LIST_USER_MINIPROGRAM_VERSION_API_PATH, MINIAPP_COMPANION_UPLOAD_TEMPORARY_SIZE_LIMIT_BYTES, MINIAPP_UPLOAD_BATCH_SIZE, MINIAPP_UPLOAD_SCOPE, MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES, PRECHECK_USER_MINIPROGRAM_VERSION_API_PATH, RELEASE_USER_MINIPROGRAM_VERSION_API_PATH, REOPEN_USER_MINIPROGRAM_API_PATH, SUBMIT_USER_MINIPROGRAM_AUDIT_API_PATH, TAKE_DOWN_USER_MINIPROGRAM_API_PATH, UPDATE_SQUARE_DISPLAY_API_PATH, UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, USER_MINIPROGRAM_ACCESS_STATUS_API_PATH, USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, USER_MINIPROGRAM_VERSION_PREVIEW_INFO_API_PATH, WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH, createMiniappArtifactFileHeader, createMiniappArtifactSignatureHeader, getMiniProgramUploadAlias, getMiniappUploadKey, isValidMiniappManifestVersion as isValidVersion, normalizeRelativePath, parseMiniappBindAppIds, prepareMiniappArtifactFiles, relativePathContainsNodeModulesSegment, resolveMiniappUploadSessionFiles, shouldUploadDistFile, validateMiniappCompanionFileReceipts, validateMiniappUploadPathLengths, validateMiniappUploadSizeBudgets, validateUploadPaths, validateUploadTotalSize };
3304
+ export { ACTIVITY_UPLOAD_KEY_MAX_LENGTH, CREATE_USER_MINIPROGRAM_API_PATH, CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH, DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, DETAIL_USER_MINIPROGRAM_API_PATH, DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH, DEVELOPER_ENTITY_LIST_API_PATH, DEVELOPER_ENTITY_SWITCH_API_PATH, LIST_USER_MINIPROGRAM_API_PATH, LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH, LIST_USER_MINIPROGRAM_VERSION_API_PATH, MINIAPP_COMPANION_UPLOAD_TEMPORARY_SIZE_LIMIT_BYTES, MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES, MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION, MINIAPP_UPLOAD_BATCH_SIZE, MINIAPP_UPLOAD_SCOPE, MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES, PRECHECK_USER_MINIPROGRAM_VERSION_API_PATH, RELEASE_USER_MINIPROGRAM_VERSION_API_PATH, REOPEN_USER_MINIPROGRAM_API_PATH, SUBMIT_USER_MINIPROGRAM_AUDIT_API_PATH, TAKE_DOWN_USER_MINIPROGRAM_API_PATH, UPDATE_SQUARE_DISPLAY_API_PATH, UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, USER_MINIPROGRAM_ACCESS_STATUS_API_PATH, USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, USER_MINIPROGRAM_VERSION_PREVIEW_INFO_API_PATH, WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH, createMiniappArtifactFileHeader, createMiniappArtifactSignatureHeader, getMiniProgramUploadAlias, getMiniappUploadKey, isValidMiniappManifestVersion as isValidVersion, normalizeRelativePath, parseMiniappBindAppIds, prepareMiniappArtifactFiles, relativePathContainsNodeModulesSegment, resolveMiniappManifestPlatforms, resolveMiniappUploadSessionFiles, shouldUploadDistFile, validateMiniappCompanionFileReceipts, validateMiniappUploadPathLengths, validateMiniappUploadSizeBudgets, validateUploadPaths, validateUploadTotalSize };
package/dist/vite.cjs.js CHANGED
@@ -11,7 +11,7 @@ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentS
11
11
  /** 构建时替换为当前发布包的实际版本。 */
12
12
  const HB_SDK_VERSION = typeof undefined === 'string'
13
13
  ? undefined
14
- : '0.8.1-alpha.15';
14
+ : '0.8.1-alpha.16';
15
15
 
16
16
  /**
17
17
  * iframe 与调试台页面的开发期 console 捕获转发。
package/dist/vite.esm.js CHANGED
@@ -8,7 +8,7 @@ import { AsyncLocalStorage } from 'node:async_hooks';
8
8
  /** 构建时替换为当前发布包的实际版本。 */
9
9
  const HB_SDK_VERSION = typeof undefined === 'string'
10
10
  ? undefined
11
- : '0.8.1-alpha.15';
11
+ : '0.8.1-alpha.16';
12
12
 
13
13
  /**
14
14
  * iframe 与调试台页面的开发期 console 捕获转发。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heybox/hb-sdk",
3
- "version": "0.8.1-alpha.15",
3
+ "version": "0.8.1-alpha.16",
4
4
  "sideEffects": [
5
5
  "./src/index.ts",
6
6
  "./src/core/singleton.ts",
@@ -62,7 +62,7 @@
62
62
  "skills": "1.5.23",
63
63
  "undici": "^7.28.0",
64
64
  "ws": "^8.18.0",
65
- "@heybox/hb-sdk-protocol": "0.8.1-alpha.15"
65
+ "@heybox/hb-sdk-protocol": "0.8.1-alpha.16"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "vite": ">=5"
@@ -113,10 +113,10 @@
113
113
  "vue-tsc": "^3.3.7",
114
114
  "vite": "^8.0.12",
115
115
  "vitest": "^3.2.4",
116
+ "@heybox-domain/heybox-vue3-ui": "~0.1.0",
116
117
  "@heybox-domain/heybox-theme": "~0.1.0",
118
+ "@heybox/hb-sdk-runtime": "~0.8.1-alpha.16",
117
119
  "@heybox/hb-api": "~1.28.3",
118
- "@heybox/hb-sdk-runtime": "~0.8.1-alpha.15",
119
- "@heybox-domain/heybox-vue3-ui": "~0.1.0",
120
120
  "@heybox/runtime": "~0.2.0",
121
121
  "@heybox/runtime-policy": "~0.2.0",
122
122
  "@heybox/runtime-transport-fetch": "~0.2.0"
@@ -301,10 +301,10 @@ Reference 由 `@heybox/hb-sdk` 的公开导出与源码注释自动生成,不
301
301
  | --- | ---: | ---: | ---: | ---: | ---: |
302
302
  | Root API | 2 | 4 | 75 | 73 | 3 |
303
303
  | Protocol API | 0 | 13 | 58 | 90 | 47 |
304
- | Miniapp Publish API | 0 | 6 | 3 | 0 | 0 |
304
+ | Miniapp Publish API | 0 | 7 | 4 | 1 | 2 |
305
305
  | Vite API | 0 | 1 | 5 | 1 | 3 |
306
306
 
307
- <!-- Generated by apps/docs/hb-sdk/scripts/generate-api-docs.ts; schemaVersion=4; fingerprint=1dfd4c6306e8ac3680f60db083aa048395e38ffb49c30e19b49cc5db72249533 -->
307
+ <!-- Generated by apps/docs/hb-sdk/scripts/generate-api-docs.ts; schemaVersion=4; fingerprint=67370783f01088c3ba37e6506e18d075924b7966e0b53aa3ce82b38bac1a33f3 -->
308
308
 
309
309
  ## SDK API
310
310
 
@@ -27,7 +27,7 @@
27
27
  ## Package metadata
28
28
 
29
29
  - Package: `@heybox/hb-sdk`
30
- - Version at generation time: `0.8.1-alpha.15`
30
+ - Version at generation time: `0.8.1-alpha.16`
31
31
  - Public root export: `@heybox/hb-sdk`
32
32
  - Protocol export: `@heybox/hb-sdk/protocol`
33
33
  - Vite plugin export: `@heybox/hb-sdk/vite`
package/skill/skill.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "hb-sdk",
3
- "skillVersion": "0.8.1-alpha.15+skill.b220fbc77b56",
3
+ "skillVersion": "0.8.1-alpha.16+skill.40a9aaafe9bf",
4
4
  "sdk": {
5
5
  "package": "@heybox/hb-sdk",
6
- "version": "0.8.1-alpha.15",
7
- "compatibility": "0.8.1-alpha.15"
6
+ "version": "0.8.1-alpha.16",
7
+ "compatibility": "0.8.1-alpha.16"
8
8
  },
9
9
  "distribution": {
10
10
  "type": "npm",
11
11
  "package": "@heybox/hb-sdk",
12
- "version": "0.8.1-alpha.15",
12
+ "version": "0.8.1-alpha.16",
13
13
  "path": "skill"
14
14
  },
15
- "integrity": "sha256-b220fbc77b56021c0620c086c036ceba404be7a49741ffffb8bee9fce57706a7"
15
+ "integrity": "sha256-40a9aaafe9bf39ee033c27c149c7bcfff2f5e7c9674796d1b1ac24f7df9ea81c"
16
16
  }
@@ -3,6 +3,16 @@ import type { MiniappCompanionManifestDeclarations } from './companion-types';
3
3
  export declare const MINIAPP_TEMPLATE_VERSION = "0.0.0";
4
4
  export declare const MINIAPP_PLATFORM_VALUES: readonly ["android", "ios", "ohos", "windows", "macos", "linux"];
5
5
  export type MiniappPlatform = (typeof MINIAPP_PLATFORM_VALUES)[number];
6
+ /** 平台声明硬切点:产物 hb-sdk 版本达到该值时,必须显式声明非空 `platforms`。 */
7
+ export declare const MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION = "0.9.0";
8
+ /**
9
+ * 历史移动端兼容平台集合。
10
+ *
11
+ * @remarks
12
+ * 仅在 `sdkVersion` 缺失或 SemVer precedence 低于 `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION`,
13
+ * 且 Manifest 完全没有 `platforms` 字段时生效,不是任何非法声明的兜底。
14
+ */
15
+ export declare const MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES: readonly ["android", "ios", "ohos"];
6
16
  /** 窗口尺寸字段的脏值兜底上限;真正的上限是宿主侧显示器 workArea。 */
7
17
  export declare const MINIAPP_WINDOW_SIZE_MAX = 16384;
8
18
  /**
@@ -65,6 +75,42 @@ export declare function validateMiniappManifestForDeploy(manifest: MiniappManife
65
75
  };
66
76
  export declare function validateMiniappPlatforms(platforms: unknown, sourceLabel?: string): readonly MiniappPlatform[];
67
77
  export declare function areMiniappPlatformsEqual(left: readonly MiniappPlatform[], right: readonly MiniappPlatform[]): boolean;
78
+ /** 平台解析策略:显式声明,或历史产物缺少声明时的移动端兼容。 */
79
+ export type MiniappPlatformPolicy = 'explicit' | 'legacy_mobile_default';
80
+ /**
81
+ * Manifest 平台解析结果,供 CLI、开放平台网页、后端与 Runtime 共用。
82
+ *
83
+ * @remarks
84
+ * `declared` 是规范化后的显式声明,历史兼容场景为空数组;`effective` 是用于展示与运行
85
+ * 判断的最终平台集合。调用方不得自行比较 `0.9.0` 或补默认值,只能消费该结果。
86
+ */
87
+ export interface MiniappPlatformResolution {
88
+ /** 规范化后的显式平台声明;历史兼容场景为空数组。 */
89
+ readonly declared: readonly MiniappPlatform[];
90
+ /** 最终生效的平台集合:显式声明原样使用,历史产物为移动端兼容集合。 */
91
+ readonly effective: readonly MiniappPlatform[];
92
+ /** 是否显式声明了 `platforms`,用于区分显式移动端声明与历史移动端默认。 */
93
+ readonly platformsDeclared: boolean;
94
+ /** 本次解析采用的策略。 */
95
+ readonly policy: MiniappPlatformPolicy;
96
+ }
97
+ /**
98
+ * 解析 Manifest 平台声明,是 `0.9.0` 硬切规则的唯一实现。
99
+ *
100
+ * @remarks
101
+ * 规则与后端领域层保持一致:
102
+ * - 无 `platforms` 字段:`sdkVersion` 缺失或 SemVer precedence 低于
103
+ * `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION` 时按历史移动端兼容;达到或高于硬切点即非法。
104
+ * - 有 `platforms` 字段:复用 `validateMiniappPlatforms` 校验并规范化顺序;任何非法值
105
+ * (空数组、非数组、未知值、重复值)都不回退到历史兼容,即使 `sdkVersion < 0.9.0`。
106
+ * - 任何非法的 `sdkVersion` 都会抛出,不做字符串比较。
107
+ * @param sdkVersion - 产物 hb-sdk 版本;历史产物可能缺失。
108
+ * @param manifest - 待解析的 Manifest(不可信输入)。
109
+ * @returns 冻结的平台解析结果。
110
+ * @throws Manifest 不是对象、`sdkVersion` 不是合法 SemVer、达到硬切点仍缺失 `platforms`,
111
+ * 或 `platforms` 声明非法时抛出。
112
+ */
113
+ export declare function resolveMiniappManifestPlatforms(sdkVersion: string | undefined, manifest: unknown): MiniappPlatformResolution;
68
114
  /**
69
115
  * 校验并归一化 `package.json#heybox.window` / `manifest.window` 声明。
70
116
  *
@@ -27,6 +27,7 @@ export declare const REOPEN_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_mi
27
27
  export declare const UPDATE_SQUARE_DISPLAY_API_PATH = "/mall/developer/user_miniprogram/square_display/update";
28
28
  export declare const LIST_USER_MINIPROGRAM_VERSION_API_PATH = "/mall/developer/user_miniprogram/version/list";
29
29
  export { isValidMiniappManifestVersion as isValidVersion } from '../miniapp-manifest/schema';
30
+ export { MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES, MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION, resolveMiniappManifestPlatforms, type MiniappPlatformPolicy, type MiniappPlatformResolution, } from '../miniapp-manifest/schema';
30
31
  export { parseMiniappBindAppIds, type ParseMiniappBindAppIdsOptions } from '../miniapp-manifest/bindings';
31
32
  export declare function normalizeRelativePath(relativePath: string): string;
32
33
  export declare function relativePathContainsNodeModulesSegment(relativePath: string): boolean;