mirror of
https://github.com/elder-plinius/P4RS3LT0NGV3.git
synced 2026-07-12 15:36:32 +02:00
dc10a90851
- Implement tool registry system with individual tool modules - Reorganize transformers into categorized source modules - Remove emojiLibrary.js, consolidate into EmojiUtils and emojiData - Fix mobile close button and tooltip functionality - Add build system for transforms and emoji data - Migrate from Python backend to pure JavaScript - Add comprehensive documentation and testing - Improve code organization and maintainability - Ignore generated files (transforms-bundle.js, emojiData.js)
72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Build Script for Transformers Index
|
|
* Dynamically generates index.js with all transformer imports
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const transformersDir = path.join(__dirname, '..', 'src', 'transformers');
|
|
const outputPath = path.join(transformersDir, 'index.js');
|
|
|
|
// Files to skip
|
|
const skipFiles = ['BaseTransformer.js', 'index.js', 'loader.js', 'loader-node.js', 'README.md'];
|
|
|
|
// Get all category directories
|
|
const categoryDirs = fs.readdirSync(transformersDir, { withFileTypes: true })
|
|
.filter(dirent => dirent.isDirectory())
|
|
.map(dirent => dirent.name)
|
|
.sort();
|
|
|
|
let imports = [];
|
|
let transformNames = [];
|
|
|
|
// Discover transforms from each category directory
|
|
for (const categoryDir of categoryDirs) {
|
|
const categoryPath = path.join(transformersDir, categoryDir);
|
|
const files = fs.readdirSync(categoryPath)
|
|
.filter(file => file.endsWith('.js') && !skipFiles.includes(file))
|
|
.sort();
|
|
|
|
for (const file of files) {
|
|
// Convert filename to transform name (kebab-case to snake_case)
|
|
const transformName = file.replace('.js', '').replace(/-/g, '_');
|
|
const filePath = `./${categoryDir}/${file}`;
|
|
|
|
imports.push(`import ${transformName} from '${filePath}';`);
|
|
transformNames.push(transformName);
|
|
}
|
|
}
|
|
|
|
// Generate the index.js content
|
|
const output = `// Transformers Index - Auto-generated
|
|
// This file is automatically generated by build/build-index.js
|
|
// Do not edit manually - run 'npm run build:index' to regenerate
|
|
|
|
${imports.join('\n')}
|
|
|
|
// Combine all transforms
|
|
const transforms = {
|
|
${transformNames.map(name => ` ${name}`).join(',\n')}
|
|
};
|
|
|
|
// Export for both ES6 modules and browser global
|
|
export default transforms;
|
|
|
|
// Also expose as window.transforms for backward compatibility
|
|
if (typeof window !== 'undefined') {
|
|
window.transforms = transforms;
|
|
window.encoders = transforms; // alias
|
|
}
|
|
`;
|
|
|
|
// Write the file
|
|
fs.writeFileSync(outputPath, output, 'utf8');
|
|
|
|
console.log(`✨ Generated: ${outputPath}`);
|
|
console.log(`📦 Total transforms: ${transformNames.length}`);
|
|
console.log(`📁 Categories: ${categoryDirs.join(', ')}`);
|
|
|