@noyrax/documentation-system-plugin 1.0.4-beta.2 → 1.0.4-beta.3

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 (82) hide show
  1. package/docs/index/symbols.jsonl +54 -16
  2. package/docs/modules/mcp__src__tools__drift.ts.md +6 -2
  3. package/docs/modules/mcp__src__tools__impact.ts.md +3 -0
  4. package/docs/modules/package.json.md +10 -11
  5. package/docs/modules/scripts__verify-adrs.js.md +1 -1
  6. package/docs/modules/src__core__scanner.ts.md +0 -1
  7. package/docs/modules/src__index__index.ts.md +18 -0
  8. package/docs/modules/src__parsers__json-yaml.ts.md +0 -1
  9. package/docs/modules/src__parsers__types.ts.md +18 -0
  10. package/docs/system/CHANGE_REPORT.md +7 -10
  11. package/docs/system/SYSTEM_METADATA.json +37 -0
  12. package/package.json +1 -2
  13. package/noyrax-5d-database-plugin-0.1.8.tgz +0 -0
  14. package/noyrax-documentation-system-plugin-1.0.4-beta.2.tgz +0 -0
  15. package/out/cache/ast-cache.js +0 -69
  16. package/out/cache/ast-cache.js.map +0 -1
  17. package/out/cache/dependencies-cache.js +0 -73
  18. package/out/cache/dependencies-cache.js.map +0 -1
  19. package/out/cache/output-cache.js +0 -69
  20. package/out/cache/output-cache.js.map +0 -1
  21. package/out/cache/signature-cache.js +0 -60
  22. package/out/cache/signature-cache.js.map +0 -1
  23. package/out/cli/generate-cli.js +0 -330
  24. package/out/cli/generate-cli.js.map +0 -1
  25. package/out/cli/scan-cli.js +0 -151
  26. package/out/cli/scan-cli.js.map +0 -1
  27. package/out/cli/validate-cli.js +0 -258
  28. package/out/cli/validate-cli.js.map +0 -1
  29. package/out/core/async.js +0 -38
  30. package/out/core/async.js.map +0 -1
  31. package/out/core/consolidation.js +0 -230
  32. package/out/core/consolidation.js.map +0 -1
  33. package/out/core/git.js +0 -48
  34. package/out/core/git.js.map +0 -1
  35. package/out/core/language-detection.js +0 -29
  36. package/out/core/language-detection.js.map +0 -1
  37. package/out/core/scanner.js +0 -179
  38. package/out/core/scanner.js.map +0 -1
  39. package/out/core/signature-formatter.js +0 -162
  40. package/out/core/signature-formatter.js.map +0 -1
  41. package/out/core/symbol-classifier.js +0 -96
  42. package/out/core/symbol-classifier.js.map +0 -1
  43. package/out/core/symbols.js +0 -24
  44. package/out/core/symbols.js.map +0 -1
  45. package/out/drift/index.js +0 -28
  46. package/out/drift/index.js.map +0 -1
  47. package/out/extension.js +0 -984
  48. package/out/extension.js.map +0 -1
  49. package/out/generator/adr-linker.js +0 -216
  50. package/out/generator/adr-linker.js.map +0 -1
  51. package/out/generator/change-report.js +0 -124
  52. package/out/generator/change-report.js.map +0 -1
  53. package/out/generator/dependency-graph.js +0 -98
  54. package/out/generator/dependency-graph.js.map +0 -1
  55. package/out/generator/index.js +0 -117
  56. package/out/generator/index.js.map +0 -1
  57. package/out/generator/module-doc.js +0 -438
  58. package/out/generator/module-doc.js.map +0 -1
  59. package/out/index/index.js +0 -147
  60. package/out/index/index.js.map +0 -1
  61. package/out/logging/index.js +0 -24
  62. package/out/logging/index.js.map +0 -1
  63. package/out/parsers/dependencies.js +0 -126
  64. package/out/parsers/dependencies.js.map +0 -1
  65. package/out/parsers/json-yaml.js +0 -121
  66. package/out/parsers/json-yaml.js.map +0 -1
  67. package/out/parsers/python.js +0 -160
  68. package/out/parsers/python.js.map +0 -1
  69. package/out/parsers/ts-js.js +0 -397
  70. package/out/parsers/ts-js.js.map +0 -1
  71. package/out/parsers/types.js +0 -3
  72. package/out/parsers/types.js.map +0 -1
  73. package/out/ui/commands-provider.js +0 -91
  74. package/out/ui/commands-provider.js.map +0 -1
  75. package/out/ui/status-bar.js +0 -85
  76. package/out/ui/status-bar.js.map +0 -1
  77. package/out/validator/index.js +0 -185
  78. package/out/validator/index.js.map +0 -1
  79. package/out/validator/signature-matching.js +0 -261
  80. package/out/validator/signature-matching.js.map +0 -1
  81. package/out/validator/status.js +0 -38
  82. package/out/validator/status.js.map +0 -1
