@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,305 @@
1
+ /* Page Map Styles */
2
+ /* Import common styles */
3
+ @import url('/common.css');
4
+
5
+ /* Override body for dark theme */
6
+ body { background: var(--bg); color: var(--text); }
7
+
8
+ /* Content */
9
+ .content { flex: 1; overflow: hidden; position: relative; }
10
+
11
+ /* Legend */
12
+ .legend { font-size: 12px; color: var(--text2); }
13
+ .legend-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; }
14
+ .legend-color { width: 12px; height: 12px; border-radius: 2px; }
15
+
16
+ /* Stats */
17
+ .stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 16px; }
18
+ .stat {
19
+ background: var(--bg3);
20
+ padding: 10px;
21
+ border-radius: 6px;
22
+ text-align: center;
23
+ cursor: pointer;
24
+ transition: all 0.2s;
25
+ border: 2px solid transparent;
26
+ }
27
+ .stat:hover { background: #475569; }
28
+ .stat.active { border-color: var(--accent); background: #1e3a5f; }
29
+ .stat-val { font-size: 20px; font-weight: 600; }
30
+ .stat-label { font-size: 10px; color: var(--text2); }
31
+
32
+ /* Environment filter badges */
33
+ .env-badge {
34
+ padding: 4px 10px;
35
+ background: var(--bg3);
36
+ border: 1px solid var(--border);
37
+ border-radius: 12px;
38
+ color: var(--text2);
39
+ cursor: pointer;
40
+ font-size: 11px;
41
+ transition: all 0.15s;
42
+ }
43
+ .env-badge:hover { background: #475569; }
44
+ .env-badge-active, .env-badge.active { background: var(--accent); color: white; border-color: var(--accent); }
45
+
46
+ /* Tree View */
47
+ .tree-view { padding: 20px; overflow: auto; height: 100%; display: none; }
48
+ .tree-view.active { display: block; }
49
+
50
+ /* Groups */
51
+ .group { background: var(--bg2); border-radius: 8px; margin-bottom: 12px; overflow: hidden; }
52
+ .group-header {
53
+ padding: 10px 14px;
54
+ display: flex;
55
+ align-items: center;
56
+ gap: 10px;
57
+ cursor: pointer;
58
+ border-left: 3px solid var(--group-color, var(--accent));
59
+ }
60
+ .group-header:hover { background: var(--bg3); }
61
+ .group-name { font-family: monospace; font-weight: 600; flex: 1; }
62
+ .group-count { font-size: 11px; color: var(--text2); background: var(--bg3); padding: 2px 8px; border-radius: 10px; }
63
+ .group.collapsed .group-content, .group.collapsed .group-items { display: none; }
64
+ .group.collapsed .group-arrow, .group.collapsed .group-toggle { transform: rotate(-90deg); }
65
+ .group-arrow, .group-toggle { font-size: 10px; color: var(--text2); transition: transform 0.2s; display: inline-block; }
66
+
67
+ /* Page Items */
68
+ .page-item {
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: space-between;
72
+ padding: 8px 14px;
73
+ padding-left: calc(14px + var(--depth, 0) * 16px);
74
+ border-top: 1px solid var(--border);
75
+ cursor: pointer;
76
+ gap: 8px;
77
+ }
78
+ .page-item:hover { background: var(--bg3); }
79
+ .page-item.selected { background: var(--bg3); border-left: 2px solid var(--accent); }
80
+
81
+ .page-type {
82
+ font-size: 9px;
83
+ padding: 2px 6px;
84
+ border-radius: 3px;
85
+ font-weight: 600;
86
+ background: var(--type-color, #64748b);
87
+ color: white;
88
+ min-width: 52px;
89
+ text-align: center;
90
+ flex-shrink: 0;
91
+ }
92
+ .page-info { display: flex; flex-direction: column; flex: 1; min-width: 0; }
93
+ .page-path { font-family: monospace; font-size: 12px; color: var(--accent); flex: 1; }
94
+ .page-tags { display: flex; gap: 4px; }
95
+ .tag-repo { background: #1e293b; color: #94a3b8; font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; }
96
+
97
+ /* Graph View */
98
+ .graph-view { width: 100%; height: 100%; display: none; background: var(--bg2); }
99
+ .graph-view.active { display: block; }
100
+
101
+ .graph-container {
102
+ width: 100%;
103
+ height: 100%;
104
+ overflow: hidden;
105
+ position: relative;
106
+ }
107
+
108
+ .graph-controls {
109
+ position: absolute;
110
+ top: 10px;
111
+ right: 10px;
112
+ display: flex;
113
+ gap: 4px;
114
+ z-index: 10;
115
+ }
116
+ .graph-btn {
117
+ padding: 6px 10px;
118
+ background: var(--bg3);
119
+ border: 1px solid var(--border);
120
+ border-radius: 4px;
121
+ color: var(--text);
122
+ cursor: pointer;
123
+ font-size: 12px;
124
+ }
125
+ .graph-btn:hover { background: var(--accent); }
126
+
127
+ .graph-info {
128
+ position: absolute;
129
+ bottom: 10px;
130
+ left: 10px;
131
+ background: var(--bg3);
132
+ padding: 8px 12px;
133
+ border-radius: 6px;
134
+ font-size: 11px;
135
+ color: var(--text2);
136
+ }
137
+
138
+ #graph-canvas {
139
+ width: 100%;
140
+ height: 100%;
141
+ cursor: grab;
142
+ }
143
+ #graph-canvas:active { cursor: grabbing; }
144
+
145
+ /* Detail Panel */
146
+ .detail {
147
+ position: fixed;
148
+ right: -400px;
149
+ top: 54px;
150
+ width: 400px;
151
+ height: calc(100vh - 54px);
152
+ background: var(--bg2);
153
+ border-left: 1px solid var(--border);
154
+ transition: right 0.2s;
155
+ overflow-y: auto;
156
+ z-index: 200;
157
+ }
158
+ .detail.open { right: 0; }
159
+ .detail-header {
160
+ padding: 14px;
161
+ background: var(--bg3);
162
+ display: flex;
163
+ justify-content: space-between;
164
+ align-items: center;
165
+ position: sticky;
166
+ top: 0;
167
+ }
168
+ .detail-title { font-family: monospace; font-size: 13px; word-break: break-all; }
169
+ .detail-close { background: none; border: none; color: var(--text2); font-size: 18px; cursor: pointer; }
170
+ .detail-body { padding: 14px; }
171
+ .detail-section { margin-bottom: 16px; }
172
+ .detail-section h4 { font-size: 10px; text-transform: uppercase; color: var(--text2); margin-bottom: 8px; }
173
+ .detail-item {
174
+ background: var(--bg3);
175
+ padding: 8px 10px;
176
+ border-radius: 4px;
177
+ margin-bottom: 4px;
178
+ font-size: 12px;
179
+ display: flex;
180
+ align-items: center;
181
+ gap: 6px;
182
+ overflow: hidden;
183
+ word-break: break-all;
184
+ }
185
+ .detail-item > .tag { flex-shrink: 0; }
186
+ .detail-item > span:not(.tag), .detail-item > code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
187
+ .detail-label { font-size: 9px; color: var(--text2); margin-bottom: 2px; }
188
+ .detail-items { max-height: 300px; overflow-y: auto; }
189
+ .code-path { background: var(--bg3); padding: 10px; border-radius: 6px; font-family: monospace; font-size: 12px; word-break: break-all; }
190
+ .usage-name { font-family: monospace; font-weight: 500; word-break: break-all; min-width: 0; }
191
+ .line-num { margin-left: auto; font-size: 10px; color: var(--text2); flex-shrink: 0; }
192
+
193
+ /* API Items */
194
+ .api-item { cursor: pointer; flex-direction: column; align-items: stretch; gap: 2px; }
195
+ .api-item:hover { background: var(--bg2); }
196
+ .api-row { display: flex; align-items: center; gap: 8px; }
197
+ .api-url { font-family: monospace; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
198
+ .api-route { font-size: 9px; color: var(--text2); font-family: monospace; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
199
+
200
+ /* Relation Items */
201
+ .rel-item {
202
+ background: var(--bg3);
203
+ padding: 8px 10px;
204
+ border-radius: 4px;
205
+ margin-bottom: 4px;
206
+ cursor: pointer;
207
+ }
208
+ .rel-item:hover { background: #475569; }
209
+ .rel-header { display: flex; align-items: center; gap: 6px; margin-bottom: 2px; }
210
+ .rel-type { font-size: 8px; padding: 2px 5px; border-radius: 2px; font-weight: 600; }
211
+ .rel-type-parent { background: #3b82f6; color: white; }
212
+ .rel-type-child { background: #22c55e; color: white; }
213
+ .rel-type-layout { background: #8b5cf6; color: white; }
214
+ .rel-path { font-family: monospace; font-size: 11px; color: var(--accent); }
215
+ .rel-desc { font-size: 10px; color: var(--text2); }
216
+
217
+ .data-op { cursor: pointer; }
218
+ .data-op:hover { background: #475569 !important; }
219
+
220
+ /* Page Map Modal */
221
+ .modal-back { background: var(--accent); color: white; border: none; padding: 4px 10px; border-radius: 4px; cursor: pointer; font-size: 14px; }
222
+ .modal-back:hover { opacity: 0.9; }
223
+ .field-tree { font-family: monospace; font-size: 11px; background: var(--bg3); padding: 10px; border-radius: 4px; white-space: pre; overflow-x: auto; }
224
+
225
+ /* Load More Button */
226
+ .load-more-btn {
227
+ display: block;
228
+ width: 100%;
229
+ padding: 8px;
230
+ margin-top: 8px;
231
+ background: var(--bg3);
232
+ border: 1px solid var(--border);
233
+ border-radius: 4px;
234
+ color: var(--text2);
235
+ cursor: pointer;
236
+ font-size: 11px;
237
+ text-align: center;
238
+ }
239
+ .load-more-btn:hover { background: var(--bg2); color: var(--text); }
240
+
241
+ /* Route Indicator Tags */
242
+ .route-tag {
243
+ margin-left: 4px;
244
+ font-size: 9px;
245
+ color: white;
246
+ padding: 1px 4px;
247
+ border-radius: 2px;
248
+ flex-shrink: 0;
249
+ }
250
+ .route-tag-json { background: #3b82f6; }
251
+ .route-tag-html { background: #22c55e; }
252
+ .route-tag-redirect { background: #f59e0b; }
253
+ .route-tag-view { background: #10b981; }
254
+ .route-tag-svc { background: #8b5cf6; }
255
+ .route-tag-grpc { background: #06b6d4; }
256
+ .route-tag-db { background: #f59e0b; }
257
+ .route-tag-template { background: #6b7280; }
258
+ .route-tag-react { background: #61dafb; color: #222; font-weight: 600; }
259
+ .route-tag-warn { background: #ef4444; }
260
+ .route-tag-partials { background: #6366f1; }
261
+ .route-tag-vars { background: #ec4899; }
262
+
263
+ /* Route Stats Section */
264
+ .route-stats-box {
265
+ padding: 12px;
266
+ background: var(--bg3);
267
+ border-radius: 8px;
268
+ margin-bottom: 12px;
269
+ }
270
+ .route-stats-row {
271
+ display: flex;
272
+ gap: 16px;
273
+ justify-content: center;
274
+ flex-wrap: wrap;
275
+ }
276
+ .route-stat {
277
+ text-align: center;
278
+ cursor: pointer;
279
+ padding: 8px;
280
+ border-radius: 6px;
281
+ transition: background 0.2s;
282
+ }
283
+ .route-stat:hover { background: var(--bg2); }
284
+ .route-stat-val { font-size: 20px; font-weight: 600; }
285
+ .route-stat-val.green { color: #22c55e; }
286
+ .route-stat-val.blue { color: #3b82f6; }
287
+ .route-stat-val.purple { color: #8b5cf6; }
288
+ .route-stat-val.cyan { color: #06b6d4; }
289
+ .route-stat-label { font-size: 11px; color: var(--text2); }
290
+
291
+ /* Coverage Info */
292
+ .coverage-info {
293
+ margin-top: 10px;
294
+ padding-top: 10px;
295
+ border-top: 1px solid var(--bg);
296
+ text-align: center;
297
+ }
298
+ .coverage-text {
299
+ font-size: 11px;
300
+ color: var(--text2);
301
+ cursor: help;
302
+ }
303
+ .coverage-high { color: #22c55e; font-weight: 600; }
304
+ .coverage-mid { color: #f59e0b; font-weight: 600; }
305
+ .coverage-low { color: #ef4444; font-weight: 600; }