@heybox/hb-sdk-protocol 0.8.3-alpha.1 → 0.8.3-alpha.3

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/README.md CHANGED
@@ -56,6 +56,13 @@ Runtime 可以在握手 response 中附带 `MiniProgramRuntimeEnvironmentInfo`
56
56
 
57
57
  该 response 是 v2 envelope 上的向后兼容扩展,不新增 capability method 或权限,也不提升 `MINI_PROGRAM_MESSAGE_VERSION`。旧 SDK 没有对应 pending request,会忽略该 response;新 SDK 遇到旧 Host 时生成未知值快照。
58
58
 
59
+ ## 窗口协议
60
+
61
+ `viewport.setDisplay` 接受 `{ orientation?: 'portrait' | 'landscape', fullscreen?: boolean }`,返回 `{ supported: boolean }`。`true` 表示原生方向与胶囊设置已完成;`false` 表示原生能力不可用,保留原生状态,宿主仍可尽力处理 H5 顶部栏。能力缺失的兼容错误由 SDK 统一转换为 `false`,其它执行错误继续保留。
62
+ 至少传一个字段,省略字段保持当前目标值;初始为竖屏、非全屏。全屏同时收起胶囊和宿主额外顶部栏。SDK 复用 request-scoped cancel 协议;
63
+ Runtime 持有截止时间与意图替换语义,Host 负责原子应用与终止恢复。
64
+ `viewport_change` 事件载荷复用 `MiniProgramWindowInfoResult`,描述当前窗口与四边安全区。
65
+
59
66
  ## 公开入口
60
67
 
61
68
  - `@heybox/hb-sdk-protocol`:本包唯一入口,适合 Host、Runtime 和协议维护代码。
@@ -85,3 +92,9 @@ pnpm --filter @heybox/hb-sdk-protocol run check:boundary
85
92
  pnpm --filter @heybox/hb-sdk-protocol run test:unit
86
93
  pnpm --filter @heybox/hb-sdk-protocol run build:package
