@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,230 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildSymbolsUnion = exports.buildDependenciesUnionWithDebug = exports.buildDependenciesUnion = void 0;
4
- const symbols_1 = require("./symbols");
5
- function buildDependenciesUnion(dependenciesNew, dependenciesCachePrev, parsedFiles, deletedFiles) {
6
- const depMapPrev = buildPreviousDependenciesMap(dependenciesCachePrev);
7
- const { union, debug } = buildUnionMap(dependenciesNew, depMapPrev, parsedFiles, deletedFiles);
8
- // Setze Debug-Info auf globalThis (für Logging in extension.ts)
9
- try {
10
- globalThis.__unionDebug = debug;
11
- }
12
- catch (e) {
13
- // Fallback: ignoriere Fehler
14
- }
15
- return deduplicateAndSortDependencies(union);
16
- }
17
- exports.buildDependenciesUnion = buildDependenciesUnion;
18
- function buildDependenciesUnionWithDebug(dependenciesNew, dependenciesCachePrev, parsedFiles, deletedFiles) {
19
- const depMapPrev = buildPreviousDependenciesMap(dependenciesCachePrev);
20
- const { union, debug } = buildUnionMap(dependenciesNew, depMapPrev, parsedFiles, deletedFiles);
21
- return {
22
- dependencies: deduplicateAndSortDependencies(union),
23
- debug
24
- };
25
- }
26
- exports.buildDependenciesUnionWithDebug = buildDependenciesUnionWithDebug;
27
- /**
28
- * @private
29
- * Build map from previous cache entries
30
- */
31
- function buildPreviousDependenciesMap(entries) {
32
- const depMapPrev = new Map();
33
- for (const entry of entries) {
34
- if (!depMapPrev.has(entry.from))
35
- depMapPrev.set(entry.from, []);
36
- depMapPrev.get(entry.from).push(entry);
37
- }
38
- return depMapPrev;
39
- }
40
- /**
41
- * @private
42
- * Build union map from new dependencies and previous cache
43
- */
44
- function buildUnionMap(dependenciesNew, depMapPrev, parsedFiles, deletedFiles) {
45
- const depMapUnion = new Map();
46
- // 1. For all parsed files: take new dependencies
47
- for (const dep of dependenciesNew) {
48
- if (!depMapUnion.has(dep.from))
49
- depMapUnion.set(dep.from, []);
50
- depMapUnion.get(dep.from).push({
51
- from: dep.from,
52
- to: dep.to,
53
- type: dep.type,
54
- symbols: dep.symbols && dep.symbols.length > 0 ? dep.symbols : undefined,
55
- isTypeOnly: dep.isTypeOnly,
56
- isReexport: dep.isReexport,
57
- });
58
- }
59
- // 2. For unparsed, non-deleted files: keep old dependencies
60
- let keptFromUnparsed = 0;
61
- let skippedFromParsed = 0;
62
- let skippedFromDeleted = 0;
63
- const debugFiles = [];
64
- for (const [from, deps] of depMapPrev.entries()) {
65
- if (parsedFiles.has(from)) {
66
- skippedFromParsed += deps.length;
67
- if (debugFiles.length < 5)
68
- debugFiles.push(`parsed: ${from} (${deps.length} deps)`);
69
- }
70
- else if (deletedFiles.has(from)) {
71
- skippedFromDeleted += deps.length;
72
- if (debugFiles.length < 5)
73
- debugFiles.push(`deleted: ${from} (${deps.length} deps)`);
74
- }
75
- else {
76
- if (!depMapUnion.has(from))
77
- depMapUnion.set(from, []);
78
- depMapUnion.get(from).push(...deps);
79
- keptFromUnparsed += deps.length;
80
- if (debugFiles.length < 5)
81
- debugFiles.push(`kept: ${from} (${deps.length} deps)`);
82
- }
83
- }
84
- const debugInfo = {
85
- keptFromUnparsed,
86
- skippedFromParsed,
87
- skippedFromDeleted,
88
- newDeps: dependenciesNew.length
89
- };
90
- // Debug-Logging direkt hier (für sofortige Sichtbarkeit)
91
- if (typeof console !== 'undefined' && console.log) {
92
- console.log('[buildUnionMap]', {
93
- parsedFilesCount: parsedFiles.size,
94
- deletedFilesCount: deletedFiles.size,
95
- prevDepsCount: Array.from(depMapPrev.values()).reduce((sum, deps) => sum + deps.length, 0),
96
- newDepsCount: dependenciesNew.length,
97
- debugInfo,
98
- sampleFiles: debugFiles.slice(0, 3)
99
- });
100
- }
101
- return {
102
- union: depMapUnion,
103
- debug: debugInfo
104
- };
105
- }
106
- /**
107
- * @public
108
- * Build symbols union from new symbols and previous index
109
- *
110
- * Algorithm (ADDITIVE_DOCUMENTATION_PLAN.md, Section 6.3):
111
- * 1. For parsed files: use new symbols
112
- * 2. For unparsed, non-deleted files: keep old symbols from index
113
- *
114
- * IMPORTANT: Only keeps symbols from files that were scanned in the current run.
115
- * Files that are no longer scanned (e.g., excluded directories) are treated as deleted.
116
- */
117
- function buildSymbolsUnion(symbolsNew, symbolsPrev, parsedFiles, deletedFiles, scannedFiles // Optional: files that were scanned in this run
118
- ) {
119
- // Build map from previous symbols
120
- const symbolMapPrev = new Map();
121
- for (const sym of symbolsPrev) {
122
- const key = (0, symbols_1.makeStableSymbolId)(sym);
123
- symbolMapPrev.set(key, sym);
124
- }
125
- // Union map
126
- const symbolMapUnion = new Map();
127
- // 1. For all parsed files: take new symbols
128
- for (const sym of symbolsNew) {
129
- const key = (0, symbols_1.makeStableSymbolId)(sym);
130
- symbolMapUnion.set(key, sym);
131
- }
132
- // 2. For unparsed, non-deleted files: keep old symbols
133
- // IMPORTANT: Only keep symbols from files that were scanned in this run
134
- // This ensures that files excluded from scanning (e.g., demo/, website/) are removed
135
- for (const [key, sym] of symbolMapPrev.entries()) {
136
- // Skip if file was parsed (new symbols already added above)
137
- if (parsedFiles.has(sym.filePath))
138
- continue;
139
- // Skip if file was deleted
140
- if (deletedFiles.has(sym.filePath))
141
- continue;
142
- // Skip if file was not scanned in this run (excluded directories)
143
- if (scannedFiles && !scannedFiles.has(sym.filePath))
144
- continue;
145
- // Keep old symbol
146
- if (!symbolMapUnion.has(key)) {
147
- symbolMapUnion.set(key, sym);
148
- }
149
- }
150
- return Array.from(symbolMapUnion.values());
151
- }
152
- exports.buildSymbolsUnion = buildSymbolsUnion;
153
- /**
154
- * @private
155
- * Deduplicate and sort dependencies
156
- *
157
- * Key: (from, to, type) - symbols, isTypeOnly, isReexport werden gemerged
158
- * Sort: from asc → to asc → type asc → symbols asc
159
- */
160
- function deduplicateAndSortDependencies(depMap) {
161
- const allDeps = [];
162
- for (const deps of depMap.values()) {
163
- allDeps.push(...deps);
164
- }
165
- // Deduplicate and merge by (from, to, type)
166
- const uniqueMap = new Map();
167
- for (const dep of allDeps) {
168
- const key = `${dep.from}::${dep.to}::${dep.type}`;
169
- const existing = uniqueMap.get(key);
170
- if (existing) {
171
- // Merge symbols
172
- if (dep.symbols && dep.symbols.length > 0) {
173
- existing.symbols = existing.symbols ?? [];
174
- existing.symbols.push(...dep.symbols);
175
- }
176
- // isTypeOnly bleibt nur true, wenn ALLE Einträge type-only sind
177
- if (!dep.isTypeOnly) {
178
- existing.isTypeOnly = false;
179
- }
180
- // isReexport wird true, wenn mindestens ein Eintrag ein Re-Export ist
181
- if (dep.isReexport) {
182
- existing.isReexport = true;
183
- }
184
- }
185
- else {
186
- uniqueMap.set(key, {
187
- from: dep.from,
188
- to: dep.to,
189
- type: dep.type,
190
- symbols: dep.symbols ? [...dep.symbols] : undefined,
191
- isTypeOnly: dep.isTypeOnly,
192
- isReexport: dep.isReexport,
193
- });
194
- }
195
- }
196
- // Finalize: deduplicate and sort symbols, remove undefined flags
197
- const finalized = [];
198
- for (const dep of uniqueMap.values()) {
199
- const entry = {
200
- from: dep.from,
201
- to: dep.to,
202
- type: dep.type,
203
- };
204
- if (dep.symbols && dep.symbols.length > 0) {
205
- entry.symbols = Array.from(new Set(dep.symbols)).sort((a, b) => a.localeCompare(b));
206
- }
207
- // Nur hinzufügen wenn true (spart Platz im JSON)
208
- if (dep.isTypeOnly) {
209
- entry.isTypeOnly = true;
210
- }
211
- if (dep.isReexport) {
212
- entry.isReexport = true;
213
- }
214
- finalized.push(entry);
215
- }
216
- // Sort
217
- const sorted = finalized.sort((a, b) => {
218
- if (a.from !== b.from)
219
- return a.from.localeCompare(b.from);
220
- if (a.to !== b.to)
221
- return a.to.localeCompare(b.to);
222
- if (a.type !== b.type)
223
- return a.type.localeCompare(b.type);
224
- const aSymbols = (a.symbols || []).join(',');
225
- const bSymbols = (b.symbols || []).join(',');
226
- return aSymbols.localeCompare(bSymbols);
227
- });
228
- return sorted;
229
- }
230
- //# sourceMappingURL=consolidation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../../src/core/consolidation.ts"],"names":[],"mappings":"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"}
package/out/core/git.js DELETED
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDeletedFiles = exports.getChangedFiles = void 0;
4
- const child_process_1 = require("child_process");
5
- /**
6
- * @public
7
- * Get changed files from git diff
8
- */
9
- function getChangedFiles(repoRoot) {
10
- try {
11
- const res = (0, child_process_1.spawnSync)('git', ['diff', '--name-only'], { cwd: repoRoot, encoding: 'utf8' });
12
- if (res.status !== 0)
13
- return null;
14
- const files = res.stdout.split(/\r?\n/).filter(Boolean).map(s => s.replace(/\\/g, '/'));
15
- return new Set(files);
16
- }
17
- catch {
18
- return null;
19
- }
20
- }
21
- exports.getChangedFiles = getChangedFiles;
22
- /**
23
- * @public
24
- * Get deleted files from git status
25
- */
26
- function getDeletedFiles(repoRoot) {
27
- try {
28
- // Get deleted files from git status
29
- const res = (0, child_process_1.spawnSync)('git', ['status', '--porcelain'], { cwd: repoRoot, encoding: 'utf8' });
30
- if (res.status !== 0)
31
- return null;
32
- const deleted = [];
33
- const lines = res.stdout.split(/\r?\n/).filter(Boolean);
34
- for (const line of lines) {
35
- // Git status format: " D filename" or "D filename" (deleted)
36
- if (line.match(/^\s*D\s+/)) {
37
- const file = line.replace(/^\s*D\s+/, '').replace(/\\/g, '/');
38
- deleted.push(file);
39
- }
40
- }
41
- return new Set(deleted);
42
- }
43
- catch {
44
- return null;
45
- }
46
- }
47
- exports.getDeletedFiles = getDeletedFiles;
48
- //# sourceMappingURL=git.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAE1C;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC5C,IAAI;QACA,MAAM,GAAG,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3F,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACxF,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;KACzB;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AATD,0CASC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC5C,IAAI;QACA,oCAAoC;QACpC,MAAM,GAAG,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7F,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,8DAA8D;YAC9D,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtB;SACJ;QACD,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;KAC3B;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAlBD,0CAkBC"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.guessLanguageByShebang = exports.normalizeLineEndings = void 0;
4
- /**
5
- * @public
6
- * Normalize line endings to LF
7
- */
8
- function normalizeLineEndings(content) {
9
- return content.replace(/\r\n?/g, '\n');
10
- }
11
- exports.normalizeLineEndings = normalizeLineEndings;
12
- /**
13
- * @public
14
- * Guess language from shebang line
15
- */
16
- function guessLanguageByShebang(firstLine) {
17
- if (!firstLine)
18
- return null;
19
- if (!firstLine.startsWith('#!'))
20
- return null;
21
- const lower = firstLine.toLowerCase();
22
- if (lower.includes('python'))
23
- return 'python';
24
- if (lower.includes('node') || lower.includes('deno'))
25
- return 'js';
26
- return null;
27
- }
28
- exports.guessLanguageByShebang = guessLanguageByShebang;
29
- //# sourceMappingURL=language-detection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"language-detection.js","sourceRoot":"","sources":["../../src/core/language-detection.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,OAAe;IAChD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAFD,oDAEC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,SAAwB;IAC3D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,IAAI,CAAC;AAChB,CAAC;AAPD,wDAOC"}
@@ -1,179 +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
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.scanWorkspace = void 0;
30
- const fs = __importStar(require("node:fs"));
31
- const path = __importStar(require("node:path"));
32
- const ignore_1 = __importDefault(require("ignore"));
33
- const language_detection_1 = require("./language-detection");
34
- const index_1 = require("../logging/index");
35
- const DEFAULT_EXCLUDES = new Set([
36
- 'node_modules',
37
- '.git', '.svn', '.hg',
38
- 'dist', 'out', 'build',
39
- '__pycache__', '.mypy_cache', '.venv', '.cache',
40
- 'docs',
41
- 'coverage',
42
- '.database-plugin',
43
- '.database',
44
- '.ai-agent-context',
45
- '.vscode',
46
- '.cursor',
47
- 'demo',
48
- 'website', // Website-Projekt (laut .gitignore)
49
- ]);
50
- // Hard-Exclude File Patterns (systemweit verbindlich)
51
- // Diese Dateien werden NIE gescannt, unabhängig von .gitignore
52
- const EXCLUDE_FILE_PATTERNS = [
53
- /\.d\.ts$/,
54
- /\.schema\.json$/,
55
- /\.min\.js$/,
56
- /\.map$/, // Source Maps
57
- ];
58
- const BACKUP_DIR_NAMES = new Set(['backup', 'backups', 'archive', 'archives']);
59
- const BACKUP_FILE_SUFFIXES = ['.bak', '.old', '.tmp', '.swp', '.swo'];
60
- /**
61
- * @public
62
- * Scan workspace for source files
63
- */
64
- function scanWorkspace(options, includeBackups = false) {
65
- const root = path.resolve(options.workspaceRoot);
66
- const results = [];
67
- const logger = new index_1.Logger({ component: 'scanner' });
68
- const ig = (0, ignore_1.default)();
69
- const gitignorePath = path.join(root, '.gitignore');
70
- if (fs.existsSync(gitignorePath)) {
71
- try {
72
- ig.add(fs.readFileSync(gitignorePath, 'utf8'));
73
- }
74
- catch (e) {
75
- const errorMsg = e instanceof Error ? e.message : String(e);
76
- logger.warn(`Konnte .gitignore nicht lesen: ${errorMsg}`);
77
- }
78
- }
79
- function isBinaryFile(filePath) {
80
- try {
81
- const fd = fs.openSync(filePath, 'r');
82
- const buffer = Buffer.allocUnsafe(512);
83
- const bytes = fs.readSync(fd, buffer, 0, 512, 0);
84
- fs.closeSync(fd);
85
- for (let i = 0; i < bytes; i++) {
86
- const charCode = buffer[i];
87
- if (charCode === 0)
88
- return true; // NUL byte
89
- }
90
- return false;
91
- }
92
- catch {
93
- return false;
94
- }
95
- }
96
- function detectLanguageByExtension(filePath) {
97
- const ext = path.extname(filePath).toLowerCase();
98
- switch (ext) {
99
- case '.ts':
100
- case '.tsx':
101
- return 'ts';
102
- case '.js':
103
- case '.jsx':
104
- return 'js';
105
- case '.json':
106
- return 'json';
107
- case '.yaml':
108
- case '.yml':
109
- return 'yaml';
110
- case '.py':
111
- return 'python';
112
- case '.md':
113
- return 'markdown';
114
- default:
115
- return null;
116
- }
117
- }
118
- function walk(currentDir) {
119
- const entries = fs.readdirSync(currentDir, { withFileTypes: true });
120
- // Deterministische Reihenfolge
121
- entries.sort((a, b) => a.name.localeCompare(b.name));
122
- for (const entry of entries) {
123
- if (entry.name.startsWith('.git'))
124
- continue;
125
- if (DEFAULT_EXCLUDES.has(entry.name))
126
- continue;
127
- const fullPath = path.join(currentDir, entry.name);
128
- const repoRel = path.relative(root, fullPath).split(path.sep).join('/');
129
- // Generierte Dokumentation ausschließen (docs/ Verzeichnis)
130
- if (repoRel.startsWith('docs/'))
131
- continue;
132
- if (ig.ignores(repoRel))
133
- continue;
134
- if (entry.isDirectory()) {
135
- if (!includeBackups && BACKUP_DIR_NAMES.has(entry.name.toLowerCase()))
136
- continue;
137
- walk(fullPath);
138
- }
139
- else if (entry.isFile()) {
140
- if (isBinaryFile(fullPath))
141
- continue;
142
- // Hard-Exclude File Patterns (systemweit verbindlich)
143
- if (EXCLUDE_FILE_PATTERNS.some(pattern => pattern.test(entry.name))) {
144
- continue;
145
- }
146
- let language = detectLanguageByExtension(fullPath);
147
- if (!language) {
148
- try {
149
- const fd = fs.openSync(fullPath, 'r');
150
- const buffer = Buffer.allocUnsafe(128);
151
- const bytes = fs.readSync(fd, buffer, 0, 128, 0);
152
- fs.closeSync(fd);
153
- const firstLine = buffer.slice(0, bytes).toString('utf8').split(/\r?\n/)[0] || '';
154
- language = (0, language_detection_1.guessLanguageByShebang)(firstLine);
155
- }
156
- catch (e) {
157
- const errorMsg = e instanceof Error ? e.message : String(e);
158
- logger.warn(`Shebang-Erkennung fehlgeschlagen für ${repoRel}: ${errorMsg}`);
159
- }
160
- }
161
- // Backup- und temporäre Dateien überspringen (außer explizit gewünscht)
162
- if (!includeBackups) {
163
- const lower = entry.name.toLowerCase();
164
- if (BACKUP_FILE_SUFFIXES.some(s => lower.endsWith(s)))
165
- continue;
166
- if (repoRel.includes('/backups/') || repoRel.includes('/backup/') || repoRel.includes('/archives/'))
167
- continue;
168
- }
169
- results.push({ absolutePath: fullPath, repositoryRelativePath: repoRel, language });
170
- }
171
- }
172
- }
173
- walk(root);
174
- // Endgültig deterministisch sortieren
175
- results.sort((a, b) => a.repositoryRelativePath.localeCompare(b.repositoryRelativePath));
176
- return results;
177
- }
178
- exports.scanWorkspace = scanWorkspace;
179
- //# sourceMappingURL=scanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"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"}