@vmz/vmz 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/build-assemble.js +18 -7
  2. package/dist/cdn-policy.js +5 -4
  3. package/dist/cli.js +106 -38
  4. package/dist/content-addressed-assets.d.ts +23 -2
  5. package/dist/content-addressed-assets.js +178 -32
  6. package/dist/delivery-profile.d.ts +30 -2
  7. package/dist/delivery-profile.js +139 -5
  8. package/dist/dev-session.d.ts +1 -0
  9. package/dist/dev-session.js +269 -65
  10. package/dist/dev-watch-roots.d.ts +80 -0
  11. package/dist/dev-watch-roots.js +245 -0
  12. package/dist/document-build.d.ts +2 -1
  13. package/dist/document-build.js +104 -82
  14. package/dist/document-cmd.js +2 -9
  15. package/dist/document-enrich.d.ts +2 -1
  16. package/dist/document-enrich.js +15 -4
  17. package/dist/document-integrate.js +29 -21
  18. package/dist/document-layout-render.d.ts +20 -0
  19. package/dist/document-layout-render.js +87 -0
  20. package/dist/document-routing-config.d.ts +13 -0
  21. package/dist/document-routing-config.js +40 -0
  22. package/dist/embedded-packaging.js +2 -1
  23. package/dist/index.d.ts +18 -2
  24. package/dist/index.js +63 -4
  25. package/dist/locale-check.js +28 -61
  26. package/dist/locale-cmd.js +10 -42
  27. package/dist/locale-route-emit.d.ts +4 -1
  28. package/dist/locale-route-emit.js +7 -32
  29. package/dist/locale-router.js +26 -8
  30. package/dist/native-addon.d.ts +9 -0
  31. package/dist/native-addon.js +84 -0
  32. package/dist/pack.js +3 -2
  33. package/dist/pretty-json.d.ts +19 -0
  34. package/dist/pretty-json.js +43 -0
  35. package/dist/production-observability.js +3 -2
  36. package/dist/production-test-pack.js +4 -3
  37. package/dist/public-static-assets.d.ts +24 -0
  38. package/dist/public-static-assets.js +140 -0
  39. package/dist/release-pack.js +5 -18
  40. package/dist/route-path.d.ts +35 -0
  41. package/dist/route-path.js +77 -0
  42. package/dist/server-artifact.js +4 -3
  43. package/dist/site-delivery.js +4 -3
  44. package/dist/site-favicon.d.ts +31 -0
  45. package/dist/site-favicon.js +140 -0
  46. package/dist/static-emit.d.ts +21 -0
  47. package/dist/static-emit.js +134 -97
  48. package/dist/test-cmd.js +2 -1
  49. package/dist/wechat-packaging.d.ts +22 -0
  50. package/dist/wechat-packaging.js +59 -0
  51. package/package.json +12 -12
@@ -7,7 +7,10 @@ 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-routing-config.js';
11
+ import { pageHtmlRel } from './document-enrich.js';
10
12
  import { log } from './log.js';
13
+ import { requireNativeAddon } from './native-addon.js';
11
14
  /**
12
15
  * @param {string} projectRoot
13
16
  */
@@ -30,6 +33,7 @@ export async function buildIntegratedDocuments(opts) {
30
33
  const result = await buildDocuments({
31
34
  projectRoot,
32
35
  outDir,
36
+ appDistDir: outDir,
33
37
  strict: Boolean(opts.strict),
34
38
  });
35
39
  if (!result.ok) {
@@ -39,7 +43,7 @@ export async function buildIntegratedDocuments(opts) {
39
43
  }
40
44
  return { ok: false, error: 'document diagnostics', pages: 0 };
41
45
  }
42
- writeMountRootRedirects(result.manifest, outDir);
46
+ writeMountRootRedirects(result.manifest, outDir, projectRoot);
43
47
  log.info(`document mount: pages=${result.pages.length} → ${path.relative(process.cwd(), outDir) || '.'}`);
44
48
  return { ok: true, pages: result.pages.length };
45
49
  }
@@ -50,39 +54,43 @@ export async function buildIntegratedDocuments(opts) {
50
54
  }
51
55
  }
