@heybox/hb-sdk 0.8.3-alpha.3 → 0.8.3-alpha.4
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 +15 -1
- package/README.md +8 -6
- package/dist/cli-chunks/{build-Dydd4Rzd.cjs → build-CkPA6jAR.cjs} +5 -5
- package/dist/cli-chunks/{context-DcuY0bGO.cjs → context-DoVGwJek.cjs} +35 -8
- package/dist/cli-chunks/{create-DKVTlorM.cjs → create-vFF2Au_f.cjs} +1 -1
- package/dist/cli-chunks/{dev-DbrUeTqi.cjs → dev-5lkHU1uv.cjs} +194 -73
- package/dist/cli-chunks/{doctor-D184dg_h.cjs → doctor-DFt0LWou.cjs} +1 -1
- package/dist/cli-chunks/{index-BG8JJ9pA.cjs → index-CguXMrgP.cjs} +2 -2
- package/dist/cli-chunks/{index-B_HjHK3d.cjs → index-Ol4wxcob.cjs} +15 -15
- package/dist/cli-chunks/{index.esm-42g2R7qD.cjs → index.esm-DUvvFi-Z.cjs} +7 -7
- package/dist/cli-chunks/{login-D3MBcgNb.cjs → login-CA5BhdXd.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-CUh6Dsv5.cjs → project-vite-P09pYZoU.cjs} +1 -1
- package/dist/cli-chunks/{remote-EBGDOJL3.cjs → remote-DU0f2mlK.cjs} +36 -9
- package/dist/cli-chunks/{runtime-gate-CE1ln9xc.cjs → runtime-gate-Ay8_t7m0.cjs} +1 -1
- package/dist/cli-chunks/{runtime-permission-env-CVt4QPbX.cjs → runtime-permission-env-C0clU7_f.cjs} +119 -6
- package/dist/cli-chunks/{session-CKuEz-ih.cjs → session-2vOGqgeA.cjs} +1 -1
- package/dist/cli-chunks/{skill-oLEQS_U6.cjs → skill-D5Pf0dxT.cjs} +2 -2
- package/dist/cli-chunks/{version-BNNxfn8M.cjs → version-CF6ilsAH.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-D6g0uewc.js +101 -0
- package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-EnOYLhEx.js → desktop-app-launch-Cku9Fxud.js} +3 -3
- package/dist/devtools/browser-dev-host/assets/index-BrXEMo2-.css +1 -0
- package/dist/devtools/browser-dev-host/assets/{index-8YA6OLi7.js → index-CVARuXxw.js} +4 -4
- package/dist/devtools/browser-dev-host/index.html +3 -3
- package/dist/index.cjs.js +16 -16
- package/dist/index.esm.js +16 -16
- package/dist/protocol.cjs.js +20 -20
- package/dist/protocol.esm.js +20 -20
- package/dist/vite.cjs.js +3 -3
- package/dist/vite.esm.js +3 -3
- package/docs/runtime-host-migration.md +5 -3
- package/package.json +6 -6
- package/skill/skill.json +4 -4
- package/types/protocol/dev-session.d.ts +13 -2
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-u03IcCCS.js +0 -101
- package/dist/devtools/browser-dev-host/assets/index-D-cRoNV5.css +0 -1
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<meta name="theme-color" content="#f4f5f7" />
|
|
7
7
|
<title>小程序工坊调试台</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/desktop-app-launch-
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-CVARuXxw.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/desktop-app-launch-Cku9Fxud.js">
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BrXEMo2-.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<div id="app"></div>
|
package/dist/index.cjs.js
CHANGED
|
@@ -748,7 +748,7 @@ const COMPANION_SHOW_NOTIFICATION_METHOD = 'companion.showNotification';
|
|
|
748
748
|
* @see [parseMiniProgramRuntimePermissions](/reference/symbols/protocol/functions/parseMiniProgramRuntimePermissions) Runtime 权限快照解析器。
|
|
749
749
|
*/
|
|
750
750
|
function isMiniProgramBridgeMessage(value) {
|
|
751
|
-
if (!isRecord$
|
|
751
|
+
if (!isRecord$3(value))
|
|
752
752
|
return false;
|
|
753
753
|
if (value.namespace !== MINI_PROGRAM_MESSAGE_NAMESPACE || (value.version !== 1 && value.version !== 2) || !isNonEmptyString$1(value.nonce)) {
|
|
754
754
|
return false;
|
|
@@ -898,7 +898,7 @@ function isMiniProgramRelativePath(value) {
|
|
|
898
898
|
* @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 可作为 derived path root 的目录代理。
|
|
899
899
|
*/
|
|
900
900
|
function isMiniProgramPathRootRef(value) {
|
|
901
|
-
if (!isRecord$
|
|
901
|
+
if (!isRecord$3(value))
|
|
902
902
|
return false;
|
|
903
903
|
if (value.kind === 'sandbox')
|
|
904
904
|
return hasOnlyKeys(value, ['kind']);
|
|
@@ -964,7 +964,7 @@ function isMiniProgramPathRootRef(value) {
|
|
|
964
964
|
* @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 使用文件引用的公开 I/O 代理。
|
|
965
965
|
*/
|
|
966
966
|
function isMiniProgramFileRef(value) {
|
|
967
|
-
if (!isRecord$
|
|
967
|
+
if (!isRecord$3(value) || value.kind !== 'file')
|
|
968
968
|
return false;
|
|
969
969
|
if (isNonEmptyString$1(value.handleId)) {
|
|
970
970
|
return hasOnlyKeys(value, ['kind', 'handleId']);
|
|
@@ -1031,7 +1031,7 @@ function isMiniProgramFileRef(value) {
|
|
|
1031
1031
|
* @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 使用目录引用的公开路径操作代理。
|
|
1032
1032
|
*/
|
|
1033
1033
|
function isMiniProgramDirectoryRef(value) {
|
|
1034
|
-
if (!isRecord$
|
|
1034
|
+
if (!isRecord$3(value) || value.kind !== 'directory')
|
|
1035
1035
|
return false;
|
|
1036
1036
|
if (isNonEmptyString$1(value.handleId)) {
|
|
1037
1037
|
return hasOnlyKeys(value, ['kind', 'handleId']);
|
|
@@ -1150,7 +1150,7 @@ function isMiniProgramByteArray(value) {
|
|
|
1150
1150
|
* @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 提供 `stat()` 的当前 session 文件代理。
|
|
1151
1151
|
*/
|
|
1152
1152
|
function isMiniProgramFileStat(value) {
|
|
1153
|
-
return (isRecord$
|
|
1153
|
+
return (isRecord$3(value) &&
|
|
1154
1154
|
value.kind === 'file' &&
|
|
1155
1155
|
isNonNegativeSafeInteger(value.size) &&
|
|
1156
1156
|
(value.modifiedAt === undefined || isNonNegativeFiniteNumber(value.modifiedAt)) &&
|
|
@@ -1210,7 +1210,7 @@ function isMiniProgramFileStat(value) {
|
|
|
1210
1210
|
* @see [isMiniProgramBridgeMessage](/reference/symbols/protocol/functions/isMiniProgramBridgeMessage) operation progress envelope 的最低校验。
|
|
1211
1211
|
*/
|
|
1212
1212
|
function isMiniProgramDownloadProgressPayload(value) {
|
|
1213
|
-
if (!isRecord$
|
|
1213
|
+
if (!isRecord$3(value) ||
|
|
1214
1214
|
!isNonNegativeSafeInteger(value.loaded) ||
|
|
1215
1215
|
typeof value.lengthComputable !== 'boolean' ||
|
|
1216
1216
|
!hasOnlyKeys(value, ['loaded', 'total', 'lengthComputable'])) {
|
|
@@ -1221,7 +1221,7 @@ function isMiniProgramDownloadProgressPayload(value) {
|
|
|
1221
1221
|
return isNonNegativeSafeInteger(value.total) && value.loaded <= value.total;
|
|
1222
1222
|
}
|
|
1223
1223
|
function isMiniProgramCompanionPrepareProgress(value) {
|
|
1224
|
-
if (!isRecord$
|
|
1224
|
+
if (!isRecord$3(value))
|
|
1225
1225
|
return false;
|
|
1226
1226
|
if (value.phase === 'downloading') {
|
|
1227
1227
|
return (isNonNegativeSafeInteger(value.loaded) &&
|
|
@@ -1239,10 +1239,10 @@ function isMiniProgramOperationProgressPayload(value) {
|
|
|
1239
1239
|
return isMiniProgramDownloadProgressPayload(value) || isMiniProgramCompanionPrepareProgress(value);
|
|
1240
1240
|
}
|
|
1241
1241
|
function isSDKHandshakePayload(value) {
|
|
1242
|
-
return isRecord$
|
|
1242
|
+
return isRecord$3(value) && isNonEmptyString$1(value.href) && typeof value.userAgent === 'string' && isNonEmptyString$1(value.sdkVersion);
|
|
1243
1243
|
}
|
|
1244
1244
|
function isBridgeError(value) {
|
|
1245
|
-
return isRecord$
|
|
1245
|
+
return isRecord$3(value) && isNonEmptyString$1(value.code) && typeof value.message === 'string';
|
|
1246
1246
|
}
|
|
1247
1247
|
function isNonNegativeSafeInteger(value) {
|
|
1248
1248
|
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
|
|
@@ -1257,15 +1257,10 @@ function hasOnlyKeys(value, allowedKeys) {
|
|
|
1257
1257
|
const allowed = new Set(allowedKeys);
|
|
1258
1258
|
return Object.keys(value).every((key) => allowed.has(key));
|
|
1259
1259
|
}
|
|
1260
|
-
function isRecord$
|
|
1260
|
+
function isRecord$3(value) {
|
|
1261
1261
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
1262
1262
|
}
|
|
1263
1263
|
|
|
1264
|
-
/** 当前用户信息与登录能力支持的完整 scope 目录(canonical 顺序)。 */
|
|
1265
|
-
const USER_INFO_AUTHORIZATION_SCOPES = ['identity', 'profile', 'steam_account'];
|
|
1266
|
-
/** Companion alias 的跨构建、Runtime 与 Host 规范。 */
|
|
1267
|
-
const COMPANION_ALIAS_PATTERN = /^[a-z][a-z0-9-]{0,31}$/;
|
|
1268
|
-
|
|
1269
1264
|
const MINI_PROGRAM_PERMISSION_KEYS = [
|
|
1270
1265
|
'userInfo',
|
|
1271
1266
|
'steamLibrary',
|
|
@@ -1281,6 +1276,11 @@ new Set(MINI_PROGRAM_PERMISSION_KEYS);
|
|
|
1281
1276
|
|
|
1282
1277
|
new Set(MINI_PROGRAM_PERMISSION_KEYS);
|
|
1283
1278
|
|
|
1279
|
+
/** 当前用户信息与登录能力支持的完整 scope 目录(canonical 顺序)。 */
|
|
1280
|
+
const USER_INFO_AUTHORIZATION_SCOPES = ['identity', 'profile', 'steam_account'];
|
|
1281
|
+
/** Companion alias 的跨构建、Runtime 与 Host 规范。 */
|
|
1282
|
+
const COMPANION_ALIAS_PATTERN = /^[a-z][a-z0-9-]{0,31}$/;
|
|
1283
|
+
|
|
1284
1284
|
/** 获取浏览器全局 window。 */
|
|
1285
1285
|
function getGlobalWindow() {
|
|
1286
1286
|
return typeof window === 'undefined' ? undefined : window;
|
|
@@ -1342,7 +1342,7 @@ function createMessageId() {
|
|
|
1342
1342
|
/** 构建时替换为当前发布包的实际版本。 */
|
|
1343
1343
|
const HB_SDK_VERSION = typeof undefined === 'string'
|
|
1344
1344
|
? undefined
|
|
1345
|
-
: '0.8.3-alpha.
|
|
1345
|
+
: '0.8.3-alpha.4';
|
|
1346
1346
|
|
|
1347
1347
|
const RUNTIME_MODES = new Set(['production', 'preview', 'development', 'unknown']);
|
|
1348
1348
|
const OPERATING_SYSTEM_NAMES = new Set(['android', 'ios', 'ohos', 'windows', 'macos', 'linux', 'unknown']);
|
package/dist/index.esm.js
CHANGED
|
@@ -744,7 +744,7 @@ const COMPANION_SHOW_NOTIFICATION_METHOD = 'companion.showNotification';
|
|
|
744
744
|
* @see [parseMiniProgramRuntimePermissions](/reference/symbols/protocol/functions/parseMiniProgramRuntimePermissions) Runtime 权限快照解析器。
|
|
745
745
|
*/
|
|
746
746
|
function isMiniProgramBridgeMessage(value) {
|
|
747
|
-
if (!isRecord$
|
|
747
|
+
if (!isRecord$3(value))
|
|
748
748
|
return false;
|
|
749
749
|
if (value.namespace !== MINI_PROGRAM_MESSAGE_NAMESPACE || (value.version !== 1 && value.version !== 2) || !isNonEmptyString$1(value.nonce)) {
|
|
750
750
|
return false;
|
|
@@ -894,7 +894,7 @@ function isMiniProgramRelativePath(value) {
|
|
|
894
894
|
* @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 可作为 derived path root 的目录代理。
|
|
895
895
|
*/
|
|
896
896
|
function isMiniProgramPathRootRef(value) {
|
|
897
|
-
if (!isRecord$
|
|
897
|
+
if (!isRecord$3(value))
|
|
898
898
|
return false;
|
|
899
899
|
if (value.kind === 'sandbox')
|
|
900
900
|
return hasOnlyKeys(value, ['kind']);
|
|
@@ -960,7 +960,7 @@ function isMiniProgramPathRootRef(value) {
|
|
|
960
960
|
* @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 使用文件引用的公开 I/O 代理。
|
|
961
961
|
*/
|
|
962
962
|
function isMiniProgramFileRef(value) {
|
|
963
|
-
if (!isRecord$
|
|
963
|
+
if (!isRecord$3(value) || value.kind !== 'file')
|
|
964
964
|
return false;
|
|
965
965
|
if (isNonEmptyString$1(value.handleId)) {
|
|
966
966
|
return hasOnlyKeys(value, ['kind', 'handleId']);
|
|
@@ -1027,7 +1027,7 @@ function isMiniProgramFileRef(value) {
|
|
|
1027
1027
|
* @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 使用目录引用的公开路径操作代理。
|
|
1028
1028
|
*/
|
|
1029
1029
|
function isMiniProgramDirectoryRef(value) {
|
|
1030
|
-
if (!isRecord$
|
|
1030
|
+
if (!isRecord$3(value) || value.kind !== 'directory')
|
|
1031
1031
|
return false;
|
|
1032
1032
|
if (isNonEmptyString$1(value.handleId)) {
|
|
1033
1033
|
return hasOnlyKeys(value, ['kind', 'handleId']);
|
|
@@ -1146,7 +1146,7 @@ function isMiniProgramByteArray(value) {
|
|
|
1146
1146
|
* @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 提供 `stat()` 的当前 session 文件代理。
|
|
1147
1147
|
*/
|
|
1148
1148
|
function isMiniProgramFileStat(value) {
|
|
1149
|
-
return (isRecord$
|
|
1149
|
+
return (isRecord$3(value) &&
|
|
1150
1150
|
value.kind === 'file' &&
|
|
1151
1151
|
isNonNegativeSafeInteger(value.size) &&
|
|
1152
1152
|
(value.modifiedAt === undefined || isNonNegativeFiniteNumber(value.modifiedAt)) &&
|
|
@@ -1206,7 +1206,7 @@ function isMiniProgramFileStat(value) {
|
|
|
1206
1206
|
* @see [isMiniProgramBridgeMessage](/reference/symbols/protocol/functions/isMiniProgramBridgeMessage) operation progress envelope 的最低校验。
|
|
1207
1207
|
*/
|
|
1208
1208
|
function isMiniProgramDownloadProgressPayload(value) {
|
|
1209
|
-
if (!isRecord$
|
|
1209
|
+
if (!isRecord$3(value) ||
|
|
1210
1210
|
!isNonNegativeSafeInteger(value.loaded) ||
|
|
1211
1211
|
typeof value.lengthComputable !== 'boolean' ||
|
|
1212
1212
|
!hasOnlyKeys(value, ['loaded', 'total', 'lengthComputable'])) {
|
|
@@ -1217,7 +1217,7 @@ function isMiniProgramDownloadProgressPayload(value) {
|
|
|
1217
1217
|
return isNonNegativeSafeInteger(value.total) && value.loaded <= value.total;
|
|
1218
1218
|
}
|
|
1219
1219
|
function isMiniProgramCompanionPrepareProgress(value) {
|
|
1220
|
-
if (!isRecord$
|
|
1220
|
+
if (!isRecord$3(value))
|
|
1221
1221
|
return false;
|
|
1222
1222
|
if (value.phase === 'downloading') {
|
|
1223
1223
|
return (isNonNegativeSafeInteger(value.loaded) &&
|
|
@@ -1235,10 +1235,10 @@ function isMiniProgramOperationProgressPayload(value) {
|
|
|
1235
1235
|
return isMiniProgramDownloadProgressPayload(value) || isMiniProgramCompanionPrepareProgress(value);
|
|
1236
1236
|
}
|
|
1237
1237
|
function isSDKHandshakePayload(value) {
|
|
1238
|
-
return isRecord$
|
|
1238
|
+
return isRecord$3(value) && isNonEmptyString$1(value.href) && typeof value.userAgent === 'string' && isNonEmptyString$1(value.sdkVersion);
|
|
1239
1239
|
}
|
|
1240
1240
|
function isBridgeError(value) {
|
|
1241
|
-
return isRecord$
|
|
1241
|
+
return isRecord$3(value) && isNonEmptyString$1(value.code) && typeof value.message === 'string';
|
|
1242
1242
|
}
|
|
1243
1243
|
function isNonNegativeSafeInteger(value) {
|
|
1244
1244
|
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
|
|
@@ -1253,15 +1253,10 @@ function hasOnlyKeys(value, allowedKeys) {
|
|
|
1253
1253
|
const allowed = new Set(allowedKeys);
|
|
1254
1254
|
return Object.keys(value).every((key) => allowed.has(key));
|
|
1255
1255
|
}
|
|
1256
|
-
function isRecord$
|
|
1256
|
+
function isRecord$3(value) {
|
|
1257
1257
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
1258
1258
|
}
|
|
1259
1259
|
|
|
1260
|
-
/** 当前用户信息与登录能力支持的完整 scope 目录(canonical 顺序)。 */
|
|
1261
|
-
const USER_INFO_AUTHORIZATION_SCOPES = ['identity', 'profile', 'steam_account'];
|
|
1262
|
-
/** Companion alias 的跨构建、Runtime 与 Host 规范。 */
|
|
1263
|
-
const COMPANION_ALIAS_PATTERN = /^[a-z][a-z0-9-]{0,31}$/;
|
|
1264
|
-
|
|
1265
1260
|
const MINI_PROGRAM_PERMISSION_KEYS = [
|
|
1266
1261
|
'userInfo',
|
|
1267
1262
|
'steamLibrary',
|
|
@@ -1277,6 +1272,11 @@ new Set(MINI_PROGRAM_PERMISSION_KEYS);
|
|
|
1277
1272
|
|
|
1278
1273
|
new Set(MINI_PROGRAM_PERMISSION_KEYS);
|
|
1279
1274
|
|
|
1275
|
+
/** 当前用户信息与登录能力支持的完整 scope 目录(canonical 顺序)。 */
|
|
1276
|
+
const USER_INFO_AUTHORIZATION_SCOPES = ['identity', 'profile', 'steam_account'];
|
|
1277
|
+
/** Companion alias 的跨构建、Runtime 与 Host 规范。 */
|
|
1278
|
+
const COMPANION_ALIAS_PATTERN = /^[a-z][a-z0-9-]{0,31}$/;
|
|
1279
|
+
|
|
1280
1280
|
/** 获取浏览器全局 window。 */
|
|
1281
1281
|
function getGlobalWindow() {
|
|
1282
1282
|
return typeof window === 'undefined' ? undefined : window;
|
|
@@ -1338,7 +1338,7 @@ function createMessageId() {
|
|
|
1338
1338
|
/** 构建时替换为当前发布包的实际版本。 */
|
|
1339
1339
|
const HB_SDK_VERSION = typeof undefined === 'string'
|
|
1340
1340
|
? undefined
|
|
1341
|
-
: '0.8.3-alpha.
|
|
1341
|
+
: '0.8.3-alpha.4';
|
|
1342
1342
|
|
|
1343
1343
|
const RUNTIME_MODES = new Set(['production', 'preview', 'development', 'unknown']);
|
|
1344
1344
|
const OPERATING_SYSTEM_NAMES = new Set(['android', 'ios', 'ohos', 'windows', 'macos', 'linux', 'unknown']);
|
package/dist/protocol.cjs.js
CHANGED
|
@@ -444,7 +444,7 @@ const MINI_PROGRAM_PROTOCOL_CAPABILITIES = [
|
|
|
444
444
|
* @see [parseMiniProgramRuntimePermissions](/reference/symbols/protocol/functions/parseMiniProgramRuntimePermissions) Runtime 权限快照解析器。
|
|
445
445
|
*/
|
|
446
446
|
function isMiniProgramBridgeMessage(value) {
|
|
447
|
-
if (!isRecord$
|
|
447
|
+
if (!isRecord$3(value))
|
|
448
448
|
return false;
|
|
449
449
|
if (value.namespace !== MINI_PROGRAM_MESSAGE_NAMESPACE || (value.version !== 1 && value.version !== 2) || !isNonEmptyString$1(value.nonce)) {
|
|
450
450
|
return false;
|
|
@@ -594,7 +594,7 @@ function isMiniProgramRelativePath(value) {
|
|
|
594
594
|
* @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 可作为 derived path root 的目录代理。
|
|
595
595
|
*/
|
|
596
596
|
function isMiniProgramPathRootRef(value) {
|
|
597
|
-
if (!isRecord$
|
|
597
|
+
if (!isRecord$3(value))
|
|
598
598
|
return false;
|
|
599
599
|
if (value.kind === 'sandbox')
|
|
600
600
|
return hasOnlyKeys(value, ['kind']);
|
|
@@ -660,7 +660,7 @@ function isMiniProgramPathRootRef(value) {
|
|
|
660
660
|
* @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 使用文件引用的公开 I/O 代理。
|
|
661
661
|
*/
|
|
662
662
|
function isMiniProgramFileRef(value) {
|
|
663
|
-
if (!isRecord$
|
|
663
|
+
if (!isRecord$3(value) || value.kind !== 'file')
|
|
664
664
|
return false;
|
|
665
665
|
if (isNonEmptyString$1(value.handleId)) {
|
|
666
666
|
return hasOnlyKeys(value, ['kind', 'handleId']);
|
|
@@ -727,7 +727,7 @@ function isMiniProgramFileRef(value) {
|
|
|
727
727
|
* @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 使用目录引用的公开路径操作代理。
|
|
728
728
|
*/
|
|
729
729
|
function isMiniProgramDirectoryRef(value) {
|
|
730
|
-
if (!isRecord$
|
|
730
|
+
if (!isRecord$3(value) || value.kind !== 'directory')
|
|
731
731
|
return false;
|
|
732
732
|
if (isNonEmptyString$1(value.handleId)) {
|
|
733
733
|
return hasOnlyKeys(value, ['kind', 'handleId']);
|
|
@@ -801,7 +801,7 @@ function isMiniProgramDirectoryRef(value) {
|
|
|
801
801
|
* @see [SaveFileResult](/reference/symbols/protocol/types/SaveFileResult) save picker 的 direct-ref 文件结果。
|
|
802
802
|
*/
|
|
803
803
|
function isMiniProgramFileDescriptor(value) {
|
|
804
|
-
return (isRecord$
|
|
804
|
+
return (isRecord$3(value) &&
|
|
805
805
|
value.kind === 'file' &&
|
|
806
806
|
isNonEmptyString$1(value.name) &&
|
|
807
807
|
isFileMode(value.mode) &&
|
|
@@ -871,7 +871,7 @@ function isMiniProgramFileDescriptor(value) {
|
|
|
871
871
|
* @see [PickDirectoryResult](/reference/symbols/protocol/types/PickDirectoryResult) picker 的 direct-ref 返回契约。
|
|
872
872
|
*/
|
|
873
873
|
function isMiniProgramDirectoryDescriptor(value) {
|
|
874
|
-
return (isRecord$
|
|
874
|
+
return (isRecord$3(value) &&
|
|
875
875
|
value.kind === 'directory' &&
|
|
876
876
|
isNonEmptyString$1(value.name) &&
|
|
877
877
|
isFileMode(value.mode) &&
|
|
@@ -1050,7 +1050,7 @@ function isMiniProgramByteArray(value) {
|
|
|
1050
1050
|
* @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 提供 `stat()` 的当前 session 文件代理。
|
|
1051
1051
|
*/
|
|
1052
1052
|
function isMiniProgramFileStat(value) {
|
|
1053
|
-
return (isRecord$
|
|
1053
|
+
return (isRecord$3(value) &&
|
|
1054
1054
|
value.kind === 'file' &&
|
|
1055
1055
|
isNonNegativeSafeInteger(value.size) &&
|
|
1056
1056
|
(value.modifiedAt === undefined || isNonNegativeFiniteNumber(value.modifiedAt)) &&
|
|
@@ -1110,7 +1110,7 @@ function isMiniProgramFileStat(value) {
|
|
|
1110
1110
|
* @see [isMiniProgramBridgeMessage](/reference/symbols/protocol/functions/isMiniProgramBridgeMessage) operation progress envelope 的最低校验。
|
|
1111
1111
|
*/
|
|
1112
1112
|
function isMiniProgramDownloadProgressPayload(value) {
|
|
1113
|
-
if (!isRecord$
|
|
1113
|
+
if (!isRecord$3(value) ||
|
|
1114
1114
|
!isNonNegativeSafeInteger(value.loaded) ||
|
|
1115
1115
|
typeof value.lengthComputable !== 'boolean' ||
|
|
1116
1116
|
!hasOnlyKeys(value, ['loaded', 'total', 'lengthComputable'])) {
|
|
@@ -1121,7 +1121,7 @@ function isMiniProgramDownloadProgressPayload(value) {
|
|
|
1121
1121
|
return isNonNegativeSafeInteger(value.total) && value.loaded <= value.total;
|
|
1122
1122
|
}
|
|
1123
1123
|
function isMiniProgramCompanionPrepareProgress(value) {
|
|
1124
|
-
if (!isRecord$
|
|
1124
|
+
if (!isRecord$3(value))
|
|
1125
1125
|
return false;
|
|
1126
1126
|
if (value.phase === 'downloading') {
|
|
1127
1127
|
return (isNonNegativeSafeInteger(value.loaded) &&
|
|
@@ -1139,10 +1139,10 @@ function isMiniProgramOperationProgressPayload(value) {
|
|
|
1139
1139
|
return isMiniProgramDownloadProgressPayload(value) || isMiniProgramCompanionPrepareProgress(value);
|
|
1140
1140
|
}
|
|
1141
1141
|
function isSDKHandshakePayload(value) {
|
|
1142
|
-
return isRecord$
|
|
1142
|
+
return isRecord$3(value) && isNonEmptyString$1(value.href) && typeof value.userAgent === 'string' && isNonEmptyString$1(value.sdkVersion);
|
|
1143
1143
|
}
|
|
1144
1144
|
function isBridgeError(value) {
|
|
1145
|
-
return isRecord$
|
|
1145
|
+
return isRecord$3(value) && isNonEmptyString$1(value.code) && typeof value.message === 'string';
|
|
1146
1146
|
}
|
|
1147
1147
|
function isFileMode(value) {
|
|
1148
1148
|
return value === 'read' || value === 'readwrite';
|
|
@@ -1160,13 +1160,10 @@ function hasOnlyKeys(value, allowedKeys) {
|
|
|
1160
1160
|
const allowed = new Set(allowedKeys);
|
|
1161
1161
|
return Object.keys(value).every((key) => allowed.has(key));
|
|
1162
1162
|
}
|
|
1163
|
-
function isRecord$
|
|
1163
|
+
function isRecord$3(value) {
|
|
1164
1164
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
1165
1165
|
}
|
|
1166
1166
|
|
|
1167
|
-
/** 当前用户信息与登录能力支持的完整 scope 目录(canonical 顺序)。 */
|
|
1168
|
-
const USER_INFO_AUTHORIZATION_SCOPES = ['identity', 'profile', 'steam_account'];
|
|
1169
|
-
|
|
1170
1167
|
const MINI_PROGRAM_PERMISSION_KEYS = [
|
|
1171
1168
|
'userInfo',
|
|
1172
1169
|
'steamLibrary',
|
|
@@ -1310,7 +1307,7 @@ function isManagedMiniProgramRuntimePermissionKey(key) {
|
|
|
1310
1307
|
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/guide/permissions | 权限声明}
|
|
1311
1308
|
*/
|
|
1312
1309
|
function parseMiniProgramRuntimePermissions(snapshot) {
|
|
1313
|
-
if (!isRecord(snapshot) || snapshot.schema_version !== 1 || !Array.isArray(snapshot.entries)) {
|
|
1310
|
+
if (!isRecord$2(snapshot) || snapshot.schema_version !== 1 || !Array.isArray(snapshot.entries)) {
|
|
1314
1311
|
return { valid: false, permissions: {} };
|
|
1315
1312
|
}
|
|
1316
1313
|
if (snapshot.revision !== undefined && (typeof snapshot.revision !== 'number' || !Number.isInteger(snapshot.revision) || snapshot.revision < 0)) {
|
|
@@ -1319,7 +1316,7 @@ function parseMiniProgramRuntimePermissions(snapshot) {
|
|
|
1319
1316
|
const seenKeys = new Set();
|
|
1320
1317
|
const permissions = {};
|
|
1321
1318
|
for (const rawEntry of snapshot.entries) {
|
|
1322
|
-
if (!isRecord(rawEntry) || typeof rawEntry.key !== 'string' || !rawEntry.key.trim()) {
|
|
1319
|
+
if (!isRecord$2(rawEntry) || typeof rawEntry.key !== 'string' || !rawEntry.key.trim()) {
|
|
1323
1320
|
return { valid: false, permissions: {} };
|
|
1324
1321
|
}
|
|
1325
1322
|
const inputKey = rawEntry.key.trim();
|
|
@@ -1335,7 +1332,7 @@ function parseMiniProgramRuntimePermissions(snapshot) {
|
|
|
1335
1332
|
}
|
|
1336
1333
|
if (key === 'network') {
|
|
1337
1334
|
const config = rawEntry.config;
|
|
1338
|
-
if (!isRecord(config) || typeof config.useOfficialDomain !== 'boolean') {
|
|
1335
|
+
if (!isRecord$2(config) || typeof config.useOfficialDomain !== 'boolean') {
|
|
1339
1336
|
return { valid: false, permissions: {} };
|
|
1340
1337
|
}
|
|
1341
1338
|
permissions[key] = {
|
|
@@ -1345,7 +1342,7 @@ function parseMiniProgramRuntimePermissions(snapshot) {
|
|
|
1345
1342
|
};
|
|
1346
1343
|
continue;
|
|
1347
1344
|
}
|
|
1348
|
-
if (rawEntry.config !== null && rawEntry.config !== undefined && (!isRecord(rawEntry.config) || Object.keys(rawEntry.config).length > 0)) {
|
|
1345
|
+
if (rawEntry.config !== null && rawEntry.config !== undefined && (!isRecord$2(rawEntry.config) || Object.keys(rawEntry.config).length > 0)) {
|
|
1349
1346
|
return { valid: false, permissions: {} };
|
|
1350
1347
|
}
|
|
1351
1348
|
permissions[key] = {
|
|
@@ -1356,10 +1353,13 @@ function parseMiniProgramRuntimePermissions(snapshot) {
|
|
|
1356
1353
|
}
|
|
1357
1354
|
return { valid: true, permissions };
|
|
1358
1355
|
}
|
|
1359
|
-
function isRecord(value) {
|
|
1356
|
+
function isRecord$2(value) {
|
|
1360
1357
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
1361
1358
|
}
|
|
1362
1359
|
|
|
1360
|
+
/** 当前用户信息与登录能力支持的完整 scope 目录(canonical 顺序)。 */
|
|
1361
|
+
const USER_INFO_AUTHORIZATION_SCOPES = ['identity', 'profile', 'steam_account'];
|
|
1362
|
+
|
|
1363
1363
|
exports.AUTH_LOGIN_METHOD = AUTH_LOGIN_METHOD;
|
|
1364
1364
|
exports.CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD = CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD;
|
|
1365
1365
|
exports.CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD = CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD;
|
package/dist/protocol.esm.js
CHANGED
|
@@ -442,7 +442,7 @@ const MINI_PROGRAM_PROTOCOL_CAPABILITIES = [
|
|
|
442
442
|
* @see [parseMiniProgramRuntimePermissions](/reference/symbols/protocol/functions/parseMiniProgramRuntimePermissions) Runtime 权限快照解析器。
|
|
443
443
|
*/
|
|
444
444
|
function isMiniProgramBridgeMessage(value) {
|
|
445
|
-
if (!isRecord$
|
|
445
|
+
if (!isRecord$3(value))
|
|
446
446
|
return false;
|
|
447
447
|
if (value.namespace !== MINI_PROGRAM_MESSAGE_NAMESPACE || (value.version !== 1 && value.version !== 2) || !isNonEmptyString$1(value.nonce)) {
|
|
448
448
|
return false;
|
|
@@ -592,7 +592,7 @@ function isMiniProgramRelativePath(value) {
|
|
|
592
592
|
* @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 可作为 derived path root 的目录代理。
|
|
593
593
|
*/
|
|
594
594
|
function isMiniProgramPathRootRef(value) {
|
|
595
|
-
if (!isRecord$
|
|
595
|
+
if (!isRecord$3(value))
|
|
596
596
|
return false;
|
|
597
597
|
if (value.kind === 'sandbox')
|
|
598
598
|
return hasOnlyKeys(value, ['kind']);
|
|
@@ -658,7 +658,7 @@ function isMiniProgramPathRootRef(value) {
|
|
|
658
658
|
* @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 使用文件引用的公开 I/O 代理。
|
|
659
659
|
*/
|
|
660
660
|
function isMiniProgramFileRef(value) {
|
|
661
|
-
if (!isRecord$
|
|
661
|
+
if (!isRecord$3(value) || value.kind !== 'file')
|
|
662
662
|
return false;
|
|
663
663
|
if (isNonEmptyString$1(value.handleId)) {
|
|
664
664
|
return hasOnlyKeys(value, ['kind', 'handleId']);
|
|
@@ -725,7 +725,7 @@ function isMiniProgramFileRef(value) {
|
|
|
725
725
|
* @see [DirectoryHandle](/reference/symbols/root/interfaces/DirectoryHandle) 使用目录引用的公开路径操作代理。
|
|
726
726
|
*/
|
|
727
727
|
function isMiniProgramDirectoryRef(value) {
|
|
728
|
-
if (!isRecord$
|
|
728
|
+
if (!isRecord$3(value) || value.kind !== 'directory')
|
|
729
729
|
return false;
|
|
730
730
|
if (isNonEmptyString$1(value.handleId)) {
|
|
731
731
|
return hasOnlyKeys(value, ['kind', 'handleId']);
|
|
@@ -799,7 +799,7 @@ function isMiniProgramDirectoryRef(value) {
|
|
|
799
799
|
* @see [SaveFileResult](/reference/symbols/protocol/types/SaveFileResult) save picker 的 direct-ref 文件结果。
|
|
800
800
|
*/
|
|
801
801
|
function isMiniProgramFileDescriptor(value) {
|
|
802
|
-
return (isRecord$
|
|
802
|
+
return (isRecord$3(value) &&
|
|
803
803
|
value.kind === 'file' &&
|
|
804
804
|
isNonEmptyString$1(value.name) &&
|
|
805
805
|
isFileMode(value.mode) &&
|
|
@@ -869,7 +869,7 @@ function isMiniProgramFileDescriptor(value) {
|
|
|
869
869
|
* @see [PickDirectoryResult](/reference/symbols/protocol/types/PickDirectoryResult) picker 的 direct-ref 返回契约。
|
|
870
870
|
*/
|
|
871
871
|
function isMiniProgramDirectoryDescriptor(value) {
|
|
872
|
-
return (isRecord$
|
|
872
|
+
return (isRecord$3(value) &&
|
|
873
873
|
value.kind === 'directory' &&
|
|
874
874
|
isNonEmptyString$1(value.name) &&
|
|
875
875
|
isFileMode(value.mode) &&
|
|
@@ -1048,7 +1048,7 @@ function isMiniProgramByteArray(value) {
|
|
|
1048
1048
|
* @see [FileHandle](/reference/symbols/root/interfaces/FileHandle) 提供 `stat()` 的当前 session 文件代理。
|
|
1049
1049
|
*/
|
|
1050
1050
|
function isMiniProgramFileStat(value) {
|
|
1051
|
-
return (isRecord$
|
|
1051
|
+
return (isRecord$3(value) &&
|
|
1052
1052
|
value.kind === 'file' &&
|
|
1053
1053
|
isNonNegativeSafeInteger(value.size) &&
|
|
1054
1054
|
(value.modifiedAt === undefined || isNonNegativeFiniteNumber(value.modifiedAt)) &&
|
|
@@ -1108,7 +1108,7 @@ function isMiniProgramFileStat(value) {
|
|
|
1108
1108
|
* @see [isMiniProgramBridgeMessage](/reference/symbols/protocol/functions/isMiniProgramBridgeMessage) operation progress envelope 的最低校验。
|
|
1109
1109
|
*/
|
|
1110
1110
|
function isMiniProgramDownloadProgressPayload(value) {
|
|
1111
|
-
if (!isRecord$
|
|
1111
|
+
if (!isRecord$3(value) ||
|
|
1112
1112
|
!isNonNegativeSafeInteger(value.loaded) ||
|
|
1113
1113
|
typeof value.lengthComputable !== 'boolean' ||
|
|
1114
1114
|
!hasOnlyKeys(value, ['loaded', 'total', 'lengthComputable'])) {
|
|
@@ -1119,7 +1119,7 @@ function isMiniProgramDownloadProgressPayload(value) {
|
|
|
1119
1119
|
return isNonNegativeSafeInteger(value.total) && value.loaded <= value.total;
|
|
1120
1120
|
}
|
|
1121
1121
|
function isMiniProgramCompanionPrepareProgress(value) {
|
|
1122
|
-
if (!isRecord$
|
|
1122
|
+
if (!isRecord$3(value))
|
|
1123
1123
|
return false;
|
|
1124
1124
|
if (value.phase === 'downloading') {
|
|
1125
1125
|
return (isNonNegativeSafeInteger(value.loaded) &&
|
|
@@ -1137,10 +1137,10 @@ function isMiniProgramOperationProgressPayload(value) {
|
|
|
1137
1137
|
return isMiniProgramDownloadProgressPayload(value) || isMiniProgramCompanionPrepareProgress(value);
|
|
1138
1138
|
}
|
|
1139
1139
|
function isSDKHandshakePayload(value) {
|
|
1140
|
-
return isRecord$
|
|
1140
|
+
return isRecord$3(value) && isNonEmptyString$1(value.href) && typeof value.userAgent === 'string' && isNonEmptyString$1(value.sdkVersion);
|
|
1141
1141
|
}
|
|
1142
1142
|
function isBridgeError(value) {
|
|
1143
|
-
return isRecord$
|
|
1143
|
+
return isRecord$3(value) && isNonEmptyString$1(value.code) && typeof value.message === 'string';
|
|
1144
1144
|
}
|
|
1145
1145
|
function isFileMode(value) {
|
|
1146
1146
|
return value === 'read' || value === 'readwrite';
|
|
@@ -1158,13 +1158,10 @@ function hasOnlyKeys(value, allowedKeys) {
|
|
|
1158
1158
|
const allowed = new Set(allowedKeys);
|
|
1159
1159
|
return Object.keys(value).every((key) => allowed.has(key));
|
|
1160
1160
|
}
|
|
1161
|
-
function isRecord$
|
|
1161
|
+
function isRecord$3(value) {
|
|
1162
1162
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
1163
1163
|
}
|
|
1164
1164
|
|
|
1165
|
-
/** 当前用户信息与登录能力支持的完整 scope 目录(canonical 顺序)。 */
|
|
1166
|
-
const USER_INFO_AUTHORIZATION_SCOPES = ['identity', 'profile', 'steam_account'];
|
|
1167
|
-
|
|
1168
1165
|
const MINI_PROGRAM_PERMISSION_KEYS = [
|
|
1169
1166
|
'userInfo',
|
|
1170
1167
|
'steamLibrary',
|
|
@@ -1308,7 +1305,7 @@ function isManagedMiniProgramRuntimePermissionKey(key) {
|
|
|
1308
1305
|
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/guide/permissions | 权限声明}
|
|
1309
1306
|
*/
|
|
1310
1307
|
function parseMiniProgramRuntimePermissions(snapshot) {
|
|
1311
|
-
if (!isRecord(snapshot) || snapshot.schema_version !== 1 || !Array.isArray(snapshot.entries)) {
|
|
1308
|
+
if (!isRecord$2(snapshot) || snapshot.schema_version !== 1 || !Array.isArray(snapshot.entries)) {
|
|
1312
1309
|
return { valid: false, permissions: {} };
|
|
1313
1310
|
}
|
|
1314
1311
|
if (snapshot.revision !== undefined && (typeof snapshot.revision !== 'number' || !Number.isInteger(snapshot.revision) || snapshot.revision < 0)) {
|
|
@@ -1317,7 +1314,7 @@ function parseMiniProgramRuntimePermissions(snapshot) {
|
|
|
1317
1314
|
const seenKeys = new Set();
|
|
1318
1315
|
const permissions = {};
|
|
1319
1316
|
for (const rawEntry of snapshot.entries) {
|
|
1320
|
-
if (!isRecord(rawEntry) || typeof rawEntry.key !== 'string' || !rawEntry.key.trim()) {
|
|
1317
|
+
if (!isRecord$2(rawEntry) || typeof rawEntry.key !== 'string' || !rawEntry.key.trim()) {
|
|
1321
1318
|
return { valid: false, permissions: {} };
|
|
1322
1319
|
}
|
|
1323
1320
|
const inputKey = rawEntry.key.trim();
|
|
@@ -1333,7 +1330,7 @@ function parseMiniProgramRuntimePermissions(snapshot) {
|
|
|
1333
1330
|
}
|
|
1334
1331
|
if (key === 'network') {
|
|
1335
1332
|
const config = rawEntry.config;
|
|
1336
|
-
if (!isRecord(config) || typeof config.useOfficialDomain !== 'boolean') {
|
|
1333
|
+
if (!isRecord$2(config) || typeof config.useOfficialDomain !== 'boolean') {
|
|
1337
1334
|
return { valid: false, permissions: {} };
|
|
1338
1335
|
}
|
|
1339
1336
|
permissions[key] = {
|
|
@@ -1343,7 +1340,7 @@ function parseMiniProgramRuntimePermissions(snapshot) {
|
|
|
1343
1340
|
};
|
|
1344
1341
|
continue;
|
|
1345
1342
|
}
|
|
1346
|
-
if (rawEntry.config !== null && rawEntry.config !== undefined && (!isRecord(rawEntry.config) || Object.keys(rawEntry.config).length > 0)) {
|
|
1343
|
+
if (rawEntry.config !== null && rawEntry.config !== undefined && (!isRecord$2(rawEntry.config) || Object.keys(rawEntry.config).length > 0)) {
|
|
1347
1344
|
return { valid: false, permissions: {} };
|
|
1348
1345
|
}
|
|
1349
1346
|
permissions[key] = {
|
|
@@ -1354,8 +1351,11 @@ function parseMiniProgramRuntimePermissions(snapshot) {
|
|
|
1354
1351
|
}
|
|
1355
1352
|
return { valid: true, permissions };
|
|
1356
1353
|
}
|
|
1357
|
-
function isRecord(value) {
|
|
1354
|
+
function isRecord$2(value) {
|
|
1358
1355
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
1359
1356
|
}
|
|
1360
1357
|
|
|
1358
|
+
/** 当前用户信息与登录能力支持的完整 scope 目录(canonical 顺序)。 */
|
|
1359
|
+
const USER_INFO_AUTHORIZATION_SCOPES = ['identity', 'profile', 'steam_account'];
|
|
1360
|
+
|
|
1361
1361
|
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, 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_OPERATION_PROGRESS_METHOD, 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, isMiniProgramDirectoryDescriptor, isMiniProgramDirectoryRef, isMiniProgramDownloadProgressPayload, isMiniProgramFileDescriptor, isMiniProgramFileRef, isMiniProgramFileStat, isMiniProgramFileSystemEntityDescriptor, isMiniProgramPathRootRef, isMiniProgramRelativePath, parseMiniProgramRuntimePermissions };
|
package/dist/vite.cjs.js
CHANGED
|
@@ -2948,7 +2948,7 @@ async function ensureBasicInfoDirectory(rootPath, relative) {
|
|
|
2948
2948
|
/** 构建时替换为当前发布包的实际版本。 */
|
|
2949
2949
|
const HB_SDK_VERSION = typeof undefined === 'string'
|
|
2950
2950
|
? undefined
|
|
2951
|
-
: '0.8.3-alpha.
|
|
2951
|
+
: '0.8.3-alpha.4';
|
|
2952
2952
|
|
|
2953
2953
|
/**
|
|
2954
2954
|
* iframe 与调试台页面的开发期 console 捕获转发。
|
|
@@ -3377,8 +3377,6 @@ const MINI_PROGRAM_MESSAGE_VERSION = 2;
|
|
|
3377
3377
|
* 并在 origin 可以固定且协议模式要求时校验 origin。
|
|
3378
3378
|
*/
|
|
3379
3379
|
const MINI_PROGRAM_BRIDGE_NONCE_PARAM = 'hb_mini_bridge_nonce';
|
|
3380
|
-
/** Companion alias 的跨构建、Runtime 与 Host 规范。 */
|
|
3381
|
-
const COMPANION_ALIAS_PATTERN = /^[a-z][a-z0-9-]{0,31}$/;
|
|
3382
3380
|
|
|
3383
3381
|
const MINI_PROGRAM_PERMISSION_KEYS = [
|
|
3384
3382
|
'userInfo',
|
|
@@ -3529,6 +3527,8 @@ const MINI_PROGRAM_PERMISSION_CATALOG = [
|
|
|
3529
3527
|
new Set(MINI_PROGRAM_PERMISSION_KEYS);
|
|
3530
3528
|
|
|
3531
3529
|
new Set(MINI_PROGRAM_PERMISSION_KEYS);
|
|
3530
|
+
/** Companion alias 的跨构建、Runtime 与 Host 规范。 */
|
|
3531
|
+
const COMPANION_ALIAS_PATTERN = /^[a-z][a-z0-9-]{0,31}$/;
|
|
3532
3532
|
|
|
3533
3533
|
const MINIAPP_PERMISSION_KEYS = MINI_PROGRAM_PERMISSION_KEYS;
|
|
3534
3534
|
function parseMiniappPermissions(value, options) {
|
package/dist/vite.esm.js
CHANGED
|
@@ -2945,7 +2945,7 @@ async function ensureBasicInfoDirectory(rootPath, relative) {
|
|
|
2945
2945
|
/** 构建时替换为当前发布包的实际版本。 */
|
|
2946
2946
|
const HB_SDK_VERSION = typeof undefined === 'string'
|
|
2947
2947
|
? undefined
|
|
2948
|
-
: '0.8.3-alpha.
|
|
2948
|
+
: '0.8.3-alpha.4';
|
|
2949
2949
|
|
|
2950
2950
|
/**
|
|
2951
2951
|
* iframe 与调试台页面的开发期 console 捕获转发。
|
|
@@ -3374,8 +3374,6 @@ const MINI_PROGRAM_MESSAGE_VERSION = 2;
|
|
|
3374
3374
|
* 并在 origin 可以固定且协议模式要求时校验 origin。
|
|
3375
3375
|
*/
|
|
3376
3376
|
const MINI_PROGRAM_BRIDGE_NONCE_PARAM = 'hb_mini_bridge_nonce';
|
|
3377
|
-
/** Companion alias 的跨构建、Runtime 与 Host 规范。 */
|
|
3378
|
-
const COMPANION_ALIAS_PATTERN = /^[a-z][a-z0-9-]{0,31}$/;
|
|
3379
3377
|
|
|
3380
3378
|
const MINI_PROGRAM_PERMISSION_KEYS = [
|
|
3381
3379
|
'userInfo',
|
|
@@ -3526,6 +3524,8 @@ const MINI_PROGRAM_PERMISSION_CATALOG = [
|
|
|
3526
3524
|
new Set(MINI_PROGRAM_PERMISSION_KEYS);
|
|
3527
3525
|
|
|
3528
3526
|
new Set(MINI_PROGRAM_PERMISSION_KEYS);
|
|
3527
|
+
/** Companion alias 的跨构建、Runtime 与 Host 规范。 */
|
|
3528
|
+
const COMPANION_ALIAS_PATTERN = /^[a-z][a-z0-9-]{0,31}$/;
|
|
3529
3529
|
|
|
3530
3530
|
const MINIAPP_PERMISSION_KEYS = MINI_PROGRAM_PERMISSION_KEYS;
|
|
3531
3531
|
function parseMiniappPermissions(value, options) {
|
|
@@ -49,7 +49,7 @@ Browser Dev Host 由 SDK CLI 提供 Vue 3 调试台并注入 `@heybox/hb-sdk-run
|
|
|
49
49
|
|
|
50
50
|
调试台的 iframe 在整个会话中保持同一个 DOM 节点。iPhone 16 Pro Max(`440 x 956`)和 Pixel 9 Pro(`410 x 914`)预设只投影设备 metrics、外框、状态栏和安全区,切换时不得触发 iframe navigation 或 Runtime 重启。授权与操作弹窗、Toast、Loading 和振动反馈由 Host presentation controller 渲染在设备预览的 overlay layer 内。
|
|
51
51
|
|
|
52
|
-
调试台不提供权限修改、
|
|
52
|
+
调试台不提供权限修改、Browser/Mobile 页签或重复二维码入口。线上批准基线与 CLI 根据声明生成的本地 grant 分开传输,Browser Fake 允许白名单内临时权限并保留线上未批准提示;唯一的 Mobile 二维码入口位于调试台右上角,并复用既有 LAN 网卡与 Dev Session 生命周期。
|
|
53
53
|
|
|
54
54
|
## 新 PC 页面通道合同与窗口几何
|
|
55
55
|
|
|
@@ -89,13 +89,15 @@ Storage 面板只通过 `runtime.diagnostics.storage?.getSnapshot()` 读取 Runt
|
|
|
89
89
|
| Mobile Release | 当前稳定客户端继续把原生 `mini_url` launch 交给详情 H5/Native Host;二维码保持 HTTPS `open_inapp` 与 `heybox://` `openWindow`,但短链这一跳是普通 H5。跳转页打开完整 sandbox query(`mini_url`、身份、启动票和 LAN Dev Context)后延迟 `closeWindow`。真机 WebView 基址是 `http://127.0.0.1` 详情页且 HTML 来自线上缓存。 | 生成真机二维码前仍需 CLI 登录、项目绑定和有效 Dev Context;这些条件不阻断 Browser 调试台启动。 |
|
|
90
90
|
| Mobile Debug/Ad-Hoc H5 | `dev_context_url` 是可选的 Dev Session 输入;Runtime 权限和本地 network proxy 仅在读取成功时采用。 | Dev Context 缺失、过期、不可达或校验失败时记录脱敏诊断,继续使用原生 Host 的账号、网络与远端权限。 |
|
|
91
91
|
|
|
92
|
-
`DevSession`
|
|
92
|
+
`DevSession` 同时携带本地声明、独立的 `local_dev_grant` 与 context revision,不会反向修改线上配置。真实 H5 必须先以启动票取得 canonical identity,再将可信线上基线与声明及严格解析的 grant 合成普通 Runtime 快照;没有有效票据或非法 grant 时不临时放权。临时授权仅允许 `network` / `companion`,不包含 `useOfficialDomain`,且每次启动由用户确认。
|
|
93
|
+
|
|
94
|
+
Node 负责 CLI-owned stable context endpoint、短跳转 registry 和 Launch Reference 生命周期;H5 负责持续验证 CLI lease,不能用 iframe heartbeat 代替。连续失联约 30 秒、到期、session/revision 或 Companion 摘要变化时销毁旧 Runtime;重连重新确认和创建实例。票据字符串轮换不改变授权指纹。线上权限快照在 Runtime 内不可变,临时权限来源不传给 iframe。Android、iOS 与新 PC 原生 adapter 沿用既有 operation;真实 PC Companion 还必须有私有 local-dev lease capability,缺能力继续 fail closed。
|
|
93
95
|
|
|
94
96
|
多网卡环境中,CLI 从可用私有 IPv4 网卡派生候选 `mini_url`,并优先展示与 HMR 默认地址匹配的候选。用户切换网卡后,`mini_url` 和 Dev Context URL 都投影到同一选中地址。`dev_context_url` 必须嵌套在 `heybox-mini-dev://sandbox` 的 query 中,不能误放到最外层 `openWindow` payload。
|
|
95
97
|
|
|
96
98
|
## Mobile 短跳转安全边界
|
|
97
99
|
|
|
98
|
-
默认 Mobile 二维码编码现有 `https://api.xiaoheihe.cn/open_inapp/#heybox://...` 启动契约,但短链这一跳是普通 H5 `openWindow`(不带 `mini_program`),`webview.url` 只放局域网短链 `http://<lan-ip>:<port>/l/<token>`。短链返回 HTML 跳转页:先 `location.href` 打开完整 `heybox-mini-dev://sandbox` 协议,约 500ms 后再发 `closeWindow` 关掉中间页。不要对自定义协议做 HTTP 302,WebView 会把它当成相对路径。真机 WebView 基址是 `http://127.0.0.1/tools/user_miniprogram/detail`,HTML
|
|
100
|
+
默认 Mobile 二维码编码现有 `https://api.xiaoheihe.cn/open_inapp/#heybox://...` 启动契约,但短链这一跳是普通 H5 `openWindow`(不带 `mini_program`),`webview.url` 只放局域网短链 `http://<lan-ip>:<port>/l/<token>`。短链返回 HTML 跳转页:先 `location.href` 打开完整 `heybox-mini-dev://sandbox` 协议,约 500ms 后再发 `closeWindow` 关掉中间页。不要对自定义协议做 HTTP 302,WebView 会把它当成相对路径。真机 WebView 基址是 `http://127.0.0.1/tools/user_miniprogram/detail`,HTML 来自线上详情页缓存,因此最终协议携带 `mini_url`、`mini_program_id`、`local_dev_launch_token`、`sdk_version` 和稳定 CLI-owned `dev_context_url`;二维码短期 token 轮换不会让已打开页面失效。`launch.json` 仍可作为同分支详情 Host 的补充发现。Dev Context 过期或校验失败时记录脱敏诊断,继续使用原生网络与已发现的权限。
|
|
99
101
|
|
|
100
102
|
`launch.json` 和短链都只减少二维码编码长度,不是认证、加密、签名或 HMAC:
|
|
101
103
|
|