@heybox/hb-sdk 0.8.1 → 0.8.2-alpha.2

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 (64) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +2 -2
  3. package/dist/cli-chunks/{build-DPe1Ycjd.cjs → build-bVThH3Z5.cjs} +4 -4
  4. package/dist/cli-chunks/{context-BSUhAv3Z.cjs → context-DpKqGnjp.cjs} +2 -2
  5. package/dist/cli-chunks/{create-CaiKrGnb.cjs → create-BWC2343y.cjs} +1 -1
  6. package/dist/cli-chunks/{dev-BG1o8Q-0.cjs → dev-t14YpHHY.cjs} +9 -9
  7. package/dist/cli-chunks/{doctor-DutO2P5H.cjs → doctor-BWkrE0Hj.cjs} +1 -1
  8. package/dist/cli-chunks/{index-CKIyipP9.cjs → index-CDtcZVWv.cjs} +15 -15
  9. package/dist/cli-chunks/{index-Bur0U2z1.cjs → index-D3FMcOZq.cjs} +2 -2
  10. package/dist/cli-chunks/{index.esm-BPlpP-O0.cjs → index.esm-BrJBaJWS.cjs} +7 -7
  11. package/dist/cli-chunks/{login-C1JlLEza.cjs → login-DRMl7nFH.cjs} +2 -2
  12. package/dist/cli-chunks/{project-vite-Bd0WzAqQ.cjs → project-vite-CXgdzIYw.cjs} +1 -1
  13. package/dist/cli-chunks/{remote-DTFEf3Dj.cjs → remote-ibQybNiM.cjs} +6 -6
  14. package/dist/cli-chunks/{runtime-permission-env-C2S34ldj.cjs → runtime-permission-env-DiTeD75Q.cjs} +576 -20
  15. package/dist/cli-chunks/{session-zXVkHuhY.cjs → session-CIoBspg-.cjs} +1 -1
  16. package/dist/cli-chunks/{skill-CCB3DyXk.cjs → skill-5labzuWk.cjs} +2 -2
  17. package/dist/cli-chunks/{version-0qwlEyZC.cjs → version-QiVEs76a.cjs} +1 -1
  18. package/dist/cli.cjs +1 -1
  19. package/dist/devtools/browser-dev-host/assets/browser-dev-host-DxzOkljJ.js +101 -0
  20. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-DOfl5YvO.js → desktop-app-launch-B4KsgItx.js} +1 -1
  21. package/dist/devtools/browser-dev-host/assets/{index-CFr28-0O.js → index-9Nb3XhtI.js} +3 -3
  22. package/dist/devtools/browser-dev-host/index.html +2 -2
  23. package/dist/index.cjs.js +948 -44
  24. package/dist/index.esm.js +948 -44
  25. package/dist/miniapp-publish.cjs.js +536 -30
  26. package/dist/miniapp-publish.esm.js +536 -30
  27. package/dist/protocol.cjs.js +807 -2
  28. package/dist/protocol.esm.js +807 -2
  29. package/dist/vite.cjs.js +184 -1
  30. package/dist/vite.esm.js +184 -1
  31. package/package.json +7 -7
  32. package/skill/references/api-root.md +192 -8
  33. package/skill/references/recipes.md +45 -7
  34. package/skill/skill.json +5 -5
  35. package/types/core/errors.d.ts +33 -9
  36. package/types/core/handshake-state.d.ts +32 -2
  37. package/types/core/singleton.d.ts +265 -6
  38. package/types/miniapp-manifest/bindings.d.ts +65 -0
  39. package/types/miniapp-manifest/schema.d.ts +136 -19
  40. package/types/miniapp-publish/index.d.ts +425 -29
  41. package/types/modules/auth/index.d.ts +159 -5
  42. package/types/modules/cloud/index.d.ts +514 -40
  43. package/types/modules/companion/index.d.ts +1518 -17
  44. package/types/modules/device/index.d.ts +140 -9
  45. package/types/modules/environment/index.d.ts +172 -4
  46. package/types/modules/files/types.d.ts +1396 -21
  47. package/types/modules/navigation/app-pages/types.d.ts +81 -24
  48. package/types/modules/navigation/index.d.ts +230 -7
  49. package/types/modules/network/index.d.ts +297 -26
  50. package/types/modules/share/copy-link.d.ts +35 -5
  51. package/types/modules/share/index.d.ts +210 -0
  52. package/types/modules/share/screenshot.d.ts +23 -5
  53. package/types/modules/share/show-share-menu.d.ts +18 -5
  54. package/types/modules/share/types.d.ts +148 -23
  55. package/types/modules/storage/index.d.ts +139 -9
  56. package/types/modules/ui/index.d.ts +249 -18
  57. package/types/modules/user/get-info.d.ts +29 -8
  58. package/types/modules/user/index.d.ts +157 -0
  59. package/types/modules/user/revoke-authorization.d.ts +26 -2
  60. package/types/modules/user/steam-game-list.d.ts +96 -15
  61. package/types/modules/viewport/index.d.ts +158 -22
  62. package/types/protocol/types.d.ts +19 -1
  63. package/types/vite/index.d.ts +159 -1
  64. package/dist/devtools/browser-dev-host/assets/browser-dev-host-pUcws1MK.js +0 -101
