@heybox/hb-sdk 0.9.1-alpha.4 → 0.9.1-alpha.6
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 +23 -2
- package/README.md +33 -0
- package/dist/card-controller.cjs.js +194 -0
- package/dist/card-controller.esm.js +159 -0
- package/dist/cli-chunks/browser-DUdEZCyq.cjs +15 -0
- package/dist/cli-chunks/{build-BZg2rHkW.cjs → build-DYYWRiaY.cjs} +22 -10
- package/dist/cli-chunks/{context-YrzmEOau.cjs → context-Bo4L-Cx_.cjs} +12 -12
- package/dist/cli-chunks/{create-fPvlqLbS.cjs → create-CKC4yp0J.cjs} +12 -5
- package/dist/cli-chunks/{dev-X8_kbp78.cjs → dev-BMX6UXUe.cjs} +58 -13
- package/dist/cli-chunks/{doctor-DdiucYs9.cjs → doctor-DqEYRo4I.cjs} +13 -6
- package/dist/cli-chunks/{index-BdbwsefW.cjs → index-DmCWB_hF.cjs} +4 -7
- package/dist/cli-chunks/{index-BGh-Izf8.cjs → index-J4uQvKT_.cjs} +8780 -4464
- package/dist/cli-chunks/{index.esm-WYIrPjkF.cjs → index.esm-eNPTDv6W.cjs} +18 -19
- package/dist/cli-chunks/{login-DWmNuhWc.cjs → login-BL2OE6r9.cjs} +32 -33
- package/dist/cli-chunks/{project-vite-BVDIeoHB.cjs → project-vite-Du1m7Y_3.cjs} +1 -1
- package/dist/cli-chunks/{remote-BHJFxXyc.cjs → remote-ZHJUtx6l.cjs} +49 -38
- package/dist/cli-chunks/runtime-gate-DedD3ynE.cjs +201950 -0
- package/dist/cli-chunks/{runtime-permission-env-eiq8vE62.cjs → runtime-permission-env-DWaPlchd.cjs} +9396 -2929
- package/dist/cli-chunks/{skill-DC3cfPj2.cjs → skill-D4z_a_BH.cjs} +14 -7
- package/dist/cli-chunks/{version-DYFkOykv.cjs → version-tzrFwpkl.cjs} +1 -1
- package/dist/cli.cjs +14 -6
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-BL1URvGR.js +102 -0
- package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-CZsodKbP.js → desktop-app-launch-D6QZYpUq.js} +3 -3
- package/dist/devtools/browser-dev-host/assets/{index-B9tOX3zG.js → index-Bqsp608m.js} +4 -4
- package/dist/devtools/browser-dev-host/index.html +2 -2
- package/dist/index.cjs.js +6224 -275
- package/dist/index.esm.js +6224 -276
- package/dist/miniapp-publish.cjs.js +6612 -168
- package/dist/miniapp-publish.esm.js +6612 -169
- package/dist/protocol.cjs.js +5805 -0
- package/dist/protocol.esm.js +5805 -0
- package/dist/vite.cjs.js +7475 -217
- package/dist/vite.esm.js +7474 -218
- package/dist/workspace-card-build-sandbox-worker.mjs +72 -0
- package/package.json +25 -11
- package/skill/SKILL.md +15 -0
- package/skill/skill.json +5 -5
- package/types/card-controller.d.ts +3682 -0
- package/types/index.d.ts +7532 -35
- package/types/miniapp-publish/index.d.ts +542 -64
- package/types/protocol.d.ts +2083 -9
- package/types/vite/index.d.ts +25 -12
- package/dist/cli-chunks/browser-RAy8e8cV.cjs +0 -635
- package/dist/cli-chunks/runtime-gate-CR0dRMpQ.cjs +0 -65
- package/dist/cli-chunks/session-Dz1cGg0E.cjs +0 -3403
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-CO2_03W0.js +0 -102
- package/types/core/client.d.ts +0 -108
- package/types/core/csp-violation.d.ts +0 -5
- package/types/core/errors.d.ts +0 -78
- package/types/core/event-bus.d.ts +0 -11
- package/types/core/handshake-state.d.ts +0 -54
- package/types/core/history-observer.d.ts +0 -4
- package/types/core/mini-dev-console.d.ts +0 -36
- package/types/core/network-sanitize.d.ts +0 -31
- package/types/core/sdk.d.ts +0 -104
- package/types/core/singleton.d.ts +0 -372
- package/types/core/utils.d.ts +0 -10
- package/types/core/version.d.ts +0 -2
- package/types/devtools/device-logs.d.ts +0 -48
- package/types/miniapp-manifest/basic-info-browser.d.ts +0 -37
- package/types/miniapp-manifest/basic-info-image-header.d.ts +0 -6
- package/types/miniapp-manifest/basic-info-node.d.ts +0 -17
- package/types/miniapp-manifest/basic-info-placeholder.d.ts +0 -1
- package/types/miniapp-manifest/basic-info.d.ts +0 -33
- package/types/miniapp-manifest/bindings.d.ts +0 -70
- package/types/miniapp-manifest/category.d.ts +0 -11
- package/types/miniapp-manifest/companion-directory.d.ts +0 -2
- package/types/miniapp-manifest/companion-executable.d.ts +0 -4
- package/types/miniapp-manifest/companion-types.d.ts +0 -63
- package/types/miniapp-manifest/companions.d.ts +0 -17
- package/types/miniapp-manifest/index.d.ts +0 -7
- package/types/miniapp-manifest/node.d.ts +0 -22
- package/types/miniapp-manifest/permissions.d.ts +0 -48
- package/types/miniapp-manifest/runtime-gate.d.ts +0 -12
- package/types/miniapp-manifest/schema.d.ts +0 -302
- package/types/modules/auth/index.d.ts +0 -204
- package/types/modules/cloud/index.d.ts +0 -669
- package/types/modules/companion/index.d.ts +0 -1619
- package/types/modules/device/index.d.ts +0 -269
- package/types/modules/environment/index.d.ts +0 -238
- package/types/modules/files/index.d.ts +0 -5
- package/types/modules/files/registry.d.ts +0 -35
- package/types/modules/files/types.d.ts +0 -1548
- package/types/modules/navigation/app-pages/index.d.ts +0 -4
- package/types/modules/navigation/app-pages/types.d.ts +0 -135
- package/types/modules/navigation/index.d.ts +0 -312
- package/types/modules/network/index.d.ts +0 -457
- package/types/modules/network/observability.d.ts +0 -38
- package/types/modules/network/request-shape.d.ts +0 -44
- package/types/modules/share/copy-link.d.ts +0 -46
- package/types/modules/share/extra.d.ts +0 -5
- package/types/modules/share/index.d.ts +0 -294
- package/types/modules/share/screenshot.d.ts +0 -34
- package/types/modules/share/show-share-menu.d.ts +0 -29
- package/types/modules/share/types.d.ts +0 -201
- package/types/modules/storage/index.d.ts +0 -214
- package/types/modules/ui/index.d.ts +0 -315
- package/types/modules/user/get-info.d.ts +0 -44
- package/types/modules/user/index.d.ts +0 -245
- package/types/modules/user/revoke-authorization.d.ts +0 -31
- package/types/modules/user/steam-game-list.d.ts +0 -153
- package/types/modules/user/types.d.ts +0 -2
- package/types/modules/viewport/index.d.ts +0 -319
- package/types/protocol/capabilities.d.ts +0 -2
- package/types/protocol/constants.d.ts +0 -1
- package/types/protocol/dev-session.d.ts +0 -74
- package/types/protocol/guards.d.ts +0 -1
- package/types/protocol/runtime-permissions.d.ts +0 -2
- package/types/protocol/types.d.ts +0 -22
- package/types/skill-metadata.d.ts +0 -18
- package/types/vite/html-policy.d.ts +0 -6
- package/types/vite/runtime-permission-env.d.ts +0 -9
|
@@ -11,38 +11,37 @@ 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-J4uQvKT_.cjs');
|
|
15
|
+
var dev = require('./dev-BMX6UXUe.cjs');
|
|
16
16
|
require('node:module');
|
|
17
|
-
require('node:fs');
|
|
18
17
|
require('node:fs/promises');
|
|
19
18
|
require('node:path');
|
|
20
19
|
require('path');
|
|
21
20
|
require('os');
|
|
22
|
-
require('node:crypto');
|
|
23
|
-
require('readline');
|
|
24
|
-
require('tty');
|
|
25
|
-
require('assert');
|
|
26
|
-
require('./session-Dz1cGg0E.cjs');
|
|
27
21
|
require('fs');
|
|
28
22
|
require('constants');
|
|
29
|
-
require('
|
|
30
|
-
require('
|
|
31
|
-
require('
|
|
23
|
+
require('assert');
|
|
24
|
+
require('readline');
|
|
25
|
+
require('tty');
|
|
26
|
+
require('node:crypto');
|
|
27
|
+
require('node:process');
|
|
28
|
+
require('node:buffer');
|
|
29
|
+
require('node:url');
|
|
30
|
+
require('node:util');
|
|
31
|
+
require('node:child_process');
|
|
32
|
+
require('node:os');
|
|
33
|
+
require('node:fs');
|
|
34
|
+
require('./context-Bo4L-Cx_.cjs');
|
|
35
|
+
require('./runtime-permission-env-DWaPlchd.cjs');
|
|
36
|
+
require('./version-tzrFwpkl.cjs');
|
|
32
37
|
require('node:async_hooks');
|
|
33
38
|
require('sharp');
|
|
34
|
-
require('node:os');
|
|
35
39
|
require('node:net');
|
|
36
40
|
require('node:dns/promises');
|
|
37
41
|
require('node:http');
|
|
38
42
|
require('undici');
|
|
39
|
-
require('./browser-
|
|
40
|
-
require('
|
|
41
|
-
require('node:buffer');
|
|
42
|
-
require('node:url');
|
|
43
|
-
require('node:util');
|
|
44
|
-
require('node:child_process');
|
|
45
|
-
require('./project-vite-BVDIeoHB.cjs');
|
|
43
|
+
require('./browser-DUdEZCyq.cjs');
|
|
44
|
+
require('./project-vite-Du1m7Y_3.cjs');
|
|
46
45
|
require('node:zlib');
|
|
47
46
|
|
|
48
47
|
var bufferUtil = {exports: {}};
|
|
@@ -3,37 +3,36 @@
|
|
|
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
|
|
7
|
-
var browser = require('./browser-
|
|
8
|
-
|
|
6
|
+
var index = require('./index-J4uQvKT_.cjs');
|
|
7
|
+
var browser = require('./browser-DUdEZCyq.cjs');
|
|
8
|
+
require('node:module');
|
|
9
|
+
require('node:fs/promises');
|
|
9
10
|
require('node:path');
|
|
11
|
+
require('path');
|
|
12
|
+
require('os');
|
|
10
13
|
require('fs');
|
|
11
14
|
require('constants');
|
|
12
15
|
require('stream');
|
|
13
16
|
require('util');
|
|
14
17
|
require('assert');
|
|
15
|
-
require('
|
|
18
|
+
require('readline');
|
|
19
|
+
require('tty');
|
|
20
|
+
require('events');
|
|
21
|
+
require('buffer');
|
|
16
22
|
require('node:process');
|
|
17
23
|
require('node:buffer');
|
|
18
24
|
require('node:url');
|
|
19
25
|
require('node:util');
|
|
20
26
|
require('node:child_process');
|
|
21
|
-
require('node:fs/promises');
|
|
22
27
|
require('node:os');
|
|
23
28
|
require('node:fs');
|
|
24
|
-
require('node:module');
|
|
25
|
-
require('os');
|
|
26
|
-
require('readline');
|
|
27
|
-
require('tty');
|
|
28
|
-
require('events');
|
|
29
|
-
require('buffer');
|
|
30
29
|
|
|
31
30
|
const HEYBOX_CALLBACK_HOST = '127.0.0.1';
|
|
32
31
|
const HEYBOX_CALLBACK_PATH = '/heybox/callback';
|
|
33
32
|
const HEYBOX_CALLBACK_DONE_PATH = '/heybox/callback/done';
|
|
34
33
|
const DEFAULT_HEYBOX_CALLBACK_TIMEOUT_MS = 5 * 60 * 1000;
|
|
35
34
|
function createHeyboxLoginUrl(callbackUrl, state, options = {}) {
|
|
36
|
-
const url = new URL(
|
|
35
|
+
const url = new URL(index.resolveHeyboxLoginBaseUrl(options));
|
|
37
36
|
url.searchParams.set('mode', 'cli');
|
|
38
37
|
url.searchParams.set('redirect_url', callbackUrl);
|
|
39
38
|
url.searchParams.set('state', state);
|
|
@@ -141,7 +140,7 @@ async function loginToHeybox(options = {}) {
|
|
|
141
140
|
const logger = options.logger ?? index.createCliLogger();
|
|
142
141
|
const waitForBrowserCallback = options.waitForBrowserCallback ?? waitForHeyboxBrowserCallback;
|
|
143
142
|
const env = options.env ?? process.env;
|
|
144
|
-
const loginBaseUrl =
|
|
143
|
+
const loginBaseUrl = index.resolveHeyboxLoginBaseUrl({ ...options, env });
|
|
145
144
|
logger.section('Heybox 浏览器登录');
|
|
146
145
|
logger.debug(`登录入口环境: ${loginBaseUrl}`);
|
|
147
146
|
const payload = await logger.task('等待浏览器登录回调', () => waitForBrowserCallback({
|
|
@@ -162,16 +161,16 @@ async function loginToHeybox(options = {}) {
|
|
|
162
161
|
},
|
|
163
162
|
timeoutMs: options.timeoutMs,
|
|
164
163
|
}), { successText: '已接收 Heybox 登录态' });
|
|
165
|
-
const session
|
|
166
|
-
await
|
|
167
|
-
logger.success(`Heybox 登录成功:${session
|
|
168
|
-
await selectDeveloperEntityAfterLogin(session
|
|
169
|
-
logger.debug(`cache: ${
|
|
164
|
+
const session = index.createHeyboxAuthSession(payload, { ...options, loginBaseUrl });
|
|
165
|
+
await index.writeHeyboxAuthSession(session, options);
|
|
166
|
+
logger.success(`Heybox 登录成功:${session.heyboxId}`);
|
|
167
|
+
await selectDeveloperEntityAfterLogin(session, options, logger);
|
|
168
|
+
logger.debug(`cache: ${index.getAuthCacheFilePath(options)}`);
|
|
170
169
|
logger.info('验证命令: hb-sdk login status');
|
|
171
170
|
}
|
|
172
171
|
async function printLoginStatus(options = {}) {
|
|
173
172
|
const logger = options.logger ?? index.createCliLogger();
|
|
174
|
-
const status = await
|
|
173
|
+
const status = await index.readRedactedHeyboxAuthStatus(options);
|
|
175
174
|
logger.section('Heybox 登录态');
|
|
176
175
|
if (!status.loggedIn) {
|
|
177
176
|
logger.warn('未登录');
|
|
@@ -190,16 +189,16 @@ async function printLoginStatus(options = {}) {
|
|
|
190
189
|
}
|
|
191
190
|
async function clearLoginStatus(options = {}) {
|
|
192
191
|
const logger = options.logger ?? index.createCliLogger();
|
|
193
|
-
await
|
|
192
|
+
await index.clearHeyboxAuthSession(options);
|
|
194
193
|
logger.success('已清理 Heybox 登录态');
|
|
195
|
-
logger.debug(`cache: ${
|
|
194
|
+
logger.debug(`cache: ${index.getAuthCacheFilePath(options)}`);
|
|
196
195
|
}
|
|
197
|
-
async function selectDeveloperEntityAfterLogin(session
|
|
196
|
+
async function selectDeveloperEntityAfterLogin(session, options, logger) {
|
|
198
197
|
if (options.noSelectEntity) {
|
|
199
198
|
logger.info('已跳过开发者主体选择。后续可运行: hb-sdk remote entity switch <entity-id>');
|
|
200
199
|
return;
|
|
201
200
|
}
|
|
202
|
-
const entities = await logger.task('读取开发者主体列表', () => listDeveloperEntities(session
|
|
201
|
+
const entities = await logger.task('读取开发者主体列表', () => listDeveloperEntities(session, options), {
|
|
203
202
|
successText: '已读取开发者主体列表',
|
|
204
203
|
});
|
|
205
204
|
if (entities.length === 0) {
|
|
@@ -210,12 +209,12 @@ async function selectDeveloperEntityAfterLogin(session$1, options, logger) {
|
|
|
210
209
|
if (entities.length === 1) {
|
|
211
210
|
const [entity] = entities;
|
|
212
211
|
if (!entity.isCurrent) {
|
|
213
|
-
await switchDeveloperEntity(session
|
|
214
|
-
await
|
|
212
|
+
await switchDeveloperEntity(session, entity, options);
|
|
213
|
+
await index.setSelectedDeveloperEntitySnapshot(entity, options);
|
|
215
214
|
logger.success(`已切换开发者主体:${formatDeveloperEntity(entity)}`);
|
|
216
215
|
return;
|
|
217
216
|
}
|
|
218
|
-
await
|
|
217
|
+
await index.setSelectedDeveloperEntitySnapshot(entity, options);
|
|
219
218
|
logger.info(`当前开发者主体:${formatDeveloperEntity(entity)}`);
|
|
220
219
|
return;
|
|
221
220
|
}
|
|
@@ -232,8 +231,8 @@ async function selectDeveloperEntityAfterLogin(session$1, options, logger) {
|
|
|
232
231
|
if (!selected) {
|
|
233
232
|
throw new Error('必须选择一个开发者主体;如需跳过,请显式传 --no-select-entity');
|
|
234
233
|
}
|
|
235
|
-
await switchDeveloperEntity(session
|
|
236
|
-
await
|
|
234
|
+
await switchDeveloperEntity(session, selected, options);
|
|
235
|
+
await index.setSelectedDeveloperEntitySnapshot(selected, options);
|
|
237
236
|
logger.success(`已切换开发者主体:${formatDeveloperEntity(selected)}`);
|
|
238
237
|
}
|
|
239
238
|
async function listDeveloperEntities(session, options) {
|
|
@@ -246,18 +245,18 @@ async function switchDeveloperEntity(session, entity, options) {
|
|
|
246
245
|
entity_id: entity.entityId,
|
|
247
246
|
});
|
|
248
247
|
}
|
|
249
|
-
async function requestDeveloperEntityApi(path, method, session
|
|
250
|
-
const apiBaseUrl =
|
|
251
|
-
const context =
|
|
248
|
+
async function requestDeveloperEntityApi(path, method, session, options, fields = {}) {
|
|
249
|
+
const apiBaseUrl = index.resolveHeyboxApiBaseUrl(options);
|
|
250
|
+
const context = index.createHeyboxOpenPlatformRequestContext(session, path, {
|
|
252
251
|
...(method === 'POST' ? { contentType: 'application/x-www-form-urlencoded' } : {}),
|
|
253
252
|
});
|
|
254
253
|
const fetchImpl = options.fetchImpl ?? fetch;
|
|
255
|
-
const response = await fetchImpl(
|
|
254
|
+
const response = await fetchImpl(index.createHeyboxApiUrl(apiBaseUrl, path, context.platformParams), {
|
|
256
255
|
method,
|
|
257
256
|
headers: context.headers,
|
|
258
257
|
...(method === 'POST' ? { body: new URLSearchParams(stringifyFormFields(fields)).toString() } : {}),
|
|
259
258
|
});
|
|
260
|
-
return
|
|
259
|
+
return index.readHeyboxApiEnvelope(response, { pathWithQuery: path, requireResult: method === 'GET' });
|
|
261
260
|
}
|
|
262
261
|
function stringifyFormFields(fields) {
|
|
263
262
|
return Object.fromEntries(Object.entries(fields).map(([key, value]) => [key, String(value)]));
|
|
@@ -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-J4uQvKT_.cjs');
|
|
9
9
|
|
|
10
10
|
function findProjectRoot(startDir) {
|
|
11
11
|
let current = path.resolve(startDir);
|
|
@@ -1,32 +1,37 @@
|
|
|
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-DWaPlchd.cjs');
|
|
4
|
+
var context = require('./context-Bo4L-Cx_.cjs');
|
|
5
5
|
var promises = require('node:readline/promises');
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var
|
|
6
|
+
var index = require('./index-J4uQvKT_.cjs');
|
|
7
|
+
var runtimeGate = require('./runtime-gate-DedD3ynE.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
|
-
|
|
15
|
-
require('./version-DYFkOykv.cjs');
|
|
14
|
+
require('./version-tzrFwpkl.cjs');
|
|
16
15
|
require('node:async_hooks');
|
|
17
16
|
require('sharp');
|
|
18
17
|
require('node:module');
|
|
19
18
|
require('path');
|
|
20
19
|
require('os');
|
|
20
|
+
require('fs');
|
|
21
|
+
require('constants');
|
|
22
|
+
require('stream');
|
|
23
|
+
require('util');
|
|
24
|
+
require('assert');
|
|
21
25
|
require('readline');
|
|
22
26
|
require('tty');
|
|
23
|
-
require('assert');
|
|
24
27
|
require('events');
|
|
25
|
-
require('stream');
|
|
26
28
|
require('buffer');
|
|
27
|
-
require('
|
|
28
|
-
require('
|
|
29
|
-
require('
|
|
29
|
+
require('node:process');
|
|
30
|
+
require('node:buffer');
|
|
31
|
+
require('node:url');
|
|
32
|
+
require('node:util');
|
|
33
|
+
require('node:os');
|
|
34
|
+
require('inspector');
|
|
30
35
|
|
|
31
36
|
// 脚手架开发占位图;构建可用,提审前必须替换。
|
|
32
37
|
const BASIC_INFO_PLACEHOLDER_SHA256 = 'd14e54b30f5e6d1bcbf51267bc82b06a0af7c333f2945bcc16b4e1adc3b123dd';
|
|
@@ -52,20 +57,20 @@ async function postCDNUploadCallback(options, runtime = {}) {
|
|
|
52
57
|
const query = options.isFinished ? '?is_finished=true' : '';
|
|
53
58
|
return postHeyboxApi(`/bbs/app/api/qcloud/cos/upload/callback/v2${query}`, body, options.session, runtime);
|
|
54
59
|
}
|
|
55
|
-
async function postHeyboxApi(pathWithQuery, body, session
|
|
60
|
+
async function postHeyboxApi(pathWithQuery, body, session, runtime) {
|
|
56
61
|
const fetchImpl = runtime.fetchImpl ?? fetch;
|
|
57
|
-
const context =
|
|
62
|
+
const context = index.createHeyboxOpenPlatformRequestContext(session, pathWithQuery, {
|
|
58
63
|
contentType: 'application/x-www-form-urlencoded',
|
|
59
64
|
});
|
|
60
65
|
// CDN 使用共用上传服务,不随小程序服务的个人测试 tag 切换。
|
|
61
66
|
delete context.headers['x-rylai-service-tag'];
|
|
62
67
|
delete context.platformParams.special_tag;
|
|
63
|
-
const response = await fetchImpl(
|
|
68
|
+
const response = await fetchImpl(index.createHeyboxApiUrl(runtime.baseUrl ?? context.baseUrl, pathWithQuery, context.platformParams), {
|
|
64
69
|
method: 'POST',
|
|
65
70
|
headers: context.headers,
|
|
66
71
|
body: body.toString(),
|
|
67
72
|
});
|
|
68
|
-
const result = await
|
|
73
|
+
const result = await index.readHeyboxApiEnvelope(response, { pathWithQuery, requireResult: true });
|
|
69
74
|
return result;
|
|
70
75
|
}
|
|
71
76
|
|
|
@@ -127,7 +132,7 @@ async function recordUserMiniprogramUploadResult(options, runtime = {}) {
|
|
|
127
132
|
}
|
|
128
133
|
async function postUserMiniprogramVersionForm(path, options, fields, runtime) {
|
|
129
134
|
const fetchImpl = runtime.fetchImpl ?? fetch;
|
|
130
|
-
const context =
|
|
135
|
+
const context = index.createHeyboxOpenPlatformRequestContext(options.session, path, {
|
|
131
136
|
contentType: 'application/x-www-form-urlencoded',
|
|
132
137
|
});
|
|
133
138
|
const body = new URLSearchParams();
|
|
@@ -135,12 +140,12 @@ async function postUserMiniprogramVersionForm(path, options, fields, runtime) {
|
|
|
135
140
|
for (const [key, value] of Object.entries(fields)) {
|
|
136
141
|
body.set(key, value);
|
|
137
142
|
}
|
|
138
|
-
const response = await fetchImpl(
|
|
143
|
+
const response = await fetchImpl(index.createHeyboxApiUrl(runtime.baseUrl ?? context.baseUrl, path, context.platformParams), {
|
|
139
144
|
method: 'POST',
|
|
140
145
|
headers: context.headers,
|
|
141
146
|
body: body.toString(),
|
|
142
147
|
});
|
|
143
|
-
const result = await
|
|
148
|
+
const result = await index.readHeyboxApiEnvelope(response, {
|
|
144
149
|
pathWithQuery: path,
|
|
145
150
|
});
|
|
146
151
|
return result ?? {};
|
|
@@ -156,6 +161,7 @@ async function runUpload(options, runtime = {}) {
|
|
|
156
161
|
const postCDNUploadCallback$1 = runtime.postCDNUploadCallback ?? postCDNUploadCallback;
|
|
157
162
|
const recordUserMiniprogramUploadResult$1 = runtime.recordUserMiniprogramUploadResult ?? recordUserMiniprogramUploadResult;
|
|
158
163
|
const createReadStream = runtime.createReadStream ?? fs.createReadStream;
|
|
164
|
+
const cdnBaseUrl = runtime.cdnBaseUrl ?? runtime.baseUrl;
|
|
159
165
|
let createCosClient = runtime.createCosClient;
|
|
160
166
|
if (!createCosClient) {
|
|
161
167
|
const COS = await loadCosConstructor();
|
|
@@ -181,7 +187,7 @@ async function runUpload(options, runtime = {}) {
|
|
|
181
187
|
scope: runtimePermissionEnv.MINIAPP_UPLOAD_SCOPE,
|
|
182
188
|
fileInfos,
|
|
183
189
|
needCache: false,
|
|
184
|
-
}, { baseUrl:
|
|
190
|
+
}, { baseUrl: cdnBaseUrl, fetchImpl });
|
|
185
191
|
logger.debug(`CDN bucket: ${uploadInfo.bucket}`);
|
|
186
192
|
logger.debug(`CDN region: ${uploadInfo.region}`);
|
|
187
193
|
validateUploadInfoKeys(batch, uploadInfo.keys);
|
|
@@ -195,10 +201,10 @@ async function runUpload(options, runtime = {}) {
|
|
|
195
201
|
} : await getCDNUploadToken$1({
|
|
196
202
|
session: options.session,
|
|
197
203
|
bucket: uploadInfo.bucket,
|
|
198
|
-
keys: indexedFiles.map(item => item.key),
|
|
199
|
-
mimetypes: indexedFiles.map(item => item.file.mimeType),
|
|
204
|
+
keys: indexedFiles.map((item) => item.key),
|
|
205
|
+
mimetypes: indexedFiles.map((item) => item.file.mimeType),
|
|
200
206
|
isMultipartUpload: 0,
|
|
201
|
-
}, { baseUrl:
|
|
207
|
+
}, { baseUrl: cdnBaseUrl, fetchImpl });
|
|
202
208
|
}
|
|
203
209
|
catch (error) {
|
|
204
210
|
throw new index.CliError(`获取 CDN 上传凭证失败:${readErrorMessage(error)}`);
|
|
@@ -244,7 +250,7 @@ async function runUpload(options, runtime = {}) {
|
|
|
244
250
|
if (successfulKeys.length > 0) {
|
|
245
251
|
logger.debug('正在确认 CDN 上传结果');
|
|
246
252
|
if (!companion)
|
|
247
|
-
await postCDNUploadCallback$1({ session: options.session, keys: successfulKeys, isFinished: true }, { baseUrl:
|
|
253
|
+
await postCDNUploadCallback$1({ session: options.session, keys: successfulKeys, isFinished: true }, { baseUrl: cdnBaseUrl, fetchImpl });
|
|
248
254
|
await recordUserMiniprogramUploadResult$1({
|
|
249
255
|
session: options.session,
|
|
250
256
|
miniProgramId: options.miniProgramId,
|
|
@@ -321,7 +327,7 @@ function createDefaultCosClient(uploadToken, COS) {
|
|
|
321
327
|
};
|
|
322
328
|
}
|
|
323
329
|
async function loadCosConstructor() {
|
|
324
|
-
const cosModule = await Promise.resolve().then(function () { return require('./index-
|
|
330
|
+
const cosModule = await Promise.resolve().then(function () { return require('./index-DmCWB_hF.cjs'); }).then(function (n) { return n.index; });
|
|
325
331
|
return cosModule.default;
|
|
326
332
|
}
|
|
327
333
|
function formatSize(bytes) {
|
|
@@ -577,8 +583,8 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
577
583
|
const miniProgramId = packageJson.heybox?.miniProgramId;
|
|
578
584
|
const autoPublish = Boolean(options.autoPublish);
|
|
579
585
|
const env = options.env ?? process.env;
|
|
580
|
-
const apiBaseUrl =
|
|
581
|
-
const loginBaseUrl =
|
|
586
|
+
const apiBaseUrl = index.resolveHeyboxApiBaseUrl({ ...options, env });
|
|
587
|
+
const loginBaseUrl = index.resolveHeyboxLoginBaseUrl({ ...options, env });
|
|
582
588
|
if (typeof miniProgramId !== 'string' || !miniProgramId.trim()) {
|
|
583
589
|
throw new Error('未在 package.json 中找到 heybox.miniProgramId,请先配置 mini program id');
|
|
584
590
|
}
|
|
@@ -587,7 +593,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
587
593
|
const declaredBindAppIds = runtimePermissionEnv.readMiniappBindAppIdsFromPackageJson(projectRoot);
|
|
588
594
|
const declaredCategory = runtimePermissionEnv.readMiniappCategoryFromPackageJson(projectRoot);
|
|
589
595
|
const releaseNote = await resolveDeployReleaseNote(options, runtime);
|
|
590
|
-
const session
|
|
596
|
+
const session = await logger.task('正在校验 Heybox 登录态', () => (runtime.requireAuthSession ?? index.requireHeyboxAuthSession)({ loginBaseUrl }), { successText: 'Heybox 登录态有效' });
|
|
591
597
|
logger.debug(`Heybox API: ${apiBaseUrl}`);
|
|
592
598
|
const uploadVersion = validateVersionForDeploy(packageJson.version, 'package.json.version');
|
|
593
599
|
const deploy = async () => {
|
|
@@ -602,7 +608,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
602
608
|
env,
|
|
603
609
|
fetchImpl: runtime.fetchImpl,
|
|
604
610
|
loginBaseUrl,
|
|
605
|
-
session
|
|
611
|
+
session,
|
|
606
612
|
});
|
|
607
613
|
await context.migrateBasicInfo(projectRoot, bound.detail, miniProgramId, runtime.fetchImpl);
|
|
608
614
|
}
|
|
@@ -612,7 +618,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
612
618
|
}
|
|
613
619
|
precheckVersion = uploadVersion;
|
|
614
620
|
await runVersionPrecheck({
|
|
615
|
-
session
|
|
621
|
+
session,
|
|
616
622
|
miniProgramId,
|
|
617
623
|
version: precheckVersion,
|
|
618
624
|
releaseNote,
|
|
@@ -627,7 +633,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
627
633
|
env,
|
|
628
634
|
fetchImpl: runtime.fetchImpl,
|
|
629
635
|
loginBaseUrl,
|
|
630
|
-
session
|
|
636
|
+
session,
|
|
631
637
|
}), { successText: '已读取远端小程序权限' });
|
|
632
638
|
const localNetworkEnabled = !localPermissions.declared || localPermissions.permissions?.network?.enabled === true;
|
|
633
639
|
skipPlatformCsp = localNetworkEnabled && context.shouldSkipMiniappPlatformCsp(detail.runtime_permissions);
|
|
@@ -678,7 +684,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
678
684
|
throw new Error('dist/manifest.json.bindAppIds 与 package.json#heybox.bindAppIds 不一致,请重新 build 后再 deploy');
|
|
679
685
|
}
|
|
680
686
|
await runVersionPrecheck({
|
|
681
|
-
session
|
|
687
|
+
session,
|
|
682
688
|
miniProgramId,
|
|
683
689
|
version,
|
|
684
690
|
manifest,
|
|
@@ -706,6 +712,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
706
712
|
// deploy 期间 dist 视为稳定构建输出;为避免持有大量文件描述符,签名和上传不会共享打开的文件句柄。
|
|
707
713
|
const artifactReceipt = await logger.task('正在计算构建产物签名', () => (runtime.computeMiniappArtifactReceipt ?? computeMiniappArtifactReceipt)(uploadFiles), { successText: '构建产物签名计算完成' });
|
|
708
714
|
runtimePermissionEnv.validateMiniappCompanionFileReceipts(manifest?.companions, artifactReceipt.files);
|
|
715
|
+
runtimePermissionEnv.validateMiniappWorkspaceCardFileReceipts(manifest?.workspaceCards, artifactReceipt.files);
|
|
709
716
|
const profile = runtimePermissionEnv.parseMiniappBasicInfo(manifest, String(manifest.sdkVersion));
|
|
710
717
|
if (profile) {
|
|
711
718
|
const localProfile = runtimePermissionEnv.parseMiniappBasicInfo((await readPackageJson(projectRoot)).heybox ?? {});
|
|
@@ -727,7 +734,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
727
734
|
}
|
|
728
735
|
const createdUploadSession = await logger.task('正在创建或恢复上传会话', async () => {
|
|
729
736
|
const result = await (runtime.createUserMiniprogramUploadSession ?? createUserMiniprogramUploadSession)({
|
|
730
|
-
session
|
|
737
|
+
session,
|
|
731
738
|
miniProgramId,
|
|
732
739
|
version,
|
|
733
740
|
manifest,
|
|
@@ -773,7 +780,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
773
780
|
const uploadedCompanions = createdUploadSession.files.filter(item => item.file.relativePath.startsWith('companions/') && !missingKeys.has(item.key));
|
|
774
781
|
for (let index = 0; index < uploadedCompanions.length; index += runtimePermissionEnv.MINIAPP_UPLOAD_BATCH_SIZE) {
|
|
775
782
|
await (runtime.recordUserMiniprogramUploadResult ?? recordUserMiniprogramUploadResult)({
|
|
776
|
-
session
|
|
783
|
+
session, miniProgramId, version, sessionId: uploadSessionId,
|
|
777
784
|
files: uploadedCompanions.slice(index, index + runtimePermissionEnv.MINIAPP_UPLOAD_BATCH_SIZE)
|
|
778
785
|
.map(({ file }) => ({ path: file.relativePath, size: file.size, sha256: file.sha256 })),
|
|
779
786
|
}, { baseUrl: apiBaseUrl, fetchImpl: runtime.fetchImpl });
|
|
@@ -787,12 +794,12 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
787
794
|
miniProgramId,
|
|
788
795
|
});
|
|
789
796
|
await (runtime.runUpload ?? runUpload)({
|
|
790
|
-
session
|
|
797
|
+
session,
|
|
791
798
|
files: createdUploadSession.missingFiles.map(({ file, key }) => ({ ...file, key })),
|
|
792
799
|
miniProgramId,
|
|
793
800
|
version,
|
|
794
801
|
uploadSessionId,
|
|
795
|
-
}, { baseUrl: apiBaseUrl, fetchImpl: runtime.fetchImpl, logger });
|
|
802
|
+
}, { baseUrl: apiBaseUrl, cdnBaseUrl: index.HEYBOX_API_BASE_URL, fetchImpl: runtime.fetchImpl, logger });
|
|
796
803
|
}
|
|
797
804
|
}
|
|
798
805
|
catch (error) {
|
|
@@ -800,7 +807,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
800
807
|
}
|
|
801
808
|
}
|
|
802
809
|
try {
|
|
803
|
-
const submitOptions = { session
|
|
810
|
+
const submitOptions = { session, miniProgramId, sessionId: uploadSessionId, preflightToken };
|
|
804
811
|
submitAuditResult = await logger.task('正在提交审核', () => (runtime.submitUserMiniprogramAudit ?? submitUserMiniprogramAudit)(submitOptions, {
|
|
805
812
|
baseUrl: apiBaseUrl,
|
|
806
813
|
fetchImpl: runtime.fetchImpl,
|
|
@@ -884,6 +891,10 @@ async function readDeployManifest(projectRoot, logger) {
|
|
|
884
891
|
logger.warn('dist/manifest.json 包含 BOM,已自动剥离');
|
|
885
892
|
}
|
|
886
893
|
const validated = runtimePermissionEnv.validateMiniappManifestForDeploy(manifest);
|
|
894
|
+
if (validated.workspaceCards) {
|
|
895
|
+
runtimeGate.verifyWorkspaceCardsSnapshot({ ...validated, bindAppIds: validated.bindAppIds ?? [], workspaceCards: validated.workspaceCards });
|
|
896
|
+
runtimeGate.verifyWorkspaceCardArtifacts(distDir, validated.workspaceCards);
|
|
897
|
+
}
|
|
887
898
|
const bindAppIds = validated.bindAppIds ?? [];
|
|
888
899
|
return {
|
|
889
900
|
manifest: {
|
|
@@ -1203,7 +1214,7 @@ async function runRemoteDeployCommand(options, runtime) {
|
|
|
1203
1214
|
return finishRemoteCommand(options, runtime, output);
|
|
1204
1215
|
}
|
|
1205
1216
|
async function createRemoteCommandContext(options, runtime) {
|
|
1206
|
-
index.
|
|
1217
|
+
index.applyMiniProgramServiceTagIfNeeded(options.serviceTag);
|
|
1207
1218
|
const logger = resolveRemoteLogger(options, runtime);
|
|
1208
1219
|
const environment = await context.resolveRemoteEnvironment({
|
|
1209
1220
|
allowUnsafeApiBaseUrl: options.allowUnsafeApiBaseUrl,
|
|
@@ -1323,7 +1334,7 @@ async function remoteEntitySwitch(options, context, runtime) {
|
|
|
1323
1334
|
throw new Error('远端响应缺少 entity_id');
|
|
1324
1335
|
}
|
|
1325
1336
|
const switchedOwnerHeyboxId = normalizePositiveInteger(switched.owner_heybox_id);
|
|
1326
|
-
await
|
|
1337
|
+
await index.setSelectedDeveloperEntitySnapshot({
|
|
1327
1338
|
entityId: switchedEntityId,
|
|
1328
1339
|
entityName: switched.entity_name || '--',
|
|
1329
1340
|
...(switchedOwnerHeyboxId !== undefined ? { ownerHeyboxId: switchedOwnerHeyboxId } : {}),
|