cxgrd 0.1.14 → 0.1.15
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/dist/commands/input.d.ts.map +1 -1
- package/dist/commands/input.js +17 -20
- package/dist/commands/input.js.map +1 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +51 -30
- package/dist/graph.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":"AAeA,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":"AAeA,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuH3F"}
|
package/dist/commands/input.js
CHANGED
|
@@ -35,50 +35,47 @@ async function inputCommand(description, projectPath) {
|
|
|
35
35
|
process.exit(1);
|
|
36
36
|
}
|
|
37
37
|
const allFiles = Object.keys(graph.files || {});
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// Build a map: symbolName → file path
|
|
38
|
+
const symbols = await cgDir.readSymbols().catch(() => ({}));
|
|
39
|
+
// Build symbol → file map (lowercase keys for matching)
|
|
41
40
|
const symbolToFile = {};
|
|
42
|
-
|
|
43
|
-
for (const
|
|
44
|
-
|
|
45
|
-
symbolToFile[sym.toLowerCase()] = filePath;
|
|
46
|
-
}
|
|
41
|
+
for (const [filePath, fileSymbols] of Object.entries(symbols)) {
|
|
42
|
+
for (const sym of fileSymbols) {
|
|
43
|
+
symbolToFile[sym.toLowerCase()] = filePath;
|
|
47
44
|
}
|
|
48
45
|
}
|
|
49
|
-
//
|
|
50
|
-
|
|
46
|
+
// Tokenize description into whole identifiers using regex
|
|
47
|
+
// "renaming _set_session_cookie to set_cookie"
|
|
48
|
+
// → ["renaming", "_set_session_cookie", "to", "set_cookie"]
|
|
49
|
+
const descriptionTokens = new Set(description.toLowerCase().match(/[a-z_][a-z0-9_]*/g) || []);
|
|
50
|
+
// Match only exact symbol tokens — no substring matching
|
|
51
51
|
const symbolMatches = [];
|
|
52
52
|
for (const [sym, filePath] of Object.entries(symbolToFile)) {
|
|
53
|
-
if (
|
|
53
|
+
if (descriptionTokens.has(sym)) {
|
|
54
54
|
if (!symbolMatches.includes(filePath)) {
|
|
55
55
|
symbolMatches.push(filePath);
|
|
56
56
|
cli_formatter_1.RichOutput.info(`Symbol match: "${sym}" → ${filePath}`);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
//
|
|
60
|
+
// Filename/path matching from description
|
|
61
61
|
const changeDetector = new change_detector_1.ChangeDetector(rootPath);
|
|
62
62
|
const gitChanges = changeDetector.getChangedFiles();
|
|
63
63
|
const descriptionMatch = changeDetector.parseDescription(description, allFiles);
|
|
64
64
|
// Combine all sources
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const uniqueFiles = [...new Set(changedFiles)];
|
|
65
|
+
const uniqueFiles = [...new Set([
|
|
66
|
+
...gitChanges.files,
|
|
67
|
+
...descriptionMatch.files,
|
|
68
|
+
...symbolMatches,
|
|
69
|
+
])];
|
|
71
70
|
if (uniqueFiles.length === 0) {
|
|
72
71
|
cli_formatter_1.RichOutput.warning('Could not identify changed files. Using heuristics based on description.');
|
|
73
72
|
}
|
|
74
73
|
else {
|
|
75
74
|
cli_formatter_1.RichOutput.info(`Detected ${uniqueFiles.length} changed file(s)`);
|
|
76
75
|
}
|
|
77
|
-
// Run blast radius analysis
|
|
78
76
|
const analyzer = new blast_radius_analyzer_1.BlastRadiusAnalyzer(graph);
|
|
79
77
|
const result = analyzer.analyze(uniqueFiles.length > 0 ? uniqueFiles : []);
|
|
80
78
|
displayBlastRadiusResults(result);
|
|
81
|
-
// Save to history
|
|
82
79
|
const history = await cgDir.readHistory();
|
|
83
80
|
history.push({
|
|
84
81
|
timestamp: Date.now(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":";;AAeA,
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":"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"}
|
package/dist/graph.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;CACH;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,KAAK,CAOX;
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;CACH;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,KAAK,CAOX;IAEF,OAAO,CAAC,QAAQ,CAuBd;IAEF,OAAO,CAAC,cAAc;IA0DtB,OAAO,CAAC,mBAAmB;IA2B3B,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,eAAe;IA4B9F,QAAQ,IAAI,eAAe;CAG5B"}
|
package/dist/graph.js
CHANGED
|
@@ -10,23 +10,22 @@ class DependencyGraphBuilder {
|
|
|
10
10
|
languages: {},
|
|
11
11
|
},
|
|
12
12
|
};
|
|
13
|
-
// Regex patterns for extracting imports/requires
|
|
14
13
|
patterns = {
|
|
15
14
|
typescript: [
|
|
16
|
-
/import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"](
|
|
17
|
-
/import\s+['"](
|
|
18
|
-
/from\s+['"](
|
|
19
|
-
/require\s*\(\s*['"](
|
|
15
|
+
/import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
16
|
+
/import\s+['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
17
|
+
/from\s+['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
18
|
+
/require\s*\(\s*['"](\.\.\/?[^'"]+|[^/][^'"]*)['"]\s*\)/gm,
|
|
20
19
|
],
|
|
21
20
|
javascript: [
|
|
22
|
-
/import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"](
|
|
23
|
-
/import\s+['"](
|
|
24
|
-
/from\s+['"](
|
|
25
|
-
/require\s*\(\s*['"](
|
|
21
|
+
/import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
22
|
+
/import\s+['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
23
|
+
/from\s+['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
24
|
+
/require\s*\(\s*['"](\.\.\/?[^'"]+|[^/][^'"]*)['"]\s*\)/gm,
|
|
26
25
|
],
|
|
27
26
|
python: [
|
|
28
|
-
/from\s+([
|
|
29
|
-
/import\s+([
|
|
27
|
+
/from\s+([\.\w]+)\s+import/gm,
|
|
28
|
+
/import\s+([\.\w]+)/gm,
|
|
30
29
|
],
|
|
31
30
|
java: [
|
|
32
31
|
/import\s+([a-zA-Z0-9_.]+);/gm,
|
|
@@ -39,44 +38,67 @@ class DependencyGraphBuilder {
|
|
|
39
38
|
const symbols = [];
|
|
40
39
|
switch (language) {
|
|
41
40
|
case 'typescript':
|
|
42
|
-
case 'javascript':
|
|
43
|
-
//
|
|
44
|
-
const funcMatches = content.matchAll(/(?:export\s+)?(?:async\s+)?function\s+(\w+)|const\s+(\w+)\s
|
|
41
|
+
case 'javascript': {
|
|
42
|
+
// Top-level and exported functions
|
|
43
|
+
const funcMatches = content.matchAll(/(?:export\s+)?(?:async\s+)?function\s+(\w+)|(?:export\s+)?const\s+(\w+)\s*=\s*(?:async\s*)?\(/gm);
|
|
45
44
|
for (const match of funcMatches) {
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
symbols.push(
|
|
45
|
+
const sym = match[1] || match[2];
|
|
46
|
+
if (sym)
|
|
47
|
+
symbols.push(sym);
|
|
49
48
|
}
|
|
50
|
-
//
|
|
49
|
+
// Classes
|
|
51
50
|
const classMatches = content.matchAll(/(?:export\s+)?class\s+(\w+)/gm);
|
|
52
|
-
for (const match of classMatches)
|
|
51
|
+
for (const match of classMatches)
|
|
53
52
|
symbols.push(match[1]);
|
|
53
|
+
// Class methods
|
|
54
|
+
const methodMatches = content.matchAll(/^\s{2,}(?:async\s+)?(\w+)\s*\([^)]*\)\s*(?::\s*\w+\s*)?\{/gm);
|
|
55
|
+
for (const match of methodMatches) {
|
|
56
|
+
const sym = match[1];
|
|
57
|
+
if (sym && !['if', 'for', 'while', 'switch', 'catch'].includes(sym))
|
|
58
|
+
symbols.push(sym);
|
|
54
59
|
}
|
|
55
|
-
//
|
|
60
|
+
// Interfaces and types
|
|
56
61
|
const typeMatches = content.matchAll(/(?:export\s+)?(?:interface|type)\s+(\w+)/gm);
|
|
57
|
-
for (const match of typeMatches)
|
|
62
|
+
for (const match of typeMatches)
|
|
58
63
|
symbols.push(match[1]);
|
|
59
|
-
}
|
|
60
64
|
break;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
}
|
|
66
|
+
case 'python': {
|
|
67
|
+
// Top-level AND indented def/class — catches methods inside classes
|
|
68
|
+
const pyMatches = content.matchAll(/^[ \t]*(?:async\s+)?def\s+(\w+)|^[ \t]*class\s+(\w+)/gm);
|
|
64
69
|
for (const match of pyMatches) {
|
|
65
|
-
|
|
70
|
+
const sym = match[1] || match[2];
|
|
71
|
+
if (sym)
|
|
72
|
+
symbols.push(sym);
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case 'rust': {
|
|
77
|
+
const rustMatches = content.matchAll(/(?:pub\s+)?(?:async\s+)?fn\s+(\w+)|(?:pub\s+)?struct\s+(\w+)|(?:pub\s+)?enum\s+(\w+)/gm);
|
|
78
|
+
for (const match of rustMatches) {
|
|
79
|
+
const sym = match[1] || match[2] || match[3];
|
|
80
|
+
if (sym)
|
|
81
|
+
symbols.push(sym);
|
|
66
82
|
}
|
|
67
83
|
break;
|
|
84
|
+
}
|
|
85
|
+
case 'go': {
|
|
86
|
+
const goMatches = content.matchAll(/func\s+(?:\(\w+\s+\*?\w+\)\s+)?(\w+)/gm);
|
|
87
|
+
for (const match of goMatches)
|
|
88
|
+
symbols.push(match[1]);
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
68
91
|
}
|
|
69
|
-
return [...new Set(symbols)];
|
|
92
|
+
return [...new Set(symbols)];
|
|
70
93
|
}
|
|
71
94
|
extractDependencies(filePath, content, language) {
|
|
72
95
|
const dependencies = [];
|
|
73
96
|
const patterns = this.patterns[language] || [];
|
|
74
|
-
let lineNum = 0;
|
|
75
97
|
const lines = content.split('\n');
|
|
76
98
|
for (let i = 0; i < lines.length; i++) {
|
|
77
99
|
const line = lines[i];
|
|
78
100
|
for (const pattern of patterns) {
|
|
79
|
-
pattern.lastIndex = 0;
|
|
101
|
+
pattern.lastIndex = 0;
|
|
80
102
|
let match;
|
|
81
103
|
while ((match = pattern.exec(line)) !== null) {
|
|
82
104
|
const importPath = match[1];
|
|
@@ -111,7 +133,6 @@ class DependencyGraphBuilder {
|
|
|
111
133
|
dependencies,
|
|
112
134
|
symbols,
|
|
113
135
|
};
|
|
114
|
-
// Update stats
|
|
115
136
|
this.graph.stats.languages[file.language] = (this.graph.stats.languages[file.language] || 0) + 1;
|
|
116
137
|
this.graph.stats.totalDependencies += dependencies.length;
|
|
117
138
|
}
|
package/dist/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":";;;AAuBA,MAAa,sBAAsB;IACzB,KAAK,GAAoB;QAC/B,KAAK,EAAE,EAAE;QACT,KAAK,EAAE;YACL,UAAU,EAAE,CAAC;YACb,iBAAiB,EAAE,CAAC;YACpB,SAAS,EAAE,EAAE;SACd;KACF,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
|