@vmz/vmz 0.0.4 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-assemble.d.ts +52 -0
- package/dist/build-assemble.js +192 -0
- package/dist/cdn-policy.d.ts +22 -4
- package/dist/cdn-policy.js +109 -13
- package/dist/cli.js +122 -27
- package/dist/content-addressed-assets.js +2 -1
- package/dist/delivery-profile.d.ts +84 -0
- package/dist/delivery-profile.js +348 -0
- package/dist/dev-session.d.ts +6 -0
- package/dist/dev-session.js +167 -40
- package/dist/document-build.js +33 -32
- package/dist/document-cmd.js +2 -9
- package/dist/document-enrich.js +8 -0
- package/dist/document-integrate.js +10 -17
- package/dist/embedded-packaging.d.ts +22 -0
- package/dist/embedded-packaging.js +109 -0
- package/dist/index.d.ts +26 -1
- package/dist/index.js +69 -2
- package/dist/locale-check.js +39 -66
- package/dist/locale-cmd.js +12 -44
- package/dist/locale-route-emit.d.ts +37 -0
- package/dist/locale-route-emit.js +109 -0
- package/dist/locale-router.d.ts +20 -0
- package/dist/locale-router.js +68 -0
- package/dist/log.d.ts +2 -2
- package/dist/log.js +11 -3
- 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 +58 -0
- package/dist/pack.js +123 -0
- package/dist/plugin-host.d.ts +1 -1
- package/dist/plugin-host.js +2 -2
- 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.d.ts +0 -14
- package/dist/production-test-pack.js +27 -31
- package/dist/release-pack.js +17 -21
- package/dist/route-path.d.ts +35 -0
- package/dist/route-path.js +77 -0
- package/dist/server-artifact.d.ts +140 -0
- package/dist/server-artifact.js +204 -0
- package/dist/server-language-backend.d.ts +89 -0
- package/dist/server-language-backend.js +121 -0
- package/dist/site-delivery.js +3 -2
- package/dist/static-emit.d.ts +10 -1
- package/dist/static-emit.js +192 -97
- 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
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rust-embedded packaging adapter: resource index + baseline closure.
|
|
3
|
+
* Packaging only — does not invent route / MIME / fallback semantics.
|
|
4
|
+
*/
|
|
5
|
+
// @ts-nocheck
|
|
6
|
+
import crypto from 'node:crypto';
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { writePrettyJsonFile } from './pretty-json.js';
|
|
10
|
+
export const EMBEDDED_RESOURCE_INDEX_SCHEMA = 'vmz.embedded.resource_index.v0';
|
|
11
|
+
/** Paths that must never enter the embedded baseline closure. */
|
|
12
|
+
const SKIP_NAMES = new Set(['vmz-serve-host.mjs', 'vmz-serve-host.js', 'node_modules', '.git']);
|
|
13
|
+
/**
|
|
14
|
+
* Walk outDir and build path → digest → relative blob path map.
|
|
15
|
+
* Copies files into `dist/_vmz/embedded-baseline/` (whole release, no file-level mix).
|
|
16
|
+
* @param {string} outDir
|
|
17
|
+
* @param {{ siteId?: string, contractDigest?: string | null }} [opts]
|
|
18
|
+
*/
|
|
19
|
+
export function emitEmbeddedPackaging(outDir, opts = {}) {
|
|
20
|
+
const vmzDir = path.join(outDir, '_vmz');
|
|
21
|
+
const baselineDir = path.join(vmzDir, 'embedded-baseline');
|
|
22
|
+
fs.mkdirSync(baselineDir, { recursive: true });
|
|
23
|
+
/** @type {Array<{ path: string, digest: string, blob: string, bytes: number }>} */
|
|
24
|
+
const objects = [];
|
|
25
|
+
const root = path.resolve(outDir);
|
|
26
|
+
walkFiles(root, (abs) => {
|
|
27
|
+
const rel = toPosix(path.relative(root, abs));
|
|
28
|
+
if (!rel || rel.startsWith('_vmz/embedded-baseline'))
|
|
29
|
+
return;
|
|
30
|
+
if (rel.startsWith('_vmz/embedded-resource-index'))
|
|
31
|
+
return;
|
|
32
|
+
const base = path.basename(abs);
|
|
33
|
+
if (SKIP_NAMES.has(base))
|
|
34
|
+
return;
|
|
35
|
+
// Keep other _vmz manifests inside baseline (contract, capability table, etc.)
|
|
36
|
+
const buf = fs.readFileSync(abs);
|
|
37
|
+
const digest = sha256Hex(buf);
|
|
38
|
+
const blobRel = `objects/${digest.slice(0, 2)}/${digest}`;
|
|
39
|
+
const blobAbs = path.join(baselineDir, blobRel);
|
|
40
|
+
fs.mkdirSync(path.dirname(blobAbs), { recursive: true });
|
|
41
|
+
if (!fs.existsSync(blobAbs))
|
|
42
|
+
fs.writeFileSync(blobAbs, buf);
|
|
43
|
+
// Also mirror tree under baseline/tree for host convenience
|
|
44
|
+
const treeAbs = path.join(baselineDir, 'tree', rel);
|
|
45
|
+
fs.mkdirSync(path.dirname(treeAbs), { recursive: true });
|
|
46
|
+
fs.copyFileSync(abs, treeAbs);
|
|
47
|
+
objects.push({ path: rel, digest, blob: blobRel, bytes: buf.length });
|
|
48
|
+
});
|
|
49
|
+
objects.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
|
|
50
|
+
const index = {
|
|
51
|
+
schema: EMBEDDED_RESOURCE_INDEX_SCHEMA,
|
|
52
|
+
siteId: opts.siteId || null,
|
|
53
|
+
contractDigest: opts.contractDigest || null,
|
|
54
|
+
objectCount: objects.length,
|
|
55
|
+
objects,
|
|
56
|
+
};
|
|
57
|
+
index.indexDigest = sha256Hex(canonicalJson({ ...index, indexDigest: undefined }));
|
|
58
|
+
const indexPath = path.join(vmzDir, 'embedded-resource-index.json');
|
|
59
|
+
writePrettyJsonFile(indexPath, index);
|
|
60
|
+
// Optional include_bytes entry point for Rust packaging adapters
|
|
61
|
+
const rsPath = path.join(vmzDir, 'embedded_site.rs');
|
|
62
|
+
fs.writeFileSync(rsPath, `// @generated by vmz — rust-embedded packaging adapter (do not edit)
|
|
63
|
+
// Index digest: ${index.indexDigest}
|
|
64
|
+
pub const EMBEDDED_RESOURCE_INDEX: &str = include_str!("embedded-resource-index.json");
|
|
65
|
+
`, 'utf8');
|
|
66
|
+
return { index, indexPath, baselineDir };
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @param {string} dir
|
|
70
|
+
* @param {(abs: string) => void} onFile
|
|
71
|
+
*/
|
|
72
|
+
function walkFiles(dir, onFile) {
|
|
73
|
+
if (!fs.existsSync(dir))
|
|
74
|
+
return;
|
|
75
|
+
for (const name of fs.readdirSync(dir)) {
|
|
76
|
+
if (SKIP_NAMES.has(name))
|
|
77
|
+
continue;
|
|
78
|
+
const abs = path.join(dir, name);
|
|
79
|
+
const st = fs.statSync(abs);
|
|
80
|
+
if (st.isDirectory()) {
|
|
81
|
+
if (name === 'embedded-baseline' && path.basename(path.dirname(abs)) === '_vmz')
|
|
82
|
+
continue;
|
|
83
|
+
walkFiles(abs, onFile);
|
|
84
|
+
}
|
|
85
|
+
else if (st.isFile()) {
|
|
86
|
+
onFile(abs);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function toPosix(p) {
|
|
91
|
+
return p.split(path.sep).join('/');
|
|
92
|
+
}
|
|
93
|
+
function sha256Hex(data) {
|
|
94
|
+
return crypto.createHash('sha256').update(data).digest('hex');
|
|
95
|
+
}
|
|
96
|
+
function canonicalJson(value) {
|
|
97
|
+
return JSON.stringify(sortKeys(value));
|
|
98
|
+
}
|
|
99
|
+
function sortKeys(value) {
|
|
100
|
+
if (Array.isArray(value))
|
|
101
|
+
return value.map(sortKeys);
|
|
102
|
+
if (value && typeof value === 'object') {
|
|
103
|
+
const out = {};
|
|
104
|
+
for (const k of Object.keys(value).sort())
|
|
105
|
+
out[k] = sortKeys(value[k]);
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
return value;
|
|
109
|
+
}
|
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;
|
|
@@ -151,10 +160,18 @@ export { STATIC_DELIVERY_MANIFEST_SCHEMA, emitWebStatic, } from './static-emit.j
|
|
|
151
160
|
export { CONTENT_ADDRESSED_ASSETS_SCHEMA, emitContentAddressedAssets, resolveAssetByDigest, assertSharedAssetPath, contentAddressedAssetsDigest, } from './content-addressed-assets.js';
|
|
152
161
|
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';
|
|
153
162
|
export { SITE_DELIVERY_CONTRACT_SCHEMA, SITE_DELIVERY_RESOLUTION_SCHEMA, defineSite, normalizeSiteDelivery, normalizeSourceProbe, resolveSiteRelease, probeReleaseDirectory, emitSiteDelivery, } from './site-delivery.js';
|
|
163
|
+
export { EMBEDDED_RESOURCE_INDEX_SCHEMA, emitEmbeddedPackaging, } from './embedded-packaging.js';
|
|
164
|
+
export { SERVER_LANG_IDS, SERVER_LANG_ALIASES, SERVER_LANGUAGE_BACKENDS, resolveServerLanguage, assertLangRuntimePair, } from './server-language-backend.js';
|
|
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';
|
|
167
|
+
export { PACK_MANIFEST_SCHEMA, packFromDeploymentIr, ensureRuntimeCompanions } from './pack.js';
|
|
168
|
+
export { SERVER_ARTIFACT_SCHEMA, HTTP_CONTRACT_SCHEMA, SERVER_RUNTIME_ADAPTER_SCHEMA, emitServerArtifact, projectServerRuntimeAdapter, } from './server-artifact.js';
|
|
169
|
+
export { BUILD_PROOF_SCHEMA, ASSEMBLE_MANIFEST_SCHEMA, assembleDelivery, emitBuildProof, } from './build-assemble.js';
|
|
154
170
|
export { PRODUCTION_SCENARIO_PACK_SCHEMA, PRODUCTION_CI_PROFILE_SCHEMA, PRODUCTION_TEST_REPORT_SCHEMA, browserProductionScenarioPack, browserProductionCiProfile, normalizeScenarioPack, normalizeCiProfile, scenarioPackDigest, ciProfileDigest, buildProductionTestReport, productionTestReportDigest, emitProductionTestArtifacts, assertNoForbiddenRunners, } from './production-test-pack.js';
|
|
155
171
|
export { PRODUCTION_OBSERVABILITY_SCHEMA, PRODUCTION_TRACE_SCHEMA, REQUIRED_TRACE_FACETS, browserProductionObservability, normalizeObservability, redactSensitive, validateProductionTrace, buildCoveringProductionTrace, checkProductionBudgets, checkCapabilityClosure, applySecurityHeadersToCdnPolicy, measureDistBudgets, emitProductionObservability, observabilityDigest, } from './production-observability.js';
|
|
156
172
|
export { buildApplicationContext, buildFormatterContext, checkLocaleRuntime, checkSsrClientParity, createLocaleSession, formatMessageTemplate, formatterContextDigest, negotiateLocale, resolveMessageVariant, validateFormatterContext, } from './locale-runtime.js';
|
|
157
|
-
export { absoluteUrl, assertLocaleCacheKey, buildLocalePageMeta, buildLocaleRouteRealizationTable, checkLocaleRouter, commitLocaleRouteMetaTransition, localeAwareCacheKey, parseLocaleFromPath, planLocalePathNavigation, realizeRoutePath, resolveLinkHref, } from './locale-router.js';
|
|
173
|
+
export { absoluteUrl, assertLocaleCacheKey, buildLocalePageMeta, buildLocaleRouteRealizationTable, checkLocaleRouter, commitLocaleRouteMetaTransition, localeAwareCacheKey, localizeBodyLinks, localizeSameAppHref, parseLocaleFromPath, planLocalePathNavigation, realizeRoutePath, resolveLinkHref, } from './locale-router.js';
|
|
174
|
+
export { LOCALE_ROUTE_REALIZATION_ARTIFACT_SCHEMA, emitLocaleRouteRealization, } from './locale-route-emit.js';
|
|
158
175
|
export { assertHostMessageInvariant, assertServerErrorEnvelope, assertServerFormatContext, buildLocaleDeliveryResolution, checkLocaleDelivery, fallbackDigest, messageCatalogHash, proveMiniPackageMessages, validateNativeLocalePack, } from './locale-delivery.js';
|
|
159
176
|
export { checkLocaleConformance, diffLocaleCatalogs, explainLocaleMessage, extractHardcodedText, pseudoLocalizeCatalog, } from './locale-tooling.js';
|
|
160
177
|
export { applyPlugins, contentHash, defineConfig, definePlugin, loadVmzConfig, } from './plugin-host.js';
|
|
@@ -224,6 +241,14 @@ declare const _default: {
|
|
|
224
241
|
checkApplicationsJson: typeof checkApplicationsJson;
|
|
225
242
|
queryTargetProtocolCatalog: typeof queryTargetProtocolCatalog;
|
|
226
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;
|
|
227
252
|
queryProfileProtocolCatalog: typeof queryProfileProtocolCatalog;
|
|
228
253
|
checkHostProfileProtocolJson: typeof checkHostProfileProtocolJson;
|
|
229
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();
|
|
@@ -333,10 +384,18 @@ export { STATIC_DELIVERY_MANIFEST_SCHEMA, emitWebStatic, } from './static-emit.j
|
|
|
333
384
|
export { CONTENT_ADDRESSED_ASSETS_SCHEMA, emitContentAddressedAssets, resolveAssetByDigest, assertSharedAssetPath, contentAddressedAssetsDigest, } from './content-addressed-assets.js';
|
|
334
385
|
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';
|
|
335
386
|
export { SITE_DELIVERY_CONTRACT_SCHEMA, SITE_DELIVERY_RESOLUTION_SCHEMA, defineSite, normalizeSiteDelivery, normalizeSourceProbe, resolveSiteRelease, probeReleaseDirectory, emitSiteDelivery, } from './site-delivery.js';
|
|
387
|
+
export { EMBEDDED_RESOURCE_INDEX_SCHEMA, emitEmbeddedPackaging, } from './embedded-packaging.js';
|
|
388
|
+
export { SERVER_LANG_IDS, SERVER_LANG_ALIASES, SERVER_LANGUAGE_BACKENDS, resolveServerLanguage, assertLangRuntimePair, } from './server-language-backend.js';
|
|
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';
|
|
391
|
+
export { PACK_MANIFEST_SCHEMA, packFromDeploymentIr, ensureRuntimeCompanions } from './pack.js';
|
|
392
|
+
export { SERVER_ARTIFACT_SCHEMA, HTTP_CONTRACT_SCHEMA, SERVER_RUNTIME_ADAPTER_SCHEMA, emitServerArtifact, projectServerRuntimeAdapter, } from './server-artifact.js';
|
|
393
|
+
export { BUILD_PROOF_SCHEMA, ASSEMBLE_MANIFEST_SCHEMA, assembleDelivery, emitBuildProof, } from './build-assemble.js';
|
|
336
394
|
export { PRODUCTION_SCENARIO_PACK_SCHEMA, PRODUCTION_CI_PROFILE_SCHEMA, PRODUCTION_TEST_REPORT_SCHEMA, browserProductionScenarioPack, browserProductionCiProfile, normalizeScenarioPack, normalizeCiProfile, scenarioPackDigest, ciProfileDigest, buildProductionTestReport, productionTestReportDigest, emitProductionTestArtifacts, assertNoForbiddenRunners, } from './production-test-pack.js';
|
|
337
395
|
export { PRODUCTION_OBSERVABILITY_SCHEMA, PRODUCTION_TRACE_SCHEMA, REQUIRED_TRACE_FACETS, browserProductionObservability, normalizeObservability, redactSensitive, validateProductionTrace, buildCoveringProductionTrace, checkProductionBudgets, checkCapabilityClosure, applySecurityHeadersToCdnPolicy, measureDistBudgets, emitProductionObservability, observabilityDigest, } from './production-observability.js';
|
|
338
396
|
export { buildApplicationContext, buildFormatterContext, checkLocaleRuntime, checkSsrClientParity, createLocaleSession, formatMessageTemplate, formatterContextDigest, negotiateLocale, resolveMessageVariant, validateFormatterContext, } from './locale-runtime.js';
|
|
339
|
-
export { absoluteUrl, assertLocaleCacheKey, buildLocalePageMeta, buildLocaleRouteRealizationTable, checkLocaleRouter, commitLocaleRouteMetaTransition, localeAwareCacheKey, parseLocaleFromPath, planLocalePathNavigation, realizeRoutePath, resolveLinkHref, } from './locale-router.js';
|
|
397
|
+
export { absoluteUrl, assertLocaleCacheKey, buildLocalePageMeta, buildLocaleRouteRealizationTable, checkLocaleRouter, commitLocaleRouteMetaTransition, localeAwareCacheKey, localizeBodyLinks, localizeSameAppHref, parseLocaleFromPath, planLocalePathNavigation, realizeRoutePath, resolveLinkHref, } from './locale-router.js';
|
|
398
|
+
export { LOCALE_ROUTE_REALIZATION_ARTIFACT_SCHEMA, emitLocaleRouteRealization, } from './locale-route-emit.js';
|
|
340
399
|
export { assertHostMessageInvariant, assertServerErrorEnvelope, assertServerFormatContext, buildLocaleDeliveryResolution, checkLocaleDelivery, fallbackDigest, messageCatalogHash, proveMiniPackageMessages, validateNativeLocalePack, } from './locale-delivery.js';
|
|
341
400
|
export { checkLocaleConformance, diffLocaleCatalogs, explainLocaleMessage, extractHardcodedText, pseudoLocalizeCatalog, } from './locale-tooling.js';
|
|
342
401
|
export { applyPlugins, contentHash, defineConfig, definePlugin, loadVmzConfig, } from './plugin-host.js';
|
|
@@ -406,6 +465,14 @@ export default {
|
|
|
406
465
|
checkApplicationsJson,
|
|
407
466
|
queryTargetProtocolCatalog,
|
|
408
467
|
checkMiniprogramTargetContractJson,
|
|
468
|
+
lowerMiniprogramStaticSliceJson,
|
|
469
|
+
lowerMiniprogramBindingEventJson,
|
|
470
|
+
lowerMiniprogramStructureJson,
|
|
471
|
+
lowerMiniprogramRouteServerStyleJson,
|
|
472
|
+
lowerMiniprogramToolingDeployJson,
|
|
473
|
+
lowerMiniprogramWechatPackagingJson,
|
|
474
|
+
lowerMiniprogramMultiAdapterJson,
|
|
475
|
+
createMiniHost,
|
|
409
476
|
queryProfileProtocolCatalog,
|
|
410
477
|
checkHostProfileProtocolJson,
|
|
411
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
|
|
@@ -250,10 +252,12 @@ export function checkLocales(opts) {
|
|
|
250
252
|
const manifestPathJson = path.join(localesRoot, 'locales.json');
|
|
251
253
|
const manifestPath = fs.existsSync(manifestPathJson5) ? manifestPathJson5 : fs.existsSync(manifestPathJson) ? manifestPathJson : null;
|
|
252
254
|
if (!fs.existsSync(localesRoot) || !manifestPath) {
|
|
255
|
+
// Discipline nudge: i18n is first-class — missing policy is never silent.
|
|
256
|
+
// Soft for now (warning); production profiles may elevate to error later.
|
|
253
257
|
diagnostics.push({
|
|
254
258
|
code: DIAG_MANIFEST_MISSING,
|
|
255
|
-
severity: '
|
|
256
|
-
message: 'locales/locales.json5 missing
|
|
259
|
+
severity: 'warning',
|
|
260
|
+
message: 'locales/locales.json5 missing — declare LocaleId policy under /locales (native i18n, not an afterthought)',
|
|
257
261
|
path: 'locales/locales.json5',
|
|
258
262
|
});
|
|
259
263
|
return emptyReport(projectRoot, diagnostics);
|
|
@@ -586,9 +590,10 @@ function paramSignature(params) {
|
|
|
586
590
|
.join(',');
|
|
587
591
|
}
|
|
588
592
|
function emptyReport(projectRoot, diagnostics) {
|
|
593
|
+
const hasErrors = (diagnostics || []).some((d) => d.severity === 'error');
|
|
589
594
|
return {
|
|
590
595
|
schema: LOCALE_CHECK_SCHEMA,
|
|
591
|
-
status: 'failed',
|
|
596
|
+
status: hasErrors ? 'failed' : 'ready',
|
|
592
597
|
root: projectRoot,
|
|
593
598
|
localesRoot: 'locales',
|
|
594
599
|
manifest: null,
|
|
@@ -665,25 +670,19 @@ export function emitLocaleTypedModules(report, outDir) {
|
|
|
665
670
|
fs.mkdirSync(outDir, { recursive: true });
|
|
666
671
|
/** @type {string[]} */
|
|
667
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
|
+
}
|
|
668
677
|
for (const mod of report.typedModules || []) {
|
|
669
|
-
const
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
for (const exp of mod.exports) {
|
|
675
|
-
if (!exp.params.length) {
|
|
676
|
-
lines.push(`export declare function ${exp.exportName}(): LocalizedText;`);
|
|
677
|
-
}
|
|
678
|
-
else {
|
|
679
|
-
const args = exp.params.map((p) => `${p.name}: ${p.kind === 'plural' || p.kind === 'number' ? 'number' : 'string'}`).join('; ');
|
|
680
|
-
lines.push(`export declare function ${exp.exportName}(args: { ${args} }): LocalizedText;`);
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
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);
|
|
684
683
|
const file = path.join(outDir, `${mod.catalogId}.d.ts`);
|
|
685
684
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
686
|
-
fs.writeFileSync(file,
|
|
685
|
+
fs.writeFileSync(file, text, 'utf8');
|
|
687
686
|
written.push(file);
|
|
688
687
|
}
|
|
689
688
|
const index = {
|
|
@@ -691,7 +690,7 @@ export function emitLocaleTypedModules(report, outDir) {
|
|
|
691
690
|
modules: (report.typedModules || []).map((m) => m.module),
|
|
692
691
|
outDir,
|
|
693
692
|
};
|
|
694
|
-
|
|
693
|
+
writePrettyJsonFile(path.join(outDir, 'index.json'), index);
|
|
695
694
|
return written;
|
|
696
695
|
}
|
|
697
696
|
/**
|
|
@@ -706,71 +705,45 @@ export function emitLocaleTypedModules(report, outDir) {
|
|
|
706
705
|
* @returns {{ ok: boolean, written: string[], diagnostics: any[] }}
|
|
707
706
|
*/
|
|
708
707
|
export function emitLocaleRuntimeModules(projectRoot, distDir) {
|
|
709
|
-
const localesRoot = path.join(projectRoot, 'locales');
|
|
710
|
-
if (!fs.existsSync(localesRoot)) {
|
|
711
|
-
return { ok: true, written: [], diagnostics: [] };
|
|
712
|
-
}
|
|
713
708
|
const report = checkLocales({ projectRoot, checkUnused: false });
|
|
714
709
|
if (localeHasErrors(report)) {
|
|
715
710
|
return { ok: false, written: [], diagnostics: report.diagnostics || [] };
|
|
716
711
|
}
|
|
717
|
-
|
|
712
|
+
// Missing locales.json5 is warning-only for now — surface diagnostics, skip emit.
|
|
713
|
+
if (!report.manifest) {
|
|
714
|
+
return { ok: true, written: [], diagnostics: report.diagnostics || [] };
|
|
715
|
+
}
|
|
716
|
+
const defaultLocale = report.manifest.defaultLocale || 'zh-hans';
|
|
718
717
|
const byId = new Map((report.messageCatalog?.messages || []).map((m) => [m.messageId, m]));
|
|
719
718
|
/** @type {string[]} */
|
|
720
719
|
const written = [];
|
|
721
720
|
const localesOut = path.join(distDir, 'locales');
|
|
722
721
|
fs.mkdirSync(localesOut, { recursive: true });
|
|
723
722
|
for (const mod of report.typedModules || []) {
|
|
724
|
-
const
|
|
725
|
-
`/** Generated ${mod.module} — runtime LocalizedText (defaultLocale=${defaultLocale}) */`,
|
|
726
|
-
`const __vmzDefaultLocale = ${JSON.stringify(defaultLocale)};`,
|
|
727
|
-
`function __vmzLocaleId() {`,
|
|
728
|
-
` try {`,
|
|
729
|
-
` const stored = localStorage.getItem("vmz.locale");`,
|
|
730
|
-
` if (stored) return stored;`,
|
|
731
|
-
` } catch {}`,
|
|
732
|
-
` if (typeof document !== "undefined") {`,
|
|
733
|
-
` const d = document.documentElement?.getAttribute("data-locale");`,
|
|
734
|
-
` if (d) return d;`,
|
|
735
|
-
` const lang = document.documentElement?.lang;`,
|
|
736
|
-
` if (lang === "en" || lang === "en-US" || lang === "en-us") return "en-us";`,
|
|
737
|
-
` if (lang === "zh" || lang === "zh-CN" || lang === "zh-Hans" || lang === "zh-hans") return "zh-hans";`,
|
|
738
|
-
` }`,
|
|
739
|
-
` return __vmzDefaultLocale;`,
|
|
740
|
-
`}`,
|
|
741
|
-
`function __vmzFormat(template, args) {`,
|
|
742
|
-
` if (!args) return String(template ?? "");`,
|
|
743
|
-
` return String(template ?? "").replace(/\\{(\\w+)(?:,\\s*\\w+)?\\}/g, (m, name) =>`,
|
|
744
|
-
` Object.prototype.hasOwnProperty.call(args, name) ? String(args[name]) : m`,
|
|
745
|
-
` );`,
|
|
746
|
-
`}`,
|
|
747
|
-
`function __vmzPick(variants, args) {`,
|
|
748
|
-
` const id = __vmzLocaleId();`,
|
|
749
|
-
` const template = variants[id] ?? variants[__vmzDefaultLocale] ?? "";`,
|
|
750
|
-
` return __vmzFormat(template, args);`,
|
|
751
|
-
`}`,
|
|
752
|
-
'',
|
|
753
|
-
];
|
|
723
|
+
const exports = [];
|
|
754
724
|
for (const exp of mod.exports || []) {
|
|
755
725
|
const node = byId.get(exp.messageId);
|
|
756
|
-
|
|
726
|
+
/** @type {string[][]} */
|
|
727
|
+
const variants = [];
|
|
757
728
|
if (node?.variants) {
|
|
758
729
|
for (const [loc, v] of Object.entries(node.variants)) {
|
|
759
|
-
variants[loc
|
|
730
|
+
variants.push([loc, v.template]);
|
|
760
731
|
}
|
|
761
732
|
}
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
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`');
|
|
769
742
|
}
|
|
770
|
-
|
|
743
|
+
const code = native.generateLocaleRuntimeModule(defaultLocale, exports);
|
|
771
744
|
const file = path.join(localesOut, `${mod.catalogId}.js`);
|
|
772
745
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
773
|
-
fs.writeFileSync(file,
|
|
746
|
+
fs.writeFileSync(file, code, 'utf8');
|
|
774
747
|
written.push(file);
|
|
775
748
|
}
|
|
776
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) {
|
|
@@ -117,8 +111,8 @@ function cmdLocaleList(args) {
|
|
|
117
111
|
const projectRoot = resolveProject(args);
|
|
118
112
|
const report = checkLocales({ projectRoot, checkUnused: false });
|
|
119
113
|
if (!report.manifest) {
|
|
120
|
-
|
|
121
|
-
return 1;
|
|
114
|
+
console.warn('vmz warn vmz::locale::manifest_missing: locales/locales.json5 missing');
|
|
115
|
+
return localeHasErrors(report) ? 1 : 0;
|
|
122
116
|
}
|
|
123
117
|
for (const loc of report.manifest.locales) {
|
|
124
118
|
const mark = loc.id === report.manifest.defaultLocale ? ' (default)' : '';
|
|
@@ -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;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emit RouteId × LocaleId realization (+ PageMeta / hreflang seed) into dist/_vmz.
|
|
3
|
+
* Consumed by serve-host + static-emit; LocaleId stays out of stable RouteId.
|
|
4
|
+
*/
|
|
5
|
+
export declare const LOCALE_ROUTE_REALIZATION_ARTIFACT_SCHEMA = "vmz.locale.route_realization.v0";
|
|
6
|
+
/**
|
|
7
|
+
* @param {string} projectRoot
|
|
8
|
+
* @param {string} distDir
|
|
9
|
+
* @param {{ origin?: string }} [opts]
|
|
10
|
+
*/
|
|
11
|
+
export declare function emitLocaleRouteRealization(projectRoot: any, distDir: any, opts?: {}): {
|
|
12
|
+
ok: boolean;
|
|
13
|
+
written: any[];
|
|
14
|
+
diagnostics: any;
|
|
15
|
+
artifact: any;
|
|
16
|
+
} | {
|
|
17
|
+
ok: boolean;
|
|
18
|
+
written: string[];
|
|
19
|
+
artifact: {
|
|
20
|
+
schema: string;
|
|
21
|
+
defaultLocale: any;
|
|
22
|
+
locales: any;
|
|
23
|
+
routing: {
|
|
24
|
+
strategy: any;
|
|
25
|
+
defaultPrefix: any;
|
|
26
|
+
defaultLocale: any;
|
|
27
|
+
};
|
|
28
|
+
origin: string;
|
|
29
|
+
routes: {
|
|
30
|
+
routeId: string;
|
|
31
|
+
path: string;
|
|
32
|
+
}[];
|
|
33
|
+
realizations: any[];
|
|
34
|
+
pageMetas: any[];
|
|
35
|
+
};
|
|
36
|
+
diagnostics: any[];
|
|
37
|
+
};
|