@heybox/hb-sdk 0.8.1-alpha.7 → 0.8.1-alpha.9

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 (33) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/README.md +1 -1
  3. package/dist/cli-chunks/{build-C8oN_Ms9.cjs → build-D8eh0bxZ.cjs} +4 -4
  4. package/dist/cli-chunks/{context-DZkqvg9S.cjs → context-JfGWhXSD.cjs} +11 -2
  5. package/dist/cli-chunks/{create-CToSHRfO.cjs → create-BiqK-4fa.cjs} +1 -1
  6. package/dist/cli-chunks/{dev-CTA0lsLD.cjs → dev-u27Q6a-K.cjs} +165 -34
  7. package/dist/cli-chunks/{doctor-DRa_kjP1.cjs → doctor-ppQbhj7e.cjs} +1 -1
  8. package/dist/cli-chunks/{index-zNpZDWhc.cjs → index-B2eLzOSD.cjs} +15 -15
  9. package/dist/cli-chunks/{index-Bkl5YmtN.cjs → index-CtR3w1bw.cjs} +2 -2
  10. package/dist/cli-chunks/{index.esm-CGoUW47e.cjs → index.esm-CCDqeyc7.cjs} +7 -7
  11. package/dist/cli-chunks/{login-CCEPk2Ok.cjs → login-BSySslS2.cjs} +2 -2
  12. package/dist/cli-chunks/{project-vite-couFw5bL.cjs → project-vite-C-r7_UvY.cjs} +1 -1
  13. package/dist/cli-chunks/{remote-DQ70o-Km.cjs → remote-WvNfCBeJ.cjs} +6 -6
  14. package/dist/cli-chunks/{runtime-permission-env-BN43V7d0.cjs → runtime-permission-env-g_2W-HqP.cjs} +1 -1
  15. package/dist/cli-chunks/{session-C1R_39si.cjs → session-CaNwlovY.cjs} +1 -1
  16. package/dist/cli-chunks/{skill-CVXOE5jH.cjs → skill-V_4EkY23.cjs} +2 -2
  17. package/dist/cli-chunks/{version-DbDVL6vm.cjs → version-Dox07wdq.cjs} +1 -1
  18. package/dist/cli.cjs +1 -1
  19. package/dist/devtools/browser-dev-host/assets/browser-dev-host-BYKHn0Ny.js +101 -0
  20. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-DnPRjCa3.js → desktop-app-launch-BE-Jw0zD.js} +3 -3
  21. package/dist/devtools/browser-dev-host/assets/{index-DocojUxT.js → index-wEzSxtKd.js} +4 -4
  22. package/dist/devtools/browser-dev-host/index.html +2 -2
  23. package/dist/index.cjs.js +1 -1
  24. package/dist/index.esm.js +1 -1
  25. package/dist/vite.cjs.js +1 -1
  26. package/dist/vite.esm.js +1 -1
  27. package/package.json +7 -7
  28. package/skill/SKILL.md +1 -1
  29. package/skill/references/api-root.md +1 -1
  30. package/skill/references/cli.md +2 -0
  31. package/skill/skill.json +5 -5
  32. package/types/protocol/dev-session.d.ts +2 -1
  33. package/dist/devtools/browser-dev-host/assets/browser-dev-host-CH6L1ZJI.js +0 -101
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  本文件随 `@heybox/hb-sdk` npm 包公开分发,只记录外部小程序开发者可观察到的变化。内部集成、实现策略和审查证据不在此维护。
4
4
 
5
+ ## 0.8.1-alpha.9
6
+
7
+ - `hb-sdk dev` 浏览器调试台(Browser Dev Host)现在按当前 SDK 实际版本校验握手;开发者需升级 `@heybox/hb-sdk` 到 0.8.1-alpha.9 或更高版本后再进行本地调试,旧版本 SDK 页面会被拒绝启动。
8
+
9
+ ## 0.8.1-alpha.8
10
+
11
+ - 手机 Dev Session 仅使用当前版本声明与平台批准结果求交后的有效权限;两者均允许 `useOfficialDomain: true` 时,真机扫码调试可访问官方域名,本地调试状态不能扩大该权限。
12
+ - 创建手机调试会话前会刷新远端批准结果;读取失败时拒绝签发新会话,已创建会话仍按短期有效期自动失效。
13
+ - 保持升级或回滚 CLI 时的新旧调试页兼容,并继续拒绝官方账号敏感路径、敏感请求头和自动重定向。
14
+
5
15
  ## 0.8.1-alpha.7
6
16
 
7
17
  - `network.request` 已标记为废弃,但仍可调用,目前没有替代接口。请移除 `withCredentials`;旧版 SDK 的 wire 字段由 Runtime 兼容忽略。Mobile 对官方 HTTPS 默认端口目标自动携带 Native Cookie,第三方不自动携带。需要第三方会话时可显式提供应用 `Cookie` 或 `Authorization`;Web Host 受浏览器 Fetch 限制,不支持显式 `Cookie`。`Origin`、`Referer`、`User-Agent` 由 Host 管理,路由/分帧/逐跳请求头不能由小程序设置。
@@ -34,7 +44,6 @@
34
44
 
35
45
  - 目标平台声明统一迁移到 `package.json#heybox.platforms`;`miniappManifest()` 恢复无参调用,并在构建时将该声明写入 `dist/manifest.json`。
