@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.
- package/CHANGELOG.md +10 -1
- package/README.md +1 -1
- package/dist/cli-chunks/{build-C8oN_Ms9.cjs → build-D8eh0bxZ.cjs} +4 -4
- package/dist/cli-chunks/{context-DZkqvg9S.cjs → context-JfGWhXSD.cjs} +11 -2
- package/dist/cli-chunks/{create-CToSHRfO.cjs → create-BiqK-4fa.cjs} +1 -1
- package/dist/cli-chunks/{dev-CTA0lsLD.cjs → dev-u27Q6a-K.cjs} +165 -34
- package/dist/cli-chunks/{doctor-DRa_kjP1.cjs → doctor-ppQbhj7e.cjs} +1 -1
- package/dist/cli-chunks/{index-zNpZDWhc.cjs → index-B2eLzOSD.cjs} +15 -15
- package/dist/cli-chunks/{index-Bkl5YmtN.cjs → index-CtR3w1bw.cjs} +2 -2
- package/dist/cli-chunks/{index.esm-CGoUW47e.cjs → index.esm-CCDqeyc7.cjs} +7 -7
- package/dist/cli-chunks/{login-CCEPk2Ok.cjs → login-BSySslS2.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-couFw5bL.cjs → project-vite-C-r7_UvY.cjs} +1 -1
- package/dist/cli-chunks/{remote-DQ70o-Km.cjs → remote-WvNfCBeJ.cjs} +6 -6
- package/dist/cli-chunks/{runtime-permission-env-BN43V7d0.cjs → runtime-permission-env-g_2W-HqP.cjs} +1 -1
- package/dist/cli-chunks/{session-C1R_39si.cjs → session-CaNwlovY.cjs} +1 -1
- package/dist/cli-chunks/{skill-CVXOE5jH.cjs → skill-V_4EkY23.cjs} +2 -2
- package/dist/cli-chunks/{version-DbDVL6vm.cjs → version-Dox07wdq.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-BYKHn0Ny.js +101 -0
- package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-DnPRjCa3.js → desktop-app-launch-BE-Jw0zD.js} +3 -3
- package/dist/devtools/browser-dev-host/assets/{index-DocojUxT.js → index-wEzSxtKd.js} +4 -4
- package/dist/devtools/browser-dev-host/index.html +2 -2
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/vite.cjs.js +1 -1
- package/dist/vite.esm.js +1 -1
- package/package.json +7 -7
- package/skill/SKILL.md +1 -1
- package/skill/references/api-root.md +1 -1
- package/skill/references/cli.md +2 -0
- package/skill/skill.json +5 -5
- package/types/protocol/dev-session.d.ts +2 -1
- 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
|
|
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-
|
|
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-
|
|
11
|
-
var projectVite = require('./project-vite-
|
|
12
|
-
require('./version-
|
|
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-
|
|
4
|
-
var session = require('./session-
|
|
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-
|
|
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-
|
|
12
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
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-
|
|
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-
|
|
18
|
+
var session = require('./session-CaNwlovY.cjs');
|
|
19
19
|
var browser = require('./browser-RAy8e8cV.cjs');
|
|
20
|
-
var projectVite = require('./project-vite-
|
|
21
|
-
var version = require('./version-
|
|
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 (
|
|
917
|
-
throw createBrowserDevHostError(400, 'INVALID_NETWORK_REQUEST', `network.request
|
|
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
|
|
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(
|
|
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
|
|
1164
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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();
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
15
|
-
var dev = require('./dev-
|
|
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-
|
|
31
|
-
require('./runtime-permission-env-
|
|
32
|
-
require('./version-
|
|
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-
|
|
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-
|
|
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-
|
|
6
|
+
var session = require('./session-CaNwlovY.cjs');
|
|
7
7
|
var browser = require('./browser-RAy8e8cV.cjs');
|
|
8
|
-
var index = require('./index-
|
|
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-
|
|
8
|
+
var index = require('./index-B2eLzOSD.cjs');
|
|
9
9
|
|
|
10
10
|
function findProjectRoot(startDir) {
|
|
11
11
|
let current = path.resolve(startDir);
|