@heybox/hb-sdk 0.9.1-alpha.4 → 0.9.1-alpha.6

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 (112) hide show
  1. package/CHANGELOG.md +23 -2
  2. package/README.md +33 -0
  3. package/dist/card-controller.cjs.js +194 -0
  4. package/dist/card-controller.esm.js +159 -0
  5. package/dist/cli-chunks/browser-DUdEZCyq.cjs +15 -0
  6. package/dist/cli-chunks/{build-BZg2rHkW.cjs → build-DYYWRiaY.cjs} +22 -10
  7. package/dist/cli-chunks/{context-YrzmEOau.cjs → context-Bo4L-Cx_.cjs} +12 -12
  8. package/dist/cli-chunks/{create-fPvlqLbS.cjs → create-CKC4yp0J.cjs} +12 -5
  9. package/dist/cli-chunks/{dev-X8_kbp78.cjs → dev-BMX6UXUe.cjs} +58 -13
  10. package/dist/cli-chunks/{doctor-DdiucYs9.cjs → doctor-DqEYRo4I.cjs} +13 -6
  11. package/dist/cli-chunks/{index-BdbwsefW.cjs → index-DmCWB_hF.cjs} +4 -7
  12. package/dist/cli-chunks/{index-BGh-Izf8.cjs → index-J4uQvKT_.cjs} +8780 -4464
  13. package/dist/cli-chunks/{index.esm-WYIrPjkF.cjs → index.esm-eNPTDv6W.cjs} +18 -19
  14. package/dist/cli-chunks/{login-DWmNuhWc.cjs → login-BL2OE6r9.cjs} +32 -33
  15. package/dist/cli-chunks/{project-vite-BVDIeoHB.cjs → project-vite-Du1m7Y_3.cjs} +1 -1
  16. package/dist/cli-chunks/{remote-BHJFxXyc.cjs → remote-ZHJUtx6l.cjs} +49 -38
  17. package/dist/cli-chunks/runtime-gate-DedD3ynE.cjs +201950 -0
  18. package/dist/cli-chunks/{runtime-permission-env-eiq8vE62.cjs → runtime-permission-env-DWaPlchd.cjs} +9396 -2929
  19. package/dist/cli-chunks/{skill-DC3cfPj2.cjs → skill-D4z_a_BH.cjs} +14 -7
  20. package/dist/cli-chunks/{version-DYFkOykv.cjs → version-tzrFwpkl.cjs} +1 -1
  21. package/dist/cli.cjs +14 -6
  22. package/dist/devtools/browser-dev-host/assets/browser-dev-host-BL1URvGR.js +102 -0
  23. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-CZsodKbP.js → desktop-app-launch-D6QZYpUq.js} +3 -3
  24. package/dist/devtools/browser-dev-host/assets/{index-B9tOX3zG.js → index-Bqsp608m.js} +4 -4
  25. package/dist/devtools/browser-dev-host/index.html +2 -2
  26. package/dist/index.cjs.js +6224 -275
  27. package/dist/index.esm.js +6224 -276
  28. package/dist/miniapp-publish.cjs.js +6612 -168
  29. package/dist/miniapp-publish.esm.js +6612 -169
  30. package/dist/protocol.cjs.js +5805 -0
  31. package/dist/protocol.esm.js +5805 -0
  32. package/dist/vite.cjs.js +7475 -217
  33. package/dist/vite.esm.js +7474 -218
  34. package/dist/workspace-card-build-sandbox-worker.mjs +72 -0
  35. package/package.json +25 -11
  36. package/skill/SKILL.md +15 -0
  37. package/skill/skill.json +5 -5
  38. package/types/card-controller.d.ts +3682 -0
  39. package/types/index.d.ts +7532 -35
  40. package/types/miniapp-publish/index.d.ts +542 -64
  41. package/types/protocol.d.ts +2083 -9
  42. package/types/vite/index.d.ts +25 -12
  43. package/dist/cli-chunks/browser-RAy8e8cV.cjs +0 -635
  44. package/dist/cli-chunks/runtime-gate-CR0dRMpQ.cjs +0 -65
  45. package/dist/cli-chunks/session-Dz1cGg0E.cjs +0 -3403
  46. package/dist/devtools/browser-dev-host/assets/browser-dev-host-CO2_03W0.js +0 -102
  47. package/types/core/client.d.ts +0 -108
  48. package/types/core/csp-violation.d.ts +0 -5
  49. package/types/core/errors.d.ts +0 -78
  50. package/types/core/event-bus.d.ts +0 -11
  51. package/types/core/handshake-state.d.ts +0 -54
  52. package/types/core/history-observer.d.ts +0 -4
  53. package/types/core/mini-dev-console.d.ts +0 -36
  54. package/types/core/network-sanitize.d.ts +0 -31
  55. package/types/core/sdk.d.ts +0 -104
  56. package/types/core/singleton.d.ts +0 -372
  57. package/types/core/utils.d.ts +0 -10
  58. package/types/core/version.d.ts +0 -2
  59. package/types/devtools/device-logs.d.ts +0 -48
  60. package/types/miniapp-manifest/basic-info-browser.d.ts +0 -37
  61. package/types/miniapp-manifest/basic-info-image-header.d.ts +0 -6
  62. package/types/miniapp-manifest/basic-info-node.d.ts +0 -17
  63. package/types/miniapp-manifest/basic-info-placeholder.d.ts +0 -1
  64. package/types/miniapp-manifest/basic-info.d.ts +0 -33
  65. package/types/miniapp-manifest/bindings.d.ts +0 -70
  66. package/types/miniapp-manifest/category.d.ts +0 -11
  67. package/types/miniapp-manifest/companion-directory.d.ts +0 -2
  68. package/types/miniapp-manifest/companion-executable.d.ts +0 -4
  69. package/types/miniapp-manifest/companion-types.d.ts +0 -63
  70. package/types/miniapp-manifest/companions.d.ts +0 -17
  71. package/types/miniapp-manifest/index.d.ts +0 -7
  72. package/types/miniapp-manifest/node.d.ts +0 -22
  73. package/types/miniapp-manifest/permissions.d.ts +0 -48
  74. package/types/miniapp-manifest/runtime-gate.d.ts +0 -12
  75. package/types/miniapp-manifest/schema.d.ts +0 -302
  76. package/types/modules/auth/index.d.ts +0 -204
  77. package/types/modules/cloud/index.d.ts +0 -669
  78. package/types/modules/companion/index.d.ts +0 -1619
  79. package/types/modules/device/index.d.ts +0 -269
  80. package/types/modules/environment/index.d.ts +0 -238
  81. package/types/modules/files/index.d.ts +0 -5
  82. package/types/modules/files/registry.d.ts +0 -35
  83. package/types/modules/files/types.d.ts +0 -1548
  84. package/types/modules/navigation/app-pages/index.d.ts +0 -4
  85. package/types/modules/navigation/app-pages/types.d.ts +0 -135
  86. package/types/modules/navigation/index.d.ts +0 -312
  87. package/types/modules/network/index.d.ts +0 -457
  88. package/types/modules/network/observability.d.ts +0 -38
  89. package/types/modules/network/request-shape.d.ts +0 -44
  90. package/types/modules/share/copy-link.d.ts +0 -46
  91. package/types/modules/share/extra.d.ts +0 -5
  92. package/types/modules/share/index.d.ts +0 -294
  93. package/types/modules/share/screenshot.d.ts +0 -34
  94. package/types/modules/share/show-share-menu.d.ts +0 -29
  95. package/types/modules/share/types.d.ts +0 -201
  96. package/types/modules/storage/index.d.ts +0 -214
  97. package/types/modules/ui/index.d.ts +0 -315
  98. package/types/modules/user/get-info.d.ts +0 -44
  99. package/types/modules/user/index.d.ts +0 -245
  100. package/types/modules/user/revoke-authorization.d.ts +0 -31
  101. package/types/modules/user/steam-game-list.d.ts +0 -153
  102. package/types/modules/user/types.d.ts +0 -2
  103. package/types/modules/viewport/index.d.ts +0 -319
  104. package/types/protocol/capabilities.d.ts +0 -2
  105. package/types/protocol/constants.d.ts +0 -1
  106. package/types/protocol/dev-session.d.ts +0 -74
  107. package/types/protocol/guards.d.ts +0 -1
  108. package/types/protocol/runtime-permissions.d.ts +0 -2
  109. package/types/protocol/types.d.ts +0 -22
  110. package/types/skill-metadata.d.ts +0 -18
  111. package/types/vite/html-policy.d.ts +0 -6
  112. package/types/vite/runtime-permission-env.d.ts +0 -9