@@ -1,37 +1,84 @@
1
1
  import type { IncomingMessage, Server, ServerResponse } from 'node:http';
2
2
  import { MINIAPP_PLATFORM_VALUES, type MiniappPlatform } from '../miniapp-manifest/schema';
3
+ /**
4
+ * {@link miniappManifest} 返回的 Vite 插件契约。
5
+ *
6
+ * @remarks
7
+ * 业务项目只需把 `miniappManifest()` 放入 `vite.config.ts` 的 `plugins` 数组,通常不需要直接构造该接口,
8
+ * 也不应手动调用这些 Vite hook。该接口不包含小程序声明;目标平台、权限、窗口、游戏绑定和 Companion
9
+ * 等配置统一来自距离 Vite `root` 最近的 `package.json#heybox`。
10
+ */
3
11
  export interface MiniappManifestPlugin {
12
+ /** 固定为 `heybox-miniapp-manifest`,同一份 Vite 配置必须且只能注册一个实例。 */
4
13
  name: string;
14
+ /** 校验资源基准路径,并向 Vite 注入 SDK 版本和开发期日志开关。 */
5
15
  config: (config: MiniappManifestUserConfig, env?: {
6
16
  command: 'build' | 'serve';
7
17
  }) => MiniappManifestUserConfig | void;
18
+ /** 记录 Vite 根目录、输出目录、运行命令和开发期 HMR 地址。 */
8
19
  configResolved: (resolved: MiniappManifestResolvedConfig) => void;
20
+ /** 为 `hb-sdk dev` 注册本机调试能力;生产构建不会创建开发服务。 */
9
21
  configureServer: (server: MiniappManifestDevServer) => void;
10
- /** Rollup 在构建失败后仍会跑 closeBundle;用 buildEnd 记录真实错误,避免二次校验掩盖原因。 */
22
+ /** 保留 Rollup/Vite 已报告的构建错误,避免产物校验用二次错误掩盖原始原因。 */
11
23
  buildEnd: (error?: Error) => void;
24
+ /** 向入口 HTML 注入 Runtime Gate 和平台 CSP;serve 时还会加入受限的 HMR 与日志调试支持。 */
12
25
  transformIndexHtml: (html: string) => string;
26
+ /** serve 关闭时直接完成;生产构建结束时校验单页产物并写入 Manifest 和 Companion 归档。 */
13
27
  closeBundle: (this: MiniappManifestPluginContext) => Promise<void>;
14
28
  }
29
+ /**
30
+ * {@link MiniappManifestPlugin.configureServer} 消费的最小 Vite 开发服务形状。
31
+ *
32
+ * @remarks
33
+ * 这是插件返回值暴露的 hook 类型,不是 `miniappManifest()` 的配置项。业务项目应让 Vite 创建并传入服务实例。
34
+ */
15
35
  export interface MiniappManifestDevServer {
36
+ /** Vite 底层 HTTP 服务;middleware mode 或尚未监听时可能为空。 */
16
37
  httpServer?: Server | null;
38
+ /** Vite 配置重载入口;插件会在重载期间保留当前本地调试快照。 */
17
39
  restart?: (forceOptimize?: boolean) => Promise<void>;
40
+ /** 用于挂载 `hb-sdk dev` 本机调试中间件的 Connect middleware 容器。 */
18
41
  middlewares: {
19
42
  use: (handler: (request: IncomingMessage, response: ServerResponse, next: () => void) => void) => void;
20
43
  };
21
44
  }
