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

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 (109) hide show
  1. package/CHANGELOG.md +10 -2
  2. package/README.md +11 -0
  3. package/dist/card-controller.cjs.js +194 -0
  4. package/dist/card-controller.esm.js +159 -0
  5. package/dist/cli-chunks/{build-BZg2rHkW.cjs → build-D91J_GAa.cjs} +13 -7
  6. package/dist/cli-chunks/{context-YrzmEOau.cjs → context-Xdd45FFd.cjs} +2 -2
  7. package/dist/cli-chunks/{create-fPvlqLbS.cjs → create-BzpdRC5r.cjs} +1 -1
  8. package/dist/cli-chunks/{dev-X8_kbp78.cjs → dev-C7acO3Kt.cjs} +55 -9
  9. package/dist/cli-chunks/{doctor-DdiucYs9.cjs → doctor-BgHRDQmG.cjs} +1 -1
  10. package/dist/cli-chunks/{index-BdbwsefW.cjs → index-CjhQXbxy.cjs} +4 -7
  11. package/dist/cli-chunks/{index-BGh-Izf8.cjs → index-TQwjvNjL.cjs} +32 -16
  12. package/dist/cli-chunks/{index.esm-WYIrPjkF.cjs → index.esm-dgqkvowo.cjs} +7 -7
  13. package/dist/cli-chunks/{login-DWmNuhWc.cjs → login-B14iGXHh.cjs} +2 -2
  14. package/dist/cli-chunks/{project-vite-BVDIeoHB.cjs → project-vite-CN6mMjzX.cjs} +1 -1
  15. package/dist/cli-chunks/{remote-BHJFxXyc.cjs → remote-C9RUiZxK.cjs} +22 -14
  16. package/dist/cli-chunks/runtime-gate-CfAkz0p-.cjs +201950 -0
  17. package/dist/cli-chunks/{runtime-permission-env-eiq8vE62.cjs → runtime-permission-env-L7OfyRcl.cjs} +9396 -2929
  18. package/dist/cli-chunks/{session-Dz1cGg0E.cjs → session-DZrr6RYK.cjs} +2 -1
  19. package/dist/cli-chunks/{skill-DC3cfPj2.cjs → skill-BHTVho1a.cjs} +2 -2
  20. package/dist/cli-chunks/{version-DYFkOykv.cjs → version-C_NaCZ8O.cjs} +1 -1
  21. package/dist/cli.cjs +1 -1
  22. package/dist/devtools/browser-dev-host/assets/browser-dev-host-KPFU0Lsa.js +102 -0
  23. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-CZsodKbP.js → desktop-app-launch-BNF9Yk4P.js} +3 -3
  24. package/dist/devtools/browser-dev-host/assets/{index-B9tOX3zG.js → index-DRRtB9Nm.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.json +4 -4
  37. package/types/card-controller.d.ts +3682 -0
  38. package/types/index.d.ts +7532 -35
  39. package/types/miniapp-publish/index.d.ts +542 -64
  40. package/types/protocol.d.ts +2083 -9
  41. package/types/vite/index.d.ts +25 -12
  42. package/dist/cli-chunks/runtime-gate-CR0dRMpQ.cjs +0 -65
  43. package/dist/devtools/browser-dev-host/assets/browser-dev-host-CO2_03W0.js +0 -102
  44. package/types/core/client.d.ts +0 -108
  45. package/types/core/csp-violation.d.ts +0 -5
  46. package/types/core/errors.d.ts +0 -78
  47. package/types/core/event-bus.d.ts +0 -11
  48. package/types/core/handshake-state.d.ts +0 -54
  49. package/types/core/history-observer.d.ts +0 -4
  50. package/types/core/mini-dev-console.d.ts +0 -36
  51. package/types/core/network-sanitize.d.ts +0 -31
  52. package/types/core/sdk.d.ts +0 -104
  53. package/types/core/singleton.d.ts +0 -372
  54. package/types/core/utils.d.ts +0 -10
  55. package/types/core/version.d.ts +0 -2
  56. package/types/devtools/device-logs.d.ts +0 -48
  57. package/types/miniapp-manifest/basic-info-browser.d.ts +0 -37
  58. package/types/miniapp-manifest/basic-info-image-header.d.ts +0 -6
  59. package/types/miniapp-manifest/basic-info-node.d.ts +0 -17
  60. package/types/miniapp-manifest/basic-info-placeholder.d.ts +0 -1
  61. package/types/miniapp-manifest/basic-info.d.ts +0 -33
  62. package/types/miniapp-manifest/bindings.d.ts +0 -70
  63. package/types/miniapp-manifest/category.d.ts +0 -11
  64. package/types/miniapp-manifest/companion-directory.d.ts +0 -2
  65. package/types/miniapp-manifest/companion-executable.d.ts +0 -4
  66. package/types/miniapp-manifest/companion-types.d.ts +0 -63
  67. package/types/miniapp-manifest/companions.d.ts +0 -17
  68. package/types/miniapp-manifest/index.d.ts +0 -7
  69. package/types/miniapp-manifest/node.d.ts +0 -22
  70. package/types/miniapp-manifest/permissions.d.ts +0 -48
  71. package/types/miniapp-manifest/runtime-gate.d.ts +0 -12
  72. package/types/miniapp-manifest/schema.d.ts +0 -302
  73. package/types/modules/auth/index.d.ts +0 -204
  74. package/types/modules/cloud/index.d.ts +0 -669
  75. package/types/modules/companion/index.d.ts +0 -1619
  76. package/types/modules/device/index.d.ts +0 -269
  77. package/types/modules/environment/index.d.ts +0 -238
  78. package/types/modules/files/index.d.ts +0 -5
  79. package/types/modules/files/registry.d.ts +0 -35
  80. package/types/modules/files/types.d.ts +0 -1548
  81. package/types/modules/navigation/app-pages/index.d.ts +0 -4
  82. package/types/modules/navigation/app-pages/types.d.ts +0 -135
  83. package/types/modules/navigation/index.d.ts +0 -312
  84. package/types/modules/network/index.d.ts +0 -457
  85. package/types/modules/network/observability.d.ts +0 -38
  86. package/types/modules/network/request-shape.d.ts +0 -44
  87. package/types/modules/share/copy-link.d.ts +0 -46
  88. package/types/modules/share/extra.d.ts +0 -5
  89. package/types/modules/share/index.d.ts +0 -294
  90. package/types/modules/share/screenshot.d.ts +0 -34
  91. package/types/modules/share/show-share-menu.d.ts +0 -29
  92. package/types/modules/share/types.d.ts +0 -201
  93. package/types/modules/storage/index.d.ts +0 -214
  94. package/types/modules/ui/index.d.ts +0 -315
  95. package/types/modules/user/get-info.d.ts +0 -44
  96. package/types/modules/user/index.d.ts +0 -245
  97. package/types/modules/user/revoke-authorization.d.ts +0 -31
  98. package/types/modules/user/steam-game-list.d.ts +0 -153
  99. package/types/modules/user/types.d.ts +0 -2
  100. package/types/modules/viewport/index.d.ts +0 -319
  101. package/types/protocol/capabilities.d.ts +0 -2
  102. package/types/protocol/constants.d.ts +0 -1
  103. package/types/protocol/dev-session.d.ts +0 -74
  104. package/types/protocol/guards.d.ts +0 -1
  105. package/types/protocol/runtime-permissions.d.ts +0 -2
  106. package/types/protocol/types.d.ts +0 -22
  107. package/types/skill-metadata.d.ts +0 -18
  108. package/types/vite/html-policy.d.ts +0 -6
  109. package/types/vite/runtime-permission-env.d.ts +0 -9
@@ -1,61 +1,541 @@
1
+ import { MiniProgramPermissionKey, WorkspaceCardsManifest } from '@heybox/hb-sdk-protocol';
2
+
3
+ /** 小程序发布类别:`tool` 为工具、`game` 为游戏、`other` 为其他;新上传版本必须声明,历史读取可缺省。 */
4
+ type MiniappCategory = 'tool' | 'game' | 'other';
5
+ /**
6
+ * 校验项目配置或产物中的小程序类别。
7
+ *
8
+ * @param value - 待校验值,只接受 `tool`、`game`、`other` 或 `undefined`;不做 trim 或大小写转换。
9
+ * @param sourceLabel - 错误消息中的字段来源,默认 `package.json#heybox.category`。
10
+ * @returns 合法类别原值;输入 `undefined` 时返回 `undefined`,由发布流程另行检查是否必填。
11
+ * @throws `Error` 输入为其他值(包括 null 或空字符串)时抛出带字段来源的错误。
12
+ */
13
+ declare function parseMiniappCategory(value: unknown, sourceLabel?: string): MiniappCategory | undefined;
14
+
15
+ type MiniappPermissionKey = MiniProgramPermissionKey;
16
+ /** 构建产物中一个已启用的权限声明;未启用的项目配置项会在构建时被省略。 */
17
+ interface SimpleMiniappPermissionDeclaration {
18
+ /** 固定为 true,表示应用请求使用该权限;不等同于平台已经批准。 */
19
+ enabled: true;
20
+ }
21
+ /** 构建产物中的网络权限声明,附带是否请求小黑盒官方域名访问的配置。 */
22
+ interface NetworkMiniappPermissionDeclaration extends SimpleMiniappPermissionDeclaration {
23
+ /** 是否申请官方域名访问,项目省略时规范化为 false;实际启用还需远端批准该配置。 */
24
+ useOfficialDomain: boolean;
25
+ }
26
+ /**
27
+ * 构建规范化后写入 Manifest 的权限对象;仅包含请求启用的权限,空对象表示无权限需求。
28
+ *
29
+ * @remarks
30
+ * 这是本地声明,不是运行时授权结果。仅需声明的权限按声明生效;要求平台批准的权限还需与远端批准
31
+ * 求交,network 的 useOfficialDomain 配置也需同时获批。显式声明中缺失某权限表示不请求该权限;
32
+ * SDK 0.9 系列起项目必须提供该对象,0.8 历史产物未声明时另按迁移规则处理。
33
+ */
34
+ type MiniappPermissionDeclarations = Partial<Record<Exclude<MiniappPermissionKey, 'network'>, SimpleMiniappPermissionDeclaration> & {
35
+ network: NetworkMiniappPermissionDeclaration;
36
+ }>;
37
+
38
+ declare const MINIAPP_COMPANION_TARGETS: readonly ["windows-x64", "macos-arm64"];
39
+ declare const MINIAPP_COMPANION_CAPABILITIES: readonly ["stdio", "attachments", "notifications"];
40
+ /** Companion 二进制目标:Windows x64 或 macOS arm64;不是小程序的通用平台列表。 */
41
+ type MiniappCompanionTarget = (typeof MINIAPP_COMPANION_TARGETS)[number];
42
+ /**
43
+ * Companion 声明的能力标识:`stdio` 为标准输入输出、`attachments` 为受管附件、`notifications` 为通知。
44
+ * 声明不代表当前宿主可用;实际能力以启动后 Session 返回的 capability 集合为准。
45
+ */
46
+ type MiniappCompanionCapability = (typeof MINIAPP_COMPANION_CAPABILITIES)[number];
47
+ /** 构建生成的单个 Companion ZIP 归档描述;不使用项目声明中的 source 目录。 */
48
+ interface MiniappCompanionManifestTarget {
49
+ /** 相对构建目录的 ZIP 路径,固定为 `companions/{alias}/{target}.zip`。 */
50
+ path: string;
51
+ /** ZIP 文件完整字节数,必须为正安全整数;不是解压后的大小。 */
52
+ size: number;
53
+ /** ZIP 完整字节的 SHA-256,使用 64 位小写十六进制字符串。 */
54
+ sha256: string;
55
+ /** 解压归档中的启动入口,由构建时从项目声明校验并保留。 */
56
+ entrypoint: {
57
+ /** 普通可执行文件或 macOS `.app` bundle;Windows 仅支持 executable。 */
58
+ kind: 'executable' | 'app-bundle';
59
+ /** 相对归档根目录的入口路径,使用 `/` 分隔;不是 ZIP 路径或项目 source 路径。 */
60
+ path: string;
61
+ };
62
+ /** V1 固定为普通权限启动,不支持请求管理员权限。 */
63
+ elevation: 'none';
64
+ /** 启动参数列表;最多 64 项,每项 1024 UTF-8 bytes,总计 16 KiB,不允许 NUL、CR 或 LF。 */
65
+ args: string[];
66
+ }
67
+ /** 一个 Companion alias 对应的展示信息、声明能力与平台归档。 */
68
+ interface MiniappCompanionManifestDefinition {
69
+ /** 非空展示名称,最多 120 个 Unicode code point。 */
70
+ displayName: string;
71
+ /** 无重复的声明能力列表,可为空;不表示平台批准或宿主已提供这些能力。 */
72
+ capabilities: MiniappCompanionCapability[];
73
+ /** 按二进制目标索引的已生成归档,至少提供一个目标。 */
74
+ targets: Partial<Record<MiniappCompanionTarget, MiniappCompanionManifestTarget>>;
75
+ }
76
+ /**
77
+ * 发布 Manifest 的 Companion 声明,键为以小写字母开头、长度 1–32 的小写字母/数字/连字符 alias。
78
+ *
79
+ * @remarks
80
+ * 声明时对象必须非空,所有 alias 合计最多 64 个 target 描述符。归档由构建插件生成,
81
+ * 不应把含 source 目录的项目配置直接当作此类型;运行时还需声明 companion 权限并获得平台批准。
82
+ */
83
+ type MiniappCompanionManifestDeclarations = Record<string, MiniappCompanionManifestDefinition>;
84
+
85
+ /**
86
+ * `package.json#heybox.platforms` 接受的平台值,顺序同时是 Manifest 的规范化输出顺序。
87
+ *
88
+ * @remarks 项目仍应只声明实际完成适配并经过验收的平台;模板默认值不是自动兼容承诺。
89
+ */
90
+ declare const MINIAPP_PLATFORM_VALUES: readonly ["android", "ios", "ohos", "windows", "macos", "linux"];
91
+ /** `package.json#heybox.platforms` 中单个平台标识。 */
92
+ type MiniappPlatform = (typeof MINIAPP_PLATFORM_VALUES)[number];
93
+ /** 平台声明硬切点:产物 hb-sdk 版本达到该值时,必须显式声明非空 `platforms`。 */
94
+ declare const MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION = "0.9.0";
95
+ /**
96
+ * 历史兜底平台集合。
97
+ *
98
+ * @remarks
99
+ * 仅在 `sdkVersion` 缺失或 SemVer precedence 低于 `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION`,
100
+ * 且 Manifest 完全没有 `platforms` 字段时生效,不是任何非法声明的兜底。
101
+ *
102
+ * 不含 `linux`:客户端暂无 linux 基线,后端 `x_os_type` 也不映射该平台,声明了也进不了运行门禁。
103
+ */
104
+ declare const MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES: readonly ["android", "ios", "ohos", "windows", "macos"];
105
+ /**
106
+ * 历史兜底平台集合的旧名称。
107
+ *
108
+ * @deprecated Since 0.8.3. 请改用 {@link MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES},本别名取值与之一致,仅为不破坏既有 import 保留。
109
+ */
110
+ declare const MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES: readonly ["android", "ios", "ohos", "windows", "macos"];
111
+ /**
112
+ * `package.json#heybox.window` 的开发者声明字段。
113
+ *
114
+ * @remarks
115
+ * 只描述**开窗初值**与可缩放性,不是窗口当前尺寸;运行期尺寸请用 `viewport.getWindowInfo()`。
116
+ * 位置(`x` / `y`)不开放声明,由用户拖拽产生并由宿主记忆。
117
+ */
118
+ interface MiniappWindowDeclaration {
119
+ /** 默认窗口内容宽度(逻辑像素),正整数,不超过 16384。 */
120
+ defaultWidth?: number;
121
+ /** 默认窗口内容高度(逻辑像素),正整数,不超过 16384。 */
122
+ defaultHeight?: number;
123
+ /** 尺寸下限宽度;必须与 defaultWidth 同时声明,且不大于 defaultWidth。 */
124
+ minWidth?: number;
125
+ /** 尺寸下限高度;必须与 defaultHeight 同时声明,且不大于 defaultHeight。 */
126
+ minHeight?: number;
127
+ /** 是否允许用户手动拖拽改变尺寸。 */
128
+ resizable?: boolean;
129
+ }
130
+ /** 构建生成的小程序发布 Manifest;可选字段用于兼容历史产物,发布前仍需完整校验。 */
131
+ interface MiniappManifest {
132
+ /** 原始产物可带额外元数据;发布校验返回值只保留已知字段。 */
133
+ [key: string]: unknown;
134
+ /** 展示名称;SDK `0.8.2` 起需与图标、封面一起提供。 */
135
+ name?: string;
136
+ /** 相对构建目录的图标路径。 */
137
+ icon?: string;
138
+ /** 相对构建目录的封面路径,1–5 张,按展示顺序排列。 */
139
+ coverImages?: string[];
140
+ /** 生成产物时实际安装的 hb-sdk 版本,不是小程序发布版本。 */
141
+ sdkVersion: string;
142
+ /** 小程序发布版本:完整 SemVer,可含 prerelease,不允许 build metadata 或 core `0.0.0`。 */
143
+ version: string;
144
+ /** 小程序承诺适配的非空、无重复目标平台列表。 */
145
+ platforms: readonly MiniappPlatform[];
146
+ /** 产物权限声明;SDK `0.9` 系列起必须显式提供,无权限需求时使用空对象。 */
147
+ permissions?: MiniappPermissionDeclarations;
148
+ /** 构建生成的 Companion 归档声明,不是含 source 目录的项目 authoring 配置。 */
149
+ companions?: MiniappCompanionManifestDeclarations;
150
+ /** 构建生成的工作区卡片不可变合同与执行制品回执。 */
151
+ workspaceCards?: WorkspaceCardsManifest;
152
+ /** 桌面窗口的可选初值、最小尺寸及是否可缩放。 */
153
+ window?: MiniappWindowDeclaration;
154
+ /** 关联游戏 App ID 字符串,最多 20 个;空列表在发布校验结果中省略。 */
155
+ bindAppIds?: readonly string[];
156
+ /** 发布类别;历史读取可缺省,发布校验必须提供。 */
157
+ category?: MiniappCategory;
158
+ }
159
+ /**
160
+ * 判断小程序版本是否符合公开 Manifest 版本规则。
161
+ *
162
+ * @param version - 待判断的 `package.json.version` / Manifest 版本字符串;首尾空白会先被
163
+ * 移除,但函数不会把规范化后的字符串返回给调用方。
164
+ * @returns trim 后满足小程序严格版本规则时返回 `true`,否则返回 `false`。对类型声明允许的
165
+ * 字符串输入,该函数只返回布尔值,不抛出校验错误。
166
+ *
167
+ * @remarks
168
+ * 接受形式为 canonical SemVer `MAJOR.MINOR.PATCH[-PRERELEASE]`。trim 后的输入必须与
169
+ * `semver` 严格解析得到的 `version` 完全相同,因此不完整版本(如 `1.2`)、`v` / `=`
170
+ * 前缀、范围表达式、额外段,以及 major/minor/patch 或纯数字 prerelease 标识中的前导零
171
+ * 都返回 `false`。只有首尾空白会被忽略,内部空白不会被修复。
172
+ *
173
+ * 合法 prerelease(如 `1.2.3-alpha.1`、`0.0.1-rc.0`)可以使用。build metadata 即使符合
174
+ * 标准 SemVer(如 `1.2.3+build.1`)也被小程序发布合同显式禁止。模板占位 core
175
+ * `0.0.0` 同样禁止,包括 `0.0.0-alpha` 等 prerelease;至少应提升 patch/minor/major
176
+ * 之一,例如 `0.0.1-alpha.1`。
177
+ *
178
+ * 这是无 I/O、无状态修改的 predicate,适合表单即时判断。实际 Vite / `hb-sdk build`
179
+ * 流程会调用同规则的 package version validator:成功时返回 trim 后版本并写入 Manifest,
180
+ * 失败时抛出带 `package.json.version` 来源的错误;调用本函数为 `true` 不能跳过正式构建。
181
+ *
182
+ * {@link resolveMiniappManifestPlatforms} 处理的是 Manifest `sdkVersion` 对平台声明策略的
183
+ * SemVer precedence,不是当前小程序的发布 `version`。不要用本函数替代平台解析,也不要
184
+ * 把项目 version 当作 sdkVersion 传入。
185
+ *
186
+ * @example
187
+ * ```ts
188
+ * import { isValidVersion } from '@heybox/hb-sdk/miniapp-publish'
189
+ *
190
+ * isValidVersion(' 1.2.3 ') // true
191
+ * isValidVersion('1.2.3-alpha.1') // true
192
+ * isValidVersion('0.0.1-alpha.1') // true
193
+ * isValidVersion('1.2') // false
194
+ * isValidVersion('v1.2.3') // false
195
+ * isValidVersion('1.2.3+build.1') // false
196
+ * isValidVersion('0.0.0-alpha') // false
197
+ * ```
198
+ *
199
+ * @see {@link resolveMiniappManifestPlatforms}
200
+ * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
201
+ */
202
+ declare function isValidMiniappManifestVersion(version: string): boolean;
203
+ /**
204
+ * 校验发布 Manifest 并返回规范化后的已知字段。
205
+ *
206
+ * @param manifest - 从构建产物读取的 Manifest,图片和 Companion 路径相对构建目录。
207
+ * @returns 新对象:规范化版本、名称、平台与游戏绑定,省略空绑定及未声明的可选字段;不保留未知字段。
208
+ * @throws `Error` 版本、平台、资料、权限、窗口、游戏绑定或生成的 Companion 声明非法,以及类别缺失时抛出。
209
+ * @remarks
210
+ * 不修改输入对象,不执行文件 I/O;不会验证图片/归档是否存在、内容摘要是否匹配,也不查询远端发布资格。
211
+ * 成功仅表示 Manifest 字段通过校验,不能替代文件检查与服务端发布预检。
212
+ */
213
+ declare function validateMiniappManifestForDeploy(manifest: MiniappManifest): {
214
+ category?: MiniappCategory | undefined;
215
+ bindAppIds?: readonly string[] | undefined;
216
+ window?: MiniappWindowDeclaration | undefined;
217
+ workspaceCards?: WorkspaceCardsManifest | undefined;
218
+ companions?: MiniappCompanionManifestDeclarations | undefined;
219
+ permissions?: Partial<Record<"storage" | "workspaceCards" | "userInfo" | "steamLibrary" | "share" | "cloud_storage" | "filesystem" | "clipboard" | "leaderboard" | "companion" | "appProtocol", SimpleMiniappPermissionDeclaration> & {
220
+ network: NetworkMiniappPermissionDeclaration;
221
+ }> | undefined;
222
+ platforms: readonly ("windows" | "macos" | "android" | "ios" | "ohos" | "linux")[];
223
+ name?: string | undefined;
224
+ icon?: string | undefined;
225
+ coverImages?: string[] | undefined;
226
+ version: string;
227
+ sdkVersion: string;
228
+ };
229
+ /**
230
+ * Manifest 平台解析所采用的策略。
231
+ *
232
+ * @remarks
233
+ * - `explicit`:Manifest 自身拥有合法、非空的 `platforms` 字段;无论 sdkVersion 是否低于
234
+ * `0.9.0`,显式声明都优先且不会被兼容默认值覆盖。
235
+ * - `legacy_mobile_default`:Manifest 完全没有 `platforms` 字段,且 sdkVersion 缺失/空白或
236
+ * SemVer precedence 低于 `0.9.0`;最终按 {@link MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES} 兜底。
237
+ *
238
+ * 字面量 `legacy_mobile_default` 已作为详情接口 wire 值下发、并持久化进后端平台快照;
239
+ * 兜底集合虽已由移动端三件套扩为五平台,这里仍保持原字符串不变,避免存储与协议迁移。
240
+ */
241
+ type MiniappPlatformPolicy = 'explicit' | 'legacy_mobile_default';
242
+ /**
243
+ * Manifest 平台声明的规范化解析结果,供 CLI、开放平台网页、后端与 Runtime 共用。
244
+ *
245
+ * @remarks
246
+ * 返回对象通过 `Object.freeze()` 冻结,字段和数组在类型层也都是只读值。调用方应把其中
247
+ * 的数组视为不可变集合,不要修改、重新排序或自行合并 fallback。`platformsDeclared` 与
248
+ * `policy` 用于保留“显式声明”与“历史缺声明默认”的来源差异。
249
+ */
250
+ interface MiniappPlatformResolution {
251
+ /**
252
+ * 规范化后的显式声明。`explicit` 时按固定顺序
253
+ * `android`、`ios`、`ohos`、`windows`、`macos`、`linux` 排列并只保留声明项;
254
+ * `legacy_mobile_default` 时是冻结的空数组,表示历史产物没有声明,而不是“不支持平台”。
255
+ */
256
+ readonly declared: readonly MiniappPlatform[];
257
+ /**
258
+ * 最终用于展示、校验和运行判断的平台集合。`explicit` 时与规范化后的 `declared` 相同;
259
+ * `legacy_mobile_default` 时固定为 {@link MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES}。
260
+ */
261
+ readonly effective: readonly MiniappPlatform[];
262
+ /**
263
+ * Manifest 是否拥有经过校验的显式 `platforms` 字段。显式声明时为 `true`,
264
+ * 历史 fallback 得到相同 effective 集合时仍为 `false`。
265
+ */
266
+ readonly platformsDeclared: boolean;
267
+ /** 本次解析采用的来源策略;与 `platformsDeclared` 保持一致。 */
268
+ readonly policy: MiniappPlatformPolicy;
269
+ }
270
+ /**
271
+ * 解析 Manifest 平台声明,是 `0.9.0` 硬切规则的唯一实现。
272
+ *
273
+ * @param sdkVersion - 产物写入 Manifest 的 hb-sdk 版本,不是小程序自身的发布 version。
274
+ * `undefined`、空字符串和纯空白按历史“缺失 sdkVersion”处理;其他字符串会先 trim,再按
275
+ * canonical strict SemVer 校验并参与 precedence 比较。
276
+ * @param manifest - 待解析的不可信 Manifest。必须是非 `null`、非数组的对象;函数只读取其
277
+ * 自有 `platforms` 字段,其他字段不参与平台解析。
278
+ * @returns 冻结的 {@link MiniappPlatformResolution}。显式声明返回规范排序后的 declared /
279
+ * effective;历史兼容返回空 declared 与历史兜底平台集合 effective。
280
+ * @throws `manifest` 不是对象时抛出;非空 sdkVersion 不完整、含 `v` 前缀或 build metadata、
281
+ * 不是 canonical SemVer 时抛出;sdkVersion precedence 达到 `0.9.0` 但缺少 platforms 时抛出;
282
+ * 显式 platforms 不是非空数组、包含未知/非字符串/重复平台时抛出。
283
+ *
284
+ * @remarks
285
+ * 解析顺序与后端领域层保持一致:先校验 Manifest 对象,再处理 sdkVersion;只要非空
286
+ * sdkVersion 非法,即使存在合法 platforms 也会抛出,不会忽略版本。版本比较使用 SemVer
287
+ * precedence,不做字符串比较:`0.9.0-alpha.1 < 0.9.0`,而 `0.10.0 > 0.9.0`。
288
+ *
289
+ * Manifest 拥有 `platforms` 字段时总是走 `explicit`:字段必须是非空数组,每项必须属于
290
+ * `MINIAPP_PLATFORM_VALUES` 且不能重复;结果按固定平台词表排序,而不是保留输入顺序。
291
+ * 该规则与 sdkVersion 是否缺失、低于或达到硬切点无关。显式声明一旦非法绝不回退到
292
+ * legacy 默认值。
293
+ *
294
+ * Manifest 完全没有 `platforms` 字段时才判断硬切:sdkVersion 缺失/空白,或 precedence
295
+ * 低于 `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION`(`0.9.0`)时返回
296
+ * `legacy_mobile_default`;`0.9.0` 稳定版及更高版本直接抛错。`0.9.0-*` prerelease 仍低于
297
+ * 稳定硬切点,因此可解析历史缺失声明。
298
+ *
299
+ * 返回对象被 `Object.freeze()`;显式声明数组和 legacy 的空 declared 数组也被冻结。所有
300
+ * 数组均以 readonly 合同暴露,调用方应直接消费 `effective`,不得再比较版本或补默认值。
301
+ *
302
+ * 当前 Vite 构建入口
303
+ * {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
304
+ * 会从 `package.json#heybox.platforms` 读取并写入显式声明;legacy 分支只用于解析缺少字段
305
+ * 的历史产物,不是新项目省略 platforms 的许可。
306
+ *
307
+ * {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/miniapp-publish/functions/isValidVersion | isValidVersion}
308
+ * 判断的是小程序发布 `version`,并额外拒绝模板值 `0.0.0`;本函数的 sdkVersion 是 hb-sdk
309
+ * 版本,`0.0.0` 本身是可比较的 strict SemVer 并低于硬切点。两类版本不能互换校验。
310
+ *
311
+ * @example
312
+ * ```ts
313
+ * import { resolveMiniappManifestPlatforms } from '@heybox/hb-sdk/miniapp-publish'
314
+ *
315
+ * const explicit = resolveMiniappManifestPlatforms('0.9.0', {
316
+ * platforms: ['linux', 'android', 'macos'],
317
+ * })
318
+ * console.log(explicit)
319
+ * // {
320
+ * // declared: ['android', 'macos', 'linux'],
321
+ * // effective: ['android', 'macos', 'linux'],
322
+ * // platformsDeclared: true,
323
+ * // policy: 'explicit'
324
+ * // }
325
+ *
326
+ * const legacy = resolveMiniappManifestPlatforms('0.9.0-alpha.1', {})
327
+ * console.log(legacy.effective) // ['android', 'ios', 'ohos', 'windows', 'macos']
328
+ * ```
329
+ *
330
+ * @see {@link MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION}
331
+ * @see {@link MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES}
332
+ * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/miniapp-publish/functions/isValidVersion | isValidVersion}
333
+ * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
334
+ */
335
+ declare function resolveMiniappManifestPlatforms(sdkVersion: string | undefined, manifest: unknown): MiniappPlatformResolution;
336
+
337
+ /**
338
+ * {@link parseMiniappBindAppIds} 的诊断文案配置。
339
+ *
340
+ * @remarks
341
+ * 该选项只改变抛出 `Error` 的来源前缀,不改变校验、排序或返回值。函数不会 trim、补全或
342
+ * 校验标签;调用方应传能准确定位配置位置的非空文本。
343
+ */
344
+ interface ParseMiniappBindAppIdsOptions {
345
+ /**
346
+ * 写入每条错误消息开头的来源标签,默认 `package.json#heybox.bindAppIds`。
347
+ *
348
+ * @remarks
349
+ * Manifest 校验器会传 `manifest.bindAppIds`,因此同一个非法值可明确指出来自项目声明还是
350
+ * 构建产物。传入值会原样插入文案,不会自动添加冒号、路径或字段名。
351
+ */
352
+ sourceLabel?: string;
353
+ }
354
+ /**
355
+ * 校验并规范化小程序关联的游戏 App ID。
356
+ *
357
+ * @param value - 不可信声明。`undefined` 和 `[]` 均返回空绑定;其他值必须是最多 20 项的
358
+ * 字符串数组,不接受 `null`、单个字符串、number 数组或类数组对象。
359
+ * @param options - 可选诊断来源;`sourceLabel` 默认 `package.json#heybox.bindAppIds`,并原样
360
+ * 作为所有错误消息的前缀。
361
+ * @returns 新建、按 appid 数值升序排列且经 `Object.freeze` 冻结的 `readonly string[]`。
362
+ * 输入数组及其顺序不会被修改;空输入也返回新的冻结空数组。
363
+ * @throws `Error` `${sourceLabel} 必须是字符串数组`:`value` 不是数组。
364
+ * @throws `Error` `${sourceLabel} 最多包含 20 个游戏 appid`:输入数组超过 20 项;数量检查
365
+ * 先于逐项格式检查。
366
+ * @throws `Error` `${sourceLabel} 包含非法游戏 appid:<value>`:任一项不是 string,或不匹配
367
+ * `/^[1-9]\d*$/`。因此空串、首尾空白、`0`、前导零、正负号、小数、指数和非十进制字符
368
+ * 都不会被自动修正。
369
+ * @throws `Error` `${sourceLabel} 包含超出正 int32 范围的游戏 appid:<value>`:十进制值
370
+ * 大于 `2147483647` 或不能成为安全整数。
371
+ * @throws `Error` `${sourceLabel} 包含重复游戏 appid:<value>`:规范字符串在同一数组重复。
372
+ *
373
+ * @remarks
374
+ * 合法范围是闭区间 `1..2147483647`,每项在输出中仍保持十进制 string。排序按数值而不是
375
+ * 字典序执行,所以 `['3513350', '730', '10']` 输出为 `['10', '730', '3513350']`。
376
+ * 函数先复制后排序并冻结结果,不排序或冻结调用方传入的数组。
377
+ *
378
+ * 这是同步、纯离线的格式规范化函数,不访问网络,也不确认 appid 是否真实存在、可绑定或
379
+ * 属于当前开发者。`miniappManifest()` 用它校验 `package.json#heybox.bindAppIds` 并把非空结果
380
+ * 写入 Manifest;远端 deploy 预检和提审才校验游戏可用性。缺失和空数组在普通构建中都表示
381
+ * 无绑定,函数本身不处理 `remote deploy --from-version` 的历史快照继承语义。
382
+ *
383
+ * `bindAppIds` 是版本发布元数据,不是 Runtime 权限,也不会因调用
384
+ * [navigation.openAppPage](/reference/sdk/navigation/openAppPage) 而变化。后者的 `appId` 是一次
385
+ * 页面导航参数,允许 string 或 number、只要求字符串化后非空,不适用本函数的数组、int32、
386
+ * 前导零、去重、20 项或排序规则。
387
+ *
388
+ * @example
389
+ * ```ts
390
+ * import { parseMiniappBindAppIds } from '@heybox/hb-sdk/miniapp-publish'
391
+ *
392
+ * const declared = ['3513350', '730', '10']
393
+ * const appIds = parseMiniappBindAppIds(declared)
394
+ *
395
+ * console.log(appIds) // ['10', '730', '3513350']
396
+ * console.log(declared) // ['3513350', '730', '10'],输入顺序不变
397
+ * console.log(Object.isFrozen(appIds)) // true
398
+ * ```
399
+ *
400
+ * @see [miniappManifest](/reference/symbols/vite/functions/miniappManifest)
401
+ * @see [navigation.openAppPage](/reference/sdk/navigation/openAppPage)
402
+ * @see [CLI 与远端发布](/guide/cli#生产构建)
403
+ */
404
+ declare function parseMiniappBindAppIds(value: unknown, options?: ParseMiniappBindAppIdsOptions): readonly string[];
405
+
406
+ /** 小程序展示资料;项目声明和构建产物使用相同字段,图片路径的根目录不同。 */
407
+ interface MiniappBasicInfo {
408
+ /** NFKC 规范化并移除首尾 Unicode 空白后的名称,长度为 1–40 个 Unicode code point。 */
409
+ name: string;
410
+ /** 图标的规范相对路径;项目声明相对项目目录,Manifest 相对构建目录。 */
411
+ icon: string;
412
+ /** 1–5 个互不重复的封面相对路径,按展示顺序排列。 */
413
+ coverImages: string[];
414
+ }
415
+ /**
416
+ * 规范化并校验小程序展示名称。
417
+ *
418
+ * @param raw - 原始名称,必须是字符串。
419
+ * @returns NFKC 规范化、去除首尾 Unicode White_Space 后的名称;不折叠规范化后的内部空白。
420
+ * @throws `Error` 输入不是字符串,或规范化后不是 1–40 个 Unicode code point、不含文字或数字,或包含控制字符、
421
+ * 格式字符、行/段分隔符以及 HTML 特殊字符 `<`、`>`、`&`、双引号或单引号时抛出。
422
+ */
423
+ declare function normalizeBasicInfoName(raw: unknown): string;
424
+ /**
425
+ * 校验项目声明或 Manifest 中的小程序展示资料。
426
+ *
427
+ * @param value - `package.json#heybox` 或 Manifest 对象,读取 `name`、`icon`、`coverImages`。
428
+ * @param sdkVersion - 产物 SDK 版本,默认 `0.8.2`;用于判断历史产物是否允许缺失全部资料。
429
+ * @returns 名称规范化后的新资料对象;仅版本早于 `0.8.2` 且三项均无自有属性时返回 `undefined`。
430
+ * @throws `Error` SDK 版本非法、资料字段不齐、名称/图片路径非法,或封面不是 1–5 个互不重复的路径时抛出。
431
+ * @remarks
432
+ * 图片路径必须使用 `/` 分隔的非空相对路径,扩展名为 JPEG、PNG、GIF 或 WebP;拒绝 URL、点段、
433
+ * 控制字符和构建/缓存等保留目录。此函数只校验声明,不读取文件,也不验证图片字节、尺寸或存在性。
434
+ */
435
+ declare function parseMiniappBasicInfo(value: Record<string, unknown>, sdkVersion?: string): MiniappBasicInfo | undefined;
436
+
437
+ /**
438
+ * 在浏览器中校验构建产物的展示资料图片,并创建预览 URL。
439
+ *
440
+ * @param manifest - 构建产物 Manifest,必须包含合法的 `sdkVersion`。
441
+ * @param files - 构建文件列表;`relativePath` 必须精确匹配 Manifest 中的图片路径。
442
+ * @returns 名称、图标 `icon_url` 和按原顺序排列的 `cover_image_urls`;允许缺失资料的历史产物返回 `undefined`。
443
+ * @throws `Error` 资料非法、图片缺失/为空/超过 10 MiB、格式与扩展名不符、超过 4000 万像素、
444
+ * icon 不是 200×200,或仍使用脚手架占位图片时拒绝;浏览器解码和摘要计算失败也会拒绝。
445
+ * @remarks
446
+ * 需要浏览器提供 `crypto.subtle`、`createImageBitmap` 和 object URL API;不生成或回写 Manifest。
447
+ * 失败时会释放本次已创建的 URL;成功后所有 URL 由调用方在预览结束或替换时释放。
448
+ * @example
449
+ * ```ts
450
+ * import { previewMiniappBasicInfo } from '@heybox/hb-sdk/miniapp-publish';
451
+ *
452
+ * const preview = await previewMiniappBasicInfo(manifest, files);
453
+ * if (preview) {
454
+ * try {
455
+ * const image = new Image();
456
+ * image.src = preview.icon_url;
457
+ * await image.decode();
458
+ * document.body.append(image);
459
+ * } finally {
460
+ * // 已加载的图像可继续显示;不再需要从这些 URL 加载时释放。
461
+ * [preview.icon_url, ...preview.cover_image_urls].forEach(URL.revokeObjectURL);
462
+ * }
463
+ * }
464
+ * ```
465
+ */
466
+ declare function previewMiniappBasicInfo(manifest: Record<string, unknown>, files: readonly {
467
+ relativePath: string;
468
+ file: Blob;
469
+ }[]): Promise<{
470
+ name: string;
471
+ icon_url: string;
472
+ cover_image_urls: string[];
473
+ } | undefined>;
474
+
475
+ /**
476
+ * 检查 HTML 是否包含 Runtime Gate 的三个结构标记。
477
+ *
478
+ * @param html - 待检查的完整 HTML 文本,使用 HTML parser 解析。
479
+ * @returns Gate、隐藏样式及 bootstrap 标记均出现时返回 `true`,否则返回 `false`。
480
+ * @remarks 只识别标记,不验证脚本内容、标记所在节点或宿主握手;不能据此判断页面安全或实际可运行。
481
+ */
482
+ declare function hasMiniappRuntimeGate(html: string): boolean;
483
+
1
484
  /** CDN 上传接口使用的小程序产物业务 scope。 */
2
- export declare const MINIAPP_UPLOAD_SCOPE = "activity";
485
+ declare const MINIAPP_UPLOAD_SCOPE = "activity";
3
486
  /** 完整 CDN 上传 key 的默认长度上限;旧固定版本流程按字符计数,上传会话流程按 UTF-8 bytes 计数。 */
4
- export declare const ACTIVITY_UPLOAD_KEY_MAX_LENGTH = 64;
487
+ declare const ACTIVITY_UPLOAD_KEY_MAX_LENGTH = 64;
5
488
  /** 单次向 CDN 申请上传信息时包含的最大文件数;当前合同固定为 `50`。 */
6
- export declare const MINIAPP_UPLOAD_BATCH_SIZE = 50;
489
+ declare const MINIAPP_UPLOAD_BATCH_SIZE = 50;
7
490
  /** Web 构建产物的默认总大小上限,单位为 bytes;当前为 100 MiB。 */
8
- export declare const MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES: number;
491
+ declare const MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES: number;
9
492
  /** Companion 归档的临时总大小上限,单位为 bytes;当前为 500 MiB。 */
10
- export declare const MINIAPP_COMPANION_UPLOAD_TEMPORARY_SIZE_LIMIT_BYTES: number;
493
+ declare const MINIAPP_COMPANION_UPLOAD_TEMPORARY_SIZE_LIMIT_BYTES: number;
11
494
  /** 查询当前开发者账号是否具备小程序访问资格的开放平台 API 路径。 */
12
- export declare const USER_MINIPROGRAM_ACCESS_STATUS_API_PATH = "/mall/developer/user_miniprogram/access_status";
495
+ declare const USER_MINIPROGRAM_ACCESS_STATUS_API_PATH = "/mall/developer/user_miniprogram/access_status";
13
496
  /** 查询当前开发者可管理主体列表的开放平台 API 路径。 */
14
- export declare const DEVELOPER_ENTITY_LIST_API_PATH = "/mall/developer/entity/list";
497
+ declare const DEVELOPER_ENTITY_LIST_API_PATH = "/mall/developer/entity/list";
15
498
  /** 切换当前开发者主体的开放平台 API 路径。 */
16
- export declare const DEVELOPER_ENTITY_SWITCH_API_PATH = "/mall/developer/entity/switch";
499
+ declare const DEVELOPER_ENTITY_SWITCH_API_PATH = "/mall/developer/entity/switch";
17
500
  /** 查询当前主体下小程序列表的开放平台 API 路径。 */
18
- export declare const LIST_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/list";
501
+ declare const LIST_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/list";
19
502
  /** 创建小程序的开放平台 API 路径。 */
20
- export declare const CREATE_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/create";
503
+ declare const CREATE_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/create";
21
504
  /** 查询单个小程序详情的开放平台 API 路径。 */
22
- export declare const DETAIL_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/detail";
505
+ declare const DETAIL_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/detail";
23
506
  /** 创建本地开发启动凭据的开放平台 API 路径。 */
24
- export declare const CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH = "/mall/developer/user_miniprogram/local_dev_launch_token";
507
+ declare const CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH = "/mall/developer/user_miniprogram/local_dev_launch_token";
25
508
  /** 查询小程序预览白名单的开放平台 API 路径。 */
26
- export declare const USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = "/mall/developer/user_miniprogram/preview_allowlist";
509
+ declare const USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = "/mall/developer/user_miniprogram/preview_allowlist";
27
510
  /** 更新小程序预览白名单的开放平台 API 路径。 */
28
- export declare const UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = "/mall/developer/user_miniprogram/preview_allowlist/update";
511
+ declare const UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = "/mall/developer/user_miniprogram/preview_allowlist/update";
29
512
  /** 创建小程序云排行榜的开放平台 API 路径。 */
30
- export declare const CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = "/mall/developer/user_miniprogram/leaderboard/create";
513
+ declare const CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = "/mall/developer/user_miniprogram/leaderboard/create";
31
514
  /** 查询单个小程序云排行榜详情的开放平台 API 路径。 */
32
- export declare const DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH = "/mall/developer/user_miniprogram/leaderboard/detail";
515
+ declare const DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH = "/mall/developer/user_miniprogram/leaderboard/detail";
33
516
  /** 查询小程序云排行榜列表的开放平台 API 路径。 */
34
- export declare const LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH = "/mall/developer/user_miniprogram/leaderboard/list";
517
+ declare const LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH = "/mall/developer/user_miniprogram/leaderboard/list";
35
518
  /** 删除小程序云排行榜的开放平台 API 路径。 */
36
- export declare const DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = "/mall/developer/user_miniprogram/leaderboard/delete";
519
+ declare const DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = "/mall/developer/user_miniprogram/leaderboard/delete";
37
520
  /** 在上传或复用版本前执行发布预检的开放平台 API 路径。 */
38
- export declare const PRECHECK_USER_MINIPROGRAM_VERSION_API_PATH = "/mall/developer/user_miniprogram/version/precheck";
521
+ declare const PRECHECK_USER_MINIPROGRAM_VERSION_API_PATH = "/mall/developer/user_miniprogram/version/precheck";
39
522
  /** 将小程序版本提交审核的开放平台 API 路径。 */
40
- export declare const SUBMIT_USER_MINIPROGRAM_AUDIT_API_PATH = "/mall/developer/user_miniprogram/version/submit_audit";
523
+ declare const SUBMIT_USER_MINIPROGRAM_AUDIT_API_PATH = "/mall/developer/user_miniprogram/version/submit_audit";
41
524
  /** 查询小程序版本预览信息的开放平台 API 路径。 */
42
- export declare const USER_MINIPROGRAM_VERSION_PREVIEW_INFO_API_PATH = "/mall/developer/user_miniprogram/version/preview_info";
525
+ declare const USER_MINIPROGRAM_VERSION_PREVIEW_INFO_API_PATH = "/mall/developer/user_miniprogram/version/preview_info";
43
526
  /** 撤回待审核小程序版本的开放平台 API 路径。 */
44
- export declare const WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH = "/mall/developer/user_miniprogram/version/withdraw";
527
+ declare const WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH = "/mall/developer/user_miniprogram/version/withdraw";
45
528
  /** 发布审核通过的小程序版本的开放平台 API 路径。 */
46
- export declare const RELEASE_USER_MINIPROGRAM_VERSION_API_PATH = "/mall/developer/user_miniprogram/version/release";
529
+ declare const RELEASE_USER_MINIPROGRAM_VERSION_API_PATH = "/mall/developer/user_miniprogram/version/release";
47
530
  /** 下架当前线上小程序的开放平台 API 路径。 */
48
- export declare const TAKE_DOWN_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/take_down";
531
+ declare const TAKE_DOWN_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/take_down";
49
532
  /** 重新开放已下架小程序的开放平台 API 路径。 */
50
- export declare const REOPEN_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/reopen";
533
+ declare const REOPEN_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/reopen";
51
534
  /** 更新小程序广场展示状态的开放平台 API 路径。 */
52
- export declare const UPDATE_SQUARE_DISPLAY_API_PATH = "/mall/developer/user_miniprogram/square_display/update";
535
+ declare const UPDATE_SQUARE_DISPLAY_API_PATH = "/mall/developer/user_miniprogram/square_display/update";
53
536
  /** 查询小程序历史版本列表的开放平台 API 路径。 */
54
- export declare const LIST_USER_MINIPROGRAM_VERSION_API_PATH = "/mall/developer/user_miniprogram/version/list";
55
- export { parseMiniappCategory, type MiniappCategory } from '../miniapp-manifest/category';
56
- export { isValidMiniappManifestVersion as isValidVersion } from '../miniapp-manifest/schema';
57
- export { MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES, MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES, MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION, resolveMiniappManifestPlatforms, type MiniappPlatformPolicy, type MiniappPlatformResolution, } from '../miniapp-manifest/schema';
58
- export { parseMiniappBindAppIds, type ParseMiniappBindAppIdsOptions } from '../miniapp-manifest/bindings';
537
+ declare const LIST_USER_MINIPROGRAM_VERSION_API_PATH = "/mall/developer/user_miniprogram/version/list";
538
+
59
539
  /**
60
540
  * 将扫描到的相对路径转换为统一的 `/` 分隔形式。
61
541
  *
@@ -79,7 +559,7 @@ export { parseMiniappBindAppIds, type ParseMiniappBindAppIdsOptions } from '../m
79
559
  * @see {@link shouldUploadDistFile}
80
560
  * @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/protocol/functions/isMiniProgramRelativePath | isMiniProgramRelativePath}
81
561
  */
82
- export declare function normalizeRelativePath(relativePath: string): string;
562
+ declare function normalizeRelativePath(relativePath: string): string;
83
563
  /**
84
564
  * 判断路径中是否包含大小写不敏感的完整 `node_modules` 目录段。
85
565
  *
@@ -104,7 +584,7 @@ export declare function normalizeRelativePath(relativePath: string): string;
104
584
  * @see [shouldUploadDistFile](/reference/symbols/miniapp-publish/functions/shouldUploadDistFile)
105
585
  * @see [miniapp-publish](/reference/miniapp-publish/)
106
586
  */
107
- export declare function relativePathContainsNodeModulesSegment(relativePath: string): boolean;
587
+ declare function relativePathContainsNodeModulesSegment(relativePath: string): boolean;
108
588
  /**
109
589
  * 为小程序 ID 计算稳定、紧凑的上传路径别名。
110
590
  *
@@ -117,9 +597,9 @@ export declare function relativePathContainsNodeModulesSegment(relativePath: str
117
597
  * console.log(/^[a-z0-9]+$/.test(alias)); // true
118
598
  * ```
119
599
  */
120
- export declare function getMiniProgramUploadAlias(miniProgramId: string): string;
600
+ declare function getMiniProgramUploadAlias(miniProgramId: string): string;
121
601
  /** 生成旧版固定版本上传 key 所需的输入。 */
122
- export interface MiniappUploadKeyInput {
602
+ interface MiniappUploadKeyInput {
123
603
  /** 小程序 ID;函数会将其转换为稳定上传别名。 */
124
604
  miniProgramId: string;
125
605
  /** 要写入上传 key 的版本字符串;调用方应先完成版本合法性校验。 */
@@ -142,14 +622,14 @@ export interface MiniappUploadKeyInput {
142
622
  * }); // /u/<alias>/1.2.3/assets/app.js
143
623
  * ```
144
624
  */
145
- export declare function getMiniappUploadKey(input: MiniappUploadKeyInput): string;
625
+ declare function getMiniappUploadKey(input: MiniappUploadKeyInput): string;
146
626
  /** 参与旧版上传路径校验的构建产物条目。 */
147
- export interface UploadPathItem {
627
+ interface UploadPathItem {
148
628
  /** 构建产物相对路径。 */
149
629
  relativePath: string;
150
630
  }
151
631
  /** 旧版固定版本上传路径的校验选项。 */
152
- export interface ValidateUploadPathsOptions {
632
+ interface ValidateUploadPathsOptions {
153
633
  /** 小程序 ID,用于计算上传 key 中的稳定别名。 */
154
634
  miniProgramId: string;
155
635
  /** 要写入上传 key 的版本字符串。 */
@@ -175,7 +655,7 @@ export interface ValidateUploadPathsOptions {
175
655
  * if (error) throw new Error(error);
176
656
  * ```
177
657
  */
178
- export declare function validateUploadPaths(items: UploadPathItem[], options: ValidateUploadPathsOptions): string | undefined;
658
+ declare function validateUploadPaths(items: UploadPathItem[], options: ValidateUploadPathsOptions): string | undefined;
179
659
  /**
180
660
  * 参与上传总大小计算的构建产物条目。
181
661
  *
@@ -183,7 +663,7 @@ export declare function validateUploadPaths(items: UploadPathItem[], options: Va
183
663
  * {@link validateUploadTotalSize} 只读取 `size`,不会读取或校验 `relativePath`。同一类型也供
184
664
  * `validateMiniappUploadSizeBudgets()` 使用,后者才根据规范化路径区分 Web 与 Companion 预算。
185
665
  */
186
- export interface UploadSizeItem {
666
+ interface UploadSizeItem {
187
667
  /**
188
668
  * 构建产物相对路径。直接调用 {@link validateUploadTotalSize} 时该字段不参与计算;预算包装
189
669
  * 函数会把规范化后以 `companions/` 开头的路径归入 Companion 组。
@@ -196,7 +676,7 @@ export interface UploadSizeItem {
196
676
  size: number;
197
677
  }
198
678
  /** {@link validateUploadTotalSize} 的总量上限选项。 */
199
- export interface ValidateUploadTotalSizeOptions {
679
+ interface ValidateUploadTotalSizeOptions {
200
680
  /**
201
681
  * 总大小上限,单位为 bytes;省略时使用 `MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES`,当前为
202
682
  * `104857600` bytes(100 MiB)。总和恰好等于上限仍合法,只有严格大于才算超限。
@@ -264,7 +744,7 @@ export interface ValidateUploadTotalSizeOptions {
264
744
  * @see [shouldUploadDistFile](/reference/symbols/miniapp-publish/functions/shouldUploadDistFile)
265
745
  * @see [miniapp-publish](/reference/miniapp-publish/)
266
746
  */
267
- export declare function validateUploadTotalSize(items: UploadSizeItem[], options?: ValidateUploadTotalSizeOptions): "构建产物总大小超过 100MB,请删除未引用资源或压缩图片后重新 deploy" | undefined;
747
+ declare function validateUploadTotalSize(items: UploadSizeItem[], options?: ValidateUploadTotalSizeOptions): "构建产物总大小超过 100MB,请删除未引用资源或压缩图片后重新 deploy" | undefined;
268
748
  /**
269
749
  * 分别校验 Web 构建产物与 Companion 归档的总大小预算。
270
750
  *
@@ -281,7 +761,7 @@ export declare function validateUploadTotalSize(items: UploadSizeItem[], options
281
761
  * if (error) throw new Error(error);
282
762
  * ```
283
763
  */
284
- export declare function validateMiniappUploadSizeBudgets(items: UploadSizeItem[], options?: {
764
+ declare function validateMiniappUploadSizeBudgets(items: UploadSizeItem[], options?: {
285
765
  webLimitBytes?: number;
286
766
  companionLimitBytes?: number;
287
767
  }): "构建产物总大小超过 100MB,请删除未引用资源或压缩图片后重新 deploy" | "Companion 归档总大小超过 500MiB 上限,请缩减归档后重新 deploy" | undefined;
@@ -338,25 +818,25 @@ export declare function validateMiniappUploadSizeBudgets(items: UploadSizeItem[]
338
818
  * @see [validateUploadTotalSize](/reference/symbols/miniapp-publish/functions/validateUploadTotalSize)
339
819
  * @see [miniapp-publish](/reference/miniapp-publish/)
340
820
  */
341
- export declare function shouldUploadDistFile(relativePath: string): boolean;
821
+ declare function shouldUploadDistFile(relativePath: string): boolean;
342
822
  /**
343
823
  * 参与整包签名和上传会话映射的构建产物文件。
344
824
  *
345
825
  * 路径必须是规范相对路径,大小必须是大于或等于 `0` 的 safe integer。
346
826
  */
347
- export interface MiniappArtifactFile {
827
+ interface MiniappArtifactFile {
348
828
  /** 使用 `/` 分隔的构建产物相对路径;不能包含绝对路径、点目录段、控制字符、逗号或通配符。 */
349
829
  relativePath: string;
350
830
  /** 文件大小,单位为 bytes;必须是大于或等于 `0` 的 safe integer。 */
351
831
  size: number;
352
832
  }
353
833
  /** 上传会话使用的逐文件完整性凭据,由本地文件内容计算。 */
354
- export interface MiniappArtifactFileReceipt extends MiniappArtifactFile {
834
+ interface MiniappArtifactFileReceipt extends MiniappArtifactFile {
355
835
  /** 文件内容 SHA-256,使用 64 位小写十六进制字符串。 */
356
836
  sha256: string;
357
837
  }
358
838
  /** 服务端上传会话返回的单个文件映射。 */
359
- export interface MiniappUploadSessionFile {
839
+ interface MiniappUploadSessionFile {
360
840
  /** 与创建会话时提交值一致的规范相对路径。 */
361
841
  relative_path: string;
362
842
  /** 服务端签发的非空完整 CDN 上传 key;同一会话内必须唯一。 */
@@ -367,7 +847,7 @@ export interface MiniappUploadSessionFile {
367
847
  sha256: string;
368
848
  }
369
849
  /** v2 上传会话复用的已验证 Companion Blob,不包含会话 CDN key。 */
370
- export interface MiniappReusedCompanionFile {
850
+ interface MiniappReusedCompanionFile {
371
851
  relative_path: string;
372
852
  size: number;
373
853
  sha256: string;
@@ -391,7 +871,7 @@ export interface MiniappReusedCompanionFile {
391
871
  * // ['assets/app.js', 'index.html']
392
872
  * ```
393
873
  */
394
- export declare function prepareMiniappArtifactFiles<T extends MiniappArtifactFile>(files: readonly T[]): (T & {
874
+ declare function prepareMiniappArtifactFiles<T extends MiniappArtifactFile>(files: readonly T[]): (T & {
395
875
  relativePath: string;
396
876
  })[];
397
877
  /**
@@ -411,7 +891,7 @@ export declare function prepareMiniappArtifactFiles<T extends MiniappArtifactFil
411
891
  * if (error) throw new Error(error);
412
892
  * ```
413
893
  */
414
- export declare function validateMiniappUploadPathLengths(files: readonly Pick<MiniappArtifactFile, 'relativePath'>[], options: {
894
+ declare function validateMiniappUploadPathLengths(files: readonly Pick<MiniappArtifactFile, 'relativePath'>[], options: {
415
895
  miniProgramId: string;
416
896
  maxLength?: number;
417
897
  }): string | undefined;
@@ -427,7 +907,7 @@ export declare function validateMiniappUploadPathLengths(files: readonly Pick<Mi
427
907
  * // 将 header 写入 SHA-256,再按排序结果依次写入文件 header 和内容。
428
908
  * ```
429
909
  */
430
- export declare function createMiniappArtifactSignatureHeader(fileCount: number): Uint8Array<ArrayBuffer>;
910
+ declare function createMiniappArtifactSignatureHeader(fileCount: number): Uint8Array<ArrayBuffer>;
431
911
  /**
432
912
  * 创建单个文件的 v1 framing header。
433
913
  *
@@ -442,7 +922,7 @@ export declare function createMiniappArtifactSignatureHeader(fileCount: number):
442
922
  * });
443
923
  * ```
444
924
  */
445
- export declare function createMiniappArtifactFileHeader(file: MiniappArtifactFile): Uint8Array<ArrayBuffer>;
925
+ declare function createMiniappArtifactFileHeader(file: MiniappArtifactFile): Uint8Array<ArrayBuffer>;
446
926
  /**
447
927
  * 校验服务端 session 文件映射,并计算仍需上传的文件。
448
928
  *
@@ -471,7 +951,7 @@ export declare function createMiniappArtifactFileHeader(file: MiniappArtifactFil
471
951
  * console.log(resolved.missingFiles.length); // 1
472
952
  * ```
473
953
  */
474
- export declare function resolveMiniappUploadSessionFiles<T extends MiniappArtifactFile>(localFiles: readonly T[], serverFiles: readonly MiniappUploadSessionFile[], uploadedKeys: readonly string[], reusedCompanionFiles: readonly MiniappReusedCompanionFile[]): {
954
+ declare function resolveMiniappUploadSessionFiles<T extends MiniappArtifactFile>(localFiles: readonly T[], serverFiles: readonly MiniappUploadSessionFile[], uploadedKeys: readonly string[], reusedCompanionFiles: readonly MiniappReusedCompanionFile[]): {
475
955
  files: {
476
956
  file: T & {
477
957
  relativePath: string;
@@ -514,16 +994,14 @@ export declare function resolveMiniappUploadSessionFiles<T extends MiniappArtifa
514
994
  * }, receipt);
515
995
  * ```
516
996
  */
517
- export declare function validateMiniappCompanionFileReceipts(companions: unknown, files: readonly MiniappArtifactFileReceipt[]): void;
518
- export { parseMiniappBasicInfo, normalizeBasicInfoName } from '../miniapp-manifest/basic-info';
519
- export { previewMiniappBasicInfo } from '../miniapp-manifest/basic-info-browser';
520
- export { validateMiniappManifestForDeploy } from '../miniapp-manifest/schema';
521
- export type { MiniappBasicInfo } from '../miniapp-manifest/basic-info';
522
- export type { MiniappManifest, MiniappWindowDeclaration } from '../miniapp-manifest/schema';
523
- export type { MiniappCompanionManifestDeclarations, MiniappCompanionManifestDefinition, MiniappCompanionManifestTarget, MiniappCompanionTarget, MiniappCompanionCapability, } from '../miniapp-manifest/companion-types';
524
- export type { MiniappPermissionDeclarations, NetworkMiniappPermissionDeclaration, SimpleMiniappPermissionDeclaration, } from '../miniapp-manifest/permissions';
525
- export { hasMiniappRuntimeGate } from '../miniapp-manifest/runtime-gate';
997
+ declare function validateMiniappCompanionFileReceipts(companions: unknown, files: readonly MiniappArtifactFileReceipt[]): void;
998
+ /** 工作区制品与同一次上传 receipt 精确匹配,拒绝未声明的执行文件。 */
999
+ declare function validateMiniappWorkspaceCardFileReceipts(value: unknown, files: readonly MiniappArtifactFileReceipt[]): void;
1000
+
526
1001
  /** 查询平台权限目录和最近申请。 */
527
- export declare const LIST_USER_MINIPROGRAM_PERMISSION_APPLICATION_API_PATH = "/mall/developer/user_miniprogram/runtime_permission/application_list";
1002
+ declare const LIST_USER_MINIPROGRAM_PERMISSION_APPLICATION_API_PATH = "/mall/developer/user_miniprogram/runtime_permission/application_list";
528
1003
  /** 提交不绑定版本的平台权限申请。 */
529
- export declare const SUBMIT_USER_MINIPROGRAM_PERMISSION_APPLICATION_API_PATH = "/mall/developer/user_miniprogram/runtime_permission/application_submit";
1004
+ declare const SUBMIT_USER_MINIPROGRAM_PERMISSION_APPLICATION_API_PATH = "/mall/developer/user_miniprogram/runtime_permission/application_submit";
1005
+
1006
+ 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_PERMISSION_APPLICATION_API_PATH, LIST_USER_MINIPROGRAM_VERSION_API_PATH, MINIAPP_COMPANION_UPLOAD_TEMPORARY_SIZE_LIMIT_BYTES, MINIAPP_LEGACY_DEFAULT_PLATFORM_VALUES, 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, SUBMIT_USER_MINIPROGRAM_PERMISSION_APPLICATION_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, hasMiniappRuntimeGate, isValidMiniappManifestVersion as isValidVersion, normalizeBasicInfoName, normalizeRelativePath, parseMiniappBasicInfo, parseMiniappBindAppIds, parseMiniappCategory, prepareMiniappArtifactFiles, previewMiniappBasicInfo, relativePathContainsNodeModulesSegment, resolveMiniappManifestPlatforms, resolveMiniappUploadSessionFiles, shouldUploadDistFile, validateMiniappCompanionFileReceipts, validateMiniappManifestForDeploy, validateMiniappUploadPathLengths, validateMiniappUploadSizeBudgets, validateMiniappWorkspaceCardFileReceipts, validateUploadPaths, validateUploadTotalSize };
1007
+ export type { MiniappArtifactFile, MiniappArtifactFileReceipt, MiniappBasicInfo, MiniappCategory, MiniappCompanionCapability, MiniappCompanionManifestDeclarations, MiniappCompanionManifestDefinition, MiniappCompanionManifestTarget, MiniappCompanionTarget, MiniappManifest, MiniappPermissionDeclarations, MiniappPlatformPolicy, MiniappPlatformResolution, MiniappReusedCompanionFile, MiniappUploadKeyInput, MiniappUploadSessionFile, MiniappWindowDeclaration, NetworkMiniappPermissionDeclaration, ParseMiniappBindAppIdsOptions, SimpleMiniappPermissionDeclaration, UploadPathItem, UploadSizeItem, ValidateUploadPathsOptions, ValidateUploadTotalSizeOptions };