@heybox/hb-sdk 0.8.0-alpha.3 → 0.8.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 (72) hide show
  1. package/CHANGELOG.md +136 -422
  2. package/README.md +28 -18
  3. package/dist/cli-chunks/{build-qWzAbpS7.cjs → build-PYCNacya.cjs} +8 -5
  4. package/dist/cli-chunks/{context-CtS2Thp0.cjs → context-m2W2XbL0.cjs} +42 -59
  5. package/dist/cli-chunks/{create-PV5ua977.cjs → create-BdAg3WGA.cjs} +2 -2
  6. package/dist/cli-chunks/{dev-CwKbAm_H.cjs → dev-CyZuw7Yn.cjs} +76 -64
  7. package/dist/cli-chunks/{doctor-tJUGOYrm.cjs → doctor-DU8rCfUF.cjs} +1 -1
  8. package/dist/cli-chunks/{index-DVuD75Hr.cjs → index-DATObqzK.cjs} +2 -2
  9. package/dist/cli-chunks/{index-De687C6-.cjs → index-MMW2ibQm.cjs} +32 -21
  10. package/dist/cli-chunks/{index.esm-B-4yrLNm.cjs → index.esm-BiAaAUFC.cjs} +8 -8
  11. package/dist/cli-chunks/{login-DolpqD8K.cjs → login-B3TThMss.cjs} +2 -2
  12. package/dist/cli-chunks/{project-vite-1rvkK-M8.cjs → project-vite-BQj8YLI4.cjs} +1 -1
  13. package/dist/cli-chunks/{remote-rIAQE_G2.cjs → remote-DNvI7tHH.cjs} +57 -25
  14. package/dist/cli-chunks/{runtime-gate-DFjw66kF.cjs → runtime-gate-BEFp1w_s.cjs} +11 -3
  15. package/dist/cli-chunks/{runtime-permission-env-CjsCe5bp.cjs → runtime-permission-env-CtL8rsjB.cjs} +351 -0
  16. package/dist/cli-chunks/{session-CzaM2Cq3.cjs → session-DjBkjaF8.cjs} +1 -1
  17. package/dist/cli-chunks/{skill-CM40_9WH.cjs → skill-cR_wnaw2.cjs} +2 -2
  18. package/dist/cli-chunks/{version-Bz-AfXQU.cjs → version-yEn1E2Bg.cjs} +1 -1
  19. package/dist/cli.cjs +1 -1
  20. package/dist/devtools/browser-dev-host/assets/browser-dev-host-TzYf9L6C.js +99 -0
  21. package/dist/devtools/browser-dev-host/assets/{index-CeP6SLB3.js → index-C5MZZDa5.js} +4 -4
  22. package/dist/devtools/browser-dev-host/assets/index-P-ra4m1y.css +1 -0
  23. package/dist/devtools/browser-dev-host/assets/workbench-state-BwV7bm4n.js +5 -0
  24. package/dist/devtools/browser-dev-host/index.html +3 -3
  25. package/dist/index.cjs.js +100 -2
  26. package/dist/index.esm.js +100 -2
  27. package/dist/protocol.cjs.js +189 -47
  28. package/dist/protocol.esm.js +189 -47
  29. package/dist/templates/{vue3-vite-ts → vanilla-vite-js}/.gitignore.ejs +0 -1
  30. package/dist/templates/vanilla-vite-js/README.md.ejs +14 -0
  31. package/dist/templates/vanilla-vite-js/index.html.ejs +20 -0
  32. package/dist/templates/vanilla-vite-js/package.json.ejs +22 -0
  33. package/dist/templates/vanilla-vite-js/src/assets/heybox-logo.svg +8 -0
  34. package/dist/templates/vanilla-vite-js/src/main.js +39 -0
  35. package/dist/templates/vanilla-vite-js/src/styles.css +155 -0
  36. package/dist/templates/{vue3-vite-ts/vite.config.ts → vanilla-vite-js/vite.config.js} +1 -2
  37. package/dist/vite.cjs.js +281 -13
  38. package/dist/vite.esm.js +281 -13
  39. package/package.json +13 -9
  40. package/skill/SKILL.md +8 -9
  41. package/skill/references/api-protocol.md +1 -3
  42. package/skill/references/api-root.md +65 -21
  43. package/skill/references/cli.md +17 -5
  44. package/skill/references/examples.md +3 -3
  45. package/skill/references/recipes.md +40 -41
  46. package/skill/references/safety-boundaries.md +9 -5
  47. package/skill/skill.json +5 -5
  48. package/types/core/mini-dev-console.d.ts +36 -0
  49. package/types/miniapp-manifest/index.d.ts +1 -0
  50. package/types/miniapp-manifest/node.d.ts +3 -0
  51. package/types/miniapp-manifest/permissions.d.ts +37 -0
  52. package/types/miniapp-manifest/schema.d.ts +5 -0
  53. package/types/modules/share/index.d.ts +1 -1
  54. package/types/modules/share/show-share-menu.d.ts +1 -1
  55. package/types/modules/share/types.d.ts +2 -4
  56. package/types/vite/index.d.ts +3 -1
  57. package/dist/devtools/browser-dev-host/assets/browser-dev-host-uq-Wac6k.js +0 -97
  58. package/dist/devtools/browser-dev-host/assets/index-KD2f3Jdz.css +0 -1
  59. package/dist/devtools/browser-dev-host/assets/workbench-state-D-1U0JRq.js +0 -5
  60. package/dist/templates/vue3-vite-ts/README.md.ejs +0 -47
  61. package/dist/templates/vue3-vite-ts/index.html.ejs +0 -12
  62. package/dist/templates/vue3-vite-ts/package.json.ejs +0 -33
  63. package/dist/templates/vue3-vite-ts/src/App.vue +0 -78
  64. package/dist/templates/vue3-vite-ts/src/__tests__/App.spec.ts +0 -148
  65. package/dist/templates/vue3-vite-ts/src/auth-handoff.ts +0 -46
  66. package/dist/templates/vue3-vite-ts/src/main.ts +0 -5
  67. package/dist/templates/vue3-vite-ts/src/styles.css +0 -60
  68. package/dist/templates/vue3-vite-ts/src/vite-env.d.ts +0 -1
  69. package/dist/templates/vue3-vite-ts/tsconfig.app.json +0 -17
  70. package/dist/templates/vue3-vite-ts/tsconfig.json +0 -11
  71. package/dist/templates/vue3-vite-ts/tsconfig.node.json +0 -11
  72. package/dist/templates/vue3-vite-ts/vitest.config.ts +0 -10