@@ -1,63 +0,0 @@
1
- export declare const MINIAPP_COMPANION_TARGETS: readonly ["windows-x64", "macos-arm64"];
2
- export declare const MINIAPP_COMPANION_CAPABILITIES: readonly ["stdio", "attachments", "notifications"];
3
- /** Companion 二进制目标:Windows x64 或 macOS arm64;不是小程序的通用平台列表。 */
4
- export type MiniappCompanionTarget = (typeof MINIAPP_COMPANION_TARGETS)[number];
5
- /**
6
- * Companion 声明的能力标识:`stdio` 为标准输入输出、`attachments` 为受管附件、`notifications` 为通知。
7
- * 声明不代表当前宿主可用;实际能力以启动后 Session 返回的 capability 集合为准。
8
- */
9
- export type MiniappCompanionCapability = (typeof MINIAPP_COMPANION_CAPABILITIES)[number];
10
- export interface MiniappCompanionAuthoringTarget {
11
- /** 相对 package.json 所在目录的产物目录;SDK 在调试和构建时自动打包。 */
12
- source: string;
13
- entrypoint: {
14
- kind: 'executable' | 'app-bundle';
15
- path: string;
16
- };
17
- /** V1 仅支持普通权限启动;省略时等同于 `none`。 */
18
- elevation?: 'none';
19
- args?: readonly string[];
20
- }
21
- export interface MiniappCompanionAuthoringDefinition {
22
- displayName: string;
23
- capabilities?: readonly MiniappCompanionCapability[];
24
- targets: Partial<Record<MiniappCompanionTarget, MiniappCompanionAuthoringTarget>>;
25
- }
26
- export type MiniappCompanionAuthoringDeclarations = Record<string, MiniappCompanionAuthoringDefinition>;
27
- /** 构建生成的单个 Companion ZIP 归档描述;不使用项目声明中的 source 目录。 */
28
- export interface MiniappCompanionManifestTarget {
29
- /** 相对构建目录的 ZIP 路径,固定为 `companions/{alias}/{target}.zip`。 */
30
- path: string;
31
- /** ZIP 文件完整字节数,必须为正安全整数;不是解压后的大小。 */
32
- size: number;
33
- /** ZIP 完整字节的 SHA-256,使用 64 位小写十六进制字符串。 */
34
- sha256: string;
35
- /** 解压归档中的启动入口,由构建时从项目声明校验并保留。 */
36
- entrypoint: {
37
- /** 普通可执行文件或 macOS `.app` bundle;Windows 仅支持 executable。 */
38
- kind: 'executable' | 'app-bundle';
39
- /** 相对归档根目录的入口路径,使用 `/` 分隔;不是 ZIP 路径或项目 source 路径。 */
40
- path: string;
41
- };
42
- /** V1 固定为普通权限启动,不支持请求管理员权限。 */
43
- elevation: 'none';
44
- /** 启动参数列表;最多 64 项,每项 1024 UTF-8 bytes,总计 16 KiB,不允许 NUL、CR 或 LF。 */
45
- args: string[];
46
- }
47
- /** 一个 Companion alias 对应的展示信息、声明能力与平台归档。 */
48
- export interface MiniappCompanionManifestDefinition {
49
- /** 非空展示名称,最多 120 个 Unicode code point。 */
50
- displayName: string;
51
- /** 无重复的声明能力列表,可为空;不表示平台批准或宿主已提供这些能力。 */
52
- capabilities: MiniappCompanionCapability[];
53
- /** 按二进制目标索引的已生成归档,至少提供一个目标。 */
54
- targets: Partial<Record<MiniappCompanionTarget, MiniappCompanionManifestTarget>>;
55
- }
56
- /**
57
- * 发布 Manifest 的 Companion 声明,键为以小写字母开头、长度 1–32 的小写字母/数字/连字符 alias。
58
- *
59
- * @remarks
60
- * 声明时对象必须非空,所有 alias 合计最多 64 个 target 描述符。归档由构建插件生成,
61
- * 不应把含 source 目录的项目配置直接当作此类型;运行时还需声明 companion 权限并获得平台批准。
62
- */
63
- export type MiniappCompanionManifestDeclarations = Record<string, MiniappCompanionManifestDefinition>;
@@ -1,17 +0,0 @@
1
- import { type MiniappCompanionAuthoringDeclarations, type MiniappCompanionManifestDeclarations, type MiniappCompanionTarget } from './companion-types';
2
- export * from './companion-types';
3
- interface PrepareMiniappCompanionsOptions {
4
- root: string;
5
- outputRoot: string;
6
- platforms?: readonly string[];
7
- /** 本地调试仅准备当前 PC 目标;构建省略此项,校验全部目标。 */
8
- targets?: readonly MiniappCompanionTarget[];
9
- copyArtifacts?: boolean;
10
- onPreparedArtifact?: (artifact: {
11
- archive: Buffer;
12
- path: string;
13
- size: number;
14
- sourcePath: string;
15
- }) => void;
16
- }
17
- export declare function prepareMiniappCompanions(declarations: MiniappCompanionAuthoringDeclarations | undefined, options: PrepareMiniappCompanionsOptions): MiniappCompanionManifestDeclarations | undefined;
@@ -1,7 +0,0 @@
1
- export * from './schema';
2
- export * from './category';
3
- export * from './node';
4
- export * from './permissions';
5
- export * from './companions';
6
- export * from './companion-types';
7
- export * from './bindings';
@@ -1,22 +0,0 @@
1
- import { type ParsedMiniappPermissions } from './permissions';
2
- import type { MiniappCompanionAuthoringDeclarations } from './companion-types';
3
- import type { MiniappPlatform, MiniappWindowDeclaration } from './schema';
4
- export declare function readMiniappVersionFromPackageJson(root: string): string;
5
- /** Companion source 始终相对声明所在 package.json,而非 Vite 的 HTML root。 */
6
- export declare function readMiniappCompanionsFromPackageJson(root: string): {
7
- declarations: MiniappCompanionAuthoringDeclarations | undefined;
8
- projectRoot: string;
9
- packageJsonPath: string;
10
- };
11
- export declare function readMiniappPlatformsFromPackageJson(root: string): readonly MiniappPlatform[];
12
- /**
13
- * 读取并校验 `package.json#heybox.window`。
14
- *
15
- * @returns 合法声明;未声明时返回 `undefined`,调用方不得向 manifest 写入空对象或 `null`。
16
- * @throws 当声明违反 {@link validateMiniappWindow} 的规则时抛出,报错前缀为 `package.json#heybox.window`。
17
- */
18
- export declare function readMiniappWindowFromPackageJson(root: string): MiniappWindowDeclaration | undefined;
19
- export declare function readMiniappPermissionsFromPackageJson(root: string, sdkVersion: string): ParsedMiniappPermissions;
20
- export declare function readMiniappBindAppIdsFromPackageJson(root: string): readonly string[];
21
- export declare function readMiniappCategoryFromPackageJson(root: string): import("./category").MiniappCategory | undefined;
22
- export declare function resolveMiniappSdkVersion(): string;
@@ -1,48 +0,0 @@
1
- import { type MiniProgramPermissionKey, type MiniProgramRuntimePermissionsSnapshot } from '@heybox/hb-sdk-protocol';
2
- export declare const MINIAPP_PERMISSION_KEYS: readonly ["userInfo", "steamLibrary", "share", "storage", "filesystem", "clipboard", "leaderboard", "network", "companion", "appProtocol"];
3
- export type MiniappPermissionKey = MiniProgramPermissionKey;
4
- /** 构建产物中一个已启用的权限声明;未启用的项目配置项会在构建时被省略。 */
5
- export interface SimpleMiniappPermissionDeclaration {
6
- /** 固定为 true,表示应用请求使用该权限;不等同于平台已经批准。 */
7
- enabled: true;
8
- }
9
- /** 构建产物中的网络权限声明,附带是否请求小黑盒官方域名访问的配置。 */
10
- export interface NetworkMiniappPermissionDeclaration extends SimpleMiniappPermissionDeclaration {
11
- /** 是否申请官方域名访问,项目省略时规范化为 false;实际启用还需远端批准该配置。 */
12
- useOfficialDomain: boolean;
13
- }
14
- /**
15
- * 构建规范化后写入 Manifest 的权限对象;仅包含请求启用的权限,空对象表示无权限需求。
16
- *
17
- * @remarks
18
- * 这是本地声明,不是运行时授权结果。仅需声明的权限按声明生效;要求平台批准的权限还需与远端批准
19
- * 求交,network 的 useOfficialDomain 配置也需同时获批。显式声明中缺失某权限表示不请求该权限;
20
- * SDK 0.9 系列起项目必须提供该对象,0.8 历史产物未声明时另按迁移规则处理。
21
- */
22
- export type MiniappPermissionDeclarations = Partial<Record<Exclude<MiniappPermissionKey, 'network'>, SimpleMiniappPermissionDeclaration> & {
23
- network: NetworkMiniappPermissionDeclaration;
24
- }>;
25
- export interface ParsedMiniappPermissions {
26
- declared: boolean;
27
- permissions?: MiniappPermissionDeclarations;
28
- }
29
- export interface MiniappPermissionView {
30
- key: MiniappPermissionKey;
31
- access: 'declaration' | 'platform-approval';
32
- declared: boolean;
33
- approved: boolean | null;
34
- requestedConfig?: Record<string, boolean>;
35
- approvedConfig?: Record<string, boolean>;
36
- effective: boolean;
37
- effectiveConfig?: Record<string, boolean>;
38
- }
39
- export declare function parseMiniappPermissions(value: unknown, options: {
40
- present: boolean;
41
- sdkVersion: string;
42
- sourceLabel?: string;
43
- }): ParsedMiniappPermissions;
44
- export declare function requiresExplicitPermissions(sdkVersion: string): boolean;
45
- export declare function composeMiniappRuntimePermissions(local: ParsedMiniappPermissions, approvals: unknown): {
46
- runtimePermissions: MiniProgramRuntimePermissionsSnapshot;
47
- views: MiniappPermissionView[];
48
- };
@@ -1,12 +0,0 @@
1
- import { type DefaultTreeAdapterMap } from 'parse5';
2
- type HtmlDocument = DefaultTreeAdapterMap['document'];
3
- export declare function injectMiniappRuntimeGate(document: HtmlDocument): void;
4
- /**
5
- * 检查 HTML 是否包含 Runtime Gate 的三个结构标记。
6
- *
7
- * @param html - 待检查的完整 HTML 文本,使用 HTML parser 解析。
8
- * @returns Gate、隐藏样式及 bootstrap 标记均出现时返回 `true`,否则返回 `false`。
9
- * @remarks 只识别标记,不验证脚本内容、标记所在节点或宿主握手;不能据此判断页面安全或实际可运行。
10
- */
11
- export declare function hasMiniappRuntimeGate(html: string): boolean;
12
- export {};
@@ -1,302 +0,0 @@
1
- import { type MiniappCategory } from './category';
2
- import { type MiniappPermissionDeclarations } from './permissions';
3
- import type { MiniappCompanionManifestDeclarations } from './companion-types';
4
- export declare const MINIAPP_TEMPLATE_VERSION = "0.0.0";
5
- /**
6
- * `package.json#heybox.platforms` 接受的平台值,顺序同时是 Manifest 的规范化输出顺序。
7
- *
8
- * @remarks 项目仍应只声明实际完成适配并经过验收的平台;模板默认值不是自动兼容承诺。
9
- */
10
- export declare const MINIAPP_PLATFORM_VALUES: readonly ["android", "ios", "ohos", "windows", "macos", "linux"];
11
- /** `package.json#heybox.platforms` 中单个平台标识。 */
12
- export type MiniappPlatform = (typeof MINIAPP_PLATFORM_VALUES)[number];
13
- /** 平台声明硬切点:产物 hb-sdk 版本达到该值时,必须显式声明非空 `platforms`。 */
14
- export declare const MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION = "0.9.0";
15
- /**
16
- * 历史兜底平台集合。
17
- *
18
- * @remarks
19
- * 仅在 `sdkVersion` 缺失或 SemVer precedence 低于 `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION`,
20
- * 且 Manifest 完全没有 `platforms` 字段时生效,不是任何非法声明的兜底。
21
- *
22
- * 不含 `linux`:客户端暂无 linux 基线,后端 `x_os_type` 也不映射该平台,声明了也进不了运行门禁。
23
- */
24
- export declare const MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES: readonly ["android", "ios", "ohos", "windows", "macos"];
25
- /**
26
- * 历史兜底平台集合的旧名称。
27
- *
28
- * @deprecated Since 0.8.3. 请改用 {@link MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES},本别名取值与之一致,仅为不破坏既有 import 保留。
29
- */
30
- export declare const MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES: readonly ["android", "ios", "ohos", "windows", "macos"];
31
- /** 窗口尺寸字段的脏值兜底上限;真正的上限是宿主侧显示器 workArea。 */
32
- export declare const MINIAPP_WINDOW_SIZE_MAX = 16384;
33
- /**
34
- * `package.json#heybox.window` 的开发者声明字段。
35
- *
36
- * @remarks
37
- * 只描述**开窗初值**与可缩放性,不是窗口当前尺寸;运行期尺寸请用 `viewport.getWindowInfo()`。
38
- * 位置(`x` / `y`)不开放声明,由用户拖拽产生并由宿主记忆。
39
- */
40
- export interface MiniappWindowDeclaration {
41
- /** 默认窗口内容宽度(逻辑像素),正整数,不超过 16384。 */
42
- defaultWidth?: number;
43
- /** 默认窗口内容高度(逻辑像素),正整数,不超过 16384。 */
44
- defaultHeight?: number;
45
- /** 尺寸下限宽度;必须与 defaultWidth 同时声明,且不大于 defaultWidth。 */
46
- minWidth?: number;
47
- /** 尺寸下限高度;必须与 defaultHeight 同时声明,且不大于 defaultHeight。 */
48
- minHeight?: number;
49
- /** 是否允许用户手动拖拽改变尺寸。 */
50
- resizable?: boolean;
51
- }
52
- /**
53
- * 桌面平台子集:从唯一平台词表 `MINIAPP_PLATFORM_VALUES` 派生,`satisfies` 阻止它漂移出词表。
54
- * 小程序声明其中任一平台,即视为该项目承诺适配 PC / 桌面端;调试台据此取舍桌面调试入口。
55
- *
56
- * 注意:子集只表达「声明为桌面」,不保证已有可用的客户端基线——例如 `linux` 目前既没有 `@hbPlatform` 声明,
57
- * 也没有 Companion target,仅声明 `linux` 的项目会展示入口但未必能真正打开。
58
- */
59
- export declare const MINIAPP_DESKTOP_PLATFORM_VALUES: readonly ["windows", "macos", "linux"];
60
- export declare function hasMiniappDesktopPlatform(platforms: readonly MiniappPlatform[] | undefined): boolean;
61
- /**
62
- * 判断平台声明是否仍是旧版模板的移动端默认值。
63
- *
64
- * @param platforms - 待判断的平台数组;不要求预先规范化顺序,重复项会被长度校验挡下。
65
- * @returns 恰好包含 `android`、`ios`、`ohos` 三个平台时返回 `true`,其余组合返回 `false`。
66
- */
67
- export declare function isLegacyMobileTemplatePlatforms(platforms: readonly MiniappPlatform[]): boolean;
68
- /**
69
- * 生成「平台声明仍是旧模板移动端默认」的非阻断提示。
70
- *
71
- * @param sourceLabel - 提示前缀,默认指向开发者声明路径。
72
- * @returns 面向开发者的单行提示;调用方负责经 Vite 插件 `warn` 或等价日志通道输出,不得据此阻断构建。
73
- */
74
- export declare function getLegacyMobileTemplatePlatformsNotice(sourceLabel?: string): string;
75
- /** 构建生成的小程序发布 Manifest;可选字段用于兼容历史产物,发布前仍需完整校验。 */
76
- export interface MiniappManifest {
77
- /** 原始产物可带额外元数据;发布校验返回值只保留已知字段。 */
78
- [key: string]: unknown;
79
- /** 展示名称;SDK `0.8.2` 起需与图标、封面一起提供。 */
80
- name?: string;
81
- /** 相对构建目录的图标路径。 */
82
- icon?: string;
83
- /** 相对构建目录的封面路径,1–5 张,按展示顺序排列。 */
84
- coverImages?: string[];
85
- /** 生成产物时实际安装的 hb-sdk 版本,不是小程序发布版本。 */
86
- sdkVersion: string;
87
- /** 小程序发布版本:完整 SemVer,可含 prerelease,不允许 build metadata 或 core `0.0.0`。 */
88
- version: string;
89
- /** 小程序承诺适配的非空、无重复目标平台列表。 */
90
- platforms: readonly MiniappPlatform[];
91
- /** 产物权限声明;SDK `0.9` 系列起必须显式提供,无权限需求时使用空对象。 */
92
- permissions?: MiniappPermissionDeclarations;
93
- /** 构建生成的 Companion 归档声明,不是含 source 目录的项目 authoring 配置。 */
94
- companions?: MiniappCompanionManifestDeclarations;
95
- /** 桌面窗口的可选初值、最小尺寸及是否可缩放。 */
96
- window?: MiniappWindowDeclaration;
97
- /** 关联游戏 App ID 字符串,最多 20 个;空列表在发布校验结果中省略。 */
98
- bindAppIds?: readonly string[];
99
- /** 发布类别;历史读取可缺省,发布校验必须提供。 */
100
- category?: MiniappCategory;
101
- }
102
- export interface ParseMiniappManifestResult {
103
- manifest: MiniappManifest;
104
- hadBom: boolean;
105
- }
106
- /**
107
- * 判断小程序版本是否符合公开 Manifest 版本规则。
108
- *
109
- * @param version - 待判断的 `package.json.version` / Manifest 版本字符串;首尾空白会先被
110
- * 移除,但函数不会把规范化后的字符串返回给调用方。
111
- * @returns trim 后满足小程序严格版本规则时返回 `true`,否则返回 `false`。对类型声明允许的
112
- * 字符串输入,该函数只返回布尔值,不抛出校验错误。
113
- *
114
- * @remarks
115
- * 接受形式为 canonical SemVer `MAJOR.MINOR.PATCH[-PRERELEASE]`。trim 后的输入必须与
116
- * `semver` 严格解析得到的 `version` 完全相同,因此不完整版本(如 `1.2`)、`v` / `=`
117
- * 前缀、范围表达式、额外段,以及 major/minor/patch 或纯数字 prerelease 标识中的前导零
118
- * 都返回 `false`。只有首尾空白会被忽略,内部空白不会被修复。
119
- *
120
- * 合法 prerelease(如 `1.2.3-alpha.1`、`0.0.1-rc.0`)可以使用。build metadata 即使符合
121
- * 标准 SemVer(如 `1.2.3+build.1`)也被小程序发布合同显式禁止。模板占位 core
122
- * `0.0.0` 同样禁止,包括 `0.0.0-alpha` 等 prerelease;至少应提升 patch/minor/major
123
- * 之一,例如 `0.0.1-alpha.1`。
124
- *
125
- * 这是无 I/O、无状态修改的 predicate,适合表单即时判断。实际 Vite / `hb-sdk build`
126
- * 流程会调用同规则的 package version validator:成功时返回 trim 后版本并写入 Manifest,
127
- * 失败时抛出带 `package.json.version` 来源的错误;调用本函数为 `true` 不能跳过正式构建。
128
- *
129
- * {@link resolveMiniappManifestPlatforms} 处理的是 Manifest `sdkVersion` 对平台声明策略的
130
- * SemVer precedence,不是当前小程序的发布 `version`。不要用本函数替代平台解析,也不要
131
- * 把项目 version 当作 sdkVersion 传入。
132
- *
133
- * @example
134
- * ```ts
135
- * import { isValidVersion } from '@heybox/hb-sdk/miniapp-publish'
136
- *
137
- * isValidVersion(' 1.2.3 ') // true
138
- * isValidVersion('1.2.3-alpha.1') // true
139
- * isValidVersion('0.0.1-alpha.1') // true
140
- * isValidVersion('1.2') // false
141
- * isValidVersion('v1.2.3') // false
142
- * isValidVersion('1.2.3+build.1') // false
143
- * isValidVersion('0.0.0-alpha') // false
144
- * ```
145
- *
146
- * @see {@link resolveMiniappManifestPlatforms}
147
- * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
148
- */
149
- export declare function isValidMiniappManifestVersion(version: string): boolean;
150
- export declare function validateMiniappPackageVersionForBuild(version: string): string;
151
- export declare function validateMiniappManifestVersion(version: unknown, sourceLabel?: string): string;
152
- export declare function renderMiniappManifest(manifest: MiniappManifest): string;
153
- export declare function parseMiniappManifestJson(raw: string, sourceLabel?: string): ParseMiniappManifestResult;
154
- /**
155
- * 校验发布 Manifest 并返回规范化后的已知字段。
156
- *
157
- * @param manifest - 从构建产物读取的 Manifest,图片和 Companion 路径相对构建目录。
158
- * @returns 新对象:规范化版本、名称、平台与游戏绑定,省略空绑定及未声明的可选字段;不保留未知字段。
159
- * @throws `Error` 版本、平台、资料、权限、窗口、游戏绑定或生成的 Companion 声明非法,以及类别缺失时抛出。
160
- * @remarks
161
- * 不修改输入对象,不执行文件 I/O;不会验证图片/归档是否存在、内容摘要是否匹配,也不查询远端发布资格。
162
- * 成功仅表示 Manifest 字段通过校验,不能替代文件检查与服务端发布预检。
163
- */
164
- export declare function validateMiniappManifestForDeploy(manifest: MiniappManifest): {
165
- category?: MiniappCategory | undefined;
166
- bindAppIds?: readonly string[] | undefined;
167
- window?: MiniappWindowDeclaration | undefined;
168
- companions?: MiniappCompanionManifestDeclarations | undefined;
169
- permissions?: Partial<Record<"userInfo" | "steamLibrary" | "share" | "storage" | "filesystem" | "clipboard" | "leaderboard" | "companion" | "appProtocol", import("./permissions").SimpleMiniappPermissionDeclaration> & {
170
- network: import("./permissions").NetworkMiniappPermissionDeclaration;
171
- }> | undefined;
172
- platforms: readonly ("android" | "ios" | "ohos" | "windows" | "macos" | "linux")[];
173
- name?: string | undefined;
174
- icon?: string | undefined;
175
- coverImages?: string[] | undefined;
176
- version: string;
177
- sdkVersion: string;
178
- };
179
- export declare function validateMiniappPlatforms(platforms: unknown, sourceLabel?: string): readonly MiniappPlatform[];
180
- export declare function areMiniappPlatformsEqual(left: readonly MiniappPlatform[], right: readonly MiniappPlatform[]): boolean;
181
- /**
182
- * Manifest 平台解析所采用的策略。
183
- *
184
- * @remarks
185
- * - `explicit`:Manifest 自身拥有合法、非空的 `platforms` 字段;无论 sdkVersion 是否低于
186
- * `0.9.0`,显式声明都优先且不会被兼容默认值覆盖。
187
- * - `legacy_mobile_default`:Manifest 完全没有 `platforms` 字段,且 sdkVersion 缺失/空白或
188
- * SemVer precedence 低于 `0.9.0`;最终按 {@link MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES} 兜底。
189
- *
190
- * 字面量 `legacy_mobile_default` 已作为详情接口 wire 值下发、并持久化进后端平台快照;
191
- * 兜底集合虽已由移动端三件套扩为五平台,这里仍保持原字符串不变,避免存储与协议迁移。
192
- */
193
- export type MiniappPlatformPolicy = 'explicit' | 'legacy_mobile_default';
194
- /**
195
- * Manifest 平台声明的规范化解析结果,供 CLI、开放平台网页、后端与 Runtime 共用。
196
- *
197
- * @remarks
198
- * 返回对象通过 `Object.freeze()` 冻结,字段和数组在类型层也都是只读值。调用方应把其中
199
- * 的数组视为不可变集合,不要修改、重新排序或自行合并 fallback。`platformsDeclared` 与
200
- * `policy` 用于保留“显式声明”与“历史缺声明默认”的来源差异。
201
- */
202
- export interface MiniappPlatformResolution {
203
- /**
204
- * 规范化后的显式声明。`explicit` 时按固定顺序
205
- * `android`、`ios`、`ohos`、`windows`、`macos`、`linux` 排列并只保留声明项;
206
- * `legacy_mobile_default` 时是冻结的空数组,表示历史产物没有声明,而不是“不支持平台”。
207
- */
208
- readonly declared: readonly MiniappPlatform[];
209
- /**
210
- * 最终用于展示、校验和运行判断的平台集合。`explicit` 时与规范化后的 `declared` 相同;
211
- * `legacy_mobile_default` 时固定为 {@link MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES}。
212
- */
213
- readonly effective: readonly MiniappPlatform[];
214
- /**
215
- * Manifest 是否拥有经过校验的显式 `platforms` 字段。显式声明时为 `true`,
216
- * 历史 fallback 得到相同 effective 集合时仍为 `false`。
217
- */
218
- readonly platformsDeclared: boolean;
219
- /** 本次解析采用的来源策略;与 `platformsDeclared` 保持一致。 */
220
- readonly policy: MiniappPlatformPolicy;
221
- }
222
- /**
223
- * 解析 Manifest 平台声明,是 `0.9.0` 硬切规则的唯一实现。
224
- *
225
- * @param sdkVersion - 产物写入 Manifest 的 hb-sdk 版本,不是小程序自身的发布 version。
226
- * `undefined`、空字符串和纯空白按历史“缺失 sdkVersion”处理;其他字符串会先 trim,再按
227
- * canonical strict SemVer 校验并参与 precedence 比较。
228
- * @param manifest - 待解析的不可信 Manifest。必须是非 `null`、非数组的对象;函数只读取其
229
- * 自有 `platforms` 字段,其他字段不参与平台解析。
230
- * @returns 冻结的 {@link MiniappPlatformResolution}。显式声明返回规范排序后的 declared /
231
- * effective;历史兼容返回空 declared 与历史兜底平台集合 effective。
232
- * @throws `manifest` 不是对象时抛出;非空 sdkVersion 不完整、含 `v` 前缀或 build metadata、
233
- * 不是 canonical SemVer 时抛出;sdkVersion precedence 达到 `0.9.0` 但缺少 platforms 时抛出;
234
- * 显式 platforms 不是非空数组、包含未知/非字符串/重复平台时抛出。
235
- *
236
- * @remarks
237
- * 解析顺序与后端领域层保持一致:先校验 Manifest 对象,再处理 sdkVersion;只要非空
238
- * sdkVersion 非法,即使存在合法 platforms 也会抛出,不会忽略版本。版本比较使用 SemVer
239
- * precedence,不做字符串比较:`0.9.0-alpha.1 < 0.9.0`,而 `0.10.0 > 0.9.0`。
240
- *
241
- * Manifest 拥有 `platforms` 字段时总是走 `explicit`:字段必须是非空数组,每项必须属于
242
- * `MINIAPP_PLATFORM_VALUES` 且不能重复;结果按固定平台词表排序,而不是保留输入顺序。
243
- * 该规则与 sdkVersion 是否缺失、低于或达到硬切点无关。显式声明一旦非法绝不回退到
244
- * legacy 默认值。
245
- *
246
- * Manifest 完全没有 `platforms` 字段时才判断硬切:sdkVersion 缺失/空白,或 precedence
247
- * 低于 `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION`(`0.9.0`)时返回
248
- * `legacy_mobile_default`;`0.9.0` 稳定版及更高版本直接抛错。`0.9.0-*` prerelease 仍低于
249
- * 稳定硬切点,因此可解析历史缺失声明。
250
- *
251
- * 返回对象被 `Object.freeze()`;显式声明数组和 legacy 的空 declared 数组也被冻结。所有
252
- * 数组均以 readonly 合同暴露,调用方应直接消费 `effective`,不得再比较版本或补默认值。
253
- *
254
- * 当前 Vite 构建入口
255
- * {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
256
- * 会从 `package.json#heybox.platforms` 读取并写入显式声明;legacy 分支只用于解析缺少字段
257
- * 的历史产物,不是新项目省略 platforms 的许可。
258
- *
259
- * {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/miniapp-publish/functions/isValidVersion | isValidVersion}
260
- * 判断的是小程序发布 `version`,并额外拒绝模板值 `0.0.0`;本函数的 sdkVersion 是 hb-sdk
261
- * 版本,`0.0.0` 本身是可比较的 strict SemVer 并低于硬切点。两类版本不能互换校验。
262
- *
263
- * @example
264
- * ```ts
265
- * import { resolveMiniappManifestPlatforms } from '@heybox/hb-sdk/miniapp-publish'
266
- *
267
- * const explicit = resolveMiniappManifestPlatforms('0.9.0', {
268
- * platforms: ['linux', 'android', 'macos'],
269
- * })
270
- * console.log(explicit)
271
- * // {
272
- * // declared: ['android', 'macos', 'linux'],
273
- * // effective: ['android', 'macos', 'linux'],
274
- * // platformsDeclared: true,
275
- * // policy: 'explicit'
276
- * // }
277
- *
278
- * const legacy = resolveMiniappManifestPlatforms('0.9.0-alpha.1', {})
279
- * console.log(legacy.effective) // ['android', 'ios', 'ohos', 'windows', 'macos']
280
- * ```
281
- *
282
- * @see {@link MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION}
283
- * @see {@link MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES}
284
- * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/miniapp-publish/functions/isValidVersion | isValidVersion}
285
- * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
286
- */
287
- export declare function resolveMiniappManifestPlatforms(sdkVersion: string | undefined, manifest: unknown): MiniappPlatformResolution;
288
- /**
289
- * 校验并归一化 `package.json#heybox.window` / `manifest.window` 声明。
290
- *
291
- * @remarks
292
- * 与 `heybox.permissions` 同样的严格风格:未知字段报错,不做静默忽略。
293
- * `width` / `height` 显式给出改名提示;`x` / `y` 按未知字段显式报错(`INV-NO-DEV-POSITION`)。
294
- * 未声明时返回 `undefined`,由调用方决定不写入产物。
295
- * @param value - 待校验的原始声明(不可信输入)。
296
- * @param sourceLabel - 报错前缀,默认指向开发者声明路径。
297
- * @throws 当声明不是非空对象、含未知字段、数值/布尔类型不合法或 min/default 不配对时抛出。
298
- */
299
- export declare function validateMiniappWindow(value: unknown, sourceLabel?: string): MiniappWindowDeclaration | undefined;
300
- /** 比较两份窗口声明是否逐字段一致;未声明视同 `undefined`。 */
301
- export declare function areMiniappWindowsEqual(left: MiniappWindowDeclaration | undefined, right: MiniappWindowDeclaration | undefined): boolean;
302
- export declare function validateSdkVersion(version: unknown, sourceLabel?: string): string;