accessibility-server-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +762 -0
  3. package/config/wcag-rules.json +252 -0
  4. package/dist/index.d.ts +59 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +437 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/test-manual.d.ts +6 -0
  9. package/dist/test-manual.d.ts.map +1 -0
  10. package/dist/test-manual.js +66 -0
  11. package/dist/test-manual.js.map +1 -0
  12. package/dist/tools/accessibility-tester.d.ts +56 -0
  13. package/dist/tools/accessibility-tester.d.ts.map +1 -0
  14. package/dist/tools/accessibility-tester.js +317 -0
  15. package/dist/tools/accessibility-tester.js.map +1 -0
  16. package/dist/tools/color-contrast.d.ts +49 -0
  17. package/dist/tools/color-contrast.d.ts.map +1 -0
  18. package/dist/tools/color-contrast.js +237 -0
  19. package/dist/tools/color-contrast.js.map +1 -0
  20. package/dist/tools/wcag-validator.d.ts +43 -0
  21. package/dist/tools/wcag-validator.d.ts.map +1 -0
  22. package/dist/tools/wcag-validator.js +249 -0
  23. package/dist/tools/wcag-validator.js.map +1 -0
  24. package/dist/tools/website-accessibility-tester.d.ts +103 -0
  25. package/dist/tools/website-accessibility-tester.d.ts.map +1 -0
  26. package/dist/tools/website-accessibility-tester.js +228 -0
  27. package/dist/tools/website-accessibility-tester.js.map +1 -0
  28. package/dist/types/accessibility.d.ts +172 -0
  29. package/dist/types/accessibility.d.ts.map +1 -0
  30. package/dist/types/accessibility.js +5 -0
  31. package/dist/types/accessibility.js.map +1 -0
  32. package/dist/types/index.d.ts +6 -0
  33. package/dist/types/index.d.ts.map +1 -0
  34. package/dist/types/index.js +8 -0
  35. package/dist/types/index.js.map +1 -0
  36. package/dist/types/mcp.d.ts +70 -0
  37. package/dist/types/mcp.d.ts.map +1 -0
  38. package/dist/types/mcp.js +5 -0
  39. package/dist/types/mcp.js.map +1 -0
  40. package/dist/utils/browser-manager.d.ts +83 -0
  41. package/dist/utils/browser-manager.d.ts.map +1 -0
  42. package/dist/utils/browser-manager.js +292 -0
  43. package/dist/utils/browser-manager.js.map +1 -0
  44. package/dist/utils/index.d.ts +8 -0
  45. package/dist/utils/index.d.ts.map +1 -0
  46. package/dist/utils/index.js +8 -0
  47. package/dist/utils/index.js.map +1 -0
  48. package/dist/utils/logger.d.ts +36 -0
  49. package/dist/utils/logger.d.ts.map +1 -0
  50. package/dist/utils/logger.js +107 -0
  51. package/dist/utils/logger.js.map +1 -0
  52. package/dist/utils/report-generator.d.ts +31 -0
  53. package/dist/utils/report-generator.d.ts.map +1 -0
  54. package/dist/utils/report-generator.js +252 -0
  55. package/dist/utils/report-generator.js.map +1 -0
  56. package/dist/utils/website-crawler.d.ts +66 -0
  57. package/dist/utils/website-crawler.d.ts.map +1 -0
  58. package/dist/utils/website-crawler.js +306 -0
  59. package/dist/utils/website-crawler.js.map +1 -0
  60. package/package.json +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-manager.js","sourceRoot":"","sources":["../../src/utils/browser-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Export all utility classes
