@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.
Files changed (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +527 -0
  3. package/dist/analyzers/base-analyzer.d.ts +46 -0
  4. package/dist/analyzers/base-analyzer.d.ts.map +1 -0
  5. package/dist/analyzers/base-analyzer.js +48 -0
  6. package/dist/analyzers/base-analyzer.js.map +1 -0
  7. package/dist/analyzers/dataflow-analyzer.d.ts +30 -0
  8. package/dist/analyzers/dataflow-analyzer.d.ts.map +1 -0
  9. package/dist/analyzers/dataflow-analyzer.js +426 -0
  10. package/dist/analyzers/dataflow-analyzer.js.map +1 -0
  11. package/dist/analyzers/graphql-analyzer.d.ts +23 -0
  12. package/dist/analyzers/graphql-analyzer.d.ts.map +1 -0
  13. package/dist/analyzers/graphql-analyzer.js +387 -0
  14. package/dist/analyzers/graphql-analyzer.js.map +1 -0
  15. package/dist/analyzers/index.d.ts +6 -0
  16. package/dist/analyzers/index.d.ts.map +1 -0
  17. package/dist/analyzers/index.js +6 -0
  18. package/dist/analyzers/index.js.map +1 -0
  19. package/dist/analyzers/pages-analyzer.d.ts +85 -0
  20. package/dist/analyzers/pages-analyzer.d.ts.map +1 -0
  21. package/dist/analyzers/pages-analyzer.js +1696 -0
  22. package/dist/analyzers/pages-analyzer.js.map +1 -0
  23. package/dist/analyzers/rails/index.d.ts +47 -0
  24. package/dist/analyzers/rails/index.d.ts.map +1 -0
  25. package/dist/analyzers/rails/index.js +146 -0
  26. package/dist/analyzers/rails/index.js.map +1 -0
  27. package/dist/analyzers/rails/rails-controller-analyzer.d.ts +83 -0
  28. package/dist/analyzers/rails/rails-controller-analyzer.d.ts.map +1 -0
  29. package/dist/analyzers/rails/rails-controller-analyzer.js +479 -0
  30. package/dist/analyzers/rails/rails-controller-analyzer.js.map +1 -0
  31. package/dist/analyzers/rails/rails-grpc-analyzer.d.ts +45 -0
  32. package/dist/analyzers/rails/rails-grpc-analyzer.d.ts.map +1 -0
  33. package/dist/analyzers/rails/rails-grpc-analyzer.js +263 -0
  34. package/dist/analyzers/rails/rails-grpc-analyzer.js.map +1 -0
  35. package/dist/analyzers/rails/rails-model-analyzer.d.ts +89 -0
  36. package/dist/analyzers/rails/rails-model-analyzer.d.ts.map +1 -0
  37. package/dist/analyzers/rails/rails-model-analyzer.js +494 -0
  38. package/dist/analyzers/rails/rails-model-analyzer.js.map +1 -0
  39. package/dist/analyzers/rails/rails-react-analyzer.d.ts +42 -0
  40. package/dist/analyzers/rails/rails-react-analyzer.d.ts.map +1 -0
  41. package/dist/analyzers/rails/rails-react-analyzer.js +530 -0
  42. package/dist/analyzers/rails/rails-react-analyzer.js.map +1 -0
  43. package/dist/analyzers/rails/rails-routes-analyzer.d.ts +63 -0
  44. package/dist/analyzers/rails/rails-routes-analyzer.d.ts.map +1 -0
  45. package/dist/analyzers/rails/rails-routes-analyzer.js +541 -0
  46. package/dist/analyzers/rails/rails-routes-analyzer.js.map +1 -0
  47. package/dist/analyzers/rails/rails-view-analyzer.d.ts +50 -0
  48. package/dist/analyzers/rails/rails-view-analyzer.d.ts.map +1 -0
  49. package/dist/analyzers/rails/rails-view-analyzer.js +387 -0
  50. package/dist/analyzers/rails/rails-view-analyzer.js.map +1 -0
  51. package/dist/analyzers/rails/ruby-parser.d.ts +64 -0
  52. package/dist/analyzers/rails/ruby-parser.d.ts.map +1 -0
  53. package/dist/analyzers/rails/ruby-parser.js +213 -0
  54. package/dist/analyzers/rails/ruby-parser.js.map +1 -0
  55. package/dist/analyzers/rest-api-analyzer.d.ts +66 -0
  56. package/dist/analyzers/rest-api-analyzer.d.ts.map +1 -0
  57. package/dist/analyzers/rest-api-analyzer.js +480 -0
  58. package/dist/analyzers/rest-api-analyzer.js.map +1 -0
  59. package/dist/cli.d.ts +3 -0
  60. package/dist/cli.d.ts.map +1 -0
  61. package/dist/cli.js +550 -0
  62. package/dist/cli.js.map +1 -0
  63. package/dist/core/cache.d.ts +48 -0
  64. package/dist/core/cache.d.ts.map +1 -0
  65. package/dist/core/cache.js +152 -0
  66. package/dist/core/cache.js.map +1 -0
  67. package/dist/core/engine.d.ts +47 -0
  68. package/dist/core/engine.d.ts.map +1 -0
  69. package/dist/core/engine.js +320 -0
  70. package/dist/core/engine.js.map +1 -0
  71. package/dist/core/index.d.ts +3 -0
  72. package/dist/core/index.d.ts.map +1 -0
  73. package/dist/core/index.js +3 -0
  74. package/dist/core/index.js.map +1 -0
  75. package/dist/generators/assets/common.css +187 -0
  76. package/dist/generators/assets/docs.css +363 -0
  77. package/dist/generators/assets/page-map.css +305 -0
  78. package/dist/generators/assets/rails-map.css +473 -0
  79. package/dist/generators/index.d.ts +4 -0
  80. package/dist/generators/index.d.ts.map +1 -0
  81. package/dist/generators/index.js +4 -0
  82. package/dist/generators/index.js.map +1 -0
  83. package/dist/generators/markdown-generator.d.ts +26 -0
  84. package/dist/generators/markdown-generator.d.ts.map +1 -0
  85. package/dist/generators/markdown-generator.js +783 -0
  86. package/dist/generators/markdown-generator.js.map +1 -0
  87. package/dist/generators/mermaid-generator.d.ts +36 -0
  88. package/dist/generators/mermaid-generator.d.ts.map +1 -0
  89. package/dist/generators/mermaid-generator.js +365 -0
  90. package/dist/generators/mermaid-generator.js.map +1 -0
  91. package/dist/generators/page-map-generator.d.ts +23 -0
  92. package/dist/generators/page-map-generator.d.ts.map +1 -0
  93. package/dist/generators/page-map-generator.js +3563 -0
  94. package/dist/generators/page-map-generator.js.map +1 -0
  95. package/dist/generators/rails-map-generator.d.ts +22 -0
  96. package/dist/generators/rails-map-generator.d.ts.map +1 -0
  97. package/dist/generators/rails-map-generator.js +909 -0
  98. package/dist/generators/rails-map-generator.js.map +1 -0
  99. package/dist/index.d.ts +11 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +12 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/server/doc-server.d.ts +31 -0
  104. package/dist/server/doc-server.d.ts.map +1 -0
  105. package/dist/server/doc-server.js +1233 -0
  106. package/dist/server/doc-server.js.map +1 -0
  107. package/dist/server/index.d.ts +2 -0
  108. package/dist/server/index.d.ts.map +1 -0
  109. package/dist/server/index.js +2 -0
  110. package/dist/server/index.js.map +1 -0
  111. package/dist/types.d.ts +294 -0
  112. package/dist/types.d.ts.map +1 -0
  113. package/dist/types.js +6 -0
  114. package/dist/types.js.map +1 -0
  115. package/dist/utils/env-detector.d.ts +32 -0
  116. package/dist/utils/env-detector.d.ts.map +1 -0
  117. package/dist/utils/env-detector.js +189 -0
  118. package/dist/utils/env-detector.js.map +1 -0
  119. package/dist/utils/parallel.d.ts +24 -0
  120. package/dist/utils/parallel.d.ts.map +1 -0
  121. package/dist/utils/parallel.js +71 -0
  122. package/dist/utils/parallel.js.map +1 -0
  123. 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":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAajC,mEAAmE;AACnE,2CAA2C;AAC3C,MAAM,aAAa,GAAG,KAAK,CAAC;AAE5B;;;GAGG;AACH,MAAM,OAAO,aAAa;IAChB,QAAQ,CAAS;IACjB,QAAQ,CAAgB;IACxB,YAAY,CAAS;IACrB,KAAK,GAAG,KAAK,CAAC;IAEtB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,yBAAyB;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,gDAAiD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;YAEjD,8BAA8B;YAC9B,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;gBACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;gBAC3D,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,SAAmB;QACxC,qCAAqC;QACrC,MAAM,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1C,uDAAuD;QACvD,qDAAqD;QACrD,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAI,WAAqB,CAAC;QAE1B,IAAI,WAAW,CAAC,MAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACzC,WAAW,GAAG,WAAW,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElF,iEAAiE;QACjE,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5F,OAAO,MAAM;aACV,UAAU,CAAC,KAAK,CAAC;aACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;aACnC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,GAAW,EAAE,WAAmB;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC,IAAS,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,IAAa;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG;YAC3B,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,IAAI;SACL,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QAClD,OAAO;YACL,OAAO;YACP,IAAI,EACF,IAAI,GAAG,IAAI,GAAG,IAAI;gBAChB,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBACxC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SACtC,CAAC;IACJ,CAAC;CACF"}
@@ -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,3 @@
1
+ export * from './engine.js';
2
+ export * from './cache.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export * from './engine.js';
2
+ export * from './cache.js';
3
+ //# sourceMappingURL=index.js.map
@@ -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"}