@@ -3,7 +3,7 @@
3
3
  var fs = require('node:fs/promises');
4
4
  var os = require('node:os');
5
5
  var path = require('node:path');
6
- var index = require('./index-De687C6-.cjs');
6
+ var index = require('./index-MMW2ibQm.cjs');
7
7
  require('node:module');
8
8
  require('node:fs');
9
9
  require('path');
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index$2 = require('./index-De687C6-.cjs');
3
+ var index$2 = require('./index-MMW2ibQm.cjs');
4
4
  var require$$0$3 = require('fs');
5
5
  var require$$0$2 = require('crypto');
6
6
  var require$$1$2 = require('path');
7
7
  var require$$0$5 = require('assert');
8
8
  var require$$0$4 = require('events');
9
9
  var require$$1$1 = require('util');
10
- var runtimePermissionEnv = require('./runtime-permission-env-CjsCe5bp.cjs');
10
+ var runtimePermissionEnv = require('./runtime-permission-env-CtL8rsjB.cjs');
11
11
  var require$$0$7 = require('net');
12
12
  var require$$0$6 = require('url');
13
13
  var require$$2$1 = 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-De687C6-.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-MMW2ibQm.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-De687C6-.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-MMW2ibQm.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-De687C6-.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-MMW2ibQm.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-De687C6-.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-MMW2ibQm.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-De687C6-.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-MMW2ibQm.cjs', document.baseURI).href)));
