You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							103 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							103 lines
						
					
					
						
							3.1 KiB
						
					
					
				| #!/bin/bash | |
|  | |
| # Type Safety Pre-commit Check Script | |
| # This script ensures type safety before commits by running linting and type checking | |
| 
 | |
| set -e | |
| 
 | |
| echo "🔍 Running Type Safety Pre-commit Checks..." | |
| 
 | |
| # Colors for output | |
| RED='\033[0;31m' | |
| GREEN='\033[0;32m' | |
| YELLOW='\033[1;33m' | |
| NC='\033[0m' # No Color | |
| 
 | |
| # Function to print colored output | |
| print_status() { | |
|     echo -e "${GREEN}✅ $1${NC}" | |
| } | |
| 
 | |
| print_warning() { | |
|     echo -e "${YELLOW}⚠️  $1${NC}" | |
| } | |
| 
 | |
| print_error() { | |
|     echo -e "${RED}❌ $1${NC}" | |
| } | |
| 
 | |
| # Check if we're in the right directory | |
| if [ ! -f "package.json" ]; then | |
|     print_error "Must run from project root directory" | |
|     exit 1 | |
| fi | |
| 
 | |
| # Step 1: Run ESLint with TypeScript rules | |
| print_status "Running ESLint TypeScript checks..." | |
| if npm run lint > /dev/null 2>&1; then | |
|     print_status "ESLint passed - no type safety issues found" | |
| else | |
|     print_error "ESLint failed - type safety issues detected" | |
|     echo "" | |
|     echo "Running lint with details..." | |
|     npm run lint | |
|     echo "" | |
|     print_error "Please fix the above type safety issues before committing" | |
|     exit 1 | |
| fi | |
| 
 | |
| # Step 2: Run TypeScript type checking | |
| print_status "Running TypeScript type checking..." | |
| if npm run type-check > /dev/null 2>&1; then | |
|     print_status "TypeScript compilation passed" | |
| else | |
|     print_error "TypeScript compilation failed" | |
|     echo "" | |
|     echo "Running type check with details..." | |
|     npm run type-check | |
|     echo "" | |
|     print_error "Please fix the above TypeScript errors before committing" | |
|     exit 1 | |
| fi | |
| 
 | |
| # Step 3: Check for any remaining 'any' types | |
| print_status "Scanning for any remaining 'any' types..." | |
| ANY_COUNT=$(grep -r "any" src/ --include="*.ts" --include="*.vue" | grep -v "// eslint-disable" | grep -v "eslint-disable-next-line" | wc -l) | |
| 
 | |
| if [ "$ANY_COUNT" -eq 0 ]; then | |
|     print_status "No 'any' types found in source code" | |
| else | |
|     print_warning "Found $ANY_COUNT instances of 'any' type usage" | |
|     echo "" | |
|     echo "Instances found:" | |
|     grep -r "any" src/ --include="*.ts" --include="*.vue" | grep -v "// eslint-disable" | grep -v "eslint-disable-next-line" || true | |
|     echo "" | |
|     print_error "Please replace 'any' types with proper TypeScript types before committing" | |
|     exit 1 | |
| fi | |
| 
 | |
| # Step 4: Verify database migration status | |
| print_status "Checking database migration status..." | |
| if grep -r "databaseUtil" src/ --include="*.ts" --include="*.vue" > /dev/null 2>&1; then | |
|     print_warning "Found databaseUtil imports - ensure migration is complete" | |
|     echo "" | |
|     echo "Files with databaseUtil imports:" | |
|     grep -r "databaseUtil" src/ --include="*.ts" --include="*.vue" | head -5 || true | |
|     echo "" | |
|     print_warning "Consider completing database migration to PlatformServiceMixin" | |
| else | |
|     print_status "No databaseUtil imports found - migration appears complete" | |
| fi | |
| 
 | |
| # All checks passed | |
| echo "" | |
| print_status "All type safety checks passed! 🎉" | |
| print_status "Your code is ready for commit" | |
| echo "" | |
| echo "📚 Remember to follow the Type Safety Guidelines:" | |
| echo "   - docs/typescript-type-safety-guidelines.md" | |
| echo "   - Use proper error handling patterns" | |
| echo "   - Leverage existing type definitions" | |
| echo "   - Run 'npm run lint-fix' for automatic fixes" | |
| 
 | |
| exit 0
 | |
| 
 |