@mycodemap/mycodemap 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 (329) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +559 -0
  4. package/dist/ai/claude.d.ts +38 -0
  5. package/dist/ai/claude.d.ts.map +1 -0
  6. package/dist/ai/claude.js +169 -0
  7. package/dist/ai/claude.js.map +1 -0
  8. package/dist/ai/codex.d.ts +38 -0
  9. package/dist/ai/codex.d.ts.map +1 -0
  10. package/dist/ai/codex.js +169 -0
  11. package/dist/ai/codex.js.map +1 -0
  12. package/dist/ai/factory.d.ts +48 -0
  13. package/dist/ai/factory.d.ts.map +1 -0
  14. package/dist/ai/factory.js +95 -0
  15. package/dist/ai/factory.js.map +1 -0
  16. package/dist/ai/index.d.ts +12 -0
  17. package/dist/ai/index.d.ts.map +1 -0
  18. package/dist/ai/index.js +29 -0
  19. package/dist/ai/index.js.map +1 -0
  20. package/dist/ai/provider.d.ts +70 -0
  21. package/dist/ai/provider.d.ts.map +1 -0
  22. package/dist/ai/provider.js +31 -0
  23. package/dist/ai/provider.js.map +1 -0
  24. package/dist/ai/subagent-caller.d.ts +90 -0
  25. package/dist/ai/subagent-caller.d.ts.map +1 -0
  26. package/dist/ai/subagent-caller.js +280 -0
  27. package/dist/ai/subagent-caller.js.map +1 -0
  28. package/dist/ai/types.d.ts +70 -0
  29. package/dist/ai/types.d.ts.map +1 -0
  30. package/dist/ai/types.js +5 -0
  31. package/dist/ai/types.js.map +1 -0
  32. package/dist/cache/file-hash-cache.d.ts +76 -0
  33. package/dist/cache/file-hash-cache.d.ts.map +1 -0
  34. package/dist/cache/file-hash-cache.js +159 -0
  35. package/dist/cache/file-hash-cache.js.map +1 -0
  36. package/dist/cache/index.d.ts +151 -0
  37. package/dist/cache/index.d.ts.map +1 -0
  38. package/dist/cache/index.js +303 -0
  39. package/dist/cache/index.js.map +1 -0
  40. package/dist/cache/lru-cache.d.ts +93 -0
  41. package/dist/cache/lru-cache.d.ts.map +1 -0
  42. package/dist/cache/lru-cache.js +194 -0
  43. package/dist/cache/lru-cache.js.map +1 -0
  44. package/dist/cache/parse-cache.d.ts +68 -0
  45. package/dist/cache/parse-cache.d.ts.map +1 -0
  46. package/dist/cache/parse-cache.js +173 -0
  47. package/dist/cache/parse-cache.js.map +1 -0
  48. package/dist/cli/commands/analyze.d.ts +96 -0
  49. package/dist/cli/commands/analyze.d.ts.map +1 -0
  50. package/dist/cli/commands/analyze.js +567 -0
  51. package/dist/cli/commands/analyze.js.map +1 -0
  52. package/dist/cli/commands/ci.d.ts +25 -0
  53. package/dist/cli/commands/ci.d.ts.map +1 -0
  54. package/dist/cli/commands/ci.js +481 -0
  55. package/dist/cli/commands/ci.js.map +1 -0
  56. package/dist/cli/commands/complexity.d.ts +70 -0
  57. package/dist/cli/commands/complexity.d.ts.map +1 -0
  58. package/dist/cli/commands/complexity.js +479 -0
  59. package/dist/cli/commands/complexity.js.map +1 -0
  60. package/dist/cli/commands/cycles.d.ts +10 -0
  61. package/dist/cli/commands/cycles.d.ts.map +1 -0
  62. package/dist/cli/commands/cycles.js +202 -0
  63. package/dist/cli/commands/cycles.js.map +1 -0
  64. package/dist/cli/commands/deps.d.ts +61 -0
  65. package/dist/cli/commands/deps.d.ts.map +1 -0
  66. package/dist/cli/commands/deps.js +340 -0
  67. package/dist/cli/commands/deps.js.map +1 -0
  68. package/dist/cli/commands/generate.d.ts +8 -0
  69. package/dist/cli/commands/generate.d.ts.map +1 -0
  70. package/dist/cli/commands/generate.js +61 -0
  71. package/dist/cli/commands/generate.js.map +1 -0
  72. package/dist/cli/commands/impact.d.ts +55 -0
  73. package/dist/cli/commands/impact.d.ts.map +1 -0
  74. package/dist/cli/commands/impact.js +455 -0
  75. package/dist/cli/commands/impact.js.map +1 -0
  76. package/dist/cli/commands/init.d.ts +4 -0
  77. package/dist/cli/commands/init.d.ts.map +1 -0
  78. package/dist/cli/commands/init.js +50 -0
  79. package/dist/cli/commands/init.js.map +1 -0
  80. package/dist/cli/commands/query.d.ts +22 -0
  81. package/dist/cli/commands/query.d.ts.map +1 -0
  82. package/dist/cli/commands/query.js +718 -0
  83. package/dist/cli/commands/query.js.map +1 -0
  84. package/dist/cli/commands/watch-foreground.d.ts +9 -0
  85. package/dist/cli/commands/watch-foreground.d.ts.map +1 -0
  86. package/dist/cli/commands/watch-foreground.js +67 -0
  87. package/dist/cli/commands/watch-foreground.js.map +1 -0
  88. package/dist/cli/commands/watch.d.ts +12 -0
  89. package/dist/cli/commands/watch.d.ts.map +1 -0
  90. package/dist/cli/commands/watch.js +114 -0
  91. package/dist/cli/commands/watch.js.map +1 -0
  92. package/dist/cli/commands/workflow.d.ts +25 -0
  93. package/dist/cli/commands/workflow.d.ts.map +1 -0
  94. package/dist/cli/commands/workflow.js +488 -0
  95. package/dist/cli/commands/workflow.js.map +1 -0
  96. package/dist/cli/index.d.ts +3 -0
  97. package/dist/cli/index.d.ts.map +1 -0
  98. package/dist/cli/index.js +115 -0
  99. package/dist/cli/index.js.map +1 -0
  100. package/dist/cli/paths.d.ts +90 -0
  101. package/dist/cli/paths.d.ts.map +1 -0
  102. package/dist/cli/paths.js +136 -0
  103. package/dist/cli/paths.js.map +1 -0
  104. package/dist/cli/runtime-logger.d.ts +13 -0
  105. package/dist/cli/runtime-logger.d.ts.map +1 -0
  106. package/dist/cli/runtime-logger.js +213 -0
  107. package/dist/cli/runtime-logger.js.map +1 -0
  108. package/dist/core/analyzer.d.ts +3 -0
  109. package/dist/core/analyzer.d.ts.map +1 -0
  110. package/dist/core/analyzer.js +359 -0
  111. package/dist/core/analyzer.js.map +1 -0
  112. package/dist/core/ast-complexity-analyzer.d.ts +40 -0
  113. package/dist/core/ast-complexity-analyzer.d.ts.map +1 -0
  114. package/dist/core/ast-complexity-analyzer.js +279 -0
  115. package/dist/core/ast-complexity-analyzer.js.map +1 -0
  116. package/dist/core/global-index.d.ts +69 -0
  117. package/dist/core/global-index.d.ts.map +1 -0
  118. package/dist/core/global-index.js +388 -0
  119. package/dist/core/global-index.js.map +1 -0
  120. package/dist/generator/ai-overview.d.ts +51 -0
  121. package/dist/generator/ai-overview.d.ts.map +1 -0
  122. package/dist/generator/ai-overview.js +160 -0
  123. package/dist/generator/ai-overview.js.map +1 -0
  124. package/dist/generator/context.d.ts +5 -0
  125. package/dist/generator/context.d.ts.map +1 -0
  126. package/dist/generator/context.js +514 -0
  127. package/dist/generator/context.js.map +1 -0
  128. package/dist/generator/file-describer.d.ts +93 -0
  129. package/dist/generator/file-describer.d.ts.map +1 -0
  130. package/dist/generator/file-describer.js +375 -0
  131. package/dist/generator/file-describer.js.map +1 -0
  132. package/dist/generator/index.d.ts +8 -0
  133. package/dist/generator/index.d.ts.map +1 -0
  134. package/dist/generator/index.js +259 -0
  135. package/dist/generator/index.js.map +1 -0
  136. package/dist/index.d.ts +5 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +6 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/orchestrator/adapters/ast-grep-adapter.d.ts +75 -0
  141. package/dist/orchestrator/adapters/ast-grep-adapter.d.ts.map +1 -0
  142. package/dist/orchestrator/adapters/ast-grep-adapter.js +242 -0
  143. package/dist/orchestrator/adapters/ast-grep-adapter.js.map +1 -0
  144. package/dist/orchestrator/adapters/base-adapter.d.ts +24 -0
  145. package/dist/orchestrator/adapters/base-adapter.d.ts.map +1 -0
  146. package/dist/orchestrator/adapters/base-adapter.js +2 -0
  147. package/dist/orchestrator/adapters/base-adapter.js.map +1 -0
  148. package/dist/orchestrator/adapters/codemap-adapter.d.ts +56 -0
  149. package/dist/orchestrator/adapters/codemap-adapter.d.ts.map +1 -0
  150. package/dist/orchestrator/adapters/codemap-adapter.js +163 -0
  151. package/dist/orchestrator/adapters/codemap-adapter.js.map +1 -0
  152. package/dist/orchestrator/adapters/index.d.ts +10 -0
  153. package/dist/orchestrator/adapters/index.d.ts.map +1 -0
  154. package/dist/orchestrator/adapters/index.js +3 -0
  155. package/dist/orchestrator/adapters/index.js.map +1 -0
  156. package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
  157. package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
  158. package/dist/orchestrator/ai-feed-generator.js +377 -0
  159. package/dist/orchestrator/ai-feed-generator.js.map +1 -0
  160. package/dist/orchestrator/commit-validator.d.ts +30 -0
  161. package/dist/orchestrator/commit-validator.d.ts.map +1 -0
  162. package/dist/orchestrator/commit-validator.js +87 -0
  163. package/dist/orchestrator/commit-validator.js.map +1 -0
  164. package/dist/orchestrator/confidence.d.ts +25 -0
  165. package/dist/orchestrator/confidence.d.ts.map +1 -0
  166. package/dist/orchestrator/confidence.js +138 -0
  167. package/dist/orchestrator/confidence.js.map +1 -0
  168. package/dist/orchestrator/file-header-scanner.d.ts +48 -0
  169. package/dist/orchestrator/file-header-scanner.d.ts.map +1 -0
  170. package/dist/orchestrator/file-header-scanner.js +158 -0
  171. package/dist/orchestrator/file-header-scanner.js.map +1 -0
  172. package/dist/orchestrator/git-analyzer.d.ts +192 -0
  173. package/dist/orchestrator/git-analyzer.d.ts.map +1 -0
  174. package/dist/orchestrator/git-analyzer.js +539 -0
  175. package/dist/orchestrator/git-analyzer.js.map +1 -0
  176. package/dist/orchestrator/index.d.ts +20 -0
  177. package/dist/orchestrator/index.d.ts.map +1 -0
  178. package/dist/orchestrator/index.js +16 -0
  179. package/dist/orchestrator/index.js.map +1 -0
  180. package/dist/orchestrator/intent-router.d.ts +41 -0
  181. package/dist/orchestrator/intent-router.d.ts.map +1 -0
  182. package/dist/orchestrator/intent-router.js +98 -0
  183. package/dist/orchestrator/intent-router.js.map +1 -0
  184. package/dist/orchestrator/result-fusion.d.ts +114 -0
  185. package/dist/orchestrator/result-fusion.d.ts.map +1 -0
  186. package/dist/orchestrator/result-fusion.js +332 -0
  187. package/dist/orchestrator/result-fusion.js.map +1 -0
  188. package/dist/orchestrator/test-linker.d.ts +166 -0
  189. package/dist/orchestrator/test-linker.d.ts.map +1 -0
  190. package/dist/orchestrator/test-linker.js +570 -0
  191. package/dist/orchestrator/test-linker.js.map +1 -0
  192. package/dist/orchestrator/tool-orchestrator.d.ts +108 -0
  193. package/dist/orchestrator/tool-orchestrator.d.ts.map +1 -0
  194. package/dist/orchestrator/tool-orchestrator.js +247 -0
  195. package/dist/orchestrator/tool-orchestrator.js.map +1 -0
  196. package/dist/orchestrator/types.d.ts +162 -0
  197. package/dist/orchestrator/types.d.ts.map +1 -0
  198. package/dist/orchestrator/types.js +39 -0
  199. package/dist/orchestrator/types.js.map +1 -0
  200. package/dist/orchestrator/workflow/ci-executor.d.ts +157 -0
  201. package/dist/orchestrator/workflow/ci-executor.d.ts.map +1 -0
  202. package/dist/orchestrator/workflow/ci-executor.js +423 -0
  203. package/dist/orchestrator/workflow/ci-executor.js.map +1 -0
  204. package/dist/orchestrator/workflow/config.d.ts +97 -0
  205. package/dist/orchestrator/workflow/config.d.ts.map +1 -0
  206. package/dist/orchestrator/workflow/config.js +115 -0
  207. package/dist/orchestrator/workflow/config.js.map +1 -0
  208. package/dist/orchestrator/workflow/git-analyzer.d.ts +173 -0
  209. package/dist/orchestrator/workflow/git-analyzer.d.ts.map +1 -0
  210. package/dist/orchestrator/workflow/git-analyzer.js +473 -0
  211. package/dist/orchestrator/workflow/git-analyzer.js.map +1 -0
  212. package/dist/orchestrator/workflow/index.d.ts +21 -0
  213. package/dist/orchestrator/workflow/index.d.ts.map +1 -0
  214. package/dist/orchestrator/workflow/index.js +21 -0
  215. package/dist/orchestrator/workflow/index.js.map +1 -0
  216. package/dist/orchestrator/workflow/phase-checkpoint.d.ts +38 -0
  217. package/dist/orchestrator/workflow/phase-checkpoint.d.ts.map +1 -0
  218. package/dist/orchestrator/workflow/phase-checkpoint.js +75 -0
  219. package/dist/orchestrator/workflow/phase-checkpoint.js.map +1 -0
  220. package/dist/orchestrator/workflow/phase-inheritance.d.ts +128 -0
  221. package/dist/orchestrator/workflow/phase-inheritance.d.ts.map +1 -0
  222. package/dist/orchestrator/workflow/phase-inheritance.js +266 -0
  223. package/dist/orchestrator/workflow/phase-inheritance.js.map +1 -0
  224. package/dist/orchestrator/workflow/result-fusion.d.ts +117 -0
  225. package/dist/orchestrator/workflow/result-fusion.d.ts.map +1 -0
  226. package/dist/orchestrator/workflow/result-fusion.js +246 -0
  227. package/dist/orchestrator/workflow/result-fusion.js.map +1 -0
  228. package/dist/orchestrator/workflow/templates.d.ts +116 -0
  229. package/dist/orchestrator/workflow/templates.d.ts.map +1 -0
  230. package/dist/orchestrator/workflow/templates.js +546 -0
  231. package/dist/orchestrator/workflow/templates.js.map +1 -0
  232. package/dist/orchestrator/workflow/test-linker.d.ts +152 -0
  233. package/dist/orchestrator/workflow/test-linker.d.ts.map +1 -0
  234. package/dist/orchestrator/workflow/test-linker.js +342 -0
  235. package/dist/orchestrator/workflow/test-linker.js.map +1 -0
  236. package/dist/orchestrator/workflow/types.d.ts +202 -0
  237. package/dist/orchestrator/workflow/types.d.ts.map +1 -0
  238. package/dist/orchestrator/workflow/types.js +4 -0
  239. package/dist/orchestrator/workflow/types.js.map +1 -0
  240. package/dist/orchestrator/workflow/visualizer.d.ts +56 -0
  241. package/dist/orchestrator/workflow/visualizer.d.ts.map +1 -0
  242. package/dist/orchestrator/workflow/visualizer.js +300 -0
  243. package/dist/orchestrator/workflow/visualizer.js.map +1 -0
  244. package/dist/orchestrator/workflow/workflow-context.d.ts +50 -0
  245. package/dist/orchestrator/workflow/workflow-context.d.ts.map +1 -0
  246. package/dist/orchestrator/workflow/workflow-context.js +105 -0
  247. package/dist/orchestrator/workflow/workflow-context.js.map +1 -0
  248. package/dist/orchestrator/workflow/workflow-orchestrator.d.ts +126 -0
  249. package/dist/orchestrator/workflow/workflow-orchestrator.d.ts.map +1 -0
  250. package/dist/orchestrator/workflow/workflow-orchestrator.js +489 -0
  251. package/dist/orchestrator/workflow/workflow-orchestrator.js.map +1 -0
  252. package/dist/orchestrator/workflow/workflow-persistence.d.ts +38 -0
  253. package/dist/orchestrator/workflow/workflow-persistence.d.ts.map +1 -0
  254. package/dist/orchestrator/workflow/workflow-persistence.js +166 -0
  255. package/dist/orchestrator/workflow/workflow-persistence.js.map +1 -0
  256. package/dist/parser/implementations/fast-parser.d.ts +65 -0
  257. package/dist/parser/implementations/fast-parser.d.ts.map +1 -0
  258. package/dist/parser/implementations/fast-parser.js +299 -0
  259. package/dist/parser/implementations/fast-parser.js.map +1 -0
  260. package/dist/parser/implementations/smart-parser.d.ts +220 -0
  261. package/dist/parser/implementations/smart-parser.d.ts.map +1 -0
  262. package/dist/parser/implementations/smart-parser.js +1536 -0
  263. package/dist/parser/implementations/smart-parser.js.map +1 -0
  264. package/dist/parser/implementations/tree-sitter-parser.d.ts +57 -0
  265. package/dist/parser/implementations/tree-sitter-parser.d.ts.map +1 -0
  266. package/dist/parser/implementations/tree-sitter-parser.js +375 -0
  267. package/dist/parser/implementations/tree-sitter-parser.js.map +1 -0
  268. package/dist/parser/index.d.ts +19 -0
  269. package/dist/parser/index.d.ts.map +1 -0
  270. package/dist/parser/index.js +449 -0
  271. package/dist/parser/index.js.map +1 -0
  272. package/dist/parser/interfaces/IParser.d.ts +218 -0
  273. package/dist/parser/interfaces/IParser.d.ts.map +1 -0
  274. package/dist/parser/interfaces/IParser.js +22 -0
  275. package/dist/parser/interfaces/IParser.js.map +1 -0
  276. package/dist/plugins/built-in/call-graph.d.ts +38 -0
  277. package/dist/plugins/built-in/call-graph.d.ts.map +1 -0
  278. package/dist/plugins/built-in/call-graph.js +135 -0
  279. package/dist/plugins/built-in/call-graph.js.map +1 -0
  280. package/dist/plugins/built-in/complexity-analyzer.d.ts +45 -0
  281. package/dist/plugins/built-in/complexity-analyzer.d.ts.map +1 -0
  282. package/dist/plugins/built-in/complexity-analyzer.js +155 -0
  283. package/dist/plugins/built-in/complexity-analyzer.js.map +1 -0
  284. package/dist/plugins/index.d.ts +34 -0
  285. package/dist/plugins/index.d.ts.map +1 -0
  286. package/dist/plugins/index.js +103 -0
  287. package/dist/plugins/index.js.map +1 -0
  288. package/dist/plugins/plugin-loader.d.ts +22 -0
  289. package/dist/plugins/plugin-loader.d.ts.map +1 -0
  290. package/dist/plugins/plugin-loader.js +200 -0
  291. package/dist/plugins/plugin-loader.js.map +1 -0
  292. package/dist/plugins/plugin-registry.d.ts +20 -0
  293. package/dist/plugins/plugin-registry.d.ts.map +1 -0
  294. package/dist/plugins/plugin-registry.js +143 -0
  295. package/dist/plugins/plugin-registry.js.map +1 -0
  296. package/dist/plugins/types.d.ts +72 -0
  297. package/dist/plugins/types.d.ts.map +1 -0
  298. package/dist/plugins/types.js +5 -0
  299. package/dist/plugins/types.js.map +1 -0
  300. package/dist/types/index.d.ts +373 -0
  301. package/dist/types/index.d.ts.map +1 -0
  302. package/dist/types/index.js +7 -0
  303. package/dist/types/index.js.map +1 -0
  304. package/dist/watcher/daemon.d.ts +64 -0
  305. package/dist/watcher/daemon.d.ts.map +1 -0
  306. package/dist/watcher/daemon.js +189 -0
  307. package/dist/watcher/daemon.js.map +1 -0
  308. package/dist/watcher/file-watcher.d.ts +70 -0
  309. package/dist/watcher/file-watcher.d.ts.map +1 -0
  310. package/dist/watcher/file-watcher.js +127 -0
  311. package/dist/watcher/file-watcher.js.map +1 -0
  312. package/dist/watcher/index.d.ts +5 -0
  313. package/dist/watcher/index.d.ts.map +1 -0
  314. package/dist/watcher/index.js +6 -0
  315. package/dist/watcher/index.js.map +1 -0
  316. package/dist/watcher/watch-worker.d.ts +2 -0
  317. package/dist/watcher/watch-worker.d.ts.map +1 -0
  318. package/dist/watcher/watch-worker.js +57 -0
  319. package/dist/watcher/watch-worker.js.map +1 -0
  320. package/dist/worker/index.d.ts +76 -0
  321. package/dist/worker/index.d.ts.map +1 -0
  322. package/dist/worker/index.js +155 -0
  323. package/dist/worker/index.js.map +1 -0
  324. package/dist/worker/parse-worker.d.ts +2 -0
  325. package/dist/worker/parse-worker.d.ts.map +1 -0
  326. package/dist/worker/parse-worker.js +202 -0
  327. package/dist/worker/parse-worker.js.map +1 -0
  328. package/mycodemap.config.schema.json +42 -0
  329. package/package.json +69 -0
