everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
50 lines (48 loc) • 2.13 kB
JavaScript
let node_fs = require("node:fs");
let node_path = require("node:path");
let every_plugin_version_manifest = require("every-plugin/version-manifest");
let every_plugin_build_artifact_names = require("every-plugin/build/artifact-names");
//#region src/version-manifest-deploy.ts
/** Read a workspace dist's build-report.json (ticket 01's entry-name report). */
function readBuildReport(distRoot) {
const reportPath = (0, node_path.join)(distRoot, "build-report.json");
if (!(0, node_fs.existsSync)(reportPath)) return null;
try {
return every_plugin_build_artifact_names.BuildEntryReportSchema.parse(JSON.parse((0, node_fs.readFileSync)(reportPath, "utf8")));
} catch {
return null;
}
}
/**
* Compose the workspace's version manifest from the dist build reports and
* the **server-computed** SRI map of the upload response (MAP decision 6 —
* SRI is authoritative from the storage boundary, never computed
* client-side). Returns null when the dist predates hashed entry names
* (no report, or the SRI map lacks the entry) — the deploy leg then aborts:
* uploaded workspaces must pin.
*/
function composeWorkspaceVersionManifest(input) {
const { report, ssrReport, integrityMap, files } = input;
const entryIntegrity = integrityMap[report.entry];
if (!entryIntegrity) return null;
const ssrEntry = ssrReport?.entry;
const ssrIntegrity = ssrEntry ? integrityMap[`ssr/${ssrEntry}`] : void 0;
return (0, every_plugin_version_manifest.composeVersionManifest)({
entry: report.entry,
entryIntegrity,
...ssrEntry && ssrIntegrity ? { ssr: {
entry: `ssr/${ssrEntry}`,
integrity: ssrIntegrity
} } : {},
...report.browserManifest && integrityMap[report.browserManifest] ? { browserManifest: {
file: report.browserManifest,
integrity: integrityMap[report.browserManifest]
} } : {},
...report.css && integrityMap[report.css] ? { assets: { css: integrityMap[report.css] } } : {},
...files ? { files } : {}
});
}
//#endregion
exports.composeWorkspaceVersionManifest = composeWorkspaceVersionManifest;
exports.readBuildReport = readBuildReport;
//# sourceMappingURL=version-manifest-deploy.cjs.map