@wtdlee/repomap 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 +527 -0
- package/dist/analyzers/base-analyzer.d.ts +46 -0
- package/dist/analyzers/base-analyzer.d.ts.map +1 -0
- package/dist/analyzers/base-analyzer.js +48 -0
- package/dist/analyzers/base-analyzer.js.map +1 -0
- package/dist/analyzers/dataflow-analyzer.d.ts +30 -0
- package/dist/analyzers/dataflow-analyzer.d.ts.map +1 -0
- package/dist/analyzers/dataflow-analyzer.js +426 -0
- package/dist/analyzers/dataflow-analyzer.js.map +1 -0
- package/dist/analyzers/graphql-analyzer.d.ts +23 -0
- package/dist/analyzers/graphql-analyzer.d.ts.map +1 -0
- package/dist/analyzers/graphql-analyzer.js +387 -0
- package/dist/analyzers/graphql-analyzer.js.map +1 -0
- package/dist/analyzers/index.d.ts +6 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +6 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/pages-analyzer.d.ts +85 -0
- package/dist/analyzers/pages-analyzer.d.ts.map +1 -0
- package/dist/analyzers/pages-analyzer.js +1696 -0
- package/dist/analyzers/pages-analyzer.js.map +1 -0
- package/dist/analyzers/rails/index.d.ts +47 -0
- package/dist/analyzers/rails/index.d.ts.map +1 -0
- package/dist/analyzers/rails/index.js +146 -0
- package/dist/analyzers/rails/index.js.map +1 -0
- package/dist/analyzers/rails/rails-controller-analyzer.d.ts +83 -0
- package/dist/analyzers/rails/rails-controller-analyzer.d.ts.map +1 -0
- package/dist/analyzers/rails/rails-controller-analyzer.js +479 -0
- package/dist/analyzers/rails/rails-controller-analyzer.js.map +1 -0
- package/dist/analyzers/rails/rails-grpc-analyzer.d.ts +45 -0
- package/dist/analyzers/rails/rails-grpc-analyzer.d.ts.map +1 -0
- package/dist/analyzers/rails/rails-grpc-analyzer.js +263 -0
- package/dist/analyzers/rails/rails-grpc-analyzer.js.map +1 -0
- package/dist/analyzers/rails/rails-model-analyzer.d.ts +89 -0
- package/dist/analyzers/rails/rails-model-analyzer.d.ts.map +1 -0
- package/dist/analyzers/rails/rails-model-analyzer.js +494 -0
- package/dist/analyzers/rails/rails-model-analyzer.js.map +1 -0
- package/dist/analyzers/rails/rails-react-analyzer.d.ts +42 -0
- package/dist/analyzers/rails/rails-react-analyzer.d.ts.map +1 -0
- package/dist/analyzers/rails/rails-react-analyzer.js +530 -0
- package/dist/analyzers/rails/rails-react-analyzer.js.map +1 -0
- package/dist/analyzers/rails/rails-routes-analyzer.d.ts +63 -0
- package/dist/analyzers/rails/rails-routes-analyzer.d.ts.map +1 -0
- package/dist/analyzers/rails/rails-routes-analyzer.js +541 -0
- package/dist/analyzers/rails/rails-routes-analyzer.js.map +1 -0
- package/dist/analyzers/rails/rails-view-analyzer.d.ts +50 -0
- package/dist/analyzers/rails/rails-view-analyzer.d.ts.map +1 -0
- package/dist/analyzers/rails/rails-view-analyzer.js +387 -0
- package/dist/analyzers/rails/rails-view-analyzer.js.map +1 -0
- package/dist/analyzers/rails/ruby-parser.d.ts +64 -0
- package/dist/analyzers/rails/ruby-parser.d.ts.map +1 -0
- package/dist/analyzers/rails/ruby-parser.js +213 -0
- package/dist/analyzers/rails/ruby-parser.js.map +1 -0
- package/dist/analyzers/rest-api-analyzer.d.ts +66 -0
- package/dist/analyzers/rest-api-analyzer.d.ts.map +1 -0
- package/dist/analyzers/rest-api-analyzer.js +480 -0
- package/dist/analyzers/rest-api-analyzer.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +550 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/cache.d.ts +48 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +152 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/engine.d.ts +47 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +320 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/generators/assets/common.css +187 -0
- package/dist/generators/assets/docs.css +363 -0
- package/dist/generators/assets/page-map.css +305 -0
- package/dist/generators/assets/rails-map.css +473 -0
- package/dist/generators/index.d.ts +4 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +4 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/markdown-generator.d.ts +26 -0
- package/dist/generators/markdown-generator.d.ts.map +1 -0
- package/dist/generators/markdown-generator.js +783 -0
- package/dist/generators/markdown-generator.js.map +1 -0
- package/dist/generators/mermaid-generator.d.ts +36 -0
- package/dist/generators/mermaid-generator.d.ts.map +1 -0
- package/dist/generators/mermaid-generator.js +365 -0
- package/dist/generators/mermaid-generator.js.map +1 -0
- package/dist/generators/page-map-generator.d.ts +23 -0
- package/dist/generators/page-map-generator.d.ts.map +1 -0
- package/dist/generators/page-map-generator.js +3563 -0
- package/dist/generators/page-map-generator.js.map +1 -0
- package/dist/generators/rails-map-generator.d.ts +22 -0
- package/dist/generators/rails-map-generator.d.ts.map +1 -0
- package/dist/generators/rails-map-generator.js +909 -0
- package/dist/generators/rails-map-generator.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/server/doc-server.d.ts +31 -0
- package/dist/server/doc-server.d.ts.map +1 -0
- package/dist/server/doc-server.js +1233 -0
- package/dist/server/doc-server.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -0
- package/dist/types.d.ts +294 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/env-detector.d.ts +32 -0
- package/dist/utils/env-detector.d.ts.map +1 -0
- package/dist/utils/env-detector.js +189 -0
- package/dist/utils/env-detector.js.map +1 -0
- package/dist/utils/parallel.d.ts +24 -0
- package/dist/utils/parallel.d.ts.map +1 -0
- package/dist/utils/parallel.js +71 -0
- package/dist/utils/parallel.js.map +1 -0
- package/package.json +131 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as crypto from 'crypto';
|
|
4
|
+
// Increment this version when analyzer logic changes significantly
|
|
5
|
+
// This will invalidate all existing caches
|
|
6
|
+
const CACHE_VERSION = '1.1';
|
|
7
|
+
/**
|
|
8
|
+
* File-based cache for analysis results
|
|
9
|
+
* ファイルベースのキャッシュシステム
|
|
10
|
+
*/
|
|
11
|
+
export class AnalysisCache {
|
|
12
|
+
cacheDir;
|
|
13
|
+
manifest;
|
|
14
|
+
manifestPath;
|
|
15
|
+
dirty = false;
|
|
16
|
+
constructor(repoPath) {
|
|
17
|
+
this.cacheDir = path.join(repoPath, '.repomap-cache');
|
|
18
|
+
this.manifestPath = path.join(this.cacheDir, 'manifest.json');
|
|
19
|
+
this.manifest = { version: CACHE_VERSION, entries: {} };
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Initialize cache directory and load manifest
|
|
23
|
+
*/
|
|
24
|
+
async init() {
|
|
25
|
+
// Create cache directory
|
|
26
|
+
try {
|
|
27
|
+
await fs.mkdir(this.cacheDir, { recursive: true });
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
console.warn(` Warning: Could not create cache directory: ${err.message}`);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Load existing manifest
|
|
34
|
+
try {
|
|
35
|
+
const data = await fs.readFile(this.manifestPath, 'utf-8');
|
|
36
|
+
const loaded = JSON.parse(data);
|
|
37
|
+
// Check version compatibility
|
|
38
|
+
if (loaded.version === CACHE_VERSION) {
|
|
39
|
+
this.manifest = loaded;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.log(' Cache version mismatch, clearing cache...');
|
|
43
|
+
await this.clear();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Manifest doesn't exist yet, will be created on save
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Compute hash for a file
|
|
52
|
+
*/
|
|
53
|
+
async computeFileHash(filePath) {
|
|
54
|
+
try {
|
|
55
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
56
|
+
return crypto.createHash('md5').update(content).digest('hex');
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return '';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Compute hash for multiple files
|
|
64
|
+
* Sort files first for consistent ordering, then use a sample of files
|
|
65
|
+
*/
|
|
66
|
+
async computeFilesHash(filePaths) {
|
|
67
|
+
// Sort files for consistent ordering
|
|
68
|
+
const sortedFiles = [...filePaths].sort();
|
|
69
|
+
// Use a deterministic sample: first 50 + last 50 files
|
|
70
|
+
// This ensures consistent hash while keeping it fast
|
|
71
|
+
const sampleSize = 50;
|
|
72
|
+
let sampleFiles;
|
|
73
|
+
if (sortedFiles.length <= sampleSize * 2) {
|
|
74
|
+
sampleFiles = sortedFiles;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
sampleFiles = [...sortedFiles.slice(0, sampleSize), ...sortedFiles.slice(-sampleSize)];
|
|
78
|
+
}
|
|
79
|
+
const hashes = await Promise.all(sampleFiles.map((f) => this.computeFileHash(f)));
|
|
80
|
+
// Include total file count in hash to detect added/removed files
|
|
81
|
+
const countHash = crypto.createHash('md5').update(String(sortedFiles.length)).digest('hex');
|
|
82
|
+
return crypto
|
|
83
|
+
.createHash('md5')
|
|
84
|
+
.update(hashes.join('') + countHash)
|
|
85
|
+
.digest('hex');
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get cached data if valid
|
|
89
|
+
*/
|
|
90
|
+
get(key, currentHash) {
|
|
91
|
+
const entry = this.manifest.entries[key];
|
|
92
|
+
if (entry && entry.hash === currentHash) {
|
|
93
|
+
return entry.data;
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Store data in cache
|
|
99
|
+
*/
|
|
100
|
+
set(key, hash, data) {
|
|
101
|
+
this.manifest.entries[key] = {
|
|
102
|
+
hash,
|
|
103
|
+
timestamp: Date.now(),
|
|
104
|
+
data,
|
|
105
|
+
};
|
|
106
|
+
this.dirty = true;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Save manifest to disk
|
|
110
|
+
*/
|
|
111
|
+
async save() {
|
|
112
|
+
if (!this.dirty)
|
|
113
|
+
return;
|
|
114
|
+
try {
|
|
115
|
+
// Ensure directory exists
|
|
116
|
+
await fs.mkdir(this.cacheDir, { recursive: true });
|
|
117
|
+
await fs.writeFile(this.manifestPath, JSON.stringify(this.manifest, null, 2));
|
|
118
|
+
this.dirty = false;
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
console.warn(' Warning: Failed to save cache:', error.message);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Clear all cache
|
|
126
|
+
*/
|
|
127
|
+
async clear() {
|
|
128
|
+
this.manifest = { version: CACHE_VERSION, entries: {} };
|
|
129
|
+
this.dirty = true;
|
|
130
|
+
try {
|
|
131
|
+
await fs.rm(this.cacheDir, { recursive: true, force: true });
|
|
132
|
+
await fs.mkdir(this.cacheDir, { recursive: true });
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
// Ignore errors
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get cache statistics
|
|
140
|
+
*/
|
|
141
|
+
getStats() {
|
|
142
|
+
const entries = Object.keys(this.manifest.entries).length;
|
|
143
|
+
const size = JSON.stringify(this.manifest).length;
|
|
144
|
+
return {
|
|
145
|
+
entries,
|
|
146
|
+
size: size > 1024 * 1024
|
|
147
|
+
? `${(size / 1024 / 1024).toFixed(1)}MB`
|
|
148
|
+
: `${(size / 1024).toFixed(1)}KB`,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { DocGeneratorConfig, DocumentationReport } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Main documentation generation engine
|
|
4
|
+
* メインドキュメント生成エンジン
|
|
5
|
+
*/
|
|
6
|
+
export declare class DocGeneratorEngine {
|
|
7
|
+
private config;
|
|
8
|
+
private mermaidGenerator;
|
|
9
|
+
private markdownGenerator;
|
|
10
|
+
private noCache;
|
|
11
|
+
constructor(config: DocGeneratorConfig, options?: {
|
|
12
|
+
noCache?: boolean;
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Run documentation generation for all configured repositories
|
|
16
|
+
*/
|
|
17
|
+
generate(): Promise<DocumentationReport>;
|
|
18
|
+
/**
|
|
19
|
+
* Analyze a single repository (with caching)
|
|
20
|
+
*/
|
|
21
|
+
private analyzeRepository;
|
|
22
|
+
/**
|
|
23
|
+
* Get repository version and commit info
|
|
24
|
+
*/
|
|
25
|
+
private getRepoInfo;
|
|
26
|
+
/**
|
|
27
|
+
* Create analyzer instance based on type
|
|
28
|
+
*/
|
|
29
|
+
private createAnalyzer;
|
|
30
|
+
/**
|
|
31
|
+
* Merge multiple analysis results
|
|
32
|
+
*/
|
|
33
|
+
private mergeAnalysisResults;
|
|
34
|
+
/**
|
|
35
|
+
* Analyze cross-repository relationships
|
|
36
|
+
*/
|
|
37
|
+
private analyzeCrossRepo;
|
|
38
|
+
/**
|
|
39
|
+
* Extract cross-repository links
|
|
40
|
+
*/
|
|
41
|
+
private extractCrossRepoLinks;
|
|
42
|
+
/**
|
|
43
|
+
* Write documentation to output directory
|
|
44
|
+
*/
|
|
45
|
+
private writeDocumentation;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,kBAAkB,EAGlB,mBAAmB,EAOpB,MAAM,aAAa,CAAC;AASrB;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAOvE;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA2C9C;;OAEG;YACW,iBAAiB;IA0F/B;;OAEG;YACW,WAAW;IAwBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuBtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkDxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;OAEG;YACW,kBAAkB;CAsBjC"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { simpleGit } from 'simple-git';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import fg from 'fast-glob';
|
|
5
|
+
import { PagesAnalyzer } from '../analyzers/pages-analyzer.js';
|
|
6
|
+
import { GraphQLAnalyzer } from '../analyzers/graphql-analyzer.js';
|
|
7
|
+
import { DataFlowAnalyzer } from '../analyzers/dataflow-analyzer.js';
|
|
8
|
+
import { RestApiAnalyzer } from '../analyzers/rest-api-analyzer.js';
|
|
9
|
+
import { MermaidGenerator } from '../generators/mermaid-generator.js';
|
|
10
|
+
import { MarkdownGenerator } from '../generators/markdown-generator.js';
|
|
11
|
+
import { AnalysisCache } from './cache.js';
|
|
12
|
+
/**
|
|
13
|
+
* Main documentation generation engine
|
|
14
|
+
* メインドキュメント生成エンジン
|
|
15
|
+
*/
|
|
16
|
+
export class DocGeneratorEngine {
|
|
17
|
+
config;
|
|
18
|
+
mermaidGenerator;
|
|
19
|
+
markdownGenerator;
|
|
20
|
+
noCache;
|
|
21
|
+
constructor(config, options) {
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.mermaidGenerator = new MermaidGenerator();
|
|
24
|
+
this.markdownGenerator = new MarkdownGenerator();
|
|
25
|
+
this.noCache = options?.noCache ?? false;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Run documentation generation for all configured repositories
|
|
29
|
+
*/
|
|
30
|
+
async generate() {
|
|
31
|
+
console.log('🚀 Starting documentation generation...\n');
|
|
32
|
+
const repositoryReports = [];
|
|
33
|
+
for (const repoConfig of this.config.repositories) {
|
|
34
|
+
try {
|
|
35
|
+
console.log(`\n📦 Analyzing ${repoConfig.displayName}...`);
|
|
36
|
+
const report = await this.analyzeRepository(repoConfig);
|
|
37
|
+
repositoryReports.push(report);
|
|
38
|
+
console.log(`✅ Completed ${repoConfig.displayName}`);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(`❌ Failed to analyze ${repoConfig.name}:`, error.message);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Cross-repository analysis
|
|
45
|
+
console.log('\n🔗 Running cross-repository analysis...');
|
|
46
|
+
const crossRepoAnalysis = this.analyzeCrossRepo(repositoryReports);
|
|
47
|
+
// Generate diagrams
|
|
48
|
+
console.log('\n📊 Generating diagrams...');
|
|
49
|
+
const results = repositoryReports.map((r) => r.analysis);
|
|
50
|
+
const crossRepoLinks = this.extractCrossRepoLinks(results);
|
|
51
|
+
const diagrams = this.mermaidGenerator.generateAll(results, crossRepoLinks);
|
|
52
|
+
const report = {
|
|
53
|
+
generatedAt: new Date().toISOString(),
|
|
54
|
+
repositories: repositoryReports,
|
|
55
|
+
crossRepoAnalysis,
|
|
56
|
+
diagrams,
|
|
57
|
+
};
|
|
58
|
+
// Write documentation
|
|
59
|
+
console.log('\n📝 Writing documentation...');
|
|
60
|
+
await this.writeDocumentation(report);
|
|
61
|
+
console.log('\n✨ Documentation generation complete!');
|
|
62
|
+
console.log(`📁 Output: ${this.config.outputDir}`);
|
|
63
|
+
return report;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Analyze a single repository (with caching)
|
|
67
|
+
*/
|
|
68
|
+
async analyzeRepository(repoConfig) {
|
|
69
|
+
// Initialize cache
|
|
70
|
+
const cache = new AnalysisCache(repoConfig.path);
|
|
71
|
+
await cache.init();
|
|
72
|
+
// Get repository info
|
|
73
|
+
const { version, commitHash } = await this.getRepoInfo(repoConfig);
|
|
74
|
+
// Compute content hash for cache key
|
|
75
|
+
const sourceFiles = await fg(['**/*.{ts,tsx,graphql}'], {
|
|
76
|
+
cwd: repoConfig.path,
|
|
77
|
+
ignore: ['**/node_modules/**', '**/.next/**', '**/dist/**', '**/build/**'],
|
|
78
|
+
absolute: true,
|
|
79
|
+
});
|
|
80
|
+
const contentHash = await cache.computeFilesHash(sourceFiles);
|
|
81
|
+
// Include repomap version in cache key to invalidate when analyzer logic changes
|
|
82
|
+
const cacheKey = `analysis_v${version}_${repoConfig.name}_${commitHash}`;
|
|
83
|
+
// Check cache (skip if noCache is enabled)
|
|
84
|
+
if (this.noCache) {
|
|
85
|
+
console.log(` 🔄 Cache disabled, analyzing from scratch...`);
|
|
86
|
+
}
|
|
87
|
+
const cachedResult = this.noCache ? null : cache.get(cacheKey, contentHash);
|
|
88
|
+
if (cachedResult) {
|
|
89
|
+
console.log(` ⚡ Using cached analysis (hash: ${contentHash.slice(0, 8)}...)`);
|
|
90
|
+
const summary = {
|
|
91
|
+
totalPages: cachedResult.pages.length,
|
|
92
|
+
totalComponents: cachedResult.components.length,
|
|
93
|
+
totalGraphQLOperations: cachedResult.graphqlOperations.length,
|
|
94
|
+
totalDataFlows: cachedResult.dataFlows.length,
|
|
95
|
+
authRequiredPages: cachedResult.pages.filter((p) => p.authentication.required).length,
|
|
96
|
+
publicPages: cachedResult.pages.filter((p) => !p.authentication.required).length,
|
|
97
|
+
};
|
|
98
|
+
return {
|
|
99
|
+
name: repoConfig.name,
|
|
100
|
+
displayName: repoConfig.displayName,
|
|
101
|
+
version,
|
|
102
|
+
commitHash,
|
|
103
|
+
analysis: cachedResult,
|
|
104
|
+
summary,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// Run analyzers in PARALLEL for faster analysis
|
|
108
|
+
const analyzers = repoConfig.analyzers
|
|
109
|
+
.map((analyzerType) => this.createAnalyzer(analyzerType, repoConfig))
|
|
110
|
+
.filter((a) => a !== null);
|
|
111
|
+
console.log(` Running ${analyzers.length} analyzers in parallel...`);
|
|
112
|
+
const startTime = Date.now();
|
|
113
|
+
const analysisResults = await Promise.all(analyzers.map((analyzer) => analyzer.analyze()));
|
|
114
|
+
console.log(` Analysis completed in ${((Date.now() - startTime) / 1000).toFixed(1)}s`);
|
|
115
|
+
// Merge results
|
|
116
|
+
const analysis = this.mergeAnalysisResults(analysisResults, repoConfig.name, version, commitHash);
|
|
117
|
+
// Save to cache
|
|
118
|
+
cache.set(cacheKey, contentHash, analysis);
|
|
119
|
+
await cache.save();
|
|
120
|
+
console.log(` 💾 Analysis cached (hash: ${contentHash.slice(0, 8)}...)`);
|
|
121
|
+
// Calculate summary
|
|
122
|
+
const summary = {
|
|
123
|
+
totalPages: analysis.pages.length,
|
|
124
|
+
totalComponents: analysis.components.length,
|
|
125
|
+
totalGraphQLOperations: analysis.graphqlOperations.length,
|
|
126
|
+
totalDataFlows: analysis.dataFlows.length,
|
|
127
|
+
authRequiredPages: analysis.pages.filter((p) => p.authentication.required).length,
|
|
128
|
+
publicPages: analysis.pages.filter((p) => !p.authentication.required).length,
|
|
129
|
+
};
|
|
130
|
+
return {
|
|
131
|
+
name: repoConfig.name,
|
|
132
|
+
displayName: repoConfig.displayName,
|
|
133
|
+
version,
|
|
134
|
+
commitHash,
|
|
135
|
+
analysis,
|
|
136
|
+
summary,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get repository version and commit info
|
|
141
|
+
*/
|
|
142
|
+
async getRepoInfo(repoConfig) {
|
|
143
|
+
try {
|
|
144
|
+
const git = simpleGit(repoConfig.path);
|
|
145
|
+
const log = await git.log({ n: 1 });
|
|
146
|
+
const commitHash = log.latest?.hash || 'unknown';
|
|
147
|
+
// Try to get version from package.json
|
|
148
|
+
let version = 'unknown';
|
|
149
|
+
try {
|
|
150
|
+
const packageJsonPath = path.join(repoConfig.path, 'package.json');
|
|
151
|
+
const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));
|
|
152
|
+
version = packageJson.version || 'unknown';
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// Ignore if no package.json
|
|
156
|
+
}
|
|
157
|
+
return { version, commitHash };
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return { version: 'unknown', commitHash: 'unknown' };
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Create analyzer instance based on type
|
|
165
|
+
*/
|
|
166
|
+
createAnalyzer(type, config) {
|
|
167
|
+
switch (type) {
|
|
168
|
+
case 'pages':
|
|
169
|
+
// Support Next.js, React, and Rails+React projects
|
|
170
|
+
if (config.type === 'nextjs' || config.type === 'rails' || config.type === 'generic') {
|
|
171
|
+
return new PagesAnalyzer(config);
|
|
172
|
+
}
|
|
173
|
+
break;
|
|
174
|
+
case 'graphql':
|
|
175
|
+
return new GraphQLAnalyzer(config);
|
|
176
|
+
case 'dataflow':
|
|
177
|
+
case 'components':
|
|
178
|
+
return new DataFlowAnalyzer(config);
|
|
179
|
+
case 'rest-api':
|
|
180
|
+
case 'api':
|
|
181
|
+
return new RestApiAnalyzer(config);
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Merge multiple analysis results
|
|
187
|
+
*/
|
|
188
|
+
mergeAnalysisResults(results, repository, version, commitHash) {
|
|
189
|
+
const merged = {
|
|
190
|
+
repository,
|
|
191
|
+
timestamp: new Date().toISOString(),
|
|
192
|
+
version,
|
|
193
|
+
commitHash,
|
|
194
|
+
pages: [],
|
|
195
|
+
graphqlOperations: [],
|
|
196
|
+
apiCalls: [],
|
|
197
|
+
components: [],
|
|
198
|
+
dataFlows: [],
|
|
199
|
+
apiEndpoints: [],
|
|
200
|
+
models: [],
|
|
201
|
+
crossRepoLinks: [],
|
|
202
|
+
};
|
|
203
|
+
for (const result of results) {
|
|
204
|
+
if (result.pages)
|
|
205
|
+
merged.pages.push(...result.pages);
|
|
206
|
+
if (result.graphqlOperations)
|
|
207
|
+
merged.graphqlOperations.push(...result.graphqlOperations);
|
|
208
|
+
if (result.apiCalls)
|
|
209
|
+
merged.apiCalls.push(...result.apiCalls);
|
|
210
|
+
if (result.components)
|
|
211
|
+
merged.components.push(...result.components);
|
|
212
|
+
if (result.dataFlows)
|
|
213
|
+
merged.dataFlows.push(...result.dataFlows);
|
|
214
|
+
if (result.apiEndpoints)
|
|
215
|
+
merged.apiEndpoints.push(...result.apiEndpoints);
|
|
216
|
+
if (result.models)
|
|
217
|
+
merged.models.push(...result.models);
|
|
218
|
+
if (result.crossRepoLinks)
|
|
219
|
+
merged.crossRepoLinks.push(...result.crossRepoLinks);
|
|
220
|
+
}
|
|
221
|
+
return merged;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Analyze cross-repository relationships
|
|
225
|
+
*/
|
|
226
|
+
analyzeCrossRepo(reports) {
|
|
227
|
+
const sharedTypes = [];
|
|
228
|
+
const apiConnections = [];
|
|
229
|
+
const navigationFlows = [];
|
|
230
|
+
const dataFlowAcrossRepos = [];
|
|
231
|
+
// Find shared GraphQL operations
|
|
232
|
+
const operationsByName = new Map();
|
|
233
|
+
for (const report of reports) {
|
|
234
|
+
for (const op of report.analysis.graphqlOperations) {
|
|
235
|
+
const repos = operationsByName.get(op.name) || [];
|
|
236
|
+
repos.push(report.name);
|
|
237
|
+
operationsByName.set(op.name, repos);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// Operations used across repos are likely shared types
|
|
241
|
+
for (const [name, repos] of operationsByName) {
|
|
242
|
+
if (repos.length > 1) {
|
|
243
|
+
sharedTypes.push(name);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Find frontend to backend connections
|
|
247
|
+
const frontendRepos = reports.filter((r) => r.analysis.pages.length > 0);
|
|
248
|
+
const backendRepos = reports.filter((r) => r.analysis.apiEndpoints.length > 0);
|
|
249
|
+
for (const frontend of frontendRepos) {
|
|
250
|
+
for (const backend of backendRepos) {
|
|
251
|
+
for (const endpoint of backend.analysis.apiEndpoints) {
|
|
252
|
+
apiConnections.push({
|
|
253
|
+
frontend: frontend.name,
|
|
254
|
+
backend: backend.name,
|
|
255
|
+
endpoint: endpoint.path,
|
|
256
|
+
operations: frontend.analysis.graphqlOperations
|
|
257
|
+
.filter((op) => op.usedIn.length > 0)
|
|
258
|
+
.map((op) => op.name),
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return {
|
|
264
|
+
sharedTypes,
|
|
265
|
+
apiConnections,
|
|
266
|
+
navigationFlows,
|
|
267
|
+
dataFlowAcrossRepos,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Extract cross-repository links
|
|
272
|
+
*/
|
|
273
|
+
extractCrossRepoLinks(results) {
|
|
274
|
+
const links = [];
|
|
275
|
+
// Find GraphQL operations that connect repos
|
|
276
|
+
const operationsByName = new Map();
|
|
277
|
+
for (const result of results) {
|
|
278
|
+
for (const op of result.graphqlOperations) {
|
|
279
|
+
const existing = operationsByName.get(op.name) || [];
|
|
280
|
+
existing.push(result);
|
|
281
|
+
operationsByName.set(op.name, existing);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
for (const [name, repos] of operationsByName) {
|
|
285
|
+
if (repos.length > 1) {
|
|
286
|
+
links.push({
|
|
287
|
+
sourceRepo: repos[0].repository,
|
|
288
|
+
sourcePath: `graphql/${name}`,
|
|
289
|
+
targetRepo: repos[1].repository,
|
|
290
|
+
targetPath: `graphql/${name}`,
|
|
291
|
+
linkType: 'graphql-operation',
|
|
292
|
+
description: `Shared GraphQL operation: ${name}`,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return links;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Write documentation to output directory
|
|
300
|
+
*/
|
|
301
|
+
async writeDocumentation(report) {
|
|
302
|
+
const outputDir = this.config.outputDir;
|
|
303
|
+
// Create output directory
|
|
304
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
305
|
+
// Generate markdown files
|
|
306
|
+
const docs = this.markdownGenerator.generateDocumentation(report);
|
|
307
|
+
for (const [filePath, content] of docs) {
|
|
308
|
+
const fullPath = path.join(outputDir, filePath);
|
|
309
|
+
const dir = path.dirname(fullPath);
|
|
310
|
+
await fs.mkdir(dir, { recursive: true });
|
|
311
|
+
await fs.writeFile(fullPath, content, 'utf-8');
|
|
312
|
+
console.log(` 📄 ${filePath}`);
|
|
313
|
+
}
|
|
314
|
+
// Write JSON report
|
|
315
|
+
const jsonPath = path.join(outputDir, 'report.json');
|
|
316
|
+
await fs.writeFile(jsonPath, JSON.stringify(report, null, 2), 'utf-8');
|
|
317
|
+
console.log(` 📋 report.json`);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|