@vmz/vmz 0.1.11 → 0.1.13
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/dist/build-assemble.js +3 -4
- package/dist/cdn-policy.js +4 -5
- package/dist/cli.js +15 -50
- package/dist/content-addressed-assets.d.ts +2 -8
- package/dist/content-addressed-assets.js +34 -110
- package/dist/delivery-profile.d.ts +1 -11
- package/dist/delivery-profile.js +1 -70
- package/dist/dev-session.d.ts +0 -1
- package/dist/dev-session.js +64 -220
- package/dist/document-build.js +34 -61
- package/dist/document-cmd.js +9 -2
- package/dist/document-enrich.d.ts +1 -2
- package/dist/document-enrich.js +4 -15
- package/dist/document-integrate.js +21 -28
- package/dist/embedded-packaging.js +1 -2
- package/dist/index.d.ts +1 -15
- package/dist/index.js +3 -58
- package/dist/locale-check.js +61 -28
- package/dist/locale-cmd.js +42 -10
- package/dist/locale-route-emit.d.ts +1 -4
- package/dist/locale-route-emit.js +32 -7
- package/dist/locale-router.js +8 -26
- package/dist/pack.js +2 -3
- package/dist/production-observability.js +2 -3
- package/dist/production-test-pack.js +3 -4
- package/dist/release-pack.js +18 -5
- package/dist/server-artifact.js +3 -4
- package/dist/site-delivery.js +3 -4
- package/dist/static-emit.js +78 -116
- package/dist/test-cmd.js +1 -2
- package/package.json +12 -12
- package/dist/dev-watch-roots.d.ts +0 -67
- package/dist/dev-watch-roots.js +0 -220
- package/dist/document-host-chrome.d.ts +0 -28
- package/dist/document-host-chrome.js +0 -128
- package/dist/native-addon.d.ts +0 -9
- package/dist/native-addon.js +0 -84
- package/dist/pretty-json.d.ts +0 -19
- package/dist/pretty-json.js +0 -43
- package/dist/route-path.d.ts +0 -35
- package/dist/route-path.js +0 -77
- package/dist/wechat-packaging.d.ts +0 -22
- package/dist/wechat-packaging.js +0 -59
package/dist/document-enrich.js
CHANGED
|
@@ -9,16 +9,10 @@ import { DIAG } from './document-schema.js';
|
|
|
9
9
|
* @param {string} routeBase e.g. /docs
|
|
10
10
|
* @param {string} locale
|
|
11
11
|
* @param {string} pageKey
|
|
12
|
-
* @param {{ strategy?: string }} [routing]
|
|
13
12
|
*/
|
|
14
|
-
export function pageRoute(routeBase, locale, pageKey
|
|
13
|
+
export function pageRoute(routeBase, locale, pageKey) {
|
|
15
14
|
const base = String(routeBase || '/').replace(/\/$/, '') || '';
|
|
16
15
|
const key = pageKey === 'index' ? '' : pageKey.replace(/\\/g, '/');
|
|
17
|
-
const strategy = routing.strategy || 'prefix';
|
|
18
|
-
if (strategy === 'none' || strategy === 'domain') {
|
|
19
|
-
const parts = [base.replace(/^\//, ''), key].filter((p) => p !== '');
|
|
20
|
-
return '/' + (parts.length ? parts.join('/') : '');
|
|
21
|
-
}
|
|
22
16
|
const parts = [base.replace(/^\//, ''), locale, key].filter((p) => p !== '');
|
|
23
17
|
return '/' + parts.join('/');
|
|
24
18
|
}
|
|
@@ -41,7 +35,6 @@ export function pageHtmlRel(routeBase, locale, pageKey) {
|
|
|
41
35
|
*/
|
|
42
36
|
export function enrichDocumentContent(manifest, ctx) {
|
|
43
37
|
const routeBase = manifest.mounts?.[0]?.routeBase || '/docs';
|
|
44
|
-
const routing = ctx.routing || { strategy: 'prefix' };
|
|
45
38
|
/** @type {Map<string, { html: string, headings: any[], links: any[], title: string, route: string, anchors: string[] }>} */
|
|
46
39
|
const byId = new Map();
|
|
47
40
|
/** @type {import('./document-schema.js').DocumentDiagnostic[]} */
|
|
@@ -52,7 +45,7 @@ export function enrichDocumentContent(manifest, ctx) {
|
|
|
52
45
|
const abs = path.isAbsolute(page.sourcePath) ? page.sourcePath : path.join(manifest.root, page.sourcePath);
|
|
53
46
|
const source = fs.existsSync(abs) ? fs.readFileSync(abs, 'utf8') : '';
|
|
54
47
|
const analyzed = ctx.analyzeMarkdown(source);
|
|
55
|
-
const route = pageRoute(routeBase, page.identity.locale, page.identity.pageKey
|
|
48
|
+
const route = pageRoute(routeBase, page.identity.locale, page.identity.pageKey);
|
|
56
49
|
const anchors = analyzed.headings.map((h) => h.id);
|
|
57
50
|
const title = analyzed.headings.find((h) => h.level === 1)?.text || analyzed.headings[0]?.text || page.identity.pageKey;
|
|
58
51
|
// Duplicate anchors on page
|
|
@@ -68,11 +61,7 @@ export function enrichDocumentContent(manifest, ctx) {
|
|
|
68
61
|
}
|
|
69
62
|
seen.add(id);
|
|
70
63
|
}
|
|
71
|
-
|
|
72
|
-
if (routing.strategy === 'none' || routing.strategy === 'domain') {
|
|
73
|
-
routeOwners.set(route, owner);
|
|
74
|
-
}
|
|
75
|
-
else if (routeOwners.has(route)) {
|
|
64
|
+
if (routeOwners.has(route)) {
|
|
76
65
|
diagnostics.push({
|
|
77
66
|
code: DIAG.ROUTE_DUPLICATE,
|
|
78
67
|
severity: 'error',
|
|
@@ -81,7 +70,7 @@ export function enrichDocumentContent(manifest, ctx) {
|
|
|
81
70
|
});
|
|
82
71
|
}
|
|
83
72
|
else {
|
|
84
|
-
routeOwners.set(route,
|
|
73
|
+
routeOwners.set(route, `${page.identity.locale}:${page.identity.pageKey}`);
|
|
85
74
|
}
|
|
86
75
|
page.route = route;
|
|
87
76
|
page.anchors = anchors;
|
|
@@ -7,10 +7,7 @@ import fs from 'node:fs';
|
|
|
7
7
|
import path from 'node:path';
|
|
8
8
|
import { buildDocuments } from './document-build.js';
|
|
9
9
|
import { resolveDocumentsRoot } from './document-check.js';
|
|
10
|
-
import { loadLocalesRouting } from './document-host-chrome.js';
|
|
11
|
-
import { pageHtmlRel } from './document-enrich.js';
|
|
12
10
|
import { log } from './log.js';
|
|
13
|
-
import { requireNativeAddon } from './native-addon.js';
|
|
14
11
|
/**
|
|
15
12
|
* @param {string} projectRoot
|
|
16
13
|
*/
|
|
@@ -42,7 +39,7 @@ export async function buildIntegratedDocuments(opts) {
|
|
|
42
39
|
}
|
|
43
40
|
return { ok: false, error: 'document diagnostics', pages: 0 };
|
|
44
41
|
}
|
|
45
|
-
writeMountRootRedirects(result.manifest, outDir
|
|
42
|
+
writeMountRootRedirects(result.manifest, outDir);
|
|
46
43
|
log.info(`document mount: pages=${result.pages.length} → ${path.relative(process.cwd(), outDir) || '.'}`);
|
|
47
44
|
return { ok: true, pages: result.pages.length };
|
|
48
45
|
}
|
|
@@ -53,43 +50,39 @@ export async function buildIntegratedDocuments(opts) {
|
|
|
53
50
|
}
|
|
54
51
|
}
|
|
55
52
|
/**
|
|
56
|
-
* Emit `{routeBase}/index.html` for
|
|
57
|
-
* `routing.strategy: none` → copy default-locale docs index (LocaleId is Host state).
|
|
58
|
-
* prefix strategy → redirect HTML to `{routeBase}/{defaultLocale}/`.
|
|
53
|
+
* Emit `{routeBase}/index.html` → defaultLocale landing (for /d/ and /docs/).
|
|
59
54
|
* @param {import('./document-schema.js').DocumentManifest} manifest
|
|
60
55
|
* @param {string} outDir
|
|
61
|
-
* @param {string} projectRoot
|
|
62
56
|
*/
|
|
63
|
-
function writeMountRootRedirects(manifest, outDir
|
|
57
|
+
function writeMountRootRedirects(manifest, outDir) {
|
|
64
58
|
const defaultLocale = manifest.defaultLocale || manifest.locales?.[0];
|
|
65
59
|
if (!defaultLocale)
|
|
66
60
|
return;
|
|
67
|
-
const routing = loadLocalesRouting(projectRoot) || { strategy: 'prefix' };
|
|
68
61
|
for (const mount of manifest.mounts || []) {
|
|
69
62
|
if (!mount?.routeBase || mount.routeBase === '/')
|
|
70
63
|
continue;
|
|
71
64
|
const base = String(mount.routeBase).replace(/\/$/, '');
|
|
65
|
+
const target = `${base}/${defaultLocale}/`;
|
|
72
66
|
const relDir = base.replace(/^\//, '');
|
|
73
67
|
const abs = path.join(outDir, relDir, 'index.html');
|
|
74
68
|
fs.mkdirSync(path.dirname(abs), { recursive: true });
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const html = native.generateRedirectHtml({
|
|
89
|
-
lang: defaultLocale,
|
|
90
|
-
target,
|
|
91
|
-
title: 'Documents',
|
|
92
|
-
});
|
|
69
|
+
const html = `<!DOCTYPE html>
|
|
70
|
+
<html lang="${escapeAttr(defaultLocale)}">
|
|
71
|
+
<head>
|
|
72
|
+
<meta charset="utf-8" />
|
|
73
|
+
<meta http-equiv="refresh" content="0;url=${escapeAttr(target)}" />
|
|
74
|
+
<link rel="canonical" href="${escapeAttr(target)}" />
|
|
75
|
+
<title>Documents</title>
|
|
76
|
+
</head>
|
|
77
|
+
<body>
|
|
78
|
+
<p><a href="${escapeAttr(target)}">Continue to ${escapeAttr(defaultLocale)} docs</a></p>
|
|
79
|
+
</body>
|
|
80
|
+
</html>
|
|
81
|
+
`;
|
|
93
82
|
fs.writeFileSync(abs, html, 'utf8');
|
|
94
83
|
}
|
|
95
84
|
}
|
|
85
|
+
/** @param {string} s */
|
|
86
|
+
function escapeAttr(s) {
|
|
87
|
+
return String(s).replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<');
|
|
88
|
+
}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
import crypto from 'node:crypto';
|
|
7
7
|
import fs from 'node:fs';
|
|
8
8
|
import path from 'node:path';
|
|
9
|
-
import { writePrettyJsonFile } from './pretty-json.js';
|
|
10
9
|
export const EMBEDDED_RESOURCE_INDEX_SCHEMA = 'vmz.embedded.resource_index.v0';
|
|
11
10
|
/** Paths that must never enter the embedded baseline closure. */
|
|
12
11
|
const SKIP_NAMES = new Set(['vmz-serve-host.mjs', 'vmz-serve-host.js', 'node_modules', '.git']);
|
|
@@ -56,7 +55,7 @@ export function emitEmbeddedPackaging(outDir, opts = {}) {
|
|
|
56
55
|
};
|
|
57
56
|
index.indexDigest = sha256Hex(canonicalJson({ ...index, indexDigest: undefined }));
|
|
58
57
|
const indexPath = path.join(vmzDir, 'embedded-resource-index.json');
|
|
59
|
-
|
|
58
|
+
fs.writeFileSync(indexPath, `${JSON.stringify(index, null, 2)}\n`, 'utf8');
|
|
60
59
|
// Optional include_bytes entry point for Rust packaging adapters
|
|
61
60
|
const rsPath = path.join(vmzDir, 'embedded_site.rs');
|
|
62
61
|
fs.writeFileSync(rsPath, `// @generated by vmz — rust-embedded packaging adapter (do not edit)
|
package/dist/index.d.ts
CHANGED
|
@@ -53,14 +53,6 @@ export declare function handshake(host?: {
|
|
|
53
53
|
* @returns {string | null}
|
|
54
54
|
*/
|
|
55
55
|
export declare function resolveCoreRuntimeDist(): string;
|
|
56
|
-
/** Runtime companions required by dist/vmz-serve-host.mjs relative imports. */
|
|
57
|
-
export declare const SERVE_HOST_RUNTIME_FILES: string[][];
|
|
58
|
-
/**
|
|
59
|
-
* Copy serve-host + registry bootstrap modules from `@vmz/core` into app outDir.
|
|
60
|
-
* @param {string} outDir
|
|
61
|
-
* @param {string} [coreDist]
|
|
62
|
-
*/
|
|
63
|
-
export declare function materializeServeHostRuntime(outDir: any, coreDist?: string): void;
|
|
64
56
|
/**
|
|
65
57
|
* @typedef {object} WorkspaceOptions
|
|
66
58
|
* @property {string} root
|
|
@@ -92,7 +84,6 @@ export declare function lowerMiniprogramBindingEventJson(rootPath: any): any;
|
|
|
92
84
|
export declare function lowerMiniprogramStructureJson(rootPath: any): any;
|
|
93
85
|
export declare function lowerMiniprogramRouteServerStyleJson(rootPath: any): any;
|
|
94
86
|
export declare function lowerMiniprogramToolingDeployJson(rootPath: any): any;
|
|
95
|
-
export declare function lowerMiniprogramWechatPackagingJson(rootPath: any): any;
|
|
96
87
|
export declare function lowerMiniprogramMultiAdapterJson(rootPath: any): any;
|
|
97
88
|
import { createMiniHost } from './mini-host.js';
|
|
98
89
|
export { createMiniHost };
|
|
@@ -155,7 +146,6 @@ export declare function checkApplicationHostCompositionJson(hostRoot: any, packa
|
|
|
155
146
|
*/
|
|
156
147
|
export declare function checkApplicationDevTestDeployJson(hostRoot: any, packageRoots: any, dirtyPaths?: any[]): any;
|
|
157
148
|
export { createDevSession, listWatchedFiles, srcFingerprint } from './dev-session.js';
|
|
158
|
-
export { coalesceRootBurst, collectDevWatchRoots, mergeDirtySets, localLinkDependencyRoots, watchRootForSourceFile, } from './dev-watch-roots.js';
|
|
159
149
|
export { findAvailablePort } from './port.js';
|
|
160
150
|
export { runCli, parseArgs, printHelp, printGlobalHelp, printProjectHelp } from './cli.js';
|
|
161
151
|
export { findNearestProjectVmz, getInvocationContext, isGlobalAllowedCommand, isUnderNodeModules, resolveThisPackageRoot, resolveVmzBin, gateGlobalProjectCommand, } from './invocation.js';
|
|
@@ -171,8 +161,7 @@ export { CDN_POLICY_MANIFEST_SCHEMA, CDN_ADAPTER_PROJECTION_SCHEMA, CACHE_HTML,
|
|
|
171
161
|
export { SITE_DELIVERY_CONTRACT_SCHEMA, SITE_DELIVERY_RESOLUTION_SCHEMA, defineSite, normalizeSiteDelivery, normalizeSourceProbe, resolveSiteRelease, probeReleaseDirectory, emitSiteDelivery, } from './site-delivery.js';
|
|
172
162
|
export { EMBEDDED_RESOURCE_INDEX_SCHEMA, emitEmbeddedPackaging, } from './embedded-packaging.js';
|
|
173
163
|
export { SERVER_LANG_IDS, SERVER_LANG_ALIASES, SERVER_LANGUAGE_BACKENDS, resolveServerLanguage, assertLangRuntimePair, } from './server-language-backend.js';
|
|
174
|
-
export {
|
|
175
|
-
export { DELIVERY_PROFILE_AUTHORING_SCHEMA, BUILD_PROFILE_SELECTION_SCHEMA, ASSEMBLIES, SERVER_RUNTIMES, BUILTIN_PROFILES, pickSiteAuthoring, pickDeliveryPackaging, normalizeDeliveryAuthoring, selectBuildProfile, semanticIdsForAssembly, } from './delivery-profile.js';
|
|
164
|
+
export { DELIVERY_PROFILE_AUTHORING_SCHEMA, BUILD_PROFILE_SELECTION_SCHEMA, ASSEMBLIES, SERVER_RUNTIMES, BUILTIN_PROFILES, pickSiteAuthoring, normalizeDeliveryAuthoring, selectBuildProfile, semanticIdsForAssembly, } from './delivery-profile.js';
|
|
176
165
|
export { PACK_MANIFEST_SCHEMA, packFromDeploymentIr, ensureRuntimeCompanions } from './pack.js';
|
|
177
166
|
export { SERVER_ARTIFACT_SCHEMA, HTTP_CONTRACT_SCHEMA, SERVER_RUNTIME_ADAPTER_SCHEMA, emitServerArtifact, projectServerRuntimeAdapter, } from './server-artifact.js';
|
|
178
167
|
export { BUILD_PROOF_SCHEMA, ASSEMBLE_MANIFEST_SCHEMA, assembleDelivery, emitBuildProof, } from './build-assemble.js';
|
|
@@ -242,8 +231,6 @@ declare const _default: {
|
|
|
242
231
|
expectedProtocol: typeof expectedProtocol;
|
|
243
232
|
resolveNativePath: typeof resolveNativePath;
|
|
244
233
|
resolveCoreRuntimeDist: typeof resolveCoreRuntimeDist;
|
|
245
|
-
materializeServeHostRuntime: typeof materializeServeHostRuntime;
|
|
246
|
-
SERVE_HOST_RUNTIME_FILES: string[][];
|
|
247
234
|
loadNative: typeof loadNative;
|
|
248
235
|
getProtocolVersions: typeof getProtocolVersions;
|
|
249
236
|
handshake: typeof handshake;
|
|
@@ -257,7 +244,6 @@ declare const _default: {
|
|
|
257
244
|
lowerMiniprogramStructureJson: typeof lowerMiniprogramStructureJson;
|
|
258
245
|
lowerMiniprogramRouteServerStyleJson: typeof lowerMiniprogramRouteServerStyleJson;
|
|
259
246
|
lowerMiniprogramToolingDeployJson: typeof lowerMiniprogramToolingDeployJson;
|
|
260
|
-
lowerMiniprogramWechatPackagingJson: typeof lowerMiniprogramWechatPackagingJson;
|
|
261
247
|
lowerMiniprogramMultiAdapterJson: typeof lowerMiniprogramMultiAdapterJson;
|
|
262
248
|
createMiniHost: typeof createMiniHost;
|
|
263
249
|
queryProfileProtocolCatalog: typeof queryProfileProtocolCatalog;
|
package/dist/index.js
CHANGED
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
* Coarse-grained only — no transform hooks / per-AST callbacks.
|
|
5
5
|
*/
|
|
6
6
|
import { createRequire } from 'node:module';
|
|
7
|
-
import {
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
8
|
import path from 'node:path';
|
|
9
9
|
import { fileURLToPath } from 'node:url';
|
|
10
|
-
import { materializeWechatPackaging } from './wechat-packaging.js';
|
|
11
10
|
export { HOST_PROTOCOL, COMPILER_PROTOCOL, PROGRAM_IR_SCHEMA, PLAN_SCHEMA, PLUGIN_PROTOCOL, DX_PROTOCOL, DX_SYMBOL_SCHEMA, DX_REFERENCE_SCHEMA, DX_EXPLAIN_SCHEMA, DX_WORKSPACE_EDIT_SCHEMA, DX_CODE_ACTION_SCHEMA, DX_AFFECTED_SCHEMA, DX_RENAME_SCHEMA, DX_TEST_SELECTION_SCHEMA, DX_SOURCE_MAP_SCHEMA, DX_SYMBOL_INDEX_SCHEMA, DX_CROSS_SFC_CHECK_SCHEMA, DX_SEMANTIC_TRANSACTION_SCHEMA, DX_CANCEL_SCHEMA, DX_AFFECTED_PREVIEW_SCHEMA, DX_HMR_PLAN_SCHEMA, DX_BUDGET_SCHEMA, DX_TRANSACTION_CHECK_SCHEMA, DX_BOUNDARY_VALIDATOR_SCHEMA, DX_LEAKAGE_SCHEMA, DX_CAPABILITY_TARGET_SCHEMA, DX_DEAD_GRAPH_SCHEMA, DX_DEPLOYMENT_PROOF_CHECK_SCHEMA, DX_TRACE_SCHEMA, DX_CAUSAL_REPLAY_SCHEMA, DX_CAUSAL_REPLAY_CHECK_SCHEMA, APPLICATION_PROTOCOL, APPLICATION_DESCRIPTOR_SCHEMA, APPLICATIONS_CONFIG_SCHEMA, APPLICATION_CATALOG_SCHEMA, APPLICATION_CHECK_SCHEMA, APPLICATION_BASE_SCHEMA, APPLICATION_RELOCATION_SCHEMA, APPLICATION_RELOCATED_SCHEMA, APPLICATION_RELOCATABLE_CHECK_SCHEMA, APPLICATION_ARTIFACT_SCHEMA, APPLICATION_MOUNT_TABLE_SCHEMA, APPLICATION_ARTIFACT_BOUNDARY_SCHEMA, APPLICATION_ISOLATION_SCHEMA, APPLICATION_ISOLATION_CHECK_SCHEMA, APPLICATION_CROSS_LINK_SCHEMA, APPLICATION_HOST_COMPOSITION_SCHEMA, APPLICATION_DEV_SESSIONS_SCHEMA, APPLICATION_AFFECTED_SCHEMA, APPLICATION_PROXY_DISPATCH_SCHEMA, APPLICATION_MOUNTED_TEST_SCHEMA, APPLICATION_DEPLOY_ADAPTER_SCHEMA, APPLICATION_DEV_CHECK_SCHEMA, PROTOCOL_CATALOG_SCHEMA, TEST_PROTOCOL, TEST_MANIFEST_SCHEMA, TEST_REPORT_SCHEMA, protocolCatalog, dxCatalog, testCatalog, applicationCatalog, TARGET_PROTOCOL, TARGET_VIEW_OPS_SCHEMA, TARGET_PLATFORM_PROFILE_SCHEMA, TARGET_MINI_PROGRAM_ARTIFACT_SCHEMA, TARGET_CHECK_SCHEMA, TARGET_DIAG_DOM_LEAK_IN_PLAN, targetCatalog, PROFILE_PROTOCOL, PROFILE_HOST_SCHEMA, PROFILE_DELIVERY_SCHEMA, PROFILE_CHECK_SCHEMA, PROFILE_DIAG_HOST_PROFILE_INVALID, PROFILE_DIAG_RESOLUTION_DIGEST_MISMATCH, PROFILE_DIAG_CORE_ID_OVERRIDE, PROFILE_DIAG_HOST_PROFILE_REF_UNRESOLVED, PROFILE_SURFACE_KINDS, PROFILE_UNIFIED_LIFECYCLE_EVENTS, PROFILE_CORE_ID_PREFIX, PROFILE_SOLVER_CHECK_SCHEMA, PROFILE_HOST_RESOLUTION_MANIFEST_SCHEMA, PROFILE_EXECUTOR_CHECK_SCHEMA, PROFILE_EXECUTOR_SCENARIO_SCHEMA, PROFILE_DIAG_SURFACE_NO_MATCH, PROFILE_DIAG_SURFACE_AMBIGUOUS, PROFILE_DIAG_CAPABILITY_UNRESOLVED, PROFILE_DIAG_CAPABILITY_PERMISSION_UNDECLARED, PROFILE_DIAG_ROUTE_UNREALIZABLE, PROFILE_DIAG_STALE_GENERATION, PROFILE_DIAG_MISSING_ENVELOPE_IDS, PROFILE_DIAG_SURFACE_OWNS_STATE, PROFILE_DIAG_PRIVATE_OBJECT_CROSSING, PROFILE_DIAG_SPLIT_TRANSACTION, PROFILE_DIAG_DISPOSE_NOT_AUTHORITATIVE, PROFILE_DIAG_CANCEL_NOT_PROPAGATED, PROFILE_LIFECYCLE_MAPPING_ENTRY_SCHEMA, PROFILE_LIFECYCLE_MAPPING_TABLE_SCHEMA, PROFILE_RECOVERY_POLICY_SCHEMA, PROFILE_LIFECYCLE_SCENARIO_SCHEMA, PROFILE_LIFECYCLE_RECOVERY_CHECK_SCHEMA, PROFILE_LIFECYCLE_HOST_KINDS, PROFILE_PERSISTENCE_WINDOWS, PROFILE_DIAG_LIFECYCLE_UNPROVEN, PROFILE_DIAG_LIFECYCLE_MAPPING_INCOMPLETE, PROFILE_DIAG_RECOVERY_DUPLICATES_OWNER, PROFILE_DIAG_RECOVERY_ASSUMES_HEAP, PROFILE_DIAG_PERSISTENCE_WINDOW_INVALID, PROFILE_DELIVERY_PACKAGE_CONSTRAINTS_SCHEMA, PROFILE_DELIVERY_SECURITY_POLICY_SCHEMA, PROFILE_DELIVERY_UPDATE_POLICY_SCHEMA, PROFILE_DELIVERY_ARTIFACT_MANIFEST_SCHEMA, PROFILE_DELIVERY_PROOF_MANIFEST_SCHEMA, PROFILE_DELIVERY_PROOF_SCENARIO_SCHEMA, PROFILE_DELIVERY_PROOF_CHECK_SCHEMA, PROFILE_DELIVERY_UPDATE_CHANNELS, PROFILE_DELIVERY_ASSET_STRATEGIES, PROFILE_DIAG_DELIVERY_CONSTRAINT_EXCEEDED, PROFILE_DIAG_HOST_PLAN_VERSION_MISMATCH, PROFILE_DIAG_PROOF_MANIFEST_INCOMPLETE, PROFILE_DIAG_PROOF_COPIES_SEMANTIC_IR, PROFILE_DIAG_UPDATE_WITHOUT_REPROOF, PROFILE_DIAG_SECURITY_POLICY_INSECURE, PROFILE_CONFORMANCE_FIXTURE_SCHEMA, PROFILE_CONFORMANCE_STATE_SNAPSHOT_SCHEMA, PROFILE_CONFORMANCE_TRACE_SCHEMA, PROFILE_CONFORMANCE_HOST_RUN_SCHEMA, PROFILE_CONFORMANCE_SCENARIO_SCHEMA, PROFILE_CONFORMANCE_CHECK_SCHEMA, PROFILE_CONFORMANCE_SURFACE_ROLES, PROFILE_DIAG_STABLE_ID_DIVERGENCE, PROFILE_DIAG_STATE_RESULT_DIVERGENCE, PROFILE_DIAG_TRACE_INVARIANT_BROKEN, PROFILE_DIAG_CONFORMANCE_HOST_INCOMPLETE, PROFILE_DIAG_CONFORMANCE_SURFACE_ROLE_MISMATCH, profileCatalog, NATIVE_HOST_PROTOCOL, NATIVE_HOST_WEBVIEW_DEPLOYMENT_SCHEMA, NATIVE_HOST_CAPABILITY_SCHEMA, NATIVE_HOST_BRIDGE_SCHEMA, NATIVE_HOST_APPLICATION_IDENTITY_SCHEMA, NATIVE_HOST_CHECK_SCHEMA, NATIVE_HOST_DIAG_ARBITRARY_BRIDGE, NATIVE_HOST_SHELL_SCHEMA, NATIVE_HOST_SHELL_CHECK_SCHEMA, NATIVE_HOST_DEEP_LINK_SCHEMA, NATIVE_HOST_LOCAL_BUNDLE_SCHEMA, NATIVE_HOST_DIAG_MISSING_SHELL_HOOK, NATIVE_HOST_DIAG_PLATFORM_SEMANTIC_FORK, NATIVE_HOST_DIAG_REMOTE_ENTRY_DEFAULT, NATIVE_HOST_DIAG_MISSING_ENTRY_ARTIFACT, NATIVE_HOST_REQUIRED_SHELL_HOOKS, NATIVE_HOST_CAPABILITY_CALL_SCHEMA, NATIVE_HOST_BRIDGE_TRACE_SCHEMA, NATIVE_HOST_BRIDGE_STUB_CATALOG_SCHEMA, NATIVE_HOST_BRIDGE_CHECK_SCHEMA, NATIVE_HOST_DIAG_MISSING_NONCE, NATIVE_HOST_DIAG_CALL_NOT_ALLOWLISTED, NATIVE_HOST_FIRST_BATCH_STUB_IDS, NATIVE_HOST_LIFECYCLE_SCHEMA, NATIVE_HOST_LIFECYCLE_CHECK_SCHEMA, NATIVE_HOST_DIAG_BACKGROUND_IS_DESTROY, NATIVE_HOST_DIAG_CRASH_ASSUMES_JS_HEAP, NATIVE_HOST_DIAG_MISSING_LIFECYCLE_EVENT, NATIVE_HOST_REQUIRED_LIFECYCLE_EVENTS, NATIVE_HOST_FULLSTACK_SCHEMA, NATIVE_HOST_FULLSTACK_CHECK_SCHEMA, NATIVE_HOST_DIAG_BRIDGE_BYPASSES_SERVER, NATIVE_HOST_DIAG_REMOTE_WITHOUT_INTEGRITY, NATIVE_HOST_DIAG_MISSING_SERVER_TRANSPORT, NATIVE_HOST_NATIVE_SURFACE_SCHEMA, NATIVE_HOST_NATIVE_SURFACE_CHECK_SCHEMA, NATIVE_HOST_DIAG_SURFACE_IS_CAPABILITY, NATIVE_HOST_DIAG_IMPLICIT_STATE_SHARE, NATIVE_HOST_HIGH_VALUE_SURFACE_KINDS, NATIVE_HOST_MULTI_PLATFORM_SCHEMA, NATIVE_HOST_MULTI_PLATFORM_SHARED_SCHEMA, NATIVE_HOST_MULTI_PLATFORM_CHECK_SCHEMA, NATIVE_HOST_DIAG_MISSING_PLATFORM_ADAPTER, NATIVE_HOST_DIAG_PLATFORM_PRIVATE_SCHEMA, NATIVE_HOST_DIAG_ADAPTER_IS_SEMANTIC_CORE, NATIVE_HOST_REQUIRED_MULTI_PLATFORMS, NATIVE_HOST_MULTI_PLATFORM_ADAPTER_KIND, nativeHostCatalog, LOCALE_PROTOCOL, LOCALE_MANIFEST_SCHEMA, LOCALE_MESSAGE_CATALOG_SCHEMA, LOCALE_MESSAGE_NODE_SCHEMA, LOCALE_CHECK_SCHEMA, LOCALE_TYPED_MODULE_SCHEMA, LOCALE_RENAME_SCHEMA, LOCALE_APPLICATION_CONTEXT_SCHEMA, LOCALE_FORMATTER_CONTEXT_SCHEMA, LOCALE_TRANSITION_SCHEMA, LOCALE_RUNTIME_CHECK_SCHEMA, LOCALE_FALLBACK_RESOLUTION_SCHEMA, FORMATTER_DATA_VERSION, LOCALE_ROUTE_REALIZATION_SCHEMA, LOCALE_PAGE_META_SCHEMA, LOCALE_LINK_RESOLUTION_SCHEMA, LOCALE_ROUTER_CHECK_SCHEMA, LOCALE_DELIVERY_RESOLUTION_SCHEMA, LOCALE_CHUNK_MANIFEST_SCHEMA, LOCALE_NATIVE_PACK_SCHEMA, LOCALE_MINI_PACKAGE_PROOF_SCHEMA, LOCALE_SERVER_ERROR_ENVELOPE_SCHEMA, LOCALE_DELIVERY_CHECK_SCHEMA, LOCALE_EXPLAIN_SCHEMA, LOCALE_DIFF_SCHEMA, LOCALE_EXTRACT_SCHEMA, LOCALE_PSEUDO_SCHEMA, LOCALE_CONFORMANCE_SCHEMA, LOCALE_DIAG_MANIFEST_MISSING, LOCALE_DIAG_ID_INVALID, LOCALE_DIAG_FALLBACK_CYCLE, LOCALE_DIAG_MESSAGE_PARAMETER_MISMATCH, LOCALE_DIAG_MESSAGE_UNUSED, LOCALE_DIAG_FORMATTER_CONTEXT_INCOMPLETE, LOCALE_DIAG_FORMATTER_VERSION_MISMATCH, LOCALE_DIAG_DIGEST_MISMATCH, LOCALE_DIAG_TRANSITION_PARTIAL, LOCALE_DIAG_TRANSITION_UNSUPPORTED, LOCALE_DIAG_TRANSITION_LOAD_FAILED, LOCALE_DIAG_MACHINE_DEFAULT_FORBIDDEN, LOCALE_DIAG_MESSAGE_MIXED_LOCALE, LOCALE_DIAG_STALE_GENERATION, LOCALE_DIAG_ROUTE_COLLISION, LOCALE_DIAG_CANONICAL_MISSING, LOCALE_DIAG_HREFLANG_INCOMPLETE, LOCALE_DIAG_META_LOCALE_MISMATCH, LOCALE_DIAG_LINK_HARDCODED_PATH, LOCALE_DIAG_CACHE_KEY_STEALS_CONTENT, LOCALE_DIAG_PREFIX_OMIT_WITHOUT_REDIRECT, LOCALE_DIAG_DELIVERY_FULL_BUNDLE, LOCALE_DIAG_CHUNK_HASH_MISMATCH, LOCALE_DIAG_NATIVE_PACK_UNSIGNED, LOCALE_DIAG_NATIVE_PACK_HAS_JS, LOCALE_DIAG_NATIVE_PACK_APP_MISMATCH, LOCALE_DIAG_MINI_CROSS_PACKAGE_UNPROVEN, LOCALE_DIAG_SERVER_TRANSLATED_ERROR, LOCALE_DIAG_SERVER_FORMAT_WITHOUT_CONTEXT, LOCALE_DIAG_HOST_MESSAGE_DIVERGENCE, LOCALE_DIAG_MESSAGE_DYNAMIC_ID_UNBOUNDED, LOCALE_DIAG_HARDCODED_TEXT, LOCALE_DIAG_PSEUDO_PRODUCTION_FORBIDDEN, LOCALE_DIAG_CONFORMANCE_DIVERGENCE, LOCALE_DIAG_EXPLAIN_UNKNOWN, LOCALE_VIRTUAL_MODULE_PREFIX, localeCatalog, } from '@vmz/protocol';
|
|
12
11
|
import { HOST_PROTOCOL, COMPILER_PROTOCOL, PROGRAM_IR_SCHEMA, PLUGIN_PROTOCOL, DX_PROTOCOL, DX_SYMBOL_SCHEMA, DX_REFERENCE_SCHEMA, DX_EXPLAIN_SCHEMA, DX_WORKSPACE_EDIT_SCHEMA, DX_CODE_ACTION_SCHEMA, DX_AFFECTED_SCHEMA, DX_RENAME_SCHEMA, DX_TEST_SELECTION_SCHEMA, DX_SOURCE_MAP_SCHEMA, DX_SYMBOL_INDEX_SCHEMA, DX_CROSS_SFC_CHECK_SCHEMA, DX_SEMANTIC_TRANSACTION_SCHEMA, DX_CANCEL_SCHEMA, DX_AFFECTED_PREVIEW_SCHEMA, DX_HMR_PLAN_SCHEMA, DX_BUDGET_SCHEMA, DX_TRANSACTION_CHECK_SCHEMA, DX_BOUNDARY_VALIDATOR_SCHEMA, DX_LEAKAGE_SCHEMA, DX_CAPABILITY_TARGET_SCHEMA, DX_DEAD_GRAPH_SCHEMA, DX_DEPLOYMENT_PROOF_CHECK_SCHEMA, DX_TRACE_SCHEMA, DX_CAUSAL_REPLAY_SCHEMA, DX_CAUSAL_REPLAY_CHECK_SCHEMA, APPLICATION_PROTOCOL, APPLICATION_DESCRIPTOR_SCHEMA, APPLICATIONS_CONFIG_SCHEMA, APPLICATION_CATALOG_SCHEMA, APPLICATION_CHECK_SCHEMA, APPLICATION_BASE_SCHEMA, APPLICATION_RELOCATION_SCHEMA, APPLICATION_RELOCATED_SCHEMA, APPLICATION_RELOCATABLE_CHECK_SCHEMA, APPLICATION_ARTIFACT_SCHEMA, APPLICATION_MOUNT_TABLE_SCHEMA, APPLICATION_ARTIFACT_BOUNDARY_SCHEMA, APPLICATION_ISOLATION_SCHEMA, APPLICATION_ISOLATION_CHECK_SCHEMA, APPLICATION_CROSS_LINK_SCHEMA, APPLICATION_HOST_COMPOSITION_SCHEMA, APPLICATION_DEV_SESSIONS_SCHEMA, APPLICATION_AFFECTED_SCHEMA, APPLICATION_PROXY_DISPATCH_SCHEMA, APPLICATION_MOUNTED_TEST_SCHEMA, APPLICATION_DEPLOY_ADAPTER_SCHEMA, APPLICATION_DEV_CHECK_SCHEMA, PROTOCOL_CATALOG_SCHEMA, TARGET_PROTOCOL, TARGET_VIEW_OPS_SCHEMA, TARGET_PLATFORM_PROFILE_SCHEMA, TARGET_MINI_PROGRAM_ARTIFACT_SCHEMA, TARGET_CHECK_SCHEMA, targetCatalog, PROFILE_PROTOCOL, PROFILE_HOST_SCHEMA, PROFILE_DELIVERY_SCHEMA, PROFILE_CHECK_SCHEMA, PROFILE_DIAG_HOST_PROFILE_INVALID, PROFILE_DIAG_RESOLUTION_DIGEST_MISMATCH, PROFILE_DIAG_CORE_ID_OVERRIDE, PROFILE_DIAG_HOST_PROFILE_REF_UNRESOLVED, PROFILE_SURFACE_KINDS, PROFILE_UNIFIED_LIFECYCLE_EVENTS, PROFILE_CORE_ID_PREFIX, PROFILE_SOLVER_CHECK_SCHEMA, PROFILE_HOST_RESOLUTION_MANIFEST_SCHEMA, PROFILE_EXECUTOR_CHECK_SCHEMA, PROFILE_EXECUTOR_SCENARIO_SCHEMA, PROFILE_DIAG_SURFACE_NO_MATCH, PROFILE_DIAG_SURFACE_AMBIGUOUS, PROFILE_DIAG_CAPABILITY_UNRESOLVED, PROFILE_DIAG_CAPABILITY_PERMISSION_UNDECLARED, PROFILE_DIAG_ROUTE_UNREALIZABLE, PROFILE_DIAG_STALE_GENERATION, PROFILE_DIAG_MISSING_ENVELOPE_IDS, PROFILE_DIAG_SURFACE_OWNS_STATE, PROFILE_DIAG_PRIVATE_OBJECT_CROSSING, PROFILE_DIAG_SPLIT_TRANSACTION, PROFILE_DIAG_DISPOSE_NOT_AUTHORITATIVE, PROFILE_DIAG_CANCEL_NOT_PROPAGATED, PROFILE_LIFECYCLE_SCENARIO_SCHEMA, PROFILE_LIFECYCLE_RECOVERY_CHECK_SCHEMA, PROFILE_LIFECYCLE_HOST_KINDS, PROFILE_PERSISTENCE_WINDOWS, PROFILE_DIAG_LIFECYCLE_UNPROVEN, PROFILE_DIAG_LIFECYCLE_MAPPING_INCOMPLETE, PROFILE_DIAG_RECOVERY_DUPLICATES_OWNER, PROFILE_DIAG_RECOVERY_ASSUMES_HEAP, PROFILE_DIAG_PERSISTENCE_WINDOW_INVALID, PROFILE_DELIVERY_PACKAGE_CONSTRAINTS_SCHEMA, PROFILE_DELIVERY_SECURITY_POLICY_SCHEMA, PROFILE_DELIVERY_UPDATE_POLICY_SCHEMA, PROFILE_DELIVERY_ARTIFACT_MANIFEST_SCHEMA, PROFILE_DELIVERY_PROOF_MANIFEST_SCHEMA, PROFILE_DELIVERY_PROOF_SCENARIO_SCHEMA, PROFILE_DELIVERY_PROOF_CHECK_SCHEMA, PROFILE_DELIVERY_UPDATE_CHANNELS, PROFILE_DELIVERY_ASSET_STRATEGIES, PROFILE_DIAG_DELIVERY_CONSTRAINT_EXCEEDED, PROFILE_DIAG_HOST_PLAN_VERSION_MISMATCH, PROFILE_DIAG_PROOF_MANIFEST_INCOMPLETE, PROFILE_DIAG_PROOF_COPIES_SEMANTIC_IR, PROFILE_DIAG_UPDATE_WITHOUT_REPROOF, PROFILE_DIAG_SECURITY_POLICY_INSECURE, PROFILE_CONFORMANCE_FIXTURE_SCHEMA, PROFILE_CONFORMANCE_STATE_SNAPSHOT_SCHEMA, PROFILE_CONFORMANCE_TRACE_SCHEMA, PROFILE_CONFORMANCE_HOST_RUN_SCHEMA, PROFILE_CONFORMANCE_SCENARIO_SCHEMA, PROFILE_CONFORMANCE_CHECK_SCHEMA, PROFILE_CONFORMANCE_SURFACE_ROLES, PROFILE_DIAG_STABLE_ID_DIVERGENCE, PROFILE_DIAG_STATE_RESULT_DIVERGENCE, PROFILE_DIAG_TRACE_INVARIANT_BROKEN, PROFILE_DIAG_CONFORMANCE_HOST_INCOMPLETE, PROFILE_DIAG_CONFORMANCE_SURFACE_ROLE_MISMATCH, profileCatalog, NATIVE_HOST_PROTOCOL, NATIVE_HOST_WEBVIEW_DEPLOYMENT_SCHEMA, NATIVE_HOST_CAPABILITY_SCHEMA, NATIVE_HOST_BRIDGE_SCHEMA, NATIVE_HOST_APPLICATION_IDENTITY_SCHEMA, NATIVE_HOST_CHECK_SCHEMA, NATIVE_HOST_DIAG_ARBITRARY_BRIDGE, NATIVE_HOST_SHELL_SCHEMA, NATIVE_HOST_SHELL_CHECK_SCHEMA, NATIVE_HOST_DEEP_LINK_SCHEMA, NATIVE_HOST_LOCAL_BUNDLE_SCHEMA, NATIVE_HOST_DIAG_MISSING_SHELL_HOOK, NATIVE_HOST_DIAG_PLATFORM_SEMANTIC_FORK, NATIVE_HOST_DIAG_REMOTE_ENTRY_DEFAULT, NATIVE_HOST_DIAG_MISSING_ENTRY_ARTIFACT, NATIVE_HOST_REQUIRED_SHELL_HOOKS, NATIVE_HOST_CAPABILITY_CALL_SCHEMA, NATIVE_HOST_BRIDGE_TRACE_SCHEMA, NATIVE_HOST_BRIDGE_STUB_CATALOG_SCHEMA, NATIVE_HOST_BRIDGE_CHECK_SCHEMA, NATIVE_HOST_DIAG_MISSING_NONCE, NATIVE_HOST_DIAG_CALL_NOT_ALLOWLISTED, NATIVE_HOST_FIRST_BATCH_STUB_IDS, NATIVE_HOST_LIFECYCLE_SCHEMA, NATIVE_HOST_LIFECYCLE_CHECK_SCHEMA, NATIVE_HOST_DIAG_BACKGROUND_IS_DESTROY, NATIVE_HOST_DIAG_CRASH_ASSUMES_JS_HEAP, NATIVE_HOST_DIAG_MISSING_LIFECYCLE_EVENT, NATIVE_HOST_REQUIRED_LIFECYCLE_EVENTS, NATIVE_HOST_FULLSTACK_SCHEMA, NATIVE_HOST_FULLSTACK_CHECK_SCHEMA, NATIVE_HOST_DIAG_BRIDGE_BYPASSES_SERVER, NATIVE_HOST_DIAG_REMOTE_WITHOUT_INTEGRITY, NATIVE_HOST_DIAG_MISSING_SERVER_TRANSPORT, NATIVE_HOST_NATIVE_SURFACE_SCHEMA, NATIVE_HOST_NATIVE_SURFACE_CHECK_SCHEMA, NATIVE_HOST_DIAG_SURFACE_IS_CAPABILITY, NATIVE_HOST_DIAG_IMPLICIT_STATE_SHARE, NATIVE_HOST_HIGH_VALUE_SURFACE_KINDS, NATIVE_HOST_MULTI_PLATFORM_SCHEMA, NATIVE_HOST_MULTI_PLATFORM_SHARED_SCHEMA, NATIVE_HOST_MULTI_PLATFORM_CHECK_SCHEMA, NATIVE_HOST_DIAG_MISSING_PLATFORM_ADAPTER, NATIVE_HOST_DIAG_PLATFORM_PRIVATE_SCHEMA, NATIVE_HOST_DIAG_ADAPTER_IS_SEMANTIC_CORE, NATIVE_HOST_REQUIRED_MULTI_PLATFORMS, NATIVE_HOST_MULTI_PLATFORM_ADAPTER_KIND, nativeHostCatalog, localeCatalog, } from '@vmz/protocol';
|
|
13
12
|
const require = createRequire(import.meta.url);
|
|
@@ -144,31 +143,6 @@ export function resolveCoreRuntimeDist() {
|
|
|
144
143
|
return nested;
|
|
145
144
|
return null;
|
|
146
145
|
}
|
|
147
|
-
/** Runtime companions required by dist/vmz-serve-host.mjs relative imports. */
|
|
148
|
-
export const SERVE_HOST_RUNTIME_FILES = [
|
|
149
|
-
['serve-host.mjs', 'vmz-serve-host.mjs'],
|
|
150
|
-
['list-client-components.js', 'list-client-components.js'],
|
|
151
|
-
['deployment-registry.js', 'deployment-registry.js'],
|
|
152
|
-
['render-host.js', 'render-host.js'],
|
|
153
|
-
];
|
|
154
|
-
/**
|
|
155
|
-
* Copy serve-host + registry bootstrap modules from `@vmz/core` into app outDir.
|
|
156
|
-
* @param {string} outDir
|
|
157
|
-
* @param {string} [coreDist]
|
|
158
|
-
*/
|
|
159
|
-
export function materializeServeHostRuntime(outDir, coreDist = resolveCoreRuntimeDist()) {
|
|
160
|
-
if (!coreDist) {
|
|
161
|
-
throw new Error('materializeServeHostRuntime: @vmz/core dist not found');
|
|
162
|
-
}
|
|
163
|
-
for (const [srcName, outName] of SERVE_HOST_RUNTIME_FILES) {
|
|
164
|
-
const src = path.join(coreDist, srcName);
|
|
165
|
-
const dst = path.join(outDir, outName);
|
|
166
|
-
if (!existsSync(src)) {
|
|
167
|
-
throw new Error(`materializeServeHostRuntime: missing ${src}`);
|
|
168
|
-
}
|
|
169
|
-
copyFileSync(src, dst);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
146
|
/**
|
|
173
147
|
* @typedef {object} WorkspaceOptions
|
|
174
148
|
* @property {string} root
|
|
@@ -184,7 +158,7 @@ export function createWorkspace(options) {
|
|
|
184
158
|
const native = loadNative();
|
|
185
159
|
const protocol = options.protocol ?? expectedProtocol();
|
|
186
160
|
const runtimeDist = options.runtimeDist ?? resolveCoreRuntimeDist() ?? undefined;
|
|
187
|
-
|
|
161
|
+
return native.JsWorkspace.create({
|
|
188
162
|
root: options.root,
|
|
189
163
|
outDir: options.outDir,
|
|
190
164
|
runtimeDist,
|
|
@@ -195,25 +169,6 @@ export function createWorkspace(options) {
|
|
|
195
169
|
pluginProtocol: protocol.pluginProtocol,
|
|
196
170
|
},
|
|
197
171
|
});
|
|
198
|
-
const pack = ws.lowerMiniprogramWechatPackaging.bind(ws);
|
|
199
|
-
const wrappedPack = () => {
|
|
200
|
-
materializeWechatPackaging(options.root);
|
|
201
|
-
return pack();
|
|
202
|
-
};
|
|
203
|
-
try {
|
|
204
|
-
ws.lowerMiniprogramWechatPackaging = wrappedPack;
|
|
205
|
-
return ws;
|
|
206
|
-
}
|
|
207
|
-
catch {
|
|
208
|
-
return new Proxy(ws, {
|
|
209
|
-
get(target, prop, receiver) {
|
|
210
|
-
if (prop === 'lowerMiniprogramWechatPackaging')
|
|
211
|
-
return wrappedPack;
|
|
212
|
-
const value = Reflect.get(target, prop, receiver);
|
|
213
|
-
return typeof value === 'function' ? value.bind(target) : value;
|
|
214
|
-
},
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
172
|
}
|
|
218
173
|
/**
|
|
219
174
|
* frozen application composition protocol catalog.
|
|
@@ -261,11 +216,6 @@ export function lowerMiniprogramToolingDeployJson(rootPath) {
|
|
|
261
216
|
const native = loadNative();
|
|
262
217
|
return native.lowerMiniprogramToolingDeployJson(rootPath);
|
|
263
218
|
}
|
|
264
|
-
export function lowerMiniprogramWechatPackagingJson(rootPath) {
|
|
265
|
-
const native = loadNative();
|
|
266
|
-
materializeWechatPackaging(rootPath);
|
|
267
|
-
return native.lowerMiniprogramWechatPackagingJson(rootPath);
|
|
268
|
-
}
|
|
269
219
|
export function lowerMiniprogramMultiAdapterJson(rootPath) {
|
|
270
220
|
const native = loadNative();
|
|
271
221
|
return native.lowerMiniprogramMultiAdapterJson(rootPath);
|
|
@@ -394,7 +344,6 @@ export function checkApplicationDevTestDeployJson(hostRoot, packageRoots, dirtyP
|
|
|
394
344
|
return native.checkApplicationDevTestDeployJson(hostRoot, packageRoots, dirtyPaths);
|
|
395
345
|
}
|
|
396
346
|
export { createDevSession, listWatchedFiles, srcFingerprint } from './dev-session.js';
|
|
397
|
-
export { coalesceRootBurst, collectDevWatchRoots, mergeDirtySets, localLinkDependencyRoots, watchRootForSourceFile, } from './dev-watch-roots.js';
|
|
398
347
|
export { findAvailablePort } from './port.js';
|
|
399
348
|
export { runCli, parseArgs, printHelp, printGlobalHelp, printProjectHelp } from './cli.js';
|
|
400
349
|
export { findNearestProjectVmz, getInvocationContext, isGlobalAllowedCommand, isUnderNodeModules, resolveThisPackageRoot, resolveVmzBin, gateGlobalProjectCommand, } from './invocation.js';
|
|
@@ -412,8 +361,7 @@ export { CDN_POLICY_MANIFEST_SCHEMA, CDN_ADAPTER_PROJECTION_SCHEMA, CACHE_HTML,
|
|
|
412
361
|
export { SITE_DELIVERY_CONTRACT_SCHEMA, SITE_DELIVERY_RESOLUTION_SCHEMA, defineSite, normalizeSiteDelivery, normalizeSourceProbe, resolveSiteRelease, probeReleaseDirectory, emitSiteDelivery, } from './site-delivery.js';
|
|
413
362
|
export { EMBEDDED_RESOURCE_INDEX_SCHEMA, emitEmbeddedPackaging, } from './embedded-packaging.js';
|
|
414
363
|
export { SERVER_LANG_IDS, SERVER_LANG_ALIASES, SERVER_LANGUAGE_BACKENDS, resolveServerLanguage, assertLangRuntimePair, } from './server-language-backend.js';
|
|
415
|
-
export {
|
|
416
|
-
export { DELIVERY_PROFILE_AUTHORING_SCHEMA, BUILD_PROFILE_SELECTION_SCHEMA, ASSEMBLIES, SERVER_RUNTIMES, BUILTIN_PROFILES, pickSiteAuthoring, pickDeliveryPackaging, normalizeDeliveryAuthoring, selectBuildProfile, semanticIdsForAssembly, } from './delivery-profile.js';
|
|
364
|
+
export { DELIVERY_PROFILE_AUTHORING_SCHEMA, BUILD_PROFILE_SELECTION_SCHEMA, ASSEMBLIES, SERVER_RUNTIMES, BUILTIN_PROFILES, pickSiteAuthoring, normalizeDeliveryAuthoring, selectBuildProfile, semanticIdsForAssembly, } from './delivery-profile.js';
|
|
417
365
|
export { PACK_MANIFEST_SCHEMA, packFromDeploymentIr, ensureRuntimeCompanions } from './pack.js';
|
|
418
366
|
export { SERVER_ARTIFACT_SCHEMA, HTTP_CONTRACT_SCHEMA, SERVER_RUNTIME_ADAPTER_SCHEMA, emitServerArtifact, projectServerRuntimeAdapter, } from './server-artifact.js';
|
|
419
367
|
export { BUILD_PROOF_SCHEMA, ASSEMBLE_MANIFEST_SCHEMA, assembleDelivery, emitBuildProof, } from './build-assemble.js';
|
|
@@ -483,8 +431,6 @@ export default {
|
|
|
483
431
|
expectedProtocol,
|
|
484
432
|
resolveNativePath,
|
|
485
433
|
resolveCoreRuntimeDist,
|
|
486
|
-
materializeServeHostRuntime,
|
|
487
|
-
SERVE_HOST_RUNTIME_FILES,
|
|
488
434
|
loadNative,
|
|
489
435
|
getProtocolVersions,
|
|
490
436
|
handshake,
|
|
@@ -498,7 +444,6 @@ export default {
|
|
|
498
444
|
lowerMiniprogramStructureJson,
|
|
499
445
|
lowerMiniprogramRouteServerStyleJson,
|
|
500
446
|
lowerMiniprogramToolingDeployJson,
|
|
501
|
-
lowerMiniprogramWechatPackagingJson,
|
|
502
447
|
lowerMiniprogramMultiAdapterJson,
|
|
503
448
|
createMiniHost,
|
|
504
449
|
queryProfileProtocolCatalog,
|
package/dist/locale-check.js
CHANGED
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
import fs from 'node:fs';
|
|
8
8
|
import path from 'node:path';
|
|
9
9
|
import JSON5 from 'json5';
|
|
10
|
-
import { requireNativeAddon } from './native-addon.js';
|
|
11
|
-
import { writePrettyJsonFile } from './pretty-json.js';
|
|
12
10
|
import { DIAG_CATALOG_CONFLICT, DIAG_CATALOG_PARSE, DIAG_DEFAULT_MISSING, DIAG_DIR_MISSING, DIAG_DIR_ORPHAN, DIAG_FALLBACK_CYCLE, DIAG_FALLBACK_UNKNOWN, DIAG_ID_COLLISION, DIAG_ID_INVALID, DIAG_LAYOUT_ILLEGAL, DIAG_MANIFEST_MISSING, DIAG_MESSAGE_ARRAY_FORBIDDEN, DIAG_MESSAGE_HTML_FORBIDDEN, DIAG_MESSAGE_MISSING_DEFAULT, DIAG_MESSAGE_PARAMETER_MISMATCH, DIAG_MESSAGE_SYNTAX_INVALID, DIAG_MESSAGE_UNUSED, LOCALE_CHECK_SCHEMA, LOCALE_ID_RE, LOCALE_MANIFEST_SCHEMA, LOCALE_RESERVED_TOP, LOCALE_TYPED_MODULE_SCHEMA, LOCALE_VIRTUAL_MODULE_PREFIX, MESSAGE_CATALOG_SCHEMA, MESSAGE_NODE_SCHEMA, } from './locale-schema.js';
|
|
13
11
|
/**
|
|
14
12
|
* @param {string} literal
|
|
@@ -670,19 +668,25 @@ export function emitLocaleTypedModules(report, outDir) {
|
|
|
670
668
|
fs.mkdirSync(outDir, { recursive: true });
|
|
671
669
|
/** @type {string[]} */
|
|
672
670
|
const written = [];
|
|
673
|
-
const native = requireNativeAddon();
|
|
674
|
-
if (typeof native.generateLocaleTypedModule !== 'function') {
|
|
675
|
-
throw new Error('vmz native addon missing generateLocaleTypedModule — rebuild with `pnpm napi:build`');
|
|
676
|
-
}
|
|
677
671
|
for (const mod of report.typedModules || []) {
|
|
678
|
-
const
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
672
|
+
const lines = [
|
|
673
|
+
`/** Generated LocalizedText module — ${mod.module} (vmz.locale.typed_module.v0) */`,
|
|
674
|
+
`export type LocalizedText = string & { readonly __brand: 'LocalizedText' };`,
|
|
675
|
+
'',
|
|
676
|
+
];
|
|
677
|
+
for (const exp of mod.exports) {
|
|
678
|
+
if (!exp.params.length) {
|
|
679
|
+
lines.push(`export declare function ${exp.exportName}(): LocalizedText;`);
|
|
680
|
+
}
|
|
681
|
+
else {
|
|
682
|
+
const args = exp.params.map((p) => `${p.name}: ${p.kind === 'plural' || p.kind === 'number' ? 'number' : 'string'}`).join('; ');
|
|
683
|
+
lines.push(`export declare function ${exp.exportName}(args: { ${args} }): LocalizedText;`);
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
lines.push('');
|
|
683
687
|
const file = path.join(outDir, `${mod.catalogId}.d.ts`);
|
|
684
688
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
685
|
-
fs.writeFileSync(file,
|
|
689
|
+
fs.writeFileSync(file, lines.join('\n'), 'utf8');
|
|
686
690
|
written.push(file);
|
|
687
691
|
}
|
|
688
692
|
const index = {
|
|
@@ -690,7 +694,7 @@ export function emitLocaleTypedModules(report, outDir) {
|
|
|
690
694
|
modules: (report.typedModules || []).map((m) => m.module),
|
|
691
695
|
outDir,
|
|
692
696
|
};
|
|
693
|
-
|
|
697
|
+
fs.writeFileSync(path.join(outDir, 'index.json'), `${JSON.stringify(index, null, 2)}\n`, 'utf8');
|
|
694
698
|
return written;
|
|
695
699
|
}
|
|
696
700
|
/**
|
|
@@ -720,30 +724,59 @@ export function emitLocaleRuntimeModules(projectRoot, distDir) {
|
|
|
720
724
|
const localesOut = path.join(distDir, 'locales');
|
|
721
725
|
fs.mkdirSync(localesOut, { recursive: true });
|
|
722
726
|
for (const mod of report.typedModules || []) {
|
|
723
|
-
const
|
|
727
|
+
const lines = [
|
|
728
|
+
`/** Generated ${mod.module} — runtime LocalizedText (defaultLocale=${defaultLocale}) */`,
|
|
729
|
+
`const __vmzDefaultLocale = ${JSON.stringify(defaultLocale)};`,
|
|
730
|
+
`function __vmzLocaleId() {`,
|
|
731
|
+
` if (typeof globalThis !== "undefined" && globalThis.__vmzLocaleIdHint) {`,
|
|
732
|
+
` return String(globalThis.__vmzLocaleIdHint);`,
|
|
733
|
+
` }`,
|
|
734
|
+
` if (typeof document !== "undefined") {`,
|
|
735
|
+
` const d = document.documentElement?.getAttribute("data-locale");`,
|
|
736
|
+
` if (d) return d;`,
|
|
737
|
+
` const lang = document.documentElement?.lang;`,
|
|
738
|
+
` if (lang === "en" || lang === "en-US" || lang === "en-us") return "en-us";`,
|
|
739
|
+
` if (lang === "zh" || lang === "zh-CN" || lang === "zh-Hans" || lang === "zh-hans") return "zh-hans";`,
|
|
740
|
+
` }`,
|
|
741
|
+
` try {`,
|
|
742
|
+
` const stored = localStorage.getItem("vmz.locale");`,
|
|
743
|
+
` if (stored) return stored;`,
|
|
744
|
+
` } catch {}`,
|
|
745
|
+
` return __vmzDefaultLocale;`,
|
|
746
|
+
`}`,
|
|
747
|
+
`function __vmzFormat(template, args) {`,
|
|
748
|
+
` if (!args) return String(template ?? "");`,
|
|
749
|
+
` return String(template ?? "").replace(/\\{(\\w+)(?:,\\s*\\w+)?\\}/g, (m, name) =>`,
|
|
750
|
+
` Object.prototype.hasOwnProperty.call(args, name) ? String(args[name]) : m`,
|
|
751
|
+
` );`,
|
|
752
|
+
`}`,
|
|
753
|
+
`function __vmzPick(variants, args) {`,
|
|
754
|
+
` const id = __vmzLocaleId();`,
|
|
755
|
+
` const template = variants[id] ?? variants[__vmzDefaultLocale] ?? "";`,
|
|
756
|
+
` return __vmzFormat(template, args);`,
|
|
757
|
+
`}`,
|
|
758
|
+
'',
|
|
759
|
+
];
|
|
724
760
|
for (const exp of mod.exports || []) {
|
|
725
761
|
const node = byId.get(exp.messageId);
|
|
726
|
-
|
|
727
|
-
const variants = [];
|
|
762
|
+
const variants = {};
|
|
728
763
|
if (node?.variants) {
|
|
729
764
|
for (const [loc, v] of Object.entries(node.variants)) {
|
|
730
|
-
variants
|
|
765
|
+
variants[loc] = v.template;
|
|
731
766
|
}
|
|
732
767
|
}
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
if (typeof native.generateLocaleRuntimeModule !== 'function') {
|
|
741
|
-
throw new Error('vmz native addon missing generateLocaleRuntimeModule — rebuild with `pnpm napi:build`');
|
|
768
|
+
const lit = JSON.stringify(variants);
|
|
769
|
+
if ((exp.params || []).length) {
|
|
770
|
+
lines.push(`export function ${exp.exportName}(args) { return __vmzPick(${lit}, args); }`);
|
|
771
|
+
}
|
|
772
|
+
else {
|
|
773
|
+
lines.push(`export function ${exp.exportName}() { return __vmzPick(${lit}); }`);
|
|
774
|
+
}
|
|
742
775
|
}
|
|
743
|
-
|
|
776
|
+
lines.push('');
|
|
744
777
|
const file = path.join(localesOut, `${mod.catalogId}.js`);
|
|
745
778
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
746
|
-
fs.writeFileSync(file,
|
|
779
|
+
fs.writeFileSync(file, lines.join('\n'), 'utf8');
|
|
747
780
|
written.push(file);
|
|
748
781
|
}
|
|
749
782
|
rewriteLocaleImportsInDist(distDir);
|
package/dist/locale-cmd.js
CHANGED
|
@@ -12,7 +12,6 @@ import { checkLocaleRouter } from './locale-router.js';
|
|
|
12
12
|
import { checkLocaleRuntime } from './locale-runtime.js';
|
|
13
13
|
import { checkLocaleConformance, diffLocaleCatalogs, explainLocaleMessage, extractHardcodedText, pseudoLocalizeCatalog, } from './locale-tooling.js';
|
|
14
14
|
import { log } from './log.js';
|
|
15
|
-
import { emitPrettyJson, generatePrettyJson } from './pretty-json.js';
|
|
16
15
|
function printLocaleHelp() {
|
|
17
16
|
console.log(`vmz locale — /locales application i18n (–)
|
|
18
17
|
|
|
@@ -92,7 +91,14 @@ function cmdLocaleCheck(args) {
|
|
|
92
91
|
const report = checkLocales({ projectRoot, strict: Boolean(args.strict) });
|
|
93
92
|
const jsonOut = args.json;
|
|
94
93
|
if (jsonOut) {
|
|
95
|
-
|
|
94
|
+
const text = JSON.stringify(report, null, 2);
|
|
95
|
+
if (typeof jsonOut === 'string') {
|
|
96
|
+
fs.writeFileSync(jsonOut, `${text}\n`, 'utf8');
|
|
97
|
+
log.info(`wrote ${jsonOut}`);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
console.log(text);
|
|
101
|
+
}
|
|
96
102
|
}
|
|
97
103
|
else {
|
|
98
104
|
for (const d of report.diagnostics) {
|
|
@@ -145,7 +151,7 @@ function cmdLocaleRename(args) {
|
|
|
145
151
|
const report = checkLocales({ projectRoot, checkUnused: false });
|
|
146
152
|
const plan = planLocaleRename(report, fromId, toId);
|
|
147
153
|
if (args.json) {
|
|
148
|
-
|
|
154
|
+
console.log(JSON.stringify(plan, null, 2));
|
|
149
155
|
}
|
|
150
156
|
else if (plan.status !== 'ready') {
|
|
151
157
|
log.error(plan.error || 'rename failed');
|
|
@@ -175,7 +181,14 @@ function cmdLocaleRuntimeCheck(args) {
|
|
|
175
181
|
});
|
|
176
182
|
const { session: _session, ...jsonReport } = report;
|
|
177
183
|
if (args.json) {
|
|
178
|
-
|
|
184
|
+
const text = JSON.stringify(jsonReport, null, 2);
|
|
185
|
+
if (typeof args.json === 'string') {
|
|
186
|
+
fs.writeFileSync(args.json, `${text}\n`, 'utf8');
|
|
187
|
+
log.info(`wrote ${args.json}`);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
console.log(text);
|
|
191
|
+
}
|
|
179
192
|
}
|
|
180
193
|
else {
|
|
181
194
|
for (const d of report.diagnostics) {
|
|
@@ -218,7 +231,14 @@ function cmdLocaleRouterCheck(args) {
|
|
|
218
231
|
origin: routesFile.origin || 'https://example.test',
|
|
219
232
|
});
|
|
220
233
|
if (args.json) {
|
|
221
|
-
|
|
234
|
+
const text = JSON.stringify(report, null, 2);
|
|
235
|
+
if (typeof args.json === 'string') {
|
|
236
|
+
fs.writeFileSync(args.json, `${text}\n`, 'utf8');
|
|
237
|
+
log.info(`wrote ${args.json}`);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
console.log(text);
|
|
241
|
+
}
|
|
222
242
|
}
|
|
223
243
|
else {
|
|
224
244
|
for (const d of report.diagnostics) {
|
|
@@ -248,7 +268,14 @@ function cmdLocaleDeliveryCheck(args) {
|
|
|
248
268
|
planVersion: 'plan.v0',
|
|
249
269
|
});
|
|
250
270
|
if (args.json) {
|
|
251
|
-
|
|
271
|
+
const text = JSON.stringify(report, null, 2);
|
|
272
|
+
if (typeof args.json === 'string') {
|
|
273
|
+
fs.writeFileSync(args.json, `${text}\n`, 'utf8');
|
|
274
|
+
log.info(`wrote ${args.json}`);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
console.log(text);
|
|
278
|
+
}
|
|
252
279
|
}
|
|
253
280
|
else {
|
|
254
281
|
for (const d of report.diagnostics) {
|
|
@@ -263,9 +290,14 @@ function cmdLocaleDeliveryCheck(args) {
|
|
|
263
290
|
return report.status === 'ready' ? 0 : 1;
|
|
264
291
|
}
|
|
265
292
|
function emitJson(args, report) {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
293
|
+
const text = JSON.stringify(report, null, 2);
|
|
294
|
+
if (typeof args.json === 'string') {
|
|
295
|
+
fs.writeFileSync(args.json, `${text}\n`, 'utf8');
|
|
296
|
+
log.info(`wrote ${args.json}`);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
console.log(text);
|
|
300
|
+
}
|
|
269
301
|
}
|
|
270
302
|
function cmdLocaleExplain(args) {
|
|
271
303
|
const messageId = typeof args._[0] === 'string' ? args._[0] : '';
|
|
@@ -369,7 +401,7 @@ function cmdLocalePseudo(args) {
|
|
|
369
401
|
const outDir = (typeof args.out === 'string' && args.out) || path.join(projectRoot, 'dist', 'locales-pseudo');
|
|
370
402
|
fs.mkdirSync(outDir, { recursive: true });
|
|
371
403
|
const outFile = path.join(outDir, `${report.pseudoLocale}.json`);
|
|
372
|
-
fs.writeFileSync(outFile, `${
|
|
404
|
+
fs.writeFileSync(outFile, `${JSON.stringify(report.catalog, null, 2)}\n`, 'utf8');
|
|
373
405
|
log.info(`locale pseudo: source=${sourceLocale} keys=${Object.keys(report.catalog).length} out=${outFile}`);
|
|
374
406
|
}
|
|
375
407
|
return report.status === 'ready' ? 0 : 1;
|
|
@@ -26,10 +26,7 @@ export declare function emitLocaleRouteRealization(projectRoot: any, distDir: an
|
|
|
26
26
|
defaultLocale: any;
|
|
27
27
|
};
|
|
28
28
|
origin: string;
|
|
29
|
-
routes:
|
|
30
|
-
routeId: string;
|
|
31
|
-
path: string;
|
|
32
|
-
}[];
|
|
29
|
+
routes: any;
|
|
33
30
|
realizations: any[];
|
|
34
31
|
pageMetas: any[];
|
|
35
32
|
};
|