@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,117 +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.generatePerFileDocs = void 0;
27
- const fs = __importStar(require("node:fs"));
28
- const path = __importStar(require("node:path"));
29
- const module_doc_1 = require("./module-doc");
30
- const adr_linker_1 = require("./adr-linker");
31
- /**
32
- * @public
33
- * Make safe file name from module path
34
- */
35
- function makeSafeFileName(filePath) {
36
- return filePath.replace(/[<>:"|?*]/g, '_').replace(/\//g, '__');
37
- }
38
- /**
39
- * @public
40
- * Generate per-file documentation with change tracking
41
- */
42
- function generatePerFileDocs(symbols, modulesDir, existingDocs) {
43
- const grouped = new Map();
44
- const typeOrder = { module: 0, class: 1, interface: 2, enum: 3, method: 4, function: 5, variable: 6, type: 7 };
45
- const sorted = [...symbols].sort((a, b) => {
46
- if (a.filePath !== b.filePath)
47
- return a.filePath.localeCompare(b.filePath);
48
- const to = (k) => (typeOrder[k] ?? 99);
49
- if (to(a.kind) !== to(b.kind))
50
- return to(a.kind) - to(b.kind);
51
- return a.fullyQualifiedName.localeCompare(b.fullyQualifiedName);
52
- });
53
- for (const s of sorted) {
54
- const key = s.filePath;
55
- if (!grouped.has(key))
56
- grouped.set(key, []);
57
- grouped.get(key).push(s);
58
- }
59
- // Create AdrLinker once for all files (performance optimization)
60
- const adrDir = path.join(path.dirname(modulesDir), 'adr');
61
- let adrLinker;
62
- try {
63
- if (fs.existsSync(adrDir)) {
64
- adrLinker = new adr_linker_1.AdrLinker(adrDir);
65
- // Debug: Log ADR mappings
66
- const mappings = adrLinker.getAllAdrMappings();
67
- if (mappings.size > 0) {
68
- console.log(`[ADR-Linker] Loaded ${mappings.size} file path mappings from ${adrDir}`);
69
- }
70
- else {
71
- console.log(`[ADR-Linker] No file path mappings found in ${adrDir}`);
72
- }
73
- }
74
- else {
75
- console.log(`[ADR-Linker] ADR directory does not exist: ${adrDir}`);
76
- }
77
- }
78
- catch (err) {
79
- // If ADR linking fails, continue without it
80
- // This ensures the documentation generation doesn't break
81
- console.error(`[ADR-Linker] Error creating AdrLinker: ${err}`);
82
- }
83
- const files = new Map();
84
- for (const [filePath, syms] of grouped.entries()) {
85
- const safeName = makeSafeFileName(filePath);
86
- const targetPath = path.join(modulesDir, `${safeName}.md`);
87
- // Load existing documentation if available
88
- let existingDoc = { blocks: [] };
89
- if (existingDocs && existingDocs.has(filePath)) {
90
- try {
91
- existingDoc = (0, module_doc_1.parseModuleDoc)(existingDocs.get(filePath));
92
- }
93
- catch (err) {
94
- // If parsing fails, start fresh
95
- existingDoc = { blocks: [] };
96
- }
97
- }
98
- else if (fs.existsSync(targetPath)) {
99
- try {
100
- const content = fs.readFileSync(targetPath, 'utf8');
101
- existingDoc = (0, module_doc_1.parseModuleDoc)(content);
102
- }
103
- catch (err) {
104
- // If parsing fails, start fresh
105
- existingDoc = { blocks: [] };
106
- }
107
- }
108
- // Build documentation with change tracking
109
- const newDoc = (0, module_doc_1.buildModuleDocWithChanges)(syms, existingDoc);
110
- // Reuse AdrLinker instance for all files
111
- const content = (0, module_doc_1.renderModuleDoc)(newDoc, filePath, adrLinker);
112
- files.set(filePath, content);
113
- }
114
- return files;
115
- }
116
- exports.generatePerFileDocs = generatePerFileDocs;
117
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"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"}
@@ -1,438 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderModuleDoc = exports.buildModuleDocWithChanges = exports.signatureChanged = exports.normalizeSignature = exports.parseModuleDoc = void 0;
4
- const signature_formatter_1 = require("../core/signature-formatter");
5
- const symbol_classifier_1 = require("../core/symbol-classifier");
6
- /**
7
- * @public
8
- * Parse existing module documentation markdown
9
- */
10
- function parseModuleDoc(content) {
11
- const blocks = [];
12
- const lines = content.split(/\r?\n/);
13
- let currentBlock = null;
14
- let inCodeBlock = false;
15
- let codeLines = [];
16
- let currentComment = '';
17
- for (let i = 0; i < lines.length; i++) {
18
- const line = lines[i];
19
- // HTML comment (change annotation)
20
- const commentMatch = line.match(/^<!--\s*change:\s*(.+?)\s*-->$/);
21
- if (commentMatch) {
22
- currentComment = line;
23
- continue;
24
- }
25
- // Header: ### kind: fullyQualifiedName
26
- const headerMatch = line.match(/^###\s+(\w+):\s+(.+)$/);
27
- if (headerMatch) {
28
- // Save previous block if exists
29
- if (currentBlock && currentBlock.fullyQualifiedName && currentBlock.symbol) {
30
- blocks.push({
31
- fullyQualifiedName: currentBlock.fullyQualifiedName,
32
- kind: currentBlock.kind,
33
- signature: currentBlock.signature,
34
- comment: currentComment || '',
35
- symbol: currentBlock.symbol
36
- });
37
- }
38
- const kind = headerMatch[1];
39
- const fullyQualifiedName = headerMatch[2];
40
- currentBlock = {
41
- fullyQualifiedName,
42
- kind,
43
- signature: { name: fullyQualifiedName.split('.').pop() || fullyQualifiedName, parameters: [] },
44
- symbol: {
45
- language: 'unknown',
46
- filePath: '',
47
- fullyQualifiedName,
48
- signature: { name: fullyQualifiedName.split('.').pop() || fullyQualifiedName, parameters: [] },
49
- kind
50
- }
51
- };
52
- currentComment = '';
53
- inCodeBlock = false;
54
- codeLines = [];
55
- continue;
56
- }
57
- // Code block start
58
- if (line.trim() === '```ts' || line.trim() === '```') {
59
- inCodeBlock = true;
60
- codeLines = [];
61
- continue;
62
- }
63
- // Code block end
64
- if (inCodeBlock && line.trim() === '```') {
65
- if (currentBlock && currentBlock.symbol && codeLines.length > 0) {
66
- // Parse signature from code
67
- const code = codeLines.join('\n');
68
- currentBlock.signature = parseSignatureFromCode(code, currentBlock.kind);
69
- currentBlock.symbol.signature = currentBlock.signature;
70
- }
71
- inCodeBlock = false;
72
- codeLines = [];
73
- continue;
74
- }
75
- if (inCodeBlock && currentBlock) {
76
- codeLines.push(line);
77
- }
78
- }
79
- // Save last block
80
- if (currentBlock && currentBlock.fullyQualifiedName && currentBlock.symbol) {
81
- blocks.push({
82
- fullyQualifiedName: currentBlock.fullyQualifiedName,
83
- kind: currentBlock.kind,
84
- signature: currentBlock.signature,
85
- comment: currentComment || '',
86
- symbol: currentBlock.symbol
87
- });
88
- }
89
- return { blocks };
90
- }
91
- exports.parseModuleDoc = parseModuleDoc;
92
- /**
93
- * @public
94
- * Parse signature from code block
95
- */
96
- function parseSignatureFromCode(code, kind) {
97
- const trimmed = code.trim();
98
- if (kind === 'interface') {
99
- const nameMatch = trimmed.match(/^interface\s+(\w+)/);
100
- if (nameMatch) {
101
- const name = nameMatch[1];
102
- const params = [];
103
- // Simple parameter extraction for interfaces
104
- const propMatches = trimmed.matchAll(/\s+(\w+)(\?)?(?::\s*([^;]+))?;/g);
105
- for (const match of propMatches) {
106
- params.push({
107
- name: match[1],
108
- type: match[3] || undefined,
109
- optional: !!match[2],
110
- hasDefault: false
111
- });
112
- }
113
- return { name, parameters: params, visibility: 'public' };
114
- }
115
- }
116
- if (kind === 'class') {
117
- const nameMatch = trimmed.match(/^class\s+(\w+)/);
118
- if (nameMatch) {
119
- return { name: nameMatch[1], parameters: [], visibility: 'public' };
120
- }
121
- }
122
- if (kind === 'function' || kind === 'method') {
123
- const funcMatch = trimmed.match(/^(\w+)\s*\(([^)]*)\)(?:\s*:\s*([^{]+))?/);
124
- if (funcMatch) {
125
- const name = funcMatch[1];
126
- const paramsStr = funcMatch[2];
127
- const returnType = funcMatch[3]?.trim();
128
- const params = [];
129
- if (paramsStr) {
130
- const paramParts = paramsStr.split(',').map(p => p.trim()).filter(p => p);
131
- for (const part of paramParts) {
132
- const paramMatch = part.match(/^(\w+)(\?)?(?::\s*([^=]+))?(?:\s*=\s*…)?$/);
133
- if (paramMatch) {
134
- params.push({
135
- name: paramMatch[1],
136
- type: paramMatch[3]?.trim() || undefined,
137
- optional: !!paramMatch[2],
138
- hasDefault: part.includes('=')
139
- });
140
- }
141
- }
142
- }
143
- return { name, parameters: params, returnType, visibility: 'public' };
144
- }
145
- }
146
- if (kind === 'variable') {
147
- const varMatch = trimmed.match(/^(\w+)(?:\s*:\s*([^=]+))?/);
148
- if (varMatch) {
149
- return { name: varMatch[1], parameters: [], returnType: varMatch[2]?.trim(), visibility: 'public' };
150
- }
151
- }
152
- // Fallback
153
- const nameMatch = trimmed.match(/^(\w+)/);
154
- return { name: nameMatch?.[1] || 'unknown', parameters: [], visibility: 'public' };
155
- }
156
- /**
157
- * @public
158
- * Normalize signature for comparison
159
- */
160
- function normalizeSignature(sig) {
161
- const params = sig.parameters
162
- .map(p => `${p.name}${p.optional ? '?' : ''}:${p.type ?? ''}${p.hasDefault ? '=…' : ''}`)
163
- .sort()
164
- .join(',');
165
- return `${sig.name}(${params}):${sig.returnType ?? ''}`;
166
- }
167
- exports.normalizeSignature = normalizeSignature;
168
- /**
169
- * Heuristik: Triviale Platzhalter-Signatur aus der alten Welt?
170
- * Beispiel: "Snapshot():" (keine Parameter, kein Rückgabewert)
171
- */
172
- function isTrivialNormalizedSignature(sig) {
173
- return /^[A-Za-z0-9_]+\(\):?$/.test(sig) || /^[A-Za-z0-9_]+\(\):$/.test(sig);
174
- }
175
- /**
176
- * Heuristik: Handelt es sich um eine reine Formatter-Migration
177
- * von einer Platzhalter-Signatur zu einer „tiefen“ Signatur?
178
- */
179
- function isFormatterMigration(oldSig, newSig) {
180
- return isTrivialNormalizedSignature(oldSig) && !isTrivialNormalizedSignature(newSig);
181
- }
182
- /**
183
- * @public
184
- * Check if signature changed zwischen zwei Symbolen
185
- */
186
- function signatureChanged(a, b) {
187
- return normalizeSignature(a.signature) !== normalizeSignature(b.signature);
188
- }
189
- exports.signatureChanged = signatureChanged;
190
- /**
191
- * @public
192
- * Build module documentation with change tracking
193
- */
194
- function buildModuleDocWithChanges(symbols, existingDoc) {
195
- const blocks = [];
196
- const existingBlocksByName = new Map(existingDoc.blocks.map(b => [b.fullyQualifiedName, b]));
197
- // For each symbol in code
198
- for (const sym of symbols) {
199
- const existingBlock = existingBlocksByName.get(sym.fullyQualifiedName);
200
- if (!existingBlock) {
201
- // Symbol is new
202
- blocks.push({
203
- comment: `<!-- change: symbol-added name="${sym.fullyQualifiedName}" kind="${sym.kind}" -->`,
204
- symbol: sym
205
- });
206
- }
207
- else if (signatureChanged(sym, existingBlock.symbol)) {
208
- // Signature geändert – prüfen, ob es sich nur um eine
209
- // Migration von Platzhalter- zu Tiefensignaturen handelt.
210
- const oldSig = normalizeSignature(existingBlock.symbol.signature);
211
- const newSig = normalizeSignature(sym.signature);
212
- if (isFormatterMigration(oldSig, newSig)) {
213
- // Nur Formatter-Migration – nicht als semantische Änderung melden
214
- blocks.push({
215
- comment: existingBlock.comment || '',
216
- symbol: sym
217
- });
218
- }
219
- else {
220
- // Echte Signatur-Änderung
221
- blocks.push({
222
- comment: `<!-- change: signature-changed old="${oldSig}" new="${newSig}" -->`,
223
- symbol: sym
224
- });
225
- }
226
- }
227
- else {
228
- // Unverändert – bestehenden Kommentar übernehmen
229
- blocks.push({
230
- comment: existingBlock.comment || '',
231
- symbol: sym
232
- });
233
- }
234
- existingBlocksByName.delete(sym.fullyQualifiedName);
235
- }
236
- // For remaining blocks (no longer in code)
237
- for (const [name, block] of existingBlocksByName.entries()) {
238
- blocks.push({
239
- comment: `<!-- change: symbol-removed name="${name}" kind="${block.symbol.kind}" -->`,
240
- symbol: block.symbol
241
- });
242
- }
243
- // Deterministic sort
244
- blocks.sort(compareBlocks);
245
- return { blocks };
246
- }
247
- exports.buildModuleDocWithChanges = buildModuleDocWithChanges;
248
- /**
249
- * @public
250
- * Compare blocks for deterministic sorting
251
- */
252
- function compareBlocks(a, b) {
253
- const typeOrder = {
254
- module: 0, class: 1, interface: 2, enum: 3, method: 4, function: 5, variable: 6, type: 7
255
- };
256
- const to = (k) => (typeOrder[k] ?? 99);
257
- const ca = (0, symbol_classifier_1.classifySymbol)(a.symbol);
258
- const cb = (0, symbol_classifier_1.classifySymbol)(b.symbol);
259
- const roleOrder = {
260
- 'service-api': 0,
261
- 'domain-model': 1,
262
- config: 2,
263
- other: 3,
264
- infra: 4
265
- };
266
- const priorityOrder = {
267
- high: 0,
268
- normal: 1,
269
- low: 2
270
- };
271
- if (to(a.symbol.kind) !== to(b.symbol.kind)) {
272
- return to(a.symbol.kind) - to(b.symbol.kind);
273
- }
274
- const roleA = roleOrder[ca.role] ?? 99;
275
- const roleB = roleOrder[cb.role] ?? 99;
276
- if (roleA !== roleB) {
277
- return roleA - roleB;
278
- }
279
- const prioA = priorityOrder[ca.priority] ?? 99;
280
- const prioB = priorityOrder[cb.priority] ?? 99;
281
- if (prioA !== prioB) {
282
- return prioA - prioB;
283
- }
284
- return a.symbol.fullyQualifiedName.localeCompare(b.symbol.fullyQualifiedName);
285
- }
286
- /**
287
- * @public
288
- * Render module documentation to markdown
289
- */
290
- function renderModuleDoc(doc, filePath, adrLinker) {
291
- const lines = [];
292
- lines.push(`# Modul: ${filePath}`);
293
- lines.push('');
294
- // Add relevant ADRs section if adrLinker is provided
295
- if (adrLinker) {
296
- try {
297
- const relevantAdrs = adrLinker.getRelevantAdrs(filePath);
298
- if (relevantAdrs.length > 0) {
299
- lines.push('## Relevante ADRs');
300
- lines.push('');
301
- for (const adrNum of relevantAdrs) {
302
- const metadata = adrLinker.getAdrMetadata(adrNum);
303
- if (metadata) {
304
- const linkPath = `../adr/${metadata.fileName}`;
305
- lines.push(`- [ADR-${adrNum}: ${metadata.title}](${linkPath})`);
306
- }
307
- }
308
- lines.push('');
309
- }
310
- else {
311
- // Debug: Log when no ADRs found for a file
312
- console.log(`[ADR-Linker] No relevant ADRs found for ${filePath}`);
313
- }
314
- }
315
- catch (err) {
316
- // If ADR linking fails, continue without it
317
- // This ensures the documentation generation doesn't break
318
- console.error(`[ADR-Linker] Error getting relevant ADRs for ${filePath}: ${err}`);
319
- }
320
- }
321
- else {
322
- // Debug: Log when adrLinker is not provided
323
- console.log(`[ADR-Linker] No adrLinker provided for ${filePath}`);
324
- }
325
- // Hilfsindex: Wie viele Methoden gehören (per Namensschema) zu welcher Klasse?
326
- const methodsPerClass = new Map();
327
- for (const block of doc.blocks) {
328
- if (block.symbol.kind === 'method') {
329
- const parts = block.symbol.fullyQualifiedName.split('.');
330
- if (parts.length > 1) {
331
- const className = parts[0];
332
- methodsPerClass.set(className, (methodsPerClass.get(className) ?? 0) + 1);
333
- }
334
- }
335
- }
336
- for (const block of doc.blocks) {
337
- const classification = (0, symbol_classifier_1.classifySymbol)(block.symbol);
338
- if (block.comment) {
339
- lines.push(block.comment);
340
- }
341
- lines.push(`### ${block.symbol.kind}: ${block.symbol.fullyQualifiedName}`);
342
- // Rolle / Sichtbarkeit zur Einordnung des Symbols
343
- lines.push(`Rolle: ${classification.role} (Sichtbarkeit: ${classification.visibility}, Priorität: ${classification.priority})`);
344
- // Kurze, einzeilige Signatur-Zusammenfassung
345
- const inlineSignature = signature_formatter_1.SignatureFormatter.formatForDoc(block.symbol);
346
- lines.push(`Signatur: \`${inlineSignature}\``);
347
- // Vollständige Signatur im Codeblock
348
- lines.push('```ts');
349
- lines.push(inlineSignature);
350
- lines.push('```');
351
- // Zusätzliche, strukturierte API-Doku
352
- if (block.symbol.kind === 'function' || block.symbol.kind === 'method') {
353
- const params = [...block.symbol.signature.parameters].sort((a, b) => (a.name || '').localeCompare(b.name || ''));
354
- if (params.length > 0) {
355
- lines.push('');
356
- lines.push('Parameter:');
357
- lines.push('');
358
- lines.push('| Name | Typ | Optional | Default |');
359
- lines.push('|------|-----|----------|---------|');
360
- for (const p of params) {
361
- const type = p.type ?? '';
362
- const optional = p.optional ? 'ja' : 'nein';
363
- const hasDefault = p.hasDefault ? 'ja' : 'nein';
364
- lines.push(`| \`${p.name}\` | \`${type}\` | ${optional} | ${hasDefault} |`);
365
- }
366
- }
367
- if (block.symbol.signature.returnType) {
368
- lines.push('');
369
- lines.push(`Rückgabewert: \`${block.symbol.signature.returnType}\``);
370
- }
371
- lines.push('');
372
- }
373
- else if (block.symbol.kind === 'interface') {
374
- const props = [...block.symbol.signature.parameters].sort((a, b) => (a.name || '').localeCompare(b.name || ''));
375
- if (props.length > 0) {
376
- lines.push('');
377
- lines.push('Eigenschaften:');
378
- lines.push('');
379
- lines.push('| Name | Typ | Optional |');
380
- lines.push('|------|-----|----------|');
381
- for (const p of props) {
382
- const type = p.type ?? '';
383
- const optional = p.optional ? 'ja' : 'nein';
384
- lines.push(`| \`${p.name}\` | \`${type}\` | ${optional} |`);
385
- }
386
- lines.push('');
387
- }
388
- }
389
- else if (block.symbol.kind === 'class') {
390
- const simpleName = block.symbol.fullyQualifiedName.split('.').pop() || block.symbol.fullyQualifiedName;
391
- const methodCount = methodsPerClass.get(simpleName) ?? 0;
392
- const hasOwnSignature = (block.symbol.signature.parameters && block.symbol.signature.parameters.length > 0) ||
393
- !!block.symbol.signature.returnType;
394
- if (methodCount > 0 && !hasOwnSignature) {
395
- lines.push('');
396
- lines.push(`Diese Klasse bündelt ${methodCount} Methoden. ` +
397
- 'Die detaillierten Signaturen sind in den nachfolgenden `method:`-Abschnitten dokumentiert.');
398
- lines.push('');
399
- }
400
- else {
401
- lines.push('');
402
- }
403
- }
404
- else if (block.symbol.kind === 'variable' && block.symbol.fullyQualifiedName.endsWith('SNAPSHOT_CONSTANTS')) {
405
- // Spezielle, strukturierte Darstellung für SNAPSHOT_CONSTANTS
406
- const snapshotKeys = [];
407
- const signature = inlineSignature;
408
- const objectBodyMatch = signature.match(/\{\s*([^}]*)\s*\}$/);
409
- if (objectBodyMatch) {
410
- const body = objectBodyMatch[1];
411
- const keyRegex = /readonly\s+([A-Z_]+)\s*:/g;
412
- let m;
413
- while ((m = keyRegex.exec(body)) !== null) {
414
- snapshotKeys.push(m[1]);
415
- }
416
- }
417
- if (snapshotKeys.length > 0) {
418
- snapshotKeys.sort();
419
- lines.push('');
420
- lines.push('Struktur:');
421
- lines.push('');
422
- for (const key of snapshotKeys) {
423
- lines.push(`- \`${key}\`: Konfigurationsbereich innerhalb von \`SNAPSHOT_CONSTANTS\`.`);
424
- }
425
- lines.push('');
426
- }
427
- else {
428
- lines.push('');
429
- }
430
- }
431
- else {
432
- lines.push('');
433
- }
434
- }
435
- return lines.join('\n');
436
- }
437
- exports.renderModuleDoc = renderModuleDoc;
438
- //# sourceMappingURL=module-doc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-doc.js","sourceRoot":"","sources":["../../src/generator/module-doc.ts"],"names":[],"mappings":"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"}