45
+ /**
46
+ * {@link MiniappManifestPlugin.config} 读取和返回的最小 Vite 用户配置形状。
47
+ *
48
+ * @remarks
49
+ * 该接口描述 Vite hook 数据,不是插件 options;`miniappManifest()` 必须无参调用。小程序声明请写入
50
+ * `package.json#heybox`,不要写入 Vite 配置。
51
+ */
22
52
  export interface MiniappManifestUserConfig {
53
+ /**
54
+ * Vite 资源基准路径。省略时插件返回 `./`;显式配置只接受空字符串或 `./`,以便版本目录内相对加载资源。
55
+ */
23
56
  base?: string;
57
+ /** 插件返回给 Vite 的编译期常量;业务项目无需通过该接口传入或覆盖。 */
24
58
  define?: Record<string, string>;
25
59
  }
60
+ /** {@link MiniappManifestPlugin.closeBundle} 使用的最小 Rollup 插件上下文。 */
26
61
  export interface MiniappManifestPluginContext {
62
+ /** 输出缺少迁移期声明等非阻断构建警告。 */
27
63
  warn: (message: string) => void;
28
64
  }
65
+ /**
66
+ * {@link MiniappManifestPlugin.configResolved} 消费的最小 Vite 已解析配置形状。
67
+ *
68
+ * @remarks
69
+ * 这是 Vite 传给插件的 hook 数据,不是应用作者需要创建的 options。插件从中确定项目根目录、输出目录、
70
+ * serve/build 分支和 HMR WebSocket 白名单。
71
+ */
29
72
  export interface MiniappManifestResolvedConfig {
73
+ /** Vite 项目根目录;小程序配置从该目录向上找到的最近 `package.json` 读取。 */
30
74
  root: string;
75
+ /** `serve` 只准备本地调试,`build` 还会校验产物并生成 `manifest.json`。 */
31
76
  command: 'build' | 'serve';
77
+ /** Vite 构建输出目录;Manifest 和 Companion 归档写入该目录。 */
32
78
  build: {
33
79
  outDir: string;
34
80
  };
81
+ /** 开发服务网络配置,用于收窄注入 HTML 的 HMR WebSocket CSP。 */
35
82
  server: {
36
83
  host?: string | boolean;
37
84
  https?: boolean | Record<string, unknown>;
@@ -43,12 +90,123 @@ export interface MiniappManifestResolvedConfig {
43
90
  protocol?: 'ws' | 'wss';
44
91
  };
45
92
  };
93
+ /** 已解析插件列表;存在时用于拒绝重复注册 `miniappManifest()`。 */
46
94
  plugins?: readonly {
47
95
  name?: string;
48
96
  }[];
49
97
  }
50
98
  export { MINIAPP_PLATFORM_VALUES };
51
99
  export type { MiniappPlatform };
100
+ /**
101
+ * `hb-sdk dev` 为本地 Companion 产物访问注入的进程环境变量名。
102
+ *
103
+ * @remarks
104
+ * 该变量由 CLI 管理,不是项目配置项。应用代码不应读取、设置、记录或转发它的值。
105
+ */
52
106
  export declare const HB_SDK_COMPANION_ARTIFACT_ACCESS_TOKEN_ENV = "HB_SDK_COMPANION_ARTIFACT_ACCESS_TOKEN";
107
+ /**
108
+ * `hb-sdk dev` 为本地小程序 Manifest 访问注入的进程环境变量名。
109
+ *
110
+ * @remarks
111
+ * 该变量由 CLI 管理,不是项目配置项。应用代码不应读取、设置、记录或转发它的值。
112
+ */
53
113
  export declare const HB_SDK_MINI_PROGRAM_MANIFEST_ACCESS_TOKEN_ENV = "HB_SDK_MINI_PROGRAM_MANIFEST_ACCESS_TOKEN";
