@noyrax/documentation-system-plugin 1.0.4-beta.1 → 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.
- package/docs/index/symbols.jsonl +78 -31
- package/docs/modules/mcp__src__tools__drift.ts.md +6 -2
- package/docs/modules/mcp__src__tools__impact.ts.md +3 -0
- package/docs/modules/package.json.md +10 -11
- package/docs/modules/scripts__verify-adrs.js.md +2 -2
- package/docs/modules/src__core__consolidation.ts.md +0 -1
- package/docs/modules/src__core__scanner.ts.md +0 -1
- package/docs/modules/src__index__index.ts.md +18 -0
- package/docs/modules/src__parsers__json-yaml.ts.md +16 -1
- package/docs/modules/src__parsers__types.ts.md +18 -0
- package/docs/system/CHANGE_REPORT.md +14 -7
- package/docs/system/DEPENDENCIES.md +0 -27
- package/docs/system/DEPENDENCY_GRAPH.md +267 -299
- package/docs/system/SYSTEM_METADATA.json +37 -0
- package/package.json +3 -4
- package/noyrax-5d-database-plugin-0.1.8.tgz +0 -0
- package/out/cache/ast-cache.js +0 -69
- package/out/cache/ast-cache.js.map +0 -1
- package/out/cache/dependencies-cache.js +0 -73
- package/out/cache/dependencies-cache.js.map +0 -1
- package/out/cache/output-cache.js +0 -69
- package/out/cache/output-cache.js.map +0 -1
- package/out/cache/signature-cache.js +0 -60
- package/out/cache/signature-cache.js.map +0 -1
- package/out/cli/generate-cli.js +0 -330
- package/out/cli/generate-cli.js.map +0 -1
- package/out/cli/scan-cli.js +0 -151
- package/out/cli/scan-cli.js.map +0 -1
- package/out/cli/validate-cli.js +0 -258
- package/out/cli/validate-cli.js.map +0 -1
- package/out/core/async.js +0 -38
- package/out/core/async.js.map +0 -1
- package/out/core/consolidation.js +0 -230
- package/out/core/consolidation.js.map +0 -1
- package/out/core/git.js +0 -48
- package/out/core/git.js.map +0 -1
- package/out/core/language-detection.js +0 -29
- package/out/core/language-detection.js.map +0 -1
- package/out/core/scanner.js +0 -179
- package/out/core/scanner.js.map +0 -1
- package/out/core/signature-formatter.js +0 -162
- package/out/core/signature-formatter.js.map +0 -1
- package/out/core/symbol-classifier.js +0 -96
- package/out/core/symbol-classifier.js.map +0 -1
- package/out/core/symbols.js +0 -24
- package/out/core/symbols.js.map +0 -1
- package/out/drift/index.js +0 -28
- package/out/drift/index.js.map +0 -1
- package/out/extension.js +0 -984
- package/out/extension.js.map +0 -1
- package/out/generator/adr-linker.js +0 -216
- package/out/generator/adr-linker.js.map +0 -1
- package/out/generator/change-report.js +0 -124
- package/out/generator/change-report.js.map +0 -1
- package/out/generator/dependency-graph.js +0 -98
- package/out/generator/dependency-graph.js.map +0 -1
- package/out/generator/index.js +0 -117
- package/out/generator/index.js.map +0 -1
- package/out/generator/module-doc.js +0 -438
- package/out/generator/module-doc.js.map +0 -1
- package/out/index/index.js +0 -147
- package/out/index/index.js.map +0 -1
- package/out/logging/index.js +0 -24
- package/out/logging/index.js.map +0 -1
- package/out/parsers/dependencies.js +0 -126
- package/out/parsers/dependencies.js.map +0 -1
- package/out/parsers/json-yaml.js +0 -90
- package/out/parsers/json-yaml.js.map +0 -1
- package/out/parsers/python.js +0 -160
- package/out/parsers/python.js.map +0 -1
- package/out/parsers/ts-js.js +0 -397
- package/out/parsers/ts-js.js.map +0 -1
- package/out/parsers/types.js +0 -3
- package/out/parsers/types.js.map +0 -1
- package/out/ui/commands-provider.js +0 -91
- package/out/ui/commands-provider.js.map +0 -1
- package/out/ui/status-bar.js +0 -85
- package/out/ui/status-bar.js.map +0 -1
- package/out/validator/index.js +0 -185
- package/out/validator/index.js.map +0 -1
- package/out/validator/signature-matching.js +0 -261
- package/out/validator/signature-matching.js.map +0 -1
- package/out/validator/status.js +0 -38
- 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
|
package/out/core/git.js.map
DELETED
|
@@ -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"}
|
package/out/core/scanner.js
DELETED
|
@@ -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
|
package/out/core/scanner.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"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"}
|