UNPKG

@re-shell/cli

Version:

Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja

161 lines (160 loc) 4.73 kB
import { EventEmitter } from 'events'; import { Template, TemplateCategory } from './template-engine'; export interface TemplateUsageEvent { id: string; templateId: string; version: string; eventType: UsageEventType; timestamp: Date; duration?: number; success: boolean; error?: string; context: { projectName?: string; projectPath?: string; variables?: Record<string, any>; platform: string; nodeVersion: string; cliVersion: string; }; metadata?: Record<string, any>; } export declare enum UsageEventType { INSTALLED = "installed", CREATED = "created", UPDATED = "updated", REMOVED = "removed", VALIDATED = "validated", PUBLISHED = "published", DOWNLOADED = "downloaded", FAILED = "failed", CUSTOMIZED = "customized" } export interface TemplateMetrics { templateId: string; totalUsage: number; successRate: number; averageDuration: number; errorRate: number; popularVariables: Array<{ name: string; values: any[]; count: number; }>; platformDistribution: Record<string, number>; versionDistribution: Record<string, number>; timeSeriesData: TimeSeriesData[]; userSegments: UserSegment[]; } export interface TimeSeriesData { date: Date; usage: number; success: number; errors: number; uniqueUsers: number; } export interface UserSegment { name: string; description: string; userCount: number; percentage: number; characteristics: Record<string, any>; } export interface AnalyticsReport { period: { start: Date; end: Date; }; summary: { totalEvents: number; uniqueTemplates: number; uniqueUsers: number; successRate: number; averageDuration: number; }; topTemplates: Array<{ templateId: string; usage: number; successRate: number; trend: 'up' | 'down' | 'stable'; }>; categoryBreakdown: Record<TemplateCategory, number>; errorAnalysis: Array<{ error: string; count: number; templates: string[]; suggestions: string[]; }>; insights: Insight[]; } export interface Insight { type: InsightType; severity: 'info' | 'warning' | 'critical'; title: string; description: string; data?: any; recommendations?: string[]; } export declare enum InsightType { PERFORMANCE = "performance", RELIABILITY = "reliability", ADOPTION = "adoption", ERRORS = "errors", TRENDS = "trends", OPPORTUNITIES = "opportunities" } export interface AnalyticsConfig { enabled?: boolean; anonymize?: boolean; storageLimit?: number; retentionDays?: number; syncInterval?: number; remoteEndpoint?: string; includeSystemInfo?: boolean; trackVariables?: boolean; } export declare class TemplateAnalytics extends EventEmitter { private dataDir; private config; private events; private metricsCache; private storagePath; private syncInterval?; private sessionId; private defaultConfig; constructor(dataDir: string, config?: AnalyticsConfig); private initialize; private loadEvents; private cleanupOldEvents; private startSyncing; trackUsage(template: Template, eventType: UsageEventType, context?: Partial<TemplateUsageEvent['context']>, metadata?: Record<string, any>): Promise<void>; trackError(template: Template, error: Error, context?: Partial<TemplateUsageEvent['context']>): Promise<void>; getMetrics(templateId: string): Promise<TemplateMetrics | null>; private calculateMetrics; private generateTimeSeriesData; private analyzeUserSegments; generateReport(startDate?: Date, endDate?: Date, templateIds?: string[]): Promise<AnalyticsReport>; private analyzeErrors; private getErrorSuggestions; private generateInsights; private calculateTrend; private groupBy; private anonymizeContext; private anonymizePath; private hashString; private isSensitiveVariable; private persistEvents; private checkStorageLimit; private syncToRemote; private generateEventId; private generateSessionId; private getCliVersion; isEnabled(): boolean; setEnabled(enabled: boolean): void; exportData(format?: 'json' | 'csv'): Promise<string>; clearData(): Promise<void>; stop(): void; } export declare function createTemplateAnalytics(dataDir: string, config?: AnalyticsConfig): TemplateAnalytics; export declare function getGlobalTemplateAnalytics(): TemplateAnalytics; export declare function setGlobalTemplateAnalytics(analytics: TemplateAnalytics): void;