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