36
46
  - `hb-sdk dev`、`hb-sdk build` 和普通 `hb-sdk remote deploy` 会拒绝缺失或非法的平台声明;build/deploy 也会拒绝与项目配置不一致的 Manifest。已有项目升级时需把原 Vite 参数中的 `platforms` 移入 `package.json#heybox`。
37
-
38
47
  ## 0.8.1-alpha.2
39
48
 
40
49
  - 新增 `environment.getInfo()` 与 `environment.getInfoSync()`,用于读取运行模式、小黑盒 App 版本、canonical 小程序 ID/版本、操作系统和 SDK 版本的冻结快照。
package/README.md CHANGED
@@ -355,7 +355,7 @@ hb-sdk remote deploy --release-note "本次更新说明"
355
355
 
356
356
  右上角的桌面图标与二维码按钮使用相同样式。点击桌面图标后选择小黑盒正式版或 Debug 版,选择会立即请求客户端打开当前本地页面并在本地记忆,不需要二次确认。桌面端只接受无凭据的 `http://127.0.0.1:<port>`,拒绝 `localhost`、IPv6 和 LAN 地址,不提供地址选择或手工 URL;手机二维码继续独立选择局域网地址。入口仅在项目已绑定且本地调试启动票有效时可用,统一 URI 只携带 `mini_program_id` 和 `mini_url`,启动票继续由 detail 从同源 `launch.json` 发现并交给后端验证。浏览器无法确认客户端是否真正打开,因此调试台只记录“已请求打开”,不会自动切换正式版或 Debug 版。
357
357
 
