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

87 lines (86 loc) 2.7 kB
/** * Analytics Service - Handles tracking and analytics for packages */ import { Package } from '../entities/Package'; export interface AnalyticsData { downloads: { total: number; daily: number; weekly: number; monthly: number; yearly: number; }; packages: { total: number; active: number; deprecated: number; }; users: { total: number; active: number; }; trends: { popularPackages: Package[]; trendingPackages: Package[]; recentlyUpdated: Package[]; }; } export interface PackageAnalytics { packageId: string; packageName: string; downloads: { total: number; daily: Record<string, number>; weekly: Record<string, number>; monthly: Record<string, number>; }; versions: { total: number; latest: string; popular: Array<{ version: string; downloads: number; }>; }; dependencies: { count: number; dependents: number; }; quality: { score: number; metrics: Record<string, number>; }; } export declare class AnalyticsService { private packageRepo; private downloadRepo; private userRepo; private logger; constructor(); getGlobalAnalytics(): Promise<AnalyticsData>; getPackageAnalytics(packageName: string): Promise<PackageAnalytics | null>; recordDownload(packageId: string, version: string, userId?: string, ip?: string): Promise<void>; private getTotalDownloads; private getDailyDownloads; private getWeeklyDownloads; private getMonthlyDownloads; private getYearlyDownloads; private getPopularPackages; private getTrendingPackages; private getRecentlyUpdatedPackages; private getPackageDownloads; private getPackageDailyDownloads; private getPackageWeeklyDownloads; private getPackageMonthlyDownloads; private getPackageDependents; private getPackageQualityScore; private getPopularVersions; updatePackageQuality(packageId: string, metrics: Record<string, number>): Promise<void>; getDownloadTrends(packageId: string, period: 'day' | 'week' | 'month' | 'year'): Promise<Record<string, number>>; trackPackageView(packageId: string, userId?: string): Promise<void>; trackVersionView(packageId: string, version: string, userId?: string): Promise<void>; trackDownload(packageId: string, version: string, userId?: string): Promise<void>; getPackageStats(packageId: string): Promise<any>; getDownloadStats(packageId: string, period: string): Promise<any>; private getStartDateForPeriod; }