@heybox/hb-sdk 0.4.6 → 0.5.0

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 (37) hide show
  1. package/README.md +39 -5
  2. package/dist/cli-chunks/{create-BahMMgJH.cjs → create-BiCyOEAv.cjs} +1 -1
  3. package/dist/cli-chunks/{dev-CTuXVPpU.cjs → dev-D4XRqzz1.cjs} +1 -1
  4. package/dist/cli-chunks/{doctor-9gg3ZIvt.cjs → doctor-CmHZYQ2I.cjs} +1 -1
  5. package/dist/cli-chunks/{index-CLne_LW7.cjs → index-DXS0s9d7.cjs} +2 -2
  6. package/dist/cli-chunks/{index-DuwxUSkq.cjs → index-kv8oOmFw.cjs} +13 -13
  7. package/dist/cli-chunks/{login-OqaEx-Wd.cjs → login-F9AEL3cF.cjs} +2 -2
  8. package/dist/cli-chunks/{remote-zX17hOT4.cjs → remote-BRktlraB.cjs} +210 -91
  9. package/dist/cli-chunks/{session-D7lF9mpd.cjs → session-DItg0094.cjs} +1 -1
  10. package/dist/cli.cjs +1 -1
  11. package/dist/devtools/mock-host/main.js +987 -7
  12. package/dist/index.cjs.js +51 -0
  13. package/dist/index.esm.js +51 -0
  14. package/dist/miniapp-publish.cjs.js +16 -0
  15. package/dist/miniapp-publish.esm.js +14 -1
  16. package/dist/protocol.cjs.js +50 -0
  17. package/dist/protocol.esm.js +46 -1
  18. package/dist/templates/vue3-vite-ts/README.md.ejs +2 -1
  19. package/package.json +1 -1
  20. package/skill/SKILL.md +1 -1
  21. package/skill/references/api-protocol.md +22 -2
  22. package/skill/references/api-root.md +70 -2
  23. package/skill/references/cli.md +6 -3
  24. package/skill/references/safety-boundaries.md +2 -1
  25. package/skill/skill.json +4 -4
  26. package/types/index.d.ts +1 -1
  27. package/types/miniapp-publish/index.d.ts +10 -0
  28. package/types/modules/share/types.d.ts +2 -2
  29. package/types/modules/user/get-current-user-detail.d.ts +9 -0
  30. package/types/modules/user/get-current-user-profile.d.ts +9 -0
  31. package/types/modules/user/get-platform-account-info.d.ts +12 -0
  32. package/types/modules/user/get-platform-account-overview.d.ts +9 -0
  33. package/types/modules/user/get-steam-game-list.d.ts +12 -0
  34. package/types/modules/user/index.d.ts +33 -1
  35. package/types/modules/user/types.d.ts +285 -0
  36. package/types/protocol/capabilities.d.ts +52 -2
  37. package/types/protocol.d.ts +2 -2
