@heybox/hb-sdk 0.6.6-alpha.2 → 0.6.6-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +42 -7
  2. package/dist/cli-chunks/build-De-QADpA.cjs +137 -0
  3. package/dist/cli-chunks/context-CvZs9ZBf.cjs +311 -0
  4. package/dist/cli-chunks/{create-CxjB3oSo.cjs → create-B5gGBaSV.cjs} +1 -1
  5. package/dist/cli-chunks/{dev-Km0or0yY.cjs → dev-BcCWCeac.cjs} +11 -42
  6. package/dist/cli-chunks/{doctor-baVOqNSh.cjs → doctor-BhBM4cWH.cjs} +1 -1
  7. package/dist/cli-chunks/{context-CM46YbPT.cjs → index-BQm5XmMC.cjs} +19 -308
  8. package/dist/cli-chunks/{index-DCsEAuca.cjs → index-DyUo67lf.cjs} +3 -3
  9. package/dist/cli-chunks/{index-ByDy5HXi.cjs → index-QAkYgxPI.cjs} +32 -16
  10. package/dist/cli-chunks/{login-fNe0eDs_.cjs → login-BNLH13Zd.cjs} +2 -2
  11. package/dist/cli-chunks/project-vite-VcJMyz1l.cjs +45 -0
  12. package/dist/cli-chunks/remote-BE53wntR.cjs +1504 -0
  13. package/dist/cli-chunks/{remote-BRIlRrCG.cjs → runtime-gate-B2MQf1vc.cjs} +7 -1501
  14. package/dist/cli-chunks/{session-CTcelATz.cjs → session-YJ8xNESM.cjs} +1 -1
  15. package/dist/cli.cjs +1 -1
  16. package/dist/devtools/mock-host/main.js +149 -3
  17. package/dist/index.cjs.js +1 -1
  18. package/dist/index.esm.js +1 -1
  19. package/dist/templates/vue3-vite-ts/README.md.ejs +2 -2
  20. package/dist/templates/vue3-vite-ts/package.json.ejs +1 -1
  21. package/dist/vite.cjs.js +50 -3
  22. package/dist/vite.esm.js +50 -3
  23. package/package.json +1 -1
  24. package/skill/SKILL.md +19 -14
  25. package/skill/references/api-protocol.md +3 -2
  26. package/skill/references/api-root.md +49 -10
  27. package/skill/references/cli.md +33 -1
  28. package/skill/references/recipes.md +53 -0
  29. package/skill/references/safety-boundaries.md +1 -1
  30. package/skill/scripts/sync-references.mjs +23 -1
  31. package/skill/skill.json +4 -4
  32. package/types/index.d.ts +1 -1
  33. package/types/modules/share/types.d.ts +11 -0
  34. package/types/protocol.d.ts +1 -1
  35. package/types/vite/html-policy.d.ts +4 -1
  36. package/types/vite/index.d.ts +10 -1
@@ -1,23 +1,24 @@
1
1
  'use strict';
2
2
 
3
- var node_module = require('node:module');
4
3
  var fs = require('node:fs');
5
- var fs$1 = require('node:fs/promises');
6
4
  var os = require('node:os');
7
5
  var path = require('node:path');
8
- var node_url = require('node:url');
9
6
  var net = require('node:net');
10
7
  var promises = require('node:dns/promises');
11
8
  var node_http = require('node:http');
12
9
  var node_crypto = require('node:crypto');
13
10
  var undici = require('undici');
14
11
  var browser = require('./browser-RAy8e8cV.cjs');
15
- var index = require('./index-ByDy5HXi.cjs');
16
- var context = require('./context-CM46YbPT.cjs');
12
+ var index = require('./index-QAkYgxPI.cjs');
13
+ var projectVite = require('./project-vite-VcJMyz1l.cjs');
14
+ var context = require('./context-CvZs9ZBf.cjs');
15
+ var fs$1 = require('node:fs/promises');
17
16
  require('node:process');
18
17
  require('node:buffer');
18
+ require('node:url');
19
19
  require('node:util');
20
20
  require('node:child_process');
21
+ require('node:module');
21
22
  require('path');
22
23
  require('os');
23
24
  require('readline');
@@ -27,9 +28,10 @@ require('events');
27
28
  require('stream');
28
29
  require('buffer');
29
30
  require('util');
30
- require('./session-CTcelATz.cjs');
31
+ require('./session-YJ8xNESM.cjs');
31
32
  require('fs');
32
33
  require('constants');
34
+ require('./index-BQm5XmMC.cjs');
33
35
 