@@ -0,0 +1,449 @@
1
+ // ============================================
2
+ // Parser Module - 解析器工厂和入口
3
+ // ============================================
4
+ import ts from 'typescript';
5
+ import fs from 'fs/promises';
6
+ import path from 'path';
7
+ import { SmartParser } from './implementations/smart-parser.js';
8
+ import { FastParser } from './implementations/fast-parser.js';
9
+ // 导出实现
10
+ export { SmartParser, FastParser };
11
+ /**
12
+ * 解析器工厂 - 根据模式创建合适的解析器
13
+ */
14
+ export function createParser(options) {
15
+ if (options.mode === 'fast') {
16
+ return new FastParser(options);
17
+ }
18
+ else {
19
+ return new SmartParser(options);
20
+ }
21
+ }
22
+ /**
23
+ * 获取解析器支持的模式
24
+ */
25
+ export function getSupportedModes() {
26
+ return ['fast', 'smart'];
27
+ }
28
+ // ========== 保留原有实现(向后兼容)==========
29
+ // 创建 TypeScript 程序
30
+ export function createProgram(_rootDir, files) {
31
+ const compilerOptions = {
32
+ target: ts.ScriptTarget.ES2022,
33
+ module: ts.ModuleKind.ESNext,
34
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
35
+ strict: true,
36
+ skipLibCheck: true,
37
+ noEmit: true
38
+ };
39
+ return ts.createProgram(files, compilerOptions);
40
+ }
41
+ // 读取文件
42
+ async function readFileContent(filePath) {
43
+ return fs.readFile(filePath, 'utf-8');
44
+ }
45
+ // 解析文件
46
+ export async function parseFile(filePath) {
47
+ const content = await readFileContent(filePath);
48
+ const sourceFile = ts.createSourceFile(path.basename(filePath), content, ts.ScriptTarget.ES2022, true);
49
+ const stats = getFileStats(content);
50
+ const imports = extractImports(sourceFile);
51
+ const exports = extractExports(sourceFile);
52
+ const symbols = extractSymbols(sourceFile);
53
+ // TODO: 使用 symbols 进行更详细的分析
54
+ void symbols;
55
+ return {
56
+ id: generateId(filePath),
57
+ path: filePath,
58
+ absolutePath: filePath,
59
+ type: getModuleType(filePath),
60
+ stats,
61
+ exports,
62
+ imports,
63
+ symbols,
64
+ // 只包含外部模块依赖,过滤掉本地相对路径导入
65
+ dependencies: imports
66
+ .map(i => resolveImportPath(filePath, i.source))
67
+ .filter(dep => !dep.startsWith('.')),
68
+ dependents: []
69
+ };
70
+ }
71
+ // 获取文件统计
72
+ function getFileStats(content) {
73
+ const lines = content.split('\n');
74
+ let codeLines = 0;
75
+ let commentLines = 0;
76
+ for (const line of lines) {
77
+ const trimmed = line.trim();
78
+ if (!trimmed)
79
+ continue;
80
+ if (trimmed.startsWith('//') || trimmed.startsWith('/*') || trimmed.startsWith('*')) {
81
+ commentLines++;
82
+ }
83
+ else {
84
+ codeLines++;
85
+ }
86
+ }
87
+ return {
88
+ lines: lines.length,
89
+ codeLines,
90
+ commentLines,
91
+ blankLines: lines.length - codeLines - commentLines
92
+ };
93
+ }
94
+ // 提取导入信息
95
+ function extractImports(sourceFile) {
96
+ const imports = [];
97
+ ts.forEachChild(sourceFile, (node) => {
98
+ if (ts.isImportDeclaration(node)) {
99
+ const moduleSpecifier = node.moduleSpecifier;
100
+ let source = '';
101
+ if (ts.isStringLiteral(moduleSpecifier)) {
102
+ source = moduleSpecifier.text;
103
+ }
104
+ const specifiers = [];
105
+ if (node.importClause) {
106
+ if (node.importClause.namedBindings) {
107
+ if (ts.isNamedImports(node.importClause.namedBindings)) {
108
+ for (const spec of node.importClause.namedBindings.elements) {
109
+ specifiers.push({
110
+ name: spec.name.text,
111
+ alias: spec.propertyName?.text,
112
+ isTypeOnly: false
113
+ });
114
+ }
115
+ }
116
+ else if (ts.isNamespaceImport(node.importClause.namedBindings)) {
117
+ specifiers.push({
118
+ name: '*',
119
+ alias: node.importClause.namedBindings.name.text,
120
+ isTypeOnly: false
121
+ });
122
+ }
123
+ }
124
+ if (node.importClause.name) {
125
+ specifiers.push({
126
+ name: node.importClause.name.text,
127
+ isTypeOnly: false
128
+ });
129
+ }
130
+ }
131
+ imports.push({
132
+ source,
133
+ sourceType: getImportType(source),
134
+ specifiers,
135
+ isTypeOnly: ts.isTypeOnlyImportDeclaration(node)
136
+ });
137
+ }
138
+ });
139
+ return imports;
140
+ }
141
+ // 提取导出信息
142
+ function extractExports(sourceFile) {
143
+ const exports = [];
144
+ ts.forEachChild(sourceFile, (node) => {
145
+ if (ts.isExportDeclaration(node)) {
146
+ if (node.moduleSpecifier) {
147
+ // re-export
148
+ let source = '';
149
+ if (ts.isStringLiteral(node.moduleSpecifier)) {
150
+ source = node.moduleSpecifier.text;
151
+ }
152
+ if (node.exportClause && ts.isNamedExports(node.exportClause)) {
153
+ for (const spec of node.exportClause.elements) {
154
+ exports.push({
155
+ name: spec.name.text,
156
+ kind: 'variable',
157
+ isDefault: false,
158
+ isTypeOnly: false,
159
+ origin: source
160
+ });
161
+ }
162
+ }
163
+ }
164
+ }
165
+ else if (ts.isFunctionDeclaration(node) ||
166
+ ts.isClassDeclaration(node) ||
167
+ ts.isInterfaceDeclaration(node) ||
168
+ ts.isTypeAliasDeclaration(node) ||
169
+ ts.isEnumDeclaration(node) ||
170
+ ts.isModuleDeclaration(node)) {
171
+ const modifiers = ts.getModifiers(node);
172
+ const isExported = modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword);
173
+ const isDefault = modifiers?.some(m => m.kind === ts.SyntaxKind.DefaultKeyword);
174
+ if (isExported && node.name) {
175
+ exports.push({
176
+ name: node.name.text,
177
+ kind: getSymbolKind(node),
178
+ isDefault: isDefault || false,
179
+ isTypeOnly: false
180
+ });
181
+ }
182
+ }
183
+ });
184
+ return exports;
185
+ }
186
+ // 提取符号信息
187
+ function extractSymbols(sourceFile) {
188
+ const symbols = [];
189
+ function visit(node) {
190
+ let symbol = null;
191
+ if (ts.isFunctionDeclaration(node) && node.name) {
192
+ symbol = createSymbol(node.name.text, 'function', node);
193
+ }
194
+ else if (ts.isClassDeclaration(node) && node.name) {
195
+ symbol = createSymbol(node.name.text, 'class', node);
196
+ }
197
+ else if (ts.isInterfaceDeclaration(node) && node.name) {
198
+ symbol = createSymbol(node.name.text, 'interface', node);
199
+ }
200
+ else if (ts.isTypeAliasDeclaration(node) && node.name) {
201
+ symbol = createSymbol(node.name.text, 'type', node);
202
+ }
203
+ else if (ts.isEnumDeclaration(node) && node.name) {
204
+ symbol = createSymbol(node.name.text, 'enum', node);
205
+ }
206
+ else if (ts.isMethodDeclaration(node) && node.name) {
207
+ const methodName = node.name.text || 'anonymous';
208
+ symbol = createSymbol(methodName, 'method', node);
209
+ }
210
+ else if (ts.isPropertyDeclaration(node) && node.name) {
211
+ const propName = node.name.text || 'anonymous';
212
+ symbol = createSymbol(propName, 'property', node);
213
+ }
214
+ else if (ts.isVariableStatement(node)) {
215
+ for (const decl of node.declarationList.declarations) {
216
+ if (decl.name && ts.isIdentifier(decl.name)) {
217
+ symbols.push(createSymbol(decl.name.text, 'variable', decl));
218
+ }
219
+ }
220
+ }
221
+ if (symbol) {
222
+ symbols.push(symbol);
223
+ }
224
+ ts.forEachChild(node, visit);
225
+ }
226
+ visit(sourceFile);
227
+ return symbols;
228
+ }
229
+ /**
230
+ * 提取装饰器信息
231
+ */
232
+ function extractDecorators(node, kind) {
233
+ const decorators = [];
234
+ // 直接检查节点的 modifiers 属性
235
+ const modifiers = node.modifiers;
236
+ if (!modifiers || !Array.isArray(modifiers))
237
+ return decorators;
238
+ for (const modifier of modifiers) {
239
+ if (modifier.kind === ts.SyntaxKind.Decorator) {
240
+ const decorator = modifier;
241
+ const decoratorInfo = parseDecorator(decorator, kind);
242
+ if (decoratorInfo) {
243
+ decorators.push(decoratorInfo);
244
+ }
245
+ }
246
+ }
247
+ return decorators;
248
+ }
249
+ /**
250
+ * 解析装饰器,获取名称和参数
251
+ */
252
+ function parseDecorator(decorator, targetKind) {
253
+ let decoratorName = '';
254
+ let params = undefined;
255
+ // 获取装饰器表达式
256
+ const expr = decorator.expression;
257
+ if (ts.isCallExpression(expr)) {
258
+ // 处理带参数的装饰器,如 @Component({...})
259
+ const callee = expr.expression;
260
+ if (ts.isIdentifier(callee)) {
261
+ decoratorName = callee.text;
262
+ }
263
+ // 解析参数
264
+ if (expr.arguments.length > 0) {
265
+ const firstArg = expr.arguments[0];
266
+ params = parseDecoratorArg(firstArg);
267
+ }
268
+ }
269
+ else if (ts.isIdentifier(expr)) {
270
+ // 处理不带参数的装饰器,如 @Injectable
271
+ decoratorName = expr.text;
272
+ }
273
+ // 确定装饰器目标类型
274
+ let target = 'class';
275
+ if (targetKind === 'method') {
276
+ target = 'method';
277
+ }
278
+ else if (targetKind === 'property') {
279
+ target = 'property';
280
+ }
281
+ else if (targetKind === 'parameter') {
282
+ target = 'parameter';
283
+ }
284
+ return {
285
+ name: decoratorName,
286
+ params,
287
+ target
288
+ };
289
+ }
290
+ /**
291
+ * 解析装饰器参数
292
+ */
293
+ function parseDecoratorArg(arg) {
294
+ // 处理对象字面量
295
+ if (ts.isObjectLiteralExpression(arg)) {
296
+ const result = {};
297
+ for (const prop of arg.properties) {
298
+ if (ts.isPropertyAssignment(prop)) {
299
+ const key = prop.name.getText();
300
+ const value = parseExpression(prop.initializer);
301
+ result[key] = value;
302
+ }
303
+ }
304
+ return result;
305
+ }
306
+ // 处理字符串字面量
307
+ if (ts.isStringLiteral(arg)) {
308
+ return arg.text;
309
+ }
310
+ // 处理数字字面量
311
+ if (ts.isNumericLiteral(arg)) {
312
+ return Number(arg.text);
313
+ }
314
+ // 处理布尔字面量
315
+ if (arg.kind === ts.SyntaxKind.TrueKeyword || arg.kind === ts.SyntaxKind.FalseKeyword) {
316
+ return arg.kind === ts.SyntaxKind.TrueKeyword;
317
+ }
318
+ // 处理 null 字面量
319
+ if (arg.kind === ts.SyntaxKind.NullKeyword) {
320
+ return null;
321
+ }
322
+ // 处理标识符(如 true, false, null, undefined)
323
+ if (ts.isIdentifier(arg)) {
324
+ const text = arg.text;
325
+ if (text === 'true')
326
+ return true;
327
+ if (text === 'false')
328
+ return false;
329
+ if (text === 'null')
330
+ return null;
331
+ if (text === 'undefined')
332
+ return undefined;
333
+ return text;
334
+ }
335
+ // 处理数组字面量
336
+ if (ts.isArrayLiteralExpression(arg)) {
337
+ return arg.elements.map(elem => parseDecoratorArg(elem));
338
+ }
339
+ return undefined;
340
+ }
341
+ /**
342
+ * 解析表达式为 JavaScript 值
343
+ */
344
+ function parseExpression(expr) {
345
+ if (ts.isStringLiteral(expr))
346
+ return expr.text;
347
+ if (ts.isNumericLiteral(expr))
348
+ return Number(expr.text);
349
+ if (expr.kind === ts.SyntaxKind.TrueKeyword || expr.kind === ts.SyntaxKind.FalseKeyword) {
350
+ return expr.kind === ts.SyntaxKind.TrueKeyword;
351
+ }
352
+ if (expr.kind === ts.SyntaxKind.NullKeyword)
353
+ return null;
354
+ if (ts.isIdentifier(expr))
355
+ return expr.text;
356
+ if (ts.isArrayLiteralExpression(expr))
357
+ return expr.elements.map(elem => parseExpression(elem));
358
+ if (ts.isObjectLiteralExpression(expr)) {
359
+ const result = {};
360
+ for (const prop of expr.properties) {
361
+ if (ts.isPropertyAssignment(prop)) {
362
+ const key = prop.name.getText();
363
+ result[key] = parseExpression(prop.initializer);
364
+ }
365
+ }
366
+ return result;
367
+ }
368
+ return expr.getText();
369
+ }
370
+ function createSymbol(name, kind, node) {
371
+ const location = getLocation(node);
372
+ const decorators = extractDecorators(node, kind);
373
+ return {
374
+ id: generateId(name + location.file + location.line),
375
+ name,
376
+ kind,
377
+ location,
378
+ visibility: 'public',
379
+ relatedSymbols: [],
380
+ decorators: decorators.length > 0 ? decorators : undefined
381
+ };
382
+ }
383
+ function getLocation(node) {
384
+ const file = node.getSourceFile().fileName;
385
+ const start = node.getStart();
386
+ const { line, character } = node.getSourceFile().getLineAndCharacterOfPosition(start);
387
+ return {
388
+ file,
389
+ line: line + 1,
390
+ column: character + 1
391
+ };
392
+ }
393
+ function getSymbolKind(node) {
394
+ if (ts.isFunctionDeclaration(node))
395
+ return 'function';
396
+ if (ts.isClassDeclaration(node))
397
+ return 'class';
398
+ if (ts.isInterfaceDeclaration(node))
399
+ return 'interface';
400
+ if (ts.isTypeAliasDeclaration(node))
401
+ return 'type';
402
+ if (ts.isEnumDeclaration(node))
403
+ return 'enum';
404
+ if (ts.isMethodDeclaration(node))
405
+ return 'method';
406
+ if (ts.isPropertyDeclaration(node))
407
+ return 'property';
408
+ return 'variable';
409
+ }
410
+ function getImportType(source) {
411
+ if (source.startsWith('.'))
412
+ return 'relative';
413
+ if (source.startsWith('@'))
414
+ return 'alias';
415
+ return 'node_module';
416
+ }
417
+ function getModuleType(filePath) {
418
+ if (filePath.includes('.test.') || filePath.includes('.spec.'))
419
+ return 'test';
420
+ if (filePath.includes('config.') || filePath.endsWith('config.ts'))
421
+ return 'config';
422
+ return 'source';
423
+ }
424
+ function generateId(str) {
425
+ let hash = 0;
426
+ for (let i = 0; i < str.length; i++) {
427
+ const char = str.charCodeAt(i);
428
+ hash = ((hash << 5) - hash) + char;
429
+ hash = hash & hash;
430
+ }
431
+ return Math.abs(hash).toString(36);
432
+ }
433
+ function resolveImportPath(fromPath, importPath) {
434
+ if (!importPath.startsWith('.'))
435
+ return importPath;
436
+ const fromDir = path.dirname(fromPath);
437
+ const resolved = path.resolve(fromDir, importPath);
438
+ // 如果已经是 .ts 文件,直接返回
439
+ if (resolved.endsWith('.ts')) {
440
+ return resolved;
441
+ }
442
+ // 如果是 .js 文件,也直接返回(不添加 .ts)
443
+ if (resolved.endsWith('.js')) {
444
+ return resolved;
445
+ }
446
+ // 其他情况添加 .ts 扩展名
447
+ return resolved + '.ts';
448
+ }
449
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ import type { ExportInfo, ImportInfo, ModuleSymbol } from '../../types/index.js';
2
+ /**
3
+ * 解析器模式
4
+ */
5
+ export type ParserMode = 'fast' | 'smart';
6
+ /**
7
+ * 解析器选项
8
+ */
9
+ export interface ParserOptions {
10
+ /** 解析模式 */
11
+ mode: ParserMode;
12
+ /** 根目录 */
13
+ rootDir: string;
14
+ /** 文件过滤 */
15
+ include?: string[];
16
+ /** 排除模式 */
17
+ exclude?: string[];
18
+ }
19
+ /**
20
+ * 解析结果
21
+ */
22
+ export interface ParseResult {
23
+ /** 文件路径 */
24
+ path: string;
25
+ /** 导出信息 */
26
+ exports: ExportInfo[];
27
+ /** 导入信息 */
28
+ imports: ImportInfo[];
29
+ /** 符号信息 */
30
+ symbols: ModuleSymbol[];
31
+ /** 依赖列表 */
32
+ dependencies: string[];
33
+ /** 模块类型 */
34
+ type: 'source' | 'test' | 'config' | 'type';
35
+ /** 代码统计 */
36
+ stats: {
37
+ lines: number;
38
+ codeLines: number;
39
+ commentLines: number;
40
+ blankLines: number;
41
+ };
42
+ /** Smart 模式额外信息 */
43
+ typeInfo?: TypeInfo;
44
+ /** Smart 模式额外信息 */
45
+ callGraph?: CallGraph;
46
+ /** Smart 模式额外信息 */
47
+ complexity?: ComplexityMetrics;
48
+ }
49
+ /**
50
+ * 类型信息(Smart 模式)- 增强版
51
+ */
52
+ export interface TypeInfo {
53
+ /** 类型定义 */
54
+ typeDefinitions: Array<{
55
+ name: string;
56
+ kind: 'interface' | 'type' | 'enum' | 'class' | 'alias';
57
+ members: Array<{
58
+ name: string;
59
+ type: string;
60
+ optional: boolean;
61
+ visibility?: 'public' | 'private' | 'protected' | 'internal';
62
+ isReadonly?: boolean;
63
+ }>;
64
+ extends?: string[];
65
+ implements?: string[];
66
+ genericParams?: Array<{
67
+ name: string;
68
+ extends?: string;
69
+ default?: string;
70
+ }>;
71
+ }>;
72
+ /** 泛型参数 */
73
+ genericParams: Array<{
74
+ name: string;
75
+ extends?: string;
76
+ default?: string;
77
+ constraint?: string;
78
+ }>;
79
+ /** 跨文件引用 */
80
+ crossFileRefs: Array<{
81
+ symbol: string;
82
+ file: string;
83
+ line: number;
84
+ column?: number;
85
+ exportName?: string;
86
+ }>;
87
+ /** 联合类型 */
88
+ unionTypes: string[];
89
+ /** 交叉类型 */
90
+ intersectionTypes: string[];
91
+ /** 类型别名 */
92
+ typeAliases: Array<{
93
+ name: string;
94
+ type: string;
95
+ genericParams?: Array<{
96
+ name: string;
97
+ extends?: string;
98
+ default?: string;
99
+ }>;
100
+ }>;
101
+ /** 条件类型 */
102
+ conditionalTypes?: Array<{
103
+ checkType: string;
104
+ extendsType: string;
105
+ trueType: string;
106
+ falseType: string;
107
+ }>;
108
+ /** 映射类型 */
109
+ mappedTypes?: Array<{
110
+ typeParameter: string;
111
+ constraint: string;
112
+ valueType: string;
113
+ asType?: string;
114
+ readonly?: 'add' | 'remove';
115
+ optional?: 'add' | 'remove';
116
+ }>;
117
+ /** 模板字面量类型 */
118
+ templateLiteralTypes?: Array<{
119
+ head: string;
120
+ spans: Array<{
121
+ type: string;
122
+ literal: string;
123
+ }>;
124
+ }>;
125
+ /** 索引访问类型 */
126
+ indexedAccessTypes?: string[];
127
+ /** 推断类型 */
128
+ inferredTypes?: string[];
129
+ }
130
+ /**
131
+ * 调用图(Smart 模式)
132
+ */
133
+ export interface CallGraph {
134
+ /** 函数调用关系 */
135
+ calls: Array<{
136
+ caller: string;
137
+ callee: string;
138
+ line: number;
139
+ }>;
140
+ /** 递归函数 */
141
+ recursive: string[];
142
+ /** 被调用次数 */
143
+ callCounts: Record<string, number>;
144
+ }
145
+ /**
146
+ * 复杂度指标(Smart 模式)
147
+ */
148
+ export interface ComplexityMetrics {
149
+ /** 圈复杂度 */
150
+ cyclomatic: number;
151
+ /** 认知复杂度 */
152
+ cognitive: number;
153
+ /** 可维护性指数 */
154
+ maintainability: number;
155
+ /** 圈复杂度详情 */
156
+ details: {
157
+ functions: Array<{
158
+ name: string;
159
+ cyclomatic: number;
160
+ cognitive: number;
161
+ lines: number;
162
+ }>;
163
+ };
164
+ }
165
+ /**
166
+ * 解析器接口
167
+ */
168
+ export interface IParser {
169
+ /** 解析器名称 */
170
+ readonly name: string;
171
+ /** 解析模式 */
172
+ readonly mode: ParserMode;
173
+ /**
174
+ * 解析单个文件
175
+ */
176
+ parseFile(filePath: string): Promise<ParseResult>;
177
+ /**
178
+ * 批量解析文件
179
+ */
180
+ parseFiles(filePaths: string[]): Promise<ParseResult[]>;
181
+ /**
182
+ * 增量解析(仅 Fast 模式支持)
183
+ */
184
+ parseIncremental?(oldTree: any, edit: TextEdit): ParseResult;
185
+ /**
186
+ * 释放资源
187
+ */
188
+ dispose(): void;
189
+ }
190
+ /**
191
+ * 文本编辑(用于增量解析)
192
+ */
193
+ export interface TextEdit {
194
+ startIndex: number;
195
+ endIndex: number;
196
+ newText: string;
197
+ }
198
+ /**
199
+ * 解析器工厂
200
+ */
201
+ export interface IParserFactory {
202
+ /**
203
+ * 创建解析器
204
+ */
205
+ create(options: ParserOptions): IParser;
206
+ /**
207
+ * 获取支持的文件类型
208
+ */
209
+ getSupportedExtensions(): string[];
210
+ }
211
+ /**
212
+ * 默认解析器工厂实现
213
+ */
214
+ export declare class DefaultParserFactory implements IParserFactory {
215
+ create(options: ParserOptions): IParser;
216
+ getSupportedExtensions(): string[];
217
+ }
218
+ //# sourceMappingURL=IParser.d.ts.map