package/README.md CHANGED
@@ -88,6 +88,35 @@ if (!result.isLogin) {
88
88
 
89
89
  SDK 只返回允许暴露给外部小程序的公开资料,不会返回 token、cookie、手机号或其他私有凭据。
90
90
 
91
+ 需要当前用户更完整资料时,可以使用 current-user scoped API。这些 API 与 `user.getInfo()` 一样不会主动唤起登录;未登录时返回普通未登录结果,业务应只在用户操作后调用 `auth.login()`。
92
+
93
+ ```ts
94
+ const detail = await user.getCurrentUserDetail();
95
+
96
+ if (detail.isLogin) {
97
+ console.log(detail.data.nickname, detail.data.level_info);
98
+ }
99
+
100
+ const steam = await user.getPlatformAccountInfo('steam');
101
+
102
+ if (steam.isLogin && steam.is_bound) {
103
+ console.log(steam.account_info.steamid);
104
+ }
105
+
106
+ const games = await user.getSteamGameList({
107
+ limit: 20,
108
+ sort: 'weeks',
109
+ });
110
+
111
+ if (games.isLogin && games.isBound) {
112
+ console.log(games.data.gameList);
113
+ }
114
+ ```
115
+
116
+ `user.getCurrentUserDetail()` 返回当前用户展示资料,`user.getCurrentUserProfile()` 返回更敏感的个人资料字段。`user.getPlatformAccountOverview()` 返回 `steam`、`epic`、`xbox`、`psn`、`switch`、`pc_hardware`、`mobile` 的绑定/隐藏状态;`user.getPlatformAccountInfo(platform)` 只支持这些平台字面量,未绑定平台返回 `account_info: null`,不会抛出未绑定错误。`user.getSteamGameList(options)` 返回当前用户 Steam 游戏库,未登录或未绑定 Steam 时返回状态对象;分页 `limit` 默认 20、最大 100,`sort` 支持 `weeks`、`all`、`achieved`。
117
+
118
+ 这些 API 仍然只面向当前登录用户,不支持传入 `userid` 查询其他人。平台账号详情和 Steam 游戏库会过滤好友列表、客户端路由协议和页面 UI 状态字段;敏感字段按独立 permission key 管理,后续可由宿主策略按能力或平台收紧。
119
+
91
120
  ### 分享
92
121
 
93
122
  ```ts
@@ -96,11 +125,14 @@ import { share } from '@heybox/hb-sdk';
96
125
  await share.showShareMenu({
97
126
  title: '我的小程序页面',
98
127
  desc: '来自黑盒小程序的分享',
99
- url: window.location.href,
100
128
  imageUrl: 'https://imgheybox.max-c.com/demo.png',
101
129
  });
102
130
  ```
103
131
 
132
+ 用户小程序通常不要传 `url`;宿主 runtime 会按当前小程序生成
133
+ `/tools/common_share?user_miniprogram_id=...` 分享落地页。只有确实要分享外部
134
+ HTTP(S) 页面时才显式传 `url`。
135
+
104
136
  截图分享:
105
137
 
106
138
  ```ts
@@ -336,9 +368,10 @@ try {
336
368
  5. 解析 `dist/manifest.json`,校验 `version` 为 `x.y.z`,自动剥离 BOM;普通 remote deploy 要求该版本与 precheck 使用的 `package.json.version` 一致。
337
369
  6. `--skip-build` 会先读取已有 `dist/manifest.json.version`,再调用 precheck。
338
370
  7. 遍历 `dist/` 文件,跳过 `manifest.json`、`.DS_Store`、`.map`;遇到 symlink 或 `node_modules` 直接报错。
339
- 8. 校验所有上传路径长度不超过 64
340
- 9. 4 并发上传到 COS。默认只展示上传阶段和文件总数;`--verbose` 会展示并发数、bucket / region 和逐文件结果,但不会输出 keys、签名、cookie token。任一文件失败立刻 abort,不提交审核。
341
- 10. 全部上传成功后调用 `/mall/developer/user_miniprogram/version/submit_audit`,输出提交审核成功、发布策略和可用的 preview URL;后端原始失败细节只在 `--verbose` 下展示。
371
+ 8. 校验所有上传路径长度不超过 64,并在任何上传请求发生前限制实际上传产物总大小不超过 100MiB。错误提示中使用 `100MB`,方便开发者理解。
372
+ 9. 上传信息、上传凭证和上传回调按批次执行,每批最多 50 个文件;批次串行,批内保持 4 并发上传到 COS。CLI 会校验 CDN 上传信息接口返回的 key 与本地期望 key 完全一致,异常时停止后续批次且不提交审核。
373
+ 10. 默认只展示上传阶段和文件总数,例如 `正在上传 137/244 个文件`;`--verbose` 会展示并发数、批次数、当前批次、bucket / region 和逐文件结果,但不会输出 keys、签名、cookie、pkey、token 或临时密钥。
374
+ 11. 全部上传成功后调用 `/mall/developer/user_miniprogram/version/submit_audit`,输出提交审核成功、发布策略和可用的 preview URL;后端原始失败细节只在 `--verbose` 下展示。
342
375
 
343
376
  默认 `auto_publish=false`,审核通过后使用 `hb-sdk remote versions` 查看版本状态,再用 `hb-sdk remote release <version>` 发布;使用 `--auto-publish` 时提交 `auto_publish=true`,审核通过后自动发布。未发布候选版本可通过 `hb-sdk remote allowlist add <heybox_id>` 加入预览白名单,让指定用户在广场看到;正式入口使用 `mini_program_id`,`mini_url` 仅用于本地调试。
344
377
 
@@ -402,7 +435,8 @@ CLI 登录态只供 CLI 命令访问黑盒接口时复用,不会注入 iframe
402
435
  ## 能力边界
403
436
 
404
437
  - 调用模块能力前会自动等待 `ready()`,但业务仍建议在页面启动阶段显式 `await ready()`,便于集中处理握手失败。
405
- - `user.getInfo()` 不会触发登录;登录必须由业务在用户操作后调用 `auth.login()`。
438
+ - `user.getInfo()`、`user.getCurrentUserDetail()`、`user.getCurrentUserProfile()`、`user.getPlatformAccountOverview()`、`user.getPlatformAccountInfo(platform)` 和 `user.getSteamGameList(options)` 不会触发登录;登录必须由业务在用户操作后调用 `auth.login()`。
439
+ - 当前用户详情和平台账号 API 只允许读取当前登录用户,不支持传入 `userid` 查询其他人,也不透传 `/account/home_v2/` 原始响应。
406
440
  - 分享、截图、UI、设备、导航、storage 和网络请求只开放稳定窄接口,不透传黑盒客户端内部协议参数。
407
441
  - `network.request()` 的 `validateStatus` 只在 SDK 本地执行,不会被序列化给父容器。
408
442
  - `on()` 返回取消监听函数;组件卸载或页面销毁时应主动取消监听。
@@ -5,7 +5,7 @@ var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
6
  var require$$0 = require('fs');
7
7
  var require$$1 = require('path');
8
- var index = require('./index-DuwxUSkq.cjs');
8
+ var index = require('./index-kv8oOmFw.cjs');
9
9
  require('node:module');
10
10
  require('os');
11
11
  require('readline');
@@ -9,7 +9,7 @@ var node_url = require('node:url');
9
9
  var net = require('node:net');
10
10
  var node_http = require('node:http');
11
11
  var browser = require('./browser-RAy8e8cV.cjs');
12
- var index = require('./index-DuwxUSkq.cjs');
12
+ var index = require('./index-kv8oOmFw.cjs');
13
13
  require('node:process');
14
14
  require('node:buffer');
15
15
  require('node:util');
@@ -4,7 +4,7 @@ var fs$1 = require('node:fs');
4
4
  var fs = require('node:fs/promises');
5
5
  var os = require('node:os');
6
6
  var path = require('node:path');
7
- var index = require('./index-DuwxUSkq.cjs');
7
+ var index = require('./index-kv8oOmFw.cjs');
8
8
  require('node:module');
9
9
  require('path');
10
10
  require('os');
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index$2 = require('./index-DuwxUSkq.cjs');
3
+ var index$2 = require('./index-kv8oOmFw.cjs');
4
4
  var require$$0$2 = require('fs');
5
5
  var require$$2$1 = require('crypto');
6
6
  var require$$1$2 = require('path');
7
7
  var require$$0$3 = require('assert');
8
8
  var require$$4$2 = require('events');
9
9
  var require$$1$1 = require('util');
10
- var remote = require('./remote-zX17hOT4.cjs');
10
+ var remote = require('./remote-BRktlraB.cjs');
11
11
  var require$$0$5 = require('net');
12
12
  var require$$0$4 = require('url');
13
13
  var require$$2$2 = require('http');
@@ -234,19 +234,19 @@ function requireArgument () {
234
234
 
235
235
  var command = {};
236
236
 
237
- const require$5 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-DuwxUSkq.cjs', document.baseURI).href)));
237
+ const require$5 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-kv8oOmFw.cjs', document.baseURI).href)));
238
238
  function __require$4() { return require$5("node:events"); }
239
239
 
240
- const require$4 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-DuwxUSkq.cjs', document.baseURI).href)));
240
+ const require$4 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-kv8oOmFw.cjs', document.baseURI).href)));
241
241
  function __require$3() { return require$4("node:child_process"); }
242
242
 
243
- const require$3 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-DuwxUSkq.cjs', document.baseURI).href)));
243
+ const require$3 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-kv8oOmFw.cjs', document.baseURI).href)));
244
244
  function __require$2() { return require$3("node:path"); }
245
245
 
246
- const require$2 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-DuwxUSkq.cjs', document.baseURI).href)));
246
+ const require$2 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-kv8oOmFw.cjs', document.baseURI).href)));
247
247
  function __require$1() { return require$2("node:fs"); }
248
248
 
249
- const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-DuwxUSkq.cjs', document.baseURI).href)));
249
+ const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-kv8oOmFw.cjs', document.baseURI).href)));
250
250
  function __require() { return require$1("node:process"); }
251
251
 
252
252
  var help = {};
@@ -13094,7 +13094,7 @@ function readErrorMessage(error, options = {}) {
13094
13094
  }
13095
13095
 
13096
13096
  const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
13097
- const BUILT_CLI_VERSION = '0.4.6';
13097
+ const BUILT_CLI_VERSION = '0.5.0';
13098
13098
  const PACKAGE_JSON_CANDIDATES = [
13099
13099
  path.resolve(__dirname, '..', '..', 'package.json'),
13100
13100
  path.resolve(__dirname, '..', 'package.json'),
@@ -13377,31 +13377,31 @@ function createCommandLoggerResolver(options) {
13377
13377
  };
13378
13378
  }
13379
13379
  const defaultClearLoginStatus = async (...args) => {
13380
- const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-OqaEx-Wd.cjs'); });
13380
+ const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-F9AEL3cF.cjs'); });
13381
13381
  return clearLoginStatus(...args);
13382
13382
  };
13383
13383
  const defaultLoginToHeybox = async (...args) => {
13384
- const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-OqaEx-Wd.cjs'); });
13384
+ const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-F9AEL3cF.cjs'); });
13385
13385
  return loginToHeybox(...args);
13386
13386
  };
13387
13387
  const defaultPrintLoginStatus = async (...args) => {
13388
- const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-OqaEx-Wd.cjs'); });
13388
+ const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-F9AEL3cF.cjs'); });
13389
13389
  return printLoginStatus(...args);
13390
13390
  };
13391
13391
  const defaultRunCreateCommand = async (...args) => {
13392
- const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-BahMMgJH.cjs'); });
13392
+ const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-BiCyOEAv.cjs'); });
13393
13393
  return runCreateCommand(...args);
13394
13394
  };
13395
13395
  const defaultRunDevCommand = async (...args) => {
13396
- const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-CTuXVPpU.cjs'); });
13396
+ const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-D4XRqzz1.cjs'); });
13397
13397
  return runDevCommand(...args);
13398
13398
  };
13399
13399
  const defaultRunDoctorCommand = async (...args) => {
13400
- const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-9gg3ZIvt.cjs'); });
13400
+ const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-CmHZYQ2I.cjs'); });
13401
13401
  return runDoctorCommand(...args);
13402
13402
  };
13403
13403
  const defaultRunRemoteCommand = async (...args) => {
13404
- const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-zX17hOT4.cjs'); }).then(function (n) { return n.remote; });
13404
+ const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-BRktlraB.cjs'); }).then(function (n) { return n.remote; });
13405
13405
  return runRemoteCommand(...args);
13406
13406
  };
13407
13407
  function resolveStandaloneLogger(options, verbose) {
@@ -3,9 +3,9 @@
3
3
  var promises = require('node:readline/promises');
4
4
  var node_crypto = require('node:crypto');
5
5
  var node_http = require('node:http');
6
- var session = require('./session-D7lF9mpd.cjs');
6
+ var session = require('./session-DItg0094.cjs');
7
7
  var browser = require('./browser-RAy8e8cV.cjs');
8
- var index = require('./index-DuwxUSkq.cjs');
8
+ var index = require('./index-kv8oOmFw.cjs');
9
9
  require('node:path');
10
10
  require('fs');
11
11
  require('constants');