camouf 0.1.0
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/LICENSE +21 -0
- package/README.md +346 -0
- package/dist/cli/commands/analyze.d.ts +8 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +81 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/init.d.ts +9 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +104 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/report.d.ts +8 -0
- package/dist/cli/commands/report.d.ts.map +1 -0
- package/dist/cli/commands/report.js +63 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +9 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +87 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +9 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +93 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +48 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/version.d.ts +16 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +16 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/core/analyzer/architecture-visualizer.d.ts +25 -0
- package/dist/core/analyzer/architecture-visualizer.d.ts.map +1 -0
- package/dist/core/analyzer/architecture-visualizer.js +333 -0
- package/dist/core/analyzer/architecture-visualizer.js.map +1 -0
- package/dist/core/analyzer/dependency-analyzer.d.ts +49 -0
- package/dist/core/analyzer/dependency-analyzer.d.ts.map +1 -0
- package/dist/core/analyzer/dependency-analyzer.js +242 -0
- package/dist/core/analyzer/dependency-analyzer.js.map +1 -0
- package/dist/core/config/config-schema.d.ts +280 -0
- package/dist/core/config/config-schema.d.ts.map +1 -0
- package/dist/core/config/config-schema.js +199 -0
- package/dist/core/config/config-schema.js.map +1 -0
- package/dist/core/config/configuration-manager.d.ts +82 -0
- package/dist/core/config/configuration-manager.d.ts.map +1 -0
- package/dist/core/config/configuration-manager.js +306 -0
- package/dist/core/config/configuration-manager.js.map +1 -0
- package/dist/core/logger.d.ts +27 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +86 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/parsers/go-parser.d.ts +16 -0
- package/dist/core/parsers/go-parser.d.ts.map +1 -0
- package/dist/core/parsers/go-parser.js +117 -0
- package/dist/core/parsers/go-parser.js.map +1 -0
- package/dist/core/parsers/java-parser.d.ts +22 -0
- package/dist/core/parsers/java-parser.d.ts.map +1 -0
- package/dist/core/parsers/java-parser.js +114 -0
- package/dist/core/parsers/java-parser.js.map +1 -0
- package/dist/core/parsers/javascript-parser.d.ts +14 -0
- package/dist/core/parsers/javascript-parser.d.ts.map +1 -0
- package/dist/core/parsers/javascript-parser.js +19 -0
- package/dist/core/parsers/javascript-parser.js.map +1 -0
- package/dist/core/parsers/parser-registry.d.ts +45 -0
- package/dist/core/parsers/parser-registry.d.ts.map +1 -0
- package/dist/core/parsers/parser-registry.js +121 -0
- package/dist/core/parsers/parser-registry.js.map +1 -0
- package/dist/core/parsers/parser.interface.d.ts +49 -0
- package/dist/core/parsers/parser.interface.d.ts.map +1 -0
- package/dist/core/parsers/parser.interface.js +7 -0
- package/dist/core/parsers/parser.interface.js.map +1 -0
- package/dist/core/parsers/python-parser.d.ts +22 -0
- package/dist/core/parsers/python-parser.d.ts.map +1 -0
- package/dist/core/parsers/python-parser.js +136 -0
- package/dist/core/parsers/python-parser.js.map +1 -0
- package/dist/core/parsers/rust-parser.d.ts +16 -0
- package/dist/core/parsers/rust-parser.d.ts.map +1 -0
- package/dist/core/parsers/rust-parser.js +176 -0
- package/dist/core/parsers/rust-parser.js.map +1 -0
- package/dist/core/parsers/typescript-parser.d.ts +29 -0
- package/dist/core/parsers/typescript-parser.d.ts.map +1 -0
- package/dist/core/parsers/typescript-parser.js +251 -0
- package/dist/core/parsers/typescript-parser.js.map +1 -0
- package/dist/core/reporter/report-generator.d.ts +31 -0
- package/dist/core/reporter/report-generator.d.ts.map +1 -0
- package/dist/core/reporter/report-generator.js +417 -0
- package/dist/core/reporter/report-generator.js.map +1 -0
- package/dist/core/reporter/violation-reporter.d.ts +62 -0
- package/dist/core/reporter/violation-reporter.d.ts.map +1 -0
- package/dist/core/reporter/violation-reporter.js +265 -0
- package/dist/core/reporter/violation-reporter.js.map +1 -0
- package/dist/core/rules/builtin/api-versioning.rule.d.ts +28 -0
- package/dist/core/rules/builtin/api-versioning.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/api-versioning.rule.js +103 -0
- package/dist/core/rules/builtin/api-versioning.rule.js.map +1 -0
- package/dist/core/rules/builtin/circular-dependencies.rule.d.ts +26 -0
- package/dist/core/rules/builtin/circular-dependencies.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/circular-dependencies.rule.js +99 -0
- package/dist/core/rules/builtin/circular-dependencies.rule.js.map +1 -0
- package/dist/core/rules/builtin/data-flow-integrity.rule.d.ts +27 -0
- package/dist/core/rules/builtin/data-flow-integrity.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/data-flow-integrity.rule.js +111 -0
- package/dist/core/rules/builtin/data-flow-integrity.rule.js.map +1 -0
- package/dist/core/rules/builtin/ddd-boundaries.rule.d.ts +31 -0
- package/dist/core/rules/builtin/ddd-boundaries.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/ddd-boundaries.rule.js +141 -0
- package/dist/core/rules/builtin/ddd-boundaries.rule.js.map +1 -0
- package/dist/core/rules/builtin/distributed-transactions.rule.d.ts +27 -0
- package/dist/core/rules/builtin/distributed-transactions.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/distributed-transactions.rule.js +134 -0
- package/dist/core/rules/builtin/distributed-transactions.rule.js.map +1 -0
- package/dist/core/rules/builtin/index.d.ts +16 -0
- package/dist/core/rules/builtin/index.d.ts.map +1 -0
- package/dist/core/rules/builtin/index.js +16 -0
- package/dist/core/rules/builtin/index.js.map +1 -0
- package/dist/core/rules/builtin/layer-dependencies.rule.d.ts +30 -0
- package/dist/core/rules/builtin/layer-dependencies.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/layer-dependencies.rule.js +102 -0
- package/dist/core/rules/builtin/layer-dependencies.rule.js.map +1 -0
- package/dist/core/rules/builtin/performance-antipatterns.rule.d.ts +29 -0
- package/dist/core/rules/builtin/performance-antipatterns.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/performance-antipatterns.rule.js +148 -0
- package/dist/core/rules/builtin/performance-antipatterns.rule.js.map +1 -0
- package/dist/core/rules/builtin/resilience-patterns.rule.d.ts +29 -0
- package/dist/core/rules/builtin/resilience-patterns.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/resilience-patterns.rule.js +123 -0
- package/dist/core/rules/builtin/resilience-patterns.rule.js.map +1 -0
- package/dist/core/rules/builtin/security-context.rule.d.ts +32 -0
- package/dist/core/rules/builtin/security-context.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/security-context.rule.js +145 -0
- package/dist/core/rules/builtin/security-context.rule.js.map +1 -0
- package/dist/core/rules/builtin/type-safety.rule.d.ts +32 -0
- package/dist/core/rules/builtin/type-safety.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/type-safety.rule.js +175 -0
- package/dist/core/rules/builtin/type-safety.rule.js.map +1 -0
- package/dist/core/rules/rule-engine.d.ts +72 -0
- package/dist/core/rules/rule-engine.d.ts.map +1 -0
- package/dist/core/rules/rule-engine.js +225 -0
- package/dist/core/rules/rule-engine.js.map +1 -0
- package/dist/core/rules/rule.interface.d.ts +169 -0
- package/dist/core/rules/rule.interface.d.ts.map +1 -0
- package/dist/core/rules/rule.interface.js +38 -0
- package/dist/core/rules/rule.interface.js.map +1 -0
- package/dist/core/scanner/project-detector.d.ts +51 -0
- package/dist/core/scanner/project-detector.d.ts.map +1 -0
- package/dist/core/scanner/project-detector.js +310 -0
- package/dist/core/scanner/project-detector.js.map +1 -0
- package/dist/core/scanner/project-scanner.d.ts +101 -0
- package/dist/core/scanner/project-scanner.d.ts.map +1 -0
- package/dist/core/scanner/project-scanner.js +321 -0
- package/dist/core/scanner/project-scanner.js.map +1 -0
- package/dist/core/watcher/file-watcher.d.ts +48 -0
- package/dist/core/watcher/file-watcher.d.ts.map +1 -0
- package/dist/core/watcher/file-watcher.js +124 -0
- package/dist/core/watcher/file-watcher.js.map +1 -0
- package/dist/types/config.types.d.ts +163 -0
- package/dist/types/config.types.d.ts.map +1 -0
- package/dist/types/config.types.js +36 -0
- package/dist/types/config.types.js.map +1 -0
- package/dist/types/core.types.d.ts +247 -0
- package/dist/types/core.types.d.ts.map +1 -0
- package/dist/types/core.types.js +7 -0
- package/dist/types/core.types.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate Command
|
|
3
|
+
*
|
|
4
|
+
* Performs a one-time validation of the project architecture.
|
|
5
|
+
* Returns exit code based on violations found.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare const validateCommand: Command;
|
|
9
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,eAAe,SAkFxB,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate Command
|
|
3
|
+
*
|
|
4
|
+
* Performs a one-time validation of the project architecture.
|
|
5
|
+
* Returns exit code based on violations found.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { ConfigurationManager } from '../../core/config/configuration-manager.js';
|
|
9
|
+
import { ProjectScanner } from '../../core/scanner/project-scanner.js';
|
|
10
|
+
import { RuleEngine } from '../../core/rules/rule-engine.js';
|
|
11
|
+
import { ViolationReporter } from '../../core/reporter/violation-reporter.js';
|
|
12
|
+
import { Logger } from '../../core/logger.js';
|
|
13
|
+
import ora from 'ora';
|
|
14
|
+
export const validateCommand = new Command('validate')
|
|
15
|
+
.description('Validate project architecture')
|
|
16
|
+
.option('-c, --config <path>', 'Path to configuration file')
|
|
17
|
+
.option('--rules <rules>', 'Comma-separated list of rules to run')
|
|
18
|
+
.option('--fix', 'Attempt to auto-fix violations where possible')
|
|
19
|
+
.option('--format <format>', 'Output format (text, json, sarif)', 'text')
|
|
20
|
+
.option('--output <path>', 'Write report to file')
|
|
21
|
+
.option('--fail-on <severity>', 'Fail on severity level (error, warning, info)', 'error')
|
|
22
|
+
.action(async (options) => {
|
|
23
|
+
const spinner = ora('Loading configuration...').start();
|
|
24
|
+
try {
|
|
25
|
+
// Load configuration
|
|
26
|
+
const configManager = new ConfigurationManager();
|
|
27
|
+
const config = await configManager.loadConfig(options.config);
|
|
28
|
+
if (!config) {
|
|
29
|
+
spinner.fail('No configuration found. Run "camouf init" first.');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
// Initialize components
|
|
33
|
+
spinner.text = 'Scanning project...';
|
|
34
|
+
const scanner = new ProjectScanner(config);
|
|
35
|
+
const ruleEngine = new RuleEngine(config);
|
|
36
|
+
const reporter = new ViolationReporter(config);
|
|
37
|
+
// Filter rules if specified
|
|
38
|
+
if (options.rules) {
|
|
39
|
+
const enabledRules = options.rules.split(',');
|
|
40
|
+
ruleEngine.filterRules(enabledRules);
|
|
41
|
+
}
|
|
42
|
+
// Scan project
|
|
43
|
+
const graph = await scanner.scan();
|
|
44
|
+
spinner.succeed(`Scanned ${graph.nodeCount()} files`);
|
|
45
|
+
// Validate
|
|
46
|
+
spinner.start('Running validation...');
|
|
47
|
+
const violations = await ruleEngine.validate(graph);
|
|
48
|
+
// Auto-fix if requested
|
|
49
|
+
if (options.fix) {
|
|
50
|
+
spinner.text = 'Applying auto-fixes...';
|
|
51
|
+
const fixed = await ruleEngine.autoFix(violations);
|
|
52
|
+
spinner.succeed(`Applied ${fixed} auto-fixes`);
|
|
53
|
+
}
|
|
54
|
+
spinner.stop();
|
|
55
|
+
// Report results
|
|
56
|
+
const report = reporter.generateReport(violations, {
|
|
57
|
+
format: options.format,
|
|
58
|
+
outputPath: options.output,
|
|
59
|
+
});
|
|
60
|
+
// Output report
|
|
61
|
+
if (options.output) {
|
|
62
|
+
Logger.success(`Report written to ${options.output}`);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
console.log(report);
|
|
66
|
+
}
|
|
67
|
+
// Determine exit code
|
|
68
|
+
const summary = reporter.getSummary();
|
|
69
|
+
const failLevel = options.failOn;
|
|
70
|
+
let shouldFail = false;
|
|
71
|
+
if (failLevel === 'error' && summary.errors > 0)
|
|
72
|
+
shouldFail = true;
|
|
73
|
+
if (failLevel === 'warning' && (summary.errors > 0 || summary.warnings > 0))
|
|
74
|
+
shouldFail = true;
|
|
75
|
+
if (failLevel === 'info' && summary.total > 0)
|
|
76
|
+
shouldFail = true;
|
|
77
|
+
if (shouldFail) {
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
Logger.success('\n✅ Validation passed!\n');
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
spinner.fail(`Validation failed: ${error.message}`);
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watch Command
|
|
3
|
+
*
|
|
4
|
+
* Starts real-time file monitoring and architecture validation.
|
|
5
|
+
* Reports violations as they occur during development.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare const watchCommand: Command;
|
|
9
|
+
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,YAAY,SA4FrB,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watch Command
|
|
3
|
+
*
|
|
4
|
+
* Starts real-time file monitoring and architecture validation.
|
|
5
|
+
* Reports violations as they occur during development.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { ConfigurationManager } from '../../core/config/configuration-manager.js';
|
|
9
|
+
import { FileWatcher } from '../../core/watcher/file-watcher.js';
|
|
10
|
+
import { RuleEngine } from '../../core/rules/rule-engine.js';
|
|
11
|
+
import { ViolationReporter } from '../../core/reporter/violation-reporter.js';
|
|
12
|
+
import { ProjectScanner } from '../../core/scanner/project-scanner.js';
|
|
13
|
+
import { Logger } from '../../core/logger.js';
|
|
14
|
+
import ora from 'ora';
|
|
15
|
+
export const watchCommand = new Command('watch')
|
|
16
|
+
.description('Start real-time architecture monitoring')
|
|
17
|
+
.option('-c, --config <path>', 'Path to configuration file')
|
|
18
|
+
.option('--no-initial', 'Skip initial validation')
|
|
19
|
+
.option('--debounce <ms>', 'Debounce time for file changes (default: 300)', '300')
|
|
20
|
+
.option('--rules <rules>', 'Comma-separated list of rules to run')
|
|
21
|
+
.option('--ignore <patterns>', 'Additional patterns to ignore')
|
|
22
|
+
.action(async (options) => {
|
|
23
|
+
const spinner = ora('Loading configuration...').start();
|
|
24
|
+
try {
|
|
25
|
+
// Load configuration
|
|
26
|
+
const configManager = new ConfigurationManager();
|
|
27
|
+
const config = await configManager.loadConfig(options.config);
|
|
28
|
+
if (!config) {
|
|
29
|
+
spinner.fail('No configuration found. Run "camouf init" first.');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
spinner.text = 'Initializing components...';
|
|
33
|
+
// Initialize components
|
|
34
|
+
const scanner = new ProjectScanner(config);
|
|
35
|
+
const ruleEngine = new RuleEngine(config);
|
|
36
|
+
const reporter = new ViolationReporter(config);
|
|
37
|
+
const watcher = new FileWatcher(config, {
|
|
38
|
+
debounce: parseInt(options.debounce, 10),
|
|
39
|
+
additionalIgnore: options.ignore?.split(','),
|
|
40
|
+
});
|
|
41
|
+
// Filter rules if specified
|
|
42
|
+
if (options.rules) {
|
|
43
|
+
const enabledRules = options.rules.split(',');
|
|
44
|
+
ruleEngine.filterRules(enabledRules);
|
|
45
|
+
}
|
|
46
|
+
// Initial scan
|
|
47
|
+
if (options.initial !== false) {
|
|
48
|
+
spinner.text = 'Performing initial scan...';
|
|
49
|
+
const graph = await scanner.scan();
|
|
50
|
+
spinner.text = 'Running initial validation...';
|
|
51
|
+
const violations = await ruleEngine.validate(graph);
|
|
52
|
+
spinner.stop();
|
|
53
|
+
reporter.reportInitial(violations);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
spinner.stop();
|
|
57
|
+
}
|
|
58
|
+
// Setup file watcher
|
|
59
|
+
Logger.info('\n👁️ Watching for changes...\n');
|
|
60
|
+
Logger.info('Press Ctrl+C to stop\n');
|
|
61
|
+
watcher.on('change', async (filePath, changeType) => {
|
|
62
|
+
Logger.debug(`File ${changeType}: ${filePath}`);
|
|
63
|
+
try {
|
|
64
|
+
// Incremental analysis
|
|
65
|
+
const updatedGraph = await scanner.updateFile(filePath, changeType);
|
|
66
|
+
const violations = await ruleEngine.validateFile(filePath, updatedGraph);
|
|
67
|
+
reporter.reportIncremental(filePath, violations);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
Logger.error(`Error analyzing ${filePath}: ${error.message}`);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
watcher.on('error', (error) => {
|
|
74
|
+
Logger.error(`Watcher error: ${error.message}`);
|
|
75
|
+
});
|
|
76
|
+
// Start watching
|
|
77
|
+
await watcher.start();
|
|
78
|
+
// Handle graceful shutdown
|
|
79
|
+
process.on('SIGINT', async () => {
|
|
80
|
+
Logger.info('\n\nStopping file watcher...');
|
|
81
|
+
await watcher.stop();
|
|
82
|
+
const summary = reporter.getSummary();
|
|
83
|
+
Logger.info(`\nSession summary: ${summary.total} violations found`);
|
|
84
|
+
Logger.info(` Errors: ${summary.errors}, Warnings: ${summary.warnings}, Info: ${summary.info}\n`);
|
|
85
|
+
process.exit(0);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
spinner.fail(`Watch failed: ${error.message}`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Camouf CLI - Real-time Architecture Monitoring Tool
|
|
4
|
+
*
|
|
5
|
+
* Entry point for the command-line interface.
|
|
6
|
+
* Provides commands for initializing, watching, and validating project architecture.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Camouf CLI - Real-time Architecture Monitoring Tool
|
|
4
|
+
*
|
|
5
|
+
* Entry point for the command-line interface.
|
|
6
|
+
* Provides commands for initializing, watching, and validating project architecture.
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from 'commander';
|
|
9
|
+
import { initCommand } from './commands/init.js';
|
|
10
|
+
import { watchCommand } from './commands/watch.js';
|
|
11
|
+
import { validateCommand } from './commands/validate.js';
|
|
12
|
+
import { analyzeCommand } from './commands/analyze.js';
|
|
13
|
+
import { reportCommand } from './commands/report.js';
|
|
14
|
+
import { Logger } from '../core/logger.js';
|
|
15
|
+
import { version, description } from './version.js';
|
|
16
|
+
const program = new Command();
|
|
17
|
+
program
|
|
18
|
+
.name('camouf')
|
|
19
|
+
.description(description)
|
|
20
|
+
.version(version, '-v, --version', 'Display the current version');
|
|
21
|
+
// Global options
|
|
22
|
+
program
|
|
23
|
+
.option('-c, --config <path>', 'Path to configuration file')
|
|
24
|
+
.option('--verbose', 'Enable verbose output')
|
|
25
|
+
.option('--silent', 'Suppress all output except errors')
|
|
26
|
+
.option('--no-color', 'Disable colored output');
|
|
27
|
+
// Register commands
|
|
28
|
+
program.addCommand(initCommand);
|
|
29
|
+
program.addCommand(watchCommand);
|
|
30
|
+
program.addCommand(validateCommand);
|
|
31
|
+
program.addCommand(analyzeCommand);
|
|
32
|
+
program.addCommand(reportCommand);
|
|
33
|
+
// Error handling
|
|
34
|
+
program.exitOverride((err) => {
|
|
35
|
+
if (err.code === 'commander.help' || err.code === 'commander.version') {
|
|
36
|
+
process.exit(0);
|
|
37
|
+
}
|
|
38
|
+
if (err.code !== 'commander.helpDisplayed' && err.code !== 'commander.outputHelp') {
|
|
39
|
+
Logger.error(`Error: ${err.message}`);
|
|
40
|
+
}
|
|
41
|
+
process.exit(1);
|
|
42
|
+
});
|
|
43
|
+
// Parse arguments
|
|
44
|
+
program.parseAsync(process.argv).catch((error) => {
|
|
45
|
+
Logger.error(`Fatal error: ${error.message}`);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,WAAW,CAAC;KACxB,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,6BAA6B,CAAC,CAAC;AAEpE,iBAAiB;AACjB,OAAO;KACJ,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;KAC3D,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,UAAU,EAAE,mCAAmC,CAAC;KACvD,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;AAElD,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,iBAAiB;AACjB,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAClF,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC/C,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version and metadata for Camouf CLI
|
|
3
|
+
*/
|
|
4
|
+
export declare const version = "0.1.0";
|
|
5
|
+
export declare const name = "camouf";
|
|
6
|
+
export declare const description = "Real-time architecture monitoring CLI tool with multi-language support";
|
|
7
|
+
export declare const metadata: {
|
|
8
|
+
name: string;
|
|
9
|
+
version: string;
|
|
10
|
+
description: string;
|
|
11
|
+
homepage: string;
|
|
12
|
+
repository: string;
|
|
13
|
+
author: string;
|
|
14
|
+
license: string;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,IAAI,WAAW,CAAC;AAC7B,eAAO,MAAM,WAAW,2EAA2E,CAAC;AAEpG,eAAO,MAAM,QAAQ;;;;;;;;CAQpB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version and metadata for Camouf CLI
|
|
3
|
+
*/
|
|
4
|
+
export const version = '0.1.0';
|
|
5
|
+
export const name = 'camouf';
|
|
6
|
+
export const description = 'Real-time architecture monitoring CLI tool with multi-language support';
|
|
7
|
+
export const metadata = {
|
|
8
|
+
name,
|
|
9
|
+
version,
|
|
10
|
+
description,
|
|
11
|
+
homepage: 'https://github.com/camouf/camouf',
|
|
12
|
+
repository: 'https://github.com/camouf/camouf',
|
|
13
|
+
author: 'Camouf Team',
|
|
14
|
+
license: 'MIT',
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,wEAAwE,CAAC;AAEpG,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI;IACJ,OAAO;IACP,WAAW;IACX,QAAQ,EAAE,kCAAkC;IAC5C,UAAU,EAAE,kCAAkC;IAC9C,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,KAAK;CACf,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture Visualizer
|
|
3
|
+
*
|
|
4
|
+
* Generates visual representations of the architecture.
|
|
5
|
+
*/
|
|
6
|
+
import { CamoufConfig } from '../../types/config.types.js';
|
|
7
|
+
import { AnalysisResult } from '../../types/core.types.js';
|
|
8
|
+
interface VisualizerOptions {
|
|
9
|
+
format: 'html' | 'json' | 'dot';
|
|
10
|
+
outputPath: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class ArchitectureVisualizer {
|
|
13
|
+
private config;
|
|
14
|
+
constructor(config: CamoufConfig);
|
|
15
|
+
generate(analysis: AnalysisResult, options: VisualizerOptions): Promise<void>;
|
|
16
|
+
private generateHtmlVisualization;
|
|
17
|
+
private generateDotVisualization;
|
|
18
|
+
private generateJsonVisualization;
|
|
19
|
+
private prepareGraphData;
|
|
20
|
+
private getFileName;
|
|
21
|
+
private getLayerForFile;
|
|
22
|
+
private sanitizeNodeName;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=architecture-visualizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture-visualizer.d.ts","sourceRoot":"","sources":["../../../src/core/analyzer/architecture-visualizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IAI1B,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAgBrE,yBAAyB;YA4NzB,wBAAwB;YA+CxB,yBAAyB;IAQvC,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,gBAAgB;CAGzB"}
|