UNPKG

zephyr-xpack-internal

Version:

Xpack internals for Zephyr

114 lines (113 loc) • 4.39 kB
import "node:module"; import { ZeErrors, ZephyrError, resolveMfManifestPath, zeBuildDashData, ze_log } from "zephyr-agent"; import { extractFederatedConfig } from "../xpack-extract/extract-federation-config.mjs"; import { mergeModuleFederationBuildMetadata, mergeModuleFederationConfigs } from "../xpack-extract/federation-config-metadata.mjs"; import { FederationDashboardPlugin } from "./utils/federation-dashboard-plugin/FederationDashboardPlugin.mjs"; function getFederationConfigEntries(mfConfig) { const plugins = mfConfig ? Array.isArray(mfConfig) ? mfConfig : [ mfConfig ] : []; return plugins.flatMap((plugin)=>{ const config = extractFederatedConfig(plugin); return config ? [ { plugin, config } ] : []; }); } function getModuleFederationConfigs(mfConfig) { return mergeModuleFederationConfigs([ getFederationConfigEntries(mfConfig).map(({ config })=>JSON.parse(JSON.stringify(config))) ]); } function getModuleFederationBuildMetadata(mfConfig) { return mergeModuleFederationBuildMetadata([ getFederationConfigEntries(mfConfig).map(({ plugin, config })=>{ const emitsManifest = void 0 !== config.manifest || 'name' in plugin && 'string' == typeof plugin.name; return { name: config.name, remote: config.filename, mf_manifest: emitsManifest ? resolveMfManifestPath(config.manifest) : void 0, library_type: config.library?.type ?? 'var', exposes: config.exposes, shared: config.shared }; }) ]); } async function getBuildStats({ stats, stats_json, pluginOptions, EDGE_URL, DOMAIN, PLATFORM, TYPE, DELIMITER: delimiter }) { ze_log.app('get build stats started. create federation dashboard plugin'); const ze_engine = pluginOptions.zephyr_engine; const app = ze_engine.applicationProperties; const { git } = ze_engine.gitProperties; const context = ze_engine.env; const version = await ze_engine.snapshotId; const application_uid = ze_engine.application_uid; const buildId = await ze_engine.build_id; const build_target = ze_engine.env.target ?? 'web'; const federation = getModuleFederationBuildMetadata(pluginOptions.mfConfig); const legacyFederation = 1 === federation.length ? federation[0] : void 0; const legacyFederationFields = legacyFederation ?? { name: app.name, remote: void 0, mf_manifest: void 0, library_type: void 0, exposes: void 0, shared: void 0 }; const remotes = ze_engine.federated_dependencies; const data_overrides = { id: application_uid, ...legacyFederationFields, federation, edge: { url: EDGE_URL, delimiter }, domain: DOMAIN, platform: PLATFORM, type: TYPE ?? 'app', app: Object.assign({}, app, { buildId }), version, git, remotes: remotes?.map(({ application_uid })=>application_uid) ?? [], context, build_target, zephyrDependencies: ze_engine.zephyr_dependencies }; if ('tap-app' === build_target) { const baseline = await zeBuildDashData(ze_engine); const tapBuildStats = { ...baseline, ...data_overrides, project: legacyFederation?.name ?? app.name, tags: baseline.tags ?? [] }; ze_log.app('get tap-app build stats done.', tapBuildStats); return tapBuildStats; } const dashboardPlugin = new FederationDashboardPlugin({ app, git, context }); ze_log.app('process webpack graph.pluginOptions', pluginOptions); const convertedGraph = dashboardPlugin.processWebpackGraph({ stats, stats_json, pluginOptions }); if (!convertedGraph) throw new ZephyrError(ZeErrors.ERR_CONVERT_GRAPH_TO_DASHBOARD); const res = Object.assign({}, convertedGraph, data_overrides, { project: legacyFederation?.name ?? app.name, tags: [] }); ze_log.app('get build stats done.', res); return res; } export { getBuildStats, getModuleFederationBuildMetadata, getModuleFederationConfigs }; //# sourceMappingURL=get-build-stats.mjs.map