UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

50 lines (48 loc) • 2.13 kB
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