@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.
- package/CHANGELOG.md +13 -0
- package/README.md +2 -2
- package/dist/cli-chunks/{build-DPe1Ycjd.cjs → build-bVThH3Z5.cjs} +4 -4
- package/dist/cli-chunks/{context-BSUhAv3Z.cjs → context-DpKqGnjp.cjs} +2 -2
- package/dist/cli-chunks/{create-CaiKrGnb.cjs → create-BWC2343y.cjs} +1 -1
- package/dist/cli-chunks/{dev-BG1o8Q-0.cjs → dev-t14YpHHY.cjs} +9 -9
- package/dist/cli-chunks/{doctor-DutO2P5H.cjs → doctor-BWkrE0Hj.cjs} +1 -1
- package/dist/cli-chunks/{index-CKIyipP9.cjs → index-CDtcZVWv.cjs} +15 -15
- package/dist/cli-chunks/{index-Bur0U2z1.cjs → index-D3FMcOZq.cjs} +2 -2
- package/dist/cli-chunks/{index.esm-BPlpP-O0.cjs → index.esm-BrJBaJWS.cjs} +7 -7
- package/dist/cli-chunks/{login-C1JlLEza.cjs → login-DRMl7nFH.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-Bd0WzAqQ.cjs → project-vite-CXgdzIYw.cjs} +1 -1
- package/dist/cli-chunks/{remote-DTFEf3Dj.cjs → remote-ibQybNiM.cjs} +6 -6
- package/dist/cli-chunks/{runtime-permission-env-C2S34ldj.cjs → runtime-permission-env-DiTeD75Q.cjs} +576 -20
- package/dist/cli-chunks/{session-zXVkHuhY.cjs → session-CIoBspg-.cjs} +1 -1
- package/dist/cli-chunks/{skill-CCB3DyXk.cjs → skill-5labzuWk.cjs} +2 -2
- package/dist/cli-chunks/{version-0qwlEyZC.cjs → version-QiVEs76a.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-DxzOkljJ.js +101 -0
- package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-DOfl5YvO.js → desktop-app-launch-B4KsgItx.js} +1 -1
- package/dist/devtools/browser-dev-host/assets/{index-CFr28-0O.js → index-9Nb3XhtI.js} +3 -3
- package/dist/devtools/browser-dev-host/index.html +2 -2
- package/dist/index.cjs.js +948 -44
- package/dist/index.esm.js +948 -44
- package/dist/miniapp-publish.cjs.js +536 -30
- package/dist/miniapp-publish.esm.js +536 -30
- package/dist/protocol.cjs.js +807 -2
- package/dist/protocol.esm.js +807 -2
- package/dist/vite.cjs.js +184 -1
- package/dist/vite.esm.js +184 -1
- package/package.json +7 -7
- package/skill/references/api-root.md +192 -8
- package/skill/references/recipes.md +45 -7
- package/skill/skill.json +5 -5
- package/types/core/errors.d.ts +33 -9
- package/types/core/handshake-state.d.ts +32 -2
- package/types/core/singleton.d.ts +265 -6
- package/types/miniapp-manifest/bindings.d.ts +65 -0
- package/types/miniapp-manifest/schema.d.ts +136 -19
- package/types/miniapp-publish/index.d.ts +425 -29
- package/types/modules/auth/index.d.ts +159 -5
- package/types/modules/cloud/index.d.ts +514 -40
- package/types/modules/companion/index.d.ts +1518 -17
- package/types/modules/device/index.d.ts +140 -9
- package/types/modules/environment/index.d.ts +172 -4
- package/types/modules/files/types.d.ts +1396 -21
- package/types/modules/navigation/app-pages/types.d.ts +81 -24
- package/types/modules/navigation/index.d.ts +230 -7
- package/types/modules/network/index.d.ts +297 -26
- package/types/modules/share/copy-link.d.ts +35 -5
- package/types/modules/share/index.d.ts +210 -0
- package/types/modules/share/screenshot.d.ts +23 -5
- package/types/modules/share/show-share-menu.d.ts +18 -5
- package/types/modules/share/types.d.ts +148 -23
- package/types/modules/storage/index.d.ts +139 -9
- package/types/modules/ui/index.d.ts +249 -18
- package/types/modules/user/get-info.d.ts +29 -8
- package/types/modules/user/index.d.ts +157 -0
- package/types/modules/user/revoke-authorization.d.ts +26 -2
- package/types/modules/user/steam-game-list.d.ts +96 -15
- package/types/modules/viewport/index.d.ts +158 -22
- package/types/protocol/types.d.ts +19 -1
- package/types/vite/index.d.ts +159 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-pUcws1MK.js +0 -101
|
@@ -16,6 +16,66 @@ import type { MiniProgramSDKHandshakeState, MiniProgramSDKHandshakeStateHandler
|
|
|
16
16
|
/**
|
|
17
17
|
* 获取默认 SDK 实例的当前握手状态。
|
|
18
18
|
*
|
|
19
|
+
* @returns 当前冻结的
|
|
20
|
+
* [MiniProgramSDKHandshakeState](/reference/symbols/root/types/MiniProgramSDKHandshakeState):
|
|
21
|
+
* `connecting` 表示初始握手尚未落定,`ready` 表示握手成功;`failed` 表示握手失败,并通过
|
|
22
|
+
* `error` 保留原始
|
|
23
|
+
* [HbMiniProgramSDKError](/reference/symbols/root/classes/HbMiniProgramSDKError)。状态不变期间重复调用
|
|
24
|
+
* 返回同一个对象引用,落定时只会替换一次。
|
|
25
|
+
*
|
|
26
|
+
* @remarks
|
|
27
|
+
* 该函数不接收参数并同步返回当前快照,不等待 Promise、不轮询、不发送 bridge 请求,也不会因为
|
|
28
|
+
* 握手失败而抛出 `failed.error`。读取状态无需在 `package.json#heybox.permissions` 中声明权限,
|
|
29
|
+
* 不要求可信用户手势。根包导入时已经自动启动握手;普通异步能力调用也会自行等待,不需要用本
|
|
30
|
+
* API 手动实现等待器。
|
|
31
|
+
*
|
|
32
|
+
* 状态 wrapper 已浅冻结。状态机只允许 `connecting -> ready` 或 `connecting -> failed` 一次迁移,
|
|
33
|
+
* 终态不会回退或互相转换;`failed.error` 是握手 Promise 使用的同一个原始错误实例,可根据稳定的
|
|
34
|
+
* `code` 分支处理。常见初始失败包括 `NOT_IN_IFRAME`、`MISSING_NONCE`、`READY_TIMEOUT`、
|
|
35
|
+
* `HANDSHAKE_FAILED`、`RUNTIME_UNAVAILABLE` 或握手完成前的 `SDK_DESTROYED`。
|
|
36
|
+
*
|
|
37
|
+
* 需要让界面跟随状态变化时,使用
|
|
38
|
+
* [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange):它会在订阅期间同步回放
|
|
39
|
+
* 当前值,再通知至多一次终态迁移。不要轮询本函数。对于必须保留原始可信用户手势的按钮,可用
|
|
40
|
+
* 该持久状态提前控制 `disabled`,但不要在点击回调里等待握手。
|
|
41
|
+
*
|
|
42
|
+
* [on('ready')](/reference/sdk/lifecycle/on) 是握手成功瞬间的事件:不会向晚订阅者重放,Host 重复
|
|
43
|
+
* 派发时也可能再次触发事件 handler;持久状态则只迁移一次并始终可查询。`ready` 只表示初始握手
|
|
44
|
+
* 已成功,后续 `unload` 不会把状态改回 `failed`,因此不能把它当作 Runtime 持续存活检查。
|
|
45
|
+
*
|
|
46
|
+
* SDK 会在发布 `ready` 状态前缓存环境快照,所以 `status === 'ready'` 时可以立即调用
|
|
47
|
+
* [environment.getInfoSync()](/reference/sdk/environment/getInfoSync)。`failed` 时该同步环境 API 会抛出
|
|
48
|
+
* 同一个 `state.error`;不要求同步读取时,优先使用会自动等待的
|
|
49
|
+
* [environment.getInfo()](/reference/sdk/environment/getInfo)。
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import hbSDK from '@heybox/hb-sdk'
|
|
54
|
+
*
|
|
55
|
+
* const state = hbSDK.getHandshakeState()
|
|
56
|
+
*
|
|
57
|
+
* switch (state.status) {
|
|
58
|
+
* case 'connecting':
|
|
59
|
+
* submitButton.disabled = true
|
|
60
|
+
* break
|
|
61
|
+
* case 'ready': {
|
|
62
|
+
* submitButton.disabled = false
|
|
63
|
+
* const environment = hbSDK.environment.getInfoSync()
|
|
64
|
+
* console.log(environment.runtime.mode)
|
|
65
|
+
* break
|
|
66
|
+
* }
|
|
67
|
+
* case 'failed':
|
|
68
|
+
* submitButton.disabled = true
|
|
69
|
+
* console.error('SDK 握手失败', state.error.code)
|
|
70
|
+
* break
|
|
71
|
+
* }
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @see [MiniProgramSDKHandshakeState](/reference/symbols/root/types/MiniProgramSDKHandshakeState) 三种状态及冻结语义。
|
|
75
|
+
* @see [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 同步回放当前状态并订阅终态迁移。
|
|
76
|
+
* @see [on('ready')](/reference/sdk/lifecycle/on) 不可重放的生命周期边沿事件。
|
|
77
|
+
* @see [environment.getInfoSync()](/reference/sdk/environment/getInfoSync) 在 `ready` 后同步读取环境快照。
|
|
78
|
+
*
|
|
19
79
|
* @since 0.7.0-alpha.9
|
|
20
80
|
* @hbPlatform android
|
|
21
81
|
* @hbPlatform ios
|
|
@@ -32,6 +92,83 @@ export declare function getHandshakeState(): MiniProgramSDKHandshakeState;
|
|
|
32
92
|
/**
|
|
33
93
|
* 订阅默认 SDK 实例的握手状态,并立即接收当前状态。
|
|
34
94
|
*
|
|
95
|
+
* @param handler - 接收
|
|
96
|
+
* [MiniProgramSDKHandshakeState](/reference/symbols/root/types/MiniProgramSDKHandshakeState) 的处理函数。
|
|
97
|
+
* 注册期间会在本函数返回前同步调用一次:`connecting` 表示初始握手仍在进行,`ready` 表示成功,
|
|
98
|
+
* `failed.error` 是原始
|
|
99
|
+
* [HbMiniProgramSDKError](/reference/symbols/root/classes/HbMiniProgramSDKError)。
|
|
100
|
+
* @returns 从默认 SDK 状态 store 移除当前 handler 的 unsubscribe。调用一次或多次都返回 `void` 且
|
|
101
|
+
* 不会抛错;取消后不再接收未来迁移,但不会撤销已经同步回放的当前状态。
|
|
102
|
+
*
|
|
103
|
+
* @remarks
|
|
104
|
+
* 订阅是纯本地同步操作,不发送 bridge 请求、不等待握手,也无需在
|
|
105
|
+
* `package.json#heybox.permissions` 中声明权限或保留可信用户手势。根包导入时握手已经自动启动;
|
|
106
|
+
* 本 API 用于观察状态,不用于主动发起或重试握手。
|
|
107
|
+
*
|
|
108
|
+
* handler 会在加入订阅集合后、unsubscribe 返回前立即同步收到当前冻结状态:
|
|
109
|
+
*
|
|
110
|
+
* - 当前为 `connecting`:先立即收到 `connecting`,随后至多再收到一次 `ready` 或 `failed`;
|
|
111
|
+
* - 当前已是 `ready` 或 `failed`:立即收到该终态,之后不会再迁移;
|
|
112
|
+
* - 在终态通知过程中新增订阅:通过即时回放收到一次终态,不会因同一迁移重复调用。
|
|
113
|
+
*
|
|
114
|
+
* 状态只允许 `connecting -> ready` 或 `connecting -> failed`,终态不回退。`failed.error` 是握手失败
|
|
115
|
+
* 和同步环境读取使用的同一个原始错误实例,可按稳定的 `code` 分支处理。`ready` 只表示初始握手
|
|
116
|
+
* 已成功;后续 `unload` 不会把状态改回 `failed`,因此它不是 Runtime 持续存活探针。
|
|
117
|
+
*
|
|
118
|
+
* SDK 会逐个捕获 handler 的同步异常:初次即时回放或终态通知中抛错,都不会从本函数传播、改变
|
|
119
|
+
* 状态、阻断握手 Promise 或阻止其他订阅者收到通知。handler 返回值会被忽略,Promise 也不会被
|
|
120
|
+
* 等待;异步 handler 应在自身内部捕获 rejected Promise,避免未处理拒绝。
|
|
121
|
+
*
|
|
122
|
+
* 每个 handler 以 Set 语义保存;同一函数引用重复订阅只有一个未来通知注册,但每次调用本函数仍会
|
|
123
|
+
* 同步回放当前状态,任一 unsubscribe 都会移除该注册。应在页面、组件或业务模块销毁时调用
|
|
124
|
+
* unsubscribe。SDK 内部销毁会清空全部状态订阅;若销毁发生在握手落定前,会先发布携带
|
|
125
|
+
* `SDK_DESTROYED` 的 `failed`,再清空订阅。此后重复调用已经返回的 unsubscribe 仍是安全空操作。
|
|
126
|
+
* `unload` 发生在握手前时则以 `RUNTIME_UNAVAILABLE` 落为 `failed`;发生在 `ready` 后不会产生
|
|
127
|
+
* 第二次状态通知。
|
|
128
|
+
*
|
|
129
|
+
* 与 [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState) 相比,本 API 适合让 UI 自动跟随
|
|
130
|
+
* 唯一一次迁移,且即时回放意味着通常不需要先额外读取一次状态。
|
|
131
|
+
* [on('ready')](/reference/sdk/lifecycle/on) 则是不可重放、可能因 Host 重复事件再次触发的边沿通知,
|
|
132
|
+
* 不应用于驱动晚挂载按钮的可用状态。
|
|
133
|
+
*
|
|
134
|
+
* SDK 会在发布 `ready` 状态前缓存环境快照,因此可以在 `ready` handler 中立即调用
|
|
135
|
+
* [environment.getInfoSync()](/reference/sdk/environment/getInfoSync)。在 `failed` handler 中调用该
|
|
136
|
+
* API 会抛出同一个 `state.error`;一般异步读取可使用
|
|
137
|
+
* [environment.getInfo()](/reference/sdk/environment/getInfo) 自动等待。
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```ts
|
|
141
|
+
* import hbSDK from '@heybox/hb-sdk'
|
|
142
|
+
*
|
|
143
|
+
* const stop = hbSDK.onHandshakeStateChange(state => {
|
|
144
|
+
* switch (state.status) {
|
|
145
|
+
* case 'connecting':
|
|
146
|
+
* submitButton.disabled = true
|
|
147
|
+
* statusText.textContent = '正在连接'
|
|
148
|
+
* break
|
|
149
|
+
* case 'ready':
|
|
150
|
+
* submitButton.disabled = false
|
|
151
|
+
* statusText.textContent = hbSDK.environment.getInfoSync().runtime.mode
|
|
152
|
+
* break
|
|
153
|
+
* case 'failed':
|
|
154
|
+
* submitButton.disabled = true
|
|
155
|
+
* statusText.textContent = `连接失败:${state.error.code}`
|
|
156
|
+
* break
|
|
157
|
+
* }
|
|
158
|
+
* })
|
|
159
|
+
*
|
|
160
|
+
* // 页面或组件真正销毁时执行;重复取消也安全。
|
|
161
|
+
* window.addEventListener('unload', () => {
|
|
162
|
+
* stop()
|
|
163
|
+
* stop()
|
|
164
|
+
* }, { once: true })
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
167
|
+
* @see [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState) 一次性同步读取当前持久状态。
|
|
168
|
+
* @see [on('ready')](/reference/sdk/lifecycle/on) 不可重放的握手成功边沿事件。
|
|
169
|
+
* @see [environment.getInfoSync()](/reference/sdk/environment/getInfoSync) 在 `ready` handler 中同步读取环境。
|
|
170
|
+
* @see [事件与生命周期](/guide/lifecycle) 握手与普通生命周期事件的使用建议。
|
|
171
|
+
*
|
|
35
172
|
* @since 0.7.0-alpha.9
|
|
36
173
|
* @hbPlatform android
|
|
37
174
|
* @hbPlatform ios
|
|
@@ -48,9 +185,83 @@ export declare function onHandshakeStateChange(handler: MiniProgramSDKHandshakeS
|
|
|
48
185
|
/**
|
|
49
186
|
* 注册默认 SDK 实例的事件监听。
|
|
50
187
|
*
|
|
51
|
-
* @param eventName -
|
|
52
|
-
*
|
|
53
|
-
*
|
|
188
|
+
* @param eventName - 要监听的
|
|
189
|
+
* [MiniProgramEventName](/reference/symbols/root/types/MiniProgramEventName)。泛型 `T` 通常由该字符串
|
|
190
|
+
* 字面量推断,并决定 handler 的 payload 类型。
|
|
191
|
+
* @param handler - 与 `eventName` 对应的
|
|
192
|
+
* [MiniProgramEventHandler](/reference/symbols/root/types/MiniProgramEventHandler)。payload 由
|
|
193
|
+
* [MiniProgramEventPayloadMap](/reference/symbols/root/interfaces/MiniProgramEventPayloadMap) 精确映射。
|
|
194
|
+
* @returns 只解绑当前 `eventName` / handler 组合的函数。调用一次或多次都返回 `void` 且不会抛错,
|
|
195
|
+
* 不影响同一事件上的其他 handler。
|
|
196
|
+
*
|
|
197
|
+
* @remarks
|
|
198
|
+
* 事件名决定 payload 字段:
|
|
199
|
+
*
|
|
200
|
+
* - `launch`:`{ timestamp, url? }`;`ready`:`{ timestamp }`;
|
|
201
|
+
* - `show` / `hide`:`{ timestamp, source? }`;`unload`:`{ timestamp }`;
|
|
202
|
+
* - `error`:
|
|
203
|
+
* [MiniProgramBridgeError](/reference/symbols/protocol/interfaces/MiniProgramBridgeError),包含 `code`、
|
|
204
|
+
* `message` 与可选 `data`,不是 JavaScript `Error` 实例;
|
|
205
|
+
* - `heybox_app_login_change`:`{ isHeyboxAppLoggedIn }`;
|
|
206
|
+
* - `user_info_authorization_change`:
|
|
207
|
+
* [UserInfoAuthorization](/reference/symbols/root/interfaces/UserInfoAuthorization),包含 `identity` 与
|
|
208
|
+
* `profile` 两项授权状态;
|
|
209
|
+
* - `companion.session.output`:`{ sessionId, controllerGeneration, stream, sequence, data }`;
|
|
210
|
+
* - `companion.session.exit`:`{ sessionId, exit }`;
|
|
211
|
+
* - `companion.session.ownershipLost`:`{ sessionId, controllerGeneration }`。
|
|
212
|
+
*
|
|
213
|
+
* `on()` 同步把 handler 加入默认 SDK 实例的本地 event bus,不等待握手、不发送 bridge 请求。
|
|
214
|
+
* 注册本身无需在 `package.json#heybox.permissions` 中声明权限,不要求可信用户手势,也不会因当前
|
|
215
|
+
* 握手处于 `connecting`、`ready` 或 `failed` 而抛出 SDK 错误。具体事件是否会产生,仍取决于 Host、
|
|
216
|
+
* Runtime 生命周期和相关业务能力。
|
|
217
|
+
*
|
|
218
|
+
* event bus 使用 Set 保存每个事件的 handler。同一事件与同一函数引用重复注册只有一个有效监听;
|
|
219
|
+
* 任一返回的 unsubscribe 或 [off()](/reference/sdk/lifecycle/off) 都会移除该唯一注册。不同函数引用
|
|
220
|
+
* 不会去重,同一函数注册到不同事件也彼此独立。应保存 unsubscribe,并在页面、组件或业务模块销毁
|
|
221
|
+
* 时调用;unsubscribe 可安全重复调用。
|
|
222
|
+
*
|
|
223
|
+
* handler 在事件派发时同步执行。SDK 不捕获普通事件 handler 的同步异常,也不等待其 Promise;某个
|
|
224
|
+
* handler 抛错可能阻断同次派发中的后续 handler,异步拒绝也可能成为未处理 Promise。需要隔离时在
|
|
225
|
+
* handler 内自行 `try/catch`,并显式处理异步任务的 rejected Promise。
|
|
226
|
+
*
|
|
227
|
+
* 所有生命周期与业务事件都不会重放:只派发给事件到达时已经注册的 handler,晚注册无法取回
|
|
228
|
+
* `launch`、`ready` 或其他历史事件。`ready` 只是握手成功瞬间的边沿通知,Host 重复派发时 handler
|
|
229
|
+
* 也可能再次执行;需要可查询、会向订阅者立即回放且只迁移一次的握手状态时,使用
|
|
230
|
+
* [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState) 和
|
|
231
|
+
* [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange)。
|
|
232
|
+
*
|
|
233
|
+
* 收到 `unload` 后当前 Runtime 上下文不可恢复,在途请求会失败,也不应再依赖后续 bridge 事件;
|
|
234
|
+
* SDK 内部销毁会移除底层 message listener。调用 unsubscribe 只清理该本地事件 handler,不取消
|
|
235
|
+
* API 请求、业务任务、Companion 进程或握手状态订阅。
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```ts
|
|
239
|
+
* import hbSDK from '@heybox/hb-sdk'
|
|
240
|
+
*
|
|
241
|
+
* const stopShow = hbSDK.on('show', ({ timestamp, source }) => {
|
|
242
|
+
* try {
|
|
243
|
+
* refreshVisibleData({ timestamp, source })
|
|
244
|
+
* } catch (error) {
|
|
245
|
+
* reportHandlerError(error)
|
|
246
|
+
* }
|
|
247
|
+
* })
|
|
248
|
+
*
|
|
249
|
+
* const stopError = hbSDK.on('error', ({ code, message }) => {
|
|
250
|
+
* console.error(code, message)
|
|
251
|
+
* })
|
|
252
|
+
*
|
|
253
|
+
* // 页面或组件销毁时;重复调用也安全。
|
|
254
|
+
* stopShow()
|
|
255
|
+
* stopShow()
|
|
256
|
+
* stopError()
|
|
257
|
+
* ```
|
|
258
|
+
*
|
|
259
|
+
* @see [MiniProgramEventPayloadMap](/reference/symbols/root/interfaces/MiniProgramEventPayloadMap) 所有事件与 payload 字段。
|
|
260
|
+
* @see [off()](/reference/sdk/lifecycle/off) 使用事件名与 handler 引用精确移除监听。
|
|
261
|
+
* @see [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState) 同步读取持久握手状态。
|
|
262
|
+
* @see [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 订阅会立即回放的握手状态。
|
|
263
|
+
* @see [事件与生命周期](/guide/lifecycle) 生命周期时机与清理建议。
|
|
264
|
+
*
|
|
54
265
|
* @since 0.2.0-alpha.0
|
|
55
266
|
* @hbPlatform android
|
|
56
267
|
* @hbPlatform ios
|
|
@@ -67,9 +278,57 @@ export declare function on<T extends MiniProgramEventName>(eventName: T, handler
|
|
|
67
278
|
/**
|
|
68
279
|
* 移除默认 SDK 实例的事件监听。
|
|
69
280
|
*
|
|
70
|
-
* @param eventName -
|
|
71
|
-
*
|
|
72
|
-
* @
|
|
281
|
+
* @param eventName - 注册 handler 时使用的同一个事件名。只检查该事件自己的监听集合,不影响
|
|
282
|
+
* 其他事件上的注册。
|
|
283
|
+
* @param handler - 传给 `on(eventName, handler)` 的同一个函数对象。签名或函数体相同的新函数不是
|
|
284
|
+
* 同一引用,不能移除原监听。
|
|
285
|
+
* @returns `void`。移除成功、目标从未注册或此前已经移除时都不返回状态。
|
|
286
|
+
*
|
|
287
|
+
* @remarks
|
|
288
|
+
* 该函数同步修改默认 SDK 实例的本地 event bus,不等待握手、不发送 bridge 请求,也不会调用
|
|
289
|
+
* handler。它无需在 `package.json#heybox.permissions` 中声明权限,不要求可信用户手势;握手处于
|
|
290
|
+
* `connecting`、`ready` 或 `failed`,以及已经收到 `unload` 时,取消操作本身都不会产生 SDK 错误。
|
|
291
|
+
*
|
|
292
|
+
* 匹配规则是 `eventName` 与 handler 函数引用同时相等。匹配后只移除这一项,同一事件上的其他
|
|
293
|
+
* handler、同一 handler 在其他事件上的注册均保留。event bus 对同一事件与同一函数引用使用集合
|
|
294
|
+
* 语义,重复 `on()` 只有一个有效注册,一次 `off()` 即会移除;重复调用 `off()` 是幂等的,未知事件
|
|
295
|
+
* 或未注册 handler 会被静默忽略。
|
|
296
|
+
*
|
|
297
|
+
* 大多数场景优先保存并调用 [on()](/reference/sdk/lifecycle/on) 返回的 unsubscribe:它已经闭包绑定
|
|
298
|
+
* 正确的事件名和 handler,同样可以重复调用。只有调用方需要在另一处按具名 handler 精确移除时,
|
|
299
|
+
* 才直接使用 `off()`。匿名函数必须先保存引用;重新创建一个内容相同的箭头函数无法取消旧监听。
|
|
300
|
+
*
|
|
301
|
+
* 生命周期与业务事件不会重放,只派发给事件到达时仍处于注册状态的 handler。`off()` 只阻止后续
|
|
302
|
+
* 事件,不能撤销已经执行的 handler,也不能取回注册前错过的 `launch`、`ready`、`show`、`hide`、
|
|
303
|
+
* `unload` 等事件。当前握手状态应通过
|
|
304
|
+
* [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState) 或
|
|
305
|
+
* [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 获取,不要通过重新注册
|
|
306
|
+
* `ready` 事件补状态。
|
|
307
|
+
*
|
|
308
|
+
* Runtime `unload` 或 SDK 内部销毁后不会再有可依赖的未来 bridge 生命周期事件,但调用 unsubscribe
|
|
309
|
+
* 或 `off()` 做本地清理仍可安全重复执行。取消监听不会取消已经开始的 API 请求、业务任务或
|
|
310
|
+
* `onHandshakeStateChange()` 订阅;后者必须调用其自己返回的取消函数。
|
|
311
|
+
*
|
|
312
|
+
* @example
|
|
313
|
+
* ```ts
|
|
314
|
+
* import hbSDK from '@heybox/hb-sdk'
|
|
315
|
+
*
|
|
316
|
+
* const pauseOnHide = () => pausePolling()
|
|
317
|
+
* const reportHide = () => reportVisibility('hidden')
|
|
318
|
+
*
|
|
319
|
+
* hbSDK.on('hide', pauseOnHide)
|
|
320
|
+
* const stopReporting = hbSDK.on('hide', reportHide)
|
|
321
|
+
*
|
|
322
|
+
* hbSDK.off('hide', pauseOnHide) // 只移除 pauseOnHide
|
|
323
|
+
* hbSDK.off('hide', pauseOnHide) // 已移除,仍然安全
|
|
324
|
+
* stopReporting() // 推荐:使用 on() 返回的取消函数
|
|
325
|
+
* ```
|
|
326
|
+
*
|
|
327
|
+
* @see [on()](/reference/sdk/lifecycle/on) 注册事件并取得绑定好的取消函数。
|
|
328
|
+
* @see [getHandshakeState()](/reference/sdk/lifecycle/getHandshakeState) 同步读取持久握手状态。
|
|
329
|
+
* @see [onHandshakeStateChange()](/reference/sdk/lifecycle/onHandshakeStateChange) 订阅会立即回放的握手状态。
|
|
330
|
+
* @see [事件与生命周期](/guide/lifecycle) 生命周期事件列表与清理建议。
|
|
331
|
+
*
|
|
73
332
|
* @since 0.2.0-alpha.0
|
|
74
333
|
* @hbPlatform android
|
|
75
334
|
* @hbPlatform ios
|
|
@@ -1,5 +1,70 @@
|
|
|
1
|
+
/** 单个小程序版本最多声明的关联游戏数量。 */
|
|
1
2
|
export declare const MINIAPP_BIND_APP_IDS_MAX_COUNT = 20;
|
|
3
|
+
/**
|
|
4
|
+
* {@link parseMiniappBindAppIds} 的诊断文案配置。
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* 该选项只改变抛出 `Error` 的来源前缀,不改变校验、排序或返回值。函数不会 trim、补全或
|
|
8
|
+
* 校验标签;调用方应传能准确定位配置位置的非空文本。
|
|
9
|
+
*/
|
|
2
10
|
export interface ParseMiniappBindAppIdsOptions {
|
|
11
|
+
/**
|
|
12
|
+
* 写入每条错误消息开头的来源标签,默认 `package.json#heybox.bindAppIds`。
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* Manifest 校验器会传 `manifest.bindAppIds`,因此同一个非法值可明确指出来自项目声明还是
|
|
16
|
+
* 构建产物。传入值会原样插入文案,不会自动添加冒号、路径或字段名。
|
|
17
|
+
*/
|
|
3
18
|
sourceLabel?: string;
|
|
4
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* 校验并规范化小程序关联的游戏 App ID。
|
|
22
|
+
*
|
|
23
|
+
* @param value - 不可信声明。`undefined` 和 `[]` 均返回空绑定;其他值必须是最多 20 项的
|
|
24
|
+
* 字符串数组,不接受 `null`、单个字符串、number 数组或类数组对象。
|
|
25
|
+
* @param options - 可选诊断来源;`sourceLabel` 默认 `package.json#heybox.bindAppIds`,并原样
|
|
26
|
+
* 作为所有错误消息的前缀。
|
|
27
|
+
* @returns 新建、按 appid 数值升序排列且经 `Object.freeze` 冻结的 `readonly string[]`。
|
|
28
|
+
* 输入数组及其顺序不会被修改;空输入也返回新的冻结空数组。
|
|
29
|
+
* @throws `Error` `${sourceLabel} 必须是字符串数组`:`value` 不是数组。
|
|
30
|
+
* @throws `Error` `${sourceLabel} 最多包含 20 个游戏 appid`:输入数组超过 20 项;数量检查
|
|
31
|
+
* 先于逐项格式检查。
|
|
32
|
+
* @throws `Error` `${sourceLabel} 包含非法游戏 appid:<value>`:任一项不是 string,或不匹配
|
|
33
|
+
* `/^[1-9]\d*$/`。因此空串、首尾空白、`0`、前导零、正负号、小数、指数和非十进制字符
|
|
34
|
+
* 都不会被自动修正。
|
|
35
|
+
* @throws `Error` `${sourceLabel} 包含超出正 int32 范围的游戏 appid:<value>`:十进制值
|
|
36
|
+
* 大于 `2147483647` 或不能成为安全整数。
|
|
37
|
+
* @throws `Error` `${sourceLabel} 包含重复游戏 appid:<value>`:规范字符串在同一数组重复。
|
|
38
|
+
*
|
|
39
|
+
* @remarks
|
|
40
|
+
* 合法范围是闭区间 `1..2147483647`,每项在输出中仍保持十进制 string。排序按数值而不是
|
|
41
|
+
* 字典序执行,所以 `['3513350', '730', '10']` 输出为 `['10', '730', '3513350']`。
|
|
42
|
+
* 函数先复制后排序并冻结结果,不排序或冻结调用方传入的数组。
|
|
43
|
+
*
|
|
44
|
+
* 这是同步、纯离线的格式规范化函数,不访问网络,也不确认 appid 是否真实存在、可绑定或
|
|
45
|
+
* 属于当前开发者。`miniappManifest()` 用它校验 `package.json#heybox.bindAppIds` 并把非空结果
|
|
46
|
+
* 写入 Manifest;远端 deploy 预检和提审才校验游戏可用性。缺失和空数组在普通构建中都表示
|
|
47
|
+
* 无绑定,函数本身不处理 `remote deploy --from-version` 的历史快照继承语义。
|
|
48
|
+
*
|
|
49
|
+
* `bindAppIds` 是版本发布元数据,不是 Runtime 权限,也不会因调用
|
|
50
|
+
* [navigation.openAppPage](/reference/sdk/navigation/openAppPage) 而变化。后者的 `appId` 是一次
|
|
51
|
+
* 页面导航参数,允许 string 或 number、只要求字符串化后非空,不适用本函数的数组、int32、
|
|
52
|
+
* 前导零、去重、20 项或排序规则。
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* import { parseMiniappBindAppIds } from '@heybox/hb-sdk/miniapp-publish'
|
|
57
|
+
*
|
|
58
|
+
* const declared = ['3513350', '730', '10']
|
|
59
|
+
* const appIds = parseMiniappBindAppIds(declared)
|
|
60
|
+
*
|
|
61
|
+
* console.log(appIds) // ['10', '730', '3513350']
|
|
62
|
+
* console.log(declared) // ['3513350', '730', '10'],输入顺序不变
|
|
63
|
+
* console.log(Object.isFrozen(appIds)) // true
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @see [miniappManifest](/reference/symbols/vite/functions/miniappManifest)
|
|
67
|
+
* @see [navigation.openAppPage](/reference/sdk/navigation/openAppPage)
|
|
68
|
+
* @see [CLI 与远端发布](/guide/cli#生产构建)
|
|
69
|
+
*/
|
|
5
70
|
export declare function parseMiniappBindAppIds(value: unknown, options?: ParseMiniappBindAppIdsOptions): readonly string[];
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { type MiniappPermissionDeclarations } from './permissions';
|
|
2
2
|
import type { MiniappCompanionManifestDeclarations } from './companion-types';
|
|
3
3
|
export declare const MINIAPP_TEMPLATE_VERSION = "0.0.0";
|
|
4
|
+
/**
|
|
5
|
+
* `package.json#heybox.platforms` 接受的平台值,顺序同时是 Manifest 的规范化输出顺序。
|
|
6
|
+
*
|
|
7
|
+
* @remarks 项目仍应只声明实际完成适配并经过验收的平台;模板默认值不是自动兼容承诺。
|
|
8
|
+
*/
|
|
4
9
|
export declare const MINIAPP_PLATFORM_VALUES: readonly ["android", "ios", "ohos", "windows", "macos", "linux"];
|
|
10
|
+
/** `package.json#heybox.platforms` 中单个平台标识。 */
|
|
5
11
|
export type MiniappPlatform = (typeof MINIAPP_PLATFORM_VALUES)[number];
|
|
6
12
|
/** 平台声明硬切点:产物 hb-sdk 版本达到该值时,必须显式声明非空 `platforms`。 */
|
|
7
13
|
export declare const MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION = "0.9.0";
|
|
@@ -57,6 +63,49 @@ export interface ParseMiniappManifestResult {
|
|
|
57
63
|
manifest: MiniappManifest;
|
|
58
64
|
hadBom: boolean;
|
|
59
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* 判断小程序版本是否符合公开 Manifest 版本规则。
|
|
68
|
+
*
|
|
69
|
+
* @param version - 待判断的 `package.json.version` / Manifest 版本字符串;首尾空白会先被
|
|
70
|
+
* 移除,但函数不会把规范化后的字符串返回给调用方。
|
|
71
|
+
* @returns trim 后满足小程序严格版本规则时返回 `true`,否则返回 `false`。对类型声明允许的
|
|
72
|
+
* 字符串输入,该函数只返回布尔值,不抛出校验错误。
|
|
73
|
+
*
|
|
74
|
+
* @remarks
|
|
75
|
+
* 接受形式为 canonical SemVer `MAJOR.MINOR.PATCH[-PRERELEASE]`。trim 后的输入必须与
|
|
76
|
+
* `semver` 严格解析得到的 `version` 完全相同,因此不完整版本(如 `1.2`)、`v` / `=`
|
|
77
|
+
* 前缀、范围表达式、额外段,以及 major/minor/patch 或纯数字 prerelease 标识中的前导零
|
|
78
|
+
* 都返回 `false`。只有首尾空白会被忽略,内部空白不会被修复。
|
|
79
|
+
*
|
|
80
|
+
* 合法 prerelease(如 `1.2.3-alpha.1`、`0.0.1-rc.0`)可以使用。build metadata 即使符合
|
|
81
|
+
* 标准 SemVer(如 `1.2.3+build.1`)也被小程序发布合同显式禁止。模板占位 core
|
|
82
|
+
* `0.0.0` 同样禁止,包括 `0.0.0-alpha` 等 prerelease;至少应提升 patch/minor/major
|
|
83
|
+
* 之一,例如 `0.0.1-alpha.1`。
|
|
84
|
+
*
|
|
85
|
+
* 这是无 I/O、无状态修改的 predicate,适合表单即时判断。实际 Vite / `hb-sdk build`
|
|
86
|
+
* 流程会调用同规则的 package version validator:成功时返回 trim 后版本并写入 Manifest,
|
|
87
|
+
* 失败时抛出带 `package.json.version` 来源的错误;调用本函数为 `true` 不能跳过正式构建。
|
|
88
|
+
*
|
|
89
|
+
* {@link resolveMiniappManifestPlatforms} 处理的是 Manifest `sdkVersion` 对平台声明策略的
|
|
90
|
+
* SemVer precedence,不是当前小程序的发布 `version`。不要用本函数替代平台解析,也不要
|
|
91
|
+
* 把项目 version 当作 sdkVersion 传入。
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* import { isValidVersion } from '@heybox/hb-sdk/miniapp-publish'
|
|
96
|
+
*
|
|
97
|
+
* isValidVersion(' 1.2.3 ') // true
|
|
98
|
+
* isValidVersion('1.2.3-alpha.1') // true
|
|
99
|
+
* isValidVersion('0.0.1-alpha.1') // true
|
|
100
|
+
* isValidVersion('1.2') // false
|
|
101
|
+
* isValidVersion('v1.2.3') // false
|
|
102
|
+
* isValidVersion('1.2.3+build.1') // false
|
|
103
|
+
* isValidVersion('0.0.0-alpha') // false
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* @see {@link resolveMiniappManifestPlatforms}
|
|
107
|
+
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
|
|
108
|
+
*/
|
|
60
109
|
export declare function isValidMiniappManifestVersion(version: string): boolean;
|
|
61
110
|
export declare function validateMiniappPackageVersionForBuild(version: string): string;
|
|
62
111
|
export declare function validateMiniappManifestVersion(version: unknown, sourceLabel?: string): string;
|
|
@@ -75,40 +124,108 @@ export declare function validateMiniappManifestForDeploy(manifest: MiniappManife
|
|
|
75
124
|
};
|
|
76
125
|
export declare function validateMiniappPlatforms(platforms: unknown, sourceLabel?: string): readonly MiniappPlatform[];
|
|
77
126
|
export declare function areMiniappPlatformsEqual(left: readonly MiniappPlatform[], right: readonly MiniappPlatform[]): boolean;
|
|
78
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* Manifest 平台解析所采用的策略。
|
|
129
|
+
*
|
|
130
|
+
* @remarks
|
|
131
|
+
* - `explicit`:Manifest 自身拥有合法、非空的 `platforms` 字段;无论 sdkVersion 是否低于
|
|
132
|
+
* `0.9.0`,显式声明都优先且不会被兼容默认值覆盖。
|
|
133
|
+
* - `legacy_mobile_default`:Manifest 完全没有 `platforms` 字段,且 sdkVersion 缺失/空白或
|
|
134
|
+
* SemVer precedence 低于 `0.9.0`;最终按 `android`、`ios`、`ohos` 历史集合兼容。
|
|
135
|
+
*/
|
|
79
136
|
export type MiniappPlatformPolicy = 'explicit' | 'legacy_mobile_default';
|
|
80
137
|
/**
|
|
81
|
-
* Manifest
|
|
138
|
+
* Manifest 平台声明的规范化解析结果,供 CLI、开放平台网页、后端与 Runtime 共用。
|
|
82
139
|
*
|
|
83
140
|
* @remarks
|
|
84
|
-
* `
|
|
85
|
-
*
|
|
141
|
+
* 返回对象通过 `Object.freeze()` 冻结,字段和数组在类型层也都是只读值。调用方应把其中
|
|
142
|
+
* 的数组视为不可变集合,不要修改、重新排序或自行合并 fallback。`platformsDeclared` 与
|
|
143
|
+
* `policy` 用于保留“显式三移动端”与“历史默认三移动端”的来源差异。
|
|
86
144
|
*/
|
|
87
145
|
export interface MiniappPlatformResolution {
|
|
88
|
-
/**
|
|
146
|
+
/**
|
|
147
|
+
* 规范化后的显式声明。`explicit` 时按固定顺序
|
|
148
|
+
* `android`、`ios`、`ohos`、`windows`、`macos`、`linux` 排列并只保留声明项;
|
|
149
|
+
* `legacy_mobile_default` 时是冻结的空数组,表示历史产物没有声明,而不是“不支持平台”。
|
|
150
|
+
*/
|
|
89
151
|
readonly declared: readonly MiniappPlatform[];
|
|
90
|
-
/**
|
|
152
|
+
/**
|
|
153
|
+
* 最终用于展示、校验和运行判断的平台集合。`explicit` 时与规范化后的 `declared` 相同;
|
|
154
|
+
* `legacy_mobile_default` 时固定为 `android`、`ios`、`ohos`。
|
|
155
|
+
*/
|
|
91
156
|
readonly effective: readonly MiniappPlatform[];
|
|
92
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Manifest 是否拥有经过校验的显式 `platforms` 字段。显式声明三移动端时为 `true`,
|
|
159
|
+
* 历史 fallback 得到相同 effective 集合时仍为 `false`。
|
|
160
|
+
*/
|
|
93
161
|
readonly platformsDeclared: boolean;
|
|
94
|
-
/**
|
|
162
|
+
/** 本次解析采用的来源策略;与 `platformsDeclared` 保持一致。 */
|
|
95
163
|
readonly policy: MiniappPlatformPolicy;
|
|
96
164
|
}
|
|
97
165
|
/**
|
|
98
166
|
* 解析 Manifest 平台声明,是 `0.9.0` 硬切规则的唯一实现。
|
|
99
167
|
*
|
|
168
|
+
* @param sdkVersion - 产物写入 Manifest 的 hb-sdk 版本,不是小程序自身的发布 version。
|
|
169
|
+
* `undefined`、空字符串和纯空白按历史“缺失 sdkVersion”处理;其他字符串会先 trim,再按
|
|
170
|
+
* canonical strict SemVer 校验并参与 precedence 比较。
|
|
171
|
+
* @param manifest - 待解析的不可信 Manifest。必须是非 `null`、非数组的对象;函数只读取其
|
|
172
|
+
* 自有 `platforms` 字段,其他字段不参与平台解析。
|
|
173
|
+
* @returns 冻结的 {@link MiniappPlatformResolution}。显式声明返回规范排序后的 declared /
|
|
174
|
+
* effective;历史兼容返回空 declared 与 Android/iOS/OHOS effective。
|
|
175
|
+
* @throws `manifest` 不是对象时抛出;非空 sdkVersion 不完整、含 `v` 前缀或 build metadata、
|
|
176
|
+
* 不是 canonical SemVer 时抛出;sdkVersion precedence 达到 `0.9.0` 但缺少 platforms 时抛出;
|
|
177
|
+
* 显式 platforms 不是非空数组、包含未知/非字符串/重复平台时抛出。
|
|
178
|
+
*
|
|
100
179
|
* @remarks
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
180
|
+
* 解析顺序与后端领域层保持一致:先校验 Manifest 对象,再处理 sdkVersion;只要非空
|
|
181
|
+
* sdkVersion 非法,即使存在合法 platforms 也会抛出,不会忽略版本。版本比较使用 SemVer
|
|
182
|
+
* precedence,不做字符串比较:`0.9.0-alpha.1 < 0.9.0`,而 `0.10.0 > 0.9.0`。
|
|
183
|
+
*
|
|
184
|
+
* Manifest 拥有 `platforms` 字段时总是走 `explicit`:字段必须是非空数组,每项必须属于
|
|
185
|
+
* `MINIAPP_PLATFORM_VALUES` 且不能重复;结果按固定平台词表排序,而不是保留输入顺序。
|
|
186
|
+
* 该规则与 sdkVersion 是否缺失、低于或达到硬切点无关。显式声明一旦非法绝不回退到
|
|
187
|
+
* legacy 默认值。
|
|
188
|
+
*
|
|
189
|
+
* Manifest 完全没有 `platforms` 字段时才判断硬切:sdkVersion 缺失/空白,或 precedence
|
|
190
|
+
* 低于 `MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION`(`0.9.0`)时返回
|
|
191
|
+
* `legacy_mobile_default`;`0.9.0` 稳定版及更高版本直接抛错。`0.9.0-*` prerelease 仍低于
|
|
192
|
+
* 稳定硬切点,因此可解析历史缺失声明。
|
|
193
|
+
*
|
|
194
|
+
* 返回对象被 `Object.freeze()`;显式声明数组和 legacy 的空 declared 数组也被冻结。所有
|
|
195
|
+
* 数组均以 readonly 合同暴露,调用方应直接消费 `effective`,不得再比较版本或补默认值。
|
|
196
|
+
*
|
|
197
|
+
* 当前 Vite 构建入口
|
|
198
|
+
* {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
|
|
199
|
+
* 会从 `package.json#heybox.platforms` 读取并写入显式声明;legacy 分支只用于解析缺少字段
|
|
200
|
+
* 的历史产物,不是新项目省略 platforms 的许可。
|
|
201
|
+
*
|
|
202
|
+
* {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/miniapp-publish/functions/isValidVersion | isValidVersion}
|
|
203
|
+
* 判断的是小程序发布 `version`,并额外拒绝模板值 `0.0.0`;本函数的 sdkVersion 是 hb-sdk
|
|
204
|
+
* 版本,`0.0.0` 本身是可比较的 strict SemVer 并低于硬切点。两类版本不能互换校验。
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* ```ts
|
|
208
|
+
* import { resolveMiniappManifestPlatforms } from '@heybox/hb-sdk/miniapp-publish'
|
|
209
|
+
*
|
|
210
|
+
* const explicit = resolveMiniappManifestPlatforms('0.9.0', {
|
|
211
|
+
* platforms: ['linux', 'android', 'macos'],
|
|
212
|
+
* })
|
|
213
|
+
* console.log(explicit)
|
|
214
|
+
* // {
|
|
215
|
+
* // declared: ['android', 'macos', 'linux'],
|
|
216
|
+
* // effective: ['android', 'macos', 'linux'],
|
|
217
|
+
* // platformsDeclared: true,
|
|
218
|
+
* // policy: 'explicit'
|
|
219
|
+
* // }
|
|
220
|
+
*
|
|
221
|
+
* const legacy = resolveMiniappManifestPlatforms('0.9.0-alpha.1', {})
|
|
222
|
+
* console.log(legacy.effective) // ['android', 'ios', 'ohos']
|
|
223
|
+
* ```
|
|
224
|
+
*
|
|
225
|
+
* @see {@link MINIAPP_PLATFORM_HARD_CUT_SDK_VERSION}
|
|
226
|
+
* @see {@link MINIAPP_LEGACY_MOBILE_PLATFORM_VALUES}
|
|
227
|
+
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/miniapp-publish/functions/isValidVersion | isValidVersion}
|
|
228
|
+
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/reference/symbols/vite/functions/miniappManifest | miniappManifest}
|
|
112
229
|
*/
|
|
113
230
|
export declare function resolveMiniappManifestPlatforms(sdkVersion: string | undefined, manifest: unknown): MiniappPlatformResolution;
|
|
114
231
|
/**
|