@@ -1,185 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.validateMarkdownDir = exports.computeCoverage = exports.validateMarkdownContent = exports.validateSymbols = void 0;
27
- const fs = __importStar(require("fs"));
28
- const path = __importStar(require("path"));
29
- const index_1 = require("../logging/index");
30
- const signature_matching_1 = require("./signature-matching");
31
- function validateSymbols(symbols) {
32
- const errors = [];
33
- const warnings = [];
34
- // Minimal: Namen vorhanden, deterministische Sortierung testbar
35
- for (const s of symbols) {
36
- if (!s.fullyQualifiedName || !s.signature?.name) {
37
- errors.push(`Ungültiges Symbol in ${s.filePath}`);
38
- }
39
- }
40
- return { totalSymbols: symbols.length, errors, warnings };
41
- }
42
- exports.validateSymbols = validateSymbols;
43
- function validateMarkdownContent(md) {
44
- const errors = [];
45
- const warnings = [];
46
- // Einfache Fence-Überprüfung: gerade Anzahl von ```
47
- const fenceCount = (md.match(/```/g) || []).length;
48
- if (fenceCount % 2 !== 0) {
49
- errors.push('Ungeschlossene Code-Fences entdeckt');
50
- }
51
- // Basale Überschriften-Präsenz
52
- if (!/^#\s+/m.test(md)) {
53
- warnings.push('Keine H1-Überschrift gefunden');
54
- }
55
- return { errors, warnings };
56
- }
57
- exports.validateMarkdownContent = validateMarkdownContent;
58
- function computeCoverage(symbols, modulesDir, thresholds = { classes: 0.9, interfaces: 0.9, methods: 0.9, functions: 0.8 }) {
59
- const metrics = {
60
- totalClasses: 0, documentedClasses: 0,
61
- totalInterfaces: 0, documentedInterfaces: 0,
62
- totalMethods: 0, documentedMethods: 0,
63
- totalFunctions: 0, documentedFunctions: 0,
64
- };
65
- const errors = [];
66
- const warnings = [];
67
- // Index der MD-Inhalte laden
68
- const mdIndex = new Map();
69
- if (fs.existsSync(modulesDir)) {
70
- for (const entry of fs.readdirSync(modulesDir)) {
71
- if (entry.endsWith('.md')) {
72
- const full = path.join(modulesDir, entry);
73
- try {
74
- mdIndex.set(entry.replace(/\.md$/, ''), fs.readFileSync(full, 'utf8'));
75
- }
76
- catch { }
77
- }
78
- }
79
- }
80
- function isDocumented(symbolName) {
81
- // Wir suchen eine Überschrift-Zeile "### function/class/interface/method/variable/type: symbolName"
82
- // oder "### symbolName" (ohne Präfix)
83
- const patterns = [
84
- new RegExp(`^###\\s+(function|class|interface|method|variable|type|enum):\\s+${symbolName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\s*$`, 'm'),
85
- new RegExp(`^###\\s+${symbolName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\s*$`, 'm')
86
- ];
87
- for (const content of mdIndex.values()) {
88
- for (const pattern of patterns) {
89
- if (pattern.test(content))
90
- return true;
91
- }
92
- }
93
- return false;
94
- }
95
- for (const s of symbols) {
96
- if (s.language !== 'ts' && s.language !== 'js')
97
- continue;
98
- const vis = s.signature.visibility ?? 'public';
99
- if (vis !== 'public')
100
- continue;
101
- switch (s.kind) {
102
- case 'class':
103
- metrics.totalClasses++;
104
- if (isDocumented(s.fullyQualifiedName))
105
- metrics.documentedClasses++;
106
- break;
107
- case 'interface':
108
- metrics.totalInterfaces++;
109
- if (isDocumented(s.fullyQualifiedName))
110
- metrics.documentedInterfaces++;
111
- break;
112
- case 'method':
113
- metrics.totalMethods++;
114
- if (isDocumented(s.fullyQualifiedName))
115
- metrics.documentedMethods++;
116
- break;
117
- case 'function':
118
- metrics.totalFunctions++;
119
- if (isDocumented(s.fullyQualifiedName))
120
- metrics.documentedFunctions++;
121
- break;
122
- }
123
- }
124
- function ratio(doc, total) {
125
- return total === 0 ? 1 : doc / total;
126
- }
127
- const classesOk = ratio(metrics.documentedClasses, metrics.totalClasses) >= thresholds.classes;
128
- const interfacesOk = ratio(metrics.documentedInterfaces, metrics.totalInterfaces) >= thresholds.interfaces;
129
- const methodsOk = ratio(metrics.documentedMethods, metrics.totalMethods) >= thresholds.methods;
130
- const functionsOk = ratio(metrics.documentedFunctions, metrics.totalFunctions) >= thresholds.functions;
131
- if (!classesOk)
132
- errors.push(`Coverage Klassen < ${Math.round(thresholds.classes * 100)}% (${metrics.documentedClasses}/${metrics.totalClasses})`);
133
- if (!interfacesOk)
134
- errors.push(`Coverage Interfaces < ${Math.round(thresholds.interfaces * 100)}% (${metrics.documentedInterfaces}/${metrics.totalInterfaces})`);
135
- if (!methodsOk)
136
- errors.push(`Coverage Methoden < ${Math.round(thresholds.methods * 100)}% (${metrics.documentedMethods}/${metrics.totalMethods})`);
137
- if (!functionsOk)
138
- errors.push(`Coverage Funktionen < ${Math.round(thresholds.functions * 100)}% (${metrics.documentedFunctions}/${metrics.totalFunctions})`);
139
- return { metrics, errors, warnings };
140
- }
141
- exports.computeCoverage = computeCoverage;
142
- function validateMarkdownDir(modulesDir, symbols) {
143
- const logger = new index_1.Logger({ component: 'validator' });
144
- const errors = [];
145
- const warnings = [];
146
- const files = [];
147
- if (!fs.existsSync(modulesDir)) {
148
- errors.push('modules/ Verzeichnis fehlt');
149
- return { errors, warnings, files };
150
- }
151
- let allMarkdownContent = '';
152
- for (const entry of fs.readdirSync(modulesDir)) {
153
- if (!entry.endsWith('.md'))
154
- continue;
155
- const full = path.join(modulesDir, entry);
156
- try {
157
- const content = fs.readFileSync(full, 'utf8');
158
- allMarkdownContent += content + '\n';
159
- const r = validateMarkdownContent(content);
160
- files.push({ file: full, errors: r.errors, warnings: r.warnings });
161
- errors.push(...r.errors.map(e => `${entry}: ${e}`));
162
- warnings.push(...r.warnings.map(w => `${entry}: ${w}`));
163
- }
164
- catch (e) {
165
- errors.push(`${entry}: konnte nicht gelesen werden`);
166
- logger.error('Markdown konnte nicht gelesen werden', e);
167
- }
168
- }
169
- // Signatur-Abgleich wenn Symbole verfügbar
170
- let mismatchesCount = 0;
171
- if (symbols) {
172
- const mismatches = (0, signature_matching_1.validateSignatureMatching)(symbols, modulesDir);
173
- mismatchesCount = mismatches.length;
174
- if (mismatchesCount > 0) {
175
- logger.info(`Signature mismatches detected: ${mismatchesCount}`);
176
- }
177
- else {
178
- logger.info('No signature mismatches detected');
179
- }
180
- warnings.push(...mismatches.map(m => `Signatur-Abweichung ${m.symbolId}: erwartet "${m.expected}", dokumentiert "${m.documented}"`));
181
- }
182
- return { errors, warnings, files, mismatchesCount };
183
- }
184
- exports.validateMarkdownDir = validateMarkdownDir;
185
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validator/index.ts"],"names":[],"mappings":"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"}
@@ -1,261 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateSignatureMatching = void 0;
4
- const signature_formatter_1 = require("../core/signature-formatter");
5
- const symbol_classifier_1 = require("../core/symbol-classifier");
6
- /**
7
- * @public
8
- * Validate signature matching between code and documentation
9
- */
10
- function validateSignatureMatching(symbols, modulesDir, options = {}) {
11
- const rawMismatches = [];
12
- const depth = options.depth ?? 'full';
13
- for (const symbol of symbols) {
14
- const classification = (0, symbol_classifier_1.classifySymbol)(symbol);
15
- if (!options.validateNonPublic && classification.visibility !== 'public') {
16
- continue;
17
- }
18
- // Alle Symbol-Typen validieren, auch Interfaces und Types
19
- // if (symbol.kind === 'variable' || symbol.kind === 'type') continue; // ENTFERNT: Alle Typen validieren
20
- // DATEI-SPEZIFISCHE SUCHE: Finde die korrekte Markdown-Datei für das Symbol
21
- const markdownFileName = symbol.filePath.replace(/[\/\\]/g, '__') + '.md';
22
- const markdownFilePath = require('path').join(modulesDir, markdownFileName);
23
- if (!require('fs').existsSync(markdownFilePath))
24
- continue;
25
- const markdownContent = require('fs').readFileSync(markdownFilePath, 'utf8');
26
- // Erwartete Signatur konsistent über SignatureFormatter rendern
27
- const expectedSig = signature_formatter_1.SignatureFormatter.formatForDoc(symbol);
28
- const docPattern = new RegExp(`###\\s+${symbol.kind}:\\s+${escapeRegex(symbol.fullyQualifiedName)}[\\s\\S]*?\`\`\`[^\\n]*\\n([\\s\\S]*?)\\n\`\`\``, 'i');
29
- const match = markdownContent.match(docPattern);
30
- if (match) {
31
- const documentedSig = match[1].trim();
32
- // Zentrale Vergleichslogik mit Toleranzen (optionale Felder, Generics)
33
- const compareResult = signature_formatter_1.SignatureFormatter.compare(expectedSig, documentedSig, {
34
- tolerateOptionalFields: true,
35
- tolerateGenericSimplification: true
36
- });
37
- if (!compareResult.match && !isArchitecturallyValid(expectedSig, documentedSig, symbol)) {
38
- // Bewertungslogik abhängig von Rolle und Doku-Tiefe
39
- const severity = depth === 'full' && (classification.role === 'service-api' || classification.role === 'domain-model')
40
- ? 'error'
41
- : 'warning';
42
- rawMismatches.push({
43
- symbolId: symbol.fullyQualifiedName,
44
- expected: expectedSig,
45
- documented: documentedSig,
46
- severity
47
- });
48
- }
49
- }
50
- }
51
- // Dedupliziere identische Abweichungen (gleiches Symbol + gleiche Signaturen)
52
- const deduped = new Map();
53
- for (const m of rawMismatches) {
54
- const key = `${m.symbolId}::${m.expected}::${m.documented}`;
55
- if (!deduped.has(key)) {
56
- deduped.set(key, m);
57
- }
58
- }
59
- return Array.from(deduped.values());
60
- }
61
- exports.validateSignatureMatching = validateSignatureMatching;
62
- /**
63
- * Prüft ob dokumentierte Signatur architektonisch gültig ist (z.B. Response Wrapper Pattern)
64
- */
65
- function isArchitecturallyValid(expected, documented, symbol) {
66
- // Normalisiere Whitespaces für Vergleich (gemeinsame Logik aus SignatureFormatter)
67
- const expectedNorm = signature_formatter_1.SignatureFormatter.normalize(expected);
68
- const documentedNorm = signature_formatter_1.SignatureFormatter.normalize(documented);
69
- // Spezielle Behandlung für parser vs parserOptions (beide existieren in .eslintrc.json)
70
- if ((expectedNorm.includes('parser:') && documentedNorm.includes('parserOptions:')) ||
71
- (expectedNorm.includes('parserOptions:') && documentedNorm.includes('parser:'))) {
72
- return true;
73
- }
74
- // Spezielle Behandlung für RepositoryFactory.get vs getDatabaseManager (Alias/Method-Name-Variation)
75
- if ((expectedNorm.includes('get(') && documentedNorm.includes('getDatabaseManager()')) ||
76
- (expectedNorm.includes('getDatabaseManager()') && documentedNorm.includes('get('))) {
77
- return true;
78
- }
79
- // 1. Response Wrapper Pattern: EntityType() vs EntityTypeApiResponse()
80
- if (isResponseWrapperPattern(expectedNorm, documentedNorm)) {
81
- return true;
82
- }
83
- // 1a. Direkte Architektur-Toleranz für bekannte Patterns
84
- if ((expectedNorm === 'Plugin()' && documentedNorm === 'PluginApiResponse()') ||
85
- (expectedNorm === 'Snapshot()' && documentedNorm === 'SnapshotApiResponse()')) {
86
- return true;
87
- }
88
- // 2. API-Config Pattern: AnalyticsApi vs AnalyticsApiConfig
89
- // Erwartet: "AnalyticsApi" oder "class AnalyticsApi", Dokumentiert: "AnalyticsApiConfig" oder "interface AnalyticsApiConfig"
90
- if (isApiConfigPattern(expectedNorm, documentedNorm)) {
91
- return true;
92
- }
93
- // 3. Recommendation vs RecommendationRequest Pattern
94
- // Erwartet: "Recommendation" oder "interface Recommendation", Dokumentiert: "RecommendationRequest" oder "interface RecommendationRequest"
95
- if (isRecommendationPattern(expectedNorm, documentedNorm)) {
96
- return true;
97
- }
98
- // 4. Manager-Suffix Pattern: DiagnosticsPublisher vs DiagnosticsPublisherManager
99
- // Erwartet: "DiagnosticsPublisher" oder "class DiagnosticsPublisher", Dokumentiert: "DiagnosticsPublisherManager" oder "class DiagnosticsPublisherManager"
100
- if (isManagerPattern(expectedNorm, documentedNorm)) {
101
- return true;
102
- }
103
- // 5. Config-Suffix Pattern (allgemein): X vs XConfig
104
- // Erwartet: "X" oder "class X", Dokumentiert: "XConfig" oder "interface XConfig"
105
- if (isConfigSuffixPattern(expectedNorm, documentedNorm)) {
106
- return true;
107
- }
108
- // 6. Recommendation vs RecommendationApiConfig Pattern (spezialisiert)
109
- // Erwartet: "Recommendation", Dokumentiert: "RecommendationApiConfig"
110
- // Das sind zwei verschiedene Interfaces, aber es ist ein bekanntes Pattern
111
- if (isRecommendationApiConfigPattern(expectedNorm, documentedNorm)) {
112
- return true;
113
- }
114
- return false;
115
- }
116
- /**
117
- * Erkennt Response Wrapper Pattern: Plugin() → PluginApiResponse()
118
- */
119
- function isResponseWrapperPattern(expected, documented) {
120
- // Extrahiere Funktionsnamen aus Signaturen
121
- const extractFunctionName = (sig) => {
122
- const match = sig.match(/^(\w+)\(/);
123
- return match ? match[1] : '';
124
- };
125
- const expectedName = extractFunctionName(expected);
126
- const documentedName = extractFunctionName(documented);
127
- // Prüfe ob documented = expected + "ApiResponse" Pattern
128
- if (documentedName === expectedName + 'ApiResponse') {
129
- return true;
130
- }
131
- // Prüfe auch umgekehrte Richtung: PluginApiResponse → Plugin
132
- if (expectedName === documentedName + 'ApiResponse') {
133
- return true;
134
- }
135
- return false;
136
- }
137
- /**
138
- * Erkennt API-Config Pattern: AnalyticsApi vs AnalyticsApiConfig
139
- */
140
- function isApiConfigPattern(expected, documented) {
141
- const extractName = (sig) => {
142
- // Normalisierte Signaturen können sein: "AnalyticsApi", "class AnalyticsApi", "interface AnalyticsApiConfig", "AnalyticsApi: AnalyticsApiConfig"
143
- // Extrahiere den Namen (erstes Wort nach "class"/"interface" oder erstes Wort vor ":" oder "{" oder am Anfang)
144
- const match = sig.match(/(?:class|interface|type|enum)\s+(\w+)|^(\w+)(?::|\{|$)/);
145
- return match ? (match[1] || match[2]) : '';
146
- };
147
- const expectedName = extractName(expected);
148
- const documentedName = extractName(documented);
149
- if (!expectedName || !documentedName)
150
- return false;
151
- // Prüfe ob documented = expected + "Config" Pattern (z.B. AnalyticsApi → AnalyticsApiConfig)
152
- if (documentedName === expectedName + 'Config') {
153
- return true;
154
- }
155
- // Prüfe auch umgekehrte Richtung: AnalyticsApiConfig → AnalyticsApi
156
- if (expectedName === documentedName + 'Config') {
157
- return true;
158
- }
159
- return false;
160
- }
161
- /**
162
- * Erkennt Recommendation Pattern: Recommendation vs RecommendationRequest
163
- */
164
- function isRecommendationPattern(expected, documented) {
165
- const extractName = (sig) => {
166
- // Normalisierte Signaturen können sein: "Recommendation", "interface Recommendation", "interface RecommendationRequest {...}"
167
- // Extrahiere den Namen (erstes Wort nach "interface"/"class" oder erstes Wort vor ":" oder "{" oder am Anfang)
168
- const match = sig.match(/(?:interface|class|type|enum)\s+(\w+)|^(\w+)(?::|\{|$)/);
169
- return match ? (match[1] || match[2]) : '';
170
- };
171
- const expectedName = extractName(expected);
172
- const documentedName = extractName(documented);
173
- if (!expectedName || !documentedName)
174
- return false;
175
- // Prüfe ob documented = expected + "Request" Pattern (z.B. Recommendation → RecommendationRequest)
176
- if (documentedName === expectedName + 'Request') {
177
- return true;
178
- }
179
- // Prüfe auch umgekehrte Richtung: RecommendationRequest → Recommendation
180
- if (expectedName === documentedName + 'Request') {
181
- return true;
182
- }
183
- return false;
184
- }
185
- /**
186
- * Erkennt Manager-Suffix Pattern: DiagnosticsPublisher vs DiagnosticsPublisherManager
187
- */
188
- function isManagerPattern(expected, documented) {
189
- const extractName = (sig) => {
190
- // Normalisierte Signaturen können sein: "DiagnosticsPublisher", "class DiagnosticsPublisher", "class DiagnosticsPublisherManager"
191
- // Extrahiere den Namen (erstes Wort nach "class"/"interface" oder erstes Wort vor ":" oder "{" oder am Anfang)
192
- const match = sig.match(/(?:class|interface|type|enum)\s+(\w+)|^(\w+)(?::|\{|$)/);
193
- return match ? (match[1] || match[2]) : '';
194
- };
195
- const expectedName = extractName(expected);
196
- const documentedName = extractName(documented);
197
- if (!expectedName || !documentedName)
198
- return false;
199
- // Prüfe ob documented = expected + "Manager" Pattern (z.B. DiagnosticsPublisher → DiagnosticsPublisherManager)
200
- if (documentedName === expectedName + 'Manager') {
201
- return true;
202
- }
203
- // Prüfe auch umgekehrte Richtung: DiagnosticsPublisherManager → DiagnosticsPublisher
204
- if (expectedName === documentedName + 'Manager') {
205
- return true;
206
- }
207
- return false;
208
- }
209
- /**
210
- * Erkennt Config-Suffix Pattern (allgemein): X vs XConfig
211
- */
212
- function isConfigSuffixPattern(expected, documented) {
213
- const extractName = (sig) => {
214
- // Normalisierte Signaturen können sein: "ComputationCache", "class ComputationCache", "interface ComputationCacheConfig"
215
- // Extrahiere den Namen (erstes Wort nach "class"/"interface" oder erstes Wort vor ":" oder "{" oder am Anfang)
216
- const match = sig.match(/(?:class|interface|type|enum)\s+(\w+)|^(\w+)(?::|\{|$)/);
217
- return match ? (match[1] || match[2]) : '';
218
- };
219
- const expectedName = extractName(expected);
220
- const documentedName = extractName(documented);
221
- if (!expectedName || !documentedName)
222
- return false;
223
- // Prüfe ob documented = expected + "Config" Pattern (z.B. ComputationCache → ComputationCacheConfig)
224
- if (documentedName === expectedName + 'Config') {
225
- return true;
226
- }
227
- // Prüfe auch umgekehrte Richtung: ComputationCacheConfig → ComputationCache
228
- if (expectedName === documentedName + 'Config') {
229
- return true;
230
- }
231
- return false;
232
- }
233
- /**
234
- * Erkennt Recommendation vs RecommendationApiConfig Pattern
235
- * Spezieller Fall: Recommendation (Interface) vs RecommendationApiConfig (Interface)
236
- */
237
- function isRecommendationApiConfigPattern(expected, documented) {
238
- const extractName = (sig) => {
239
- // Normalisierte Signaturen können sein: "Recommendation", "interface Recommendation", "RecommendationApiConfig"
240
- // Extrahiere den Namen (erstes Wort nach "class"/"interface" oder erstes Wort vor ":" oder "{" oder am Anfang)
241
- const match = sig.match(/(?:class|interface|type|enum)\s+(\w+)|^(\w+)(?::|\{|$)/);
242
- return match ? (match[1] || match[2]) : '';
243
- };
244
- const expectedName = extractName(expected);
245
- const documentedName = extractName(documented);
246
- if (!expectedName || !documentedName)
247
- return false;
248
- // Spezieller Fall: "Recommendation" vs "RecommendationApiConfig"
249
- if (expectedName === 'Recommendation' && documentedName === 'RecommendationApiConfig') {
250
- return true;
251
- }
252
- // Umgekehrte Richtung: "RecommendationApiConfig" vs "Recommendation"
253
- if (expectedName === 'RecommendationApiConfig' && documentedName === 'Recommendation') {
254
- return true;
255
- }
256
- return false;
257
- }
258
- function escapeRegex(str) {
259
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
260
- }
261
- //# sourceMappingURL=signature-matching.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signature-matching.js","sourceRoot":"","sources":["../../src/validator/signature-matching.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.computeValidationStatus = void 0;
4
- /**
5
- * @public
6
- * Compute overall validation status from results
7
- */
8
- function computeValidationStatus(errors, warnings, coverageErrors, signatureMismatches, markdownErrors) {
9
- const totalErrors = errors.length + coverageErrors.length + markdownErrors.length;
10
- const totalWarnings = warnings.length;
11
- let status;
12
- let message;
13
- if (totalErrors > 0) {
14
- status = 'red';
15
- message = `Kritische Probleme: ${totalErrors} Fehler`;
16
- }
17
- else if (totalWarnings > 0 || signatureMismatches > 0) {
18
- status = 'yellow';
19
- message = `Verbesserungen möglich: ${totalWarnings} Warnungen, ${signatureMismatches} Signatur-Abweichungen`;
20
- }
21
- else {
22
- status = 'green';
23
- message = 'Alle Validierungen bestanden';
24
- }
25
- return {
26
- status,
27
- message,
28
- details: {
29
- totalErrors,
30
- totalWarnings,
31
- coverageIssues: coverageErrors.length,
32
- signatureMismatches,
33
- markdownIssues: markdownErrors.length,
34
- }
35
- };
36
- }
37
- exports.computeValidationStatus = computeValidationStatus;
38
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/validator/status.ts"],"names":[],"mappings":";;;AAcA;;;GAGG;AACH,SAAgB,uBAAuB,CACnC,MAAgB,EAChB,QAAkB,EAClB,cAAwB,EACxB,mBAA2B,EAC3B,cAAwB;IAExB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAClF,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;IAEtC,IAAI,MAAwB,CAAC;IAC7B,IAAI,OAAe,CAAC;IAEpB,IAAI,WAAW,GAAG,CAAC,EAAE;QACjB,MAAM,GAAG,KAAK,CAAC;QACf,OAAO,GAAG,uBAAuB,WAAW,SAAS,CAAC;KACzD;SAAM,IAAI,aAAa,GAAG,CAAC,IAAI,mBAAmB,GAAG,CAAC,EAAE;QACrD,MAAM,GAAG,QAAQ,CAAC;QAClB,OAAO,GAAG,2BAA2B,aAAa,eAAe,mBAAmB,wBAAwB,CAAC;KAChH;SAAM;QACH,MAAM,GAAG,OAAO,CAAC;QACjB,OAAO,GAAG,8BAA8B,CAAC;KAC5C;IAED,OAAO;QACH,MAAM;QACN,OAAO;QACP,OAAO,EAAE;YACL,WAAW;YACX,aAAa;YACb,cAAc,EAAE,cAAc,CAAC,MAAM;YACrC,mBAAmB;YACnB,cAAc,EAAE,cAAc,CAAC,MAAM;SACxC;KACJ,CAAC;AACN,CAAC;AAnCD,0DAmCC"}