114
+ /**
115
+ * 创建工坊小程序使用的 Vite 插件。
116
+ *
117
+ * @returns 可直接加入 Vite `plugins` 数组的
118
+ * [MiniappManifestPlugin](/reference/symbols/vite/interfaces/MiniappManifestPlugin)。插件固定名为
119
+ * `heybox-miniapp-manifest`,并提供 `config`、`configResolved`、`configureServer`、`buildEnd`、
120
+ * `transformIndexHtml`、`closeBundle` hooks;这些 hooks 由 Vite 调用,应用代码不应手动调用。
121
+ * @throws `Error` `config` 阶段发现 Vite `base` 不是 `''` 或 `'./'`,或无法解析当前 SDK 版本时抛出。
122
+ * @throws `Error` `configResolved` 阶段发现已解析插件列表中 `miniappManifest()` 数量不是一个时抛出。
123
+ * @throws `Error` HTML 缺少 `<head>`,包含 `meta refresh`、`<base>`、禁止的 resource hint,或资源 URL
124
+ * 不符合小程序 HTML 策略时,`transformIndexHtml` / 生产产物复检抛出。
125
+ * @throws `Error` 生产构建无法读取或解析最近的 `package.json`,`version`、`heybox.platforms`、
126
+ * `heybox.permissions`、`heybox.window`、`heybox.bindAppIds` 或 `heybox.companions` 声明非法时抛出。
127
+ * @throws `Error` 生产 `build.outDir` 缺少根 `index.html`、递归发现额外 HTML,或 Companion 权限、
128
+ * 目标平台、来源目录、归档结构、入口二进制不符合约束时抛出;更早的 Rollup/Vite 错误会原样优先重抛。
129
+ *
130
+ * @remarks
131
+ * 该函数必须从 `@heybox/hb-sdk/vite` 导入,在 `vite.config.ts` 中无参调用且只注册一次;它不是
132
+ * iframe 业务代码 API,也没有 options 对象。小程序声明统一来自从 Vite `root` 向上找到的最近一个
133
+ * `package.json`,插件只读取和规范化,不会改写源文件:
134
+ *
135
+ * - `version`:发布版本;trim 后必须是完整 SemVer,可含 prerelease,不允许 build metadata 或模板值
136
+ * `0.0.0`;
137
+ * - `heybox.platforms`:项目实际承诺适配的非空、无重复平台 allowlist;输出按平台词表规范排序;
138
+ * - `heybox.permissions`:严格权限对象;未知权限/字段或错误类型会失败,`enabled: false` 项不写入
139
+ * Manifest。旧版本缺失声明时可能警告,新硬切版本会失败;
140
+ * - `heybox.window`:可选的新 PC 开窗初值、最小尺寸和 `resizable` 声明;省略时不写该字段;
141
+ * - `heybox.bindAppIds`:可选的最多 20 个正 int32 字符串 App ID;校验、去重并按数值排序,空数组
142
+ * 在本地产物中等同不写;
143
+ * - `heybox.companions`:可选的受管桌面程序声明;`source` 相对上述 `package.json` 所在目录解析,
144
+ * 必须同时声明启用的 `companion` 权限和匹配的 Windows/macOS 目标平台。
145
+ *
146
+ * 产物中的 `sdkVersion` 来自当前实际安装的 `@heybox/hb-sdk`,不是项目可配置字段。Vite options、页面
147
+ * 代码和普通环境变量不能覆盖上述 package 声明;插件也不会联网确认 App ID、平台批准或远端版本状态。
148
+ *
149
+ * Hook 行为如下:
150
+ *
151
+ * - `config`:省略 `base` 时补为 `'./'`,显式值只接受 `''` / `'./'`;注入 SDK 构建版本,且仅
152
+ * `vite serve` 注入开发日志编译常量;
153
+ * - `configResolved`:确认插件唯一性,记录真实 `root`、`build.outDir`、`serve|build` 命令和精确 HMR
154
+ * WebSocket 地址;直接 `vite build` 使用该实际 `outDir`,`hb-sdk build` 则由 CLI 固定为 `dist/`;
155
+ * - `configureServer`:为 `hb-sdk dev` 注册设备日志、本地小程序 Manifest 与 Companion Manifest/ZIP
156
+ * 中间件;敏感路由只接受数值 loopback socket/Host、`GET|HEAD` 和 CLI 注入的独立短期令牌,快照在
157
+ * 配置重载时按 digest 保留,并在服务真正关闭时清理;
158
+ * - `transformIndexHtml`:校验 HTML URL/标签策略,注入 Runtime Gate;默认注入平台 CSP,serve 时
159
+ * `connect-src` 只开放解析出的 HMR WebSocket,并额外注入调试日志 bootstrap;
160
+ * - `buildEnd`:记住更早的 Rollup/Vite 错误,避免 `closeBundle` 的二次产物错误遮盖根因;
161
+ * - `closeBundle`:serve 时直接完成;build 时复检最终 HTML,要求整个输出树只有根 `index.html`,再于
162
+ * `build.outDir` 写入 `manifest.json`,并把 Companion 目录打包成
163
+ * `companions/<alias>/<target>.zip`,记录 size、SHA-256、固定入口与 args。
164
+ *
165
+ * HTML 策略会隔离业务 script/modulepreload,直到父 Runtime Gate 以 namespace、版本、nonce、source
166
+ * 以及 referrer 可确定时的 origin 完成探测;失败时显示只能在小黑盒 App 内打开的安全页。策略拒绝自动跳转、`<base>`、危险
167
+ * resource hints 和不受支持的外部 URL,并按标签只允许相对 URL、明确允许的 `data:` / `blob:` 或
168
+ * 小黑盒官方 HTTPS 资源。开发者自行提供的 CSP 会保留;插件管理的 CSP marker 可重复转换而不会叠加。
169
+ *
170
+ * 平台 CSP 默认始终保留,直接 `vite build` / `hb-sdk build` 不会因项目声明
171
+ * `heybox.permissions.network.useOfficialDomain` 而跳过。只有官方 `hb-sdk dev` 或
172
+ * `hb-sdk remote deploy` 将当前版本的 `network` 声明与远端批准结果求交并确认最终启用后,才会
173
+ * 建立 verified 上下文供插件读取内部
174
+ * `HB_SDK_RUNTIME_PERMISSION_CONTEXT` + `HB_SDK_RUNTIME_USE_OFFICIAL_DOMAIN` 组合跳过平台 CSP;单独设置
175
+ * 任一值无效。0.8 兼容期对完全缺失权限声明的项目仍按迁移规则处理;`useOfficialDomain` 不参与
176
+ * CSP 跳过决定。Runtime Gate、HTML 校验和 Manifest 生成始终保留。
177
+ *
178
+ * `HB_SDK_COMPANION_ARTIFACT_ACCESS_TOKEN`、`HB_SDK_MINI_PROGRAM_MANIFEST_ACCESS_TOKEN`、
179
+ * `HB_SDK_SKIP_COMPANIONS` 以及上述 CSP 上下文均是 CLI/发布链路内部开关,不是项目配置项。它们在
180
+ * 插件创建时捕获;开发服务配置重载只会从同一服务的内存快照恢复 CLI 令牌。业务代码和 Vite 配置
181
+ * 不应手工设置、读取、记录或转发令牌值。正式声明必须继续写在 `package.json#heybox`,内部环境变量
182
+ * 不能替代声明校验。
183
+ *
184
+ * `manifest.json` 是 release pipeline 元数据,不是部署后供页面 fetch 的 CDN 资源。发布链路使用
185
+ * [isValidVersion](/reference/symbols/miniapp-publish/functions/isValidVersion) 复核版本、
186
+ * [resolveMiniappManifestPlatforms](/reference/symbols/miniapp-publish/functions/resolveMiniappManifestPlatforms)
187
+ * 解析平台硬切规则、
188
+ * [parseMiniappBindAppIds](/reference/symbols/miniapp-publish/functions/parseMiniappBindAppIds) 复核游戏绑定,
189
+ * 并通过 [shouldUploadDistFile](/reference/symbols/miniapp-publish/functions/shouldUploadDistFile) 将根
190
+ * `manifest.json` 排除出普通 CDN 文件。Web/Companion 上传预算由
191
+ * [validateUploadTotalSize](/reference/symbols/miniapp-publish/functions/validateUploadTotalSize) 等发布 helper
192
+ * 独立校验,不能用插件成功代替 deploy 预检。
193
+ *
194
+ * @example
195
+ * ```ts
196
+ * import vue from '@vitejs/plugin-vue'
197
+ * import { miniappManifest } from '@heybox/hb-sdk/vite'
198
+ * import { defineConfig } from 'vite'
199
+ *
200
+ * export default defineConfig({
201
+ * // base 省略时 miniappManifest() 会补为 './'
202
+ * plugins: [vue(), miniappManifest()],
203
+ * })
204
+ * ```
205
+ *
206
+ * @see [MiniappManifestPlugin](/reference/symbols/vite/interfaces/MiniappManifestPlugin) 返回插件及各 hook 类型。
207
+ * @see [安装](/guide/installation) Vite 接入、相对资源路径和构建命令。
208
+ * @see [权限声明](/guide/permissions) `heybox.permissions` 严格 schema 与迁移规则。
209
+ * @see [窗口尺寸与可缩放性](/guide/window-size) `heybox.window` 字段与 Host 消费语义。
210
+ * @see [受管桌面程序](/guide/companion) Companion 声明、归档和本地联调边界。
211
+ */
54
212
  export declare function miniappManifest(): MiniappManifestPlugin;