358
- 浏览器调试入口不要求 CLI 登录或项目绑定;需要账号或远端配置的能力会按当前可用上下文返回结果或明确失败。调试台不提供权限修改入口,远端权限快照始终是 Runtime 的规范输入。手机验收统一从右上角二维码入口进入,选择手机可达的局域网网卡后扫码;二维码使用 `open_inapp` 与 `heybox://` `openWindow` 包装的短链。完整操作见 [CLI 指南](https://docs.xiaoheihe.cn/hb_sdk/guide/cli),实现与安全边界由 [Runtime Host 迁移](./docs/runtime-host-migration.md) 维护。
358
+ 浏览器调试入口不要求 CLI 登录或项目绑定;需要账号或远端配置的能力会按当前可用上下文返回结果或明确失败。调试台不提供权限修改入口,远端权限快照始终是 Runtime 的规范输入。手机 Dev Session 只使用当前版本声明与平台批准结果求交后的有效权限;两者均允许 `useOfficialDomain: true` 时会保留官方域名权限,浏览器端不能本地覆盖。手机验收统一从右上角二维码入口进入,选择手机可达的局域网网卡后扫码;二维码使用 `open_inapp` 与 `heybox://` `openWindow` 包装的短链。完整操作见 [CLI 指南](https://docs.xiaoheihe.cn/hb_sdk/guide/cli),实现与安全边界由 [Runtime Host 迁移](./docs/runtime-host-migration.md) 维护。
359
359
 
360
360
  远端提交前需要完成 CLI 登录和小程序绑定。完整的登录、绑定、预览、版本与发布流程见 [CLI 指南](https://docs.xiaoheihe.cn/hb_sdk/guide/cli)。
361
361
 
@@ -3,13 +3,13 @@
3
3
  var fs$1 = require('node:fs');
4
4
  var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var runtimePermissionEnv = require('./runtime-permission-env-BN43V7d0.cjs');
6
+ var runtimePermissionEnv = require('./runtime-permission-env-g_2W-HqP.cjs');
7
7
  require('node:crypto');
8
8
  require('node:zlib');
9
9
  var runtimeGate = require('./runtime-gate-BWb8QIcX.cjs');
10
- var index = require('./index-zNpZDWhc.cjs');
11
- var projectVite = require('./project-vite-couFw5bL.cjs');
12
- require('./version-DbDVL6vm.cjs');
10
+ var index = require('./index-B2eLzOSD.cjs');
11
+ var projectVite = require('./project-vite-C-r7_UvY.cjs');
12
+ require('./version-Dox07wdq.cjs');
13
13
  require('node:async_hooks');
14
14
  require('node:module');
15
15
  require('path');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var runtimePermissionEnv = require('./runtime-permission-env-BN43V7d0.cjs');
4
- var session = require('./session-C1R_39si.cjs');
3
+ var runtimePermissionEnv = require('./runtime-permission-env-g_2W-HqP.cjs');
4
+ var session = require('./session-CaNwlovY.cjs');
5
5
  var fs$1 = require('node:fs');
6
6
  var fs = require('node:fs/promises');
7
7
  var path = require('node:path');
@@ -32,6 +32,14 @@ function createBrowserDevPermissionState(context) {
32
32
  function createBrowserDevRuntimePermissions(snapshot, state) {
33
33
  return createDevRuntimePermissions(snapshot, state, state.networkRequest.useOfficialDomain);
34
34
  }
35
+ /** Mobile Dev Session 只接受线上远端权限快照,不读取 Browser 本地权限状态。 */
36
+ function createMobileDevSessionRuntimePermissions(context) {
37
+ if (context.source !== 'remote') {
38
+ return { schema_version: 1, entries: [] };
39
+ }
40
+ const state = createBrowserDevPermissionState(context);
41
+ return createDevRuntimePermissions(context.runtimePermissions, state, state.networkRequest.useOfficialDomain);
42
+ }
35
43
  function cloneDefaultPermissionState() {
36
44
  return {
37
45
  networkRequest: { ...DEFAULT_PERMISSION_STATE.networkRequest },
@@ -388,6 +396,7 @@ exports.MiniProgramProjectBindingError = MiniProgramProjectBindingError;
388
396
  exports.createBrowserDevPermissionState = createBrowserDevPermissionState;
389
397
  exports.createBrowserDevRuntimePermissions = createBrowserDevRuntimePermissions;
390
398
  exports.createLocalDevLaunchToken = createLocalDevLaunchToken;
399
+ exports.createMobileDevSessionRuntimePermissions = createMobileDevSessionRuntimePermissions;
391
400
  exports.createRemoteApiClientForEnvironment = createRemoteApiClientForEnvironment;
392
401
  exports.getBoundMiniProgram = getBoundMiniProgram;
393
402
  exports.readBoundMiniProgramId = readBoundMiniProgramId;
@@ -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-zNpZDWhc.cjs');
8
+ var index = require('./index-B2eLzOSD.cjs');
9
9
  require('node:module');
10
10
  require('os');
11
11
  require('readline');
@@ -8,17 +8,17 @@ var net = require('node:net');
8
8
  var promises = require('node:dns/promises');
9
9
  var node_http = require('node:http');
10
10
  var node_module = require('node:module');
11
- var context = require('./context-DZkqvg9S.cjs');
12
- var runtimePermissionEnv = require('./runtime-permission-env-BN43V7d0.cjs');
11
+ var context = require('./context-JfGWhXSD.cjs');
12
+ var runtimePermissionEnv = require('./runtime-permission-env-g_2W-HqP.cjs');
13
13
  var undici = require('undici');
14
14
  var fs$1 = require('node:fs/promises');
15
- var index = require('./index-zNpZDWhc.cjs');
15
+ var index = require('./index-B2eLzOSD.cjs');
16
16
  var require$$0$1 = require('crypto');
17
17
  var require$$0 = require('buffer');
18
- var session = require('./session-C1R_39si.cjs');
18
+ var session = require('./session-CaNwlovY.cjs');
19
19
  var browser = require('./browser-RAy8e8cV.cjs');
20
- var projectVite = require('./project-vite-couFw5bL.cjs');
21
- var version = require('./version-DbDVL6vm.cjs');
20
+ var projectVite = require('./project-vite-C-r7_UvY.cjs');
21
+ var version = require('./version-Dox07wdq.cjs');
22
22
  require('node:zlib');
23
23
 
24
24
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
@@ -623,15 +623,100 @@ function readErrorMessage(error) {
623
623
  return error instanceof Error ? error.message : String(error);
624
624
  }
625
625
 
626
+ const PATHNAME_MAX_DECODE_ROUNDS = 4;
627
+ const OFFICIAL_ROOT_DOMAINS = ['xiaoheihe.cn', 'max-c.com', 'debugmode.cn', 'maxjia.com'];
628
+ const DENIED_REQUEST_HEADERS = new Set([
629
+ 'connection',
630
+ 'content-length',
631
+ 'host',
632
+ 'keep-alive',
633
+ 'proxy-connection',
634
+ 'te',
635
+ 'trailer',
636
+ 'transfer-encoding',
637
+ 'upgrade',
638
+ ]);
639
+ /** 任意 origin 都不得通过公开 network.request 访问的 Runtime 私有路径。 */
640
+ const PUBLIC_NETWORK_PROTECTED_PATH_PREFIXES = ['/user_miniprogram/runtime/auth', '/user_miniprogram/openapi/v1'];
641
+ /** 官方 origin 上会签发、恢复或校验账号 credential 的私有路径。 */
642
+ const PUBLIC_NETWORK_OFFICIAL_ACCOUNT_SENSITIVE_PATH_PREFIXES = [
643
+ '/account/restore_login',
644
+ '/account/check_login',
645
+ '/account/login',
646
+ '/account/get_login_code',
647
+ '/account/login_code',
648
+ '/account/get_qrcode_url',
649
+ '/account/qr_state',
650
+ '/account/google_2fa_verify',
651
+ '/account/open/login',
652
+ '/account/captcha',
653
+ '/account/get_verify_code',
654
+ '/account/send_verify_code',
655
+ '/account/verify_code',
656
+ ];
657
+ /** 判断公开网络能力是否命中 Runtime 或官方账号敏感路径。 */
658
+ function isProtectedMiniProgramNetworkPath(pathname, official) {
659
+ const normalized = normalizePublicNetworkPathname(pathname);
660
+ if (normalized === null)
661
+ return true;
662
+ if (matchesPathPrefix(normalized, PUBLIC_NETWORK_PROTECTED_PATH_PREFIXES))
663
+ return true;
664
+ return official && matchesPathPrefix(normalized, PUBLIC_NETWORK_OFFICIAL_ACCOUNT_SENSITIVE_PATH_PREFIXES);
665
+ }
666
+ /** 使用 Runtime 唯一的官方域名分类规则判断请求目标。 */
667
+ function isOfficialMiniProgramNetworkUrl(url) {
668
+ const hostname = url.hostname.toLowerCase().replace(/\.$/, '');
669
+ return OFFICIAL_ROOT_DOMAINS.some((rootDomain) => hostname === rootDomain || hostname.endsWith(`.${rootDomain}`));
670
+ }
671
+ /** 判断公开网络能力是否禁止调用方设置该请求头。 */
672
+ function isForbiddenMiniProgramNetworkRequestHeader(name) {
673
+ const normalized = name.trim().toLowerCase();
674
+ return DENIED_REQUEST_HEADERS.has(normalized) || /^(?:x-heybox|x-xhh)-(?:access-token|auth|authorization|pkey|session|token)$/.test(normalized);
675
+ }
676
+ function normalizePublicNetworkPathname(pathname) {
677
+ let decoded = pathname;
678
+ for (let round = 0; round < PATHNAME_MAX_DECODE_ROUNDS; round += 1) {
679
+ let next;
680
+ try {
681
+ next = decodeURIComponent(decoded);
682
+ }
683
+ catch {
684
+ return null;
685
+ }
686
+ if (next === decoded)
687
+ return normalizeDecodedPathname(decoded);
688
+ decoded = next;
689
+ }
690
+ try {
691
+ if (decodeURIComponent(decoded) !== decoded)
692
+ return null;
693
+ }
694
+ catch {
695
+ return null;
696
+ }
697
+ return normalizeDecodedPathname(decoded);
698
+ }
699
+ function matchesPathPrefix(pathname, prefixes) {
700
+ return prefixes.some((prefix) => pathname === prefix || pathname.startsWith(`${prefix}/`));
701
+ }
702
+ function normalizeDecodedPathname(pathname) {
703
+ const segments = [];
704
+ for (const segment of pathname.replace(/\\/g, '/').split('/')) {
705
+ if (!segment || segment === '.')
706
+ continue;
707
+ if (segment === '..')
708
+ segments.pop();
709
+ else
710
+ segments.push(segment);
711
+ }
712
+ return `/${segments.join('/')}`;
713
+ }
714
+
626
715
  const MAX_BROWSER_DEV_HOST_NETWORK_REQUEST_BODY = 2 * 1024 * 1024;
627
716
  const MAX_BROWSER_DEV_HOST_NETWORK_RESPONSE_BODY = 5 * 1024 * 1024;
628
717
  const DENIED_NETWORK_TARGETS = createDeniedNetworkTargets();
629
718
  const CREDENTIAL_RESPONSE_HEADER_RE = /^(?:authentication-info|authorization|cookie|cookie2|proxy-authenticate|proxy-authentication-info|proxy-authorization|set-cookie|set-cookie2|www-authenticate|pkey|x-pkey|x-access-token|x-auth-token|x-api-key)$/i;
630
719
  const HOST_CONTROLLED_REQUEST_HEADERS = new Set(['origin', 'referer', 'user-agent']);
631
- const TRANSPORT_CONTROLLED_REQUEST_HEADERS = new Set([
632
- 'connection', 'content-length', 'host', 'keep-alive', 'proxy-connection',
633
- 'te', 'trailer', 'transfer-encoding', 'upgrade',
634
- ]);
635
720
  async function handleBrowserDevHostNetworkProxy(request, response, fetchImpl, lookupHostname, options) {
636
721
  const cors = options.cors === true;
637
722
  if (request.method === 'OPTIONS') {
@@ -650,7 +735,7 @@ async function handleBrowserDevHostNetworkProxy(request, response, fetchImpl, lo
650
735
  payload = await readJsonRequestBody(request);
651
736
  const requestAbort = createBrowserDevHostRequestAbortScope(request, response);
652
737
  try {
653
- const result = await requestBrowserDevHostNetwork(payload, fetchImpl, lookupHostname, options.allowedHttpOrigins, requestAbort.signal);
738
+ const result = await requestBrowserDevHostNetwork(payload, fetchImpl, lookupHostname, options.allowedHttpOrigins, requestAbort.signal, options.permission);
654
739
  if (typeof result.status === 'number' && (result.status < 200 || result.status >= 300)) {
655
740
  logBrowserDevHostNetworkProxyDiagnostic('http_status', payload, result);
656
741
  }
@@ -706,11 +791,12 @@ function writeNetworkJsonResponse(response, status, body, cors) {
706
791
  writeJsonResponse(response, status, body);
707
792
  }
708
793
  const BROWSER_DEV_HOST_NETWORK_MULTIPART_UNSUPPORTED_MESSAGE = 'network.request 不支持 multipart/form-data。App Host 客户端代发仅支持 application/x-www-form-urlencoded(form)与 application/json;请将 data 编码为 form 字符串(例如 new URLSearchParams({...}).toString())并设置 Content-Type: application/x-www-form-urlencoded。文件上传请使用专用上传能力,勿手写 multipart boundary。';
709
- async function requestBrowserDevHostNetwork(payload, fetchImpl, lookupHostname, allowedHttpOrigins, requestSignal) {
794
+ async function requestBrowserDevHostNetwork(payload, fetchImpl, lookupHostname, allowedHttpOrigins, requestSignal, permission) {
710
795
  if (!isRecord$2(payload) || typeof payload.url !== 'string' || !payload.url.trim()) {
711
796
  throw createBrowserDevHostError(400, 'INVALID_NETWORK_REQUEST', 'network.request url 必须是非空字符串');
712
797
  }
713
798
  const url = createBrowserDevHostNetworkUrl(payload.url, payload.params);
799
+ assertMiniProgramNetworkPolicy(url, permission);
714
800
  const method = typeof payload.method === 'string' && payload.method.trim() ? payload.method.trim().toUpperCase() : 'GET';
715
801
  const headers = normalizeBrowserDevHostNetworkHeaders(payload.headers);
716
802
  assertSupportedBrowserDevHostNetworkRequestShape(headers, payload.data);
@@ -913,8 +999,8 @@ function normalizeBrowserDevHostNetworkHeaders(headers) {
913
999
  return normalized;
914
1000
  }
915
1001
  Object.entries(headers).forEach(([key, value]) => {
916
- if (TRANSPORT_CONTROLLED_REQUEST_HEADERS.has(key.trim().toLowerCase())) {
917
- throw createBrowserDevHostError(400, 'INVALID_NETWORK_REQUEST', `network.request 请求头由 Host 传输层管理: ${key}`);
1002
+ if (isForbiddenMiniProgramNetworkRequestHeader(key)) {
1003
+ throw createBrowserDevHostError(400, 'INVALID_NETWORK_REQUEST', `network.request 不允许设置敏感请求头: ${key}`);
918
1004
  }
919
1005
  if (typeof value === 'string' && !isHostManagedRequestHeader(key)) {
920
1006
  normalized.set(key, value);
@@ -926,6 +1012,17 @@ function isHostManagedRequestHeader(name) {
926
1012
  const normalized = name.trim().toLowerCase();
927
1013
  return HOST_CONTROLLED_REQUEST_HEADERS.has(normalized);
928
1014
  }
1015
+ function assertMiniProgramNetworkPolicy(url, permission) {
1016
+ if (!permission)
1017
+ return;
1018
+ const official = isOfficialMiniProgramNetworkUrl(url);
1019
+ if (official && !permission.useOfficialDomain) {
1020
+ throw createBrowserDevHostError(403, 'PERMISSION_DENIED', '当前小程序暂不支持访问官方域名');
1021
+ }
1022
+ if (isProtectedMiniProgramNetworkPath(url.pathname, official)) {
1023
+ throw createBrowserDevHostError(403, 'PERMISSION_DENIED', 'network.request 不允许访问 Runtime 或账号敏感接口');
1024
+ }
1025
+ }
929
1026
  /**
930
1027
  * 与 App Host 对齐:Mock 不再放行 multipart,避免“本地成功、上线失败”。
931
1028
  */
@@ -1063,7 +1160,8 @@ function createDevSessionRoutes(options) {
1063
1160
  }
1064
1161
  try {
1065
1162
  const payload = await readJsonRequestBody(request);
1066
- const validated = validateDevSessionCreatePayload(payload, options.allowedMiniUrlOrigins);
1163
+ const runtimePermissions = context.createMobileDevSessionRuntimePermissions(await options.readDevContext());
1164
+ const validated = validateDevSessionCreatePayload(payload, options.allowedMiniUrlOrigins, runtimePermissions);
1067
1165
  reapExpiredDevSessions(devSessions, expiredDevSessions, options.now());
1068
1166
  const replacedTokens = findDevSessionTokensForOrigin(devSessions, validated.miniUrlOrigin);
1069
1167
  if (devSessions.size - replacedTokens.length >= MAX_ACTIVE_DEV_SESSIONS) {
@@ -1082,6 +1180,7 @@ function createDevSessionRoutes(options) {
1082
1180
  expiresAt,
1083
1181
  miniUrlOrigin: validated.miniUrlOrigin,
1084
1182
  networkRequestEnabled: validated.networkRequestEnabled,
1183
+ useOfficialDomain: validated.useOfficialDomain,
1085
1184
  serialized: JSON.stringify(snapshot),
1086
1185
  });
1087
1186
  try {
@@ -1130,7 +1229,7 @@ function createDevSessionRoutes(options) {
1130
1229
  },
1131
1230
  };
1132
1231
  }
1133
- function validateDevSessionCreatePayload(payload, allowedMiniUrlOrigins) {
1232
+ function validateDevSessionCreatePayload(payload, allowedMiniUrlOrigins, runtimePermissions) {
1134
1233
  if (!isRecord$2(payload) || Object.keys(payload).some((key) => !['mini_url_origin', 'runtime_permissions'].includes(key))) {
1135
1234
  throw new TypeError('Dev Session body is invalid');
1136
1235
  }
@@ -1150,18 +1249,16 @@ function validateDevSessionCreatePayload(payload, allowedMiniUrlOrigins) {
1150
1249
  !allowedMiniUrlOrigins.has(miniUrlOrigin.origin)) {
1151
1250
  throw new TypeError('mini_url_origin must be an allowed LAN origin');
1152
1251
  }
1153
- const parsedPermissions = runtimePermissionEnv.parseMiniProgramRuntimePermissions(payload.runtime_permissions);
1252
+ const parsedPermissions = runtimePermissionEnv.parseMiniProgramRuntimePermissions(runtimePermissions);
1154
1253
  if (!parsedPermissions.valid) {
1155
1254
  throw new TypeError('runtime_permissions is invalid');
1156
1255
  }
1157
1256
  const networkPermission = parsedPermissions.permissions.network;
1158
- if (networkPermission?.config.useOfficialDomain !== false) {
1159
- throw new TypeError('Dev Session does not allow official domains');
1160
- }
1161
1257
  return {
1162
1258
  miniUrlOrigin: miniUrlOrigin.origin,
1163
- networkRequestEnabled: networkPermission.status === 'enabled',
1164
- runtimePermissions: JSON.parse(JSON.stringify(payload.runtime_permissions)),
1259
+ networkRequestEnabled: networkPermission?.status === 'enabled',
1260
+ useOfficialDomain: networkPermission?.status === 'enabled' && networkPermission.config.useOfficialDomain === true,
1261
+ runtimePermissions: JSON.parse(JSON.stringify(runtimePermissions)),
1165
1262
  };
1166
1263
  }
1167
1264
  async function handleTokenNetworkProxy(request, response, token, runtime) {
@@ -1191,6 +1288,7 @@ async function handleTokenNetworkProxy(request, response, token, runtime) {
1191
1288
  await handleBrowserDevHostNetworkProxy(request, response, runtime.fetchImpl, runtime.lookupHostname, {
1192
1289
  allowedHttpOrigins: new Set([resolved.session.miniUrlOrigin]),
1193
1290
  cors: true,
1291
+ permission: { useOfficialDomain: resolved.session.useOfficialDomain },
1194
1292
  });
1195
1293
  }
1196
1294
  function resolveDevSession(token, devSessions, expiredDevSessions, now) {
@@ -1852,8 +1950,8 @@ const DEFAULT_CHANNEL_TRANSPORT = {
1852
1950
  };
1853
1951
  const IPV4_LOOPBACK_ADDRESSES = new net.BlockList();
1854
1952
  IPV4_LOOPBACK_ADDRESSES.addSubnet('127.0.0.0', 8, 'ipv4');
1855
- const { WebSocket, WebSocketServer } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-CTA0lsLD.cjs', document.baseURI).href)))('ws');
1856
- const { parse: parseHtml } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-CTA0lsLD.cjs', document.baseURI).href)))('parse5');
1953
+ const { WebSocket, WebSocketServer } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-u27Q6a-K.cjs', document.baseURI).href)))('ws');
1954
+ const { parse: parseHtml } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-u27Q6a-K.cjs', document.baseURI).href)))('parse5');
1857
1955
  const BROWSER_DEV_HOST_ROOT_CANDIDATES = [
1858
1956
  path.resolve(__dirname, 'devtools/browser-dev-host'),
1859
1957
  path.resolve(__dirname, '../devtools/browser-dev-host'),
@@ -1908,6 +2006,8 @@ async function startBrowserDevHostServer(options) {
1908
2006
  loginAvailable: options.loginService !== undefined,
1909
2007
  cliAuth: options.cliAuth,
1910
2008
  readDevContext: () => bootstrap.devContext ?? { source: 'anonymous', runtimePermissions: bootstrap.runtimePermissions },
2009
+ readMobileDevSessionContext: options.readMobileDevSessionContext ??
2010
+ (() => Promise.resolve(bootstrap.devContext ?? { source: 'anonymous', runtimePermissions: bootstrap.runtimePermissions })),
1911
2011
  readLanAddresses: () => bootstrap.lanAddresses,
1912
2012
  mobileLaunchRedirectRegistry,
1913
2013
  onMobileDevSessionCreated: options.onMobileDevSessionCreated,
@@ -2077,6 +2177,7 @@ function createBrowserDevHostServer(root, runtime) {
2077
2177
  fetchImpl: runtime.fetchImpl,
2078
2178
  lookupHostname: runtime.lookupHostname,
2079
2179
  now: runtime.now,
2180
+ readDevContext: runtime.readMobileDevSessionContext,
2080
2181
  onCreated: ({ expiresAt, miniUrlOrigin, token }, request) => {
2081
2182
  const origin = new URL(readRequestOrigin(request));
2082
2183
  const hostname = origin.hostname.startsWith('[') && origin.hostname.endsWith(']') ? origin.hostname.slice(1, -1) : origin.hostname;
@@ -10944,7 +11045,7 @@ function assertNodeRuntimeCapabilities(ctx, settings) {
10944
11045
  function createNodeRealtimeDriverRegistry() {
10945
11046
  const registry = createRuntimeRealtimeDriverRegistry();
10946
11047
  registry.registerLazy('node-websocket', async () => {
10947
- const mod = await Promise.resolve().then(function () { return require('./index.esm-CGoUW47e.cjs'); });
11048
+ const mod = await Promise.resolve().then(function () { return require('./index.esm-CCDqeyc7.cjs'); });
10948
11049
  return mod.createNodeWebSocketRuntimeDriver();
10949
11050
  });
10950
11051
  return registry;
@@ -15064,6 +15165,7 @@ async function runDevCommand(options, runtime = {}) {
15064
15165
  projectRoot,
15065
15166
  timeoutMs: runtime.devContextTimeoutMs ?? DEFAULT_DEV_CONTEXT_TIMEOUT_MS,
15066
15167
  });
15168
+ let currentDevContext = devLaunchContext;
15067
15169
  let launchRuntimePermissions = context.createBrowserDevRuntimePermissions(devLaunchContext.runtimePermissions, context.createBrowserDevPermissionState(devLaunchContext));
15068
15170
  const mobileDevContextUrlsByOrigin = new Map();
15069
15171
  let currentCompanionManifestSha256;
@@ -15134,7 +15236,7 @@ async function runDevCommand(options, runtime = {}) {
15134
15236
  try {
15135
15237
  browserDevHost = await runDevStartupTask(logger, '正在启动浏览器调试页服务', () => startBrowserDevHostServer({
15136
15238
  appUrl,
15137
- devContext: devLaunchContext,
15239
+ devContext: currentDevContext,
15138
15240
  fetchImpl,
15139
15241
  getPort: getPortImpl,
15140
15242
  defaultLanAddressId: lanAddresses[0]?.id,
@@ -15149,6 +15251,30 @@ async function runDevCommand(options, runtime = {}) {
15149
15251
  lanAddresses: buildLanAddresses(),
15150
15252
  });
15151
15253
  },
15254
+ readMobileDevSessionContext: async () => {
15255
+ try {
15256
+ const refreshed = await loadDevLaunchContext({
15257
+ env: runtime.env,
15258
+ fetchImpl,
15259
+ logger,
15260
+ projectRoot,
15261
+ timeoutMs: runtime.devContextTimeoutMs ?? DEFAULT_DEV_CONTEXT_TIMEOUT_MS,
15262
+ });
15263
+ currentDevContext = withCurrentLocalDevLaunchToken(refreshed.context, currentLocalDevLaunchToken);
15264
+ launchRuntimePermissions = context.createMobileDevSessionRuntimePermissions(currentDevContext);
15265
+ browserDevHost.updateBootstrap({
15266
+ devContext: currentDevContext,
15267
+ miniProgram: refreshed.miniProgram,
15268
+ });
15269
+ return currentDevContext;
15270
+ }
15271
+ catch (error) {
15272
+ currentDevContext = { source: 'anonymous' };
15273
+ launchRuntimePermissions = { schema_version: 1, entries: [] };
15274
+ browserDevHost.updateBootstrap({ devContext: currentDevContext });
15275
+ throw error;
15276
+ }
15277
+ },
15152
15278
  port: options.browserDevHostPort ?? DEFAULT_BROWSER_DEV_HOST_PORT,
15153
15279
  root: runtime.browserDevHostRoot,
15154
15280
  rootCandidates: runtime.browserDevHostRootCandidates,
@@ -15175,22 +15301,18 @@ async function runDevCommand(options, runtime = {}) {
15175
15301
  if (refreshed.context.miniProgramId !== devLaunchContext.miniProgramId)
15176
15302
  throw new Error('项目绑定已变更,请重新启动调试');
15177
15303
  devLaunchContext.runtimePermissions = refreshed.context.runtimePermissions;
15304
+ currentDevContext = withCurrentLocalDevLaunchToken(devLaunchContext, currentLocalDevLaunchToken);
15178
15305
  launchRuntimePermissions = context.createBrowserDevRuntimePermissions(devLaunchContext.runtimePermissions, context.createBrowserDevPermissionState(devLaunchContext));
15179
- browserDevHost.updateBootstrap({ devContext: { ...devLaunchContext, localDevLaunchToken: currentLocalDevLaunchToken } });
15306
+ browserDevHost.updateBootstrap({ devContext: currentDevContext });
15180
15307
  return hasCompanionApproval(devLaunchContext.runtimePermissions);
15181
15308
  },
15182
15309
  onToken: (localDevLaunchToken, companionManifestSha256, expiresAt) => {
15183
15310
  currentExpiresAt = expiresAt;
15184
15311
  currentCompanionManifestSha256 = companionManifestSha256;
15185
15312
  currentLocalDevLaunchToken = localDevLaunchToken;
15186
- const tokenContext = {
15187
- source: 'remote',
15188
- miniProgramId: devLaunchContext.miniProgramId,
15189
- ...(localDevLaunchToken ? { localDevLaunchToken } : {}),
15190
- runtimePermissions: devLaunchContext.runtimePermissions,
15191
- };
15313
+ currentDevContext = withCurrentLocalDevLaunchToken(currentDevContext, localDevLaunchToken);
15192
15314
  browserDevHost.updateBootstrap({
15193
- devContext: tokenContext,
15315
+ devContext: currentDevContext,
15194
15316
  lanAddresses: buildLanAddresses(),
15195
15317
  });
15196
15318
  },
@@ -15220,6 +15342,15 @@ async function runDevCommand(options, runtime = {}) {
15220
15342
  }
15221
15343
  installShutdownHandlers(closers, runtime.process ?? process);
15222
15344
  }
15345
+ function withCurrentLocalDevLaunchToken(context, localDevLaunchToken) {
15346
+ return {
15347
+ source: context.source,
15348
+ ...(context.miniProgramId ? { miniProgramId: context.miniProgramId } : {}),
15349
+ ...(localDevLaunchToken ? { localDevLaunchToken } : {}),
15350
+ ...(context.runtimePermissions !== undefined ? { runtimePermissions: context.runtimePermissions } : {}),
15351
+ ...(context.warning ? { warning: context.warning } : {}),
15352
+ };
15353
+ }
15223
15354
  function runDevStartupTask(logger, text, action, successText) {
15224
15355
  if (!logger.verbose) {
15225
15356
  return action();
@@ -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-zNpZDWhc.cjs');
6
+ var index = require('./index-B2eLzOSD.cjs');
7
7
  require('node:module');
8
8
  require('node:fs');
9
9
  require('path');
@@ -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-zNpZDWhc.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-B2eLzOSD.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-zNpZDWhc.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-B2eLzOSD.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-zNpZDWhc.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-B2eLzOSD.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-zNpZDWhc.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-B2eLzOSD.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-zNpZDWhc.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-B2eLzOSD.cjs', document.baseURI).href)));
250
250
  function __require() { return require$1("node:process"); }
251
251
 
252
252
  var help = {};
@@ -13424,7 +13424,7 @@ function getPathname(pathWithQuery) {
13424
13424
  }
13425
13425
 
13426
13426
  const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
13427
- const BUILT_CLI_VERSION = '0.8.1-alpha.7';
13427
+ const BUILT_CLI_VERSION = '0.8.1-alpha.9';
13428
13428
  const PACKAGE_JSON_CANDIDATES = [
13429
13429
  path.resolve(__dirname, '..', '..', 'package.json'),
13430
13430
  path.resolve(__dirname, '..', 'package.json'),
@@ -13773,39 +13773,39 @@ function createCommandLoggerResolver(options) {
13773
13773
  };
13774
13774
  }
13775
13775
  const defaultClearLoginStatus = async (...args) => {
13776
- const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-CCEPk2Ok.cjs'); });
13776
+ const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-BSySslS2.cjs'); });
13777
13777
  return clearLoginStatus(...args);
13778
13778
  };
13779
13779
  const defaultLoginToHeybox = async (...args) => {
13780
- const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-CCEPk2Ok.cjs'); });
13780
+ const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-BSySslS2.cjs'); });
13781
13781
  return loginToHeybox(...args);
13782
13782
  };
13783
13783
  const defaultPrintLoginStatus = async (...args) => {
13784
- const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-CCEPk2Ok.cjs'); });
13784
+ const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-BSySslS2.cjs'); });
13785
13785
  return printLoginStatus(...args);
13786
13786
  };
13787
13787
  const defaultRunBuildCommand = async (...args) => {
13788
- const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-C8oN_Ms9.cjs'); });
13788
+ const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-D8eh0bxZ.cjs'); });
13789
13789
  return runBuildCommand(...args);
13790
13790
  };
13791
13791
  const defaultRunCreateCommand = async (...args) => {
13792
- const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-CToSHRfO.cjs'); });
13792
+ const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-BiqK-4fa.cjs'); });
13793
13793
  return runCreateCommand(...args);
13794
13794
  };
13795
13795
  const defaultRunDevCommand = async (...args) => {
13796
- const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-CTA0lsLD.cjs'); }).then(function (n) { return n.dev; });
13796
+ const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-u27Q6a-K.cjs'); }).then(function (n) { return n.dev; });
13797
13797
  return runDevCommand(...args);
13798
13798
  };
13799
13799
  const defaultRunDoctorCommand = async (...args) => {
13800
- const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-DRa_kjP1.cjs'); });
13800
+ const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-ppQbhj7e.cjs'); });
13801
13801
  return runDoctorCommand(...args);
13802
13802
  };
13803
13803
  const defaultRunSkillInstallCommand = async (...args) => {
13804
- const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-CVXOE5jH.cjs'); });
13804
+ const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-V_4EkY23.cjs'); });
13805
13805
  return runSkillInstallCommand(...args);
13806
13806
  };
13807
13807
  const defaultRunRemoteCommand = async (...args) => {
13808
- const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-DQ70o-Km.cjs'); });
13808
+ const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-WvNfCBeJ.cjs'); });
13809
13809
  return runRemoteCommand(...args);
13810
13810
  };
13811
13811
  function resolveStandaloneLogger(options, verbose) {
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index$2 = require('./index-zNpZDWhc.cjs');
3
+ var index$2 = require('./index-B2eLzOSD.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-BN43V7d0.cjs');
10
+ var runtimePermissionEnv = require('./runtime-permission-env-g_2W-HqP.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');
@@ -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-zNpZDWhc.cjs');
15
- var dev = require('./dev-CTA0lsLD.cjs');
14
+ var index = require('./index-B2eLzOSD.cjs');
15
+ var dev = require('./dev-u27Q6a-K.cjs');
16
16
  require('node:module');
17
17
  require('node:fs');
18
18
  require('node:fs/promises');
@@ -27,11 +27,11 @@ require('node:os');
27
27
  require('node:net');
28
28
  require('node:dns/promises');
29
29
  require('node:http');
30
- require('./context-DZkqvg9S.cjs');
31
- require('./runtime-permission-env-BN43V7d0.cjs');
32
- require('./version-DbDVL6vm.cjs');
30
+ require('./context-JfGWhXSD.cjs');
31
+ require('./runtime-permission-env-g_2W-HqP.cjs');
32
+ require('./version-Dox07wdq.cjs');
33
33
  require('node:async_hooks');
34
- require('./session-C1R_39si.cjs');
34
+ require('./session-CaNwlovY.cjs');
35
35
  require('fs');
36
36
  require('constants');
37
37
  require('undici');
@@ -41,7 +41,7 @@ require('node:buffer');
41
41
  require('node:url');
42
42
  require('node:util');
43
43
  require('node:child_process');
44
- require('./project-vite-couFw5bL.cjs');
44
+ require('./project-vite-C-r7_UvY.cjs');
45
45
  require('node:zlib');
46
46
 
47
47
  var bufferUtil = {exports: {}};
@@ -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-C1R_39si.cjs');
6
+ var session = require('./session-CaNwlovY.cjs');
7
7
  var browser = require('./browser-RAy8e8cV.cjs');
8
- var index = require('./index-zNpZDWhc.cjs');
8
+ var index = require('./index-B2eLzOSD.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-zNpZDWhc.cjs');
8
+ var index = require('./index-B2eLzOSD.cjs');
9
9
 
10
10
  function findProjectRoot(startDir) {
11
11
  let current = path.resolve(startDir);