import chalk from 'chalk'; import logger from '../Logger'; import { CopyFileOptions, FileTransform, copyFileWithTransformsAsync } from '../Transforms'; /** * Copies vendored files from source directory to target directory * with transforms applied to their content and relative path. */ export async function copyVendoredFilesAsync( files: Set, options: Omit ): Promise { const unusedTransforms = new Set(options.transforms.content); for (const sourceFile of files) { const { targetFile, transformsUsed } = await copyFileWithTransformsAsync({ sourceFile, ...options, }); transformsUsed.forEach((transform) => unusedTransforms.delete(transform)); if (sourceFile !== targetFile) { logger.log('📂 Renamed %s to %s', chalk.magenta(sourceFile), chalk.magenta(targetFile)); } } for (const unusedTransform of unusedTransforms) { logger.warn( '⚠️ A transform was never applied to vendored code.\nThis can indicate outdated transforms or bugs in the vendored package.\nPath(s): %s', chalk.magenta(String(unusedTransform.paths ?? '')) ); } }