@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.
Files changed (42) hide show
  1. package/CHANGELOG.md +60 -1
  2. package/README.md +24 -4
  3. package/dist/cli-chunks/{build-BRLdyZ76.cjs → build-BMLuhvh9.cjs} +5 -5
  4. package/dist/cli-chunks/{context-CbiL9O6w.cjs → context-BoNshqZO.cjs} +2 -2
  5. package/dist/cli-chunks/{create-B7kL5QkJ.cjs → create-rUrkd162.cjs} +1 -1
  6. package/dist/cli-chunks/{dev-DvH2_I1Y.cjs → dev-BRx7xYck.cjs} +74 -19
  7. package/dist/cli-chunks/{doctor-DMqILTR4.cjs → doctor-DOCFSRjQ.cjs} +1 -1
  8. package/dist/cli-chunks/{index-BVylxPGU.cjs → index-BrJ7364Q.cjs} +15 -15
  9. package/dist/cli-chunks/{index-D8AT5s4x.cjs → index-CbmIweP8.cjs} +2 -2
  10. package/dist/cli-chunks/{index.esm-Cwh5ei9-.cjs → index.esm-CGFTxGm6.cjs} +7 -7
  11. package/dist/cli-chunks/{login-BHAg3-HY.cjs → login-DxtSW2QP.cjs} +2 -2
  12. package/dist/cli-chunks/{project-vite-AGDPqVSX.cjs → project-vite-D9tmGT59.cjs} +1 -1
  13. package/dist/cli-chunks/{remote-jgmCl_OP.cjs → remote-DuiJdetu.cjs} +7 -7
  14. package/dist/cli-chunks/{runtime-gate-DjTZ46xz.cjs → runtime-gate-CDh8XjRx.cjs} +1 -1
  15. package/dist/cli-chunks/{runtime-permission-env-Bjlpv6zh.cjs → runtime-permission-env-D2pJlHds.cjs} +1 -1
  16. package/dist/cli-chunks/{session-DnS1mH8i.cjs → session-BAw6iix6.cjs} +1 -1
  17. package/dist/cli-chunks/{skill-CUnigEtN.cjs → skill-Cu4QVawo.cjs} +2 -2
  18. package/dist/cli-chunks/{version-CNl684Yw.cjs → version-BuPFCnrl.cjs} +1 -1
  19. package/dist/cli.cjs +1 -1
  20. package/dist/devtools/browser-dev-host/assets/browser-dev-host-CE4o5TF5.js +102 -0
  21. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-38leCDIj.js → desktop-app-launch-DldUhS5Y.js} +1 -1
  22. package/dist/devtools/browser-dev-host/assets/index-0Ac39Njs.css +1 -0
  23. package/dist/devtools/browser-dev-host/assets/{index-Dui3LdcO.js → index-DUhquRwB.js} +4 -4
  24. package/dist/devtools/browser-dev-host/index.html +3 -3
  25. package/dist/index.cjs.js +549 -8
  26. package/dist/index.esm.js +549 -8
  27. package/dist/vite.cjs.js +69 -7
  28. package/dist/vite.esm.js +69 -7
  29. package/docs/device-logs.md +2 -2
  30. package/docs/runtime-host-migration.md +7 -5
  31. package/package.json +6 -6
  32. package/skill/skill.json +4 -4
  33. package/types/index.d.ts +1 -1
  34. package/types/modules/navigation/app-pages/index.d.ts +1 -1
  35. package/types/modules/navigation/app-pages/types.d.ts +23 -5
  36. package/types/modules/navigation/index.d.ts +21 -12
  37. package/types/modules/share/extra.d.ts +2 -0
  38. package/types/modules/share/types.d.ts +1 -0
  39. package/types/protocol.d.ts +1 -1
  40. package/types/vite/html-policy.d.ts +1 -0
  41. package/dist/devtools/browser-dev-host/assets/browser-dev-host-D2fH-vdb.js +0 -101
  42. 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-alpha.6';
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)return;
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){var ack=await result.json();sandboxResult=undefined;
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})}}catch(e){}finally{busy=false}}setInterval(flush,1000);
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 content = options.hmrWebSocketUrl ? PRODUCTION_CSP.replace("connect-src 'none'", `connect-src ${options.hmrWebSocketUrl}`) : PRODUCTION_CSP;
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' ? { hmrWebSocketUrl } : {}),
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-alpha.6';
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)return;
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){var ack=await result.json();sandboxResult=undefined;
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})}}catch(e){}finally{busy=false}}setInterval(flush,1000);
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 content = options.hmrWebSocketUrl ? PRODUCTION_CSP.replace("connect-src 'none'", `connect-src ${options.hmrWebSocketUrl}`) : PRODUCTION_CSP;
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' ? { hmrWebSocketUrl } : {}),
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 };
@@ -29,8 +29,8 @@ Agent 应保存 `epoch` 和 `nextCursor`,`hasMore` 为 true 时继续翻页。
29
29
 