87
94
  ```
95
+
96
+ ### 展示状态事件
97
+
98
+ `display_change` 在宿主确认方向或全屏状态发生变化后发送 `{ orientation, fullscreen, source }`,包括开发者调用 `setDisplay()` 和用户点击宿主退出全屏按钮。两个字段独立;退出全屏不改变方向。重复状态、不支持(`supported: false`)、失败、超时、取消及被后续请求替换的设置不发送事件。事件不回放初始状态,新容器默认竖屏、非全屏;它不监听手机旋转传感器,窗口尺寸与安全区仍通过 `viewport_change` 获取。请在调用设置前注册监听,并在页面销毁时取消。
99
+
100
+ `display_change.source` 区分变化来源:`api` 为开发者调用,`user` 为用户点击宿主退出全屏按钮。同目标并发合并时保留首次发起操作的来源;重复状态不额外发事件。旧宿主可能不含 source,不能将缺失来源推断为用户操作。仅用户退出时跳页,应判断 `source === 'user' && !fullscreen`,再按业务需要调用竖屏设置并跳转。
package/dist/index.cjs.js CHANGED
@@ -41,6 +41,7 @@ const USER_GET_STEAM_GAME_LIST_METHOD = 'user.getSteamGameList';
41
41
  const SHARE_COPY_LINK_METHOD = 'share.copyLink';
42
42
  const SHARE_SHOW_SHARE_MENU_METHOD = 'share.showShareMenu';
43
43
  const SHARE_SCREENSHOT_METHOD = 'share.screenshot';
44
+ const VIEWPORT_SET_DISPLAY_METHOD = 'viewport.setDisplay';
44
45
  const VIEWPORT_GET_WINDOW_INFO_METHOD = 'viewport.getWindowInfo';
45
46
  const VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD = 'viewport.setNavigationBarStyle';
46
47
  const STORAGE_GET_STORAGE_METHOD = 'storage.getStorage';
@@ -164,6 +165,13 @@ const MINI_PROGRAM_PROTOCOL_CAPABILITIES = [
164
165
  requirement: { kind: 'none' },
165
166
  risk: 'low',
166
167
  },
168
+ {
169
+ method: VIEWPORT_SET_DISPLAY_METHOD,
170
+ module: 'viewport',
171
+ capability: VIEWPORT_SET_DISPLAY_METHOD,
172
+ requirement: { kind: 'none' },
173
+ risk: 'low',
174
+ },
167
175
  {
168
176
  method: STORAGE_GET_STORAGE_METHOD,
169
177
  module: 'storage',
@@ -1458,6 +1466,7 @@ const MINI_PROGRAM_NO_DECLARATION_METHODS = [
1458
1466
  'ui.hideLoading',
1459
1467
  'viewport.getWindowInfo',
1460
1468
  'viewport.setNavigationBarStyle',
1469
+ 'viewport.setDisplay',
1461
1470
  'device.vibrate',
1462
1471
  'navigation.close',
1463
1472
  'navigation.reload',
@@ -1725,6 +1734,7 @@ exports.USER_GET_STEAM_GAME_LIST_METHOD = USER_GET_STEAM_GAME_LIST_METHOD;
1725
1734
  exports.USER_INFO_AUTHORIZATION_SCOPES = USER_INFO_AUTHORIZATION_SCOPES;
1726
1735
  exports.USER_REVOKE_AUTHORIZATION_METHOD = USER_REVOKE_AUTHORIZATION_METHOD;
1727
1736
  exports.VIEWPORT_GET_WINDOW_INFO_METHOD = VIEWPORT_GET_WINDOW_INFO_METHOD;
1737
+ exports.VIEWPORT_SET_DISPLAY_METHOD = VIEWPORT_SET_DISPLAY_METHOD;
1728
1738
  exports.VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD = VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD;
1729
1739
  exports.isManagedMiniProgramRuntimePermissionKey = isManagedMiniProgramRuntimePermissionKey;
1730
1740
  exports.isMiniProgramBridgeMessage = isMiniProgramBridgeMessage;
package/dist/index.esm.js CHANGED
@@ -39,6 +39,7 @@ const USER_GET_STEAM_GAME_LIST_METHOD = 'user.getSteamGameList';
39
39
  const SHARE_COPY_LINK_METHOD = 'share.copyLink';
40
40
  const SHARE_SHOW_SHARE_MENU_METHOD = 'share.showShareMenu';
41
41
  const SHARE_SCREENSHOT_METHOD = 'share.screenshot';
42
+ const VIEWPORT_SET_DISPLAY_METHOD = 'viewport.setDisplay';
42
43
  const VIEWPORT_GET_WINDOW_INFO_METHOD = 'viewport.getWindowInfo';
43
44
  const VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD = 'viewport.setNavigationBarStyle';
44
45
  const STORAGE_GET_STORAGE_METHOD = 'storage.getStorage';
@@ -162,6 +163,13 @@ const MINI_PROGRAM_PROTOCOL_CAPABILITIES = [
162
163
  requirement: { kind: 'none' },
163
164
  risk: 'low',
164
165
  },
166
+ {
167
+ method: VIEWPORT_SET_DISPLAY_METHOD,
168
+ module: 'viewport',
169
+ capability: VIEWPORT_SET_DISPLAY_METHOD,
170
+ requirement: { kind: 'none' },
171
+ risk: 'low',
172
+ },
165
173
  {
166
174
  method: STORAGE_GET_STORAGE_METHOD,
167
175
  module: 'storage',
@@ -1456,6 +1464,7 @@ const MINI_PROGRAM_NO_DECLARATION_METHODS = [
1456
1464
  'ui.hideLoading',
1457
1465
  'viewport.getWindowInfo',
1458
1466
  'viewport.setNavigationBarStyle',
1467
+ 'viewport.setDisplay',
1459
1468
  'device.vibrate',
1460
1469
  'navigation.close',
1461
1470
  'navigation.reload',
@@ -1646,4 +1655,4 @@ function isRecord(value) {
1646
1655
  return typeof value === 'object' && value !== null && !Array.isArray(value);
1647
1656
  }
1648
1657
 
1649
- export { AUTH_LOGIN_METHOD, CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_INFO_METHOD, CLOUD_LEADERBOARD_GET_LIST_METHOD, CLOUD_LEADERBOARD_SUBMIT_METHOD, COMPANION_ALIAS_PATTERN, COMPANION_CANCEL_PREPARATION_METHOD, COMPANION_ERROR_CODES, COMPANION_GET_ACTIVE_SESSION_METHOD, COMPANION_GET_INFO_METHOD, COMPANION_GET_PREPARATION_STATUS_METHOD, COMPANION_LAUNCH_METHOD, COMPANION_OPEN_ATTACHMENT_METHOD, COMPANION_PREPARE_METHOD, COMPANION_SESSION_ACK_OUTPUT_METHOD, COMPANION_SESSION_CLOSE_STDIN_METHOD, COMPANION_SESSION_EXIT_EVENT, COMPANION_SESSION_OUTPUT_EVENT, COMPANION_SESSION_OWNERSHIP_LOST_EVENT, COMPANION_SESSION_TERMINATE_METHOD, COMPANION_SESSION_WRITE_METHOD, COMPANION_SHOW_NOTIFICATION_METHOD, DEVICE_SET_CLIPBOARD_METHOD, DEVICE_VIBRATE_METHOD, DIRECTORY_CREATE_METHOD, DIRECTORY_EXISTS_METHOD, DIRECTORY_LIST_METHOD, DIRECTORY_REMOVE_METHOD, FILES_PICK_DIRECTORY_METHOD, FILES_PICK_FILES_METHOD, FILES_SAVE_FILE_METHOD, FILE_CREATE_METHOD, FILE_EXISTS_METHOD, FILE_READ_BYTES_METHOD, FILE_READ_TEXT_METHOD, FILE_REMOVE_METHOD, FILE_STAT_METHOD, FILE_WRITE_BYTES_METHOD, FILE_WRITE_TEXT_METHOD, MINI_PROGRAM_BRIDGE_NONCE_PARAM, MINI_PROGRAM_MESSAGE_NAMESPACE, MINI_PROGRAM_MESSAGE_VERSION, MINI_PROGRAM_NATIVE_CHUNK_MAX_BYTES, MINI_PROGRAM_NATIVE_HOST_CONTRACT_REVISION, MINI_PROGRAM_NATIVE_HOST_DESCRIPTION, MINI_PROGRAM_NATIVE_HOST_MESSAGE_EVENT, MINI_PROGRAM_NATIVE_HOST_OBJECT, MINI_PROGRAM_NATIVE_HOST_PROTOCOL_VERSION, MINI_PROGRAM_NATIVE_OPERATIONS, MINI_PROGRAM_NO_DECLARATION_METHODS, MINI_PROGRAM_OPERATION_PROGRESS_METHOD, MINI_PROGRAM_PERMISSION_CATALOG, MINI_PROGRAM_PERMISSION_KEYS, MINI_PROGRAM_PROTOCOL_CAPABILITIES, NAVIGATION_CLOSE_METHOD, NAVIGATION_OPEN_APP_PAGE_METHOD, NAVIGATION_RELOAD_METHOD, NETWORK_DOWNLOAD_METHOD, NETWORK_REQUEST_METHOD, RUNTIME_LOCATION_PROBE_METHOD, SDK_CSP_VIOLATION_METHOD, SDK_HANDSHAKE_METHOD, SDK_LOCATION_REPORT_METHOD, SHARE_COPY_LINK_METHOD, SHARE_SCREENSHOT_METHOD, SHARE_SHOW_SHARE_MENU_METHOD, STORAGE_GET_STORAGE_METHOD, STORAGE_SET_STORAGE_METHOD, UI_HIDE_LOADING_METHOD, UI_SHOW_LOADING_METHOD, UI_SHOW_TOAST_METHOD, USER_GET_INFO_METHOD, USER_GET_STEAM_GAME_LIST_METHOD, USER_INFO_AUTHORIZATION_SCOPES, USER_REVOKE_AUTHORIZATION_METHOD, VIEWPORT_GET_WINDOW_INFO_METHOD, VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD, isManagedMiniProgramRuntimePermissionKey, isMiniProgramBridgeMessage, isMiniProgramByteArray, isMiniProgramCompanionPrepareProgress, isMiniProgramDirectoryDescriptor, isMiniProgramDirectoryRef, isMiniProgramDownloadProgressPayload, isMiniProgramFileDescriptor, isMiniProgramFileRef, isMiniProgramFileStat, isMiniProgramFileSystemEntityDescriptor, isMiniProgramNativeBinaryChunk, isMiniProgramNativeHostDescription, isMiniProgramNativeHostMessage, isMiniProgramOperationProgressPayload, isMiniProgramPathRootRef, isMiniProgramPermissionKey, isMiniProgramRelativePath, parseMiniProgramRuntimePermissions };
1658
+ export { AUTH_LOGIN_METHOD, CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_INFO_METHOD, CLOUD_LEADERBOARD_GET_LIST_METHOD, CLOUD_LEADERBOARD_SUBMIT_METHOD, COMPANION_ALIAS_PATTERN, COMPANION_CANCEL_PREPARATION_METHOD, COMPANION_ERROR_CODES, COMPANION_GET_ACTIVE_SESSION_METHOD, COMPANION_GET_INFO_METHOD, COMPANION_GET_PREPARATION_STATUS_METHOD, COMPANION_LAUNCH_METHOD, COMPANION_OPEN_ATTACHMENT_METHOD, COMPANION_PREPARE_METHOD, COMPANION_SESSION_ACK_OUTPUT_METHOD, COMPANION_SESSION_CLOSE_STDIN_METHOD, COMPANION_SESSION_EXIT_EVENT, COMPANION_SESSION_OUTPUT_EVENT, COMPANION_SESSION_OWNERSHIP_LOST_EVENT, COMPANION_SESSION_TERMINATE_METHOD, COMPANION_SESSION_WRITE_METHOD, COMPANION_SHOW_NOTIFICATION_METHOD, DEVICE_SET_CLIPBOARD_METHOD, DEVICE_VIBRATE_METHOD, DIRECTORY_CREATE_METHOD, DIRECTORY_EXISTS_METHOD, DIRECTORY_LIST_METHOD, DIRECTORY_REMOVE_METHOD, FILES_PICK_DIRECTORY_METHOD, FILES_PICK_FILES_METHOD, FILES_SAVE_FILE_METHOD, FILE_CREATE_METHOD, FILE_EXISTS_METHOD, FILE_READ_BYTES_METHOD, FILE_READ_TEXT_METHOD, FILE_REMOVE_METHOD, FILE_STAT_METHOD, FILE_WRITE_BYTES_METHOD, FILE_WRITE_TEXT_METHOD, MINI_PROGRAM_BRIDGE_NONCE_PARAM, MINI_PROGRAM_MESSAGE_NAMESPACE, MINI_PROGRAM_MESSAGE_VERSION, MINI_PROGRAM_NATIVE_CHUNK_MAX_BYTES, MINI_PROGRAM_NATIVE_HOST_CONTRACT_REVISION, MINI_PROGRAM_NATIVE_HOST_DESCRIPTION, MINI_PROGRAM_NATIVE_HOST_MESSAGE_EVENT, MINI_PROGRAM_NATIVE_HOST_OBJECT, MINI_PROGRAM_NATIVE_HOST_PROTOCOL_VERSION, MINI_PROGRAM_NATIVE_OPERATIONS, MINI_PROGRAM_NO_DECLARATION_METHODS, MINI_PROGRAM_OPERATION_PROGRESS_METHOD, MINI_PROGRAM_PERMISSION_CATALOG, MINI_PROGRAM_PERMISSION_KEYS, MINI_PROGRAM_PROTOCOL_CAPABILITIES, NAVIGATION_CLOSE_METHOD, NAVIGATION_OPEN_APP_PAGE_METHOD, NAVIGATION_RELOAD_METHOD, NETWORK_DOWNLOAD_METHOD, NETWORK_REQUEST_METHOD, RUNTIME_LOCATION_PROBE_METHOD, SDK_CSP_VIOLATION_METHOD, SDK_HANDSHAKE_METHOD, SDK_LOCATION_REPORT_METHOD, SHARE_COPY_LINK_METHOD, SHARE_SCREENSHOT_METHOD, SHARE_SHOW_SHARE_MENU_METHOD, STORAGE_GET_STORAGE_METHOD, STORAGE_SET_STORAGE_METHOD, UI_HIDE_LOADING_METHOD, UI_SHOW_LOADING_METHOD, UI_SHOW_TOAST_METHOD, USER_GET_INFO_METHOD, USER_GET_STEAM_GAME_LIST_METHOD, USER_INFO_AUTHORIZATION_SCOPES, USER_REVOKE_AUTHORIZATION_METHOD, VIEWPORT_GET_WINDOW_INFO_METHOD, VIEWPORT_SET_DISPLAY_METHOD, VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD, isManagedMiniProgramRuntimePermissionKey, isMiniProgramBridgeMessage, isMiniProgramByteArray, isMiniProgramCompanionPrepareProgress, isMiniProgramDirectoryDescriptor, isMiniProgramDirectoryRef, isMiniProgramDownloadProgressPayload, isMiniProgramFileDescriptor, isMiniProgramFileRef, isMiniProgramFileStat, isMiniProgramFileSystemEntityDescriptor, isMiniProgramNativeBinaryChunk, isMiniProgramNativeHostDescription, isMiniProgramNativeHostMessage, isMiniProgramOperationProgressPayload, isMiniProgramPathRootRef, isMiniProgramPermissionKey, isMiniProgramRelativePath, parseMiniProgramRuntimePermissions };
@@ -1,5 +1,5 @@
1
1
  {
2
- "hash": "411af8cb9f6bffc9a10c7b1bdf8eda6f777d25e52e34b8b2e72eb9ab0b2ee095",
2
+ "hash": "6a5978e344f22fd060ff55f77a1248a7c161cd8fbf5be2b8c73eddd308e8fe78",
3
3
  "permissions": [
4
4
  {
5
5
  "key": "userInfo",
@@ -177,6 +177,7 @@
177
177
  "ui.hideLoading",
178
178
  "viewport.getWindowInfo",
179
179
  "viewport.setNavigationBarStyle",
180
+ "viewport.setDisplay",
180
181
  "device.vibrate",
181
182
  "navigation.close",
182
183
  "navigation.reload",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heybox/hb-sdk-protocol",
3
- "version": "0.8.3-alpha.1",
3
+ "version": "0.8.3-alpha.3",
4
4
  "description": "Heybox mini-program iframe bridge wire contracts.",
5
5
  "sideEffects": false,
6
6
  "exports": {
package/src/bridge.ts CHANGED
@@ -18,6 +18,8 @@ import type { MiniProgramCapabilityProgress, MiniProgramProgressMethod } from '.
18
18
  export type MiniProgramBridgeMessageType = 'handshake' | 'request' | 'response' | 'event' | 'cancel';
19
19
  export type MiniProgramEventName =
20
20
  | 'launch'
21
+ | 'viewport_change'
22
+ | 'display_change'
21
23
  | 'ready'
22
24
  | 'show'
23
25
  | 'hide'
@@ -123,6 +125,12 @@ export interface MiniProgramBridgeProgressMessage<
123
125
  error?: never;
124
126
  }
125
127
  export interface MiniProgramEventPayloadMap {
128
+ /** 展示状态实际变化后通知;不回放初始状态,不支持或失败时不通知。 */
129
+ display_change: import('./payloads').MiniProgramDisplayState & {
130
+ /** api 为开发者调用;user 为用户点击宿主退出全屏按钮。同目标合并时保留首次发起来源。旧宿主可能不提供。 */
131
+ source?: 'api' | 'user';
132
+ };
133
+ viewport_change: import('./payloads').MiniProgramWindowInfoResult;
126
134
  launch: { timestamp: number; url?: string };
127
135
  ready: { timestamp: number };
128
136
  show: { timestamp: number; source?: string };
@@ -91,6 +91,8 @@ import type {
91
91
  SaveFileResult,
92
92
  SetClipboardPayload,
93
93
  SetClipboardResult,
94
+ SetDisplayPayload,
95
+ SetDisplayResult,
94
96
  SetNavigationBarStylePayload,
95
97
  SetNavigationBarStyleResult,
96
98
  SetStoragePayload,
@@ -114,6 +116,7 @@ export const USER_GET_STEAM_GAME_LIST_METHOD = 'user.getSteamGameList' as const;
114
116
  export const SHARE_COPY_LINK_METHOD = 'share.copyLink' as const;
115
117
  export const SHARE_SHOW_SHARE_MENU_METHOD = 'share.showShareMenu' as const;
116
118
  export const SHARE_SCREENSHOT_METHOD = 'share.screenshot' as const;
119
+ export const VIEWPORT_SET_DISPLAY_METHOD = 'viewport.setDisplay' as const;
117
120
  export const VIEWPORT_GET_WINDOW_INFO_METHOD = 'viewport.getWindowInfo' as const;
118
121
  export const VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD = 'viewport.setNavigationBarStyle' as const;
119
122
  export const STORAGE_GET_STORAGE_METHOD = 'storage.getStorage' as const;
@@ -165,6 +168,7 @@ export type MiniProgramAuthMethod = typeof AUTH_LOGIN_METHOD;
165
168
  export type MiniProgramUserMethod = typeof USER_GET_INFO_METHOD | typeof USER_REVOKE_AUTHORIZATION_METHOD | typeof USER_GET_STEAM_GAME_LIST_METHOD;
166
169
  export type MiniProgramShareMethod = typeof SHARE_COPY_LINK_METHOD | typeof SHARE_SHOW_SHARE_MENU_METHOD | typeof SHARE_SCREENSHOT_METHOD;
167
170
  export type MiniProgramViewportMethod =
171
+ | typeof VIEWPORT_SET_DISPLAY_METHOD
168
172
  | typeof VIEWPORT_GET_WINDOW_INFO_METHOD
169
173
  | typeof VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD;
170
174
  export type MiniProgramStorageMethod = typeof STORAGE_GET_STORAGE_METHOD | typeof STORAGE_SET_STORAGE_METHOD;
@@ -329,6 +333,13 @@ export const MINI_PROGRAM_PROTOCOL_CAPABILITIES = [
329
333
  requirement: { kind: 'none' },
330
334
  risk: 'low',
331
335
  },
336
+ {
337
+ method: VIEWPORT_SET_DISPLAY_METHOD,
338
+ module: 'viewport',
339
+ capability: VIEWPORT_SET_DISPLAY_METHOD,
340
+ requirement: { kind: 'none' },
341
+ risk: 'low',
342
+ },
332
343
  {
333
344
  method: STORAGE_GET_STORAGE_METHOD,
334
345
  module: 'storage',
@@ -541,6 +552,7 @@ export interface MiniProgramCapabilityPayloadMap {
541
552
  [SHARE_COPY_LINK_METHOD]: CopyLinkPayload;
542
553
  [SHARE_SHOW_SHARE_MENU_METHOD]: ShowShareMenuPayload;
543
554
  [SHARE_SCREENSHOT_METHOD]: ScreenshotPayload;
555
+ [VIEWPORT_SET_DISPLAY_METHOD]: SetDisplayPayload;
544
556
  [VIEWPORT_GET_WINDOW_INFO_METHOD]: GetWindowInfoPayload;
545
557
  [VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD]: SetNavigationBarStylePayload;
546
558
  [STORAGE_GET_STORAGE_METHOD]: GetStoragePayload;
@@ -597,6 +609,7 @@ export interface MiniProgramCapabilityResultMap {
597
609
  [SHARE_COPY_LINK_METHOD]: CopyLinkResult;
598
610
  [SHARE_SHOW_SHARE_MENU_METHOD]: ShowShareMenuResult;
599
611
  [SHARE_SCREENSHOT_METHOD]: ScreenshotResult;
612
+ [VIEWPORT_SET_DISPLAY_METHOD]: SetDisplayResult;
600
613
  [VIEWPORT_GET_WINDOW_INFO_METHOD]: GetWindowInfoResult;
601
614
  [VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD]: SetNavigationBarStyleResult;
602
615
  [STORAGE_GET_STORAGE_METHOD]: GetStorageResult;
package/src/payloads.ts CHANGED
@@ -368,6 +368,27 @@ export interface MiniProgramWindowInfoResult {
368
368
  safeArea: MiniProgramSafeArea;
369
369
  screenTop: number;
370
370
  }
371
+ /** 小程序窗口方向。 */
372
+ export type MiniProgramOrientationMode = 'portrait' | 'landscape';
373
+ /** 宿主确认生效的小程序展示状态;不表示手机旋转传感器状态。 */
374
+ export interface MiniProgramDisplayState {
375
+ /** 当前小程序锁定的窗口方向。 */
376
+ orientation: MiniProgramOrientationMode;
377
+ /** 是否同时收起胶囊和宿主额外顶部栏;横屏始终为 true。 */
378
+ fullscreen: boolean;
379
+ }
380
+ export interface SetDisplayPayload {
381
+ /** 锁定竖屏或横屏;省略保持当前目标方向,初始为 portrait。 */
382
+ orientation?: MiniProgramOrientationMode;
383
+ /** 同时收起胶囊和宿主额外顶部栏;省略保持当前目标值,初始为 false。合并后横屏强制 true;退出横屏全屏需同时设置 portrait 和 false。 */
384
+ fullscreen?: boolean;
385
+ }
386
+ /** 本次展示设置的原生支持结果;不支持时保留原生状态,宿主仍可尽力收起 H5 顶部栏。 */
387
+ export type SetDisplayResult = {
388
+ /** true 表示原生方向与胶囊设置已完成;false 表示已按宿主可用能力降级。 */
389
+ supported: boolean;
390
+ };
391
+
371
392
  export type GetWindowInfoPayload = void;
372
393
  export type GetWindowInfoResult = MiniProgramWindowInfoResult;
373
394
  export type MiniProgramNavigationBarForegroundStyle = 'light' | 'dark';
@@ -179,6 +179,7 @@ export const MINI_PROGRAM_NO_DECLARATION_METHODS = [
179
179
  'ui.hideLoading',
180
180
  'viewport.getWindowInfo',
181
181
  'viewport.setNavigationBarStyle',
182
+ 'viewport.setDisplay',
182
183
  'device.vibrate',
183
184
  'navigation.close',
184
185
  'navigation.reload',
package/types/bridge.d.ts CHANGED
@@ -2,7 +2,7 @@ import { COMPANION_SESSION_EXIT_EVENT, COMPANION_SESSION_OUTPUT_EVENT, COMPANION
2
2
  import type { CompanionSessionExitPayload, CompanionSessionOutputPayload, CompanionSessionOwnershipLostPayload, MiniProgramRuntimeEnvironmentInfo, UserInfoAuthorization } from './payloads';
3
3
  import type { MiniProgramCapabilityProgress, MiniProgramProgressMethod } from './capabilities';
4
4
  export type MiniProgramBridgeMessageType = 'handshake' | 'request' | 'response' | 'event' | 'cancel';
5
- export type MiniProgramEventName = 'launch' | 'ready' | 'show' | 'hide' | 'unload' | 'error' | 'heybox_app_login_change' | 'user_info_authorization_change' | typeof COMPANION_SESSION_OUTPUT_EVENT | typeof COMPANION_SESSION_EXIT_EVENT | typeof COMPANION_SESSION_OWNERSHIP_LOST_EVENT;
5
+ export type MiniProgramEventName = 'launch' | 'viewport_change' | 'display_change' | 'ready' | 'show' | 'hide' | 'unload' | 'error' | 'heybox_app_login_change' | 'user_info_authorization_change' | typeof COMPANION_SESSION_OUTPUT_EVENT | typeof COMPANION_SESSION_EXIT_EVENT | typeof COMPANION_SESSION_OWNERSHIP_LOST_EVENT;
6
6
  export interface MiniProgramBridgeError {
7
7
  code: string;
8
8
  message: string;
@@ -92,6 +92,12 @@ export interface MiniProgramBridgeProgressMessage<TMethod extends MiniProgramPro
92
92
  error?: never;
93
93
  }
94
94
  export interface MiniProgramEventPayloadMap {
95
+ /** 展示状态实际变化后通知;不回放初始状态,不支持或失败时不通知。 */
96
+ display_change: import('./payloads').MiniProgramDisplayState & {
97
+ /** api 为开发者调用;user 为用户点击宿主退出全屏按钮。同目标合并时保留首次发起来源。旧宿主可能不提供。 */
98
+ source?: 'api' | 'user';
99
+ };
100
+ viewport_change: import('./payloads').MiniProgramWindowInfoResult;
95
101
  launch: {
96
102
  timestamp: number;
97
103
  url?: string;
@@ -1,4 +1,4 @@
1
- import type { CompanionCancelPreparationPayload, CompanionCancelPreparationResult, CompanionGetActiveSessionPayload, CompanionGetActiveSessionResult, CompanionGetInfoPayload, CompanionGetInfoResult, CompanionGetPreparationStatusPayload, CompanionGetPreparationStatusResult, CompanionLaunchPayload, CompanionLaunchResult, CompanionOpenAttachmentPayload, CompanionOpenAttachmentResult, CompanionPreparePayload, CompanionPrepareProgress, CompanionPrepareResult, CompanionSessionAckOutputPayload, CompanionSessionAckOutputResult, CompanionSessionCloseStdinPayload, CompanionSessionCloseStdinResult, CompanionSessionTerminatePayload, CompanionSessionTerminateResult, CompanionSessionWritePayload, CompanionSessionWriteResult, CompanionShowNotificationPayload, CompanionShowNotificationResult, ClosePayload, CloseResult, CopyLinkPayload, CopyLinkResult, DirectoryCreatePayload, DirectoryCreateResult, DirectoryExistsPayload, DirectoryExistsResult, DirectoryListPayload, DirectoryListResult, DirectoryRemovePayload, DirectoryRemoveResult, DownloadProgressPayload, DeleteCurrentUserLeaderboardEntryPayload, DeleteCurrentUserLeaderboardEntryResult, GetCurrentUserLeaderboardEntryPayload, GetCurrentUserLeaderboardEntryResult, GetLeaderboardInfoPayload, GetLeaderboardInfoResult, GetLeaderboardListPayload, GetLeaderboardListResult, GetStoragePayload, GetStorageResult, GetSteamGameListPayload, GetSteamGameListResult, GetUserInfoPayload, GetUserInfoResult, GetWindowInfoPayload, GetWindowInfoResult, HideLoadingPayload, HideLoadingResult, FileCreatePayload, FileCreateResult, FileExistsPayload, FileExistsResult, FileReadBytesPayload, FileReadBytesResult, FileReadTextPayload, FileReadTextResult, FileRemovePayload, FileRemoveResult, FileStatPayload, FileStatResult, FileWriteBytesPayload, FileWriteBytesResult, FileWriteTextPayload, FileWriteTextResult, LoginPayload, LoginResult, NetworkDownloadPayload, NetworkDownloadResult, NetworkRequestPayload, NetworkResponsePayload, OpenAppPagePayload, OpenAppPageResult, PickDirectoryPayload, PickDirectoryResult, PickFilesPayload, PickFilesResult, ReloadPayload, ReloadResult, ScreenshotPayload, ScreenshotResult, SaveFilePayload, SaveFileResult, SetClipboardPayload, SetClipboardResult, SetNavigationBarStylePayload, SetNavigationBarStyleResult, SetStoragePayload, ShowLoadingPayload, ShowLoadingResult, ShowShareMenuPayload, ShowShareMenuResult, ShowToastPayload, ShowToastResult, SubmitLeaderboardEntryPayload, SubmitLeaderboardEntryResult, VibratePayload, VibrateResult } from './payloads';
1
+ import type { CompanionCancelPreparationPayload, CompanionCancelPreparationResult, CompanionGetActiveSessionPayload, CompanionGetActiveSessionResult, CompanionGetInfoPayload, CompanionGetInfoResult, CompanionGetPreparationStatusPayload, CompanionGetPreparationStatusResult, CompanionLaunchPayload, CompanionLaunchResult, CompanionOpenAttachmentPayload, CompanionOpenAttachmentResult, CompanionPreparePayload, CompanionPrepareProgress, CompanionPrepareResult, CompanionSessionAckOutputPayload, CompanionSessionAckOutputResult, CompanionSessionCloseStdinPayload, CompanionSessionCloseStdinResult, CompanionSessionTerminatePayload, CompanionSessionTerminateResult, CompanionSessionWritePayload, CompanionSessionWriteResult, CompanionShowNotificationPayload, CompanionShowNotificationResult, ClosePayload, CloseResult, CopyLinkPayload, CopyLinkResult, DirectoryCreatePayload, DirectoryCreateResult, DirectoryExistsPayload, DirectoryExistsResult, DirectoryListPayload, DirectoryListResult, DirectoryRemovePayload, DirectoryRemoveResult, DownloadProgressPayload, DeleteCurrentUserLeaderboardEntryPayload, DeleteCurrentUserLeaderboardEntryResult, GetCurrentUserLeaderboardEntryPayload, GetCurrentUserLeaderboardEntryResult, GetLeaderboardInfoPayload, GetLeaderboardInfoResult, GetLeaderboardListPayload, GetLeaderboardListResult, GetStoragePayload, GetStorageResult, GetSteamGameListPayload, GetSteamGameListResult, GetUserInfoPayload, GetUserInfoResult, GetWindowInfoPayload, GetWindowInfoResult, HideLoadingPayload, HideLoadingResult, FileCreatePayload, FileCreateResult, FileExistsPayload, FileExistsResult, FileReadBytesPayload, FileReadBytesResult, FileReadTextPayload, FileReadTextResult, FileRemovePayload, FileRemoveResult, FileStatPayload, FileStatResult, FileWriteBytesPayload, FileWriteBytesResult, FileWriteTextPayload, FileWriteTextResult, LoginPayload, LoginResult, NetworkDownloadPayload, NetworkDownloadResult, NetworkRequestPayload, NetworkResponsePayload, OpenAppPagePayload, OpenAppPageResult, PickDirectoryPayload, PickDirectoryResult, PickFilesPayload, PickFilesResult, ReloadPayload, ReloadResult, ScreenshotPayload, ScreenshotResult, SaveFilePayload, SaveFileResult, SetClipboardPayload, SetClipboardResult, SetDisplayPayload, SetDisplayResult, SetNavigationBarStylePayload, SetNavigationBarStyleResult, SetStoragePayload, ShowLoadingPayload, ShowLoadingResult, ShowShareMenuPayload, ShowShareMenuResult, ShowToastPayload, ShowToastResult, SubmitLeaderboardEntryPayload, SubmitLeaderboardEntryResult, VibratePayload, VibrateResult } from './payloads';
2
2
  import type { MiniProgramPermissionRequirement } from './permission-catalog';
3
3
  export declare const AUTH_LOGIN_METHOD: "auth.login";
4
4
  export declare const USER_GET_INFO_METHOD: "user.getInfo";
@@ -7,6 +7,7 @@ export declare const USER_GET_STEAM_GAME_LIST_METHOD: "user.getSteamGameList";
7
7
  export declare const SHARE_COPY_LINK_METHOD: "share.copyLink";
8
8
  export declare const SHARE_SHOW_SHARE_MENU_METHOD: "share.showShareMenu";
9
9
  export declare const SHARE_SCREENSHOT_METHOD: "share.screenshot";
10
+ export declare const VIEWPORT_SET_DISPLAY_METHOD: "viewport.setDisplay";
10
11
  export declare const VIEWPORT_GET_WINDOW_INFO_METHOD: "viewport.getWindowInfo";
11
12
  export declare const VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD: "viewport.setNavigationBarStyle";
12
13
  export declare const STORAGE_GET_STORAGE_METHOD: "storage.getStorage";
@@ -56,7 +57,7 @@ export declare const COMPANION_SHOW_NOTIFICATION_METHOD: "companion.showNotifica
56
57
  export type MiniProgramAuthMethod = typeof AUTH_LOGIN_METHOD;
57
58
  export type MiniProgramUserMethod = typeof USER_GET_INFO_METHOD | typeof USER_REVOKE_AUTHORIZATION_METHOD | typeof USER_GET_STEAM_GAME_LIST_METHOD;
58
59
  export type MiniProgramShareMethod = typeof SHARE_COPY_LINK_METHOD | typeof SHARE_SHOW_SHARE_MENU_METHOD | typeof SHARE_SCREENSHOT_METHOD;
59
- export type MiniProgramViewportMethod = typeof VIEWPORT_GET_WINDOW_INFO_METHOD | typeof VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD;
60
+ export type MiniProgramViewportMethod = typeof VIEWPORT_SET_DISPLAY_METHOD | typeof VIEWPORT_GET_WINDOW_INFO_METHOD | typeof VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD;
60
61
  export type MiniProgramStorageMethod = typeof STORAGE_GET_STORAGE_METHOD | typeof STORAGE_SET_STORAGE_METHOD;
61
62
  export type MiniProgramNetworkMethod = typeof NETWORK_REQUEST_METHOD | typeof NETWORK_DOWNLOAD_METHOD;
62
63
  export type MiniProgramFilesMethod = typeof FILES_PICK_FILES_METHOD | typeof FILES_PICK_DIRECTORY_METHOD | typeof FILES_SAVE_FILE_METHOD;
@@ -174,6 +175,14 @@ export declare const MINI_PROGRAM_PROTOCOL_CAPABILITIES: readonly [{
174
175
  readonly kind: "none";
175
176
  };
176
177
  readonly risk: "low";
178
+ }, {
179
+ readonly method: "viewport.setDisplay";
180
+ readonly module: "viewport";
181
+ readonly capability: "viewport.setDisplay";
182
+ readonly requirement: {
183
+ readonly kind: "none";
184
+ };
185
+ readonly risk: "low";
177
186
  }, {
178
187
  readonly method: "storage.getStorage";
179
188
  readonly module: "storage";
@@ -473,6 +482,7 @@ export interface MiniProgramCapabilityPayloadMap {
473
482
  [SHARE_COPY_LINK_METHOD]: CopyLinkPayload;
474
483
  [SHARE_SHOW_SHARE_MENU_METHOD]: ShowShareMenuPayload;
475
484
  [SHARE_SCREENSHOT_METHOD]: ScreenshotPayload;
485
+ [VIEWPORT_SET_DISPLAY_METHOD]: SetDisplayPayload;
476
486
  [VIEWPORT_GET_WINDOW_INFO_METHOD]: GetWindowInfoPayload;
477
487
  [VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD]: SetNavigationBarStylePayload;
478
488
  [STORAGE_GET_STORAGE_METHOD]: GetStoragePayload;
@@ -528,6 +538,7 @@ export interface MiniProgramCapabilityResultMap {
528
538
  [SHARE_COPY_LINK_METHOD]: CopyLinkResult;
529
539
  [SHARE_SHOW_SHARE_MENU_METHOD]: ShowShareMenuResult;
530
540
  [SHARE_SCREENSHOT_METHOD]: ScreenshotResult;
541
+ [VIEWPORT_SET_DISPLAY_METHOD]: SetDisplayResult;
531
542
  [VIEWPORT_GET_WINDOW_INFO_METHOD]: GetWindowInfoResult;
532
543
  [VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD]: SetNavigationBarStyleResult;
533
544
  [STORAGE_GET_STORAGE_METHOD]: GetStorageResult;
@@ -365,6 +365,26 @@ export interface MiniProgramWindowInfoResult {
365
365
  safeArea: MiniProgramSafeArea;
366
366
  screenTop: number;
367
367
  }
368
+ /** 小程序窗口方向。 */
369
+ export type MiniProgramOrientationMode = 'portrait' | 'landscape';
370
+ /** 宿主确认生效的小程序展示状态;不表示手机旋转传感器状态。 */
371
+ export interface MiniProgramDisplayState {
372
+ /** 当前小程序锁定的窗口方向。 */
373
+ orientation: MiniProgramOrientationMode;
374
+ /** 是否同时收起胶囊和宿主额外顶部栏;横屏始终为 true。 */
375
+ fullscreen: boolean;
376
+ }
377
+ export interface SetDisplayPayload {
378
+ /** 锁定竖屏或横屏;省略保持当前目标方向,初始为 portrait。 */
379
+ orientation?: MiniProgramOrientationMode;
380
+ /** 同时收起胶囊和宿主额外顶部栏;省略保持当前目标值,初始为 false。合并后横屏强制 true;退出横屏全屏需同时设置 portrait 和 false。 */
381
+ fullscreen?: boolean;
382
+ }
383
+ /** 本次展示设置的原生支持结果;不支持时保留原生状态,宿主仍可尽力收起 H5 顶部栏。 */
384
+ export type SetDisplayResult = {
385
+ /** true 表示原生方向与胶囊设置已完成;false 表示已按宿主可用能力降级。 */
386
+ supported: boolean;
387
+ };
368
388
  export type GetWindowInfoPayload = void;
369
389
  export type GetWindowInfoResult = MiniProgramWindowInfoResult;
370
390
  export type MiniProgramNavigationBarForegroundStyle = 'light' | 'dark';
@@ -113,5 +113,5 @@ export declare const MINI_PROGRAM_PERMISSION_CATALOG: readonly [{
113
113
  readonly methods: readonly ["companion.getInfo", "companion.getPreparationStatus", "companion.prepare", "companion.cancelPreparation", "companion.getActiveSession", "companion.launch", "companion.session.write", "companion.session.closeStdin", "companion.session.terminate", "companion.session.ackOutput", "companion.openAttachment", "companion.showNotification"];
114
114
  readonly conditions: readonly ["声明后仍需平台批准,并继续执行可信用户手势、Host 能力和当前版本 Manifest 校验。"];
115
115
  }];
116
- export declare const MINI_PROGRAM_NO_DECLARATION_METHODS: readonly ["user.revokeAuthorization", "ui.showToast", "ui.showLoading", "ui.hideLoading", "viewport.getWindowInfo", "viewport.setNavigationBarStyle", "device.vibrate", "navigation.close", "navigation.reload", "navigation.openAppPage"];
116
+ export declare const MINI_PROGRAM_NO_DECLARATION_METHODS: readonly ["user.revokeAuthorization", "ui.showToast", "ui.showLoading", "ui.hideLoading", "viewport.getWindowInfo", "viewport.setNavigationBarStyle", "viewport.setDisplay", "device.vibrate", "navigation.close", "navigation.reload", "navigation.openAppPage"];
117
117
  export declare function isMiniProgramPermissionKey(key: string): key is MiniProgramPermissionKey;