@defai.digital/ax-cli 3.15.21 → 3.15.24
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/README.md +22 -2
- package/dist/agent/agent-executor.d.ts +1 -1
- package/dist/agent/agent-executor.js +15 -17
- package/dist/agent/agent-executor.js.map +1 -1
- package/dist/agent/execution/tool-executor.d.ts +6 -0
- package/dist/agent/execution/tool-executor.js +16 -1
- package/dist/agent/execution/tool-executor.js.map +1 -1
- package/dist/agent/llm-agent.js +91 -22
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/parallel-tools.d.ts +65 -0
- package/dist/agent/parallel-tools.js +146 -0
- package/dist/agent/parallel-tools.js.map +1 -0
- package/dist/llm/tools.js +1 -1
- package/dist/llm/tools.js.map +1 -1
- package/dist/ui/components/chat-interface.js +14 -0
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.js +2 -2
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/utils/image-handler.js +8 -5
- package/dist/ui/utils/image-handler.js.map +1 -1
- package/package.json +1 -1
- package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.d.ts +0 -29
- package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js +0 -103
- package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js.map +0 -1
- package/dist/analyzers/architecture/architecture-analyzer.d.ts +0 -58
- package/dist/analyzers/architecture/architecture-analyzer.js +0 -276
- package/dist/analyzers/architecture/architecture-analyzer.js.map +0 -1
- package/dist/analyzers/architecture/index.d.ts +0 -12
- package/dist/analyzers/architecture/index.js +0 -14
- package/dist/analyzers/architecture/index.js.map +0 -1
- package/dist/analyzers/architecture/pattern-detectors/base-detector.d.ts +0 -27
- package/dist/analyzers/architecture/pattern-detectors/base-detector.js +0 -31
- package/dist/analyzers/architecture/pattern-detectors/base-detector.js.map +0 -1
- package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.d.ts +0 -11
- package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js +0 -57
- package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js.map +0 -1
- package/dist/analyzers/architecture/pattern-detectors/mvc-detector.d.ts +0 -11
- package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js +0 -43
- package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js.map +0 -1
- package/dist/analyzers/architecture/pattern-detectors/repository-detector.d.ts +0 -11
- package/dist/analyzers/architecture/pattern-detectors/repository-detector.js +0 -49
- package/dist/analyzers/architecture/pattern-detectors/repository-detector.js.map +0 -1
- package/dist/analyzers/architecture/project-structure-scanner.d.ts +0 -54
- package/dist/analyzers/architecture/project-structure-scanner.js +0 -204
- package/dist/analyzers/architecture/project-structure-scanner.js.map +0 -1
- package/dist/analyzers/ast/index.d.ts +0 -13
- package/dist/analyzers/ast/index.js +0 -16
- package/dist/analyzers/ast/index.js.map +0 -1
- package/dist/analyzers/ast/language-parser.d.ts +0 -59
- package/dist/analyzers/ast/language-parser.js +0 -107
- package/dist/analyzers/ast/language-parser.js.map +0 -1
- package/dist/analyzers/ast/multi-language-parser.d.ts +0 -79
- package/dist/analyzers/ast/multi-language-parser.js +0 -157
- package/dist/analyzers/ast/multi-language-parser.js.map +0 -1
- package/dist/analyzers/ast/node-helpers.d.ts +0 -81
- package/dist/analyzers/ast/node-helpers.js +0 -128
- package/dist/analyzers/ast/node-helpers.js.map +0 -1
- package/dist/analyzers/ast/parser.d.ts +0 -60
- package/dist/analyzers/ast/parser.js +0 -305
- package/dist/analyzers/ast/parser.js.map +0 -1
- package/dist/analyzers/ast/traverser.d.ts +0 -67
- package/dist/analyzers/ast/traverser.js +0 -156
- package/dist/analyzers/ast/traverser.js.map +0 -1
- package/dist/analyzers/ast/types.d.ts +0 -107
- package/dist/analyzers/ast/types.js +0 -7
- package/dist/analyzers/ast/types.js.map +0 -1
- package/dist/analyzers/best-practices/base-rule.d.ts +0 -45
- package/dist/analyzers/best-practices/base-rule.js +0 -45
- package/dist/analyzers/best-practices/base-rule.js.map +0 -1
- package/dist/analyzers/best-practices/best-practice-validator.d.ts +0 -35
- package/dist/analyzers/best-practices/best-practice-validator.js +0 -181
- package/dist/analyzers/best-practices/best-practice-validator.js.map +0 -1
- package/dist/analyzers/best-practices/index.d.ts +0 -10
- package/dist/analyzers/best-practices/index.js +0 -11
- package/dist/analyzers/best-practices/index.js.map +0 -1
- package/dist/analyzers/best-practices/rules/index.d.ts +0 -7
- package/dist/analyzers/best-practices/rules/index.js +0 -56
- package/dist/analyzers/best-practices/rules/index.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/consistent-naming.d.ts +0 -17
- package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js +0 -41
- package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/function-complexity.d.ts +0 -27
- package/dist/analyzers/best-practices/rules/typescript/function-complexity.js +0 -76
- package/dist/analyzers/best-practices/rules/typescript/function-complexity.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/index.d.ts +0 -15
- package/dist/analyzers/best-practices/rules/typescript/index.js +0 -16
- package/dist/analyzers/best-practices/rules/typescript/index.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/max-file-length.d.ts +0 -18
- package/dist/analyzers/best-practices/rules/typescript/max-file-length.js +0 -25
- package/dist/analyzers/best-practices/rules/typescript/max-file-length.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/no-any-type.d.ts +0 -17
- package/dist/analyzers/best-practices/rules/typescript/no-any-type.js +0 -27
- package/dist/analyzers/best-practices/rules/typescript/no-any-type.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.d.ts +0 -18
- package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js +0 -39
- package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.d.ts +0 -17
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +0 -38
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.d.ts +0 -17
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +0 -38
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.d.ts +0 -17
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +0 -35
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.d.ts +0 -17
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +0 -36
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +0 -1
- package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.d.ts +0 -17
- package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js +0 -27
- package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js.map +0 -1
- package/dist/analyzers/best-practices/types.d.ts +0 -86
- package/dist/analyzers/best-practices/types.js +0 -7
- package/dist/analyzers/best-practices/types.js.map +0 -1
- package/dist/analyzers/cache/analysis-cache.d.ts +0 -41
- package/dist/analyzers/cache/analysis-cache.js +0 -84
- package/dist/analyzers/cache/analysis-cache.js.map +0 -1
- package/dist/analyzers/code-smells/base-smell-detector.d.ts +0 -30
- package/dist/analyzers/code-smells/base-smell-detector.js +0 -44
- package/dist/analyzers/code-smells/base-smell-detector.js.map +0 -1
- package/dist/analyzers/code-smells/code-smell-analyzer.d.ts +0 -30
- package/dist/analyzers/code-smells/code-smell-analyzer.js +0 -167
- package/dist/analyzers/code-smells/code-smell-analyzer.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/data-clumps-detector.d.ts +0 -11
- package/dist/analyzers/code-smells/detectors/data-clumps-detector.js +0 -64
- package/dist/analyzers/code-smells/detectors/data-clumps-detector.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/dead-code-detector.d.ts +0 -11
- package/dist/analyzers/code-smells/detectors/dead-code-detector.js +0 -58
- package/dist/analyzers/code-smells/detectors/dead-code-detector.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.d.ts +0 -11
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +0 -69
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/feature-envy-detector.d.ts +0 -11
- package/dist/analyzers/code-smells/detectors/feature-envy-detector.js +0 -70
- package/dist/analyzers/code-smells/detectors/feature-envy-detector.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.d.ts +0 -11
- package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.js +0 -59
- package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/large-class-detector.d.ts +0 -13
- package/dist/analyzers/code-smells/detectors/large-class-detector.js +0 -61
- package/dist/analyzers/code-smells/detectors/large-class-detector.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/long-method-detector.d.ts +0 -12
- package/dist/analyzers/code-smells/detectors/long-method-detector.js +0 -55
- package/dist/analyzers/code-smells/detectors/long-method-detector.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.d.ts +0 -12
- package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.js +0 -53
- package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/magic-numbers-detector.d.ts +0 -12
- package/dist/analyzers/code-smells/detectors/magic-numbers-detector.js +0 -56
- package/dist/analyzers/code-smells/detectors/magic-numbers-detector.js.map +0 -1
- package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.d.ts +0 -13
- package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.js +0 -77
- package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.js.map +0 -1
- package/dist/analyzers/code-smells/index.d.ts +0 -16
- package/dist/analyzers/code-smells/index.js +0 -19
- package/dist/analyzers/code-smells/index.js.map +0 -1
- package/dist/analyzers/code-smells/types.d.ts +0 -82
- package/dist/analyzers/code-smells/types.js +0 -30
- package/dist/analyzers/code-smells/types.js.map +0 -1
- package/dist/analyzers/dependency/circular-detector.d.ts +0 -17
- package/dist/analyzers/dependency/circular-detector.js +0 -73
- package/dist/analyzers/dependency/circular-detector.js.map +0 -1
- package/dist/analyzers/dependency/coupling-calculator.d.ts +0 -24
- package/dist/analyzers/dependency/coupling-calculator.js +0 -86
- package/dist/analyzers/dependency/coupling-calculator.js.map +0 -1
- package/dist/analyzers/dependency/dependency-analyzer.d.ts +0 -44
- package/dist/analyzers/dependency/dependency-analyzer.js +0 -218
- package/dist/analyzers/dependency/dependency-analyzer.js.map +0 -1
- package/dist/analyzers/dependency/dependency-graph.d.ts +0 -57
- package/dist/analyzers/dependency/dependency-graph.js +0 -198
- package/dist/analyzers/dependency/dependency-graph.js.map +0 -1
- package/dist/analyzers/dependency/index.d.ts +0 -8
- package/dist/analyzers/dependency/index.js +0 -8
- package/dist/analyzers/dependency/index.js.map +0 -1
- package/dist/analyzers/dependency/types.d.ts +0 -105
- package/dist/analyzers/dependency/types.js +0 -5
- package/dist/analyzers/dependency/types.js.map +0 -1
- package/dist/analyzers/errors.d.ts +0 -51
- package/dist/analyzers/errors.js +0 -79
- package/dist/analyzers/errors.js.map +0 -1
- package/dist/analyzers/git/churn-calculator.d.ts +0 -36
- package/dist/analyzers/git/churn-calculator.js +0 -257
- package/dist/analyzers/git/churn-calculator.js.map +0 -1
- package/dist/analyzers/git/git-analyzer.d.ts +0 -19
- package/dist/analyzers/git/git-analyzer.js +0 -79
- package/dist/analyzers/git/git-analyzer.js.map +0 -1
- package/dist/analyzers/git/hotspot-detector.d.ts +0 -34
- package/dist/analyzers/git/hotspot-detector.js +0 -173
- package/dist/analyzers/git/hotspot-detector.js.map +0 -1
- package/dist/analyzers/git/index.d.ts +0 -7
- package/dist/analyzers/git/index.js +0 -7
- package/dist/analyzers/git/index.js.map +0 -1
- package/dist/analyzers/git/types.d.ts +0 -88
- package/dist/analyzers/git/types.js +0 -5
- package/dist/analyzers/git/types.js.map +0 -1
- package/dist/analyzers/metrics/halstead-calculator.d.ts +0 -30
- package/dist/analyzers/metrics/halstead-calculator.js +0 -150
- package/dist/analyzers/metrics/halstead-calculator.js.map +0 -1
- package/dist/analyzers/metrics/index.d.ts +0 -9
- package/dist/analyzers/metrics/index.js +0 -9
- package/dist/analyzers/metrics/index.js.map +0 -1
- package/dist/analyzers/metrics/maintainability-calculator.d.ts +0 -17
- package/dist/analyzers/metrics/maintainability-calculator.js +0 -46
- package/dist/analyzers/metrics/maintainability-calculator.js.map +0 -1
- package/dist/analyzers/metrics/metrics-analyzer.d.ts +0 -32
- package/dist/analyzers/metrics/metrics-analyzer.js +0 -144
- package/dist/analyzers/metrics/metrics-analyzer.js.map +0 -1
- package/dist/analyzers/metrics/types.d.ts +0 -67
- package/dist/analyzers/metrics/types.js +0 -5
- package/dist/analyzers/metrics/types.js.map +0 -1
- package/dist/analyzers/security/base-detector.d.ts +0 -58
- package/dist/analyzers/security/base-detector.js +0 -104
- package/dist/analyzers/security/base-detector.js.map +0 -1
- package/dist/analyzers/security/detectors/command-injection-detector.d.ts +0 -12
- package/dist/analyzers/security/detectors/command-injection-detector.js +0 -84
- package/dist/analyzers/security/detectors/command-injection-detector.js.map +0 -1
- package/dist/analyzers/security/detectors/hardcoded-secrets-detector.d.ts +0 -16
- package/dist/analyzers/security/detectors/hardcoded-secrets-detector.js +0 -140
- package/dist/analyzers/security/detectors/hardcoded-secrets-detector.js.map +0 -1
- package/dist/analyzers/security/detectors/insecure-deserialization-detector.d.ts +0 -12
- package/dist/analyzers/security/detectors/insecure-deserialization-detector.js +0 -109
- package/dist/analyzers/security/detectors/insecure-deserialization-detector.js.map +0 -1
- package/dist/analyzers/security/detectors/insecure-random-detector.d.ts +0 -12
- package/dist/analyzers/security/detectors/insecure-random-detector.js +0 -61
- package/dist/analyzers/security/detectors/insecure-random-detector.js.map +0 -1
- package/dist/analyzers/security/detectors/path-traversal-detector.d.ts +0 -12
- package/dist/analyzers/security/detectors/path-traversal-detector.js +0 -82
- package/dist/analyzers/security/detectors/path-traversal-detector.js.map +0 -1
- package/dist/analyzers/security/detectors/sql-injection-detector.d.ts +0 -12
- package/dist/analyzers/security/detectors/sql-injection-detector.js +0 -88
- package/dist/analyzers/security/detectors/sql-injection-detector.js.map +0 -1
- package/dist/analyzers/security/detectors/weak-crypto-detector.d.ts +0 -12
- package/dist/analyzers/security/detectors/weak-crypto-detector.js +0 -104
- package/dist/analyzers/security/detectors/weak-crypto-detector.js.map +0 -1
- package/dist/analyzers/security/detectors/xss-detector.d.ts +0 -12
- package/dist/analyzers/security/detectors/xss-detector.js +0 -90
- package/dist/analyzers/security/detectors/xss-detector.js.map +0 -1
- package/dist/analyzers/security/index.d.ts +0 -16
- package/dist/analyzers/security/index.js +0 -18
- package/dist/analyzers/security/index.js.map +0 -1
- package/dist/analyzers/security/security-analyzer.d.ts +0 -38
- package/dist/analyzers/security/security-analyzer.js +0 -215
- package/dist/analyzers/security/security-analyzer.js.map +0 -1
- package/dist/analyzers/security/types.d.ts +0 -95
- package/dist/analyzers/security/types.js +0 -7
- package/dist/analyzers/security/types.js.map +0 -1
- package/dist/tools/analysis-tools/architecture-tool.d.ts +0 -46
- package/dist/tools/analysis-tools/architecture-tool.js +0 -124
- package/dist/tools/analysis-tools/architecture-tool.js.map +0 -1
- package/dist/tools/analysis-tools/validation-tool.d.ts +0 -51
- package/dist/tools/analysis-tools/validation-tool.js +0 -121
- package/dist/tools/analysis-tools/validation-tool.js.map +0 -1
- package/dist/tools/analysis-tools.d.ts +0 -73
- package/dist/tools/analysis-tools.js +0 -422
- package/dist/tools/analysis-tools.js.map +0 -1
- package/dist/types/analysis.d.ts +0 -177
- package/dist/types/analysis.js +0 -8
- package/dist/types/analysis.js.map +0 -1
- package/dist/utils/analysis-logger.d.ts +0 -50
- package/dist/utils/analysis-logger.js +0 -73
- package/dist/utils/analysis-logger.js.map +0 -1
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MVC Pattern Detector
|
|
3
|
-
*
|
|
4
|
-
* Detects Model-View-Controller architectural pattern.
|
|
5
|
-
* Looks for models/, views/, and controllers/ directories.
|
|
6
|
-
*/
|
|
7
|
-
import { BasePatternDetector } from './base-detector.js';
|
|
8
|
-
export class MVCDetector extends BasePatternDetector {
|
|
9
|
-
detect(structure) {
|
|
10
|
-
const hasModels = this.scanner.hasDirectory(structure, 'models');
|
|
11
|
-
const hasViews = this.scanner.hasDirectory(structure, 'views');
|
|
12
|
-
const hasControllers = this.scanner.hasDirectory(structure, 'controllers');
|
|
13
|
-
// Need at least 2 out of 3 components to suggest MVC
|
|
14
|
-
const matchCount = [hasModels, hasViews, hasControllers].filter(Boolean)
|
|
15
|
-
.length;
|
|
16
|
-
if (matchCount < 2) {
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
const locations = [];
|
|
20
|
-
let confidence = 0;
|
|
21
|
-
if (hasModels) {
|
|
22
|
-
const modelDirs = structure.directories.filter((d) => d.relativePath.toLowerCase().includes('models'));
|
|
23
|
-
locations.push(...modelDirs.map((d) => d.relativePath));
|
|
24
|
-
confidence += 0.33;
|
|
25
|
-
}
|
|
26
|
-
if (hasViews) {
|
|
27
|
-
const viewDirs = structure.directories.filter((d) => d.relativePath.toLowerCase().includes('views'));
|
|
28
|
-
locations.push(...viewDirs.map((d) => d.relativePath));
|
|
29
|
-
confidence += 0.33;
|
|
30
|
-
}
|
|
31
|
-
if (hasControllers) {
|
|
32
|
-
const controllerDirs = structure.directories.filter((d) => d.relativePath.toLowerCase().includes('controllers'));
|
|
33
|
-
locations.push(...controllerDirs.map((d) => d.relativePath));
|
|
34
|
-
confidence += 0.34;
|
|
35
|
-
}
|
|
36
|
-
return this.createPattern('MVC (Model-View-Controller)', 'architectural', confidence, locations, 'Separates application into Models (data), Views (presentation), and Controllers (logic)', {
|
|
37
|
-
hasModels,
|
|
38
|
-
hasViews,
|
|
39
|
-
hasControllers,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=mvc-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mvc-detector.js","sourceRoot":"","sources":["../../../../src/analyzers/architecture/pattern-detectors/mvc-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,OAAO,WAAY,SAAQ,mBAAmB;IAClD,MAAM,CAAC,SAA2B;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAE3E,qDAAqD;QACrD,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;aACrE,MAAM,CAAC;QAEV,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAChD,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACxD,UAAU,IAAI,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAClD,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC/C,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACvD,UAAU,IAAI,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACxD,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CACrD,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YAC7D,UAAU,IAAI,IAAI,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CACvB,6BAA6B,EAC7B,eAAe,EACf,UAAU,EACV,SAAS,EACT,yFAAyF,EACzF;YACE,SAAS;YACT,QAAQ;YACR,cAAc;SACf,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Repository Pattern Detector
|
|
3
|
-
*
|
|
4
|
-
* Detects Repository pattern for data access abstraction.
|
|
5
|
-
* Looks for files/directories with "repository" in the name.
|
|
6
|
-
*/
|
|
7
|
-
import type { DetectedPattern, ProjectStructure } from '../../../types/analysis.js';
|
|
8
|
-
import { BasePatternDetector } from './base-detector.js';
|
|
9
|
-
export declare class RepositoryDetector extends BasePatternDetector {
|
|
10
|
-
detect(structure: ProjectStructure): DetectedPattern | null;
|
|
11
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Repository Pattern Detector
|
|
3
|
-
*
|
|
4
|
-
* Detects Repository pattern for data access abstraction.
|
|
5
|
-
* Looks for files/directories with "repository" in the name.
|
|
6
|
-
*/
|
|
7
|
-
import { BasePatternDetector } from './base-detector.js';
|
|
8
|
-
export class RepositoryDetector extends BasePatternDetector {
|
|
9
|
-
detect(structure) {
|
|
10
|
-
// Look for repository directories
|
|
11
|
-
const hasRepositoryDir = this.scanner.hasDirectory(structure, 'repositories') ||
|
|
12
|
-
this.scanner.hasDirectory(structure, 'repository');
|
|
13
|
-
// Look for files with "repository" in the name
|
|
14
|
-
const repositoryFiles = this.scanner.getFilesByPattern(structure, /repository\.(ts|js|tsx|jsx)$/i);
|
|
15
|
-
if (!hasRepositoryDir && repositoryFiles.length === 0) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
const locations = [];
|
|
19
|
-
let confidence = 0.6; // Base confidence
|
|
20
|
-
// Add directory locations
|
|
21
|
-
if (hasRepositoryDir) {
|
|
22
|
-
const repoDirs = structure.directories.filter((d) => d.relativePath.toLowerCase().includes('repositories') ||
|
|
23
|
-
d.relativePath.toLowerCase().includes('repository'));
|
|
24
|
-
locations.push(...repoDirs.map((d) => d.relativePath));
|
|
25
|
-
confidence += 0.2;
|
|
26
|
-
}
|
|
27
|
-
// Add file locations
|
|
28
|
-
if (repositoryFiles.length > 0) {
|
|
29
|
-
locations.push(...repositoryFiles.map((f) => f.relativePath));
|
|
30
|
-
// Check for interfaces/abstractions (higher confidence)
|
|
31
|
-
const hasInterfaces = repositoryFiles.some((f) => f.relativePath.toLowerCase().includes('interface') ||
|
|
32
|
-
f.relativePath.toLowerCase().includes('abstract') ||
|
|
33
|
-
f.relativePath.toLowerCase().includes('i-repository'));
|
|
34
|
-
if (hasInterfaces) {
|
|
35
|
-
confidence += 0.2;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
confidence += 0.1;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return this.createPattern('Repository Pattern', 'structural', Math.min(confidence, 1.0), locations, 'Encapsulates data access logic and provides a collection-like interface for domain entities', {
|
|
42
|
-
repositoryCount: repositoryFiles.length,
|
|
43
|
-
hasRepositoryDirectory: hasRepositoryDir,
|
|
44
|
-
hasInterfaces: repositoryFiles.some((f) => f.relativePath.toLowerCase().includes('interface') ||
|
|
45
|
-
f.relativePath.toLowerCase().includes('abstract')),
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=repository-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository-detector.js","sourceRoot":"","sources":["../../../../src/analyzers/architecture/pattern-detectors/repository-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,OAAO,kBAAmB,SAAQ,mBAAmB;IACzD,MAAM,CAAC,SAA2B;QAChC,kCAAkC;QAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE7E,+CAA+C;QAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CACpD,SAAS,EACT,+BAA+B,CAChC,CAAC;QAEF,IAAI,CAAC,gBAAgB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,UAAU,GAAG,GAAG,CAAC,CAAC,kBAAkB;QAExC,0BAA0B;QAC1B,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACrD,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CACtD,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACvD,UAAU,IAAI,GAAG,CAAC;QACpB,CAAC;QAED,qBAAqB;QACrB,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YAE9D,wDAAwD;YACxD,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClD,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACjD,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CACxD,CAAC;YAEF,IAAI,aAAa,EAAE,CAAC;gBAClB,UAAU,IAAI,GAAG,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,UAAU,IAAI,GAAG,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CACvB,oBAAoB,EACpB,YAAY,EACZ,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,EACzB,SAAS,EACT,6FAA6F,EAC7F;YACE,eAAe,EAAE,eAAe,CAAC,MAAM;YACvC,sBAAsB,EAAE,gBAAgB;YACxC,aAAa,EAAE,eAAe,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClD,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACpD;SACF,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Project Structure Scanner
|
|
3
|
-
*
|
|
4
|
-
* Scans project directory structure and gathers file/directory information.
|
|
5
|
-
* Implements ignore patterns for common non-source directories.
|
|
6
|
-
*/
|
|
7
|
-
import type { FileInfo, ProjectStructure } from '../../types/analysis.js';
|
|
8
|
-
export declare class ProjectStructureScanner {
|
|
9
|
-
private readonly ignorePatterns;
|
|
10
|
-
/**
|
|
11
|
-
* Scan project structure
|
|
12
|
-
*/
|
|
13
|
-
scan(projectPath: string): Promise<ProjectStructure>;
|
|
14
|
-
/**
|
|
15
|
-
* Validate project path exists and is a directory
|
|
16
|
-
*/
|
|
17
|
-
private validatePath;
|
|
18
|
-
/**
|
|
19
|
-
* Gather file information with concurrency control
|
|
20
|
-
*/
|
|
21
|
-
private gatherFileInfo;
|
|
22
|
-
/**
|
|
23
|
-
* Get information for a single file
|
|
24
|
-
*/
|
|
25
|
-
private getFileInfo;
|
|
26
|
-
/**
|
|
27
|
-
* Gather directory information with concurrency control
|
|
28
|
-
*/
|
|
29
|
-
private gatherDirectoryInfo;
|
|
30
|
-
/**
|
|
31
|
-
* Get information for a single directory
|
|
32
|
-
*/
|
|
33
|
-
private getDirectoryInfo;
|
|
34
|
-
/**
|
|
35
|
-
* Group files by extension
|
|
36
|
-
*/
|
|
37
|
-
private groupFilesByExtension;
|
|
38
|
-
/**
|
|
39
|
-
* Check if structure has a directory matching name (case-insensitive)
|
|
40
|
-
*/
|
|
41
|
-
hasDirectory(structure: ProjectStructure, dirName: string): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Check if structure has a file matching name (case-insensitive)
|
|
44
|
-
*/
|
|
45
|
-
hasFile(structure: ProjectStructure, fileName: string): boolean;
|
|
46
|
-
/**
|
|
47
|
-
* Get files matching a regex pattern
|
|
48
|
-
*/
|
|
49
|
-
getFilesByPattern(structure: ProjectStructure, pattern: RegExp): FileInfo[];
|
|
50
|
-
/**
|
|
51
|
-
* Get files by extension
|
|
52
|
-
*/
|
|
53
|
-
getFilesByExtension(structure: ProjectStructure, extension: string): FileInfo[];
|
|
54
|
-
}
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Project Structure Scanner
|
|
3
|
-
*
|
|
4
|
-
* Scans project directory structure and gathers file/directory information.
|
|
5
|
-
* Implements ignore patterns for common non-source directories.
|
|
6
|
-
*/
|
|
7
|
-
import { promises as fs } from 'fs';
|
|
8
|
-
import path from 'path';
|
|
9
|
-
import { glob } from 'glob';
|
|
10
|
-
import { ProjectStructureError } from '../errors.js';
|
|
11
|
-
export class ProjectStructureScanner {
|
|
12
|
-
ignorePatterns = [
|
|
13
|
-
'**/node_modules/**',
|
|
14
|
-
'**/.git/**',
|
|
15
|
-
'**/dist/**',
|
|
16
|
-
'**/build/**',
|
|
17
|
-
'**/.next/**',
|
|
18
|
-
'**/coverage/**',
|
|
19
|
-
'**/.cache/**',
|
|
20
|
-
'**/.vscode/**',
|
|
21
|
-
'**/.idea/**',
|
|
22
|
-
'**/.DS_Store',
|
|
23
|
-
'**/package-lock.json',
|
|
24
|
-
'**/yarn.lock',
|
|
25
|
-
'**/pnpm-lock.yaml',
|
|
26
|
-
];
|
|
27
|
-
/**
|
|
28
|
-
* Scan project structure
|
|
29
|
-
*/
|
|
30
|
-
async scan(projectPath) {
|
|
31
|
-
// Validate path
|
|
32
|
-
await this.validatePath(projectPath);
|
|
33
|
-
// Find all files
|
|
34
|
-
const filePaths = await glob('**/*', {
|
|
35
|
-
cwd: projectPath,
|
|
36
|
-
ignore: this.ignorePatterns,
|
|
37
|
-
nodir: true,
|
|
38
|
-
absolute: false,
|
|
39
|
-
dot: false, // Don't include hidden files
|
|
40
|
-
});
|
|
41
|
-
// Gather file info in parallel (with concurrency limit)
|
|
42
|
-
const files = await this.gatherFileInfo(projectPath, filePaths);
|
|
43
|
-
// Find all directories
|
|
44
|
-
const dirPaths = await glob('**/', {
|
|
45
|
-
cwd: projectPath,
|
|
46
|
-
ignore: this.ignorePatterns,
|
|
47
|
-
absolute: false,
|
|
48
|
-
dot: false,
|
|
49
|
-
});
|
|
50
|
-
const directories = await this.gatherDirectoryInfo(projectPath, dirPaths);
|
|
51
|
-
// Group files by extension
|
|
52
|
-
const filesByExtension = this.groupFilesByExtension(files);
|
|
53
|
-
const totalLines = files.reduce((sum, f) => sum + f.lines, 0);
|
|
54
|
-
return Object.freeze({
|
|
55
|
-
rootPath: projectPath,
|
|
56
|
-
files: Object.freeze(files),
|
|
57
|
-
directories: Object.freeze(directories),
|
|
58
|
-
filesByExtension,
|
|
59
|
-
totalLines,
|
|
60
|
-
totalFiles: files.length,
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Validate project path exists and is a directory
|
|
65
|
-
*/
|
|
66
|
-
async validatePath(projectPath) {
|
|
67
|
-
// Check for path traversal attempts
|
|
68
|
-
if (projectPath.includes('..')) {
|
|
69
|
-
throw new ProjectStructureError('Path traversal detected', {
|
|
70
|
-
path: projectPath,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
try {
|
|
74
|
-
const stats = await fs.stat(projectPath);
|
|
75
|
-
if (!stats.isDirectory()) {
|
|
76
|
-
throw new ProjectStructureError('Path is not a directory', {
|
|
77
|
-
path: projectPath,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
if (error.code === 'ENOENT') {
|
|
83
|
-
throw new ProjectStructureError('Path does not exist', {
|
|
84
|
-
path: projectPath,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
throw new ProjectStructureError(`Failed to access path: ${error.message}`, { path: projectPath });
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Gather file information with concurrency control
|
|
92
|
-
*/
|
|
93
|
-
async gatherFileInfo(rootPath, relativePaths) {
|
|
94
|
-
const CONCURRENCY = 10; // Process 10 files at a time
|
|
95
|
-
const results = [];
|
|
96
|
-
for (let i = 0; i < relativePaths.length; i += CONCURRENCY) {
|
|
97
|
-
const batch = relativePaths.slice(i, i + CONCURRENCY);
|
|
98
|
-
const batchResults = await Promise.all(batch.map((relativePath) => this.getFileInfo(rootPath, relativePath).catch((error) => {
|
|
99
|
-
console.warn(`Failed to read file ${relativePath}:`, error.message);
|
|
100
|
-
return null;
|
|
101
|
-
})));
|
|
102
|
-
results.push(...batchResults.filter((r) => r !== null));
|
|
103
|
-
}
|
|
104
|
-
return results;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Get information for a single file
|
|
108
|
-
*/
|
|
109
|
-
async getFileInfo(rootPath, relativePath) {
|
|
110
|
-
const fullPath = path.join(rootPath, relativePath);
|
|
111
|
-
const stats = await fs.stat(fullPath);
|
|
112
|
-
// Count lines
|
|
113
|
-
let lines = 0;
|
|
114
|
-
try {
|
|
115
|
-
const content = await fs.readFile(fullPath, 'utf-8');
|
|
116
|
-
lines = content.split('\n').length;
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
// If file can't be read as text, lines remain 0
|
|
120
|
-
lines = 0;
|
|
121
|
-
}
|
|
122
|
-
return Object.freeze({
|
|
123
|
-
path: fullPath,
|
|
124
|
-
relativePath,
|
|
125
|
-
lines,
|
|
126
|
-
size: stats.size,
|
|
127
|
-
extension: path.extname(relativePath),
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Gather directory information with concurrency control
|
|
132
|
-
*/
|
|
133
|
-
async gatherDirectoryInfo(rootPath, relativePaths) {
|
|
134
|
-
const CONCURRENCY = 10;
|
|
135
|
-
const results = [];
|
|
136
|
-
for (let i = 0; i < relativePaths.length; i += CONCURRENCY) {
|
|
137
|
-
const batch = relativePaths.slice(i, i + CONCURRENCY);
|
|
138
|
-
const batchResults = await Promise.all(batch.map((relativePath) => this.getDirectoryInfo(rootPath, relativePath).catch((error) => {
|
|
139
|
-
console.warn(`Failed to read directory ${relativePath}:`, error.message);
|
|
140
|
-
return null;
|
|
141
|
-
})));
|
|
142
|
-
results.push(...batchResults.filter((r) => r !== null));
|
|
143
|
-
}
|
|
144
|
-
return results;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Get information for a single directory
|
|
148
|
-
*/
|
|
149
|
-
async getDirectoryInfo(rootPath, relativePath) {
|
|
150
|
-
const fullPath = path.join(rootPath, relativePath);
|
|
151
|
-
const entries = await fs.readdir(fullPath, { withFileTypes: true });
|
|
152
|
-
const fileCount = entries.filter((e) => e.isFile()).length;
|
|
153
|
-
const subdirCount = entries.filter((e) => e.isDirectory()).length;
|
|
154
|
-
return Object.freeze({
|
|
155
|
-
path: fullPath,
|
|
156
|
-
relativePath,
|
|
157
|
-
fileCount,
|
|
158
|
-
subdirCount,
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Group files by extension
|
|
163
|
-
*/
|
|
164
|
-
groupFilesByExtension(files) {
|
|
165
|
-
const groups = new Map();
|
|
166
|
-
for (const file of files) {
|
|
167
|
-
const ext = file.extension || '.no-extension';
|
|
168
|
-
let bucket = groups.get(ext);
|
|
169
|
-
if (!bucket) {
|
|
170
|
-
bucket = [];
|
|
171
|
-
groups.set(ext, bucket);
|
|
172
|
-
}
|
|
173
|
-
bucket.push(file);
|
|
174
|
-
}
|
|
175
|
-
// Freeze all arrays
|
|
176
|
-
return new Map(Array.from(groups.entries()).map(([k, v]) => [k, Object.freeze(v)]));
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Check if structure has a directory matching name (case-insensitive)
|
|
180
|
-
*/
|
|
181
|
-
hasDirectory(structure, dirName) {
|
|
182
|
-
return structure.directories.some((d) => d.relativePath.toLowerCase().includes(dirName.toLowerCase()));
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Check if structure has a file matching name (case-insensitive)
|
|
186
|
-
*/
|
|
187
|
-
hasFile(structure, fileName) {
|
|
188
|
-
return structure.files.some((f) => f.relativePath.toLowerCase().includes(fileName.toLowerCase()));
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Get files matching a regex pattern
|
|
192
|
-
*/
|
|
193
|
-
getFilesByPattern(structure, pattern) {
|
|
194
|
-
return structure.files.filter((f) => pattern.test(f.relativePath));
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Get files by extension
|
|
198
|
-
*/
|
|
199
|
-
getFilesByExtension(structure, extension) {
|
|
200
|
-
const ext = extension.startsWith('.') ? extension : `.${extension}`;
|
|
201
|
-
return Array.from(structure.filesByExtension.get(ext) || []);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
//# sourceMappingURL=project-structure-scanner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-structure-scanner.js","sourceRoot":"","sources":["../../../src/analyzers/architecture/project-structure-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AST Analysis Module
|
|
3
|
-
*
|
|
4
|
-
* Provides AST parsing and traversal utilities.
|
|
5
|
-
* Supports TypeScript and JavaScript via ts-morph.
|
|
6
|
-
*/
|
|
7
|
-
export { ASTParser } from './parser.js';
|
|
8
|
-
export { MultiLanguageParser, getMultiLanguageParser, resetMultiLanguageParser } from './multi-language-parser.js';
|
|
9
|
-
export { getLanguageFromPath, EXTENSION_TO_LANGUAGE, BaseLanguageParser } from './language-parser.js';
|
|
10
|
-
export type { SupportedLanguage, LanguageParser } from './language-parser.js';
|
|
11
|
-
export * from './types.js';
|
|
12
|
-
export * from './node-helpers.js';
|
|
13
|
-
export * from './traverser.js';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AST Analysis Module
|
|
3
|
-
*
|
|
4
|
-
* Provides AST parsing and traversal utilities.
|
|
5
|
-
* Supports TypeScript and JavaScript via ts-morph.
|
|
6
|
-
*/
|
|
7
|
-
// Core parsers
|
|
8
|
-
export { ASTParser } from './parser.js';
|
|
9
|
-
export { MultiLanguageParser, getMultiLanguageParser, resetMultiLanguageParser } from './multi-language-parser.js';
|
|
10
|
-
// Language detection
|
|
11
|
-
export { getLanguageFromPath, EXTENSION_TO_LANGUAGE, BaseLanguageParser } from './language-parser.js';
|
|
12
|
-
// Types and utilities
|
|
13
|
-
export * from './types.js';
|
|
14
|
-
export * from './node-helpers.js';
|
|
15
|
-
export * from './traverser.js';
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/ast/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEnH,qBAAqB;AACrB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAGtG,sBAAsB;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Language Parser Interface
|
|
3
|
-
*
|
|
4
|
-
* Defines the common interface for language parsers.
|
|
5
|
-
* Currently only TypeScript/JavaScript are fully supported via ts-morph.
|
|
6
|
-
* Other languages are detected but return empty AST info.
|
|
7
|
-
*/
|
|
8
|
-
import type { FileASTInfo } from './types.js';
|
|
9
|
-
/**
|
|
10
|
-
* Supported programming languages
|
|
11
|
-
*/
|
|
12
|
-
export type SupportedLanguage = 'typescript' | 'javascript' | 'python' | 'rust' | 'go' | 'c' | 'cpp' | 'swift' | 'html' | 'css' | 'java' | 'ruby' | 'php' | 'kotlin' | 'dart' | 'csharp' | 'json' | 'yaml' | 'toml' | 'unknown';
|
|
13
|
-
/**
|
|
14
|
-
* Map file extensions to languages
|
|
15
|
-
*/
|
|
16
|
-
export declare const EXTENSION_TO_LANGUAGE: Record<string, SupportedLanguage>;
|
|
17
|
-
/**
|
|
18
|
-
* Get language from file path
|
|
19
|
-
*/
|
|
20
|
-
export declare function getLanguageFromPath(filePath: string): SupportedLanguage;
|
|
21
|
-
/**
|
|
22
|
-
* Interface for language-specific parsers
|
|
23
|
-
*/
|
|
24
|
-
export interface LanguageParser {
|
|
25
|
-
/**
|
|
26
|
-
* The language this parser handles
|
|
27
|
-
*/
|
|
28
|
-
readonly language: SupportedLanguage;
|
|
29
|
-
/**
|
|
30
|
-
* Parse a file from disk
|
|
31
|
-
*/
|
|
32
|
-
parseFile(filePath: string): Promise<FileASTInfo>;
|
|
33
|
-
/**
|
|
34
|
-
* Parse code content directly
|
|
35
|
-
*/
|
|
36
|
-
parseContent(content: string, filePath?: string): Promise<FileASTInfo>;
|
|
37
|
-
/**
|
|
38
|
-
* Check if this parser supports a given file
|
|
39
|
-
*/
|
|
40
|
-
supports(filePath: string): boolean;
|
|
41
|
-
/**
|
|
42
|
-
* Clean up resources
|
|
43
|
-
*/
|
|
44
|
-
dispose(): void;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Abstract base class for language parsers
|
|
48
|
-
*/
|
|
49
|
-
export declare abstract class BaseLanguageParser implements LanguageParser {
|
|
50
|
-
abstract readonly language: SupportedLanguage;
|
|
51
|
-
abstract parseFile(filePath: string): Promise<FileASTInfo>;
|
|
52
|
-
abstract parseContent(content: string, filePath?: string): Promise<FileASTInfo>;
|
|
53
|
-
supports(filePath: string): boolean;
|
|
54
|
-
dispose(): void;
|
|
55
|
-
/**
|
|
56
|
-
* Create empty AST info (for error cases)
|
|
57
|
-
*/
|
|
58
|
-
protected createEmptyASTInfo(filePath: string): FileASTInfo;
|
|
59
|
-
}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Language Parser Interface
|
|
3
|
-
*
|
|
4
|
-
* Defines the common interface for language parsers.
|
|
5
|
-
* Currently only TypeScript/JavaScript are fully supported via ts-morph.
|
|
6
|
-
* Other languages are detected but return empty AST info.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Map file extensions to languages
|
|
10
|
-
*/
|
|
11
|
-
export const EXTENSION_TO_LANGUAGE = {
|
|
12
|
-
// TypeScript
|
|
13
|
-
'.ts': 'typescript',
|
|
14
|
-
'.tsx': 'typescript',
|
|
15
|
-
// JavaScript
|
|
16
|
-
'.js': 'javascript',
|
|
17
|
-
'.jsx': 'javascript',
|
|
18
|
-
'.mjs': 'javascript',
|
|
19
|
-
'.cjs': 'javascript',
|
|
20
|
-
// Python
|
|
21
|
-
'.py': 'python',
|
|
22
|
-
'.pyw': 'python',
|
|
23
|
-
// Rust
|
|
24
|
-
'.rs': 'rust',
|
|
25
|
-
// Go
|
|
26
|
-
'.go': 'go',
|
|
27
|
-
// C
|
|
28
|
-
'.c': 'c',
|
|
29
|
-
'.h': 'c',
|
|
30
|
-
// C++
|
|
31
|
-
'.cpp': 'cpp',
|
|
32
|
-
'.cc': 'cpp',
|
|
33
|
-
'.cxx': 'cpp',
|
|
34
|
-
'.hpp': 'cpp',
|
|
35
|
-
'.hh': 'cpp',
|
|
36
|
-
'.hxx': 'cpp',
|
|
37
|
-
'.c++': 'cpp',
|
|
38
|
-
'.h++': 'cpp',
|
|
39
|
-
// Swift
|
|
40
|
-
'.swift': 'swift',
|
|
41
|
-
// HTML
|
|
42
|
-
'.html': 'html',
|
|
43
|
-
'.htm': 'html',
|
|
44
|
-
// CSS
|
|
45
|
-
'.css': 'css',
|
|
46
|
-
'.scss': 'css',
|
|
47
|
-
'.sass': 'css',
|
|
48
|
-
'.less': 'css',
|
|
49
|
-
// Java
|
|
50
|
-
'.java': 'java',
|
|
51
|
-
// Ruby
|
|
52
|
-
'.rb': 'ruby',
|
|
53
|
-
'.rake': 'ruby',
|
|
54
|
-
'.gemspec': 'ruby',
|
|
55
|
-
// PHP
|
|
56
|
-
'.php': 'php',
|
|
57
|
-
'.phtml': 'php',
|
|
58
|
-
'.php3': 'php',
|
|
59
|
-
'.php4': 'php',
|
|
60
|
-
'.php5': 'php',
|
|
61
|
-
'.phps': 'php',
|
|
62
|
-
// Kotlin
|
|
63
|
-
'.kt': 'kotlin',
|
|
64
|
-
'.kts': 'kotlin',
|
|
65
|
-
// Dart
|
|
66
|
-
'.dart': 'dart',
|
|
67
|
-
// C#
|
|
68
|
-
'.cs': 'csharp',
|
|
69
|
-
// Config files
|
|
70
|
-
'.json': 'json',
|
|
71
|
-
'.jsonc': 'json',
|
|
72
|
-
'.yaml': 'yaml',
|
|
73
|
-
'.yml': 'yaml',
|
|
74
|
-
'.toml': 'toml',
|
|
75
|
-
};
|
|
76
|
-
/**
|
|
77
|
-
* Get language from file path
|
|
78
|
-
*/
|
|
79
|
-
export function getLanguageFromPath(filePath) {
|
|
80
|
-
const ext = filePath.slice(filePath.lastIndexOf('.')).toLowerCase();
|
|
81
|
-
return EXTENSION_TO_LANGUAGE[ext] || 'unknown';
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Abstract base class for language parsers
|
|
85
|
-
*/
|
|
86
|
-
export class BaseLanguageParser {
|
|
87
|
-
supports(filePath) {
|
|
88
|
-
return getLanguageFromPath(filePath) === this.language;
|
|
89
|
-
}
|
|
90
|
-
dispose() {
|
|
91
|
-
// Override in subclasses if cleanup is needed
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Create empty AST info (for error cases)
|
|
95
|
-
*/
|
|
96
|
-
createEmptyASTInfo(filePath) {
|
|
97
|
-
return Object.freeze({
|
|
98
|
-
filePath,
|
|
99
|
-
functions: Object.freeze([]),
|
|
100
|
-
classes: Object.freeze([]),
|
|
101
|
-
imports: Object.freeze([]),
|
|
102
|
-
exports: Object.freeze([]),
|
|
103
|
-
totalLines: 0,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=language-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"language-parser.js","sourceRoot":"","sources":["../../../src/analyzers/ast/language-parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgCH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsC;IACtE,aAAa;IACb,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,aAAa;IACb,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,SAAS;IACT,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,OAAO;IACP,KAAK,EAAE,MAAM;IACb,KAAK;IACL,KAAK,EAAE,IAAI;IACX,IAAI;IACJ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM;IACN,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,QAAQ;IACR,QAAQ,EAAE,OAAO;IACjB,OAAO;IACP,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,MAAM;IACN,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO;IACP,OAAO,EAAE,MAAM;IACf,OAAO;IACP,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,MAAM;IAClB,MAAM;IACN,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,SAAS;IACT,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,OAAO;IACP,OAAO,EAAE,MAAM;IACf,KAAK;IACL,KAAK,EAAE,QAAQ;IACf,eAAe;IACf,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACpE,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AACjD,CAAC;AAgCD;;GAEG;AACH,MAAM,OAAgB,kBAAkB;IAMtC,QAAQ,CAAC,QAAgB;QACvB,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC;IACzD,CAAC;IAED,OAAO;QACL,8CAA8C;IAChD,CAAC;IAED;;OAEG;IACO,kBAAkB,CAAC,QAAgB;QAC3C,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,QAAQ;YACR,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,UAAU,EAAE,CAAC;SACd,CAAC,CAAC;IACL,CAAC;CACF"}
|