UNPKG

recoder-code

Version:

Complete AI-powered development platform with ML model training, plugin registry, real-time collaboration, monitoring, infrastructure automation, and enterprise deployment capabilities

147 lines (146 loc) 4.46 kB
/** * Package Service - Handles plugin package operations */ /// <reference types="node" /> /// <reference types="node" /> /// <reference types="node" /> import { Package } from '../entities/Package'; import { PackageVersion } from '../entities/PackageVersion'; import { User } from '../entities/User'; export interface PackageStats { packageName: string; totalDownloads: number; monthlyDownloads: number; weeklyDownloads: number; lastUpdateDate: Date; } export interface PublishPackageData { name: string; version: string; description?: string; keywords?: string[]; author?: { name: string; email?: string; url?: string; }; license?: string; homepage?: string; repository?: { type: string; url: string; }; bugs?: { url?: string; email?: string; }; main?: string; engines?: { node?: string; 'recoder-code'?: string; }; dependencies?: Record<string, string>; devDependencies?: Record<string, string>; peerDependencies?: Record<string, string>; contributes?: { commands?: any[]; menus?: any[]; keybindings?: any[]; languages?: any[]; themes?: any[]; }; activationEvents?: string[]; categories?: string[]; tags?: string[]; dist?: { tarball: string; shasum: string; integrity?: string; }; readme?: string; _attachments?: Record<string, any>; } export interface SearchOptions { query?: string; category?: string; keywords?: string[]; author?: string; license?: string; minDownloads?: number; sortBy?: 'relevance' | 'downloads' | 'updated' | 'created'; sortOrder?: 'asc' | 'desc'; limit?: number; offset?: number; } export declare class PackageService { private packageRepo; private versionRepo; private userRepo; private securityService; private storageService; private validationService; constructor(); publishPackage(packageData: PublishPackageData, user: User, tarballBuffer?: Buffer): Promise<{ success: boolean; package?: Package; version?: PackageVersion; errors?: string[]; }>; getPackage(name: string): Promise<Package | null>; getPackageVersion(name: string, version: string): Promise<PackageVersion | null>; searchPackages(options: SearchOptions): Promise<{ packages: Package[]; total: number; page: number; limit: number; }>; downloadPackage(name: string, version: string): Promise<{ success: boolean; stream?: NodeJS.ReadableStream; filename?: string; contentType?: string; size?: number; error?: string; }>; unpublishPackage(name: string, version: string, user: User): Promise<{ success: boolean; error?: string; }>; deletePackage(name: string, user: User): Promise<{ success: boolean; error?: string; }>; getPackageStats(name: string): Promise<PackageStats | null>; getPopularPackages(limit?: number): Promise<Package[]>; getRecentlyUpdated(limit?: number): Promise<Package[]>; addMaintainer(packageName: string, username: string, currentUser: User): Promise<{ success: boolean; error?: string; }>; removeMaintainer(packageName: string, username: string, currentUser: User): Promise<{ success: boolean; error?: string; }>; private updatePackageStats; getLatestVersion(packageName: string): Promise<string | null>; getVersions(packageName: string): Promise<string[]>; getPackageVersions(packageName: string): Promise<PackageVersion[]>; incrementDownloadCount(packageName: string, version: string): Promise<void>; unpublishVersion(packageName: string, version: string, user: User): Promise<{ success: boolean; error?: string; }>; deprecateVersion(packageName: string, version: string, user: User, message?: string): Promise<{ success: boolean; error?: string; }>; addCollaborator(packageName: string, username: string, currentUser: User): Promise<{ success: boolean; error?: string; }>; removeCollaborator(packageName: string, username: string, currentUser: User): Promise<{ success: boolean; error?: string; }>; getPackageCount(): Promise<number>; }