{"version":3,"file":"index.mjs","sources":["../../../../src/lib/performance/monitoring/index.ts"],"sourcesContent":["/**\n * @file Performance Monitoring Module\n * @description Comprehensive performance monitoring infrastructure for React applications.\n *\n * Provides real-time performance tracking, regression detection, budget enforcement,\n * and Real User Monitoring (RUM) capabilities.\n *\n * @example\n * ```typescript\n * import {\n *   // Vitals Collection\n *   EnhancedVitalsCollector,\n *   getEnhancedVitalsCollector,\n *\n *   // Performance Reporting\n *   PerformanceReporter,\n *   getPerformanceReporter,\n *\n *   // Regression Detection\n *   RegressionDetector,\n *   getRegressionDetector,\n *   recordPerformanceSample,\n *\n *   // Budget Enforcement\n *   BudgetEnforcer,\n *   getBudgetEnforcer,\n *   enforceBudget,\n *\n *   // Real User Monitoring\n *   RealUserMonitoring,\n *   initRUM,\n *   trackCustomEvent,\n * } from '@/lib/performance/monitoring';\n * ```\n */\n\n// ============================================================================\n// Enhanced Vitals Collector\n// ============================================================================\nexport {\n  // Class\n  EnhancedVitalsCollector,\n  // Factory functions\n  getEnhancedVitalsCollector,\n  resetEnhancedVitalsCollector,\n  // Constants\n  DEFAULT_THRESHOLDS,\n  // Types\n  type MetricName,\n  type MetricRating,\n  type CollectedMetric,\n  type MetricAttribution,\n  type MetricThresholds,\n  type VitalsCollectionConfig,\n  type MetricCallback,\n} from './vitals-collector';\n\n// ============================================================================\n// Performance Reporter\n// ============================================================================\nexport {\n  // Class\n  PerformanceReporter,\n  // Factory functions\n  getPerformanceReporter,\n  resetPerformanceReporter,\n  // Types\n  type ReportFormat,\n  type ReportDestination,\n  type ReportMetric,\n  type PerformanceReport,\n  type ReportSummary,\n  type ReportContext,\n  type PerformanceReporterConfig,\n  type AlertRule,\n} from './performance-reporter';\n\n// ============================================================================\n// Regression Detector\n// ============================================================================\nexport {\n  // Class\n  RegressionDetector,\n  // Factory functions\n  getRegressionDetector,\n  resetRegressionDetector,\n  // Convenience functions\n  recordPerformanceSample,\n  analyzePerformanceTrend,\n  getRegressionSummary,\n  // Types\n  type RegressionSeverity,\n  type RegressionStatus,\n  type MetricSample,\n  type MetricBaseline,\n  type RegressionEvent,\n  type TrendAnalysis,\n  type AnomalyResult,\n  type RegressionDetectorConfig,\n  type DetectorSummary,\n} from './regression-detector';\n\n// ============================================================================\n// Budget Enforcer\n// ============================================================================\nexport {\n  // Class\n  BudgetEnforcer,\n  // Factory functions\n  getBudgetEnforcer,\n  resetBudgetEnforcer,\n  // Convenience functions\n  checkBudget,\n  enforceBudget,\n  getComplianceReport,\n  isPerformanceDegraded,\n  isDegradationActive,\n  // Constants\n  DEFAULT_VITALS_BUDGETS,\n  DEFAULT_BUNDLE_BUDGETS,\n  DEFAULT_RUNTIME_BUDGETS,\n  // Types\n  type BudgetCategory,\n  type BudgetSeverity,\n  type EnforcementMode,\n  type DegradationAction,\n  type BudgetDefinition,\n  type EnforcementResult,\n  type BudgetViolation,\n  type BudgetComplianceReport,\n  type ComplianceReport,\n  type BudgetEnforcerConfig,\n} from './budget-enforcer';\n\n// ============================================================================\n// Real User Monitoring\n// ============================================================================\nexport {\n  // Class\n  RealUserMonitoring,\n  // Factory functions\n  getRUM,\n  initRUM,\n  resetRUM,\n  // Convenience functions\n  trackPageView,\n  trackCustomEvent,\n  trackRUMError,\n  setRUMUserId,\n  getRUMSessionSummary,\n  // Types\n  type SessionStatus,\n  type RUMEventType,\n  type UserSession,\n  type DeviceInfo,\n  type UTMParams,\n  type PageViewEvent,\n  type InteractionEvent,\n  type ErrorEvent,\n  type ResourceEvent,\n  type RageClickEvent,\n  type FormAbandonmentEvent,\n  type RUMEvent,\n  type RUMConfig,\n  type SessionSummary,\n} from './real-user-monitoring';\n\n// ============================================================================\n// Unified Initialization\n// ============================================================================\n\nimport {\n  getEnhancedVitalsCollector,\n  type VitalsCollectionConfig,\n} from './vitals-collector';\nimport {\n  getPerformanceReporter,\n  type PerformanceReporterConfig,\n} from './performance-reporter';\nimport {\n  getRegressionDetector,\n  type RegressionDetectorConfig,\n} from './regression-detector';\nimport {\n  getBudgetEnforcer,\n  type BudgetEnforcerConfig,\n} from './budget-enforcer';\nimport { getRUM, type RUMConfig } from './real-user-monitoring';\n\n/**\n * Unified monitoring configuration\n */\nexport interface MonitoringSystemConfig {\n  /** Enable monitoring system */\n  enabled?: boolean;\n  /** Vitals collection configuration */\n  vitals?: Partial<VitalsCollectionConfig>;\n  /** Reporter configuration */\n  reporter?: Partial<PerformanceReporterConfig>;\n  /** Regression detection configuration */\n  regression?: Partial<RegressionDetectorConfig>;\n  /** Budget enforcement configuration */\n  budget?: Partial<BudgetEnforcerConfig>;\n  /** RUM configuration */\n  rum?: Partial<RUMConfig>;\n}\n\n/**\n * Monitoring system instance references\n */\nexport interface MonitoringSystem {\n  /** Vitals collector */\n  vitals: ReturnType<typeof getEnhancedVitalsCollector>;\n  /** Performance reporter */\n  reporter: ReturnType<typeof getPerformanceReporter>;\n  /** Regression detector */\n  regression: ReturnType<typeof getRegressionDetector>;\n  /** Budget enforcer */\n  budget: ReturnType<typeof getBudgetEnforcer>;\n  /** RUM instance */\n  rum: ReturnType<typeof getRUM>;\n  /** Cleanup function */\n  cleanup: () => void;\n}\n\n/**\n * Initialize the complete monitoring system\n *\n * @example\n * ```typescript\n * const monitoring = initMonitoringSystem({\n *   vitals: { enabled: true, sampleRate: 0.5 },\n *   reporter: { destination: 'endpoint', endpointUrl: '/api/perf' },\n *   regression: { zScoreThreshold: 2.5 },\n *   budget: { mode: 'enforce', autoDegradation: true },\n *   rum: { trackErrors: true, trackClicks: true },\n * });\n *\n * // Later...\n * monitoring.cleanup();\n * ```\n */\nexport function initMonitoringSystem(\n  config: MonitoringSystemConfig = {}\n): MonitoringSystem {\n  const enabled = config.enabled !== false;\n\n  if (!enabled) {\n    // Return disabled instances\n    const disabledConfig = { enabled: false };\n    return {\n      vitals: getEnhancedVitalsCollector(disabledConfig),\n      reporter: getPerformanceReporter(disabledConfig as Partial<PerformanceReporterConfig>),\n      regression: getRegressionDetector(disabledConfig),\n      budget: getBudgetEnforcer(disabledConfig as Partial<BudgetEnforcerConfig>),\n      rum: getRUM(disabledConfig),\n      cleanup: () => {},\n    };\n  }\n\n  // Initialize components\n  const vitals = getEnhancedVitalsCollector(config.vitals);\n  const reporter = getPerformanceReporter(config.reporter);\n  const regression = getRegressionDetector(config.regression);\n  const budget = getBudgetEnforcer(config.budget);\n  const rum = getRUM(config.rum);\n\n  // Start collectors\n  const vitalsCleanup = vitals.init();\n  const rumCleanup = rum.init();\n\n  // Wire up integrations\n  vitals.subscribe((metric) => {\n    // Feed metrics to regression detector\n    regression.recordSample({\n      name: metric.name,\n      value: metric.value,\n      timestamp: metric.timestamp,\n    });\n\n    // Feed metrics to budget enforcer\n    budget.record(metric.name, metric.value);\n  });\n\n  // Cleanup function\n  const cleanup = (): void => {\n    vitalsCleanup();\n    rumCleanup();\n    regression.reset();\n    budget.reset();\n  };\n\n  return {\n    vitals,\n    reporter,\n    regression,\n    budget,\n    rum,\n    cleanup,\n  };\n}\n\n/**\n * Quick start: Initialize monitoring with sensible defaults\n *\n * @example\n * ```typescript\n * // In main.tsx\n * const cleanup = await quickStartMonitoring({\n *   debug: import.meta.env.DEV,\n *   endpoint: '/api/monitoring',\n *   sampleRate: import.meta.env.PROD ? 0.1 : 1.0,\n * });\n * ```\n */\nexport function quickStartMonitoring(options: {\n  /** Enable debug mode */\n  debug?: boolean;\n  /** Analytics endpoint */\n  endpoint?: string;\n  /** Sample rate (0-1) */\n  sampleRate?: number;\n  /** Callback when performance regression detected */\n  onRegression?: (event: import('./regression-detector').RegressionEvent) => void;\n  /** Callback when budget violated */\n  onBudgetViolation?: (violation: import('./budget-enforcer').BudgetViolation) => void;\n} = {}): () => void {\n  const {\n    debug = false,\n    endpoint,\n    sampleRate = 1.0,\n    onRegression,\n    onBudgetViolation,\n  } = options;\n\n  const system = initMonitoringSystem({\n    vitals: {\n      enabled: true,\n      sampleRate,\n      debug,\n      reportEndpoint: endpoint,\n    },\n    reporter: {\n      enabled: true,\n      destination: (endpoint !== null && endpoint !== undefined) ? 'endpoint' : 'console',\n      endpointUrl: endpoint,\n      debug,\n    },\n    regression: {\n      enabled: true,\n      debug,\n      onRegression,\n    },\n    budget: {\n      enabled: true,\n      mode: 'warn',\n      debug,\n      onViolation: onBudgetViolation,\n    },\n    rum: {\n      enabled: true,\n      sampleRate,\n      debug,\n      endpoint,\n    },\n  });\n\n  return system.cleanup;\n}\n\n// ============================================================================\n// Type Aliases for Convenience\n// ============================================================================\n\n// Note: All primary types are exported from their respective modules above.\n// These aliases provide semantic naming for cross-module usage:\n//\n// - VitalMetricName -> MetricName (from vitals-collector)\n// - VitalCollectedMetric -> CollectedMetric (from vitals-collector)\n// - MonitoringReport -> PerformanceReport (from performance-reporter)\n// - MonitoringReportMetric -> ReportMetric (from performance-reporter)\n// - MonitoringRegressionEvent -> RegressionEvent (from regression-detector)\n// - MonitoringTrendAnalysis -> TrendAnalysis (from regression-detector)\n// - MonitoringBudget -> BudgetDefinition (from budget-enforcer)\n// - MonitoringComplianceReport -> ComplianceReport (from budget-enforcer)\n// - MonitoringSession -> UserSession (from real-user-monitoring)\n// - MonitoringRUMEvent -> RUMEvent (from real-user-monitoring)\n"],"names":["initMonitoringSystem","config","disabledConfig","getEnhancedVitalsCollector","getPerformanceReporter","getRegressionDetector","getBudgetEnforcer","getRUM","vitals","reporter","regression","budget","rum","vitalsCleanup","rumCleanup","metric","quickStartMonitoring","options","debug","endpoint","sampleRate","onRegression","onBudgetViolation"],"mappings":";;;;;;;;;;AAkPO,SAASA,EACdC,IAAiC,IACf;AAGlB,MAAI,EAFYA,EAAO,YAAY,KAErB;AAEZ,UAAMC,IAAiB,EAAE,SAAS,GAAA;AAClC,WAAO;AAAA,MACL,QAAQC,EAA2BD,CAAc;AAAA,MACjD,UAAUE,EAAuBF,CAAoD;AAAA,MACrF,YAAYG,EAAsBH,CAAc;AAAA,MAChD,QAAQI,EAAkBJ,CAA+C;AAAA,MACzE,KAAKK,EAAOL,CAAc;AAAA,MAC1B,SAAS,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,EAEpB;AAGA,QAAMM,IAASL,EAA2BF,EAAO,MAAM,GACjDQ,IAAWL,EAAuBH,EAAO,QAAQ,GACjDS,IAAaL,EAAsBJ,EAAO,UAAU,GACpDU,IAASL,EAAkBL,EAAO,MAAM,GACxCW,IAAML,EAAON,EAAO,GAAG,GAGvBY,IAAgBL,EAAO,KAAA,GACvBM,IAAaF,EAAI,KAAA;AAGvB,SAAAJ,EAAO,UAAU,CAACO,MAAW;AAE3B,IAAAL,EAAW,aAAa;AAAA,MACtB,MAAMK,EAAO;AAAA,MACb,OAAOA,EAAO;AAAA,MACd,WAAWA,EAAO;AAAA,IAAA,CACnB,GAGDJ,EAAO,OAAOI,EAAO,MAAMA,EAAO,KAAK;AAAA,EACzC,CAAC,GAUM;AAAA,IACL,QAAAP;AAAA,IACA,UAAAC;AAAA,IACA,YAAAC;AAAA,IACA,QAAAC;AAAA,IACA,KAAAC;AAAA,IACA,SAbc,MAAY;AAC1B,MAAAC,EAAA,GACAC,EAAA,GACAJ,EAAW,MAAA,GACXC,EAAO,MAAA;AAAA,IACT;AAAA,EAQE;AAEJ;AAeO,SAASK,EAAqBC,IAWjC,IAAgB;AAClB,QAAM;AAAA,IACJ,OAAAC,IAAQ;AAAA,IACR,UAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,cAAAC;AAAA,IACA,mBAAAC;AAAA,EAAA,IACEL;AAkCJ,SAhCejB,EAAqB;AAAA,IAClC,QAAQ;AAAA,MACN,SAAS;AAAA,MACT,YAAAoB;AAAA,MACA,OAAAF;AAAA,MACA,gBAAgBC;AAAA,IAAA;AAAA,IAElB,UAAU;AAAA,MACR,SAAS;AAAA,MACT,aAAcA,KAAa,OAAkC,aAAa;AAAA,MAC1E,aAAaA;AAAA,MACb,OAAAD;AAAA,IAAA;AAAA,IAEF,YAAY;AAAA,MACV,SAAS;AAAA,MACT,OAAAA;AAAA,MACA,cAAAG;AAAA,IAAA;AAAA,IAEF,QAAQ;AAAA,MACN,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAAH;AAAA,MACA,aAAaI;AAAA,IAAA;AAAA,IAEf,KAAK;AAAA,MACH,SAAS;AAAA,MACT,YAAAF;AAAA,MACA,OAAAF;AAAA,MACA,UAAAC;AAAA,IAAA;AAAA,EACF,CACD,EAEa;AAChB;"}