3
+ */
4
+ export * from './logger.js';
5
+ export * from './browser-manager.js';
6
+ export * from './report-generator.js';
7
+ export * from './website-crawler.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Export all utility classes
3
+ */
4
+ export * from './logger.js';
5
+ export * from './browser-manager.js';
6
+ export * from './report-generator.js';
7
+ export * from './website-crawler.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Centralized logging utility for the accessibility MCP server
3
+ *
4
+ * Note: For MCP compatibility, when MCP_MODE is enabled, all logging is silenced
5
+ * to avoid interfering with JSON-RPC communication on stdout. When logging is enabled,
6
+ * all output goes to stderr to ensure stdout remains clean for JSON-RPC.
7
+ */
8
+ export declare class Logger {
9
+ private readonly logger;
10
+ constructor(serviceName?: string);
11
+ /**
12
+ * Log an informational message
13
+ */
14
+ info(message: string, meta?: Record<string, unknown>): void;
15
+ /**
16
+ * Log a warning message
17
+ */
18
+ warn(message: string, meta?: Record<string, unknown>): void;
19
+ /**
20
+ * Log an error message
21
+ */
22
+ error(message: string, error?: Error | Record<string, unknown>): void;
23
+ /**
24
+ * Log a debug message
25
+ */
26
+ debug(message: string, meta?: Record<string, unknown>): void;
27
+ /**
28
+ * Log a performance measurement
29
+ */
30
+ performance(operation: string, duration: number, meta?: Record<string, unknown>): void;
31
+ /**
32
+ * Create a child logger with additional context
33
+ */
34
+ child(meta: Record<string, unknown>): Logger;
35
+ }
36
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,WAAW,SAAsB;IAyD7C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAYrE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOtF;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAK7C"}
@@ -0,0 +1,107 @@
1
+ import winston from 'winston';
2
+ import path from 'path';
3
+ import { Writable } from 'stream';
4
+ // Null stream for discarding logs in MCP mode
5
+ class NullStream extends Writable {
6
+ _write(_chunk, _encoding, callback) {
7
+ callback();
8
+ }
9
+ }
10
+ /**
11
+ * Centralized logging utility for the accessibility MCP server
12
+ *
13
+ * Note: For MCP compatibility, when MCP_MODE is enabled, all logging is silenced
14
+ * to avoid interfering with JSON-RPC communication on stdout. When logging is enabled,
15
+ * all output goes to stderr to ensure stdout remains clean for JSON-RPC.
16
+ */
17
+ export class Logger {
18
+ logger;
19
+ constructor(serviceName = 'accessibility-mcp') {
20
+ const transports = [];
21
+ // Only add console transport if not in MCP mode (when stdio is used for JSON-RPC)
22
+ const isMCPMode = process.env.MCP_MODE === 'true';
23
+ if (!isMCPMode) {
24
+ transports.push(new winston.transports.Console({
25
+ stderrLevels: ['error', 'warn', 'info', 'debug'], // Force all levels to stderr
26
+ format: winston.format.combine(winston.format.colorize(), winston.format.simple(), winston.format.printf(({ timestamp, level, message, service, ...meta }) => {
27
+ const metaString = Object.keys(meta).length ? JSON.stringify(meta, null, 2) : '';
28
+ return `${timestamp} [${service}] ${level}: ${message} ${metaString}`;
29
+ }))
30
+ }));
31
+ }
32
+ else {
33
+ // Add a null transport for MCP mode to prevent winston warnings
34
+ transports.push(new winston.transports.Stream({
35
+ stream: new NullStream()
36
+ }));
37
+ }
38
+ this.logger = winston.createLogger({
39
+ level: process.env.LOG_LEVEL || 'info',
40
+ format: winston.format.combine(winston.format.timestamp(), winston.format.errors({ stack: true }), winston.format.json()),
41
+ defaultMeta: { service: serviceName },
42
+ transports,
43
+ silent: isMCPMode // Silence the entire logger in MCP mode
44
+ });
45
+ // Add file transport in production
46
+ if (process.env.NODE_ENV === 'production') {
47
+ this.logger.add(new winston.transports.File({
48
+ filename: path.join(process.cwd(), 'logs', 'error.log'),
49
+ level: 'error'
50
+ }));
51
+ this.logger.add(new winston.transports.File({
52
+ filename: path.join(process.cwd(), 'logs', 'combined.log')
53
+ }));
54
+ }
55
+ }
56
+ /**
57
+ * Log an informational message
58
+ */
59
+ info(message, meta) {
60
+ this.logger.info(message, meta);
61
+ }
62
+ /**
63
+ * Log a warning message
64
+ */
65
+ warn(message, meta) {
66
+ this.logger.warn(message, meta);
67
+ }
68
+ /**
69
+ * Log an error message
70
+ */
71
+ error(message, error) {
72
+ if (error instanceof Error) {
73
+ this.logger.error(message, {
74
+ error: error.message,
75
+ stack: error.stack,
76
+ name: error.name
77
+ });
78
+ }
79
+ else {
80
+ this.logger.error(message, error);
81
+ }
82
+ }
83
+ /**
84
+ * Log a debug message
85
+ */
86
+ debug(message, meta) {
87
+ this.logger.debug(message, meta);
88
+ }
89
+ /**
90
+ * Log a performance measurement
91
+ */
92
+ performance(operation, duration, meta) {
93
+ this.logger.info(`Performance: ${operation}`, {
94
+ duration_ms: duration,
95
+ ...meta
96
+ });
97
+ }
98
+ /**
99
+ * Create a child logger with additional context
100
+ */
101
+ child(meta) {
102
+ const childLogger = new Logger();
103
+ childLogger.logger.defaultMeta = { ...this.logger.defaultMeta, ...meta };
104
+ return childLogger;
105
+ }
106
+ }
107
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { AccessibilityTestResult, TestSummary, ColorContrastResult } from '../types/accessibility.js';
2
+ /**
3
+ * Utility class for generating accessibility test reports
4
+ */
5
+ export declare class ReportGenerator {
6
+ /**
7
+ * Calculate accessibility score based on test results
8
+ */
9
+ static calculateAccessibilityScore(result: AccessibilityTestResult): number;
10
+ /**
11
+ * Generate a comprehensive test summary
12
+ */
13
+ static generateTestSummary(result: AccessibilityTestResult): TestSummary;
14
+ /**
15
+ * Generate a human-readable text report
16
+ */
17
+ static generateTextReport(result: AccessibilityTestResult): string;
18
+ /**
19
+ * Generate HTML report
20
+ */
21
+ static generateHTMLReport(result: AccessibilityTestResult): string;
22
+ /**
23
+ * Generate CSV report for data analysis
24
+ */
25
+ static generateCSVReport(result: AccessibilityTestResult): string;
26
+ /**
27
+ * Generate color contrast report
28
+ */
29
+ static generateColorContrastReport(results: ColorContrastResult[]): string;
30
+ }
31
+ //# sourceMappingURL=report-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-generator.d.ts","sourceRoot":"","sources":["../../src/utils/report-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,WAAW,EAGX,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM;IAwB3E;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW;IA+BxE;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM;IAsElE;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM;IAkFlE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM;IAuBjE;;OAEG;IACH,MAAM,CAAC,2BAA2B,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM;CA6B3E"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Utility class for generating accessibility test reports
3
+ */
4
+ export class ReportGenerator {
5
+ /**
6
+ * Calculate accessibility score based on test results
7
+ */
8
+ static calculateAccessibilityScore(result) {
9
+ const totalChecks = result.violations.length + result.passes.length;
10
+ if (totalChecks === 0)
11
+ return 100;
12
+ // Weight violations by severity
13
+ const severityWeights = {
14
+ critical: 10,
15
+ serious: 5,
16
+ moderate: 2,
17
+ minor: 1
18
+ };
19
+ let totalPenalty = 0;
20
+ for (const violation of result.violations) {
21
+ totalPenalty += severityWeights[violation.impact] * violation.nodes.length;
22
+ }
23
+ // Calculate score (0-100)
24
+ const maxPossiblePenalty = totalChecks * severityWeights.critical;
25
+ const score = Math.max(0, Math.round(100 - (totalPenalty / maxPossiblePenalty) * 100));
26
+ return score;
27
+ }
28
+ /**
29
+ * Generate a comprehensive test summary
30
+ */
31
+ static generateTestSummary(result) {
32
+ const violationsBySeverity = {
33
+ critical: 0,
34
+ serious: 0,
35
+ moderate: 0,
36
+ minor: 0
37
+ };
38
+ // Count violations by severity
39
+ for (const violation of result.violations) {
40
+ violationsBySeverity[violation.impact]++;
41
+ }
42
+ // Determine compliance status based on violations
43
+ const compliance = {
44
+ A: result.violations.filter(v => v.wcagLevel === 'A').length === 0,
45
+ AA: result.violations.filter(v => ['A', 'AA'].includes(v.wcagLevel)).length === 0,
46
+ AAA: result.violations.length === 0
47
+ };
48
+ const score = this.calculateAccessibilityScore(result);
49
+ return {
50
+ totalViolations: result.violations.length,
51
+ violationsBySeverity,
52
+ passedRules: result.passes.length,
53
+ score,
54
+ compliance
55
+ };
56
+ }
57
+ /**
58
+ * Generate a human-readable text report
59
+ */
60
+ static generateTextReport(result) {
61
+ const lines = [];
62
+ // Header
63
+ lines.push('ACCESSIBILITY TEST REPORT');
64
+ lines.push('='.repeat(50));
65
+ lines.push('');
66
+ if (result.url) {
67
+ lines.push(`URL: ${result.url}`);
68
+ }
69
+ lines.push(`Test Date: ${result.timestamp}`);
70
+ lines.push(`Test Duration: ${result.testDuration}ms`);
71
+ lines.push(`WCAG Level: ${result.metadata.wcagLevel}`);
72
+ lines.push('');
73
+ // Summary
74
+ lines.push('SUMMARY');
75
+ lines.push('-'.repeat(20));
76
+ lines.push(`Accessibility Score: ${result.summary.score}/100`);
77
+ lines.push(`Total Violations: ${result.summary.totalViolations}`);
78
+ lines.push(`Passed Rules: ${result.summary.passedRules}`);
79
+ lines.push('');
80
+ // Compliance Status
81
+ lines.push('WCAG COMPLIANCE');
82
+ lines.push('-'.repeat(20));
83
+ Object.entries(result.summary.compliance).forEach(([level, compliant]) => {
84
+ const status = compliant ? '✓ PASS' : '✗ FAIL';
85
+ lines.push(`WCAG ${level}: ${status}`);
86
+ });
87
+ lines.push('');
88
+ // Violations by Severity
89
+ if (result.violations.length > 0) {
90
+ lines.push('VIOLATIONS BY SEVERITY');
91
+ lines.push('-'.repeat(30));
92
+ Object.entries(result.summary.violationsBySeverity)
93
+ .filter(([_, count]) => count > 0)
94
+ .forEach(([severity, count]) => {
95
+ lines.push(`${severity.toUpperCase()}: ${count}`);
96
+ });
97
+ lines.push('');
98
+ // Detailed Violations
99
+ lines.push('DETAILED VIOLATIONS');
100
+ lines.push('-'.repeat(30));
101
+ result.violations.forEach((violation, index) => {
102
+ lines.push(`${index + 1}. ${violation.description}`);
103
+ lines.push(` Impact: ${violation.impact.toUpperCase()}`);
104
+ lines.push(` WCAG Level: ${violation.wcagLevel}`);
105
+ lines.push(` Help: ${violation.help}`);
106
+ lines.push(` Affected Elements: ${violation.nodes.length}`);
107
+ if (violation.nodes.length > 0) {
108
+ violation.nodes.slice(0, 3).forEach((node, nodeIndex) => {
109
+ lines.push(` Element ${nodeIndex + 1}: ${node.target.join(' > ')}`);
110
+ });
111
+ if (violation.nodes.length > 3) {
112
+ lines.push(` ... and ${violation.nodes.length - 3} more elements`);
113
+ }
114
+ }
115
+ lines.push('');
116
+ });
117
+ }
118
+ return lines.join('\n');
119
+ }
120
+ /**
121
+ * Generate HTML report
122
+ */
123
+ static generateHTMLReport(result) {
124
+ const html = `
125
+ <!DOCTYPE html>
126
+ <html lang="en">
127
+ <head>
128
+ <meta charset="UTF-8">
129
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
130
+ <title>Accessibility Test Report</title>
131
+ <style>
132
+ body { font-family: Arial, sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; }
133
+ .header { background: #f5f5f5; padding: 20px; border-radius: 5px; margin-bottom: 20px; }
134
+ .summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-bottom: 20px; }
135
+ .metric { background: white; border: 1px solid #ddd; padding: 15px; border-radius: 5px; text-align: center; }
136
+ .score { font-size: 2em; font-weight: bold; color: ${result.summary.score >= 90 ? '#28a745' : result.summary.score >= 70 ? '#ffc107' : '#dc3545'}; }
137
+ .violation { border-left: 4px solid #dc3545; padding: 15px; margin-bottom: 15px; background: #f8f9fa; }
138
+ .violation.critical { border-color: #721c24; background: #f5c6cb; }
139
+ .violation.serious { border-color: #dc3545; background: #f8d7da; }
140
+ .violation.moderate { border-color: #ffc107; background: #fff3cd; }
141
+ .violation.minor { border-color: #17a2b8; background: #d1ecf1; }
142
+ .element { background: #e9ecef; padding: 8px; margin: 5px 0; border-radius: 3px; font-family: monospace; }
143
+ .compliance { display: flex; gap: 10px; }
144
+ .compliance-item { padding: 10px; border-radius: 5px; font-weight: bold; }
145
+ .pass { background: #d4edda; color: #155724; }
146
+ .fail { background: #f8d7da; color: #721c24; }
147
+ </style>
148
+ </head>
149
+ <body>
150
+ <div class="header">
151
+ <h1>Accessibility Test Report</h1>
152
+ ${result.url ? `<p><strong>URL:</strong> ${result.url}</p>` : ''}
153
+ <p><strong>Test Date:</strong> ${result.timestamp}</p>
154
+ <p><strong>WCAG Level:</strong> ${result.metadata.wcagLevel}</p>
155
+ </div>
156
+
157
+ <div class="summary">
158
+ <div class="metric">
159
+ <div class="score">${result.summary.score}</div>
160
+ <div>Accessibility Score</div>
161
+ </div>
162
+ <div class="metric">
163
+ <div style="font-size: 1.5em; color: #dc3545;">${result.summary.totalViolations}</div>
164
+ <div>Total Violations</div>
165
+ </div>
166
+ <div class="metric">
167
+ <div style="font-size: 1.5em; color: #28a745;">${result.summary.passedRules}</div>
168
+ <div>Passed Rules</div>
169
+ </div>
170
+ </div>
171
+
172
+ <h2>WCAG Compliance</h2>
173
+ <div class="compliance">
174
+ ${Object.entries(result.summary.compliance).map(([level, compliant]) => `<div class="compliance-item ${compliant ? 'pass' : 'fail'}">
175
+ WCAG ${level}: ${compliant ? 'PASS' : 'FAIL'}
176
+ </div>`).join('')}
177
+ </div>
178
+
179
+ ${result.violations.length > 0 ? `
180
+ <h2>Violations (${result.violations.length})</h2>
181
+ ${result.violations.map((violation, index) => `
182
+ <div class="violation ${violation.impact}">
183
+ <h3>${index + 1}. ${violation.description}</h3>
184
+ <p><strong>Impact:</strong> ${violation.impact.toUpperCase()}</p>
185
+ <p><strong>WCAG Level:</strong> ${violation.wcagLevel}</p>
186
+ <p><strong>Help:</strong> ${violation.help}</p>
187
+ <p><strong>Learn More:</strong> <a href="${violation.helpUrl}" target="_blank">${violation.helpUrl}</a></p>
188
+
189
+ <h4>Affected Elements (${violation.nodes.length}):</h4>
190
+ ${violation.nodes.slice(0, 5).map(node => `
191
+ <div class="element">${node.target.join(' > ')}</div>
192
+ `).join('')}
193
+ ${violation.nodes.length > 5 ? `<p>... and ${violation.nodes.length - 5} more elements</p>` : ''}
194
+ </div>
195
+ `).join('')}
196
+ ` : '<p>No violations found! 🎉</p>'}
197
+ </body>
198
+ </html>`;
199
+ return html;
200
+ }
201
+ /**
202
+ * Generate CSV report for data analysis
203
+ */
204
+ static generateCSVReport(result) {
205
+ const rows = [];
206
+ // Header
207
+ rows.push('Rule ID,Description,Impact,WCAG Level,Element Count,Element Targets,Help URL');
208
+ // Violations
209
+ result.violations.forEach(violation => {
210
+ const targets = violation.nodes.map(node => node.target.join(' > ')).join('; ');
211
+ rows.push([
212
+ violation.id,
213
+ `"${violation.description.replace(/"/g, '""')}"`,
214
+ violation.impact,
215
+ violation.wcagLevel,
216
+ violation.nodes.length.toString(),
217
+ `"${targets.replace(/"/g, '""')}"`,
218
+ violation.helpUrl
219
+ ].join(','));
220
+ });
221
+ return rows.join('\n');
222
+ }
223
+ /**
224
+ * Generate color contrast report
225
+ */
226
+ static generateColorContrastReport(results) {
227
+ const lines = [];
228
+ lines.push('COLOR CONTRAST ANALYSIS REPORT');
229
+ lines.push('='.repeat(50));
230
+ lines.push('');
231
+ results.forEach((result, index) => {
232
+ lines.push(`${index + 1}. Color Combination`);
233
+ lines.push(` Foreground: ${result.foreground}`);
234
+ lines.push(` Background: ${result.background}`);
235
+ lines.push(` Contrast Ratio: ${result.ratio.toFixed(2)}:1`);
236
+ lines.push(` WCAG AA Normal: ${result.wcagAA.normal ? 'PASS' : 'FAIL'}`);
237
+ lines.push(` WCAG AA Large: ${result.wcagAA.large ? 'PASS' : 'FAIL'}`);
238
+ lines.push(` WCAG AAA Normal: ${result.wcagAAA.normal ? 'PASS' : 'FAIL'}`);
239
+ lines.push(` WCAG AAA Large: ${result.wcagAAA.large ? 'PASS' : 'FAIL'}`);
240
+ lines.push(` Score: ${result.score}/100`);
241
+ if (result.recommendations && result.recommendations.length > 0) {
242
+ lines.push(' Recommendations:');
243
+ result.recommendations.forEach(rec => {
244
+ lines.push(` - ${rec}`);
245
+ });
246
+ }
247
+ lines.push('');
248
+ });
249
+ return lines.join('\n');
250
+ }
251
+ }
252
+ //# sourceMappingURL=report-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-generator.js","sourceRoot":"","sources":["../../src/utils/report-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { BrowserManager } from './browser-manager.js';
2
+ export interface CrawlOptions {
3
+ /** Maximum number of pages to crawl */
4
+ maxPages?: number;
5
+ /** Maximum depth to crawl from the starting URL */
6
+ maxDepth?: number;
7
+ /** Patterns to exclude from crawling */
8
+ excludePatterns?: string[];
9
+ /** Patterns to include (if specified, only these will be crawled) */
10
+ includePatterns?: string[];
11
+ /** Whether to respect robots.txt */
12
+ respectRobots?: boolean;
13
+ /** Delay between requests in milliseconds */
14
+ delay?: number;
15
+ /** Whether to stay within the same domain */
16
+ stayOnDomain?: boolean;
17
+ }
18
+ export interface CrawlResult {
19
+ /** Successfully discovered URLs */
20
+ urls: string[];
21
+ /** URLs that failed to crawl */
22
+ failedUrls: Array<{
23
+ url: string;
24
+ error: string;
25
+ }>;
26
+ /** Total time spent crawling */
27
+ crawlDuration: number;
28
+ /** Metadata about the crawl */
29
+ metadata: {
30
+ startUrl: string;
31
+ maxPages: number;
32
+ maxDepth: number;
33
+ actualDepth: number;
34
+ };
35
+ }
36
+ export declare class WebsiteCrawler {
37
+ private readonly logger;
38
+ private readonly browserManager;
39
+ private readonly visited;
40
+ private readonly discovered;
41
+ private readonly failedUrls;
42
+ private readonly depthMap;
43
+ constructor(browserManager: BrowserManager);
44
+ /**
45
+ * Crawl a website starting from the given URL
46
+ */
47
+ crawlWebsite(startUrl: string, options?: CrawlOptions): Promise<CrawlResult>;
48
+ /**
49
+ * Crawl a single page and discover links
50
+ */
51
+ private crawlPage;
52
+ /**
53
+ * Extract links from a page
54
+ */
55
+ private extractLinks;
56
+ /**
57
+ * Check if a domain is allowed based on the base domain
58
+ * Handles various cases like subdomains, www prefixes, and related domains
59
+ */
60
+ private isDomainAllowed;
61
+ /**
62
+ * Check if a URL should be excluded based on patterns
63
+ */
64
+ private shouldExcludeUrl;
65
+ }
66
+ //# sourceMappingURL=website-crawler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"website-crawler.d.ts","sourceRoot":"","sources":["../../src/utils/website-crawler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oCAAoC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gCAAgC;IAChC,UAAU,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6C;IACxE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;gBAE1C,cAAc,EAAE,cAAc;IAK1C;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAuFtF;;OAEG;YACW,SAAS;IA0HvB;;OAEG;YACW,YAAY;IAsD1B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAmCvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA0BzB"}