30
30
  ## 有界行为与权限
31
31
 
32
- 每个页面最多缓冲 500 条,每批最多 50 条并限制编码后的请求体;失败后按原序号重试。服务器最多保存 5000 条、64 个设备会话,每设备每秒最多接收 200 条。设备 15 秒未心跳标记离线,旧日志保留直到被环形缓冲淘汰。超过页面缓冲时补充丢弃数量提示。开发服务凭证最长有效 12 小时,到期需重启开发服务并重新打开页面。
32
+ 每个页面最多缓冲 500 条,每批最多 50 条并限制编码后的请求体;失败后按原序号指数退避重试,最长等待 30 秒。服务器最多保存 5000 条、64 个设备会话,每设备每秒最多接收 200 条。设备 15 秒未心跳标记离线,旧日志保留直到被环形缓冲淘汰。超过页面缓冲时补充丢弃数量提示。开发服务凭证最长有效 12 小时,到期需重启开发服务并重新打开页面。
33
33
 
34
- 设备上传凭证不能读取日志或上传其他会话的记录。读取接口只开放给本机数字 loopback Host,拒绝外站 Origin;授权边界是当前机器的本地开发者进程。页面上传只使用同源路径,不依赖 HTTPS 宿主页面连接跨源明文 WebSocket。上传前移除 URL query、fragment、userinfo 和常见凭据字段,服务端再次脱敏。此功能不能代替开发者对业务日志中的个人信息做最小化处理。
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.7.0`,同时把 `1.1.0` / `1.4.0` / `1.5.0` / `1.6.0` 保留为 legacy revision。
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
- `HOST_VERSION_UNSUPPORTED` 或几何语义不一致。0.8.1 的正式发布说明需把 `0.8.1-alpha.14` 中的“合同升级到
74
- `1.6.0`”更正为 `1.7.0`,或明确写成 `1.6.0 → 1.7.0` 增量。
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-alpha.6",
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-alpha.6"
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-alpha.6",
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-alpha.6+skill.aa24d6656331",
3
+ "skillVersion": "0.8.3+skill.aa24d6656331",
4
4
  "sdk": {
5
5
  "package": "@heybox/hb-sdk",
6
- "version": "0.8.3-alpha.6",
7
- "compatibility": "0.8.3-alpha.6"
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-alpha.6",
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 支持这三类语义目标;当前 PC Host 只支持 `game_detail`。该联合不接受任意
10
- * URL、scheme 或内部路由路径,不支持的目标会在 SDK 或 Host 边界明确拒绝。
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
- * 公开白名单仅包含游戏详情、用户详情和帖子详情;不能传任意 URL、scheme 或客户端内部
196
- * 路径。SDK 会 trim 字符串,把 `appId`、`skuId`、`linkId`、`rootCommentId`、`commentId`
197
- * 中的数字转换为字符串,并丢弃目标类型未声明的额外字段。Runtime 在 Host 边界再次校验,
198
- * 再构造固定路由,页面提供的字段不能覆盖目标路径。
195
+ * 公开白名单包含游戏详情、用户详情、帖子详情和公开小程序;不能传任意 URL、scheme、版本
196
+ * 或客户端内部路径。`mini_program` 只接受 `miniProgramId` 与可选 `extra`,目标版本和访问性
197
+ * 由 Host 决定。`extra` 与分享扩展数据使用相同格式,目标小程序通过 `share.getExtra()` 读取。
198
+ * Runtime 会在 Host 边界再次校验,页面提供的字段不能覆盖目标路径或窗口展示参数。
199
199
  *
200
- * 移动端 Host 支持三个目标。当前 Windows/macOS PC Host 只支持 `game_detail`,并只把
201
- * `appId` 交给游戏详情导航;`gameType` 仍须合法,而 `page`、`hSrc`、`skuId` 不保证在 PC
202
- * 生效。调用方应按目标和平台处理 `REQUEST_UNSUPPORTED`,不能仅凭方法出现在能力目录中
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 或内部路由,也无需 Manifest 权限或可信用户手势。
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
  *
@@ -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';
@@ -1,5 +1,6 @@
1
1
  export declare const PRODUCTION_CSP: string;
2
2
  export declare function enforceMiniappHtmlPolicy(html: string, options?: {
3
+ deviceLogUploadUrls?: readonly string[];
3
4
  hmrWebSocketUrl?: string;
4
5
  skipPlatformCsp?: boolean;
5
6
  }): string;