Skip to content

Debug Store Types Proposal

Proposed type definitions and store patterns for advanced debugging capabilities in the Context-Action framework.

📋 Proposal Overview

This document proposes new type definitions and store patterns to support comprehensive debugging functionality, including state monitoring, error tracking, and performance analysis.

Proposed Type Definitions

Debug State Types

typescript
// Core debug state types
interface DebugState {
  isEnabled: boolean;
  level: 'minimal' | 'standard' | 'verbose';
  timestamp: number;
  sessionId: string;
}

interface ActionLog {
  id: string;
  actionType: string;
  timestamp: number;
  payload?: any;
  result?: any;
  duration?: number;
  error?: string;
}

interface ErrorEntry {
  id: string;
  timestamp: number;
  message: string;
  stack?: string;
  context?: Record<string, any>;
  severity: 'low' | 'medium' | 'high' | 'critical';
  resolved: boolean;
}

interface PerformanceMetric {
  id: string;
  operation: string;
  startTime: number;
  endTime: number;
  duration: number;
  memoryUsage?: number;
  metadata?: Record<string, any>;
}

interface StateSnapshot {
  id: string;
  timestamp: number;
  storeName: string;
  previousValue: any;
  currentValue: any;
  changeReason?: string;
}

Debug Store Interfaces

typescript
// Proposed debug store pattern
interface DebugStores {
  // Core debug configuration
  debugState: DebugState;
  
  // Action monitoring
  actionLog: ActionLog[];
  actionCount: Record<string, number>;
  
  // Error tracking
  errors: ErrorEntry[];
  errorCount: number;
  
  // Performance monitoring
  performanceMetrics: PerformanceMetric[];
  operationTimes: Record<string, number[]>;
  
  // State change tracking
  stateSnapshots: StateSnapshot[];
  storeSubscriptions: Record<string, number>;
  
  // Processing states
  isLogging: boolean;
  isProfilering: boolean;
  isRecording: boolean;
}

// Enhanced monitoring configuration
interface MonitoringConfig {
  maxLogEntries: number;
  maxErrorEntries: number;
  maxSnapshots: number;
  performanceThreshold: number;
  enableRealTimeAnalysis: boolean;
  filterPatterns: string[];
}

Debug Action Types

typescript
// Proposed debug action interfaces
interface DebugActions extends ActionPayloadMap {
  // Core debug control
  enableDebug: { level: DebugState['level'] };
  disableDebug: void;
  clearDebugData: void;
  
  // Action monitoring
  logAction: { actionType: string; payload?: any; duration?: number };
  clearActionLog: void;
  exportActionLog: void;
  
  // Error handling
  recordError: { error: Error; context?: Record<string, any> };
  resolveError: { errorId: string };
  clearErrors: void;
  
  // Performance tracking
  startPerformanceTimer: { operation: string; metadata?: Record<string, any> };
  endPerformanceTimer: { operation: string };
  recordMetric: { metric: PerformanceMetric };
  
  // State monitoring
  captureStateSnapshot: { storeName: string; changeReason?: string };
  startStateRecording: void;
  stopStateRecording: void;
  
  // Analysis and export
  generateDebugReport: void;
  exportDebugData: { format: 'json' | 'csv' | 'html' };
}

Monitoring Utility Types

typescript
// Advanced monitoring types
interface StoreMonitor<T = any> {
  storeName: string;
  currentValue: T;
  previousValue?: T;
  changeCount: number;
  lastChanged: number;
  subscribers: number;
}

interface ActionMonitor {
  actionType: string;
  totalCalls: number;
  averageDuration: number;
  errorRate: number;
  lastCalled: number;
  successCount: number;
  errorCount: number;
}

interface DebugAnalytics {
  sessionDuration: number;
  totalActions: number;
  totalErrors: number;
  averageActionDuration: number;
  memoryUsage: number;
  storeChangeRate: number;
  errorRate: number;
}

Debug Context Types

typescript
// Proposed debug context pattern
interface DebugContextValue {
  // Core debug state
  isDebugMode: boolean;
  debugLevel: DebugState['level'];
  
  // Monitoring controls
  startMonitoring: (config?: Partial<MonitoringConfig>) => void;
  stopMonitoring: () => void;
  pauseMonitoring: () => void;
  
  // Data access
  getActionLog: () => ActionLog[];
  getErrors: () => ErrorEntry[];
  getPerformanceMetrics: () => PerformanceMetric[];
  getStateSnapshots: () => StateSnapshot[];
  
  // Analysis
  generateReport: () => DebugAnalytics;
  exportData: (format: 'json' | 'csv' | 'html') => string;
  
  // Cleanup
  clearAll: () => void;
  clearOldEntries: (olderThanMs: number) => void;
}

Proposed Store Patterns

Debug Store Configuration

typescript
// Complete debug store setup
const debugStoreConfig = {
  // Core debug state
  debugState: {
    isEnabled: false,
    level: 'standard' as const,
    timestamp: Date.now(),
    sessionId: crypto.randomUUID()
  },
  
  // Action monitoring
  actionLog: [] as ActionLog[],
  actionCount: {} as Record<string, number>,
  
  // Error tracking
  errors: [] as ErrorEntry[],
  errorCount: 0,
  
  // Performance monitoring
  performanceMetrics: [] as PerformanceMetric[],
  operationTimes: {} as Record<string, number[]>,
  
  // State change tracking
  stateSnapshots: [] as StateSnapshot[],
  storeSubscriptions: {} as Record<string, number>,
  
  // Processing states
  isLogging: false,
  isProfilering: false,
  isRecording: false
};

// Context creation with proposed pattern
const {
  Provider: DebugStoreProvider,
  useStore: useDebugStore,
  useStoreManager: useDebugStoreManager
} = createStoreContext('Debug', debugStoreConfig);

Debug Action Context

typescript
// Proposed debug action context
const {
  Provider: DebugActionProvider,
  useActionDispatch: useDebugDispatch,
  useActionHandler: useDebugHandler
} = createActionContext<DebugActions>('Debug');

Implementation Strategy

Phase 1: Basic Debug Types

  1. Implement core debug state and action log types
  2. Create basic debug store configuration
  3. Add simple action and error logging

Phase 2: Advanced Monitoring

  1. Add performance metric types and monitoring
  2. Implement state snapshot functionality
  3. Create debug analytics and reporting

Phase 3: Integration & Optimization

  1. Integrate with existing store and action patterns
  2. Add automated monitoring triggers
  3. Optimize performance impact of debug features

Benefits

  1. Type Safety: Full TypeScript support for debug operations
  2. Modular Design: Debug features can be enabled/disabled as needed
  3. Performance Monitoring: Built-in performance tracking capabilities
  4. Error Analysis: Comprehensive error tracking and analysis
  5. State Inspection: Deep visibility into store state changes
  6. Export Capabilities: Multiple export formats for analysis

Compatibility

  • ✅ Compatible with existing Action and Store patterns
  • ✅ Does not modify core framework behavior
  • ✅ Optional feature that can be enabled per context
  • ✅ Follows established naming conventions
  • ✅ Integrates with existing setup patterns

Status

🔄 Status: Proposal Phase
📅 Created: Current
👥 Stakeholders: Context-Action Framework Team
🎯 Target: Debug Pattern Enhancement

Released under the Apache-2.0 License.