/* Post-build: copy CSS and fix ESM import extensions */ const fs = require('fs'); const path = require('path'); const distDir = path.join(__dirname, '..', 'dist'); // Copy CSS const cssSrc = path.join(__dirname, '..', 'src', 'styles.css'); const cssDest = path.join(distDir, 'styles.css'); fs.copyFileSync(cssSrc, cssDest); // Fix ESM imports by adding .js extensions function fixImports(dir) { const entries = fs.readdirSync(dir, { withFileTypes: true }); for (const entry of entries) { const fullPath = path.join(dir, entry.name); if (entry.isDirectory()) { fixImports(fullPath); } else if (entry.name.endsWith('.js')) { let content = fs.readFileSync(fullPath, 'utf8'); // Function to determine the correct extension const addExtension = (match, prefix, importPath, quote) => { // Check if the import path already has .js extension if (importPath.endsWith('.js')) { return match; } // Check if this is a directory with an index.js const baseDir = path.dirname(fullPath); const targetPath = path.resolve(baseDir, importPath); // Check if it's a directory with index.js if (fs.existsSync(targetPath) && fs.statSync(targetPath).isDirectory()) { if (fs.existsSync(path.join(targetPath, 'index.js'))) { return `${prefix}${importPath}/index.js${quote}`; } } // Check if adding .js makes it a valid file if (fs.existsSync(targetPath + '.js')) { return `${prefix}${importPath}.js${quote}`; } return match; }; // Fix 'from' imports content = content.replace( /(from\s+['"])(\.\.?\/[^'"]+)(['"])/g, addExtension ); // Fix 'export * from' statements content = content.replace( /(export\s+\*\s+from\s+['"])(\.\.?\/[^'"]+)(['"])/g, addExtension ); fs.writeFileSync(fullPath, content); } } } fixImports(distDir); console.log('Post-build: CSS copied and ESM imports fixed');