recoder-code
Version:
🚀 AI-powered development platform - Chat with 32+ models, build projects, automate workflows. Free models included!
96 lines (95 loc) • 2.7 kB
TypeScript
/**
* ValidationService
* Handles package validation, integrity checks, and quality analysis
*/
/// <reference types="node" />
/// <reference types="node" />
import { Config } from '../config';
export interface ValidationResult {
valid: boolean;
errors: ValidationError[];
warnings: ValidationWarning[];
quality_score: number;
size_analysis: SizeAnalysis;
dependency_analysis: DependencyAnalysis;
metadata_analysis: MetadataAnalysis;
}
export interface ValidationError {
code: string;
message: string;
field?: string;
severity: 'error' | 'critical';
}
export interface ValidationWarning {
code: string;
message: string;
field?: string;
suggestion?: string;
}
export interface SizeAnalysis {
total_size: number;
unpacked_size: number;
file_count: number;
large_files: Array<{
path: string;
size: number;
}>;
excluded_files: string[];
size_score: number;
}
export interface DependencyAnalysis {
dependency_count: number;
dev_dependency_count: number;
peer_dependency_count: number;
outdated_dependencies: Array<{
name: string;
current: string;
latest: string;
}>;
circular_dependencies: string[][];
dependency_score: number;
}
export interface MetadataAnalysis {
has_readme: boolean;
has_license: boolean;
has_changelog: boolean;
has_tests: boolean;
has_types: boolean;
description_quality: number;
keyword_relevance: number;
metadata_score: number;
}
export interface PackageData {
packageJson: any;
files: Map<string, Buffer>;
size: number;
integrity: string;
}
export declare class ValidationService {
private config;
private readonly maxPackageSize;
private readonly maxFileCount;
private readonly maxFileSize;
private readonly logger;
constructor(config: Config);
validatePackage(packageBuffer: Buffer, expectedName?: string, expectedVersion?: string): Promise<ValidationResult>;
validateTarball(tarballBuffer: Buffer): Promise<ValidationResult>;
private extractAndParsePackage;
private validatePackageJson;
private validateDependencies;
private analyzeSizes;
private analyzeDependencies;
private analyzeMetadata;
private validateFileStructure;
private validateSecurity;
private isValidPackageName;
private isDangerousDependency;
private isUnnecessaryFile;
private isSuspiciousFile;
private calculateSizeScore;
private calculateDependencyScore;
private calculateDescriptionQuality;
private calculateKeywordRelevance;
private calculateMetadataScore;
private calculateQualityScore;
}