107 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| // Simple configuration validation script
 | |
| // This validates the wrangler.toml and Worker code without requiring API access
 | |
| 
 | |
| const fs = require('fs');
 | |
| const path = require('path');
 | |
| 
 | |
| console.log('🔍 Validating Hyperdrive Configuration Files');
 | |
| console.log('============================================');
 | |
| 
 | |
| // Check wrangler.toml
 | |
| console.log('\n📋 Checking wrangler.toml...');
 | |
| try {
 | |
|   const wranglerContent = fs.readFileSync('wrangler.toml', 'utf8');
 | |
|   console.log('✅ wrangler.toml exists');
 | |
|   
 | |
|   // Check for required fields
 | |
|   const checks = [
 | |
|     { field: 'name', regex: /name\s*=\s*["']([^"']+)["']/, required: true },
 | |
|     { field: 'main', regex: /main\s*=\s*["']([^"']+)["']/, required: true },
 | |
|     { field: 'compatibility_date', regex: /compatibility_date\s*=\s*["']([^"']+)["']/, required: true },
 | |
|     { field: 'nodejs_compat', regex: /nodejs_compat/, required: true },
 | |
|     { field: 'hyperdrive binding', regex: /binding\s*=\s*["']HYPERDRIVE["']/, required: true },
 | |
|     { field: 'hyperdrive id', regex: /id\s*=\s*["']ef43924d89064cddabfaccf06aadfab6["']/, required: true }
 | |
|   ];
 | |
|   
 | |
|   checks.forEach(check => {
 | |
|     if (check.regex.test(wranglerContent)) {
 | |
|       console.log(`   ✅ ${check.field} configured`);
 | |
|     } else {
 | |
|       console.log(`   ❌ ${check.field} missing or incorrect`);
 | |
|     }
 | |
|   });
 | |
|   
 | |
| } catch (error) {
 | |
|   console.log('❌ wrangler.toml not found or unreadable');
 | |
| }
 | |
| 
 | |
| // Check Worker code
 | |
| console.log('\n📝 Checking Worker code...');
 | |
| try {
 | |
|   const workerContent = fs.readFileSync('src/index.ts', 'utf8');
 | |
|   console.log('✅ src/index.ts exists');
 | |
|   
 | |
|   const codeChecks = [
 | |
|     { name: 'Hyperdrive binding usage', regex: /env\.HYPERDRIVE/ },
 | |
|     { name: 'Test connection endpoint', regex: /\/test-connection/ },
 | |
|     { name: 'Test query endpoint', regex: /\/test-query/ },
 | |
|     { name: 'PostgreSQL import', regex: /pg/ },
 | |
|     { name: 'Error handling', regex: /try\s*{[\s\S]*catch/ }
 | |
|   ];
 | |
|   
 | |
|   codeChecks.forEach(check => {
 | |
|     if (check.regex.test(workerContent)) {
 | |
|       console.log(`   ✅ ${check.name} implemented`);
 | |
|     } else {
 | |
|       console.log(`   ⚠️  ${check.name} not found`);
 | |
|     }
 | |
|   });
 | |
|   
 | |
| } catch (error) {
 | |
|   console.log('❌ src/index.ts not found or unreadable');
 | |
| }
 | |
| 
 | |
| // Check package.json
 | |
| console.log('\n📦 Checking package.json...');
 | |
| try {
 | |
|   const packageContent = fs.readFileSync('package.json', 'utf8');
 | |
|   const packageJson = JSON.parse(packageContent);
 | |
|   console.log('✅ package.json exists and is valid JSON');
 | |
|   
 | |
|   const deps = {
 | |
|     'pg': packageJson.dependencies?.pg,
 | |
|     '@cloudflare/workers-types': packageJson.devDependencies?.['@cloudflare/workers-types'],
 | |
|     '@types/pg': packageJson.devDependencies?.['@types/pg'],
 | |
|     'typescript': packageJson.devDependencies?.typescript,
 | |
|     'wrangler': packageJson.devDependencies?.wrangler
 | |
|   };
 | |
|   
 | |
|   Object.entries(deps).forEach(([dep, version]) => {
 | |
|     if (version) {
 | |
|       console.log(`   ✅ ${dep}: ${version}`);
 | |
|     } else {
 | |
|       console.log(`   ❌ ${dep}: not found`);
 | |
|     }
 | |
|   });
 | |
|   
 | |
| } catch (error) {
 | |
|   console.log('❌ package.json not found or invalid JSON');
 | |
| }
 | |
| 
 | |
| console.log('\n📊 Configuration Summary:');
 | |
| console.log('   - Project: hyperdrive-neondb-test');
 | |
| console.log('   - Hyperdrive ID: ef43924d89064cddabfaccf06aadfab6');
 | |
| console.log('   - Database: NeonDB (PostgreSQL)');
 | |
| console.log('   - Binding: HYPERDRIVE');
 | |
| console.log('   - Compatibility: nodejs_compat enabled');
 | |
| 
 | |
| console.log('\n🚀 Next Steps:');
 | |
| console.log('   1. Ensure you have proper Cloudflare API permissions');
 | |
| console.log('   2. Verify the Hyperdrive configuration exists in your Cloudflare dashboard');
 | |
| console.log('   3. Deploy with: wrangler deploy');
 | |
| console.log('   4. Test endpoints after deployment');
 | |
| 
 | |
| console.log('\n💡 Troubleshooting:');
 | |
| console.log('   - If API token has insufficient permissions, use: wrangler login');
 | |
| console.log('   - Check Hyperdrive exists: https://dash.cloudflare.com/[account-id]/workers/hyperdrive');
 | |
| console.log('   - Verify NeonDB connection string is correct in Hyperdrive config'); |