const fs = require('fs'); const path = require('path'); function generateIndexFile(dirPath) { const files = fs.readdirSync(dirPath).filter(file => file.endsWith('.js') && file !== 'index.js' ); if (files.length === 0) return; let content = '\/\/ Auto Generated index.js\n'; // Import each file and export it as a namespace files.forEach(file => { const moduleName = path.basename(file, '.js'); content += `export * as ${moduleName} from './${file}';\n`; }); const indexPath = path.join(dirPath, 'index.js'); fs.writeFileSync(indexPath, content); console.log(`Generated index.js for: ${dirPath}`); } // Generate index for each subdirectory in src const srcDir = path.join(__dirname, '..', 'src'); const srcItems = fs.readdirSync(srcDir); srcItems.forEach(item => { const itemPath = path.join(srcDir, item); if (fs.statSync(itemPath).isDirectory()) { generateIndexFile(itemPath); } }); // Generate index for src directory that imports subdirectories let srcContent = '\/\/ Auto Generated index.js\n'; // Add imports for each subdirectory srcItems.forEach(item => { const itemPath = path.join(srcDir, item); if (fs.statSync(itemPath).isDirectory() ) { // && item !== 'utils' // Check if the subdirectory has JS files to determine if we should export it const subDirFiles = fs.readdirSync(itemPath).filter(file => file.endsWith('.js') && file !== 'index.js' ); if (subDirFiles.length > 0) { srcContent += `export * as ${item} from './${item}/index.js';\n`; } } }); // Add imports for files in the utils directory const utilsDir = path.join(srcDir, 'utils'); if (fs.existsSync(utilsDir)) { generateIndexFile(utilsDir); // Export individual files from utils const utilsFiles = fs.readdirSync(utilsDir).filter(file => file.endsWith('.js') && file !== 'index.js' ); utilsFiles.forEach(file => { const moduleName = path.basename(file, '.js'); srcContent += `export * as ${moduleName} from './utils/${file}';\n`; }); } // Write the src index.js file const srcIndexPath = path.join(srcDir, 'index.js'); fs.writeFileSync(srcIndexPath, srcContent); console.log(`Generated index.js for: ${srcDir}`);