@heybox/hb-sdk 0.8.3-alpha.6 → 0.8.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/CHANGELOG.md +60 -1
- package/README.md +24 -4
- package/dist/cli-chunks/{build-BRLdyZ76.cjs → build-BMLuhvh9.cjs} +5 -5
- package/dist/cli-chunks/{context-CbiL9O6w.cjs → context-BoNshqZO.cjs} +2 -2
- package/dist/cli-chunks/{create-B7kL5QkJ.cjs → create-rUrkd162.cjs} +1 -1
- package/dist/cli-chunks/{dev-DvH2_I1Y.cjs → dev-BRx7xYck.cjs} +74 -19
- package/dist/cli-chunks/{doctor-DMqILTR4.cjs → doctor-DOCFSRjQ.cjs} +1 -1
- package/dist/cli-chunks/{index-BVylxPGU.cjs → index-BrJ7364Q.cjs} +15 -15
- package/dist/cli-chunks/{index-D8AT5s4x.cjs → index-CbmIweP8.cjs} +2 -2
- package/dist/cli-chunks/{index.esm-Cwh5ei9-.cjs → index.esm-CGFTxGm6.cjs} +7 -7
- package/dist/cli-chunks/{login-BHAg3-HY.cjs → login-DxtSW2QP.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-AGDPqVSX.cjs → project-vite-D9tmGT59.cjs} +1 -1
- package/dist/cli-chunks/{remote-jgmCl_OP.cjs → remote-DuiJdetu.cjs} +7 -7
- package/dist/cli-chunks/{runtime-gate-DjTZ46xz.cjs → runtime-gate-CDh8XjRx.cjs} +1 -1
- package/dist/cli-chunks/{runtime-permission-env-Bjlpv6zh.cjs → runtime-permission-env-D2pJlHds.cjs} +1 -1
- package/dist/cli-chunks/{session-DnS1mH8i.cjs → session-BAw6iix6.cjs} +1 -1
- package/dist/cli-chunks/{skill-CUnigEtN.cjs → skill-Cu4QVawo.cjs} +2 -2
- package/dist/cli-chunks/{version-CNl684Yw.cjs → version-BuPFCnrl.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-CE4o5TF5.js +102 -0
- package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-38leCDIj.js → desktop-app-launch-DldUhS5Y.js} +1 -1
- package/dist/devtools/browser-dev-host/assets/index-0Ac39Njs.css +1 -0
- package/dist/devtools/browser-dev-host/assets/{index-Dui3LdcO.js → index-DUhquRwB.js} +4 -4
- package/dist/devtools/browser-dev-host/index.html +3 -3
- package/dist/index.cjs.js +549 -8
- package/dist/index.esm.js +549 -8
- package/dist/vite.cjs.js +69 -7
- package/dist/vite.esm.js +69 -7
- package/docs/device-logs.md +2 -2
- package/docs/runtime-host-migration.md +7 -5
- package/package.json +6 -6
- package/skill/skill.json +4 -4
- package/types/index.d.ts +1 -1
- package/types/modules/navigation/app-pages/index.d.ts +1 -1
- package/types/modules/navigation/app-pages/types.d.ts +23 -5
- package/types/modules/navigation/index.d.ts +21 -12
- package/types/modules/share/extra.d.ts +2 -0
- package/types/modules/share/types.d.ts +1 -0
- package/types/protocol.d.ts +1 -1
- package/types/vite/html-policy.d.ts +1 -0
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-D2fH-vdb.js +0 -101
- package/dist/devtools/browser-dev-host/assets/index-BrXEMo2-.css +0 -1
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
|
|
2951
|
+
: '0.8.3';
|
|
2952
2952
|
|
|
2953
2953
|
/**
|
|
2954
2954
|
* iframe 与调试台页面的开发期 console 捕获转发。
|
|
@@ -3229,7 +3229,7 @@ function deviceLogBootstrap(token) {
|
|
|
3229
3229
|
return `<script>(function(){if(window.__hb_sdk_device_logs_installed__)return;
|
|
3230
3230
|
window.__hb_sdk_device_logs_installed__=true;
|
|
3231
3231
|
window.__hb_sdk_mini_dev_console_installed__=true;
|
|
3232
|
-
var endpoint='${DEVICE_LOG_PATH}',credential='${token}',id='',queue=[],seq=0,busy=false,dropped=0;
|
|
3232
|
+
var endpoint='${DEVICE_LOG_PATH}',credential='${token}',id='',queue=[],seq=0,busy=false,dropped=0,retryDelay=1000;
|
|
3233
3233
|
var registrationId=Array.from(crypto.getRandomValues(new Uint8Array(16)),function(n){return n.toString(16).padStart(2,'0')}).join('');
|
|
3234
3234
|
var send=window.fetch.bind(window);
|
|
3235
3235
|
var sandboxResult;
|
|
@@ -3251,19 +3251,21 @@ window.addEventListener('error',function(e){add('error',[e.message])});
|
|
|
3251
3251
|
window.addEventListener('unhandledrejection',function(e){add('error',[e.reason])});
|
|
3252
3252
|
async function flush(){if(busy)return;
|
|
3253
3253
|
busy=true;
|
|
3254
|
+
var success=false;
|
|
3254
3255
|
try{if(!id){var ua=navigator.userAgent;
|
|
3255
3256
|
var platform=window.name==='__hb_sdk_mini_dev__'?'Browser':/Android/i.test(ua)?'Android':/iPhone|iPad/i.test(ua)?'iOS':/Windows/i.test(ua)?'Windows':/Mac/i.test(ua)?'macOS':'Browser';
|
|
3256
3257
|
var r=await send(endpoint,{method:'POST',headers:{'content-type':'application/json','x-hb-log-token':credential},body:JSON.stringify({register:true,platform:platform,registrationId:registrationId}),signal:AbortSignal.timeout(5000)});
|
|
3257
|
-
if(!r.ok)
|
|
3258
|
+
if(!r.ok)throw 0;
|
|
3258
3259
|
var d=await r.json();
|
|
3259
3260
|
id=d.id;
|
|
3260
3261
|
credential=d.token}if(dropped){add('warn',['日志缓冲已丢弃 '+dropped+' 条']);
|
|
3261
3262
|
dropped=0}var batch=queue.slice(0,50);
|
|
3262
3263
|
while(batch.length>1&&new TextEncoder().encode(JSON.stringify(batch)).length>48000)batch.pop();
|
|
3263
3264
|
var result=await send(endpoint,{method:'POST',headers:{'content-type':'application/json','x-hb-log-token':credential},body:JSON.stringify({id:id,logs:batch,sandboxResult:sandboxResult}),signal:AbortSignal.timeout(5000)});
|
|
3264
|
-
if(result.ok)
|
|
3265
|
+
if(!result.ok)throw 0;
|
|
3266
|
+
var ack=await result.json();sandboxResult=undefined;
|
|
3265
3267
|
if(ack.sandboxRequest){try{var entries=await window.__hbSdkSandboxList(ack.sandboxRequest.path);sandboxResult={requestId:ack.sandboxRequest.requestId,entries:entries.slice(0,200),truncated:entries.length>200}}catch(e){sandboxResult={requestId:ack.sandboxRequest.requestId,error:true}}}
|
|
3266
|
-
queue=queue.filter(function(l){return l.sequence>ack.sequence})}
|
|
3268
|
+
queue=queue.filter(function(l){return l.sequence>ack.sequence});success=true}catch(e){}finally{retryDelay=success?1000:Math.min(retryDelay*2,30000);busy=false;setTimeout(flush,retryDelay)}}
|
|
3267
3269
|
flush()})();
|
|
3268
3270
|
</script>`;
|
|
3269
3271
|
}
|
|
@@ -13101,7 +13103,13 @@ function enforceMiniappHtmlPolicy(html, options = {}) {
|
|
|
13101
13103
|
if (options.skipPlatformCsp) {
|
|
13102
13104
|
return serialize(document);
|
|
13103
13105
|
}
|
|
13104
|
-
const
|
|
13106
|
+
const connectSources = Array.from(new Set([
|
|
13107
|
+
options.hmrWebSocketUrl,
|
|
13108
|
+
...(options.deviceLogUploadUrls ?? []),
|
|
13109
|
+
].filter((source) => Boolean(source))));
|
|
13110
|
+
const content = connectSources.length > 0
|
|
13111
|
+
? PRODUCTION_CSP.replace("connect-src 'none'", `connect-src ${connectSources.join(' ')}`)
|
|
13112
|
+
: PRODUCTION_CSP;
|
|
13105
13113
|
head.childNodes.unshift({
|
|
13106
13114
|
nodeName: 'meta',
|
|
13107
13115
|
tagName: 'meta',
|
|
@@ -13428,6 +13436,8 @@ function miniappManifest() {
|
|
|
13428
13436
|
let outDir = 'dist';
|
|
13429
13437
|
let command = 'build';
|
|
13430
13438
|
let hmrWebSocketUrl;
|
|
13439
|
+
let configuredDeviceLogUploadUrls = [];
|
|
13440
|
+
let devServer;
|
|
13431
13441
|
/** 构建链路中更早的失败原因;closeBundle 不得再用产物校验覆盖它。 */
|
|
13432
13442
|
let priorBuildError;
|
|
13433
13443
|
return {
|
|
@@ -13457,8 +13467,10 @@ function miniappManifest() {
|
|
|
13457
13467
|
outDir = resolved.build.outDir;
|
|
13458
13468
|
command = resolved.command;
|
|
13459
13469
|
hmrWebSocketUrl = resolveHmrWebSocketUrl(resolved);
|
|
13470
|
+
configuredDeviceLogUploadUrls = resolveConfiguredDeviceLogUploadUrls(resolved);
|
|
13460
13471
|
},
|
|
13461
13472
|
configureServer(server) {
|
|
13473
|
+
devServer = server;
|
|
13462
13474
|
// 开发期只对「仍是旧模板移动端默认」的声明做非阻断提示。声明缺失或非法一律交由
|
|
13463
13475
|
// build / remote deploy 链路拒绝,因此这里只容忍读取阶段的异常,保持 hb-sdk dev
|
|
13464
13476
|
// 既有的启动语义;warn 调用留在 try 之外,避免把插件上下文错误一起吞掉。
|
|
@@ -13706,7 +13718,15 @@ function miniappManifest() {
|
|
|
13706
13718
|
},
|
|
13707
13719
|
transformIndexHtml(html) {
|
|
13708
13720
|
const enforced = enforceMiniappHtmlPolicy(html, {
|
|
13709
|
-
...(command === 'serve'
|
|
13721
|
+
...(command === 'serve'
|
|
13722
|
+
? {
|
|
13723
|
+
deviceLogUploadUrls: Array.from(new Set([
|
|
13724
|
+
...configuredDeviceLogUploadUrls,
|
|
13725
|
+
...resolveViteDeviceLogUploadUrls(devServer?.resolvedUrls),
|
|
13726
|
+
])),
|
|
13727
|
+
hmrWebSocketUrl,
|
|
13728
|
+
}
|
|
13729
|
+
: {}),
|
|
13710
13730
|
skipPlatformCsp,
|
|
13711
13731
|
});
|
|
13712
13732
|
return command === 'serve'
|
|
@@ -13901,6 +13921,48 @@ function resolveHmrWebSocketUrl(resolved) {
|
|
|
13901
13921
|
const port = options.clientPort ?? options.port ?? resolved.server.port;
|
|
13902
13922
|
return `${protocol}://${host}${port ? `:${port}` : ''}`;
|
|
13903
13923
|
}
|
|
13924
|
+
function resolveConfiguredDeviceLogUploadUrls(resolved) {
|
|
13925
|
+
if (resolved.command !== 'serve')
|
|
13926
|
+
return [];
|
|
13927
|
+
const protocol = resolved.server.https ? 'https' : 'http';
|
|
13928
|
+
const configuredHost = resolved.server.host;
|
|
13929
|
+
const hosts = new Set();
|
|
13930
|
+
if (typeof configuredHost === 'string' && configuredHost !== '0.0.0.0' && configuredHost !== '::') {
|
|
13931
|
+
hosts.add(configuredHost);
|
|
13932
|
+
}
|
|
13933
|
+
else {
|
|
13934
|
+
hosts.add('127.0.0.1');
|
|
13935
|
+
}
|
|
13936
|
+
return Array.from(hosts, host => createDeviceLogUploadUrl(protocol, host, resolved.server.port)).filter((url) => Boolean(url));
|
|
13937
|
+
}
|
|
13938
|
+
function resolveViteDeviceLogUploadUrls(resolvedUrls) {
|
|
13939
|
+
if (!resolvedUrls)
|
|
13940
|
+
return [];
|
|
13941
|
+
return Array.from(new Set([...resolvedUrls.local, ...resolvedUrls.network].map(url => {
|
|
13942
|
+
try {
|
|
13943
|
+
const endpoint = new URL(DEVICE_LOG_PATH, url);
|
|
13944
|
+
if (endpoint.protocol !== 'http:' && endpoint.protocol !== 'https:')
|
|
13945
|
+
return undefined;
|
|
13946
|
+
endpoint.username = '';
|
|
13947
|
+
endpoint.password = '';
|
|
13948
|
+
endpoint.search = '';
|
|
13949
|
+
endpoint.hash = '';
|
|
13950
|
+
return endpoint.toString();
|
|
13951
|
+
}
|
|
13952
|
+
catch {
|
|
13953
|
+
return undefined;
|
|
13954
|
+
}
|
|
13955
|
+
}).filter((url) => Boolean(url))));
|
|
13956
|
+
}
|
|
13957
|
+
function createDeviceLogUploadUrl(protocol, host, port) {
|
|
13958
|
+
try {
|
|
13959
|
+
const normalizedHost = host.startsWith('[') || !host.includes(':') ? host : `[${host}]`;
|
|
13960
|
+
return new URL(DEVICE_LOG_PATH, `${protocol}://${normalizedHost}${port === undefined ? '' : `:${port}`}`).toString();
|
|
13961
|
+
}
|
|
13962
|
+
catch {
|
|
13963
|
+
return undefined;
|
|
13964
|
+
}
|
|
13965
|
+
}
|
|
13904
13966
|
|
|
13905
13967
|
exports.HB_SDK_COMPANION_ARTIFACT_ACCESS_TOKEN_ENV = HB_SDK_COMPANION_ARTIFACT_ACCESS_TOKEN_ENV;
|
|
13906
13968
|
exports.HB_SDK_MINI_PROGRAM_MANIFEST_ACCESS_TOKEN_ENV = HB_SDK_MINI_PROGRAM_MANIFEST_ACCESS_TOKEN_ENV;
|
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
|
|
2948
|
+
: '0.8.3';
|
|
2949
2949
|
|
|
2950
2950
|
/**
|
|
2951
2951
|
* iframe 与调试台页面的开发期 console 捕获转发。
|
|
@@ -3226,7 +3226,7 @@ function deviceLogBootstrap(token) {
|
|
|
3226
3226
|
return `<script>(function(){if(window.__hb_sdk_device_logs_installed__)return;
|
|
3227
3227
|
window.__hb_sdk_device_logs_installed__=true;
|
|
3228
3228
|
window.__hb_sdk_mini_dev_console_installed__=true;
|
|
3229
|
-
var endpoint='${DEVICE_LOG_PATH}',credential='${token}',id='',queue=[],seq=0,busy=false,dropped=0;
|
|
3229
|
+
var endpoint='${DEVICE_LOG_PATH}',credential='${token}',id='',queue=[],seq=0,busy=false,dropped=0,retryDelay=1000;
|
|
3230
3230
|
var registrationId=Array.from(crypto.getRandomValues(new Uint8Array(16)),function(n){return n.toString(16).padStart(2,'0')}).join('');
|
|
3231
3231
|
var send=window.fetch.bind(window);
|
|
3232
3232
|
var sandboxResult;
|
|
@@ -3248,19 +3248,21 @@ window.addEventListener('error',function(e){add('error',[e.message])});
|
|
|
3248
3248
|
window.addEventListener('unhandledrejection',function(e){add('error',[e.reason])});
|
|
3249
3249
|
async function flush(){if(busy)return;
|
|
3250
3250
|
busy=true;
|
|
3251
|
+
var success=false;
|
|
3251
3252
|
try{if(!id){var ua=navigator.userAgent;
|
|
3252
3253
|
var platform=window.name==='__hb_sdk_mini_dev__'?'Browser':/Android/i.test(ua)?'Android':/iPhone|iPad/i.test(ua)?'iOS':/Windows/i.test(ua)?'Windows':/Mac/i.test(ua)?'macOS':'Browser';
|
|
3253
3254
|
var r=await send(endpoint,{method:'POST',headers:{'content-type':'application/json','x-hb-log-token':credential},body:JSON.stringify({register:true,platform:platform,registrationId:registrationId}),signal:AbortSignal.timeout(5000)});
|
|
3254
|
-
if(!r.ok)
|
|
3255
|
+
if(!r.ok)throw 0;
|
|
3255
3256
|
var d=await r.json();
|
|
3256
3257
|
id=d.id;
|
|
3257
3258
|
credential=d.token}if(dropped){add('warn',['日志缓冲已丢弃 '+dropped+' 条']);
|
|
3258
3259
|
dropped=0}var batch=queue.slice(0,50);
|
|
3259
3260
|
while(batch.length>1&&new TextEncoder().encode(JSON.stringify(batch)).length>48000)batch.pop();
|
|
3260
3261
|
var result=await send(endpoint,{method:'POST',headers:{'content-type':'application/json','x-hb-log-token':credential},body:JSON.stringify({id:id,logs:batch,sandboxResult:sandboxResult}),signal:AbortSignal.timeout(5000)});
|
|
3261
|
-
if(result.ok)
|
|
3262
|
+
if(!result.ok)throw 0;
|
|
3263
|
+
var ack=await result.json();sandboxResult=undefined;
|
|
3262
3264
|
if(ack.sandboxRequest){try{var entries=await window.__hbSdkSandboxList(ack.sandboxRequest.path);sandboxResult={requestId:ack.sandboxRequest.requestId,entries:entries.slice(0,200),truncated:entries.length>200}}catch(e){sandboxResult={requestId:ack.sandboxRequest.requestId,error:true}}}
|
|
3263
|
-
queue=queue.filter(function(l){return l.sequence>ack.sequence})}
|
|
3265
|
+
queue=queue.filter(function(l){return l.sequence>ack.sequence});success=true}catch(e){}finally{retryDelay=success?1000:Math.min(retryDelay*2,30000);busy=false;setTimeout(flush,retryDelay)}}
|
|
3264
3266
|
flush()})();
|
|
3265
3267
|
</script>`;
|
|
3266
3268
|
}
|
|
@@ -13098,7 +13100,13 @@ function enforceMiniappHtmlPolicy(html, options = {}) {
|
|
|
13098
13100
|
if (options.skipPlatformCsp) {
|
|
13099
13101
|
return serialize(document);
|
|
13100
13102
|
}
|
|
13101
|
-
const
|
|
13103
|
+
const connectSources = Array.from(new Set([
|
|
13104
|
+
options.hmrWebSocketUrl,
|
|
13105
|
+
...(options.deviceLogUploadUrls ?? []),
|
|
13106
|
+
].filter((source) => Boolean(source))));
|
|
13107
|
+
const content = connectSources.length > 0
|
|
13108
|
+
? PRODUCTION_CSP.replace("connect-src 'none'", `connect-src ${connectSources.join(' ')}`)
|
|
13109
|
+
: PRODUCTION_CSP;
|
|
13102
13110
|
head.childNodes.unshift({
|
|
13103
13111
|
nodeName: 'meta',
|
|
13104
13112
|
tagName: 'meta',
|
|
@@ -13425,6 +13433,8 @@ function miniappManifest() {
|
|
|
13425
13433
|
let outDir = 'dist';
|
|
13426
13434
|
let command = 'build';
|
|
13427
13435
|
let hmrWebSocketUrl;
|
|
13436
|
+
let configuredDeviceLogUploadUrls = [];
|
|
13437
|
+
let devServer;
|
|
13428
13438
|
/** 构建链路中更早的失败原因;closeBundle 不得再用产物校验覆盖它。 */
|
|
13429
13439
|
let priorBuildError;
|
|
13430
13440
|
return {
|
|
@@ -13454,8 +13464,10 @@ function miniappManifest() {
|
|
|
13454
13464
|
outDir = resolved.build.outDir;
|
|
13455
13465
|
command = resolved.command;
|
|
13456
13466
|
hmrWebSocketUrl = resolveHmrWebSocketUrl(resolved);
|
|
13467
|
+
configuredDeviceLogUploadUrls = resolveConfiguredDeviceLogUploadUrls(resolved);
|
|
13457
13468
|
},
|
|
13458
13469
|
configureServer(server) {
|
|
13470
|
+
devServer = server;
|
|
13459
13471
|
// 开发期只对「仍是旧模板移动端默认」的声明做非阻断提示。声明缺失或非法一律交由
|
|
13460
13472
|
// build / remote deploy 链路拒绝,因此这里只容忍读取阶段的异常,保持 hb-sdk dev
|
|
13461
13473
|
// 既有的启动语义;warn 调用留在 try 之外,避免把插件上下文错误一起吞掉。
|
|
@@ -13703,7 +13715,15 @@ function miniappManifest() {
|
|
|
13703
13715
|
},
|
|
13704
13716
|
transformIndexHtml(html) {
|
|
13705
13717
|
const enforced = enforceMiniappHtmlPolicy(html, {
|
|
13706
|
-
...(command === 'serve'
|
|
13718
|
+
...(command === 'serve'
|
|
13719
|
+
? {
|
|
13720
|
+
deviceLogUploadUrls: Array.from(new Set([
|
|
13721
|
+
...configuredDeviceLogUploadUrls,
|
|
13722
|
+
...resolveViteDeviceLogUploadUrls(devServer?.resolvedUrls),
|
|
13723
|
+
])),
|
|
13724
|
+
hmrWebSocketUrl,
|
|
13725
|
+
}
|
|
13726
|
+
: {}),
|
|
13707
13727
|
skipPlatformCsp,
|
|
13708
13728
|
});
|
|
13709
13729
|
return command === 'serve'
|
|
@@ -13898,5 +13918,47 @@ function resolveHmrWebSocketUrl(resolved) {
|
|
|
13898
13918
|
const port = options.clientPort ?? options.port ?? resolved.server.port;
|
|
13899
13919
|
return `${protocol}://${host}${port ? `:${port}` : ''}`;
|
|
13900
13920
|
}
|
|
13921
|
+
function resolveConfiguredDeviceLogUploadUrls(resolved) {
|
|
13922
|
+
if (resolved.command !== 'serve')
|
|
13923
|
+
return [];
|
|
13924
|
+
const protocol = resolved.server.https ? 'https' : 'http';
|
|
13925
|
+
const configuredHost = resolved.server.host;
|
|
13926
|
+
const hosts = new Set();
|
|
13927
|
+
if (typeof configuredHost === 'string' && configuredHost !== '0.0.0.0' && configuredHost !== '::') {
|
|
13928
|
+
hosts.add(configuredHost);
|
|
13929
|
+
}
|
|
13930
|
+
else {
|
|
13931
|
+
hosts.add('127.0.0.1');
|
|
13932
|
+
}
|
|
13933
|
+
return Array.from(hosts, host => createDeviceLogUploadUrl(protocol, host, resolved.server.port)).filter((url) => Boolean(url));
|
|
13934
|
+
}
|
|
13935
|
+
function resolveViteDeviceLogUploadUrls(resolvedUrls) {
|
|
13936
|
+
if (!resolvedUrls)
|
|
13937
|
+
return [];
|
|
13938
|
+
return Array.from(new Set([...resolvedUrls.local, ...resolvedUrls.network].map(url => {
|
|
13939
|
+
try {
|
|
13940
|
+
const endpoint = new URL(DEVICE_LOG_PATH, url);
|
|
13941
|
+
if (endpoint.protocol !== 'http:' && endpoint.protocol !== 'https:')
|
|
13942
|
+
return undefined;
|
|
13943
|
+
endpoint.username = '';
|
|
13944
|
+
endpoint.password = '';
|
|
13945
|
+
endpoint.search = '';
|
|
13946
|
+
endpoint.hash = '';
|
|
13947
|
+
return endpoint.toString();
|
|
13948
|
+
}
|
|
13949
|
+
catch {
|
|
13950
|
+
return undefined;
|
|
13951
|
+
}
|
|
13952
|
+
}).filter((url) => Boolean(url))));
|
|
13953
|
+
}
|
|
13954
|
+
function createDeviceLogUploadUrl(protocol, host, port) {
|
|
13955
|
+
try {
|
|
13956
|
+
const normalizedHost = host.startsWith('[') || !host.includes(':') ? host : `[${host}]`;
|
|
13957
|
+
return new URL(DEVICE_LOG_PATH, `${protocol}://${normalizedHost}${port === undefined ? '' : `:${port}`}`).toString();
|
|
13958
|
+
}
|
|
13959
|
+
catch {
|
|
13960
|
+
return undefined;
|
|
13961
|
+
}
|
|
13962
|
+
}
|
|
13901
13963
|
|
|
13902
13964
|
export { HB_SDK_COMPANION_ARTIFACT_ACCESS_TOKEN_ENV, HB_SDK_MINI_PROGRAM_MANIFEST_ACCESS_TOKEN_ENV, MINIAPP_PLATFORM_VALUES, miniappManifest };
|
package/docs/device-logs.md
CHANGED
|
@@ -29,8 +29,8 @@ Agent 应保存 `epoch` 和 `nextCursor`,`hasMore` 为 true 时继续翻页。
|
|
|
29
29
|
|
|
30
30
|
## 有界行为与权限
|
|
31
31
|
|
|
32
|
-
每个页面最多缓冲 500 条,每批最多 50
|
|
32
|
+
每个页面最多缓冲 500 条,每批最多 50 条并限制编码后的请求体;失败后按原序号指数退避重试,最长等待 30 秒。服务器最多保存 5000 条、64 个设备会话,每设备每秒最多接收 200 条。设备 15 秒未心跳标记离线,旧日志保留直到被环形缓冲淘汰。超过页面缓冲时补充丢弃数量提示。开发服务凭证最长有效 12 小时,到期需重启开发服务并重新打开页面。
|
|
33
33
|
|
|
34
|
-
设备上传凭证不能读取日志或上传其他会话的记录。读取接口只开放给本机数字 loopback Host,拒绝外站 Origin
|
|
34
|
+
设备上传凭证不能读取日志或上传其他会话的记录。读取接口只开放给本机数字 loopback Host,拒绝外站 Origin;授权边界是当前机器的本地开发者进程。页面上传只使用同源路径,`hb-sdk dev` 的平台 CSP 仅精确放行各实际开发服务地址下的日志端点,不开放其它浏览器网络出口,也不依赖 HTTPS 宿主页面连接跨源明文 WebSocket。上传前移除 URL query、fragment、userinfo 和常见凭据字段,服务端再次脱敏。此功能不能代替开发者对业务日志中的个人信息做最小化处理。
|
|
35
35
|
|
|
36
36
|
当前聚合的是小程序页面和 SDK 的日志,不包含手机原生进程、PC 原生进程或 Companion stdout/stderr。调试台自身的 Runtime/Host 本地日志仍只在该页面显示。真机本地网络权限、宿主 CSP 及系统策略可能阻止连接,需要使用实际手机和 PC Extension 验证。
|
|
@@ -51,10 +51,11 @@ Browser Dev Host 由 SDK CLI 提供 Vue 3 调试台并注入 `@heybox/hb-sdk-run
|
|
|
51
51
|
|
|
52
52
|
调试台不提供权限修改、Browser/Mobile 页签或重复二维码入口。线上批准基线与 CLI 根据声明生成的本地 grant 分开传输,Browser Fake 允许白名单内临时权限并保留线上未批准提示;唯一的 Mobile 二维码入口位于调试台右上角,并复用既有 LAN 网卡与 Dev Session 生命周期。
|
|
53
53
|
|
|
54
|
-
## 新 PC
|
|
54
|
+
## 新 PC 页面通道合同与窗口导航
|
|
55
55
|
|
|
56
56
|
小程序 Host 的页面通道以 `namespace` + `protocolVersion` + `contractRevision` 协商。当前详情页的
|
|
57
|
-
`NEW_PC_HOST_CONTRACT_REVISION` 是 `1.
|
|
57
|
+
`NEW_PC_HOST_CONTRACT_REVISION` 是 `1.8.0`,同时把 `1.1.0` / `1.4.0` / `1.5.0` / `1.6.0` / `1.7.0` 保留为 legacy revision。
|
|
58
|
+
`1.8.0` 新增私有 `navigation.openWindow` capability,用于把 Runtime 已收窄的 `miniProgramId` 与可选编码后 `extra` 交给桌面插件开窗;旧 revision 不得宣告该能力。
|
|
58
59
|
双方必须在握手时选出**共同支持的最高 revision**,不能只读 `marker.contractRevision`:旧插件会把 marker 固定为
|
|
59
60
|
其 legacy revision 供已部署页面兼容读取,真正的版本集合在 `supportedContractRevisions` 中;只回退 marker
|
|
60
61
|
会把“支持到 1.5.0”的插件错误降级到 `1.1.0`。任一侧都不支持的组合必须在握手阶段明确失败,不做静默降级。
|
|
@@ -69,9 +70,10 @@ Browser Dev Host 由 SDK CLI 提供 Vue 3 调试台并注入 `@heybox/hb-sdk-run
|
|
|
69
70
|
`source === 'program'` 的程序化变更(例如宿主恢复上次尺寸、响应系统缩放)只更新当前运行时几何,不得覆盖
|
|
70
71
|
用户记忆。位置(`x` / `y`)始终不对开发者开放,页面不得声明或设置。
|
|
71
72
|
|
|
72
|
-
detail 页面与工坊插件(Desktop Extension
|
|
73
|
-
`
|
|
74
|
-
`
|
|
73
|
+
detail 页面与工坊插件(Desktop Extension)通过最高公共 revision 支持独立发布和回滚。单侧升级时双方继续
|
|
74
|
+
协商到旧 revision;例如只有一侧支持 `1.8.0` 时仍使用 `1.7.0`,现有能力保持可用,仅新的
|
|
75
|
+
`mini_program` 目标返回 `REQUEST_UNSUPPORTED`。只有双方没有公共 revision 时才返回
|
|
76
|
+
`HOST_VERSION_UNSUPPORTED`,不得静默切换到 Mobile、Web 或旧 PC Host。
|
|
75
77
|
|
|
76
78
|
## Host diagnostics
|
|
77
79
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@heybox/hb-sdk",
|
|
3
|
-
"version": "0.8.3
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"./src/index.ts",
|
|
6
6
|
"./src/core/singleton.ts",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"undici": "^7.28.0",
|
|
66
66
|
"ws": "^8.18.0",
|
|
67
67
|
"sharp": "^0.34.5",
|
|
68
|
-
"@heybox/hb-sdk-protocol": "0.8.3
|
|
68
|
+
"@heybox/hb-sdk-protocol": "0.8.3"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
71
|
"vite": ">=5"
|
|
@@ -116,13 +116,13 @@
|
|
|
116
116
|
"vue-tsc": "^3.3.7",
|
|
117
117
|
"vite": "^8.0.12",
|
|
118
118
|
"vitest": "^3.2.4",
|
|
119
|
-
"@heybox-domain/heybox-vue3-ui": "~0.1.0",
|
|
120
119
|
"@heybox-domain/heybox-theme": "~0.1.0",
|
|
120
|
+
"@heybox-domain/heybox-vue3-ui": "~0.1.0",
|
|
121
121
|
"@heybox/hb-api": "~1.28.9",
|
|
122
|
-
"@heybox/hb-sdk-runtime": "~0.8.3
|
|
122
|
+
"@heybox/hb-sdk-runtime": "~0.8.3",
|
|
123
|
+
"@heybox/runtime": "~0.2.0",
|
|
123
124
|
"@heybox/runtime-policy": "~0.2.0",
|
|
124
|
-
"@heybox/runtime-transport-fetch": "~0.2.0"
|
|
125
|
-
"@heybox/runtime": "~0.2.0"
|
|
125
|
+
"@heybox/runtime-transport-fetch": "~0.2.0"
|
|
126
126
|
},
|
|
127
127
|
"publishConfig": {
|
|
128
128
|
"registry": "https://registry.npmjs.org/",
|
package/skill/skill.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hb-sdk",
|
|
3
|
-
"skillVersion": "0.8.3
|
|
3
|
+
"skillVersion": "0.8.3+skill.aa24d6656331",
|
|
4
4
|
"sdk": {
|
|
5
5
|
"package": "@heybox/hb-sdk",
|
|
6
|
-
"version": "0.8.3
|
|
7
|
-
"compatibility": "0.8.3
|
|
6
|
+
"version": "0.8.3",
|
|
7
|
+
"compatibility": "0.8.3"
|
|
8
8
|
},
|
|
9
9
|
"distribution": {
|
|
10
10
|
"type": "npm",
|
|
11
11
|
"package": "@heybox/hb-sdk",
|
|
12
|
-
"version": "0.8.3
|
|
12
|
+
"version": "0.8.3",
|
|
13
13
|
"path": "skill"
|
|
14
14
|
},
|
|
15
15
|
"integrity": "sha256-aa24d6656331cbad8f6aae7735258a49d7f1a82f6e900415de53a1b93a30ddb8"
|
package/types/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export type { CreateOptions, DirectoryHandle, FileHandle, FileMode, FileStat, Fi
|
|
|
16
16
|
export type { HideLoadingPayload, HideLoadingResult, MiniProgramToastStatus, MiniProgramUiModule, ShowLoadingPayload, ShowLoadingResult, ShowToastPayload, ShowToastResult, } from './modules/ui';
|
|
17
17
|
export type { MiniProgramDeviceModule, MiniProgramVibrateIntensity, SetClipboardPayload, SetClipboardResult, VibratePayload, VibrateResult, } from './modules/device';
|
|
18
18
|
export type { MiniProgramEnvironmentInfo, MiniProgramEnvironmentModule, MiniProgramOperatingSystemName, MiniProgramRuntimeMode, } from './modules/environment';
|
|
19
|
-
export type { ClosePayload, CloseResult, MiniProgramAppPageTarget, MiniProgramGameDetailGameType, MiniProgramGameDetailPage, MiniProgramNavigationModule, OpenAppPageOptions, OpenAppPagePayload, OpenAppPageResult, OpenGameDetailAppPagePayload, OpenGameDetailAppPageOptions, OpenPostDetailAppPagePayload, OpenPostDetailAppPageOptions, OpenUserDetailAppPagePayload, OpenUserDetailAppPageOptions, ReloadPayload, ReloadResult, } from './modules/navigation';
|
|
19
|
+
export type { ClosePayload, CloseResult, MiniProgramAppPageTarget, MiniProgramGameDetailGameType, MiniProgramGameDetailPage, MiniProgramNavigationModule, OpenAppPageOptions, OpenAppPagePayload, OpenAppPageResult, OpenGameDetailAppPagePayload, OpenGameDetailAppPageOptions, OpenMiniProgramAppPagePayload, OpenMiniProgramAppPageOptions, OpenPostDetailAppPagePayload, OpenPostDetailAppPageOptions, OpenUserDetailAppPagePayload, OpenUserDetailAppPageOptions, ReloadPayload, ReloadResult, } from './modules/navigation';
|
|
20
20
|
import { getHandshakeState, off, on, onHandshakeStateChange } from './core/singleton';
|
|
21
21
|
declare const hbSDK: {
|
|
22
22
|
getHandshakeState: typeof getHandshakeState;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { OpenAppPageOptions, OpenAppPagePayload } from './types';
|
|
2
|
-
export type { MiniProgramAppPageTarget, MiniProgramGameDetailGameType, MiniProgramGameDetailPage, OpenAppPageOptions, OpenAppPagePayload, OpenAppPageResult, OpenGameDetailAppPagePayload, OpenGameDetailAppPageOptions, OpenPostDetailAppPagePayload, OpenPostDetailAppPageOptions, OpenUserDetailAppPagePayload, OpenUserDetailAppPageOptions, } from './types';
|
|
2
|
+
export type { MiniProgramAppPageTarget, MiniProgramGameDetailGameType, MiniProgramGameDetailPage, OpenAppPageOptions, OpenAppPagePayload, OpenAppPageResult, OpenGameDetailAppPagePayload, OpenGameDetailAppPageOptions, OpenMiniProgramAppPagePayload, OpenMiniProgramAppPageOptions, OpenPostDetailAppPagePayload, OpenPostDetailAppPageOptions, OpenUserDetailAppPagePayload, OpenUserDetailAppPageOptions, } from './types';
|
|
3
3
|
/** 校验并规范化打开黑盒 App 页面参数。 */
|
|
4
4
|
export declare function normalizeOpenAppPageOptions(options: OpenAppPageOptions): OpenAppPagePayload;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MiniProgramShareExtraValue } from '../../share/types';
|
|
1
2
|
/**
|
|
2
3
|
* 小程序可请求打开的黑盒 App 页面目标。
|
|
3
4
|
*
|
|
@@ -5,11 +6,12 @@
|
|
|
5
6
|
* - `game_detail`:小黑盒游戏详情页。
|
|
6
7
|
* - `user_detail`:小黑盒用户详情页。
|
|
7
8
|
* - `post_detail`:小黑盒帖子详情页,可选定位评论。
|
|
9
|
+
* - `mini_program`:另一个公开发布的小程序。
|
|
8
10
|
*
|
|
9
|
-
* 移动端 Host
|
|
10
|
-
* URL、scheme
|
|
11
|
+
* 移动端 Host 支持全部目标;PC Host 支持 `game_detail` 与 `mini_program`。该联合不接受任意
|
|
12
|
+
* URL、scheme、目标版本或内部路由路径,不支持的目标会在 SDK 或 Host 边界明确拒绝。
|
|
11
13
|
*/
|
|
12
|
-
export type MiniProgramAppPageTarget = 'game_detail' | 'user_detail' | 'post_detail';
|
|
14
|
+
export type MiniProgramAppPageTarget = 'game_detail' | 'user_detail' | 'post_detail' | 'mini_program';
|
|
13
15
|
/**
|
|
14
16
|
* 游戏详情的游戏平台类型:`pc`、`console`(主机)或 `mobile`(移动游戏)。
|
|
15
17
|
* 值区分大小写,不接受平台别名。
|
|
@@ -68,6 +70,18 @@ export interface OpenPostDetailAppPageOptions {
|
|
|
68
70
|
*/
|
|
69
71
|
commentId?: string | number;
|
|
70
72
|
}
|
|
73
|
+
/** 打开另一个公开发布小程序的参数。 */
|
|
74
|
+
export interface OpenMiniProgramAppPageOptions {
|
|
75
|
+
/** 固定为 `mini_program`。 */
|
|
76
|
+
target: 'mini_program';
|
|
77
|
+
/** 目标小程序 ID。SDK 会 trim 并拒绝空值;实际可访问性与版本由 Host 决定。 */
|
|
78
|
+
miniProgramId: string;
|
|
79
|
+
/**
|
|
80
|
+
* 可选启动数据。目标小程序通过 `share.getExtra()` 同步读取;省略与显式传入 `null` 含义不同。
|
|
81
|
+
* 值域、嵌套和 128 字节 MessagePack 上限与分享 `extra` 完全一致。
|
|
82
|
+
*/
|
|
83
|
+
extra?: MiniProgramShareExtraValue;
|
|
84
|
+
}
|
|
71
85
|
/**
|
|
72
86
|
* 打开黑盒 App 页面的判别联合参数。
|
|
73
87
|
*
|
|
@@ -83,7 +97,7 @@ export interface OpenPostDetailAppPageOptions {
|
|
|
83
97
|
*
|
|
84
98
|
* @see [navigation.openAppPage](/reference/sdk/navigation/openAppPage)
|
|
85
99
|
*/
|
|
86
|
-
export type OpenAppPageOptions = OpenGameDetailAppPageOptions | OpenUserDetailAppPageOptions | OpenPostDetailAppPageOptions;
|
|
100
|
+
export type OpenAppPageOptions = OpenGameDetailAppPageOptions | OpenUserDetailAppPageOptions | OpenPostDetailAppPageOptions | OpenMiniProgramAppPageOptions;
|
|
87
101
|
/**
|
|
88
102
|
* 打开游戏详情页的规范化 bridge payload;`appId` 与可选 `skuId` 已转换为非空字符串。
|
|
89
103
|
*/
|
|
@@ -101,12 +115,16 @@ export type OpenPostDetailAppPagePayload = Omit<OpenPostDetailAppPageOptions, 'l
|
|
|
101
115
|
rootCommentId?: string;
|
|
102
116
|
commentId?: string;
|
|
103
117
|
};
|
|
118
|
+
/** 打开目标小程序的规范化 bridge payload;`miniProgramId` 已 trim。 */
|
|
119
|
+
export type OpenMiniProgramAppPagePayload = Omit<OpenMiniProgramAppPageOptions, 'miniProgramId'> & {
|
|
120
|
+
miniProgramId: string;
|
|
121
|
+
};
|
|
104
122
|
/**
|
|
105
123
|
* `navigation.openAppPage` 发送给 Host Runtime 的判别联合 payload。
|
|
106
124
|
*
|
|
107
125
|
* @remarks 只包含目标白名单字段;Runtime 会再次校验并构造固定的 Host 页面路由。
|
|
108
126
|
*/
|
|
109
|
-
export type OpenAppPagePayload = OpenGameDetailAppPagePayload | OpenUserDetailAppPagePayload | OpenPostDetailAppPagePayload;
|
|
127
|
+
export type OpenAppPagePayload = OpenGameDetailAppPagePayload | OpenUserDetailAppPagePayload | OpenPostDetailAppPagePayload | OpenMiniProgramAppPagePayload;
|
|
110
128
|
/**
|
|
111
129
|
* `navigation.openAppPage` 成功时 resolve `undefined`。
|
|
112
130
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { MiniProgramRequester } from '../../core/client';
|
|
2
2
|
import { type OpenAppPageOptions } from './app-pages';
|
|
3
3
|
export { NAVIGATION_CLOSE_METHOD, NAVIGATION_OPEN_APP_PAGE_METHOD, NAVIGATION_RELOAD_METHOD } from '../../protocol/capabilities';
|
|
4
|
-
export type { MiniProgramAppPageTarget, MiniProgramGameDetailGameType, MiniProgramGameDetailPage, OpenAppPageOptions, OpenAppPagePayload, OpenAppPageResult, OpenGameDetailAppPagePayload, OpenGameDetailAppPageOptions, OpenPostDetailAppPagePayload, OpenPostDetailAppPageOptions, OpenUserDetailAppPagePayload, OpenUserDetailAppPageOptions, } from './app-pages';
|
|
4
|
+
export type { MiniProgramAppPageTarget, MiniProgramGameDetailGameType, MiniProgramGameDetailPage, OpenAppPageOptions, OpenAppPagePayload, OpenAppPageResult, OpenGameDetailAppPagePayload, OpenGameDetailAppPageOptions, OpenMiniProgramAppPagePayload, OpenMiniProgramAppPageOptions, OpenPostDetailAppPagePayload, OpenPostDetailAppPageOptions, OpenUserDetailAppPagePayload, OpenUserDetailAppPageOptions, } from './app-pages';
|
|
5
5
|
/**
|
|
6
6
|
* `navigation.close` 的无参 payload。
|
|
7
7
|
*
|
|
@@ -178,7 +178,7 @@ export interface MiniProgramNavigationModule {
|
|
|
178
178
|
*/
|
|
179
179
|
reload(): Promise<void>;
|
|
180
180
|
/**
|
|
181
|
-
* 请求宿主打开受 SDK 白名单约束的黑盒 App
|
|
181
|
+
* 请求宿主打开受 SDK 白名单约束的黑盒 App 页面或公开小程序。
|
|
182
182
|
*
|
|
183
183
|
* @param options - 由 `target` 判别的目标页参数;字段与规范化规则见 {@link OpenAppPageOptions}。
|
|
184
184
|
* @returns Host 接收参数并发起页面路由后 resolve `undefined`;不会等待目标页加载或返回目标页结果。
|
|
@@ -192,15 +192,15 @@ export interface MiniProgramNavigationModule {
|
|
|
192
192
|
* 时,还会返回对应握手错误码或 `REQUEST_TIMEOUT`;其他 Host 路由失败保留其 SDK 错误码。
|
|
193
193
|
*
|
|
194
194
|
* @remarks
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
195
|
+
* 公开白名单包含游戏详情、用户详情、帖子详情和公开小程序;不能传任意 URL、scheme、版本
|
|
196
|
+
* 或客户端内部路径。`mini_program` 只接受 `miniProgramId` 与可选 `extra`,目标版本和访问性
|
|
197
|
+
* 由 Host 决定。`extra` 与分享扩展数据使用相同格式,目标小程序通过 `share.getExtra()` 读取。
|
|
198
|
+
* Runtime 会在 Host 边界再次校验,页面提供的字段不能覆盖目标路径或窗口展示参数。
|
|
199
199
|
*
|
|
200
|
-
* 移动端 Host
|
|
201
|
-
* `
|
|
202
|
-
*
|
|
203
|
-
*
|
|
200
|
+
* 移动端 Host 支持全部四类目标。当前 Windows/macOS PC Host 支持 `game_detail` 和
|
|
201
|
+
* `mini_program`,仍不支持 `user_detail`、`post_detail`;游戏详情只把 `appId` 交给导航,
|
|
202
|
+
* `gameType` 仍须合法,而 `page`、`hSrc`、`skuId` 不保证在 PC 生效。调用方应按目标和平台
|
|
203
|
+
* 处理 `REQUEST_UNSUPPORTED`,不能仅凭方法出现在能力目录中推断每种目标都可用。
|
|
204
204
|
*
|
|
205
205
|
* 该调用无需 `package.json#heybox.permissions` 声明、平台批准、用户授权或可信用户手势。
|
|
206
206
|
* 它只发起一次 App 导航,没有返回值或 disposer,也不会替代
|
|
@@ -236,11 +236,20 @@ export interface MiniProgramNavigationModule {
|
|
|
236
236
|
* commentId,
|
|
237
237
|
* })
|
|
238
238
|
* }
|
|
239
|
+
*
|
|
240
|
+
* async function openMiniProgram() {
|
|
241
|
+
* await hbSDK.navigation.openAppPage({
|
|
242
|
+
* target: 'mini_program',
|
|
243
|
+
* miniProgramId: '2e2b8e19-8d73-45f8-8785-b87fd5535510',
|
|
244
|
+
* extra: { page: 'ranking' },
|
|
245
|
+
* })
|
|
246
|
+
* }
|
|
239
247
|
* ```
|
|
240
248
|
*
|
|
241
249
|
* @see {@link OpenGameDetailAppPageOptions}
|
|
242
250
|
* @see {@link OpenUserDetailAppPageOptions}
|
|
243
251
|
* @see {@link OpenPostDetailAppPageOptions}
|
|
252
|
+
* @see {@link OpenMiniProgramAppPageOptions}
|
|
244
253
|
* @see [navigation.close](/reference/sdk/navigation/close)
|
|
245
254
|
* @see [navigation.reload](/reference/sdk/navigation/reload)
|
|
246
255
|
* @see [权限声明](/guide/permissions#无需声明的-api)
|
|
@@ -280,14 +289,14 @@ export declare function close(requester: MiniProgramRequester): Promise<void>;
|
|
|
280
289
|
*/
|
|
281
290
|
export declare function reload(requester: MiniProgramRequester): Promise<void>;
|
|
282
291
|
/**
|
|
283
|
-
* 请求宿主打开受 SDK 白名单约束的黑盒 App
|
|
292
|
+
* 请求宿主打开受 SDK 白名单约束的黑盒 App 页面或公开小程序。
|
|
284
293
|
*
|
|
285
294
|
* @param requester - 底层 bridge 请求能力。
|
|
286
295
|
* @param options - 由 `target` 判别的目标页参数;发送前会校验并规范化。
|
|
287
296
|
* @returns Host 发起受控页面路由后 resolve `undefined`。
|
|
288
297
|
* @throws {@link HbMiniProgramSDKError} 参数非法、目标不受 Host 支持、路由失败或 SDK /
|
|
289
298
|
* Runtime 已终止时抛出。
|
|
290
|
-
* @remarks 该能力不接受任意 URL
|
|
299
|
+
* @remarks 该能力不接受任意 URL、版本或内部路由,也无需 Manifest 权限或可信用户手势。
|
|
291
300
|
* @see [navigation.openAppPage](/reference/sdk/navigation/openAppPage)
|
|
292
301
|
*/
|
|
293
302
|
export declare function openAppPage(requester: MiniProgramRequester, options: OpenAppPageOptions): Promise<void>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { MiniProgramShareExtraValue } from './types';
|
|
2
|
+
/** 校验公开启动扩展数据,并保持调用方传入的值语义不变。 */
|
|
3
|
+
export declare function normalizeMiniProgramShareExtra(value: unknown): MiniProgramShareExtraValue;
|
|
2
4
|
/** 读取小程序启动时携带的分享数据。 */
|
|
3
5
|
export declare function readMiniProgramShareExtra(launchHref?: string): MiniProgramShareExtraValue | undefined;
|
|
@@ -14,6 +14,7 @@ export type MiniProgramShareChannel = 'wechatSession' | 'wechatTimeline' | 'qqFr
|
|
|
14
14
|
* @remarks
|
|
15
15
|
* 只允许 `null`、有限数字、字符串、布尔值、数组和普通对象;`undefined`、`NaN`、
|
|
16
16
|
* `Infinity`、`bigint`、`symbol`、函数、循环引用、`Date`、`Map` 和其他 class 实例均不受支持。
|
|
17
|
+
* 普通对象的 key 不能是 MessagePack 解码器保留的 `__proto__`。
|
|
17
18
|
* 合法的 `null`、`false`、`0` 与空字符串在 {@link MiniProgramShareModule.getExtra | share.getExtra}
|
|
18
19
|
* 中会原样返回,不能用真假值判断是否存在分享数据。
|
|
19
20
|
*
|
package/types/protocol.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
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, DIRECTORY_CREATE_METHOD, DIRECTORY_EXISTS_METHOD, DIRECTORY_LIST_METHOD, DIRECTORY_REMOVE_METHOD, DEVICE_SET_CLIPBOARD_METHOD, DEVICE_VIBRATE_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_REQUEST_METHOD, NETWORK_DOWNLOAD_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_INFO_AUTHORIZATION_SCOPES, USER_GET_INFO_METHOD, USER_GET_STEAM_GAME_LIST_METHOD, USER_REVOKE_AUTHORIZATION_METHOD, VIEWPORT_SET_DISPLAY_METHOD, VIEWPORT_GET_WINDOW_INFO_METHOD, VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD, isManagedMiniProgramRuntimePermissionKey, isMiniProgramByteArray, isMiniProgramBridgeMessage, isMiniProgramDirectoryDescriptor, isMiniProgramDirectoryRef, isMiniProgramDownloadProgressPayload, isMiniProgramFileDescriptor, isMiniProgramFileRef, isMiniProgramFileStat, isMiniProgramFileSystemEntityDescriptor, isMiniProgramPathRootRef, isMiniProgramRelativePath, parseMiniProgramRuntimePermissions, } from '@heybox/hb-sdk-protocol';
|
|
2
|
-
export type { AuthorizedUserInfo, ClosePayload, CloseResult, CopyLinkPayload, CopyLinkResult, DirectoryCreatePayload, DirectoryCreateResult, DirectoryExistsPayload, DirectoryExistsResult, DirectoryListPayload, DirectoryListResult, DirectoryRemovePayload, DirectoryRemoveResult, DeleteCurrentUserLeaderboardEntryPayload, DeleteCurrentUserLeaderboardEntryResult, GetCurrentUserLeaderboardEntryPayload, GetCurrentUserLeaderboardEntryResult, GetLeaderboardInfoPayload, GetLeaderboardInfoResult, GetLeaderboardListPayload, GetLeaderboardListResult, GetSteamGameListPayload, GetSteamGameListResult, GetStoragePayload, GetStorageResult, GetUserInfoPayload, GetUserInfoResult, MiniProgramOrientationMode, SetDisplayPayload, SetDisplayResult, MiniProgramDisplayState, GetWindowInfoPayload, GetWindowInfoResult, DownloadProgressPayload, HideLoadingPayload, HideLoadingResult, FileCreatePayload, FileCreateResult, FileExistsPayload, FileExistsResult, FileReadBytesPayload, FileReadBytesResult, FileReadTextPayload, FileReadTextResult, FileRemovePayload, FileRemoveResult, FileStatPayload, FileStatResult, FileWriteBytesPayload, FileWriteBytesResult, FileWriteTextPayload, FileWriteTextResult, LeaderboardEntry, LeaderboardOrder, LoginPayload, LoginResult, LoginScope, MiniProgramAuthMethod, MiniProgramBridgeError, MiniProgramBridgeCancelMessage, MiniProgramBridgeMessage, MiniProgramBridgeMessageType, MiniProgramBridgeProgressMessage, MiniProgramBridgeMethod, MiniProgramCapabilityDefinition, MiniProgramCapabilityModule, MiniProgramCapabilityPayload, MiniProgramCapabilityPayloadMap, MiniProgramCapabilityResult, MiniProgramCapabilityResultMap, MiniProgramCapabilityRisk, MiniProgramCloudMethod, MiniProgramDeviceMethod, MiniProgramDirectoryDescriptor, MiniProgramDirectoryMethod, MiniProgramDirectoryRef, MiniProgramDirectDirectoryRef, MiniProgramDirectFileRef, MiniProgramEventName, MiniProgramEventPayloadMap, MiniProgramFileDescriptor, MiniProgramFileMode, MiniProgramFileMethod, MiniProgramFileRef, MiniProgramFilesMethod, MiniProgramFileStat, MiniProgramFileSystemEntityDescriptor, MiniProgramFileSystemEntityRef, MiniProgramPathRootRef, MiniProgramSandboxRootRef, MiniProgramNavigationBarForegroundStyle, MiniProgramNavigationMethod, MiniProgramNetworkHeaders, MiniProgramNetworkMethod, MiniProgramNetworkParams, MiniProgramNetworkRequestMethod, MiniProgramOperatingSystemName, MiniProgramRuntimePermissionEntry, MiniProgramRuntimeEnvironmentInfo, MiniProgramRuntimeMode, MiniProgramRuntimePermissionsSnapshot, MiniProgramRuntimePermissionStatus, MiniProgramSafeArea, MiniProgramScreenshotRect, MiniProgramShareChannel, MiniProgramShareMethod, MiniProgramSharePostOptions, MiniProgramStorageMethod, MiniProgramToastStatus, MiniProgramUiMethod, MiniProgramUserInfoResult, MiniProgramUserMethod, MiniProgramVibrateIntensity, MiniProgramViewportMethod, MiniProgramWindowInfoResult, NetworkRequestPayload, NetworkResponsePayload, NetworkDownloadPayload, NetworkDownloadResult, OpenAppPagePayload, OpenAppPageResult, OpenGameDetailAppPagePayload, OpenPostDetailAppPagePayload, OpenUserDetailAppPagePayload, PickDirectoryPayload, PickDirectoryResult, PickFilesPayload, PickFilesResult, ParsedMiniProgramRuntimePermissions, ReloadPayload, ReloadResult, RevokeAuthorizationPayload, RevokeAuthorizationResult, RuntimeLocationProbePayload, ScreenshotPayload, ScreenshotResult, SaveFilePayload, SaveFileResult, SDKCSPBlockedResourceType, SDKCSPViolationPayload, SDKHandshakePayload, SDKHandshakeResult, SDKLocationReportPayload, SDKLocationReportTrigger, SetClipboardPayload, SetClipboardResult, SetNavigationBarStylePayload, SetNavigationBarStyleResult, SetStoragePayload, ShowLoadingPayload, ShowLoadingResult, ShowShareMenuPayload, ShowShareMenuResult, ShowToastPayload, ShowToastResult, SteamGameListData, SteamGameListItem, SteamGameListSort, SteamGamePrice, SubmitLeaderboardEntryPayload, SubmitLeaderboardEntryResult, UserInfoAuthorization, UserInfoAuthorizationScope, UserInfoAuthorizationStatus, VibratePayload, VibrateResult, } from '@heybox/hb-sdk-protocol';
|
|
2
|
+
export type { AuthorizedUserInfo, ClosePayload, CloseResult, CopyLinkPayload, CopyLinkResult, DirectoryCreatePayload, DirectoryCreateResult, DirectoryExistsPayload, DirectoryExistsResult, DirectoryListPayload, DirectoryListResult, DirectoryRemovePayload, DirectoryRemoveResult, DeleteCurrentUserLeaderboardEntryPayload, DeleteCurrentUserLeaderboardEntryResult, GetCurrentUserLeaderboardEntryPayload, GetCurrentUserLeaderboardEntryResult, GetLeaderboardInfoPayload, GetLeaderboardInfoResult, GetLeaderboardListPayload, GetLeaderboardListResult, GetSteamGameListPayload, GetSteamGameListResult, GetStoragePayload, GetStorageResult, GetUserInfoPayload, GetUserInfoResult, MiniProgramOrientationMode, SetDisplayPayload, SetDisplayResult, MiniProgramDisplayState, GetWindowInfoPayload, GetWindowInfoResult, DownloadProgressPayload, HideLoadingPayload, HideLoadingResult, FileCreatePayload, FileCreateResult, FileExistsPayload, FileExistsResult, FileReadBytesPayload, FileReadBytesResult, FileReadTextPayload, FileReadTextResult, FileRemovePayload, FileRemoveResult, FileStatPayload, FileStatResult, FileWriteBytesPayload, FileWriteBytesResult, FileWriteTextPayload, FileWriteTextResult, LeaderboardEntry, LeaderboardOrder, LoginPayload, LoginResult, LoginScope, MiniProgramAuthMethod, MiniProgramBridgeError, MiniProgramBridgeCancelMessage, MiniProgramBridgeMessage, MiniProgramBridgeMessageType, MiniProgramBridgeProgressMessage, MiniProgramBridgeMethod, MiniProgramCapabilityDefinition, MiniProgramCapabilityModule, MiniProgramCapabilityPayload, MiniProgramCapabilityPayloadMap, MiniProgramCapabilityResult, MiniProgramCapabilityResultMap, MiniProgramCapabilityRisk, MiniProgramCloudMethod, MiniProgramDeviceMethod, MiniProgramDirectoryDescriptor, MiniProgramDirectoryMethod, MiniProgramDirectoryRef, MiniProgramDirectDirectoryRef, MiniProgramDirectFileRef, MiniProgramEventName, MiniProgramEventPayloadMap, MiniProgramFileDescriptor, MiniProgramFileMode, MiniProgramFileMethod, MiniProgramFileRef, MiniProgramFilesMethod, MiniProgramFileStat, MiniProgramFileSystemEntityDescriptor, MiniProgramFileSystemEntityRef, MiniProgramPathRootRef, MiniProgramSandboxRootRef, MiniProgramNavigationBarForegroundStyle, MiniProgramNavigationMethod, MiniProgramNetworkHeaders, MiniProgramNetworkMethod, MiniProgramNetworkParams, MiniProgramNetworkRequestMethod, MiniProgramOperatingSystemName, MiniProgramRuntimePermissionEntry, MiniProgramRuntimeEnvironmentInfo, MiniProgramRuntimeMode, MiniProgramRuntimePermissionsSnapshot, MiniProgramRuntimePermissionStatus, MiniProgramSafeArea, MiniProgramScreenshotRect, MiniProgramShareChannel, MiniProgramShareMethod, MiniProgramSharePostOptions, MiniProgramStorageMethod, MiniProgramToastStatus, MiniProgramUiMethod, MiniProgramUserInfoResult, MiniProgramUserMethod, MiniProgramVibrateIntensity, MiniProgramViewportMethod, MiniProgramWindowInfoResult, NetworkRequestPayload, NetworkResponsePayload, NetworkDownloadPayload, NetworkDownloadResult, OpenAppPagePayload, OpenAppPageResult, OpenGameDetailAppPagePayload, OpenMiniProgramAppPagePayload, OpenPostDetailAppPagePayload, OpenUserDetailAppPagePayload, PickDirectoryPayload, PickDirectoryResult, PickFilesPayload, PickFilesResult, ParsedMiniProgramRuntimePermissions, ReloadPayload, ReloadResult, RevokeAuthorizationPayload, RevokeAuthorizationResult, RuntimeLocationProbePayload, ScreenshotPayload, ScreenshotResult, SaveFilePayload, SaveFileResult, SDKCSPBlockedResourceType, SDKCSPViolationPayload, SDKHandshakePayload, SDKHandshakeResult, SDKLocationReportPayload, SDKLocationReportTrigger, SetClipboardPayload, SetClipboardResult, SetNavigationBarStylePayload, SetNavigationBarStyleResult, SetStoragePayload, ShowLoadingPayload, ShowLoadingResult, ShowShareMenuPayload, ShowShareMenuResult, ShowToastPayload, ShowToastResult, SteamGameListData, SteamGameListItem, SteamGameListSort, SteamGamePrice, SubmitLeaderboardEntryPayload, SubmitLeaderboardEntryResult, UserInfoAuthorization, UserInfoAuthorizationScope, UserInfoAuthorizationStatus, VibratePayload, VibrateResult, } from '@heybox/hb-sdk-protocol';
|
|
3
3
|
export type { LoginOptions } from './modules/auth';
|
|
4
4
|
export type { GetSteamGameListOptions } from './modules/user';
|
|
5
5
|
export type { MiniProgramEventHandler } from './protocol/types';
|