@heybox/hb-sdk 0.9.1-alpha.9 → 0.9.1
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 +104 -19
- package/README.md +17 -16
- package/dist/cli-chunks/{build-mIRvG3a8.cjs → build-DCp9C9V4.cjs} +5 -5
- package/dist/cli-chunks/{context-0uq4_H2M.cjs → context-Bg6C5ow7.cjs} +10 -5
- package/dist/cli-chunks/{create-DDPUUzi1.cjs → create-D5bX2Xvw.cjs} +1 -1
- package/dist/cli-chunks/{dev-BOrmDVzH.cjs → dev-CFjwhG3q.cjs} +194 -81
- package/dist/cli-chunks/{doctor-BtOKr1SN.cjs → doctor-CMz_Kf7-.cjs} +1 -1
- package/dist/cli-chunks/{index-MMLoNdeZ.cjs → index-B_KKGIBN.cjs} +16 -16
- package/dist/cli-chunks/{index-DYqbUZfk.cjs → index-YnVa6S_p.cjs} +1 -1
- package/dist/cli-chunks/{index.esm-DYKzLyvN.cjs → index.esm-CgZPnqEA.cjs} +6 -6
- package/dist/cli-chunks/{login-Be95cDi7.cjs → login-Df_v6jNs.cjs} +1 -1
- package/dist/cli-chunks/{project-vite-Si5Tyi7Q.cjs → project-vite-By8cnIwP.cjs} +1 -1
- package/dist/cli-chunks/{remote-D2XvKzs6.cjs → remote-ClIJz-e2.cjs} +28 -16
- package/dist/cli-chunks/{runtime-gate-B0YPKxEd.cjs → runtime-gate-DKiyNwX2.cjs} +2 -2
- package/dist/cli-chunks/{runtime-permission-env-CzhGcDRj.cjs → runtime-permission-env-BNQ2fx4w.cjs} +77 -4
- package/dist/cli-chunks/{skill-7n-Yn9ny.cjs → skill-Bk-EBSbJ.cjs} +2 -2
- package/dist/cli-chunks/{version-B1aYSptt.cjs → version-CG_VNZGM.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-C1g2tadT.js +102 -0
- package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-DzaVQPma.js → desktop-app-launch-sH2a_jbj.js} +1 -1
- package/dist/devtools/browser-dev-host/assets/{index-BRxbUJVN.css → index-7Cq8iNcD.css} +1 -1
- package/dist/devtools/browser-dev-host/assets/{index-hh0NzK3n.js → index-Bpxbe1lP.js} +4 -4
- package/dist/devtools/browser-dev-host/index.html +3 -3
- package/dist/index.cjs.js +16 -8
- package/dist/index.esm.js +16 -8
- package/dist/miniapp-publish.cjs.js +27 -0
- package/dist/miniapp-publish.esm.js +27 -0
- package/dist/protocol.cjs.js +1 -1
- package/dist/protocol.esm.js +1 -1
- package/dist/vite.cjs.js +36 -1
- package/dist/vite.esm.js +36 -1
- package/docs/runtime-host-migration.md +4 -2
- package/package.json +4 -4
- package/skill/SKILL.md +10 -0
- package/skill/skill.json +5 -5
- package/types/index.d.ts +124 -94
- package/types/miniapp-publish/index.d.ts +3 -0
- package/types/protocol.d.ts +47 -39
- package/types/vite/index.d.ts +1 -0
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-Iyo4aIMO.js +0 -102
|
@@ -238,19 +238,19 @@ function requireArgument () {
|
|
|
238
238
|
|
|
239
239
|
var command = {};
|
|
240
240
|
|
|
241
|
-
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-
|
|
241
|
+
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-B_KKGIBN.cjs', document.baseURI).href)));
|
|
242
242
|
function __require$4() { return require$5("node:events"); }
|
|
243
243
|
|
|
244
|
-
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-
|
|
244
|
+
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-B_KKGIBN.cjs', document.baseURI).href)));
|
|
245
245
|
function __require$3() { return require$4("node:child_process"); }
|
|
246
246
|
|
|
247
|
-
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-
|
|
247
|
+
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-B_KKGIBN.cjs', document.baseURI).href)));
|
|
248
248
|
function __require$2() { return require$3("node:path"); }
|
|
249
249
|
|
|
250
|
-
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-
|
|
250
|
+
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-B_KKGIBN.cjs', document.baseURI).href)));
|
|
251
251
|
function __require$1() { return require$2("node:fs"); }
|
|
252
252
|
|
|
253
|
-
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-
|
|
253
|
+
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-B_KKGIBN.cjs', document.baseURI).href)));
|
|
254
254
|
function __require() { return require$1("node:process"); }
|
|
255
255
|
|
|
256
256
|
var help = {};
|
|
@@ -17249,7 +17249,7 @@ async function inspectFeedbackLog(file, size) {
|
|
|
17249
17249
|
return { mimeType: 'text/plain', width: 0, height: 0 };
|
|
17250
17250
|
}
|
|
17251
17251
|
async function createFeedbackCosClient(getToken) {
|
|
17252
|
-
const { default: COS } = await Promise.resolve().then(function () { return require('./index-
|
|
17252
|
+
const { default: COS } = await Promise.resolve().then(function () { return require('./index-YnVa6S_p.cjs'); }).then(function (n) { return n.index; });
|
|
17253
17253
|
const cos = new COS({
|
|
17254
17254
|
getAuthorization(_options, callback) {
|
|
17255
17255
|
void getToken().then((token) => callback({
|
|
@@ -20900,7 +20900,7 @@ function readEnvNameArgFromArgv(argv) {
|
|
|
20900
20900
|
}
|
|
20901
20901
|
|
|
20902
20902
|
const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
|
|
20903
|
-
const BUILT_CLI_VERSION = '0.9.1
|
|
20903
|
+
const BUILT_CLI_VERSION = '0.9.1';
|
|
20904
20904
|
const PACKAGE_JSON_CANDIDATES = [
|
|
20905
20905
|
path.resolve(__dirname, '..', '..', 'package.json'),
|
|
20906
20906
|
path.resolve(__dirname, '..', 'package.json'),
|
|
@@ -21269,39 +21269,39 @@ function createCommandLoggerResolver(options) {
|
|
|
21269
21269
|
};
|
|
21270
21270
|
}
|
|
21271
21271
|
const defaultClearLoginStatus = async (...args) => {
|
|
21272
|
-
const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-
|
|
21272
|
+
const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-Df_v6jNs.cjs'); });
|
|
21273
21273
|
return clearLoginStatus(...args);
|
|
21274
21274
|
};
|
|
21275
21275
|
const defaultLoginToHeybox = async (...args) => {
|
|
21276
|
-
const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-
|
|
21276
|
+
const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-Df_v6jNs.cjs'); });
|
|
21277
21277
|
return loginToHeybox(...args);
|
|
21278
21278
|
};
|
|
21279
21279
|
const defaultPrintLoginStatus = async (...args) => {
|
|
21280
|
-
const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-
|
|
21280
|
+
const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-Df_v6jNs.cjs'); });
|
|
21281
21281
|
return printLoginStatus(...args);
|
|
21282
21282
|
};
|
|
21283
21283
|
const defaultRunBuildCommand = async (...args) => {
|
|
21284
|
-
const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-
|
|
21284
|
+
const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-DCp9C9V4.cjs'); });
|
|
21285
21285
|
return runBuildCommand(...args);
|
|
21286
21286
|
};
|
|
21287
21287
|
const defaultRunCreateCommand = async (...args) => {
|
|
21288
|
-
const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-
|
|
21288
|
+
const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-D5bX2Xvw.cjs'); });
|
|
21289
21289
|
return runCreateCommand(...args);
|
|
21290
21290
|
};
|
|
21291
21291
|
const defaultRunDevCommand = async (...args) => {
|
|
21292
|
-
const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-
|
|
21292
|
+
const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-CFjwhG3q.cjs'); }).then(function (n) { return n.dev; });
|
|
21293
21293
|
return runDevCommand(...args);
|
|
21294
21294
|
};
|
|
21295
21295
|
const defaultRunDoctorCommand = async (...args) => {
|
|
21296
|
-
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-
|
|
21296
|
+
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-CMz_Kf7-.cjs'); });
|
|
21297
21297
|
return runDoctorCommand(...args);
|
|
21298
21298
|
};
|
|
21299
21299
|
const defaultRunSkillInstallCommand = async (...args) => {
|
|
21300
|
-
const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-
|
|
21300
|
+
const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-Bk-EBSbJ.cjs'); });
|
|
21301
21301
|
return runSkillInstallCommand(...args);
|
|
21302
21302
|
};
|
|
21303
21303
|
const defaultRunRemoteCommand = async (...args) => {
|
|
21304
|
-
const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-
|
|
21304
|
+
const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-ClIJz-e2.cjs'); });
|
|
21305
21305
|
return runRemoteCommand(...args);
|
|
21306
21306
|
};
|
|
21307
21307
|
function resolveStandaloneLogger(options, verbose) {
|
|
@@ -11,8 +11,8 @@ var require$$0$3 = require('url');
|
|
|
11
11
|
var require$$5 = require('zlib');
|
|
12
12
|
var require$$0 = require('buffer');
|
|
13
13
|
var require$$1 = require('util');
|
|
14
|
-
var index = require('./index-
|
|
15
|
-
var dev = require('./dev-
|
|
14
|
+
var index = require('./index-B_KKGIBN.cjs');
|
|
15
|
+
var dev = require('./dev-CFjwhG3q.cjs');
|
|
16
16
|
require('node:module');
|
|
17
17
|
require('readline');
|
|
18
18
|
require('os');
|
|
@@ -26,9 +26,9 @@ require('constants');
|
|
|
26
26
|
require('node:fs');
|
|
27
27
|
require('node:fs/promises');
|
|
28
28
|
require('node:zlib');
|
|
29
|
-
require('./context-
|
|
30
|
-
require('./runtime-permission-env-
|
|
31
|
-
require('./version-
|
|
29
|
+
require('./context-Bg6C5ow7.cjs');
|
|
30
|
+
require('./runtime-permission-env-BNQ2fx4w.cjs');
|
|
31
|
+
require('./version-CG_VNZGM.cjs');
|
|
32
32
|
require('node:async_hooks');
|
|
33
33
|
require('sharp');
|
|
34
34
|
require('node:os');
|
|
@@ -42,7 +42,7 @@ require('node:buffer');
|
|
|
42
42
|
require('node:url');
|
|
43
43
|
require('node:util');
|
|
44
44
|
require('node:child_process');
|
|
45
|
-
require('./project-vite-
|
|
45
|
+
require('./project-vite-By8cnIwP.cjs');
|
|
46
46
|
|
|
47
47
|
var bufferUtil = {exports: {}};
|
|
48
48
|
|
|
@@ -3,7 +3,7 @@
|
|
|
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 index = require('./index-
|
|
6
|
+
var index = require('./index-B_KKGIBN.cjs');
|
|
7
7
|
var browser = require('./browser-RAy8e8cV.cjs');
|
|
8
8
|
require('node:module');
|
|
9
9
|
require('readline');
|
|
@@ -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-B_KKGIBN.cjs');
|
|
9
9
|
|
|
10
10
|
function findProjectRoot(startDir) {
|
|
11
11
|
let current = path.resolve(startDir);
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
4
|
-
var context = require('./context-
|
|
3
|
+
var runtimePermissionEnv = require('./runtime-permission-env-BNQ2fx4w.cjs');
|
|
4
|
+
var context = require('./context-Bg6C5ow7.cjs');
|
|
5
5
|
var promises = require('node:readline/promises');
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var runtimeGate = require('./runtime-gate-
|
|
6
|
+
var index = require('./index-B_KKGIBN.cjs');
|
|
7
|
+
var runtimeGate = require('./runtime-gate-DKiyNwX2.cjs');
|
|
8
8
|
var childProcess = require('node:child_process');
|
|
9
9
|
var fs = require('node:fs');
|
|
10
10
|
var fs$1 = require('node:fs/promises');
|
|
11
11
|
var path = require('node:path');
|
|
12
12
|
var node_crypto = require('node:crypto');
|
|
13
13
|
require('node:zlib');
|
|
14
|
-
require('./version-
|
|
14
|
+
require('./version-CG_VNZGM.cjs');
|
|
15
15
|
require('node:async_hooks');
|
|
16
16
|
require('sharp');
|
|
17
17
|
require('node:module');
|
|
@@ -286,7 +286,7 @@ function createDefaultCosClient(uploadToken, COS) {
|
|
|
286
286
|
};
|
|
287
287
|
}
|
|
288
288
|
async function loadCosConstructor() {
|
|
289
|
-
const cosModule = await Promise.resolve().then(function () { return require('./index-
|
|
289
|
+
const cosModule = await Promise.resolve().then(function () { return require('./index-YnVa6S_p.cjs'); }).then(function (n) { return n.index; });
|
|
290
290
|
return cosModule.default;
|
|
291
291
|
}
|
|
292
292
|
function formatSize(bytes) {
|
|
@@ -1385,7 +1385,7 @@ async function remoteInfo(options, context$1, runtime) {
|
|
|
1385
1385
|
const removed = currentBindApps.filter((item) => !localIDs.has(item.appid));
|
|
1386
1386
|
const bindings = { local, current: currentBindApps, added, removed };
|
|
1387
1387
|
const basicInfo = await context.compareBasicInfo(context$1.packageJson.projectRoot, detail, runtime.fetchImpl);
|
|
1388
|
-
const output = { changed: false, miniProgramId, detail: toCamelCaseDeep(detail), permissions: permissionViews, bindings, basicInfo };
|
|
1388
|
+
const output = { changed: false, miniProgramId, detail: toCamelCaseDeep(detail), permissions: permissionViews, permissionSources: { localDeclaration: localPermissions.permissions ?? null, onlineManifest: detail.manifest ?? null, onlineRuntimeSnapshot: detail.effective_runtime_permissions ?? null, platformApprovals: detail.runtime_permissions ?? null }, bindings, basicInfo };
|
|
1389
1389
|
if (!options.json)
|
|
1390
1390
|
context$1.logger.info(`版本资料:${basicInfo.status}`);
|
|
1391
1391
|
if (!options.json) {
|
|
@@ -1952,16 +1952,28 @@ function printMiniProgramDetail(logger, detail, permissionViews, bindings) {
|
|
|
1952
1952
|
if (detail.protocol_string) {
|
|
1953
1953
|
logger.info(`Protocol: ${detail.protocol_string}`);
|
|
1954
1954
|
}
|
|
1955
|
-
logger.info('
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
const configs = view.requestedConfig
|
|
1961
|
-
? ` requested=${JSON.stringify(view.requestedConfig)} approved=${JSON.stringify(view.approvedConfig)} effective=${JSON.stringify(view.effectiveConfig)}`
|
|
1962
|
-
: '';
|
|
1963
|
-
logger.info(` ${view.key}: 声明=${view.declared ? '是' : '否'}${approval} 最终=${view.effective ? '可用' : '不可用'}${configs}`);
|
|
1955
|
+
logger.info('权限(本地声明 / 线上版本声明 / 平台批准):');
|
|
1956
|
+
const manifest = detail.manifest && typeof detail.manifest === 'object' ? detail.manifest : undefined;
|
|
1957
|
+
let online;
|
|
1958
|
+
try {
|
|
1959
|
+
online = manifest ? runtimePermissionEnv.parseMiniappPermissions(manifest.permissions, { present: Object.hasOwn(manifest, 'permissions'), sdkVersion: typeof detail.sdk_version === 'string' ? detail.sdk_version : '0.8.0' }) : undefined;
|
|
1964
1960
|
}
|
|
1961
|
+
catch { /* 缺失或未知声明保持未知,不能推断线上可用。 */ }
|
|
1962
|
+
const publishedRuntime = runtimePermissionEnv.parseMiniProgramRuntimePermissions(detail.effective_runtime_permissions);
|
|
1963
|
+
let differs = false;
|
|
1964
|
+
for (const view of permissionViews) {
|
|
1965
|
+
const published = online ? online.permissions?.[view.key]?.enabled === true : undefined;
|
|
1966
|
+
const requested = online?.permissions?.[view.key];
|
|
1967
|
+
const changed = published !== undefined && (published !== view.declared ||
|
|
1968
|
+
(view.key === 'network' && published && view.requestedConfig?.useOfficialDomain !== (requested && 'useOfficialDomain' in requested ? requested.useOfficialDomain : undefined)));
|
|
1969
|
+
differs ||= changed;
|
|
1970
|
+
const approval = view.access === 'platform-approval' ? (view.approvalSource === 'first-party' ? '第一方自动批准' : view.approved ? '已批准' : '未批准') : '无需审批';
|
|
1971
|
+
logger.info(` ${view.key}: 本地声明=${view.declared ? '是' : '否'} 线上版本声明=${published === undefined ? '未知' : published ? '是' : '否'} 平台批准=${approval} 线上快照=${publishedRuntime.valid ? publishedRuntime.permissions[view.key]?.status ?? '缺少条目' : '未知'}${changed ? ' [不一致]' : ''}`);
|
|
1972
|
+
}
|
|
1973
|
+
if (differs)
|
|
1974
|
+
logger.warn('本地声明与线上版本不一致;本地调试结果不代表线上生效,需发布包含声明的新版本。');
|
|
1975
|
+
if (!online)
|
|
1976
|
+
logger.warn('未取得线上版本声明,无法确认线上生效状态;平台批准和本地声明不代表已发布。');
|
|
1965
1977
|
if (bindings) {
|
|
1966
1978
|
logger.info('关联游戏(本地/线上/新增/移除):');
|
|
1967
1979
|
logger.info(` local=${formatBoundApps(bindings.local)}`);
|
|
@@ -5,8 +5,8 @@ require('node:module');
|
|
|
5
5
|
require('node:url');
|
|
6
6
|
var fs = require('node:fs');
|
|
7
7
|
var path = require('node:path');
|
|
8
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
9
|
-
var index = require('./index-
|
|
8
|
+
var runtimePermissionEnv = require('./runtime-permission-env-BNQ2fx4w.cjs');
|
|
9
|
+
var index = require('./index-B_KKGIBN.cjs');
|
|
10
10
|
var _commonjsDynamicModules = require('./_commonjs-dynamic-modules-DUamuDzp.cjs');
|
|
11
11
|
var require$$0$1 = require('fs');
|
|
12
12
|
var require$$1 = require('path');
|
package/dist/cli-chunks/{runtime-permission-env-CzhGcDRj.cjs → runtime-permission-env-BNQ2fx4w.cjs}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-B_KKGIBN.cjs');
|
|
4
4
|
var fs = require('node:fs');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var version$1 = require('./version-
|
|
6
|
+
var version$1 = require('./version-CG_VNZGM.cjs');
|
|
7
7
|
require('node:crypto');
|
|
8
8
|
var node_async_hooks = require('node:async_hooks');
|
|
9
9
|
|
|
@@ -297,7 +297,7 @@ function isManagedMiniProgramRuntimePermissionKey(key) {
|
|
|
297
297
|
* `requirement`:`kind: 'none'` 不读取权限;`kind: 'all'` 要求列出的每个 canonical entry 都存在
|
|
298
298
|
* 且 `status === 'enabled'`。之后仍需通过 Host capability、可信手势、用户授权、参数和业务
|
|
299
299
|
* policy。当前 Runtime 对 `valid: false` 按空权限表 fail closed,受保护 method 会得到
|
|
300
|
-
* `
|
|
300
|
+
* `PERMISSION_NOT_IN_SNAPSHOT`,而不是沿用输入中的部分 enabled entry。
|
|
301
301
|
*
|
|
302
302
|
* @example
|
|
303
303
|
* ```ts
|
|
@@ -447,7 +447,7 @@ function createMiniProgramLocalDevGrant(options) {
|
|
|
447
447
|
return { schema_version: 1, revision: options.revision, entries };
|
|
448
448
|
}
|
|
449
449
|
/**
|
|
450
|
-
*
|
|
450
|
+
* 声明型权限由本地声明生成;审批型权限先与平台基线求交,再补齐临时授权。
|
|
451
451
|
* 调用方只可在当前 Dev Session 已验证且用户接受后传入 grant;本函数不证明其可信来源。
|
|
452
452
|
* 非法 grant 整体降权到基线,已批准配置不会被临时配置覆盖。
|
|
453
453
|
*/
|
|
@@ -459,6 +459,9 @@ function composeLocalDevRuntimePermissions(options) {
|
|
|
459
459
|
if (options.declaredPermissions[key]?.enabled !== true) {
|
|
460
460
|
delete permissions[key];
|
|
461
461
|
}
|
|
462
|
+
else if (MINI_PROGRAM_PERMISSION_CATALOG.some(definition => definition.key === key && definition.access === 'declaration')) {
|
|
463
|
+
permissions[key] = { key, status: 'enabled', config: {} };
|
|
464
|
+
}
|
|
462
465
|
else if (key === 'network' && permissions.network) {
|
|
463
466
|
permissions.network.config.useOfficialDomain = permissions.network.status === 'enabled'
|
|
464
467
|
&& permissions.network.config.useOfficialDomain === true
|
|
@@ -6904,6 +6907,47 @@ function validateWorkspaceCardReceiptV2(raw, controller) {
|
|
|
6904
6907
|
fail('v2 asset path 非法');
|
|
6905
6908
|
}
|
|
6906
6909
|
|
|
6910
|
+
/** 固定序列化顺序,供 CLI 与 Host 对同一份开发描述计算摘要。 */
|
|
6911
|
+
function serializeMiniProgramDevelopmentSnapshot(snapshot) {
|
|
6912
|
+
if (snapshot.schema_version !== 1 ||
|
|
6913
|
+
!/^[a-f0-9]{32}$/.test(snapshot.session_id) ||
|
|
6914
|
+
!Number.isSafeInteger(snapshot.revision) ||
|
|
6915
|
+
snapshot.revision < 1 ||
|
|
6916
|
+
!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(snapshot.sdk_version) ||
|
|
6917
|
+
!snapshot.declared_permissions ||
|
|
6918
|
+
typeof snapshot.declared_permissions !== 'object' ||
|
|
6919
|
+
Array.isArray(snapshot.declared_permissions) ||
|
|
6920
|
+
!Array.isArray(snapshot.platforms) ||
|
|
6921
|
+
snapshot.platforms.some((platform) => !['android', 'ios', 'ohos', 'windows', 'macos', 'linux'].includes(platform)) ||
|
|
6922
|
+
new Set(snapshot.platforms).size !== snapshot.platforms.length)
|
|
6923
|
+
throw new Error('开发快照无效');
|
|
6924
|
+
const declared_permissions = {};
|
|
6925
|
+
for (const key of MINI_PROGRAM_PERMISSION_KEYS) {
|
|
6926
|
+
const declaration = snapshot.declared_permissions[key];
|
|
6927
|
+
if (!declaration)
|
|
6928
|
+
continue;
|
|
6929
|
+
if (typeof declaration.enabled !== 'boolean')
|
|
6930
|
+
throw new Error('开发权限声明无效');
|
|
6931
|
+
declared_permissions[key] =
|
|
6932
|
+
key === 'network'
|
|
6933
|
+
? { enabled: declaration.enabled, useOfficialDomain: declaration.useOfficialDomain === true }
|
|
6934
|
+
: { enabled: declaration.enabled };
|
|
6935
|
+
}
|
|
6936
|
+
if (Object.keys(snapshot.declared_permissions).some((key) => !MINI_PROGRAM_PERMISSION_KEYS.includes(key)))
|
|
6937
|
+
throw new Error('开发权限声明无效');
|
|
6938
|
+
if (snapshot.companion_manifest_sha256 !== undefined && !/^[a-f0-9]{64}$/.test(snapshot.companion_manifest_sha256))
|
|
6939
|
+
throw new Error('开发产物摘要无效');
|
|
6940
|
+
return JSON.stringify({
|
|
6941
|
+
schema_version: 1,
|
|
6942
|
+
session_id: snapshot.session_id,
|
|
6943
|
+
revision: snapshot.revision,
|
|
6944
|
+
sdk_version: snapshot.sdk_version,
|
|
6945
|
+
declared_permissions,
|
|
6946
|
+
platforms: [...snapshot.platforms].sort(),
|
|
6947
|
+
...(snapshot.companion_manifest_sha256 ? { companion_manifest_sha256: snapshot.companion_manifest_sha256 } : {}),
|
|
6948
|
+
});
|
|
6949
|
+
}
|
|
6950
|
+
|
|
6907
6951
|
/**
|
|
6908
6952
|
* 校验项目配置或产物中的小程序类别。
|
|
6909
6953
|
*
|
|
@@ -7061,6 +7105,31 @@ function parseMiniappBindAppIds(value, options = {}) {
|
|
|
7061
7105
|
return Object.freeze(appIds);
|
|
7062
7106
|
}
|
|
7063
7107
|
|
|
7108
|
+
/** 小程序简介最大长度(Unicode code point),与服务端截断口径一致。 */
|
|
7109
|
+
const MINIAPP_DESC_MAX_LENGTH = 200;
|
|
7110
|
+
/**
|
|
7111
|
+
* 校验并规范化 `package.json#heybox.desc` / `manifest.desc`。
|
|
7112
|
+
*
|
|
7113
|
+
* @param value - 原始声明;未声明时为 `undefined`。
|
|
7114
|
+
* @param sourceLabel - 错误消息中的字段来源,默认 `package.json#heybox.desc`。
|
|
7115
|
+
* @returns 去除首尾空白后的简介;未声明或为空串时返回 `undefined`。
|
|
7116
|
+
* @throws `Error` 非字符串、超过 200 个字符,或包含除换行外的控制字符时抛出。
|
|
7117
|
+
*/
|
|
7118
|
+
function parseMiniappDesc(value, sourceLabel = 'package.json#heybox.desc') {
|
|
7119
|
+
if (value === undefined)
|
|
7120
|
+
return undefined;
|
|
7121
|
+
if (typeof value !== 'string')
|
|
7122
|
+
throw new Error(`${sourceLabel} 必须是字符串`);
|
|
7123
|
+
const desc = value.replace(/^\p{White_Space}+|\p{White_Space}+$/gu, '');
|
|
7124
|
+
if (!desc)
|
|
7125
|
+
return undefined;
|
|
7126
|
+
if (Array.from(desc).length > MINIAPP_DESC_MAX_LENGTH)
|
|
7127
|
+
throw new Error(`${sourceLabel} 不能超过 ${MINIAPP_DESC_MAX_LENGTH} 个字符`);
|
|
7128
|
+
if (/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u.test(desc.replace(/\n/g, '')))
|
|
7129
|
+
throw new Error(`${sourceLabel} 不能包含控制字符`);
|
|
7130
|
+
return desc;
|
|
7131
|
+
}
|
|
7132
|
+
|
|
7064
7133
|
const MINIAPP_PERMISSION_KEYS = MINI_PROGRAM_PERMISSION_KEYS;
|
|
7065
7134
|
function parseMiniappPermissions(value, options) {
|
|
7066
7135
|
const sourceLabel = options.sourceLabel ?? 'package.json#heybox.permissions';
|
|
@@ -7299,6 +7368,7 @@ function validateMiniappManifestForDeploy(manifest) {
|
|
|
7299
7368
|
throw new Error('manifest.category 缺失,请在 package.json#heybox.category 声明 tool、game 或 other 后重新构建');
|
|
7300
7369
|
}
|
|
7301
7370
|
const bindAppIds = parseMiniappBindAppIds(manifest.bindAppIds, { sourceLabel: 'manifest.bindAppIds' });
|
|
7371
|
+
const desc = parseMiniappDesc(manifest.desc, 'manifest.desc');
|
|
7302
7372
|
return {
|
|
7303
7373
|
version,
|
|
7304
7374
|
sdkVersion,
|
|
@@ -7310,6 +7380,7 @@ function validateMiniappManifestForDeploy(manifest) {
|
|
|
7310
7380
|
...(window === undefined ? {} : { window }),
|
|
7311
7381
|
...(bindAppIds.length === 0 ? {} : { bindAppIds }),
|
|
7312
7382
|
...(category === undefined ? {} : { category }),
|
|
7383
|
+
...(desc === undefined ? {} : { desc }),
|
|
7313
7384
|
};
|
|
7314
7385
|
}
|
|
7315
7386
|
function validateGeneratedCompanions(value) {
|
|
@@ -16628,6 +16699,7 @@ exports.parseMiniProgramLocalDevGrant = parseMiniProgramLocalDevGrant;
|
|
|
16628
16699
|
exports.parseMiniProgramRuntimePermissions = parseMiniProgramRuntimePermissions;
|
|
16629
16700
|
exports.parseMiniappBasicInfo = parseMiniappBasicInfo;
|
|
16630
16701
|
exports.parseMiniappManifestJson = parseMiniappManifestJson;
|
|
16702
|
+
exports.parseMiniappPermissions = parseMiniappPermissions;
|
|
16631
16703
|
exports.prepareMiniappArtifactFiles = prepareMiniappArtifactFiles;
|
|
16632
16704
|
exports.readMiniappBindAppIdsFromPackageJson = readMiniappBindAppIdsFromPackageJson;
|
|
16633
16705
|
exports.readMiniappCategoryFromPackageJson = readMiniappCategoryFromPackageJson;
|
|
@@ -16638,6 +16710,7 @@ exports.readMiniappWorkspaceCardsFromPackageJson = readMiniappWorkspaceCardsFrom
|
|
|
16638
16710
|
exports.relativePathContainsNodeModulesSegment = relativePathContainsNodeModulesSegment;
|
|
16639
16711
|
exports.resolveMiniappSdkVersion = resolveMiniappSdkVersion;
|
|
16640
16712
|
exports.resolveMiniappUploadSessionFiles = resolveMiniappUploadSessionFiles;
|
|
16713
|
+
exports.serializeMiniProgramDevelopmentSnapshot = serializeMiniProgramDevelopmentSnapshot;
|
|
16641
16714
|
exports.shouldSkipMiniappPlatformCspFromEnv = shouldSkipMiniappPlatformCspFromEnv;
|
|
16642
16715
|
exports.shouldUploadDistFile = shouldUploadDistFile;
|
|
16643
16716
|
exports.validateBasicInfoPath = validateBasicInfoPath;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var version = require('./version-
|
|
3
|
+
var version = require('./version-CG_VNZGM.cjs');
|
|
4
4
|
var fs = require('node:fs/promises');
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var childProcess = require('node:child_process');
|
|
7
|
-
var index = require('./index-
|
|
7
|
+
var index = require('./index-B_KKGIBN.cjs');
|
|
8
8
|
require('node:module');
|
|
9
9
|
require('readline');
|
|
10
10
|
require('os');
|