34
36
  class Locked extends Error {
35
37
  constructor(port) {
@@ -1257,7 +1259,7 @@ function cloneDefaultPermissionState() {
1257
1259
  /** 构建时替换为当前发布包的实际版本。 */
1258
1260
  const HB_SDK_VERSION = typeof undefined === 'string'
1259
1261
  ? undefined
1260
- : '0.6.6-alpha.2';
1262
+ : '0.6.6-alpha.3';
1261
1263
 
1262
1264
  class DevPermissionOverrideStoreError extends Error {
1263
1265
  code;
@@ -1405,7 +1407,7 @@ async function runDevCommand(options, runtime = {}) {
1405
1407
  hmrHost: createLanInterfaceCandidates(networkInterfaceSnapshot)[0]?.address,
1406
1408
  port: appPort,
1407
1409
  };
1408
- const projectRoot = findProjectRoot(runtime.cwd ?? process.cwd());
1410
+ const projectRoot = projectVite.findProjectRoot(runtime.cwd ?? process.cwd());
1409
1411
  const devLaunchContext = await loadDevLaunchContext({
1410
1412
  env: runtime.env,
1411
1413
  fetchImpl,
@@ -1427,7 +1429,7 @@ async function runDevCommand(options, runtime = {}) {
1427
1429
  }),
1428
1430
  projectRoot,
1429
1431
  });
1430
- const vite = await logger.task('正在加载项目 Vite', () => loadProjectVite(projectRoot), { successText: '已加载项目 Vite' });
1432
+ const vite = await logger.task('正在加载项目 Vite', () => projectVite.loadProjectVite(projectRoot), { successText: '已加载项目 Vite' });
1431
1433
  const appServer = await logger.task('正在创建 Vite dev server', () => withManagedDevOutputEnv(() => vite.createServer(createViteServerOptions(projectRoot, resolvedOptions)), runtime.env), { successText: '已创建 Vite dev server' });
1432
1434
  await logger.task('正在启动 Vite dev server', () => appServer.listen(appPort), {
1433
1435
  successText: 'Vite dev server 已启动',
@@ -1623,39 +1625,6 @@ async function loadRemoteDevContextWithTimeout(options) {
1623
1625
  }
1624
1626
  }
1625
1627
  }
1626
- function findProjectRoot(startDir) {
1627
- let current = path.resolve(startDir);
1628
- while (true) {
1629
- if (fs.existsSync(path.join(current, 'package.json'))) {
1630
- return current;
1631
- }
1632
- const parent = path.dirname(current);
1633
- if (parent === current) {
1634
- throw new Error('当前目录或父目录未找到 package.json');
1635
- }
1636
- current = parent;
1637
- }
1638
- }
1639
- async function loadProjectVite(projectRoot) {
1640
- const projectRequire = node_module.createRequire(path.join(projectRoot, 'package.json'));
1641
- try {
1642
- const packageJson = JSON.parse(await fs$1.readFile(path.join(projectRoot, 'package.json'), 'utf8'));
1643
- if (!hasPackageDependency(packageJson, 'vite')) {
1644
- throw new Error('package.json 未声明 vite');
1645
- }
1646
- const viteEntry = projectRequire.resolve('vite');
1647
- return (await import(node_url.pathToFileURL(viteEntry).href));
1648
- }
1649
- catch (error) {
1650
- throw new Error(`当前项目未安装 vite。请先安装项目依赖,或将 vite 放到项目 devDependencies。原始错误: ${index.readErrorMessage(error)}`);
1651
- }
1652
- }
1653
- function hasPackageDependency(packageJson, name) {
1654
- return Boolean(packageJson.dependencies?.[name] ||
1655
- packageJson.devDependencies?.[name] ||
1656
- packageJson.optionalDependencies?.[name] ||
1657
- packageJson.peerDependencies?.[name]);
1658
- }
1659
1628
  function createViteServerOptions(projectRoot, options) {
1660
1629
  const configFile = resolveProjectViteConfig(projectRoot);
1661
1630
  const server = {
@@ -4,7 +4,7 @@ var fs$1 = require('node:fs');
4
4
  var fs = require('node:fs/promises');
5
5
  var os = require('node:os');
6
6
  var path = require('node:path');
7
- var index = require('./index-ByDy5HXi.cjs');
7
+ var index = require('./index-QAkYgxPI.cjs');
8
8
  require('node:module');
9
9
  require('path');
10
10
  require('os');
@@ -1,10 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var session = require('./session-CTcelATz.cjs');
4
- var fs$1 = require('node:fs');
5
- var fs = require('node:fs/promises');
6
- var path = require('node:path');
7
-
8
3
  var re = {exports: {}};
9
4
 
10
5
  var constants;
@@ -2884,319 +2879,35 @@ function shouldUploadDistFile(relativePath) {
2884
2879
  return true;
2885
2880
  }
2886
2881
 
2887
- function createRemoteApiClient(options) {
2888
- return {
2889
- listDeveloperEntities: () => listDeveloperEntities(options),
2890
- switchDeveloperEntity: (requestOptions) => switchDeveloperEntity(requestOptions, options),
2891
- getDeveloperAccessStatus: () => getDeveloperAccessStatus(options),
2892
- listUserMiniprograms: (requestOptions = {}) => listUserMiniprograms(requestOptions, options),
2893
- createUserMiniprogram: () => createUserMiniprogram(options),
2894
- getUserMiniprogramDetail: (requestOptions) => getUserMiniprogramDetail(requestOptions, options),
2895
- getPreviewAllowlist: (requestOptions) => getPreviewAllowlist(requestOptions, options),
2896
- updatePreviewAllowlist: (requestOptions) => updatePreviewAllowlist(requestOptions, options),
2897
- createUserMiniprogramLeaderboard: (requestOptions) => createUserMiniprogramLeaderboard(requestOptions, options),
2898
- getUserMiniprogramLeaderboard: (requestOptions) => getUserMiniprogramLeaderboard(requestOptions, options),
2899
- listUserMiniprogramLeaderboards: (requestOptions) => listUserMiniprogramLeaderboards(requestOptions, options),
2900
- deleteUserMiniprogramLeaderboard: (requestOptions) => deleteUserMiniprogramLeaderboard(requestOptions, options),
2901
- precheckUserMiniprogramVersion: (requestOptions) => precheckUserMiniprogramVersion(requestOptions, options),
2902
- submitUserMiniprogramAudit: (requestOptions) => submitUserMiniprogramAudit(requestOptions, options),
2903
- getVersionPreviewInfo: (requestOptions) => getVersionPreviewInfo(requestOptions, options),
2904
- withdrawUserMiniprogramVersion: (requestOptions) => withdrawUserMiniprogramVersion(requestOptions, options),
2905
- releaseUserMiniprogramVersion: (requestOptions) => releaseUserMiniprogramVersion(requestOptions, options),
2906
- takeDownUserMiniprogram: (requestOptions) => takeDownUserMiniprogram(requestOptions, options),
2907
- reopenUserMiniprogram: (requestOptions) => reopenUserMiniprogram(requestOptions, options),
2908
- updateSquareDisplay: (requestOptions) => updateSquareDisplay(requestOptions, options),
2909
- listUserMiniprogramVersions: (requestOptions) => listUserMiniprogramVersions(requestOptions, options),
2910
- };
2911
- }
2912
- async function listDeveloperEntities(runtime) {
2913
- return remoteGet(DEVELOPER_ENTITY_LIST_API_PATH, {}, runtime);
2914
- }
2915
- async function switchDeveloperEntity(options, runtime) {
2916
- return (await remotePostForm(DEVELOPER_ENTITY_SWITCH_API_PATH, options, runtime, { requireResult: false })) ?? {};
2917
- }
2918
- async function getDeveloperAccessStatus(runtime) {
2919
- return remoteGet(USER_MINIPROGRAM_ACCESS_STATUS_API_PATH, {}, runtime);
2920
- }
2921
- async function listUserMiniprograms(options, runtime) {
2922
- return remoteGet(LIST_USER_MINIPROGRAM_API_PATH, options, runtime);
2923
- }
2924
- async function createUserMiniprogram(runtime) {
2925
- return remotePostForm(CREATE_USER_MINIPROGRAM_API_PATH, {}, runtime);
2926
- }
2927
- async function getUserMiniprogramDetail(options, runtime) {
2928
- return remoteGet(DETAIL_USER_MINIPROGRAM_API_PATH, options, runtime);
2929
- }
2930
- async function getPreviewAllowlist(options, runtime) {
2931
- return remoteGet(USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, options, runtime);
2932
- }
2933
- async function updatePreviewAllowlist(options, runtime) {
2934
- return remotePostForm(UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, options, runtime);
2935
- }
2936
- async function createUserMiniprogramLeaderboard(options, runtime) {
2937
- return remotePostForm(CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, options, runtime);
2938
- }
2939
- async function getUserMiniprogramLeaderboard(options, runtime) {
2940
- return remoteGet(DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH, options, runtime);
2941
- }
2942
- async function listUserMiniprogramLeaderboards(options, runtime) {
2943
- return remoteGet(LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH, options, runtime);
2944
- }
2945
- async function deleteUserMiniprogramLeaderboard(options, runtime) {
2946
- return (await remotePostForm(DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, options, runtime, { requireResult: false })) ?? {};
2947
- }
2948
- async function precheckUserMiniprogramVersion(options, runtime) {
2949
- return remotePostForm(PRECHECK_USER_MINIPROGRAM_VERSION_API_PATH, options, runtime);
2950
- }
2951
- async function submitUserMiniprogramAudit(options, runtime) {
2952
- const form = { ...options };
2953
- if (form.manifest && typeof form.manifest !== 'string') {
2954
- form.manifest = JSON.stringify(form.manifest);
2955
- }
2956
- return remotePostForm(SUBMIT_USER_MINIPROGRAM_AUDIT_API_PATH, form, runtime);
2957
- }
2958
- async function getVersionPreviewInfo(options, runtime) {
2959
- return remoteGet(USER_MINIPROGRAM_VERSION_PREVIEW_INFO_API_PATH, {
2960
- mini_program_id: options.mini_program_id,
2961
- preview_version: options.version,
2962
- }, runtime);
2963
- }
2964
- async function withdrawUserMiniprogramVersion(options, runtime) {
2965
- return remotePostForm(WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH, options, runtime);
2966
- }
2967
- async function releaseUserMiniprogramVersion(options, runtime) {
2968
- return remotePostForm(RELEASE_USER_MINIPROGRAM_VERSION_API_PATH, options, runtime);
2969
- }
2970
- async function takeDownUserMiniprogram(options, runtime) {
2971
- return remotePostForm(TAKE_DOWN_USER_MINIPROGRAM_API_PATH, options, runtime);
2972
- }
2973
- async function reopenUserMiniprogram(options, runtime) {
2974
- return remotePostForm(REOPEN_USER_MINIPROGRAM_API_PATH, options, runtime);
2975
- }
2976
- async function updateSquareDisplay(options, runtime) {
2977
- return remotePostForm(UPDATE_SQUARE_DISPLAY_API_PATH, options, runtime);
2978
- }
2979
- async function listUserMiniprogramVersions(options, runtime) {
2980
- return remoteGet(LIST_USER_MINIPROGRAM_VERSION_API_PATH, options, runtime);
2981
- }
2982
- async function remoteGet(path, query, runtime) {
2983
- const pathWithQuery = createPathWithQuery(path, query);
2984
- const context = session.createHeyboxOpenPlatformRequestContext(runtime.session, pathWithQuery);
2985
- const fetchImpl = runtime.fetchImpl ?? fetch;
2986
- const response = await fetchImpl(session.createHeyboxApiUrl(runtime.baseUrl ?? context.baseUrl, pathWithQuery, context.platformParams), {
2987
- method: 'GET',
2988
- headers: context.headers,
2989
- });
2990
- return readRequiredResult(response, pathWithQuery);
2991
- }
2992
- async function remotePostForm(path, fields, runtime, options = {}) {
2993
- const context = session.createHeyboxOpenPlatformRequestContext(runtime.session, path, {
2994
- contentType: 'application/x-www-form-urlencoded',
2995
- });
2996
- const fetchImpl = runtime.fetchImpl ?? fetch;
2997
- const response = await fetchImpl(session.createHeyboxApiUrl(runtime.baseUrl ?? context.baseUrl, path, context.platformParams), {
2998
- method: 'POST',
2999
- headers: context.headers,
3000
- body: createFormBody(fields),
3001
- });
3002
- if (options.requireResult === false) {
3003
- return readOptionalResult(response, path);
3004
- }
3005
- return readRequiredResult(response, path);
3006
- }
3007
- async function readRequiredResult(response, pathWithQuery) {
3008
- const result = await session.readHeyboxApiEnvelope(response, { pathWithQuery, requireResult: true });
3009
- return result;
3010
- }
3011
- async function readOptionalResult(response, pathWithQuery) {
3012
- return session.readHeyboxApiEnvelope(response, { pathWithQuery, requireResult: false });
3013
- }
3014
- function createPathWithQuery(path, query) {
3015
- const params = new URLSearchParams();
3016
- for (const [key, value] of Object.entries(query)) {
3017
- if (value !== undefined && value !== null && value !== '') {
3018
- params.set(key, String(value));
3019
- }
3020
- }
3021
- const queryString = params.toString();
3022
- return queryString ? `${path}?${queryString}` : path;
3023
- }
3024
- function createFormBody(fields) {
3025
- const body = new URLSearchParams();
3026
- for (const [key, value] of Object.entries(fields)) {
3027
- if (value === undefined || value === null) {
3028
- continue;
3029
- }
3030
- if (Array.isArray(value)) {
3031
- body.set(key, value.join(','));
3032
- continue;
3033
- }
3034
- if (typeof value === 'object') {
3035
- body.set(key, JSON.stringify(value));
3036
- continue;
3037
- }
3038
- body.set(key, String(value));
3039
- }
3040
- return body.toString();
3041
- }
3042
-
3043
- class MiniProgramProjectBindingError extends Error {
3044
- code;
3045
- constructor(message, code) {
3046
- super(message);
3047
- this.code = code;
3048
- this.name = 'MiniProgramProjectBindingError';
3049
- }
3050
- }
3051
- function findMiniProgramProjectRoot(startDir) {
3052
- let current = path.resolve(startDir);
3053
- while (true) {
3054
- if (fs$1.existsSync(path.join(current, 'package.json'))) {
3055
- return current;
3056
- }
3057
- const parent = path.dirname(current);
3058
- if (parent === current) {
3059
- throw new MiniProgramProjectBindingError('当前目录或父目录未找到 package.json', 'PACKAGE_JSON_NOT_FOUND');
3060
- }
3061
- current = parent;
3062
- }
3063
- }
3064
- async function readMiniProgramProjectPackage(startDir) {
3065
- const projectRoot = findMiniProgramProjectRoot(startDir);
3066
- const packageJsonPath = path.join(projectRoot, 'package.json');
3067
- const raw = await fs.readFile(packageJsonPath, 'utf8');
3068
- let packageJson;
3069
- try {
3070
- packageJson = JSON.parse(raw);
3071
- }
3072
- catch (error) {
3073
- const message = error instanceof Error ? error.message : String(error);
3074
- throw new MiniProgramProjectBindingError(`package.json 不是合法 JSON:${packageJsonPath}\n${message}`, 'PACKAGE_JSON_INVALID');
3075
- }
3076
- return {
3077
- projectRoot,
3078
- packageJsonPath,
3079
- packageJson,
3080
- raw,
3081
- indent: detectJsonIndent(raw),
3082
- trailingNewline: raw.endsWith('\r\n') ? '\r\n' : raw.endsWith('\n') ? '\n' : '',
3083
- };
3084
- }
3085
- function readBoundMiniProgramIdFromPackageJson(packageJson) {
3086
- const value = packageJson.heybox?.miniProgramId;
3087
- return typeof value === 'string' && value.trim() ? value.trim() : undefined;
3088
- }
3089
- async function readBoundMiniProgramId(startDir) {
3090
- return readBoundMiniProgramIdFromPackageJson((await readMiniProgramProjectPackage(startDir)).packageJson);
3091
- }
3092
- async function requireBoundMiniProgramId(startDir) {
3093
- const context = await readMiniProgramProjectPackage(startDir);
3094
- const miniProgramId = readBoundMiniProgramIdFromPackageJson(context.packageJson);
3095
- if (!miniProgramId) {
3096
- throw new MiniProgramProjectBindingError(`当前项目未绑定小程序。请先运行 hb-sdk remote create 或 hb-sdk remote bind <mini-program-id>。\n配置位置:${context.packageJsonPath}#heybox.miniProgramId`, 'MINI_PROGRAM_UNBOUND');
3097
- }
3098
- return { ...context, miniProgramId };
3099
- }
3100
- async function writeBoundMiniProgramId(startDir, miniProgramId, options = {}) {
3101
- const context = await readMiniProgramProjectPackage(startDir);
3102
- const normalizedMiniProgramId = String(miniProgramId).trim();
3103
- if (!normalizedMiniProgramId) {
3104
- throw new MiniProgramProjectBindingError('miniProgramId 不能为空', 'PACKAGE_JSON_INVALID');
3105
- }
3106
- const currentMiniProgramId = readBoundMiniProgramIdFromPackageJson(context.packageJson);
3107
- if (currentMiniProgramId && currentMiniProgramId !== normalizedMiniProgramId && !options.force) {
3108
- throw new MiniProgramProjectBindingError(`当前项目已绑定小程序 ${currentMiniProgramId}。如需覆盖本地绑定,请使用 --force。`, 'MINI_PROGRAM_BINDING_EXISTS');
3109
- }
3110
- if (currentMiniProgramId === normalizedMiniProgramId) {
3111
- return {
3112
- ...context,
3113
- changed: false,
3114
- miniProgramId: normalizedMiniProgramId,
3115
- };
3116
- }
3117
- if (context.packageJson.heybox !== undefined && !isPlainObject(context.packageJson.heybox)) {
3118
- throw new MiniProgramProjectBindingError('package.json heybox 字段必须是对象,不能写入 miniProgramId', 'PACKAGE_JSON_HEYBOX_INVALID');
3119
- }
3120
- context.packageJson.heybox = {
3121
- ...(context.packageJson.heybox ?? {}),
3122
- miniProgramId: normalizedMiniProgramId,
3123
- };
3124
- await fs.writeFile(context.packageJsonPath, `${JSON.stringify(context.packageJson, null, context.indent)}${context.trailingNewline || '\n'}`, 'utf8');
3125
- return {
3126
- ...context,
3127
- changed: true,
3128
- miniProgramId: normalizedMiniProgramId,
3129
- };
3130
- }
3131
- function detectJsonIndent(raw) {
3132
- const match = raw.match(/\n(\s+)"[^"]+":/);
3133
- return match?.[1] ?? 2;
3134
- }
3135
- function isPlainObject(value) {
3136
- return Object.prototype.toString.call(value) === '[object Object]';
3137
- }
3138
-
3139
- async function resolveRemoteEnvironment(options = {}, runtime = {}) {
3140
- const env = options.env ?? process.env;
3141
- const apiBaseUrl = session.resolveHeyboxApiBaseUrl({ ...options, env });
3142
- const loginBaseUrl = session.resolveHeyboxLoginBaseUrl({ ...options, env });
3143
- const session$1 = options.session ?? (await (runtime.requireAuthSession ?? session.requireHeyboxAuthSession)({ loginBaseUrl }));
3144
- return {
3145
- apiBaseUrl,
3146
- loginBaseUrl,
3147
- allowUnsafeApiBaseUrl: options.allowUnsafeApiBaseUrl === true || isTruthyEnvFlag(env.HB_SDK_ALLOW_UNSAFE_API_BASE_URL),
3148
- env,
3149
- fetchImpl: runtime.fetchImpl ?? options.fetchImpl ?? fetch,
3150
- session: session$1,
3151
- };
3152
- }
3153
- function createRemoteApiClientForEnvironment(environment) {
3154
- return createRemoteApiClient({
3155
- baseUrl: environment.apiBaseUrl,
3156
- fetchImpl: environment.fetchImpl,
3157
- session: environment.session,
3158
- });
3159
- }
3160
- async function getBoundMiniProgram(options = {}, runtime = {}) {
3161
- const cwd = options.cwd ?? process.cwd();
3162
- const binding = await requireBoundMiniProgramId(cwd);
3163
- const api = await resolveRemoteApiClient(options, runtime);
3164
- const detail = await api.getUserMiniprogramDetail({ mini_program_id: binding.miniProgramId });
3165
- return {
3166
- ...binding,
3167
- detail,
3168
- };
3169
- }
3170
- async function resolveRemoteApiClient(options, runtime) {
3171
- if (runtime.apiClient) {
3172
- return runtime.apiClient;
3173
- }
3174
- return createRemoteApiClientForEnvironment(await resolveRemoteEnvironment(options, runtime));
3175
- }
3176
- function isTruthyEnvFlag(value) {
3177
- return ['1', 'true', 'yes', 'on'].includes(String(value ?? '')
3178
- .trim()
3179
- .toLowerCase());
3180
- }
3181
-
3182
2882
  exports.ACTIVITY_UPLOAD_KEY_MAX_LENGTH = ACTIVITY_UPLOAD_KEY_MAX_LENGTH;
2883
+ exports.CREATE_USER_MINIPROGRAM_API_PATH = CREATE_USER_MINIPROGRAM_API_PATH;
2884
+ exports.CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
2885
+ exports.DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
2886
+ exports.DETAIL_USER_MINIPROGRAM_API_PATH = DETAIL_USER_MINIPROGRAM_API_PATH;
2887
+ exports.DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH = DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
2888
+ exports.DEVELOPER_ENTITY_LIST_API_PATH = DEVELOPER_ENTITY_LIST_API_PATH;
2889
+ exports.DEVELOPER_ENTITY_SWITCH_API_PATH = DEVELOPER_ENTITY_SWITCH_API_PATH;
2890
+ exports.LIST_USER_MINIPROGRAM_API_PATH = LIST_USER_MINIPROGRAM_API_PATH;
2891
+ exports.LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH = LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
2892
+ exports.LIST_USER_MINIPROGRAM_VERSION_API_PATH = LIST_USER_MINIPROGRAM_VERSION_API_PATH;
3183
2893
  exports.MINIAPP_UPLOAD_BATCH_SIZE = MINIAPP_UPLOAD_BATCH_SIZE;
3184
2894
  exports.MINIAPP_UPLOAD_SCOPE = MINIAPP_UPLOAD_SCOPE;
3185
- exports.MiniProgramProjectBindingError = MiniProgramProjectBindingError;
3186
2895
  exports.PRECHECK_USER_MINIPROGRAM_VERSION_API_PATH = PRECHECK_USER_MINIPROGRAM_VERSION_API_PATH;
2896
+ exports.RELEASE_USER_MINIPROGRAM_VERSION_API_PATH = RELEASE_USER_MINIPROGRAM_VERSION_API_PATH;
2897
+ exports.REOPEN_USER_MINIPROGRAM_API_PATH = REOPEN_USER_MINIPROGRAM_API_PATH;
3187
2898
  exports.SUBMIT_USER_MINIPROGRAM_AUDIT_API_PATH = SUBMIT_USER_MINIPROGRAM_AUDIT_API_PATH;
3188
- exports.createRemoteApiClientForEnvironment = createRemoteApiClientForEnvironment;
3189
- exports.getBoundMiniProgram = getBoundMiniProgram;
2899
+ exports.TAKE_DOWN_USER_MINIPROGRAM_API_PATH = TAKE_DOWN_USER_MINIPROGRAM_API_PATH;
2900
+ exports.UPDATE_SQUARE_DISPLAY_API_PATH = UPDATE_SQUARE_DISPLAY_API_PATH;
2901
+ exports.UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH;
2902
+ exports.USER_MINIPROGRAM_ACCESS_STATUS_API_PATH = USER_MINIPROGRAM_ACCESS_STATUS_API_PATH;
2903
+ exports.USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH;
2904
+ exports.USER_MINIPROGRAM_VERSION_PREVIEW_INFO_API_PATH = USER_MINIPROGRAM_VERSION_PREVIEW_INFO_API_PATH;
2905
+ exports.WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH = WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH;
3190
2906
  exports.getMiniappUploadKey = getMiniappUploadKey;
3191
2907
  exports.normalizeRelativePath = normalizeRelativePath;
3192
- exports.readBoundMiniProgramId = readBoundMiniProgramId;
3193
- exports.readBoundMiniProgramIdFromPackageJson = readBoundMiniProgramIdFromPackageJson;
3194
- exports.readMiniProgramProjectPackage = readMiniProgramProjectPackage;
3195
2908
  exports.relativePathContainsNodeModulesSegment = relativePathContainsNodeModulesSegment;
3196
2909
  exports.requireSemver = requireSemver;
3197
- exports.resolveRemoteEnvironment = resolveRemoteEnvironment;
3198
2910
  exports.semverExports = semverExports;
3199
2911
  exports.shouldUploadDistFile = shouldUploadDistFile;
3200
2912
  exports.validateUploadPaths = validateUploadPaths;
3201
2913
  exports.validateUploadTotalSize = validateUploadTotalSize;
3202
- exports.writeBoundMiniProgramId = writeBoundMiniProgramId;
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index$2 = require('./index-ByDy5HXi.cjs');
3
+ var index$2 = require('./index-QAkYgxPI.cjs');
4
4
  var require$$0$2 = require('fs');
5
5
  var require$$2$1 = require('crypto');
6
6
  var require$$1$2 = require('path');
7
7
  var require$$0$3 = require('assert');
8
8
  var require$$4$2 = require('events');
9
9
  var require$$1$1 = require('util');
10
- var context$1 = require('./context-CM46YbPT.cjs');
10
+ var index$3 = require('./index-BQm5XmMC.cjs');
11
11
  var require$$0$5 = require('net');
12
12
  var require$$0$4 = require('url');
13
13
  var require$$2$2 = require('http');
@@ -13707,7 +13707,7 @@ function requireSource () {
13707
13707
  const ajv_1 = requireAjv$1();
13708
13708
  const ajv_formats_1 = requireDist();
13709
13709
  const debounceFn = requireDebounceFn();
13710
- const semver = context$1.requireSemver();
13710
+ const semver = index$3.requireSemver();
13711
13711
  const onetime = index$2.requireOnetime();
13712
13712
  const encryptionAlgorithm = 'aes-256-cbc';
13713
13713
  const createPlainObject = () => {
@@ -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-ByDy5HXi.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-QAkYgxPI.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-ByDy5HXi.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-QAkYgxPI.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-ByDy5HXi.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-QAkYgxPI.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-ByDy5HXi.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-QAkYgxPI.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-ByDy5HXi.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-QAkYgxPI.cjs', document.baseURI).href)));
250
250
  function __require() { return require$1("node:process"); }
251
251
 
252
252
  var help = {};
@@ -13241,7 +13241,7 @@ function loadEnvPreset(argv, options = {}) {
13241
13241
  * 支持 `--env-file path`、`--env-file=path` 两种写法。
13242
13242
  */
13243
13243
  function readEnvFileArgFromArgv(argv) {
13244
- for (let i = 0; i < argv.length; i += 1) {
13244
+ for (let i = argv.length - 1; i >= 0; i -= 1) {
13245
13245
  const arg = argv[i];
13246
13246
  if (arg === '--env-file') {
13247
13247
  return argv[i + 1];
@@ -13257,7 +13257,7 @@ function readEnvFileArgFromArgv(argv) {
13257
13257
  * 支持 `--env name`、`--env=name` 两种写法。
13258
13258
  */
13259
13259
  function readEnvNameArgFromArgv(argv) {
13260
- for (let i = 0; i < argv.length; i += 1) {
13260
+ for (let i = argv.length - 1; i >= 0; i -= 1) {
13261
13261
  const arg = argv[i];
13262
13262
  if (arg === '--env') {
13263
13263
  return argv[i + 1];
@@ -13347,7 +13347,7 @@ function getPathname(pathWithQuery) {
13347
13347
  }
13348
13348
 
13349
13349
  const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
13350
- const BUILT_CLI_VERSION = '0.6.6-alpha.2';
13350
+ const BUILT_CLI_VERSION = '0.6.6-alpha.3';
13351
13351
  const PACKAGE_JSON_CANDIDATES = [
13352
13352
  path.resolve(__dirname, '..', '..', 'package.json'),
13353
13353
  path.resolve(__dirname, '..', 'package.json'),
@@ -13407,6 +13407,7 @@ function createCliProgram(overrides = {}) {
13407
13407
  loginToHeybox: defaultLoginToHeybox,
13408
13408
  printLoginStatus: defaultPrintLoginStatus,
13409
13409
  printUpdateReminder: printUpdateReminder,
13410
+ runBuildCommand: defaultRunBuildCommand,
13410
13411
  runCreateCommand: defaultRunCreateCommand,
13411
13412
  runDevCommand: defaultRunDevCommand,
13412
13413
  runDoctorCommand: defaultRunDoctorCommand,
@@ -13420,7 +13421,7 @@ function createCliProgram(overrides = {}) {
13420
13421
  .description('hb-sdk developer tools')
13421
13422
  .version(getCliVersion())
13422
13423
  .option('-v, --verbose', '输出详细调试信息')
13423
- .option('--env <name>', '加载项目根下 .env.<name> 预设,并将 deploy 构建的 Vite mode 设为 name')
13424
+ .option('--env <name>', '加载项目根下 .env.<name> 预设,供 build deploy 使用')
13424
13425
  .option('--env-file <path>', '显式指定 .env 文件路径,优先级高于 --env')
13425
13426
  .showHelpAfterError()
13426
13427
  .exitOverride();
@@ -13439,6 +13440,17 @@ function createCliProgram(overrides = {}) {
13439
13440
  const logger = resolveLogger(command);
13440
13441
  await handlers.runDevCommand(options, { logger });
13441
13442
  }, handlers.printUpdateReminder, resolveLogger));
13443
+ addVerboseOption(program.command('build').description('构建当前小程序项目').option('--env <name>', '加载项目根下 .env.<name> 预设并作为 Vite mode')).action(async (...args) => {
13444
+ const command = readCommandFromActionArgs(args);
13445
+ if (!command) {
13446
+ throw new Error('无法解析 build 命令上下文');
13447
+ }
13448
+ if (readStringOption(readCommandOptionsWithAncestors(command).envFile) !== undefined) {
13449
+ throw new Error('hb-sdk build 不支持 --env-file,请使用 --env <name>');
13450
+ }
13451
+ const logger = resolveLogger(command);
13452
+ await handlers.runBuildCommand({}, { logger });
13453
+ });
13442
13454
  installRemoteCommands(program, handlers, resolveLogger);
13443
13455
  addVerboseOption(program.command('doctor').description('诊断 hb-sdk 本地环境和 Agent Skill 版本')).action(async (...args) => {
13444
13456
  const logger = resolveLogger(readCommandFromActionArgs(args));
@@ -13668,31 +13680,35 @@ function createCommandLoggerResolver(options) {
13668
13680
  };
13669
13681
  }
13670
13682
  const defaultClearLoginStatus = async (...args) => {
13671
- const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-fNe0eDs_.cjs'); });
13683
+ const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-BNLH13Zd.cjs'); });
13672
13684
  return clearLoginStatus(...args);
13673
13685
  };
13674
13686
  const defaultLoginToHeybox = async (...args) => {
13675
- const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-fNe0eDs_.cjs'); });
13687
+ const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-BNLH13Zd.cjs'); });
13676
13688
  return loginToHeybox(...args);
13677
13689
  };
13678
13690
  const defaultPrintLoginStatus = async (...args) => {
13679
- const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-fNe0eDs_.cjs'); });
13691
+ const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-BNLH13Zd.cjs'); });
13680
13692
  return printLoginStatus(...args);
13681
13693
  };
13694
+ const defaultRunBuildCommand = async (...args) => {
13695
+ const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-De-QADpA.cjs'); });
13696
+ return runBuildCommand(...args);
13697
+ };
13682
13698
  const defaultRunCreateCommand = async (...args) => {
13683
- const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-CxjB3oSo.cjs'); });
13699
+ const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-B5gGBaSV.cjs'); });
13684
13700
  return runCreateCommand(...args);
13685
13701
  };
13686
13702
  const defaultRunDevCommand = async (...args) => {
13687
- const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-Km0or0yY.cjs'); });
13703
+ const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-BcCWCeac.cjs'); });
13688
13704
  return runDevCommand(...args);
13689
13705
  };
13690
13706
  const defaultRunDoctorCommand = async (...args) => {
13691
- const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-baVOqNSh.cjs'); });
13707
+ const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-BhBM4cWH.cjs'); });
13692
13708
  return runDoctorCommand(...args);
13693
13709
  };
13694
13710
  const defaultRunRemoteCommand = async (...args) => {
13695
- const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-BRIlRrCG.cjs'); });
13711
+ const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-BE53wntR.cjs'); });
13696
13712
  return runRemoteCommand(...args);
13697
13713
  };
13698
13714
  function resolveStandaloneLogger(options, verbose) {
@@ -3,9 +3,9 @@
3
3
  var promises = require('node:readline/promises');
4
4
  var node_crypto = require('node:crypto');
5
5
  var node_http = require('node:http');
6
- var session = require('./session-CTcelATz.cjs');
6
+ var session = require('./session-YJ8xNESM.cjs');
7
7
  var browser = require('./browser-RAy8e8cV.cjs');
8
- var index = require('./index-ByDy5HXi.cjs');
8
+ var index = require('./index-QAkYgxPI.cjs');
9
9
  require('node:path');
10
10
  require('fs');
11
11
  require('constants');