UNPKG

zephyr-xpack-internal

Version:

Xpack internals for Zephyr

63 lines (62 loc) • 3.32 kB
import "node:module"; import { XPackBuildCoordinator } from "./xpack-build-coordinator.mjs"; import * as __rspack_external_node_path_806ed179 from "node:path"; function isServerTarget(target) { const targets = Array.isArray(target) ? target : [ target ]; return targets.some((item)=>'string' == typeof item && /^(?:(?:async-)?node(?:\d+(?:\.\d+)*)?|electron-main)$/.test(item)); } function commonDirectory(paths) { if (0 === paths.length) return; const split = paths.map((item)=>__rspack_external_node_path_806ed179.resolve(item).split(__rspack_external_node_path_806ed179.sep)); const length = Math.min(...split.map((parts)=>parts.length)); let index = 0; while(index < length && split.every((parts)=>parts[index] === split[0]?.[index]))index += 1; const common = split[0]?.slice(0, index).join(__rspack_external_node_path_806ed179.sep); return common ? common || __rspack_external_node_path_806ed179.parse(paths[0]).root : void 0; } function coordinateXPackCompilers(engine, configs, options = {}) { const usedNames = new Set(); const outputPaths = configs.map((config)=>config.output?.path).filter((item)=>!!item); const outputRoot = outputPaths.length === configs.length ? commonDirectory(outputPaths) : void 0; const hasDistinctOutputPaths = new Set(outputPaths.map((item)=>__rspack_external_node_path_806ed179.resolve(item))).size > 1; const preserveTapArtifactPaths = engine.env?.target === 'tap-app'; const compilers = configs.map((config, index)=>{ const role = isServerTarget(config.target) ? 'server' : 'client'; const baseName = config.name?.trim() || `${role}-${index}`; let participant = baseName; let suffix = 1; while(usedNames.has(participant))participant = `${baseName}-${suffix++}`; usedNames.add(participant); let assetPrefix; if (!preserveTapArtifactPaths && hasDistinctOutputPaths && outputRoot && config.output?.path) { const relative = __rspack_external_node_path_806ed179.relative(outputRoot, __rspack_external_node_path_806ed179.resolve(config.output.path)); if (relative && '.' !== relative && !relative.startsWith('..')) assetPrefix = relative.split(__rspack_external_node_path_806ed179.sep).join('/'); } return { participant, role, assetPrefix }; }); const inferredSnapshotType = preserveTapArtifactPaths ? 'csr' : compilers.some(({ role })=>'server' === role) ? 'ssr' : 'csr'; const participantByConfigName = new Map(); configs.forEach((config, index)=>{ if (config.name?.trim() && compilers[index]) participantByConfigName.set(config.name.trim(), compilers[index].participant); }); const coordinator = new XPackBuildCoordinator(engine, compilers.map(({ participant, role }, index)=>({ name: participant, role, dependencies: (configs[index]?.dependencies ?? []).map((dependency)=>participantByConfigName.get(dependency) ?? dependency) })), { ...options, snapshotType: options.snapshotType ?? inferredSnapshotType }); return { coordinator, compilers }; } export { coordinateXPackCompilers }; //# sourceMappingURL=multi-compiler-coordinator.mjs.map