250
250
  function __require() { return require$1("node:process"); }
251
251
 
252
252
  var help = {};
@@ -12833,6 +12833,7 @@ const UPDATE_CHECK_TTL_MS = 24 * 60 * 60 * 1000;
12833
12833
  const DEFAULT_TIMEOUT_MS = 1500;
12834
12834
  const UPDATE_CHECK_CACHE_FILE = 'update-check.json';
12835
12835
  const NPM_REGISTRY_URL = `https://registry.npmjs.org/${encodeURIComponent(HB_SDK_PACKAGE_NAME)}`;
12836
+ const PUBLIC_CHANGELOG_URL = 'https://docs.xiaoheihe.cn/hb_sdk/changelog/';
12836
12837
  const paths = envPaths('hb-sdk', { suffix: '' });
12837
12838
  const PACKAGE_JSON_CANDIDATES$1 = [
12838
12839
  path.resolve(__dirname, '..', 'package.json'),
@@ -12887,14 +12888,23 @@ async function getUpdateReminder(options = {}) {
12887
12888
  return createUpdateReminder(currentVersion, latestVersion);
12888
12889
  }
12889
12890
  function formatUpdateReminder(reminder) {
12890
- return `发现新版 ${HB_SDK_PACKAGE_NAME}: ${reminder.currentVersion} -> ${reminder.latestVersion}。升级命令: npm i -D ${HB_SDK_PACKAGE_NAME}@latest`;
12891
+ const latestVersion = parseSemver(reminder.latestVersion);
12892
+ const anchor = latestVersion
12893
+ ? `v${latestVersion.major}-${latestVersion.minor}-${latestVersion.patch}`
12894
+ : `v${reminder.latestVersion.replaceAll('.', '-')}`;
12895
+ const changelogUrl = `${PUBLIC_CHANGELOG_URL}#${anchor}`;
12896
+ return `发现新版 ${HB_SDK_PACKAGE_NAME}: ${reminder.currentVersion} -> ${reminder.latestVersion}。升级命令: npm i -D ${HB_SDK_PACKAGE_NAME}@latest;更新内容: ${changelogUrl}`;
12891
12897
  }
12892
12898
  function isVersionGreater(version, baseline) {
12893
12899
  const compared = compareSemver(version, baseline);
12894
12900
  return compared !== null && compared > 0;
12895
12901
  }
12896
12902
  function createUpdateReminder(currentVersion, latestVersion) {
12897
- if (!latestVersion || !isVersionGreater(latestVersion, currentVersion)) {
12903
+ const parsedLatestVersion = latestVersion ? parseSemver(latestVersion) : null;
12904
+ if (!latestVersion ||
12905
+ !parsedLatestVersion ||
12906
+ parsedLatestVersion.prerelease.length > 0 ||
12907
+ !isVersionGreater(latestVersion, currentVersion)) {
12898
12908
  return null;
12899
12909
  }
12900
12910
  return {
@@ -13343,7 +13353,7 @@ function getPathname(pathWithQuery) {
13343
13353
  }
13344
13354
 
13345
13355
  const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
13346
- const BUILT_CLI_VERSION = '0.8.0-alpha.3';
13356
+ const BUILT_CLI_VERSION = '0.8.0';
13347
13357
  const PACKAGE_JSON_CANDIDATES = [
13348
13358
  path.resolve(__dirname, '..', '..', 'package.json'),
13349
13359
  path.resolve(__dirname, '..', 'package.json'),
@@ -13429,10 +13439,11 @@ function createCliProgram(overrides = {}) {
13429
13439
  }, handlers.printUpdateReminder, resolveLogger));
13430
13440
  addVerboseOption(program
13431
13441
  .command('dev')
13432
- .description('启动当前小程序项目的 Vite dev server 和 Browser Dev Host')
13433
- .option('--port <port>', 'App dev server 端口', parsePositivePort)
13434
- .option('--browser-dev-host-port <port>', 'Browser Dev Host 端口', parsePositivePort)
13435
- .option('--no-open', '不自动打开浏览器调试页')).action(withUpdateReminder(async (options, command) => {
13442
+ .description('启动当前小程序项目的 Vite 开发服务器和浏览器调试页服务')
13443
+ .option('--port <port>', '小程序开发服务器端口', parsePositivePort)
13444
+ .option('--browser-dev-host-port <port>', '浏览器调试页服务端口', parsePositivePort)
13445
+ .option('--no-open', '不自动打开浏览器调试页')
13446
+ .helpOption('-h, --help', '显示命令帮助')).action(withUpdateReminder(async (options, command) => {
13436
13447
  const logger = resolveLogger(command);
13437
13448
  await handlers.runDevCommand(options, { logger });
13438
13449
  }, handlers.printUpdateReminder, resolveLogger));
@@ -13690,39 +13701,39 @@ function createCommandLoggerResolver(options) {
13690
13701
  };
13691
13702
  }
13692
13703
  const defaultClearLoginStatus = async (...args) => {
13693
- const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-DolpqD8K.cjs'); });
13704
+ const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-B3TThMss.cjs'); });
13694
13705
  return clearLoginStatus(...args);
13695
13706
  };
13696
13707
  const defaultLoginToHeybox = async (...args) => {
13697
- const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-DolpqD8K.cjs'); });
13708
+ const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-B3TThMss.cjs'); });
13698
13709
  return loginToHeybox(...args);
13699
13710
  };
13700
13711
  const defaultPrintLoginStatus = async (...args) => {
13701
- const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-DolpqD8K.cjs'); });
13712
+ const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-B3TThMss.cjs'); });
13702
13713
  return printLoginStatus(...args);
13703
13714
  };
13704
13715
  const defaultRunBuildCommand = async (...args) => {
13705
- const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-qWzAbpS7.cjs'); });
13716
+ const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-PYCNacya.cjs'); });
13706
13717
  return runBuildCommand(...args);
13707
13718
  };
13708
13719
  const defaultRunCreateCommand = async (...args) => {
13709
- const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-PV5ua977.cjs'); });
13720
+ const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-BdAg3WGA.cjs'); });
13710
13721
  return runCreateCommand(...args);
13711
13722
  };
13712
13723
  const defaultRunDevCommand = async (...args) => {
13713
- const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-CwKbAm_H.cjs'); }).then(function (n) { return n.dev; });
13724
+ const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-CyZuw7Yn.cjs'); }).then(function (n) { return n.dev; });
13714
13725
  return runDevCommand(...args);
13715
13726
  };
13716
13727
  const defaultRunDoctorCommand = async (...args) => {
13717
- const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-tJUGOYrm.cjs'); });
13728
+ const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-DU8rCfUF.cjs'); });
13718
13729
  return runDoctorCommand(...args);
13719
13730
  };
13720
13731
  const defaultRunSkillInstallCommand = async (...args) => {
13721
- const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-CM40_9WH.cjs'); });
13732
+ const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-cR_wnaw2.cjs'); });
13722
13733
  return runSkillInstallCommand(...args);
13723
13734
  };
13724
13735
  const defaultRunRemoteCommand = async (...args) => {
13725
- const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-rIAQE_G2.cjs'); });
13736
+ const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-DNvI7tHH.cjs'); });
13726
13737
  return runRemoteCommand(...args);
13727
13738
  };
13728
13739
  function resolveStandaloneLogger(options, verbose) {
@@ -11,8 +11,8 @@ var require$$0$4 = require('url');
11
11
  var require$$0 = require('zlib');
12
12
  var require$$0$1 = require('buffer');
13
13
  var require$$1 = require('util');
14
- var index = require('./index-De687C6-.cjs');
15
- var dev = require('./dev-CwKbAm_H.cjs');
14
+ var index = require('./index-MMW2ibQm.cjs');
15
+ var dev = require('./dev-CyZuw7Yn.cjs');
16
16
  require('node:module');
17
17
  require('node:fs');
18
18
  require('node:fs/promises');
@@ -27,12 +27,13 @@ require('node:net');
27
27
  require('node:crypto');
28
28
  require('node:dns/promises');
29
29
  require('node:http');
30
- require('./context-CtS2Thp0.cjs');
31
- require('./session-CzaM2Cq3.cjs');
30
+ require('./context-m2W2XbL0.cjs');
31
+ require('./runtime-permission-env-CtL8rsjB.cjs');
32
+ require('./version-yEn1E2Bg.cjs');
33
+ require('node:async_hooks');
34
+ require('./session-DjBkjaF8.cjs');
32
35
  require('fs');
33
36
  require('constants');
34
- require('./runtime-permission-env-CjsCe5bp.cjs');
35
- require('node:async_hooks');
36
37
  require('undici');
37
38
  require('./browser-RAy8e8cV.cjs');
38
39
  require('node:process');
@@ -40,8 +41,7 @@ require('node:buffer');
40
41
  require('node:url');
41
42
  require('node:util');
42
43
  require('node:child_process');
43
- require('./project-vite-1rvkK-M8.cjs');
44
- require('./version-Bz-AfXQU.cjs');
44
+ require('./project-vite-BQj8YLI4.cjs');
45
45
 
46
46
  var bufferUtil = {exports: {}};
47
47
 
@@ -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-CzaM2Cq3.cjs');
6
+ var session = require('./session-DjBkjaF8.cjs');
7
7
  var browser = require('./browser-RAy8e8cV.cjs');
8
- var index = require('./index-De687C6-.cjs');
8
+ var index = require('./index-MMW2ibQm.cjs');
9
9
  require('node:path');
10
10
  require('fs');
11
11
  require('constants');
@@ -5,7 +5,7 @@ var fs$1 = require('node:fs/promises');
5
5
  var node_module = require('node:module');
6
6
  var path = require('node:path');
7
7
  var node_url = require('node:url');
8
- var index = require('./index-De687C6-.cjs');
8
+ var index = require('./index-MMW2ibQm.cjs');
9
9
 
10
10
  function findProjectRoot(startDir) {
11
11
  let current = path.resolve(startDir);
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  var promises = require('node:readline/promises');
4
- var index = require('./index-De687C6-.cjs');
5
- var session = require('./session-CzaM2Cq3.cjs');
4
+ var index = require('./index-MMW2ibQm.cjs');
5
+ var session = require('./session-DjBkjaF8.cjs');
6
6
  var childProcess = require('node:child_process');
7
7
  var fs = require('node:fs');
8
8
  var fs$1 = require('node:fs/promises');
9
9
  var path = require('node:path');
10
- var runtimePermissionEnv = require('./runtime-permission-env-CjsCe5bp.cjs');
11
- var runtimeGate = require('./runtime-gate-DFjw66kF.cjs');
10
+ var runtimePermissionEnv = require('./runtime-permission-env-CtL8rsjB.cjs');
11
+ var runtimeGate = require('./runtime-gate-BEFp1w_s.cjs');
12
12
  var node_crypto = require('node:crypto');
13
- var context = require('./context-CtS2Thp0.cjs');
13
+ var context = require('./context-m2W2XbL0.cjs');
14
14
  require('node:module');
15
15
  require('path');
16
16
  require('os');
@@ -23,6 +23,7 @@ require('buffer');
23
23
  require('util');
24
24
  require('fs');
25
25
  require('constants');
26
+ require('./version-yEn1E2Bg.cjs');
26
27
  require('node:async_hooks');
27
28
 
28
29
  async function getCDNUploadInfo(options, runtime = {}) {
@@ -271,7 +272,7 @@ function createDefaultCosClient(uploadToken, COS) {
271
272
  };
272
273
  }
273
274
  async function loadCosConstructor() {
274
- const cosModule = await Promise.resolve().then(function () { return require('./index-DVuD75Hr.cjs'); }).then(function (n) { return n.index; });
275
+ const cosModule = await Promise.resolve().then(function () { return require('./index-DATObqzK.cjs'); }).then(function (n) { return n.index; });
275
276
  return cosModule.default;
276
277
  }
277
278
  function formatSize(bytes) {
@@ -530,6 +531,7 @@ async function runDeployCommand(options, runtime = {}) {
530
531
  precheckVersion = precheck.version || precheck.version_normalized || fromVersion;
531
532
  }
532
533
  else {
534
+ const localPermissions = runtimePermissionEnv.readMiniappPermissionsFromPackageJson(projectRoot, runtimePermissionEnv.resolveMiniappSdkVersion());
533
535
  if (typeof packageJson.scripts?.build !== 'string') {
534
536
  throw new Error('package.json scripts.build 未定义,请添加 build 脚本');
535
537
  }
@@ -552,7 +554,8 @@ async function runDeployCommand(options, runtime = {}) {
552
554
  loginBaseUrl,
553
555
  session: session$1,
554
556
  }), { successText: '已读取远端小程序权限' });
555
- skipPlatformCsp = context.shouldSkipMiniappPlatformCsp(detail.runtime_permissions);
557
+ const localNetworkEnabled = !localPermissions.declared || localPermissions.permissions?.network?.enabled === true;
558
+ skipPlatformCsp = localNetworkEnabled && context.shouldSkipMiniappPlatformCsp(detail.runtime_permissions);
556
559
  }
557
560
  catch (error) {
558
561
  logger.warn('未读取到远端 Runtime 权限,构建将继续注入平台 CSP。');
@@ -561,7 +564,8 @@ async function runDeployCommand(options, runtime = {}) {
561
564
  const pm = detectPackageManager(projectRoot);
562
565
  const platform = runtime.platform ?? process.platform;
563
566
  const buildMode = validateBuildMode(env.HB_SDK_ENV?.trim(), platform);
564
- logger.info(`开始构建: ${pm} ${createBuildArgs(pm, buildMode).join(' ')}`);
567
+ const buildScript = await readProjectBuildScript(projectRoot);
568
+ logger.info(`开始构建: ${pm} ${createBuildArgs(pm, buildMode, buildScript).join(' ')}`);
565
569
  await runBuildScript(pm, projectRoot, runtime.spawn ?? childProcess.spawn, {
566
570
  env: runtimePermissionEnv.createMiniappPlatformCspEnv(env, skipPlatformCsp),
567
571
  mode: buildMode,
@@ -801,9 +805,10 @@ function detectPackageManager(projectRoot) {
801
805
  return 'npm';
802
806
  }
803
807
  async function runBuildScript(pm, cwd, spawnImpl, options) {
808
+ const buildScript = await readProjectBuildScript(cwd);
804
809
  await new Promise((resolve, reject) => {
805
810
  const pipeStdoutToStderr = options.outputMode === 'stderr';
806
- const buildArgs = createBuildArgs(pm, options.mode);
811
+ const buildArgs = createBuildArgs(pm, options.mode, buildScript);
807
812
  const isWindows = options.platform === 'win32';
808
813
  const [executable, args] = isWindows ? createWindowsBuildCommand(pm, buildArgs) : [pm, buildArgs];
809
814
  const child = spawnImpl(executable, args, {
@@ -841,8 +846,18 @@ function validateBuildMode(mode, platform) {
841
846
  function escapeWindowsCommandArgument(argument) {
842
847
  return `"${argument}"`;
843
848
  }
844
- function createBuildArgs(pm, mode) {
845
- return ['run', 'build', ...(mode ? [...(pm === 'npm' ? ['--'] : []), '--mode', mode] : [])];
849
+ async function readProjectBuildScript(projectRoot) {
850
+ try {
851
+ const packageJson = JSON.parse(await fs$1.readFile(path.join(projectRoot, 'package.json'), 'utf8'));
852
+ return typeof packageJson.scripts?.build === 'string' ? packageJson.scripts.build : '';
853
+ }
854
+ catch {
855
+ return '';
856
+ }
857
+ }
858
+ function createBuildArgs(pm, mode, buildScript) {
859
+ const modeOption = /\bhb-sdk\s+build\b/.test(buildScript) ? '--env' : '--mode';
860
+ return ['run', 'build', ...(mode ? [...(pm === 'npm' ? ['--'] : []), modeOption, mode] : [])];
846
861
  }
847
862
  async function walkDistFiles(distDir) {
848
863
  const results = [];
@@ -1171,7 +1186,10 @@ async function remoteEntitySwitch(options, context, runtime) {
1171
1186
  async function remoteList(options, context, runtime) {
1172
1187
  const result = await context.api.listMiniPrograms({ keyword: options.keyword, status: options.status });
1173
1188
  const items = Array.isArray(result.items) ? result.items : [];
1174
- const outputItems = items.map((item) => ({ ...toCamelCaseDeep(item), bound: item.mini_program_id === context.binding }));
1189
+ const outputItems = items.map((item) => ({
1190
+ ...toCamelCaseDeep(item),
1191
+ bound: item.mini_program_id === context.binding,
1192
+ }));
1175
1193
  const output = { changed: false, items: outputItems, total: readNumber(result.total, items.length) };
1176
1194
  if (!options.json) {
1177
1195
  if (items.length === 0) {
@@ -1228,9 +1246,11 @@ async function remoteBind(options, context$1, runtime) {
1228
1246
  async function remoteInfo(options, context, runtime) {
1229
1247
  const miniProgramId = requireBinding(context);
1230
1248
  const detail = await context.api.getMiniProgramDetail(miniProgramId);
1231
- const output = { changed: false, miniProgramId, detail: toCamelCaseDeep(detail) };
1249
+ const localPermissions = runtimePermissionEnv.readMiniappPermissionsFromPackageJson(context.packageJson.projectRoot, runtimePermissionEnv.resolveMiniappSdkVersion());
1250
+ const permissionViews = runtimePermissionEnv.composeMiniappRuntimePermissions(localPermissions, detail.runtime_permissions).views;
1251
+ const output = { changed: false, miniProgramId, detail: toCamelCaseDeep(detail), permissions: permissionViews };
1232
1252
  if (!options.json) {
1233
- printMiniProgramDetail(context.logger, detail);
1253
+ printMiniProgramDetail(context.logger, detail, permissionViews);
1234
1254
  }
1235
1255
  return finishRemoteCommand(options, runtime, output);
1236
1256
  }
@@ -1356,7 +1376,9 @@ async function remotePreview(options, context, runtime) {
1356
1376
  }
1357
1377
  async function remoteDangerousWrite(options, context, runtime) {
1358
1378
  const miniProgramId = requireBinding(context);
1359
- const version = options.command === 'release' || options.command === 'withdraw' ? requireNonEmpty(options.version, `remote ${options.command} 必须传 <version>`) : undefined;
1379
+ const version = options.command === 'release' || options.command === 'withdraw'
1380
+ ? requireNonEmpty(options.version, `remote ${options.command} 必须传 <version>`)
1381
+ : undefined;
1360
1382
  const detail = await context.api.getMiniProgramDetail(miniProgramId);
1361
1383
  await confirmDangerousRemoteChange(options, runtime, context.logger, {
1362
1384
  miniProgramId,
@@ -1545,7 +1567,18 @@ function parseEntityId(value) {
1545
1567
  return entityId;
1546
1568
  }
1547
1569
  async function listDeveloperEntitiesWithAccessFallback(context) {
1548
- const result = await context.api.listDeveloperEntities();
1570
+ let result;
1571
+ try {
1572
+ result = await context.api.listDeveloperEntities();
1573
+ }
1574
+ catch (error) {
1575
+ const fallback = createEntityFromAccessStatus(await context.api.accessStatus());
1576
+ if (!fallback) {
1577
+ throw error;
1578
+ }
1579
+ context.logger.debug('开发者主体列表不可用,已回退使用小程序工坊准入主体');
1580
+ return { fromAccessFallback: true, items: [fallback], total: 1 };
1581
+ }
1549
1582
  const items = normalizeDeveloperEntities(result);
1550
1583
  if (items.length > 0) {
1551
1584
  return { items, total: readNumber(result.total, items.length) };
@@ -1716,7 +1749,7 @@ async function promptConfirm(message, runtime) {
1716
1749
  rl.close();
1717
1750
  }
1718
1751
  }
1719
- function printMiniProgramDetail(logger, detail) {
1752
+ function printMiniProgramDetail(logger, detail, permissionViews) {
1720
1753
  logger.info(`Mini-program: ${detail.mini_program_id ?? '--'}`);
1721
1754
  logger.info(`Name: ${detail.name ?? '--'}`);
1722
1755
  logger.info(`Status: ${detail.status ?? '--'}`);
@@ -1727,14 +1760,13 @@ function printMiniProgramDetail(logger, detail) {
1727
1760
  if (detail.protocol_string) {
1728
1761
  logger.info(`Protocol: ${detail.protocol_string}`);
1729
1762
  }
1730
- const runtimePermissions = detail.runtime_permissions;
1731
- if (runtimePermissions) {
1732
- logger.info(`Runtime 权限: schema=${String(runtimePermissions.schema_version ?? '--')} revision=${String(runtimePermissions.revision ?? '--')}`);
1733
- if (Array.isArray(runtimePermissions.entries)) {
1734
- runtimePermissions.entries.forEach((entry) => {
1735
- logger.info(` ${JSON.stringify(entry)}`);
1736
- });
1737
- }
1763
+ logger.info('权限:');
1764
+ for (const view of permissionViews) {
1765
+ const approval = view.access === 'platform-approval' ? ` 需申请=是 批准=${view.approved ? '' : '否'}` : ' 需申请=否';
1766
+ const configs = view.requestedConfig
1767
+ ? ` requested=${JSON.stringify(view.requestedConfig)} approved=${JSON.stringify(view.approvedConfig)} effective=${JSON.stringify(view.effectiveConfig)}`
1768
+ : '';
1769
+ logger.info(` ${view.key}: 声明=${view.declared ? '是' : '否'}${approval} 最终=${view.effective ? '可用' : '不可用'}${configs}`);
1738
1770
  }
1739
1771
  }
1740
1772
  function printDeveloperEntities(logger, entities) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var runtimePermissionEnv = require('./runtime-permission-env-CjsCe5bp.cjs');
3
+ var runtimePermissionEnv = require('./runtime-permission-env-CtL8rsjB.cjs');
4
4
 
5
5
  const MINIAPP_PLATFORM_VALUES = ['android', 'ios', 'ohos', 'windows', 'macos', 'linux'];
6
6
  function isValidMiniappManifestVersion(version) {
@@ -32,10 +32,18 @@ function parseMiniappManifestJson(raw, sourceLabel = 'manifest.json') {
32
32
  };
33
33
  }
34
34
  function validateMiniappManifestForDeploy(manifest) {
35
+ const version = validateMiniappManifestVersion(manifest.version, 'manifest.version');
36
+ const sdkVersion = validateSdkVersion(manifest.sdkVersion, 'manifest.sdkVersion');
37
+ const permissions = runtimePermissionEnv.parseMiniappPermissions(manifest.permissions, {
38
+ present: Object.prototype.hasOwnProperty.call(manifest, 'permissions'),
39
+ sdkVersion,
40
+ sourceLabel: 'manifest.permissions',
41
+ });
35
42
  return {
36
- version: validateMiniappManifestVersion(manifest.version, 'manifest.version'),
37
- sdkVersion: validateSdkVersion(manifest.sdkVersion, 'manifest.sdkVersion'),
43
+ version,
44
+ sdkVersion,
38
45
  platforms: validateMiniappPlatforms(manifest.platforms, 'manifest.platforms'),
46
+ ...(permissions.permissions === undefined ? {} : { permissions: permissions.permissions }),
39
47
  };
40
48
  }
41
49
  function validateMiniappPlatforms(platforms, sourceLabel = 'platforms') {