52
56
  /**
53
- * Emit `{routeBase}/index.html` → defaultLocale landing (for /d/ and /docs/).
57
+ * Emit `{routeBase}/index.html` for integrated mounts.
58
+ * `routing.strategy: none` → copy default-locale docs index (LocaleId is Host state).
59
+ * prefix strategy → redirect HTML to `{routeBase}/{defaultLocale}/`.
54
60
  * @param {import('./document-schema.js').DocumentManifest} manifest
55
61
  * @param {string} outDir
62
+ * @param {string} projectRoot
56
63
  */
57
- function writeMountRootRedirects(manifest, outDir) {
64
+ function writeMountRootRedirects(manifest, outDir, projectRoot) {
58
65
  const defaultLocale = manifest.defaultLocale || manifest.locales?.[0];
59
66
  if (!defaultLocale)
60
67
  return;
68
+ const routing = loadLocalesRouting(projectRoot) || { strategy: 'prefix' };
61
69
  for (const mount of manifest.mounts || []) {
62
70
  if (!mount?.routeBase || mount.routeBase === '/')
63
71
  continue;
64
72
  const base = String(mount.routeBase).replace(/\/$/, '');
65
- const target = `${base}/${defaultLocale}/`;
66
73
  const relDir = base.replace(/^\//, '');
67
74
  const abs = path.join(outDir, relDir, 'index.html');
68
75
  fs.mkdirSync(path.dirname(abs), { recursive: true });
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
- `;
76
+ if (routing.strategy === 'none' || routing.strategy === 'domain') {
77
+ const srcRel = pageHtmlRel(base, defaultLocale, 'index');
78
+ const srcAbs = path.join(outDir, srcRel);
79
+ if (fs.existsSync(srcAbs)) {
80
+ fs.copyFileSync(srcAbs, abs);
81
+ }
82
+ continue;
83
+ }
84
+ const target = `${base}/${defaultLocale}/`;
85
+ const native = requireNativeAddon();
86
+ if (typeof native.generateRedirectHtml !== 'function') {
87
+ throw new Error('vmz native addon missing generateRedirectHtml — rebuild with `pnpm napi:build`');
88
+ }
89
+ const html = native.generateRedirectHtml({
90
+ lang: defaultLocale,
91
+ target,
92
+ title: 'Documents',
93
+ });
82
94
  fs.writeFileSync(abs, html, 'utf8');
83
95
  }
84
96
  }
85
- /** @param {string} s */
86
- function escapeAttr(s) {
87
- return String(s).replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;');
88
- }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Integrated DocumentMount — compile host chrome via DocumentLayout + createRenderHost.
3
+ * Replaces the removed regex template lowering in document-host-chrome.ts.
4
+ */
5
+ /** @param {string} distDir */
6
+ export declare function resolveDocumentLayoutChunkId(distDir: any): string;
7
+ /**
8
+ * @param {string} distDir
9
+ */
10
+ export declare function assertIntegratedDistReady(distDir: any): string;
11
+ /**
12
+ * @param {string} html
13
+ */
14
+ export declare function assertCompiledShellHtml(html: any): void;
15
+ /**
16
+ * @param {string} distDir
17
+ * @param {string} localeId
18
+ * @param {string} slotHtml
19
+ */
20
+ export declare function renderCompiledDocumentLayout(distDir: any, localeId: any, slotHtml: any): Promise<any>;
@@ -0,0 +1,87 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Integrated DocumentMount — compile host chrome via DocumentLayout + createRenderHost.
4
+ * Replaces the removed regex template lowering in document-host-chrome.ts.
5
+ */
6
+ import fs from 'node:fs';
7
+ import path from 'node:path';
8
+ import { pathToFileURL } from 'node:url';
9
+ import { createRenderHost } from '@vmz/core/render-host';
10
+ /** @param {string} distDir */
11
+ export function resolveDocumentLayoutChunkId(distDir) {
12
+ for (const chunkId of ['layouts/DocumentLayout', 'components/DocumentLayout']) {
13
+ if (fs.existsSync(path.join(distDir, `${chunkId}.client.js`)))
14
+ return chunkId;
15
+ }
16
+ return null;
17
+ }
18
+ /**
19
+ * @param {string} distDir
20
+ */
21
+ export function assertIntegratedDistReady(distDir) {
22
+ const dom = path.join(distDir, 'vmz-dom.js');
23
+ if (!fs.existsSync(dom)) {
24
+ throw new Error('integrated document mount requires vmz build output (vmz-dom.js in app dist). Run `vmz build` before document emit.');
25
+ }
26
+ const chunkId = resolveDocumentLayoutChunkId(distDir);
27
+ if (!chunkId) {
28
+ throw new Error('integrated document mount requires compiled DocumentLayout (add src/layouts/DocumentLayout.vmz and rebuild)');
29
+ }
30
+ return chunkId;
31
+ }
32
+ /**
33
+ * @param {string} html
34
+ */
35
+ export function assertCompiledShellHtml(html) {
36
+ const header = html.match(/<header[^>]*data-vmz-fixture="site-header"[\s\S]*?<\/header>/i)?.[0] ?? '';
37
+ const footer = html.match(/<footer[^>]*data-vmz-fixture="site-footer"[\s\S]*?<\/footer>/i)?.[0] ?? '';
38
+ for (const part of [header, footer]) {
39
+ const leak = part.match(/\{[A-Za-z][A-Za-z0-9]*\}/);
40
+ if (leak) {
41
+ throw new Error(`document layout SSR leaked binding placeholder ${leak[0]}`);
42
+ }
43
+ if (/<(?:Link|Button|Icon)\b/.test(part)) {
44
+ throw new Error('document layout SSR leaked uncompiled VMZ component tag in chrome');
45
+ }
46
+ }
47
+ if (!header || !footer) {
48
+ throw new Error('document layout SSR missing compiled SiteHeader/SiteFooter fixtures');
49
+ }
50
+ }
51
+ /**
52
+ * @param {string} distDir
53
+ * @param {string} chunkId
54
+ */
55
+ async function loadCtor(distDir, chunkId) {
56
+ const href = pathToFileURL(path.join(distDir, `${chunkId}.client.js`)).href;
57
+ const mod = await import(`${href}?t=${Date.now()}`);
58
+ return mod.default;
59
+ }
60
+ /**
61
+ * @param {string} distDir
62
+ * @param {string} localeId
63
+ * @param {string} slotHtml
64
+ */
65
+ export async function renderCompiledDocumentLayout(distDir, localeId, slotHtml) {
66
+ const chunkId = assertIntegratedDistReady(distDir);
67
+ const prevHint = globalThis.__vmzLocaleIdHint;
68
+ globalThis.__vmzLocaleIdHint = localeId;
69
+ try {
70
+ if (typeof globalThis.document !== 'undefined' && globalThis.document?.documentElement) {
71
+ globalThis.document.documentElement.setAttribute('data-locale', localeId);
72
+ globalThis.document.documentElement.setAttribute('lang', localeId);
73
+ }
74
+ const host = await createRenderHost(distDir, { strictDeployment: true, preload: 'none' });
75
+ await host.ensureComponents([chunkId]);
76
+ const Layout = await loadCtor(distDir, chunkId);
77
+ const html = await host.renderToString(Layout, {}, { slotHtml });
78
+ assertCompiledShellHtml(html);
79
+ return html;
80
+ }
81
+ finally {
82
+ if (prevHint === undefined)
83
+ delete globalThis.__vmzLocaleIdHint;
84
+ else
85
+ globalThis.__vmzLocaleIdHint = prevHint;
86
+ }
87
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Project locale routing config for document mount (locales/locales.json5).
3
+ */
4
+ /**
5
+ * @param {string} projectRoot
6
+ * @returns {{ strategy?: string, defaultLocale?: string } | null}
7
+ */
8
+ export declare function loadLocalesRouting(projectRoot: any): any;
9
+ /**
10
+ * @param {string} routeBase
11
+ * @param {string} pageKey
12
+ */
13
+ export declare function docsRouteNone(routeBase: any, pageKey: any): string;
@@ -0,0 +1,40 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Project locale routing config for document mount (locales/locales.json5).
4
+ */
5
+ import fs from 'node:fs';
6
+ import path from 'node:path';
7
+ /**
8
+ * @param {string} projectRoot
9
+ * @returns {{ strategy?: string, defaultLocale?: string } | null}
10
+ */
11
+ export function loadLocalesRouting(projectRoot) {
12
+ const p = path.join(projectRoot, 'locales', 'locales.json5');
13
+ if (!fs.existsSync(p))
14
+ return null;
15
+ try {
16
+ const raw = fs.readFileSync(p, 'utf8');
17
+ let s = raw.replace(/\/\*[\s\S]*?\*\//g, '').replace(/^\s*\/\/.*$/gm, '');
18
+ const m = s.match(/routing\s*:\s*\{([\s\S]*?)\}/);
19
+ if (!m)
20
+ return null;
21
+ let block = `{${m[1]}}`;
22
+ block = block.replace(/([,{]\s*)([A-Za-z_][A-Za-z0-9_]*)\s*:/g, '$1"$2":');
23
+ block = block.replace(/'([^'\\]*(?:\\.[^'\\]*)*)'/g, (_, inner) => JSON.stringify(inner));
24
+ block = block.replace(/,\s*([}\]])/g, '$1');
25
+ return JSON.parse(block);
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ /**
32
+ * @param {string} routeBase
33
+ * @param {string} pageKey
34
+ */
35
+ export function docsRouteNone(routeBase, pageKey) {
36
+ const base = String(routeBase || '/').replace(/\/$/, '') || '';
37
+ const key = pageKey === 'index' ? '' : pageKey.replace(/\\/g, '/');
38
+ const parts = [base.replace(/^\//, ''), key].filter((p) => p !== '');
39
+ return '/' + (parts.length ? parts.join('/') : '');
40
+ }
@@ -6,6 +6,7 @@
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
12
  const SKIP_NAMES = new Set(['vmz-serve-host.mjs', 'vmz-serve-host.js', 'node_modules', '.git']);
@@ -55,7 +56,7 @@ export function emitEmbeddedPackaging(outDir, opts = {}) {
55
56
  };
56
57
  index.indexDigest = sha256Hex(canonicalJson({ ...index, indexDigest: undefined }));
57
58
  const indexPath = path.join(vmzDir, 'embedded-resource-index.json');
58
- fs.writeFileSync(indexPath, `${JSON.stringify(index, null, 2)}\n`, 'utf8');
59
+ writePrettyJsonFile(indexPath, index);
59
60
  // Optional include_bytes entry point for Rust packaging adapters
60
61
  const rsPath = path.join(vmzDir, 'embedded_site.rs');
61
62
  fs.writeFileSync(rsPath, `// @generated by vmz — rust-embedded packaging adapter (do not edit)
package/dist/index.d.ts CHANGED
@@ -53,6 +53,14 @@ 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;
56
64
  /**
57
65
  * @typedef {object} WorkspaceOptions
58
66
  * @property {string} root
@@ -84,6 +92,7 @@ export declare function lowerMiniprogramBindingEventJson(rootPath: any): any;
84
92
  export declare function lowerMiniprogramStructureJson(rootPath: any): any;
85
93
  export declare function lowerMiniprogramRouteServerStyleJson(rootPath: any): any;
86
94
  export declare function lowerMiniprogramToolingDeployJson(rootPath: any): any;
95
+ export declare function lowerMiniprogramWechatPackagingJson(rootPath: any): any;
87
96
  export declare function lowerMiniprogramMultiAdapterJson(rootPath: any): any;
88
97
  import { createMiniHost } from './mini-host.js';
89
98
  export { createMiniHost };
@@ -146,6 +155,7 @@ export declare function checkApplicationHostCompositionJson(hostRoot: any, packa
146
155
  */
147
156
  export declare function checkApplicationDevTestDeployJson(hostRoot: any, packageRoots: any, dirtyPaths?: any[]): any;
148
157
  export { createDevSession, listWatchedFiles, srcFingerprint } from './dev-session.js';
158
+ export { coalesceRootBurst, collectDevWatchRoots, mergeDirtySets, localLinkDependencyRoots, watchRootForSourceFile, } from './dev-watch-roots.js';
149
159
  export { findAvailablePort } from './port.js';
150
160
  export { runCli, parseArgs, printHelp, printGlobalHelp, printProjectHelp } from './cli.js';
151
161
  export { findNearestProjectVmz, getInvocationContext, isGlobalAllowedCommand, isUnderNodeModules, resolveThisPackageRoot, resolveVmzBin, gateGlobalProjectCommand, } from './invocation.js';
@@ -156,12 +166,15 @@ export { cmdApplication, runCheck as runApplicationCheck } from './application-c
156
166
  export { cmdArtifact } from './release-cmd.js';
157
167
  export { ARTIFACT_DIFF_SCHEMA, DELIVERY_ARTIFACT_MANIFEST_SCHEMA, RELEASE_ENVELOPE_SCHEMA, ROUTE_REALIZATION_TABLE_SCHEMA, atomicWritePointer, canonicalJson, diffArtifacts, loadReleaseEnvelope, packRelease, publishRelease, readPointer, rollbackRelease, sha256File, sha256Hex, } from './release-pack.js';
158
168
  export { STATIC_DELIVERY_MANIFEST_SCHEMA, emitWebStatic, } from './static-emit.js';
159
- export { CONTENT_ADDRESSED_ASSETS_SCHEMA, emitContentAddressedAssets, resolveAssetByDigest, assertSharedAssetPath, contentAddressedAssetsDigest, } from './content-addressed-assets.js';
169
+ export { CONTENT_ADDRESSED_ASSETS_SCHEMA, emitContentAddressedAssets, resolveAssetByDigest, assertSharedAssetPath, contentAddressedAssetsDigest, rewriteCssImports, rewriteJsEntryRelativeImports, } from './content-addressed-assets.js';
170
+ export { SITE_FAVICON_SCHEMA, emitSiteFavicon, readSiteFaviconHeadHtml, packPngsIntoIco, } from './site-favicon.js';
171
+ export { PUBLIC_STATIC_ASSETS_SCHEMA, emitPublicStaticAssets, } from './public-static-assets.js';
160
172
  export { CDN_POLICY_MANIFEST_SCHEMA, CDN_ADAPTER_PROJECTION_SCHEMA, CACHE_HTML, CACHE_ASSET_IMMUTABLE, CACHE_META, buildCdnPolicyManifest, emitCdnPolicy, projectCdnAdapter, createLocalStaticHandler, listenLocalStaticHost, matchGlob, } from './cdn-policy.js';
161
173
  export { SITE_DELIVERY_CONTRACT_SCHEMA, SITE_DELIVERY_RESOLUTION_SCHEMA, defineSite, normalizeSiteDelivery, normalizeSourceProbe, resolveSiteRelease, probeReleaseDirectory, emitSiteDelivery, } from './site-delivery.js';
162
174
  export { EMBEDDED_RESOURCE_INDEX_SCHEMA, emitEmbeddedPackaging, } from './embedded-packaging.js';
163
175
  export { SERVER_LANG_IDS, SERVER_LANG_ALIASES, SERVER_LANGUAGE_BACKENDS, resolveServerLanguage, assertLangRuntimePair, } from './server-language-backend.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
+ export { WECHAT_PACKAGING_SCHEMA, WECHAT_PACKAGING_REL, wechatPackagingFromDelivery, materializeWechatPackaging, } from './wechat-packaging.js';
177
+ export { DELIVERY_PROFILE_AUTHORING_SCHEMA, BUILD_PROFILE_SELECTION_SCHEMA, ASSEMBLIES, SERVER_RUNTIMES, BUILTIN_PROFILES, pickSiteAuthoring, pickDeliveryPackaging, normalizeProfileArtifactName, resolveProfileArtifactDir, normalizeDeliveryAuthoring, selectBuildProfile, semanticIdsForAssembly, } from './delivery-profile.js';
165
178
  export { PACK_MANIFEST_SCHEMA, packFromDeploymentIr, ensureRuntimeCompanions } from './pack.js';
166
179
  export { SERVER_ARTIFACT_SCHEMA, HTTP_CONTRACT_SCHEMA, SERVER_RUNTIME_ADAPTER_SCHEMA, emitServerArtifact, projectServerRuntimeAdapter, } from './server-artifact.js';
167
180
  export { BUILD_PROOF_SCHEMA, ASSEMBLE_MANIFEST_SCHEMA, assembleDelivery, emitBuildProof, } from './build-assemble.js';
@@ -231,6 +244,8 @@ declare const _default: {
231
244
  expectedProtocol: typeof expectedProtocol;
232
245
  resolveNativePath: typeof resolveNativePath;
233
246
  resolveCoreRuntimeDist: typeof resolveCoreRuntimeDist;
247
+ materializeServeHostRuntime: typeof materializeServeHostRuntime;
248
+ SERVE_HOST_RUNTIME_FILES: string[][];
234
249
  loadNative: typeof loadNative;
235
250
  getProtocolVersions: typeof getProtocolVersions;
236
251
  handshake: typeof handshake;
@@ -244,6 +259,7 @@ declare const _default: {
244
259
  lowerMiniprogramStructureJson: typeof lowerMiniprogramStructureJson;
245
260
  lowerMiniprogramRouteServerStyleJson: typeof lowerMiniprogramRouteServerStyleJson;
246
261
  lowerMiniprogramToolingDeployJson: typeof lowerMiniprogramToolingDeployJson;
262
+ lowerMiniprogramWechatPackagingJson: typeof lowerMiniprogramWechatPackagingJson;
247
263
  lowerMiniprogramMultiAdapterJson: typeof lowerMiniprogramMultiAdapterJson;
248
264
  createMiniHost: typeof createMiniHost;
249
265
  queryProfileProtocolCatalog: typeof queryProfileProtocolCatalog;
package/dist/index.js CHANGED
@@ -4,9 +4,10 @@
4
4
  * Coarse-grained only — no transform hooks / per-AST callbacks.
5
5
  */
6
6
  import { createRequire } from 'node:module';
7
- import { existsSync } from 'node:fs';
7
+ import { copyFileSync, 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);
@@ -143,6 +144,33 @@ export function resolveCoreRuntimeDist() {
143
144
  return nested;
144
145
  return null;
145
146
  }
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
+ ['native-addon.js', 'native-addon.js'],
151
+ ['list-client-components.js', 'list-client-components.js'],
152
+ ['deployment-registry.js', 'deployment-registry.js'],
153
+ ['render-host.js', 'render-host.js'],
154
+ ['route-layout-chain.js', 'route-layout-chain.js'],
155
+ ];
156
+ /**
157
+ * Copy serve-host + registry bootstrap modules from `@vmz/core` into app outDir.
158
+ * @param {string} outDir
159
+ * @param {string} [coreDist]
160
+ */
161
+ export function materializeServeHostRuntime(outDir, coreDist = resolveCoreRuntimeDist()) {
162
+ if (!coreDist) {
163
+ throw new Error('materializeServeHostRuntime: @vmz/core dist not found');
164
+ }
165
+ for (const [srcName, outName] of SERVE_HOST_RUNTIME_FILES) {
166
+ const src = path.join(coreDist, srcName);
167
+ const dst = path.join(outDir, outName);
168
+ if (!existsSync(src)) {
169
+ throw new Error(`materializeServeHostRuntime: missing ${src}`);
170
+ }
171
+ copyFileSync(src, dst);
172
+ }
173
+ }
146
174
  /**
147
175
  * @typedef {object} WorkspaceOptions
148
176
  * @property {string} root
@@ -158,7 +186,7 @@ export function createWorkspace(options) {
158
186
  const native = loadNative();
159
187
  const protocol = options.protocol ?? expectedProtocol();
160
188
  const runtimeDist = options.runtimeDist ?? resolveCoreRuntimeDist() ?? undefined;
161
- return native.JsWorkspace.create({
189
+ const ws = native.JsWorkspace.create({
162
190
  root: options.root,
163
191
  outDir: options.outDir,
164
192
  runtimeDist,
@@ -169,6 +197,25 @@ export function createWorkspace(options) {
169
197
  pluginProtocol: protocol.pluginProtocol,
170
198
  },
171
199
  });
200
+ const pack = ws.lowerMiniprogramWechatPackaging.bind(ws);
201
+ const wrappedPack = () => {
202
+ materializeWechatPackaging(options.root);
203
+ return pack();
204
+ };
205
+ try {
206
+ ws.lowerMiniprogramWechatPackaging = wrappedPack;
207
+ return ws;
208
+ }
209
+ catch {
210
+ return new Proxy(ws, {
211
+ get(target, prop, receiver) {
212
+ if (prop === 'lowerMiniprogramWechatPackaging')
213
+ return wrappedPack;
214
+ const value = Reflect.get(target, prop, receiver);
215
+ return typeof value === 'function' ? value.bind(target) : value;
216
+ },
217
+ });
218
+ }
172
219
  }
173
220
  /**
174
221
  * frozen application composition protocol catalog.
@@ -216,6 +263,11 @@ export function lowerMiniprogramToolingDeployJson(rootPath) {
216
263
  const native = loadNative();
217
264
  return native.lowerMiniprogramToolingDeployJson(rootPath);
218
265
  }
266
+ export function lowerMiniprogramWechatPackagingJson(rootPath) {
267
+ const native = loadNative();
268
+ materializeWechatPackaging(rootPath);
269
+ return native.lowerMiniprogramWechatPackagingJson(rootPath);
270
+ }
219
271
  export function lowerMiniprogramMultiAdapterJson(rootPath) {
220
272
  const native = loadNative();
221
273
  return native.lowerMiniprogramMultiAdapterJson(rootPath);
@@ -344,6 +396,7 @@ export function checkApplicationDevTestDeployJson(hostRoot, packageRoots, dirtyP
344
396
  return native.checkApplicationDevTestDeployJson(hostRoot, packageRoots, dirtyPaths);
345
397
  }
346
398
  export { createDevSession, listWatchedFiles, srcFingerprint } from './dev-session.js';
399
+ export { coalesceRootBurst, collectDevWatchRoots, mergeDirtySets, localLinkDependencyRoots, watchRootForSourceFile, } from './dev-watch-roots.js';
347
400
  export { findAvailablePort } from './port.js';
348
401
  export { runCli, parseArgs, printHelp, printGlobalHelp, printProjectHelp } from './cli.js';
349
402
  export { findNearestProjectVmz, getInvocationContext, isGlobalAllowedCommand, isUnderNodeModules, resolveThisPackageRoot, resolveVmzBin, gateGlobalProjectCommand, } from './invocation.js';
@@ -356,12 +409,15 @@ export { ARTIFACT_DIFF_SCHEMA, DELIVERY_ARTIFACT_MANIFEST_SCHEMA, RELEASE_ENVELO
356
409
  // APPLICATION_ARTIFACT_SCHEMA lives in @vmz/protocol (already re-exported above);
357
410
  // release-pack keeps a local constant for envelope writes — do not dual-export the name.
358
411
  export { STATIC_DELIVERY_MANIFEST_SCHEMA, emitWebStatic, } from './static-emit.js';
359
- export { CONTENT_ADDRESSED_ASSETS_SCHEMA, emitContentAddressedAssets, resolveAssetByDigest, assertSharedAssetPath, contentAddressedAssetsDigest, } from './content-addressed-assets.js';
412
+ export { CONTENT_ADDRESSED_ASSETS_SCHEMA, emitContentAddressedAssets, resolveAssetByDigest, assertSharedAssetPath, contentAddressedAssetsDigest, rewriteCssImports, rewriteJsEntryRelativeImports, } from './content-addressed-assets.js';
413
+ export { SITE_FAVICON_SCHEMA, emitSiteFavicon, readSiteFaviconHeadHtml, packPngsIntoIco, } from './site-favicon.js';
414
+ export { PUBLIC_STATIC_ASSETS_SCHEMA, emitPublicStaticAssets, } from './public-static-assets.js';
360
415
  export { CDN_POLICY_MANIFEST_SCHEMA, CDN_ADAPTER_PROJECTION_SCHEMA, CACHE_HTML, CACHE_ASSET_IMMUTABLE, CACHE_META, buildCdnPolicyManifest, emitCdnPolicy, projectCdnAdapter, createLocalStaticHandler, listenLocalStaticHost, matchGlob, } from './cdn-policy.js';
361
416
  export { SITE_DELIVERY_CONTRACT_SCHEMA, SITE_DELIVERY_RESOLUTION_SCHEMA, defineSite, normalizeSiteDelivery, normalizeSourceProbe, resolveSiteRelease, probeReleaseDirectory, emitSiteDelivery, } from './site-delivery.js';
362
417
  export { EMBEDDED_RESOURCE_INDEX_SCHEMA, emitEmbeddedPackaging, } from './embedded-packaging.js';
363
418
  export { SERVER_LANG_IDS, SERVER_LANG_ALIASES, SERVER_LANGUAGE_BACKENDS, resolveServerLanguage, assertLangRuntimePair, } from './server-language-backend.js';
364
- export { DELIVERY_PROFILE_AUTHORING_SCHEMA, BUILD_PROFILE_SELECTION_SCHEMA, ASSEMBLIES, SERVER_RUNTIMES, BUILTIN_PROFILES, pickSiteAuthoring, normalizeDeliveryAuthoring, selectBuildProfile, semanticIdsForAssembly, } from './delivery-profile.js';
419
+ export { WECHAT_PACKAGING_SCHEMA, WECHAT_PACKAGING_REL, wechatPackagingFromDelivery, materializeWechatPackaging, } from './wechat-packaging.js';
420
+ export { DELIVERY_PROFILE_AUTHORING_SCHEMA, BUILD_PROFILE_SELECTION_SCHEMA, ASSEMBLIES, SERVER_RUNTIMES, BUILTIN_PROFILES, pickSiteAuthoring, pickDeliveryPackaging, normalizeProfileArtifactName, resolveProfileArtifactDir, normalizeDeliveryAuthoring, selectBuildProfile, semanticIdsForAssembly, } from './delivery-profile.js';
365
421
  export { PACK_MANIFEST_SCHEMA, packFromDeploymentIr, ensureRuntimeCompanions } from './pack.js';
366
422
  export { SERVER_ARTIFACT_SCHEMA, HTTP_CONTRACT_SCHEMA, SERVER_RUNTIME_ADAPTER_SCHEMA, emitServerArtifact, projectServerRuntimeAdapter, } from './server-artifact.js';
367
423
  export { BUILD_PROOF_SCHEMA, ASSEMBLE_MANIFEST_SCHEMA, assembleDelivery, emitBuildProof, } from './build-assemble.js';
@@ -431,6 +487,8 @@ export default {
431
487
  expectedProtocol,
432
488
  resolveNativePath,
433
489
  resolveCoreRuntimeDist,
490
+ materializeServeHostRuntime,
491
+ SERVE_HOST_RUNTIME_FILES,
434
492
  loadNative,
435
493
  getProtocolVersions,
436
494
  handshake,
@@ -444,6 +502,7 @@ export default {
444
502
  lowerMiniprogramStructureJson,
445
503
  lowerMiniprogramRouteServerStyleJson,
446
504
  lowerMiniprogramToolingDeployJson,
505
+ lowerMiniprogramWechatPackagingJson,
447
506
  lowerMiniprogramMultiAdapterJson,
448
507
  createMiniHost,
449
508
  queryProfileProtocolCatalog,
@@ -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 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('');
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, lines.join('\n'), 'utf8');
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
- fs.writeFileSync(path.join(outDir, 'index.json'), `${JSON.stringify(index, null, 2)}\n`, 'utf8');
693
+ writePrettyJsonFile(path.join(outDir, 'index.json'), index);
698
694
  return written;
699
695
  }
700
696
  /**
@@ -724,59 +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 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
- ];
723
+ const exports = [];
760
724
  for (const exp of mod.exports || []) {
761
725
  const node = byId.get(exp.messageId);
762
- const variants = {};
726
+ /** @type {string[][]} */
727
+ const variants = [];
763
728
  if (node?.variants) {
764
729
  for (const [loc, v] of Object.entries(node.variants)) {
765
- variants[loc] = v.template;
730
+ variants.push([loc, v.template]);
766
731
  }
767
732
  }
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
- }
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`');
775
742
  }
776
- lines.push('');
743
+ const code = native.generateLocaleRuntimeModule(defaultLocale, exports);
777
744
  const file = path.join(localesOut, `${mod.catalogId}.js`);
778
745
  fs.mkdirSync(path.dirname(file), { recursive: true });
779
- fs.writeFileSync(file, lines.join('\n'), 'utf8');
746
+ fs.writeFileSync(file, code, 'utf8');
780
747
  written.push(file);
781
748
  }
782
749
  rewriteLocaleImportsInDist(distDir);