UNPKG

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
/** * 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; }