@heybox/hb-sdk 0.9.0-alpha.3 → 0.9.0-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.
- package/CHANGELOG.md +17 -0
- package/dist/cli-chunks/{build-C4d4WXYT.cjs → build-Dg8PWtA3.cjs} +5 -5
- package/dist/cli-chunks/{context-mt_ERryB.cjs → context-3O0-DEFd.cjs} +2 -2
- package/dist/cli-chunks/{create-LfZ8OhT6.cjs → create-C642TxNr.cjs} +1 -1
- package/dist/cli-chunks/{dev-lgUgVorS.cjs → dev-DERtbUJV.cjs} +9 -9
- package/dist/cli-chunks/{doctor-BSJnY0Bu.cjs → doctor-0nMnAEZj.cjs} +1 -1
- package/dist/cli-chunks/{index-DVALw2rx.cjs → index-B3dWPrGS.cjs} +2 -2
- package/dist/cli-chunks/{index-BtqxUixL.cjs → index-Bgh1vkq3.cjs} +15 -15
- package/dist/cli-chunks/{index.esm-Deim9BX8.cjs → index.esm-CvL0kH2-.cjs} +7 -7
- package/dist/cli-chunks/{login-TIFXGbKv.cjs → login-CiwgEMNe.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-DSBP8NLj.cjs → project-vite-BQIL3ZLc.cjs} +1 -1
- package/dist/cli-chunks/{remote-DyGb3YBA.cjs → remote-CjMqQIn-.cjs} +7 -7
- package/dist/cli-chunks/{runtime-gate-CWUZK4aE.cjs → runtime-gate-BfnpIguo.cjs} +8 -1
- package/dist/cli-chunks/{runtime-permission-env-DdWYFrFT.cjs → runtime-permission-env-BCdawZhE.cjs} +48 -52
- package/dist/cli-chunks/{session-CWCq-oeW.cjs → session-CLOFAoc0.cjs} +1 -1
- package/dist/cli-chunks/{skill-DQzR5fMS.cjs → skill-Cpioyedd.cjs} +2 -2
- package/dist/cli-chunks/{version-4zRtvcVD.cjs → version-JvV3LKTj.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-BTGqFxmZ.js +102 -0
- package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-Dod9L2SF.js → desktop-app-launch--gK4BBUY.js} +1 -1
- package/dist/devtools/browser-dev-host/assets/{index-xtE6gn7j.js → index-DQcxS2CQ.js} +3 -3
- package/dist/devtools/browser-dev-host/index.html +2 -2
- package/dist/index.cjs.js +2 -2
- package/dist/index.esm.js +2 -2
- package/dist/miniapp-publish.cjs.js +83 -52
- package/dist/miniapp-publish.esm.js +83 -52
- package/dist/vite.cjs.js +33 -4
- package/dist/vite.esm.js +33 -4
- package/package.json +5 -5
- package/skill/skill.json +4 -4
- package/types/core/singleton.d.ts +1 -1
- package/types/miniapp-manifest/basic-info-browser.d.ts +29 -1
- package/types/miniapp-manifest/basic-info.d.ts +23 -2
- package/types/miniapp-manifest/category.d.ts +9 -2
- package/types/miniapp-manifest/companion-types.d.ts +25 -0
- package/types/miniapp-manifest/permissions.d.ts +12 -0
- package/types/miniapp-manifest/runtime-gate.d.ts +7 -0
- package/types/miniapp-manifest/schema.d.ts +23 -0
- package/types/miniapp-publish/index.d.ts +10 -48
- package/types/modules/auth/index.d.ts +5 -1
- package/types/modules/companion/index.d.ts +27 -34
- package/types/modules/network/index.d.ts +12 -2
- package/types/modules/user/index.d.ts +12 -1
- package/types/modules/user/steam-game-list.d.ts +2 -2
- package/types/modules/viewport/index.d.ts +21 -1
- package/types/vite/index.d.ts +5 -0
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-BEJTrPTS.js +0 -102
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@heybox/hb-sdk",
|
|
3
|
-
"version": "0.9.0-alpha.
|
|
3
|
+
"version": "0.9.0-alpha.5",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"./src/index.ts",
|
|
6
6
|
"./src/core/singleton.ts",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"undici": "^7.28.0",
|
|
66
66
|
"ws": "^8.18.0",
|
|
67
67
|
"sharp": "^0.34.5",
|
|
68
|
-
"@heybox/hb-sdk-protocol": "0.9.0-alpha.
|
|
68
|
+
"@heybox/hb-sdk-protocol": "0.9.0-alpha.5"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
71
|
"vite": ">=5"
|
|
@@ -119,10 +119,10 @@
|
|
|
119
119
|
"@heybox-domain/heybox-theme": "~0.1.0",
|
|
120
120
|
"@heybox-domain/heybox-vue3-ui": "~0.1.0",
|
|
121
121
|
"@heybox/hb-api": "~1.28.10",
|
|
122
|
-
"@heybox/hb-sdk-runtime": "~0.9.0-alpha.
|
|
122
|
+
"@heybox/hb-sdk-runtime": "~0.9.0-alpha.5",
|
|
123
123
|
"@heybox/runtime": "~0.2.0",
|
|
124
|
-
"@heybox/runtime-
|
|
125
|
-
"@heybox/runtime-
|
|
124
|
+
"@heybox/runtime-transport-fetch": "~0.2.0",
|
|
125
|
+
"@heybox/runtime-policy": "~0.2.0"
|
|
126
126
|
},
|
|
127
127
|
"publishConfig": {
|
|
128
128
|
"registry": "https://registry.npmjs.org/",
|
package/skill/skill.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hb-sdk",
|
|
3
|
-
"skillVersion": "0.9.0-alpha.
|
|
3
|
+
"skillVersion": "0.9.0-alpha.5+skill.aa24d6656331",
|
|
4
4
|
"sdk": {
|
|
5
5
|
"package": "@heybox/hb-sdk",
|
|
6
|
-
"version": "0.9.0-alpha.
|
|
7
|
-
"compatibility": "0.9.0-alpha.
|
|
6
|
+
"version": "0.9.0-alpha.5",
|
|
7
|
+
"compatibility": "0.9.0-alpha.5"
|
|
8
8
|
},
|
|
9
9
|
"distribution": {
|
|
10
10
|
"type": "npm",
|
|
11
11
|
"package": "@heybox/hb-sdk",
|
|
12
|
-
"version": "0.9.0-alpha.
|
|
12
|
+
"version": "0.9.0-alpha.5",
|
|
13
13
|
"path": "skill"
|
|
14
14
|
},
|
|
15
15
|
"integrity": "sha256-aa24d6656331cbad8f6aae7735258a49d7f1a82f6e900415de53a1b93a30ddb8"
|
|
@@ -205,7 +205,7 @@ export declare function onHandshakeStateChange(handler: MiniProgramSDKHandshakeS
|
|
|
205
205
|
* - `heybox_app_login_change`:`{ isHeyboxAppLoggedIn }`;
|
|
206
206
|
* - `user_info_authorization_change`:
|
|
207
207
|
* [UserInfoAuthorization](/reference/symbols/root/interfaces/UserInfoAuthorization),包含 `identity` 与
|
|
208
|
-
* `profile`
|
|
208
|
+
* `profile` 两项授权状态,支持 Steam 账号能力时还可能包含 `steam_account`;
|
|
209
209
|
* - `companion.session.output`:`{ sessionId, controllerGeneration, stream, sequence, data }`;
|
|
210
210
|
* - `companion.session.exit`:`{ sessionId, exit }`;
|
|
211
211
|
* - `companion.session.ownershipLost`:`{ sessionId, controllerGeneration }`。
|
|
@@ -1,4 +1,32 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* 在浏览器中校验构建产物的展示资料图片,并创建预览 URL。
|
|
3
|
+
*
|
|
4
|
+
* @param manifest - 构建产物 Manifest,必须包含合法的 `sdkVersion`。
|
|
5
|
+
* @param files - 构建文件列表;`relativePath` 必须精确匹配 Manifest 中的图片路径。
|
|
6
|
+
* @returns 名称、图标 `icon_url` 和按原顺序排列的 `cover_image_urls`;允许缺失资料的历史产物返回 `undefined`。
|
|
7
|
+
* @throws `Error` 资料非法、图片缺失/为空/超过 10 MiB、格式与扩展名不符、超过 4000 万像素、
|
|
8
|
+
* icon 不是 200×200,或仍使用脚手架占位图片时拒绝;浏览器解码和摘要计算失败也会拒绝。
|
|
9
|
+
* @remarks
|
|
10
|
+
* 需要浏览器提供 `crypto.subtle`、`createImageBitmap` 和 object URL API;不生成或回写 Manifest。
|
|
11
|
+
* 失败时会释放本次已创建的 URL;成功后所有 URL 由调用方在预览结束或替换时释放。
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { previewMiniappBasicInfo } from '@heybox/hb-sdk/miniapp-publish';
|
|
15
|
+
*
|
|
16
|
+
* const preview = await previewMiniappBasicInfo(manifest, files);
|
|
17
|
+
* if (preview) {
|
|
18
|
+
* try {
|
|
19
|
+
* const image = new Image();
|
|
20
|
+
* image.src = preview.icon_url;
|
|
21
|
+
* await image.decode();
|
|
22
|
+
* document.body.append(image);
|
|
23
|
+
* } finally {
|
|
24
|
+
* // 已加载的图像可继续显示;不再需要从这些 URL 加载时释放。
|
|
25
|
+
* [preview.icon_url, ...preview.cover_image_urls].forEach(URL.revokeObjectURL);
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
2
30
|
export declare function previewMiniappBasicInfo(manifest: Record<string, unknown>, files: readonly {
|
|
3
31
|
relativePath: string;
|
|
4
32
|
file: Blob;
|
|
@@ -1,12 +1,33 @@
|
|
|
1
1
|
export declare const BASIC_INFO_MAX_BYTES: number;
|
|
2
2
|
export declare const BASIC_INFO_MAX_PIXELS = 40000000;
|
|
3
|
+
/** 小程序展示资料;项目声明和构建产物使用相同字段,图片路径的根目录不同。 */
|
|
3
4
|
export interface MiniappBasicInfo {
|
|
5
|
+
/** NFKC 规范化并移除首尾 Unicode 空白后的名称,长度为 1–40 个 Unicode code point。 */
|
|
4
6
|
name: string;
|
|
7
|
+
/** 图标的规范相对路径;项目声明相对项目目录,Manifest 相对构建目录。 */
|
|
5
8
|
icon: string;
|
|
9
|
+
/** 1–5 个互不重复的封面相对路径,按展示顺序排列。 */
|
|
6
10
|
coverImages: string[];
|
|
7
11
|
}
|
|
8
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* 规范化并校验小程序展示名称。
|
|
14
|
+
*
|
|
15
|
+
* @param raw - 原始名称,必须是字符串。
|
|
16
|
+
* @returns NFKC 规范化、去除首尾 Unicode White_Space 后的名称;不折叠规范化后的内部空白。
|
|
17
|
+
* @throws `Error` 输入不是字符串,或规范化后不是 1–40 个 Unicode code point、不含文字或数字,或包含控制字符、
|
|
18
|
+
* 格式字符、行/段分隔符以及 HTML 特殊字符 `<`、`>`、`&`、双引号或单引号时抛出。
|
|
19
|
+
*/
|
|
9
20
|
export declare function normalizeBasicInfoName(raw: unknown): string;
|
|
10
21
|
export declare function validateBasicInfoPath(raw: unknown): string;
|
|
11
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* 校验项目声明或 Manifest 中的小程序展示资料。
|
|
24
|
+
*
|
|
25
|
+
* @param value - `package.json#heybox` 或 Manifest 对象,读取 `name`、`icon`、`coverImages`。
|
|
26
|
+
* @param sdkVersion - 产物 SDK 版本,默认 `0.8.2`;用于判断历史产物是否允许缺失全部资料。
|
|
27
|
+
* @returns 名称规范化后的新资料对象;仅版本早于 `0.8.2` 且三项均无自有属性时返回 `undefined`。
|
|
28
|
+
* @throws `Error` SDK 版本非法、资料字段不齐、名称/图片路径非法,或封面不是 1–5 个互不重复的路径时抛出。
|
|
29
|
+
* @remarks
|
|
30
|
+
* 图片路径必须使用 `/` 分隔的非空相对路径,扩展名为 JPEG、PNG、GIF 或 WebP;拒绝 URL、点段、
|
|
31
|
+
* 控制字符和构建/缓存等保留目录。此函数只校验声明,不读取文件,也不验证图片字节、尺寸或存在性。
|
|
32
|
+
*/
|
|
12
33
|
export declare function parseMiniappBasicInfo(value: Record<string, unknown>, sdkVersion?: string): MiniappBasicInfo | undefined;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** 小程序发布类别:`tool` 为工具、`game` 为游戏、`other` 为其他;新上传版本必须声明,历史读取可缺省。 */
|
|
2
2
|
export type MiniappCategory = 'tool' | 'game' | 'other';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* 校验项目配置或产物中的小程序类别。
|
|
5
|
+
*
|
|
6
|
+
* @param value - 待校验值,只接受 `tool`、`game`、`other` 或 `undefined`;不做 trim 或大小写转换。
|
|
7
|
+
* @param sourceLabel - 错误消息中的字段来源,默认 `package.json#heybox.category`。
|
|
8
|
+
* @returns 合法类别原值;输入 `undefined` 时返回 `undefined`,由发布流程另行检查是否必填。
|
|
9
|
+
* @throws `Error` 输入为其他值(包括 null 或空字符串)时抛出带字段来源的错误。
|
|
10
|
+
*/
|
|
4
11
|
export declare function parseMiniappCategory(value: unknown, sourceLabel?: string): MiniappCategory | undefined;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export declare const MINIAPP_COMPANION_TARGETS: readonly ["windows-x64", "macos-arm64"];
|
|
2
2
|
export declare const MINIAPP_COMPANION_CAPABILITIES: readonly ["stdio", "attachments", "notifications"];
|
|
3
|
+
/** Companion 二进制目标:Windows x64 或 macOS arm64;不是小程序的通用平台列表。 */
|
|
3
4
|
export type MiniappCompanionTarget = (typeof MINIAPP_COMPANION_TARGETS)[number];
|
|
5
|
+
/**
|
|
6
|
+
* Companion 声明的能力标识:`stdio` 为标准输入输出、`attachments` 为受管附件、`notifications` 为通知。
|
|
7
|
+
* 声明不代表当前宿主可用;实际能力以启动后 Session 返回的 capability 集合为准。
|
|
8
|
+
*/
|
|
4
9
|
export type MiniappCompanionCapability = (typeof MINIAPP_COMPANION_CAPABILITIES)[number];
|
|
5
10
|
export interface MiniappCompanionAuthoringTarget {
|
|
6
11
|
/** 相对 package.json 所在目录的产物目录;SDK 在调试和构建时自动打包。 */
|
|
@@ -19,20 +24,40 @@ export interface MiniappCompanionAuthoringDefinition {
|
|
|
19
24
|
targets: Partial<Record<MiniappCompanionTarget, MiniappCompanionAuthoringTarget>>;
|
|
20
25
|
}
|
|
21
26
|
export type MiniappCompanionAuthoringDeclarations = Record<string, MiniappCompanionAuthoringDefinition>;
|
|
27
|
+
/** 构建生成的单个 Companion ZIP 归档描述;不使用项目声明中的 source 目录。 */
|
|
22
28
|
export interface MiniappCompanionManifestTarget {
|
|
29
|
+
/** 相对构建目录的 ZIP 路径,固定为 `companions/{alias}/{target}.zip`。 */
|
|
23
30
|
path: string;
|
|
31
|
+
/** ZIP 文件完整字节数,必须为正安全整数;不是解压后的大小。 */
|
|
24
32
|
size: number;
|
|
33
|
+
/** ZIP 完整字节的 SHA-256,使用 64 位小写十六进制字符串。 */
|
|
25
34
|
sha256: string;
|
|
35
|
+
/** 解压归档中的启动入口,由构建时从项目声明校验并保留。 */
|
|
26
36
|
entrypoint: {
|
|
37
|
+
/** 普通可执行文件或 macOS `.app` bundle;Windows 仅支持 executable。 */
|
|
27
38
|
kind: 'executable' | 'app-bundle';
|
|
39
|
+
/** 相对归档根目录的入口路径,使用 `/` 分隔;不是 ZIP 路径或项目 source 路径。 */
|
|
28
40
|
path: string;
|
|
29
41
|
};
|
|
42
|
+
/** V1 固定为普通权限启动,不支持请求管理员权限。 */
|
|
30
43
|
elevation: 'none';
|
|
44
|
+
/** 启动参数列表;最多 64 项,每项 1024 UTF-8 bytes,总计 16 KiB,不允许 NUL、CR 或 LF。 */
|
|
31
45
|
args: string[];
|
|
32
46
|
}
|
|
47
|
+
/** 一个 Companion alias 对应的展示信息、声明能力与平台归档。 */
|
|
33
48
|
export interface MiniappCompanionManifestDefinition {
|
|
49
|
+
/** 非空展示名称,最多 120 个 Unicode code point。 */
|
|
34
50
|
displayName: string;
|
|
51
|
+
/** 无重复的声明能力列表,可为空;不表示平台批准或宿主已提供这些能力。 */
|
|
35
52
|
capabilities: MiniappCompanionCapability[];
|
|
53
|
+
/** 按二进制目标索引的已生成归档,至少提供一个目标。 */
|
|
36
54
|
targets: Partial<Record<MiniappCompanionTarget, MiniappCompanionManifestTarget>>;
|
|
37
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* 发布 Manifest 的 Companion 声明,键为以小写字母开头、长度 1–32 的小写字母/数字/连字符 alias。
|
|
58
|
+
*
|
|
59
|
+
* @remarks
|
|
60
|
+
* 声明时对象必须非空,所有 alias 合计最多 64 个 target 描述符。归档由构建插件生成,
|
|
61
|
+
* 不应把含 source 目录的项目配置直接当作此类型;运行时还需声明 companion 权限并获得平台批准。
|
|
62
|
+
*/
|
|
38
63
|
export type MiniappCompanionManifestDeclarations = Record<string, MiniappCompanionManifestDefinition>;
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { type MiniProgramPermissionKey, type MiniProgramRuntimePermissionsSnapshot } from '@heybox/hb-sdk-protocol';
|
|
2
2
|
export declare const MINIAPP_PERMISSION_KEYS: readonly ["userInfo", "steamLibrary", "share", "storage", "filesystem", "clipboard", "leaderboard", "network", "companion"];
|
|
3
3
|
export type MiniappPermissionKey = MiniProgramPermissionKey;
|
|
4
|
+
/** 构建产物中一个已启用的权限声明;未启用的项目配置项会在构建时被省略。 */
|
|
4
5
|
export interface SimpleMiniappPermissionDeclaration {
|
|
6
|
+
/** 固定为 true,表示应用请求使用该权限;不等同于平台已经批准。 */
|
|
5
7
|
enabled: true;
|
|
6
8
|
}
|
|
9
|
+
/** 构建产物中的网络权限声明,附带是否请求小黑盒官方域名访问的配置。 */
|
|
7
10
|
export interface NetworkMiniappPermissionDeclaration extends SimpleMiniappPermissionDeclaration {
|
|
11
|
+
/** 是否申请官方域名访问,项目省略时规范化为 false;实际启用还需远端批准该配置。 */
|
|
8
12
|
useOfficialDomain: boolean;
|
|
9
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* 构建规范化后写入 Manifest 的权限对象;仅包含请求启用的权限,空对象表示无权限需求。
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* 这是本地声明,不是运行时授权结果。仅需声明的权限按声明生效;要求平台批准的权限还需与远端批准
|
|
19
|
+
* 求交,network 的 useOfficialDomain 配置也需同时获批。显式声明中缺失某权限表示不请求该权限;
|
|
20
|
+
* SDK 0.9 系列起必须提供对象,0.8 历史产物未声明时另按迁移规则处理。
|
|
21
|
+
*/
|
|
10
22
|
export type MiniappPermissionDeclarations = Partial<Record<Exclude<MiniappPermissionKey, 'network'>, SimpleMiniappPermissionDeclaration> & {
|
|
11
23
|
network: NetworkMiniappPermissionDeclaration;
|
|
12
24
|
}>;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { type DefaultTreeAdapterMap } from 'parse5';
|
|
2
2
|
type HtmlDocument = DefaultTreeAdapterMap['document'];
|
|
3
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
|
+
*/
|
|
4
11
|
export declare function hasMiniappRuntimeGate(html: string): boolean;
|
|
5
12
|
export {};
|
|
@@ -72,18 +72,31 @@ export declare function isLegacyMobileTemplatePlatforms(platforms: readonly Mini
|
|
|
72
72
|
* @returns 面向开发者的单行提示;调用方负责经 Vite 插件 `warn` 或等价日志通道输出,不得据此阻断构建。
|
|
73
73
|
*/
|
|
74
74
|
export declare function getLegacyMobileTemplatePlatformsNotice(sourceLabel?: string): string;
|
|
75
|
+
/** 构建生成的小程序发布 Manifest;可选字段用于兼容历史产物,发布前仍需完整校验。 */
|
|
75
76
|
export interface MiniappManifest {
|
|
77
|
+
/** 原始产物可带额外元数据;发布校验返回值只保留已知字段。 */
|
|
76
78
|
[key: string]: unknown;
|
|
79
|
+
/** 展示名称;SDK `0.8.2` 起需与图标、封面一起提供。 */
|
|
77
80
|
name?: string;
|
|
81
|
+
/** 相对构建目录的图标路径。 */
|
|
78
82
|
icon?: string;
|
|
83
|
+
/** 相对构建目录的封面路径,1–5 张,按展示顺序排列。 */
|
|
79
84
|
coverImages?: string[];
|
|
85
|
+
/** 生成产物时实际安装的 hb-sdk 版本,不是小程序发布版本。 */
|
|
80
86
|
sdkVersion: string;
|
|
87
|
+
/** 小程序发布版本:完整 SemVer,可含 prerelease,不允许 build metadata 或 core `0.0.0`。 */
|
|
81
88
|
version: string;
|
|
89
|
+
/** 小程序承诺适配的非空、无重复目标平台列表。 */
|
|
82
90
|
platforms: readonly MiniappPlatform[];
|
|
91
|
+
/** 产物权限声明;SDK `0.9` 系列起必须显式提供,无权限需求时使用空对象。 */
|
|
83
92
|
permissions?: MiniappPermissionDeclarations;
|
|
93
|
+
/** 构建生成的 Companion 归档声明,不是含 source 目录的项目 authoring 配置。 */
|
|
84
94
|
companions?: MiniappCompanionManifestDeclarations;
|
|
95
|
+
/** 桌面窗口的可选初值、最小尺寸及是否可缩放。 */
|
|
85
96
|
window?: MiniappWindowDeclaration;
|
|
97
|
+
/** 关联游戏 App ID 字符串,最多 20 个;空列表在发布校验结果中省略。 */
|
|
86
98
|
bindAppIds?: readonly string[];
|
|
99
|
+
/** 发布类别;历史读取可缺省,发布校验必须提供。 */
|
|
87
100
|
category?: MiniappCategory;
|
|
88
101
|
}
|
|
89
102
|
export interface ParseMiniappManifestResult {
|
|
@@ -138,6 +151,16 @@ export declare function validateMiniappPackageVersionForBuild(version: string):
|
|
|
138
151
|
export declare function validateMiniappManifestVersion(version: unknown, sourceLabel?: string): string;
|
|
139
152
|
export declare function renderMiniappManifest(manifest: MiniappManifest): string;
|
|
140
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
|
+
*/
|
|
141
164
|
export declare function validateMiniappManifestForDeploy(manifest: MiniappManifest): {
|
|
142
165
|
category?: MiniappCategory | undefined;
|
|
143
166
|
bindAppIds?: readonly string[] | undefined;
|
|
@@ -59,30 +59,13 @@ export { parseMiniappBindAppIds, type ParseMiniappBindAppIdsOptions } from '../m
|
|
|
59
59
|
/**
|
|
60
60
|
* 将扫描到的相对路径转换为统一的 `/` 分隔形式。
|
|
61
61
|
*
|
|
62
|
-
* @param relativePath - 待整理的构建产物路径。
|
|
63
|
-
*
|
|
64
|
-
* @returns 仅统一分隔符形态的新字符串:所有 `\\` 转为 `/`,所有前导 `/` 被删除,其余连续
|
|
65
|
-
* `/` 合并为一个。空字符串以及运行时传入的 `undefined`、`null`、`false`、`0`、`NaN` 等
|
|
66
|
-
* falsy 值返回 `''`;truthy 非字符串按标准 `String(value)` 结果继续整理。
|
|
62
|
+
* @param relativePath - 待整理的构建产物路径。
|
|
63
|
+
* @returns 反斜杠转为 `/`、删除前导 `/`、合并连续 `/` 后的新字符串;空输入返回空字符串。
|
|
67
64
|
*
|
|
68
65
|
* @remarks
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* `etc/passwd`,`C:\\temp\\app.js` 会变成 `C:/temp/app.js`,`assets/../secret/` 仍保留点段
|
|
73
|
-
* 和尾随 slash;调用方不能根据返回值推断原输入是安全相对路径。
|
|
74
|
-
*
|
|
75
|
-
* SDK 的 build/deploy 流程会把扫描路径先用本函数统一分隔符,再分别使用
|
|
76
|
-
* {@link relativePathContainsNodeModulesSegment} 排除完整 `node_modules` 目录段、用
|
|
77
|
-
* {@link shouldUploadDistFile} 过滤根 `manifest.json` / `.DS_Store` / source map。`hb-sdk build`
|
|
78
|
-
* 随后校验大小预算;`hb-sdk remote deploy` 还会在签名和上传前通过
|
|
79
|
-
* `validateUploadPaths()`、`prepareMiniappArtifactFiles()` 或
|
|
80
|
-
* `validateMiniappUploadPathLengths()` 执行真正的空路径、点段、控制字符、重复和长度校验。
|
|
81
|
-
* 这些步骤不能由本函数单独替代;`shouldUploadDistFile()` 也不会自行检查 `node_modules`。
|
|
82
|
-
*
|
|
83
|
-
* 不要把本函数与 `@heybox/hb-sdk/protocol` 的 `isMiniProgramRelativePath()` 混用:协议 guard
|
|
84
|
-
* 不做转换,只接受已经规范的非空字符串,并拒绝前导/尾随 `/`、反斜杠、空 segment、`.`、
|
|
85
|
-
* `..` 与控制字符;本函数则会改写部分非法形态并保留其余不安全内容。
|
|
66
|
+
* 仅整理文本格式,不做路径安全校验:保留点段、控制字符、盘符和尾随 `/`,不 trim 或 URL decode。
|
|
67
|
+
* 上传前仍需校验路径安全、唯一性与长度。协议 `isMiniProgramRelativePath()` 则只校验、不改写输入。
|
|
68
|
+
* JavaScript 非字符串输入按 `String(relativePath || '')` 转换,falsy 值回退为空串。
|
|
86
69
|
*
|
|
87
70
|
* @example
|
|
88
71
|
* ```ts
|
|
@@ -90,8 +73,6 @@ export { parseMiniappBindAppIds, type ParseMiniappBindAppIdsOptions } from '../m
|
|
|
90
73
|
*
|
|
91
74
|
* normalizeRelativePath('///dist\\assets//app.js'); // 'dist/assets/app.js'
|
|
92
75
|
* normalizeRelativePath('assets/../secret///'); // 'assets/../secret/',仍需安全校验
|
|
93
|
-
* normalizeRelativePath(123 as unknown as string); // '123',JavaScript 运行时强制转换
|
|
94
|
-
* normalizeRelativePath(0 as unknown as string); // '',falsy 值先回退为空串
|
|
95
76
|
* ```
|
|
96
77
|
*
|
|
97
78
|
* @see {@link relativePathContainsNodeModulesSegment}
|
|
@@ -102,40 +83,21 @@ export declare function normalizeRelativePath(relativePath: string): string;
|
|
|
102
83
|
/**
|
|
103
84
|
* 判断路径中是否包含大小写不敏感的完整 `node_modules` 目录段。
|
|
104
85
|
*
|
|
105
|
-
* @param relativePath -
|
|
106
|
-
*
|
|
107
|
-
* @returns 至少一个非空段大小写不敏感地等于完整 `node_modules` 时返回 `true`;空路径、
|
|
108
|
-
* 空段及 `node_modules.txt`、`node_modules-old`、`@node_modules` 等相似名称返回 `false`。
|
|
86
|
+
* @param relativePath - 构建产物路径,先按 {@link normalizeRelativePath} 整理分隔符再分段比较。
|
|
87
|
+
* @returns 任意目录段大小写不敏感地等于 `node_modules` 时返回 `true`;空路径和相似名称返回 `false`。
|
|
109
88
|
*
|
|
110
89
|
* @remarks
|
|
111
|
-
*
|
|
112
|
-
* `node_modules
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* 这是同步、无副作用的**单一 predicate**,只回答“规范化后的文本是否包含该完整段”。它
|
|
116
|
-
* 不 trim segment、不进行 URL/percent decode、Unicode normalize 或文件系统解析。例如
|
|
117
|
-
* `node_modules%2Fpkg/index.js`、`%6eode_modules/pkg.js` 和 `node_modules.txt` 都不会命中;调用方
|
|
118
|
-
* 不应传 URL,也不能把未命中解释为路径安全。
|
|
119
|
-
*
|
|
120
|
-
* 本函数不会拒绝或消解 `.` / `..`、绝对路径、Windows drive prefix、控制字符、空路径、
|
|
121
|
-
* symlink、重复路径或超长路径。`assets/../node_modules/pkg.js` 仍会命中,因为点段保持原样;
|
|
122
|
-
* 不含 `node_modules` 的危险路径则仍可能返回 `false`。签名或上传前必须继续执行对应的上传
|
|
123
|
-
* 路径规范、唯一性和长度校验。
|
|
124
|
-
*
|
|
125
|
-
* SDK build/deploy 会在文件扫描后用本函数拒绝整个 `node_modules` 树,再用
|
|
126
|
-
* {@link shouldUploadDistFile} 排除根 `manifest.json`、`.DS_Store` 和 source map。build 随后
|
|
127
|
-
* 校验大小预算;deploy 还会执行上传路径安全、唯一性、长度与签名校验。这些步骤互不替代:`shouldUploadDistFile()` 本身不检查
|
|
128
|
-
* `node_modules`,本函数也不决定普通文件是否应该上传。
|
|
90
|
+
* 只检查目录段文本,不 trim、URL decode 或解析文件系统。未命中不表示路径安全;点段仍保留。
|
|
91
|
+
* SDK 用它排除 `node_modules` 树,再用 {@link shouldUploadDistFile} 过滤其他不上传的文件;
|
|
92
|
+
* 路径安全、唯一性、长度与上传大小需分别校验。
|
|
129
93
|
*
|
|
130
94
|
* @example
|
|
131
95
|
* ```ts
|
|
132
96
|
* import { relativePathContainsNodeModulesSegment } from '@heybox/hb-sdk/miniapp-publish';
|
|
133
97
|
*
|
|
134
98
|
* relativePathContainsNodeModulesSegment('dist\\NODE_MODULES/pkg/index.js'); // true
|
|
135
|
-
* relativePathContainsNodeModulesSegment('dist//vendor///node_modules/'); // true
|
|
136
99
|
* relativePathContainsNodeModulesSegment('dist/node_modules.txt'); // false
|
|
137
100
|
* relativePathContainsNodeModulesSegment('dist/node_modules%2Fpkg.js'); // false,不做 URL decode
|
|
138
|
-
* relativePathContainsNodeModulesSegment('assets/../secret.js'); // false,但这不代表路径安全
|
|
139
101
|
* ```
|
|
140
102
|
*
|
|
141
103
|
* @see [normalizeRelativePath](/reference/symbols/miniapp-publish/functions/normalizeRelativePath)
|
|
@@ -9,6 +9,9 @@ export { AUTH_LOGIN_METHOD } from '../../protocol/capabilities';
|
|
|
9
9
|
* `app_user_id`。它不是黑盒用户 ID,也不能跨小程序关联用户。
|
|
10
10
|
* - `profile`:允许开发者服务端读取当前用户的昵称和头像。用户可以只同意
|
|
11
11
|
* `identity`,因此请求 `profile` 不代表最终一定获得该 scope。
|
|
12
|
+
* - `steam_account`:申请当前用户主绑定 Steam 账号资料。授权成功不代表已绑定 Steam;
|
|
13
|
+
* {@link AuthorizedUserInfo.steam_id} 存在才表示取得了主绑定 SteamID64,不包含游戏库。
|
|
14
|
+
* 旧版或未启用 Steam 账号能力的 Host 会以 `INVALID_PARAMS` 拒绝该 scope。
|
|
12
15
|
*
|
|
13
16
|
* `identity` 是登录流程的必选 scope:调用方可以不传它,平台仍会把它加入实际授权
|
|
14
17
|
* 结果。scope 只描述授权码和后续 OpenAPI token 可访问的资料,不是 token、客户端权限
|
|
@@ -39,6 +42,7 @@ export interface LoginOptions {
|
|
|
39
42
|
* 匿名授权,成功结果仍包含 `identity`。数组中的值必须属于 {@link LoginScope} 且不能
|
|
40
43
|
* 重复;JavaScript 调用传入未知值、重复值、`null` 或非数组值时,Promise 以
|
|
41
44
|
* `HbMiniProgramSDKError.code === 'INVALID_PARAMS'` 拒绝。
|
|
45
|
+
* `steam_account` 虽属于公开类型,仍要求 Host 支持并启用 Steam 账号能力。
|
|
42
46
|
*
|
|
43
47
|
* @defaultValue `undefined`,即只申请隐式的 `identity`。
|
|
44
48
|
* @see {@link LoginResult.scopes}
|
|
@@ -96,7 +100,7 @@ export interface MiniProgramAuthModule {
|
|
|
96
100
|
* @returns Promise 成功时返回 {@link LoginResult}。它只包含一次性 code、code 有效期和
|
|
97
101
|
* 实际授权 scope,不包含用户资料、`app_user_id`、access token、cookie 或应用密钥。
|
|
98
102
|
* @throws {@link HbMiniProgramSDKError} `INVALID_PARAMS`:`scopes` 不是数组、包含未知值或
|
|
99
|
-
*
|
|
103
|
+
* 重复值,或当前 Host 尚未启用请求的 `steam_account` scope。
|
|
100
104
|
* @throws {@link HbMiniProgramSDKError} `PERMISSION_NOT_DECLARED` 或 `PERMISSION_DENIED`:
|
|
101
105
|
* 当前版本未声明或不可使用 `userInfo` 权限。
|
|
102
106
|
* @throws {@link HbMiniProgramSDKError} `USER_GESTURE_REQUIRED`:本次需要展示黑盒登录或
|
|
@@ -345,14 +345,11 @@ export interface CompanionStdio {
|
|
|
345
345
|
* 自行处理拆包、粘包和 framing。handler 每次收到独立的新 `Uint8Array` 副本,同一事件的其他
|
|
346
346
|
* handler 也收到各自副本,因此一个 handler 修改 bytes 不会污染另一个 handler。
|
|
347
347
|
*
|
|
348
|
-
* Host 输出按 at-least-once 语义投递。
|
|
349
|
-
*
|
|
350
|
-
*
|
|
351
|
-
*
|
|
352
|
-
*
|
|
353
|
-
* 幂等 ID,不能把 SDK 的 generation 内去重当作端到端 exactly-once 保证。
|
|
354
|
-
*
|
|
355
|
-
* handler 的同步异常会被隔离:其他 stdout handler 仍会收到同一 chunk,内部 ack 也仍会尝试。
|
|
348
|
+
* Host 输出按 at-least-once 语义投递。SDK 会在当前 controller 内抑制同一流已见或倒退的输出,
|
|
349
|
+
* 但重新取得控制、页面 reload 或业务重连后仍可能收到重放。业务 frame 应携带自己的幂等 ID,
|
|
350
|
+
* 不能把 SDK 的局部去重当作端到端 exactly-once 保证。
|
|
351
|
+
*
|
|
352
|
+
* handler 的同步异常会被隔离:其他 stdout handler 仍会收到同一 chunk。
|
|
356
353
|
* SDK 忽略 handler 返回值且不会 await Promise;若传入 async 函数,需在函数内部处理 rejected
|
|
357
354
|
* Promise。取消函数仅影响未来本地分发,已经开始执行的回调不会被中断。
|
|
358
355
|
*
|
|
@@ -367,13 +364,11 @@ export interface CompanionStdio {
|
|
|
367
364
|
* stdout/stderr sequence 去重状态;业务仍需处理 Host 重放。若不希望恢复后继续接收,应在
|
|
368
365
|
* `onOwnershipLost()` 中调用本方法返回的取消函数。
|
|
369
366
|
*
|
|
370
|
-
* Host
|
|
371
|
-
*
|
|
372
|
-
* ownership 事件都不会到达 SDK,且没有轮询或 WebSocket fallback。Mini-program 无法通过本方法
|
|
373
|
-
* 检测该集成缺口;Host/Runtime 集成方应把 Session event source 作为可用 stdio 输出的必要条件。
|
|
367
|
+
* 自定义 Host 若未提供 Session 事件源,本方法仍可注册,但不会收到输出、退出或 ownership
|
|
368
|
+
* 事件,也没有轮询 fallback。Mini-program 不能把注册成功当作事件源可用的保证。
|
|
374
369
|
*
|
|
375
370
|
* V1 真实 Companion stdio 仅支持新 PC Host 的 Windows x64 与 macOS arm64;Browser Dev Host
|
|
376
|
-
* 提供确定性 Fake
|
|
371
|
+
* 提供确定性 Fake 以验证字节流、framing 和错误 UI,不执行真实程序。其他平台、旧 Host 或
|
|
377
372
|
* 未开放 Companion 的环境不会提供可用 Session stdio。
|
|
378
373
|
*
|
|
379
374
|
* @example
|
|
@@ -438,22 +433,17 @@ export interface CompanionStdio {
|
|
|
438
433
|
* 即使返回了 `stdio`,订阅也只是成功注册本地 handler,之后不会收到输出事件;它不会轮询、报错或
|
|
439
434
|
* 从 `write()` 响应中推导 stderr。
|
|
440
435
|
*
|
|
441
|
-
* stderr 与 {@link CompanionStdio.onStdout | onStdout()}
|
|
442
|
-
*
|
|
443
|
-
*
|
|
444
|
-
* 拆到多个 chunk,一个 chunk 也可能含多条诊断。stderr 只是 Companion 进程选择的第二输出流,
|
|
436
|
+
* stderr 与 {@link CompanionStdio.onStdout | onStdout()} 使用相同的原始字节与去重合同,
|
|
437
|
+
* 但两条流的订阅和去重相互独立。字节不会自动按 UTF-8、换行、JSON 或消息边界解码;一个逻辑
|
|
438
|
+
* 诊断可能被拆到多个 chunk,一个 chunk 也可能含多条诊断。stderr 是 Companion 进程的第二输出流,
|
|
445
439
|
* 收到数据不等于进程失败,退出结果应通过 {@link CompanionSession.waitForExit} 或
|
|
446
440
|
* {@link CompanionSession.onExit} 判断。
|
|
447
441
|
*
|
|
448
|
-
*
|
|
449
|
-
*
|
|
450
|
-
* `companion.session.ackOutput`;即使没有 stderr handler 或某个 handler 抛错,也会继续确认。
|
|
451
|
-
* ack 是 SDK 内部 fire-and-forget 请求,失败会被吞掉,不会回调 handler,也不表示 Host 一定停止
|
|
452
|
-
* 重放。因此 Host 输出是 at-least-once,业务跨 controller 转移、页面 reload 或重连仍应按自己的
|
|
453
|
-
* framing / 消息 ID 处理重放和去重。
|
|
442
|
+
* SDK 会在当前 controller 内抑制本流已见或倒退的输出,但 Host 输出仍是 at-least-once。
|
|
443
|
+
* 业务跨 controller 转移、页面 reload 或重连后,应按自己的 framing / 消息 ID 处理重放和去重。
|
|
454
444
|
*
|
|
455
445
|
* handler 按注册集合顺序同步执行,返回值会被忽略,Promise 不会被等待。每个 handler 的同步异常
|
|
456
|
-
* 都被 SDK 单独捕获,不会阻断同一 chunk 的其他 handler
|
|
446
|
+
* 都被 SDK 单独捕获,不会阻断同一 chunk 的其他 handler;异步 handler 的 rejected Promise
|
|
457
447
|
* 不会被 SDK 捕获,应在 handler 内显式处理。订阅不会重放注册前的 stderr,也不能读取历史缓冲区。
|
|
458
448
|
*
|
|
459
449
|
* Session 退出后,SDK 会清空 stdout/stderr handler;已有取消函数仍可安全调用。controller ownership
|
|
@@ -792,8 +782,8 @@ export interface CompanionSession {
|
|
|
792
782
|
* `terminate()` resolve 不会直接把本地 `session.state` 改成 `'exited'`。SDK 只在收到合法的
|
|
793
783
|
* `companion.session.exit` 事件后更新状态、resolve `waitForExit()` 并调用 `onExit()`;Host 通常会把
|
|
794
784
|
* 强制终止报告为 `{ reason: 'terminated' }`,但调用方应以实际 {@link CompanionExit} 为准。若 Host
|
|
795
|
-
*
|
|
796
|
-
*
|
|
785
|
+
* 没有提供 Session 事件源,terminate 请求仍可能成功,而 `state` 不更新、`waitForExit()` 一直
|
|
786
|
+
* pending;Mini-program 没有轮询 fallback。
|
|
797
787
|
*
|
|
798
788
|
* V1 真实 Companion Session 仅支持新 PC Host 的 Windows x64 与 macOS arm64;Browser Dev Host
|
|
799
789
|
* Fake 会立即发出 `reason: 'terminated'` 的确定性 exit 事件,仅用于 UI 与状态机联调,不代表真实
|
|
@@ -970,16 +960,20 @@ export interface CompanionSession {
|
|
|
970
960
|
* const session = await hbSDK.companion.getActiveSession('runner')
|
|
971
961
|
* if (session) {
|
|
972
962
|
* // 先读取当前值,再订阅未来的 running -> exited 迁移。
|
|
973
|
-
*
|
|
963
|
+
* console.log(session.state)
|
|
974
964
|
*
|
|
975
965
|
* const stopState = session.onStateChange(state => {
|
|
976
|
-
*
|
|
966
|
+
* console.log(state)
|
|
977
967
|
* })
|
|
978
968
|
* const stopExit = session.onExit(exit => {
|
|
979
|
-
*
|
|
969
|
+
* console.log(exit)
|
|
980
970
|
* stopState()
|
|
981
|
-
* stopExit()
|
|
982
971
|
* })
|
|
972
|
+
*
|
|
973
|
+
* window.addEventListener('pagehide', () => {
|
|
974
|
+
* stopState()
|
|
975
|
+
* stopExit()
|
|
976
|
+
* }, { once: true })
|
|
983
977
|
* }
|
|
984
978
|
* ```
|
|
985
979
|
*
|
|
@@ -1089,10 +1083,9 @@ export interface CompanionSession {
|
|
|
1089
1083
|
* sequence 水位,并保留已注册的 handler;之后新的 ownership-lost 事件仍可再次触发同一订阅。
|
|
1090
1084
|
* 页面 reload 会创建新的 SDK/proxy,旧订阅不会跨页面保留。
|
|
1091
1085
|
*
|
|
1092
|
-
*
|
|
1093
|
-
*
|
|
1094
|
-
*
|
|
1095
|
-
* 集成方必须提供事件源,业务不能把“尚未收到通知”当作仍拥有控制权。
|
|
1086
|
+
* 自定义 Host 若未提供 Session 事件源,本方法仍可注册,但不会收到 ownership、输出或退出
|
|
1087
|
+
* 事件,也没有轮询 fallback;控制请求仍可能以 `COMPANION_SESSION_OWNERSHIP_LOST` 失败。
|
|
1088
|
+
* 业务不能把“尚未收到通知”当作仍拥有控制权。
|
|
1096
1089
|
*
|
|
1097
1090
|
* 不要求新的可信用户手势,也不改变权限或 Session 生命周期。它适用于在 ownership 丢失后立即
|
|
1098
1091
|
* 禁用按钮、停止发送新命令并显示恢复入口;不要在回调中自动抢占 controller 或无条件重发可能已
|
|
@@ -80,7 +80,8 @@ export interface MiniProgramNetworkRequestConfig {
|
|
|
80
80
|
headers?: MiniProgramNetworkHeaders;
|
|
81
81
|
/**
|
|
82
82
|
* Host 请求超时,单位毫秒;必须是 `0` 至 `30000` 的有限数字。省略或 `0` 时的具体默认
|
|
83
|
-
* 行为由 Host
|
|
83
|
+
* 行为由 Host 决定;业务需要明确超时时应传正数。该字段不改变 SDK 等待 bridge 响应的
|
|
84
|
+
* 独立超时;默认 SDK 实例的等待上限为 10 秒,详见 {@link MiniProgramNetworkModule.request}。
|
|
84
85
|
*/
|
|
85
86
|
timeout?: number;
|
|
86
87
|
/** SDK 侧状态校验;默认只接受 2xx,函数本身不会跨 bridge,详见 {@link MiniProgramNetworkValidateStatus}。 */
|
|
@@ -126,11 +127,15 @@ export interface DownloadBaseOptions {
|
|
|
126
127
|
* 短期签名 URL。
|
|
127
128
|
*/
|
|
128
129
|
headers?: MiniProgramNetworkHeaders;
|
|
129
|
-
/**
|
|
130
|
+
/**
|
|
131
|
+
* 网络与响应 body 的空闲超时,单位毫秒;必须是有限正数,不是整个下载的总时长。
|
|
132
|
+
* 省略时 SDK 与 Runtime 不设置统一默认值,由 Host 采用自身策略;需要确定超时预算时显式传入。
|
|
133
|
+
*/
|
|
130
134
|
timeout?: number;
|
|
131
135
|
/**
|
|
132
136
|
* 单次下载可提交的最大字节数;必须是正的 safe integer。可信 `Content-Length` 已超限时
|
|
133
137
|
* 会在写入前返回 `FILE_TOO_LARGE`,流式传输过程中超限也不会提交部分文件。
|
|
138
|
+
* 省略时 SDK 与 Runtime 不附加该字节上限,但仍受 Host 文件与传输限制;不能视为无限容量。
|
|
134
139
|
*/
|
|
135
140
|
maxBytes?: number;
|
|
136
141
|
/**
|
|
@@ -271,6 +276,11 @@ export interface MiniProgramNetworkModule {
|
|
|
271
276
|
* Browser Dev Host 与真实 App Host 都拒绝 multipart,并执行相同的 no-follow、官方域名和
|
|
272
277
|
* 敏感路径策略;本地代理另有 5 MiB 响应体上限,真机 Host 仍可能有不同的响应限制。
|
|
273
278
|
*
|
|
279
|
+
* Host 的 `config.timeout` 与 SDK 等待 bridge 响应的超时彼此独立;默认 SDK 实例从请求
|
|
280
|
+
* 发出后最多等待 10 秒。因此即使传 `timeout: 30000`,也可能先以 `REQUEST_TIMEOUT` 拒绝。
|
|
281
|
+
* SDK 等待超时不会主动取消 Host 请求,也不能证明服务端未处理请求;写请求重试应使用
|
|
282
|
+
* 幂等键或先核实业务结果,避免重复执行。
|
|
283
|
+
*
|
|
274
284
|
* @example
|
|
275
285
|
* ```ts
|
|
276
286
|
* import hbSDK from '@heybox/hb-sdk'
|
|
@@ -16,6 +16,8 @@ export interface MiniProgramUserModule {
|
|
|
16
16
|
* - `false`:当前未登录,`authorization` 和 `userInfo` 固定为 `null`。
|
|
17
17
|
* - `true`:`authorization` 固定包含 `identity`、`profile` 两项状态;兼容 Host 的
|
|
18
18
|
* `userInfo` 仍可能为 `null`,非空时包含隔离 `app_user_id` 与可空 `profile`。
|
|
19
|
+
* 支持 Steam 账号能力的 Host 还可能返回 `authorization.steam_account` 与
|
|
20
|
+
* `userInfo.steam_id`;授权与绑定状态应分别判断。
|
|
19
21
|
*
|
|
20
22
|
* @throws {@link HbMiniProgramSDKError} `PERMISSION_NOT_DECLARED` / `PERMISSION_DENIED` 表示
|
|
21
23
|
* `userInfo` Manifest 权限不可用;`INVALID_STATE` 表示缺少 canonical 小程序身份;
|
|
@@ -39,6 +41,8 @@ export interface MiniProgramUserModule {
|
|
|
39
41
|
* 会静默建立或读取本小程序隔离身份,并授予 `identity` 与 `profile`。`app_user_id` 只在
|
|
40
42
|
* 当前小程序与当前授权有效期内作为稳定、不透明的关联键;它不是黑盒用户 ID、授权码或
|
|
41
43
|
* 登录凭据。`profile.nickname` / `avatar` 只用于展示,可能为空字符串,不应用于鉴权。
|
|
44
|
+
* Steam 账号能力启用时,该读取还会静默授予 `steam_account`;只有当前账号存在主绑定
|
|
45
|
+
* 时才返回 string 类型的 `steam_id`。该字段缺失不能单独证明用户拒绝了授权。
|
|
42
46
|
*
|
|
43
47
|
* 该方法不返回 code、token 或 cookie,也不会创建开发者服务端会话。需要服务端身份时,
|
|
44
48
|
* 在可信用户操作中调用 [auth.login](/reference/sdk/auth/login) 获取一次性 code;需要停止
|
|
@@ -112,7 +116,8 @@ export interface MiniProgramUserModule {
|
|
|
112
116
|
*
|
|
113
117
|
* 只有服务端确认成功且请求期间账号未变化时,Runtime 才清空缓存的隔离身份和授权 scope,
|
|
114
118
|
* 并通过 [on](/reference/sdk/lifecycle/on) 发布 `user_info_authorization_change`,payload 为
|
|
115
|
-
* `{ identity: 'denied', profile: 'denied' }
|
|
119
|
+
* `{ identity: 'denied', profile: 'denied' }`;启用 Steam 账号能力时还包含
|
|
120
|
+
* `steam_account: 'denied'`。失败或过期的撤销结果不会发布该成功事件。
|
|
116
121
|
*
|
|
117
122
|
* 成功后必须立即停止使用旧 `app_user_id` 和资料,并由业务自行清理 localStorage、SDK
|
|
118
123
|
* `storage` 中的业务值、cookie、数据库以及开发者服务端 session;SDK 不会代为删除这些
|
|
@@ -183,6 +188,12 @@ export interface MiniProgramUserModule {
|
|
|
183
188
|
* unit。`limit` 必须为正整数并在大于 100 时收窄为 100。继续分页时把返回的
|
|
184
189
|
* `data.nextOffset` 原样传给下一次调用。
|
|
185
190
|
*
|
|
191
|
+
* Host Runtime 默认将相同查询的成功游戏页缓存 24 小时,游戏新增、游玩时长、隐藏状态和
|
|
192
|
+
* 价格可能延迟更新。支持 sandbox 文件操作的宿主可以跨小程序关闭复用;其他宿主仅在当前
|
|
193
|
+
* Runtime 内复用。缓存仍检查当前账号和绑定上下文,首次全量读取仍需逐页请求。
|
|
194
|
+
* 缓存行为与有效期由 Host Runtime 策略决定,小程序不能通过本方法指定强制刷新。
|
|
195
|
+
* 系统或用户清理缓存目录后会重新请求;24 小时是有效期上限,不保证文件保留时长。
|
|
196
|
+
*
|
|
186
197
|
* 先检查 `isLogin` 和 `isBound`,再读取 `data`。需要单独读取小黑盒登录态和当前小程序
|
|
187
198
|
* 隔离身份时使用 [user.getInfo](/reference/sdk/user/getInfo);需要为开发者服务端建立会话时,
|
|
188
199
|
* 在可信用户操作中使用 [auth.login](/reference/sdk/auth/login)。这两个 API 都要求
|
|
@@ -82,9 +82,9 @@ export interface SteamGameListItem {
|
|
|
82
82
|
image?: string;
|
|
83
83
|
/** 非空的 Steam 图标 URL 字符串;优先读取服务端 `appicon`。 */
|
|
84
84
|
icon?: string;
|
|
85
|
-
/**
|
|
85
|
+
/** 当前接口返回的累计游玩时长,单位为秒;`0` 是有效值。该单位只适用于本接口响应。 */
|
|
86
86
|
playtimeForever?: number;
|
|
87
|
-
/**
|
|
87
|
+
/** 当前接口返回的最近两周游玩时长,单位为秒;`0` 是有效值。该单位只适用于本接口响应。 */
|
|
88
88
|
playtime2Weeks?: number;
|
|
89
89
|
/** trim 后的非空游戏标签;没有有效标签时整个字段省略。 */
|
|
90
90
|
tags?: string[];
|