@vmz/vmz 0.1.0 → 0.1.2
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 +4 -3
- package/dist/cdn-policy.js +5 -8
- package/dist/cli.js +20 -7
- package/dist/content-addressed-assets.js +2 -1
- package/dist/delivery-profile.d.ts +10 -0
- package/dist/delivery-profile.js +69 -0
- package/dist/dev-session.d.ts +6 -0
- package/dist/dev-session.js +166 -40
- package/dist/document-build.js +24 -28
- package/dist/document-cmd.js +2 -9
- package/dist/document-integrate.js +10 -17
- package/dist/embedded-packaging.js +3 -7
- package/dist/index.d.ts +19 -1
- package/dist/index.js +62 -2
- package/dist/locale-check.js +28 -58
- package/dist/locale-cmd.js +10 -42
- package/dist/locale-route-emit.d.ts +4 -1
- package/dist/locale-route-emit.js +7 -32
- package/dist/mini-host.d.ts +47 -0
- package/dist/mini-host.js +202 -0
- package/dist/native-addon.d.ts +9 -0
- package/dist/native-addon.js +84 -0
- package/dist/pack-client-packages.d.ts +25 -0
- package/dist/pack-client-packages.js +399 -0
- package/dist/pack.d.ts +21 -3
- package/dist/pack.js +21 -6
- package/dist/pretty-json.d.ts +19 -0
- package/dist/pretty-json.js +43 -0
- package/dist/production-observability.js +3 -2
- package/dist/production-test-pack.js +4 -3
- package/dist/release-pack.js +5 -18
- package/dist/route-path.d.ts +35 -0
- package/dist/route-path.js +77 -0
- package/dist/server-artifact.js +5 -6
- package/dist/site-delivery.js +3 -2
- package/dist/static-emit.js +67 -86
- package/dist/test-cmd.js +2 -1
- package/dist/wechat-packaging.d.ts +22 -0
- package/dist/wechat-packaging.js +59 -0
- package/package.json +12 -12
package/dist/document-build.js
CHANGED
|
@@ -12,6 +12,8 @@ import { artifactHrefFromHtml, buildDocumentIslands, buildDocumentSearch, collec
|
|
|
12
12
|
import { resolveMarkdownEngine } from './document-markdown.js';
|
|
13
13
|
import { DOCUMENT_VIEW_SCHEMA } from './document-schema.js';
|
|
14
14
|
import { createWorkspace } from './index.js';
|
|
15
|
+
import { requireNativeAddon } from './native-addon.js';
|
|
16
|
+
import { writePrettyJsonFile } from './pretty-json.js';
|
|
15
17
|
/**
|
|
16
18
|
* @param {{ projectRoot: string, outDir?: string, strict?: boolean, engines?: { markdown?: string } }} opts
|
|
17
19
|
*/
|
|
@@ -113,7 +115,7 @@ export async function buildDocuments(opts) {
|
|
|
113
115
|
const viewRel = path.posix.join('views', page.identity.locale, `${page.identity.pageKey === 'index' ? 'index' : page.identity.pageKey}.view.json`);
|
|
114
116
|
const viewAbs = path.join(outDir, viewRel);
|
|
115
117
|
fs.mkdirSync(path.dirname(viewAbs), { recursive: true });
|
|
116
|
-
|
|
118
|
+
writePrettyJsonFile(viewAbs, view);
|
|
117
119
|
const html = renderStaticHtml({
|
|
118
120
|
title: info.title,
|
|
119
121
|
locale: page.identity.locale,
|
|
@@ -147,10 +149,10 @@ export async function buildDocuments(opts) {
|
|
|
147
149
|
islands: 'document.islands.json',
|
|
148
150
|
},
|
|
149
151
|
};
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
writePrettyJsonFile(path.join(outDir, 'document.manifest.json'), manifestOut);
|
|
153
|
+
writePrettyJsonFile(path.join(outDir, 'document.evidence.json'), evidence.evidence);
|
|
154
|
+
writePrettyJsonFile(path.join(outDir, 'document.search.json'), search);
|
|
155
|
+
writePrettyJsonFile(path.join(outDir, 'document.islands.json'), islands);
|
|
154
156
|
return { ok: true, manifest: manifestOut, outDir, pages: written, search, islands };
|
|
155
157
|
}
|
|
156
158
|
/**
|
|
@@ -170,7 +172,6 @@ function renderStaticHtml({ title, locale, route, nav, bodyHtml, headings, desig
|
|
|
170
172
|
}
|
|
171
173
|
if (designsHref)
|
|
172
174
|
cssHrefs.push(hostChrome ? `/${designsHref}` : prefix + designsHref);
|
|
173
|
-
const cssLink = cssHrefs.map((href) => ` <link rel="stylesheet" href="${esc(href)}" />`).join('\n') + (cssHrefs.length ? '\n' : '');
|
|
174
175
|
const navItems = nav
|
|
175
176
|
.map((n) => {
|
|
176
177
|
const href = relativeHref(htmlRel, n.href, route);
|
|
@@ -188,17 +189,11 @@ function renderStaticHtml({ title, locale, route, nav, bodyHtml, headings, desig
|
|
|
188
189
|
${navItems}
|
|
189
190
|
</ul>
|
|
190
191
|
</nav>`;
|
|
192
|
+
/** @type {string} */
|
|
193
|
+
let bodyInner;
|
|
191
194
|
if (hostChrome) {
|
|
192
195
|
const header = hostChrome.header.replace(/(<a\s+href="\/d\/?")([^>]*>文档<\/a>)/, '$1 aria-current="page"$2');
|
|
193
|
-
|
|
194
|
-
<html lang="${esc(locale)}">
|
|
195
|
-
<head>
|
|
196
|
-
<meta charset="utf-8" />
|
|
197
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
198
|
-
<title>${esc(title)}</title>
|
|
199
|
-
${cssLink}</head>
|
|
200
|
-
<body data-vmz-hydrate="island-only">
|
|
201
|
-
<div class="site site--docs">
|
|
196
|
+
bodyInner = ` <div class="site site--docs">
|
|
202
197
|
<a class="skip-link" href="#main">Skip to content</a>
|
|
203
198
|
${header}
|
|
204
199
|
<div class="doc-body">
|
|
@@ -215,28 +210,29 @@ ${playgroundShellHtml}
|
|
|
215
210
|
</div>
|
|
216
211
|
${hostChrome.footer}
|
|
217
212
|
</div>
|
|
218
|
-
</body>
|
|
219
|
-
</html>
|
|
220
213
|
`;
|
|
221
214
|
}
|
|
222
|
-
|
|
223
|
-
<
|
|
224
|
-
<head>
|
|
225
|
-
<meta charset="utf-8" />
|
|
226
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
227
|
-
<title>${esc(title)}</title>
|
|
228
|
-
${cssLink}</head>
|
|
229
|
-
<body data-vmz-hydrate="island-only">
|
|
230
|
-
<a class="skip-link" href="#main">Skip to content</a>
|
|
215
|
+
else {
|
|
216
|
+
bodyInner = ` <a class="skip-link" href="#main">Skip to content</a>
|
|
231
217
|
${docsNav}
|
|
232
218
|
${searchShellHtml}
|
|
233
219
|
${toc}<main id="main">
|
|
234
220
|
${bodyHtml}
|
|
235
221
|
${playgroundShellHtml}
|
|
236
222
|
</main>
|
|
237
|
-
</body>
|
|
238
|
-
</html>
|
|
239
223
|
`;
|
|
224
|
+
}
|
|
225
|
+
const native = requireNativeAddon();
|
|
226
|
+
if (typeof native.generateHtmlShell !== 'function') {
|
|
227
|
+
throw new Error('vmz native addon missing generateHtmlShell — rebuild with `pnpm napi:build`');
|
|
228
|
+
}
|
|
229
|
+
return native.generateHtmlShell({
|
|
230
|
+
title,
|
|
231
|
+
lang: locale,
|
|
232
|
+
cssHrefs,
|
|
233
|
+
bodyHtml: bodyInner,
|
|
234
|
+
bodyAttrs: ['data-vmz-hydrate', 'island-only'],
|
|
235
|
+
});
|
|
240
236
|
}
|
|
241
237
|
/**
|
|
242
238
|
* Integrated DocumentMount: reuse host SiteHeader / SiteFooter .vmz templates.
|
package/dist/document-cmd.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* `vmz document` / `vmz docs` CLI .
|
|
4
4
|
*/
|
|
5
|
-
import fs from 'node:fs';
|
|
6
5
|
import path from 'node:path';
|
|
7
6
|
import { buildDocuments } from './document-build.js';
|
|
8
7
|
import { checkDocuments, manifestHasErrors } from './document-check.js';
|
|
@@ -12,6 +11,7 @@ import { resolveMarkdownEngine } from './document-markdown.js';
|
|
|
12
11
|
import { createWorkspace } from './index.js';
|
|
13
12
|
import { log } from './log.js';
|
|
14
13
|
import { parseArgs } from './cli.js';
|
|
14
|
+
import { emitPrettyJson } from './pretty-json.js';
|
|
15
15
|
function printDocumentHelp() {
|
|
16
16
|
console.log(`vmz document — project /documents domain
|
|
17
17
|
|
|
@@ -95,14 +95,7 @@ async function cmdDocumentCheck(args) {
|
|
|
95
95
|
}
|
|
96
96
|
const jsonOut = args.json;
|
|
97
97
|
if (jsonOut) {
|
|
98
|
-
|
|
99
|
-
if (typeof jsonOut === 'string') {
|
|
100
|
-
fs.writeFileSync(jsonOut, text + '\n', 'utf8');
|
|
101
|
-
log.info(`wrote ${jsonOut}`);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
console.log(text);
|
|
105
|
-
}
|
|
98
|
+
emitPrettyJson(jsonOut, manifest, { logWrote: (p) => log.info(`wrote ${p}`) });
|
|
106
99
|
}
|
|
107
100
|
else {
|
|
108
101
|
for (const d of manifest.diagnostics) {
|
|
@@ -8,6 +8,7 @@ import path from 'node:path';
|
|
|
8
8
|
import { buildDocuments } from './document-build.js';
|
|
9
9
|
import { resolveDocumentsRoot } from './document-check.js';
|
|
10
10
|
import { log } from './log.js';
|
|
11
|
+
import { requireNativeAddon } from './native-addon.js';
|
|
11
12
|
/**
|
|
12
13
|
* @param {string} projectRoot
|
|
13
14
|
*/
|
|
@@ -66,23 +67,15 @@ function writeMountRootRedirects(manifest, outDir) {
|
|
|
66
67
|
const relDir = base.replace(/^\//, '');
|
|
67
68
|
const abs = path.join(outDir, relDir, 'index.html');
|
|
68
69
|
fs.mkdirSync(path.dirname(abs), { recursive: true });
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<p><a href="${escapeAttr(target)}">Continue to ${escapeAttr(defaultLocale)} docs</a></p>
|
|
79
|
-
</body>
|
|
80
|
-
</html>
|
|
81
|
-
`;
|
|
70
|
+
const native = requireNativeAddon();
|
|
71
|
+
if (typeof native.generateRedirectHtml !== 'function') {
|
|
72
|
+
throw new Error('vmz native addon missing generateRedirectHtml — rebuild with `pnpm napi:build`');
|
|
73
|
+
}
|
|
74
|
+
const html = native.generateRedirectHtml({
|
|
75
|
+
lang: defaultLocale,
|
|
76
|
+
target,
|
|
77
|
+
title: 'Documents',
|
|
78
|
+
});
|
|
82
79
|
fs.writeFileSync(abs, html, 'utf8');
|
|
83
80
|
}
|
|
84
81
|
}
|
|
85
|
-
/** @param {string} s */
|
|
86
|
-
function escapeAttr(s) {
|
|
87
|
-
return String(s).replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<');
|
|
88
|
-
}
|
|
@@ -6,14 +6,10 @@
|
|
|
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';
|
|
9
10
|
export const EMBEDDED_RESOURCE_INDEX_SCHEMA = 'vmz.embedded.resource_index.v0';
|
|
10
11
|
/** Paths that must never enter the embedded baseline closure. */
|
|
11
|
-
const SKIP_NAMES = new Set([
|
|
12
|
-
'vmz-serve-host.mjs',
|
|
13
|
-
'vmz-serve-host.js',
|
|
14
|
-
'node_modules',
|
|
15
|
-
'.git',
|
|
16
|
-
]);
|
|
12
|
+
const SKIP_NAMES = new Set(['vmz-serve-host.mjs', 'vmz-serve-host.js', 'node_modules', '.git']);
|
|
17
13
|
/**
|
|
18
14
|
* Walk outDir and build path → digest → relative blob path map.
|
|
19
15
|
* Copies files into `dist/_vmz/embedded-baseline/` (whole release, no file-level mix).
|
|
@@ -60,7 +56,7 @@ export function emitEmbeddedPackaging(outDir, opts = {}) {
|
|
|
60
56
|
};
|
|
61
57
|
index.indexDigest = sha256Hex(canonicalJson({ ...index, indexDigest: undefined }));
|
|
62
58
|
const indexPath = path.join(vmzDir, 'embedded-resource-index.json');
|
|
63
|
-
|
|
59
|
+
writePrettyJsonFile(indexPath, index);
|
|
64
60
|
// Optional include_bytes entry point for Rust packaging adapters
|
|
65
61
|
const rsPath = path.join(vmzDir, 'embedded_site.rs');
|
|
66
62
|
fs.writeFileSync(rsPath, `// @generated by vmz — rust-embedded packaging adapter (do not edit)
|
package/dist/index.d.ts
CHANGED
|
@@ -79,6 +79,15 @@ export declare function queryApplicationProtocolCatalog(): any;
|
|
|
79
79
|
export declare function checkApplicationsJson(hostRoot: any, packageRoots: any): any;
|
|
80
80
|
export declare function queryTargetProtocolCatalog(): any;
|
|
81
81
|
export declare function checkMiniprogramTargetContractJson(rootPath: any): any;
|
|
82
|
+
export declare function lowerMiniprogramStaticSliceJson(rootPath: any): any;
|
|
83
|
+
export declare function lowerMiniprogramBindingEventJson(rootPath: any): any;
|
|
84
|
+
export declare function lowerMiniprogramStructureJson(rootPath: any): any;
|
|
85
|
+
export declare function lowerMiniprogramRouteServerStyleJson(rootPath: any): any;
|
|
86
|
+
export declare function lowerMiniprogramToolingDeployJson(rootPath: any): any;
|
|
87
|
+
export declare function lowerMiniprogramWechatPackagingJson(rootPath: any): any;
|
|
88
|
+
export declare function lowerMiniprogramMultiAdapterJson(rootPath: any): any;
|
|
89
|
+
import { createMiniHost } from './mini-host.js';
|
|
90
|
+
export { createMiniHost };
|
|
82
91
|
export declare function queryProfileProtocolCatalog(): any;
|
|
83
92
|
export declare function checkHostProfileProtocolJson(rootPath: any): any;
|
|
84
93
|
export declare function checkProfileSolverJson(rootPath: any): any;
|
|
@@ -153,7 +162,8 @@ export { CDN_POLICY_MANIFEST_SCHEMA, CDN_ADAPTER_PROJECTION_SCHEMA, CACHE_HTML,
|
|
|
153
162
|
export { SITE_DELIVERY_CONTRACT_SCHEMA, SITE_DELIVERY_RESOLUTION_SCHEMA, defineSite, normalizeSiteDelivery, normalizeSourceProbe, resolveSiteRelease, probeReleaseDirectory, emitSiteDelivery, } from './site-delivery.js';
|
|
154
163
|
export { EMBEDDED_RESOURCE_INDEX_SCHEMA, emitEmbeddedPackaging, } from './embedded-packaging.js';
|
|
155
164
|
export { SERVER_LANG_IDS, SERVER_LANG_ALIASES, SERVER_LANGUAGE_BACKENDS, resolveServerLanguage, assertLangRuntimePair, } from './server-language-backend.js';
|
|
156
|
-
export {
|
|
165
|
+
export { WECHAT_PACKAGING_SCHEMA, WECHAT_PACKAGING_REL, wechatPackagingFromDelivery, materializeWechatPackaging, } from './wechat-packaging.js';
|
|
166
|
+
export { DELIVERY_PROFILE_AUTHORING_SCHEMA, BUILD_PROFILE_SELECTION_SCHEMA, ASSEMBLIES, SERVER_RUNTIMES, BUILTIN_PROFILES, pickSiteAuthoring, pickDeliveryPackaging, normalizeDeliveryAuthoring, selectBuildProfile, semanticIdsForAssembly, } from './delivery-profile.js';
|
|
157
167
|
export { PACK_MANIFEST_SCHEMA, packFromDeploymentIr, ensureRuntimeCompanions } from './pack.js';
|
|
158
168
|
export { SERVER_ARTIFACT_SCHEMA, HTTP_CONTRACT_SCHEMA, SERVER_RUNTIME_ADAPTER_SCHEMA, emitServerArtifact, projectServerRuntimeAdapter, } from './server-artifact.js';
|
|
159
169
|
export { BUILD_PROOF_SCHEMA, ASSEMBLE_MANIFEST_SCHEMA, assembleDelivery, emitBuildProof, } from './build-assemble.js';
|
|
@@ -231,6 +241,14 @@ declare const _default: {
|
|
|
231
241
|
checkApplicationsJson: typeof checkApplicationsJson;
|
|
232
242
|
queryTargetProtocolCatalog: typeof queryTargetProtocolCatalog;
|
|
233
243
|
checkMiniprogramTargetContractJson: typeof checkMiniprogramTargetContractJson;
|
|
244
|
+
lowerMiniprogramStaticSliceJson: typeof lowerMiniprogramStaticSliceJson;
|
|
245
|
+
lowerMiniprogramBindingEventJson: typeof lowerMiniprogramBindingEventJson;
|
|
246
|
+
lowerMiniprogramStructureJson: typeof lowerMiniprogramStructureJson;
|
|
247
|
+
lowerMiniprogramRouteServerStyleJson: typeof lowerMiniprogramRouteServerStyleJson;
|
|
248
|
+
lowerMiniprogramToolingDeployJson: typeof lowerMiniprogramToolingDeployJson;
|
|
249
|
+
lowerMiniprogramWechatPackagingJson: typeof lowerMiniprogramWechatPackagingJson;
|
|
250
|
+
lowerMiniprogramMultiAdapterJson: typeof lowerMiniprogramMultiAdapterJson;
|
|
251
|
+
createMiniHost: typeof createMiniHost;
|
|
234
252
|
queryProfileProtocolCatalog: typeof queryProfileProtocolCatalog;
|
|
235
253
|
checkHostProfileProtocolJson: typeof checkHostProfileProtocolJson;
|
|
236
254
|
checkProfileSolverJson: typeof checkProfileSolverJson;
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { createRequire } from 'node:module';
|
|
|
7
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';
|
|
10
11
|
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';
|
|
11
12
|
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';
|
|
12
13
|
const require = createRequire(import.meta.url);
|
|
@@ -158,7 +159,7 @@ export function createWorkspace(options) {
|
|
|
158
159
|
const native = loadNative();
|
|
159
160
|
const protocol = options.protocol ?? expectedProtocol();
|
|
160
161
|
const runtimeDist = options.runtimeDist ?? resolveCoreRuntimeDist() ?? undefined;
|
|
161
|
-
|
|
162
|
+
const ws = native.JsWorkspace.create({
|
|
162
163
|
root: options.root,
|
|
163
164
|
outDir: options.outDir,
|
|
164
165
|
runtimeDist,
|
|
@@ -169,6 +170,25 @@ export function createWorkspace(options) {
|
|
|
169
170
|
pluginProtocol: protocol.pluginProtocol,
|
|
170
171
|
},
|
|
171
172
|
});
|
|
173
|
+
const pack = ws.lowerMiniprogramWechatPackaging.bind(ws);
|
|
174
|
+
const wrappedPack = () => {
|
|
175
|
+
materializeWechatPackaging(options.root);
|
|
176
|
+
return pack();
|
|
177
|
+
};
|
|
178
|
+
try {
|
|
179
|
+
ws.lowerMiniprogramWechatPackaging = wrappedPack;
|
|
180
|
+
return ws;
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return new Proxy(ws, {
|
|
184
|
+
get(target, prop, receiver) {
|
|
185
|
+
if (prop === 'lowerMiniprogramWechatPackaging')
|
|
186
|
+
return wrappedPack;
|
|
187
|
+
const value = Reflect.get(target, prop, receiver);
|
|
188
|
+
return typeof value === 'function' ? value.bind(target) : value;
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
}
|
|
172
192
|
}
|
|
173
193
|
/**
|
|
174
194
|
* frozen application composition protocol catalog.
|
|
@@ -196,6 +216,37 @@ export function checkMiniprogramTargetContractJson(rootPath) {
|
|
|
196
216
|
const native = loadNative();
|
|
197
217
|
return native.checkMiniprogramTargetContractJson(rootPath);
|
|
198
218
|
}
|
|
219
|
+
export function lowerMiniprogramStaticSliceJson(rootPath) {
|
|
220
|
+
const native = loadNative();
|
|
221
|
+
return native.lowerMiniprogramStaticSliceJson(rootPath);
|
|
222
|
+
}
|
|
223
|
+
export function lowerMiniprogramBindingEventJson(rootPath) {
|
|
224
|
+
const native = loadNative();
|
|
225
|
+
return native.lowerMiniprogramBindingEventJson(rootPath);
|
|
226
|
+
}
|
|
227
|
+
export function lowerMiniprogramStructureJson(rootPath) {
|
|
228
|
+
const native = loadNative();
|
|
229
|
+
return native.lowerMiniprogramStructureJson(rootPath);
|
|
230
|
+
}
|
|
231
|
+
export function lowerMiniprogramRouteServerStyleJson(rootPath) {
|
|
232
|
+
const native = loadNative();
|
|
233
|
+
return native.lowerMiniprogramRouteServerStyleJson(rootPath);
|
|
234
|
+
}
|
|
235
|
+
export function lowerMiniprogramToolingDeployJson(rootPath) {
|
|
236
|
+
const native = loadNative();
|
|
237
|
+
return native.lowerMiniprogramToolingDeployJson(rootPath);
|
|
238
|
+
}
|
|
239
|
+
export function lowerMiniprogramWechatPackagingJson(rootPath) {
|
|
240
|
+
const native = loadNative();
|
|
241
|
+
materializeWechatPackaging(rootPath);
|
|
242
|
+
return native.lowerMiniprogramWechatPackagingJson(rootPath);
|
|
243
|
+
}
|
|
244
|
+
export function lowerMiniprogramMultiAdapterJson(rootPath) {
|
|
245
|
+
const native = loadNative();
|
|
246
|
+
return native.lowerMiniprogramMultiAdapterJson(rootPath);
|
|
247
|
+
}
|
|
248
|
+
import { createMiniHost } from './mini-host.js';
|
|
249
|
+
export { createMiniHost };
|
|
199
250
|
export function queryProfileProtocolCatalog() {
|
|
200
251
|
const native = loadNative();
|
|
201
252
|
return native.queryProfileProtocolCatalog();
|
|
@@ -335,7 +386,8 @@ export { CDN_POLICY_MANIFEST_SCHEMA, CDN_ADAPTER_PROJECTION_SCHEMA, CACHE_HTML,
|
|
|
335
386
|
export { SITE_DELIVERY_CONTRACT_SCHEMA, SITE_DELIVERY_RESOLUTION_SCHEMA, defineSite, normalizeSiteDelivery, normalizeSourceProbe, resolveSiteRelease, probeReleaseDirectory, emitSiteDelivery, } from './site-delivery.js';
|
|
336
387
|
export { EMBEDDED_RESOURCE_INDEX_SCHEMA, emitEmbeddedPackaging, } from './embedded-packaging.js';
|
|
337
388
|
export { SERVER_LANG_IDS, SERVER_LANG_ALIASES, SERVER_LANGUAGE_BACKENDS, resolveServerLanguage, assertLangRuntimePair, } from './server-language-backend.js';
|
|
338
|
-
export {
|
|
389
|
+
export { WECHAT_PACKAGING_SCHEMA, WECHAT_PACKAGING_REL, wechatPackagingFromDelivery, materializeWechatPackaging, } from './wechat-packaging.js';
|
|
390
|
+
export { DELIVERY_PROFILE_AUTHORING_SCHEMA, BUILD_PROFILE_SELECTION_SCHEMA, ASSEMBLIES, SERVER_RUNTIMES, BUILTIN_PROFILES, pickSiteAuthoring, pickDeliveryPackaging, normalizeDeliveryAuthoring, selectBuildProfile, semanticIdsForAssembly, } from './delivery-profile.js';
|
|
339
391
|
export { PACK_MANIFEST_SCHEMA, packFromDeploymentIr, ensureRuntimeCompanions } from './pack.js';
|
|
340
392
|
export { SERVER_ARTIFACT_SCHEMA, HTTP_CONTRACT_SCHEMA, SERVER_RUNTIME_ADAPTER_SCHEMA, emitServerArtifact, projectServerRuntimeAdapter, } from './server-artifact.js';
|
|
341
393
|
export { BUILD_PROOF_SCHEMA, ASSEMBLE_MANIFEST_SCHEMA, assembleDelivery, emitBuildProof, } from './build-assemble.js';
|
|
@@ -413,6 +465,14 @@ export default {
|
|
|
413
465
|
checkApplicationsJson,
|
|
414
466
|
queryTargetProtocolCatalog,
|
|
415
467
|
checkMiniprogramTargetContractJson,
|
|
468
|
+
lowerMiniprogramStaticSliceJson,
|
|
469
|
+
lowerMiniprogramBindingEventJson,
|
|
470
|
+
lowerMiniprogramStructureJson,
|
|
471
|
+
lowerMiniprogramRouteServerStyleJson,
|
|
472
|
+
lowerMiniprogramToolingDeployJson,
|
|
473
|
+
lowerMiniprogramWechatPackagingJson,
|
|
474
|
+
lowerMiniprogramMultiAdapterJson,
|
|
475
|
+
createMiniHost,
|
|
416
476
|
queryProfileProtocolCatalog,
|
|
417
477
|
checkHostProfileProtocolJson,
|
|
418
478
|
checkProfileSolverJson,
|
package/dist/locale-check.js
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
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';
|
|
10
12
|
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';
|
|
11
13
|
/**
|
|
12
14
|
* @param {string} literal
|
|
@@ -668,25 +670,19 @@ export function emitLocaleTypedModules(report, outDir) {
|
|
|
668
670
|
fs.mkdirSync(outDir, { recursive: true });
|
|
669
671
|
/** @type {string[]} */
|
|
670
672
|
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
|
+
}
|
|
671
677
|
for (const mod of report.typedModules || []) {
|
|
672
|
-
const
|
|
673
|
-
|
|
674
|
-
|
|
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('');
|
|
678
|
+
const exports = (mod.exports || []).map((exp) => ({
|
|
679
|
+
exportName: exp.exportName,
|
|
680
|
+
params: (exp.params || []).map((p) => ({ name: p.name, kind: p.kind || 'string' })),
|
|
681
|
+
}));
|
|
682
|
+
const text = native.generateLocaleTypedModule(mod.module, exports);
|
|
687
683
|
const file = path.join(outDir, `${mod.catalogId}.d.ts`);
|
|
688
684
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
689
|
-
fs.writeFileSync(file,
|
|
685
|
+
fs.writeFileSync(file, text, 'utf8');
|
|
690
686
|
written.push(file);
|
|
691
687
|
}
|
|
692
688
|
const index = {
|
|
@@ -694,7 +690,7 @@ export function emitLocaleTypedModules(report, outDir) {
|
|
|
694
690
|
modules: (report.typedModules || []).map((m) => m.module),
|
|
695
691
|
outDir,
|
|
696
692
|
};
|
|
697
|
-
|
|
693
|
+
writePrettyJsonFile(path.join(outDir, 'index.json'), index);
|
|
698
694
|
return written;
|
|
699
695
|
}
|
|
700
696
|
/**
|
|
@@ -724,56 +720,30 @@ export function emitLocaleRuntimeModules(projectRoot, distDir) {
|
|
|
724
720
|
const localesOut = path.join(distDir, 'locales');
|
|
725
721
|
fs.mkdirSync(localesOut, { recursive: true });
|
|
726
722
|
for (const mod of report.typedModules || []) {
|
|
727
|
-
const
|
|
728
|
-
`/** Generated ${mod.module} — runtime LocalizedText (defaultLocale=${defaultLocale}) */`,
|
|
729
|
-
`const __vmzDefaultLocale = ${JSON.stringify(defaultLocale)};`,
|
|
730
|
-
`function __vmzLocaleId() {`,
|
|
731
|
-
` try {`,
|
|
732
|
-
` const stored = localStorage.getItem("vmz.locale");`,
|
|
733
|
-
` if (stored) return stored;`,
|
|
734
|
-
` } catch {}`,
|
|
735
|
-
` if (typeof document !== "undefined") {`,
|
|
736
|
-
` const d = document.documentElement?.getAttribute("data-locale");`,
|
|
737
|
-
` if (d) return d;`,
|
|
738
|
-
` const lang = document.documentElement?.lang;`,
|
|
739
|
-
` if (lang === "en" || lang === "en-US" || lang === "en-us") return "en-us";`,
|
|
740
|
-
` if (lang === "zh" || lang === "zh-CN" || lang === "zh-Hans" || lang === "zh-hans") return "zh-hans";`,
|
|
741
|
-
` }`,
|
|
742
|
-
` return __vmzDefaultLocale;`,
|
|
743
|
-
`}`,
|
|
744
|
-
`function __vmzFormat(template, args) {`,
|
|
745
|
-
` if (!args) return String(template ?? "");`,
|
|
746
|
-
` return String(template ?? "").replace(/\\{(\\w+)(?:,\\s*\\w+)?\\}/g, (m, name) =>`,
|
|
747
|
-
` Object.prototype.hasOwnProperty.call(args, name) ? String(args[name]) : m`,
|
|
748
|
-
` );`,
|
|
749
|
-
`}`,
|
|
750
|
-
`function __vmzPick(variants, args) {`,
|
|
751
|
-
` const id = __vmzLocaleId();`,
|
|
752
|
-
` const template = variants[id] ?? variants[__vmzDefaultLocale] ?? "";`,
|
|
753
|
-
` return __vmzFormat(template, args);`,
|
|
754
|
-
`}`,
|
|
755
|
-
'',
|
|
756
|
-
];
|
|
723
|
+
const exports = [];
|
|
757
724
|
for (const exp of mod.exports || []) {
|
|
758
725
|
const node = byId.get(exp.messageId);
|
|
759
|
-
|
|
726
|
+
/** @type {string[][]} */
|
|
727
|
+
const variants = [];
|
|
760
728
|
if (node?.variants) {
|
|
761
729
|
for (const [loc, v] of Object.entries(node.variants)) {
|
|
762
|
-
variants[loc
|
|
730
|
+
variants.push([loc, v.template]);
|
|
763
731
|
}
|
|
764
732
|
}
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
733
|
+
exports.push({
|
|
734
|
+
exportName: exp.exportName,
|
|
735
|
+
variants,
|
|
736
|
+
hasParams: (exp.params || []).length > 0,
|
|
737
|
+
});
|
|
738
|
+
}
|
|
739
|
+
const native = requireNativeAddon();
|
|
740
|
+
if (typeof native.generateLocaleRuntimeModule !== 'function') {
|
|
741
|
+
throw new Error('vmz native addon missing generateLocaleRuntimeModule — rebuild with `pnpm napi:build`');
|
|
772
742
|
}
|
|
773
|
-
|
|
743
|
+
const code = native.generateLocaleRuntimeModule(defaultLocale, exports);
|
|
774
744
|
const file = path.join(localesOut, `${mod.catalogId}.js`);
|
|
775
745
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
776
|
-
fs.writeFileSync(file,
|
|
746
|
+
fs.writeFileSync(file, code, 'utf8');
|
|
777
747
|
written.push(file);
|
|
778
748
|
}
|
|
779
749
|
rewriteLocaleImportsInDist(distDir);
|
package/dist/locale-cmd.js
CHANGED
|
@@ -12,6 +12,7 @@ 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';
|
|
15
16
|
function printLocaleHelp() {
|
|
16
17
|
console.log(`vmz locale — /locales application i18n (–)
|
|
17
18
|
|
|
@@ -91,14 +92,7 @@ function cmdLocaleCheck(args) {
|
|
|
91
92
|
const report = checkLocales({ projectRoot, strict: Boolean(args.strict) });
|
|
92
93
|
const jsonOut = args.json;
|
|
93
94
|
if (jsonOut) {
|
|
94
|
-
|
|
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
|
-
}
|
|
95
|
+
emitPrettyJson(jsonOut, report, { logWrote: (p) => log.info(`wrote ${p}`) });
|
|
102
96
|
}
|
|
103
97
|
else {
|
|
104
98
|
for (const d of report.diagnostics) {
|
|
@@ -151,7 +145,7 @@ function cmdLocaleRename(args) {
|
|
|
151
145
|
const report = checkLocales({ projectRoot, checkUnused: false });
|
|
152
146
|
const plan = planLocaleRename(report, fromId, toId);
|
|
153
147
|
if (args.json) {
|
|
154
|
-
|
|
148
|
+
emitPrettyJson(args.json, plan);
|
|
155
149
|
}
|
|
156
150
|
else if (plan.status !== 'ready') {
|
|
157
151
|
log.error(plan.error || 'rename failed');
|
|
@@ -181,14 +175,7 @@ function cmdLocaleRuntimeCheck(args) {
|
|
|
181
175
|
});
|
|
182
176
|
const { session: _session, ...jsonReport } = report;
|
|
183
177
|
if (args.json) {
|
|
184
|
-
|
|
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
|
-
}
|
|
178
|
+
emitJson(args, jsonReport);
|
|
192
179
|
}
|
|
193
180
|
else {
|
|
194
181
|
for (const d of report.diagnostics) {
|
|
@@ -231,14 +218,7 @@ function cmdLocaleRouterCheck(args) {
|
|
|
231
218
|
origin: routesFile.origin || 'https://example.test',
|
|
232
219
|
});
|
|
233
220
|
if (args.json) {
|
|
234
|
-
|
|
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
|
-
}
|
|
221
|
+
emitJson(args, report);
|
|
242
222
|
}
|
|
243
223
|
else {
|
|
244
224
|
for (const d of report.diagnostics) {
|
|
@@ -268,14 +248,7 @@ function cmdLocaleDeliveryCheck(args) {
|
|
|
268
248
|
planVersion: 'plan.v0',
|
|
269
249
|
});
|
|
270
250
|
if (args.json) {
|
|
271
|
-
|
|
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
|
-
}
|
|
251
|
+
emitJson(args, report);
|
|
279
252
|
}
|
|
280
253
|
else {
|
|
281
254
|
for (const d of report.diagnostics) {
|
|
@@ -290,14 +263,9 @@ function cmdLocaleDeliveryCheck(args) {
|
|
|
290
263
|
return report.status === 'ready' ? 0 : 1;
|
|
291
264
|
}
|
|
292
265
|
function emitJson(args, report) {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
log.info(`wrote ${args.json}`);
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
console.log(text);
|
|
300
|
-
}
|
|
266
|
+
emitPrettyJson(args.json, report, {
|
|
267
|
+
logWrote: (p) => log.info(`wrote ${p}`),
|
|
268
|
+
});
|
|
301
269
|
}
|
|
302
270
|
function cmdLocaleExplain(args) {
|
|
303
271
|
const messageId = typeof args._[0] === 'string' ? args._[0] : '';
|
|
@@ -401,7 +369,7 @@ function cmdLocalePseudo(args) {
|
|
|
401
369
|
const outDir = (typeof args.out === 'string' && args.out) || path.join(projectRoot, 'dist', 'locales-pseudo');
|
|
402
370
|
fs.mkdirSync(outDir, { recursive: true });
|
|
403
371
|
const outFile = path.join(outDir, `${report.pseudoLocale}.json`);
|
|
404
|
-
fs.writeFileSync(outFile, `${
|
|
372
|
+
fs.writeFileSync(outFile, `${generatePrettyJson(report.catalog)}\n`, 'utf8');
|
|
405
373
|
log.info(`locale pseudo: source=${sourceLocale} keys=${Object.keys(report.catalog).length} out=${outFile}`);
|
|
406
374
|
}
|
|
407
375
|
return report.status === 'ready' ? 0 : 1;
|
|
@@ -26,7 +26,10 @@ export declare function emitLocaleRouteRealization(projectRoot: any, distDir: an
|
|
|
26
26
|
defaultLocale: any;
|
|
27
27
|
};
|
|
28
28
|
origin: string;
|
|
29
|
-
routes:
|
|
29
|
+
routes: {
|
|
30
|
+
routeId: string;
|
|
31
|
+
path: string;
|
|
32
|
+
}[];
|
|
30
33
|
realizations: any[];
|
|
31
34
|
pageMetas: any[];
|
|
32
35
|
};
|