mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 18:17:13 +08:00 
			
		
		
		
	 dc4eccb85c
			
		
	
	dc4eccb85c
	
	
	
		
			
			Co-authored-by: PiX <69745008+pixincreate@users.noreply.github.com> Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| #!/usr/bin/env node
 | |
| /* eslint-disable no-console */
 | |
| 
 | |
| import fs from "fs";
 | |
| 
 | |
| const DASHBOARD_DIR = "dashboard";
 | |
| const DIST_DIR = "dist";
 | |
| 
 | |
| // Create dist directory
 | |
| function createDirs() {
 | |
|   if (!fs.existsSync(DIST_DIR)) {
 | |
|     fs.mkdirSync(DIST_DIR, { recursive: true });
 | |
|   }
 | |
| }
 | |
| 
 | |
| // Minify JavaScript
 | |
| function minifyJS(inputPath, outputPath) {
 | |
|   let content = fs.readFileSync(inputPath, "utf8");
 | |
| 
 | |
|   // Preserve eslint disable comments
 | |
|   const eslintComments = [];
 | |
|   content = content.replace(/\/\*\s*eslint-disable[\s\S]*?\*\//g, (match) => {
 | |
|     eslintComments.push(match);
 | |
|     return `/*ESLINT_PRESERVE_${eslintComments.length - 1}*/`;
 | |
|   });
 | |
|   content = content.replace(/\/\*\s*global[\s\S]*?\*\//g, (match) => {
 | |
|     eslintComments.push(match);
 | |
|     return `/*ESLINT_PRESERVE_${eslintComments.length - 1}*/`;
 | |
|   });
 | |
| 
 | |
|   // Basic minification
 | |
|   content = content
 | |
|     .replace(/\/\*[\s\S]*?\*\//g, "") // Remove other block comments
 | |
|     .replace(/\/\/.*$/gm, "") // Remove line comments
 | |
|     .replace(/\s+/g, " ") // Replace multiple spaces with single space
 | |
|     .replace(/;\s*}/g, ";}") // Remove space before closing brace
 | |
|     .replace(/{\s*/g, "{") // Remove space after opening brace
 | |
|     .replace(/}\s*/g, "}") // Remove space after closing brace
 | |
|     .trim();
 | |
| 
 | |
|   // Restore eslint comments
 | |
|   eslintComments.forEach((comment, index) => {
 | |
|     content = content.replace(`/*ESLINT_PRESERVE_${index}*/`, comment);
 | |
|   });
 | |
| 
 | |
|   fs.writeFileSync(outputPath, content);
 | |
| }
 | |
| 
 | |
| // Minify CSS
 | |
| function minifyCSS(inputPath, outputPath) {
 | |
|   let content = fs.readFileSync(inputPath, "utf8");
 | |
| 
 | |
|   // Basic CSS minification
 | |
|   content = content
 | |
|     .replace(/\/\*[\s\S]*?\*\//g, "") // Remove comments
 | |
|     .replace(/\s+/g, " ") // Replace multiple spaces
 | |
|     .replace(/;\s*}/g, ";}") // Remove space before closing brace
 | |
|     .replace(/{\s*/g, "{") // Remove space after opening brace
 | |
|     .replace(/}\s*/g, "}") // Remove space after closing brace
 | |
|     .replace(/:\s*/g, ":") // Remove space after colon
 | |
|     .replace(/;\s*/g, ";") // Remove space after semicolon
 | |
|     .trim();
 | |
| 
 | |
|   fs.writeFileSync(outputPath, content);
 | |
| }
 | |
| 
 | |
| // Process HTML with minified references
 | |
| function processHTML() {
 | |
|   let content = fs.readFileSync(`${DASHBOARD_DIR}/index.html`, "utf8");
 | |
| 
 | |
|   // Update references to minified files
 | |
|   content = content
 | |
|     .replace("dashboard.js", "dashboard.min.js")
 | |
|     .replace("styles-minimal.css", "styles-minimal.min.css");
 | |
| 
 | |
|   fs.writeFileSync(`${DIST_DIR}/index.html`, content);
 | |
| }
 | |
| 
 | |
| // Main build function
 | |
| function build() {
 | |
|   console.log("Building dashboard...");
 | |
| 
 | |
|   createDirs();
 | |
| 
 | |
|   // Minify files
 | |
|   minifyJS(`${DASHBOARD_DIR}/dashboard.js`, `${DIST_DIR}/dashboard.min.js`);
 | |
|   minifyCSS(
 | |
|     `${DASHBOARD_DIR}/styles-minimal.css`,
 | |
|     `${DIST_DIR}/styles-minimal.min.css`
 | |
|   );
 | |
| 
 | |
|   // Process HTML
 | |
|   processHTML();
 | |
| 
 | |
|   // Copy vercel.json if it exists
 | |
|   if (fs.existsSync(`${DASHBOARD_DIR}/vercel.json`)) {
 | |
|     fs.copyFileSync(`${DASHBOARD_DIR}/vercel.json`, `${DIST_DIR}/vercel.json`);
 | |
|   }
 | |
| 
 | |
|   console.log("✅ Build completed! Files ready in ./dist directory");
 | |
| }
 | |
| 
 | |
| // Main script logic
 | |
| build();
 |