{"version":3,"sources":["../src/accessibility-manager.ts","../src/cli.ts"],"names":[],"mappings":"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","file":"cli.mjs","sourcesContent":["/**\n * @fileoverview OrdoJS Accessibility - Accessibility Manager\n *\n * Central manager for coordinating all accessibility functionality.\n */\n\nimport { EventEmitter } from 'events';\nimport type {\n    AccessibilityAudit,\n    AccessibilityConfig,\n    AccessibilityTestResult,\n    AccessibilityViolation\n} from './types/index.js';\n\n/**\n * Accessibility manager for coordinating all accessibility functionality\n */\nexport class AccessibilityManager extends EventEmitter {\n  private config: AccessibilityConfig;\n  private isInitialized: boolean;\n  private auditResults: Map<string, AccessibilityAudit>;\n  private violations: Map<string, AccessibilityViolation[]>;\n\n  /**\n   * Create a new AccessibilityManager instance\n   *\n   * @param config - Accessibility configuration\n   */\n  constructor(config: Partial<AccessibilityConfig> = {}) {\n    super();\n\n    this.config = {\n      enableARIA: true,\n      enableTesting: true,\n      enableFocusManagement: true,\n      enableScreenReader: true,\n      enableKeyboardNavigation: true,\n      enableColorContrast: true,\n      enableSemanticHTML: true,\n      enableLiveRegions: true,\n      enableSkipLinks: true,\n      enableFocusIndicators: true,\n      wcagLevel: 'AA',\n      customARIA: {},\n      testing: {\n        enabled: true,\n        framework: 'axe-core',\n        rules: [],\n        ignoreRules: [],\n        timeout: 30000,\n        retries: 3,\n        generateReports: true,\n        reportFormat: 'json',\n        reportDir: './accessibility-reports'\n      },\n      focus: {\n        enabled: true,\n        focusTrap: true,\n        focusIndicators: true,\n        skipLinks: true,\n        focusOrder: 'tab',\n        focusRestoration: true,\n        focusDelegation: false\n      },\n      screenReader: {\n        enabled: true,\n        announcements: true,\n        liveRegions: true,\n        ariaLabels: true,\n        ariaDescriptions: true,\n        ariaLandmarks: true,\n        ariaRoles: true,\n        ariaStates: true,\n        ariaProperties: true\n      },\n      ...config\n    };\n\n    this.isInitialized = false;\n    this.auditResults = new Map();\n    this.violations = new Map();\n  }\n\n  /**\n   * Initialize the accessibility system\n   */\n  async initialize(): Promise<void> {\n    if (this.isInitialized) {\n      console.warn('Accessibility system is already initialized');\n      return;\n    }\n\n    try {\n      // Initialize ARIA system\n      if (this.config.enableARIA) {\n        await this.initializeARIA();\n      }\n\n      // Initialize testing system\n      if (this.config.enableTesting) {\n        await this.initializeTesting();\n      }\n\n      // Initialize focus management\n      if (this.config.enableFocusManagement) {\n        await this.initializeFocusManagement();\n      }\n\n      // Initialize screen reader support\n      if (this.config.enableScreenReader) {\n        await this.initializeScreenReader();\n      }\n\n      this.isInitialized = true;\n      console.log('Accessibility system initialized successfully');\n\n      this.emit('initialized');\n    } catch (error) {\n      console.error('Failed to initialize accessibility system:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Run accessibility audit\n   *\n   * @param url - URL to audit\n   * @param options - Audit options\n   * @returns Audit result\n   */\n  async runAudit(\n    url: string,\n    options: {\n      level?: 'A' | 'AA' | 'AAA';\n      rules?: string[];\n      ignoreRules?: string[];\n      timeout?: number;\n    } = {}\n  ): Promise<AccessibilityAudit> {\n    if (!this.isInitialized) {\n      throw new Error('Accessibility system not initialized');\n    }\n\n    try {\n      const auditId = `audit_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n      const startTime = Date.now();\n\n      console.log(`Running accessibility audit for ${url}...`);\n\n      // Run tests based on configuration\n      const testResults: AccessibilityTestResult[] = [];\n\n      if (this.config.enableTesting) {\n        const testingResults = await this.runAccessibilityTests(url, options);\n        testResults.push(...testingResults);\n      }\n\n      // Collect violations\n      const violations: AccessibilityViolation[] = [];\n      for (const result of testResults) {\n        violations.push(...result.violations);\n      }\n\n      // Calculate score\n      const totalTests = testResults.length;\n      const passedTests = testResults.filter(r => r.status === 'pass').length;\n      const score = totalTests > 0 ? (passedTests / totalTests) * 100 : 0;\n\n      // Determine compliance\n      const level = options.level || this.config.wcagLevel;\n      const compliant = this.isCompliant(violations, level);\n\n      // Create audit summary\n      const summary = this.createAuditSummary(violations, testResults);\n\n      const audit: AccessibilityAudit = {\n        id: auditId,\n        timestamp: new Date(),\n        url,\n        violations,\n        passes: testResults.filter(r => r.status === 'pass'),\n        inapplicable: testResults.filter(r => r.status === 'inapplicable'),\n        score,\n        level,\n        compliant,\n        summary,\n        metadata: {\n          config: this.config,\n          options,\n          duration: Date.now() - startTime\n        }\n      };\n\n      this.auditResults.set(auditId, audit);\n      this.violations.set(auditId, violations);\n\n      console.log(`Accessibility audit completed: ${score.toFixed(1)}% score`);\n\n      this.emit('auditCompleted', audit);\n      return audit;\n    } catch (error) {\n      console.error('Failed to run accessibility audit:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Generate ARIA attributes for an element\n   *\n   * @param element - Element to generate ARIA for\n   * @param context - Element context\n   * @returns Generated ARIA attributes\n   */\n  generateARIA(\n    element: string,\n    context: {\n      role?: string;\n      label?: string;\n      description?: string;\n      state?: Record<string, any>;\n      properties?: Record<string, any>;\n    } = {}\n  ): Record<string, string> {\n    if (!this.config.enableARIA) {\n      return {};\n    }\n\n    const ariaAttributes: Record<string, string> = {};\n\n    // Add role if provided\n    if (context.role) {\n      ariaAttributes['role'] = context.role;\n    }\n\n    // Add label if provided\n    if (context.label) {\n      ariaAttributes['aria-label'] = context.label;\n    }\n\n    // Add description if provided\n    if (context.description) {\n      ariaAttributes['aria-describedby'] = context.description;\n    }\n\n    // Add states\n    if (context.state) {\n      for (const [key, value] of Object.entries(context.state)) {\n        ariaAttributes[`aria-${key}`] = String(value);\n      }\n    }\n\n    // Add properties\n    if (context.properties) {\n      for (const [key, value] of Object.entries(context.properties)) {\n        ariaAttributes[`aria-${key}`] = String(value);\n      }\n    }\n\n    return ariaAttributes;\n  }\n\n  /**\n   * Check color contrast\n   *\n   * @param foreground - Foreground color\n   * @param background - Background color\n   * @returns Color contrast information\n   */\n  checkColorContrast(foreground: string, background: string): {\n    ratio: number;\n    wcagAA: boolean;\n    wcagAAA: boolean;\n    largeText: boolean;\n    uiComponent: boolean;\n    suggestions: string[];\n  } {\n    if (!this.config.enableColorContrast) {\n      return {\n        ratio: 0,\n        wcagAA: false,\n        wcagAAA: false,\n        largeText: false,\n        uiComponent: false,\n        suggestions: []\n      };\n    }\n\n    // This is a simplified implementation\n    // In a real implementation, you would use a proper color contrast library\n    const ratio = this.calculateContrastRatio(foreground, background);\n\n    const wcagAA = ratio >= 4.5;\n    const wcagAAA = ratio >= 7;\n    const largeText = ratio >= 3;\n    const uiComponent = ratio >= 3;\n\n    const suggestions: string[] = [];\n    if (!wcagAA) {\n      suggestions.push('Increase contrast ratio to meet WCAG AA standards (4.5:1)');\n    }\n    if (!wcagAAA) {\n      suggestions.push('Increase contrast ratio to meet WCAG AAA standards (7:1)');\n    }\n\n    return {\n      ratio,\n      wcagAA,\n      wcagAAA,\n      largeText,\n      uiComponent,\n      suggestions\n    };\n  }\n\n  /**\n   * Generate semantic HTML\n   *\n   * @param content - Content to make semantic\n   * @param options - Semantic options\n   * @returns Semantic HTML\n   */\n  generateSemanticHTML(\n    content: string,\n    options: {\n      headingLevel?: number;\n      listType?: 'ul' | 'ol';\n      tableHeaders?: string[];\n      formLabels?: Record<string, string>;\n    } = {}\n  ): string {\n    if (!this.config.enableSemanticHTML) {\n      return content;\n    }\n\n    // This is a simplified implementation\n    // In a real implementation, you would parse and transform the HTML\n    let semanticContent = content;\n\n    // Add proper heading structure\n    if (options.headingLevel) {\n      semanticContent = this.addHeadingStructure(semanticContent, options.headingLevel);\n    }\n\n    // Add proper list structure\n    if (options.listType) {\n      semanticContent = this.addListStructure(semanticContent, options.listType);\n    }\n\n    // Add proper table structure\n    if (options.tableHeaders) {\n      semanticContent = this.addTableStructure(semanticContent, options.tableHeaders);\n    }\n\n    // Add proper form structure\n    if (options.formLabels) {\n      semanticContent = this.addFormStructure(semanticContent, options.formLabels);\n    }\n\n    return semanticContent;\n  }\n\n  /**\n   * Get accessibility statistics\n   *\n   * @returns Statistics\n   */\n  getStats(): {\n    totalAudits: number;\n    totalViolations: number;\n    averageScore: number;\n    complianceRate: number;\n    config: AccessibilityConfig;\n  } {\n    const totalAudits = this.auditResults.size;\n    let totalViolations = 0;\n    let totalScore = 0;\n\n    for (const audit of this.auditResults.values()) {\n      totalViolations += audit.violations.length;\n      totalScore += audit.score;\n    }\n\n    const averageScore = totalAudits > 0 ? totalScore / totalAudits : 0;\n    const complianceRate = totalAudits > 0\n      ? Array.from(this.auditResults.values()).filter(a => a.compliant).length / totalAudits\n      : 0;\n\n    return {\n      totalAudits,\n      totalViolations,\n      averageScore,\n      complianceRate,\n      config: this.config\n    };\n  }\n\n  /**\n   * Update accessibility configuration\n   *\n   * @param newConfig - New configuration\n   */\n  updateConfig(newConfig: Partial<AccessibilityConfig>): void {\n    this.config = { ...this.config, ...newConfig };\n    this.emit('configUpdated', this.config);\n  }\n\n  /**\n   * Get audit result by ID\n   *\n   * @param auditId - Audit ID\n   * @returns Audit result or undefined\n   */\n  getAuditResult(auditId: string): AccessibilityAudit | undefined {\n    return this.auditResults.get(auditId);\n  }\n\n  /**\n   * Get all audit results\n   *\n   * @returns Array of audit results\n   */\n  getAllAuditResults(): AccessibilityAudit[] {\n    return Array.from(this.auditResults.values());\n  }\n\n  /**\n   * Clear audit results\n   */\n  clearAuditResults(): void {\n    this.auditResults.clear();\n    this.violations.clear();\n    this.emit('auditResultsCleared');\n  }\n\n  /**\n   * Initialize ARIA system\n   */\n  private async initializeARIA(): Promise<void> {\n    // Initialize ARIA system\n    console.log('Initializing ARIA system...');\n  }\n\n  /**\n   * Initialize testing system\n   */\n  private async initializeTesting(): Promise<void> {\n    // Initialize testing system\n    console.log('Initializing testing system...');\n  }\n\n  /**\n   * Initialize focus management\n   */\n  private async initializeFocusManagement(): Promise<void> {\n    // Initialize focus management\n    console.log('Initializing focus management...');\n  }\n\n  /**\n   * Initialize screen reader support\n   */\n  private async initializeScreenReader(): Promise<void> {\n    // Initialize screen reader support\n    console.log('Initializing screen reader support...');\n  }\n\n  /**\n   * Run accessibility tests\n   *\n   * @param url - URL to test\n   * @param options - Test options\n   * @returns Test results\n   */\n  private async runAccessibilityTests(\n    url: string,\n    options: {\n      level?: 'A' | 'AA' | 'AAA';\n      rules?: string[];\n      ignoreRules?: string[];\n      timeout?: number;\n    } = {}\n  ): Promise<AccessibilityTestResult[]> {\n    // This is a simplified implementation\n    // In a real implementation, you would use axe-core or similar\n    const results: AccessibilityTestResult[] = [];\n\n    // Simulate some test results\n    results.push({\n      id: 'test_1',\n      name: 'Color Contrast',\n      status: 'pass',\n      description: 'Check color contrast ratios',\n      impact: 'serious',\n      violations: [],\n      passes: [],\n      inapplicable: [],\n      timestamp: new Date(),\n      duration: 1000,\n      url,\n      metadata: {}\n    });\n\n    return results;\n  }\n\n  /**\n   * Check if violations are compliant with WCAG level\n   *\n   * @param violations - Violations to check\n   * @param level - WCAG level\n   * @returns True if compliant\n   */\n  private isCompliant(violations: AccessibilityViolation[], level: 'A' | 'AA' | 'AAA'): boolean {\n    const criticalViolations = violations.filter(v => v.impact === 'critical');\n    const seriousViolations = violations.filter(v => v.impact === 'serious');\n\n    // For compliance, we need no critical violations and limited serious violations\n    if (criticalViolations.length > 0) {\n      return false;\n    }\n\n    // Level-specific compliance checks\n    switch (level) {\n      case 'A':\n        return seriousViolations.length <= 5;\n      case 'AA':\n        return seriousViolations.length <= 2;\n      case 'AAA':\n        return seriousViolations.length === 0;\n      default:\n        return false;\n    }\n  }\n\n  /**\n   * Create audit summary\n   *\n   * @param violations - Violations\n   * @param testResults - Test results\n   * @returns Audit summary\n   */\n  private createAuditSummary(\n    violations: AccessibilityViolation[],\n    testResults: AccessibilityTestResult[]\n  ): {\n    totalViolations: number;\n    criticalViolations: number;\n    seriousViolations: number;\n    moderateViolations: number;\n    minorViolations: number;\n    totalPasses: number;\n    totalInapplicable: number;\n  } {\n    const criticalViolations = violations.filter(v => v.impact === 'critical').length;\n    const seriousViolations = violations.filter(v => v.impact === 'serious').length;\n    const moderateViolations = violations.filter(v => v.impact === 'moderate').length;\n    const minorViolations = violations.filter(v => v.impact === 'minor').length;\n    const totalPasses = testResults.filter(r => r.status === 'pass').length;\n    const totalInapplicable = testResults.filter(r => r.status === 'inapplicable').length;\n\n    return {\n      totalViolations: violations.length,\n      criticalViolations,\n      seriousViolations,\n      moderateViolations,\n      minorViolations,\n      totalPasses,\n      totalInapplicable\n    };\n  }\n\n  /**\n   * Calculate contrast ratio\n   *\n   * @param foreground - Foreground color\n   * @param background - Background color\n   * @returns Contrast ratio\n   */\n  private calculateContrastRatio(foreground: string, background: string): number {\n    // This is a simplified implementation\n    // In a real implementation, you would use proper color contrast calculation\n    return 4.5; // Placeholder value\n  }\n\n  /**\n   * Add heading structure\n   *\n   * @param content - Content\n   * @param level - Heading level\n   * @returns Content with heading structure\n   */\n  private addHeadingStructure(content: string, level: number): string {\n    // Simplified implementation\n    return content;\n  }\n\n  /**\n   * Add list structure\n   *\n   * @param content - Content\n   * @param type - List type\n   * @returns Content with list structure\n   */\n  private addListStructure(content: string, type: 'ul' | 'ol'): string {\n    // Simplified implementation\n    return content;\n  }\n\n  /**\n   * Add table structure\n   *\n   * @param content - Content\n   * @param headers - Table headers\n   * @returns Content with table structure\n   */\n  private addTableStructure(content: string, headers: string[]): string {\n    // Simplified implementation\n    return content;\n  }\n\n  /**\n   * Add form structure\n   *\n   * @param content - Content\n   * @param labels - Form labels\n   * @returns Content with form structure\n   */\n  private addFormStructure(content: string, labels: Record<string, string>): string {\n    // Simplified implementation\n    return content;\n  }\n}\n","/**\n * @fileoverview OrdoJS Accessibility - CLI\n *\n * Command-line interface for accessibility testing and management.\n */\n\n// CLI entry point\n\nimport chalk from 'chalk';\nimport { Command } from 'commander';\nimport fs from 'fs-extra';\nimport { AccessibilityManager } from './accessibility-manager.js';\n\n/**\n * Accessibility CLI for testing and managing accessibility\n */\nexport class AccessibilityCLI {\n  private program: Command;\n  private manager: AccessibilityManager;\n\n  /**\n   * Create a new AccessibilityCLI instance\n   */\n  constructor() {\n    this.program = new Command();\n    this.manager = new AccessibilityManager();\n    this.setupCommands();\n  }\n\n  /**\n   * Setup CLI commands\n   */\n  private setupCommands(): void {\n    this.program\n      .name('ordojs-a11y')\n      .description('OrdoJS Accessibility Testing and Management CLI')\n      .version('0.1.0');\n\n    // Audit command\n    this.program\n      .command('audit')\n      .description('Run accessibility audit on a URL or file')\n      .argument('<target>', 'URL or file path to audit')\n      .option('-l, --level <level>', 'WCAG compliance level', 'AA')\n      .option('-r, --rules <rules>', 'Comma-separated list of rules to test')\n      .option('-i, --ignore <rules>', 'Comma-separated list of rules to ignore')\n      .option('-t, --timeout <ms>', 'Test timeout in milliseconds', '30000')\n      .option('-o, --output <format>', 'Output format (json, html, csv)', 'json')\n      .option('-f, --file <path>', 'Output file path')\n      .action(async (target, options) => {\n        await this.runAudit(target, options);\n      });\n\n    // Test command\n    this.program\n      .command('test')\n      .description('Run specific accessibility tests')\n      .argument('<target>', 'URL or file path to test')\n      .option('-n, --name <name>', 'Specific test name to run')\n      .option('-f, --framework <framework>', 'Testing framework (axe-core, puppeteer, jsdom)', 'axe-core')\n      .option('-t, --timeout <ms>', 'Test timeout in milliseconds', '30000')\n      .option('-r, --retries <count>', 'Number of retries', '3')\n      .option('-o, --output <format>', 'Output format (json, html, csv)', 'json')\n      .option('-f, --file <path>', 'Output file path')\n      .action(async (target, options) => {\n        await this.runTest(target, options);\n      });\n\n    // Generate ARIA command\n    this.program\n      .command('generate-aria')\n      .description('Generate ARIA attributes for HTML elements')\n      .argument('<input>', 'Input HTML file or directory')\n      .option('-o, --output <path>', 'Output directory', './aria-output')\n      .option('-f, --format <format>', 'Output format (html, json)', 'html')\n      .option('-v, --validate', 'Validate generated ARIA attributes')\n      .action(async (input, options) => {\n        await this.generateARIA(input, options);\n      });\n\n    // Focus command\n    this.program\n      .command('focus')\n      .description('Manage focus and keyboard navigation')\n      .option('-a, --analyze <file>', 'Analyze focus order in HTML file')\n      .option('-g, --generate <file>', 'Generate focus management code')\n      .option('-t, --test <file>', 'Test keyboard navigation')\n      .action(async (options) => {\n        await this.manageFocus(options);\n      });\n\n    // Screen reader command\n    this.program\n      .command('screen-reader')\n      .description('Manage screen reader announcements and live regions')\n      .option('-a, --announce <message>', 'Create announcement')\n      .option('-l, --live-region <id>', 'Create live region')\n      .option('-u, --update <id> <content>', 'Update live region content')\n      .option('-r, --remove <id>', 'Remove live region')\n      .action(async (options) => {\n        await this.manageScreenReader(options);\n      });\n\n    // Report command\n    this.program\n      .command('report')\n      .description('Generate accessibility reports')\n      .option('-i, --input <path>', 'Input audit results file')\n      .option('-o, --output <path>', 'Output report file')\n      .option('-f, --format <format>', 'Report format (html, json, csv)', 'html')\n      .option('-s, --summary', 'Include summary statistics')\n      .option('-d, --detailed', 'Include detailed violations')\n      .action(async (options) => {\n        await this.generateReport(options);\n      });\n\n    // Stats command\n    this.program\n      .command('stats')\n      .description('Show accessibility statistics')\n      .option('-a, --audit <id>', 'Show audit statistics')\n      .option('-t, --test <id>', 'Show test statistics')\n      .option('-f, --focus', 'Show focus management statistics')\n      .option('-s, --screen-reader', 'Show screen reader statistics')\n      .action(async (options) => {\n        await this.showStats(options);\n      });\n  }\n\n  /**\n   * Run accessibility audit\n   *\n   * @param target - Target URL or file\n   * @param options - Audit options\n   */\n  private async runAudit(target: string, options: any): Promise<void> {\n    try {\n      console.log(chalk.blue(`Running accessibility audit on ${target}...`));\n\n      // Initialize manager\n      await this.manager.initialize();\n\n      // Parse options\n      const level = options.level as 'A' | 'AA' | 'AAA';\n      const rules = options.rules ? options.rules.split(',') : [];\n      const ignoreRules = options.ignore ? options.ignore.split(',') : [];\n      const timeout = parseInt(options.timeout);\n\n      // Run audit\n      const audit = await this.manager.runAudit(target, {\n        level,\n        rules,\n        ignoreRules,\n        timeout\n      });\n\n      // Display results\n      this.displayAuditResults(audit);\n\n      // Save results if output file specified\n      if (options.file) {\n        await this.saveResults(audit, options.file, options.output);\n      }\n\n      console.log(chalk.green('Audit completed successfully'));\n    } catch (error) {\n      console.error(chalk.red('Audit failed:'), error);\n      process.exit(1);\n    }\n  }\n\n  /**\n   * Run accessibility test\n   *\n   * @param target - Target URL or file\n   * @param options - Test options\n   */\n  private async runTest(target: string, options: any): Promise<void> {\n    try {\n      console.log(chalk.blue(`Running accessibility test on ${target}...`));\n\n      // Initialize manager\n      await this.manager.initialize();\n\n      // Parse options\n      const testName = options.name;\n      const framework = options.framework;\n      const timeout = parseInt(options.timeout);\n      const retries = parseInt(options.retries);\n\n      if (testName) {\n        // Run specific test\n        console.log(chalk.yellow('Specific test functionality not yet implemented'));\n        // const result = await this.manager.runTest(testName, target, {\n        //   timeout,\n        //   retries\n        // });\n        // this.displayTestResults([result]);\n      } else {\n        // Run all tests\n        console.log(chalk.yellow('Test functionality not yet implemented'));\n        // const results = await this.manager.runTests(target, {\n        //   timeout,\n        //   retries\n        // });\n        // this.displayTestResults(results);\n      }\n\n      console.log(chalk.green('Test completed successfully'));\n    } catch (error) {\n      console.error(chalk.red('Test failed:'), error);\n      process.exit(1);\n    }\n  }\n\n  /**\n   * Generate ARIA attributes\n   *\n   * @param input - Input file or directory\n   * @param options - Generation options\n   */\n  private async generateARIA(input: string, options: any): Promise<void> {\n    try {\n      console.log(chalk.blue(`Generating ARIA attributes for ${input}...`));\n\n      // Initialize manager\n      await this.manager.initialize();\n\n      // Check if input exists\n      if (!fs.existsSync(input)) {\n        throw new Error(`Input path does not exist: ${input}`);\n      }\n\n      // Generate ARIA attributes\n      const stats = fs.statSync(input);\n      if (stats.isFile()) {\n        await this.generateARIAForFile(input, options);\n      } else if (stats.isDirectory()) {\n        await this.generateARIAForDirectory(input, options);\n      }\n\n      console.log(chalk.green('ARIA generation completed successfully'));\n    } catch (error) {\n      console.error(chalk.red('ARIA generation failed:'), error);\n      process.exit(1);\n    }\n  }\n\n  /**\n   * Manage focus and keyboard navigation\n   *\n   * @param options - Focus options\n   */\n  private async manageFocus(options: any): Promise<void> {\n    try {\n      console.log(chalk.blue('Managing focus and keyboard navigation...'));\n\n      // Initialize manager\n      await this.manager.initialize();\n\n      if (options.analyze) {\n        await this.analyzeFocusOrder(options.analyze);\n      } else if (options.generate) {\n        await this.generateFocusCode(options.generate);\n      } else if (options.test) {\n        await this.testKeyboardNavigation(options.test);\n      } else {\n        console.log(chalk.yellow('No focus action specified. Use --analyze, --generate, or --test'));\n      }\n\n      console.log(chalk.green('Focus management completed successfully'));\n    } catch (error) {\n      console.error(chalk.red('Focus management failed:'), error);\n      process.exit(1);\n    }\n  }\n\n  /**\n   * Manage screen reader functionality\n   *\n   * @param options - Screen reader options\n   */\n  private async manageScreenReader(options: any): Promise<void> {\n    try {\n      console.log(chalk.blue('Managing screen reader functionality...'));\n\n      // Initialize manager\n      await this.manager.initialize();\n\n      if (options.announce) {\n        console.log(chalk.yellow('Announcement functionality not yet implemented'));\n        // const announcementId = this.manager.announce(options.announce);\n        // console.log(chalk.green(`Announcement created: ${announcementId}`));\n      } else if (options.liveRegion) {\n        console.log(chalk.yellow('Live region functionality not yet implemented'));\n        // const region = this.manager.createLiveRegion(options.liveRegion, 'div');\n        // console.log(chalk.green(`Live region created: ${region.id}`));\n      } else if (options.update) {\n        console.log(chalk.yellow('Live region update functionality not yet implemented'));\n        // this.manager.updateLiveRegion(options.update[0], options.update[1]);\n        // console.log(chalk.green('Live region updated'));\n      } else if (options.remove) {\n        console.log(chalk.yellow('Live region removal functionality not yet implemented'));\n        // this.manager.removeLiveRegion(options.remove);\n        // console.log(chalk.green('Live region removed'));\n      } else {\n        console.log(chalk.yellow('No screen reader action specified'));\n      }\n\n      console.log(chalk.green('Screen reader management completed successfully'));\n    } catch (error) {\n      console.error(chalk.red('Screen reader management failed:'), error);\n      process.exit(1);\n    }\n  }\n\n  /**\n   * Generate accessibility report\n   *\n   * @param options - Report options\n   */\n  private async generateReport(options: any): Promise<void> {\n    try {\n      console.log(chalk.blue('Generating accessibility report...'));\n\n      if (!options.input) {\n        throw new Error('Input file is required');\n      }\n\n      // Load audit results\n      const auditData = await fs.readJson(options.input);\n      console.log(chalk.yellow('Report generation functionality not yet implemented'));\n      // const report = this.manager.generateReport([auditData], {\n      //   format: options.format,\n      //   includePasses: options.summary,\n      //   includeViolations: options.detailed\n      // });\n\n      // Save report\n      const outputPath = options.output || `report.${options.format}`;\n      // await fs.writeFile(outputPath, report);\n      console.log(chalk.yellow(`Report would be saved to: ${outputPath}`));\n\n      console.log(chalk.green(`Report generated: ${outputPath}`));\n    } catch (error) {\n      console.error(chalk.red('Report generation failed:'), error);\n      process.exit(1);\n    }\n  }\n\n  /**\n   * Show accessibility statistics\n   *\n   * @param options - Stats options\n   */\n  private async showStats(options: any): Promise<void> {\n    try {\n      console.log(chalk.blue('Accessibility Statistics'));\n\n      const stats = this.manager.getStats();\n\n      console.log(chalk.cyan('\\nOverall Statistics:'));\n      console.log(`  Total Audits: ${stats.totalAudits}`);\n      console.log(`  Total Violations: ${stats.totalViolations}`);\n      console.log(`  Average Score: ${stats.averageScore.toFixed(1)}%`);\n      console.log(`  Compliance Rate: ${(stats.complianceRate * 100).toFixed(1)}%`);\n\n      if (options.focus) {\n        const focusStats = this.manager.getStats();\n        console.log(chalk.cyan('\\nFocus Management Statistics:'));\n        console.log(`  Total Elements: ${focusStats.totalAudits}`);\n        console.log(`  Focusable Elements: ${focusStats.totalViolations}`);\n        console.log(`  Focused Elements: ${focusStats.averageScore}`);\n        console.log(`  Focus Traps: ${focusStats.complianceRate}`);\n        console.log(`  Skip Links: ${focusStats.config.wcagLevel}`);\n      }\n\n      if (options.screenReader) {\n        const srStats = this.manager.getStats();\n        console.log(chalk.cyan('\\nScreen Reader Statistics:'));\n        console.log(`  Total Announcements: ${srStats.totalAudits}`);\n        console.log(`  Total Live Regions: ${srStats.totalViolations}`);\n        console.log(`  Average Score: ${srStats.averageScore.toFixed(1)}%`);\n        console.log(`  Compliance Rate: ${(srStats.complianceRate * 100).toFixed(1)}%`);\n      }\n\n      console.log(chalk.green('\\nStatistics displayed successfully'));\n    } catch (error) {\n      console.error(chalk.red('Failed to show statistics:'), error);\n      process.exit(1);\n    }\n  }\n\n  /**\n   * Display audit results\n   *\n   * @param audit - Audit results\n   */\n  private displayAuditResults(audit: any): void {\n    console.log(chalk.cyan('\\n=== Accessibility Audit Results ==='));\n    console.log(`Score: ${audit.score.toFixed(1)}%`);\n    console.log(`Level: ${audit.level}`);\n    console.log(`Compliant: ${audit.compliant ? 'Yes' : 'No'}`);\n    console.log(`Violations: ${audit.violations.length}`);\n    console.log(`Passes: ${audit.passes.length}`);\n    console.log(`Inapplicable: ${audit.inapplicable.length}`);\n\n    if (audit.violations.length > 0) {\n      console.log(chalk.red('\\nViolations:'));\n      audit.violations.forEach((violation: any) => {\n        console.log(`  ${violation.impact.toUpperCase()}: ${violation.message}`);\n      });\n    }\n  }\n\n  /**\n   * Display test results\n   *\n   * @param results - Test results\n   */\n  private displayTestResults(results: any[]): void {\n    console.log(chalk.cyan('\\n=== Accessibility Test Results ==='));\n\n    results.forEach(result => {\n      const status = result.status === 'pass' ? chalk.green('PASS') : chalk.red('FAIL');\n      console.log(`${status}: ${result.name} - ${result.description}`);\n    });\n  }\n\n  /**\n   * Save results to file\n   *\n   * @param results - Results to save\n   * @param filePath - Output file path\n   * @param format - Output format\n   */\n  private async saveResults(results: any, filePath: string, format: string): Promise<void> {\n    let content: string;\n\n    switch (format) {\n      case 'json':\n        content = JSON.stringify(results, null, 2);\n        break;\n      case 'html':\n        content = this.generateHTMLReport(results);\n        break;\n      case 'csv':\n        content = this.generateCSVReport(results);\n        break;\n      default:\n        throw new Error(`Unsupported format: ${format}`);\n    }\n\n    await fs.writeFile(filePath, content);\n    console.log(chalk.green(`Results saved to: ${filePath}`));\n  }\n\n  /**\n   * Generate ARIA for file\n   *\n   * @param filePath - File path\n   * @param options - Generation options\n   */\n  private async generateARIAForFile(filePath: string, options: any): Promise<void> {\n    // Simplified implementation\n    console.log(`Generating ARIA for file: ${filePath}`);\n  }\n\n  /**\n   * Generate ARIA for directory\n   *\n   * @param dirPath - Directory path\n   * @param options - Generation options\n   */\n  private async generateARIAForDirectory(dirPath: string, options: any): Promise<void> {\n    // Simplified implementation\n    console.log(`Generating ARIA for directory: ${dirPath}`);\n  }\n\n  /**\n   * Analyze focus order\n   *\n   * @param filePath - File path\n   */\n  private async analyzeFocusOrder(filePath: string): Promise<void> {\n    // Simplified implementation\n    console.log(`Analyzing focus order in: ${filePath}`);\n  }\n\n  /**\n   * Generate focus code\n   *\n   * @param filePath - File path\n   */\n  private async generateFocusCode(filePath: string): Promise<void> {\n    // Simplified implementation\n    console.log(`Generating focus code for: ${filePath}`);\n  }\n\n  /**\n   * Test keyboard navigation\n   *\n   * @param filePath - File path\n   */\n  private async testKeyboardNavigation(filePath: string): Promise<void> {\n    // Simplified implementation\n    console.log(`Testing keyboard navigation in: ${filePath}`);\n  }\n\n  /**\n   * Generate HTML report\n   *\n   * @param results - Results\n   * @returns HTML report\n   */\n  private generateHTMLReport(results: any): string {\n    return `\n<!DOCTYPE html>\n<html>\n<head>\n    <title>Accessibility Report</title>\n    <style>\n        body { font-family: Arial, sans-serif; margin: 20px; }\n        .header { background: #f0f0f0; padding: 20px; }\n        .violation { color: red; }\n        .pass { color: green; }\n    </style>\n</head>\n<body>\n    <div class=\"header\">\n        <h1>Accessibility Report</h1>\n        <p>Generated on: ${new Date().toISOString()}</p>\n    </div>\n    <pre>${JSON.stringify(results, null, 2)}</pre>\n</body>\n</html>`;\n  }\n\n  /**\n   * Generate CSV report\n   *\n   * @param results - Results\n   * @returns CSV report\n   */\n  private generateCSVReport(results: any): string {\n    return 'Type,Message,Impact\\n' +\n           'audit,Accessibility audit completed,info\\n';\n  }\n\n  /**\n   * Run the CLI\n   */\n  async run(): Promise<void> {\n    await this.program.parseAsync();\n  }\n}\n\n// Run CLI if this file is executed directly\nif (import.meta.url === `file://${process.argv[1]}`) {\n  const cli = new AccessibilityCLI();\n  cli.run().catch(console.error);\n}\n"]}