const fs = require('fs'); const path = require('path'); const SRC_DIR = 'src'; const DIST_DIR = 'dist'; const OUTPUT_FILE = path.join(DIST_DIR, 'power-flux-card.js'); // Ensure dist dir exists if (!fs.existsSync(DIST_DIR)){ fs.mkdirSync(DIST_DIR); } // Process Languages console.log('Processing languages...'); const langFiles = fs.readdirSync(SRC_DIR).filter(file => file.startsWith('lang-') && file.endsWith('.js')); let langsScript = ''; langFiles.forEach(file => { const langCode = file.replace('lang-', '').replace('.js', ''); let content = fs.readFileSync(path.join(SRC_DIR, file), 'utf8'); // Extract object content = content.replace('export default', '').trim(); if (content.endsWith(';')) { content = content.slice(0, -1); } const varName = langCode; langsScript += `const ${varName} = ${content};\n`; }); // Process Editor console.log('Processing editor...'); let editorContent = fs.readFileSync(path.join(SRC_DIR, 'power-flux-card-editor.js'), 'utf8'); // Remove imports editorContent = editorContent.replace(/import .* from .*/g, ''); // Process Main Card console.log('Processing main card...'); let mainContent = fs.readFileSync(path.join(SRC_DIR, 'power-flux-card.js'), 'utf8'); // Remove imports mainContent = mainContent.replace(/import .* from .*/g, ''); // Replace getConfigElement mainContent = mainContent.replace( /static async getConfigElement\(\) \{[\s\S]*?return document\.createElement\("power-flux-card-editor"\);\s*\}/, `static async getConfigElement() { return document.createElement("power-flux-card-editor"); }` ); // 5. Combine everything console.log('Writing output...'); const finalContent = ` /** * Power Flux Card (Bundled) * Generated by build.js */ ${langsScript} ${imagesScript} ${editorContent} ${mainContent} `; fs.writeFileSync(OUTPUT_FILE, finalContent); console.log(`Build complete: ${OUTPUT_FILE}`);